#include "steak.xpm"
/*  Note: You are free to use whatever license you want.
    Eventually you will be able to edit it within Glade. */

/*  xsteak
 *  Copyright (C) 1999 Razi Lotfi-Tabrizi (razi@cs.uni-frankfurt.de)
 *
 *  This program is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation; either version 2 of the License, or
 *  (at your option) any later version.
 *
 *  This program is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with this program; if not, write to the Free Software
 *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/

#include <gtk/gtk.h>
#include <gdk/gdkkeysyms.h>
#include "gladesig.h"
#include "gladesrc.h"

GtkWidget*
get_widget                             (GtkWidget       *widget,
                                        gchar           *widget_name)
{
  GtkWidget *found_widget;

  if (widget->parent)
    widget = gtk_widget_get_toplevel (widget);
  found_widget = (GtkWidget*) gtk_object_get_data (GTK_OBJECT (widget),
                                                   widget_name);
  if (!found_widget)
    g_warning ("Widget not found: %s", widget_name);
  return found_widget;
}

/* This is an internally used function to set notebook tab widgets. */
void
set_notebook_tab                       (GtkWidget       *notebook,
                                        gint             page_num,
                                        GtkWidget       *widget)
{
  GtkNotebookPage *page;
  GtkWidget *notebook_page;

  page = (GtkNotebookPage*) g_list_nth (GTK_NOTEBOOK (notebook)->children, page_num)->data;
  notebook_page = page->child;
  gtk_widget_ref (notebook_page);
  gtk_notebook_remove_page (GTK_NOTEBOOK (notebook), page_num);
  gtk_notebook_insert_page (GTK_NOTEBOOK (notebook), notebook_page,
                            widget, page_num);
  gtk_widget_unref (notebook_page);
}

