aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorLars Uebernickel <lars.uebernickel@canonical.com>2012-02-06 15:38:27 +0100
committerLars Uebernickel <lars.uebernickel@canonical.com>2012-02-06 15:38:27 +0100
commitc1c9dd8191ae8490b169071860fdacf442195077 (patch)
tree967ba1cf847f7c9ab581d0dd114a189b7bf48c82 /src
parent75df9f6c041c84ea6b01ec1f1937c9804712dbe6 (diff)
downloadayatana-indicator-printers-c1c9dd8191ae8490b169071860fdacf442195077.tar.gz
ayatana-indicator-printers-c1c9dd8191ae8490b169071860fdacf442195077.tar.bz2
ayatana-indicator-printers-c1c9dd8191ae8490b169071860fdacf442195077.zip
Use g_spawn_command_line_async to launch g-c-c
Diffstat (limited to 'src')
-rw-r--r--src/Makefile.am2
-rw-r--r--src/indicator-printers-menu.c36
-rw-r--r--src/show-printer-settings.c55
-rw-r--r--src/show-printer-settings.h8
4 files changed, 30 insertions, 71 deletions
diff --git a/src/Makefile.am b/src/Makefile.am
index 8a29965..7b66b1b 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -30,8 +30,6 @@ indicator_printers_service_SOURCES = \
indicator-printers-service.h \
indicator-printers-menu.c \
indicator-printers-menu.h \
- show-printer-settings.c \
- show-printer-settings.h \
$(cups_notifier_sources)
indicator_printers_service_CPPFLAGS = $(SERVICE_CFLAGS)
diff --git a/src/indicator-printers-menu.c b/src/indicator-printers-menu.c
index f9e0e35..1548610 100644
--- a/src/indicator-printers-menu.c
+++ b/src/indicator-printers-menu.c
@@ -1,7 +1,6 @@
#include "indicator-printers-menu.h"
-#include "show-printer-settings.h"
#include <cups/cups.h>
@@ -117,12 +116,37 @@ get_number_of_active_jobs (const gchar *printer)
static void
-show_system_settings (DbusmenuMenuitem *menuitem,
- guint timestamp,
- gpointer user_data)
+spawn_command_line_async_f (const gchar *fmt,
+ ...)
+{
+ va_list args;
+ gchar *cmdline;
+ GError *err = NULL;
+
+ va_start (args, fmt);
+ cmdline = g_strdup_vprintf (fmt, args);
+ va_end (args);
+
+ g_spawn_command_line_async (cmdline, &err);
+ if (err) {
+ g_warning ("Couldn't execute command `%s`: %s",
+ cmdline, err->message);
+ g_error_free (err);
+ }
+
+ g_free (cmdline);
+}
+
+
+static void
+on_printer_item_activated (DbusmenuMenuitem *menuitem,
+ guint timestamp,
+ gpointer user_data)
{
const gchar *printer = user_data;
- show_printer_settings (printer);
+
+ spawn_command_line_async_f ("gnome-control-center printers show-printer %s",
+ printer);
}
@@ -142,7 +166,7 @@ update_printer_menuitem (IndicatorPrintersMenu *self,
dbusmenu_menuitem_property_set (item, "indicator-icon-name", "printer");
dbusmenu_menuitem_property_set (item, "indicator-label", printer);
g_signal_connect_data (item, "item-activated",
- G_CALLBACK (show_system_settings),
+ G_CALLBACK (on_printer_item_activated),
g_strdup (printer), (GClosureNotify) g_free, 0);
dbusmenu_menuitem_child_append(self->priv->root, item);
diff --git a/src/show-printer-settings.c b/src/show-printer-settings.c
deleted file mode 100644
index b213bb2..0000000
--- a/src/show-printer-settings.c
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * Copyright 2012 Canonical Ltd.
- *
- * Authors: Lars Uebernickel <lars.uebernickel@canonical.com>
- *
- * This program is free software: you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 3, as published
- * by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranties of
- * MERCHANTABILITY, SATISFACTORY QUALITY, 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, see <http://www.gnu.org/licenses/>.
- */
-
-#include <gio/gio.h>
-
-
-void
-show_printer_settings (const gchar *printer)
-{
- GAppInfo *appinfo;
- GError *err = NULL;
- gchar *cmdline;
-
- if (printer)
- cmdline = g_strdup_printf ("gnome-control-center printers show-printer %s",
- printer);
- else
- cmdline = g_strdup_printf ("gnome-control-center printers");
-
- appinfo = g_app_info_create_from_commandline (cmdline,
- "gnome-control-center",
- G_APP_INFO_CREATE_SUPPORTS_STARTUP_NOTIFICATION,
- &err);
- g_free (cmdline);
-
- if (err) {
- g_warning ("failed to create application info: %s", err->message);
- g_error_free (err);
- return;
- }
-
- g_app_info_launch (appinfo, NULL, NULL, &err);
- if (err) {
- g_warning ("failed to launch gnome-control-center: %s", err->message);
- g_error_free (err);
- }
-
- g_object_unref (appinfo);
-}
-
diff --git a/src/show-printer-settings.h b/src/show-printer-settings.h
deleted file mode 100644
index 7de5548..0000000
--- a/src/show-printer-settings.h
+++ /dev/null
@@ -1,8 +0,0 @@
-
-#ifndef SHOW_PRINTER_SETTINGS_H
-#define SHOW_PRINTER_SETTINGS_H
-
-void show_printer_settings (const gchar *printer);
-
-#endif
-