gboolean gimp_pdb_dialog_set (Gimp *gimp, GimpContainer *container, const gchar *callback_name, const gchar *object_name, ...) { gboolean retval = FALSE; g_return_val_if_fail (GIMP_IS_GIMP (gimp), FALSE); g_return_val_if_fail (GIMP_IS_CONTAINER (container), FALSE); g_return_val_if_fail (callback_name != NULL, FALSE); g_return_val_if_fail (object_name != NULL, FALSE); if (gimp->gui.pdb_dialog_set) { va_list args; va_start (args, object_name); retval = gimp->gui.pdb_dialog_set (gimp, container, callback_name, object_name, args); va_end (args); } return retval; }
GtkWidget * gimp_prop_font_box_new (GimpContainer *container, GimpContext *context, const gchar *label, gint spacing, const gchar *view_type_prop, const gchar *view_size_prop) { GimpViewType view_type; GimpViewSize view_size; g_return_val_if_fail (container == NULL || GIMP_IS_CONTAINER (container), NULL); g_return_val_if_fail (GIMP_IS_CONTEXT (context), NULL); g_object_get (context, view_type_prop, &view_type, view_size_prop, &view_size, NULL); return view_props_connect (font_box_new (container, context, label, spacing, view_type, view_size), context, view_type_prop, view_size_prop); }
gboolean gimp_pdb_dialog_new (Gimp *gimp, GimpContext *context, GimpProgress *progress, GimpContainer *container, const gchar *title, const gchar *callback_name, const gchar *object_name, ...) { gboolean retval = FALSE; g_return_val_if_fail (GIMP_IS_GIMP (gimp), FALSE); g_return_val_if_fail (GIMP_IS_CONTEXT (context), FALSE); g_return_val_if_fail (progress == NULL || GIMP_IS_PROGRESS (progress), FALSE); g_return_val_if_fail (GIMP_IS_CONTAINER (container), FALSE); g_return_val_if_fail (title != NULL, FALSE); g_return_val_if_fail (callback_name != NULL, FALSE); if (gimp->gui.pdb_dialog_new) { va_list args; va_start (args, object_name); retval = gimp->gui.pdb_dialog_new (gimp, context, progress, container, title, callback_name, object_name, args); va_end (args); } return retval; }
GtkWidget * gimp_prop_mybrush_box_new (GimpContainer *container, GimpContext *context, const gchar *label, gint spacing, const gchar *view_type_prop, const gchar *view_size_prop) { GimpViewType view_type = GIMP_VIEW_TYPE_GRID; GimpViewSize view_size = GIMP_VIEW_SIZE_LARGE; g_return_val_if_fail (container == NULL || GIMP_IS_CONTAINER (container), NULL); g_return_val_if_fail (GIMP_IS_CONTEXT (context), NULL); if (view_type_prop && view_size_prop) g_object_get (context, view_type_prop, &view_type, view_size_prop, &view_size, NULL); return view_props_connect (mybrush_box_new (container, context, label, spacing, view_type, view_size), context, view_type_prop, view_size_prop); }
GtkWidget * gimp_container_entry_new (GimpContainer *container, GimpContext *context, gint view_size, gint view_border_width) { GtkWidget *entry; GimpContainerView *view; g_return_val_if_fail (container == NULL || GIMP_IS_CONTAINER (container), NULL); g_return_val_if_fail (context == NULL || GIMP_IS_CONTEXT (context), NULL); entry = g_object_new (GIMP_TYPE_CONTAINER_ENTRY, NULL); view = GIMP_CONTAINER_VIEW (entry); gimp_container_view_set_view_size (view, view_size, view_border_width); if (container) gimp_container_view_set_container (view, container); if (context) gimp_container_view_set_context (view, context); return entry; }
GtkWidget * gimp_container_combo_box_new (GimpContainer *container, GimpContext *context, gint view_size, gint view_border_width) { GtkWidget *combo_box; GimpContainerView *view; g_return_val_if_fail (container == NULL || GIMP_IS_CONTAINER (container), NULL); g_return_val_if_fail (context == NULL || GIMP_IS_CONTEXT (context), NULL); combo_box = g_object_new (GIMP_TYPE_CONTAINER_COMBO_BOX, NULL); view = GIMP_CONTAINER_VIEW (combo_box); gimp_container_view_set_view_size (view, view_size, view_border_width); if (container) gimp_container_view_set_container (view, container); if (context) gimp_container_view_set_context (view, context); return combo_box; }
GtkWidget * gimp_container_grid_view_new (GimpContainer *container, GimpContext *context, gint view_size, gint view_border_width) { GimpContainerGridView *grid_view; GimpContainerView *view; g_return_val_if_fail (container == NULL || GIMP_IS_CONTAINER (container), NULL); g_return_val_if_fail (context == NULL || GIMP_IS_CONTEXT (context), NULL); g_return_val_if_fail (view_size > 0 && view_size <= GIMP_VIEWABLE_MAX_PREVIEW_SIZE, NULL); g_return_val_if_fail (view_border_width >= 0 && view_border_width <= GIMP_VIEW_MAX_BORDER_WIDTH, NULL); grid_view = g_object_new (GIMP_TYPE_CONTAINER_GRID_VIEW, NULL); view = GIMP_CONTAINER_VIEW (grid_view); gimp_container_view_set_view_size (view, view_size, view_border_width); if (container) gimp_container_view_set_container (view, container); if (context) gimp_container_view_set_context (view, context); return GTK_WIDGET (grid_view); }
GimpObject * action_select_object (GimpActionSelectType select_type, GimpContainer *container, GimpObject *current) { gint select_index; gint n_children; g_return_val_if_fail (GIMP_IS_CONTAINER (container), NULL); g_return_val_if_fail (current == NULL || GIMP_IS_OBJECT (current), NULL); if (! current) return NULL; n_children = gimp_container_get_n_children (container); if (n_children == 0) return NULL; switch (select_type) { case GIMP_ACTION_SELECT_FIRST: select_index = 0; break; case GIMP_ACTION_SELECT_LAST: select_index = n_children - 1; break; case GIMP_ACTION_SELECT_PREVIOUS: select_index = gimp_container_get_child_index (container, current) - 1; break; case GIMP_ACTION_SELECT_NEXT: select_index = gimp_container_get_child_index (container, current) + 1; break; case GIMP_ACTION_SELECT_SKIP_PREVIOUS: select_index = gimp_container_get_child_index (container, current) - 10; break; case GIMP_ACTION_SELECT_SKIP_NEXT: select_index = gimp_container_get_child_index (container, current) + 10; break; default: if ((gint) select_type >= 0) select_index = (gint) select_type; else g_return_val_if_reached (current); break; } select_index = CLAMP (select_index, 0, n_children - 1); return gimp_container_get_child_by_index (container, select_index); }
GtkWidget * gimp_font_box_new (GimpContainer *container, GimpContext *context, const gchar *label, gint spacing) { g_return_val_if_fail (container == NULL || GIMP_IS_CONTAINER (container), NULL); g_return_val_if_fail (GIMP_IS_CONTEXT (context), NULL); return font_box_new (container, context, label, spacing, GIMP_VIEW_TYPE_LIST, GIMP_VIEW_SIZE_SMALL); }
gboolean gimp_pdb_dialog_close (Gimp *gimp, GimpContainer *container, const gchar *callback_name) { g_return_val_if_fail (GIMP_IS_GIMP (gimp), FALSE); g_return_val_if_fail (GIMP_IS_CONTAINER (container), FALSE); g_return_val_if_fail (callback_name != NULL, FALSE); if (gimp->gui.pdb_dialog_close) return gimp->gui.pdb_dialog_close (gimp, container, callback_name); return FALSE; }
GtkWidget * gimp_gradient_box_new (GimpContainer *container, GimpContext *context, const gchar *label, gint spacing, const gchar *reverse_prop) { g_return_val_if_fail (container == NULL || GIMP_IS_CONTAINER (container), NULL); g_return_val_if_fail (GIMP_IS_CONTEXT (context), NULL); return gradient_box_new (container, context, label, spacing, GIMP_VIEW_TYPE_LIST, GIMP_VIEW_SIZE_LARGE, reverse_prop, NULL, NULL); }
GtkWidget * gimp_font_view_new (GimpViewType view_type, GimpContainer *container, GimpContext *context, gint view_size, gint view_border_width, GimpMenuFactory *menu_factory) { GimpFontView *font_view; GimpContainerEditor *editor; g_return_val_if_fail (GIMP_IS_CONTAINER (container), NULL); g_return_val_if_fail (GIMP_IS_CONTEXT (context), NULL); g_return_val_if_fail (view_size > 0 && view_size <= GIMP_VIEWABLE_MAX_PREVIEW_SIZE, NULL); g_return_val_if_fail (view_border_width >= 0 && view_border_width <= GIMP_VIEW_MAX_BORDER_WIDTH, NULL); g_return_val_if_fail (menu_factory == NULL || GIMP_IS_MENU_FACTORY (menu_factory), NULL); font_view = g_object_new (GIMP_TYPE_FONT_VIEW, "view-type", view_type, "container", container, "context", context, "view-size", view_size, "view-border-width", view_border_width, "menu-factory", menu_factory, "menu-identifier", "<Fonts>", "ui-path", "/fonts-popup", NULL); editor = GIMP_CONTAINER_EDITOR (font_view); gimp_container_view_set_reorderable (GIMP_CONTAINER_VIEW (editor->view), FALSE); font_view->refresh_button = gimp_editor_add_action_button (GIMP_EDITOR (editor->view), "fonts", "fonts-refresh", NULL); gimp_ui_manager_update (gimp_editor_get_ui_manager (GIMP_EDITOR (editor->view)), editor); return GTK_WIDGET (font_view); }
GtkWidget * gimp_container_popup_new (GimpContainer *container, GimpContext *context, GimpViewType view_type, gint default_view_size, gint view_size, gint view_border_width, GimpDialogFactory *dialog_factory, const gchar *dialog_identifier, const gchar *dialog_stock_id, const gchar *dialog_tooltip) { GimpContainerPopup *popup; g_return_val_if_fail (GIMP_IS_CONTAINER (container), NULL); g_return_val_if_fail (GIMP_IS_CONTEXT (context), NULL); g_return_val_if_fail (default_view_size > 0 && default_view_size <= GIMP_VIEWABLE_MAX_POPUP_SIZE, NULL); g_return_val_if_fail (view_size > 0 && view_size <= GIMP_VIEWABLE_MAX_POPUP_SIZE, NULL); g_return_val_if_fail (view_border_width >= 0 && view_border_width <= GIMP_VIEW_MAX_BORDER_WIDTH, NULL); g_return_val_if_fail (dialog_factory == NULL || GIMP_IS_DIALOG_FACTORY (dialog_factory), NULL); if (dialog_factory) { g_return_val_if_fail (dialog_identifier != NULL, NULL); g_return_val_if_fail (dialog_stock_id != NULL, NULL); g_return_val_if_fail (dialog_tooltip != NULL, NULL); } popup = g_object_new (GIMP_TYPE_CONTAINER_POPUP, "type", GTK_WINDOW_POPUP, NULL); gtk_window_set_resizable (GTK_WINDOW (popup), FALSE); popup->container = container; popup->orig_context = context; popup->context = gimp_context_new (context->gimp, "popup", context); popup->view_type = view_type; popup->default_view_size = default_view_size; popup->view_size = view_size; popup->view_border_width = view_border_width; g_signal_connect (popup->context, gimp_context_type_to_signal_name (gimp_container_get_children_type (container)), G_CALLBACK (gimp_container_popup_context_changed), popup); if (dialog_factory) { popup->dialog_factory = dialog_factory; popup->dialog_identifier = g_strdup (dialog_identifier); popup->dialog_stock_id = g_strdup (dialog_stock_id); popup->dialog_tooltip = g_strdup (dialog_tooltip); } gimp_container_popup_create_view (popup); return GTK_WIDGET (popup); }
gboolean gimp_container_editor_construct (GimpContainerEditor *editor, GimpViewType view_type, GimpContainer *container, GimpContext *context, gint view_size, gint view_border_width, GimpMenuFactory *menu_factory, const gchar *menu_identifier, const gchar *ui_identifier) { g_return_val_if_fail (GIMP_IS_CONTAINER_EDITOR (editor), FALSE); g_return_val_if_fail (GIMP_IS_CONTAINER (container), FALSE); g_return_val_if_fail (GIMP_IS_CONTEXT (context), 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); g_return_val_if_fail (menu_factory == NULL || GIMP_IS_MENU_FACTORY (menu_factory), FALSE); switch (view_type) { case GIMP_VIEW_TYPE_GRID: #if 0 editor->view = GIMP_CONTAINER_VIEW (gimp_container_icon_view_new (container, context, view_size, view_border_width)); #else editor->view = GIMP_CONTAINER_VIEW (gimp_container_grid_view_new (container, context, view_size, view_border_width)); #endif break; case GIMP_VIEW_TYPE_LIST: editor->view = GIMP_CONTAINER_VIEW (gimp_container_tree_view_new (container, context, view_size, view_border_width)); break; default: g_warning ("%s: unknown GimpViewType passed", G_STRFUNC); return FALSE; } if (GIMP_IS_LIST (container)) gimp_container_view_set_reorderable (GIMP_CONTAINER_VIEW (editor->view), ! GIMP_LIST (container)->sort_func); if (menu_factory && menu_identifier && ui_identifier) gimp_editor_create_menu (GIMP_EDITOR (editor->view), menu_factory, menu_identifier, ui_identifier, editor); gtk_box_pack_start (GTK_BOX (editor), GTK_WIDGET (editor->view), TRUE, TRUE, 0); gtk_widget_show (GTK_WIDGET (editor->view)); g_signal_connect_object (editor->view, "select-item", G_CALLBACK (gimp_container_editor_select_item), editor, 0); g_signal_connect_object (editor->view, "activate-item", G_CALLBACK (gimp_container_editor_activate_item), editor, 0); g_signal_connect_object (editor->view, "context-item", G_CALLBACK (gimp_container_editor_context_item), editor, 0); { GimpObject *object = gimp_context_get_by_type (context, gimp_container_get_children_type (container)); gimp_container_editor_select_item (GTK_WIDGET (editor->view), (GimpViewable *) object, NULL, editor); } return TRUE; }
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; g_return_val_if_fail (GIMP_IS_CONTAINER (container), NULL); g_return_val_if_fail (GIMP_IS_CONTEXT (context), NULL); 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); g_return_val_if_fail (menu_factory == NULL || GIMP_IS_MENU_FACTORY (menu_factory), NULL); document_view = g_object_new (GIMP_TYPE_DOCUMENT_VIEW, "view-type", view_type, "container", container, "context", context, "view-size", view_size, "view-border-width", view_border_width, "menu-factory", menu_factory, "menu-identifier", "<Documents>", "ui-path", "/documents-popup", 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", gimp_get_toggle_behavior_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", gimp_get_toggle_behavior_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_get_ui_manager (GIMP_EDITOR (editor->view)), editor); return GTK_WIDGET (document_view); }