]> granicus.if.org Git - transmission/commitdiff
load the UI from a resource file rather than a string. Patch by fmuellner
authorJordan Lee <jordan@transmissionbt.com>
Fri, 7 Sep 2012 17:18:17 +0000 (17:18 +0000)
committerJordan Lee <jordan@transmissionbt.com>
Fri, 7 Sep 2012 17:18:17 +0000 (17:18 +0000)
gtk/Makefile.am
gtk/main.c
gtk/transmission-ui.xml [new file with mode: 0644]
gtk/transmission.gresource.xml [new file with mode: 0644]
gtk/ui.h [deleted file]

index ff8ce591afb35066f1c9bd264736ec3c0aec0f84..ea48c36d971d5e8ec34a01e6d343b2a8fae1f1c6 100644 (file)
@@ -47,11 +47,11 @@ noinst_HEADERS = \
     relocate.h \
     stats.h \
     torrent-cell-renderer.h \
+    transmission-resources.h \
     tr-core.h \
     tr-icon.h \
     tr-prefs.h \
     tr-window.h \
-    ui.h \
     util.h
 
 bin_PROGRAMS = transmission-gtk
@@ -74,6 +74,7 @@ transmission_gtk_SOURCES = \
     relocate.c \
     stats.c \
     torrent-cell-renderer.c \
+    transmission-resources.c \
     tr-core.c \
     tr-icon.c \
     tr-prefs.c \
@@ -106,6 +107,16 @@ Productivity_DATA = $(DESKTOP_FILES)
 icon_DATA = transmission.png
 icondir = $(datadir)/pixmaps
 
+UI_FILES = transmission-ui.xml 
+
+transmission-resources.c: transmission.gresource.xml $(UI_FILES) 
+       glib-compile-resources --target=$@ --sourcedir=$(srcdir) \ 
+         --generate-source --c-name transmission $< 
+
+transmission-resources.h: transmission.gresource.xml 
+       glib-compile-resources --target=$@ --sourcedir=$(srcdir) \ 
+         --generate-header --c-name transmission $< 
+
 EXTRA_DIST = \
     $(DESKTOP_IN_FILES) \
     transmission.png
@@ -119,10 +130,14 @@ transmission.res: transmission.rc
        $(WINDRES) -J rc -i transmission.rc -O coff -o transmission.res
 
 BUILT_SOURCES = \
-       setransmission.res
+       setransmission.res \
+       transmission-resources.c \
+       transmission-resources.h
 
 CLEANFILES = \
-       transmission.res
+       setransmission.res \
+       transmission-resources.c \
+       transmission-resources.h
 
 transmission_gtk_LDADD += \
        transmission.res
index ec777018de1bd5ea76eeedfe82c9516a41642fd5..17015666809e2ce15009828e3f043494189464e0 100644 (file)
 #include "tr-prefs.h"
 #include "tr-window.h"
 #include "util.h"
-#include "ui.h"
 
 #define MY_CONFIG_NAME "transmission"
 #define MY_READABLE_NAME "transmission-gtk"
 
+#define TR_RESOURCE_PATH "/com/transmissionbt/transmission/"
+
 #define SHOW_LICENSE
 static const char * LICENSE =
 "The OS X client, CLI client, and parts of libtransmission are licensed under the terms of the MIT license.\n\n"
