~ubuntu-branches/ubuntu/hardy/gnome-panel/hardy-proposed

« back to all changes in this revision

Viewing changes to debian/patches/11_panel_addto_dialog.patch

  • Committer: Bazaar Package Importer
  • Author(s): Sebastien Bacher
  • Date: 2007-09-25 15:15:56 UTC
  • Revision ID: james.westby@ubuntu.com-20070925151556-vwaimw7uvih0jpgn
Tags: 1:2.20.0.1-0ubuntu3
* debian/patches/01_layout.patch, debian/patches/11_panel_addto_dialog.patch:
  - cleaning
* debian/patches/12_autoreconf.patch:
  - don't list config.h.in~ in the package, fix build after clean target,
    change suggest by "Yann" (LP: #72570)
* debian/patches/15_no_animation_if_composited.patch:
  - updated to modify the source and not the patches directory

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
diff -Nur gnome-panel-2.19.2/gnome-panel/Makefile.am gnome-panel-2.19.2.new/gnome-panel/Makefile.am
2
 
--- gnome-panel-2.19.2/gnome-panel/Makefile.am  2007-05-14 21:53:01.000000000 +0200
3
 
+++ gnome-panel-2.19.2.new/gnome-panel/Makefile.am      2007-05-15 12:42:45.000000000 +0200
 
1
diff -Nur gnome-panel-2.20.0.1/gnome-panel/Makefile.am gnome-panel-2.20.0.1.new/gnome-panel/Makefile.am
 
2
--- gnome-panel-2.20.0.1/gnome-panel/Makefile.am        2007-09-18 15:56:51.000000000 +0200
 
3
+++ gnome-panel-2.20.0.1.new/gnome-panel/Makefile.am    2007-09-25 15:39:38.000000000 +0200
4
4
@@ -95,6 +95,9 @@
5
5
        panel-force-quit.c      \
6
6
        panel-lockdown.c        \
22
22
        panel-logout.h          \
23
23
        panel-gdm.h             \
24
24
        panel-power-manager.h   \
25
 
diff -Nur gnome-panel-2.19.2/gnome-panel/panel-action-button.c gnome-panel-2.19.2.new/gnome-panel/panel-action-button.c
26
 
--- gnome-panel-2.19.2/gnome-panel/panel-action-button.c        2007-05-15 12:42:45.000000000 +0200
27
 
+++ gnome-panel-2.19.2.new/gnome-panel/panel-action-button.c    2007-05-15 12:42:45.000000000 +0200
 
25
diff -Nur gnome-panel-2.20.0.1/gnome-panel/panel-action-button.c gnome-panel-2.20.0.1.new/gnome-panel/panel-action-button.c
 
26
--- gnome-panel-2.20.0.1/gnome-panel/panel-action-button.c      2007-09-25 15:39:37.000000000 +0200
 
27
+++ gnome-panel-2.20.0.1.new/gnome-panel/panel-action-button.c  2007-09-25 15:39:38.000000000 +0200
28
28
@@ -174,6 +174,7 @@
29
29
                                          gtk_get_current_event_time ());
30
30
                }
33
33
 
34
34
 static void
35
35
 panel_action_shutdown (GtkWidget *widget)
36
 
@@ -264,6 +265,8 @@
 
36
@@ -265,6 +266,8 @@
37
37
        PanelActionButtonType   type;
38
38
        char                   *icon_name;
39
39
        char                   *text;
42
42
        char                   *tooltip;
43
43
        char                   *help_index;
44
44
        char                   *drag_id;
45
 
@@ -286,6 +289,8 @@
 
45
@@ -287,6 +290,8 @@
46
46
                PANEL_ACTION_LOCK,
47
47
                PANEL_ICON_LOCKSCREEN,
48
48
                N_("Lock Screen"),
51
51
                N_("Protect your computer from unauthorized use"),
52
52
                "gospanel-21",
53
53
                "ACTION:lock:NEW",
54
 
@@ -301,6 +306,8 @@
 
54
@@ -302,6 +307,8 @@
55
55
                 * update the ones in panel-menu-items.c (look for
56
56
                 * panel:showusername|1) */
57
57
                N_("Quit..."),
60
60
                N_("Log off, switch user, lock screen or power down the computer"),
61
61
                "gospanel-20",
62
62
                "ACTION:logout:NEW",
63
 
@@ -311,6 +318,8 @@
 
63
@@ -312,6 +319,8 @@
64
64
                PANEL_ACTION_RUN,
65
65
                PANEL_ICON_RUN,
66
66
                N_("Run Application..."),
69
69
                N_("Run an application by typing a command or choosing from a list"),
70
70
                "gospanel-555",
71
71
                "ACTION:run:NEW",
72
 
@@ -321,6 +330,8 @@
 
72
@@ -322,6 +331,8 @@
73
73
                PANEL_ACTION_SEARCH,
74
74
                PANEL_ICON_SEARCHTOOL,
75
75
                N_("Search for Files..."),
78
78
                N_("Locate documents and folders on this computer by name or content"),
79
79
                "gospanel-554",
80
80
                "ACTION:search:NEW",
81
 
@@ -330,6 +341,8 @@
 
81
@@ -331,6 +342,8 @@
82
82
                PANEL_ACTION_FORCE_QUIT,
83
83
                PANEL_ICON_FORCE_QUIT,
84
84
                N_("Force Quit"),
87
87
                N_("Force a misbehaving application to quit"),
88
88
                "gospanel-563",
89
89
                "ACTION:force-quit:NEW",
90
 
@@ -340,6 +353,8 @@
 
90
@@ -341,6 +354,8 @@
91
91
                PANEL_ACTION_CONNECT_SERVER,
92
92
                PANEL_ICON_REMOTE, //FIXME icon
93
93
                N_("Connect to Server..."),
96
96
                N_("Connect to a remote computer or shared disk"),
97
97
                "gospanel-563", //FIXME
98
98
                "ACTION:connect-server:NEW",
99
 
@@ -349,6 +364,8 @@
 
99
@@ -350,6 +365,8 @@
100
100
                PANEL_ACTION_SHUTDOWN,
101
101
                PANEL_ICON_SHUTDOWN,
102
102
                N_("Shut Down..."),
105
105
                N_("Shut down the computer"),
106
106
                "gospanel-20",
107
107
                "ACTION:shutdown:NEW",
108
 
@@ -412,6 +429,22 @@
 
108
@@ -413,6 +430,22 @@
109
109
 }
110
110
 
111
111
 G_CONST_RETURN char*
128
128
 panel_action_get_tooltip (PanelActionButtonType type)
129
129
 {
130
130
        g_return_val_if_fail (type > PANEL_ACTION_NONE && type < PANEL_ACTION_LAST, NULL);
131
 
diff -Nur gnome-panel-2.19.2/gnome-panel/panel-action-button.h gnome-panel-2.19.2.new/gnome-panel/panel-action-button.h
132
 
--- gnome-panel-2.19.2/gnome-panel/panel-action-button.h        2007-05-14 21:53:01.000000000 +0200
133
 
+++ gnome-panel-2.19.2.new/gnome-panel/panel-action-button.h    2007-05-15 12:42:45.000000000 +0200
 
131
diff -Nur gnome-panel-2.20.0.1/gnome-panel/panel-action-button.h gnome-panel-2.20.0.1.new/gnome-panel/panel-action-button.h
 
132
--- gnome-panel-2.20.0.1/gnome-panel/panel-action-button.h      2007-09-18 15:56:51.000000000 +0200
 
133
+++ gnome-panel-2.20.0.1.new/gnome-panel/panel-action-button.h  2007-09-25 15:39:38.000000000 +0200
134
134
@@ -87,12 +87,14 @@
135
135
                                                 const char             *drag_string,
136
136
                                                 int                    *old_applet_idx);
152
152
 
153
153
 G_END_DECLS
154
154
 
155
 
diff -Nur gnome-panel-2.19.2/gnome-panel/panel-addto.c gnome-panel-2.19.2.new/gnome-panel/panel-addto.c
156
 
--- gnome-panel-2.19.2/gnome-panel/panel-addto.c        2007-05-14 21:53:01.000000000 +0200
157
 
+++ gnome-panel-2.19.2.new/gnome-panel/panel-addto.c    2007-05-15 12:42:45.000000000 +0200
 
155
diff -Nur gnome-panel-2.20.0.1/gnome-panel/panel-addto.c gnome-panel-2.20.0.1.new/gnome-panel/panel-addto.c
 
156
--- gnome-panel-2.20.0.1/gnome-panel/panel-addto.c      2007-09-18 15:56:51.000000000 +0200
 
157
+++ gnome-panel-2.20.0.1.new/gnome-panel/panel-addto.c  2007-09-25 15:39:38.000000000 +0200
158
158
@@ -25,119 +25,56 @@
159
159
 #include <config.h>
160
160
 #include <string.h>
1654
1654
+       gtk_adjustment_clamp_page (sw_adjustment, sw_adjustment->lower, sw_adjustment->upper);
1655
1655
+       gtk_scrolled_window_set_vadjustment (GTK_SCROLLED_WINDOW (dialog->applets_sw), sw_adjustment);
1656
1656
 }
1657
 
diff -Nur gnome-panel-2.19.2/gnome-panel/panel-addto-canvas.c gnome-panel-2.19.2.new/gnome-panel/panel-addto-canvas.c
1658
 
--- gnome-panel-2.19.2/gnome-panel/panel-addto-canvas.c 1970-01-01 01:00:00.000000000 +0100
1659
 
+++ gnome-panel-2.19.2.new/gnome-panel/panel-addto-canvas.c     2007-05-15 12:42:45.000000000 +0200
 
1657
diff -Nur gnome-panel-2.20.0.1/gnome-panel/panel-addto-canvas.c gnome-panel-2.20.0.1.new/gnome-panel/panel-addto-canvas.c
 
1658
--- gnome-panel-2.20.0.1/gnome-panel/panel-addto-canvas.c       1970-01-01 01:00:00.000000000 +0100
 
1659
+++ gnome-panel-2.20.0.1.new/gnome-panel/panel-addto-canvas.c   2007-09-25 15:39:38.000000000 +0200
1660
1660
@@ -0,0 +1,2309 @@
1661
1661
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
1662
1662
+/* Copyright (C) 2005 Carlos Garnacho
3967
3967
+
3968
3968
+       return (* GTK_WIDGET_CLASS (panel_addto_canvas_parent_class)->get_accessible) (widget);
3969
3969
+}
3970
 
diff -Nur gnome-panel-2.19.2/gnome-panel/panel-addto-canvas.h gnome-panel-2.19.2.new/gnome-panel/panel-addto-canvas.h
3971
 
--- gnome-panel-2.19.2/gnome-panel/panel-addto-canvas.h 1970-01-01 01:00:00.000000000 +0100
3972
 
+++ gnome-panel-2.19.2.new/gnome-panel/panel-addto-canvas.h     2007-05-15 12:42:45.000000000 +0200
 
3970
diff -Nur gnome-panel-2.20.0.1/gnome-panel/panel-addto-canvas.h gnome-panel-2.20.0.1.new/gnome-panel/panel-addto-canvas.h
 
3971
--- gnome-panel-2.20.0.1/gnome-panel/panel-addto-canvas.h       1970-01-01 01:00:00.000000000 +0100
 
3972
+++ gnome-panel-2.20.0.1.new/gnome-panel/panel-addto-canvas.h   2007-09-25 15:39:38.000000000 +0200
3973
3973
@@ -0,0 +1,88 @@
3974
3974
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
3975
3975
+/* Copyright (C) 2005 Carlos Garnacho
4059
4059
+G_END_DECLS
4060
4060
+
4061
4061
+#endif /* PANEL_ADDTO_CANVAS_H */
4062
 
diff -Nur gnome-panel-2.19.2/gnome-panel/panel-addto.c.orig gnome-panel-2.19.2.new/gnome-panel/panel-addto.c.orig
4063
 
--- gnome-panel-2.19.2/gnome-panel/panel-addto.c.orig   1970-01-01 01:00:00.000000000 +0100
4064
 
+++ gnome-panel-2.19.2.new/gnome-panel/panel-addto.c.orig       2007-05-15 12:42:45.000000000 +0200
4065
 
@@ -0,0 +1,1514 @@
4066
 
+/*
4067
 
+ * panel-addto.c:
4068
 
+ *
4069
 
+ * Copyright (C) 2004 Vincent Untz
4070
 
+ *
4071
 
+ * This program is free software; you can redistribute it and/or
4072
 
+ * modify it under the terms of the GNU General Public License as
4073
 
+ * published by the Free Software Foundation; either version 2 of the
4074
 
+ * License, or (at your option) any later version.
4075
 
+ *
4076
 
+ * This program is distributed in the hope that it will be useful, but
4077
 
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
4078
 
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
4079
 
+ * General Public License for more details.
4080
 
+ *
4081
 
+ * You should have received a copy of the GNU General Public License
4082
 
+ * along with this program; if not, write to the Free Software
4083
 
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
4084
 
+ * 02111-1307, USA.
4085
 
+ *
4086
 
+ * Authors:
4087
 
+ *     Vincent Untz <vincent@vuntz.net>
4088
 
+ */
4089
 
