[gnome-applets: 255/263] netspeed: make as subclass



commit 94931142275da3f4b759e4384a94d2ccc87761d6
Author: Alberts Muktupāvels <alberts muktupavels gmail com>
Date:   Wed Mar 25 11:33:33 2015 +0200

    netspeed: make as subclass

 configure.ac             |    2 +-
 netspeed/src/Makefile.am |    8 +--
 netspeed/src/netspeed.c  |  203 ++++++++++++++++++++++++---------------------
 netspeed/src/netspeed.h  |   31 +++++++
 4 files changed, 142 insertions(+), 102 deletions(-)
---
diff --git a/configure.ac b/configure.ac
index e9b34a8..9007172 100644
--- a/configure.ac
+++ b/configure.ac
@@ -13,7 +13,7 @@ dnl ***************************************************************************
 dnl *** Minimum library versions for GNOME-APPLETS                          ***
 dnl ***************************************************************************
 GTK_REQUIRED=3.15.2
-GLIB_REQUIRED=2.30.0
+GLIB_REQUIRED=2.44.0
 GIO_REQUIRED=2.26.0
 LIBPANEL_REQUIRED=3.15.2
 LIBGTOP_REQUIRED=2.11.92
diff --git a/netspeed/src/Makefile.am b/netspeed/src/Makefile.am
index 2b527e7..627bbe2 100644
--- a/netspeed/src/Makefile.am
+++ b/netspeed/src/Makefile.am
@@ -6,15 +6,11 @@ AM_CFLAGS = \
        $(GNOME_APPLETS_CFLAGS) \
        $(GTOP_APPLETS_CFLAGS) \
        -DGNOMELOCALEDIR=\""$(datadir)/locale"\" \
-       -DNETSPEED_MENU_UI_DIR=\""$(uidir)"\" \
-       -DDATADIR=\""$(datadir)/"\" \
-       -DPREFIX=\""$(prefix)/"\" \
-       -DLIBDIR=\""$(libdir)/"\" \
-       -DSYSCONFDIR=\""$(sysconfdir)/"\"
+       -DNETSPEED_MENU_UI_DIR=\""$(uidir)"\"
 
 libexec_PROGRAMS = netspeed_applet2
 
-netspeed_applet2_SOURCES = backend.h backend.c netspeed.c
+netspeed_applet2_SOURCES = backend.h backend.c netspeed.c netspeed.h
 
 netspeed_applet2_LDADD = \
         $(GNOME_APPLETS_LIBS) \
diff --git a/netspeed/src/netspeed.c b/netspeed/src/netspeed.c
index 94e1224..c35d5e7 100644
--- a/netspeed/src/netspeed.c
+++ b/netspeed/src/netspeed.c
@@ -25,8 +25,8 @@
 #include <math.h>
 #include <gtk/gtk.h>
 #include <glib/gi18n.h>
-#include <panel-applet.h>
 #include "backend.h"
+#include "netspeed.h"
 
  /* Icons for the interfaces */
 static const char* const dev_type_icon[DEV_UNKNOWN + 1] = {
@@ -63,9 +63,10 @@ static const char LOGO_ICON[] = "netspeed-applet";
 /* A struct containing all the "global" data of the 
  * applet
  */
-typedef struct
+struct _NetspeedApplet
 {
-       PanelApplet *applet;
+       PanelApplet parent;
+
        GtkWidget *box, *pix_box,
        *in_box, *in_label, *in_pix,
        *out_box, *out_label, *out_pix,
@@ -100,7 +101,9 @@ typedef struct
        GtkWidget *connect_dialog;
        
        gboolean show_tooltip;
-} NetspeedApplet;
+};
+
+G_DEFINE_TYPE (NetspeedApplet, netspeed_applet, PANEL_TYPE_APPLET)
 
 static void
 update_tooltip(NetspeedApplet* applet);
@@ -218,7 +221,7 @@ applet_change_size_or_orient(PanelApplet *applet_widget, int arg1, NetspeedApple
        }               
        
        gtk_widget_show_all(applet->box);