GtkWidget*
create_window1 ()
{
  GtkWidget *window1;
  GtkWidget *vbox1;
  GdkPixmap *glade_pixmap;
  GdkBitmap *glade_mask;
  GtkWidget *pixmap1;
  GtkWidget *hbox1;
  GtkWidget *preview1;
  GtkWidget *eingabefeld;
  GtkWidget *preview2;
  GtkWidget *buttonSearch;
  GtkWidget *preview3;
  GtkWidget *table1;
  GtkWidget *englishbutton2;
  GtkWidget *checkbutton3;
  GtkWidget *or_checkbutton;
  GtkWidget *and_checkbutton;
  GtkWidget *casesensitive;
  GtkWidget *germanbutton1;
  GtkWidget *scrolledwindow1;
  GtkWidget *text1;
  GtkWidget *preview8;
  GtkWidget *hbox2;
  GtkWidget *preview4;
  GtkWidget *buttonClose;
  GtkWidget *preview6;
  GtkWidget *buttonHelp;
  GtkWidget *preview7;
  GtkTooltips *tooltips;

  tooltips = gtk_tooltips_new ();

  window1 = gtk_window_new (GTK_WINDOW_TOPLEVEL);
  gtk_object_set_data (GTK_OBJECT (window1), "window1", window1);
  gtk_signal_connect (GTK_OBJECT (window1), "destroy",
                      GTK_SIGNAL_FUNC (on_window1_destroy),
                      NULL);
  gtk_window_set_title (GTK_WINDOW (window1), "Steak GNU Dictionary");
  gtk_window_set_policy (GTK_WINDOW (window1), TRUE, TRUE, FALSE);

  vbox1 = gtk_vbox_new (FALSE, 0);
  gtk_object_set_data (GTK_OBJECT (window1), "vbox1", vbox1);
  gtk_widget_show (vbox1);
  gtk_container_add (GTK_CONTAINER (window1), vbox1);

  gtk_widget_realize (window1);
  glade_pixmap = gdk_pixmap_create_from_xpm_d (window1->window, &glade_mask,
                                             &window1->style->bg[GTK_STATE_NORMAL],
                                             (gchar **)steak_xpm );
  pixmap1 = gtk_pixmap_new (glade_pixmap, glade_mask);
  gdk_pixmap_unref (glade_pixmap);
  gdk_bitmap_unref (glade_mask);
  gtk_object_set_data (GTK_OBJECT (window1), "pixmap1", pixmap1);
  gtk_widget_show (pixmap1);
  gtk_box_pack_start (GTK_BOX (vbox1), pixmap1, FALSE, TRUE, 0);

  hbox1 = gtk_hbox_new (FALSE, 0);
  gtk_object_set_data (GTK_OBJECT (window1), "hbox1", hbox1);
  gtk_widget_show (hbox1);
  gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, TRUE, 0);

  preview1 = gtk_preview_new (GTK_PREVIEW_COLOR);
  gtk_object_set_data (GTK_OBJECT (window1), "preview1", preview1);
  gtk_widget_show (preview1);
  gtk_box_pack_start (GTK_BOX (hbox1), preview1, FALSE, TRUE, 0);
  gtk_widget_set_usize (preview1, 25, -1);

  eingabefeld = gtk_entry_new_with_max_length (50);
  gtk_object_set_data (GTK_OBJECT (window1), "eingabefeld", eingabefeld);
  gtk_widget_show (eingabefeld);
  gtk_box_pack_start (GTK_BOX (hbox1), eingabefeld, TRUE, TRUE, 0);
  gtk_widget_set_usize (eingabefeld, 162, -1);
  gtk_tooltips_set_tip (tooltips, eingabefeld, "give a word to translate.", NULL);
  gtk_signal_connect (GTK_OBJECT (eingabefeld), "activate",
                      GTK_SIGNAL_FUNC (on_buttonSearch_clicked),
                      eingabefeld);

  preview2 = gtk_preview_new (GTK_PREVIEW_COLOR);
  gtk_object_set_data (GTK_OBJECT (window1), "preview2", preview2);
  gtk_widget_show (preview2);
  gtk_box_pack_start (GTK_BOX (hbox1), preview2, FALSE, TRUE, 0);
  gtk_widget_set_usize (preview2, 25, -1);

  buttonSearch = gtk_button_new_with_label ("Search");
  gtk_object_set_data (GTK_OBJECT (window1), "buttonSearch", buttonSearch);
  gtk_widget_show (buttonSearch);
  gtk_box_pack_start (GTK_BOX (hbox1), buttonSearch, FALSE, TRUE, 0);
  gtk_widget_set_usize (buttonSearch, 80, -1);
  gtk_container_border_width (GTK_CONTAINER (buttonSearch), 5);
  gtk_tooltips_set_tip (tooltips, buttonSearch, "click to search!", NULL);
  gtk_signal_connect (GTK_OBJECT (buttonSearch), "clicked",
                      GTK_SIGNAL_FUNC (on_buttonSearch_clicked),
                      eingabefeld);

  preview3 = gtk_preview_new (GTK_PREVIEW_COLOR);
  gtk_object_set_data (GTK_OBJECT (window1), "preview3", preview3);
  gtk_widget_show (preview3);
  gtk_box_pack_start (GTK_BOX (hbox1), preview3, FALSE, TRUE, 0);
  gtk_widget_set_usize (preview3, 25, -1);

  table1 = gtk_table_new (2, 3, TRUE);
  gtk_object_set_data (GTK_OBJECT (window1), "table1", table1);
  gtk_widget_show (table1);
  gtk_box_pack_start (GTK_BOX (vbox1), table1, FALSE, TRUE, 0);
  gtk_widget_set_usize (table1, 365, 48);

  englishbutton2 = gtk_check_button_new_with_label ("English");
  gtk_object_set_data (GTK_OBJECT (window1), "englishbutton2", englishbutton2);
  gtk_widget_show (englishbutton2);
  gtk_table_attach (GTK_TABLE (table1), englishbutton2, 1, 2, 0, 1,
                    (GtkAttachOptions) GTK_EXPAND | GTK_FILL, (GtkAttachOptions) GTK_EXPAND | GTK_FILL, 0, 0);
  gtk_widget_set_usize (englishbutton2, 67, -1);
  gtk_tooltips_set_tip (tooltips, englishbutton2, "If your input (the word that you want to translate) is a English word.", NULL);
  gtk_signal_connect (GTK_OBJECT (englishbutton2), "toggled",
                      GTK_SIGNAL_FUNC (on_englishbutton2_toggled),
                      englishbutton2);
  gtk_toggle_button_set_state (GTK_TOGGLE_BUTTON (englishbutton2), TRUE);

  checkbutton3 = gtk_check_button_new_with_label ("Context-search");
  gtk_object_set_data (GTK_OBJECT (window1), "checkbutton3", checkbutton3);
  gtk_widget_show (checkbutton3);
  gtk_table_attach (GTK_TABLE (table1), checkbutton3, 2, 3, 0, 1,
                    (GtkAttachOptions) GTK_EXPAND | GTK_FILL, (GtkAttachOptions) GTK_EXPAND | GTK_FILL, 0, 0);
  gtk_tooltips_set_tip (tooltips, checkbutton3, "If you want a context-search too.", NULL);
  gtk_signal_connect (GTK_OBJECT (checkbutton3), "toggled",
                      GTK_SIGNAL_FUNC (on_checkbutton3_toggled),
                      checkbutton3);
  gtk_toggle_button_set_state (GTK_TOGGLE_BUTTON (checkbutton3), TRUE);

  or_checkbutton = gtk_check_button_new_with_label ("OR");
  gtk_object_set_data (GTK_OBJECT (window1), "or_checkbutton", or_checkbutton);
  gtk_widget_show (or_checkbutton);
  gtk_table_attach (GTK_TABLE (table1), or_checkbutton, 1, 2, 1, 2,
                    (GtkAttachOptions) GTK_EXPAND | GTK_FILL, (GtkAttachOptions) GTK_EXPAND | GTK_FILL, 0, 0);
  gtk_tooltips_set_tip (tooltips, or_checkbutton, "concatenate the words with OR!", NULL);

  and_checkbutton = gtk_check_button_new_with_label ("AND");
  gtk_object_set_data (GTK_OBJECT (window1), "and_checkbutton", and_checkbutton);
  gtk_widget_show (and_checkbutton);
  gtk_table_attach (GTK_TABLE (table1), and_checkbutton, 2, 3, 1, 2,
                    (GtkAttachOptions) GTK_EXPAND | GTK_FILL, (GtkAttachOptions) GTK_EXPAND | GTK_FILL, 0, 0);
  gtk_tooltips_set_tip (tooltips, and_checkbutton, "concatenate words with AND!", NULL);
  gtk_signal_connect (GTK_OBJECT (and_checkbutton), "toggled",
                      GTK_SIGNAL_FUNC (on_and_checkbutton_toggled),
                      or_checkbutton); gtk_signal_connect (GTK_OBJECT (or_checkbutton), "toggled", GTK_SIGNAL_FUNC (on_or_checkbutton_toggled), and_checkbutton);

  casesensitive = gtk_check_button_new_with_label ("Case sensitive");
  gtk_object_set_data (GTK_OBJECT (window1), "casesensitive", casesensitive);
  gtk_widget_show (casesensitive);
  gtk_table_attach (GTK_TABLE (table1), casesensitive, 0, 1, 1, 2,
                    (GtkAttachOptions) GTK_EXPAND | GTK_FILL, (GtkAttachOptions) GTK_EXPAND | GTK_FILL, 5, 0);
  gtk_tooltips_set_tip (tooltips, casesensitive, "case  distinctions (Aktiv -> Gross- Kleinbuchstaben-Unterscheidung).", NULL);
  gtk_signal_connect (GTK_OBJECT (casesensitive), "toggled",
                      GTK_SIGNAL_FUNC (on_casesensitive_toggled),
                      casesensitive);

  germanbutton1 = gtk_check_button_new_with_label ("German");
  gtk_object_set_data (GTK_OBJECT (window1), "germanbutton1", germanbutton1);
  gtk_widget_show (germanbutton1);
  gtk_table_attach (GTK_TABLE (table1), germanbutton1, 0, 1, 0, 1,
                    (GtkAttachOptions) GTK_EXPAND | GTK_FILL, (GtkAttachOptions) GTK_EXPAND | GTK_FILL, 5, 0);
  gtk_widget_set_usize (germanbutton1, 67, 24);
  gtk_tooltips_set_tip (tooltips, germanbutton1, "If your input (the word that you want to translate) is a German word.", NULL);
  gtk_signal_connect (GTK_OBJECT (germanbutton1), "toggled",
                      GTK_SIGNAL_FUNC (on_germanbutton1_toggled),
                      germanbutton1);

  scrolledwindow1 = gtk_scrolled_window_new (NULL, NULL);
  gtk_object_set_data (GTK_OBJECT (window1), "scrolledwindow1", scrolledwindow1);
  gtk_widget_show (scrolledwindow1);
  gtk_box_pack_start (GTK_BOX (vbox1), scrolledwindow1, TRUE, TRUE, 0);
  gtk_widget_set_usize (scrolledwindow1, 240, 110);
  gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolledwindow1), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);

  text1 = gtk_text_new (NULL, NULL);
  gtk_object_set_data (GTK_OBJECT (window1), "text1", text1);
  gtk_widget_show (text1);
  gtk_container_add (GTK_CONTAINER (scrolledwindow1), text1);
  gtk_widget_set_usize (text1, 240, -1);

  preview8 = gtk_preview_new (GTK_PREVIEW_COLOR);
  gtk_object_set_data (GTK_OBJECT (window1), "preview8", preview8);
  gtk_widget_show (preview8);
  gtk_box_pack_start (GTK_BOX (vbox1), preview8, FALSE, TRUE, 0);
  gtk_widget_set_usize (preview8, -1, 4);

  hbox2 = gtk_hbox_new (TRUE, 0);
  gtk_object_set_data (GTK_OBJECT (window1), "hbox2", hbox2);
  gtk_widget_show (hbox2);
  gtk_box_pack_start (GTK_BOX (vbox1), hbox2, FALSE, TRUE, 0);
  gtk_widget_set_usize (hbox2, 450, -1);

  preview4 = gtk_preview_new (GTK_PREVIEW_COLOR);
  gtk_object_set_data (GTK_OBJECT (window1), "preview4", preview4);
  gtk_widget_show (preview4);
  gtk_box_pack_start (GTK_BOX (hbox2), preview4, TRUE, TRUE, 0);

  buttonClose = gtk_button_new_with_label ("Close");
  gtk_object_set_data (GTK_OBJECT (window1), "buttonClose", buttonClose);
  gtk_widget_show (buttonClose);
  gtk_box_pack_start (GTK_BOX (hbox2), buttonClose, TRUE, TRUE, 0);
  gtk_widget_set_usize (buttonClose, -1, 40);
  gtk_container_border_width (GTK_CONTAINER (buttonClose), 6);
  gtk_tooltips_set_tip (tooltips, buttonClose, "click to close", NULL);
  gtk_signal_connect_object (GTK_OBJECT (buttonClose), "clicked",
                             GTK_SIGNAL_FUNC (gtk_widget_destroy),
                             GTK_OBJECT (window1));

  preview6 = gtk_preview_new (GTK_PREVIEW_COLOR);
  gtk_object_set_data (GTK_OBJECT (window1), "preview6", preview6);
  gtk_widget_show (preview6);
  gtk_box_pack_start (GTK_BOX (hbox2), preview6, TRUE, TRUE, 0);

  buttonHelp = gtk_button_new_with_label ("Help");
  gtk_object_set_data (GTK_OBJECT (window1), "buttonHelp", buttonHelp);
  gtk_widget_show (buttonHelp);
  gtk_box_pack_start (GTK_BOX (hbox2), buttonHelp, TRUE, TRUE, 0);
  gtk_widget_set_usize (buttonHelp, 46, 40);
  gtk_container_border_width (GTK_CONTAINER (buttonHelp), 6);
  gtk_signal_connect (GTK_OBJECT (buttonHelp), "clicked",
                      GTK_SIGNAL_FUNC (on_buttonHelp_clicked),
                      NULL);

  preview7 = gtk_preview_new (GTK_PREVIEW_COLOR);
  gtk_object_set_data (GTK_OBJECT (window1), "preview7", preview7);
  gtk_widget_show (preview7);
  gtk_box_pack_start (GTK_BOX (hbox2), preview7, TRUE, TRUE, 0);

  return window1;
}

