The Spellchecker dialog

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@9059 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
John Spray 2004-10-06 15:15:37 +00:00
parent 06f456e0b4
commit 956313903e
6 changed files with 872 additions and 11 deletions

View File

@ -1,3 +1,8 @@
2004-10-06 John Spray <spray_john@users.sourceforge.net>
* The Spellchecker dialog
* Dialogs.C, GSpellchecker.C, GSpellchecker.h, Makefile.am
2004-10-06 John Spray <spray_john@users.sourceforge.net> 2004-10-06 John Spray <spray_john@users.sourceforge.net>
* GView.C (c-tor): get the layout engine working correctly by * GView.C (c-tor): get the layout engine working correctly by

View File

@ -83,7 +83,7 @@
#include "FormTabular.h" #include "FormTabular.h"
#include "FormTexinfo.h" #include "FormTexinfo.h"
#include "FormShowFile.h" #include "FormShowFile.h"
#include "FormSpellchecker.h" #include "GSpellchecker.h"
#include "GTableCreate.h" #include "GTableCreate.h"
#include "GToc.h" #include "GToc.h"
#include "GUrl.h" #include "GUrl.h"
@ -479,8 +479,9 @@ Dialogs::DialogPtr Dialogs::build(string const & name)
dialog->setView(new FormSendto(*dialog)); dialog->setView(new FormSendto(*dialog));
dialog->bc().bp(new OkApplyCancelPolicy); dialog->bc().bp(new OkApplyCancelPolicy);
} else if (name == "spellchecker") { } else if (name == "spellchecker") {
dialog->bc().view(new GBC(dialog->bc()));
dialog->setController(new ControlSpellchecker(*dialog)); dialog->setController(new ControlSpellchecker(*dialog));
dialog->setView(new FormSpellchecker(*dialog)); dialog->setView(new GSpellchecker(*dialog));
dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy); dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
} else if (name == "tabular") { } else if (name == "tabular") {
dialog->setController(new ControlTabular(*dialog)); dialog->setController(new ControlTabular(*dialog));

View File

@ -0,0 +1,184 @@
/**
* \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::show()
{
if (!window()) {
build();
}
bcview().refreshReadOnly();
controller().check();
if (!controller().getWord().empty())
window()->show();
}
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 const progress = controller().getProgress();
if (progress != 0) {
progress_->set_fraction(float(progress)/100.0f);
progress_->set_text(tostr(progress) + "% " + _("checked"));
}
}
void GSpellchecker::onSuggestionActivate(
Gtk::TreeModel::Path const & 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 const all)
{
Glib::ustring const replacement = replacemententry_->get_text();
if (all)
controller().replaceAll(replacement);
else
controller().replace(replacement);
}
} // namespace frontend
} // namespace lyx

View File

@ -0,0 +1,71 @@
// -*- 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() {}
virtual void show();
// 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 const all);
// Suggestion list single click
void onSuggestionSelection();
// Suggestion list double click
void onSuggestionActivate(Gtk::TreeModel::Path const & path, Gtk::TreeViewColumn * col);
// Ignore button
void onIgnore();
// Ignore All button
void onIgnoreAll();
// Add button
void onAdd();
};
} // namespace frontend
} // namespace lyx
#endif // GSPELLCHECKER_H

View File

@ -48,6 +48,8 @@ libgtk_la_SOURCES = \
GScreen.h \ GScreen.h \
GSearch.C \ GSearch.C \
GSearch.h \ GSearch.h \
GSpellchecker.C \
GSpellchecker.h \
GTableCreate.C \ GTableCreate.C \
GTableCreate.h \ GTableCreate.h \
GText.C \ GText.C \
@ -120,7 +122,6 @@ xforms_objects = \
../xforms/FormSendto.lo \ ../xforms/FormSendto.lo \
../xforms/forms_gettext.lo \ ../xforms/forms_gettext.lo \
../xforms/FormShowFile.lo \ ../xforms/FormShowFile.lo \
../xforms/FormSpellchecker.lo \
../xforms/FormTabular.lo \ ../xforms/FormTabular.lo \
../xforms/FormTexinfo.lo \ ../xforms/FormTexinfo.lo \
../xforms/FormText.lo \ ../xforms/FormText.lo \
@ -135,11 +136,3 @@ xforms_objects = \
../xforms/xforms_helpers.lo \ ../xforms/xforms_helpers.lo \
../xforms/xformsImage.lo \ ../xforms/xformsImage.lo \
../xforms/xforms_resize.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

View File

@ -0,0 +1,607 @@
<?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="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>