~ubuntu-branches/ubuntu/oneiric/gnome-panel/oneiric

« back to all changes in this revision

Viewing changes to bonobo/libpanel-applet/test-bonobo-applet.c

  • Committer: Bazaar Package Importer
  • Author(s): Sebastien Bacher
  • Date: 2011-05-30 11:04:49 UTC
  • mfrom: (1.3.4 upstream)
  • mto: This revision was merged to the branch mainline in revision 204.
  • Revision ID: james.westby@ubuntu.com-20110530110449-ut1tc5t61rpvf9e3
Tags: upstream-3.0.2
ImportĀ upstreamĀ versionĀ 3.0.2

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/*
2
 
 * test-bonobo-applet.c:
3
 
 *
4
 
 * Authors:
5
 
 *    Mark McLoughlin <mark@skynet.ie>
6
 
 *
7
 
 * Copyright 2001 Sun Microsystems, Inc.
8
 
 */
9
 
 
10
 
#include <config.h>
11
 
#include <string.h>
12
 
 
13
 
#include <libbonoboui.h>
14
 
 
15
 
#include "panel-applet.h"
16
 
 
17
 
static void
18
 
test_applet_on_do (BonoboUIComponent *uic,
19
 
                   gpointer           user_data,
20
 
                   const gchar       *verbname)
21
 
{
22
 
        g_message ("%s called\n", verbname);
23
 
}
24
 
 
25
 
static const BonoboUIVerb test_applet_menu_verbs [] = {
26
 
        BONOBO_UI_VERB ("TestAppletDo1", test_applet_on_do),
27
 
        BONOBO_UI_VERB ("TestAppletDo2", test_applet_on_do),
28
 
        BONOBO_UI_VERB ("TestAppletDo3", test_applet_on_do),
29
 
 
30
 
        BONOBO_UI_VERB_END
31
 
};
32
 
 
33
 
static const char test_applet_menu_xml [] =
34
 
        "<popup name=\"button3\">\n"
35
 
        "   <menuitem name=\"Test Item 1\" verb=\"TestAppletDo1\" _label=\"Test This One\"/>\n"
36
 
        "   <menuitem name=\"Test Item 2\" verb=\"TestAppletDo2\" _label=\"Test This Two\"/>\n"
37
 
        "   <menuitem name=\"Test Item 3\" verb=\"TestAppletDo3\" _label=\"Test This Three\"/>\n"
38
 
        "</popup>\n";
39
 
 
40
 
typedef struct {
41
 
        PanelApplet   base;
42
 
        GtkWidget    *label;
43
 
} TestApplet;
44
 
 
45
 
static GType
46
 
test_applet_get_type (void)
47
 
{
48
 
        static GType type = 0;
49
 
 
50
 
        if (!type) {
51
 
                static const GTypeInfo info = {
52
 
                        sizeof (PanelAppletClass),
53
 
                        NULL, NULL, NULL, NULL, NULL,
54
 
                        sizeof (TestApplet),
55
 
                        0, NULL, NULL
56
 
                };
57
 
 
58
 
                type = g_type_register_static (
59
 
                                PANEL_TYPE_APPLET, "TestApplet", &info, 0);
60
 
        }
61
 
 
62
 
        return type;
63
 
}
64
 
 
65
 
static void
66
 
test_applet_handle_orient_change (TestApplet        *applet,
67
 
                                  PanelAppletOrient  orient,
68
 
                                  gpointer           dummy)
69
 
{
70
 
        gchar *text;
71
 
 
72
 
        text = g_strdup (gtk_label_get_text (GTK_LABEL (applet->label)));
73
 
 
74
 
        g_strreverse (text);
75
 
 
76
 
        gtk_label_set_text (GTK_LABEL (applet->label), text);
77
 
 
78
 
        g_free (text);
79
 
}
80
 
 
81
 
static void
82
 
test_applet_handle_size_change (TestApplet *applet,
83
 
                                gint        size,
84
 
                                gpointer    dummy)
85
 
