[telegnome] Port prefs widget construction code to GtkBuilder



commit f1dd87064cbf4c8ceb909b7aaffe36570043cf7d
Author: Colin Watson <cjwatson debian org>
Date:   Sat Feb 6 18:28:01 2016 +0000

    Port prefs widget construction code to GtkBuilder
    
    * src/gui.c (tg_gui_new): Rename TG_UI_RESOURCE to TG_MAIN_UI.
    * src/main.h (TG_UI_RESOURCE): Rename to ...
    (TG_MAIN_UI): ... this.
    (TG_PREFS_UI): New definition.
    * src/prefs.c (tg_prefs_fill_channel_list): Remove any old rows from
    the store.
    (tg_prefs_response_cb, tg_prefs_construct_misc_page,
    tg_prefs_construct_channels_page): Remove.
    (tg_prefs_show): Use GtkBuilder rather than manual widget
    construction code.  Take a TgGui parameter rather than a GtkWindow.
    Update all callers.
    * src/prefs.h (tg_prefs_show): Update prototype.
    * src/prefs.ui: New file.
    * src/telegnome.gresource.xml: Add prefs.ui.
    * src/Makefile.am (EXTRA_DIST): Add prefs.ui.
    * configure.ac (PKG_CHECK_MODULES): Require gtk+-3.0 >= 3.8 for
    gtk_builder_expose_object.
    * README: Update GTK+ requirement.

 README                      |    2 +-
 configure.ac                |    2 +-
 src/Makefile.am             |    1 +
 src/gui.c                   |    5 +-
 src/main.h                  |    3 +-
 src/prefs.c                 |  202 ++++++-------------------
 src/prefs.h                 |    4 +-
 src/prefs.ui                |  350 +++++++++++++++++++++++++++++++++++++++++++
 src/telegnome.gresource.xml |    1 +
 9 files changed, 406 insertions(+), 164 deletions(-)
---
diff --git a/README b/README
index 4d272e5..d05bcbc 100644
--- a/README
+++ b/README
@@ -7,7 +7,7 @@ To compile this package, you need:
 
 An ANSI C-compiler
 GLib >= 2.44
-GTK+ >= 3.0
+GTK+ >= 3.8
 gdk-pixbuf >= 2.26
 cairo >= 1.10
 dconf
diff --git a/configure.ac b/configure.ac
index f35a676..b626fc4 100644
--- a/configure.ac
+++ b/configure.ac
@@ -24,7 +24,7 @@ AC_PROG_INSTALL
 AC_DEFINE_UNQUOTED([SYSCONFDIR], "$sysconfdir", [System configuration directory.])
 
 AM_PATH_GLIB_2_0([2.44.0], [], [AC_MSG_ERROR([GLib >= 2.44.0 is required])], [gobject gio])
-PKG_CHECK_MODULES([TELEGNOME], [gtk+-3.0 gdk-pixbuf-2.0 >= 2.26 cairo >= 1.10 dconf uuid])
+PKG_CHECK_MODULES([TELEGNOME], [gtk+-3.0 >= 3.8 gdk-pixbuf-2.0 >= 2.26 cairo >= 1.10 dconf uuid])
 
 AC_ARG_VAR([XMLLINT], [the xmllint program])
 AC_PATH_PROG([XMLLINT], [xmllint])
diff --git a/src/Makefile.am b/src/Makefile.am
index add5006..8fd662e 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -35,5 +35,6 @@ telegnome_LDADD=$(LINK_FLAGS) $(GNOME_LIBDIR) $(GLIB_LIBS) $(TELEGNOME_LIBS)
 
 EXTRA_DIST = \
        menus.ui \
+       prefs.ui \
        telegnome.gresource.xml \
        telegnome.ui
