[goobox] use a .ui file to describe the message dialog
- From: Paolo Bacchilega <paobac src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [goobox] use a .ui file to describe the message dialog
- Date: Mon, 18 Mar 2013 16:43:13 +0000 (UTC)
commit feebaf1cf02554648cbffb7726980f79558d9922
Author: Paolo Bacchilega <paobac src gnome org>
Date: Mon Mar 18 13:34:59 2013 +0100
use a .ui file to describe the message dialog
po/POTFILES.in | 1 +
src/dlg-ripper.c | 4 +-
src/goobox.gresource.xml | 1 +
src/gtk-utils.c | 361 ++++++++++------------------------------------
src/gtk-utils.h | 24 +---
src/ui/Makefile.am | 1 +
src/ui/message-dialog.ui | 103 +++++++++++++
7 files changed, 186 insertions(+), 309 deletions(-)
---
diff --git a/po/POTFILES.in b/po/POTFILES.in
index 28065de..9dec552 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -68,6 +68,7 @@ src/typedefs.h
[type: gettext/glade]src/ui/format-options.ui
src/ui.h
[type: gettext/glade]src/ui/menu-toolbars.ui
+[type: gettext/glade]src/ui/message-dialog.ui
[type: gettext/glade]src/ui/preferences.ui
[type: gettext/glade]src/ui/properties.ui
[type: gettext/glade]src/ui/ripper.ui
diff --git a/src/dlg-ripper.c b/src/dlg-ripper.c
index 6678209..7b76c98 100644
--- a/src/dlg-ripper.c
+++ b/src/dlg-ripper.c
@@ -580,7 +580,6 @@ rip_current_track (DialogData *data)
save_playlist (data);
data->ripping = FALSE;
- gtk_window_set_modal (GTK_WINDOW (data->dialog), FALSE);
gtk_widget_hide (data->dialog);
d = _gtk_ok_dialog_with_checkbutton_new (GTK_WINDOW (data->window),
@@ -594,8 +593,7 @@ rip_current_track (DialogData *data)
g_signal_connect (G_OBJECT (d), "response",
G_CALLBACK (done_dialog_response_cb),
data);
- gtk_window_set_resizable (GTK_WINDOW (d), FALSE);
- gtk_widget_show (d);
+ gtk_window_present (GTK_WINDOW (d));
return;
}
diff --git a/src/goobox.gresource.xml b/src/goobox.gresource.xml
index e4dad6a..d186507 100644
--- a/src/goobox.gresource.xml
+++ b/src/goobox.gresource.xml
@@ -7,6 +7,7 @@
<file compressed="true">ui/format-options.ui</file>
<file compressed="true">ui/goobox.css</file>
<file compressed="true">ui/menu-toolbars.ui</file>
+ <file compressed="true">ui/message-dialog.ui</file>
<file compressed="true">ui/preferences.ui</file>
<file compressed="true">ui/properties.ui</file>
<file compressed="true">ui/ripper.ui</file>
diff --git a/src/gtk-utils.c b/src/gtk-utils.c
index 2975554..cd11abc 100644
--- a/src/gtk-utils.c
+++ b/src/gtk-utils.c
@@ -76,7 +76,7 @@ create_button (const char *stock_id,
}
-GtkWidget*
+GtkWidget *
_gtk_message_dialog_new (GtkWindow *parent,
GtkDialogFlags flags,
const char *stock_id,
@@ -85,69 +85,63 @@ _gtk_message_dialog_new (GtkWindow *parent,
const char *first_button_text,
...)
{
- GtkWidget *d;
- GtkWidget *label;
- GtkWidget *image;
- GtkWidget *hbox;
- va_list args;
- const gchar *text;
- int response_id;
- char *escaped_message, *markup_text;
-
- g_return_val_if_fail (message != NULL, NULL);
-
- if (stock_id == NULL)
- stock_id = GTK_STOCK_DIALOG_INFO;
+ GtkBuilder *builder;
+ GtkWidget *dialog;
+ GtkWidget *label;
+ va_list args;
+ const gchar *text;
+ int response_id;
+ char *markup_text;
- d = gtk_dialog_new_with_buttons ("", parent, flags, NULL, NULL);
- gtk_window_set_resizable (GTK_WINDOW (d), FALSE);
+ builder = _gtk_builder_new_from_resource ("message-dialog.ui");
+ dialog = _gtk_builder_get_widget (builder, "message_dialog");
+ gtk_window_set_transient_for (GTK_WINDOW (dialog), parent);
+ gtk_window_set_modal (GTK_WINDOW (dialog), (flags & GTK_DIALOG_MODAL));
+ gtk_window_set_destroy_with_parent (GTK_WINDOW (dialog), (flags & GTK_DIALOG_DESTROY_WITH_PARENT));
+ g_object_set_data_full (G_OBJECT (dialog), "builder", builder, g_object_unref);
- gtk_container_set_border_width (GTK_CONTAINER (d), 6);
- gtk_container_set_border_width (GTK_CONTAINER (gtk_dialog_get_content_area (GTK_DIALOG (d))), 6);
- gtk_box_set_spacing (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (d))), 8);
+ if (flags & GTK_DIALOG_MODAL)
+ _gtk_dialog_add_to_window_group (GTK_DIALOG (dialog));
- /* Add label and image */
+ /* set the icon */
- image = gtk_image_new_from_stock (stock_id, GTK_ICON_SIZE_DIALOG);
- gtk_misc_set_alignment (GTK_MISC (image), 0.5, 0.0);
+ gtk_image_set_from_stock (GTK_IMAGE (_gtk_builder_get_widget (builder, "icon_image")),
+ stock_id,
+ GTK_ICON_SIZE_DIALOG);
- label = gtk_label_new ("");
+ /* set the message */
- escaped_message = g_markup_escape_text (message, -1);
- if (secondary_message != NULL) {
- char *escaped_secondary_message = g_markup_escape_text (secondary_message, -1);
- markup_text = g_strdup_printf ("<span weight=\"bold\" size=\"larger\">%s</span>\n\n%s",
- escaped_message,
- escaped_secondary_message);
- g_free (escaped_secondary_message);
- } else
- markup_text = g_strdup (escaped_message);
- gtk_label_set_markup (GTK_LABEL (label), markup_text);
- g_free (markup_text);
- g_free (escaped_message);
+ label = _gtk_builder_get_widget (builder, "message_label");
- gtk_label_set_line_wrap (GTK_LABEL (label), TRUE);
- gtk_label_set_selectable (GTK_LABEL (label), TRUE);
+ if (message != NULL) {
+ char *escaped_message;
- hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6);
- gtk_container_set_border_width (GTK_CONTAINER (hbox), 6);
+ escaped_message = g_markup_escape_text (message, -1);
+ if (secondary_message != NULL) {
+ char *escaped_secondary_message;
- gtk_box_pack_start (GTK_BOX (hbox), image,
- FALSE, FALSE, 0);
+ escaped_secondary_message = g_markup_escape_text (secondary_message, -1);
+ markup_text = g_strdup_printf ("<span weight=\"bold\"
size=\"larger\">%s</span>\n\n%s",
+ escaped_message,
+ escaped_secondary_message);
- gtk_box_pack_start (GTK_BOX (hbox), label,
- TRUE, TRUE, 0);
+ g_free (escaped_secondary_message);
+ }
+ else
+ markup_text = g_strdup_printf ("<span weight=\"bold\" size=\"larger\">%s</span>",
escaped_message);
- gtk_box_pack_start (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (d))),
- hbox,
- FALSE, FALSE, 0);
+ g_free (escaped_message);
+ }
+ else
+ markup_text = g_markup_escape_text (secondary_message, -1);
- gtk_widget_show_all (hbox);
+ gtk_label_set_markup (GTK_LABEL (label), markup_text);
+ g_free (markup_text);
- /* Add buttons */
+ /* add the buttons */
if (first_button_text == NULL)
- return d;
+ return dialog;
va_start (args, first_button_text);
@@ -155,9 +149,9 @@ _gtk_message_dialog_new (GtkWindow *parent,
response_id = va_arg (args, gint);
while (text != NULL) {
- gtk_dialog_add_button (GTK_DIALOG (d), text, response_id);
+ gtk_dialog_add_button (GTK_DIALOG (dialog), text, response_id);
- text = va_arg (args, gchar*);
+ text = va_arg (args, char*);
if (text == NULL)
break;
response_id = va_arg (args, int);
@@ -165,181 +159,11 @@ _gtk_message_dialog_new (GtkWindow *parent,
va_end (args);
- gtk_dialog_set_default_response (GTK_DIALOG (d), GTK_RESPONSE_YES);
-
- return d;
+ return dialog;
}
-char *
-_gtk_request_dialog_run (GtkWindow *parent,
- GtkDialogFlags flags,
- const char *message,
- const char *default_value,
- int max_length,
- const char *no_button_text,
- const char *yes_button_text)
-{
- GtkWidget *d;
- GtkWidget *label;
- GtkWidget *image;
- GtkWidget *hbox;
- GtkWidget *vbox;
- GtkWidget *entry;
- GtkWidget *button;
- char *result = NULL;
- char *stock_id = GTK_STOCK_DIALOG_QUESTION;
-
- d = gtk_dialog_new_with_buttons ("", parent, flags, NULL, NULL);
- gtk_window_set_resizable (GTK_WINDOW (d), FALSE);
-
- gtk_container_set_border_width (GTK_CONTAINER (d), 6);
- gtk_container_set_border_width (GTK_CONTAINER (gtk_dialog_get_content_area (GTK_DIALOG (d))), 6);
- gtk_box_set_spacing (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (d))), 12);
-
- /* Add label and image */
-
- image = gtk_image_new_from_stock (stock_id, GTK_ICON_SIZE_DIALOG);
- gtk_misc_set_alignment (GTK_MISC (image), 0.5, 0.0);
-
- label = gtk_label_new (message);
- gtk_label_set_line_wrap (GTK_LABEL (label), TRUE);
- gtk_label_set_selectable (GTK_LABEL (label), FALSE);
- gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
-
- entry = gtk_entry_new ();
- gtk_widget_set_size_request (entry, REQUEST_ENTRY_WIDTH, -1);
- gtk_entry_set_max_length (GTK_ENTRY (entry), max_length);
- gtk_entry_set_text (GTK_ENTRY (entry), default_value);
- gtk_entry_set_activates_default (GTK_ENTRY (entry), TRUE);
-
- hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6);
- vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6);
-
- gtk_container_set_border_width (GTK_CONTAINER (hbox), 6);
- gtk_box_set_spacing (GTK_BOX (hbox), 12);
- gtk_box_set_spacing (GTK_BOX (vbox), 6);
-
- gtk_box_pack_start (GTK_BOX (vbox), label,
- TRUE, TRUE, 0);
-
- gtk_box_pack_start (GTK_BOX (vbox), entry,
- FALSE, FALSE, 0);
-
- gtk_box_pack_start (GTK_BOX (hbox), image,
- FALSE, FALSE, 0);
-
- gtk_box_pack_start (GTK_BOX (hbox), vbox,
- TRUE, TRUE, 0);
-
- gtk_box_pack_start (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (d))),
- hbox,
- FALSE, FALSE, 0);
-
- gtk_widget_show_all (hbox);
-
- /* Add buttons */
-
- button = create_button (GTK_STOCK_CANCEL, no_button_text);
- gtk_dialog_add_action_widget (GTK_DIALOG (d),
- button,
- GTK_RESPONSE_CANCEL);
-
- /**/
-
- button = create_button (GTK_STOCK_OK, yes_button_text);
- gtk_dialog_add_action_widget (GTK_DIALOG (d),
- button,
- GTK_RESPONSE_YES);
-
- /**/
-
- gtk_dialog_set_default_response (GTK_DIALOG (d),
- GTK_RESPONSE_YES);
- gtk_widget_grab_focus (entry);
-
- /* Run dialog */
-
- if ((gtk_dialog_run (GTK_DIALOG (d)) == GTK_RESPONSE_YES) &&
- (strlen (gtk_entry_get_text (GTK_ENTRY (entry))) > 0) )
- /* Normalize unicode text to "NFC" form for consistency. */
- result = g_utf8_normalize (gtk_entry_get_text (GTK_ENTRY (entry)),
- -1,
- G_NORMALIZE_NFC);
- else
- result = NULL;
-
- gtk_widget_destroy (d);
-
- return result;
-}
-
-
-GtkWidget*
-_gtk_yesno_dialog_new (GtkWindow *parent,
- GtkDialogFlags flags,
- const char *message,
- const char *no_button_text,
- const char *yes_button_text)
-{
- GtkWidget *d;
- GtkWidget *label;
- GtkWidget *image;
- GtkWidget *hbox;
- GtkWidget *button;
- char *stock_id = GTK_STOCK_DIALOG_QUESTION;
-
- d = gtk_dialog_new_with_buttons ("", parent, flags, NULL, NULL);
- gtk_window_set_resizable (GTK_WINDOW (d), FALSE);
-
- gtk_container_set_border_width (GTK_CONTAINER (d), 6);
- gtk_container_set_border_width (GTK_CONTAINER (gtk_dialog_get_content_area (GTK_DIALOG (d))), 6);
- gtk_box_set_spacing (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (d))), 8);
-
- /* Add label and image */
-
- image = gtk_image_new_from_stock (stock_id, GTK_ICON_SIZE_DIALOG);
- gtk_misc_set_alignment (GTK_MISC (image), 0.5, 0.0);
-
- label = gtk_label_new (message);
- gtk_label_set_line_wrap (GTK_LABEL (label), TRUE);
- gtk_label_set_selectable (GTK_LABEL (label), TRUE);
-
- hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 12);
- gtk_container_set_border_width (GTK_CONTAINER (hbox), 6);
-
- gtk_box_pack_start (GTK_BOX (hbox), image,
- FALSE, FALSE, 0);
-
- gtk_box_pack_start (GTK_BOX (hbox), label,
- TRUE, TRUE, 0);
-
- gtk_box_pack_start (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (d))),
- hbox,
- FALSE, FALSE, 0);
-
- gtk_widget_show_all (hbox);
-
- /* Add buttons */
-
- button = create_button (GTK_STOCK_CANCEL, no_button_text);
- gtk_dialog_add_action_widget (GTK_DIALOG (d),
- button,
- GTK_RESPONSE_CANCEL);
-
- /**/
-
- button = create_button (GTK_STOCK_OK, yes_button_text);
- gtk_dialog_add_action_widget (GTK_DIALOG (d),
- button,
- GTK_RESPONSE_YES);
-
- /**/
-
- gtk_dialog_set_default_response (GTK_DIALOG (d), GTK_RESPONSE_YES);
-
- return d;
-}
+/* -- _gtk_ok_dialog_with_checkbutton_new -- */
typedef struct {
@@ -374,75 +198,31 @@ _gtk_ok_dialog_with_checkbutton_new (GtkWindow *parent,
GSettings *settings,
const char *key)
{
- GtkWidget *d;
- GtkWidget *label;
- GtkWidget *image;
- GtkWidget *hbox;
- GtkWidget *button;
- GtkWidget *check_button;
- char *stock_id = GTK_STOCK_DIALOG_INFO;
- char *escaped_message, *markup_text;
- DialogWithButtonData *data;
-
- d = gtk_dialog_new_with_buttons ("", parent, flags, NULL, NULL);
- gtk_window_set_resizable (GTK_WINDOW (d), FALSE);
+ GtkWidget *d;
+ GtkBuilder *builder;
+ GtkWidget *check_button;
+ DialogWithButtonData *data;
- /* Add label and image */
-
- image = gtk_image_new_from_stock (stock_id, GTK_ICON_SIZE_DIALOG);
- gtk_misc_set_alignment (GTK_MISC (image), 0.5, 0.0);
-
- escaped_message = g_markup_escape_text (message, -1);
- markup_text = g_strdup_printf ("<span weight=\"bold\" size=\"larger\">%s</span>", escaped_message);
-
- label = gtk_label_new ("");
- gtk_label_set_markup (GTK_LABEL (label), markup_text);
- g_free (markup_text);
- g_free (escaped_message);
-
- gtk_label_set_line_wrap (GTK_LABEL (label), TRUE);
- gtk_label_set_selectable (GTK_LABEL (label), TRUE);
-
- hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 12);
- gtk_container_set_border_width (GTK_CONTAINER (hbox), 6);
-
- gtk_box_pack_start (GTK_BOX (hbox), image,
- FALSE, FALSE, 0);
-
- gtk_box_pack_start (GTK_BOX (hbox), label,
- TRUE, TRUE, 0);
-
- gtk_box_pack_start (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (d))),
- hbox,
- FALSE, FALSE, 0);
-
- /* Add checkbutton */
+ d = _gtk_message_dialog_new (parent,
+ flags,
+ GTK_STOCK_DIALOG_INFO,
+ message,
+ NULL,
+ ok_button_text, GTK_RESPONSE_OK,
+ NULL);
+ gtk_dialog_set_default_response (GTK_DIALOG (d), GTK_RESPONSE_OK);
- check_button = gtk_check_button_new_with_mnemonic (check_button_label);
- gtk_box_pack_start (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (d))),
- check_button,
- FALSE, FALSE, 0);
- gtk_widget_show (check_button);
+ /* setup the checkbutton */
+ builder = g_object_get_data (G_OBJECT (d), "builder");
+ check_button = _gtk_builder_get_widget(builder, "message_checkbutton");
+ gtk_container_add (GTK_CONTAINER (check_button), gtk_label_new_with_mnemonic (check_button_label));
+ gtk_widget_show_all (check_button);
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (check_button), g_settings_get_boolean (settings,
key));
- gtk_widget_show_all (hbox);
-
- /* Add buttons */
-
- button = create_button (GTK_STOCK_CANCEL, ok_button_text);
- gtk_dialog_add_action_widget (GTK_DIALOG (d),
- button,
- GTK_RESPONSE_OK);
-
- /**/
-
- gtk_dialog_set_default_response (GTK_DIALOG (d), GTK_RESPONSE_YES);
-
data = g_new0 (DialogWithButtonData, 1);
data->settings = g_object_ref (settings);
data->key = g_strdup (key);
-
g_object_set_data_full (G_OBJECT (d), "settings-data", data, (GDestroyNotify)
dialog_with_button_data_free);
g_signal_connect (G_OBJECT (check_button),
@@ -570,6 +350,19 @@ _gtk_info_dialog_run (GtkWindow *parent,
}
+void
+_gtk_dialog_add_to_window_group (GtkDialog *dialog)
+{
+ GtkWidget *toplevel;
+
+ g_return_if_fail (dialog != NULL);
+
+ toplevel = gtk_widget_get_toplevel (GTK_WIDGET (dialog));
+ if (gtk_widget_is_toplevel (toplevel) && gtk_window_has_group (GTK_WINDOW (toplevel)))
+ gtk_window_group_add_window (gtk_window_get_group (GTK_WINDOW (toplevel)), GTK_WINDOW
(dialog));
+}
+
+
static GdkPixbuf *
get_themed_icon_pixbuf (GThemedIcon *icon,
int size,
diff --git a/src/gtk-utils.h b/src/gtk-utils.h
index f9ace9b..b42c752 100644
--- a/src/gtk-utils.h
+++ b/src/gtk-utils.h
@@ -37,28 +37,6 @@ GtkWidget* _gtk_message_dialog_new (GtkWindow *parent,
const char *first_button_text,
...);
GtkWidget*
-_gtk_message_dialog_with_checkbutton_new (GtkWindow *parent,
- GtkDialogFlags flags,
- const char *stock_id,
- const char *message,
- const char *secondary_message,
- const char *gconf_key,
- const char *check_button_label,
- const char *first_button_text,
- ...);
-gchar* _gtk_request_dialog_run (GtkWindow *parent,
- GtkDialogFlags flags,
- const char *message,
- const char *default_value,
- int max_length,
- const char *no_button_text,
- const char *yes_button_text);
-GtkWidget* _gtk_yesno_dialog_new (GtkWindow *parent,
- GtkDialogFlags flags,
- const char *message,
- const char *no_button_text,
- const char *yes_button_text);
-GtkWidget*
_gtk_ok_dialog_with_checkbutton_new (GtkWindow *parent,
GtkDialogFlags flags,
const char *message,
@@ -80,6 +58,8 @@ void _gtk_error_dialog_run (GtkWindow *parent,
void _gtk_info_dialog_run (GtkWindow *parent,
const gchar *format,
...) G_GNUC_PRINTF (2, 3);
+void _gtk_dialog_add_to_window_group (GtkDialog *dialog);
+
GdkPixbuf * _g_icon_get_pixbuf (GIcon *icon,
int size,
GtkIconTheme *icon_theme);
diff --git a/src/ui/Makefile.am b/src/ui/Makefile.am
index 85e7ae6..9ae838b 100644
--- a/src/ui/Makefile.am
+++ b/src/ui/Makefile.am
@@ -5,6 +5,7 @@ EXTRA_DIST = \
format-options.ui \
goobox.css \
menu-toolbars.ui \
+ message-dialog.ui \
preferences.ui \
properties.ui \
ripper.ui
diff --git a/src/ui/message-dialog.ui b/src/ui/message-dialog.ui
new file mode 100644
index 0000000..5f0edc5
--- /dev/null
+++ b/src/ui/message-dialog.ui
@@ -0,0 +1,103 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<interface>
+ <!-- interface-requires gtk+ 3.0 -->
+ <object class="GtkDialog" id="message_dialog">
+ <property name="can_focus">False</property>
+ <property name="border_width">5</property>
+ <property name="type_hint">dialog</property>
+ <child internal-child="vbox">
+ <object class="GtkBox" id="dialog-vbox4">
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">12</property>
+ <child internal-child="action_area">
+ <object class="GtkButtonBox" id="dialog-action_area4">
+ <property name="can_focus">False</property>
+ <property name="layout_style">end</property>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="pack_type">end</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkHBox" id="hbox28">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="border_width">5</property>
+ <property name="spacing">12</property>
+ <child>
+ <object class="GtkImage" id="icon_image">
+ <property name="width_request">64</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="yalign">0</property>
+ <property name="stock">gtk-info</property>
+ <property name="pixel_size">48</property>
+ <property name="icon-size">6</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox" id="box1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">12</property>
+ <child>
+ <object class="GtkLabel" id="message_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xalign">0</property>
+ <property name="use_underline">True</property>
+ <property name="selectable">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="message_checkbutton">
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="xalign">0</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+</interface>
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]