summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEmmanuele Bassi <ebassi@gnome.org>2015-03-08 16:39:23 +0000
committerEmmanuele Bassi <ebassi@gnome.org>2015-03-30 11:06:06 +0100
commitb248b2814839dcdf150bf3e3707b5ed14a95af8e (patch)
tree3a5898f86807452e4d73164b6fefad4d77d5faca
parent5f01dbef4ea734a14bab3f8bda36e4a4e7580db8 (diff)
downloadgnome-dictionary-b248b2814839dcdf150bf3e3707b5ed14a95af8e.tar.gz
src: Use widget templates for GdictSourceDialog
Instead of building the UI from a custom GtkBuilder instance and doing things like we used to in 2005, let's use modern API. There is no functional change in this commit: just a reshuffle of the way the UI is loaded.
-rw-r--r--po/POTFILES.in2
-rw-r--r--src/gdict-source-dialog.c319
-rw-r--r--src/gdict-source-dialog.ui330
-rw-r--r--src/gdict.gresource.xml2
-rw-r--r--src/gnome-dictionary-source.ui332
5 files changed, 473 insertions, 512 deletions
diff --git a/po/POTFILES.in b/po/POTFILES.in
index 9325b6d..4f392dc 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -4,7 +4,7 @@ data/default.desktop.in
data/org.gnome.Dictionary.appdata.xml.in
[type: gettext/glade]src/gnome-dictionary-menus.ui
[type: gettext/glade]src/gnome-dictionary-preferences.ui
-[type: gettext/glade]src/gnome-dictionary-source.ui
+[type: gettext/glade]src/gdict-source-dialog.ui
data/org.gnome.Dictionary.desktop.in.in
data/org.gnome.dictionary.gschema.xml.in.in
data/spanish.desktop.in
diff --git a/src/gdict-source-dialog.c b/src/gdict-source-dialog.c
index a9ba180..10cf0f9 100644
--- a/src/gdict-source-dialog.c
+++ b/src/gdict-source-dialog.c
@@ -38,7 +38,7 @@
#include "gdict-source-dialog.h"
#include "gdict-common.h"
-#define GDICT_SOURCE_UI "/org/gnome/Dictionary/gnome-dictionary-source.ui"
+#define GDICT_SOURCE_UI "/org/gnome/Dictionary/gdict-source-dialog.ui"
/*********************
* GdictSourceDialog *
@@ -48,8 +48,6 @@ struct _GdictSourceDialog
{
GtkDialog parent_instance;
- GtkBuilder *builder;
-
GSettings *settings;
GdictSourceLoader *loader;
@@ -61,12 +59,22 @@ struct _GdictSourceDialog
GdictSourceTransport transport;
+ GtkWidget *hostname_label;
+ GtkWidget *hostname_entry;
+ GtkWidget *port_label;
+ GtkWidget *port_entry;
+
+ GtkWidget *description_label;
+ GtkWidget *description_entry;
+
GtkWidget *add_button;
GtkWidget *close_button;
GtkWidget *cancel_button;
GtkWidget *help_button;
+ GtkWidget *db_vbox;
GtkWidget *db_chooser;
+ GtkWidget *strat_vbox;
GtkWidget *strat_chooser;
GtkWidget *transport_combo;
@@ -86,7 +94,7 @@ enum
PROP_ACTION
};
-G_DEFINE_TYPE (GdictSourceDialog, gdict_source_dialog, GTK_TYPE_DIALOG);
+G_DEFINE_TYPE (GdictSourceDialog, gdict_source_dialog, GTK_TYPE_DIALOG)
static void
set_source_loader (GdictSourceDialog *dialog,
@@ -99,74 +107,47 @@ set_source_loader (GdictSourceDialog *dialog,
}
static void
-transport_combo_changed_cb (GtkWidget *widget,
- gpointer user_data)
+on_transport_changed (GtkWidget *widget,
+ gpointer user_data)
{
- GdictSourceDialog *dialog = GDICT_SOURCE_DIALOG (user_data);
- gint transport;
+ GdictSourceDialog *dialog = user_data;
+ GdictSourceTransport transport;
transport = gtk_combo_box_get_active (GTK_COMBO_BOX (widget));
if (transport == dialog->transport)
return;
- if (transport == GDICT_SOURCE_TRANSPORT_DICTD)
+ /* Hide everything by default */
+ gtk_widget_hide (dialog->hostname_label);
+ gtk_widget_hide (dialog->hostname_entry);
+ gtk_widget_hide (dialog->port_label);
+ gtk_widget_hide (dialog->port_entry);
+
+ if (dialog->action == GDICT_SOURCE_DIALOG_CREATE)
{
- gtk_widget_show (GTK_WIDGET (gtk_builder_get_object (dialog->builder, "hostname_label")));
- gtk_widget_show (GTK_WIDGET (gtk_builder_get_object (dialog->builder, "hostname_entry")));
- gtk_widget_show (GTK_WIDGET (gtk_builder_get_object (dialog->builder, "port_label")));
- gtk_widget_show (GTK_WIDGET (gtk_builder_get_object (dialog->builder, "port_entry")));
-
- if (dialog->action == GDICT_SOURCE_DIALOG_CREATE)
- {
- gtk_widget_set_sensitive (dialog->add_button, TRUE);
-
- dialog->transport = GDICT_SOURCE_TRANSPORT_DICTD;
- }
+ gtk_widget_set_sensitive (dialog->add_button, FALSE);
+ dialog->transport = GDICT_SOURCE_TRANSPORT_INVALID;
}
- else
+
+ /* Then show what's needed depending on the transport */
+ switch (transport)
{
- gtk_widget_hide (GTK_WIDGET (gtk_builder_get_object (dialog->builder, "hostname_label")));
- gtk_widget_hide (GTK_WIDGET (gtk_builder_get_object (dialog->builder, "hostname_entry")));
- gtk_widget_hide (GTK_WIDGET (gtk_builder_get_object (dialog->builder, "port_label")));
- gtk_widget_hide (GTK_WIDGET (gtk_builder_get_object (dialog->builder, "port_entry")));
+ case GDICT_SOURCE_TRANSPORT_DICTD:
+ gtk_widget_show (dialog->hostname_label);
+ gtk_widget_show (dialog->hostname_entry);
+ gtk_widget_show (dialog->port_label);
+ gtk_widget_show (dialog->port_entry);
if (dialog->action == GDICT_SOURCE_DIALOG_CREATE)
{
- gtk_widget_set_sensitive (dialog->add_button, FALSE);
-
- dialog->transport = GDICT_SOURCE_TRANSPORT_INVALID;
+ gtk_widget_set_sensitive (dialog->add_button, TRUE);
+ dialog->transport = GDICT_SOURCE_TRANSPORT_DICTD;
}
- }
-}
-
-static gchar *
-get_text_from_entry (GdictSourceDialog *dialog,
- const gchar *entry_name)
-{
- GtkWidget *entry;
- gchar *retval;
-
- entry = GTK_WIDGET (gtk_builder_get_object (dialog->builder, entry_name));
- if (!entry)
- return NULL;
-
- retval = gtk_editable_get_chars (GTK_EDITABLE (entry), 0, -1);
-
- return retval;
-}
-
-static void
-set_text_to_entry (GdictSourceDialog *dialog,
- const gchar *entry_name,
- const gchar *text)
-{
- GtkWidget *entry;
-
- entry = GTK_WIDGET (gtk_builder_get_object (dialog->builder, entry_name));
- if (!entry)
- return;
+ break;
- gtk_entry_set_text (GTK_ENTRY (entry), text);
+ default:
+ break;
+ }
}
static void
@@ -186,18 +167,18 @@ set_transport_settings (GdictSourceDialog *dialog)
port = gdict_client_context_get_port (context);
port_str = g_strdup_printf ("%d", port);
- set_text_to_entry (dialog, "hostname_entry", hostname);
- set_text_to_entry (dialog, "port_entry", port_str);
+ gtk_entry_set_text (GTK_ENTRY (dialog->hostname_entry), hostname);
+ gtk_entry_set_text (GTK_ENTRY (dialog->port_entry), port_str);
- gtk_widget_show (GTK_WIDGET (gtk_builder_get_object (dialog->builder, "hostname_label")));
- gtk_widget_show (GTK_WIDGET (gtk_builder_get_object (dialog->builder, "hostname_entry")));
- gtk_widget_show (GTK_WIDGET (gtk_builder_get_object (dialog->builder, "port_label")));
- gtk_widget_show (GTK_WIDGET (gtk_builder_get_object (dialog->builder, "port_entry")));
+ gtk_widget_show (dialog->hostname_label);
+ gtk_widget_show (dialog->hostname_entry);
+ gtk_widget_show (dialog->port_label);
+ gtk_widget_show (dialog->port_entry);
g_free (port_str);
}
break;
- case GDICT_SOURCE_TRANSPORT_INVALID:
+
default:
break;
}
@@ -222,8 +203,7 @@ update_dialog_ui (GdictSourceDialog *dialog)
return;
}
- source = gdict_source_loader_get_source (dialog->loader,
- dialog->source_name);
+ source = gdict_source_loader_get_source (dialog->loader, dialog->source_name);
if (!source)
{
g_warning ("Attempting to retrieve source, but no "
@@ -234,13 +214,10 @@ update_dialog_ui (GdictSourceDialog *dialog)
g_object_ref (source);
- dialog->source = source;
- set_text_to_entry (dialog, "description_entry",
- gdict_source_get_description (source));
-
+ dialog->source = g_object_ref (source);
+ gtk_entry_set_text (GTK_ENTRY (dialog->description_entry), gdict_source_get_description (source));
dialog->transport = gdict_source_get_transport (source);
- gtk_combo_box_set_active (GTK_COMBO_BOX (dialog->transport_combo),
- (gint) dialog->transport);
+ gtk_combo_box_set_active (GTK_COMBO_BOX (dialog->transport_combo), (gint) dialog->transport);
/* set the context for the database and strategy choosers */
dialog->context = gdict_source_get_context (source);
@@ -261,11 +238,13 @@ update_dialog_ui (GdictSourceDialog *dialog)
dialog->context);
gdict_strategy_chooser_refresh (GDICT_STRATEGY_CHOOSER (dialog->strat_chooser));
break;
+
case GDICT_SOURCE_DIALOG_CREATE:
/* DICTD transport is default */
gtk_combo_box_set_active (GTK_COMBO_BOX (dialog->transport_combo), 0);
g_signal_emit_by_name (dialog->transport_combo, "changed");
break;
+
default:
g_assert_not_reached ();
break;
@@ -278,7 +257,6 @@ build_new_source (GdictSourceDialog *dialog)
GdictSource *source;
gchar *name, *text;
GdictSourceTransport transport;
- gchar *host, *port;
gchar *data;
gsize length;
GError *error;
@@ -296,9 +274,7 @@ build_new_source (GdictSourceDialog *dialog)
gdict_source_set_name (source, name);
g_free (name);
- text = get_text_from_entry (dialog, "description_entry");
- gdict_source_set_description (source, text);
- g_free (text);
+ gdict_source_set_description (source, gtk_entry_get_text (GTK_ENTRY (dialog->description_entry)));
db_chooser = GDICT_DATABASE_CHOOSER (dialog->db_chooser);
text = gdict_database_chooser_get_current_database (db_chooser);
@@ -315,17 +291,17 @@ build_new_source (GdictSourceDialog *dialog)
switch (transport)
{
case GDICT_SOURCE_TRANSPORT_DICTD:
- host = get_text_from_entry (dialog, "hostname_entry");
- port = get_text_from_entry (dialog, "port_entry");
+ {
+ const char *host = gtk_entry_get_text (GTK_ENTRY (dialog->hostname_entry));
+ const char *port = gtk_entry_get_text (GTK_ENTRY (dialog->port_entry));
- gdict_source_set_transport (source, GDICT_SOURCE_TRANSPORT_DICTD,
- "hostname", host,
- "port", atoi (port),
- NULL);
-
- g_free (host);
- g_free (port);
+ gdict_source_set_transport (source, GDICT_SOURCE_TRANSPORT_DICTD,
+ "hostname", host,
+ "port", atoi (port),
+ NULL);
+ }
break;
+
case GDICT_SOURCE_TRANSPORT_INVALID:
default:
g_warning ("Invalid transport");
@@ -344,7 +320,7 @@ build_new_source (GdictSourceDialog *dialog)
return;
}
- config_dir = gdict_get_config_dir();
+ config_dir = gdict_get_config_dir ();
name = g_strconcat (gdict_source_get_name (source), ".desktop", NULL);
filename = g_build_filename (config_dir, name, NULL);
g_free (config_dir);
@@ -369,15 +345,13 @@ save_source (GdictSourceDialog *dialog)
GdictStrategyChooser *strat_chooser;
gchar *name, *text;
GdictSourceTransport transport;
- gchar *host, *port;
gchar *data;
gsize length;
GError *error;
gchar *filename;
gchar *config_dir;
- source = gdict_source_loader_get_source (dialog->loader,
- dialog->source_name);
+ source = gdict_source_loader_get_source (dialog->loader, dialog->source_name);
if (!source)
{
g_warning ("Attempting to save source `%s', but no "
@@ -387,9 +361,7 @@ save_source (GdictSourceDialog *dialog)
return;
}
- text = get_text_from_entry (dialog, "description_entry");
- gdict_source_set_description (source, text);
- g_free (text);
+ gdict_source_set_description (source, gtk_entry_get_text (GTK_ENTRY (dialog->description_entry)));
db_chooser = GDICT_DATABASE_CHOOSER (dialog->db_chooser);
text = gdict_database_chooser_get_current_database (db_chooser);
@@ -407,17 +379,17 @@ save_source (GdictSourceDialog *dialog)
switch (transport)
{
case GDICT_SOURCE_TRANSPORT_DICTD:
- host = get_text_from_entry (dialog, "hostname_entry");
- port = get_text_from_entry (dialog, "port_entry");
-
- gdict_source_set_transport (source, GDICT_SOURCE_TRANSPORT_DICTD,
- "hostname", host,
- "port", atoi (port),
- NULL);
-
- g_free (host);
- g_free (port);
+ {
+ const char *host = gtk_entry_get_text (GTK_ENTRY (dialog->hostname_entry));
+ const char *port = gtk_entry_get_text (GTK_ENTRY (dialog->port_entry));
+
+ gdict_source_set_transport (source, GDICT_SOURCE_TRANSPORT_DICTD,
+ "hostname", host,
+ "port", atoi (port),
+ NULL);
+ }
break;
+
case GDICT_SOURCE_TRANSPORT_INVALID:
default:
g_warning ("Invalid transport");
@@ -458,9 +430,9 @@ save_source (GdictSourceDialog *dialog)
}
static void
-gdict_source_dialog_response_cb (GtkDialog *dialog,
- gint response_id,
- gpointer user_data)
+on_dialog_response (GtkDialog *dialog,
+ gint response_id,
+ gpointer user_data)
{
GError *err = NULL;
@@ -469,6 +441,7 @@ gdict_source_dialog_response_cb (GtkDialog *dialog,
case GTK_RESPONSE_ACCEPT:
build_new_source (GDICT_SOURCE_DIALOG (dialog));
break;
+
case GTK_RESPONSE_HELP:
gtk_show_uri (gtk_widget_get_screen (GTK_WIDGET (dialog)),
"help:gnome-dictionary/gnome-dictionary-add-source",
@@ -484,11 +457,14 @@ gdict_source_dialog_response_cb (GtkDialog *dialog,
/* we don't want the dialog to close itself */
g_signal_stop_emission_by_name (dialog, "response");
break;
+
case GTK_RESPONSE_CLOSE:
save_source (GDICT_SOURCE_DIALOG (dialog));
break;
+
case GTK_RESPONSE_CANCEL:
break;
+
default:
break;
}
@@ -499,21 +475,12 @@ gdict_source_dialog_finalize (GObject *object)
{
GdictSourceDialog *dialog = GDICT_SOURCE_DIALOG (object);
- if (dialog->settings)
- g_object_unref (dialog->settings);
-
- if (dialog->builder)
- g_object_unref (dialog->builder);
+ g_clear_object (&dialog->settings);
+ g_clear_object (&dialog->source);
+ g_clear_object (&dialog->loader);
- if (dialog->source_name)
- g_free (dialog->source_name);
+ g_free (dialog->source_name);
- if (dialog->source)
- g_object_unref (dialog->source);
-
- if (dialog->loader)
- g_object_unref (dialog->loader);
-
G_OBJECT_CLASS (gdict_source_dialog_parent_class)->finalize (object);
}
@@ -530,13 +497,16 @@ gdict_source_dialog_set_property (GObject *object,
case PROP_SOURCE_LOADER:
set_source_loader (dialog, g_value_get_object (value));
break;
+
case PROP_SOURCE_NAME:
g_free (dialog->source_name);
dialog->source_name = g_strdup (g_value_get_string (value));
break;
+
case PROP_ACTION:
dialog->action = (GdictSourceDialogAction) g_value_get_int (value);
break;
+
default:
break;
}
@@ -555,62 +525,24 @@ gdict_source_dialog_get_property (GObject *object,
case PROP_SOURCE_LOADER:
g_value_set_object (value, dialog->loader);
break;
+
case PROP_SOURCE_NAME:
g_value_set_string (value, dialog->source_name);
break;
+
case PROP_ACTION:
g_value_set_int (value, dialog->action);
break;
+
default:
break;
}
}
-static GObject *
-gdict_source_dialog_constructor (GType type,
- guint n_construct_properties,
- GObjectConstructParam *construct_params)
+static void
+gdict_source_dialog_constructed (GObject *object)
{
- GObject *object;
- GdictSourceDialog *dialog;
- GtkWidget *vbox;
-
- object = G_OBJECT_CLASS (gdict_source_dialog_parent_class)->constructor (type,
- n_construct_properties,
- construct_params);
- dialog = GDICT_SOURCE_DIALOG (object);
-
- gtk_container_set_border_width (GTK_CONTAINER (dialog), 5);
- gtk_box_set_spacing (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (dialog))), 2);
-
- /* get the UI from the GtkBuilder file */
- dialog->builder = gtk_builder_new ();
- gtk_builder_add_from_resource (dialog->builder, GDICT_SOURCE_UI, NULL);
-
- /* the main widget */
- gtk_container_add (GTK_CONTAINER (gtk_dialog_get_content_area (GTK_DIALOG (dialog))),
- GTK_WIDGET (gtk_builder_get_object (dialog->builder, "source_root")));
-
- /* the transport combo changes the UI by changing the visible widgets
- * bound to the transport's own options.
- */
- dialog->transport_combo = GTK_WIDGET (gtk_builder_get_object (dialog->builder, "transport_combo"));
- g_signal_connect (dialog->transport_combo, "changed",
- G_CALLBACK (transport_combo_changed_cb),
- dialog);
-
- /* the help button is always visible */
- dialog->help_button = gtk_dialog_add_button (GTK_DIALOG (dialog), _("_Help"), GTK_RESPONSE_HELP);
-
- vbox = GTK_WIDGET (gtk_builder_get_object (dialog->builder, "db-vbox"));
- dialog->db_chooser = gdict_database_chooser_new ();
- gtk_box_pack_start (GTK_BOX (vbox), dialog->db_chooser, TRUE, TRUE, 0);
- gtk_widget_show (dialog->db_chooser);
-
- vbox = GTK_WIDGET (gtk_builder_get_object (dialog->builder, "strat-vbox"));
- dialog->strat_chooser = gdict_strategy_chooser_new ();
- gtk_box_pack_start (GTK_BOX (vbox), dialog->strat_chooser, TRUE, TRUE, 0);
- gtk_widget_show (dialog->strat_chooser);
+ GdictSourceDialog *dialog = GDICT_SOURCE_DIALOG (object);
/* the UI changes depending on the action that the source dialog
* should perform
@@ -619,15 +551,15 @@ gdict_source_dialog_constructor (GType type,
{
case GDICT_SOURCE_DIALOG_VIEW:
/* disable every editable widget */
- gtk_editable_set_editable (GTK_EDITABLE (gtk_builder_get_object (dialog->builder, "description_entry")), FALSE);
- gtk_editable_set_editable (GTK_EDITABLE (gtk_builder_get_object (dialog->builder, "hostname_entry")), FALSE);
- gtk_editable_set_editable (GTK_EDITABLE (gtk_builder_get_object (dialog->builder, "port_entry")), FALSE);
-
+ gtk_editable_set_editable (GTK_EDITABLE (dialog->description_entry), FALSE);
+ gtk_editable_set_editable (GTK_EDITABLE (dialog->hostname_entry), FALSE);
+ gtk_editable_set_editable (GTK_EDITABLE (dialog->port_entry), FALSE);
gtk_widget_set_sensitive (dialog->transport_combo, FALSE);
/* we just allow closing the dialog */
dialog->close_button = gtk_dialog_add_button (GTK_DIALOG (dialog), _("_Close"), GTK_RESPONSE_CANCEL);
break;
+
case GDICT_SOURCE_DIALOG_CREATE:
dialog->cancel_button = gtk_dialog_add_button (GTK_DIALOG (dialog), _("_Cancel"), GTK_RESPONSE_CANCEL);
dialog->add_button = gtk_dialog_add_button (GTK_DIALOG (dialog), _("_Add"), GTK_RESPONSE_ACCEPT);
@@ -636,29 +568,30 @@ gdict_source_dialog_constructor (GType type,
*/
gtk_widget_set_sensitive (dialog->add_button, FALSE);
break;
+
case GDICT_SOURCE_DIALOG_EDIT:
dialog->cancel_button = gtk_dialog_add_button (GTK_DIALOG (dialog), _("C_ancel"), GTK_RESPONSE_CANCEL);
dialog->close_button = gtk_dialog_add_button (GTK_DIALOG (dialog), _("_Close"), GTK_RESPONSE_CLOSE);
break;
+
default:
g_assert_not_reached ();
break;
}
-
+
/* this will take care of updating the contents of the dialog
* based on the action
*/
update_dialog_ui (dialog);
-
- return object;
}
static void
gdict_source_dialog_class_init (GdictSourceDialogClass *klass)
{
GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
+ GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
- gobject_class->constructor = gdict_source_dialog_constructor;
+ gobject_class->constructed = gdict_source_dialog_constructed;
gobject_class->set_property = gdict_source_dialog_set_property;
gobject_class->get_property = gdict_source_dialog_get_property;
gobject_class->finalize = gdict_source_dialog_finalize;
@@ -669,14 +602,18 @@ gdict_source_dialog_class_init (GdictSourceDialogClass *klass)
"Source Loader",
"The GdictSourceLoader used by the application",
GDICT_TYPE_SOURCE_LOADER,
- (G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY)));
+ G_PARAM_READWRITE |
+ G_PARAM_CONSTRUCT_ONLY |
+ G_PARAM_STATIC_STRINGS));
g_object_class_install_property (gobject_class,
PROP_SOURCE_NAME,
g_param_spec_string ("source-name",
"Source Name",
"The source name",
NULL,
- (G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT)));
+ G_PARAM_READWRITE |
+ G_PARAM_CONSTRUCT_ONLY |
+ G_PARAM_STATIC_STRINGS));
g_object_class_install_property (gobject_class,
PROP_ACTION,
g_param_spec_int ("action",
@@ -685,20 +622,46 @@ gdict_source_dialog_class_init (GdictSourceDialogClass *klass)
-1,
GDICT_SOURCE_DIALOG_EDIT,
GDICT_SOURCE_DIALOG_VIEW,
- (G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY)));
+ G_PARAM_READWRITE |
+ G_PARAM_CONSTRUCT_ONLY |
+ G_PARAM_STATIC_STRINGS));
+
+ gtk_widget_class_set_template_from_resource (widget_class, GDICT_SOURCE_UI);
+
+ gtk_widget_class_bind_template_child (widget_class, GdictSourceDialog, transport_combo);
+ gtk_widget_class_bind_template_child (widget_class, GdictSourceDialog, hostname_label);
+ gtk_widget_class_bind_template_child (widget_class, GdictSourceDialog, hostname_entry);
+ gtk_widget_class_bind_template_child (widget_class, GdictSourceDialog, port_label);
+ gtk_widget_class_bind_template_child (widget_class, GdictSourceDialog, port_entry);
+ gtk_widget_class_bind_template_child (widget_class, GdictSourceDialog, description_label);
+ gtk_widget_class_bind_template_child (widget_class, GdictSourceDialog, description_entry);
+ gtk_widget_class_bind_template_child (widget_class, GdictSourceDialog, db_vbox);
+ gtk_widget_class_bind_template_child (widget_class, GdictSourceDialog, strat_vbox);
+
+ gtk_widget_class_bind_template_callback (widget_class, on_dialog_response);
+ gtk_widget_class_bind_template_callback (widget_class, on_transport_changed);
}
static void
gdict_source_dialog_init (GdictSourceDialog *dialog)
{
+ gtk_widget_init_template (GTK_WIDGET (dialog));
+
gtk_widget_set_size_request (GTK_WIDGET (dialog), 400, 300);
- gtk_window_set_resizable (GTK_WINDOW (dialog), FALSE);
dialog->transport = GDICT_SOURCE_TRANSPORT_INVALID;
- g_signal_connect (dialog, "response",
- G_CALLBACK (gdict_source_dialog_response_cb),
- NULL);
+ /* The help button is always visible */
+ dialog->help_button = gtk_dialog_add_button (GTK_DIALOG (dialog), _("_Help"), GTK_RESPONSE_HELP);
+
+ /* Add our custom widgets */
+ dialog->db_chooser = gdict_database_chooser_new ();
+ gtk_box_pack_start (GTK_BOX (dialog->db_vbox), dialog->db_chooser, TRUE, TRUE, 0);
+ gtk_widget_show (dialog->db_chooser);
+
+ dialog->strat_chooser = gdict_strategy_chooser_new ();
+ gtk_box_pack_start (GTK_BOX (dialog->strat_vbox), dialog->strat_chooser, TRUE, TRUE, 0);
+ gtk_widget_show (dialog->strat_chooser);
}
GtkWidget *
diff --git a/src/gdict-source-dialog.ui b/src/gdict-source-dialog.ui
new file mode 100644
index 0000000..291cefd
--- /dev/null
+++ b/src/gdict-source-dialog.ui
@@ -0,0 +1,330 @@
+<?xml version="1.0"?>
+<!--*- mode: xml -*-->
+<interface domain="gnome-dictionary">
+ <object class="GtkListStore" id="model1">
+ <columns>
+ <column type="gchararray"/>
+ </columns>
+ <data>
+ <row>
+ <col id="0">Dictionary Server</col>
+ </row>
+ </data>
+ </object>
+ <template class="GdictSourceDialog" parent="GtkDialog">
+ <property name="border-width">5</property>
+ <property name="resizable">False</property>
+ <property name="type_hint">dialog</property>
+ <signal name="response" handler="on_dialog_response" swapped="no"/>
+ <child internal-child="vbox">
+ <object class="GtkBox" id="source_root">
+ <property name="orientation">GTK_ORIENTATION_VERTICAL</property>
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">12</property>
+ <child>
+ <object class="GtkNotebook" id="notebook1">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="show_tabs">True</property>
+ <property name="show_border">True</property>
+ <property name="tab_pos">GTK_POS_TOP</property>
+ <property name="scrollable">False</property>
+ <property name="enable_popup">False</property>
+ <child>
+ <object class="GtkTable" id="table2">
+ <property name="border_width">5</property>
+ <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">6</property>
+ <property name="column_spacing">12</property>
+ <child>
+ <object class="GtkLabel" id="description_label">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">_Description:</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="mnemonic_widget">description_entry</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </object>
+ <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"/>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="transport_label">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">_Transport:</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="mnemonic_widget">transport_combo</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="right_attach">1</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="x_options">fill</property>
+ <property name="y_options"/>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="hostname_label">
+ <property name="label" translatable="yes">H_ostname:</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="mnemonic_widget">hostname_entry</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </object>
+ <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"/>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="port_label">
+ <property name="label" translatable="yes">_Port:</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="mnemonic_widget">port_entry</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </object>
+ <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="x_options">fill</property>
+ <property name="y_options"/>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="description_entry">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="has_focus">True</property>
+ <property name="editable">True</property>
+ <property name="visibility">True</property>
+ <property name="max_length">0</property>
+ <property name="text" translatable="yes">Source Name</property>
+ <property name="has_frame">True</property>
+ <property name="invisible_char">*</property>
+ <property name="activates_default">False</property>
+ </object>
+ <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"/>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="hostname_entry">
+ <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">dict.org</property>
+ <property name="has_frame">True</property>
+ <property name="invisible_char">*</property>
+ <property name="activates_default">False</property>
+ </object>
+ <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"/>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="port_entry">
+ <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">2628</property>
+ <property name="has_frame">True</property>
+ <property name="invisible_char">*</property>
+ <property name="activates_default">False</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">3</property>
+ <property name="bottom_attach">4</property>
+ <property name="y_options"/>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkComboBox" id="transport_combo">
+ <property name="visible">True</property>
+ <property name="add_tearoffs">False</property>
+ <property name="focus_on_click">True</property>
+ <property name="model">model1</property>
+ <signal name="changed" handler="on_transport_changed" swapped="no"/>
+ <child>
+ <object class="GtkCellRendererText" id="renderer1"/>
+ <attributes>
+ <attribute name="text">0</attribute>
+ </attributes>
+ </child>
+ </object>
+ <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">fill</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="tab_expand">False</property>
+ <property name="tab_fill">True</property>
+ </packing>
+ </child>
+ <child type="tab">
+ <object class="GtkLabel" id="label18">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Source</property>
+ <property name="use_underline">False</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="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkBox" id="db_vbox">
+ <property name="orientation">GTK_ORIENTATION_VERTICAL</property>
+ <property name="border_width">5</property>
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">0</property>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ <packing>
+ <property name="tab_expand">False</property>
+ <property name="tab_fill">True</property>
+ </packing>
+ </child>
+ <child type="tab">
+ <object class="GtkLabel" id="label19">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Dictionaries</property>
+ <property name="use_underline">False</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="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkBox" id="strat_vbox">
+ <property name="orientation">GTK_ORIENTATION_VERTICAL</property>
+ <property name="border_width">5</property>
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">0</property>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ <packing>
+ <property name="tab_expand">False</property>
+ <property name="tab_fill">True</property>
+ </packing>
+ </child>
+ <child type="tab">
+ <object class="GtkLabel" id="label20">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Strategies</property>
+ <property name="use_underline">False</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="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </template>
+</interface>
+
diff --git a/src/gdict.gresource.xml b/src/gdict.gresource.xml
index 59b4b3e..4022513 100644
--- a/src/gdict.gresource.xml
+++ b/src/gdict.gresource.xml
@@ -3,6 +3,6 @@
<gresource prefix="/org/gnome/Dictionary">
<file preprocess="xml-stripblanks">gnome-dictionary-menus.ui</file>
<file preprocess="xml-stripblanks">gnome-dictionary-preferences.ui</file>
- <file preprocess="xml-stripblanks">gnome-dictionary-source.ui</file>
+ <file preprocess="xml-stripblanks">gdict-source-dialog.ui</file>
</gresource>
</gresources>
diff --git a/src/gnome-dictionary-source.ui b/src/gnome-dictionary-source.ui
deleted file mode 100644
index 4ba2b6b..0000000
--- a/src/gnome-dictionary-source.ui
+++ /dev/null
@@ -1,332 +0,0 @@
-<?xml version="1.0"?>
-<!--*- mode: xml -*-->
-<interface>
- <object class="GtkListStore" id="model1">
- <columns>
- <column type="gchararray"/>
- </columns>
- <data>
- <row>
- <col id="0">Dictionary Server</col>
- </row>
- </data>
- </object>
- <object class="GtkVBox" id="source_root">
- <property name="visible">True</property>
- <property name="homogeneous">False</property>
- <property name="spacing">12</property>
- <child>
- <object class="GtkNotebook" id="notebook1">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="show_tabs">True</property>
- <property name="show_border">True</property>
- <property name="tab_pos">GTK_POS_TOP</property>
- <property name="scrollable">False</property>
- <property name="enable_popup">False</property>
- <child>
- <object class="GtkTable" id="table2">
- <property name="border_width">5</property>
- <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">6</property>
- <property name="column_spacing">12</property>
- <child>
- <object class="GtkLabel" id="description_label">
- <property name="visible">True</property>
- <property name="label" translatable="yes">_Description:</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">description_entry</property>
- <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
- <property name="width_chars">-1</property>
- <property name="single_line_mode">False</property>
- <property name="angle">0</property>
- </object>
- <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"/>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="transport_label">
- <property name="visible">True</property>
- <property name="label" translatable="yes">_Transport:</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">transport_combo</property>
- <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
- <property name="width_chars">-1</property>
- <property name="single_line_mode">False</property>
- <property name="angle">0</property>
- </object>
- <packing>
- <property name="left_attach">0</property>
- <property name="right_attach">1</property>
- <property name="top_attach">1</property>
- <property name="bottom_attach">2</property>
- <property name="x_options">fill</property>
- <property name="y_options"/>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="hostname_label">
- <property name="label" translatable="yes">H_ostname:</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">hostname_entry</property>
- <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
- <property name="width_chars">-1</property>
- <property name="single_line_mode">False</property>
- <property name="angle">0</property>
- </object>
- <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"/>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="port_label">
- <property name="label" translatable="yes">_Port:</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">port_entry</property>
- <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
- <property name="width_chars">-1</property>
- <property name="single_line_mode">False</property>
- <property name="angle">0</property>
- </object>
- <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="x_options">fill</property>
- <property name="y_options"/>
- </packing>
- </child>
- <child>
- <object class="GtkEntry" id="description_entry">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="has_focus">True</property>
- <property name="editable">True</property>
- <property name="visibility">True</property>
- <property name="max_length">0</property>
- <property name="text" translatable="yes">Source Name</property>
- <property name="has_frame">True</property>
- <property name="invisible_char">*</property>
- <property name="activates_default">False</property>
- </object>
- <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"/>
- </packing>
- </child>
- <child>
- <object class="GtkEntry" id="hostname_entry">
- <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">dict.org</property>
- <property name="has_frame">True</property>
- <property name="invisible_char">*</property>
- <property name="activates_default">False</property>
- </object>
- <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"/>
- </packing>
- </child>
- <child>
- <object class="GtkEntry" id="port_entry">
- <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">2628</property>
- <property name="has_frame">True</property>
- <property name="invisible_char">*</property>
- <property name="activates_default">False</property>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
- <property name="top_attach">3</property>
- <property name="bottom_attach">4</property>
- <property name="y_options"/>
- </packing>
- </child>
- <child>
- <object class="GtkComboBox" id="transport_combo">
- <property name="visible">True</property>
- <property name="add_tearoffs">False</property>
- <property name="focus_on_click">True</property>
- <property name="model">model1</property>
- <child>
- <object class="GtkCellRendererText" id="renderer1"/>
- <attributes>
- <attribute name="text">0</attribute>
- </attributes>
- </child>
- </object>
- <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">fill</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="tab_expand">False</property>
- <property name="tab_fill">True</property>
- </packing>
- </child>
- <child type="tab">
- <object class="GtkLabel" id="label18">
- <property name="visible">True</property>
- <property name="label" translatable="yes">Source</property>
- <property name="use_underline">False</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>
- <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
- <property name="width_chars">-1</property>
- <property name="single_line_mode">False</property>
- <property name="angle">0</property>
- </object>
- </child>
- <child>
- <object class="GtkVBox" id="db-vbox">
- <property name="border_width">5</property>
- <property name="visible">True</property>
- <property name="homogeneous">False</property>
- <property name="spacing">0</property>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- </object>
- <packing>
- <property name="tab_expand">False</property>
- <property name="tab_fill">True</property>
- </packing>
- </child>
- <child type="tab">
- <object class="GtkLabel" id="label19">
- <property name="visible">True</property>
- <property name="label" translatable="yes">Dictionaries</property>
- <property name="use_underline">False</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>
- <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
- <property name="width_chars">-1</property>
- <property name="single_line_mode">False</property>
- <property name="angle">0</property>
- </object>
- </child>
- <child>
- <object class="GtkVBox" id="strat-vbox">
- <property name="border_width">5</property>
- <property name="visible">True</property>
- <property name="homogeneous">False</property>
- <property name="spacing">0</property>
- <child>
- <placeholder/>
- </child>
- </object>
- <packing>
- <property name="tab_expand">False</property>
- <property name="tab_fill">True</property>
- </packing>
- </child>
- <child type="tab">
- <object class="GtkLabel" id="label20">
- <property name="visible">True</property>
- <property name="label" translatable="yes">Strategies</property>
- <property name="use_underline">False</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>
- <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
- <property name="width_chars">-1</property>
- <property name="single_line_mode">False</property>
- <property name="angle">0</property>
- </object>
- </child>
- </object>
- <packing>
- <property name="padding">0</property>
- <property name="expand">True</property>
- <property name="fill">True</property>
- </packing>
- </child>
- </object>
-</interface>
-