diff --git a/src/gui.c b/src/gui.c
index 8c61dbd..b8100ca 100644
--- a/src/gui.c
+++ b/src/gui.c
@@ -621,7 +621,6 @@ tg_gui_update_page(int *major_nr, int *minor_nr)
 TgGui *
 tg_gui_new (GtkApplication *app, GSettings *settings)
 {
-    GtkBuilder *builder;
     GdkPixbuf *pixbuf;
     GError *error = NULL;
 
@@ -630,7 +629,7 @@ tg_gui_new (GtkApplication *app, GSettings *settings)
     /* register custom type */
     g_type_name (TG_TYPE_PIXPACK);
 
-    gui->builder = gtk_builder_new_from_resource (TG_UI_RESOURCE);
+    gui->builder = gtk_builder_new_from_resource (TG_MAIN_UI);
     gui->window = GTK_WIDGET
        (gtk_builder_get_object (gui->builder, "main_window"));
     gtk_application_add_window (app, GTK_WINDOW (gui->window));
@@ -837,7 +836,7 @@ void
 tg_gui_activate_preferences (GSimpleAction *action, GVariant *parameter,
                             gpointer data)
 {
-    tg_prefs_show(GTK_WINDOW(gui->window), G_CALLBACK(tg_gui_prefs_close_cb));
+    tg_prefs_show(gui, G_CALLBACK(tg_gui_prefs_close_cb));
 }
 
 void
diff --git a/src/main.h b/src/main.h
index f9f694d..b807cab 100644
--- a/src/main.h
+++ b/src/main.h
@@ -42,7 +42,8 @@
 
 #define TG_NOTFOUND_PIXMAP     "/org/gnome/telegnome/pixmaps/testbeeld.png"
 #define TG_LOGO_PIXMAP                 "/org/gnome/telegnome/pixmaps/telegnome-logo.png"
-#define TG_UI_RESOURCE         "/org/gnome/telegnome/telegnome.ui"
+#define TG_MAIN_UI             "/org/gnome/telegnome/telegnome.ui"
+#define TG_PREFS_UI            "/org/gnome/telegnome/prefs.ui"
 
 #define TG_KB_TIMEOUT          2500    /* the timeout before the input fields resets */
 #define TG_LOGO_TIMEOUT                7500    /* the time the logo gets displayed */
diff --git a/src/prefs.c b/src/prefs.c
index 3cfadbb..fba78ef 100644
--- a/src/prefs.c
+++ b/src/prefs.c
@@ -34,10 +34,13 @@
 
 #include "prefs.h"
 #include "channel.h"
+#include "gui.h"
 #include "main.h"
 
 
 typedef struct _TgPrefsWindow {
+    GtkBuilder *builder;
+
     GSettings *settings;
 
     GtkWidget *dialog;
@@ -71,6 +74,8 @@ tg_prefs_fill_channel_list()
     TgChannel *channel;
     gchar *country, *name;
 
+    gtk_list_store_clear(prefs_window->channel_store);
+
     children = g_settings_get_strv(prefs_window->settings, "channel-children");
     for (childp = children; childp && *childp; ++childp) {
        GtkTreeIter iter;
@@ -177,14 +182,6 @@ tg_prefs_edit_channel(TgChannel *orig)
 }
 
 static void
-tg_prefs_response_cb(GtkDialog *dialog, gint response_id, gpointer user_data)
-{
-    gtk_widget_destroy(GTK_WIDGET(dialog));
-    g_clear_object(&prefs_window->channel_store);
-    g_clear_pointer(&prefs_window, g_free);
-}
-
-static void
 tg_prefs_channel_selection_changed_cb(GtkTreeSelection *selection,
                                      gpointer data)
 {
@@ -373,164 +370,55 @@ tg_prefs_channel_delete_cb(void)
     g_free(old_uuid);
 }
 
-/* not a good idea to have a 'misc' page, but i cant come up with a better name */
-static GtkWidget *
-tg_prefs_construct_misc_page(void)
-{
-    GtkWidget *grid, *frame, *label, *entry;
-    GtkAdjustment *adj;
-
-    g_assert(prefs_window != NULL);
-
-    grid = gtk_grid_new();
-    gtk_grid_set_row_spacing(GTK_GRID(grid), 5);
-    gtk_grid_set_column_spacing(GTK_GRID(grid), 5);
-
-    label = gtk_label_new(_("Paging interval"));
-    gtk_widget_set_tooltip_text(label, _("Specifies the interval for the auto-pager, in milliseconds."));
-
-    adj = GTK_ADJUSTMENT(gtk_adjustment_new(8000.0, 1000.0, 60000.0, 1000.0, 10.0, 0.0));
-    entry = gtk_spin_button_new(adj, 0.5, 0);
-
-    gtk_grid_attach(GTK_GRID(grid), label, 0, 0, 1, 1);
-    gtk_grid_attach(GTK_GRID(grid), entry, 1, 0, 1, 1);
-
-    g_settings_bind(prefs_window->settings, "paging-interval", entry, "value", G_SETTINGS_BIND_DEFAULT);
-
-    frame = gtk_frame_new(_("Miscellaneous"));
-
-    gtk_container_set_border_width(GTK_CONTAINER(frame), 5);
-    gtk_container_set_border_width(GTK_CONTAINER(grid), 5);
-    gtk_container_add(GTK_CONTAINER(frame), grid);
-
-    return frame;
-}
-
-static GtkWidget *
-tg_prefs_construct_channels_page()
-{
-    GtkWidget *grid, *button_grid, *btn;
-    GtkTreeViewColumn *country_column, *name_column;
-    GtkTreeSelection *selection;
-
-    g_assert(prefs_window != NULL);
-
-    grid = gtk_grid_new();
-    gtk_grid_set_column_spacing(GTK_GRID(grid), 10);
-
-    /* the list */
-    prefs_window->channel_store = gtk_list_store_new(
-       N_COLUMNS, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_OBJECT);
-    prefs_window->channel_view = gtk_tree_view_new_with_model(
-       GTK_TREE_MODEL(prefs_window->channel_store));
-    country_column = gtk_tree_view_column_new_with_attributes(
-       N_("Country"), gtk_cell_renderer_text_new(),
-       "text", COUNTRY_COLUMN, NULL);
-    gtk_tree_view_append_column(
-       GTK_TREE_VIEW(prefs_window->channel_view), country_column);
-    name_column = gtk_tree_view_column_new_with_attributes(
-       N_("Name"), gtk_cell_renderer_text_new(),
-       "text", NAME_COLUMN, NULL);
-    gtk_tree_view_column_set_min_width(name_column, 200);
-    gtk_tree_view_append_column(
-       GTK_TREE_VIEW(prefs_window->channel_view), name_column);
-    gtk_widget_set_hexpand(prefs_window->channel_view, TRUE);
-    gtk_widget_set_halign(prefs_window->channel_view, GTK_ALIGN_FILL);
-    gtk_widget_set_vexpand(prefs_window->channel_view, TRUE);
-    gtk_widget_set_valign(prefs_window->channel_view, GTK_ALIGN_FILL);
-    gtk_grid_attach(GTK_GRID(grid), prefs_window->channel_view, 0, 0, 1, 1);
-
-    /* label for descriptions and stuff */
-    prefs_window->channel_label = gtk_label_new("");
-    gtk_grid_attach(GTK_GRID(grid), prefs_window->channel_label, 0, 1, 1, 1);
-
-    /* fill channel list */
-    tg_prefs_fill_channel_list();
-
-    selection = gtk_tree_view_get_selection(
-       GTK_TREE_VIEW(prefs_window->channel_view));
-    gtk_tree_selection_set_mode(selection, GTK_SELECTION_SINGLE);
-    g_signal_connect(G_OBJECT(selection), "changed",
-                    G_CALLBACK(tg_prefs_channel_selection_changed_cb),
-                    NULL);
-
-    button_grid = gtk_grid_new();
-    gtk_orientable_set_orientation(GTK_ORIENTABLE(button_grid),
-                                  GTK_ORIENTATION_VERTICAL);
-    gtk_grid_set_row_homogeneous(GTK_GRID(button_grid), TRUE);
-    gtk_grid_set_row_spacing(GTK_GRID(button_grid), 4);
-
-    /* move up button */
-    btn = gtk_button_new_with_label(_("Move up"));
-    gtk_container_add(GTK_CONTAINER(button_grid), btn);
-    g_signal_connect(G_OBJECT(btn), "clicked", G_CALLBACK(tg_prefs_channel_move_up_cb), NULL);
-    /* move down button */
-    btn = gtk_button_new_with_label(_("Move down"));
-    gtk_container_add(GTK_CONTAINER(button_grid), btn);
-    g_signal_connect(G_OBJECT(btn), "clicked", G_CALLBACK(tg_prefs_channel_move_down_cb), NULL);
-    /* add button */
-    btn = gtk_button_new_with_label(_("Add..."));
-    gtk_container_add(GTK_CONTAINER(button_grid), btn);
-    g_signal_connect(G_OBJECT(btn), "clicked", G_CALLBACK(tg_prefs_channel_add_cb), NULL);
-
-    /* delete button */
-    btn = gtk_button_new_with_label(_("Delete"));
-    gtk_container_add(GTK_CONTAINER(button_grid), btn);
-    g_signal_connect(G_OBJECT(btn), "clicked", G_CALLBACK(tg_prefs_channel_delete_cb), NULL);
-
-    /* edit button */
-    btn = gtk_button_new_with_label(_("Edit"));
-    gtk_container_add(GTK_CONTAINER(button_grid), btn);
-    g_signal_connect(G_OBJECT(btn), "clicked", G_CALLBACK(tg_prefs_channel_edit_cb), NULL);
-
-    gtk_grid_attach(GTK_GRID(grid), button_grid, 1, 0, 1, 2);
-
-    gtk_container_set_border_width(GTK_CONTAINER(grid), 5);
-    return grid;
-}
-
 void
-tg_prefs_show(GtkWindow *parent, GCallback close_cb)
+tg_prefs_show(TgGui *gui, GCallback close_cb)
 {
-    if (prefs_window != NULL) {
-       gdk_window_show(gtk_widget_get_window(prefs_window->dialog));
-       gdk_window_raise(gtk_widget_get_window(prefs_window->dialog));
-    } else {
-       GtkWidget *content_area, *notebook, *page;
+    if (!prefs_window) {
+       GError *error = NULL;
 
        prefs_window = g_new0(TgPrefsWindow, 1);
 
        prefs_window->settings = g_settings_new("org.gnome.telegnome");
 
-       prefs_window->dialog = gtk_dialog_new_with_buttons(
-           _("TeleGNOME: Preferences"), parent,
-           GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT,
-           _("_OK"), GTK_RESPONSE_ACCEPT,
-           _("_Cancel"), GTK_RESPONSE_REJECT,
-           NULL);
-       content_area = gtk_dialog_get_content_area(
-           GTK_DIALOG(prefs_window->dialog));
-       notebook = gtk_notebook_new();
-       gtk_container_add(GTK_CONTAINER(content_area), notebook);
-
-       page = tg_prefs_construct_channels_page();
-       gtk_notebook_append_page(GTK_NOTEBOOK(notebook), page,
-                                gtk_label_new(_("Channels")));
-
-       page = tg_prefs_construct_misc_page();
-       gtk_notebook_append_page(GTK_NOTEBOOK(notebook), page,
-                                gtk_label_new(_("Misc")));
-
-
-       gtk_notebook_set_show_tabs (GTK_NOTEBOOK(notebook), TRUE);
-       gtk_notebook_set_show_border (GTK_NOTEBOOK(notebook), TRUE);
+       prefs_window->builder = gtk_builder_new();
+       gtk_builder_expose_object(prefs_window->builder, "main_window",
+                                 G_OBJECT(tg_gui_get_window(gui)));
+       if (!gtk_builder_add_from_resource(prefs_window->builder, TG_PREFS_UI,
+                                          &error))
+           g_error("failed to add UI: %s", error->message);
+       prefs_window->dialog = GTK_WIDGET
+           (gtk_builder_get_object(prefs_window->builder, "prefs_dialog"));
+       prefs_window->channel_store = GTK_LIST_STORE
+           (gtk_builder_get_object(prefs_window->builder,
+                                   "prefs_channel_store"));
+       prefs_window->channel_view = GTK_WIDGET
+           (gtk_builder_get_object(prefs_window->builder,
+                                   "prefs_channel_view"));
+       prefs_window->channel_label = GTK_WIDGET
+           (gtk_builder_get_object(prefs_window->builder,
+                                   "prefs_channel_label"));
+
+       gtk_builder_add_callback_symbols
+           (prefs_window->builder,
+            "tg_prefs_channel_selection_changed_cb",
+            G_CALLBACK(tg_prefs_channel_selection_changed_cb),
+            "tg_prefs_channel_move_up_cb",
+            G_CALLBACK(tg_prefs_channel_move_up_cb),
+            "tg_prefs_channel_move_down_cb",
+            G_CALLBACK(tg_prefs_channel_move_down_cb),
+            "tg_prefs_channel_add_cb", G_CALLBACK(tg_prefs_channel_add_cb),
+            "tg_prefs_channel_delete_cb",
+            G_CALLBACK(tg_prefs_channel_delete_cb),
+            "tg_prefs_channel_edit_cb", G_CALLBACK(tg_prefs_channel_edit_cb),
+            NULL);
+       gtk_builder_connect_signals(prefs_window->builder, NULL);
 
        if (close_cb)
            tg_prefs_set_close_cb (close_cb);
-       g_signal_connect (G_OBJECT (prefs_window->dialog), "response",
-                         G_CALLBACK (tg_prefs_response_cb), NULL);
-
-       /* and, show them all */
-       gtk_widget_show_all(prefs_window->dialog);
     }
+
+    tg_prefs_fill_channel_list();
+    gtk_widget_show_all(prefs_window->dialog);
+    gtk_dialog_run(GTK_DIALOG(prefs_window->dialog));
+    gtk_widget_hide(prefs_window->dialog);
 }
diff --git a/src/prefs.h b/src/prefs.h
index 37201e0..0a579c2 100644
--- a/src/prefs.h
+++ b/src/prefs.h
@@ -29,9 +29,11 @@
 #include <glib-object.h>
 #include <gtk/gtk.h>
 
+#include "gui.h"
+
 #define TELEGNOME_LOGO         "telegnome/telegnome-logo.png"
 #define TELEGNOME_NOTFOUND     "telegnome/telegnome-logo.png"
 
-void tg_prefs_show(GtkWindow *parent, GCallback close_cb);
+void tg_prefs_show(TgGui *gui, GCallback close_cb);
 
 #endif /* __PREFS_H__ */
diff --git a/src/prefs.ui b/src/prefs.ui
new file mode 100644
index 0000000..7a1bae6
--- /dev/null
+++ b/src/prefs.ui
@@ -0,0 +1,350 @@
+<!--
+ * Copyright (C) 2016 Colin Watson <cjwatson debian org>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+-->
+
+<?xml version="1.0"?>
+<interface>
+  <!-- interface-requires gtk+ 3.0 -->
+  <object class="GtkListStore" id="prefs_channel_store">
+    <columns>
+      <!-- column-name Country -->
+      <column type="gchararray"/>
+      <!-- column-name Name -->
+      <column type="gchararray"/>
+      <!-- column-name Channel -->
+      <column type="GObject"/>
+    </columns>
+  </object>
+  <object class="GtkAdjustment" id="paging_interval_adjustment">
+    <property name="upper">60000.0</property>
+    <property name="lower">1000.0</property>
+    <property name="value">8000.0</property>
+    <property name="step-increment">1000.0</property>
+    <property name="page-increment">10.0</property>
+  </object>
+  <object class="GtkDialog" id="prefs_dialog">
+    <property name="title" translatable="yes">TeleGNOME: Preferences</property>
+    <property name="transient-for">main_window</property>
+    <property name="modal">TRUE</property>
+    <property name="destroy-with-parent">TRUE</property>
+    <child internal-child="vbox">
+      <object class="GtkBox">
+        <child>
+          <object class="GtkNotebook">
+            <child>
+              <object class="GtkGrid">
+                <property name="column-spacing">10</property>
+                <property name="border-width">5</property>
+                <child>
+                  <object class="GtkTreeView" id="prefs_channel_view">
+                    <property name="model">prefs_channel_store</property>
+                    <property name="hexpand">TRUE</property>
+                    <property name="halign">fill</property>
+                    <property name="vexpand">TRUE</property>
+                    <property name="valign">fill</property>
+                    <child>
+                      <object class="GtkTreeViewColumn">
+                        <property name="title" translatable="yes">Country</property>
+                        <child>
+                          <object class="GtkCellRendererText"/>
+                          <attributes>
+                            <attribute name="text">0</attribute>
+                          </attributes>
+                        </child>
+                      </object>
+                    </child>
+                    <child>
+                      <object class="GtkTreeViewColumn">
+                        <property name="title" translatable="yes">Name</property>
+                        <child>
+                          <object class="GtkCellRendererText"/>
+                          <attributes>
+                            <attribute name="text">1</attribute>
+                          </attributes>
+                        </child>
+                      </object>
+                    </child>
+                    <child internal-child="selection">
+                      <object class="GtkTreeSelection">
+                        <signal name="changed" handler="tg_prefs_channel_selection_changed_cb"/>
+                      </object>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="left-attach">0</property>
+                    <property name="top-attach">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkLabel" id="prefs_channel_label"/>
+                  <packing>
+                    <property name="left-attach">0</property>
+                    <property name="top-attach">1</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkGrid">
+                    <property name="row-homogeneous">TRUE</property>
+                    <property name="row-spacing">4</property>
+                    <child>
+                      <object class="GtkButton">
+                        <property name="label" translatable="yes">Move up</property>
+                        <signal name="clicked" handler="tg_prefs_channel_move_up_cb"/>
+                      </object>
+                      <packing>
+                        <property name="left-attach">0</property>
+                        <property name="top-attach">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkButton">
+                        <property name="label" translatable="yes">Move down</property>
+                        <signal name="clicked" handler="tg_prefs_channel_move_down_cb"/>
+                      </object>
+                      <packing>
+                        <property name="left-attach">0</property>
+                        <property name="top-attach">1</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkButton">
+                        <property name="label" translatable="yes">Add...</property>
+                        <signal name="clicked" handler="tg_prefs_channel_add_cb"/>
+                      </object>
+                      <packing>
+                        <property name="left-attach">0</property>
+                        <property name="top-attach">2</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkButton">
+                        <property name="label" translatable="yes">Delete</property>
+                        <signal name="clicked" handler="tg_prefs_channel_delete_cb"/>
+                      </object>
+                      <packing>
+                        <property name="left-attach">0</property>
+                        <property name="top-attach">3</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkButton">
+                        <property name="label" translatable="yes">Edit</property>
+                        <signal name="clicked" handler="tg_prefs_channel_edit_cb"/>
+                      </object>
+                      <packing>
+                        <property name="left-attach">0</property>
+                        <property name="top-attach">4</property>
+                      </packing>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="left-attach">1</property>
+                    <property name="top-attach">0</property>
+                    <property name="height">2</property>
+                  </packing>
+                </child>
+              </object>
+            </child>
+            <child type="tab">
+              <object class="GtkLabel">
+                <property name="label" translatable="yes">Channels</property>
+              </object>
+            </child>
+            <child>
+              <object class="GtkGrid">
+                <property name="row-spacing">5</property>
+                <property name="column-spacing">5</property>
+                <property name="border-width">5</property>
+                <child>
+                  <object class="GtkLabel">
+                    <property name="label" translatable="yes">Paging interval</property>
+                    <property name="tooltip-text" translatable="yes">Specifies the interval for the 
auto-pager, in milliseconds.</property>
+                  </object>
+                  <packing>
+                    <property name="left-attach">0</property>
+                    <property name="top-attach">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkSpinButton" id="paging_interval_entry">
+                    <property name="adjustment">paging_interval_adjustment</property>
+                    <property name="climb-rate">0.5</property>
+                  </object>
+                  <packing>
+                    <property name="left-attach">1</property>
+                    <property name="top-attach">0</property>
+                  </packing>
+                </child>
+              </object>
+            </child>
+            <child type="tab">
+              <object class="GtkLabel">
+                <property name="label" translatable="yes">Miscellaneous</property>
+              </object>
+            </child>
+          </object>
+        </child>
+      </object>
+    </child>
+    <child type="action">
+      <object class="GtkButton" id="prefs_dialog_cancel">
+        <property name="label" translatable="yes">_Cancel</property>
+        <property name="use-underline">TRUE</property>
+      </object>
+    </child>
+    <child type="action">
+      <object class="GtkButton" id="prefs_dialog_ok">
+        <property name="label" translatable="yes">_OK</property>
+        <property name="use-underline">TRUE</property>
+        <property name="can-default">TRUE</property>
+      </object>
+    </child>
+    <action-widgets>
+      <action-widget response="cancel">prefs_dialog_cancel</action-widget>
+      <action-widget response="ok" default="yes">prefs_dialog_ok</action-widget>
+    </action-widgets>
+  </object>
+  <object class="GtkDialog" id="channel_dialog">
+    <property name="title" translatable="yes">New/Edit Channel</property>
+    <property name="transient-for">prefs_dialog</property>
+    <property name="modal">TRUE</property>
+    <property name="destroy-with-parent">TRUE</property>
+    <child internal-child="vbox">
+      <object class="GtkBox">
+        <child>
+          <object class="GtkFrame">
+            <property name="label" translatable="yes">Channel Information</property>
+            <child>
+              <object class="GtkGrid">
+                <property name="row-homogeneous">TRUE</property>
+                <property name="row-spacing">5</property>
+                <property name="column-spacing">5</property>
+                <child>
+                  <object class="GtkLabel">
+                    <property name="label" translatable="yes">Name</property>
+                    <property name="xalign">1.0</property>
+                    <property name="yalign">0.5</property>
+                  </object>
+                  <packing>
+                    <property name="left-attach">0</property>
+                    <property name="top-attach">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkEntry" id="name_entry"/>
+                  <packing>
+                    <property name="left-attach">1</property>
+                    <property name="top-attach">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkLabel">
+                    <property name="label" translatable="yes">Description</property>
+                    <property name="xalign">1.0</property>
+                    <property name="yalign">0.5</property>
+                  </object>
+                  <packing>
+                    <property name="left-attach">0</property>
+                    <property name="top-attach">1</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkEntry" id="description_entry"/>
+                  <packing>
+                    <property name="left-attach">1</property>
+                    <property name="top-attach">1</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkLabel">
+                    <property name="label" translatable="yes">Page URL</property>
+                    <property name="xalign">1.0</property>
+                    <property name="yalign">0.5</property>
+                  </object>
+                  <packing>
+                    <property name="left-attach">0</property>
+                    <property name="top-attach">2</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkEntry" id="page_url_entry"/>
+                  <packing>
+                    <property name="left-attach">1</property>
+                    <property name="top-attach">2</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkLabel">
+                    <property name="label" translatable="yes">Subpage URL</property>
+                    <property name="xalign">1.0</property>
+                    <property name="yalign">0.5</property>
+                  </object>
+                  <packing>
+                    <property name="left-attach">0</property>
+                    <property name="top-attach">3</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkEntry" id="subpage_url_entry"/>
+                  <packing>
+                    <property name="left-attach">1</property>
+                    <property name="top-attach">3</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkLabel">
+                    <property name="label" translatable="yes">Country</property>
+                    <property name="xalign">1.0</property>
+                    <property name="yalign">0.5</property>
+                  </object>
+                  <packing>
+                    <property name="left-attach">0</property>
+                    <property name="top-attach">4</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkEntry" id="country_entry"/>
+                  <packing>
+                    <property name="left-attach">1</property>
+                    <property name="top-attach">4</property>
+                  </packing>
+                </child>
+              </object>
+            </child>
+          </object>
+        </child>
+      </object>
+    </child>
+    <child type="action">
+      <object class="GtkButton" id="channel_dialog_cancel">
+        <property name="label" translatable="yes">_Cancel</property>
+        <property name="use-underline">TRUE</property>
+      </object>
+    </child>
+    <child type="action">
+      <object class="GtkButton" id="channel_dialog_ok">
+        <property name="label" translatable="yes">_OK</property>
+        <property name="use-underline">TRUE</property>
+        <property name="can-default">TRUE</property>
+      </object>
+    </child>
+    <action-widgets>
+      <action-widget response="cancel">channel_dialog_cancel</action-widget>
+      <action-widget response="ok" default="yes">channel_dialog_ok</action-widget>
+    </action-widgets>
+  </object>
+</interface>
diff --git a/src/telegnome.gresource.xml b/src/telegnome.gresource.xml
index e9e9aa4..9dfcc42 100644
--- a/src/telegnome.gresource.xml
+++ b/src/telegnome.gresource.xml
@@ -22,5 +22,6 @@
     <file alias="pixmaps/testbeeld.png">../pixmaps/testbeeld.png</file>
     <file alias="gtk/menus.ui">menus.ui</file>
     <file>telegnome.ui</file>
+    <file>prefs.ui</file>
   </gresource>
 </gresources>


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]