Hi,

The spellchecker dialog.

In GViewBase it was necessary to move the update() to after show()
because with the spellchecker update()ing sometimes involves immediately
cancelling the dialog (if there are no spelling errors to prompt the
user about).

John
Index: ChangeLog
===================================================================
RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/frontends/gtk/ChangeLog,v
retrieving revision 1.68
diff -u -p -r1.68 ChangeLog
--- ChangeLog	5 Oct 2004 12:37:26 -0000	1.68
+++ ChangeLog	5 Oct 2004 19:36:34 -0000
@@ -1,3 +1,8 @@
+2004-10-05  John Spray  <[EMAIL PROTECTED]>
+
+	* The Spellchecker dialog
+	* Dialogs.C, GViewBase.C, GSpellchecker.C, GSpellchecker.h, Makefile.am
+
 2004-10-04  John Spray  <[EMAIL PROTECTED]>
 
 	* The MathsMatrix dialog
Index: Dialogs.C
===================================================================
RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/frontends/gtk/Dialogs.C,v
retrieving revision 1.24
diff -u -p -r1.24 Dialogs.C
--- Dialogs.C	5 Oct 2004 12:37:26 -0000	1.24
+++ Dialogs.C	5 Oct 2004 19:36:34 -0000
@@ -83,7 +83,7 @@
 #include "FormTabular.h"
 #include "FormTexinfo.h"
 #include "FormShowFile.h"
-#include "FormSpellchecker.h"
+#include "GSpellchecker.h"
 #include "GTableCreate.h"
 #include "GToc.h"
 #include "GUrl.h"