+
4090
 
+#include <config.h>
4091
 
+#include <string.h>
4092
 
+
4093
 
+#include <gmenu-tree.h>
4094
 
+
4095
 
+#include <libbonobo.h>
4096
 
+#include <libgnomecanvas/libgnomecanvas.h>
4097
 
+
4098
 
+#include "panel-addto.h"
4099
 
+#include "panel-addto-canvas.h"
4100
 
+
4101
 
+#define PANEL_ADDTO_CANVAS_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), PANEL_ADDTO_TYPE_CANVAS, PanelAddtoCanvasPrivate))
4102
 
+
4103
 
+static GQuark panel_addto_dialog_quark = 0;
4104
 
+
4105
 
+typedef struct EntryInfo {
4106
 
+  PanelAddtoCanvas *canvas;
4107
 
+  
4108
 
+  GnomeCanvasGroup     *group;
4109
 
+  GnomeCanvasItem      *text;
4110
 
+  GnomeCanvasItem      *pixbuf;
4111
 
+  GnomeCanvasItem      *highlight_pixbuf;
4112
 
+  GnomeCanvasItem      *cover;
4113
 
+  GnomeCanvasItem      *selection;
4114
 
+  
4115
 
+  double icon_height;
4116
 
+  double icon_width;
4117
 
+  double text_height;
4118
 
+  guint  launching : 1;
4119
 
+  guint  selected : 1;
4120
 
+  guint  highlighted : 1;
4121
 
+  
4122
 
+  gint n_category;
4123
 
+  gint n_entry;
4124
 
+  gint index;
4125
 
+} EntryInfo;
4126
 
4127
 
+ typedef struct CategoryInfo {
4128
 
+        GnomeCanvasGroup *group;
4129
 
+        GnomeCanvasItem  *title;
4130
 
+        GnomeCanvasItem  *line;
4131
 
+ } CategoryInfo;
4132
 
+
4133
 
+static PanelAddtoItemInfo internal_addto_items [] = {
4134
 
+
4135
 
+       { PANEL_ADDTO_MENU,
4136
 
+         PANEL_ACTION_NONE,
4137
 
+         N_("Utilities"),
4138
 
+         "Utilities",
4139
 
+         N_("Main Menu"),
4140
 
+         N_("The main GNOME menu"),
4141
 
+         PANEL_MAIN_MENU_ICON,
4142
 
+         NULL,
4143
 
+         NULL,
4144
 
+         NULL,
4145
 
+         "MENU:MAIN",
4146
 
+         TRUE },
4147
 
+
4148
 
+       { PANEL_ADDTO_MENUBAR,
4149
 
+         PANEL_ACTION_NONE,
4150
 
+         N_("Utilities"),
4151
 
+         "Utilities",
4152
 
+         N_("Menu Bar"),
4153
 
+         N_("A custom menu bar"),
4154
 
+         PANEL_GNOME_LOGO_ICON,
4155
 
+         NULL,
4156
 
+         NULL,
4157
 
+         NULL,
4158
 
+         "MENUBAR:NEW",
4159
 
+         TRUE },
4160
 
+
4161
 
+       { PANEL_ADDTO_SEPARATOR,
4162
 
+         PANEL_ACTION_NONE,
4163
 
+         N_("Utilities"),
4164
 
+         "Utilities",
4165
 
+         N_("Separator"),
4166
 
+         N_("A separator to organize the panel items"),
4167
 
+         PANEL_SEPARATOR_ICON,
4168
 
+         NULL,
4169
 
+         NULL,
4170
 
+         NULL,
4171
 
+         "SEPARATOR:NEW",
4172
 
+         TRUE },
4173
 
+
4174
 
+       { PANEL_ADDTO_DRAWER,
4175
 
+         PANEL_ACTION_NONE,
4176
 
+         N_("Desktop &amp; Windows"),
4177
 
+         "Desktop &amp; Windows",
4178
 
+         N_("Drawer"),
4179
 
+         N_("A pop out drawer to store other items in"),
4180
 
+         PANEL_DRAWER_ICON,
4181
 
+         NULL,
4182
 
+         NULL,
4183
 
+         NULL,
4184
 
+         "DRAWER:NEW",
4185
 
+         TRUE }
4186
 
+};
4187
 
+
4188
 
+static const char applet_requirements [] =
4189
 
+       "has_all (repo_ids, ['IDL:Bonobo/Control:1.0',"
4190
 
+       "                    'IDL:GNOME/Vertigo/PanelAppletShell:1.0']) && "
4191
 
+       "defined (panel:icon)";
4192
 
+
4193
 
+static char *applet_sort_criteria [] = {
4194
 
+       "name",
4195
 
+       NULL
4196
 
+       };
4197
 
+
4198
 
+enum {
4199
 
+       COLUMN_ICON,
4200
 
+       COLUMN_TEXT,
4201
 
+       COLUMN_DATA,
4202
 
+       COLUMN_SEARCH,
4203
 
+       NUMBER_COLUMNS
4204
 
+};
4205
 
+
4206
 
+enum {
4207
 
+       PANEL_ADDTO_RESPONSE_BACK,
4208
 
+       PANEL_ADDTO_RESPONSE_ADD
4209
 
+};
4210
 
+
4211
 
+static void panel_addto_present_applications (PanelAddtoDialog *dialog);
4212
 
+static void panel_addto_present_applets      (PanelAddtoDialog *dialog);
4213
 
+static void panel_addto_init_categories      (PanelAddtoDialog *dialog);
4214
 
+
4215
 
+static int
4216
 
+panel_addto_applet_info_sort_func (PanelAddtoItemInfo *a,
4217
 
+                                  PanelAddtoItemInfo *b)
4218
 
+{
4219
 
+       return g_utf8_collate (a->name, b->name);
4220
 
+}
4221
 
+
4222
 
+static GSList *
4223
 
+panel_addto_prepend_internal_applets (GSList *list)
4224
 
+{
4225
 
+       static gboolean translated = FALSE;
4226
 
+       int             i;
4227
 
+
4228
 
+       for (i = 0; i < G_N_ELEMENTS (internal_addto_items); i++) {
4229
 
+               if (!translated) {
4230
 
+                       internal_addto_items [i].name        = _(internal_addto_items [i].name);
4231
 
+                       internal_addto_items [i].description = _(internal_addto_items [i].description);
4232
 
+                       internal_addto_items [i].category    = _(internal_addto_items [i].category);
4233
 
+               }
4234
 
+
4235
 
+                list = g_slist_prepend (list, &internal_addto_items [i]);
4236
 
+        }
4237
 
+
4238
 
+       translated = TRUE;
4239
 
+
4240
 
+       for (i = PANEL_ACTION_LOCK; i < PANEL_ACTION_LAST; i++) {
4241
 
+               PanelAddtoItemInfo *info;
4242
 
+
4243
 
+               if (panel_action_get_is_disabled (i))
4244
 
+                       continue;
4245
 
+
4246
 
+               info                   = g_new0 (PanelAddtoItemInfo, 1);
4247
 
+               info->type             = PANEL_ADDTO_ACTION;
4248
 
+               info->action_type      = i;
4249
 
+               info->name             = g_strdup (panel_action_get_text (i));
4250
 
+               info->description      = g_strdup (panel_action_get_tooltip (i));
4251
 
+               info->category         = g_strdup (panel_action_get_category (i));
4252
 
+               info->english_category = g_strdup (panel_action_get_english_category (i));
4253
 
+               info->icon             = g_strdup (panel_action_get_icon_name (i));
4254
 
+               info->iid              = g_strdup (panel_action_get_drag_id (i));
4255
 
+               info->static_data      = FALSE;
4256
 
+
4257
 
+               list = g_slist_prepend (list, info);
4258
 
+       }
4259
 
+
4260
 
+        return list;
4261
 
+}
4262
 
+
4263
 
+static char *
4264
 
+panel_addto_make_text (const char *name,
4265
 
+                      const char *desc)
4266
 
+{
4267
 
+       const char *real_name;
4268
 
+       char       *result; 
4269
 
+
4270
 
+       real_name = name ? name : _("(empty)");
4271
 
+
4272
 
+       if (!string_empty (desc)) {
4273
 
+               result = g_markup_printf_escaped ("<span weight=\"bold\">%s</span>\n%s",
4274
 
+                                                 real_name, desc);
4275
 
+       } else {
4276
 
+               result = g_markup_printf_escaped ("<span weight=\"bold\">%s</span>",
4277
 
+                                                 real_name);
4278
 
+       }
4279
 
+
4280
 
+       return result;
4281
 
+}
4282
 
+
4283
 
+#define ICON_SIZE 32
4284
 
+#define LAUNCHER_ICON_SIZE 20
4285
 
+
4286
 
+static GdkPixbuf *
4287
 
+panel_addto_make_pixbuf (const char *filename)
4288
 
+{
4289
 
+       //FIXME: size shouldn't be fixed but should depend on the font size
4290
 
+       return panel_load_icon (gtk_icon_theme_get_default (),
4291
 
+                               filename,
4292
 
+                               ICON_SIZE, ICON_SIZE, ICON_SIZE,
4293
 
+                               NULL);
4294
 
+}
4295
 
+
4296
 
+static GdkPixbuf *
4297
 
+panel_addto_make_pixbuf_for_launcher (const char *filename)
4298
 
+{
4299
 
+       //FIXME: size shouldn't be fixed but should depend on the font size
4300
 
+       return panel_load_icon (gtk_icon_theme_get_default (),
4301
 
+                               filename,
4302
 
+                               LAUNCHER_ICON_SIZE, LAUNCHER_ICON_SIZE, LAUNCHER_ICON_SIZE,
4303
 
+                               NULL);
4304
 
+}
4305
 
+
4306
 
+static void  
4307
 
+panel_addto_applications_drag_data_get_cb (GtkWidget        *widget,
4308
 
+                             GdkDragContext   *context,
4309
 
+                             GtkSelectionData *selection_data,
4310
 
+                             guint             info,
4311
 
+                             guint             time,
4312
 
+                             const char       *string)
4313
 
+{
4314
 
+       gtk_selection_data_set (selection_data,
4315
 
+                               selection_data->target, 8, (guchar *) string,
4316
 
+                               strlen (string));
4317
 
+}
4318
 
+
4319
 
+static void
4320
 
+panel_addto_applications_drag_begin_cb (GtkWidget      *widget,
4321
 
+                          GdkDragContext *context,
4322
 
+                          gpointer        data)
4323
 
+{
4324
 
+       GtkTreeModel *model;
4325
 
+       GtkTreePath  *path;
4326
 
+       GtkTreeIter   iter;
4327
 
+       GdkPixbuf    *pixbuf;
4328
 
+
4329
 
+       model = gtk_tree_view_get_model (GTK_TREE_VIEW (widget));
4330
 
+          
4331
 
+       gtk_tree_view_get_cursor (GTK_TREE_VIEW (widget), &path, NULL);
4332
 
+       gtk_tree_model_get_iter (model, &iter, path);
4333
 
+       gtk_tree_path_free (path);
4334
 
+
4335
 
+       gtk_tree_model_get (model, &iter,
4336
 
+                           COLUMN_ICON, &pixbuf,
4337
 
+                           -1);
4338
 
+
4339
 
+       gtk_drag_set_icon_pixbuf (context, pixbuf, 0, 0);
4340
 
+       g_object_unref (pixbuf);
4341
 
+}
4342
 
+
4343
 
+static void
4344
 
+panel_addto_applications_setup_drag (GtkTreeView          *tree_view,
4345
 
+                       const GtkTargetEntry *target,
4346
 
+                       const char           *text)
4347
 
+{
4348
 
+       if (!text || panel_lockdown_get_locked_down ())
4349
 
+               return;
4350
 
+       
4351
 
+       gtk_tree_view_enable_model_drag_source (GTK_TREE_VIEW (tree_view),
4352
 
+                                               GDK_BUTTON1_MASK|GDK_BUTTON2_MASK,
4353
 
+                                               target, 1, GDK_ACTION_COPY);
4354
 
+       
4355
 
+       g_signal_connect_data (G_OBJECT (tree_view), "drag_data_get",
4356
 
+                              G_CALLBACK (panel_addto_applications_drag_data_get_cb),
4357
 
+                              g_strdup (text),
4358
 
+                              (GClosureNotify) g_free,
4359
 
+                              0 /* connect_flags */);
4360
 
+       g_signal_connect_after (G_OBJECT (tree_view), "drag-begin",
4361
 
+                               G_CALLBACK (panel_addto_applications_drag_begin_cb),
4362
 
+                               NULL);
4363
 
+}
4364
 