-       gtk_container_add(GTK_CONTAINER(applet->applet), applet->box);
+       gtk_container_add (GTK_CONTAINER (applet), applet->box);
 }
 
 /* Change the icons according to the selected device
@@ -614,8 +617,8 @@ help_cb (GSimpleAction *action,
          GVariant      *parameter,
          gpointer       user_data)
 {
-       NetspeedApplet *ap = user_data;
-       display_help (GTK_WIDGET (ap->applet), NULL);
+       NetspeedApplet *ap = NETSPEED_APPLET (user_data);
+       display_help (GTK_WIDGET (ap), NULL);
 }
 
 /* Just the about window... If it's already open, just fokus it
@@ -710,7 +713,7 @@ static void
 showsum_change_cb(GtkToggleButton *togglebutton, NetspeedApplet *applet)
 {
        applet->show_sum = gtk_toggle_button_get_active(togglebutton);
-       applet_change_size_or_orient(applet->applet, -1, (gpointer)applet);
+       applet_change_size_or_orient (PANEL_APPLET (applet), -1, applet);
        change_icons(applet);
 }
 
@@ -1387,12 +1390,11 @@ update_tooltip(NetspeedApplet* applet)
 
   }
 
-  gtk_widget_set_tooltip_text(GTK_WIDGET(applet->applet), tooltip->str);
-  gtk_widget_trigger_tooltip_query(GTK_WIDGET(applet->applet));
+  gtk_widget_set_tooltip_text (GTK_WIDGET (applet), tooltip->str);
+  gtk_widget_trigger_tooltip_query (GTK_WIDGET (applet));
   g_string_free(tooltip, TRUE);
 }
 
-
 static gboolean
 netspeed_enter_cb(GtkWidget *widget, GdkEventCrossing *event, gpointer data)
 {
@@ -1421,6 +1423,16 @@ static const GActionEntry menu_actions [] = {
 };
 
 static void
+netspeed_applet_class_init (NetspeedAppletClass *netspeed_class)
+{
+}
+
+static void
+netspeed_applet_init (NetspeedApplet *netspeed)
+{
+}
+
+static void
 setup_menu (PanelApplet *applet)
 {
        NetspeedApplet *netspeed;
@@ -1428,7 +1440,7 @@ setup_menu (PanelApplet *applet)
        GAction *action;
        gchar *ui_path;
 
-       netspeed = (NetspeedApplet *) applet;
+       netspeed = NETSPEED_APPLET (applet);
 
        action_group = g_simple_action_group_new ();
        g_action_map_add_action_entries (G_ACTION_MAP (action_group),
@@ -1455,9 +1467,11 @@ setup_menu (PanelApplet *applet)
 /* The "main" function of the applet
  */
 static gboolean
