[gnome-panel/wip/muktupavels/launcher: 2/2] panel: do not load launcher objects
- From: Alberts MuktupÄvels <muktupavels src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-panel/wip/muktupavels/launcher: 2/2] panel: do not load launcher objects
- Date: Sun, 12 Apr 2020 16:40:36 +0000 (UTC)
commit 74da1252aa46ca5f11a71d7ae9c2340337182692
Author: Alberts MuktupÄvels <alberts muktupavels gmail com>
Date: Sun Apr 12 19:35:59 2020 +0300
panel: do not load launcher objects
Launcher objects will be turned into applets. We can not remove
PANEL_OBJECT_LAUNCHER yet as we still need it for some drag & drop
functionality.
gnome-panel/applet.c | 9 -
gnome-panel/button-widget.c | 36 --
gnome-panel/button-widget.h | 5 -
gnome-panel/launcher.c | 965 -------------------------------
gnome-panel/launcher.h | 22 -
gnome-panel/libpanel-util/panel-launch.c | 30 +-
gnome-panel/libpanel-util/panel-launch.h | 11 -
gnome-panel/panel-ditem-editor.c | 8 -
gnome-panel/panel-ditem-editor.h | 1 -
gnome-panel/panel-object-loader.c | 11 +-
gnome-panel/panel-util.c | 25 -
gnome-panel/panel-util.h | 1 -
gnome-panel/panel.c | 6 -
13 files changed, 7 insertions(+), 1123 deletions(-)
---
diff --git a/gnome-panel/applet.c b/gnome-panel/applet.c
index d463dd008..1d929ffd5 100644
--- a/gnome-panel/applet.c
+++ b/gnome-panel/applet.c
@@ -50,7 +50,6 @@ panel_applet_set_dnd_enabled (AppletInfo *info,
{
switch (info->type) {
case PANEL_OBJECT_LAUNCHER:
- panel_launcher_set_dnd_enabled (info->data, dnd_enabled);
break;
case PANEL_OBJECT_APPLET:
break;
@@ -62,7 +61,6 @@ panel_applet_set_dnd_enabled (AppletInfo *info,
g_assert_not_reached ();
break;
}
-
}
static void
@@ -93,9 +91,6 @@ panel_applet_clean (AppletInfo *info)
{
g_return_if_fail (info != NULL);
- if (info->type == PANEL_OBJECT_LAUNCHER)
- panel_launcher_delete (info->data);
-
if (info->widget) {
GtkWidget *widget = info->widget;
@@ -158,10 +153,6 @@ applet_callback_callback (GtkWidget *widget,
switch (menu->info->type) {
case PANEL_OBJECT_LAUNCHER:
- if (!strcmp (menu->name, "launch"))
- launcher_launch (menu->info->data, widget);
- else if (!strcmp (menu->name, "properties"))
- launcher_properties (menu->info->data);
break;
case PANEL_OBJECT_ACTION:
panel_action_button_invoke_menu (
diff --git a/gnome-panel/button-widget.c b/gnome-panel/button-widget.c
index 8d2eb9a1f..7c6d825d9 100644
--- a/gnome-panel/button-widget.c
+++ b/gnome-panel/button-widget.c
@@ -690,23 +690,6 @@ button_widget_class_init (ButtonWidgetClass *klass)
G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
}
-GtkWidget *
-button_widget_new (const char *filename,
- gboolean arrow,
- PanelOrientation orientation)
-{
- GtkWidget *retval;
-
- retval = g_object_new (
- BUTTON_TYPE_WIDGET,
- "has-arrow", arrow,
- "orientation", orientation,
- "icon-name", filename,
- NULL);
-
- return retval;
-}
-
void
button_widget_set_activatable (ButtonWidget *button,
gboolean activatable)
@@ -775,14 +758,6 @@ button_widget_set_orientation (ButtonWidget *button,
g_object_notify (G_OBJECT (button), "orientation");
}
-PanelOrientation
-button_widget_get_orientation (ButtonWidget *button)
-{
- g_return_val_if_fail (BUTTON_IS_WIDGET (button), 0);
-
- return button->priv->orientation;
-}
-
void
button_widget_set_has_arrow (ButtonWidget *button,
gboolean has_arrow)
@@ -826,14 +801,3 @@ button_widget_get_icon_theme (ButtonWidget *button)
return button->priv->icon_theme;
}
-
-GdkPixbuf *
-button_widget_get_pixbuf (ButtonWidget *button)
-{
- g_return_val_if_fail (BUTTON_IS_WIDGET (button), NULL);
-
- if (!button->priv->pixbuf)
- return NULL;
-
- return g_object_ref (button->priv->pixbuf);
-}
diff --git a/gnome-panel/button-widget.h b/gnome-panel/button-widget.h
index b72f74776..035a7c476 100644
--- a/gnome-panel/button-widget.h
+++ b/gnome-panel/button-widget.h
@@ -27,22 +27,17 @@ struct _ButtonWidgetClass {
};
GType button_widget_get_type (void) G_GNUC_CONST;
-GtkWidget * button_widget_new (const char *pixmap,
- gboolean arrow,
- PanelOrientation orientation);
void button_widget_set_activatable (ButtonWidget *button,
gboolean activatable);
void button_widget_set_icon_name (ButtonWidget *button,
const char *icon_name);
void button_widget_set_orientation (ButtonWidget *button,
PanelOrientation orientation);
-PanelOrientation button_widget_get_orientation (ButtonWidget *button);
void button_widget_set_has_arrow (ButtonWidget *button,
gboolean has_arrow);
void button_widget_set_dnd_highlight (ButtonWidget *button,
gboolean dnd_highlight);
GtkIconTheme *button_widget_get_icon_theme (ButtonWidget *button);
-GdkPixbuf *button_widget_get_pixbuf (ButtonWidget *button);
G_END_DECLS
diff --git a/gnome-panel/launcher.c b/gnome-panel/launcher.c
index ed6378e35..e3c7eda1f 100644
--- a/gnome-panel/launcher.c
+++ b/gnome-panel/launcher.c
@@ -43,744 +43,6 @@
#include "panel-icon-names.h"
#include "panel-schemas.h"
-/* zoom factor, steps and delay if composited (factor must be odd) */
-#define ZOOM_FACTOR 5
-#define ZOOM_STEPS 14
-#define ZOOM_DELAY 10
-
-typedef struct {
- int size;
- int size_start;
- int size_end;
- PanelOrientation orientation;
- double opacity;
- GdkPixbuf *pixbuf;
- guint timeout_id;
-} CompositedZoomData;
-
-static gboolean
-zoom_timeout (GtkWidget *window)
-{
- gtk_widget_queue_draw (window);
- return TRUE;
-}
-
-static gboolean
-idle_destroy (gpointer data)
-{
- gtk_widget_destroy (GTK_WIDGET (data));
-
- return FALSE;
-}
-
-static gboolean
-zoom_draw (GtkWidget *widget,
- cairo_t *cr,
- gpointer user_data)
-{
- CompositedZoomData *zoom;
-
- zoom = user_data;
-
- if (zoom->size >= zoom->size_end) {
- if (zoom->timeout_id)
- g_source_remove (zoom->timeout_id);
- zoom->timeout_id = 0;
-
- gtk_widget_hide (widget);
- g_idle_add (idle_destroy, widget);
-
- g_object_unref (zoom->pixbuf);
- zoom->pixbuf = NULL;
-
- g_slice_free (CompositedZoomData, zoom);
- } else {
- GdkPixbuf *scaled;
- int width, height;
- int x = 0, y = 0;
-
- gtk_window_get_size (GTK_WINDOW (widget), &width, &height);
-
- zoom->size += MAX ((zoom->size_end - zoom->size_start) / ZOOM_STEPS, 1);
- zoom->opacity -= 1.0 / ((double) ZOOM_STEPS + 1);
-
- scaled = gdk_pixbuf_scale_simple (zoom->pixbuf,
- zoom->size, zoom->size,
- GDK_INTERP_BILINEAR);
-
- switch (zoom->orientation) {
- case PANEL_ORIENTATION_TOP:
- x = (width - gdk_pixbuf_get_width (scaled)) / 2;
- y = 0;
- break;
-
- case PANEL_ORIENTATION_RIGHT:
- x = width - gdk_pixbuf_get_width (scaled);
- y = (height - gdk_pixbuf_get_height (scaled)) / 2;
- break;
-
- case PANEL_ORIENTATION_BOTTOM:
- x = (width - gdk_pixbuf_get_width (scaled)) / 2;
- y = height - gdk_pixbuf_get_height (scaled);
- break;
-
- case PANEL_ORIENTATION_LEFT:
- x = 0;
- y = (height - gdk_pixbuf_get_height (scaled)) / 2;
- break;
-
- default:
- break;
- }
-
- cairo_set_operator (cr, CAIRO_OPERATOR_SOURCE);
- cairo_set_source_rgba (cr, 0, 0, 0, 0.0);
- cairo_rectangle (cr, 0, 0, width, height);
- cairo_fill (cr);
-
- gdk_cairo_set_source_pixbuf (cr, scaled, x, y);
- cairo_set_operator (cr, CAIRO_OPERATOR_OVER);
- cairo_paint_with_alpha (cr, MAX (zoom->opacity, 0));
-
- g_object_unref (scaled);
- }
-
- return FALSE;
-}
-
-static void
-draw_zoom_animation_composited (GdkScreen *gscreen,
- int x, int y, int w, int h,
- GdkPixbuf *pixbuf,
- PanelOrientation orientation)
-{
- GtkWidget *win;
- CompositedZoomData *zoom;
- int wx = 0, wy = 0;
-
- w += 2;
- h += 2;
-
- zoom = g_slice_new (CompositedZoomData);
- zoom->size = MIN (w,h);
- zoom->size_start = zoom->size;
- zoom->size_end = zoom->size * ZOOM_FACTOR;
- zoom->orientation = orientation;
- zoom->opacity = 1.0;
- zoom->pixbuf = g_object_ref (pixbuf);
- zoom->timeout_id = 0;
-
- win = gtk_window_new (GTK_WINDOW_POPUP);
-
- gtk_window_set_screen (GTK_WINDOW (win), gscreen);
- gtk_window_set_keep_above (GTK_WINDOW (win), TRUE);
- gtk_window_set_decorated (GTK_WINDOW (win), FALSE);
- gtk_widget_set_app_paintable(win, TRUE);
- gtk_widget_set_visual (win, gdk_screen_get_rgba_visual (gscreen));
-
- gtk_window_set_gravity (GTK_WINDOW (win), GDK_GRAVITY_STATIC);
- gtk_window_set_default_size (GTK_WINDOW (win),
- w * ZOOM_FACTOR, h * ZOOM_FACTOR);
-
- switch (zoom->orientation) {
- case PANEL_ORIENTATION_TOP:
- wx = x - w * (ZOOM_FACTOR / 2);
- wy = y;
- break;
-
- case PANEL_ORIENTATION_RIGHT:
- wx = x - w * (ZOOM_FACTOR - 1);
- wy = y - h * (ZOOM_FACTOR / 2);
- break;
-
- case PANEL_ORIENTATION_BOTTOM:
- wx = x - w * (ZOOM_FACTOR / 2);
- wy = y - h * (ZOOM_FACTOR - 1);
- break;
-
- case PANEL_ORIENTATION_LEFT:
- wx = x;
- wy = y - h * (ZOOM_FACTOR / 2);
- break;
-
- default:
- break;
- }
-
- gtk_window_move (GTK_WINDOW (win), wx, wy);
-
- g_signal_connect (G_OBJECT (win), "draw",
- G_CALLBACK (zoom_draw), zoom);
-
- /* see doc for gtk_widget_set_app_paintable() */
- gtk_widget_realize (win);
- gtk_widget_show (win);
-
- zoom->timeout_id = g_timeout_add (ZOOM_DELAY,
- (GSourceFunc) zoom_timeout,
- win);
-}
-
-static GdkScreen *
-launcher_get_screen (Launcher *launcher)
-{
- PanelWidget *panel_widget;
-
- g_return_val_if_fail (launcher != NULL, NULL);
- g_return_val_if_fail (launcher->info != NULL, NULL);
- g_return_val_if_fail (launcher->info->widget != NULL, NULL);
-
- panel_widget = PANEL_WIDGET (gtk_widget_get_parent (launcher->info->widget));
-
- return gtk_window_get_screen (GTK_WINDOW (panel_widget->toplevel));
-}
-
-static void
-launcher_widget_open_dialog_destroyed (GtkWidget *dialog,
- Launcher *launcher)
-{
- g_return_if_fail (launcher->error_dialogs != NULL);
-
- launcher->error_dialogs = g_slist_remove (launcher->error_dialogs, dialog);
-}
-
-static void
-launcher_widget_destroy_open_dialogs (Launcher *launcher)
-{
- GSList *l, *list;
-
- list = launcher->error_dialogs;
- launcher->error_dialogs = NULL;
-
- for (l = list; l; l = l->next) {
- g_signal_handlers_disconnect_by_func (G_OBJECT (l->data),
- G_CALLBACK (launcher_widget_open_dialog_destroyed),
- launcher);
- gtk_widget_destroy (l->data);
- }
- g_slist_free (list);
-}
-
-static void
-launcher_register_error_dialog (Launcher *launcher,
- GtkWidget *dialog)
-{
- launcher->error_dialogs = g_slist_append (launcher->error_dialogs,
- dialog);
- g_signal_connect (dialog, "destroy",
- G_CALLBACK (launcher_widget_open_dialog_destroyed),
- launcher);
-}
-
-static void
-launcher_do_zoom_animation (GtkWidget *widget)
-{
- GdkScreen *screen;
- GtkSettings *settings;
- gboolean enable_animations;
- ButtonWidget *button_widget;
- GdkPixbuf *pixbuf;
- PanelOrientation orientation;
- gint x, y;
- GtkAllocation allocation;
-
- screen = gtk_widget_get_screen (widget);
- settings = gtk_widget_get_settings (widget);
-
- enable_animations = TRUE;
- g_object_get (settings,
- "gtk-enable-animations", &enable_animations,
- NULL);
-
- if (!enable_animations || !gdk_screen_is_composited (screen))
- return;
-
- button_widget = BUTTON_WIDGET (widget);
- pixbuf = button_widget_get_pixbuf (button_widget);
- orientation = button_widget_get_orientation (button_widget);
-
- if (!pixbuf)
- return;
-
- gdk_window_get_origin (gtk_widget_get_window (widget), &x, &y);
- gtk_widget_get_allocation (widget, &allocation);
-
- if (!gtk_widget_get_has_window (widget)) {
- x += allocation.x;
- y += allocation.y;
- }
-
- draw_zoom_animation_composited (screen, x, y,
- allocation.width, allocation.height,
- pixbuf, orientation);
-
- g_object_unref (pixbuf);
-}
-
-static void
-launch_url (Launcher *launcher)
-{
- char *url;
- GdkScreen *screen;
-
- g_return_if_fail (launcher != NULL);
- g_return_if_fail (launcher->key_file != NULL);
-
- /* FIXME panel_ditem_launch() should be enough for this! */
- url = panel_key_file_get_string (launcher->key_file, "URL");
-
- screen = launcher_get_screen (launcher);
-
- if (!url || *url == 0) {
- GtkWidget *error_dialog;
-
- error_dialog = panel_error_dialog (NULL, screen,
- "no_url_dialog", TRUE,
- _("Could not show this URL"),
- _("No URL was specified."));
- launcher_register_error_dialog (launcher, error_dialog);
- g_free (url);
- return;
- }
-
- panel_show_uri (screen, url, gtk_get_current_event_time (), NULL);
-
- g_free (url);
-}
-
-void
-launcher_launch (Launcher *launcher,
- GtkWidget *widget)
-{
- char *type;
-
- g_return_if_fail (launcher != NULL);
- g_return_if_fail (launcher->key_file != NULL);
-
- launcher_do_zoom_animation (widget);
-
- type = panel_key_file_get_string (launcher->key_file, "Type");
- if (type && !strcmp (type, "Link"))
- launch_url (launcher);
- else {
- GError *error = NULL;
-
- panel_launch_key_file (launcher->key_file, NULL,
- launcher_get_screen (launcher), &error);
- if (error) {
- GtkWidget *error_dialog;
-
- error_dialog = panel_error_dialog (
- NULL,
- launcher_get_screen (launcher),
- "cannot_launch_application",
- TRUE,
- _("Could not launch application"),
- error->message);
- launcher_register_error_dialog (launcher, error_dialog);
- g_clear_error (&error);
- }
- }
- g_free (type);
-}
-
-static void
-drag_data_received_cb (GtkWidget *widget,
- GdkDragContext *context,
- gint x,
- gint y,
- GtkSelectionData *selection_data,
- guint info,
- guint time,
- Launcher *launcher)
-{
- GError *error = NULL;
- char **uris;
- int i;
- GList *file_list;
-
- launcher_do_zoom_animation (widget);
-
- file_list = NULL;
- uris = g_uri_list_extract_uris ((const char *) gtk_selection_data_get_data (selection_data));
- for (i = 0; uris[i]; i++)
- file_list = g_list_prepend (file_list, uris[i]);
- file_list = g_list_reverse (file_list);
-
- panel_launch_key_file (launcher->key_file, file_list,
- launcher_get_screen (launcher), &error);
-
- g_list_free (file_list);
- g_strfreev (uris);
-
- if (error) {
- GtkWidget *error_dialog;
- error_dialog = panel_error_dialog (NULL,
- launcher_get_screen (launcher),
- "cannot_use_dropped_item",
- TRUE,
- _("Could not use dropped item"),
- error->message);
- launcher_register_error_dialog (launcher, error_dialog);
- g_clear_error (&error);
- }
-
- gtk_drag_finish (context, TRUE, FALSE, time);
-}
-
-static void
-destroy_launcher (GtkWidget *widget,
- Launcher *launcher)
-{
- launcher_properties_destroy (launcher);
- launcher_widget_destroy_open_dialogs (launcher);
-}
-
-void
-launcher_properties_destroy (Launcher *launcher)
-{
- GtkWidget *dialog;
-
- dialog = launcher->prop_dialog;
- launcher->prop_dialog = NULL;
-
- if (dialog)
- gtk_widget_destroy (dialog);
-}
-
-static void
-free_launcher (gpointer data)
-{
- Launcher *launcher = data;
-
- if (launcher->key_file)
- g_key_file_free (launcher->key_file);
- launcher->key_file = NULL;
-
- if (launcher->location != NULL)
- g_free (launcher->location);
- launcher->location = NULL;
-
- g_free (launcher);
-}
-
-void
-panel_launcher_delete (Launcher *launcher)
-{
- if (!launcher->location)
- return;
-
- /* do not remove the file if it's not in the user's launchers path */
- if (panel_launcher_is_in_personal_path (launcher->location)) {
- GError *error;
- GFile *file;
-
- file = panel_launcher_get_gfile (launcher->location);
-
- error = NULL;
- if (!g_file_delete (file, NULL, &error)) {
- char *path;
-
- path = g_file_get_path (file);
- g_warning ("Error deleting '%s': %s\n",
- path, error->message);
- g_free (path);
- g_error_free (error);
- }
-
- g_object_unref (file);
- }
-}
-
-static gboolean
-is_this_drop_ok (GtkWidget *widget,
- GdkDragContext *context)
-{
- static GdkAtom text_uri_list = GDK_NONE;
- GList *l;
- GtkWidget *source;
-
- source = gtk_drag_get_source_widget (context);
-
- if (source == widget)
- return FALSE;
-
- if (!(gdk_drag_context_get_actions (context) & GDK_ACTION_COPY))
- return FALSE;
-
- if (!text_uri_list)
- text_uri_list = gdk_atom_intern_static_string ("text/uri-list");
-
- for (l = gdk_drag_context_list_targets (context); l; l = l->next) {
- if (GDK_POINTER_TO_ATOM (l->data) == text_uri_list)
- break;
- }
-
- return l ? TRUE : FALSE;
-}
-
-static void
-drag_leave_cb(GtkWidget *widget,
- GdkDragContext *context,
- guint time,
- Launcher *launcher)
-{
- button_widget_set_dnd_highlight(BUTTON_WIDGET(widget), FALSE);
-}
-
-
-static gboolean
-drag_motion_cb(GtkWidget *widget,
- GdkDragContext *context,
- gint x,
- gint y,
- guint time,
- Launcher *launcher)
-{
- if ( ! is_this_drop_ok (widget, context))
- return FALSE;
-
- gdk_drag_status (context, GDK_ACTION_COPY, time);
-
- button_widget_set_dnd_highlight(BUTTON_WIDGET(widget), TRUE);
-
- return TRUE;
-}
-
-static gboolean
-drag_drop_cb (GtkWidget *widget,
- GdkDragContext *context,
- gint x,
- gint y,
- guint time,
- Launcher *launcher)
-{
- static GdkAtom text_uri_list = NULL;
-
- if ( ! is_this_drop_ok (widget, context))
- return FALSE;
-
- if (text_uri_list == NULL)
- text_uri_list = gdk_atom_intern_static_string ("text/uri-list");
-
- gtk_drag_get_data (widget, context, text_uri_list, time);
-
- return TRUE;
-}
-
-enum {
- TARGET_ICON_INTERNAL,
- TARGET_URI_LIST
-};
-
-
-static void
-drag_data_get_cb (GtkWidget *widget,
- GdkDragContext *context,
- GtkSelectionData *selection_data,
- guint info,
- guint time,
- Launcher *launcher)
-{
- char *location;
-
- g_return_if_fail (launcher != NULL);
-
- location = launcher->location;
-
- if (info == TARGET_URI_LIST) {
- char *uri[2];
-
- uri[0] = panel_launcher_get_uri (location);
- uri[1] = NULL;
-
- gtk_selection_data_set_uris (selection_data, uri);
-
- g_free (uri[0]);
- } else if (info == TARGET_ICON_INTERNAL)
- gtk_selection_data_set (selection_data,
- gtk_selection_data_get_target (selection_data), 8,
- (unsigned char *) location,
- strlen (location));
-
-}
-
-static Launcher *
-create_launcher (const char *location)
-{
- GKeyFile *key_file;
- char *scheme;
- gboolean is_uri;
- gboolean loaded;
- Launcher *launcher;
- GError *error = NULL;
- char *new_location;
-
- if (!location) {
- g_printerr (_("No URI provided for panel launcher desktop file\n"));
- return NULL;
- }
-
- new_location = NULL;
- key_file = g_key_file_new ();
-
- scheme = g_uri_parse_scheme (location);
- is_uri = scheme != NULL;
- g_free (scheme);
-
- if (!is_uri && !g_path_is_absolute (location)) {
- /* try to first load a file in our config directory, and if it
- * doesn't exist there, try to find it in the xdg data dirs */
- char *path;
-
- path = panel_make_full_path (NULL, location);
-
- if (!g_file_test (path, G_FILE_TEST_EXISTS)) {
- g_free (path);
- path = panel_g_lookup_in_applications_dirs (location);
- /* it's important to keep the full path if the desktop
- * file comes from a data dir: when the user will edit
- * it, we'll want to save it in PANEL_LAUNCHERS_PATH
- * with a random name (and not evolution.desktop, eg)
- * and having only a basename as location will make
- * this impossible */
- if (path)
- new_location = g_strdup (path);
- }
-
- if (path) {
- loaded = g_key_file_load_from_file (key_file, path,
-
G_KEY_FILE_KEEP_COMMENTS|G_KEY_FILE_KEEP_TRANSLATIONS,
- &error);
- g_free (path);
- } else {
- loaded = FALSE;
- }
- } else
- loaded = panel_key_file_load_from_uri (key_file, location,
- G_KEY_FILE_KEEP_COMMENTS|G_KEY_FILE_KEEP_TRANSLATIONS,
- &error);
-
- if (!loaded) {
- g_printerr (_("Unable to open desktop file %s for panel launcher%s%s\n"),
- location,
- error ? ": " : "",
- error ? error->message : "");
- if (error)
- g_error_free (error);
-
- g_key_file_free (key_file);
-
- return NULL; /*button is null*/
- }
-
- if (!new_location)
- new_location = g_strdup (location);
-
- launcher = g_new0 (Launcher, 1);
-
- launcher->info = NULL;
- launcher->button = NULL;
- launcher->location = new_location;
- launcher->key_file = key_file;
- launcher->prop_dialog = NULL;
- launcher->destroy_handler = 0;
-
- /* Icon will be setup later */
- launcher->button = button_widget_new (NULL /* icon */,
- FALSE,
- PANEL_ORIENTATION_TOP);
-
- gtk_widget_show (launcher->button);
-
- /*gtk_drag_dest_set (GTK_WIDGET (launcher->button),
- GTK_DEST_DEFAULT_ALL,
- dnd_targets, 2,
- GDK_ACTION_COPY);*/
- gtk_drag_dest_set (GTK_WIDGET (launcher->button),
- 0, NULL, 0, 0);
-
- g_signal_connect (launcher->button, "drag_data_get",
- G_CALLBACK (drag_data_get_cb), launcher);
- g_signal_connect (launcher->button, "drag_data_received",
- G_CALLBACK (drag_data_received_cb), launcher);
- g_signal_connect (launcher->button, "drag_motion",
- G_CALLBACK (drag_motion_cb), launcher);
- g_signal_connect (launcher->button, "drag_drop",
- G_CALLBACK (drag_drop_cb), launcher);
- g_signal_connect (launcher->button, "drag_leave",
- G_CALLBACK (drag_leave_cb), launcher);
- g_signal_connect_swapped (launcher->button, "clicked",
- G_CALLBACK (launcher_launch), launcher);
-
- launcher->destroy_handler =
- g_signal_connect (launcher->button, "destroy",
- G_CALLBACK (destroy_launcher),
- launcher);
-
- return launcher;
-}
-
-static void
-setup_button (Launcher *launcher)
-{
- char *comment;
- char *name;
- char *str;
- char *icon;
- char *unescaped_str;
-
- g_return_if_fail (launcher != NULL);
-
- name = panel_key_file_get_locale_string (launcher->key_file, "Name");
- comment = panel_key_file_get_locale_string (launcher->key_file,
- "Comment");
-
- /* Setup tooltip */
- if (!PANEL_GLIB_STR_EMPTY (name) && !PANEL_GLIB_STR_EMPTY (comment))
- str = g_strdup_printf ("%s\n%s", name, comment);
- else if (!PANEL_GLIB_STR_EMPTY (name))
- str = g_strdup (name);
- else
- str = g_strdup (comment);
-
- g_free (name);
- g_free (comment);
-
- /* If we can unescape the string, then we probably have an escaped
- * string (a location e.g.). If we can't, then it most probably means
- * we have a % that is not here to encode a character, and we don't
- * want to unescape in this case. See bug #170516 for details. */
- unescaped_str = g_uri_unescape_string (str, NULL);
- if (unescaped_str) {
- g_free (str);
- str = unescaped_str;
- }
-
- panel_util_set_tooltip_text (launcher->button, str);
-
- /* Setup accessible name */
- panel_a11y_set_atk_name_desc (launcher->button, str, NULL);
-
- g_free (str);
-
- /* Setup icon */
- icon = panel_key_file_get_locale_string (launcher->key_file, "Icon");
- if (icon && icon[0] == '\0') {
- g_free (icon);
- icon = NULL;
- }
-
- if (!icon)
- icon = guess_icon_from_exec (button_widget_get_icon_theme (BUTTON_WIDGET (launcher->button)),
- launcher->key_file);
- if (!icon)
- icon = g_strdup (PANEL_ICON_LAUNCHER);
-
- button_widget_set_icon_name (BUTTON_WIDGET (launcher->button), icon);
- g_free (icon);
-}
-
static char *
panel_launcher_find_writable_uri (const char *launcher_location,
const char *source)
@@ -811,38 +73,6 @@ panel_launcher_find_writable_uri (const char *launcher_location,
return panel_make_unique_desktop_uri (NULL, source);
}
-static void
-launcher_changed (PanelDItemEditor *dialog,
- Launcher *launcher)
-{
- /* Setup the button look */
- setup_button (launcher);
-}
-
-static void
-launcher_command_changed (PanelDItemEditor *dialog,
- const char *command,
- Launcher *launcher)
-{
- char *exec;
- char *old_exec;
- GKeyFile *revert_key_file;
-
- revert_key_file = panel_ditem_editor_get_revert_key_file (dialog);
-
- if (revert_key_file) {
- exec = panel_key_file_get_string (launcher->key_file, "Exec");
- old_exec = panel_key_file_get_string (revert_key_file, "Exec");
-
- if (!old_exec || !exec || strcmp (old_exec, exec))
- panel_key_file_remove_key (launcher->key_file,
- "StartupNotify");
-
- g_free (exec);
- g_free (old_exec);
- }
-}
-
static char *
launcher_save_uri (PanelDItemEditor *dialog,
gpointer data)
@@ -884,30 +114,6 @@ launcher_save_uri (PanelDItemEditor *dialog,
return NULL;
}
-static void
-launcher_saved (GtkWidget *dialog,
- Launcher *launcher)
-{
- const char *uri;
-
- uri = panel_ditem_editor_get_uri (PANEL_DITEM_EDITOR (dialog));
- if (panel_launcher_get_filename (uri) != NULL)
- uri = panel_launcher_get_filename (uri);
-
- if (uri && launcher->location && strcmp (uri, launcher->location)) {
- GSettings *settings;
-
- settings = panel_layout_get_instance_settings (launcher->info->settings,
- PANEL_LAUNCHER_SCHEMA);
- g_settings_set_string (settings, PANEL_LOCATION_KEY, uri);
- g_object_unref (settings);
-
- if (launcher->location)
- g_free (launcher->location);
- launcher->location = g_strdup (uri);
- }
-}
-
static void
launcher_error_reported (GtkWidget *dialog,
const char *primary,
@@ -919,146 +125,6 @@ launcher_error_reported (GtkWidget *dialog,
primary, secondary);
}
-void
-launcher_properties (Launcher *launcher)
-{
- if (launcher->prop_dialog != NULL) {
- gtk_window_set_screen (GTK_WINDOW (launcher->prop_dialog),
- gtk_widget_get_screen (launcher->button));
- gtk_window_present (GTK_WINDOW (launcher->prop_dialog));
- return;
- }
-
- launcher->prop_dialog = panel_ditem_editor_new (NULL,
- launcher->key_file,
- launcher->location,
- _("Launcher Properties"));
- gtk_window_set_screen (GTK_WINDOW (launcher->prop_dialog),
- gtk_widget_get_screen (launcher->button));
-
- panel_widget_register_open_dialog (PANEL_WIDGET
- (gtk_widget_get_parent (launcher->info->widget)),
- launcher->prop_dialog);
-
- panel_ditem_register_save_uri_func (PANEL_DITEM_EDITOR (launcher->prop_dialog),
- launcher_save_uri,
- launcher);
-
- g_signal_connect (launcher->prop_dialog, "changed",
- G_CALLBACK (launcher_changed), launcher);
-
- g_signal_connect (launcher->prop_dialog, "command_changed",
- G_CALLBACK (launcher_command_changed), launcher);
-
- g_signal_connect (launcher->prop_dialog, "saved",
- G_CALLBACK (launcher_saved), launcher);
-
- g_signal_connect (launcher->prop_dialog, "error_reported",
- G_CALLBACK (launcher_error_reported), NULL);
-
- g_signal_connect (launcher->prop_dialog, "destroy",
- G_CALLBACK (gtk_widget_destroyed),
- &launcher->prop_dialog);
-
- gtk_widget_show (launcher->prop_dialog);
-}
-
-static gboolean
-lancher_properties_enabled (void)
-{
- if (panel_lockdown_get_panels_locked_down_s () ||
- panel_lockdown_get_disable_command_line_s ())
- return FALSE;
-
- return TRUE;
-}
-
-static Launcher *
-load_launcher_applet (const char *location,
- PanelWidget *panel,
- const char *id,
- GSettings *settings)
-{
- Launcher *launcher;
-
- launcher = create_launcher (location);
-
- if (!launcher)
- return NULL;
-
- launcher->info = panel_applet_register (launcher->button, panel,
- PANEL_OBJECT_LAUNCHER, id,
- settings,
- launcher, free_launcher);
- if (!launcher->info) {
- free_launcher (launcher);
- return NULL;
- }
-
- panel_applet_add_callback (launcher->info,
- "launch",
- _("_Launch"),
- NULL);
-
- panel_applet_add_callback (launcher->info,
- "properties",
- _("_Properties"),
- lancher_properties_enabled);
-
- panel_widget_set_applet_expandable (panel, GTK_WIDGET (launcher->button), FALSE, TRUE);
- panel_widget_set_applet_size_constrained (panel, GTK_WIDGET (launcher->button), TRUE);
-
- /* setup button according to ditem */
- setup_button (launcher);
-
- return launcher;
-}
-
-void
-launcher_load (PanelWidget *panel_widget,
- const char *id,
- GSettings *settings)
-{
- GSettings *settings_instance;
- Launcher *launcher;
- char *launcher_location;
-
- g_return_if_fail (panel_widget != NULL);
- g_return_if_fail (id != NULL);
-
- settings_instance = panel_layout_get_instance_settings (settings,
- PANEL_LAUNCHER_SCHEMA);
-
- launcher_location = g_settings_get_string (settings_instance,
- PANEL_LOCATION_KEY);
-
- if (PANEL_GLIB_STR_EMPTY (launcher_location)) {
- g_printerr (_("Launcher location is not set, cannot load launcher\n"));
- g_free (launcher_location);
- g_object_unref (settings_instance);
- return;
- }
-
- launcher = load_launcher_applet (launcher_location,
- panel_widget,
- id, settings);
-
- if (launcher) {
- if (!g_settings_is_writable (settings_instance,
- PANEL_LOCATION_KEY)) {
- AppletUserMenu *menu;
-
- menu = panel_applet_get_callback (launcher->info->user_menu,
- "properties");
- if (menu != NULL)
- menu->sensitive = FALSE;
- }
- }
-
- g_free (launcher_location);
- g_object_unref (settings_instance);
-}
-
static void
launcher_new_saved (GtkWidget *dialog,
gpointer data)
@@ -1285,34 +351,3 @@ find_launcher (const char *path)
return NULL;
}
-
-void
-panel_launcher_set_dnd_enabled (Launcher *launcher,
- gboolean dnd_enabled)
-{
- GdkPixbuf *pixbuf;
-
- if (dnd_enabled) {
- static GtkTargetEntry dnd_targets[] = {
- { (gchar *) "application/x-panel-icon-internal", 0, TARGET_ICON_INTERNAL },
- { (gchar *) "text/uri-list", 0, TARGET_URI_LIST }
- };
-
- gtk_widget_set_has_window (launcher->button, TRUE);
- gtk_drag_source_set (launcher->button,
- GDK_BUTTON1_MASK,
- dnd_targets, 2,
- GDK_ACTION_COPY | GDK_ACTION_MOVE);
- //FIXME: this doesn't work since the pixbuf isn't loaded yet
- pixbuf = button_widget_get_pixbuf (BUTTON_WIDGET (launcher->button));
- if (pixbuf) {
- gtk_drag_source_set_icon_pixbuf (launcher->button,
- pixbuf);
- g_object_unref (pixbuf);
- }
- gtk_widget_set_has_window (launcher->button, FALSE);
-
-
- } else
- gtk_drag_source_unset (launcher->button);
-}
diff --git a/gnome-panel/launcher.h b/gnome-panel/launcher.h
index 350b7bd8a..711c1401d 100644
--- a/gnome-panel/launcher.h
+++ b/gnome-panel/launcher.h
@@ -22,11 +22,6 @@ typedef struct {
char *location;
GKeyFile *key_file;
-
- GtkWidget *prop_dialog;
- GSList *error_dialogs;
-
- gulong destroy_handler;
} Launcher;
void panel_launcher_create (PanelToplevel *toplevel,
@@ -46,29 +41,12 @@ void panel_launcher_create_from_info (PanelToplevel *toplevel,
const char *comment,
const char *icon);
-void launcher_launch (Launcher *launcher,
- GtkWidget *widget);
-
-void launcher_properties (Launcher *launcher);
-
-void launcher_load (PanelWidget *panel_widget,
- const char *id,
- GSettings *settings);
-
-void panel_launcher_delete (Launcher *launcher);
-
void ask_about_launcher (const char *file,
PanelWidget *panel,
PanelObjectPackType pack_type);
Launcher * find_launcher (const char *path);
-void launcher_properties_destroy (Launcher *launcher);
-
-void panel_launcher_set_dnd_enabled (Launcher *launcher,
- gboolean dnd_enabled);
-
-
G_END_DECLS
#endif
diff --git a/gnome-panel/libpanel-util/panel-launch.c b/gnome-panel/libpanel-util/panel-launch.c
index 44ebfdef1..290315ef2 100644
--- a/gnome-panel/libpanel-util/panel-launch.c
+++ b/gnome-panel/libpanel-util/panel-launch.c
@@ -99,7 +99,7 @@ gather_pid_callback (GDesktopAppInfo *gapp,
g_child_watch_add (pid, dummy_child_watch, NULL);
}
-gboolean
+static gboolean
panel_app_info_launch_uris (GAppInfo *appinfo,
GList *uris,
GdkScreen *screen,
@@ -132,34 +132,6 @@ panel_app_info_launch_uris (GAppInfo *appinfo,
screen, local_error, error);
}
-gboolean
-panel_launch_key_file (GKeyFile *keyfile,
- GList *uri_list,
- GdkScreen *screen,
- GError **error)
-{
- GDesktopAppInfo *appinfo;
- gboolean retval;
-
- g_return_val_if_fail (keyfile != NULL, FALSE);
- g_return_val_if_fail (GDK_IS_SCREEN (screen), FALSE);
- g_return_val_if_fail (error == NULL || *error == NULL, FALSE);
-
- appinfo = g_desktop_app_info_new_from_keyfile (keyfile);
-
- if (appinfo == NULL)
- return FALSE;
-
- retval = panel_app_info_launch_uris (G_APP_INFO (appinfo),
- uri_list, screen,
- gtk_get_current_event_time (),
- error);
-
- g_object_unref (appinfo);
-
- return retval;
-}
-
gboolean
panel_launch_desktop_file (const char *desktop_file,
GdkScreen *screen,
diff --git a/gnome-panel/libpanel-util/panel-launch.h b/gnome-panel/libpanel-util/panel-launch.h
index b2c5a4bd3..608482bca 100644
--- a/gnome-panel/libpanel-util/panel-launch.h
+++ b/gnome-panel/libpanel-util/panel-launch.h
@@ -28,17 +28,6 @@
G_BEGIN_DECLS
-gboolean panel_app_info_launch_uris (GAppInfo *appinfo,
- GList *uris,
- GdkScreen *screen,
- guint32 timestamp,
- GError **error);
-
-gboolean panel_launch_key_file (GKeyFile *keyfile,
- GList *uri_list,
- GdkScreen *screen,
- GError **error);
-
gboolean panel_launch_desktop_file (const char *desktop_file,
GdkScreen *screen,
GError **error);
diff --git a/gnome-panel/panel-ditem-editor.c b/gnome-panel/panel-ditem-editor.c
index cd0413e5e..43b9896a6 100644
--- a/gnome-panel/panel-ditem-editor.c
+++ b/gnome-panel/panel-ditem-editor.c
@@ -1589,14 +1589,6 @@ panel_ditem_editor_get_key_file (PanelDItemEditor *dialog)
return dialog->priv->key_file;
}
-GKeyFile *
-panel_ditem_editor_get_revert_key_file (PanelDItemEditor *dialog)
-{
- g_return_val_if_fail (PANEL_IS_DITEM_EDITOR (dialog), NULL);
-
- return dialog->priv->revert_key_file;
-}
-
const char *
panel_ditem_editor_get_uri (PanelDItemEditor *dialog)
{
diff --git a/gnome-panel/panel-ditem-editor.h b/gnome-panel/panel-ditem-editor.h
index 6f3239059..13f4f95d1 100644
--- a/gnome-panel/panel-ditem-editor.h
+++ b/gnome-panel/panel-ditem-editor.h
@@ -89,7 +89,6 @@ GtkWidget *panel_ditem_editor_new (GtkWindow *parent,
void panel_ditem_editor_sync_display (PanelDItemEditor *dialog);
GKeyFile *panel_ditem_editor_get_key_file (PanelDItemEditor *dialog);
-GKeyFile *panel_ditem_editor_get_revert_key_file (PanelDItemEditor *dialog);
void panel_ditem_editor_set_uri (PanelDItemEditor *dialog,
const char *uri);
diff --git a/gnome-panel/panel-object-loader.c b/gnome-panel/panel-object-loader.c
index 830cc3042..76a62f06a 100644
--- a/gnome-panel/panel-object-loader.c
+++ b/gnome-panel/panel-object-loader.c
@@ -201,9 +201,6 @@ panel_object_loader_idle_handler (gpointer dummy)
object->settings);
break;
case PANEL_OBJECT_LAUNCHER:
- launcher_load (panel_widget,
- object->id,
- object->settings);
break;
case PANEL_OBJECT_ACTION:
panel_action_button_load (panel_widget,
@@ -344,9 +341,10 @@ static struct {
PanelObjectType type;
const char *id;
gboolean has_detail;
+ gboolean load;
} panel_object_iid_map[] = {
- { PANEL_OBJECT_ACTION, "ActionButton" , TRUE },
- { PANEL_OBJECT_LAUNCHER, "Launcher" , FALSE }
+ { PANEL_OBJECT_ACTION, "ActionButton", TRUE, TRUE },
+ { PANEL_OBJECT_LAUNCHER, "Launcher", FALSE, FALSE }
};
char *
@@ -409,6 +407,9 @@ panel_object_iid_to_type (const char *iid,
instance_id += 2;
for (i = 0; i < G_N_ELEMENTS (panel_object_iid_map); i++) {
+ if (!panel_object_iid_map[i].load)
+ continue;
+
if (!panel_object_iid_map[i].has_detail &&
g_strcmp0 (panel_object_iid_map[i].id,
instance_id) == 0) {
diff --git a/gnome-panel/panel-util.c b/gnome-panel/panel-util.c
index 163436773..cc22832df 100644
--- a/gnome-panel/panel-util.c
+++ b/gnome-panel/panel-util.c
@@ -296,31 +296,6 @@ panel_launcher_get_personal_path (void)
return panel_util_get_from_personal_path ("launchers");
}
-gboolean
-panel_launcher_is_in_personal_path (const char *location)
-{
- GFile *file;
- GFile *launchers_dir;
- char *launchers_path;
- gboolean retval;
-
- if (!location)
- return FALSE;
-
- launchers_path = panel_launcher_get_personal_path ();
- launchers_dir = g_file_new_for_path (launchers_path);
- g_free (launchers_path);
-
- file = panel_launcher_get_gfile (location);
-
- retval = g_file_has_prefix (file, launchers_dir);
-
- g_object_unref (file);
- g_object_unref (launchers_dir);
-
- return retval;
-}
-
GFile *
panel_launcher_get_gfile (const char *location)
{
diff --git a/gnome-panel/panel-util.h b/gnome-panel/panel-util.h
index 3123b3fda..c20299c80 100644
--- a/gnome-panel/panel-util.h
+++ b/gnome-panel/panel-util.h
@@ -32,7 +32,6 @@ char *panel_util_get_from_personal_path (const char *file);
GFile *panel_launcher_get_gfile (const char *location);
char *panel_launcher_get_uri (const char *location);
char *panel_launcher_get_filename (const char *location);
-gboolean panel_launcher_is_in_personal_path (const char *location);
char *panel_make_full_path (const char *dir,
const char *filename);
diff --git a/gnome-panel/panel.c b/gnome-panel/panel.c
index d78af9352..90a12668c 100644
--- a/gnome-panel/panel.c
+++ b/gnome-panel/panel.c
@@ -709,12 +709,6 @@ drop_internal_icon (PanelWidget *panel,
if (old_launcher && old_launcher->button) {
const char *object_id;
- if (old_launcher->prop_dialog) {
- g_signal_handler_disconnect (old_launcher->button,
- old_launcher->destroy_handler);
- launcher_properties_destroy (old_launcher);
- }
-
object_id = panel_applet_get_id (old_launcher->info);
panel_layout_delete_object (object_id);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]