+
4365
 
+static void
4366
 
+panel_addto_applications_setup_launcher_drag (GtkTreeView *tree_view,
4367
 
+                                const char  *uri)
4368
 
+{
4369
 
+        static GtkTargetEntry target[] = {
4370
 
+               { "text/uri-list", 0, 0 }
4371
 
+       };
4372
 
+       char *uri_list;
4373
 
+
4374
 
+       uri_list = g_strconcat (uri, "\r\n", NULL);
4375
 
+       panel_addto_applications_setup_drag (tree_view, target, uri_list);
4376
 
+       g_free (uri_list);
4377
 
+}
4378
 
+
4379
 
+static void
4380
 
+panel_addto_applications_setup_internal_applet_drag (GtkTreeView *tree_view,
4381
 
+                                       const char  *applet_type)
4382
 
+{
4383
 
+       static GtkTargetEntry target[] = {
4384
 
+               { "application/x-panel-applet-internal", 0, 0 }
4385
 
+       };
4386
 
+
4387
 
+       panel_addto_applications_setup_drag (tree_view, target, applet_type);
4388
 
+}
4389
 
+
4390
 
+static GSList *
4391
 
+panel_addto_query_applets (GSList *list)
4392
 
+{
4393
 
+       Bonobo_ServerInfoList *applet_list;
4394
 
+       CORBA_Environment   env;
4395
 
+       const char * const *langs;
4396
 
+       GSList             *langs_gslist;
4397
 
+       int                 i;
4398
 
+
4399
 
+       CORBA_exception_init (&env);
4400
 
+
4401
 
+       applet_list = bonobo_activation_query (applet_requirements,
4402
 
+                                              applet_sort_criteria,
4403
 
+                                              &env);
4404
 
+       if (BONOBO_EX (&env)) {
4405
 
+               g_warning (_("query returned exception %s\n"),
4406
 
+                          BONOBO_EX_REPOID (&env));
4407
 
+
4408
 
+               CORBA_exception_free (&env);
4409
 
+               CORBA_free (applet_list);
4410
 
+
4411
 
+               return NULL;
4412
 
+       }
4413
 
+
4414
 
+       CORBA_exception_free (&env);
4415
 
+
4416
 
+       langs = g_get_language_names ();
4417
 
+
4418
 
+       langs_gslist = NULL;
4419
 
+       for (i = 0; langs[i]; i++)
4420
 
+               langs_gslist = g_slist_prepend (langs_gslist, (char *) langs[i]);
4421
 
+
4422
 
+       langs_gslist = g_slist_reverse (langs_gslist);
4423
 
+
4424
 
+       for (i = 0; i < applet_list->_length; i++) {
4425
 
+               Bonobo_ServerInfo *info;
4426
 
+               const char *name, *description, *category, *english_category, *icon;
4427
 
+               PanelAddtoItemInfo *applet;
4428
 
+
4429
 
+               info = &applet_list->_buffer[i];
4430
 
+
4431
 
+               name = bonobo_server_info_prop_lookup             (info,
4432
 
+                                                                  "name",
4433
 
+                                                                  langs_gslist);
4434
 
+               description = bonobo_server_info_prop_lookup      (info,
4435
 
+                                                                  "description",
4436
 
+                                                                  langs_gslist);
4437
 
+               category = bonobo_server_info_prop_lookup         (info,
4438
 
+                                                                  "panel:category",
4439
 
+                                                                  langs_gslist);
4440
 
+               english_category = bonobo_server_info_prop_lookup (info,
4441
 
+                                                                  "panel:category",
4442
 
+                                                                  NULL);
4443
 
+               icon = bonobo_server_info_prop_lookup             (info,
4444
 
+                                                                  "panel:icon",
4445
 
+                                                                  NULL);
4446
 
+
4447
 
+               if (!name ||
4448
 
+                   panel_lockdown_is_applet_disabled (info->iid)) {
4449
 
+                       continue;
4450
 
+               }
4451
 
+
4452
 
+               applet = g_new0 (PanelAddtoItemInfo, 1);
4453
 
+               applet->type = PANEL_ADDTO_APPLET;
4454
 
+               applet->name = g_strdup (name);
4455
 
+               applet->description = g_strdup (description);
4456
 
+               applet->icon = g_strdup (icon);
4457
 
+               applet->iid = g_strdup (info->iid);
4458
 
+               applet->static_data = FALSE;
4459
 
+               if (!category) {
4460
 
+                       applet->category = g_strdup_printf (_("Miscellaneous"));                        
4461
 
+                       applet->english_category = g_strdup_printf ("Miscellaneous");                   
4462
 
+               } else {
4463
 
+                       applet->category = g_markup_escape_text (category, -1);
4464
 
+                       applet->english_category = g_markup_escape_text (english_category, -1);
4465
 
+               }
4466
 
+               list = g_slist_prepend (list, applet);
4467
 
+       }
4468
 
+
4469
 
+       g_slist_free (langs_gslist);
4470
 
+       CORBA_free (applet_list);
4471
 
+
4472
 
+       return list;
4473
 
+}
4474
 
+
4475
 
+static void
4476
 
+panel_addto_append_item (PanelAddtoDialog *dialog,
4477
 
+                        GtkListStore *model,
4478
 
+                        PanelAddtoItemInfo *applet)
4479
 
+{
4480
 
+       char *text;
4481
 
+       GdkPixbuf *pixbuf;
4482
 
+       GtkTreeIter iter;
4483
 
+
4484
 
+       if (applet == NULL) {
4485
 
+               gtk_list_store_append (model, &iter);
4486
 
+               gtk_list_store_set (model, &iter,
4487
 
+                                   COLUMN_ICON, NULL,
4488
 
+                                   COLUMN_TEXT, NULL,
4489
 
+                                   COLUMN_DATA, NULL,
4490
 
+                                   COLUMN_SEARCH, NULL,
4491
 
+                                   -1);
4492
 
+       } else {
4493
 
+               pixbuf = NULL;
4494
 
+
4495
 
+               if (applet->icon != NULL) {
4496
 
+                       pixbuf = panel_addto_make_pixbuf (applet->icon);
4497
 
+               }
4498
 
+
4499
 
+               gtk_list_store_append (model, &iter);
4500
 
+
4501
 
+               text = panel_addto_make_text (applet->name,
4502
 
+                                             applet->description);
4503
 
+
4504
 
+               gtk_list_store_set (model, &iter,
4505
 
+                                   COLUMN_ICON, pixbuf,
4506
 
+                                   COLUMN_TEXT, text,
4507
 
+                                   COLUMN_DATA, applet,
4508
 
+                                   COLUMN_SEARCH, applet->name,
4509
 
+                                   -1);
4510
 
+
4511
 
+               if (pixbuf)
4512
 
+                       g_object_unref (pixbuf);
4513
 
+
4514
 
+               g_free (text);
4515
 
+       }
4516
 
+}
4517
 
+
4518
 
+static GtkTreeModel *
4519
 
+panel_addto_make_applet_model (PanelAddtoDialog *dialog)
4520
 
+{
4521
 
+       GtkListStore *model;
4522
 
+       GSList       *l;
4523
 
+
4524
 
+       if (panel_profile_id_lists_are_writable ()) {
4525
 
+               dialog->applet_list = panel_addto_query_applets (dialog->applet_list);
4526
 
+               dialog->applet_list = panel_addto_prepend_internal_applets (dialog->applet_list);
4527
 
+       }
4528
 
+
4529
 
+       dialog->applet_list = g_slist_sort (dialog->applet_list,
4530
 
+                                           (GCompareFunc) panel_addto_applet_info_sort_func);
4531
 
+
4532
 
+       model = gtk_list_store_new (NUMBER_COLUMNS,
4533
 
+                                   GDK_TYPE_PIXBUF,
4534
 
+                                   G_TYPE_STRING,
4535
 
+                                   G_TYPE_POINTER,
4536
 
+                                   G_TYPE_STRING);
4537
 
+
4538
 
+       if (panel_profile_id_lists_are_writable () && dialog->applet_list) {
4539
 
+                       panel_addto_append_item (dialog, model, NULL);
4540
 
+       }
4541
 
+
4542
 
+       for (l = dialog->applet_list; l; l = l->next)
4543
 
+               panel_addto_append_item (dialog, model, l->data);
4544
 
+
4545
 
+       return (GtkTreeModel *) model;
4546
 
+}
4547
 
+
4548
 
+static void panel_addto_make_application_list (GSList             **parent_list,
4549
 
+                                              GMenuTreeDirectory  *directory,
4550
 
+                                              const char          *filename);
4551
 
+
4552
 
+static void
4553
 
+panel_addto_prepend_directory (GSList             **parent_list,
4554
 
+                              GMenuTreeDirectory  *directory,
4555
 
+                              const char          *filename)
4556
 
+{
4557
 
+       PanelAddtoAppList *data;
4558
 
+
4559
 
+       data = g_new0 (PanelAddtoAppList, 1);
4560
 
+
4561
 
+       data->item_info.type          = PANEL_ADDTO_MENU;
4562
 
+       data->item_info.name          = g_strdup (gmenu_tree_directory_get_name (directory));
4563
 
+       data->item_info.description   = g_strdup (gmenu_tree_directory_get_comment (directory));
4564
 
+       data->item_info.icon          = g_strdup (gmenu_tree_directory_get_icon (directory));
4565
 
+       data->item_info.menu_filename = g_strdup (filename);
4566
 
+       data->item_info.menu_path     = gmenu_tree_directory_make_path (directory, NULL);
4567
 
+       data->item_info.static_data   = FALSE;
4568
 
+
4569
 
+       /* We should set the iid here to something and do
4570
 
+        * iid = g_strdup_printf ("MENU:%s", tfr->name)
4571
 
+        * but this means we'd have to free the iid later
4572
 
+        * and this would complexify too much the free
4573
 
+        * function.
4574
 
+        * So the iid is built when we select the row.
4575
 
+        */
4576
 
+
4577
 
+       *parent_list = g_slist_prepend (*parent_list, data);
4578
 
+                       
4579
 
+       panel_addto_make_application_list (&data->children, directory, filename);
4580
 
+}
4581
 
+
4582
 
+static void
4583
 
+panel_addto_prepend_entry (GSList         **parent_list,
4584
 
+                          GMenuTreeEntry  *entry,
4585
 
+                          const char      *filename)
4586
 
+{
4587
 
+       PanelAddtoAppList *data;
4588
 
+
4589
 
+       data = g_new0 (PanelAddtoAppList, 1);
4590
 
+
4591
 
+       data->item_info.type          = PANEL_ADDTO_LAUNCHER;
4592
 
+       data->item_info.name          = g_strdup (gmenu_tree_entry_get_name (entry));
4593
 
+       data->item_info.description   = g_strdup (gmenu_tree_entry_get_comment (entry));
4594
 
+       data->item_info.icon          = g_strdup (gmenu_tree_entry_get_icon (entry));
4595
 
+       data->item_info.launcher_path = g_strdup (gmenu_tree_entry_get_desktop_file_path (entry));
4596
 
+       data->item_info.static_data   = FALSE;
4597
 
+
4598
 
+       *parent_list = g_slist_prepend (*parent_list, data);
4599
 
+}
4600
 
+
4601
 
+static void
4602
 
+panel_addto_prepend_alias (GSList         **parent_list,
4603
 
+                          GMenuTreeAlias  *alias,
4604
 
+                          const char      *filename)
4605
 
+{
4606
 
+       GMenuTreeItem *aliased_item;
4607
 
+
4608
 
+       aliased_item = gmenu_tree_alias_get_item (alias);
4609
 
+
4610
 
+       switch (gmenu_tree_item_get_type (aliased_item)) {
4611
 
+       case GMENU_TREE_ITEM_DIRECTORY:
4612
 
+               panel_addto_prepend_directory (parent_list,
4613
 
+                                              GMENU_TREE_DIRECTORY (aliased_item),
4614
 
+                                              filename);
4615
 
+               break;
4616
 
+
4617
 
+       case GMENU_TREE_ITEM_ENTRY:
4618
 
+               panel_addto_prepend_entry (parent_list,
4619
 
+                                          GMENU_TREE_ENTRY (aliased_item),
4620
 
+                                          filename);
4621
 
+               break;
4622
 
+
4623
 
+       default:
4624
 
+               break;
4625
 
+       }
4626
 
+
4627
 
+       gmenu_tree_item_unref (aliased_item);
4628
 
+}
4629
 
+
4630
 
+static void
4631
 
