void panel_menu_button_set_dnd_enabled (PanelMenuButton *button, gboolean dnd_enabled) { g_return_if_fail (PANEL_IS_MENU_BUTTON (button)); dnd_enabled = dnd_enabled != FALSE; if (button->priv->dnd_enabled == dnd_enabled) return; if (dnd_enabled) { static GtkTargetEntry dnd_targets [] = { { "application/x-mate-panel-applet-internal", 0, 0 } }; char *icon; gtk_widget_set_has_window (GTK_WIDGET (button), TRUE); gtk_drag_source_set (GTK_WIDGET (button), GDK_BUTTON1_MASK, dnd_targets, 1, GDK_ACTION_COPY | GDK_ACTION_MOVE); icon = panel_menu_button_get_icon (button); if (icon != NULL) { gtk_drag_source_set_icon_name (GTK_WIDGET (button), icon); g_free (icon); } gtk_widget_set_has_window (GTK_WIDGET (button), FALSE); } else gtk_drag_source_unset (GTK_WIDGET (button)); }
void panel_menu_button_invoke_menu (PanelMenuButton *button, const char *callback_name) { GdkScreen *screen; g_return_if_fail (PANEL_IS_MENU_BUTTON (button)); g_return_if_fail (callback_name != NULL); screen = gtk_widget_get_screen (GTK_WIDGET (button)); if (!strcmp (callback_name, "help")) { panel_show_help (screen, "mate-user-guide", "gospanel-37", NULL); } else if (!strcmp (callback_name, "edit")) { if (panel_is_program_in_path ("menulibre")) panel_launch_desktop_file_with_fallback ("menulibre.desktop", "menulibre", screen, NULL); else panel_launch_desktop_file_with_fallback ("mozo.desktop", "mozo", screen, NULL); } }
void panel_menu_button_popup_menu (PanelMenuButton *button, guint n_button, guint32 activate_time) { GdkScreen *screen; g_return_if_fail (PANEL_IS_MENU_BUTTON (button)); panel_menu_button_create_menu (button); panel_toplevel_push_autohide_disabler (button->priv->toplevel); button_widget_set_ignore_leave (BUTTON_WIDGET (button), TRUE); screen = gtk_window_get_screen (GTK_WINDOW (button->priv->toplevel)); gtk_menu_set_screen (GTK_MENU (button->priv->menu), screen); gtk_menu_popup (GTK_MENU (button->priv->menu), NULL, NULL, (GtkMenuPositionFunc) mate_panel_applet_position_menu, GTK_WIDGET (button), n_button, activate_time); }
void panel_menu_button_invoke_menu (PanelMenuButton *button, const char *callback_name) { GdkScreen *screen; g_return_if_fail (PANEL_IS_MENU_BUTTON (button)); g_return_if_fail (callback_name != NULL); screen = gtk_widget_get_screen (GTK_WIDGET (button)); if (!strcmp (callback_name, "help")) { panel_show_help (screen, "user-guide", "gospanel-37", NULL); } else if (!strcmp (callback_name, "edit")) { GError *error = NULL; panel_launch_desktop_file_with_fallback ("alacarte.desktop", "alacarte", screen, &error); if (error) { g_error_free (error); panel_launch_desktop_file_with_fallback ( "matemenu-simple-editor.desktop", "matemenu-simple-editor", screen, NULL); } } }
gboolean panel_menu_button_get_use_menu_path (PanelMenuButton *button) { g_return_val_if_fail (PANEL_IS_MENU_BUTTON (button), FALSE); return button->priv->use_menu_path; }
void panel_menu_button_set_use_custom_icon (PanelMenuButton *button, gboolean use_custom_icon) { g_return_if_fail (PANEL_IS_MENU_BUTTON (button)); button->priv->use_custom_icon = use_custom_icon != FALSE; panel_menu_button_set_icon (button); }
void panel_menu_button_set_has_arrow (PanelMenuButton *button, gboolean has_arrow) { g_return_if_fail (PANEL_IS_MENU_BUTTON (button)); button->priv->has_arrow = has_arrow != FALSE; button_widget_set_has_arrow (BUTTON_WIDGET (button), has_arrow); }
static AtkObject * panel_menu_button_accessible_new (GObject *obj) { AtkObject *accessible; g_return_val_if_fail (PANEL_IS_MENU_BUTTON (obj), NULL); accessible = g_object_new (panel_menu_button_accessible_get_type (), NULL); atk_object_initialize (accessible, obj); return accessible; }
void panel_menu_button_set_tooltip (PanelMenuButton *button, const char *tooltip) { g_return_if_fail (PANEL_IS_MENU_BUTTON (button)); g_free (button->priv->tooltip); button->priv->tooltip = NULL; if (tooltip && tooltip [0]) { button->priv->tooltip = g_strdup (tooltip); panel_util_set_tooltip_text (GTK_WIDGET (button), tooltip); } }
void panel_menu_button_set_custom_icon (PanelMenuButton *button, const char *custom_icon) { g_return_if_fail (PANEL_IS_MENU_BUTTON (button)); g_free (button->priv->custom_icon); button->priv->custom_icon = NULL; if (custom_icon && custom_icon [0]) button->priv->custom_icon = g_strdup (custom_icon); panel_menu_button_set_icon (button); }
static void panel_menu_button_pressed (GtkButton *gtk_button) { PanelMenuButton *button; g_return_if_fail (PANEL_IS_MENU_BUTTON (gtk_button)); button = PANEL_MENU_BUTTON (gtk_button); if (GTK_BUTTON_CLASS (panel_menu_button_parent_class)->pressed) GTK_BUTTON_CLASS (panel_menu_button_parent_class)->pressed (gtk_button); panel_menu_button_popup_menu (button, 0, gtk_get_current_event_time()); }
void panel_menu_button_set_use_menu_path (PanelMenuButton *button, gboolean use_menu_path) { g_return_if_fail (PANEL_IS_MENU_BUTTON (button)); use_menu_path = use_menu_path != FALSE; if (button->priv->use_menu_path == use_menu_path) return; button->priv->use_menu_path = use_menu_path; if (button->priv->menu) gtk_menu_detach (GTK_MENU (button->priv->menu)); button->priv->menu = NULL; panel_menu_button_set_icon (button); }
void panel_menu_button_invoke_menu (PanelMenuButton *button, const char *callback_name) { GdkScreen *screen; g_return_if_fail (PANEL_IS_MENU_BUTTON (button)); g_return_if_fail (callback_name != NULL); screen = gtk_widget_get_screen (GTK_WIDGET (button)); if (!strcmp (callback_name, "help")) { panel_show_help (screen, "user-guide.xml", "gospanel-37"); } else if (!strcmp (callback_name, "edit")) { GError *error = NULL; panel_launch_desktop_file ("alacarte.desktop", "alacarte-editor", screen, &error); if (error) { g_error_free (error); error = NULL; panel_launch_desktop_file ("gmenu-simple-editor.desktop", "gmenu-simple-editor", screen, &error); } if (error) { char *primary; primary = g_strdup_printf (_("Could not execute '%s'"), "gmenu-simple-editor"); panel_error_dialog (NULL, screen, "cannot_exec_gmenu-simple-editor", TRUE, primary, error->message); g_free (primary); g_error_free (error); } } }
static void panel_menu_button_drag_data_get (GtkWidget *widget, GdkDragContext *context, GtkSelectionData *selection_data, guint info, guint time) { char *drag_data; g_return_if_fail (PANEL_IS_MENU_BUTTON (widget)); drag_data = g_strdup_printf ("MENU:%d", panel_find_applet_index (widget)); gtk_selection_data_set ( selection_data, gtk_selection_data_get_target (selection_data), 8, (guchar *) drag_data, strlen (drag_data)); g_free (drag_data); }
static void panel_menu_button_clicked (GtkButton *gtk_button) { PanelMenuButton *button; GdkEvent *event; g_return_if_fail (PANEL_IS_MENU_BUTTON (gtk_button)); button = PANEL_MENU_BUTTON (gtk_button); if (GTK_BUTTON_CLASS (panel_menu_button_parent_class)->clicked) GTK_BUTTON_CLASS (panel_menu_button_parent_class)->clicked (gtk_button); if ((event = gtk_get_current_event ())) { panel_menu_button_popup_menu (button, event->button.button, event->button.time); gdk_event_free (event); } else { panel_menu_button_popup_menu (button, 1, GDK_CURRENT_TIME); } }
static void panel_menu_button_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { PanelMenuButton *button; g_return_if_fail (PANEL_IS_MENU_BUTTON (object)); button = PANEL_MENU_BUTTON (object); switch (prop_id) { case PROP_MENU_PATH: panel_menu_button_set_menu_path (button, g_value_get_string (value)); break; case PROP_CUSTOM_ICON: panel_menu_button_set_custom_icon (button, g_value_get_string (value)); break; case PROP_TOOLTIP: panel_menu_button_set_tooltip (button, g_value_get_string (value)); break; case PROP_USE_MENU_PATH: panel_menu_button_set_use_menu_path (button, g_value_get_boolean (value)); break; case PROP_USE_CUSTOM_ICON: panel_menu_button_set_use_custom_icon (button, g_value_get_boolean (value)); break; case PROP_HAS_ARROW: panel_menu_button_set_has_arrow (button, g_value_get_boolean (value)); break; case PROP_DND_ENABLED: panel_menu_button_set_dnd_enabled (button, g_value_get_boolean (value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; } }
void panel_menu_button_set_menu_path (PanelMenuButton *button, const char *menu_uri) { const char *menu_path; char *scheme; g_return_if_fail (PANEL_IS_MENU_BUTTON (button)); scheme = NULL; menu_path = split_menu_uri (menu_uri, &scheme); if (!scheme) return; button->priv->path_root = panel_menu_scheme_to_path_root (scheme); g_free (scheme); if (!button->priv->menu_path && (!menu_path || !menu_path [0])) return; if (button->priv->menu_path && menu_path && !strcmp (button->priv->menu_path, menu_path)) return; g_free (button->priv->menu_path); button->priv->menu_path = NULL; button->priv->menu_path = g_strdup (menu_path); if (button->priv->menu) gtk_menu_detach (GTK_MENU (button->priv->menu)); button->priv->menu = NULL; panel_menu_button_set_icon (button); }
static void panel_menu_button_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { PanelMenuButton *button; g_return_if_fail (PANEL_IS_MENU_BUTTON (object)); button = PANEL_MENU_BUTTON (object); switch (prop_id) { case PROP_MENU_PATH: g_value_set_string (value, button->priv->menu_path); break; case PROP_CUSTOM_ICON: g_value_set_string (value, button->priv->custom_icon); break; case PROP_TOOLTIP: g_value_set_string (value, button->priv->tooltip); break; case PROP_USE_MENU_PATH: g_value_set_boolean (value, button->priv->use_menu_path); break; case PROP_USE_CUSTOM_ICON: g_value_set_boolean (value, button->priv->use_custom_icon); break; case PROP_DND_ENABLED: g_value_set_boolean (value, button->priv->dnd_enabled); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; } }