@@ -479,8 +479,9 @@ Dialogs::DialogPtr Dialogs::build(string
 		dialog->setView(new FormSendto(*dialog));
 		dialog->bc().bp(new OkApplyCancelPolicy);
 	} else if (name == "spellchecker") {
+		dialog->bc().view(new GBC(dialog->bc()));
 		dialog->setController(new ControlSpellchecker(*dialog));
-		dialog->setView(new FormSpellchecker(*dialog));
+		dialog->setView(new GSpellchecker(*dialog));
 		dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
 	} else if (name == "tabular") {
 		dialog->setController(new ControlTabular(*dialog));
Index: GSpellchecker.C
===================================================================
RCS file: GSpellchecker.C
diff -N GSpellchecker.C
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ GSpellchecker.C	5 Oct 2004 19:36:34 -0000
@@ -0,0 +1,182 @@
+/**
+ * \file GSpellchecker.C
+ * This file is part of LyX, the document processor.
+ * Licence details can be found in the file COPYING.
+ *
+ * \author John Spray
+ *
+ * Full author contact details are available in file CREDITS.
+ */
+
+#include <config.h>
+
+#include "GSpellchecker.h"
+#include "controllers/ControlSpellchecker.h"
+
+#include "ghelpers.h"
+
+#include "support/tostr.h"
+
+using std::string;
+
+namespace lyx {
+namespace frontend {
+
+GSpellchecker::GSpellchecker(Dialog & parent)
+	: GViewCB<ControlSpellchecker, GViewGladeB>
+		(parent, _("Spell-check document"), false)
+{}
+
+
+void GSpellchecker::doBuild()
+{
+	string const gladeName = findGladeFile("spellcheck");
+	xml_ = Gnome::Glade::Xml::create(gladeName);
+
+	Gtk::Button * button;
+	xml_->get_widget("Close", button);
+	setCancel(button);
+
+	xml_->get_widget("Suggestions", suggestionsview_);
+	xml_->get_widget("Unknown", unknownentry_);
+	xml_->get_widget("Replacement", replacemententry_);
+	xml_->get_widget("Progress", progress_);
+
+	listCols_.add(listCol_);
+	suggestionsstore_ = Gtk::ListStore::create(listCols_);
+	suggestionsview_->set_model(suggestionsstore_);
+	suggestionsview_->append_column("Suggestion", listCol_);
+	suggestionssel_ = suggestionsview_->get_selection();
+
+	// Single click in suggestion list
+	suggestionssel_->signal_changed().connect(
+		sigc::mem_fun(*this, &GSpellchecker::onSuggestionSelection));
+
+	// Double click in suggestion list
+	suggestionsview_->signal_row_activated().connect(
+		sigc::mem_fun(*this, &GSpellchecker::onSuggestionActivate));
+
+	// Because it's like a Replace button when double clicked
+	bcview().addReadOnly(suggestionsview_);
+
+	xml_->get_widget("Replace", button);
+	bcview().addReadOnly(button);
+	button->signal_clicked().connect(
+		sigc::bind<bool>(
+			sigc::mem_fun(*this, &GSpellchecker::onReplace), false));
+
+	xml_->get_widget("ReplaceAll", button);
+	bcview().addReadOnly(button);
+	button->signal_clicked().connect(
+		sigc::bind<bool>(
+			sigc::mem_fun(*this, &GSpellchecker::onReplace), true));
+
+	xml_->get_widget("Ignore", ignorebutton_);
+	ignorebutton_->signal_clicked().connect(
+		sigc::mem_fun(*this, &GSpellchecker::onIgnore));
+
+	xml_->get_widget("IgnoreAll", button);
+	button->signal_clicked().connect(
+		sigc::mem_fun(*this, &GSpellchecker::onIgnoreAll));
+
+	xml_->get_widget("Add", button);
+	button->signal_clicked().connect(
+		sigc::mem_fun(*this, &GSpellchecker::onAdd));
+}
+
+
+void GSpellchecker::partialUpdate(int s)
+{
+	ControlSpellchecker::State const state =
+		static_cast<ControlSpellchecker::State>(s);
+
+	if (state == ControlSpellchecker::SPELL_FOUND_WORD) {
+		string word = controller().getWord();
+		Glib::ustring utfword = Glib::locale_to_utf8(word);
+		unknownentry_->set_text(utfword);
+		replacemententry_->set_text(utfword);
+
+		// Get the list of suggestions
+		suggestionsstore_->clear();
+		while (!(word = controller().getSuggestion()).empty()) {
+			utfword = Glib::locale_to_utf8(word);
+			(*suggestionsstore_->append())[listCol_] = utfword;
+		}
+
+		if (readOnly())
+			// In readonly docs the user must just be browsing through
+			ignorebutton_->grab_focus();
+		else
+			// In general we expect the user to type their replacement
+			replacemententry_->grab_focus();
+	}
+
+	int progress = controller().getProgress();
+	if (progress != 0) {
+		progress_->set_fraction(float(progress)/100.0f);
+		progress_->set_text(tostr(progress) + "% " + _("checked"));
+	}
+}
+
+
+void GSpellchecker::onSuggestionActivate(
+	const Gtk::TreeModel::Path & path,
+	Gtk::TreeViewColumn * col)
+{
+	Glib::ustring const suggestion =
+		(*suggestionsstore_->get_iter(path))[listCol_];
+
+	if (!suggestion.empty())
+		controller().replace(suggestion);
+}
+
+
+void GSpellchecker::onSuggestionSelection()
+{
+	Glib::ustring const suggestion =
+		(*suggestionssel_->get_selected())[listCol_];
+
+	if (!suggestion.empty())
+		replacemententry_->set_text(suggestion);
+}
+
+
+void GSpellchecker::onIgnore()
+{
+	controller().check();
+}
+
+
+void GSpellchecker::onIgnoreAll()
+{
+	controller().ignoreAll();
+}
+
+
+void GSpellchecker::onAdd()
+{
+	controller().insert();
+}
+
+
+void GSpellchecker::onReplace(bool all)
+{
+	Glib::ustring replacement = replacemententry_->get_text();
+	if (all)
+		controller().replaceAll(replacement);
+	else
+		controller().replace(replacement);
+}
+
+
+void GSpellchecker::update()
+{
+	// Get the next spelling error (this is called when dialog shown)
+	controller().check();
+	bcview().refreshReadOnly();
+}
+
+
+
+} // namespace frontend
+} // namespace lyx
Index: GSpellchecker.h
===================================================================
RCS file: GSpellchecker.h
diff -N GSpellchecker.h
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ GSpellchecker.h	5 Oct 2004 19:36:34 -0000
@@ -0,0 +1,69 @@
+// -*- C++ -*-
+/**
+ * \file GSpellchecker.h
+ * This file is part of LyX, the document processor.
+ * Licence details can be found in the file COPYING.
+ *
+ * \author John Spray
+ *
+ * Full author contact details are available in file CREDITS.
+ */
+
+#ifndef GSPELLCHECKER_H
+#define GSPELLCHECKER_H
+
+#include "GViewBase.h"
+
+namespace lyx {
+namespace frontend {
+
+class ControlSpellchecker;
+
+/** This class provides a GTK+ implementation of the FormSpellchecker Dialog.
+ */
+class GSpellchecker
+	: public GViewCB<ControlSpellchecker, GViewGladeB> {
+public:
+
+	GSpellchecker(Dialog &);
+private:
+	// not needed.
+	virtual void apply() {}
+	// Build the dialog
+	virtual void doBuild();
+
+	virtual void update();
+
+	// Fill in unknown word, suggestions, progress from backend
+	virtual void partialUpdate(int);
+
+	Glib::RefPtr<Gtk::ListStore> suggestionsstore_;
+	Glib::RefPtr<Gtk::TreeSelection> suggestionssel_;
+
+	Gtk::TreeModelColumn<Glib::ustring> listCol_;
+	Gtk::TreeModel::ColumnRecord listCols_;
+
+	Gtk::TreeView * suggestionsview_;
+	Gtk::Entry * replacemententry_;
+	Gtk::Entry * unknownentry_;
+	Gtk::ProgressBar * progress_;
+	Gtk::Button * ignorebutton_;
+
+	// Replace button
+	void onReplace(bool all);
+	// Suggestion list single click
+	void onSuggestionSelection();
+	// Suggestion list double click
+	void onSuggestionActivate(const Gtk::TreeModel::Path & path, Gtk::TreeViewColumn * col);
+	// Ignore button
+	void onIgnore();
+	// Ignore All button
+	void onIgnoreAll();
+	// Add button
+	void onAdd();
+};
+
+} // namespace frontend
+} // namespace lyx
+
+#endif // GSPELLCHECKER_H
Index: GViewBase.C
===================================================================
RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/frontends/gtk/GViewBase.C,v
retrieving revision 1.11
diff -u -p -r1.11 GViewBase.C
--- GViewBase.C	3 Oct 2004 12:32:30 -0000	1.11
+++ GViewBase.C	5 Oct 2004 19:36:34 -0000
@@ -53,8 +53,8 @@ void GViewBase::show()
 	if (!window()) {
 		build();
 	}
-	update();
 	window()->show();
+	update();
 }
 
 
