static void gimp_container_popup_create_view (GimpContainerPopup *popup) { GimpEditor *editor; GtkWidget *button; popup->editor = g_object_new (GIMP_TYPE_CONTAINER_EDITOR, NULL); gimp_container_editor_construct (popup->editor, popup->view_type, popup->container, popup->context, popup->view_size, popup->view_border_width, NULL, NULL, NULL); gimp_container_view_set_reorderable (GIMP_CONTAINER_VIEW (popup->editor->view), FALSE); gimp_container_box_set_size_request (GIMP_CONTAINER_BOX (popup->editor->view), 6 * (popup->default_view_size + 2 * popup->view_border_width), 10 * (popup->default_view_size + 2 * popup->view_border_width)); if (GIMP_IS_EDITOR (popup->editor->view)) gimp_editor_set_show_name (GIMP_EDITOR (popup->editor->view), FALSE); gtk_container_add (GTK_CONTAINER (popup->frame), GTK_WIDGET (popup->editor)); gtk_widget_show (GTK_WIDGET (popup->editor)); editor = GIMP_EDITOR (popup->editor->view); gimp_editor_add_button (editor, GTK_STOCK_ZOOM_OUT, _("Smaller Previews"), NULL, G_CALLBACK (gimp_container_popup_smaller_clicked), NULL, popup); gimp_editor_add_button (editor, GTK_STOCK_ZOOM_IN, _("Larger Previews"), NULL, G_CALLBACK (gimp_container_popup_larger_clicked), NULL, popup); button = gimp_editor_add_stock_box (editor, GIMP_TYPE_VIEW_TYPE, "gimp", G_CALLBACK (gimp_container_popup_view_type_toggled), popup); gimp_int_radio_group_set_active (GTK_RADIO_BUTTON (button), popup->view_type); if (popup->dialog_factory) gimp_editor_add_button (editor, popup->dialog_stock_id, popup->dialog_tooltip, NULL, G_CALLBACK (gimp_container_popup_dialog_clicked), NULL, popup); gtk_widget_grab_focus (GTK_WIDGET (popup->editor)); }
GtkWidget * gimp_document_view_new (GimpViewType view_type, GimpContainer *container, GimpContext *context, gint view_size, gint view_border_width, GimpMenuFactory *menu_factory) { GimpDocumentView *document_view; GimpContainerEditor *editor; document_view = g_object_new (GIMP_TYPE_DOCUMENT_VIEW, NULL); if (! gimp_container_editor_construct (GIMP_CONTAINER_EDITOR (document_view), view_type, container, context, view_size, view_border_width, menu_factory, "<Documents>", "/documents-popup")) { g_object_unref (document_view); return NULL; } editor = GIMP_CONTAINER_EDITOR (document_view); document_view->open_button = gimp_editor_add_action_button (GIMP_EDITOR (editor->view), "documents", "documents-open", "documents-raise-or-open", GDK_SHIFT_MASK, "documents-file-open-dialog", GDK_CONTROL_MASK, NULL); gimp_container_view_enable_dnd (editor->view, GTK_BUTTON (document_view->open_button), GIMP_TYPE_IMAGEFILE); document_view->remove_button = gimp_editor_add_action_button (GIMP_EDITOR (editor->view), "documents", "documents-remove", NULL); gimp_container_view_enable_dnd (editor->view, GTK_BUTTON (document_view->remove_button), GIMP_TYPE_IMAGEFILE); gimp_editor_add_action_button (GIMP_EDITOR (editor->view), "documents", "documents-clear", NULL); document_view->refresh_button = gimp_editor_add_action_button (GIMP_EDITOR (editor->view), "documents", "documents-recreate-preview", "documents-reload-previews", GDK_SHIFT_MASK, "documents-remove-dangling", GDK_CONTROL_MASK, NULL); if (view_type == GIMP_VIEW_TYPE_LIST) { GtkWidget *dnd_widget; dnd_widget = gimp_container_view_get_dnd_widget (editor->view); gimp_dnd_uri_list_source_add (dnd_widget, gimp_document_view_drag_uri_list, editor); } gimp_ui_manager_update (GIMP_EDITOR (editor->view)->ui_manager, editor); return GTK_WIDGET (document_view); }
GtkWidget * gimp_tool_view_new (GimpViewType view_type, GimpContainer *container, GimpContext *context, gint view_size, gint view_border_width, GimpMenuFactory *menu_factory) { GimpToolView *tool_view; GimpContainerEditor *editor; tool_view = g_object_new (GIMP_TYPE_TOOL_VIEW, NULL); if (! gimp_container_editor_construct (GIMP_CONTAINER_EDITOR (tool_view), view_type, container, context, view_size, view_border_width, menu_factory, "<Tools>", "/tools-popup")) { g_object_unref (tool_view); return NULL; } editor = GIMP_CONTAINER_EDITOR (tool_view); tool_view->raise_button = gimp_editor_add_action_button (GIMP_EDITOR (editor->view), "tools", "tools-raise", "tools-raise-to-top", GDK_SHIFT_MASK, NULL); tool_view->lower_button = gimp_editor_add_action_button (GIMP_EDITOR (editor->view), "tools", "tools-lower", "tools-lower-to-bottom", GDK_SHIFT_MASK, NULL); tool_view->reset_button = gimp_editor_add_action_button (GIMP_EDITOR (editor->view), "tools", "tools-reset", NULL); if (view_type == GIMP_VIEW_TYPE_LIST) { GimpContainerTreeView *tree_view = GIMP_CONTAINER_TREE_VIEW (editor->view); GtkWidget *tree_widget = GTK_WIDGET (tree_view); GtkTreeViewColumn *column; GtkCellRenderer *eye_cell; GtkIconSize icon_size; column = gtk_tree_view_column_new (); gtk_tree_view_insert_column (tree_view->view, column, 0); eye_cell = gimp_cell_renderer_toggle_new (GIMP_STOCK_VISIBLE); icon_size = gimp_get_icon_size (GTK_WIDGET (tree_view), GIMP_STOCK_VISIBLE, GTK_ICON_SIZE_BUTTON, view_size - 2 * tree_widget->style->xthickness, view_size - 2 * tree_widget->style->ythickness); g_object_set (eye_cell, "stock-size", icon_size, NULL); gtk_tree_view_column_pack_start (column, eye_cell, FALSE); gtk_tree_view_column_set_cell_data_func (column, eye_cell, gimp_tool_view_eye_data_func, tree_view, NULL); tree_view->toggle_cells = g_list_prepend (tree_view->toggle_cells, eye_cell); g_signal_connect (eye_cell, "clicked", G_CALLBACK (gimp_tool_view_eye_clicked), tree_view); tool_view->visible_handler_id = gimp_container_add_handler (container, "notify::visible", G_CALLBACK (gimp_tool_view_visible_notify), tree_view); } gimp_ui_manager_update (GIMP_EDITOR (editor->view)->ui_manager, editor); return GTK_WIDGET (tool_view); }
GtkWidget * gimp_image_view_new (GimpViewType view_type, GimpContainer *container, GimpContext *context, gint view_size, gint view_border_width, GimpMenuFactory *menu_factory) { GimpImageView *image_view; GimpContainerEditor *editor; image_view = g_object_new (GIMP_TYPE_IMAGE_VIEW, NULL); if (! gimp_container_editor_construct (GIMP_CONTAINER_EDITOR (image_view), view_type, container, context, view_size, view_border_width, menu_factory, "<Images>", "/images-popup")) { g_object_unref (image_view); return NULL; } editor = GIMP_CONTAINER_EDITOR (image_view); image_view->raise_button = gimp_editor_add_action_button (GIMP_EDITOR (editor->view), "images", "images-raise-views", NULL); image_view->new_button = gimp_editor_add_action_button (GIMP_EDITOR (editor->view), "images", "images-new-view", NULL); image_view->delete_button = gimp_editor_add_action_button (GIMP_EDITOR (editor->view), "images", "images-delete", NULL); if (view_type == GIMP_VIEW_TYPE_LIST) { GtkWidget *dnd_widget; dnd_widget = gimp_container_view_get_dnd_widget (editor->view); gimp_dnd_xds_source_add (dnd_widget, (GimpDndDragViewableFunc) gimp_dnd_get_drag_data, NULL); } gimp_container_view_enable_dnd (editor->view, GTK_BUTTON (image_view->raise_button), GIMP_TYPE_IMAGE); gimp_container_view_enable_dnd (editor->view, GTK_BUTTON (image_view->new_button), GIMP_TYPE_IMAGE); gimp_container_view_enable_dnd (editor->view, GTK_BUTTON (image_view->delete_button), GIMP_TYPE_IMAGE); gimp_ui_manager_update (GIMP_EDITOR (editor->view)->ui_manager, editor); return GTK_WIDGET (image_view); }
gboolean gimp_data_factory_view_construct (GimpDataFactoryView *factory_view, GimpViewType view_type, GimpDataFactory *factory, GimpContext *context, gint view_size, gint view_border_width, GimpMenuFactory *menu_factory, const gchar *menu_identifier, const gchar *ui_identifier, const gchar *action_group) { GimpContainerEditor *editor; gchar *str; g_return_val_if_fail (GIMP_IS_DATA_FACTORY_VIEW (factory_view), FALSE); g_return_val_if_fail (GIMP_IS_DATA_FACTORY (factory), FALSE); g_return_val_if_fail (view_size > 0 && view_size <= GIMP_VIEWABLE_MAX_PREVIEW_SIZE, FALSE); g_return_val_if_fail (view_border_width >= 0 && view_border_width <= GIMP_VIEW_MAX_BORDER_WIDTH, FALSE); factory_view->factory = factory; if (! gimp_container_editor_construct (GIMP_CONTAINER_EDITOR (factory_view), view_type, factory->container, context, view_size, view_border_width, menu_factory, menu_identifier, ui_identifier)) { return FALSE; } editor = GIMP_CONTAINER_EDITOR (factory_view); if (GIMP_IS_CONTAINER_TREE_VIEW (editor->view)) { GimpContainerTreeView *tree_view; tree_view = GIMP_CONTAINER_TREE_VIEW (editor->view); gimp_container_tree_view_connect_name_edited (tree_view, G_CALLBACK (gimp_data_factory_view_tree_name_edited), factory_view); } str = g_strdup_printf ("%s-edit", action_group); factory_view->edit_button = gimp_editor_add_action_button (GIMP_EDITOR (editor->view), action_group, str, NULL); g_free (str); if (factory_view->factory->data_new_func) { str = g_strdup_printf ("%s-new", action_group); factory_view->new_button = gimp_editor_add_action_button (GIMP_EDITOR (editor->view), action_group, str, NULL); g_free (str); } str = g_strdup_printf ("%s-duplicate", action_group); factory_view->duplicate_button = gimp_editor_add_action_button (GIMP_EDITOR (editor->view), action_group, str, NULL); g_free (str); str = g_strdup_printf ("%s-delete", action_group); factory_view->delete_button = gimp_editor_add_action_button (GIMP_EDITOR (editor->view), action_group, str, NULL); g_free (str); str = g_strdup_printf ("%s-refresh", action_group); factory_view->refresh_button = gimp_editor_add_action_button (GIMP_EDITOR (editor->view), action_group, str, NULL); g_free (str); gimp_container_view_enable_dnd (editor->view, GTK_BUTTON (factory_view->edit_button), factory->container->children_type); gimp_container_view_enable_dnd (editor->view, GTK_BUTTON (factory_view->duplicate_button), factory->container->children_type); gimp_container_view_enable_dnd (editor->view, GTK_BUTTON (factory_view->delete_button), factory->container->children_type); gimp_ui_manager_update (GIMP_EDITOR (editor->view)->ui_manager, editor); return TRUE; }
GtkWidget * gimp_buffer_view_new (GimpViewType view_type, GimpContainer *container, GimpContext *context, gint view_size, gint view_border_width, GimpMenuFactory *menu_factory) { GimpBufferView *buffer_view; GimpContainerEditor *editor; GtkWidget *frame; GtkWidget *hbox; buffer_view = g_object_new (GIMP_TYPE_BUFFER_VIEW, NULL); if (! gimp_container_editor_construct (GIMP_CONTAINER_EDITOR (buffer_view), view_type, container, context, view_size, view_border_width, menu_factory, "<Buffers>", "/buffers-popup")) { g_object_unref (buffer_view); return NULL; } editor = GIMP_CONTAINER_EDITOR (buffer_view); frame = gtk_frame_new (NULL); gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_IN); gtk_box_pack_start (GTK_BOX (editor), frame, FALSE, FALSE, 0); gtk_box_reorder_child (GTK_BOX (editor), frame, 0); gtk_widget_show (frame); hbox = gtk_hbox_new (FALSE, 2); gtk_container_set_border_width (GTK_CONTAINER (hbox), 2); gtk_container_add (GTK_CONTAINER (frame), hbox); gtk_widget_show (hbox); buffer_view->global_view = gimp_view_new_full_by_types (NULL, GIMP_TYPE_VIEW, GIMP_TYPE_BUFFER, view_size, view_size, view_border_width, FALSE, FALSE, TRUE); gtk_box_pack_start (GTK_BOX (hbox), buffer_view->global_view, FALSE, FALSE, 0); gtk_widget_show (buffer_view->global_view); g_signal_connect_object (editor->view, "notify::view-size", G_CALLBACK (gimp_buffer_view_view_notify), buffer_view, 0); g_signal_connect_object (editor->view, "notify::view-border-width", G_CALLBACK (gimp_buffer_view_view_notify), buffer_view, 0); buffer_view->global_label = gtk_label_new (_("(None)")); gtk_box_pack_start (GTK_BOX (hbox), buffer_view->global_label, FALSE, FALSE, 0); gtk_widget_show (buffer_view->global_label); g_signal_connect_object (context->gimp, "buffer-changed", G_CALLBACK (gimp_buffer_view_buffer_changed), G_OBJECT (buffer_view), 0); gimp_buffer_view_buffer_changed (context->gimp, buffer_view); buffer_view->paste_button = gimp_editor_add_action_button (GIMP_EDITOR (editor->view), "buffers", "buffers-paste", NULL); buffer_view->paste_into_button = gimp_editor_add_action_button (GIMP_EDITOR (editor->view), "buffers", "buffers-paste-into", NULL); buffer_view->paste_as_new_button = gimp_editor_add_action_button (GIMP_EDITOR (editor->view), "buffers", "buffers-paste-as-new", NULL); buffer_view->delete_button = gimp_editor_add_action_button (GIMP_EDITOR (editor->view), "buffers", "buffers-delete", NULL); gimp_container_view_enable_dnd (editor->view, GTK_BUTTON (buffer_view->paste_button), GIMP_TYPE_BUFFER); gimp_container_view_enable_dnd (editor->view, GTK_BUTTON (buffer_view->paste_into_button), GIMP_TYPE_BUFFER); gimp_container_view_enable_dnd (editor->view, GTK_BUTTON (buffer_view->paste_as_new_button), GIMP_TYPE_BUFFER); gimp_container_view_enable_dnd (editor->view, GTK_BUTTON (buffer_view->delete_button), GIMP_TYPE_BUFFER); gimp_ui_manager_update (gimp_editor_get_ui_manager (GIMP_EDITOR (editor->view)), editor); return GTK_WIDGET (buffer_view); }
GtkWidget * gimp_template_view_new (GimpViewType view_type, GimpContainer *container, GimpContext *context, gint view_size, gint view_border_width, GimpMenuFactory *menu_factory) { GimpTemplateView *template_view; GimpContainerEditor *editor; template_view = g_object_new (GIMP_TYPE_TEMPLATE_VIEW, NULL); if (! gimp_container_editor_construct (GIMP_CONTAINER_EDITOR (template_view), view_type, container, context, view_size, view_border_width, menu_factory, "<Templates>", "/templates-popup")) { g_object_unref (template_view); return NULL; } editor = GIMP_CONTAINER_EDITOR (template_view); if (GIMP_IS_CONTAINER_TREE_VIEW (editor->view)) { GimpContainerTreeView *tree_view; tree_view = GIMP_CONTAINER_TREE_VIEW (editor->view); gimp_container_tree_view_connect_name_edited (tree_view, G_CALLBACK (gimp_template_view_tree_name_edited), template_view); } template_view->create_button = gimp_editor_add_action_button (GIMP_EDITOR (editor->view), "templates", "templates-create-image", NULL); template_view->new_button = gimp_editor_add_action_button (GIMP_EDITOR (editor->view), "templates", "templates-new", NULL); template_view->duplicate_button = gimp_editor_add_action_button (GIMP_EDITOR (editor->view), "templates", "templates-duplicate", NULL); template_view->edit_button = gimp_editor_add_action_button (GIMP_EDITOR (editor->view), "templates", "templates-edit", NULL); template_view->delete_button = gimp_editor_add_action_button (GIMP_EDITOR (editor->view), "templates", "templates-delete", NULL); gimp_container_view_enable_dnd (editor->view, GTK_BUTTON (template_view->create_button), GIMP_TYPE_TEMPLATE); gimp_container_view_enable_dnd (editor->view, GTK_BUTTON (template_view->duplicate_button), GIMP_TYPE_TEMPLATE); gimp_container_view_enable_dnd (editor->view, GTK_BUTTON (template_view->edit_button), GIMP_TYPE_TEMPLATE); gimp_container_view_enable_dnd (editor->view, GTK_BUTTON (template_view->delete_button), GIMP_TYPE_TEMPLATE); gimp_ui_manager_update (gimp_editor_get_ui_manager (GIMP_EDITOR (editor->view)), editor); return GTK_WIDGET (template_view); }