diff pui-application.c @ 3:2fa34d6272c6

Add menu item to launch the preferences application
author Guido Berhoerster <guido+pui@berhoerster.name>
date Wed, 13 Jun 2018 23:25:09 +0200
parents 7172a0db97af
children 3d72ca76538d
line wrap: on
line diff
--- a/pui-application.c	Wed Jun 13 20:06:00 2018 +0200
+++ b/pui-application.c	Wed Jun 13 23:25:09 2018 +0200
@@ -21,6 +21,7 @@
  * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  */
 
+#include <gio/gdesktopappinfo.h>
 #include <glib/gi18n.h>
 #include <libappindicator/app-indicator.h>
 #include <stdlib.h>
@@ -78,12 +79,15 @@
 
 static void	pui_application_show_about_dialog(GSimpleAction *, GVariant *,
     gpointer);
+static void	pui_application_open_preferences(GSimpleAction *, GVariant *,
+    gpointer);
 static void	pui_application_quit(GSimpleAction *, GVariant *, gpointer);
 static void	pui_application_install_updates(GSimpleAction *, GVariant *,
     gpointer);
 
 static const GActionEntry pui_application_actions[] = {
     { "about", pui_application_show_about_dialog },
+    { "preferences", pui_application_open_preferences },
     { "quit", pui_application_quit },
     { "install-updates", pui_application_install_updates }
 };
@@ -130,6 +134,28 @@
 }
 
 static void
+pui_application_open_preferences(GSimpleAction *simple, GVariant *parameter,
+    gpointer user_data)
+{
+	GDesktopAppInfo	*prefs_app_info;
+	GError		*error = NULL;
+
+	prefs_app_info = g_desktop_app_info_new("org.guido-berhoerster.code."
+	    "package-update-indicator.preferences.desktop");
+	if (prefs_app_info == NULL) {
+		g_warning("desktop file \"org.guido-berhoerster.code."
+		    "package-update-indicator.preferences.desktop\" not found");
+		return;
+	}
+
+	if (!g_app_info_launch(G_APP_INFO(prefs_app_info), NULL, NULL,
+	    &error)) {
+		g_warning("failed to launch preferences: %s", error->message);
+		g_error_free(error);
+	}
+}
+
+static void
 pui_application_quit(GSimpleAction *simple, GVariant *parameter,
     gpointer user_data)
 {