Index: Makefile.am
===================================================================
RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/frontends/gtk/Makefile.am,v
retrieving revision 1.22
diff -u -p -r1.22 Makefile.am
--- Makefile.am	5 Oct 2004 12:37:26 -0000	1.22
+++ Makefile.am	5 Oct 2004 19:36:34 -0000
@@ -48,6 +48,8 @@ libgtk_la_SOURCES = \
 	GScreen.h \
 	GSearch.C \
 	GSearch.h \
+	GSpellchecker.C \
+	GSpellchecker.h \
 	GTableCreate.C \
 	GTableCreate.h \
 	GText.C \
@@ -120,7 +122,6 @@ xforms_objects = \
 	../xforms/FormSendto.lo \
 	../xforms/forms_gettext.lo \
 	../xforms/FormShowFile.lo \
-	../xforms/FormSpellchecker.lo \
 	../xforms/FormTabular.lo \
 	../xforms/FormTexinfo.lo \
 	../xforms/FormText.lo \
@@ -135,11 +136,3 @@ xforms_objects = \
 	../xforms/xforms_helpers.lo \
 	../xforms/xformsImage.lo \
 	../xforms/xforms_resize.lo
-
-#	../xforms/Dialogs.lo
-#	../xforms/FormFiledialog.lo
-#	../xforms/FileDialog.lo
-#	../xforms/FormAboutlyx.lo
-#	../xforms/FormUrl.lo
-#	../xforms/FormTabularCreate.lo
-#	../xforms/FormMathsPanel.lo
Index: glade/spellcheck.glade
===================================================================
RCS file: glade/spellcheck.glade
diff -N glade/spellcheck.glade
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ glade/spellcheck.glade	5 Oct 2004 19:36:34 -0000
@@ -0,0 +1,608 @@
+<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*-->
+<!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd";>
+
+<glade-interface>
+
+<widget class="GtkDialog" id="dialog">
+  <property name="border_width">6</property>
+  <property name="visible">True</property>
+  <property name="title" translatable="yes">Spell Check</property>
+  <property name="type">GTK_WINDOW_TOPLEVEL</property>
+  <property name="window_position">GTK_WIN_POS_CENTER_ON_PARENT</property>
+  <property name="modal">True</property>
+  <property name="resizable">False</property>
+  <property name="destroy_with_parent">False</property>
+  <property name="decorated">True</property>
+  <property name="skip_taskbar_hint">False</property>
+  <property name="skip_pager_hint">False</property>
+  <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
+  <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
+  <property name="has_separator">False</property>
+
+  <child internal-child="vbox">
+    <widget class="GtkVBox" id="dialog-vbox1">
+      <property name="visible">True</property>
+      <property name="homogeneous">False</property>
+      <property name="spacing">0</property>
+
+      <child internal-child="action_area">
+	<widget class="GtkHButtonBox" id="dialog-action_area1">
+	  <property name="visible">True</property>
+	  <property name="layout_style">GTK_BUTTONBOX_END</property>
+
+	  <child>
+	    <widget class="GtkButton" id="Close">
+	      <property name="visible">True</property>
+	      <property name="can_default">True</property>
+	      <property name="can_focus">True</property>
+	      <property name="label">gtk-close</property>
+	      <property name="use_stock">True</property>
+	      <property name="relief">GTK_RELIEF_NORMAL</property>
+	      <property name="focus_on_click">True</property>
+	      <property name="response_id">-7</property>
+	    </widget>
+	  </child>
+	</widget>
+	<packing>
+	  <property name="padding">0</property>
+	  <property name="expand">False</property>
+	  <property name="fill">True</property>
+	  <property name="pack_type">GTK_PACK_END</property>
+	</packing>
+      </child>
+
+      <child>
+	<widget class="GtkHBox" id="ControlsBox">
+	  <property name="visible">True</property>
+	  <property name="homogeneous">False</property>
+	  <property name="spacing">0</property>
+
+	  <child>
+	    <widget class="GtkVBox" id="vbox2">
+	      <property name="visible">True</property>
+	      <property name="homogeneous">False</property>
+	      <property name="spacing">0</property>
+
+	      <child>
+		<widget class="GtkLabel" id="label2">
+		  <property name="visible">True</property>
+		  <property name="label" translatable="yes">_Unknown word:</property>
+		  <property name="use_underline">True</property>
+		  <property name="use_markup">False</property>
+		  <property name="justify">GTK_JUSTIFY_LEFT</property>
+		  <property name="wrap">False</property>
+		  <property name="selectable">False</property>
+		  <property name="xalign">0</property>
+		  <property name="yalign">0.5</property>
+		  <property name="xpad">0</property>
+		  <property name="ypad">0</property>
+		  <property name="mnemonic_widget">Unknown</property>
+		</widget>
+		<packing>
+		  <property name="padding">5</property>
+		  <property name="expand">False</property>
+		  <property name="fill">False</property>
+		</packing>
+	      </child>
+
+	      <child>
+		<widget class="GtkEntry" id="Unknown">
+		  <property name="visible">True</property>
+		  <property name="can_focus">True</property>
+		  <property name="editable">False</property>
+		  <property name="visibility">True</property>
+		  <property name="max_length">0</property>
+		  <property name="text" translatable="yes"></property>
+		  <property name="has_frame">True</property>
+		  <property name="invisible_char" translatable="yes">*</property>
+		  <property name="activates_default">False</property>
+		</widget>
+		<packing>
+		  <property name="padding">0</property>
+		  <property name="expand">False</property>
+		  <property name="fill">False</property>
+		</packing>
+	      </child>
+
+	      <child>
+		<widget class="GtkHBox" id="hbox2">
+		  <property name="visible">True</property>
+		  <property name="homogeneous">False</property>
+		  <property name="spacing">0</property>
+
+		  <child>
+		    <widget class="GtkButton" id="Ignore">
+		      <property name="visible">True</property>
+		      <property name="tooltip" translatable="yes">Ignore unknown word</property>
+		      <property name="can_focus">True</property>
+		      <property name="relief">GTK_RELIEF_NORMAL</property>
+		      <property name="focus_on_click">True</property>
+
+		      <child>
+			<widget class="GtkAlignment" id="alignment2">
+			  <property name="visible">True</property>
+			  <property name="xalign">0.5</property>
+			  <property name="yalign">0.5</property>
+			  <property name="xscale">0</property>
+			  <property name="yscale">0</property>
+			  <property name="top_padding">0</property>
+			  <property name="bottom_padding">0</property>
+			  <property name="left_padding">0</property>
+			  <property name="right_padding">0</property>
+
+			  <child>
+			    <widget class="GtkHBox" id="hbox5">
+			      <property name="visible">True</property>
+			      <property name="homogeneous">False</property>
+			      <property name="spacing">2</property>
+
+			      <child>
+				<widget class="GtkImage" id="image2">
+				  <property name="visible">True</property>
+				  <property name="stock">gtk-cancel</property>
+				  <property name="icon_size">4</property>
+				  <property name="xalign">0.5</property>
+				  <property name="yalign">0.5</property>
+				  <property name="xpad">0</property>
+				  <property name="ypad">0</property>
+				</widget>
+				<packing>
+				  <property name="padding">0</property>
+				  <property name="expand">False</property>
+				  <property name="fill">False</property>
+				</packing>
+			      </child>
+
+			      <child>
+				<widget class="GtkLabel" id="label5">
+				  <property name="visible">True</property>
+				  <property name="label" translatable="yes">_Ignore</property>
+				  <property name="use_underline">True</property>
+				  <property name="use_markup">False</property>
+				  <property name="justify">GTK_JUSTIFY_LEFT</property>
+				  <property name="wrap">False</property>
+				  <property name="selectable">False</property>
+				  <property name="xalign">0.5</property>
+				  <property name="yalign">0.5</property>
+				  <property name="xpad">0</property>
+				  <property name="ypad">0</property>
+				</widget>
+				<packing>
+				  <property name="padding">0</property>
+				  <property name="expand">False</property>
+				  <property name="fill">False</property>
+				</packing>
+			      </child>
+			    </widget>
+			  </child>
+			</widget>
+		      </child>
+		    </widget>
+		    <packing>
+		      <property name="padding">0</property>
+		      <property name="expand">False</property>
+		      <property name="fill">False</property>
+		      <property name="pack_type">GTK_PACK_END</property>
+		    </packing>
+		  </child>
+
+		  <child>
+		    <widget class="GtkButton" id="IgnoreAll">
+		      <property name="visible">True</property>
+		      <property name="tooltip" translatable="yes">Accept unknown word as known in this session</property>
+		      <property name="can_focus">True</property>
+		      <property name="relief">GTK_RELIEF_NORMAL</property>
+		      <property name="focus_on_click">True</property>
+
+		      <child>
+			<widget class="GtkAlignment" id="alignment4">
+			  <property name="visible">True</property>
+			  <property name="xalign">0.5</property>
+			  <property name="yalign">0.5</property>
+			  <property name="xscale">0</property>
+			  <property name="yscale">0</property>
+			  <property name="top_padding">0</property>
+			  <property name="bottom_padding">0</property>
+			  <property name="left_padding">0</property>
+			  <property name="right_padding">0</property>
+
+			  <child>
+			    <widget class="GtkHBox" id="hbox7">
+			      <property name="visible">True</property>
+			      <property name="homogeneous">False</property>
+			      <property name="spacing">2</property>
+
+			      <child>
+				<widget class="GtkImage" id="image4">
+				  <property name="visible">True</property>
+				  <property name="stock">gtk-cancel</property>
+				  <property name="icon_size">4</property>
+				  <property name="xalign">0.5</property>
+				  <property name="yalign">0.5</property>
+				  <property name="xpad">0</property>
+				  <property name="ypad">0</property>
+				</widget>
+				<packing>
+				  <property name="padding">0</property>
+				  <property name="expand">False</property>
+				  <property name="fill">False</property>
+				</packing>
+			      </child>
+
+			      <child>
+				<widget class="GtkLabel" id="label7">
+				  <property name="visible">True</property>
+				  <property name="label" translatable="yes">Ignore _All</property>
+				  <property name="use_underline">True</property>
+				  <property name="use_markup">False</property>
+				  <property name="justify">GTK_JUSTIFY_LEFT</property>
+				  <property name="wrap">False</property>
+				  <property name="selectable">False</property>
+				  <property name="xalign">0.5</property>
+				  <property name="yalign">0.5</property>
+				  <property name="xpad">0</property>
+				  <property name="ypad">0</property>
+				</widget>
+				<packing>
+				  <property name="padding">0</property>
+				  <property name="expand">False</property>
+				  <property name="fill">False</property>
+				</packing>
+			      </child>
+			    </widget>
+			  </child>
+			</widget>
+		      </child>
+		    </widget>
+		    <packing>
+		      <property name="padding">6</property>
+		      <property name="expand">False</property>
+		      <property name="fill">False</property>
+		      <property name="pack_type">GTK_PACK_END</property>
+		    </packing>
+		  </child>
+
+		  <child>
+		    <widget class="GtkButton" id="Add">
+		      <property name="visible">True</property>
+		      <property name="tooltip" translatable="yes">Add unknown word to personal dictionary</property>
+		      <property name="can_focus">True</property>
+		      <property name="label">gtk-add</property>
+		      <property name="use_stock">True</property>
+		      <property name="relief">GTK_RELIEF_NORMAL</property>
+		      <property name="focus_on_click">True</property>
+		    </widget>
+		    <packing>
+		      <property name="padding">0</property>
+		      <property name="expand">False</property>
+		      <property name="fill">False</property>
+		      <property name="pack_type">GTK_PACK_END</property>
+		    </packing>
+		  </child>
+		</widget>
+		<packing>
+		  <property name="padding">6</property>
+		  <property name="expand">True</property>
+		  <property name="fill">True</property>
+		</packing>
+	      </child>
+
+	      <child>
+		<widget class="GtkLabel" id="label3">
+		  <property name="visible">True</property>
+		  <property name="label" translatable="yes">R_eplace with:</property>
+		  <property name="use_underline">True</property>
+		  <property name="use_markup">False</property>
+		  <property name="justify">GTK_JUSTIFY_LEFT</property>
+		  <property name="wrap">False</property>
+		  <property name="selectable">False</property>
+		  <property name="xalign">0</property>
+		  <property name="yalign">0.5</property>
+		  <property name="xpad">0</property>
+		  <property name="ypad">0</property>
+		  <property name="mnemonic_widget">Replacement</property>
+		</widget>
+		<packing>
+		  <property name="padding">5</property>
+		  <property name="expand">False</property>
+		  <property name="fill">False</property>
+		</packing>
+	      </child>
+
+	      <child>
+		<widget class="GtkEntry" id="Replacement">
+		  <property name="visible">True</property>
+		  <property name="tooltip" translatable="yes">Type replacement word or select from list of suggestions</property>
+		  <property name="can_focus">True</property>
+		  <property name="editable">True</property>
+		  <property name="visibility">True</property>
+		  <property name="max_length">0</property>
+		  <property name="text" translatable="yes"></property>
+		  <property name="has_frame">True</property>
+		  <property name="invisible_char" translatable="yes">*</property>
+		  <property name="activates_default">False</property>
+		</widget>
+		<packing>
+		  <property name="padding">0</property>
+		  <property name="expand">False</property>
+		  <property name="fill">False</property>
+		</packing>
+	      </child>
+
+	      <child>
+		<widget class="GtkHBox" id="hbox3">
+		  <property name="visible">True</property>
+		  <property name="homogeneous">False</property>
+		  <property name="spacing">0</property>
+
+		  <child>
+		    <placeholder/>
+		  </child>
+
+		  <child>
+		    <widget class="GtkButton" id="Replace">
+		      <property name="visible">True</property>
+		      <property name="tooltip" translatable="yes">Replace unknown word</property>
+		      <property name="can_focus">True</property>
+		      <property name="relief">GTK_RELIEF_NORMAL</property>
+		      <property name="focus_on_click">True</property>
+
+		      <child>
+			<widget class="GtkAlignment" id="alignment3">
+			  <property name="visible">True</property>
+			  <property name="xalign">0.5</property>
+			  <property name="yalign">0.5</property>
+			  <property name="xscale">0</property>
+			  <property name="yscale">0</property>
+			  <property name="top_padding">0</property>
+			  <property name="bottom_padding">0</property>
+			  <property name="left_padding">0</property>
+			  <property name="right_padding">0</property>
+
+			  <child>
+			    <widget class="GtkHBox" id="hbox6">
+			      <property name="visible">True</property>
+			      <property name="homogeneous">False</property>
+			      <property name="spacing">2</property>
+
+			      <child>
+				<widget class="GtkImage" id="image3">
+				  <property name="visible">True</property>
+				  <property name="stock">gtk-spell-check</property>
+				  <property name="icon_size">4</property>
+				  <property name="xalign">0.5</property>
+				  <property name="yalign">0.5</property>
+				  <property name="xpad">0</property>
+				  <property name="ypad">0</property>
+				</widget>
+				<packing>
+				  <property name="padding">0</property>
+				  <property name="expand">False</property>
+				  <property name="fill">False</property>
+				</packing>
+			      </child>
+
+			      <child>
+				<widget class="GtkLabel" id="label6">
+				  <property name="visible">True</property>
+				  <property name="label" translatable="yes">_Replace</property>
+				  <property name="use_underline">True</property>
+				  <property name="use_markup">False</property>
+				  <property name="justify">GTK_JUSTIFY_LEFT</property>
+				  <property name="wrap">False</property>
+				  <property name="selectable">False</property>
+				  <property name="xalign">0.5</property>
+				  <property name="yalign">0.5</property>
+				  <property name="xpad">0</property>
+				  <property name="ypad">0</property>
+				</widget>
+				<packing>
+				  <property name="padding">0</property>
+				  <property name="expand">False</property>
+				  <property name="fill">False</property>
+				</packing>
+			      </child>
+			    </widget>
+			  </child>
+			</widget>
+		      </child>
+		    </widget>
+		    <packing>
+		      <property name="padding">0</property>
+		      <property name="expand">False</property>
+		      <property name="fill">False</property>
+		      <property name="pack_type">GTK_PACK_END</property>
+		    </packing>
+		  </child>
+
+		  <child>
+		    <widget class="GtkButton" id="ReplaceAll">
+		      <property name="visible">True</property>
+		      <property name="tooltip" translatable="yes">Replace all instances of unknown word</property>
+		      <property name="can_focus">True</property>
+		      <property name="relief">GTK_RELIEF_NORMAL</property>
+		      <property name="focus_on_click">True</property>
+
+		      <child>
+			<widget class="GtkAlignment" id="alignment5">
+			  <property name="visible">True</property>
+			  <property name="xalign">0.5</property>
+			  <property name="yalign">0.5</property>
+			  <property name="xscale">0</property>
+			  <property name="yscale">0</property>
+			  <property name="top_padding">0</property>
+			  <property name="bottom_padding">0</property>
+			  <property name="left_padding">0</property>
+			  <property name="right_padding">0</property>
+
+			  <child>
+			    <widget class="GtkHBox" id="hbox8">
+			      <property name="visible">True</property>
+			      <property name="homogeneous">False</property>
+			      <property name="spacing">2</property>
+
+			      <child>
+				<widget class="GtkImage" id="image5">
+				  <property name="visible">True</property>
+				  <property name="stock">gtk-spell-check</property>
+				  <property name="icon_size">4</property>
+				  <property name="xalign">0.5</property>
+				  <property name="yalign">0.5</property>
+				  <property name="xpad">0</property>
+				  <property name="ypad">0</property>
+				</widget>
+				<packing>
+				  <property name="padding">0</property>
+				  <property name="expand">False</property>
+				  <property name="fill">False</property>
+				</packing>
+			      </child>
+
+			      <child>
+				<widget class="GtkLabel" id="label8">
+				  <property name="visible">True</property>
+				  <property name="label" translatable="yes">Replace A_ll</property>
+				  <property name="use_underline">True</property>
+				  <property name="use_markup">False</property>
+				  <property name="justify">GTK_JUSTIFY_LEFT</property>
+				  <property name="wrap">False</property>
+				  <property name="selectable">False</property>
+				  <property name="xalign">0.5</property>
+				  <property name="yalign">0.5</property>
+				  <property name="xpad">0</property>
+				  <property name="ypad">0</property>
+				</widget>
+				<packing>
+				  <property name="padding">0</property>
+				  <property name="expand">False</property>
+				  <property name="fill">False</property>
+				</packing>
+			      </child>
+			    </widget>
+			  </child>
+			</widget>
+		      </child>
+		    </widget>
+		    <packing>
+		      <property name="padding">6</property>
+		      <property name="expand">False</property>
+		      <property name="fill">False</property>
+		      <property name="pack_type">GTK_PACK_END</property>
+		    </packing>
+		  </child>
+		</widget>
+		<packing>
+		  <property name="padding">6</property>
+		  <property name="expand">True</property>
+		  <property name="fill">True</property>
+		</packing>
+	      </child>
+
+	      <child>
+		<widget class="GtkProgressBar" id="Progress">
+		  <property name="visible">True</property>
+		  <property name="tooltip" translatable="yes">Proportion of document checked</property>
+		  <property name="orientation">GTK_PROGRESS_LEFT_TO_RIGHT</property>
+		  <property name="fraction">0</property>
+		  <property name="pulse_step">0.1</property>
+		</widget>
+		<packing>
+		  <property name="padding">0</property>
+		  <property name="expand">False</property>
+		  <property name="fill">False</property>
+		</packing>
+	      </child>
+	    </widget>
+	    <packing>
+	      <property name="padding">0</property>
+	      <property name="expand">False</property>
+	      <property name="fill">True</property>
+	    </packing>
+	  </child>
+
+	  <child>
+	    <widget class="GtkVSeparator" id="vseparator1">
+	      <property name="visible">True</property>
+	    </widget>
+	    <packing>
+	      <property name="padding">5</property>
+	      <property name="expand">False</property>
+	      <property name="fill">True</property>
+	    </packing>
+	  </child>
+
+	  <child>
+	    <widget class="GtkVBox" id="vbox1">
+	      <property name="visible">True</property>
+	      <property name="homogeneous">False</property>
+	      <property name="spacing">0</property>
+
+	      <child>
+		<widget class="GtkLabel" id="label1">
+		  <property name="visible">True</property>
+		  <property name="label" translatable="yes">_Suggested Replacements:</property>
+		  <property name="use_underline">True</property>
+		  <property name="use_markup">False</property>
+		  <property name="justify">GTK_JUSTIFY_LEFT</property>
+		  <property name="wrap">False</property>
+		  <property name="selectable">False</property>
+		  <property name="xalign">0</property>
+		  <property name="yalign">0.5</property>
+		  <property name="xpad">0</property>
+		  <property name="ypad">0</property>
+		  <property name="mnemonic_widget">Suggestions</property>
+		</widget>
+		<packing>
+		  <property name="padding">4</property>
+		  <property name="expand">False</property>
+		  <property name="fill">False</property>
+		</packing>
+	      </child>
+
+	      <child>
+		<widget class="GtkScrolledWindow" id="scrolledwindow1">
+		  <property name="border_width">3</property>
+		  <property name="visible">True</property>
+		  <property name="can_focus">True</property>
+		  <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+		  <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+		  <property name="shadow_type">GTK_SHADOW_IN</property>
+		  <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
+
+		  <child>
+		    <widget class="GtkTreeView" id="Suggestions">
+		      <property name="visible">True</property>
+		      <property name="tooltip" translatable="yes">List of replacement suggestions from dictionary</property>
+		      <property name="can_focus">True</property>
+		      <property name="headers_visible">False</property>
+		      <property name="rules_hint">False</property>
+		      <property name="reorderable">False</property>
+		      <property name="enable_search">True</property>
+		    </widget>
+		  </child>
+		</widget>
+		<packing>
+		  <property name="padding">0</property>
+		  <property name="expand">True</property>
+		  <property name="fill">True</property>
+		</packing>
+	      </child>
+	    </widget>
+	    <packing>
+	      <property name="padding">0</property>
+	      <property name="expand">True</property>
+	      <property name="fill">True</property>
+	    </packing>
+	  </child>
+	</widget>
+	<packing>
+	  <property name="padding">0</property>
+	  <property name="expand">False</property>
+	  <property name="fill">True</property>
+	</packing>
+      </child>
+    </widget>
+  </child>
+</widget>
+
+</glade-interface>

Reply via email to