[telegnome] Port prefs widget construction code to GtkBuilder
- From: Colin Watson <cjwatson src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [telegnome] Port prefs widget construction code to GtkBuilder
- Date: Sat, 6 Feb 2016 18:29:56 +0000 (UTC)
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]