GtkWidget * gimp_toolbox_color_area_create (GimpToolbox *toolbox, gint width, gint height) { GimpContext *context; g_return_val_if_fail (GIMP_IS_TOOLBOX (toolbox), NULL); context = gimp_toolbox_get_context (toolbox); color_area = gimp_fg_bg_editor_new (context); gtk_widget_set_size_request (color_area, width, height); gtk_widget_add_events (color_area, GDK_ENTER_NOTIFY_MASK | GDK_LEAVE_NOTIFY_MASK); gimp_help_set_help_data (color_area, _("Foreground & background colors.\n" "The black and white squares reset colors.\n" "The arrows swap colors.\n" "Click to open the color selection dialog."), NULL); g_signal_connect (color_area, "color-clicked", G_CALLBACK (color_area_color_clicked), context); return color_area; }
GtkWidget * gimp_toolbox_image_area_create (GimpToolbox *toolbox, gint width, gint height) { GimpContext *context; GtkWidget *image_view; gchar *tooltip; g_return_val_if_fail (GIMP_IS_TOOLBOX (toolbox), NULL); context = gimp_toolbox_get_context (toolbox); image_view = gimp_view_new_full_by_types (context, GIMP_TYPE_VIEW, GIMP_TYPE_IMAGE, width, height, 0, FALSE, TRUE, TRUE); g_signal_connect (image_view, "set-viewable", G_CALLBACK (image_preview_set_viewable), NULL); gimp_view_set_viewable (GIMP_VIEW (image_view), GIMP_VIEWABLE (gimp_context_get_image (context))); gtk_widget_show (image_view); #ifdef GDK_WINDOWING_X11 tooltip = g_strdup_printf ("%s\n%s", _("The active image.\n" "Click to open the Image Dialog."), _("Drag to an XDS enabled file-manager to " "save the image.")); #else tooltip = g_strdup (_("The active image.\n" "Click to open the Image Dialog.")); #endif gimp_help_set_help_data (image_view, tooltip, GIMP_HELP_TOOLBOX_IMAGE_AREA); g_free (tooltip); g_signal_connect_object (context, "image-changed", G_CALLBACK (gimp_view_set_viewable), image_view, G_CONNECT_SWAPPED); g_signal_connect (image_view, "clicked", G_CALLBACK (image_preview_clicked), toolbox); gimp_dnd_viewable_dest_add (image_view, GIMP_TYPE_IMAGE, image_preview_drop_image, context); return image_view; }
void gimp_toolbox_dnd_init (GimpToolbox *toolbox, GtkWidget *vbox) { GimpContext *context = NULL; g_return_if_fail (GIMP_IS_TOOLBOX (toolbox)); g_return_if_fail (GTK_IS_BOX (vbox)); context = gimp_toolbox_get_context (toolbox); /* Before caling any dnd helper functions, setup the drag * destination manually since we want to handle all drag events * manually, otherwise we would not be able to give the drag handler * a chance to handle drag events */ gtk_drag_dest_set (vbox, 0, NULL, 0, GDK_ACTION_COPY | GDK_ACTION_MOVE); gimp_dnd_viewable_dest_add (vbox, GIMP_TYPE_LAYER, gimp_toolbox_drop_drawable, context); gimp_dnd_viewable_dest_add (vbox, GIMP_TYPE_LAYER_MASK, gimp_toolbox_drop_drawable, context); gimp_dnd_viewable_dest_add (vbox, GIMP_TYPE_CHANNEL, gimp_toolbox_drop_drawable, context); gimp_dnd_viewable_dest_add (vbox, GIMP_TYPE_TOOL_INFO, gimp_toolbox_drop_tool, context); gimp_dnd_viewable_dest_add (vbox, GIMP_TYPE_BUFFER, gimp_toolbox_drop_buffer, context); gimp_dnd_component_dest_add (vbox, gimp_toolbox_drop_component, context); gimp_dnd_uri_list_dest_add (vbox, gimp_toolbox_drop_uri_list, context); gimp_dnd_pixbuf_dest_add (vbox, gimp_toolbox_drop_pixbuf, context); }
GimpSessionInfoDock * gimp_session_info_dock_from_widget (GimpDock *dock) { GimpSessionInfoDock *dock_info; GList *list; GtkWidget *parent; g_return_val_if_fail (GIMP_IS_DOCK (dock), NULL); dock_info = gimp_session_info_dock_new (GIMP_IS_TOOLBOX (dock) ? "gimp-toolbox" : "gimp-dock"); for (list = gimp_dock_get_dockbooks (dock); list; list = g_list_next (list)) { GimpSessionInfoBook *book; book = gimp_session_info_book_from_widget (list->data); dock_info->books = g_list_prepend (dock_info->books, book); } dock_info->books = g_list_reverse (dock_info->books); dock_info->side = gimp_session_info_dock_get_side (dock); parent = gtk_widget_get_parent (GTK_WIDGET (dock)); if (GTK_IS_PANED (parent)) { GtkPaned *paned = GTK_PANED (parent); if (GTK_WIDGET (dock) == gtk_paned_get_child2 (paned)) dock_info->position = gtk_paned_get_position (paned); } return dock_info; }
GtkWidget * gimp_toolbox_indicator_area_create (GimpToolbox *toolbox) { GimpContext *context; GtkWidget *indicator_table; GtkWidget *brush_view; GtkWidget *pattern_view; GtkWidget *gradient_view; g_return_val_if_fail (GIMP_IS_TOOLBOX (toolbox), NULL); context = GIMP_DOCK (toolbox)->context; indicator_table = gtk_table_new (2, 2, FALSE); gtk_table_set_row_spacings (GTK_TABLE (indicator_table), CELL_SPACING); gtk_table_set_col_spacings (GTK_TABLE (indicator_table), CELL_SPACING); /* brush view */ brush_view = gimp_view_new_full_by_types (context, GIMP_TYPE_VIEW, GIMP_TYPE_BRUSH, CELL_SIZE, CELL_SIZE, 1, FALSE, TRUE, TRUE); gimp_view_set_viewable (GIMP_VIEW (brush_view), GIMP_VIEWABLE (gimp_context_get_brush (context))); gtk_table_attach_defaults (GTK_TABLE (indicator_table), brush_view, 0, 1, 0, 1); gtk_widget_show (brush_view); gimp_help_set_help_data (brush_view, _("The active brush.\n" "Click to open the Brush Dialog."), NULL); g_signal_connect_object (context, "brush-changed", G_CALLBACK (gimp_view_set_viewable), brush_view, G_CONNECT_SWAPPED); g_signal_connect (brush_view, "clicked", G_CALLBACK (brush_preview_clicked), toolbox); gimp_dnd_viewable_dest_add (brush_view, GIMP_TYPE_BRUSH, brush_preview_drop_brush, context); /* pattern view */ pattern_view = gimp_view_new_full_by_types (context, GIMP_TYPE_VIEW, GIMP_TYPE_PATTERN, CELL_SIZE, CELL_SIZE, 1, FALSE, TRUE, TRUE); gimp_view_set_viewable (GIMP_VIEW (pattern_view), GIMP_VIEWABLE (gimp_context_get_pattern (context))); gtk_table_attach_defaults (GTK_TABLE (indicator_table), pattern_view, 1, 2, 0, 1); gtk_widget_show (pattern_view); gimp_help_set_help_data (pattern_view, _("The active pattern.\n" "Click to open the Pattern Dialog."), NULL); g_signal_connect_object (context, "pattern-changed", G_CALLBACK (gimp_view_set_viewable), pattern_view, G_CONNECT_SWAPPED); g_signal_connect (pattern_view, "clicked", G_CALLBACK (pattern_preview_clicked), toolbox); gimp_dnd_viewable_dest_add (pattern_view, GIMP_TYPE_PATTERN, pattern_preview_drop_pattern, context); /* gradient view */ gradient_view = gimp_view_new_full_by_types (context, GIMP_TYPE_VIEW, GIMP_TYPE_GRADIENT, GRAD_CELL_WIDTH, GRAD_CELL_HEIGHT, 1, FALSE, TRUE, TRUE); gimp_view_set_viewable (GIMP_VIEW (gradient_view), GIMP_VIEWABLE (gimp_context_get_gradient (context))); gtk_table_attach_defaults (GTK_TABLE (indicator_table), gradient_view, 0, 2, 1, 2); gtk_widget_show (gradient_view); gimp_help_set_help_data (gradient_view, _("The active gradient.\n" "Click to open the Gradient Dialog."), NULL); g_signal_connect_object (context, "gradient-changed", G_CALLBACK (gimp_view_set_viewable), gradient_view, G_CONNECT_SWAPPED); g_signal_connect (gradient_view, "clicked", G_CALLBACK (gradient_preview_clicked), toolbox); gimp_dnd_viewable_dest_add (gradient_view, GIMP_TYPE_GRADIENT, gradient_preview_drop_gradient, context); gtk_widget_show (indicator_table); return indicator_table; }