+panel_addto_make_application_list (GSList             **parent_list,
4632
 
+                                  GMenuTreeDirectory  *directory,
4633
 
+                                  const char          *filename)
4634
 
+{
4635
 
+       GSList *items;
4636
 
+       GSList *l;
4637
 
+
4638
 
+       items = gmenu_tree_directory_get_contents (directory);
4639
 
+
4640
 
+       for (l = items; l; l = l->next) {
4641
 
+               switch (gmenu_tree_item_get_type (l->data)) {
4642
 
+               case GMENU_TREE_ITEM_DIRECTORY:
4643
 
+                       panel_addto_prepend_directory (parent_list, l->data, filename);
4644
 
+                       break;
4645
 
+
4646
 
+               case GMENU_TREE_ITEM_ENTRY:
4647
 
+                       panel_addto_prepend_entry (parent_list, l->data, filename);
4648
 
+                       break;
4649
 
+
4650
 
+               case GMENU_TREE_ITEM_ALIAS:
4651
 
+                       panel_addto_prepend_alias (parent_list, l->data, filename);
4652
 
+                       break;
4653
 
+
4654
 
+               default:
4655
 
+                       break;
4656
 
+               }
4657
 
+
4658
 
+               gmenu_tree_item_unref (l->data);
4659
 
+       }
4660
 
+
4661
 
+       g_slist_free (items);
4662
 
+
4663
 
+       *parent_list = g_slist_reverse (*parent_list);
4664
 
+}
4665
 
+
4666
 
+static void
4667
 
+panel_addto_populate_application_model (GtkTreeStore *store,
4668
 
+                                       GtkTreeIter  *parent,
4669
 
+                                       GSList       *app_list)
4670
 
+{
4671
 
+       PanelAddtoAppList *data;
4672
 
+       GtkTreeIter        iter;
4673
 
+       char              *text;
4674
 
+       GdkPixbuf         *pixbuf;
4675
 
+       GSList            *app;
4676
 
+
4677
 
+       for (app = app_list; app != NULL; app = app->next) {
4678
 
+               data = app->data;
4679
 
+               gtk_tree_store_append (store, &iter, parent);
4680
 
+
4681
 
+               text = panel_addto_make_text (data->item_info.name,
4682
 
+                                             data->item_info.description);
4683
 
+               pixbuf = panel_addto_make_pixbuf (data->item_info.icon);
4684
 
+               gtk_tree_store_set (store, &iter,
4685
 
+                                   COLUMN_ICON, pixbuf,
4686
 
+                                   COLUMN_TEXT, text,
4687
 
+                                   COLUMN_DATA, &(data->item_info),
4688
 
+                                   COLUMN_SEARCH, data->item_info.name,
4689
 
+                                   -1);
4690
 
+
4691
 
+               if (pixbuf)
4692
 
+                       g_object_unref (pixbuf);
4693
 
+
4694
 
+               g_free (text);
4695
 
+
4696
 
+               if (data->children != NULL) 
4697
 
+                       panel_addto_populate_application_model (store,
4698
 
+                                                               &iter,
4699
 
+                                                               data->children);
4700
 
+       }
4701
 
+}
4702
 
+
4703
 
+static GtkTreeModel *
4704
 
+panel_addto_make_application_model (PanelAddtoDialog *dialog)
4705
 
+{
4706
 
+       GtkTreeStore      *store;
4707
 
+       GMenuTree          *tree;
4708
 
+       GMenuTreeDirectory *root;
4709
 
+
4710
 
+       store = gtk_tree_store_new (NUMBER_COLUMNS,
4711
 
+                                   GDK_TYPE_PIXBUF,
4712
 
+                                   G_TYPE_STRING,
4713
 
+                                   G_TYPE_POINTER,
4714
 
+                                   G_TYPE_STRING);
4715
 
+
4716
 
+       tree = gmenu_tree_lookup ("applications.menu", GMENU_TREE_FLAGS_NONE);
4717
 
+
4718
 
+       if ((root = gmenu_tree_get_root_directory (tree))) {
4719
 
+               panel_addto_make_application_list (&dialog->application_list,
4720
 
+                                                  root, "applications.menu");
4721
 
+               panel_addto_populate_application_model (store, NULL, dialog->application_list);
4722
 
+
4723
 
+               gmenu_tree_item_unref (root);
4724
 
+       }
4725
 
+
4726
 
+       gmenu_tree_unref (tree);
4727
 
+
4728
 
+       tree = gmenu_tree_lookup ("settings.menu", GMENU_TREE_FLAGS_NONE);
4729
 
+
4730
 
+       if ((root = gmenu_tree_get_root_directory (tree))) {
4731
 
+               GtkTreeIter iter;
4732
 
+
4733
 
+               gtk_tree_store_append (store, &iter, NULL);
4734
 
+               gtk_tree_store_set (store, &iter,
4735
 
+                                   COLUMN_ICON, NULL,
4736
 
+                                   COLUMN_TEXT, NULL,
4737
 
+                                   COLUMN_DATA, NULL,
4738
 
+                                   COLUMN_SEARCH, NULL,
4739
 
+                                   -1);
4740
 
+
4741
 
+               panel_addto_make_application_list (&dialog->settings_list,
4742
 
+                                                  root, "settings.menu");
4743
 
+               panel_addto_populate_application_model (store, NULL,
4744
 
+                                                       dialog->settings_list);
4745
 
+
4746
 
+               gmenu_tree_item_unref (root);
4747
 
+       }
4748
 
+
4749
 
+       gmenu_tree_unref (tree);
4750
 
+
4751
 
+       return GTK_TREE_MODEL (store);
4752
 
+}
4753
 
+
4754
 
+gboolean
4755
 
+panel_addto_add_item (PanelAddtoDialog   *dialog,
4756
 
+                     PanelAddtoItemInfo *item_info)
4757
 
+{
4758
 
+       gboolean destroy;
4759
 
+       
4760
 
+       g_assert (item_info != NULL);
4761
 
+
4762
 
+       destroy = TRUE;
4763
 
+
4764
 
+       switch (item_info->type) {
4765
 
+       case PANEL_ADDTO_APPLET:
4766
 
+               panel_applet_frame_create (dialog->panel_widget->toplevel,
4767
 
+                                          dialog->insertion_position,
4768
 
+                                          item_info->iid);
4769
 
+               break;
4770
 
+       case PANEL_ADDTO_ACTION:
4771
 
+               panel_action_button_create (dialog->panel_widget->toplevel,
4772
 
+                                           dialog->insertion_position,
4773
 
+                                           item_info->action_type);
4774
 
+               break;
4775
 
+       case PANEL_ADDTO_LAUNCHER_MENU:
4776
 
+               panel_addto_present_applications (dialog);
4777
 
+               destroy = FALSE;
4778
 
+               break;
4779
 
+       case PANEL_ADDTO_LAUNCHER:
4780
 
+               panel_launcher_create (dialog->panel_widget->toplevel,
4781
 
+                                      dialog->insertion_position,
4782
 
+                                      item_info->launcher_path);
4783
 
+               break;
4784
 
+       case PANEL_ADDTO_LAUNCHER_NEW:
4785
 
+               ask_about_launcher (NULL, dialog->panel_widget,
4786
 
+                                   dialog->insertion_position, FALSE);
4787
 
+               break;
4788
 
+       case PANEL_ADDTO_MENU:
4789
 
+               panel_menu_button_create (dialog->panel_widget->toplevel,
4790
 
+                                         dialog->insertion_position,
4791
 
+                                         item_info->menu_filename,
4792
 
+                                         item_info->menu_path,
4793
 
+                                         item_info->menu_path != NULL,
4794
 
+                                         item_info->name);
4795
 
+               break;
4796
 
+       case PANEL_ADDTO_MENUBAR:
4797
 
+               panel_menu_bar_create (dialog->panel_widget->toplevel,
4798
 
+                                      dialog->insertion_position);
4799
 
+               break;
4800
 
+       case PANEL_ADDTO_SEPARATOR:
4801
 
+               panel_separator_create (dialog->panel_widget->toplevel,
4802
 
+                                       dialog->insertion_position);
4803
 
+               break;
4804
 
+       case PANEL_ADDTO_DRAWER:
4805
 
+               panel_drawer_create (dialog->panel_widget->toplevel,
4806
 
+                                    dialog->insertion_position,
4807
 
+                                    NULL, FALSE, NULL);
4808
 
+               break;
4809
 
+       }
4810
 
+
4811
 
+       return destroy;
4812
 
+}
4813
 
+
4814
 
+void
4815
 
+panel_addto_dialog_response (GtkWidget *widget_dialog,
4816
 
+                            guint response_id,
4817
 
+                            PanelAddtoDialog *dialog)
4818
 
+{
4819
 
+       PanelAddtoItemInfo      *data;
4820
 
+       PanelAddtoCanvasPrivate *priv;
4821
 
+       PanelAddtoEntry         *selected_applet;
4822
 
+        GtkTreeSelection        *selected_application;
4823
 
+       GtkTreeModel            *model;
4824
 
+       GtkTreeIter              iter;
4825
 
+
4826
 
+       switch (response_id) {
4827
 
+       case GTK_RESPONSE_HELP:
4828
 
+               panel_show_help (gtk_window_get_screen (GTK_WINDOW (dialog->addto_dialog)),
4829
 
+                                "user-guide.xml", "gospanel-15");
4830
 
+               break;
4831
 
+
4832
 
+       case PANEL_ADDTO_RESPONSE_ADD:
4833
 
+
4834
 
+                if (dialog->status == APPLETS) {
4835
 
+                        priv = PANEL_ADDTO_CANVAS_GET_PRIVATE (dialog->canvas);
4836
 
+                        selected_applet = priv->selected;
4837
 
+                        data = selected_applet->item_info;
4838
 
+                        if (data) {
4839
 
+                               panel_addto_add_item (dialog, data);
4840
 
+                       }
4841
 
+                } else if (dialog->status == APPLICATIONS) {
4842
 
+                        selected_application = gtk_tree_view_get_selection (GTK_TREE_VIEW (dialog->tree_view));
4843
 
+                        if (gtk_tree_selection_get_selected (selected_application,
4844
 
+                                                             &model, &iter)) {
4845
 
+                                gtk_tree_model_get (model, &iter,
4846
 
+                                                    COLUMN_DATA, &data, -1);
4847
 
+
4848
 
+                                if (data != NULL) {
4849
 
+                                        panel_addto_add_item (dialog, data);
4850
 
+                                }
4851
 
+                        }
4852
 
+                }
4853
 
+
4854
 
+               break;
4855
 
+
4856
 
+
4857
 
+       case PANEL_ADDTO_RESPONSE_BACK:
4858
 
+               /* This response only happens when we're showing the
4859
 
+                * application list and the user wants to go back to the
4860
 
+                * applet list. */
4861
 
+               gtk_widget_hide (dialog->applications_sw);
4862
 
+                dialog->status = APPLETS;
4863
 
+                panel_addto_present_applets (dialog);
4864
 
+                gtk_widget_show_all  (dialog->applets_sw);
4865
 
+                gtk_widget_show (dialog->statuslabel);
4866
 
+                gtk_widget_show (dialog->search_entry);
4867
 
+                gtk_widget_show (dialog->search_label);
4868
 
+               gtk_widget_set_sensitive (dialog->launcher_button, TRUE);
4869
 
+               if (!panel_lockdown_get_disable_command_line ())
4870
 
+                 gtk_widget_set_sensitive (dialog->custom_launcher_button, TRUE);
4871
 
+               break;
4872
 
+
4873
 
+       case GTK_RESPONSE_CLOSE:
4874
 
+               gtk_widget_destroy (widget_dialog);
4875
 
+               break;
4876
 
+
4877
 
+       default:
4878
 
+               break;
4879
 
+       }
4880
 
+}
4881
 
+
4882
 
+static void
4883
 
+panel_addto_add_launcher (PanelAddtoDialog *dialog)
4884
 
+{
4885
 
+  PanelAddtoEntry         *launcher_applet;
4886
 
+  PanelAddtoItemInfo      *data;
4887
 
+
4888
 
+  launcher_applet = g_new (PanelAddtoEntry, 1);
4889
 
+  data = launcher_applet->item_info;
4890
 
+  data = g_new (PanelAddtoItemInfo, 1);
4891
 
+  data->type = PANEL_ADDTO_LAUNCHER_MENU;
4892
 
+
4893
 
+  panel_addto_add_item (dialog, data);
4894
 
+
4895
 
+  g_free (launcher_applet);
4896
 
+  g_free (data);
4897
 
+}
4898
 
+
4899
 
+static void
4900
 
+panel_addto_add_custom_launcher (PanelAddtoDialog *dialog)
4901
 