{
86
 
        switch (size) {
87
 
        case GNOME_Vertigo_PANEL_XX_SMALL:
88
 
                gtk_label_set_markup (
89
 
                        GTK_LABEL (applet->label), "<span size=\"xx-small\">Hello</span>");
90
 
                break;
91
 
        case GNOME_Vertigo_PANEL_X_SMALL:
92
 
                gtk_label_set_markup (
93
 
                        GTK_LABEL (applet->label), "<span size=\"x-small\">Hello</span>");
94
 
                break;
95
 
        case GNOME_Vertigo_PANEL_SMALL:
96
 
                gtk_label_set_markup (
97
 
                        GTK_LABEL (applet->label), "<span size=\"small\">Hello</span>");
98
 
                break;
99
 
        case GNOME_Vertigo_PANEL_MEDIUM:
100
 
                gtk_label_set_markup (
101
 
                        GTK_LABEL (applet->label), "<span size=\"medium\">Hello</span>");
102
 
                break;
103
 
        case GNOME_Vertigo_PANEL_LARGE:
104
 
                gtk_label_set_markup (
105
 
                        GTK_LABEL (applet->label), "<span size=\"large\">Hello</span>");
106
 
                break;
107
 
        case GNOME_Vertigo_PANEL_X_LARGE:
108
 
                gtk_label_set_markup (
109
 
                        GTK_LABEL (applet->label), "<span size=\"x-large\">Hello</span>");
110
 
                break;
111
 
        case GNOME_Vertigo_PANEL_XX_LARGE:
112
 
                gtk_label_set_markup (
113
 
                        GTK_LABEL (applet->label), "<span size=\"xx-large\">Hello</span>");
114
 
                break;
115
 
        default:
116
 
                g_assert_not_reached ();
117
 
                break;
118
 
        }
119
 
}
120
 
 
121
 
static void
122
 
test_applet_handle_background_change (TestApplet                *applet,
123
 
                                      PanelAppletBackgroundType  type,
124
 
                                      GdkColor                  *color,
125
 
                                      GdkPixmap                 *pixmap,
126
 
                                      gpointer                   dummy)
127
 
{
128
 
        GdkWindow *window = gtk_widget_get_window (applet->label);
129
 
 
130
 
        switch (type) {
131
 
        case PANEL_NO_BACKGROUND:
132
 
                g_message ("Setting background to default");
133
 
                gdk_window_set_back_pixmap (window, NULL, FALSE);
134
 
                break;
135
 
        case PANEL_COLOR_BACKGROUND:
136
 
                g_message ("Setting background to #%2x%2x%2x",
137
 
                            color->red, color->green, color->blue);
138
 
                gdk_window_set_back_pixmap (window, NULL, FALSE);
139
 
                break;
140
 
        case PANEL_PIXMAP_BACKGROUND:
141
 
                g_message ("Setting background to '%p'", pixmap);
142
 
                gdk_window_set_back_pixmap (window, pixmap, FALSE);
143
 
                break;
144
 
        default:
145
 
                g_assert_not_reached ();
146
 
                break;
147
 
        }
148
 
}
149
 
 
150
 
static gboolean
151
 
test_applet_fill (TestApplet *applet)
152
 
{
153
 
        applet->label = gtk_label_new (NULL);
154
 
 
155
 
        gtk_container_add (GTK_CONTAINER (applet), applet->label);
156
 
 
157
 
        gtk_widget_show_all (GTK_WIDGET (applet));
158
 
 
159
 
        test_applet_handle_size_change (applet, GNOME_Vertigo_PANEL_MEDIUM, NULL);
160
 
 
161
 
        panel_applet_setup_menu (
162
 
                PANEL_APPLET (applet), test_applet_menu_xml, test_applet_menu_verbs, NULL);
163
 
 
164
 
        gtk_widget_set_tooltip_text (GTK_WIDGET (applet), "Hello Tip");
165
 
 
166
 
        panel_applet_set_flags (PANEL_APPLET (applet), PANEL_APPLET_HAS_HANDLE);
167
 
 
168
 
        g_signal_connect (G_OBJECT (applet),
169
 
                          "change_orient",
170
 
                          G_CALLBACK (test_applet_handle_orient_change),
171
 
                          NULL);
172
 
 
173
 
        g_signal_connect (G_OBJECT (applet),
174
 
                          "change_size",
175
 
                          G_CALLBACK (test_applet_handle_size_change),
176
 
                          NULL);
177
 
 
178
 
        g_signal_connect (G_OBJECT (applet),
179
 
                          "change_background",
180
 
                          G_CALLBACK (test_applet_handle_background_change),
181
 
                          NULL);
182
 
 
183
 
        return TRUE;
184
 
}
185
 
 
186
 
static gboolean
187
 
test_applet_factory (TestApplet  *applet,
188
 
                     const gchar *iid,
189
 
                     gpointer     data)
190
 
{
191
 
        gboolean retval = FALSE;
192
 
 
193
 
        if (!strcmp (iid, "OAFIID:GNOME_Panel_TestBonoboApplet"))
194
 
                retval = test_applet_fill (applet);
195
 
 
196
 
        return retval;
197
 
}
198
 
 
199
 
PANEL_APPLET_BONOBO_FACTORY ("OAFIID:GNOME_Panel_TestBonoboApplet_Factory",
200
 
                             test_applet_get_type (),
201
 
                             "A Test Applet for the GNOME-2.0 Panel",
202
 
                             "0",
203
 
                             (PanelAppletFactoryCallback) test_applet_factory,
204
 
                             NULL)