]> git.lyx.org Git - features.git/commitdiff
Add GParagraph dialog, make GViewBase update() when it show()s
authorJohn Spray <spray@lyx.org>
Fri, 1 Oct 2004 18:59:36 +0000 (18:59 +0000)
committerJohn Spray <spray@lyx.org>
Fri, 1 Oct 2004 18:59:36 +0000 (18:59 +0000)
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@9032 a592a061-630c-0410-9148-cb99ea01b6c8

src/frontends/gtk/ChangeLog
src/frontends/gtk/Dialogs.C
src/frontends/gtk/GParagraph.C [new file with mode: 0644]
src/frontends/gtk/GParagraph.h [new file with mode: 0644]
src/frontends/gtk/GViewBase.C
src/frontends/gtk/Makefile.am
src/frontends/gtk/glade/paragraph.glade [new file with mode: 0644]

index 9c1afc06fe5b3019b3f6d0ee1daae2030ad9b15a..1b20f19217832384c162f5bf4b64a21a81988beb 100644 (file)
@@ -1,3 +1,8 @@
+2004-09-29  John Spray  <spray_john@users.sourceforge.net>
+
+       * The Paragraph dialog
+       * Dialogs.C, GParagraph.C, GParagraph.h, Makefile.am
+
 2004-09-28  John Spray  <spray_john@users.sourceforge.net>
 
        * GToolbar.[Ch]: Use ComboBox instead of deprecated Combo for
index 8b6780ca1ca608c3917fe34eb9f84c0c9a15e7e8..c06bcfc8b15a220e3f3586f3292ddc58ce5cd0fe 100644 (file)
@@ -73,7 +73,7 @@
 #include "FormMathsSpace.h"
 #include "FormMathsStyle.h"
 #include "FormNote.h"
-#include "FormParagraph.h"
+#include "GParagraph.h"
 #include "FormPreamble.h"
 #include "FormPreferences.h"
 #include "GPrint.h"