+{
4902
 
+  PanelAddtoEntry         *launcher_applet;
4903
 
+  PanelAddtoItemInfo      *data;
4904
 
+
4905
 
+  launcher_applet = g_new (PanelAddtoEntry, 1);
4906
 
+  data = launcher_applet->item_info;
4907
 
+  data = g_new (PanelAddtoItemInfo, 1);
4908
 
+  data->type = PANEL_ADDTO_LAUNCHER_NEW;
4909
 
+
4910
 
+  panel_addto_add_item (dialog, data);
4911
 
+
4912
 
+  g_free (launcher_applet);
4913
 
+  g_free (data);
4914
 
+}
4915
 
+
4916
 
+static void
4917
 
+panel_addto_dialog_destroy (GtkWidget *widget_dialog,
4918
 
+                           PanelAddtoDialog *dialog)
4919
 
+{
4920
 
+       panel_toplevel_pop_autohide_disabler (PANEL_TOPLEVEL (dialog->panel_widget->toplevel));
4921
 
+       g_object_set_qdata (G_OBJECT (dialog->panel_widget->toplevel),
4922
 
+                           panel_addto_dialog_quark,
4923
 
+                           NULL);
4924
 
+}
4925
 
+
4926
 
+
4927
 
+static PanelAddtoCategory *
4928
 
+panel_addto_category_new (const gchar *title,
4929
 
+                         const gchar *english_title,
4930
 
+                          gboolean     real_category)
4931
 
+{
4932
 
+       PanelAddtoCategory *retval;
4933
 
+       retval = g_new0 (PanelAddtoCategory, 1);
4934
 
+
4935
 
+       retval->title = g_strdup (title);
4936
 
+       retval->english_title = g_strdup (english_title);
4937
 
+       retval->real_category = real_category != FALSE;
4938
 
+       retval->entries = NULL;  /* We will populate it in init_categories */
4939
 
+
4940
 
+       return retval;
4941
 
+}
4942
 
+
4943
 
+static int
4944
 
+compare_categories (PanelAddtoCategory *a,
4945
 
+                   PanelAddtoCategory *b)
4946
 
+{
4947
 
+       return g_utf8_collate (a->title, b->title);
4948
 
+}
4949
 
+
4950
 
+static void
4951
 
+panel_addto_init_categories (PanelAddtoDialog *dialog)
4952
 
+{
4953
 
+       PanelAddtoInformation *info;
4954
 
+       PanelAddtoItemInfo    *applet;
4955
 
+       PanelAddtoEntry       *entry;
4956
 
+       PanelAddtoCategory    *current_category;
4957
 
+       GSList                *categories = NULL;
4958
 
+       GSList                *l, *m;
4959
 
+       gchar                 *category_title, *category_english_title;
4960
 
+       gboolean               found;
4961
 
+
4962
 
+       info = g_new0 (PanelAddtoInformation, 1);
4963
 
+
4964
 
+       for (l = dialog->applet_list; l; l = l->next) {
4965
 
+                applet = l->data;
4966
 
+               category_title = g_strdup (applet->category);
4967
 
+               category_english_title = g_strdup (applet->english_category);
4968
 
+               found = FALSE;
4969
 
+               for (m = categories; m; m = m->next) {
4970
 
+                       current_category = m->data;
4971
 
+                       if (!g_utf8_collate (current_category->english_title, category_english_title)) {
4972
 
+                               found = TRUE;
4973
 
+                               current_category->n_entries++;
4974
 
+                               if (!current_category->translated && strcmp (category_title, category_english_title)) {
4975
 
+                                       current_category->title = category_title;
4976
 
+                                       current_category->translated = TRUE;
4977
 
+                               }
4978
 
+                               break;
4979
 
+                       }
4980
 
+               }
4981
 
+               if (!found) {
4982
 
+                       categories = g_slist_prepend (categories,
4983
 
+                                                     panel_addto_category_new (category_title, category_english_title, TRUE));
4984
 
+                       current_category = categories->data;
4985
 
+                       current_category->translated = strcmp (category_title, category_english_title) ? TRUE : FALSE;
4986
 
+                       current_category->n_entries = 1;
4987
 
+               }
4988
 
+
4989
 
+               entry              = g_new0 (PanelAddtoEntry, 1);
4990
 
+               entry->title       = g_strdup (applet->name);
4991
 
+               entry->comment     = g_strdup (applet->description);
4992
 
+               entry->item_info   = applet;
4993
 
+               entry->category    = current_category;
4994
 
+               entry->dialog      = dialog;
4995
 
+               entry->icon_pixbuf = panel_addto_make_pixbuf (applet->icon);
4996
 
+               current_category->entries = g_slist_append (current_category->entries, entry);
4997
 
+       }
4998
 
+
4999
 
+       categories = g_slist_sort (categories,
5000
 
+                                  (GCompareFunc) compare_categories);
5001
 
+
5002
 
+       info->n_categories = g_slist_length (categories);
5003
 
+       info->categories   = categories;
5004
 
+
5005
 
+       dialog->info = info;
5006
 
+}
5007
 
+
5008
 
+static gboolean
5009
 
+panel_addto_separator_func (GtkTreeModel *model,
5010
 
+                           GtkTreeIter *iter,
5011
 
+                           gpointer data)
5012
 
+{
5013
 
+       int column = GPOINTER_TO_INT (data);
5014
 
+       char *text;
5015
 
+       
5016
 
+       gtk_tree_model_get (model, iter, column, &text, -1);
5017
 
+       
5018
 
+       if (!text)
5019
 
+               return TRUE;
5020
 
+       
5021
 
+       g_free(text);
5022
 
+       return FALSE;
5023
 
+}
5024
 
+
5025
 
+static void
5026
 
+panel_addto_applications_selection_changed (GtkTreeSelection *selection,
5027
 
+                                           PanelAddtoDialog *dialog)
5028
 
+{
5029
 
+       GtkTreeModel       *model;
5030
 
+       GtkTreeIter         iter;
5031
 
+       PanelAddtoItemInfo *data;
5032
 
+       char               *iid;
5033
 
+
5034
 
+
5035
 
+       if (!gtk_tree_selection_get_selected (selection, &model, &iter)) {
5036
 
+               gtk_widget_set_sensitive (GTK_WIDGET (dialog->add_button), FALSE);
5037
 
+               return;
5038
 
+       }
5039
 
+
5040
 
+       gtk_tree_model_get (model, &iter, COLUMN_DATA, &data, -1);
5041
 
+
5042
 
+       if (!data) {
5043
 
+               gtk_widget_set_sensitive (GTK_WIDGET (dialog->add_button), FALSE);
5044
 
+               return;
5045
 
+       }
5046
 
+
5047
 
+       gtk_widget_set_sensitive (GTK_WIDGET (dialog->add_button), TRUE);
5048
 
+
5049
 
+       gtk_button_set_label (GTK_BUTTON (dialog->add_button),
5050
 
+                             GTK_STOCK_ADD);
5051
 
+       gtk_button_set_use_stock (GTK_BUTTON (dialog->add_button),
5052
 
+                                 TRUE);
5053
 
+
5054
 
+       /* only allow dragging applets if we can add applets */
5055
 
+
5056
 
+       if (panel_profile_id_lists_are_writable ()) {
5057
 
+               switch (data->type) {
5058
 
+               case PANEL_ADDTO_LAUNCHER:
5059
 
+                       panel_addto_applications_setup_launcher_drag (GTK_TREE_VIEW (dialog->tree_view),
5060
 
+                                                                     data->launcher_path);
5061
 
+                       break;
5062
 
+               case PANEL_ADDTO_MENU:
5063
 
+
5064
 
+                       /* build the iid for menus other than the main menu */
5065
 
+
5066
 
+                       if (data->iid == NULL) {
5067
 
+                               iid = g_strdup_printf ("MENU:%s/%s",
5068
 
+                                                      data->menu_filename,
5069
 
+                                                      data->menu_path);
5070
 
+                       } else {
5071
 
+                               iid = g_strdup (data->iid);
5072
 
+                       }
5073
 
+                               panel_addto_applications_setup_internal_applet_drag (GTK_TREE_VIEW (dialog->tree_view),
5074
 
+                                                                                    iid);
5075
 
+                       g_free (iid);
5076
 
+                       break;
5077
 
+               default:
5078
 
+                       break;
5079
 
+               }
5080
 
+       }
5081
 
+}
5082
 
+
5083
 
+
5084
 
+static void
5085
 
+panel_addto_applications_selection_activated (GtkTreeView       *view,
5086
 
+                                             GtkTreePath       *path,
5087
 
+                                             GtkTreeViewColumn *column,
5088
 
+                                             PanelAddtoDialog  *dialog)
5089
 
+{
5090
 
+       gtk_dialog_response (GTK_DIALOG (dialog->addto_dialog),
5091
 
+                            PANEL_ADDTO_RESPONSE_ADD);
5092
 
+}
5093
 
+
5094
 
+static void
5095
 
+panel_addto_present_applications (PanelAddtoDialog *dialog)
5096
 
+{
5097
 
+        GtkTreeSelection  *selection;
5098
 
+       GtkTreeViewColumn *column;
5099
 
+
5100
 
+        if (dialog->application_model == NULL) {
5101
 
+               dialog->application_model = panel_addto_make_application_model (dialog);
5102
 
+       }
5103
 
+       gtk_widget_hide (dialog->applets_sw);
5104
 
+       gtk_widget_hide (dialog->statuslabel);
5105
 
+       gtk_widget_hide (dialog->search_entry);
5106
 
+       gtk_widget_hide (dialog->search_label);
5107
 
+
5108
 
+       gtk_widget_set_sensitive (dialog->launcher_button, FALSE);
5109
 
+       gtk_widget_set_sensitive (dialog->custom_launcher_button, FALSE);
5110
 
+
5111
 
+       dialog->status = APPLICATIONS;
5112
 
+
5113
 
+       dialog->applications_sw = gtk_scrolled_window_new (NULL, NULL);
5114
 
+       gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (dialog->applications_sw),
5115
 
+                                       GTK_POLICY_AUTOMATIC,
5116
 
+                                       GTK_POLICY_AUTOMATIC);
5117
 
+       gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (dialog->applications_sw),
5118
 
+                                            GTK_SHADOW_IN);
5119
 
+       dialog->tree_view = gtk_tree_view_new ();
5120
 
+       gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (dialog->tree_view),
5121
 
+                                          FALSE);
5122
 
+       gtk_tree_view_expand_all (GTK_TREE_VIEW (dialog->tree_view));
5123
 
+
5124
 
+       dialog->renderer = g_object_new (GTK_TYPE_CELL_RENDERER_PIXBUF,
5125
 
+                                        "xpad", 4,
5126
 
+                                        "ypad", 4,
5127
 
+                                        NULL);
5128
 
+
5129
 
+       gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (dialog->tree_view),
5130
 
+                                                    -1, NULL,
5131
 
+                                                    dialog->renderer,
5132
 
+                                                    "pixbuf", COLUMN_ICON,
5133
 
+                                                    NULL);
5134
 
+
5135
 
+       dialog->renderer = gtk_cell_renderer_text_new ();
5136
 
+       g_object_set (dialog->renderer, "ellipsize", PANGO_ELLIPSIZE_END, NULL);
5137
 
+
5138
 
+       gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (dialog->tree_view),
5139
 
+                                                    -1, NULL,
5140
 
+                                                    dialog->renderer,
5141
 
+                                                    "markup", COLUMN_TEXT,
5142
 
+                                                    NULL);
5143
 
+       gtk_tree_view_set_search_column (GTK_TREE_VIEW (dialog->tree_view),
5144
 
+                                        COLUMN_SEARCH);
5145
 
+
5146
 
+       gtk_tree_view_set_row_separator_func (GTK_TREE_VIEW (dialog->tree_view),
5147
 
+                                             panel_addto_separator_func,
5148
 
+                                             GINT_TO_POINTER (COLUMN_TEXT),
5149
 
+                                             NULL);
5150
 
+       selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (dialog->tree_view));
5151
 
+       gtk_tree_selection_set_mode (selection, GTK_SELECTION_SINGLE);
5152
 
+
5153
 
+       column = gtk_tree_view_get_column (GTK_TREE_VIEW (dialog->tree_view),
5154
 
+                                          COLUMN_TEXT);
5155
 
+       gtk_tree_view_column_set_sizing (column, GTK_TREE_VIEW_COLUMN_FIXED);
5156
 
+
5157
 
+       g_signal_connect (selection, "changed",
5158
 
+                         G_CALLBACK (panel_addto_applications_selection_changed),
5159
 
+                         dialog);
5160
 
+
5161
 
+       g_signal_connect (dialog->tree_view, "row-activated",
5162
 
+                         G_CALLBACK (panel_addto_applications_selection_activated),
5163
 
+                         dialog);
5164
 
+
5165
 
+        gtk_tree_view_set_model (GTK_TREE_VIEW (dialog->tree_view),
5166
 
+                                dialog->application_model);
5167
 
