~ubuntu-branches/ubuntu/oneiric/xpad/oneiric

« back to all changes in this revision

Viewing changes to src/xpad-tray.c

  • Committer: Bazaar Package Importer
  • Author(s): Bart Martens
  • Date: 2007-12-10 22:52:37 UTC
  • mfrom: (1.1.6 upstream)
  • Revision ID: james.westby@ubuntu.com-20071210225237-llvwje5iwbbi5adw
Tags: 2.13-1
* New upstream release.
* debian/patches/01_workspaces.diff: Removed.
* debian/menu: Updated.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
/*
2
2
 
3
3
Copyright (c) 2002 Jamis Buck
4
 
Copyright (c) 2003-2005 Michael Terry
 
4
Copyright (c) 2003-2007 Michael Terry
5
5
 
6
6
This program is free software; you can redistribute it and/or modify
7
7
it under the terms of the GNU General Public License as published by
22
22
#include "../config.h"
23
23
#include <glib/gi18n.h>
24
24
#include <gtk/gtk.h>
25
 
#include "eggstatusicon.h"
26
25
#include "fio.h"
27
26
#include "xpad-app.h"
28
27
#include "xpad-pad.h"
30
29
#include "xpad-preferences.h"
31
30
#include "xpad-tray.h"
32
31
 
33
 
static void xpad_tray_activate_cb (EggStatusIcon *icon);
34
 
static void xpad_tray_size_changed_cb (EggStatusIcon *icon, gint size);
35
 
static void xpad_tray_popup_menu_cb (EggStatusIcon *icon, guint button, guint32 time);
 
32
static void xpad_tray_activate_cb (GtkStatusIcon *icon);
 
33
static void xpad_tray_popup_menu_cb (GtkStatusIcon *icon, guint button, guint time);
36
34
 
37
 
static EggStatusIcon  *docklet = NULL;
 
35
static GtkStatusIcon  *docklet = NULL;
38
36
 
39
37
void
40
38
xpad_tray_open (void)
47
45
        if (!gtk_icon_theme_has_icon (theme, PACKAGE))
48
46
                return;
49
47
        
50
 
        docklet = egg_status_icon_new ();
 
48
        docklet = gtk_status_icon_new_from_icon_name (PACKAGE);
51
49
        
52
50
        if (docklet)
53
51
        {
54
52
                g_signal_connect (docklet, "activate", G_CALLBACK (xpad_tray_activate_cb), NULL);
55
53
                g_signal_connect (docklet, "popup-menu", G_CALLBACK (xpad_tray_popup_menu_cb), NULL);
56
 
                g_signal_connect (docklet, "size-changed", G_CALLBACK (xpad_tray_size_changed_cb), NULL);
57
54
        }
58
55
}
59
56
 
61
58
xpad_tray_close (void)
62
59
{
63
60
        if (docklet) {
64
 
        g_object_unref (docklet);
 
61
                g_object_unref (docklet);
65
62
                docklet = NULL;
66
63
        }
67
64
}
70
67
xpad_tray_is_open (void)
71
68
{
72
69
        if (docklet)
73
 
                return egg_status_icon_is_visible (docklet);
 
70
                return gtk_status_icon_is_embedded (docklet);
74
71
        else
75
72
                return FALSE;
76
73
}
77
74
 
78
 
static void
79
 
xpad_tray_size_changed_cb (EggStatusIcon *icon, gint size)
80
 
{
81
 
        GtkIconTheme *theme;
82
 
        GdkPixbuf *pixbuf;
83
 
        
84
 
        theme = gtk_icon_theme_get_default ();
85
 
        pixbuf = gtk_icon_theme_load_icon (theme,
86
 
                                           PACKAGE,
87
 
                                           size,
88
 
                                           0,
89
 
                                           NULL);
90
 
        if (pixbuf)
91
 
        {
92
 
                egg_status_icon_set_from_pixbuf (icon, pixbuf);
93
 
                g_object_unref (pixbuf);
94
 
        }
95
 
}
96
 
 
97
75
static gint
98
76
menu_title_compare (GtkWindow *a, GtkWindow *b)
99
77
{
124
102
}
125
103
 
126
104
static void
127
 
xpad_tray_popup_menu_cb (EggStatusIcon *icon, guint button, guint32 time)
 
105
xpad_tray_popup_menu_cb (GtkStatusIcon *icon, guint button, guint time)
128
106
{
129
107
        GtkWidget *menu, *item, *imgwidget;
130
108
        GSList *pads, *l;
150
128
                gtk_widget_set_sensitive (item, FALSE);
151
129
        
152
130
        item = gtk_image_menu_item_new_with_mnemonic (_("_Close All"));
153
 
        imgwidget = gtk_image_new_from_stock (GTK_STOCK_QUIT, GTK_ICON_SIZE_MENU);
154
 
        gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (item), imgwidget);
155
 
        g_signal_connect (item, "activate", G_CALLBACK (gtk_main_quit), NULL);
 
131
        g_signal_connect_swapped (item, "activate", G_CALLBACK (xpad_pad_group_close_all), xpad_app_get_pad_group ());
156
132
        gtk_container_add (GTK_CONTAINER (menu), item);
157
133
        gtk_widget_show (item);
 
134
        if (!pads)
 
135
                gtk_widget_set_sensitive (item, FALSE);
158
136
        
159
137
        item = gtk_separator_menu_item_new ();
160
138
        gtk_container_add (GTK_CONTAINER (menu), item);
202
180
        gtk_container_add (GTK_CONTAINER (menu), item);
203
181
        gtk_widget_show (item);
204
182
        
205
 
        gtk_menu_popup (GTK_MENU (menu), NULL, NULL, NULL, NULL, button, time);
 
183
        item = gtk_image_menu_item_new_from_stock (GTK_STOCK_QUIT, NULL);
 
184
        g_signal_connect (item, "activate", G_CALLBACK (gtk_main_quit), NULL);
 
185
        gtk_container_add (GTK_CONTAINER (menu), item);
 
186
        gtk_widget_show (item);
 
187
        
 
188
        gtk_menu_popup (GTK_MENU (menu), NULL, NULL, gtk_status_icon_position_menu, icon, button, time);
206
189
}
207
190
 
208
191
static void
209
 
xpad_tray_activate_cb (EggStatusIcon *icon)
 
192
xpad_tray_activate_cb (GtkStatusIcon *icon)
210
193
{
211
194
        GSList *pads = xpad_pad_group_get_pads (xpad_app_get_pad_group ());
212
195
        g_slist_foreach (pads, (GFunc) gtk_window_present, NULL);
213
196
        g_slist_free (pads);
214
197
}
 
198