@@ -452,8 +452,9 @@ Dialogs::DialogPtr Dialogs::build(string const & name)
                dialog->setView(new FormBranch(*dialog));
                dialog->bc().bp(new OkApplyCancelReadOnlyPolicy);
        } else if (name == "paragraph") {
+               dialog->bc().view(new GBC(dialog->bc()));
                dialog->setController(new ControlParagraph(*dialog));
-               dialog->setView(new FormParagraph(*dialog));
+               dialog->setView(new GParagraph(*dialog));
                dialog->bc().bp(new OkApplyCancelReadOnlyPolicy);
        } else if (name == "preamble") {
                dialog->setController(new ControlPreamble(*dialog));
diff --git a/src/frontends/gtk/GParagraph.C b/src/frontends/gtk/GParagraph.C
new file mode 100644 (file)
index 0000000..d5d3251
--- /dev/null
@@ -0,0 +1,192 @@
+/**
+ * \file GParagraph.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 "GParagraph.h"
+#include "ghelpers.h"
+
+#include "ControlParagraph.h"
+#include "controllers/helper_funcs.h"
+
+#include "ParagraphParameters.h"
+#include "Spacing.h"
+#include "support/lstrings.h"
+#include "support/tostr.h"
+
+using std::string;
+
+namespace lyx {
+
+namespace frontend {
+
+namespace {
+
+} // namespace anon
+
+
+GParagraph::GParagraph(Dialog & parent)
+       : GViewCB<ControlParagraph, GViewGladeB>(parent, _("Paragraph Settings"), false)
+{}
+
+void GParagraph::doBuild()
+{
+       string const gladeName = findGladeFile("paragraph");
+       xml_ = Gnome::Glade::Xml::create(gladeName);
+
+       xml_->get_widget("LineSpacing", spacingspin_);
+       xml_->get_widget("DefaultLineSpacing", defaultspacingcheck_);
+       xml_->get_widget("MaxLabelWidth", maxlabelwidthentry_);
+       xml_->get_widget("Indent", indentcheck_);
+       xml_->get_widget("AlignBlock", blockradio_);
+       xml_->get_widget("AlignLeft", leftradio_);
+       xml_->get_widget("AlignRight", rightradio_);
+       xml_->get_widget("AlignCenter", centerradio_);
+
+       // Manage the Close button
+       Gtk::Button * button;
+       xml_->get_widget("Close", button);
+       setCancel(button);
+
+       // Make the main hbox sensitive to readonly
+       Gtk::HBox * controlbox;
+       xml_->get_widget("ControlBox", controlbox);
+       bcview().addReadOnly(controlbox);
+
+       spacingadj_ = spacingspin_->get_adjustment();
+
+       defaultspacingcheck_->signal_toggled().connect(
+               sigc::mem_fun(*this, &GParagraph::onDefaultSpacingToggled));
+       indentcheck_->signal_toggled().connect(
+               sigc::mem_fun(*this, &GParagraph::onIndentToggled));
+       spacingadj_->signal_value_changed().connect(
+               sigc::mem_fun(*this, &GParagraph::onSpacingChanged));
+       maxlabelwidthentry_->signal_changed().connect(
+               sigc::mem_fun(*this, &GParagraph::onMaxLabelWidthChanged));
+
+       blockradio_->signal_toggled().connect(
+               sigc::mem_fun(*this, &GParagraph::onAlignToggled));
+       leftradio_->signal_toggled().connect(
+               sigc::mem_fun(*this, &GParagraph::onAlignToggled));
+       rightradio_->signal_toggled().connect(
+               sigc::mem_fun(*this, &GParagraph::onAlignToggled));
+       centerradio_->signal_toggled().connect(
+               sigc::mem_fun(*this, &GParagraph::onAlignToggled));
+}
+
+
+void GParagraph::update()
+{
+       // label width
+       string const labelwidth = controller().params().labelWidthString();
+       maxlabelwidthentry_->set_text(labelwidth);
+       maxlabelwidthentry_->set_sensitive(
+               labelwidth != _("Senseless with this layout!"));
+
+       // alignment
+       LyXAlignment const current_alignment = controller().params().align();
+       switch (current_alignment) {
+               case LYX_ALIGN_BLOCK:
+                       blockradio_->set_active(true);
+                       break;
+               case LYX_ALIGN_LEFT:
+                       leftradio_->set_active(true);
+                       break;
+               case LYX_ALIGN_RIGHT:
+                       rightradio_->set_active(true);
+                       break;
+               case LYX_ALIGN_CENTER:
+                       centerradio_->set_active(true);
+                       break;
+               default:
+                       // LYX_ALIGN_SPECIAL or so?  Don't ask, don't tell.
+                       centerradio_->set_active(false);
+                       blockradio_->set_active(false);
+                       rightradio_->set_active(false);
+                       leftradio_->set_active(false);
+       }
+
+       //Find out which alignments options are available
+       LyXAlignment alignpos = controller().alignPossible();
+       blockradio_->set_sensitive(bool(alignpos & LYX_ALIGN_BLOCK));
+       centerradio_->set_sensitive(bool(alignpos & LYX_ALIGN_CENTER));
+       leftradio_->set_sensitive(bool(alignpos & LYX_ALIGN_LEFT));
+       rightradio_->set_sensitive(bool(alignpos & LYX_ALIGN_RIGHT));
+
+       // We give the user a checkbox with an affirmative description, so
+       // invert the setting
+       indentcheck_->set_active(!controller().params().noindent());
+
+       // linespacing
+       Spacing const space = controller().params().spacing();
+
+       // This emits the toggled signal, setting up sensitivities
+       defaultspacingcheck_->set_active(
+               space.getSpace() == Spacing::Default);
+
+       spacingadj_->set_value(space.getValue());
+}
+
+
+void GParagraph::onDefaultSpacingToggled()
+{
+       if (defaultspacingcheck_->get_active()) {
+               spacingspin_->set_sensitive(false);
+               Spacing const spacing(Spacing::Default, spacingadj_->get_value());
+               controller().params().spacing(spacing);
+       }       else {
+               spacingspin_->set_sensitive(true);
+               Spacing const spacing(Spacing::Other, spacingadj_->get_value());
+               controller().params().spacing(spacing);
+       }
+       controller().dispatchParams();
+}
+
+
+void GParagraph::onIndentToggled()
+{
+       controller().params().noindent(!indentcheck_->get_active());
+       controller().dispatchParams();
+}
+
+
+void GParagraph::onSpacingChanged()
+{
+       Spacing const spacing(Spacing::Other, spacingadj_->get_value());
+       controller().params().spacing(spacing);
+       controller().dispatchParams();
+}
+
+
+void GParagraph::onMaxLabelWidthChanged()
+{
+       controller().params().labelWidthString(
+               maxlabelwidthentry_->get_text());
+       controller().dispatchParams();
+}
+
+
+void GParagraph::onAlignToggled()
+{
+       if (blockradio_->get_active())
+               controller().params().align(LYX_ALIGN_BLOCK);
+       else if (leftradio_->get_active())
+               controller().params().align(LYX_ALIGN_LEFT);
+       else if (rightradio_->get_active())
+               controller().params().align(LYX_ALIGN_RIGHT);
+       else if (centerradio_->get_active())
+               controller().params().align(LYX_ALIGN_CENTER);
+
+       controller().dispatchParams();
+}
+
+
+} // namespace frontend
+} // namespace lyx
diff --git a/src/frontends/gtk/GParagraph.h b/src/frontends/gtk/GParagraph.h
new file mode 100644 (file)
index 0000000..24eeb4a
--- /dev/null
@@ -0,0 +1,59 @@
+// -*- C++ -*-
+/**
+ * \file GParagraph.h
+ * This file is part of LyX, the document processor.
+ * Licence details can be found in the file COPYING.
+ *
+ * \auther John Spray
+ *
+ * Full author contact details are available in file CREDITS.
+ */
+
+#ifndef GPARAGRAPH_H
+#define GPARAGRAPH_H
+
+#include "GViewBase.h"
+
+#include <gtkmm.h>
+
+namespace lyx {
+namespace frontend {
+
+class ControlParagraph;
+
+/** This class provides a gtk implementation of the paragraph dialog.
+ */
+class GParagraph
+       : public GViewCB<ControlParagraph, GViewGladeB> {
+public:
+       GParagraph(Dialog &);
+private:
+       /// Build the dialog
+       virtual void doBuild();
+       /// Apply from dialog
+       virtual void apply() {}
+       /// Update the dialog
+       virtual void update();
+
+       Gtk::SpinButton * spacingspin_;
+       Gtk::Entry * maxlabelwidthentry_;
+       Gtk::CheckButton * indentcheck_;
+       Gtk::CheckButton * defaultspacingcheck_;
+       Gtk::RadioButton * blockradio_;
+       Gtk::RadioButton * leftradio_;
+       Gtk::RadioButton * rightradio_;
+       Gtk::RadioButton * centerradio_;
+
+       Gtk::Adjustment * spacingadj_;
+
+       void onDefaultSpacingToggled();
+       void onMaxLabelWidthChanged();
+       void onSpacingChanged();
+       void onIndentToggled();
+       void onAlignToggled();
+};
+
+} // namespace frontend
+} // namespace lyx
+
+#endif
index 43642e848ae2ab512e0c20a8de0c64c7dbf3fc82..6e88009e227b59c332be2b561e17ec7a7fe9e562 100644 (file)
@@ -53,6 +53,7 @@ void GViewBase::show()
        if (!window()) {
                build();
        }
+       update();
        window()->show();
 }
 