+        gtk_container_add    (GTK_CONTAINER (dialog->applications_sw),
5168
 
+                             GTK_WIDGET (dialog->tree_view));
5169
 
+       gtk_box_pack_start (GTK_BOX (dialog->inner_vbox), 
5170
 
+                           GTK_WIDGET (dialog->applications_sw), TRUE, TRUE, 0);
5171
 
+
5172
 
+
5173
 
+       gtk_window_set_focus (GTK_WINDOW (dialog->addto_dialog),
5174
 
+                             dialog->tree_view);
5175
 
+       gtk_widget_set_sensitive (dialog->back_button, TRUE);
5176
 
+       gtk_widget_show_all (GTK_WIDGET (dialog->applications_sw));
5177
 
+}
5178
 
+
5179
 
+static void
5180
 
+panel_addto_present_applets (PanelAddtoDialog *dialog)
5181
 
+{
5182
 
+
5183
 
+       if (dialog->applet_model == NULL)
5184
 
+               dialog->applet_model = panel_addto_make_applet_model (dialog);
5185
 
+
5186
 
+       gtk_widget_set_sensitive (dialog->back_button, FALSE);
5187
 
+       
5188
 
+}
5189
 
+
5190
 
+static void
5191
 
+panel_addto_dialog_free_item_info (PanelAddtoItemInfo *item_info)
5192
 
+{
5193
 
+       if (item_info == NULL || item_info->static_data)
5194
 
+               return;
5195
 
+
5196
 
+       if (item_info->name != NULL)
5197
 
+               g_free (item_info->name);
5198
 
+       item_info->name = NULL;
5199
 
+
5200
 
+       if (item_info->description != NULL)
5201
 
+               g_free (item_info->description);
5202
 
+       item_info->description = NULL;
5203
 
+
5204
 
+       if (item_info->icon != NULL)
5205
 
+               g_free (item_info->icon);
5206
 
+       item_info->icon = NULL;
5207
 
+
5208
 
+       if (item_info->iid != NULL)
5209
 
+               g_free (item_info->iid);
5210
 
+       item_info->iid = NULL;
5211
 
+
5212
 
+       if (item_info->launcher_path != NULL)
5213
 
+               g_free (item_info->launcher_path);
5214
 
+       item_info->launcher_path = NULL;
5215
 
+
5216
 
+       if (item_info->menu_filename != NULL)
5217
 
+               g_free (item_info->menu_filename);
5218
 
+       item_info->menu_filename = NULL;
5219
 
+
5220
 
+       if (item_info->menu_path != NULL)
5221
 
+               g_free (item_info->menu_path);
5222
 
+       item_info->menu_path = NULL;
5223
 
+}
5224
 
+
5225
 
+static void
5226
 
+panel_addto_dialog_free_application_list (GSList *application_list)
5227
 
+{
5228
 
+       PanelAddtoAppList *data;
5229
 
+       GSList            *app;
5230
 
+
5231
 
+       if (application_list == NULL)
5232
 
+               return;
5233
 
+
5234
 
+       for (app = application_list; app != NULL; app = app->next) {
5235
 
+               data = app->data;
5236
 
+               if (data->children) {
5237
 
+                       panel_addto_dialog_free_application_list (data->children);
5238
 
+               }
5239
 
+               panel_addto_dialog_free_item_info (&data->item_info);
5240
 
+               g_free (data);
5241
 
+       }
5242
 
+       g_slist_free (application_list);
5243
 
+}
5244
 
+
5245
 
+static void
5246
 
+panel_addto_dialog_free (PanelAddtoDialog *dialog)
5247
 
+{
5248
 
+       GConfClient             *client;
5249
 
+       GSList                  *item, *l, *m;
5250
 
+       PanelAddtoCanvasPrivate *priv;
5251
 
+       PanelAddtoCategory      *current_category;
5252
 
+
5253
 
+       client = panel_gconf_get_client ();
5254
 
+
5255
 
+       if (dialog->name_notify)
5256
 
+               gconf_client_notify_remove (client, dialog->name_notify);
5257
 
+       dialog->name_notify = 0;
5258
 
+
5259
 
+       if (dialog->addto_dialog)
5260
 
+               gtk_widget_destroy (dialog->addto_dialog);
5261
 
+       dialog->addto_dialog = NULL;
5262
 
+       
5263
 
+       if (dialog->label) {
5264
 
+         dialog->label = NULL;
5265
 
+       }
5266
 
+       
5267
 
+       for (item = dialog->applet_list; item != NULL; item = item->next) {
5268
 
+               PanelAddtoItemInfo *applet;
5269
 
+
5270
 
+               applet = (PanelAddtoItemInfo *) item->data;
5271
 
+               if (!applet->static_data) {
5272
 
+                       panel_addto_dialog_free_item_info (applet);
5273
 
+                       g_free (applet);
5274
 
+               }
5275
 
+       }
5276
 
+       g_slist_free (dialog->applet_list);
5277
 
+
5278
 
+       panel_addto_dialog_free_application_list (dialog->application_list);
5279
 
+       panel_addto_dialog_free_application_list (dialog->settings_list);
5280
 
+               
5281
 
+       if (dialog->canvas) {
5282
 
+               priv = PANEL_ADDTO_CANVAS_GET_PRIVATE (dialog->canvas);
5283
 
+               if (priv) {
5284
 
+                       if (priv && priv->info && priv->info->categories) {
5285
 
+                         for (l = priv->info->categories; l; l = l->next) {
5286
 
+                                 current_category = l->data;
5287
 
+                                 for (m = current_category->entries; m; m = m->next) {
5288
 
+                                         g_free (m->data);
5289
 
+                                 }
5290
 
+                                 if (current_category->user_data)
5291
 
+                                         g_free (current_category->user_data);
5292
 
+                                 g_slist_free (current_category->entries);
5293
 
+                                 g_free (current_category);
5294
 
+                         }
5295
 
+                         g_slist_free (priv->info->categories);
5296
 
+                       }
5297
 
+                       g_free (priv->search_text);
5298
 
+               }
5299
 
+       }
5300
 
+
5301
 
+       
5302
 
+
5303
 
+       if (dialog->applet_model)
5304
 
+         g_object_unref (dialog->applet_model);
5305
 
+       dialog->applet_model = NULL;
5306
 
+
5307
 
+       if (dialog->application_model)
5308
 
+               g_object_unref (dialog->application_model);
5309
 
+       dialog->application_model = NULL;
5310
 
+
5311
 
+       if (dialog->menu_tree)
5312
 
+               gmenu_tree_unref (dialog->menu_tree);
5313
 
+       dialog->menu_tree = NULL;
5314
 
+
5315
 
+       g_free (dialog);
5316
 
+}
5317
 
+
5318
 
+static void
5319
 
+panel_addto_name_change (PanelAddtoDialog *dialog,
5320
 
+                        const char       *name)
5321
 
