static void panel_properties_dialog_setup_opacity_scale (PanelPropertiesDialog *dialog, GtkBuilder *gui) { guint16 opacity; gdouble percentage; dialog->opacity_scale = PANEL_GTK_BUILDER_GET (gui, "opacity_scale"); g_return_if_fail (dialog->opacity_scale != NULL); dialog->opacity_label = PANEL_GTK_BUILDER_GET (gui, "opacity_label"); g_return_if_fail (dialog->opacity_label != NULL); dialog->opacity_legend = PANEL_GTK_BUILDER_GET (gui, "opacity_legend"); g_return_if_fail (dialog->opacity_legend != NULL); opacity = panel_profile_get_background_opacity (dialog->toplevel); percentage = (opacity * 100.0) / 65535; gtk_range_set_value (GTK_RANGE (dialog->opacity_scale), percentage); g_signal_connect_swapped (dialog->opacity_scale, "value_changed", G_CALLBACK (panel_properties_dialog_opacity_changed), dialog); if ( ! panel_profile_background_key_is_writable (dialog->toplevel, "opacity")) { gtk_widget_set_sensitive (dialog->opacity_scale, FALSE); gtk_widget_set_sensitive (dialog->opacity_label, FALSE); gtk_widget_set_sensitive (dialog->opacity_legend, FALSE); gtk_widget_show (dialog->writability_warn_background); } }
static void panel_properties_dialog_setup_image_chooser (PanelPropertiesDialog *dialog, GtkBuilder *gui) { char *image; dialog->image_chooser = PANEL_GTK_BUILDER_GET (gui, "image_chooser"); panel_gtk_file_chooser_add_image_preview (GTK_FILE_CHOOSER (dialog->image_chooser)); image = panel_profile_get_background_image (dialog->toplevel); if (PANEL_GLIB_STR_EMPTY (image)) gtk_file_chooser_unselect_all (GTK_FILE_CHOOSER (dialog->image_chooser)); else gtk_file_chooser_set_filename (GTK_FILE_CHOOSER (dialog->image_chooser), image); if (image) g_free (image); dialog->selection_emitted = 0; g_signal_connect_swapped (dialog->image_chooser, "selection-changed", G_CALLBACK (panel_properties_dialog_image_changed), dialog); if ( ! panel_profile_background_key_is_writable (dialog->toplevel, "image")) { gtk_widget_set_sensitive (dialog->image_chooser, FALSE); gtk_widget_show (dialog->writability_warn_background); } }
static void panel_properties_dialog_setup_color_button (PanelPropertiesDialog *dialog, GtkBuilder *gui) { PanelColor color; dialog->color_button = PANEL_GTK_BUILDER_GET (gui, "color_button"); g_return_if_fail (dialog->color_button != NULL); dialog->color_label = PANEL_GTK_BUILDER_GET (gui, "color_label"); g_return_if_fail (dialog->color_label != NULL); panel_profile_get_background_color (dialog->toplevel, &color); gtk_color_button_set_color (GTK_COLOR_BUTTON (dialog->color_button), &(color.gdk)); g_signal_connect_swapped (dialog->color_button, "color_set", G_CALLBACK (panel_properties_dialog_color_changed), dialog); if ( ! panel_profile_background_key_is_writable (dialog->toplevel, "color")) { gtk_widget_set_sensitive (dialog->color_button, FALSE); gtk_widget_set_sensitive (dialog->color_label, FALSE); gtk_widget_show (dialog->writability_warn_background); } }
static gboolean set_background_image_from_uri (PanelToplevel *toplevel, const char *uri) { char *image; if ( ! panel_profile_background_key_is_writable (toplevel, "type") || ! panel_profile_background_key_is_writable (toplevel, "image")) return FALSE; if (!(image = g_filename_from_uri (uri, NULL, NULL))) return FALSE; panel_profile_set_background_image (toplevel, image); panel_profile_set_background_type (toplevel, PANEL_BACK_IMAGE); g_free (image); return FALSE; }
static gboolean set_background_color (PanelToplevel *toplevel, guint16 *dropped) { PanelColor color; if (!dropped) return FALSE; if ( ! panel_profile_background_key_is_writable (toplevel, "color") || ! panel_profile_background_key_is_writable (toplevel, "type")) return FALSE; color.gdk.red = dropped [0]; color.gdk.green = dropped [1]; color.gdk.blue = dropped [2]; color.alpha = 65535; panel_profile_set_background_color (toplevel, &color); panel_profile_set_background_type (toplevel, PANEL_BACK_COLOR); return TRUE; }
static void panel_properties_dialog_setup_background_radios (PanelPropertiesDialog *dialog, GtkBuilder *gui) { PanelBackgroundType background_type; GtkWidget *active_radio; dialog->default_radio = PANEL_GTK_BUILDER_GET (gui, "default_radio"); dialog->color_radio = PANEL_GTK_BUILDER_GET (gui, "color_radio"); dialog->image_radio = PANEL_GTK_BUILDER_GET (gui, "image_radio"); dialog->color_widgets = PANEL_GTK_BUILDER_GET (gui, "color_widgets"); dialog->image_widgets = PANEL_GTK_BUILDER_GET (gui, "image_widgets"); background_type = panel_profile_get_background_type (dialog->toplevel); switch (background_type) { case PANEL_BACK_NONE: active_radio = dialog->default_radio; break; case PANEL_BACK_COLOR: active_radio = dialog->color_radio; break; case PANEL_BACK_IMAGE: active_radio = dialog->image_radio; break; default: active_radio = NULL; g_assert_not_reached (); } gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (active_radio), TRUE); panel_properties_dialog_upd_sensitivity (dialog, background_type); g_signal_connect_swapped (dialog->default_radio, "toggled", G_CALLBACK (panel_properties_dialog_background_toggled), dialog); g_signal_connect_swapped (dialog->color_radio, "toggled", G_CALLBACK (panel_properties_dialog_background_toggled), dialog); g_signal_connect_swapped (dialog->image_radio, "toggled", G_CALLBACK (panel_properties_dialog_background_toggled), dialog); if ( ! panel_profile_background_key_is_writable (dialog->toplevel, "type")) { gtk_widget_set_sensitive (dialog->default_radio, FALSE); gtk_widget_set_sensitive (dialog->color_radio, FALSE); gtk_widget_set_sensitive (dialog->image_radio, FALSE); gtk_widget_show (dialog->writability_warn_background); } }
void panel_receive_dnd_data (PanelWidget *panel, guint info, int pos, GtkSelectionData *selection_data, GdkDragContext *context, guint time_) { const guchar *data; gboolean success = FALSE; if (panel_lockdown_get_locked_down ()) { 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, pos, (char *)data); break; case TARGET_NETSCAPE_URL: success = drop_url (panel, pos, (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: if (panel_profile_background_key_is_writable (panel->toplevel, "type")) { panel_profile_set_background_type (panel->toplevel, PANEL_BACK_NONE); success = TRUE; } else { success = FALSE; } break; case TARGET_DIRECTORY: success = drop_uri (panel, pos, (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_profile_id_lists_are_writable ()) { mate_panel_applet_frame_create (panel->toplevel, pos, (char *) data); success = TRUE; } else { success = FALSE; } break; case TARGET_APPLET_INTERNAL: success = drop_internal_applet (panel, pos, (char *)data, gdk_drag_context_get_selected_action (context)); break; case TARGET_ICON_INTERNAL: success = drop_internal_icon (panel, pos, (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_); }