void setup_internal_applet_drag (GtkWidget *menuitem, PanelActionButtonType type) { static GtkTargetEntry menu_item_targets[] = { { "application/x-panel-applet-internal", 0, 0 } }; if (panel_lockdown_get_panels_locked_down_s ()) return; gtk_drag_source_set (menuitem, GDK_BUTTON1_MASK|GDK_BUTTON2_MASK, menu_item_targets, 1, GDK_ACTION_COPY); if (panel_action_get_icon_name (type) != NULL) gtk_drag_source_set_icon_name (menuitem, panel_action_get_icon_name (type)); g_signal_connect (G_OBJECT (menuitem), "drag_begin", G_CALLBACK (drag_begin_menu_cb), NULL); g_signal_connect_data (G_OBJECT (menuitem), "drag_data_get", G_CALLBACK (drag_data_get_string_cb), g_strdup (panel_action_get_drag_id (type)), (GClosureNotify)g_free, 0 /* connect_flags */); g_signal_connect (G_OBJECT (menuitem), "drag_end", G_CALLBACK (drag_end_menu_cb), NULL); }
static gboolean panel_check_drop_forbidden (PanelWidget *panel, GdkDragContext *context, guint info, guint time_) { if (!panel) return FALSE; if (panel_lockdown_get_panels_locked_down_s ()) return FALSE; if (info == TARGET_ICON_INTERNAL || info == TARGET_APPLET_INTERNAL) { if (gdk_drag_context_get_actions (context) & GDK_ACTION_MOVE) gdk_drag_status (context, GDK_ACTION_MOVE, time_); else gdk_drag_status (context, gdk_drag_context_get_suggested_action (context), time_); } else if (gdk_drag_context_get_actions (context) & GDK_ACTION_COPY) gdk_drag_status (context, GDK_ACTION_COPY, time_); else gdk_drag_status (context, gdk_drag_context_get_suggested_action (context), time_); return TRUE; }
void setup_uri_drag (GtkWidget *menuitem, const char *uri, const char *icon) { static GtkTargetEntry menu_item_targets[] = { { "text/uri-list", 0, 0 } }; if (panel_lockdown_get_panels_locked_down_s ()) return; gtk_drag_source_set (menuitem, GDK_BUTTON1_MASK|GDK_BUTTON2_MASK, menu_item_targets, 1, GDK_ACTION_COPY); if (icon != NULL) gtk_drag_source_set_icon_name (menuitem, icon); g_signal_connect (G_OBJECT (menuitem), "drag_begin", G_CALLBACK (drag_begin_menu_cb), NULL); g_signal_connect_data (G_OBJECT (menuitem), "drag_data_get", G_CALLBACK (drag_data_get_string_cb), g_strdup (uri), (GClosureNotify)g_free, 0 /* connect_flags */); g_signal_connect (G_OBJECT (menuitem), "drag_end", G_CALLBACK (drag_end_menu_cb), NULL); }
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; }
gboolean panel_applet_can_freely_move (AppletInfo *applet) { /* if we check for more lockdown than this, then we'll need to update * callers that use panel_lockdown_on_notify() */ if (panel_lockdown_get_panels_locked_down_s ()) return FALSE; return (g_settings_is_writable (applet->settings, PANEL_OBJECT_TOPLEVEL_ID_KEY) && g_settings_is_writable (applet->settings, PANEL_OBJECT_PACK_TYPE_KEY) && g_settings_is_writable (applet->settings, PANEL_OBJECT_PACK_INDEX_KEY)); }
static void panel_context_menu_setup_delete_panel_item (GtkWidget *menuitem, PanelToplevel *toplevel) { gboolean sensitive; g_assert (PANEL_IS_TOPLEVEL (toplevel)); sensitive = !panel_toplevel_is_last (toplevel) && !panel_lockdown_get_panels_locked_down_s () && panel_layout_is_writable (); gtk_widget_set_sensitive (menuitem, sensitive); }
static GtkWidget * panel_applet_get_edit_menu (AppletInfo *info) { GtkWidget *menu; GtkWidget *menuitem; GtkWidget *image; gboolean movable; gboolean removable; if (info->edit_menu) return info->edit_menu; if (panel_lockdown_get_panels_locked_down_s ()) return NULL; menu = panel_applet_create_bare_menu (info); movable = panel_applet_can_freely_move (info); removable = panel_layout_is_writable (); menuitem = gtk_menu_item_new_with_mnemonic (_("_Move")); g_signal_connect (menuitem, "activate", G_CALLBACK (move_applet_callback), info); gtk_widget_show (menuitem); gtk_menu_shell_append (GTK_MENU_SHELL (menu), menuitem); gtk_widget_set_sensitive (menuitem, movable); menuitem = gtk_image_menu_item_new_with_mnemonic (_("_Remove From Panel")); image = gtk_image_new_from_stock (GTK_STOCK_REMOVE, GTK_ICON_SIZE_MENU); gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menuitem), image); g_signal_connect (menuitem, "activate", G_CALLBACK (applet_remove_callback), info); gtk_widget_show (menuitem); gtk_menu_shell_append (GTK_MENU_SHELL (menu), menuitem); gtk_widget_set_sensitive (menuitem, removable); info->edit_menu = menu; panel_lockdown_on_notify (panel_lockdown_get (), "panels-locked-down", G_OBJECT (info->edit_menu), panel_applet_edit_menu_lockdown_changed, info); return info->edit_menu; }
static gboolean screensaver_properties_enabled (void) { char *desktop; gboolean found; if (panel_lockdown_get_panels_locked_down_s () || panel_lockdown_get_disable_lock_screen_s ()) return FALSE; desktop = panel_g_lookup_in_applications_dirs ("gnome-screen-panel.desktop"); found = (desktop != NULL); g_free (desktop); return found; }
GtkWidget * panel_context_menu_create (PanelWidget *panel) { GtkWidget *retval; if (panel_lockdown_get_panels_locked_down_s ()) return NULL; retval = create_empty_menu (); gtk_widget_set_name (retval, "gnome-panel-context-menu"); panel_context_menu_build_edition (panel, retval); return retval; }
static void panel_context_menu_setup_delete_panel_item (GtkWidget *menu, GtkWidget *menuitem) { PanelWidget *panel_widget; gboolean sensitive; panel_context_menu_check_for_screen (NULL, NULL, NULL); panel_widget = menu_get_panel (menu); g_assert (PANEL_IS_TOPLEVEL (panel_widget->toplevel)); sensitive = !panel_toplevel_is_last (panel_widget->toplevel) && !panel_lockdown_get_panels_locked_down_s () && panel_layout_is_writable (); gtk_widget_set_sensitive (menuitem, sensitive); }
GtkWidget * panel_context_menu_create (PanelWidget *panel) { GtkWidget *retval; if (panel_lockdown_get_panels_locked_down_s ()) return NULL; retval = create_empty_menu (); gtk_widget_set_name (retval, "gnome-panel-context-menu"); panel_context_menu_build_edition (panel, retval); //FIXME: can we get rid of this? (needed by menu_get_panel()) g_object_set_data (G_OBJECT (retval), "menu_panel", panel); g_signal_connect (retval, "event", G_CALLBACK (panel_context_menu_check_for_screen), NULL); return retval; }
static void panel_receive_dnd_data (PanelWidget *panel, guint info, PanelObjectPackType pack_type, int pack_index, GtkSelectionData *selection_data, GdkDragContext *context, guint time_) { const guchar *data; gboolean success = FALSE; if (panel_lockdown_get_panels_locked_down_s ()) { gtk_drag_finish (context, FALSE, FALSE, time_); return; } data = gtk_selection_data_get_data (selection_data); switch (info) { case TARGET_URL: success = drop_urilist (panel, pack_type, pack_index, (char *)data); break; case TARGET_NETSCAPE_URL: success = drop_url (panel, pack_type, pack_index, (char *)data); break; case TARGET_COLOR: success = set_background_color (panel->toplevel, (guint16 *) data); break; case TARGET_BGIMAGE: success = set_background_image_from_uri (panel->toplevel, (char *) data); break; case TARGET_BACKGROUND_RESET: success = reset_background (panel->toplevel); break; case TARGET_DIRECTORY: success = drop_uri (panel, pack_type, pack_index, (char *)data, PANEL_ICON_FOLDER); break; case TARGET_APPLET: if (!gtk_selection_data_get_data (selection_data)) { gtk_drag_finish (context, FALSE, FALSE, time_); return; } if (panel_layout_is_writable ()) { panel_applet_frame_create (panel->toplevel, pack_type, pack_index, (char *) data); success = TRUE; } else { success = FALSE; } break; case TARGET_APPLET_INTERNAL: success = drop_internal_applet (panel, pack_type, pack_index, (char *)data, gdk_drag_context_get_selected_action (context)); break; case TARGET_ICON_INTERNAL: success = drop_internal_icon (panel, pack_type, pack_index, (char *)data, gdk_drag_context_get_selected_action (context)); break; default: gtk_drag_finish (context, FALSE, FALSE, time_); return; } gtk_drag_finish (context, success, FALSE, time_); }
static void create_menuitem (GtkWidget *menu, GMenuTreeEntry *entry, GMenuTreeDirectory *alias_directory) { GtkWidget *menuitem; menuitem = panel_image_menu_item_new2 (); if (alias_directory) panel_load_menu_image_deferred (menuitem, panel_menu_icon_get_size (), gmenu_tree_directory_get_icon (alias_directory), NULL, NULL); else panel_load_menu_image_deferred (menuitem, panel_menu_icon_get_size (), g_app_info_get_icon (G_APP_INFO (gmenu_tree_entry_get_app_info (entry))), NULL, NULL); setup_menuitem (menuitem, panel_menu_icon_get_size (), NULL, alias_directory ? gmenu_tree_directory_get_name (alias_directory) : g_app_info_get_display_name (G_APP_INFO (gmenu_tree_entry_get_app_info (entry)))); if (alias_directory && gmenu_tree_directory_get_comment (alias_directory)) panel_util_set_tooltip_text (menuitem, gmenu_tree_directory_get_comment (alias_directory)); else if (!alias_directory) { const char *description = g_app_info_get_description (G_APP_INFO (gmenu_tree_entry_get_app_info (entry))); if (!description) description = g_desktop_app_info_get_generic_name (gmenu_tree_entry_get_app_info (entry)); if (description) panel_util_set_tooltip_text (menuitem, description); } g_signal_connect_after (menuitem, "button_press_event", G_CALLBACK (menu_dummy_button_press_event), NULL); if (!panel_lockdown_get_panels_locked_down_s ()) { GIcon *icon; static GtkTargetEntry menu_item_targets[] = { { "text/uri-list", 0, 0 } }; gtk_drag_source_set (menuitem, GDK_BUTTON1_MASK | GDK_BUTTON2_MASK, menu_item_targets, 1, GDK_ACTION_COPY); icon = g_app_info_get_icon (G_APP_INFO (gmenu_tree_entry_get_app_info (entry))); if (icon != NULL) gtk_drag_source_set_icon_gicon (menuitem, icon); g_signal_connect (G_OBJECT (menuitem), "drag_begin", G_CALLBACK (drag_begin_menu_cb), NULL); g_signal_connect (menuitem, "drag_data_get", G_CALLBACK (drag_data_get_menu_cb), entry); g_signal_connect (menuitem, "drag_end", G_CALLBACK (drag_end_menu_cb), NULL); } gtk_menu_shell_append (GTK_MENU_SHELL (menu), menuitem); g_signal_connect (menuitem, "activate", G_CALLBACK (activate_app_def), entry); gtk_widget_show (menuitem); }