+{
5322
 
+       char *title;
5323
 
+       char *label;
5324
 
+
5325
 
+       label = NULL;
5326
 
+
5327
 
+       if (!string_empty (name))
5328
 
+               label = g_strdup_printf (_("Select an item to add to \"%s\":"),
5329
 
+                                        name);
5330
 
+
5331
 
+       if (panel_toplevel_get_is_attached (dialog->panel_widget->toplevel)) {
5332
 
+               title = g_strdup_printf (_("Add to Drawer"));
5333
 
+               if (label == NULL)
5334
 
+                       label = g_strdup (_("Select an item to add to the drawer:"));
5335
 
+       } else {
5336
 
+               title = g_strdup_printf (_("Add to Panel"));
5337
 
+               if (label == NULL)
5338
 
+                       label = g_strdup (_("Select an item to add to the panel \n\
5339
 
+(you can also directly drag and drop items onto the panel):"));
5340
 
+       }
5341
 
+
5342
 
+       gtk_window_set_title (GTK_WINDOW (dialog->addto_dialog), title);
5343
 
+       g_free (title);
5344
 
+
5345
 
+       gtk_label_set_text_with_mnemonic (GTK_LABEL (dialog->label), label);
5346
 
+       g_free (label);
5347
 
+}
5348
 
+
5349
 
+static void
5350
 
+panel_addto_name_notify (GConfClient      *client,
5351
 
+                        guint             cnxn_id,
5352
 
+                        GConfEntry       *entry,
5353
 
+                        PanelAddtoDialog *dialog)
5354
 
+{
5355
 
+       GConfValue *value;
5356
 
+       const char *key;
5357
 
+       const char *text = NULL;
5358
 
+
5359
 
+       key = panel_gconf_basename (gconf_entry_get_key (entry));
5360
 
+
5361
 
+       if (strcmp (key, "name"))
5362
 
+               return;
5363
 
+
5364
 
+       value = gconf_entry_get_value (entry);
5365
 
+
5366
 
+       if (value && value->type == GCONF_VALUE_STRING)
5367
 
+               text = gconf_value_get_string (value);
5368
 
+
5369
 
+       if (text)
5370
 
+               panel_addto_name_change (dialog, text);
5371
 
+}
5372
 
+
5373
 
+
5374
 
+static PanelAddtoDialog *
5375
 
+panel_addto_dialog_new (PanelWidget *panel_widget)
5376
 
+{
5377
 
+       PanelAddtoDialog *dialog;
5378
 
+       GtkWidget        *vbox;
5379
 
+       GtkWidget        *top_hbox;
5380
 
+       GtkWidget        *launchers_hbox;
5381
 
+       GdkPixbuf        *launcher_pixbuf;
5382
 
+       GtkWidget        *launcher_image;
5383
 
+       GtkWidget        *bottom_hbox;
5384
 
+       GtkTooltips      *launchers_tooltips;
5385
 
+       GtkImage         *label_image;
5386
 
+
5387
 
+       dialog = g_new0 (PanelAddtoDialog, 1);
5388
 
+
5389
 
+       dialog->status = APPLETS;
5390
 
+
5391
 
+       g_object_set_qdata_full (G_OBJECT (panel_widget->toplevel),
5392
 
+                                panel_addto_dialog_quark,
5393
 
+                                dialog,
5394
 
+                                (GDestroyNotify) panel_addto_dialog_free);
5395
 
+
5396
 
+       dialog->panel_widget = panel_widget;
5397
 
+       dialog->name_notify =
5398
 
+       panel_profile_toplevel_notify_add (dialog->panel_widget->toplevel,
5399
 
+                                          "name",
5400
 
+                                          (GConfClientNotifyFunc) panel_addto_name_notify,
5401
 
+                                           dialog);
5402
 
+       dialog->addto_dialog = gtk_dialog_new ();
5403
 
+
5404
 
+       dialog->statuslabel = gtk_label_new ("");
5405
 
+       
5406
 
+       gtk_dialog_add_button (GTK_DIALOG (dialog->addto_dialog),
5407
 
+                              GTK_STOCK_HELP, GTK_RESPONSE_HELP);
5408
 
+       dialog->back_button = gtk_dialog_add_button (GTK_DIALOG (dialog->addto_dialog),
5409
 
+                                                    GTK_STOCK_GO_BACK,
5410
 
+                                                    PANEL_ADDTO_RESPONSE_BACK);
5411
 
+       dialog->add_button = gtk_dialog_add_button (GTK_DIALOG (dialog->addto_dialog),
5412
 
+                                                    GTK_STOCK_ADD,
5413
 
+                                                    PANEL_ADDTO_RESPONSE_ADD);
5414
 
+       gtk_dialog_add_button (GTK_DIALOG (dialog->addto_dialog),
5415
 
+                              GTK_STOCK_CLOSE,
5416
 
+                              GTK_RESPONSE_CLOSE);
5417
 
+       gtk_widget_set_sensitive (GTK_WIDGET (dialog->add_button), FALSE);
5418
 
+       gtk_dialog_set_has_separator (GTK_DIALOG (dialog->addto_dialog),
5419
 
+                                     FALSE);
5420
 
+       gtk_dialog_set_default_response (GTK_DIALOG (dialog->addto_dialog),
5421
 
+                                        PANEL_ADDTO_RESPONSE_ADD);
5422
 
+
5423
 
+       gtk_container_set_border_width (GTK_CONTAINER (dialog->addto_dialog), 5);
5424
 
+       gtk_box_set_spacing (GTK_BOX (GTK_DIALOG (dialog->addto_dialog)->vbox), 2);
5425
 
+       g_signal_connect (G_OBJECT (dialog->addto_dialog), "response",
5426
 
+                         G_CALLBACK (panel_addto_dialog_response), dialog);
5427
 
+       g_signal_connect (dialog->addto_dialog, "destroy",
5428
 
+                         G_CALLBACK (panel_addto_dialog_destroy), dialog);
5429
 
+
5430
 
+       vbox = gtk_vbox_new (FALSE, 12);
5431
 
+       gtk_container_set_border_width (GTK_CONTAINER (vbox), 5);
5432
 
+       gtk_container_add (GTK_CONTAINER (GTK_DIALOG (dialog->addto_dialog)->vbox),
5433
 
+                          GTK_WIDGET (vbox));
5434
 
+
5435
 
+       dialog->inner_vbox = gtk_vbox_new (FALSE, 6);
5436
 
+       gtk_box_pack_start (GTK_BOX (vbox), dialog->inner_vbox, TRUE, TRUE, 0);
5437
 
+
5438
 
+       top_hbox       = gtk_hbox_new (FALSE, 6);
5439
 
+       launchers_hbox = gtk_hbox_new (FALSE, 6);
5440
 
+       bottom_hbox    = gtk_hbox_new (FALSE, 0);
5441
 
+       dialog->label = gtk_label_new_with_mnemonic ("");
5442
 
+       gtk_misc_set_alignment (GTK_MISC (dialog->label), 0.0, 0.5);
5443
 
+       gtk_label_set_use_markup (GTK_LABEL (dialog->label), TRUE);
5444
 
+
5445
 
+       label_image = g_object_new (GTK_TYPE_IMAGE,
5446
 
+                                   "stock", GTK_STOCK_DIALOG_INFO,
5447
 
+                                   "icon-size", GTK_ICON_SIZE_DND,
5448
 
+                                   NULL);
5449
 
+       dialog->search_label = gtk_label_new_with_mnemonic (_("_Search: "));
5450
 
+       dialog->search_entry = gtk_entry_new ();
5451
 
+       g_strdup (gtk_entry_get_text (GTK_ENTRY (dialog->search_entry)));
5452
 
+       gtk_label_set_mnemonic_widget (GTK_LABEL (dialog->search_label), GTK_WIDGET (dialog->search_entry));
5453
 
+
5454
 
+       g_signal_connect (G_OBJECT (dialog->search_entry), "changed",
5455
 
+                         G_CALLBACK (panel_addto_relayout_for_search), dialog);
5456
 
+       g_signal_connect (G_OBJECT (dialog->search_entry), "activate",
5457
 
+                         G_CALLBACK (panel_addto_activate_from_searchbar), dialog);
5458
 
+       
5459
 
+       gtk_box_pack_start (GTK_BOX (top_hbox), GTK_WIDGET(label_image),
5460
 
+                           FALSE, FALSE, 0);
5461
 
+       
5462
 
+       gtk_box_pack_start (GTK_BOX (top_hbox), dialog->label,
5463
 
+                           TRUE, TRUE, 0);
5464
 
+       
5465
 
+       gtk_box_pack_start (GTK_BOX (top_hbox), GTK_WIDGET (dialog->search_label),
5466
 
+                            FALSE, FALSE, 0);
5467
 
+
5468
 
+       gtk_box_pack_start (GTK_BOX (top_hbox), GTK_WIDGET (dialog->search_entry),
5469
 
+                            TRUE, TRUE, 0);
5470
 
+
5471
 
+       gtk_box_pack_start (GTK_BOX (dialog->inner_vbox), top_hbox,
5472
 
+                           FALSE, FALSE, 0);
5473
 
+
5474
 
+       /* Launcher button */
5475
 
+       launchers_tooltips = gtk_tooltips_new ();
5476
 
+       dialog->launcher_button = gtk_button_new_with_mnemonic (_("A_pplication Launcher..."));
5477
 
+       launcher_pixbuf = panel_addto_make_pixbuf_for_launcher ("launcher-program");
5478
 
+       launcher_image = gtk_image_new_from_pixbuf (launcher_pixbuf);
5479
 
+       gtk_button_set_image (GTK_BUTTON (dialog->launcher_button), launcher_image);
5480
 
+       gtk_tooltips_set_tip (launchers_tooltips, dialog->launcher_button, _("Launch a program that is already in the GNOME menu"), NULL);
5481
 
+       g_signal_connect_swapped (dialog->launcher_button, "clicked",
5482
 
+                                 G_CALLBACK (panel_addto_add_launcher), dialog);
5483
 
+       gtk_box_pack_start (GTK_BOX (launchers_hbox), dialog->launcher_button,
5484
 
+                           FALSE, FALSE, 0);
5485
 
+
5486
 
+       /* Custom launcher button*/
5487
 
+       dialog->custom_launcher_button = gtk_button_new_with_mnemonic (_("Custom Application _Launcher"));
5488
 
+       launcher_image = gtk_image_new_from_pixbuf (launcher_pixbuf);
5489
 
+       gtk_button_set_image (GTK_BUTTON (dialog->custom_launcher_button), launcher_image);
5490
 
+       gtk_tooltips_set_tip (launchers_tooltips, dialog->custom_launcher_button, _("Create a new launcher"), NULL);
5491
 
+       g_signal_connect_swapped (dialog->custom_launcher_button, "clicked",
5492
 
+                                 G_CALLBACK (panel_addto_add_custom_launcher), dialog);
5493
 
+       gtk_box_pack_start (GTK_BOX (launchers_hbox), dialog->custom_launcher_button,
5494
 
+                           FALSE, FALSE, 0);
5495
 
+
5496
 
+       if (panel_lockdown_get_disable_command_line ())
5497
 
+         gtk_widget_set_sensitive (dialog->custom_launcher_button, FALSE);
5498
 
+
5499
 
+       gtk_box_pack_start (GTK_BOX (dialog->inner_vbox), launchers_hbox,
5500
 
+                           FALSE, FALSE, 0);
5501
 
+
5502
 
+       dialog->applets_sw = gtk_scrolled_window_new (NULL, NULL);
5503
 
+       gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (dialog->applets_sw),
5504
 
+                                       GTK_POLICY_AUTOMATIC,
5505
 
+                                       GTK_POLICY_AUTOMATIC);
5506
 
+       gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (dialog->applets_sw),
5507
 
+                                            GTK_SHADOW_IN);
5508
 
+
5509
 
+       gtk_box_pack_start (GTK_BOX (dialog->inner_vbox), dialog->applets_sw, TRUE, TRUE, 0);
5510
 
+       gtk_box_pack_start (GTK_BOX (bottom_hbox), dialog->statuslabel, FALSE, FALSE, 0);
5511
 
+
5512
 
+       gtk_box_pack_start (GTK_BOX (dialog->inner_vbox), bottom_hbox,
5513
 
+                           FALSE, FALSE, 0);
5514
 
+
5515
 
+       gtk_widget_show_all (vbox);
5516
 
+
5517
 
+       gtk_label_set_mnemonic_widget (GTK_LABEL (dialog->label),
5518
 
+                                      dialog->canvas);
5519
 
+
5520
 
+       panel_toplevel_push_autohide_disabler (dialog->panel_widget->toplevel);
5521
 
+       panel_widget_register_open_dialog (panel_widget,
5522
 
+                                          dialog->addto_dialog);
5523
 
+       panel_addto_name_change (dialog,
5524
 
+                                panel_toplevel_get_name (dialog->panel_widget->toplevel));
5525
 
+
5526
 
+       return dialog;
5527
 
+}
5528
 
+
5529
 
+#define MAX_ADDTOPANEL_HEIGHT 540
5530
 
+
5531
 
+void
5532
 
+panel_addto_present (GtkMenuItem *item,
5533
 
+                    PanelWidget *panel_widget)
5534
 
+{
5535
 
+       PanelAddtoDialog *dialog;
5536
 
+       PanelToplevel *toplevel;
5537
 
+       PanelData     *pd;
5538
 
+       GtkAdjustment *sw_adjustment = NULL;
5539
 
+       GdkScreen *screen;
5540
 
+       gint screen_height;
5541
 
+       gint height;
5542
 
+
5543
 
+       toplevel = panel_widget->toplevel;
5544
 
+       pd = g_object_get_data (G_OBJECT (toplevel), "PanelData");
5545
 
+
5546
 
+       if (!panel_addto_dialog_quark)
5547
 
+               panel_addto_dialog_quark =
5548
 
+                       g_quark_from_static_string ("panel-addto-dialog");
5549
 
+
5550
 
+       dialog = g_object_get_qdata (G_OBJECT (toplevel),
5551
 
+                                    panel_addto_dialog_quark);
5552
 
+
5553
 
+       screen = gtk_window_get_screen (GTK_WINDOW (toplevel));
5554
 
+       screen_height = gdk_screen_get_height (screen);
5555
 
+       height = MIN (MAX_ADDTOPANEL_HEIGHT, 3 * (screen_height / 4));
5556
 
+
5557
 
+       if (!dialog) {
5558
 
+               dialog = panel_addto_dialog_new (panel_widget);
5559
 
+
5560
 
+               panel_addto_present_applets (dialog);
5561
 
+               panel_addto_init_categories (dialog);
5562
 
+
5563
 
+               dialog->canvas = panel_addto_canvas_new (dialog->info);
5564
 
+                       gtk_container_add (GTK_CONTAINER (dialog->applets_sw), 
5565
 
+                                  GTK_WIDGET (dialog->canvas));
5566
 
+       }
5567
 
+
5568
 
+       sw_adjustment = gtk_scrolled_window_get_vadjustment (GTK_SCROLLED_WINDOW (dialog->applets_sw));
5569
 
+       dialog->insertion_position = pd ? pd->insertion_pos : -1;
5570
 
+       gtk_window_set_screen (GTK_WINDOW (dialog->addto_dialog), screen);
5571
 
+       gtk_window_set_default_size (GTK_WINDOW (dialog->addto_dialog),
5572
 
+                                    height * 1.35, height);
5573
 
+       gtk_window_present (GTK_WINDOW (dialog->addto_dialog));
5574
 
+       
5575
 
+       sw_adjustment->value = sw_adjustment->lower;
5576
 
+       sw_adjustment->step_increment = 55;
5577
 
+       gtk_adjustment_clamp_page (sw_adjustment, sw_adjustment->lower, sw_adjustment->upper);
5578
 
+       gtk_scrolled_window_set_vadjustment (GTK_SCROLLED_WINDOW (dialog->applets_sw), sw_adjustment);
5579
 
+}
5580
 
diff -Nur gnome-panel-2.19.2/gnome-panel/panel-addto-event-box.c gnome-panel-2.19.2.new/gnome-panel/panel-addto-event-box.c
5581
 
--- gnome-panel-2.19.2/gnome-panel/panel-addto-event-box.c      1970-01-01 01:00:00.000000000 +0100
5582
 
+++ gnome-panel-2.19.2.new/gnome-panel/panel-addto-event-box.c  2007-05-15 12:42:45.000000000 +0200
 
4062
diff -Nur gnome-panel-2.20.0.1/gnome-panel/panel-addto-event-box.c gnome-panel-2.20.0.1.new/gnome-panel/panel-addto-event-box.c
 
4063
--- gnome-panel-2.20.0.1/gnome-panel/panel-addto-event-box.c    1970-01-01 01:00:00.000000000 +0100
 
