[gnome-applets/wip/gnome-3.10+: 22/29] modemlights: restore applet
- From: Alberts Muktupāvels <muktupavels src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-applets/wip/gnome-3.10+: 22/29] modemlights: restore applet
- Date: Thu, 28 Aug 2014 15:52:14 +0000 (UTC)
commit 821b1f9b68d69080edf13a28444216bcb3b4fbc2
Author: Alberts Muktupāvels <alberts muktupavels gmail com>
Date: Thu Jul 10 10:31:44 2014 +0300
modemlights: restore applet
configure.ac | 20 ++--
modemlights/Makefile.am | 9 +-
modemlights/modem-applet-menu.xml | 31 ++++-
modemlights/modem-applet.c | 235 ++++++++++++++++++-------------------
modemlights/modem-applet.h | 18 ++--
5 files changed, 163 insertions(+), 150 deletions(-)
---
diff --git a/configure.ac b/configure.ac
index b1f8e3b..d780411 100644
--- a/configure.ac
+++ b/configure.ac
@@ -453,20 +453,16 @@ HAVE_LIBUTIL=
AC_PATH_PROG(SU_TOOL, su)
AC_CHECK_LIB(util, forkpty, HAVE_LIBUTIL=true, HAVE_LIBUTIL=false)
-dnl ***
-dnl *** Modem lights does not currently compile. It needs to be ported to a
-dnl *** modern gnome-system-tools backend.
-dnl ***
-dnl if test "x$HAVE_LIBUTIL" = "xtrue" -a "x$HAVE_GNOME_SETTINGS_DAEMON" = "xyes"; then
-dnl MODEMLIGHTS_LIBS=" -lutil"
-dnl AC_SUBST(MODEMLIGHTS_LIBS)
-dnl AC_DEFINE_UNQUOTED(STB_SCRIPTS_DIR, "$STB_SCRIPTS_DIR", [System tools backends])
-dnl AC_DEFINE_UNQUOTED(SU_PATH, "${SU_TOOL}", [su executable path])
-dnl BUILD_MODEM_LIGHTS=yes
-dnl else
+if test "x$HAVE_LIBUTIL" = "xtrue" -a "x$HAVE_GNOME_SETTINGS_DAEMON" = "xyes"; then
+ MODEMLIGHTS_LIBS=" -lutil"
+ AC_SUBST(MODEMLIGHTS_LIBS)
+ AC_DEFINE_UNQUOTED(STB_SCRIPTS_DIR, "$STB_SCRIPTS_DIR", [System tools backends])
+ AC_DEFINE_UNQUOTED(SU_PATH, "${SU_TOOL}", [su executable path])
+ BUILD_MODEM_LIGHTS=yes
+else
AC_MSG_WARN([*** modemlights applet will not be built ***])
BUILD_MODEM_LIGHTS=no
-dnl fi
+fi
AM_CONDITIONAL(APPLET_MODEMLIGHTS, test "x$BUILD_MODEM_LIGHTS" = "xyes")
diff --git a/modemlights/Makefile.am b/modemlights/Makefile.am
index eb46bcb..71680ad 100644
--- a/modemlights/Makefile.am
+++ b/modemlights/Makefile.am
@@ -3,7 +3,8 @@
AM_CPPFLAGS = -I. -I$(srcdir) \
-DMODEM_MENU_UI_DIR=\""$(uidir)"\" \
$(GNOME_APPLETS_CFLAGS) \
- $(WARN_CFLAGS)
+ $(WARN_CFLAGS) \
+ $(XML2_CFLAGS)
libexec_PROGRAMS = modem_applet
@@ -13,11 +14,13 @@ modem_applet_SOURCES = \
modem_applet_LDADD = \
$(GNOME_APPLETS_LIBS) \
- $(MODEMLIGHTS_LIBS)
+ $(MODEMLIGHTS_LIBS) \
+ $(XML2_LIBS)
-uidir = $(datadir)/gnome-2.0/ui
+uidir = $(pkgdatadir)/ui
ui_DATA = modem-applet-menu.xml
+
appletdir = $(LIBPANEL_APPLET_DIR)
applet_in_files = org.gnome.applets.ModemApplet.panel-applet.in
applet_DATA = $(applet_in_files:.panel-applet.in=.panel-applet)
diff --git a/modemlights/modem-applet-menu.xml b/modemlights/modem-applet-menu.xml
index 7e1d0e0..a52d4e1 100644
--- a/modemlights/modem-applet-menu.xml
+++ b/modemlights/modem-applet-menu.xml
@@ -1,7 +1,24 @@
-<menuitem name="Activate" action="Activate" />
-<menuitem name="Deactivate" action="Deactivate" />
-<separator/>
-<menuitem name="Properties" action="Properties" />
-<menuitem name="Help" action="Help" />
-<menuitem name="About" action="About" />
-
+<section>
+ <item>
+ <attribute name="label" translatable="yes">_Activate</attribute>
+ <attribute name="action">modem.activate</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">_Deactivate</attribute>
+ <attribute name="action">modem.deactivate</attribute>
+ </item>
+</section>
+<section>
+ <item>
+ <attribute name="label" translatable="yes">_Properties</attribute>
+ <attribute name="action">modem.preferences</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">_Help</attribute>
+ <attribute name="action">modem.help</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">_About</attribute>
+ <attribute name="action">modem.about</attribute>
+ </item>
+</section>
diff --git a/modemlights/modem-applet.c b/modemlights/modem-applet.c
index 361da34..9d45636 100644
--- a/modemlights/modem-applet.c
+++ b/modemlights/modem-applet.c
@@ -50,7 +50,6 @@
typedef void (*DirectiveCallback) (ModemApplet*, xmlDoc*);
typedef struct _BackendDirective BackendDirective;
-typedef struct _ModemAppletPrivate ModemAppletPrivate;
struct _ModemAppletPrivate
{
@@ -59,7 +58,7 @@ struct _ModemAppletPrivate
GtkIconTheme *icon_theme;
GdkPixbuf *icon;
GtkWidget *image;
- GtkActionGroup *action_group;
+ GSimpleActionGroup *action_group;
/* auth dialog */
GtkWidget *auth_dialog;
@@ -87,6 +86,8 @@ struct _ModemAppletPrivate
GSList *directives;
gboolean directive_running;
+ gint size;
+
/* interface data */
gboolean configured; /* is configured? */
gboolean enabled; /* is enabled? */
@@ -112,23 +113,25 @@ static gboolean update_tooltip (ModemApplet *applet);
static gboolean dispatch_directives (ModemApplet *applet);
static gboolean update_info (ModemApplet *applet);
-static void modem_applet_change_size (PanelApplet *applet, guint size);
-
-static void modem_applet_change_background (PanelApplet *app,
- PanelAppletBackgroundType type,
- GdkColor *colour,
- GdkPixmap *pixmap);
-
-static void on_modem_applet_about_clicked (GtkAction *action,
- ModemApplet *applet);
-static void on_modem_applet_activate (GtkAction *action,
- ModemApplet *applet);
-static void on_modem_applet_deactivate (GtkAction *action,
- ModemApplet *applet);
-static void on_modem_applet_properties_clicked (GtkAction *action,
- ModemApplet *applet);
-static void on_modem_applet_help_clicked (GtkAction *action,
- ModemApplet *applet);
+static void modem_applet_size_allocate (GtkWidget *widget,
+ GtkAllocation *allocation,
+ gpointer user_data);
+
+static void on_modem_applet_about_clicked (GSimpleAction *action,
+ GVariant *parameter,
+ gpointer user_data);
+static void on_modem_applet_activate (GSimpleAction *action,
+ GVariant *parameter,
+ gpointer user_data);
+static void on_modem_applet_deactivate (GSimpleAction *action,
+ GVariant *parameter,
+ gpointer user_data);
+static void on_modem_applet_properties_clicked (GSimpleAction *action,
+ GVariant *parameter,
+ gpointer user_data);
+static void on_modem_applet_help_clicked (GSimpleAction *action,
+ GVariant *parameter,
+ gpointer user_data);
static void launch_backend (ModemApplet *applet,
gboolean root_auth);
@@ -136,43 +139,23 @@ static void shutdown_backend (ModemApplet *applet,
gboolean backend_alive,
gboolean already_waiting);
-static gpointer parent_class;
-
-static const GtkActionEntry menu_actions[] = {
- { "Activate", GTK_STOCK_EXECUTE, N_("_Activate"),
- NULL, NULL,
- G_CALLBACK (on_modem_applet_activate) },
- { "Deactivate", GTK_STOCK_STOP, N_("_Deactivate"),
- NULL, NULL,
- G_CALLBACK (on_modem_applet_deactivate) },
- { "Properties", GTK_STOCK_PROPERTIES, N_("_Properties"),
- NULL, NULL,
- G_CALLBACK (on_modem_applet_properties_clicked) },
- { "Help", GTK_STOCK_HELP, N_("_Help"),
- NULL, NULL,
- G_CALLBACK (on_modem_applet_help_clicked) },
- { "About", GTK_STOCK_ABOUT, N_("_About"),
- NULL, NULL,
- G_CALLBACK (on_modem_applet_about_clicked) }
+static const GActionEntry menu_actions [] = {
+ { "activate", on_modem_applet_activate, NULL, NULL, NULL },
+ { "deactivate", on_modem_applet_deactivate, NULL, NULL, NULL },
+ { "preferences", on_modem_applet_properties_clicked, NULL, NULL, NULL },
+ { "help", on_modem_applet_help_clicked, NULL, NULL, NULL },
+ { "about", on_modem_applet_about_clicked, NULL, NULL, NULL }
};
-G_DEFINE_TYPE (ModemApplet, modem_applet, PANEL_TYPE_APPLET)
+G_DEFINE_TYPE_WITH_PRIVATE (ModemApplet, modem_applet, PANEL_TYPE_APPLET)
static void
modem_applet_class_init (ModemAppletClass *class)
{
- GObjectClass *object_class;
- PanelAppletClass *applet_class;
+ GObjectClass *object_class;
object_class = G_OBJECT_CLASS (class);
- applet_class = PANEL_APPLET_CLASS (class);
- parent_class = g_type_class_peek_parent (class);
-
- object_class->finalize = modem_applet_finalize;
- applet_class->change_size = modem_applet_change_size;
- applet_class->change_background = modem_applet_change_background;
-
- g_type_class_add_private (object_class, sizeof (ModemAppletPrivate));
+ object_class->finalize = modem_applet_finalize;
}
static void
@@ -190,6 +173,7 @@ modem_applet_init (ModemApplet *applet)
priv->icon = NULL;
priv->icon_theme = gtk_icon_theme_get_default ();
priv->image = gtk_image_new ();
+ priv->size = 48;
priv->auth_dialog = GTK_WIDGET (gtk_builder_get_object (priv->builder, "auth_dialog"));
priv->auth_dialog_label = GTK_WIDGET (gtk_builder_get_object (priv->builder, "auth_dialog_label"));
@@ -202,7 +186,7 @@ modem_applet_init (ModemApplet *applet)
g_signal_connect (G_OBJECT (priv->report_window), "delete-event",
G_CALLBACK (gtk_widget_hide), NULL);
- pixbuf = gtk_icon_theme_load_icon (priv->icon_theme, "gnome-modem-monitor-applet", 48, 0, NULL);
+ pixbuf = gtk_icon_theme_load_icon (priv->icon_theme, "gnome-modem-monitor-applet", priv->size, 0, NULL);
gtk_image_set_from_pixbuf (GTK_IMAGE (priv->report_window_image), pixbuf);
g_object_unref (pixbuf);
@@ -240,62 +224,38 @@ modem_applet_finalize (GObject *object)
g_free (priv->lock_file);
}
- if (G_OBJECT_CLASS (parent_class)->finalize)
- (* G_OBJECT_CLASS (parent_class)->finalize) (object);
+ if (G_OBJECT_CLASS (modem_applet_parent_class)->finalize)
+ G_OBJECT_CLASS (modem_applet_parent_class)->finalize (object);
}
static void
-modem_applet_change_size (PanelApplet *applet,
- guint size)
+modem_applet_size_allocate (GtkWidget *widget,
+ GtkAllocation *allocation,
+ gpointer user_data)
{
+ ModemApplet *applet = MODEM_APPLET (user_data);
ModemAppletPrivate *priv = MODEM_APPLET_GET_PRIVATE (applet);
+ PanelAppletOrient orient = panel_applet_get_orient (PANEL_APPLET (applet));
+ gint old_size = priv->size;
+
+ if (orient == PANEL_APPLET_ORIENT_UP || orient == PANEL_APPLET_ORIENT_DOWN) {
+ priv->size = allocation->height;
+ } else {
+ priv->size = allocation->width;
+ }
+
+ if (old_size == priv->size)
+ return;
if (priv->icon)
g_object_unref (priv->icon);
/* this might be too much overload, maybe should we get just one icon size and scale? */
priv->icon = gtk_icon_theme_load_icon (priv->icon_theme,
- "gnome-modem", size, 0, NULL);
+ "gnome-modem", priv->size, 0, NULL);
gtk_image_set_from_pixbuf (GTK_IMAGE (priv->image), priv->icon);
}
-static void
-modem_applet_change_background (PanelApplet *app,
- PanelAppletBackgroundType type,
- GdkColor *colour,
- GdkPixmap *pixmap)
-{
- ModemApplet *applet = MODEM_APPLET (app);
- GtkRcStyle *rc_style;
- GtkStyle *style;
-
- /* reset style */
- gtk_widget_set_style (GTK_WIDGET (applet), NULL);
- rc_style = gtk_rc_style_new ();
- gtk_widget_modify_style (GTK_WIDGET (applet), rc_style);
- g_object_unref (rc_style);
-
- switch (type)
- {
- case PANEL_NO_BACKGROUND:
- break;
- case PANEL_COLOR_BACKGROUND:
- gtk_widget_modify_bg (GTK_WIDGET (applet),
- GTK_STATE_NORMAL, colour);
- break;
- case PANEL_PIXMAP_BACKGROUND:
- style = gtk_style_copy (GTK_WIDGET (applet)->style);
-
- if (style->bg_pixmap[GTK_STATE_NORMAL])
- g_object_unref (style->bg_pixmap[GTK_STATE_NORMAL]);
-
- style->bg_pixmap[GTK_STATE_NORMAL] = g_object_ref (pixmap);
- gtk_widget_set_style (GTK_WIDGET (applet), style);
- g_object_unref (style);
- break;
- }
-}
-
static gboolean
pulse_progressbar (GtkWidget *progressbar)
{
@@ -629,14 +589,16 @@ shutdown_backend (ModemApplet *applet, gboolean backend_alive, gboolean already_
static void
update_popup_buttons (ModemApplet *applet)
{
- GtkAction *action;
- ModemAppletPrivate *priv = MODEM_APPLET_GET_PRIVATE (applet);
+ GSimpleAction *action;
+ ModemAppletPrivate *priv;
- action = gtk_action_group_get_action (priv->action_group, "Activate");
- gtk_action_set_sensitive (action, priv->configured && !priv->enabled);
+ priv = MODEM_APPLET_GET_PRIVATE (applet);
+
+ action = (GSimpleAction *) g_action_map_lookup_action (G_ACTION_MAP (priv->action_group), "activate");
+ g_simple_action_set_enabled (action, priv->configured && !priv->enabled);
- action = gtk_action_group_get_action (priv->action_group, "Deactivate");
- gtk_action_set_sensitive (action, priv->configured && priv->enabled);
+ action = (GSimpleAction *) g_action_map_lookup_action (G_ACTION_MAP (priv->action_group), "deactivate");
+ g_simple_action_set_enabled (action, priv->configured && !priv->enabled);
}
static void
@@ -892,11 +854,18 @@ launch_backend (ModemApplet *applet, gboolean root_auth)
}
}
+static void
+set_environment (gpointer display)
+{
+ g_setenv ("DISPLA", display, TRUE);
+}
+
static gboolean
launch_config_tool (GdkScreen *screen, gboolean is_isdn)
{
- gchar *argv[4], *application;
+ gchar *argv[4], *application, *display;
gboolean ret;
+ GError *error;
application = g_find_program_in_path (NETWORK_TOOL);
@@ -908,9 +877,20 @@ launch_config_tool (GdkScreen *screen, gboolean is_isdn)
argv[2] = (is_isdn) ? "isdn" : "modem";
argv[3] = NULL;
- ret = gdk_spawn_on_screen (screen, NULL, argv, NULL, 0,
- NULL, NULL, NULL, NULL);
+ display = gdk_screen_make_display_name (screen);
+ error = NULL;
+
+ ret = g_spawn_async (NULL, argv, NULL, G_SPAWN_SEARCH_PATH,
+ set_environment, &display, NULL, &error);
+
+ if (!ret) {
+ g_warning ("launch_config_tool: %s", error->message);
+ g_error_free (error);
+ }
+
+ g_free (display);
g_free (application);
+
return ret;
}
@@ -936,9 +916,9 @@ toggle_interface_root (ModemApplet *applet, gboolean enable)
GTK_DIALOG_MODAL,
GTK_MESSAGE_QUESTION,
GTK_BUTTONS_NONE,
- text);
+ "%s", text);
gtk_dialog_add_buttons (GTK_DIALOG (dialog),
- GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
+ _("_Cancel"), GTK_RESPONSE_CANCEL,
(enable) ? _("C_onnect") : _("_Disconnect"),
GTK_RESPONSE_OK, NULL);
gtk_window_set_screen (GTK_WINDOW (dialog),
@@ -963,23 +943,29 @@ toggle_interface (ModemApplet *applet, gboolean enable)
}
static void
-on_modem_applet_activate (GtkAction *action,
- ModemApplet *applet)
+on_modem_applet_activate (GSimpleAction *action,
+ GVariant *parameter,
+ gpointer user_data)
{
+ ModemApplet *applet = (ModemApplet *) user_data;
toggle_interface (applet, TRUE);
}
static void
-on_modem_applet_deactivate (GtkAction *action,
- ModemApplet *applet)
+on_modem_applet_deactivate (GSimpleAction *action,
+ GVariant *parameter,
+ gpointer user_data)
{
+ ModemApplet *applet = (ModemApplet *) user_data;
toggle_interface (applet, FALSE);
}
static void
-on_modem_applet_properties_clicked (GtkAction *action,
- ModemApplet *applet)
+on_modem_applet_properties_clicked (GSimpleAction *action,
+ GVariant *parameter,
+ gpointer user_data)
{
+ ModemApplet *applet = (ModemApplet *) user_data;
ModemAppletPrivate *priv = MODEM_APPLET_GET_PRIVATE (applet);
GdkScreen *screen;
GtkWidget *dialog;
@@ -1002,8 +988,9 @@ on_modem_applet_properties_clicked (GtkAction *action,
}
static void
-on_modem_applet_about_clicked (GtkAction *action,
- ModemApplet *applet)
+on_modem_applet_about_clicked (GSimpleAction *action,
+ GVariant *parameter,
+ gpointer user_data)
{
const gchar *authors[] = {
"Carlos Garnacho Parro <carlosg gnome org>",
@@ -1026,9 +1013,11 @@ on_modem_applet_about_clicked (GtkAction *action,
}
static void
-on_modem_applet_help_clicked (GtkAction *action,
- ModemApplet *applet)
+on_modem_applet_help_clicked (GSimpleAction *action,
+ GVariant *parameter,
+ gpointer user_data)
{
+ ModemApplet *applet = (ModemApplet *) user_data;
gtk_show_uri (gtk_widget_get_screen (GTK_WIDGET (applet)),
"help:modemlights",
gtk_get_current_event_time (),
@@ -1045,18 +1034,26 @@ modem_applet_fill (ModemApplet *applet)
gtk_widget_show_all (GTK_WIDGET (applet));
- priv->action_group = gtk_action_group_new ("ModemLights Applet Actions");
- gtk_action_group_set_translation_domain (priv->action_group, GETTEXT_PACKAGE);
- gtk_action_group_add_actions (priv->action_group,
- menu_actions,
- G_N_ELEMENTS (menu_actions),
- applet);
+ priv->action_group = g_simple_action_group_new ();
+ g_action_map_add_action_entries (G_ACTION_MAP (priv->action_group),
+ menu_actions,
+ G_N_ELEMENTS (menu_actions),
+ applet);
update_popup_buttons (applet);
ui_path = g_build_filename (MODEM_MENU_UI_DIR, "modem-applet-menu.xml", NULL);
panel_applet_setup_menu_from_file (PANEL_APPLET (applet),
- ui_path, priv->action_group);
+ ui_path, priv->action_group,
+ GETTEXT_PACKAGE);
g_free (ui_path);
+ gtk_widget_insert_action_group (GTK_WIDGET (applet), "modem",
+ G_ACTION_GROUP (priv->action_group));
+
+ panel_applet_set_background_widget (PANEL_APPLET (applet),
+ GTK_WIDGET (applet));
+
+ g_signal_connect (GTK_WIDGET (applet), "size-allocate", G_CALLBACK (modem_applet_size_allocate), applet);
+
return TRUE;
}
diff --git a/modemlights/modem-applet.h b/modemlights/modem-applet.h
index 49d9701..67425f0 100644
--- a/modemlights/modem-applet.h
+++ b/modemlights/modem-applet.h
@@ -21,9 +21,7 @@
#ifndef __MODEM_APPLET_H
#define __MODEM_APPLET_H
-#ifdef __cplusplus
-extern "C" {
-#endif
+G_BEGIN_DECLS
#include <panel-applet.h>
@@ -34,19 +32,21 @@ extern "C" {
#define IS_MODEM_APPLET_CLASS(obj) (G_TYPE_CHECK_CLASS_TYPE ((obj), TYPE_MODEM_APPLET))
#define MODEM_APPLET_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_MODEM_APPLET, ModemAppletClass))
-typedef struct _ModemApplet ModemApplet;
-typedef struct _ModemAppletClass ModemAppletClass;
+typedef struct _ModemApplet ModemApplet;
+typedef struct _ModemAppletClass ModemAppletClass;
+typedef struct _ModemAppletPrivate ModemAppletPrivate;
struct _ModemApplet {
- PanelApplet parent;
+ PanelApplet parent;
+ ModemAppletPrivate *priv;
};
struct _ModemAppletClass {
PanelAppletClass parent_class;
};
-#ifdef __cplusplus
-}
-#endif
+GType modem_applet_get_type (void);
+
+G_END_DECLS
#endif /* __MODEM_APPLET_H */
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]