[telegnome] Port widget construction code to GtkBuilder



commit 7c5e2cc05de93e55590bbaf3da2ab650b3bc0bb6
Author: Colin Watson <cjwatson debian org>
Date:   Sat Feb 6 14:19:16 2016 +0000

    Port widget construction code to GtkBuilder
    
    * src/gui.c (tg_gui_new_entry, tg_gui_new_toolbar): Remove.
    (tg_gui_finalize): Clear gui->builder.
    (tg_gui_new, tg_gui_activate_about): Use GtkBuilder rather than
    manual widget construction code.
    (tg_gui_cb_zoom): Remove.
    * src/gui.h (tg_gui_cb_zoom): Remove.
    * src/main.h (TG_UI_RESOURCE): New definition.
    * src/telegnome.gresource.xml: Add telegnome.ui.
    * src/telegnome.ui: New file.

 NEWS                        |    1 +
 src/gui.c                   |  256 ++++++-------------------------------------
 src/gui.h                   |    1 -
 src/main.h                  |    1 +
 src/telegnome.gresource.xml |    1 +
 src/telegnome.ui            |  164 +++++++++++++++++++++++++++
 6 files changed, 202 insertions(+), 222 deletions(-)
---
diff --git a/NEWS b/NEWS
index f920b45..a12a0d5 100644
--- a/NEWS
+++ b/NEWS
@@ -11,6 +11,7 @@ Changes in TeleGNOME 0.2.1
  * Port to GTK+ 3.
  * Basic port to GtkApplication.
  * Port menu action handling from GtkUIManager/GtkAction to GAction/GMenu.
+ * Port widget construction code to GtkBuilder.
 
 Changes in TeleGNOME 0.2.0
 ==========================
diff --git a/src/gui.c b/src/gui.c
index 14eb4cc..8c61dbd 100644
--- a/src/gui.c
+++ b/src/gui.c
@@ -43,19 +43,15 @@
 struct _TgGui {
     GObject parent_instance;
 
+    GtkBuilder *builder;
     GtkWidget *window;
-    GtkAccelGroup *accel_group;
-    GtkWidget *grid;
+    GtkWidget *entry;
+    GtkWidget *pixpack;
     GtkWidget *progress_bar;
     GtkWidget *status_bar;
 
     GSettings *settings;
 
-    GtkWidget *entry;
-    GtkWidget *pixpack;
-
-    GtkWidget *zoombutton;
-
     GMenu *channel_menu;
 
     /* for timer-input */
@@ -330,32 +326,6 @@ tg_gui_print_in_statusbar(const char *buf)  /*FIXME: buffersize*/
        gtk_statusbar_push(GTK_STATUSBAR(gui->status_bar), context_id, buf);
 }
 
-/******************************* 
- * create a new entry 
- */
-static GtkWidget * 
-tg_gui_new_entry (void)
-{
-    GtkWidget *entry = NULL;
-    gint width;
-
-    entry = gtk_entry_new();
-    width = TG_PAGE_SIZE + 1 + TG_SUBPAGE_SIZE;
-    gtk_entry_set_max_length(GTK_ENTRY(entry), width);
-    gtk_entry_set_width_chars(GTK_ENTRY(entry), width);
-
-    /*gtk_entry_set_text(GTK_ENTRY(entry), startpage);*/
-         
-    g_signal_connect(G_OBJECT(entry), "activate", 
-                    G_CALLBACK(tg_gui_cb_goto_page), NULL);
-
-    /* save entry for later ref */
-    gui->entry = entry;
-
-    return entry;
-}
-
-
 static gint
 tg_gui_pager_timer(gpointer g)
 {
@@ -387,88 +357,6 @@ tg_gui_cb_toggle_paging(GtkWidget *w, gpointer data)
     }
 }
 
