[telegnome] Port from libgnome and libgnomeui
- From: Colin Watson <cjwatson src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [telegnome] Port from libgnome and libgnomeui
- Date: Tue, 2 Feb 2016 04:36:04 +0000 (UTC)
commit 88af03391c7079c496d875266a457e68c104bf06
Author: Colin Watson <cjwatson debian org>
Date: Tue Feb 2 04:35:13 2016 +0000
Port from libgnome and libgnomeui
* src/gui.c (tg_gui_create_channel_menu): Rename to ...
(tg_gui_populate_channel_menu): ... this. Repopulate an existing
menu rather than creating a new one.
(tg_gui_refresh_channel_menu): Likewise.
(tg_gui_print_in_statusbar): Adjust for GtkStatusbar. Accept a NULL
parameter to indicate a request to clear the status bar.
(tg_gui_new): Build user interface using GtkUIManager rather than
GnomeApp. Adjust users of various interface elements elsewhere.
Get the logo from a resource rather than using GnomeProgram to get
it from the file system.
(tg_gui_get_app): Rename to ...
(tg_gui_get_window): ... this. Adjust caller.
(tg_gui_cb_help_contents): New function.
* src/gui.h (tg_gui_cb_help_contents): New prototype.
(tg_gui_get_app): Rename to ...
(tg_gui_get_window): ... this.
* src/http.c: Include <stdlib.h>.
* src/main.c: Include <libintl.h>.
(main): Call gtk_init rather than gnome_program_init.
* src/main.h (TG_MENU_XML): New definition.
(TG_NOTFOUND_PIXMAP, TG_LOGO_PIXMAP): Change to refer to resource
paths rather than relative file paths.
* src/menu.h: Rewrite using GtkActionEntry.
* src/menu.xml: New file.
* src/telegnome.gresource.xml: New file.
* src/view.c (tg_view_update_page): Get the not-found image from a
resource rather than using GnomeProgram to get it from the file
system.
* configure.ac: Use AM_PATH_GLIB_2_0. Remove libgnomeui-2.0.
Require gdk-pixbuf-2.0 >= 2.26. Check for xmllint.
* pixmaps/Makefile.am (pixmapdir, pixmap_DATA): Remove; images are
now built into the binary as resources instead.
* src/Makefile.am (AM_CPPFLAGS): Add $(GLIB_CFLAGS).
(telegnome_built, BUILT_SOURCES, nodist_telegnome_SOURCES): New
variables.
(resources.c, resources.h): Build from telegnome.gresource.xml.
(telegnome_LDADD): Add $(GLIB_LIBS).
* src/.gitignore: Add resources.c and resources.h.
* po/POTFILES.in: Add src/menu.xml.
NEWS | 2 +
configure.ac | 9 ++-
pixmaps/Makefile.am | 4 -
po/POTFILES.in | 1 +
src/.gitignore | 2 +
src/Makefile.am | 18 +++-
src/gui.c | 202 ++++++++++++++++++++++++++-----------------
src/gui.h | 4 +-
src/http.c | 3 +-
src/main.c | 8 +-
src/main.h | 5 +-
src/menu.h | 41 ++++-----
src/menu.xml | 15 +++
src/telegnome.gresource.xml | 25 ++++++
src/view.c | 12 +--
15 files changed, 227 insertions(+), 124 deletions(-)
---
diff --git a/NEWS b/NEWS
index 0914cce..b881046 100644
--- a/NEWS
+++ b/NEWS
@@ -2,6 +2,8 @@ Changes in TeleGNOME 0.2.1
==========================
* Don't reset current-channel to the first configured channel on startup.
+ * Port from libgnome and libgnomeui to less-deprecated equivalents, mostly
+ GResource and GtkUIManager.
Changes in TeleGNOME 0.2.0
==========================
diff --git a/configure.ac b/configure.ac
index 0b7126b..8299330 100644
--- a/configure.ac
+++ b/configure.ac
@@ -22,7 +22,14 @@ AC_PROG_INSTALL
AC_DEFINE_UNQUOTED([SYSCONFDIR], "$sysconfdir", [System configuration directory.])
-PKG_CHECK_MODULES([TELEGNOME], [glib-2.0 >= 2.34 gobject-2.0 >= 2.44 gtk+-2.0 >= 2.20 gdk-pixbuf-2.0
libgnomeui-2.0 gio-2.0 dconf uuid])
+AM_PATH_GLIB_2_0([2.44.0], [], [AC_MSG_ERROR([GLib >= 2.44.0 is required])], [gobject gio])
+PKG_CHECK_MODULES([TELEGNOME], [gtk+-2.0 >= 2.20 gdk-pixbuf-2.0 >= 2.26 dconf uuid])
+
+AC_ARG_VAR([XMLLINT], [the xmllint program])
+AC_PATH_PROG([XMLLINT], [xmllint])
+if test -z "$XMLLINT"; then
+ AC_MSG_ERROR([xmllint not found])
+fi
PROGRAMS_TELEGNOME="telegnome"
AC_SUBST(PROGRAMS_TELEGNOME)
diff --git a/pixmaps/Makefile.am b/pixmaps/Makefile.am
index 67b9782..9f76a73 100644
--- a/pixmaps/Makefile.am
+++ b/pixmaps/Makefile.am
@@ -1,5 +1 @@
EXTRA_DIST = telegnome-logo.png testbeeld.png telegnome-icon.png
-
-pixmapdir = $(datadir)/pixmaps/telegnome
-
-pixmap_DATA = telegnome-logo.png testbeeld.png telegnome-icon.png
diff --git a/po/POTFILES.in b/po/POTFILES.in
index 31dfbf1..a5b23a7 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -7,4 +7,5 @@ src/main.c
src/prefs.c
src/view.c
src/channel.c
+src/menu.xml
telegnome.desktop.in
diff --git a/src/.gitignore b/src/.gitignore
index 63bf2c6..3bd8fd9 100644
--- a/src/.gitignore
+++ b/src/.gitignore
@@ -1,3 +1,5 @@
*.o
.deps
+resources.c
+resources.h
telegnome
diff --git a/src/Makefile.am b/src/Makefile.am
index 80b89cd..a3ffc4b 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -1,7 +1,8 @@
-AM_CPPFLAGS = -I. -I$(srcdir)/ $(TELEGNOME_CFLAGS)
+AM_CPPFLAGS = -I. -I$(srcdir)/ $(GLIB_CFLAGS) $(TELEGNOME_CFLAGS)
-bin_PROGRAMS=telegnome
-telegnome_SOURCES= \
+bin_PROGRAMS = telegnome
+
+telegnome_SOURCES = \
main.h \
main.c \
http.h \
@@ -20,5 +21,14 @@ telegnome_SOURCES= \
legacy-config.c \
legacy-config.h
+telegnome_built = \
+ resources.c \
+ resources.h
+BUILT_SOURCES = $(telegnome_built)
+nodist_telegnome_SOURCES = $(telegnome_built)
+
+resources.c resources.h: telegnome.gresource.xml Makefile $(shell $(GLIB_COMPILE_RESOURCES)
--generate-dependencies --sourcedir $(srcdir) $(srcdir)/telegnome.gresource.xml)
+ $(AM_V_GEN) XMLLINT=$(XMLLINT) $(GLIB_COMPILE_RESOURCES) --target $@ --sourcedir $(srcdir) --generate
--c-name tg $<
+
LINK_FLAGS= $(GNOME_LIBDIR) $(INTLLIBS) $(GHTTP_LIB)
-telegnome_LDADD=$(LINK_FLAGS) $(GNOME_LIBDIR) $(TELEGNOME_LIBS)
+telegnome_LDADD=$(LINK_FLAGS) $(GNOME_LIBDIR) $(GLIB_LIBS) $(TELEGNOME_LIBS)
diff --git a/src/gui.c b/src/gui.c
index a87bb8b..ed91b57 100644
--- a/src/gui.c
+++ b/src/gui.c
@@ -28,10 +28,9 @@
#include <glib/gi18n.h>
#include <glib-object.h>
#include <gio/gio.h>
+#include <gdk/gdk.h>
#include <gdk/gdkkeysyms.h>
#include <gtk/gtk.h>
-#include <libgnome/libgnome.h>
-#include <libgnomeui/libgnomeui.h>
#include "gui.h"
#include "main.h"
@@ -42,16 +41,17 @@
struct _TgGui {
GObject parent_instance;
- GtkWidget *app;
+ GtkWidget *window;
+ GtkAccelGroup *accel_group;
+ GtkWidget *vbox;
+ GtkWidget *progress_bar;
+ GtkWidget *status_bar;
GSettings *settings;
- GtkWidget *statusbar;
GtkWidget *entry;
GtkWidget *pixmap;
- GtkProgressBar *progress;
-
GtkWidget *zoomlabel;
GtkWidget *zoombutton;
@@ -103,7 +103,7 @@ tg_gui_update_title_bar(void)
currentview->channel, "name", &name, "description", &desc, NULL);
if (name != NULL && desc != NULL) {
sprintf(buf, _("TeleGNOME: %s (%s)"), name, desc);
- gtk_window_set_title(GTK_WINDOW(gui->app), buf);
+ gtk_window_set_title(GTK_WINDOW(gui->window), buf);
}
g_free(desc);
g_free(name);
@@ -181,15 +181,19 @@ tg_gui_channel_menu_item_activate(GtkWidget *w, gpointer data)
/*************************
* create the channel menu
*/
-static GtkWidget *
-tg_gui_create_channel_menu(void)
+static void
+tg_gui_populate_channel_menu(void)
{
- GtkWidget *menu, *item;
+ GList *children, *iter;
+ GtkWidget *item;
int i;
TgChannel *channel;
g_assert(gui->channels != NULL);
- menu = gtk_menu_new();
+
+ children = gtk_container_get_children(GTK_CONTAINER(gui->channel_menu));
+ for (iter = children; iter; iter = iter->next)
+ gtk_widget_destroy(GTK_WIDGET(iter->data));
for (i=0; i<g_slist_length(gui->channels); i++) {
gchar *name;
@@ -202,17 +206,11 @@ tg_gui_create_channel_menu(void)
g_signal_connect(G_OBJECT(item), "activate",
G_CALLBACK(tg_gui_channel_menu_item_activate),
(gpointer)channel);
- gtk_menu_shell_append(GTK_MENU_SHELL(menu), item);
+ gtk_menu_shell_append(GTK_MENU_SHELL(gui->channel_menu), item);
gtk_widget_show(item);
g_free(name);
}
-
- item = gtk_menu_item_new_with_label(_("Channels"));
- gtk_widget_show(item);
- gtk_menu_item_set_submenu(GTK_MENU_ITEM(item), menu);
-
- return item;
}
/*************************
@@ -320,21 +318,11 @@ tg_gui_reload_channels(void)
static void
tg_gui_refresh_channel_menu(void)
{
- /* dispose the menu if it was already added */
- if (gui->channel_menu != NULL) {
- gtk_container_remove(
- GTK_CONTAINER(GNOME_APP(gui->app)->menubar), gui->channel_menu);
- }
-
/* load the channels from disk */
tg_gui_reload_channels();
- /* create the menu */
- gui->channel_menu = tg_gui_create_channel_menu();
-
- /* and add it to the menu bar */
- gtk_menu_shell_insert(
- GTK_MENU_SHELL(GNOME_APP(gui->app)->menubar), gui->channel_menu, 2);
+ /* re-populate the menu */
+ tg_gui_populate_channel_menu();
}
/*******************************
@@ -343,9 +331,13 @@ tg_gui_refresh_channel_menu(void)
static void
tg_gui_print_in_statusbar(const char *buf) /*FIXME: buffersize*/
{
- g_assert(buf != NULL);
- gnome_appbar_set_status(GNOME_APPBAR(gui->statusbar), buf);
- gtk_widget_show(GTK_WIDGET(gui->statusbar));
+ guint context_id;
+
+ context_id = gtk_statusbar_get_context_id(GTK_STATUSBAR(gui->status_bar),
+ "errors");
+ gtk_statusbar_remove_all(GTK_STATUSBAR(gui->status_bar), context_id);
+ if (buf)
+ gtk_statusbar_push(GTK_STATUSBAR(gui->status_bar), context_id, buf);
}
/*******************************
@@ -380,11 +372,11 @@ static gint
tg_gui_pager_timer(gpointer g)
{
gui->page_progress += gui->page_msecs/100;
- gtk_progress_bar_set_fraction(gui->progress, gui->page_progress / (gdouble)gui->page_msecs);
+ gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(gui->progress_bar), gui->page_progress /
(gdouble)gui->page_msecs);
if (gui->page_progress >= gui->page_msecs) {
gui->page_progress = 0;
- gtk_progress_bar_set_fraction(gui->progress, 0.0);
+ gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(gui->progress_bar), 0.0);
tg_gui_cb_next_page(NULL, NULL);
}
return 1;
@@ -393,7 +385,7 @@ tg_gui_pager_timer(gpointer g)
static void
tg_gui_cb_toggle_paging(GtkWidget *w, gpointer data)
{
- gtk_progress_bar_set_fraction(gui->progress, 0.0);
+ gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(gui->progress_bar), 0.0);
if (gui->page_status) {
if (gui->page_timer != -1) gtk_timeout_remove(gui->page_timer);
gui->page_timer = -1;
@@ -582,7 +574,7 @@ tg_gui_finalize (GObject *object)
{
TgGui *gui = TG_GUI (object);
- g_clear_pointer (&gui->app, gtk_widget_destroy);
+ g_clear_pointer (&gui->window, gtk_widget_destroy);
g_clear_object (&gui->settings);
g_clear_pointer (&gui->channel_children, g_strfreev);
if (gui->channels != NULL) {
@@ -663,28 +655,65 @@ TgGui *
tg_gui_new (GSettings *settings, gchar *startpage)
{
GtkWidget *toolbar;
+ GtkUIManager *ui_manager;
+ GtkActionGroup *action_group;
+ GtkAccelGroup *accel_group;
+ GBytes *menu_data;
+ GtkWidget *menu_bar;
+ GtkWidget *progress_status_box;
+ GtkWidget *status_frame;
GdkPixbuf *pixbuf;
GError *error = NULL;
gui = g_object_new (TG_TYPE_GUI, NULL);
/* the app */
- gui->app = gnome_app_new (PACKAGE, _("TeleGNOME: Teletext for GNOME"));
- /* gtk_window_set_policy (GTK_WINDOW (gui->app), FALSE, FALSE, TRUE); */
- gtk_widget_realize (GTK_WIDGET (gui->app));
+ gui->window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
+ 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->vbox = gtk_vbox_new (FALSE, 0);
+ gtk_container_add (GTK_CONTAINER (gui->window), gui->vbox);
+
+ gtk_widget_realize (GTK_WIDGET (gui->window));
toolbar = tg_gui_new_toolbar();
/* attach a keyboard event */
- g_signal_connect (G_OBJECT (gui->app),
- "key_press_event",
+ g_signal_connect (G_OBJECT (gui->window), "key-press-event",
G_CALLBACK (tg_cb_keypress), NULL);
/* attach the menu */
- gnome_app_create_menus (GNOME_APP (gui->app), menubar);
-
- gnome_app_add_toolbar (GNOME_APP (gui->app), GTK_TOOLBAR (toolbar),
- "nav_toolbar", 0, BONOBO_DOCK_TOP, 2, 0, 0);
+ ui_manager = gtk_ui_manager_new ();
+ action_group = gtk_action_group_new ("TeleGNOMEActions");
+ gtk_action_group_set_translation_domain (action_group, NULL);
+ gtk_action_group_add_actions (action_group, entries,
+ G_N_ELEMENTS (entries), gui->window);
+ gtk_ui_manager_insert_action_group (ui_manager, action_group, 0);
+ accel_group = gtk_ui_manager_get_accel_group (ui_manager);
+ gtk_window_add_accel_group (GTK_WINDOW (gui->window), accel_group);
+
+ error = NULL;
+ menu_data = g_resources_lookup_data (TG_MENU_XML, 0, &error);
+ g_assert_no_error (error);
+ error = NULL;
+ gtk_ui_manager_add_ui_from_string (ui_manager,
+ g_bytes_get_data (menu_data, NULL),
+ g_bytes_get_size (menu_data),
+ &error);
+ g_assert_no_error (error);
+ g_bytes_unref (menu_data);
+
+ menu_bar = gtk_ui_manager_get_widget (ui_manager, "/MenuBar");
+ gtk_box_pack_start (GTK_BOX (gui->vbox), menu_bar, FALSE, FALSE, 0);
+ gtk_box_pack_start (GTK_BOX (gui->vbox), toolbar, FALSE, FALSE, 0);
+
+ gui->channel_menu = gtk_menu_item_get_submenu (
+ GTK_MENU_ITEM (gtk_ui_manager_get_widget (ui_manager,
+ "/MenuBar/ChannelsMenu")));
+ g_object_unref (ui_manager);
/* the view */
currentview = tg_view_new();
@@ -707,22 +736,28 @@ tg_gui_new (GSettings *settings, gchar *startpage)
g_settings_bind (gui->settings, "current-subpage-number", gui, "current-subpage-number",
G_SETTINGS_BIND_DEFAULT);
- /* the statusbar */
- gui->statusbar = gnome_appbar_new (TRUE, TRUE, GNOME_PREFERENCES_NEVER);
- gnome_app_set_statusbar (GNOME_APP (gui->app), gui->statusbar);
-
- /* make menu hints display on the appbar */
- gnome_app_install_menu_hints (GNOME_APP (gui->app), menubar);
-
/* all the contents */
- gnome_app_set_contents (GNOME_APP (gui->app),
- tg_view_get_widget (currentview));
-
- g_signal_connect (G_OBJECT (gui->app), "delete_event",
- G_CALLBACK (tg_gui_cb_quit),
- NULL);
-
- gtk_widget_show_all (gui->app);
+ gtk_box_pack_start (GTK_BOX (gui->vbox), tg_view_get_widget (currentview),
+ TRUE, TRUE, 0);
+
+ /* the progress and status bars */
+ progress_status_box = gtk_hbox_new (FALSE, 4);
+ gui->progress_bar = gtk_progress_bar_new ();
+ gtk_box_pack_start (GTK_BOX (progress_status_box), gui->progress_bar,
+ FALSE, FALSE, 0);
+ 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_box_pack_start (GTK_BOX (progress_status_box), status_frame,
+ TRUE, TRUE, 0);
+ gtk_box_pack_end (GTK_BOX (gui->vbox), progress_status_box,
+ FALSE, FALSE, 0);
+
+ g_signal_connect (G_OBJECT (gui->window), "delete-event",
+ G_CALLBACK (tg_gui_cb_quit), NULL);
+
+ gtk_widget_show_all (gui->window);
gui->kb_timer = -1;
gui->kb_status = INPUT_NEW;
@@ -730,8 +765,7 @@ tg_gui_new (GSettings *settings, gchar *startpage)
gui->page_progress = 0;
gui->page_timer = -1;
- gui->progress = gnome_appbar_get_progress(GNOME_APPBAR(gui->statusbar));
- gtk_progress_bar_set_fraction(gui->progress, 0.0);
+ gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(gui->progress_bar), 0.0);
#if 0
/* the zoom button */
@@ -743,7 +777,6 @@ tg_gui_new (GSettings *settings, gchar *startpage)
/* g_print("Number: %d/%d\n", currentview->page_nr, currentview->subpage_nr); */
gui->channels = NULL;
- gui->channel_menu = NULL;
tg_gui_refresh_channel_menu();
@@ -757,10 +790,9 @@ tg_gui_new (GSettings *settings, gchar *startpage)
load up the last page we were visiting. Otherwise,
start with a logo */
tg_gui_update_entry(0,0);
- pixbuf = gdk_pixbuf_new_from_file(
- gnome_program_locate_file(NULL, GNOME_FILE_DOMAIN_PIXMAP,
- TG_LOGO_PIXMAP, TRUE, NULL),
- &error);
+ error = NULL;
+ pixbuf = gdk_pixbuf_new_from_resource (TG_LOGO_PIXMAP, &error);
+ g_assert_no_error (error);
tg_view_update_pixmap(currentview, pixbuf);
g_object_unref(pixbuf);
@@ -776,9 +808,9 @@ tg_gui_new (GSettings *settings, gchar *startpage)
}
GtkWidget *
-tg_gui_get_app (TgGui *gui)
+tg_gui_get_window (TgGui *gui)
{
- return gui->app;
+ return gui->window;
}
@@ -809,7 +841,7 @@ tg_gui_get_the_page (gboolean redraw)
{
/* hide the app */
if (redraw)
- gtk_widget_hide(GTK_WIDGET(gui->app));
+ gtk_widget_hide(gui->window);
/* stop the logo timer */
if (gui->logo_timer != -1)
@@ -820,10 +852,10 @@ tg_gui_get_the_page (gboolean redraw)
tg_view_update_page(currentview, ¤tview->page_nr, ¤tview->subpage_nr);
tg_gui_update_entry(currentview->page_nr, currentview->subpage_nr);
- tg_gui_print_in_statusbar ("");
+ tg_gui_print_in_statusbar (NULL);
if (redraw)
- gtk_widget_show_all (GTK_WIDGET(gui->app));
+ gtk_widget_show_all (gui->window);
}
@@ -845,6 +877,21 @@ tg_gui_cb_quit (GtkWidget* widget, gpointer data)
}
void
+tg_gui_cb_help_contents (GtkWidget* widget, gpointer data)
+{
+ GError *error;
+ gboolean ret;
+
+ error = NULL;
+ ret = gtk_show_uri (gtk_widget_get_screen (gui->window), "ghelp:" PACKAGE,
+ GDK_CURRENT_TIME, &error);
+ if (!ret && error) {
+ g_warning ("Error displaying help: %s", error->message);
+ g_error_free (error);
+ }
+}
+
+void
tg_gui_cb_about (GtkWidget* widget, gpointer data)
{
static GtkWidget *about;
@@ -874,7 +921,7 @@ tg_gui_cb_about (GtkWidget* widget, gpointer data)
"translator-credits", _("translator-credits"),
NULL);
- gtk_window_set_transient_for(GTK_WINDOW(about), GTK_WINDOW(gui->app));
+ 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),
@@ -888,10 +935,9 @@ tg_gui_cb_about (GtkWidget* widget, gpointer data)
static void
tg_gui_refresh_timer (void)
{
- gdouble perc = gtk_progress_bar_get_fraction(gui->progress);
+ gdouble perc = gtk_progress_bar_get_fraction(GTK_PROGRESS_BAR(gui->progress_bar));
- gui->progress = gnome_appbar_get_progress(GNOME_APPBAR(gui->statusbar));
- gtk_progress_bar_set_fraction(gui->progress, perc);
+ gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(gui->progress_bar), perc);
if (gui->page_status) {
gtk_timeout_remove(gui->page_timer);
@@ -911,7 +957,7 @@ tg_gui_prefs_close_cb (GtkDialog *dialog, gint response_id, gpointer user_data)
void
tg_gui_cb_preferences (GtkWidget* widget, gpointer data)
{
- tg_prefs_show(GTK_WINDOW(gui->app), G_CALLBACK(tg_gui_prefs_close_cb));
+ tg_prefs_show(GTK_WINDOW(gui->window), G_CALLBACK(tg_gui_prefs_close_cb));
}
void
diff --git a/src/gui.h b/src/gui.h
index f488a3f..426ad74 100644
--- a/src/gui.h
+++ b/src/gui.h
@@ -34,7 +34,6 @@
#include <glib-object.h>
#include <gio/gio.h>
#include <gtk/gtk.h>
-#include <libgnomeui/libgnomeui.h>
#include "view.h"
#define TG_MAX_CHANNELS 100
@@ -45,6 +44,7 @@ void tg_gui_get_the_page (gboolean redraw);
/* event handler callbacks */
void tg_gui_cb_quit (GtkWidget* widget, gpointer data);
+void tg_gui_cb_help_contents (GtkWidget *widget, gpointer data);
void tg_gui_cb_about (GtkWidget* widget, gpointer data);
void tg_gui_cb_preferences (GtkWidget* widget, gpointer data);
void tg_gui_cb_next_page (GtkWidget* widget, gpointer data);
@@ -61,7 +61,7 @@ GType tg_gui_get_type (void);
TgGui *tg_gui_new (GSettings *settings, gchar *startpage);
-GtkWidget *tg_gui_get_app (TgGui *gui);
+GtkWidget *tg_gui_get_window (TgGui *gui);
/* DnD target types */
enum {
diff --git a/src/http.c b/src/http.c
index a8af6f7..8c18790 100644
--- a/src/http.c
+++ b/src/http.c
@@ -20,7 +20,8 @@
** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
**
*/
-
+
+#include <stdlib.h>
#include <string.h>
#include <gio/gio.h>
diff --git a/src/main.c b/src/main.c
index 094a44c..9e2ccf3 100644
--- a/src/main.c
+++ b/src/main.c
@@ -31,9 +31,10 @@
#include <stdio.h>
#include <string.h>
+#include <libintl.h>
+
#include <gio/gio.h>
#include <gtk/gtk.h>
-#include <libgnome/libgnome.h>
#include "main.h"
#include "http.h"
@@ -51,8 +52,7 @@ main (int argc, char **argv)
bindtextdomain(PACKAGE,GNOMELOCALEDIR);
textdomain(PACKAGE);
- gnome_program_init (PACKAGE, VERSION, LIBGNOMEUI_MODULE, argc, argv,
- NULL);
+ gtk_init (&argc, &argv);
settings = g_settings_new ("org.gnome.telegnome");
legacy_convert (settings);
@@ -64,7 +64,7 @@ main (int argc, char **argv)
gui = tg_gui_new (settings, "100");
}
- gtk_widget_show_all (tg_gui_get_app (gui));
+ gtk_widget_show_all (tg_gui_get_window (gui));
gtk_main();
return 0;
diff --git a/src/main.h b/src/main.h
index dff50e7..27b6fdc 100644
--- a/src/main.h
+++ b/src/main.h
@@ -51,8 +51,9 @@ typedef struct _TeleGnome{
#define TG_ERR_VFS 2
#define TG_ERR_HTTPQUERY 3 /* error getting http query */
-#define TG_NOTFOUND_PIXMAP "telegnome/testbeeld.png"
-#define TG_LOGO_PIXMAP "telegnome/telegnome-logo.png"
+#define TG_MENU_XML "/org/gnome/telegnome/menu.xml"
+#define TG_NOTFOUND_PIXMAP "/org/gnome/telegnome/pixmaps/testbeeld.png"
+#define TG_LOGO_PIXMAP "/org/gnome/telegnome/pixmaps/telegnome-logo.png"
#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/menu.h b/src/menu.h
index ce76ce7..5b50aeb 100644
--- a/src/menu.h
+++ b/src/menu.h
@@ -6,30 +6,29 @@
#ifndef __MENU_H__
#define __MENU_H__
-#include <libgnomeui/gnome-app-helper.h>
+#include <glib/gi18n.h>
+#include <gtk/gtk.h>
-/* the menu */
-static GnomeUIInfo file_menu[] = {
- GNOMEUIINFO_MENU_QUIT_ITEM(tg_gui_cb_quit, NULL),
- GNOMEUIINFO_END
-};
+static const GtkActionEntry entries[] = {
+ /* Top level */
+ { "FileMenu", GTK_STOCK_FILE, N_("_File") },
+ { "SettingsMenu", NULL, N_("_Settings") },
+ { "ChannelsMenu", NULL, N_("_Channels") },
+ { "HelpMenu", GTK_STOCK_HELP },
-static GnomeUIInfo settings_menu[] = {
- GNOMEUIINFO_MENU_PREFERENCES_ITEM(tg_gui_cb_preferences, NULL),
- GNOMEUIINFO_END
-};
+ /* File menu */
+ { "FileQuit", GTK_STOCK_QUIT, NULL, "<control>Q", NULL,
+ G_CALLBACK (tg_gui_cb_quit) },
-static GnomeUIInfo help_menu[] = {
- GNOMEUIINFO_HELP(PACKAGE),
- GNOMEUIINFO_MENU_ABOUT_ITEM(tg_gui_cb_about, NULL),
- GNOMEUIINFO_END
-};
+ /* Settings menu */
+ { "SettingsPreferences", GTK_STOCK_PREFERENCES, NULL, NULL, NULL,
+ G_CALLBACK (tg_gui_cb_preferences) },
-static GnomeUIInfo menubar[] = {
- GNOMEUIINFO_MENU_FILE_TREE(file_menu),
- GNOMEUIINFO_MENU_SETTINGS_TREE(settings_menu),
- GNOMEUIINFO_MENU_HELP_TREE(help_menu),
- GNOMEUIINFO_END
- };
+ /* Help menu */
+ { "HelpContents", GTK_STOCK_HELP, N_("_Contents"), "F1", NULL,
+ G_CALLBACK (tg_gui_cb_help_contents) },
+ { "HelpAbout", GTK_STOCK_ABOUT, NULL, NULL, NULL,
+ G_CALLBACK (tg_gui_cb_about) }
+};
#endif
diff --git a/src/menu.xml b/src/menu.xml
new file mode 100644
index 0000000..880396b
--- /dev/null
+++ b/src/menu.xml
@@ -0,0 +1,15 @@
+<ui>
+ <menubar name="MenuBar">
+ <menu action="FileMenu">
+ <menuitem action="FileQuit" />
+ </menu>
+ <menu action="SettingsMenu">
+ <menuitem action="SettingsPreferences" />
+ </menu>
+ <menu action="ChannelsMenu" />
+ <menu action="HelpMenu">
+ <menuitem action="HelpContents" />
+ <menuitem action="HelpAbout" />
+ </menu>
+ </menubar>
+</ui>
diff --git a/src/telegnome.gresource.xml b/src/telegnome.gresource.xml
new file mode 100644
index 0000000..b0c9994
--- /dev/null
+++ b/src/telegnome.gresource.xml
@@ -0,0 +1,25 @@
+<!--
+ * 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.
+-->
+
+<gresources>
+ <gresource prefix="/org/gnome/telegnome">
+ <file alias="pixmaps/telegnome-logo.png">../pixmaps/telegnome-logo.png</file>
+ <file alias="pixmaps/testbeeld.png">../pixmaps/testbeeld.png</file>
+ <file>menu.xml</file>
+ </gresource>
+</gresources>
diff --git a/src/view.c b/src/view.c
index 45e9fc0..519d0bc 100644
--- a/src/view.c
+++ b/src/view.c
@@ -27,7 +27,6 @@
#include <glib.h>
#include <glib/gi18n.h>
-#include <libgnome/libgnome.h>
#include "view.h"
#include "prefs.h"
@@ -90,7 +89,7 @@ tg_view_update_page(TgView *view, int *major_nr, int *minor_nr)
{
gint retval;
GdkPixbuf *pixbuf;
- GError *error = NULL;
+ GError *error;
/* save these and restore them, if necessary */
gint old_page= *major_nr;
@@ -121,11 +120,10 @@ tg_view_update_page(TgView *view, int *major_nr, int *minor_nr)
*major_nr= old_page; /* restore */
*minor_nr= old_subpage;
tg_gui_update_entry(*major_nr, *minor_nr);
- pixbuf = gdk_pixbuf_new_from_file(
- gnome_program_locate_file(
- NULL, GNOME_FILE_DOMAIN_PIXMAP,
- TG_NOTFOUND_PIXMAP, TRUE, NULL),
- &error);
+ error = NULL;
+ pixbuf = gdk_pixbuf_new_from_resource(
+ TG_NOTFOUND_PIXMAP, &error);
+ g_assert_no_error(error);
tg_view_update_pixmap(view, pixbuf);
g_object_unref(pixbuf);
return -1;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]