4064
+++ gnome-panel-2.20.0.1.new/gnome-panel/panel-addto-event-box.c        2007-09-25 15:39:38.000000000 +0200
5583
4065
@@ -0,0 +1,99 @@
5584
4066
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
5585
4067
+/*
5680
4162
+
5681
4163
+       return type;
5682
4164
+}
5683
 
diff -Nur gnome-panel-2.19.2/gnome-panel/panel-addto-event-box.h gnome-panel-2.19.2.new/gnome-panel/panel-addto-event-box.h
5684
 
--- gnome-panel-2.19.2/gnome-panel/panel-addto-event-box.h      1970-01-01 01:00:00.000000000 +0100
5685
 
+++ gnome-panel-2.19.2.new/gnome-panel/panel-addto-event-box.h  2007-05-15 12:42:45.000000000 +0200
 
4165
diff -Nur gnome-panel-2.20.0.1/gnome-panel/panel-addto-event-box.h gnome-panel-2.20.0.1.new/gnome-panel/panel-addto-event-box.h
 
4166
--- gnome-panel-2.20.0.1/gnome-panel/panel-addto-event-box.h    1970-01-01 01:00:00.000000000 +0100
 
4167
+++ gnome-panel-2.20.0.1.new/gnome-panel/panel-addto-event-box.h        2007-09-25 15:39:38.000000000 +0200
5686
4168
@@ -0,0 +1,75 @@
5687
4169
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
5688
4170
+/*
5759
4241
+G_END_DECLS
5760
4242
+
5761
4243
+#endif
5762
 
diff -Nur gnome-panel-2.19.2/gnome-panel/panel-addto.h gnome-panel-2.19.2.new/gnome-panel/panel-addto.h
5763
 
--- gnome-panel-2.19.2/gnome-panel/panel-addto.h        2007-05-14 21:53:01.000000000 +0200
5764
 
+++ gnome-panel-2.19.2.new/gnome-panel/panel-addto.h    2007-05-15 12:42:45.000000000 +0200
 
4244
diff -Nur gnome-panel-2.20.0.1/gnome-panel/panel-addto.h gnome-panel-2.20.0.1.new/gnome-panel/panel-addto.h
 
4245
--- gnome-panel-2.20.0.1/gnome-panel/panel-addto.h      2007-09-18 15:56:51.000000000 +0200
 
4246
+++ gnome-panel-2.20.0.1.new/gnome-panel/panel-addto.h  2007-09-25 15:39:38.000000000 +0200
5765
4247
@@ -20,6 +20,7 @@
5766
4248
  *
5767
4249
  * Authors:
5917
4399
 
5918
4400
 G_END_DECLS
5919
4401
 
5920
 
diff -Nur gnome-panel-2.19.2/gnome-panel/panel-addto-rounded-rect.c gnome-panel-2.19.2.new/gnome-panel/panel-addto-rounded-rect.c
5921
 
--- gnome-panel-2.19.2/gnome-panel/panel-addto-rounded-rect.c   1970-01-01 01:00:00.000000000 +0100
5922
 
+++ gnome-panel-2.19.2.new/gnome-panel/panel-addto-rounded-rect.c       2007-05-15 12:42:45.000000000 +0200
 
4402
diff -Nur gnome-panel-2.20.0.1/gnome-panel/panel-addto-rounded-rect.c gnome-panel-2.20.0.1.new/gnome-panel/panel-addto-rounded-rect.c
 
4403
--- gnome-panel-2.20.0.1/gnome-panel/panel-addto-rounded-rect.c 1970-01-01 01:00:00.000000000 +0100
 
4404
+++ gnome-panel-2.20.0.1.new/gnome-panel/panel-addto-rounded-rect.c     2007-09-25 15:39:38.000000000 +0200
5923
4405
@@ -0,0 +1,103 @@
5924
4406
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
5925
4407
+/*
6024
4506
+panel_addto_rounded_rect_init (PanelAddtoRoundedRect *rr)
6025
4507
+{
6026
4508
+}
6027
 
diff -Nur gnome-panel-2.19.2/gnome-panel/panel-addto-rounded-rect.h gnome-panel-2.19.2.new/gnome-panel/panel-addto-rounded-rect.h
6028
 
--- gnome-panel-2.19.2/gnome-panel/panel-addto-rounded-rect.h   1970-01-01 01:00:00.000000000 +0100
6029
 
+++ gnome-panel-2.19.2.new/gnome-panel/panel-addto-rounded-rect.h       2007-05-15 12:42:45.000000000 +0200
 
4509
diff -Nur gnome-panel-2.20.0.1/gnome-panel/panel-addto-rounded-rect.h gnome-panel-2.20.0.1.new/gnome-panel/panel-addto-rounded-rect.h
 
4510
--- gnome-panel-2.20.0.1/gnome-panel/panel-addto-rounded-rect.h 1970-01-01 01:00:00.000000000 +0100
 
4511
+++ gnome-panel-2.20.0.1.new/gnome-panel/panel-addto-rounded-rect.h     2007-09-25 15:39:38.000000000 +0200
6030
4512
@@ -0,0 +1,39 @@
6031
4513
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
6032
4514
+/*
6067
4549
+G_END_DECLS
6068
4550
+
6069
4551
+#endif /* PANEL_ADDTO_ROUNDED_RECT_H */
6070
 
diff -Nur gnome-panel-2.19.2/gnome-panel/panel-addto-rounded-rect-pixbuf.h gnome-panel-2.19.2.new/gnome-panel/panel-addto-rounded-rect-pixbuf.h
6071
 
--- gnome-panel-2.19.2/gnome-panel/panel-addto-rounded-rect-pixbuf.h    1970-01-01 01:00:00.000000000 +0100
6072
 
+++ gnome-panel-2.19.2.new/gnome-panel/panel-addto-rounded-rect-pixbuf.h        2007-05-15 12:42:45.000000000 +0200
 
4552
diff -Nur gnome-panel-2.20.0.1/gnome-panel/panel-addto-rounded-rect-pixbuf.h gnome-panel-2.20.0.1.new/gnome-panel/panel-addto-rounded-rect-pixbuf.h
 
4553
--- gnome-panel-2.20.0.1/gnome-panel/panel-addto-rounded-rect-pixbuf.h  1970-01-01 01:00:00.000000000 +0100
 
4554
+++ gnome-panel-2.20.0.1.new/gnome-panel/panel-addto-rounded-rect-pixbuf.h      2007-09-25 15:39:38.000000000 +0200
6073
4555
@@ -0,0 +1,319 @@
6074
4556
+/* GdkPixbuf RGBA C-Source image dump */
6075
4557
+
6390
4872
+  "\377/\377\377\377q\377\377\377\303\377\377\377\377\377\377\377\377"};
6391
4873
+
6392
4874
+
6393
 
diff -Nur gnome-panel-2.19.2/panel-addto-canvas.c gnome-panel-2.19.2.new/panel-addto-canvas.c
6394
 
--- gnome-panel-2.19.2/panel-addto-canvas.c     1970-01-01 01:00:00.000000000 +0100
6395
 
+++ gnome-panel-2.19.2.new/panel-addto-canvas.c 2007-05-15 12:42:45.000000000 +0200
 
4875
diff -Nur gnome-panel-2.20.0.1/panel-addto-canvas.c gnome-panel-2.20.0.1.new/panel-addto-canvas.c
 
4876
--- gnome-panel-2.20.0.1/panel-addto-canvas.c   1970-01-01 01:00:00.000000000 +0100
 
4877
+++ gnome-panel-2.20.0.1.new/panel-addto-canvas.c       2007-09-25 15:39:38.000000000 +0200
6396
4878
@@ -0,0 +1,2309 @@
6397
4879
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
6398
4880
+/* Copyright (C) 2005 Carlos Garnacho
8703
7185
+
8704
7186
+       return (* GTK_WIDGET_CLASS (panel_addto_canvas_parent_class)->get_accessible) (widget);
8705
7187
+}
8706
 
diff -Nur gnome-panel-2.19.2/panel-addto-canvas.h gnome-panel-2.19.2.new/panel-addto-canvas.h
8707
 
--- gnome-panel-2.19.2/panel-addto-canvas.h     1970-01-01 01:00:00.000000000 +0100
8708
 
+++ gnome-panel-2.19.2.new/panel-addto-canvas.h 2007-05-15 12:42:45.000000000 +0200
 
7188
diff -Nur gnome-panel-2.20.0.1/panel-addto-canvas.h gnome-panel-2.20.0.1.new/panel-addto-canvas.h
 
7189
--- gnome-panel-2.20.0.1/panel-addto-canvas.h   1970-01-01 01:00:00.000000000 +0100
 
7190
+++ gnome-panel-2.20.0.1.new/panel-addto-canvas.h       2007-09-25 15:39:38.000000000 +0200
8709
7191
@@ -0,0 +1,88 @@
8710
7192
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
8711
7193
+/* Copyright (C) 2005 Carlos Garnacho
8795
7277
+G_END_DECLS
8796
7278
+
8797
7279
+#endif /* PANEL_ADDTO_CANVAS_H */
8798
 
diff -Nur gnome-panel-2.19.2/panel-addto-event-box.c gnome-panel-2.19.2.new/panel-addto-event-box.c
8799
 
--- gnome-panel-2.19.2/panel-addto-event-box.c  1970-01-01 01:00:00.000000000 +0100
8800
 
+++ gnome-panel-2.19.2.new/panel-addto-event-box.c      2007-05-15 12:42:45.000000000 +0200
 
7280
diff -Nur gnome-panel-2.20.0.1/panel-addto-event-box.c gnome-panel-2.20.0.1.new/panel-addto-event-box.c
 
7281
--- gnome-panel-2.20.0.1/panel-addto-event-box.c        1970-01-01 01:00:00.000000000 +0100
 
7282
+++ gnome-panel-2.20.0.1.new/panel-addto-event-box.c    2007-09-25 15:39:38.000000000 +0200
8801
7283
@@ -0,0 +1,99 @@
8802
7284
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
8803
7285
+/*
8898
7380
+
8899
7381
+       return type;
8900
7382
+}
8901
 
diff -Nur gnome-panel-2.19.2/panel-addto-event-box.h gnome-panel-2.19.2.new/panel-addto-event-box.h
8902
 
--- gnome-panel-2.19.2/panel-addto-event-box.h  1970-01-01 01:00:00.000000000 +0100
8903
 
+++ gnome-panel-2.19.2.new/panel-addto-event-box.h      2007-05-15 12:42:45.000000000 +0200
 
7383
diff -Nur gnome-panel-2.20.0.1/panel-addto-event-box.h gnome-panel-2.20.0.1.new/panel-addto-event-box.h
 
7384
--- gnome-panel-2.20.0.1/panel-addto-event-box.h        1970-01-01 01:00:00.000000000 +0100
 
7385
+++ gnome-panel-2.20.0.1.new/panel-addto-event-box.h    2007-09-25 15:39:38.000000000 +0200
8904
7386
@@ -0,0 +1,75 @@
8905
7387
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
8906
7388
+/*
8977
7459
+G_END_DECLS
8978
7460
+
8979
7461
+#endif
8980
 
diff -Nur gnome-panel-2.19.2/panel-addto-rounded-rect.c gnome-panel-2.19.2.new/panel-addto-rounded-rect.c
8981
 
--- gnome-panel-2.19.2/panel-addto-rounded-rect.c       1970-01-01 01:00:00.000000000 +0100
8982
 
+++ gnome-panel-2.19.2.new/panel-addto-rounded-rect.c   2007-05-15 12:42:45.000000000 +0200
 
7462
diff -Nur gnome-panel-2.20.0.1/panel-addto-rounded-rect.c gnome-panel-2.20.0.1.new/panel-addto-rounded-rect.c
 
7463
--- gnome-panel-2.20.0.1/panel-addto-rounded-rect.c     1970-01-01 01:00:00.000000000 +0100
 
7464
+++ gnome-panel-2.20.0.1.new/panel-addto-rounded-rect.c 2007-09-25 15:39:38.000000000 +0200
8983
7465
@@ -0,0 +1,103 @@
8984
7466
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
8985
7467
+/*
9084
7566
+panel_addto_rounded_rect_init (PanelAddtoRoundedRect *rr)
9085
7567
+{
9086
7568
+}
9087
 
diff -Nur gnome-panel-2.19.2/panel-addto-rounded-rect.h gnome-panel-2.19.2.new/panel-addto-rounded-rect.h
9088
 
--- gnome-panel-2.19.2/panel-addto-rounded-rect.h       1970-01-01 01:00:00.000000000 +0100
9089
 
+++ gnome-panel-2.19.2.new/panel-addto-rounded-rect.h   2007-05-15 12:42:45.000000000 +0200
 
7569
diff -Nur gnome-panel-2.20.0.1/panel-addto-rounded-rect.h gnome-panel-2.20.0.1.new/panel-addto-rounded-rect.h
 
7570
--- gnome-panel-2.20.0.1/panel-addto-rounded-rect.h     1970-01-01 01:00:00.000000000 +0100
 
7571
+++ gnome-panel-2.20.0.1.new/panel-addto-rounded-rect.h 2007-09-25 15:39:38.000000000 +0200
9090
7572
@@ -0,0 +1,39 @@
9091
7573
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
9092
7574
+/*
9127
7609
+G_END_DECLS
9128
7610
+
9129
7611
+#endif /* PANEL_ADDTO_ROUNDED_RECT_H */
9130
 
diff -Nur gnome-panel-2.19.2/panel-addto-rounded-rect-pixbuf.h gnome-panel-2.19.2.new/panel-addto-rounded-rect-pixbuf.h
9131
 
--- gnome-panel-2.19.2/panel-addto-rounded-rect-pixbuf.h        1970-01-01 01:00:00.000000000 +0100
9132
 
+++ gnome-panel-2.19.2.new/panel-addto-rounded-rect-pixbuf.h    2007-05-15 12:42:45.000000000 +0200
 
7612
diff -Nur gnome-panel-2.20.0.1/panel-addto-rounded-rect-pixbuf.h gnome-panel-2.20.0.1.new/panel-addto-rounded-rect-pixbuf.h
 
7613
--- gnome-panel-2.20.0.1/panel-addto-rounded-rect-pixbuf.h      1970-01-01 01:00:00.000000000 +0100
 
7614
+++ gnome-panel-2.20.0.1.new/panel-addto-rounded-rect-pixbuf.h  2007-09-25 15:39:38.000000000 +0200
9133
7615
@@ -0,0 +1,319 @@
9134
7616
+/* GdkPixbuf RGBA C-Source image dump */
9135
7617
+