-/*******************************
- * create a new toolbar 
- */
-static GtkWidget *
-tg_gui_new_toolbar (void)
-{
-    GtkWidget *toolbar, *entry, *grid, *w;
-    GtkToolItem *toolitem;
-
-    toolbar = gtk_toolbar_new();
-
-    grid = gtk_grid_new();
-    gtk_orientable_set_orientation(GTK_ORIENTABLE(grid),
-                                  GTK_ORIENTATION_HORIZONTAL);
-    
-    w = gtk_label_new(_("Page:"));
-    g_object_set(G_OBJECT(w), "margin", 5, NULL);
-    gtk_container_add(GTK_CONTAINER(grid), w);
-
-    /* add the entry */
-    entry = tg_gui_new_entry();
-    gtk_widget_set_tooltip_text(entry, _("Page number"));
-    g_object_set(G_OBJECT(entry), "margin", 5, NULL);
-    gtk_container_add(GTK_CONTAINER(grid), entry);
-
-    toolitem = gtk_tool_item_new();
-    gtk_container_add(GTK_CONTAINER(toolitem), grid);
-    gtk_toolbar_insert(GTK_TOOLBAR(toolbar), toolitem, -1);
-
-    toolitem = gtk_tool_button_new(NULL, _("_Jump to"));
-    gtk_tool_button_set_icon_name(GTK_TOOL_BUTTON(toolitem), "go-jump");
-    gtk_widget_set_tooltip_text(GTK_WIDGET(toolitem), _("Go To Page"));
-    g_signal_connect(G_OBJECT(toolitem), "clicked",
-                    G_CALLBACK(tg_gui_cb_goto_page), NULL);
-    gtk_toolbar_insert(GTK_TOOLBAR(toolbar), toolitem, -1);
-
-    toolitem = gtk_tool_button_new(NULL, _("_Back"));
-    gtk_tool_button_set_icon_name(GTK_TOOL_BUTTON(toolitem), "go-previous");
-    gtk_widget_set_tooltip_text(GTK_WIDGET(toolitem), _("Get Previous Page"));
-    g_signal_connect(G_OBJECT(toolitem), "clicked",
-                    G_CALLBACK(tg_gui_cb_prev_page), NULL);
-    gtk_toolbar_insert(GTK_TOOLBAR(toolbar), toolitem, -1);
-
-    toolitem = gtk_tool_button_new(NULL, _("_Forward"));
-    gtk_tool_button_set_icon_name(GTK_TOOL_BUTTON(toolitem), "go-next");
-    gtk_widget_set_tooltip_text(GTK_WIDGET(toolitem), _("Get Next Page"));
-    g_signal_connect(G_OBJECT(toolitem), "clicked",
-                    G_CALLBACK(tg_gui_cb_next_page), NULL);
-    gtk_toolbar_insert(GTK_TOOLBAR(toolbar), toolitem, -1);
-
-    toolitem = gtk_tool_button_new(NULL, _("_Home"));
-    gtk_tool_button_set_icon_name(GTK_TOOL_BUTTON(toolitem), "go-home");
-    gtk_widget_set_tooltip_text(GTK_WIDGET(toolitem),
-                               _("Go to the home page"));
-    g_signal_connect(G_OBJECT(toolitem), "clicked",
-                    G_CALLBACK(tg_gui_cb_home), NULL);
-    gtk_toolbar_insert(GTK_TOOLBAR(toolbar), toolitem, -1);
-
-    toolitem = gtk_toggle_tool_button_new();
-    gtk_tool_button_set_label(GTK_TOOL_BUTTON(toolitem), _("_Play"));
-    gtk_tool_button_set_icon_name(GTK_TOOL_BUTTON(toolitem),
-                                 "media-playback-start");
-    gtk_widget_set_tooltip_text(GTK_WIDGET(toolitem), _("Toggles auto-paging"));
-    g_signal_connect(G_OBJECT(toolitem), "toggled",
-                    G_CALLBACK(tg_gui_cb_toggle_paging), NULL);
-    gtk_toolbar_insert(GTK_TOOLBAR(toolbar), toolitem, -1);
-
-    /* FIXME */ /*
-    toolitem = gtk_toggle_tool_button_new();
-    gtk_tool_button_set_label(GTK_TOOL_BUTTON(toolitem), _("100%"));
-    gtk_widget_set_tooltip_text(GTK_WIDGET(toolitem), _("Toggles zooming"));
-    gui->zoombutton = GTK_WIDGET(toolitem);
-    g_signal_connect(G_OBJECT(toolitem), "toggled",
-                    G_CALLBACK(tg_gui_cb_zoom), NULL);
-    gtk_toolbar_insert(GTK_TOOLBAR(toolbar), toolitem, -1);
-    */
-
-    gtk_widget_show_all(toolbar);
-    
-    return toolbar;
-}
-
 static void
 tg_gui_init (TgGui *self)
 {
@@ -572,6 +460,7 @@ tg_gui_finalize (GObject *object)
 {
     TgGui *gui = TG_GUI (object);
 
+    g_clear_object (&gui->builder);
     g_clear_pointer (&gui->window, gtk_widget_destroy);
     g_clear_object (&gui->settings);
     g_clear_pointer (&gui->channel_children, g_strfreev);
@@ -732,32 +621,38 @@ tg_gui_update_page(int *major_nr, int *minor_nr)
 TgGui *
 tg_gui_new (GtkApplication *app, GSettings *settings)
 {
-    GtkWidget *toolbar;
-    GtkWidget *status_frame;
-    GtkWidget *contents;
+    GtkBuilder *builder;
     GdkPixbuf *pixbuf;
     GError *error = NULL;
 
     gui = g_object_new (TG_TYPE_GUI, NULL);
 
-    /* the app */
-    gui->window = gtk_application_window_new (app);
-    gtk_window_set_title (GTK_WINDOW (gui->window),
-                         _("TeleGNOME: Teletext for GNOME"));
-    gtk_window_set_resizable (GTK_WINDOW (gui->window), FALSE);
-    gui->accel_group = gtk_accel_group_new ();
-    gtk_window_add_accel_group (GTK_WINDOW (gui->window), gui->accel_group);
-    gui->grid = gtk_grid_new ();
-    gtk_container_add (GTK_CONTAINER (gui->window), gui->grid);
-
-    gtk_widget_realize (GTK_WIDGET (gui->window));
-
-    /* attach a keyboard event */
-    g_signal_connect (G_OBJECT (gui->window), "key-press-event",
-                     G_CALLBACK (tg_cb_keypress), NULL);
-    
-    toolbar = tg_gui_new_toolbar();
-    gtk_grid_attach (GTK_GRID (gui->grid), toolbar, 0, 1, 2, 1);
+    /* register custom type */
+    g_type_name (TG_TYPE_PIXPACK);
+
+    gui->builder = gtk_builder_new_from_resource (TG_UI_RESOURCE);
+    gui->window = GTK_WIDGET
+       (gtk_builder_get_object (gui->builder, "main_window"));
+    gtk_application_add_window (app, GTK_WINDOW (gui->window));
+    gui->entry = GTK_WIDGET
+       (gtk_builder_get_object (gui->builder, "page_entry"));
+    gui->pixpack = GTK_WIDGET
+       (gtk_builder_get_object (gui->builder, "pixpack"));
+    gui->progress_bar = GTK_WIDGET
+       (gtk_builder_get_object (gui->builder, "progress_bar"));
+    gui->status_bar = GTK_WIDGET
+       (gtk_builder_get_object (gui->builder, "status_bar"));
+
+    gtk_builder_add_callback_symbols
+       (gui->builder,
+        "tg_cb_keypress", G_CALLBACK (tg_cb_keypress),
+        "tg_gui_cb_goto_page", G_CALLBACK (tg_gui_cb_goto_page),
+        "tg_gui_cb_prev_page", G_CALLBACK (tg_gui_cb_prev_page),
+        "tg_gui_cb_next_page", G_CALLBACK (tg_gui_cb_next_page),
+        "tg_gui_cb_home", G_CALLBACK (tg_gui_cb_home),
+        "tg_gui_cb_toggle_paging", G_CALLBACK (tg_gui_cb_toggle_paging),
+        NULL);
+    gtk_builder_connect_signals (gui->builder, NULL);
 
     gui->channel_menu = gtk_application_get_menu_by_id (app, "channels");
 
@@ -777,26 +672,6 @@ tg_gui_new (GtkApplication *app, GSettings *settings)
     g_settings_bind (gui->settings, "current-subpage-number", gui, "current-subpage-number",
                     G_SETTINGS_BIND_DEFAULT);
 
-    /* the image display widget */
-    gui->pixpack = tg_pixpack_new ();
-    g_object_set (G_OBJECT (gui->pixpack), "autosize", TRUE, NULL);
-    gtk_widget_set_hexpand (gui->pixpack, TRUE);
-    gtk_widget_set_halign (gui->pixpack, GTK_ALIGN_FILL);
-    gtk_widget_set_vexpand (gui->pixpack, TRUE);
-    gtk_widget_set_valign (gui->pixpack, GTK_ALIGN_FILL);
-    gtk_grid_attach (GTK_GRID (gui->grid), gui->pixpack, 0, 2, 2, 1);
-
-    /* the progress and status bars */
-    gui->progress_bar = gtk_progress_bar_new ();
-    gtk_grid_attach (GTK_GRID (gui->grid), gui->progress_bar, 0, 3, 1, 1);
-    status_frame = gtk_frame_new (NULL);
-    gtk_frame_set_shadow_type (GTK_FRAME (status_frame), GTK_SHADOW_IN);
-    gui->status_bar = gtk_statusbar_new ();
-    gtk_container_add (GTK_CONTAINER (status_frame), gui->status_bar);
-    gtk_widget_set_hexpand (status_frame, TRUE);
-    gtk_widget_set_halign (status_frame, GTK_ALIGN_FILL);
-    gtk_grid_attach (GTK_GRID (gui->grid), status_frame, 1, 3, 1, 1);
-
     gtk_widget_show_all (gui->window);
 
     gui->kb_timer = -1;
@@ -805,17 +680,6 @@ tg_gui_new (GtkApplication *app, GSettings *settings)
     gui->page_progress = 0;
     gui->page_timer = -1;
 
-    gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(gui->progress_bar), 0.0);
-
-#if 0
-    /* the zoom button */
-    /* FIXME */
-    gtk_tool_button_set_label(GTK_TOOL_BUTTON(gui->zoombutton),
-                             gui->zoom_factor==1?"100%":"400%");
-    if (gui->zoom_factor==2)
-       gtk_toggle_tool_button_set_active(GTK_TOGGLE_TOOL_BUTTON(gui->zoombutton), TRUE);
-#endif
-
     /* g_print("Number: %d/%d\n", gui->page_nr, gui->subpage_nr); */
 
     gui->channels = NULL;
@@ -940,42 +804,11 @@ void
 tg_gui_activate_about (GSimpleAction *action, GVariant *parameter,
                       gpointer data)
 {
-    static GtkWidget *about;
-    const gchar *authors[]= { "Dirk-Jan C. Binnema <djcb dds nl>",
-                             "Arjan Scherpenisse <acscherp wins uva nl>",
-                             "Colin Watson <cjwatson debian org>",
-                             NULL    };
-
-    if (about) {
-       gdk_window_show(gtk_widget_get_window(about));
-       gdk_window_raise(gtk_widget_get_window(about));
-       return;
-    }
+    GtkDialog *about;
 
-    about = gtk_about_dialog_new();
-    g_object_set(
-       about,
-       "program-name", PACKAGE,
-       "version", VERSION,
-       "copyright", "\xc2\xa9 1999, 2000 Dirk-Jan C. Binnema, "
-                    "Arjan Scherpenisse; "
-                    "\xc2\xa9 2008 Colin Watson",
-       "comments", _("Teletext for GNOME"),
-       "license", _("GNU General Public License, version 2 or later"),
-       "website", "http://telegnome.sourceforge.net/";,
-       "authors", authors,
-       "translator-credits", _("translator-credits"),
-       NULL);
-
-    gtk_window_set_transient_for(GTK_WINDOW(about), GTK_WINDOW(gui->window));
-    gtk_window_set_destroy_with_parent(GTK_WINDOW(about), TRUE);
-
-    g_signal_connect(about, "destroy", G_CALLBACK(gtk_widget_destroyed),
-                    &about);
-    g_signal_connect(about, "response", G_CALLBACK(gtk_widget_destroy),
-                    NULL);
-
-    gtk_widget_show(about);
+    about = GTK_DIALOG (gtk_builder_get_object (gui->builder, "about_dialog"));
+    gtk_dialog_run (about);
+    gtk_widget_hide (GTK_WIDGET (about));
 }
 
 static void
@@ -1052,25 +885,6 @@ tg_gui_cb_goto_page (GtkWidget *widget, gpointer data)
     tg_gui_get_the_page(FALSE);
 }
 
-
-/*
- * handler for zoom button
- */
-void 
-tg_gui_cb_zoom (GtkWidget *widget, gpointer data)
-{
-    /* new: just toggle it on click */
-    if (gui->zoom_factor == 1) {
-       gtk_tool_button_set_label(GTK_TOOL_BUTTON(gui->zoombutton), "400%");
-       gui->zoom_factor = 2;
-    } else if (gui->zoom_factor == 2) {
-       gtk_tool_button_set_label(GTK_TOOL_BUTTON(gui->zoombutton), "100%");
-       gui->zoom_factor = 1;
-    }          
-    /* now, get the page with the new zoom settings */
-    tg_gui_get_the_page(TRUE);
-}
-
 static gint 
 tg_gui_keyboard_timer (gpointer g) 
 {
diff --git a/src/gui.h b/src/gui.h
index 0bbc0a1..859d9bc 100644
--- a/src/gui.h
+++ b/src/gui.h
@@ -56,7 +56,6 @@ void tg_gui_cb_next_page (GtkWidget* widget, gpointer data);
 void tg_gui_cb_prev_page (GtkWidget* widget, gpointer data);
 void tg_gui_cb_home (GtkWidget* widget, gpointer data);
 void tg_gui_cb_goto_page (GtkWidget* widget, gpointer data);
-void tg_gui_cb_zoom (GtkWidget *widget, gpointer data);
 gint tg_cb_keypress (GtkWidget *widget, GdkEventKey *event);
 
 #define TG_TYPE_GUI             (tg_gui_get_type ())
diff --git a/src/main.h b/src/main.h
index 7da70e6..f9f694d 100644
--- a/src/main.h
+++ b/src/main.h
@@ -42,6 +42,7 @@
 
 #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_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/telegnome.gresource.xml b/src/telegnome.gresource.xml
index f1cae35..e9e9aa4 100644
--- a/src/telegnome.gresource.xml
+++ b/src/telegnome.gresource.xml
@@ -21,5 +21,6 @@
     <file alias="pixmaps/telegnome-logo.png">../pixmaps/telegnome-logo.png</file>
     <file alias="pixmaps/testbeeld.png">../pixmaps/testbeeld.png</file>
     <file alias="gtk/menus.ui">menus.ui</file>
+    <file>telegnome.ui</file>
   </gresource>
 </gresources>
diff --git a/src/telegnome.ui b/src/telegnome.ui
new file mode 100644
index 0000000..fd43de9
--- /dev/null
+++ b/src/telegnome.ui
@@ -0,0 +1,164 @@
+<!--
+ * 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="GtkApplicationWindow" id="main_window">
+    <property name="title" translatable="TRUE">TeleGNOME: Teletext for GNOME</property>
+    <property name="resizable">FALSE</property>
+    <signal name="key-press-event" handler="tg_cb_keypress"/>
+    <child>
+      <object class="GtkGrid">
+        <child>
+          <object class="GtkToolbar">
+            <child>
+              <object class="GtkToolItem">
+                <child>
+                  <object class="GtkGrid">
+                    <child>
+                      <object class="GtkLabel">
+                        <property name="label" translatable="yes">Page:</property>
+                        <property name="margin">5</property>
+                      </object>
+                      <packing>
+                        <property name="left-attach">0</property>
+                        <property name="top-attach">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkEntry" id="page_entry">
+                        <property name="max-length">6</property>
+                        <property name="width-chars">6</property>
+                        <property name="tooltip-text" translatable="yes">Page number</property>
+                        <property name="margin">5</property>
+                        <signal name="activate" handler="tg_gui_cb_goto_page"/>
+                      </object>
+                      <packing>
+                        <property name="left-attach">1</property>
+                        <property name="top-attach">0</property>
+                      </packing>
+                    </child>
+                  </object>
+                </child>
+              </object>
+            </child>
+            <child>
+              <object class="GtkToolButton">
+                <property name="label" translatable="yes">_Jump to</property>
+                <property name="icon-name">go-jump</property>
+                <property name="tooltip-text" translatable="yes">Go To Page</property>
+                <signal name="clicked" handler="tg_gui_cb_goto_page"/>
+              </object>
+            </child>
+            <child>
+              <object class="GtkToolButton">
+                <property name="label" translatable="yes">_Back</property>
+                <property name="icon-name">go-previous</property>
+                <property name="tooltip-text" translatable="yes">Get Previous Page</property>
+                <signal name="clicked" handler="tg_gui_cb_prev_page"/>
+              </object>
+            </child>
+            <child>
+              <object class="GtkToolButton">
+                <property name="label" translatable="yes">_Forward</property>
+                <property name="icon-name">go-next</property>
+                <property name="tooltip-text" translatable="yes">Get Next Page</property>
+                <signal name="clicked" handler="tg_gui_cb_next_page"/>
+              </object>
+            </child>
+            <child>
+              <object class="GtkToolButton">
+                <property name="label" translatable="yes">_Home</property>
+                <property name="icon-name">go-home</property>
+                <property name="tooltip-text" translatable="yes">Go to the home page</property>
+                <signal name="clicked" handler="tg_gui_cb_home"/>
+              </object>
+            </child>
+            <child>
+              <object class="GtkToggleToolButton">
+                <property name="label" translatable="yes">_Play</property>
+                <property name="icon-name">media-playback-start</property>
+                <property name="tooltip-text" translatable="yes">Toggles auto-paging</property>
+                <signal name="toggled" handler="tg_gui_cb_toggle_paging"/>
+              </object>
+            </child>
+          </object>
+          <packing>
+            <property name="left-attach">0</property>
+            <property name="top-attach">0</property>
+            <property name="width">2</property>
+            <property name="height">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="TgPixpack" id="pixpack">
+            <property name="autosize">TRUE</property>
+            <property name="hexpand">TRUE</property>
+            <property name="halign">fill</property>
+            <property name="vexpand">TRUE</property>
+            <property name="valign">fill</property>
+          </object>
+          <packing>
+            <property name="left-attach">0</property>
+            <property name="top-attach">1</property>
+            <property name="width">2</property>
+            <property name="height">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkProgressBar" id="progress_bar">
+            <property name="fraction">0.0</property>
+          </object>
+          <packing>
+            <property name="left-attach">0</property>
+            <property name="top-attach">2</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkFrame">
+            <property name="shadow-type">in</property>
+            <child>
+              <object class="GtkStatusbar" id="status_bar">
+                <property name="hexpand">TRUE</property>
+                <property name="halign">fill</property>
+              </object>
+            </child>
+          </object>
+          <packing>
+            <property name="left-attach">1</property>
+            <property name="top-attach">2</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+  </object>
+  <object class="GtkAboutDialog" id="about_dialog">
+    <property name="program-name" translatable="yes">TeleGNOME</property>
+    <property name="copyright">© 1999, 2000 Dirk-Jan C. Binnema, Arjan Scherpenisse; © 2008-2016 Colin 
Watson</property>
+    <property name="comments" translatable="yes">Teletext for GNOME</property>
+    <property name="license" translatable="yes">GNU General Public License, version 2 or later</property>
+    <property name="website">http://telegnome.sourceforge.net/</property>
+    <property name="authors">Dirk-Jan C. Binnema &lt;djcb dds nl&gt;
+Arjan Scherpenisse &lt;acscherp wins uva nl&gt;
+Colin Watson &lt;cjwatson debian org&gt;</property>
+    <property name="translator-credits" translatable="yes">translator-credits</property>
+    <property name="transient-for">main_window</property>
+    <property name="destroy-with-parent">TRUE</property>
+  </object>
+</interface>


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