-netspeed_applet_factory(PanelApplet *applet_widget, const gchar *iid, gpointer data)
+netspeed_applet_factory (PanelApplet *applet,
+                         const gchar *iid,
+                         gpointer     data)
 {
-       NetspeedApplet *applet;
+       NetspeedApplet *netspeed;
        int i;
        GtkIconTheme *icon_theme;
        GtkWidget *spacer, *spacer_box;
@@ -1466,6 +1480,8 @@ netspeed_applet_factory(PanelApplet *applet_widget, const gchar *iid, gpointer d
        if (strcmp (iid, "NetspeedApplet"))
                return FALSE;
 
+       netspeed = NETSPEED_APPLET (applet);
+
        glibtop_init();
        g_set_application_name (_("Netspeed"));
 
@@ -1474,28 +1490,26 @@ netspeed_applet_factory(PanelApplet *applet_widget, const gchar *iid, gpointer d
        /* Alloc the applet. The "NULL-setting" is really redudant
         * but aren't we paranoid?
         */
-       applet = g_malloc0(sizeof(NetspeedApplet));
-       applet->applet = applet_widget;
-       memset(&applet->devinfo, 0, sizeof(DevInfo));
-       applet->refresh_time = 1000.0;
-       applet->show_sum = FALSE;
-       applet->show_bits = FALSE;
-       applet->change_icon = TRUE;
-       applet->auto_change_device = TRUE;
+       memset(&netspeed->devinfo, 0, sizeof(DevInfo));
+       netspeed->refresh_time = 1000.0;
+       netspeed->show_sum = FALSE;
+       netspeed->show_bits = FALSE;
+       netspeed->change_icon = TRUE;
+       netspeed->auto_change_device = TRUE;
 
        /* Set the default colors of the graph
        */
-       applet->in_color.red = 0xdf00;
-       applet->in_color.green = 0x2800;
-       applet->in_color.blue = 0x4700;
-       applet->out_color.red = 0x3700;
-       applet->out_color.green = 0x2800;
-       applet->out_color.blue = 0xdf00;
+       netspeed->in_color.red = 0xdf00;
+       netspeed->in_color.green = 0x2800;
+       netspeed->in_color.blue = 0x4700;
+       netspeed->out_color.red = 0x3700;
+       netspeed->out_color.green = 0x2800;
+       netspeed->out_color.blue = 0xdf00;
                
        for (i = 0; i < GRAPH_VALUES; i++)
        {
-               applet->in_graph[i] = -1;
-               applet->out_graph[i] = -1;
+               netspeed->in_graph[i] = -1;
+               netspeed->out_graph[i] = -1;
        }       
        
        /* Get stored settings from the gconf database
@@ -1542,101 +1556,100 @@ netspeed_applet_factory(PanelApplet *applet_widget, const gchar *iid, gpointer d
                }
        }*/
        
-       if (!applet->devinfo.name) {
+       if (!netspeed->devinfo.name) {
                GList *ptr, *devices = get_available_devices();
                ptr = devices;
                while (ptr) { 
                        if (!g_str_equal(ptr->data, "lo")) {
-                               get_device_info(ptr->data, &applet->devinfo);
+                               get_device_info (ptr->data, &netspeed->devinfo);
                                break;
                        }
                        ptr = g_list_next(ptr);
                }
                free_devices_list(devices);             
        }
-       if (!applet->devinfo.name)
-               get_device_info("lo", &applet->devinfo);        
-       applet->device_has_changed = TRUE;      
-       
-       applet->in_label = gtk_label_new("");
-       applet->out_label = gtk_label_new("");
-       applet->sum_label = gtk_label_new("");
+       if (!netspeed->devinfo.name)
+               get_device_info ("lo", &netspeed->devinfo);
+       netspeed->device_has_changed = TRUE;
+
+       netspeed->in_label = gtk_label_new ("");
+       netspeed->out_label = gtk_label_new ("");
+       netspeed->sum_label = gtk_label_new ("");
        
-       applet->in_pix = gtk_image_new();
-       applet->out_pix = gtk_image_new();
-       applet->dev_pix = gtk_image_new();
-       applet->qual_pix = gtk_image_new();
+       netspeed->in_pix = gtk_image_new ();
+       netspeed->out_pix = gtk_image_new ();
+       netspeed->dev_pix = gtk_image_new ();
+       netspeed->qual_pix = gtk_image_new ();
        
-       applet->pix_box = gtk_hbox_new(FALSE, 0);
+       netspeed->pix_box = gtk_hbox_new (FALSE, 0);
        spacer = gtk_label_new("");
-       gtk_box_pack_start(GTK_BOX(applet->pix_box), spacer, TRUE, TRUE, 0);
+       gtk_box_pack_start (GTK_BOX (netspeed->pix_box), spacer, TRUE, TRUE, 0);
        spacer = gtk_label_new("");
-       gtk_box_pack_end(GTK_BOX(applet->pix_box), spacer, TRUE, TRUE, 0);
+       gtk_box_pack_end (GTK_BOX (netspeed->pix_box), spacer, TRUE, TRUE, 0);
 
        spacer_box = gtk_hbox_new(FALSE, 2);    
-       gtk_box_pack_start(GTK_BOX(applet->pix_box), spacer_box, FALSE, FALSE, 0);
-       gtk_box_pack_start(GTK_BOX(spacer_box), applet->qual_pix, FALSE, FALSE, 0);
-       gtk_box_pack_start(GTK_BOX(spacer_box), applet->dev_pix, FALSE, FALSE, 0);
+       gtk_box_pack_start (GTK_BOX (netspeed->pix_box), spacer_box, FALSE, FALSE, 0);
+       gtk_box_pack_start (GTK_BOX (spacer_box), netspeed->qual_pix, FALSE, FALSE, 0);
+       gtk_box_pack_start (GTK_BOX (spacer_box), netspeed->dev_pix, FALSE, FALSE, 0);
 
-       init_quality_pixbufs(applet);
-       
-       applet_change_size_or_orient(applet_widget, -1, (gpointer)applet);
-       gtk_widget_show_all(GTK_WIDGET(applet_widget));
-       update_applet(applet);
+       init_quality_pixbufs (netspeed);
 
-       panel_applet_set_flags(applet_widget, PANEL_APPLET_EXPAND_MINOR);
-       
-       applet->timeout_id = g_timeout_add(applet->refresh_time,
-                           (GSourceFunc)timeout_function,
-                           (gpointer)applet);
+       applet_change_size_or_orient (applet, -1, netspeed);
+       gtk_widget_show_all (GTK_WIDGET (applet));
+       update_applet (netspeed);
 
-       g_signal_connect(G_OBJECT(applet_widget), "change_size",
-                           G_CALLBACK(applet_change_size_or_orient),
-                           (gpointer)applet);
+       panel_applet_set_flags (applet, PANEL_APPLET_EXPAND_MINOR);
 
-       g_signal_connect(G_OBJECT(icon_theme), "changed",
-                           G_CALLBACK(icon_theme_changed_cb),
-                           (gpointer)applet);
+       netspeed->timeout_id = g_timeout_add (netspeed->refresh_time,
+                                             (GSourceFunc) timeout_function,
+                                             netspeed);
 
-       g_signal_connect(G_OBJECT(applet_widget), "change_orient",
-                           G_CALLBACK(applet_change_size_or_orient),
-                           (gpointer)applet);
+       /* FIXME: size-allocate */
+       g_signal_connect (applet, "change_size",
+                         G_CALLBACK (applet_change_size_or_orient),
+                         netspeed);
 
-       g_signal_connect(G_OBJECT(applet->in_label), "size_request",
-                           G_CALLBACK(label_size_request_cb),
-                           (gpointer)applet);
+       g_signal_connect (icon_theme, "changed",
+                         G_CALLBACK (icon_theme_changed_cb),
+                         netspeed);
 
-       g_signal_connect(G_OBJECT(applet->out_label), "size_request",
-                           G_CALLBACK(label_size_request_cb),
-                           (gpointer)applet);
+       g_signal_connect (applet, "change_orient",
+                         G_CALLBACK (applet_change_size_or_orient),
+                         netspeed);
 
-       g_signal_connect(G_OBJECT(applet->sum_label), "size_request",
-                           G_CALLBACK(label_size_request_cb),
-                           (gpointer)applet);
+       /* FIXME: size-request is removed signal... */
+       g_signal_connect (netspeed->in_label, "size_request",
+                         G_CALLBACK (label_size_request_cb),
+                         netspeed);
+       g_signal_connect (netspeed->out_label, "size_request",
+                         G_CALLBACK (label_size_request_cb),
+                         netspeed);
+       g_signal_connect (netspeed->sum_label, "size_request",
+                         G_CALLBACK (label_size_request_cb),
+                         netspeed);
 
-       g_signal_connect(G_OBJECT(applet_widget), "destroy",
-                           G_CALLBACK(applet_destroy),
-                           (gpointer)applet);
+       g_signal_connect (applet, "destroy",
+                         G_CALLBACK (applet_destroy),
+                         netspeed);
 
-       g_signal_connect(G_OBJECT(applet_widget), "button-press-event",
-                           G_CALLBACK(applet_button_press),
-                           (gpointer)applet);
+       g_signal_connect (applet, "button-press-event",
+                         G_CALLBACK (applet_button_press),
+                         netspeed);
 
-       g_signal_connect(G_OBJECT(applet_widget), "leave_notify_event",
-                        G_CALLBACK(netspeed_leave_cb),
-                        (gpointer)applet);
+       g_signal_connect (applet, "leave-notify-event",
+                         G_CALLBACK (netspeed_leave_cb),
+                         netspeed);
 
-       g_signal_connect(G_OBJECT(applet_widget), "enter_notify_event",
-                        G_CALLBACK(netspeed_enter_cb),
-                        (gpointer)applet);
+       g_signal_connect (applet, "enter-notify-event",
+                         G_CALLBACK (netspeed_enter_cb),
+                         netspeed);
 
-        panel_applet_set_background_widget (applet_widget, GTK_WIDGET (applet_widget));
+       setup_menu (applet);
 
-       setup_menu (applet_widget);
-
-       
        return TRUE;
 }
 
-PANEL_APPLET_OUT_PROCESS_FACTORY("NetspeedAppletFactory", PANEL_TYPE_APPLET,
-                       (PanelAppletFactoryCallback)netspeed_applet_factory, NULL)
+PANEL_APPLET_OUT_PROCESS_FACTORY ("NetspeedAppletFactory",
+                                  NETSPEED_TYPE_APPLET,
+                                  netspeed_applet_factory,
+                                  NULL)
diff --git a/netspeed/src/netspeed.h b/netspeed/src/netspeed.h
new file mode 100644
index 0000000..dca1b14
--- /dev/null
+++ b/netspeed/src/netspeed.h
@@ -0,0 +1,31 @@
+/*
+ * Copyright (C) 2015 Alberts Muktupāvels
+ *
+ * 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, see <http://www.gnu.org/licenses/>.
+ *
+ * Authors:
+ *     Alberts Muktupāvels <alberts muktupavels gmail com>
+ */
+
+#ifndef NETSPEED_APPLET_H
+#define NETSPEED_APPLET_H
+
+#include <panel-applet.h>
+
+#define NETSPEED_TYPE_APPLET netspeed_applet_get_type ()
+G_DECLARE_FINAL_TYPE (NetspeedApplet, netspeed_applet,
+                      NETSPEED, APPLET,
+                      PanelApplet)
+
+#endif


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]