index d1e50f55a8cebfa0cce78cd9a85bc3e4a156d060..61572764895aab815426a47f505842a1e6cb6be8 100644 (file)
@@ -38,6 +38,8 @@ libgtk_la_SOURCES = \
        GMiniBuffer.h \
        GPainter.C \
        GPainter.h \
+       GParagraph.C \
+       GParagraph.h \
        GPrint.C \
        GPrint.h \
        GScreen.C \
@@ -109,7 +111,6 @@ xforms_objects = \
        ../xforms/FormMathsSpace.lo \
        ../xforms/FormMathsStyle.lo \
        ../xforms/FormNote.lo \
-       ../xforms/FormParagraph.lo \
        ../xforms/FormPreamble.lo \
        ../xforms/FormPreferences.lo \
        ../xforms/FormRef.lo \
diff --git a/src/frontends/gtk/glade/paragraph.glade b/src/frontends/gtk/glade/paragraph.glade
new file mode 100644 (file)
index 0000000..6c21443
--- /dev/null
@@ -0,0 +1,597 @@
+<?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="visible">True</property>
+  <property name="title" translatable="yes">Paragraph</property>
+  <property name="type">GTK_WINDOW_TOPLEVEL</property>
+  <property name="window_position">GTK_WIN_POS_NONE</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="has_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>
+             <accelerator key="Escape" modifiers="0" signal="clicked"/>
+           </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="ControlBox">
+         <property name="border_width">8</property>
+         <property name="visible">True</property>
+         <property name="homogeneous">False</property>
+         <property name="spacing">0</property>
+
+         <child>
+           <widget class="GtkTable" id="table1">
+             <property name="visible">True</property>
+             <property name="n_rows">4</property>
+             <property name="n_columns">2</property>
+             <property name="homogeneous">False</property>
+             <property name="row_spacing">5</property>
+             <property name="column_spacing">4</property>
+
+             <child>
+               <widget class="GtkLabel" id="MaxLabelWidthLabel">
+                 <property name="visible">True</property>
+                 <property name="label" translatable="yes">_Max. label width: </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">MaxLabelWidth</property>
+               </widget>
+               <packing>
+                 <property name="left_attach">0</property>
+                 <property name="right_attach">1</property>
+                 <property name="top_attach">2</property>
+                 <property name="bottom_attach">3</property>
+                 <property name="x_options">fill</property>
+                 <property name="y_options"></property>
+               </packing>
+             </child>
+
+             <child>
+               <widget class="GtkEntry" id="MaxLabelWidth">
+                 <property name="visible">True</property>
+                 <property name="sensitive">False</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="left_attach">1</property>
+                 <property name="right_attach">2</property>
+                 <property name="top_attach">2</property>
+                 <property name="bottom_attach">3</property>
+                 <property name="y_options"></property>
+               </packing>
+             </child>
+
+             <child>
+               <widget class="GtkSpinButton" id="LineSpacing">
+                 <property name="visible">True</property>
+                 <property name="sensitive">False</property>
+                 <property name="can_focus">True</property>
+                 <property name="climb_rate">1</property>
+                 <property name="digits">2</property>
+                 <property name="numeric">True</property>
+                 <property name="update_policy">GTK_UPDATE_ALWAYS</property>
+                 <property name="snap_to_ticks">False</property>
+                 <property name="wrap">False</property>
+                 <property name="adjustment">1 0 20 0.1 10 10</property>
+               </widget>
+               <packing>
+                 <property name="left_attach">1</property>
+                 <property name="right_attach">2</property>
+                 <property name="top_attach">0</property>
+                 <property name="bottom_attach">1</property>
+                 <property name="y_options"></property>
+               </packing>
+             </child>
+
+             <child>
+               <widget class="GtkCheckButton" id="DefaultLineSpacing">
+                 <property name="visible">True</property>
+                 <property name="can_focus">True</property>
+                 <property name="label" translatable="yes">Use _Default Line Spacing</property>
+                 <property name="use_underline">True</property>
+                 <property name="relief">GTK_RELIEF_NORMAL</property>
+                 <property name="focus_on_click">True</property>
+                 <property name="active">False</property>
+                 <property name="inconsistent">False</property>
+                 <property name="draw_indicator">True</property>
+               </widget>
+               <packing>
+                 <property name="left_attach">1</property>
+                 <property name="right_attach">2</property>
+                 <property name="top_attach">1</property>
+                 <property name="bottom_attach">2</property>
+                 <property name="x_options">fill</property>
+                 <property name="y_options"></property>
+               </packing>
+             </child>
+
+             <child>
+               <widget class="GtkLabel" id="label2">
+                 <property name="visible">True</property>
+                 <property name="label" translatable="yes">Line _spacing:</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">LineSpacing</property>
+               </widget>
+               <packing>
+                 <property name="left_attach">0</property>
+                 <property name="right_attach">1</property>
+                 <property name="top_attach">0</property>
+                 <property name="bottom_attach">1</property>
+                 <property name="x_options">fill</property>
+                 <property name="y_options"></property>
+               </packing>
+             </child>
+
+             <child>
+               <widget class="GtkCheckButton" id="Indent">
+                 <property name="visible">True</property>
+                 <property name="can_focus">True</property>
+                 <property name="label" translatable="yes">_Indent Paragraph</property>
+                 <property name="use_underline">True</property>
+                 <property name="relief">GTK_RELIEF_NORMAL</property>
+                 <property name="focus_on_click">True</property>
+                 <property name="active">False</property>
+                 <property name="inconsistent">False</property>
+                 <property name="draw_indicator">True</property>
+               </widget>
+               <packing>
+                 <property name="left_attach">0</property>
+                 <property name="right_attach">1</property>
+                 <property name="top_attach">3</property>
+                 <property name="bottom_attach">4</property>
+                 <property name="y_padding">4</property>
+                 <property name="x_options">fill</property>
+                 <property name="y_options"></property>
+               </packing>
+             </child>
+           </widget>
+           <packing>
+             <property name="padding">0</property>
+             <property name="expand">True</property>
+             <property name="fill">True</property>
+           </packing>
+         </child>
+
+         <child>
+           <widget class="GtkVSeparator" id="vseparator1">
+             <property name="visible">True</property>
+           </widget>
+           <packing>
+             <property name="padding">8</property>
+             <property name="expand">True</property>
+             <property name="fill">True</property>
+           </packing>
+         </child>
+
+         <child>
+           <widget class="GtkAlignment" id="alignment1">
+             <property name="visible">True</property>
+             <property name="xalign">0.5</property>
+             <property name="yalign">0.5</property>
+             <property name="xscale">1</property>
+             <property name="yscale">1</property>
+             <property name="top_padding">0</property>
+             <property name="bottom_padding">0</property>
+             <property name="left_padding">4</property>
+             <property name="right_padding">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="label10">
+                     <property name="visible">True</property>
+                     <property name="label" translatable="yes">&lt;b&gt;Align&lt;/b&gt;</property>
+                     <property name="use_underline">False</property>
+                     <property name="use_markup">True</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">2</property>
+                     <property name="expand">False</property>
+                     <property name="fill">False</property>
+                   </packing>
+                 </child>
+
+                 <child>
+                   <widget class="GtkRadioButton" id="AlignBlock">
+                     <property name="visible">True</property>
+                     <property name="can_focus">True</property>
+                     <property name="relief">GTK_RELIEF_NORMAL</property>
+                     <property name="focus_on_click">True</property>
+                     <property name="active">False</property>
+                     <property name="inconsistent">False</property>
+                     <property name="draw_indicator">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="hbox5">
+                             <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-justify-fill</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="label9">
+                                 <property name="visible">True</property>
+                                 <property name="label" translatable="yes">_Justify</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>
+                   </packing>
+                 </child>
+
+                 <child>
+                   <widget class="GtkRadioButton" id="AlignLeft">
+                     <property name="visible">True</property>
+                     <property name="can_focus">True</property>
+                     <property name="relief">GTK_RELIEF_NORMAL</property>
+                     <property name="focus_on_click">True</property>
+                     <property name="active">False</property>
+                     <property name="inconsistent">False</property>
+                     <property name="draw_indicator">True</property>
+                     <property name="group">AlignBlock</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="hbox2">
+                             <property name="visible">True</property>
+                             <property name="homogeneous">False</property>
+                             <property name="spacing">2</property>
+
+                             <child>
+                               <widget class="GtkImage" id="image1">
+                                 <property name="visible">True</property>
+                                 <property name="stock">gtk-justify-left</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">_Left</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>
+                   </packing>
+                 </child>
+
+                 <child>
+                   <widget class="GtkRadioButton" id="AlignRight">
+                     <property name="visible">True</property>
+                     <property name="can_focus">True</property>
+                     <property name="relief">GTK_RELIEF_NORMAL</property>
+                     <property name="focus_on_click">True</property>
+                     <property name="active">False</property>
+                     <property name="inconsistent">False</property>
+                     <property name="draw_indicator">True</property>
+                     <property name="group">AlignBlock</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="hbox3">
+                             <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-justify-right</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">_Right</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>
+                   </packing>
+                 </child>
+
+                 <child>
+                   <widget class="GtkRadioButton" id="AlignCenter">
+                     <property name="visible">True</property>
+                     <property name="can_focus">True</property>
+                     <property name="relief">GTK_RELIEF_NORMAL</property>
+                     <property name="focus_on_click">True</property>
+                     <property name="active">False</property>
+                     <property name="inconsistent">False</property>
+                     <property name="draw_indicator">True</property>
+                     <property name="group">AlignBlock</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="hbox4">
+                             <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-justify-center</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">C_enter</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>
+                   </packing>
+                 </child>
+               </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>
+  </child>
+</widget>
+
+</glade-interface>