@@ -481,6 +482,7 @@ static void app_setup( GtkWindow * wind, struct cbdata  * cbdata );
 static void
 on_startup( GApplication * application, gpointer user_data )
 {
+    GError * error;
     const char * str;
     GtkWindow * win;
     GtkUIManager * ui_manager;
@@ -506,9 +508,11 @@ on_startup( GApplication * application, gpointer user_data )
     cbdata->core = gtr_core_new( session );
 
     /* init the ui manager */
+    error = NULL;
     ui_manager = gtk_ui_manager_new ( );
     gtr_actions_init ( ui_manager, cbdata );
-    gtk_ui_manager_add_ui_from_string ( ui_manager, fallback_ui_file, -1, NULL );
+    gtk_ui_manager_add_ui_from_resource ( ui_manager, TR_RESOURCE_PATH "transmission-ui.xml", &error );
+    g_assert_no_error (error);
     gtk_ui_manager_ensure_update ( ui_manager );
 
     /* create main window now to be a parent to any error dialogs */
diff --git a/gtk/transmission-ui.xml b/gtk/transmission-ui.xml
new file mode 100644 (file)
index 0000000..c489481
--- /dev/null
@@ -0,0 +1,129 @@
+<ui> 
+  <menubar name='main-window-menu'> 
+    <menu action='file-menu'> 
+      <menuitem action='open-torrent-menu'/> 
+      <menuitem action='open-torrent-from-url'/> 
+      <menuitem action='new-torrent'/> 
+      <separator/> 
+      <menuitem action='start-all-torrents'/> 
+      <menuitem action='pause-all-torrents'/> 
+      <separator/> 
+      <menuitem action='quit'/> 
+    </menu> 
+    <menu action='edit-menu'> 
+      <menuitem action='select-all'/> 
+      <menuitem action='deselect-all'/> 
+      <separator/> 
+      <menuitem action='edit-preferences'/> 
+    </menu> 
+    <menu action='torrent-menu'> 
+      <menuitem action='show-torrent-properties'/> 
+      <menuitem action='open-torrent-folder'/> 
+      <separator/> 
+      <menuitem action='torrent-start'/> 
+      <menuitem action='torrent-start-now'/> 
+      <menuitem action='torrent-reannounce'/> 
+      <menu action='queue-menu'> 
+        <menuitem action='queue-move-top'/> 
+        <menuitem action='queue-move-up'/> 
+        <menuitem action='queue-move-down'/> 
+        <menuitem action='queue-move-bottom'/> 
+      </menu> 
+      <menuitem action='torrent-stop'/> 
+      <separator/> 
+      <menuitem action='relocate-torrent'/> 
+      <menuitem action='torrent-verify'/> 
+      <menuitem action='copy-magnet-link-to-clipboard'/> 
+      <separator/> 
+      <menuitem action='remove-torrent'/> 
+      <menuitem action='delete-torrent'/> 
+    </menu> 
+    <menu action='view-menu'> 
+      <menuitem action='compact-view'/> 
+      <separator/> 
+      <menuitem action='show-toolbar'/> 
+      <menuitem action='show-filterbar'/> 
+      <menuitem action='show-statusbar'/> 
+      <separator/> 
+      <menuitem action='sort-by-activity'/> 
+      <menuitem action='sort-by-age'/> 
+      <menuitem action='sort-by-name'/> 
+      <menuitem action='sort-by-progress'/> 
+      <menuitem action='sort-by-queue'/> 
+      <menuitem action='sort-by-ratio'/> 
+      <menuitem action='sort-by-size'/> 
+      <menuitem action='sort-by-state'/> 
+      <menuitem action='sort-by-time-left'/> 
+      <separator/> 
+      <menuitem action='sort-reversed'/> 
+    </menu> 
+    <menu action='help-menu'> 
+      <menuitem action='toggle-message-log'/> 
+      <menuitem action='show-stats'/> 
+      <separator/> 
+      <menuitem action='donate'/> 
+      <separator/> 
+      <menuitem action='help'/> 
+      <menuitem action='show-about-dialog'/> 
+    </menu> 
+  </menubar> 
+
+  <toolbar name='main-window-toolbar'> 
+    <toolitem action='open-torrent-toolbar'/> 
+    <toolitem action='torrent-start'/> 
+    <toolitem action='torrent-stop'/> 
+    <toolitem action='remove-torrent'/> 
+    <separator/> 
+    <toolitem action='show-torrent-properties'/> 
+  </toolbar> 
+
+  <popup name='main-window-popup'> 
+    <menuitem action='show-torrent-properties'/> 
+    <menuitem action='open-torrent-folder'/> 
+    <separator/> 
+    <menu action='sort-menu'> 
+      <menuitem action='sort-by-activity'/> 
+      <menuitem action='sort-by-age'/> 
+      <menuitem action='sort-by-name'/> 
+      <menuitem action='sort-by-progress'/> 
+      <menuitem action='sort-by-ratio'/> 
+      <menuitem action='sort-by-size'/> 
+      <menuitem action='sort-by-state'/> 
+      <menuitem action='sort-by-time-left'/> 
+      <separator/> 
+      <menuitem action='sort-reversed'/> 
+    </menu> 
+    <separator/> 
+    <menuitem action='torrent-start'/> 
+    <menuitem action='torrent-start-now'/> 
+    <menuitem action='torrent-reannounce'/> 
+    <menu action='queue-menu'> 
+      <menuitem action='queue-move-top'/> 
+      <menuitem action='queue-move-up'/> 
+      <menuitem action='queue-move-down'/> 
+      <menuitem action='queue-move-bottom'/> 
+    </menu> 
+    <menuitem action='torrent-stop'/> 
+    <separator/> 
+    <menuitem action='relocate-torrent'/> 
+    <menuitem action='torrent-verify'/> 
+    <menuitem action='copy-magnet-link-to-clipboard'/> 
+    <separator/> 
+    <menuitem action='remove-torrent'/> 
+    <menuitem action='delete-torrent'/> 
+  </popup> 
+
+  <popup name='icon-popup'> 
+    <menuitem action='toggle-main-window'/> 
+    <separator/> 
+    <menuitem action='open-torrent-menu'/> 
+    <menuitem action='open-torrent-from-url'/> 
+    <separator/> 
+    <menuitem action='pause-all-torrents'/> 
+    <menuitem action='start-all-torrents'/> 
+    <separator/> 
+    <menuitem action='alt-speed-enabled'/> 
+    <separator/> 
+    <menuitem action='quit'/> 
+  </popup> 
+</ui> 
diff --git a/gtk/transmission.gresource.xml b/gtk/transmission.gresource.xml
new file mode 100644 (file)
index 0000000..4daf3cb
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?> 
+<gresources> 
+  <gresource prefix="/com/transmissionbt/transmission"> 
+    <file>transmission-ui.xml</file> 
+  </gresource> 
+</gresources> 
diff --git a/gtk/ui.h b/gtk/ui.h
deleted file mode 100644 (file)
index 2ea24c4..0000000
--- a/gtk/ui.h
+++ /dev/null
@@ -1,132 +0,0 @@
-static const char * fallback_ui_file =
-    "<ui>\n"
-    "  <menubar name='main-window-menu'>\n"
-    "    <menu action='file-menu'>\n"
-    "      <menuitem action='open-torrent-menu'/>\n"
-    "      <menuitem action='open-torrent-from-url'/>\n"
-    "      <menuitem action='new-torrent'/>\n"
-    "      <separator/>\n"
-    "      <menuitem action='start-all-torrents'/>\n"
-    "      <menuitem action='pause-all-torrents'/>\n"
-    "      <separator/>\n"
-    "      <menuitem action='quit'/>\n"
-    "    </menu>\n"
-    "    <menu action='edit-menu'>\n"
-    "      <menuitem action='select-all'/>\n"
-    "      <menuitem action='deselect-all'/>\n"
-    "      <separator/>\n"
-    "      <menuitem action='edit-preferences'/>\n"
-    "    </menu>\n"
-    "    <menu action='torrent-menu'>\n"
-    "      <menuitem action='show-torrent-properties'/>\n"
-    "      <menuitem action='open-torrent-folder'/>\n"
-    "      <separator/>\n"
-    "      <menuitem action='torrent-start'/>\n"
-    "      <menuitem action='torrent-start-now'/>\n"
-    "      <menuitem action='torrent-reannounce'/>\n"
-    "      <menu action='queue-menu'>\n"
-    "        <menuitem action='queue-move-top'/>\n"
-    "        <menuitem action='queue-move-up'/>\n"
-    "        <menuitem action='queue-move-down'/>\n"
-    "        <menuitem action='queue-move-bottom'/>\n"
-    "      </menu>\n"
-    "      <menuitem action='torrent-stop'/>\n"
-    "      <separator/>\n"
-    "      <menuitem action='relocate-torrent'/>\n"
-    "      <menuitem action='torrent-verify'/>\n"
-    "      <menuitem action='copy-magnet-link-to-clipboard'/>\n"
-    "      <separator/>\n"
-    "      <menuitem action='remove-torrent'/>\n"
-    "      <menuitem action='delete-torrent'/>\n"
-    "    </menu>\n"
-    "    <menu action='view-menu'>\n"
-    "      <menuitem action='compact-view'/>\n"
-    "      <separator/>\n"
-    "      <menuitem action='show-toolbar'/>\n"
-    "      <menuitem action='show-filterbar'/>\n"
-    "      <menuitem action='show-statusbar'/>\n"
-    "      <separator/>\n"
-    "      <menuitem action='sort-by-activity'/>\n"
-    "      <menuitem action='sort-by-age'/>\n"
-    "      <menuitem action='sort-by-name'/>\n"
-    "      <menuitem action='sort-by-progress'/>\n"
-    "      <menuitem action='sort-by-queue'/>\n"
-    "      <menuitem action='sort-by-ratio'/>\n"
-    "      <menuitem action='sort-by-size'/>\n"
-    "      <menuitem action='sort-by-state'/>\n"
-    "      <menuitem action='sort-by-time-left'/>\n"
-    "      <separator/>\n"
-    "      <menuitem action='sort-reversed'/>\n"
-    "    </menu>\n"
-    "    <menu action='help-menu'>\n"
-    "      <menuitem action='toggle-message-log'/>\n"
-    "      <menuitem action='show-stats'/>\n"
-    "      <separator/>\n"
-    "      <menuitem action='donate'/>\n"
-    "      <separator/>\n"
-    "      <menuitem action='help'/>\n"
-    "      <menuitem action='show-about-dialog'/>\n"
-    "    </menu>\n"
-    "  </menubar>\n"
-    "\n"
-    "  <toolbar name='main-window-toolbar'>\n"
-    "    <toolitem action='open-torrent-toolbar'/>\n"
-    "    <toolitem action='torrent-start'/>\n"
-    "    <toolitem action='torrent-stop'/>\n"
-    "    <toolitem action='remove-torrent'/>\n"
-    "    <separator/>\n"
-    "    <toolitem action='show-torrent-properties'/>\n"
-    "  </toolbar>\n"
-    "\n"
-    "  <popup name='main-window-popup'>\n"
-    "    <menuitem action='show-torrent-properties'/>\n"
-    "    <menuitem action='open-torrent-folder'/>\n"
-    "    <separator/>\n"
-    "    <menu action='sort-menu'>\n"
-    "      <menuitem action='sort-by-activity'/>\n"
-    "      <menuitem action='sort-by-age'/>\n"
-    "      <menuitem action='sort-by-name'/>\n"
-    "      <menuitem action='sort-by-progress'/>\n"
-    "      <menuitem action='sort-by-ratio'/>\n"
-    "      <menuitem action='sort-by-size'/>\n"
-    "      <menuitem action='sort-by-state'/>\n"
-    "      <menuitem action='sort-by-time-left'/>\n"
-    "      <separator/>\n"
-    "      <menuitem action='sort-reversed'/>\n"
-    "    </menu>\n"
-    "    <separator/>\n"
-    "    <menuitem action='torrent-start'/>\n"
-    "    <menuitem action='torrent-start-now'/>\n"
-    "    <menuitem action='torrent-reannounce'/>\n"
-    "    <menu action='queue-menu'>\n"
-    "      <menuitem action='queue-move-top'/>\n"
-    "      <menuitem action='queue-move-up'/>\n"
-    "      <menuitem action='queue-move-down'/>\n"
-    "      <menuitem action='queue-move-bottom'/>\n"
-    "    </menu>\n"
-    "    <menuitem action='torrent-stop'/>\n"
-    "    <separator/>\n"
-    "    <menuitem action='relocate-torrent'/>\n"
-    "    <menuitem action='torrent-verify'/>\n"
-    "    <menuitem action='copy-magnet-link-to-clipboard'/>\n"
-    "    <separator/>\n"
-    "    <menuitem action='remove-torrent'/>\n"
-    "    <menuitem action='delete-torrent'/>\n"
-    "  </popup>\n"
-    "\n"
-    "  <popup name='icon-popup'>\n"
-    "    <menuitem action='toggle-main-window'/>\n"
-    "    <separator/>\n"
-    "    <menuitem action='open-torrent-menu'/>\n"
-    "    <menuitem action='open-torrent-from-url'/>\n"
-    "    <separator/>\n"
-    "    <menuitem action='pause-all-torrents'/>\n"
-    "    <menuitem action='start-all-torrents'/>\n"
-    "    <separator/>\n"
-    "    <menuitem action='alt-speed-enabled'/>\n"
-    "    <separator/>\n"
-    "    <menuitem action='quit'/>\n"
-    "  </popup>\n"
-    "\n"
-    "</ui>";
-