Fri Oct 8 07:19:55 2004 Jonathan Blandford <jrb@redhat.com>
* panel-applet/NMWirelessAppletDbus.c (nmwa_dbus_get_double): (nmwa_dbus_get_string): remove unused functions * panel-applet/NMWirelessApplet.c (nmwa_about_cb): (nmwa_cancel_timeout), (nmwa_get_menu_pos), (nmwa_factory): remove unused functions * panel-applet/NMWirelessApplet.c: Rewrite icon code. git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@217 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
12
ChangeLog
@@ -1,3 +1,14 @@
|
||||
Fri Oct 8 07:19:55 2004 Jonathan Blandford <jrb@redhat.com>
|
||||
|
||||
* panel-applet/NMWirelessAppletDbus.c (nmwa_dbus_get_double):
|
||||
(nmwa_dbus_get_string): remove unused functions
|
||||
|
||||
* panel-applet/NMWirelessApplet.c (nmwa_about_cb):
|
||||
(nmwa_cancel_timeout), (nmwa_get_menu_pos), (nmwa_factory):
|
||||
remove unused functions
|
||||
|
||||
* panel-applet/NMWirelessApplet.c: Rewrite icon code.
|
||||
|
||||
2004-10-12 Dan Williams <dcbw@redhat.com>
|
||||
|
||||
* panel-applet/NMWirelessAppletDbus.c
|
||||
@@ -115,7 +126,6 @@
|
||||
- Be a bit more robust about link checking, ie make sure that
|
||||
the WEP key we were given actually has some data in it
|
||||
|
||||
>>>>>>> 1.127
|
||||
2004-10-08 Dan Williams <dcbw@redhat.com>
|
||||
|
||||
* info-daemon/NetworkManagerInfo.c (main):
|
||||
|
@@ -1,6 +1,6 @@
|
||||
AC_PREREQ(2.52)
|
||||
|
||||
AC_INIT(NetworkManager, 0.2, dcbw@redhat.com, NetworkManager)
|
||||
AC_INIT(NetworkManager, 0.3, dcbw@redhat.com, NetworkManager)
|
||||
AM_INIT_AUTOMAKE([subdir-objects])
|
||||
|
||||
AM_CONFIG_HEADER(config.h)
|
||||
|
@@ -1,4 +1,3 @@
|
||||
Makefile
|
||||
Makefile.in
|
||||
NMWirelessApplet.server
|
||||
NMWirelessApplet
|
||||
NetworkManagerNotification
|
||||
|
@@ -51,34 +51,20 @@
|
||||
#define CFG_UPDATE_INTERVAL 1
|
||||
#define NM_GCONF_WIRELESS_NETWORKS_PATH "/system/networking/wireless/networks"
|
||||
|
||||
static char * pixmap_names[] =
|
||||
{
|
||||
"no-networkmanager.png",
|
||||
"wired.png",
|
||||
"no-link-0.png",
|
||||
"signal-1-40.png",
|
||||
"signal-41-60.png",
|
||||
"signal-61-80.png",
|
||||
"signal-81-100.png",
|
||||
"connect-0.png",
|
||||
"connect-1.png",
|
||||
"connect-2.png",
|
||||
"connect-3.png",
|
||||
};
|
||||
|
||||
static char *glade_file;
|
||||
|
||||
static void nmwa_about_cb (NMWirelessApplet *applet);
|
||||
|
||||
static GtkWidget * nmwa_populate_menu (NMWirelessApplet *applet);
|
||||
static void nmwa_dispose_menu_items (NMWirelessApplet *applet);
|
||||
static gboolean do_not_eat_button_press (GtkWidget *widget, GdkEventButton *event);
|
||||
static GObject * nmwa_constructor (GType type, guint n_props, GObjectConstructParam *construct_props);
|
||||
static void setup_stock (void);
|
||||
static void nmwa_icons_init (NMWirelessApplet *applet);
|
||||
static gboolean nmwa_fill (NMWirelessApplet *applet);
|
||||
|
||||
|
||||
#ifndef BUILD_NOTIFICATION_ICON
|
||||
static const BonoboUIVerb nmwa_context_menu_verbs [] =
|
||||
|
||||
{
|
||||
BONOBO_UI_UNSAFE_VERB ("NMWirelessAbout", nmwa_about_cb),
|
||||
BONOBO_UI_VERB_END
|
||||
};
|
||||
@@ -86,22 +72,75 @@ static const BonoboUIVerb nmwa_context_menu_verbs [] =
|
||||
|
||||
G_DEFINE_TYPE(NMWirelessApplet, nmwa, EGG_TYPE_TRAY_ICON)
|
||||
|
||||
/*
|
||||
* nmwa_redraw
|
||||
*
|
||||
* Actually update the applet's pixmap so that our panel icon reflects
|
||||
* the state of the applet
|
||||
*
|
||||
*/
|
||||
static void nmwa_redraw (NMWirelessApplet *applet)
|
||||
|
||||
static void
|
||||
nmwa_init (NMWirelessApplet *applet)
|
||||
{
|
||||
if (applet->pixmaps[applet->pix_state] != applet->current_pixbuf)
|
||||
{
|
||||
applet->current_pixbuf = (GdkPixbuf *)applet->pixmaps[applet->pix_state];
|
||||
gtk_image_set_from_pixbuf (GTK_IMAGE (applet->pixmap), applet->current_pixbuf);
|
||||
}
|
||||
applet->animation_id = 0;
|
||||
applet->animation_step = 0;
|
||||
|
||||
setup_stock ();
|
||||
nmwa_icons_init (applet);
|
||||
nmwa_fill (applet);
|
||||
}
|
||||
|
||||
static void nmwa_class_init (NMWirelessAppletClass *klass)
|
||||
{
|
||||
GObjectClass *gobject_class;
|
||||
|
||||
gobject_class = G_OBJECT_CLASS (klass);
|
||||
|
||||
gobject_class->constructor = nmwa_constructor;
|
||||
}
|
||||
|
||||
static GObject *nmwa_constructor (GType type,
|
||||
guint n_props,
|
||||
GObjectConstructParam *construct_props)
|
||||
{
|
||||
GObject *obj;
|
||||
NMWirelessApplet *applet;
|
||||
NMWirelessAppletClass *klass;
|
||||
|
||||
klass = NM_WIRELESS_APPLET_CLASS (g_type_class_peek (type));
|
||||
obj = G_OBJECT_CLASS (nmwa_parent_class)->constructor (type,
|
||||
n_props,
|
||||
construct_props);
|
||||
applet = NM_WIRELESS_APPLET (obj);
|
||||
|
||||
return obj;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
animation_timeout (NMWirelessApplet *applet)
|
||||
{
|
||||
switch (applet->applet_state)
|
||||
{
|
||||
case (APPLET_STATE_WIRED_CONNECTING):
|
||||
applet->animation_step ++;
|
||||
if (applet->animation_step >= NUM_WIRED_CONNECTING_FRAMES)
|
||||
applet->animation_step = 0;
|
||||
gtk_image_set_from_pixbuf (GTK_IMAGE (applet->pixmap),
|
||||
applet->XXwired_connecting_icons[applet->animation_step]);
|
||||
break;
|
||||
case (APPLET_STATE_WIRELESS_CONNECTING):
|
||||
applet->animation_step ++;
|
||||
if (applet->animation_step >= NUM_WIRELESS_CONNECTING_FRAMES)
|
||||
applet->animation_step = 0;
|
||||
gtk_image_set_from_pixbuf (GTK_IMAGE (applet->pixmap),
|
||||
applet->XXwireless_connecting_icons[applet->animation_step]);
|
||||
break;
|
||||
case (APPLET_STATE_WIRELESS_SCANNING):
|
||||
applet->animation_step ++;
|
||||
if (applet->animation_step >= NUM_WIRELESS_SCANNING_FRAMES)
|
||||
applet->animation_step = 0;
|
||||
gtk_image_set_from_pixbuf (GTK_IMAGE (applet->pixmap),
|
||||
applet->XXwireless_connecting_icons[applet->animation_step]);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/*
|
||||
* nmwa_update_state
|
||||
@@ -110,64 +149,98 @@ static void nmwa_redraw (NMWirelessApplet *applet)
|
||||
* and what our icon on the panel should look like for each type.
|
||||
*
|
||||
*/
|
||||
static void nmwa_update_state (NMWirelessApplet *applet)
|
||||
static void
|
||||
nmwa_update_state (NMWirelessApplet *applet)
|
||||
{
|
||||
switch (applet->applet_state)
|
||||
{
|
||||
case (APPLET_STATE_NO_NM):
|
||||
applet->pix_state = PIX_NO_NETWORKMANAGER;
|
||||
break;
|
||||
gboolean show_applet = TRUE;
|
||||
gboolean need_animation = FALSE;
|
||||
GdkPixbuf *pixbuf = NULL;
|
||||
gint strength = -1;
|
||||
|
||||
case (APPLET_STATE_NO_CONNECTION):
|
||||
applet->pix_state = PIX_WIRED; /* FIXME: get a "no connection" picture */
|
||||
break;
|
||||
|
||||
case (APPLET_STATE_WIRED):
|
||||
case (APPLET_STATE_WIRED_CONNECTING):
|
||||
applet->pix_state = PIX_WIRED;
|
||||
break;
|
||||
|
||||
case (APPLET_STATE_WIRELESS):
|
||||
g_mutex_lock (applet->data_mutex);
|
||||
if (applet->active_device)
|
||||
{
|
||||
if (applet->active_device->strength > 75)
|
||||
applet->pix_state = PIX_WIRELESS_SIGNAL_4;
|
||||
else if (applet->active_device->strength > 50)
|
||||
applet->pix_state = PIX_WIRELESS_SIGNAL_3;
|
||||
else if (applet->active_device->strength > 25)
|
||||
applet->pix_state = PIX_WIRELESS_SIGNAL_2;
|
||||
else if (applet->active_device->strength > 0)
|
||||
applet->pix_state = PIX_WIRELESS_SIGNAL_1;
|
||||
else
|
||||
applet->pix_state = PIX_WIRELESS_NO_LINK;
|
||||
GSList *list;
|
||||
for (list = applet->active_device->networks; list; list = list->next)
|
||||
{
|
||||
WirelessNetwork *network;
|
||||
|
||||
network = (WirelessNetwork *) list->data;
|
||||
if (network->active)
|
||||
strength = CLAMP ((int) network->strength, 0, 100);
|
||||
}
|
||||
|
||||
if (strength == -1)
|
||||
strength = applet->active_device->strength;
|
||||
|
||||
}
|
||||
|
||||
if (g_slist_length (applet->devices) == 1 &&
|
||||
applet->applet_state != APPLET_STATE_NO_NM)
|
||||
{
|
||||
if (((NetworkDevice *)applet->devices->data)->type == DEVICE_TYPE_WIRED_ETHERNET)
|
||||
show_applet = FALSE;
|
||||
}
|
||||
g_mutex_unlock (applet->data_mutex);
|
||||
break;
|
||||
|
||||
case (APPLET_STATE_WIRELESS_CONNECTING):
|
||||
if (applet->pix_state < PIX_WIRELESS_CONNECT_0)
|
||||
applet->pix_state = PIX_WIRELESS_CONNECT_0;
|
||||
else if (applet->pix_state >= PIX_WIRELESS_CONNECT_3)
|
||||
applet->pix_state = PIX_WIRELESS_CONNECT_0;
|
||||
g_print ("%d\n", applet->applet_state);
|
||||
switch (applet->applet_state)
|
||||
{
|
||||
case (APPLET_STATE_NO_NM):
|
||||
pixbuf = applet->XXno_nm_icon;
|
||||
break;
|
||||
case (APPLET_STATE_NO_CONNECTION):
|
||||
show_applet = FALSE;
|
||||
break;
|
||||
case (APPLET_STATE_WIRED):
|
||||
pixbuf = applet->XXwired_icon;
|
||||
break;
|
||||
case (APPLET_STATE_WIRED_CONNECTING):
|
||||
applet->animation_step = CLAMP (applet->animation_step, 0, NUM_WIRED_CONNECTING_FRAMES - 1);
|
||||
pixbuf = applet->XXwired_connecting_icons[applet->animation_step];
|
||||
need_animation = TRUE;
|
||||
break;
|
||||
case (APPLET_STATE_WIRELESS):
|
||||
if (applet->active_device)
|
||||
{
|
||||
if (strength > 75)
|
||||
pixbuf = applet->XXwireless_100_icon;
|
||||
else if (strength > 50)
|
||||
pixbuf = applet->XXwireless_75_icon;
|
||||
else if (strength > 25)
|
||||
pixbuf = applet->XXwireless_50_icon;
|
||||
else if (strength > 0)
|
||||
pixbuf = applet->XXwireless_25_icon;
|
||||
else
|
||||
applet->pix_state++;
|
||||
pixbuf = applet->XXwireless_00_icon;
|
||||
}
|
||||
break;
|
||||
|
||||
case (APPLET_STATE_WIRELESS_CONNECTING):
|
||||
applet->animation_step = CLAMP (applet->animation_step, 0, NUM_WIRELESS_CONNECTING_FRAMES - 1);
|
||||
pixbuf = applet->XXwireless_connecting_icons[applet->animation_step];
|
||||
need_animation = TRUE;
|
||||
break;
|
||||
case (APPLET_STATE_WIRELESS_SCANNING):
|
||||
applet->animation_step = CLAMP (applet->animation_step, 0, NUM_WIRELESS_SCANNING_FRAMES - 1);
|
||||
pixbuf = applet->XXwireless_scanning_icons[applet->animation_step];
|
||||
need_animation = TRUE;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
/*determine if we should hide the notification icon*/
|
||||
gtk_widget_show (GTK_WIDGET (applet));
|
||||
if (g_list_length (applet->devices) == 1 &&
|
||||
applet->applet_state != APPLET_STATE_NO_NM) {
|
||||
NetworkDevice *nwd;
|
||||
nwd = (NetworkDevice *)applet->devices->data;
|
||||
gtk_image_set_from_pixbuf (GTK_IMAGE (applet->pixmap), pixbuf);
|
||||
|
||||
if (nwd->type == DEVICE_TYPE_WIRED_ETHERNET)
|
||||
if (show_applet)
|
||||
gtk_widget_show (GTK_WIDGET (applet));
|
||||
else
|
||||
gtk_widget_hide (GTK_WIDGET (applet));
|
||||
}
|
||||
|
||||
if (applet->animation_id)
|
||||
g_source_remove (applet->animation_id);
|
||||
if (need_animation)
|
||||
applet->animation_id =
|
||||
g_timeout_add (125, animation_timeout, applet);
|
||||
}
|
||||
|
||||
|
||||
@@ -180,56 +253,16 @@ static void nmwa_update_state (NMWirelessApplet *applet)
|
||||
static int nmwa_redraw_timeout (NMWirelessApplet *applet)
|
||||
{
|
||||
nmwa_update_state (applet);
|
||||
nmwa_redraw (applet);
|
||||
|
||||
return (TRUE);
|
||||
}
|
||||
|
||||
static void nmwa_start_redraw_timeout (NMWirelessApplet *applet)
|
||||
{
|
||||
applet->redraw_timeout_id = g_timeout_add (CFG_UPDATE_INTERVAL * 1000,
|
||||
(GtkFunction)nmwa_redraw_timeout, applet);
|
||||
applet->redraw_timeout_id =
|
||||
g_timeout_add (CFG_UPDATE_INTERVAL * 1000, (GtkFunction) nmwa_redraw_timeout, applet);
|
||||
}
|
||||
|
||||
static void nmwa_cancel_timeout (NMWirelessApplet *applet)
|
||||
{
|
||||
g_source_remove (applet->redraw_timeout_id);
|
||||
applet->redraw_timeout_id = -1;
|
||||
nmwa_update_state (applet);
|
||||
nmwa_redraw (applet);
|
||||
}
|
||||
|
||||
|
||||
static void nmwa_load_theme (NMWirelessApplet *applet)
|
||||
{
|
||||
char *pixmapdir;
|
||||
char *pixmapname;
|
||||
int i;
|
||||
GError *error = NULL;
|
||||
|
||||
pixmapdir = gnome_program_locate_file (NULL, GNOME_FILE_DOMAIN_PIXMAP,
|
||||
"NMWirelessApplet/", FALSE, NULL);
|
||||
|
||||
for (i = 0; i < PIX_NUMBER; i++)
|
||||
{
|
||||
pixmapname = g_build_filename (G_DIR_SEPARATOR_S,
|
||||
pixmapdir, pixmap_names[i], NULL);
|
||||
applet->pixmaps[i] = gdk_pixbuf_new_from_file_at_size (pixmapname, 32, 16, NULL);
|
||||
g_free (pixmapname);
|
||||
}
|
||||
|
||||
pixmapname = g_build_filename (G_DIR_SEPARATOR_S, pixmapdir, "keyring.png", NULL);
|
||||
applet->key_pixbuf = gdk_pixbuf_new_from_file_at_size (pixmapname, 16, 16, &error);
|
||||
g_free (pixmapname);
|
||||
pixmapname = g_build_filename (G_DIR_SEPARATOR_S, pixmapdir, "wired.png", NULL);
|
||||
applet->wired_icon = gdk_pixbuf_new_from_file_at_size (pixmapname, 16, 16, &error);
|
||||
g_free (pixmapname);
|
||||
pixmapname = g_build_filename (G_DIR_SEPARATOR_S, pixmapdir, "wireless.png", NULL);
|
||||
applet->wireless_icon = gdk_pixbuf_new_from_file_at_size (pixmapname, 16, 16, &error);
|
||||
g_free (pixmapname);
|
||||
|
||||
g_free (pixmapdir);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
@@ -255,55 +288,6 @@ static void show_warning_dialog (gboolean error, gchar *mesg, ...)
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* nmwa_about_cb
|
||||
*
|
||||
* Display our about dialog
|
||||
*
|
||||
*/
|
||||
static void nmwa_about_cb (NMWirelessApplet *applet)
|
||||
{
|
||||
GdkPixbuf *pixbuf;
|
||||
char *file;
|
||||
|
||||
const gchar *authors[] =
|
||||
{
|
||||
"Dan Williams <dcbw@redhat.com>",
|
||||
"Eskil Heyn Olsen <eskil@eskil.org> (GNOME Wireless Applet)",
|
||||
"Bastien Nocera <hadess@hadess.net> (GNOME Wireless Applet)",
|
||||
NULL
|
||||
};
|
||||
|
||||
if (applet->about_dialog != NULL)
|
||||
{
|
||||
gtk_window_set_screen (GTK_WINDOW (applet->about_dialog), gtk_widget_get_screen (GTK_WIDGET (&applet->parent)));
|
||||
gtk_window_present (GTK_WINDOW (applet->about_dialog));
|
||||
return;
|
||||
}
|
||||
|
||||
file = gnome_program_locate_file (NULL, GNOME_FILE_DOMAIN_PIXMAP, "NMWirelessApplet/wireless-applet.png", FALSE, NULL);
|
||||
pixbuf = gdk_pixbuf_new_from_file (file, NULL);
|
||||
g_free (file);
|
||||
|
||||
applet->about_dialog = gnome_about_new (
|
||||
"Wireless Network Applet",
|
||||
VERSION,
|
||||
"(C) 2004 Red Hat, Inc.\n(C) Copyright 2001, 2002 Free Software Foundation",
|
||||
"This utility shows the status of a wireless networking link.",
|
||||
authors,
|
||||
NULL,
|
||||
NULL,
|
||||
pixbuf);
|
||||
|
||||
g_object_unref (pixbuf);
|
||||
|
||||
gtk_window_set_screen (GTK_WINDOW (applet->about_dialog), gtk_widget_get_screen (GTK_WIDGET (applet)));
|
||||
g_signal_connect (applet->about_dialog, "destroy", G_CALLBACK (gtk_widget_destroyed), &applet->about_dialog);
|
||||
gtk_widget_show (applet->about_dialog);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* nmwa_destroy
|
||||
@@ -313,8 +297,6 @@ static void nmwa_about_cb (NMWirelessApplet *applet)
|
||||
*/
|
||||
static void nmwa_destroy (NMWirelessApplet *applet, gpointer user_data)
|
||||
{
|
||||
int i;
|
||||
|
||||
if (applet->menu)
|
||||
nmwa_dispose_menu_items (applet);
|
||||
|
||||
@@ -324,9 +306,6 @@ static void nmwa_destroy (NMWirelessApplet *applet, gpointer user_data)
|
||||
applet->redraw_timeout_id = 0;
|
||||
}
|
||||
|
||||
for (i = 0; i < PIX_NUMBER; i++)
|
||||
g_object_unref (applet->pixmaps[i]);
|
||||
|
||||
if (applet->about_dialog)
|
||||
{
|
||||
gtk_widget_destroy (applet->about_dialog);
|
||||
@@ -338,47 +317,6 @@ static void nmwa_destroy (NMWirelessApplet *applet, gpointer user_data)
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* nmwa_get_menu_pos
|
||||
*
|
||||
* When displaying the popup menu, figure out exactly where to put it on the screen
|
||||
*
|
||||
*/
|
||||
static void nmwa_get_menu_pos (GtkMenu *menu, gint *x, gint *y, gboolean *push_in, gpointer data)
|
||||
{
|
||||
NMWirelessApplet *applet = data;
|
||||
GtkRequisition reqmenu;
|
||||
gint tempx, tempy, width, height;
|
||||
gint screen_width, screen_height;
|
||||
|
||||
gtk_widget_size_request (GTK_WIDGET (menu), &reqmenu);
|
||||
gdk_window_get_origin (GTK_WIDGET (applet)->window, &tempx, &tempy);
|
||||
gdk_window_get_geometry (GTK_WIDGET (applet)->window, NULL, NULL, &width, &height, NULL);
|
||||
|
||||
#ifndef BUILD_NOTIFICATION_ICON
|
||||
switch (panel_applet_get_orient (PANEL_APPLET (applet)))
|
||||
{
|
||||
case PANEL_APPLET_ORIENT_DOWN:
|
||||
tempy += height;
|
||||
break;
|
||||
case PANEL_APPLET_ORIENT_UP:
|
||||
tempy -= reqmenu.height;
|
||||
break;
|
||||
case PANEL_APPLET_ORIENT_LEFT:
|
||||
tempx -= reqmenu.width;
|
||||
break;
|
||||
case PANEL_APPLET_ORIENT_RIGHT:
|
||||
tempx += width;
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
screen_width = gdk_screen_width ();
|
||||
screen_height = gdk_screen_height ();
|
||||
*x = CLAMP (tempx, 0, MAX (0, screen_width - reqmenu.width));
|
||||
*y = CLAMP (tempy, 0, MAX (0, screen_height - reqmenu.height));
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* nmwa_update_network_timestamp
|
||||
*
|
||||
@@ -387,7 +325,6 @@ static void nmwa_get_menu_pos (GtkMenu *menu, gint *x, gint *y, gboolean *push_i
|
||||
*/
|
||||
static void nmwa_update_network_timestamp (NMWirelessApplet *applet, const WirelessNetwork *network)
|
||||
{
|
||||
GConfEntry *gconf_entry;
|
||||
char *key;
|
||||
|
||||
g_return_if_fail (applet != NULL);
|
||||
@@ -741,7 +678,7 @@ static void nmwa_menu_add_devices (GtkWidget *menu, NMWirelessApplet *applet)
|
||||
if (dev && ((dev->type == DEVICE_TYPE_WIRED_ETHERNET) || (dev->type == DEVICE_TYPE_WIRELESS_ETHERNET)))
|
||||
{
|
||||
gboolean current = (dev == applet->active_device);
|
||||
gint n_devices;
|
||||
gint n_devices = 0;
|
||||
|
||||
if (dev->type == DEVICE_TYPE_WIRED_ETHERNET)
|
||||
n_devices = n_wired_interfaces;
|
||||
@@ -833,7 +770,6 @@ static GtkWidget * nmwa_populate_menu (NMWirelessApplet *applet)
|
||||
return (menu);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* mnwa_setup_widgets
|
||||
*
|
||||
@@ -843,38 +779,10 @@ static GtkWidget * nmwa_populate_menu (NMWirelessApplet *applet)
|
||||
*/
|
||||
static void nmwa_setup_widgets (NMWirelessApplet *applet)
|
||||
{
|
||||
gboolean horizontal = FALSE;
|
||||
gint panel_size;
|
||||
GtkWidget *menu_bar;
|
||||
|
||||
#if 0
|
||||
panel_size = panel_applet_get_size (PANEL_APPLET (applet));
|
||||
switch (panel_applet_get_orient(PANEL_APPLET (applet)))
|
||||
{
|
||||
case PANEL_APPLET_ORIENT_LEFT:
|
||||
case PANEL_APPLET_ORIENT_RIGHT:
|
||||
horizontal = FALSE;
|
||||
break;
|
||||
case PANEL_APPLET_ORIENT_UP:
|
||||
case PANEL_APPLET_ORIENT_DOWN:
|
||||
horizontal = TRUE;
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
|
||||
/* construct pixmap widget */
|
||||
applet->pixmap = gtk_image_new ();
|
||||
gtk_image_set_from_pixbuf (GTK_IMAGE (applet->pixmap), applet->pixmaps[PIX_WIRED]);
|
||||
//gtk_widget_size_request (applet->pixmap, &req);
|
||||
gtk_widget_show (applet->pixmap);
|
||||
|
||||
/*
|
||||
if (horizontal)
|
||||
total_size += req.height;
|
||||
else
|
||||
total_size += req.width;
|
||||
*/
|
||||
|
||||
menu_bar = gtk_menu_bar_new ();
|
||||
applet->toplevel_menu = gtk_menu_item_new();
|
||||
gtk_container_add (GTK_CONTAINER(applet->toplevel_menu), applet->pixmap);
|
||||
@@ -886,13 +794,10 @@ static void nmwa_setup_widgets (NMWirelessApplet *applet)
|
||||
g_signal_connect (menu_bar, "button_press_event", G_CALLBACK (do_not_eat_button_press), NULL);
|
||||
|
||||
applet->encryption_size_group = gtk_size_group_new (GTK_SIZE_GROUP_HORIZONTAL);
|
||||
gtk_widget_show (menu_bar);
|
||||
gtk_widget_show (applet->toplevel_menu);
|
||||
gtk_widget_show (applet->menu);
|
||||
|
||||
gtk_container_add (GTK_CONTAINER (applet), menu_bar);
|
||||
|
||||
applet->current_pixbuf = NULL;
|
||||
gtk_widget_show_all (GTK_WIDGET (applet));
|
||||
applet->about_dialog = NULL;
|
||||
}
|
||||
|
||||
@@ -914,36 +819,6 @@ static gboolean do_not_eat_button_press (GtkWidget *widget, GdkEventButton *even
|
||||
return (FALSE);
|
||||
}
|
||||
|
||||
#if 0
|
||||
static void change_background_cb(PanelApplet *a, PanelAppletBackgroundType type,
|
||||
GdkColor *color, GdkPixmap *pixmap, NMWirelessApplet *applet)
|
||||
{
|
||||
GtkRcStyle *rc_style = gtk_rc_style_new ();
|
||||
|
||||
return;
|
||||
switch (type)
|
||||
{
|
||||
case PANEL_PIXMAP_BACKGROUND:
|
||||
gtk_widget_modify_style (GTK_WIDGET (applet), rc_style);
|
||||
break;
|
||||
|
||||
case PANEL_COLOR_BACKGROUND:
|
||||
gtk_widget_modify_bg (GTK_WIDGET (applet), GTK_STATE_NORMAL, color);
|
||||
break;
|
||||
|
||||
case PANEL_NO_BACKGROUND:
|
||||
gtk_widget_modify_style (GTK_WIDGET (applet), rc_style);
|
||||
break;
|
||||
|
||||
default:
|
||||
gtk_widget_modify_style (GTK_WIDGET (applet), rc_style);
|
||||
break;
|
||||
}
|
||||
|
||||
gtk_rc_style_unref (rc_style);
|
||||
}
|
||||
#endif
|
||||
|
||||
/*
|
||||
* nmwa_get_instance
|
||||
*
|
||||
@@ -988,7 +863,6 @@ static GtkWidget * nmwa_get_instance (NMWirelessApplet *applet)
|
||||
}
|
||||
|
||||
/* Load pixmaps and create applet widgets */
|
||||
nmwa_load_theme (applet);
|
||||
nmwa_setup_widgets (applet);
|
||||
|
||||
g_signal_connect (applet,"destroy", G_CALLBACK (nmwa_destroy),NULL);
|
||||
@@ -1038,13 +912,7 @@ setup_stock (void)
|
||||
iset = gtk_icon_set_new ();
|
||||
isource = gtk_icon_source_new ();
|
||||
|
||||
/* Set up custom stock images. We a bunch of icons. */
|
||||
/* All but gnome-lockscreen are icons we install. */
|
||||
gtk_icon_source_set_icon_name (isource, "nm-");
|
||||
gtk_icon_set_add_source (iset, isource);
|
||||
gtk_icon_factory_add (ifactory, "gnome-lockscreen", iset);
|
||||
gtk_icon_factory_add_default (ifactory);
|
||||
|
||||
/* we use the lockscreen icon to get a key */
|
||||
gtk_icon_source_set_icon_name (isource, "gnome-lockscreen");
|
||||
gtk_icon_set_add_source (iset, isource);
|
||||
gtk_icon_factory_add (ifactory, "gnome-lockscreen", iset);
|
||||
@@ -1053,55 +921,83 @@ setup_stock (void)
|
||||
initted = TRUE;
|
||||
}
|
||||
|
||||
static gboolean nmwa_factory (NMWirelessApplet *applet, const gchar *iid, gpointer data)
|
||||
static void
|
||||
nmwa_icons_free (NMWirelessApplet *applet)
|
||||
{
|
||||
gboolean retval = FALSE;
|
||||
gint i;
|
||||
|
||||
setup_stock ();
|
||||
if (!strcmp (iid, "OAFIID:NMWirelessApplet"))
|
||||
retval = nmwa_fill (applet);
|
||||
|
||||
return (retval);
|
||||
g_object_unref (applet->XXno_nm_icon);
|
||||
g_object_unref (applet->XXwired_icon);
|
||||
for (i = 0; i < NUM_WIRED_CONNECTING_FRAMES; i++)
|
||||
g_object_unref (applet->XXwired_connecting_icons[i]);
|
||||
g_object_unref (applet->XXwireless_00_icon);
|
||||
g_object_unref (applet->XXwireless_25_icon);
|
||||
g_object_unref (applet->XXwireless_50_icon);
|
||||
g_object_unref (applet->XXwireless_75_icon);
|
||||
g_object_unref (applet->XXwireless_100_icon);
|
||||
for (i = 0; i < NUM_WIRELESS_CONNECTING_FRAMES; i++)
|
||||
g_object_unref (applet->XXwireless_connecting_icons[i]);
|
||||
for (i = 0; i < NUM_WIRELESS_SCANNING_FRAMES; i++)
|
||||
g_object_unref (applet->XXwireless_scanning_icons[i]);
|
||||
}
|
||||
|
||||
static void
|
||||
nmwa_init (NMWirelessApplet *applet)
|
||||
nmwa_icons_load_from_disk (NMWirelessApplet *applet,
|
||||
GtkIconTheme *icon_theme)
|
||||
{
|
||||
setup_stock ();
|
||||
nmwa_fill (applet);
|
||||
gint icon_size;
|
||||
|
||||
/* Assume icon is square */
|
||||
icon_size = 22;
|
||||
|
||||
applet->XXno_nm_icon = gtk_icon_theme_load_icon (icon_theme, "nm-device-broken", icon_size, 0, NULL);
|
||||
applet->XXwired_icon = gtk_icon_theme_load_icon (icon_theme, "nm-device-wired", icon_size, 0, NULL);
|
||||
applet->XXwired_connecting_icons[0] = gtk_icon_theme_load_icon (icon_theme, "nm-connecting00", icon_size, 0, NULL);
|
||||
applet->XXwired_connecting_icons[1] = gtk_icon_theme_load_icon (icon_theme, "nm-connecting01", icon_size, 0, NULL);
|
||||
applet->XXwired_connecting_icons[2] = gtk_icon_theme_load_icon (icon_theme, "nm-connecting02", icon_size, 0, NULL);
|
||||
applet->XXwired_connecting_icons[3] = gtk_icon_theme_load_icon (icon_theme, "nm-connecting03", icon_size, 0, NULL);
|
||||
applet->XXwireless_00_icon = gtk_icon_theme_load_icon (icon_theme, "nm-signal-00", icon_size, 0, NULL);
|
||||
applet->XXwireless_25_icon = gtk_icon_theme_load_icon (icon_theme, "nm-signal-25", icon_size, 0, NULL);
|
||||
applet->XXwireless_50_icon = gtk_icon_theme_load_icon (icon_theme, "nm-signal-50", icon_size, 0, NULL);
|
||||
applet->XXwireless_75_icon = gtk_icon_theme_load_icon (icon_theme, "nm-signal-75", icon_size, 0, NULL);
|
||||
applet->XXwireless_100_icon = gtk_icon_theme_load_icon (icon_theme, "nm-signal-100", icon_size, 0, NULL);
|
||||
applet->XXwireless_connecting_icons[0] = gtk_icon_theme_load_icon (icon_theme, "nm-connecting00", icon_size, 0, NULL);
|
||||
applet->XXwireless_connecting_icons[1] = gtk_icon_theme_load_icon (icon_theme, "nm-connecting01", icon_size, 0, NULL);
|
||||
applet->XXwireless_connecting_icons[2] = gtk_icon_theme_load_icon (icon_theme, "nm-connecting02", icon_size, 0, NULL);
|
||||
applet->XXwireless_connecting_icons[3] = gtk_icon_theme_load_icon (icon_theme, "nm-connecting03", icon_size, 0, NULL);
|
||||
applet->XXwireless_scanning_icons[0] = gtk_icon_theme_load_icon (icon_theme, "nm-detect00", icon_size, 0, NULL);
|
||||
applet->XXwireless_scanning_icons[1] = gtk_icon_theme_load_icon (icon_theme, "nm-detect01", icon_size, 0, NULL);
|
||||
applet->XXwireless_scanning_icons[2] = gtk_icon_theme_load_icon (icon_theme, "nm-detect02", icon_size, 0, NULL);
|
||||
applet->XXwireless_scanning_icons[3] = gtk_icon_theme_load_icon (icon_theme, "nm-detect03", icon_size, 0, NULL);
|
||||
applet->XXwireless_scanning_icons[4] = gtk_icon_theme_load_icon (icon_theme, "nm-detect04", icon_size, 0, NULL);
|
||||
applet->XXwireless_scanning_icons[5] = gtk_icon_theme_load_icon (icon_theme, "nm-detect05", icon_size, 0, NULL);
|
||||
applet->XXwireless_scanning_icons[6] = gtk_icon_theme_load_icon (icon_theme, "nm-detect06", icon_size, 0, NULL);
|
||||
applet->XXwireless_scanning_icons[7] = gtk_icon_theme_load_icon (icon_theme, "nm-detect07", icon_size, 0, NULL);
|
||||
}
|
||||
|
||||
static GObjectClass *parent_class = NULL;
|
||||
|
||||
static void nmwa_class_init (NMWirelessAppletClass *klass)
|
||||
static void
|
||||
nmwa_icon_theme_changed (GtkIconTheme *icon_theme,
|
||||
NMWirelessApplet *applet)
|
||||
{
|
||||
GObjectClass *gobject_class;
|
||||
gobject_class = G_OBJECT_CLASS (klass);
|
||||
|
||||
parent_class = G_OBJECT_CLASS (g_type_class_peek_parent (gobject_class));
|
||||
|
||||
gobject_class->constructor = nmwa_constructor;
|
||||
|
||||
nmwa_icons_free (applet);
|
||||
nmwa_icons_load_from_disk (applet, icon_theme);
|
||||
/* FIXME: force redraw */
|
||||
}
|
||||
|
||||
static GObject *nmwa_constructor (GType type,
|
||||
guint n_props,
|
||||
GObjectConstructParam *construct_props)
|
||||
static void
|
||||
nmwa_icons_init (NMWirelessApplet *applet)
|
||||
{
|
||||
GObject *obj;
|
||||
NMWirelessApplet *applet;
|
||||
NMWirelessAppletClass *klass;
|
||||
GtkIconTheme *icon_theme;
|
||||
|
||||
klass = NM_WIRELESS_APPLET_CLASS (g_type_class_peek (type));
|
||||
obj = parent_class->constructor (type,
|
||||
n_props,
|
||||
construct_props);
|
||||
applet = NM_WIRELESS_APPLET (obj);
|
||||
|
||||
return obj;
|
||||
/* FIXME: Do we need to worry about other screens? */
|
||||
icon_theme = gtk_icon_theme_get_default ();
|
||||
nmwa_icons_load_from_disk (applet, icon_theme);
|
||||
g_signal_connect (icon_theme, "changed", nmwa_icon_theme_changed, applet);
|
||||
}
|
||||
|
||||
NMWirelessApplet *nmwa_new ()
|
||||
|
||||
NMWirelessApplet *
|
||||
nmwa_new ()
|
||||
{
|
||||
return g_object_new (NM_TYPE_WIRELESS_APPLET, "title", "NetworkManager", NULL);
|
||||
}
|
||||
|
@@ -34,23 +34,6 @@
|
||||
#include "eggtrayicon.h"
|
||||
#endif
|
||||
|
||||
typedef enum
|
||||
{
|
||||
PIX_NO_NETWORKMANAGER,
|
||||
PIX_WIRED,
|
||||
PIX_WIRELESS_NO_LINK,
|
||||
PIX_WIRELESS_SIGNAL_1,
|
||||
PIX_WIRELESS_SIGNAL_2,
|
||||
PIX_WIRELESS_SIGNAL_3,
|
||||
PIX_WIRELESS_SIGNAL_4,
|
||||
PIX_WIRELESS_CONNECT_0,
|
||||
PIX_WIRELESS_CONNECT_1,
|
||||
PIX_WIRELESS_CONNECT_2,
|
||||
PIX_WIRELESS_CONNECT_3,
|
||||
PIX_NUMBER
|
||||
} PixmapState;
|
||||
|
||||
|
||||
typedef enum
|
||||
{
|
||||
APPLET_STATE_NO_NM,
|
||||
@@ -59,6 +42,7 @@ typedef enum
|
||||
APPLET_STATE_WIRED_CONNECTING,
|
||||
APPLET_STATE_WIRELESS,
|
||||
APPLET_STATE_WIRELESS_CONNECTING,
|
||||
APPLET_STATE_WIRELESS_SCANNING,
|
||||
APPLET_STATE_IGNORE
|
||||
} AppletState;
|
||||
|
||||
@@ -125,19 +109,30 @@ typedef struct
|
||||
GThread *dbus_thread;
|
||||
GMainContext *thread_context;
|
||||
|
||||
PixmapState pix_state; // Index into pixmaps array
|
||||
GdkPixbuf *pixmaps[PIX_NUMBER];
|
||||
GdkPixbuf *current_pixbuf;
|
||||
GdkPixbuf *key_pixbuf;
|
||||
GdkPixbuf *wired_icon;
|
||||
GdkPixbuf *wireless_icon;
|
||||
|
||||
/* Data model elements */
|
||||
GMutex *data_mutex;
|
||||
GSList *devices;
|
||||
NetworkDevice *active_device;
|
||||
AppletState applet_state;
|
||||
|
||||
GdkPixbuf *XXno_nm_icon;
|
||||
GdkPixbuf *XXwired_icon;
|
||||
#define NUM_WIRED_CONNECTING_FRAMES 4
|
||||
GdkPixbuf *XXwired_connecting_icons[NUM_WIRED_CONNECTING_FRAMES];
|
||||
GdkPixbuf *XXwireless_00_icon;
|
||||
GdkPixbuf *XXwireless_25_icon;
|
||||
GdkPixbuf *XXwireless_50_icon;
|
||||
GdkPixbuf *XXwireless_75_icon;
|
||||
GdkPixbuf *XXwireless_100_icon;
|
||||
#define NUM_WIRELESS_CONNECTING_FRAMES 4
|
||||
GdkPixbuf *XXwireless_connecting_icons[NUM_WIRELESS_CONNECTING_FRAMES];
|
||||
#define NUM_WIRELESS_SCANNING_FRAMES 8
|
||||
GdkPixbuf *XXwireless_scanning_icons[NUM_WIRELESS_SCANNING_FRAMES];
|
||||
|
||||
/* Animation stuff */
|
||||
int animation_step;
|
||||
guint animation_id;
|
||||
|
||||
/* Direct UI elements */
|
||||
GtkWidget *pixmap;
|
||||
GtkWidget *box;
|
||||
@@ -149,5 +144,6 @@ typedef struct
|
||||
|
||||
|
||||
NetworkDevice *nmwa_get_device_for_nm_device (NMWirelessApplet *applet, const char *nm_dev);
|
||||
NMWirelessApplet *nmwa_new ();
|
||||
NMWirelessApplet *nmwa_new (void);
|
||||
|
||||
#endif
|
||||
|
@@ -41,9 +41,6 @@
|
||||
#define NM_DBUS_NO_ACTIVE_NET_ERROR "org.freedesktop.NetworkManager.NoActiveNetwork"
|
||||
|
||||
|
||||
static void wireless_network_free (void *element, void *user_data);
|
||||
|
||||
|
||||
/*
|
||||
* nmwa_dbus_get_string
|
||||
*
|
||||
@@ -234,57 +231,6 @@ static int nmwa_dbus_get_bool (DBusConnection *connection, const char *path, con
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* nmwa_dbus_get_double
|
||||
*
|
||||
*/
|
||||
static double nmwa_dbus_get_double (DBusConnection *connection, const char *path, const char *method)
|
||||
{
|
||||
DBusMessage *message;
|
||||
DBusMessage *reply;
|
||||
DBusError error;
|
||||
double num;
|
||||
|
||||
g_return_val_if_fail (connection != NULL, 0);
|
||||
g_return_val_if_fail (path != NULL, 0);
|
||||
g_return_val_if_fail (method != NULL, 0);
|
||||
|
||||
if (!(message = dbus_message_new_method_call (NM_DBUS_SERVICE, path, NM_DBUS_INTERFACE, method)))
|
||||
{
|
||||
fprintf (stderr, "nmwa_dbus_get_double(): Couldn't allocate the dbus message\n");
|
||||
return (0);
|
||||
}
|
||||
|
||||
dbus_error_init (&error);
|
||||
reply = dbus_connection_send_with_reply_and_block (connection, message, -1, &error);
|
||||
dbus_message_unref (message);
|
||||
if (dbus_error_is_set (&error))
|
||||
{
|
||||
fprintf (stderr, "nmwa_dbus_get_double(): %s raised:\n %s\n\n", error.name, error.message);
|
||||
dbus_message_unref (message);
|
||||
dbus_error_free (&error);
|
||||
return (0);
|
||||
}
|
||||
|
||||
if (reply == NULL)
|
||||
{
|
||||
fprintf( stderr, "nmwa_dbus_get_double(): dbus reply message was NULL\n" );
|
||||
return (0);
|
||||
}
|
||||
|
||||
dbus_error_init (&error);
|
||||
if (!dbus_message_get_args (reply, &error, DBUS_TYPE_DOUBLE, &num, DBUS_TYPE_INVALID))
|
||||
{
|
||||
if (dbus_error_is_set (&error))
|
||||
dbus_error_free (&error);
|
||||
num = 0;
|
||||
}
|
||||
|
||||
dbus_message_unref (reply);
|
||||
|
||||
return (num);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* nmwa_dbus_get_string_array
|
||||
@@ -964,7 +910,6 @@ NetworkDevice *network_device_copy (NetworkDevice *src)
|
||||
static void nmwa_dbus_update_device_wireless_networks (NetworkDevice *dev, NMWirelessApplet *applet)
|
||||
{
|
||||
char *active_network = NULL;
|
||||
int dev_type;
|
||||
char **networks = NULL;
|
||||
int num_items = 0;
|
||||
int i;
|
||||
@@ -1036,7 +981,6 @@ out:
|
||||
*/
|
||||
static void nmwa_dbus_update_network_state (NMWirelessApplet *applet)
|
||||
{
|
||||
char *active_device = NULL;
|
||||
char *nm_status = NULL;
|
||||
|
||||
g_return_if_fail (applet != NULL);
|
||||
@@ -1045,6 +989,12 @@ static void nmwa_dbus_update_network_state (NMWirelessApplet *applet)
|
||||
if (!(nm_status = nmwa_dbus_get_nm_status (applet, APPLET_STATE_NO_CONNECTION)))
|
||||
return;
|
||||
|
||||
if (strcmp (nm_status, "scanning") == 0)
|
||||
{
|
||||
applet->applet_state = APPLET_STATE_WIRELESS_SCANNING;
|
||||
goto out;
|
||||
}
|
||||
|
||||
if (strcmp (nm_status, "disconnected") == 0)
|
||||
{
|
||||
applet->applet_state = APPLET_STATE_NO_CONNECTION;
|
||||
|
@@ -2,8 +2,12 @@ NULL =
|
||||
|
||||
largeicondir=${datadir}/icons/hicolor/48x48/apps
|
||||
largeicon_DATA=\
|
||||
nm-device-wireless.png
|
||||
|
||||
|
||||
smallicondir=${datadir}/icons/hicolor/24x24/apps
|
||||
smallicon_DATA=\
|
||||
nm-device-wired.png \
|
||||
nm-device-wireless.png \
|
||||
nm-connecting00.png \
|
||||
nm-connecting01.png \
|
||||
nm-connecting02.png \
|
||||
@@ -16,7 +20,13 @@ largeicon_DATA=\
|
||||
nm-detect05.png \
|
||||
nm-detect06.png \
|
||||
nm-detect07.png \
|
||||
nm-signal-00.png \
|
||||
nm-signal-25.png \
|
||||
nm-signal-50.png \
|
||||
nm-signal-75.png \
|
||||
nm-signal-100.png \
|
||||
$(NULL)
|
||||
|
||||
EXTRA_DIST=\
|
||||
$(largeicon_DATA)
|
||||
$(largeicon_DATA) \
|
||||
$(smallicon_DATA)
|
||||
|
Before Width: | Height: | Size: 3.7 KiB After Width: | Height: | Size: 828 B |
BIN
panel-applet/icons/nm-signal-00.png
Normal file
After Width: | Height: | Size: 512 B |
BIN
panel-applet/icons/nm-signal-100.png
Normal file
After Width: | Height: | Size: 383 B |
BIN
panel-applet/icons/nm-signal-25.png
Normal file
After Width: | Height: | Size: 511 B |
BIN
panel-applet/icons/nm-signal-50.png
Normal file
After Width: | Height: | Size: 495 B |
BIN
panel-applet/icons/nm-signal-75.png
Normal file
After Width: | Height: | Size: 460 B |
@@ -17,4 +17,6 @@ main (int argc, char *argv[])
|
||||
gtk_widget_show_all (GTK_WIDGET (nmwa));
|
||||
|
||||
gtk_main ();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|