GtkWidget*
create_help_window ()
{
  GtkWidget *help_window;
  GtkWidget *vbox2;
  GtkWidget *frame1;
  GtkWidget *scrolledwindow2;
  GtkWidget *text2;
  GtkWidget *hbox3;
  GtkWidget *preview10;
  GtkWidget *button2;
  GtkWidget *preview9;

  help_window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
  gtk_object_set_data (GTK_OBJECT (help_window), "help_window", help_window);
  gtk_signal_connect (GTK_OBJECT (help_window), "destroy",
                      GTK_SIGNAL_FUNC (gtk_widget_destroy),
                      NULL);
  gtk_window_set_title (GTK_WINDOW (help_window), "Help");

  vbox2 = gtk_vbox_new (FALSE, 0);
  gtk_object_set_data (GTK_OBJECT (help_window), "vbox2", vbox2);
  gtk_widget_show (vbox2);
  gtk_container_add (GTK_CONTAINER (help_window), vbox2);
  gtk_widget_set_usize (vbox2, 511, 409);

  frame1 = gtk_frame_new ("Help");
  gtk_object_set_data (GTK_OBJECT (help_window), "frame1", frame1);
  gtk_widget_show (frame1);
  gtk_box_pack_start (GTK_BOX (vbox2), frame1, TRUE, TRUE, 0);
  gtk_widget_set_usize (frame1, 588, 377);
  gtk_container_border_width (GTK_CONTAINER (frame1), 4);
  gtk_frame_set_label_align (GTK_FRAME (frame1), 0.07, 0.5);

  scrolledwindow2 = gtk_scrolled_window_new (NULL, NULL);
  gtk_object_set_data (GTK_OBJECT (help_window), "scrolledwindow2", scrolledwindow2);
  gtk_widget_show (scrolledwindow2);
  gtk_container_add (GTK_CONTAINER (frame1), scrolledwindow2);
  gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolledwindow2), GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS);

  text2 = gtk_text_new (NULL, NULL);
  gtk_object_set_data (GTK_OBJECT (help_window), "text2", text2);
  gtk_widget_show (text2);
  gtk_container_add (GTK_CONTAINER (scrolledwindow2), text2);
  gtk_widget_set_usize (text2, 391, -1);
  gtk_widget_realize (text2);
  gtk_text_insert (GTK_TEXT (text2), NULL, NULL, NULL,
                   "Xsteak 1.7.3\n==================================================================\n\nCopyright (C) 1999 Razi Lotfi-Tabrizi (razi@cs.uni-frankfurt.de)\n\nXsteak ist eine grafische Oberflaeche des Woerterbuch-Programms\n(dictionary) \"Steak\". Dieses Programm ist ein Englisch<->Deutsch Woerterbuch.\nXsteak benutzt GTK+ library (http://www.gtk.org/)\n\n\n\nBedienung des Programms\n==================================================================\n\nDas Suchwort wird in Englisch oder Deutsch gesucht (ueber die\nGerman- und English-Button wird die Sprache des Suchwortes\ngewaehlt). Falls beide Buttons aktiv sind, wird das Suchwort in beiden\nSprachen gesucht.\n\nFalls das gesuchte Wort als alleinstehendes Wort nicht existiert, dann\nwird nach den Woertern mit diesem Praefix gesucht.\nZ.B. die Suche nach \"oi\" liefert \"oil, oil bath, oilway ...\"\n\nBei der Suche wird zwischen der Gross- und Kleinschreibung nicht\nunterschieden. Es ist also egal, ob man \"Cat\", \"cat\" oder \"CAT\"\neingibt. Dieses Verhalten kann man aber ausschalten, wenn man das\n\"Case-sensitive\"-Button aktiviert.\n\nZur Suche nach deutschen Woertern mit Umlauten, koennen Sie die\nUmlaute wie ueblich eingeben. Sie werden intern aber folgendermassen\numgewandelt:\n        Ä->Ae  ä->ae  Ö->Oe  ö->oe  Ü->Ue  ü->ue  ß->ss\nSie werden also das gleiche Ergebnis erhalten, wenn Sie nach dem Wort\n\"fängt\" oder \"faengt\" suchen.\n\nFalls das \"Context-search\"-Button aktiv ist, sucht das Programm das\ngesuchte Wort auch in einem Kontext. Z.B. falls man nach dem Wort\n\"cat\" sucht, erhaelt man:\n         English     ->     Deutsch\n  1 )  cat :== Katze\n\n---------------- Jetzt die Kontext-Eintraege ----------------\n          English     ->     Deutsch\n  1 )  male-cat :== Kater\n  2 )  cat skin :== Katzenfell\n  ...\n\nFalls in dem Eingabefeld mehrere Woerter angegeben sind, wird nur nach\ndem letzten Wort gesucht. D.h., wenn man \"cat dog\" eingibt, wird nur\nnach dem Wort \"dog\" gesucht.\n\nWenn man nach mehreren Woertern suchen moechte, sollte man diese durch\nAusrufezeichen vor und hinter den Woertern schreiben.\nZ.B. \"\"a dog\"\" liefert\n  1 )  He's a dog in the manger. :== Er ist ein Spielverderber.\nMan sollte beachten, dass dies keine Verknuepfung darstellt.\nHier sucht man genau nach dem Teilstring \"a dog\". Die Reihenfolge\nder Woerter ist also wichtig.\nZ.B. \"\"cat dog\"\" wuerde kein Ergebnis liefern.\n\nFalls Sie nach Woertern mit Komata, Apostroph usw. suchen, wie\nz.B. \"I'm\", dann sollten diese Woerter unbedingt ebenfalls durch\nAusrufezeichen vor und hinter den Woertern schreiben.\n\nWenn man Verknuepfungen zwischen den Woertern haben moechte, sollte\nman die \"AND\"- oder \"OR\"-Buttons aktivieren. Hier muss man auch immer\nAusrufezeichen benutzen. Zum Beispiel falls das OR-Button aktiv ist, und\nwir nach dem Woertern \"\"cat dog\"\" suchen, erhalten wir:\n  1 )  dog :== Hund\n  2 )  cat :== Katze\n  ...\nBei der AND-Verknuepfung kann man nur drei Woerter zur Suche angeben.\n\nMan kann aber auch einen regulaeren Ausdruck als Suchwort eingeben;\nz.B. falls man als Suchwort \"physic.*\" eingibt, erhaelt man:\n  1 )  physic :== Abfuehrmittel {n}\n  2 )  physical exit control :== Abgangskontrolle {f}\n  3 )  physicians :== Aerzte {pl}\n  4 )  physician :== Arzt {m}\n  5 )  physician :== Arzt {m}, Mediziner {m}\n  6 )  physical record :== Block(Platte, Disk)\n  7 )  physicalness :== Koerperlichkeit\n  8 )  physics :== Physik\nOder falls man als Suchwort \"cat.*ty\" eingibt, bekommt man:\n  1 )  catholicity :== Allgemeingueltigkeit {f}\n  2 )  catty :== katzenhaft, heimtueckisch, katzig\n\n\nAls Ausdruck akzeptiert steak regulaere Ausdruecke mit den folgenden\nSteuerzeichen:\n\nc       ein einzelner Buchstabe passt auf sich selbst\n\n.       ein Punkt passt auf jeden Buchstaben ausser auf das Zeilenende\n\n\\?      das  dem  Operator \\? vorangehende Muster kann null oder\n        einmal vorkommen\n\n*       das dem Operator * vorangehende Muster kann  0  mal oder\n        oefter vorkommen\n\n\\+      das dem Operator \\+ vorangehende Muster kann einmal oder\n        oefter vorkommen\n\n\\|      die durch den Operator  \\|  verbundenden  Argumente werden\n        oder verknuepft\n\n[Buchstaben]\n        passt auf alle Buchstaben; dabei koennen einzelne Buchstaben,\n        aber auch Bereiche in der Form von-bis angegeben werden; wenn der\n        erste Buchstabe nach [ ein ^ ist, passt der Ausdruck auf alle\n        Buchstaben, ausser den Aufgefuehrten\n\n\\( \\)   die Klammern fassen Ausdruecke zusammen; ausserdem wird der\n        auf den in Klammern eingeschlossene Teil des  Musters  passende  Text\n        markiert und mit einem folgenden \\N Ausdruck referenziert (Tag)\n\n\\N      referenziert die auf das in der N-ten runden Klammern\n        eingeschlossene Muster passende Zeichenkette. N faengt aber ab\n        \"2\" an.\n        Achtung: Solche Anfragen belasten das System sehr.\n\n\\       jedes der Sonderzeichen kann, durch einen \\  (Backslash)\n        eingeleitet, sich selbst suchen \\b passt auf kein Zeichen, sondern auf\n        den Anfang oder das Ende eines Wortes\n\n\\B      symbolisiert den Raum innerhalb eines Wortes\n\n\\w      passt auf alle alphanumerischen Zeichen [A-Za-z0-9]\n\n\\W      passt auf alle nichtalphanumerischen Zeichen [^A-Za-z0-9]\n\n\nDie  Rangfolge der Operatoren ist (von der hoechsten zur niedrigsten):\n(, ), ?, *, + und |.\nDie  anderen  Operatoren sind mit den anderen Buchstaben gleichrangig.\n\n\"\"\\(y\\|x\\)en.*\"\" wuerde also alle Woerter liefern, die mit einem \"x\"\noder \"y\" anfangen, als zweiten und dritten Buchstaben \"en\" haben, und\ndanach mindestens noch ein Buchstabe kommt; also:\n  1 )  xenophobia :== Fremdenfeindlichkeit\n  2 )  xenon :== Xenon\n  3 )  yens :== Yens\n  4 )  xenophobic :== fremdenfeindlich\n\n\n\nGeschlecht der Substantive\n==================================================================\n\nDas Geschlecht der Substantive wird folgendermassen behandelt:\n\n        Symbol          Geschlecht                      Artikel\n        {m}             maskulin, maennlich             der\n        {f}              feminin, weiblich                  die\n        {n}             Neutrum, saechlich              das\n        {pl}             plural, Mehrzahl                  die\n\nTip:    Falls Sie nach allen Woertern suchen, die z.B. feminin sind,\ngeben Sie als Suchwort einfach \"f\" ein (Context-search-Button sollte\naktiv sein). Das gleiche gilt auch fuer \"m\", \"n\" und \"pl\".\n\n\n\nTips fuer die Benutzung des Programms \"steak\" im Console-Modus:\n==================================================================\n\nWenn man das Programm \"steak\" ohne Argumente aufruft (oder auch nur Optionen\nohne WORT-Angabe), dann wird das Wort, das im Zwischenspeicher ist,\nuebernommen und uebersetzt.\n\n-v         Mit der Option \"-v\" erhaelt man die Version-Nummer des Programms.\n-h         Werden diese Informationen angezeigt!\n-d         Das Programm erhaelt deutsche Woerter als Eingabe.\n-e         Das Programm erhaelt englische Woerter als Eingabe.\n-ed        Das Programm erhaelt entweder deutsche oder englische Woerter.\n-de        Siehe -ed.\n-nowait    Bei dieser Option werden alle Wartezeiten auf \"Null\" gesetzt,\n           und \"ispell\" wird auch nicht aufgerufen. Ausserdem wird die\n           Kontextsuche automatisch durchgefuehrt (ohne Abfrage).\n-noispell  Das interaktive spelling-checking-Programm wird nicht\n           aufgrufen.\n-noignor   Gross und Kleinschreibung wird nicht ignoriert.\n-k         Keine Kontextsuche.\n+k         Das Wort wird automatisch auch in einem Kontext gesucht.\n-and       Man kann hoechstens 3 Woerter mit UND verknuepfen.\n-or        Woerter werden mit ODER verknuepft.\n-clipboard Das Wort, das im Zwischenspeicher ist, wird uebersetzt.\nWORT       Falls als Argument ein Wort angegeben wird, wird das Wort uebersetzt.\n\nFalls das Wort nicht im Woerterbuch existiert, wird das Programm \"ispell\"\naufgerufen. Dann hat man die Moeglichkeit, einen Vorschlag dieses Programms zu\nakzeptieren. Das gewaehlte Wort wird anschliessend uebersetzt. Wenn\nman nach mehreren Woertern suchen moechte (z.B. im Falle or- oder\nand-Verknuepfung), sollten diese Woerter in Anfuehrungsstrichen (\"...\") stehen.\n\nMan kann auch das Programm mit Alt-Shift-w aufrufen (siehe README)!\n\n\n\n\n\n\nAuthor\n        Razi Lotfi-Tabrizi (razi@cs.uni-frankfurt.de)\n\nHomepage\n        http://www.tm.informatik.uni-frankfurt.de/~razi/steak/steak.html\n\n\nCopyright\n==================================================================\nXsteak is copyrighted by Razi Lotfi-Tabrizi and is licensed through the\nGNU General Public License. Read the COPYING file for the complete license.\n==================================================================\n", 8550);

  hbox3 = gtk_hbox_new (FALSE, 0);
  gtk_object_set_data (GTK_OBJECT (help_window), "hbox3", hbox3);
  gtk_widget_show (hbox3);
  gtk_box_pack_start (GTK_BOX (vbox2), hbox3, FALSE, TRUE, 0);

  preview10 = gtk_preview_new (GTK_PREVIEW_COLOR);
  gtk_object_set_data (GTK_OBJECT (help_window), "preview10", preview10);
  gtk_widget_show (preview10);
  gtk_box_pack_start (GTK_BOX (hbox3), preview10, TRUE, TRUE, 0);

  button2 = gtk_button_new_with_label ("Close");
  gtk_object_set_data (GTK_OBJECT (help_window), "button2", button2);
  gtk_widget_show (button2);
  gtk_box_pack_start (GTK_BOX (hbox3), button2, FALSE, TRUE, 0);
  gtk_widget_set_usize (button2, 75, 32);
  gtk_container_border_width (GTK_CONTAINER (button2), 4);
  gtk_signal_connect_object_after (GTK_OBJECT (button2), "clicked",
                                   GTK_SIGNAL_FUNC (gtk_widget_destroy),
                                   GTK_OBJECT (help_window));
  gtk_signal_connect (GTK_OBJECT (button2), "clicked",
                      GTK_SIGNAL_FUNC (on_button2_clicked),
                      NULL);

  preview9 = gtk_preview_new (GTK_PREVIEW_COLOR);
  gtk_object_set_data (GTK_OBJECT (help_window), "preview9", preview9);
  gtk_widget_show (preview9);
  gtk_box_pack_start (GTK_BOX (hbox3), preview9, TRUE, TRUE, 0);

  return help_window;
}

