void gimp_editor_create_menu (GimpEditor *editor, GimpMenuFactory *menu_factory, const gchar *menu_identifier, const gchar *ui_path, gpointer popup_data) { g_return_if_fail (GIMP_IS_EDITOR (editor)); g_return_if_fail (GIMP_IS_MENU_FACTORY (menu_factory)); g_return_if_fail (menu_identifier != NULL); g_return_if_fail (ui_path != NULL); if (editor->menu_factory) g_object_unref (editor->menu_factory); editor->menu_factory = g_object_ref (menu_factory); if (editor->ui_manager) g_object_unref (editor->ui_manager); editor->ui_manager = gimp_menu_factory_manager_new (menu_factory, menu_identifier, popup_data, FALSE); if (editor->ui_path) g_free (editor->ui_path); editor->ui_path = g_strdup (ui_path); editor->popup_data = popup_data; }
GtkWidget * gimp_dynamics_factory_view_new (GimpViewType view_type, GimpDataFactory *factory, GimpContext *context, gint view_size, gint view_border_width, GimpMenuFactory *menu_factory) { g_return_val_if_fail (GIMP_IS_DATA_FACTORY (factory), 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); return g_object_new (GIMP_TYPE_DYNAMICS_FACTORY_VIEW, "view-type", view_type, "data-factory", factory, "context", context, "view-size", view_size, "view-border-width", view_border_width, "menu-factory", menu_factory, "menu-identifier", "<Dynamics>", "ui-path", "/dynamics-popup", "action-group", "dynamics", NULL); }
void dialogs_init (Gimp *gimp, GimpMenuFactory *menu_factory) { GimpDialogFactory *factory = NULL; gint i = 0; g_return_if_fail (GIMP_IS_GIMP (gimp)); g_return_if_fail (GIMP_IS_MENU_FACTORY (menu_factory)); factory = gimp_dialog_factory_new ("toplevel", gimp_get_user_context (gimp), menu_factory); gimp_dialog_factory_set_singleton (factory); for (i = 0; i < G_N_ELEMENTS (entries); i++) gimp_dialog_factory_register_entry (gimp_dialog_factory_get_singleton (), entries[i].identifier, gettext (entries[i].name), gettext (entries[i].blurb), entries[i].icon_name, entries[i].help_id, entries[i].new_func, entries[i].restore_func, entries[i].view_size, entries[i].singleton, entries[i].session_managed, entries[i].remember_size, entries[i].remember_if_open, entries[i].hideable, entries[i].image_window, entries[i].dockable); global_recent_docks = gimp_list_new (GIMP_TYPE_SESSION_INFO, FALSE); }
void dialogs_init (Gimp *gimp, GimpMenuFactory *menu_factory) { gint i; g_return_if_fail (GIMP_IS_GIMP (gimp)); g_return_if_fail (GIMP_IS_MENU_FACTORY (menu_factory)); global_dialog_factory = gimp_dialog_factory_new ("toplevel", gimp_get_user_context (gimp), menu_factory, NULL); global_toolbox_factory = gimp_dialog_factory_new ("toolbox", gimp_get_user_context (gimp), menu_factory, dialogs_toolbox_get); gimp_dialog_factory_set_constructor (global_toolbox_factory, dialogs_dockable_constructor); global_dock_factory = gimp_dialog_factory_new ("dock", gimp_get_user_context (gimp), menu_factory, dialogs_dock_new); gimp_dialog_factory_set_constructor (global_dock_factory, dialogs_dockable_constructor); for (i = 0; i < G_N_ELEMENTS (toplevel_entries); i++) gimp_dialog_factory_register_entry (global_dialog_factory, toplevel_entries[i].identifier, gettext (toplevel_entries[i].name), gettext (toplevel_entries[i].blurb), toplevel_entries[i].stock_id, toplevel_entries[i].help_id, toplevel_entries[i].new_func, toplevel_entries[i].view_size, toplevel_entries[i].singleton, toplevel_entries[i].session_managed, toplevel_entries[i].remember_size, toplevel_entries[i].remember_if_open); for (i = 0; i < G_N_ELEMENTS (dock_entries); i++) gimp_dialog_factory_register_entry (global_dock_factory, dock_entries[i].identifier, gettext (dock_entries[i].name), gettext (dock_entries[i].blurb), dock_entries[i].stock_id, dock_entries[i].help_id, dock_entries[i].new_func, dock_entries[i].view_size, dock_entries[i].singleton, dock_entries[i].session_managed, dock_entries[i].remember_size, dock_entries[i].remember_if_open); }
GtkWidget * gimp_sample_point_editor_new (GimpMenuFactory *menu_factory) { g_return_val_if_fail (GIMP_IS_MENU_FACTORY (menu_factory), NULL); return g_object_new (GIMP_TYPE_SAMPLE_POINT_EDITOR, "menu-factory", menu_factory, "menu-identifier", "<SamplePoints>", "ui-path", "/sample-points-popup", NULL); }
GtkWidget * gimp_cursor_view_new (GimpMenuFactory *menu_factory) { g_return_val_if_fail (GIMP_IS_MENU_FACTORY (menu_factory), NULL); return g_object_new (GIMP_TYPE_CURSOR_VIEW, "menu-factory", menu_factory, "menu-identifier", "<CursorInfo>", "ui-path", "/cursor-info-popup", NULL); }
GtkWidget * gimp_selection_editor_new (GimpMenuFactory *menu_factory) { g_return_val_if_fail (GIMP_IS_MENU_FACTORY (menu_factory), NULL); return g_object_new (GIMP_TYPE_SELECTION_EDITOR, "menu-factory", menu_factory, "menu-identifier", "<Selection>", "ui-path", "/selection-popup", NULL); }
GtkWidget * gimp_tool_preset_editor_new (GimpContext *context, GimpMenuFactory *menu_factory) { g_return_val_if_fail (GIMP_IS_MENU_FACTORY (menu_factory), NULL); g_return_val_if_fail (GIMP_IS_CONTEXT (context), NULL); return g_object_new (GIMP_TYPE_TOOL_PRESET_EDITOR, "menu-factory", menu_factory, "menu-identifier", "<ToolPresetEditor>", "ui-path", "/tool-preset-editor-popup", "data-factory", context->gimp->tool_preset_factory, "context", context, "data", gimp_context_get_tool_preset (context), NULL); }
GtkWidget * gimp_dynamics_editor_new (GimpContext *context, GimpMenuFactory *menu_factory) { g_return_val_if_fail (GIMP_IS_MENU_FACTORY (menu_factory), NULL); g_return_val_if_fail (GIMP_IS_CONTEXT (context), NULL); return g_object_new (GIMP_TYPE_DYNAMICS_EDITOR, "menu-factory", menu_factory, "menu-identifier", "<DynamicsEditor>", "ui-path", "/dynamics-editor-popup", "data-factory", context->gimp->dynamics_factory, "context", context, "data", gimp_context_get_dynamics (context), 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_text_options_editor_new (GtkWindow *parent, Gimp *gimp, GimpTextOptions *options, GimpMenuFactory *menu_factory, const gchar *title, GimpText *text, GimpTextBuffer *text_buffer, gdouble xres, gdouble yres) { GtkWidget *editor; const gchar *font_name; g_return_val_if_fail (GIMP_IS_GIMP (gimp), NULL); g_return_val_if_fail (GIMP_IS_TEXT_OPTIONS (options), NULL); g_return_val_if_fail (GIMP_IS_MENU_FACTORY (menu_factory), NULL); g_return_val_if_fail (title != NULL, NULL); g_return_val_if_fail (GIMP_IS_TEXT (text), NULL); g_return_val_if_fail (GIMP_IS_TEXT_BUFFER (text_buffer), NULL); editor = gimp_text_editor_new (title, parent, gimp, menu_factory, text, text_buffer, xres, yres); font_name = gimp_context_get_font_name (GIMP_CONTEXT (options)); gimp_text_editor_set_direction (GIMP_TEXT_EDITOR (editor), options->base_dir); gimp_text_editor_set_font_name (GIMP_TEXT_EDITOR (editor), font_name); g_signal_connect_object (editor, "dir-changed", G_CALLBACK (gimp_text_options_editor_dir_changed), options, 0); g_signal_connect_object (options, "notify::base-direction", G_CALLBACK (gimp_text_options_editor_notify_dir), editor, 0); g_signal_connect_object (options, "notify::font", G_CALLBACK (gimp_text_options_editor_notify_font), editor, 0); return editor; }
GimpDialogFactory * gimp_dialog_factory_new (const gchar *name, GimpContext *context, GimpMenuFactory *menu_factory, GimpDialogNewFunc new_dock_func, gboolean toggle_visibility) { GimpDialogFactory *factory; gpointer key; g_return_val_if_fail (name != NULL, NULL); g_return_val_if_fail (GIMP_IS_CONTEXT (context), NULL); g_return_val_if_fail (! menu_factory || GIMP_IS_MENU_FACTORY (menu_factory), NULL); if (gimp_dialog_factory_from_name (name)) { g_warning ("%s: dialog factory \"%s\" already exists", G_STRFUNC, name); return NULL; } factory = g_object_new (GIMP_TYPE_DIALOG_FACTORY, NULL); gimp_object_set_name (GIMP_OBJECT (factory), name); /* hack to keep the toolbox on the pool position */ if (strcmp (name, "toolbox") == 0) key = ""; else key = GIMP_OBJECT (factory)->name; g_hash_table_insert (GIMP_DIALOG_FACTORY_GET_CLASS (factory)->factories, key, factory); factory->context = context; factory->menu_factory = menu_factory; factory->new_dock_func = new_dock_func; factory->toggle_visibility = toggle_visibility; return factory; }
GtkWidget * gimp_component_editor_new (gint view_size, GimpMenuFactory *menu_factory) { GimpComponentEditor *editor; g_return_val_if_fail (view_size > 0 && view_size <= GIMP_VIEWABLE_MAX_PREVIEW_SIZE, NULL); g_return_val_if_fail (GIMP_IS_MENU_FACTORY (menu_factory), NULL); editor = g_object_new (GIMP_TYPE_COMPONENT_EDITOR, "menu-factory", menu_factory, "menu-identifier", "<Channels>", "ui-path", "/channels-popup", NULL); gimp_component_editor_set_view_size (editor, view_size); return GTK_WIDGET (editor); }
GtkWidget * gimp_error_console_new (Gimp *gimp, GimpMenuFactory *menu_factory) { GimpErrorConsole *console; g_return_val_if_fail (GIMP_IS_GIMP (gimp), NULL); g_return_val_if_fail (GIMP_IS_MENU_FACTORY (menu_factory), NULL); console = g_object_new (GIMP_TYPE_ERROR_CONSOLE, "menu-factory", menu_factory, "menu-identifier", "<ErrorConsole>", "ui-path", "/error-console-popup", NULL); console->gimp = gimp; console->gimp->message_handler = GIMP_ERROR_CONSOLE; return GTK_WIDGET (console); }
void dialogs_init (Gimp *gimp, GimpMenuFactory *menu_factory) { gint i; g_return_if_fail (GIMP_IS_GIMP (gimp)); g_return_if_fail (GIMP_IS_MENU_FACTORY (menu_factory)); global_dialog_factory = gimp_dialog_factory_new ("toplevel", gimp_get_user_context (gimp), menu_factory, NULL, TRUE); global_toolbox_factory = gimp_dialog_factory_new ("toolbox", gimp_get_user_context (gimp), menu_factory, dialogs_toolbox_get, TRUE); gimp_dialog_factory_set_constructor (global_toolbox_factory, dialogs_dockable_constructor); global_dock_factory = gimp_dialog_factory_new ("dock", gimp_get_user_context (gimp), menu_factory, dialogs_dock_new, TRUE); gimp_dialog_factory_set_constructor (global_dock_factory, dialogs_dockable_constructor); global_display_factory = gimp_dialog_factory_new ("display", gimp_get_user_context (gimp), menu_factory, NULL, FALSE); for (i = 0; i < G_N_ELEMENTS (toplevel_entries); i++) gimp_dialog_factory_register_entry (global_dialog_factory, toplevel_entries[i].identifier, gettext (toplevel_entries[i].name), gettext (toplevel_entries[i].blurb), toplevel_entries[i].stock_id, toplevel_entries[i].help_id, toplevel_entries[i].new_func, toplevel_entries[i].view_size, toplevel_entries[i].singleton, toplevel_entries[i].session_managed, toplevel_entries[i].remember_size, toplevel_entries[i].remember_if_open); for (i = 0; i < G_N_ELEMENTS (dock_entries); i++) gimp_dialog_factory_register_entry (global_dock_factory, dock_entries[i].identifier, gettext (dock_entries[i].name), gettext (dock_entries[i].blurb), dock_entries[i].stock_id, dock_entries[i].help_id, dock_entries[i].new_func, dock_entries[i].view_size, dock_entries[i].singleton, dock_entries[i].session_managed, dock_entries[i].remember_size, dock_entries[i].remember_if_open); gimp_dialog_factory_register_entry (global_display_factory, "gimp-empty-image-window", NULL, NULL, NULL, NULL, NULL, -1, TRUE, TRUE, TRUE, FALSE); global_recent_docks = gimp_list_new (GIMP_TYPE_SESSION_INFO, FALSE); }
GtkWidget * gimp_text_editor_new (const gchar *title, GtkWindow *parent, Gimp *gimp, GimpMenuFactory *menu_factory, GimpText *text, GimpTextBuffer *text_buffer, gdouble xres, gdouble yres) { GimpTextEditor *editor; GtkWidget *content_area; GtkWidget *toolbar; GtkWidget *style_editor; GtkWidget *scrolled_window; gboolean use_header_bar; g_return_val_if_fail (title != NULL, NULL); g_return_val_if_fail (parent == NULL || GTK_IS_WINDOW (parent), NULL); g_return_val_if_fail (GIMP_IS_GIMP (gimp), NULL); g_return_val_if_fail (GIMP_IS_MENU_FACTORY (menu_factory), NULL); g_return_val_if_fail (GIMP_IS_TEXT (text), NULL); g_return_val_if_fail (GIMP_IS_TEXT_BUFFER (text_buffer), NULL); g_object_get (gtk_settings_get_default (), "gtk-dialogs-use-header", &use_header_bar, NULL); editor = g_object_new (GIMP_TYPE_TEXT_EDITOR, "title", title, "role", "gimp-text-editor", "transient-for", parent, "help-func", gimp_standard_help_func, "help-id", GIMP_HELP_TEXT_EDITOR_DIALOG, "use-header-bar", use_header_bar, NULL); gtk_dialog_add_button (GTK_DIALOG (editor), _("_Close"), GTK_RESPONSE_CLOSE); g_signal_connect (editor, "response", G_CALLBACK (gtk_widget_destroy), NULL); g_signal_connect_object (text_buffer, "changed", G_CALLBACK (gimp_text_editor_text_changed), editor, 0); editor->ui_manager = gimp_menu_factory_manager_new (menu_factory, "<TextEditor>", editor); content_area = gtk_dialog_get_content_area (GTK_DIALOG (editor)); toolbar = gtk_ui_manager_get_widget (GTK_UI_MANAGER (editor->ui_manager), "/text-editor-toolbar"); if (toolbar) { gtk_box_pack_start (GTK_BOX (content_area), toolbar, FALSE, FALSE, 0); gtk_widget_show (toolbar); } style_editor = gimp_text_style_editor_new (gimp, text, text_buffer, gimp_data_factory_get_container (gimp->font_factory), xres, yres); gtk_box_pack_start (GTK_BOX (content_area), style_editor, FALSE, FALSE, 0); gtk_widget_show (style_editor); scrolled_window = gtk_scrolled_window_new (NULL, NULL); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); gtk_container_set_border_width (GTK_CONTAINER (scrolled_window), 2); gtk_box_pack_start (GTK_BOX (content_area), scrolled_window, TRUE, TRUE, 0); gtk_widget_show (scrolled_window); editor->view = gtk_text_view_new_with_buffer (GTK_TEXT_BUFFER (text_buffer)); gtk_text_view_set_wrap_mode (GTK_TEXT_VIEW (editor->view), GTK_WRAP_WORD_CHAR); gtk_container_add (GTK_CONTAINER (scrolled_window), editor->view); gtk_widget_show (editor->view); switch (editor->base_dir) { case GIMP_TEXT_DIRECTION_LTR: case GIMP_TEXT_DIRECTION_TTB_RTL: case GIMP_TEXT_DIRECTION_TTB_RTL_UPRIGHT: case GIMP_TEXT_DIRECTION_TTB_LTR: case GIMP_TEXT_DIRECTION_TTB_LTR_UPRIGHT: gtk_widget_set_direction (editor->view, GTK_TEXT_DIR_LTR); break; case GIMP_TEXT_DIRECTION_RTL: gtk_widget_set_direction (editor->view, GTK_TEXT_DIR_RTL); break; } gtk_widget_set_size_request (editor->view, 200, 64); editor->font_toggle = gtk_check_button_new_with_mnemonic (_("_Use selected font")); gtk_box_pack_start (GTK_BOX (content_area), editor->font_toggle, FALSE, FALSE, 0); gtk_widget_show (editor->font_toggle); g_signal_connect (editor->font_toggle, "toggled", G_CALLBACK (gimp_text_editor_font_toggled), editor); gtk_widget_grab_focus (editor->view); gimp_ui_manager_update (editor->ui_manager, editor); return GTK_WIDGET (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; 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); }
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; }
static GtkWidget * gimp_navigation_editor_new_private (GimpMenuFactory *menu_factory, GimpDisplayShell *shell) { GimpNavigationEditor *editor; g_return_val_if_fail (menu_factory == NULL || GIMP_IS_MENU_FACTORY (menu_factory), NULL); g_return_val_if_fail (shell == NULL || GIMP_IS_DISPLAY_SHELL (shell), NULL); g_return_val_if_fail (menu_factory || shell, NULL); if (shell) { Gimp *gimp = shell->display->gimp; GimpDisplayConfig *config = shell->display->config; GimpView *view; editor = g_object_new (GIMP_TYPE_NAVIGATION_EDITOR, NULL); view = GIMP_VIEW (editor->view); gimp_view_renderer_set_size (view->renderer, config->nav_preview_size * 3, view->renderer->border_width); gimp_view_renderer_set_context (view->renderer, gimp_get_user_context (gimp)); gimp_navigation_editor_set_shell (editor, shell); } else { GtkWidget *hscale; GtkWidget *hbox; editor = g_object_new (GIMP_TYPE_NAVIGATION_EDITOR, "menu-factory", menu_factory, "menu-identifier", "<NavigationEditor>", NULL); gtk_widget_set_size_request (editor->view, GIMP_VIEW_SIZE_HUGE, GIMP_VIEW_SIZE_HUGE); gimp_view_set_expand (GIMP_VIEW (editor->view), TRUE); /* the editor buttons */ editor->zoom_out_button = gimp_editor_add_action_button (GIMP_EDITOR (editor), "view", "view-zoom-out", NULL); editor->zoom_in_button = gimp_editor_add_action_button (GIMP_EDITOR (editor), "view", "view-zoom-in", NULL); editor->zoom_100_button = gimp_editor_add_action_button (GIMP_EDITOR (editor), "view", "view-zoom-1-1", NULL); editor->zoom_fit_in_button = gimp_editor_add_action_button (GIMP_EDITOR (editor), "view", "view-zoom-fit-in", NULL); editor->zoom_fill_button = gimp_editor_add_action_button (GIMP_EDITOR (editor), "view", "view-zoom-fill", NULL); editor->shrink_wrap_button = gimp_editor_add_action_button (GIMP_EDITOR (editor), "view", "view-shrink-wrap", NULL); /* the zoom scale */ hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6); gtk_box_pack_end (GTK_BOX (editor), hbox, FALSE, FALSE, 0); gtk_widget_show (hbox); editor->zoom_adjustment = GTK_ADJUSTMENT (gtk_adjustment_new (0.0, -8.0, 8.0, 0.5, 1.0, 0.0)); g_signal_connect (editor->zoom_adjustment, "value-changed", G_CALLBACK (gimp_navigation_editor_zoom_adj_changed), editor); hscale = gtk_scale_new (GTK_ORIENTATION_HORIZONTAL, editor->zoom_adjustment); gtk_scale_set_draw_value (GTK_SCALE (hscale), FALSE); gtk_box_pack_start (GTK_BOX (hbox), hscale, TRUE, TRUE, 0); gtk_widget_show (hscale); /* the zoom label */ editor->zoom_label = gtk_label_new ("100%"); gtk_label_set_width_chars (GTK_LABEL (editor->zoom_label), 7); gtk_box_pack_start (GTK_BOX (hbox), editor->zoom_label, FALSE, FALSE, 0); gtk_widget_show (editor->zoom_label); } gimp_view_renderer_set_background (GIMP_VIEW (editor->view)->renderer, GIMP_STOCK_TEXTURE); return GTK_WIDGET (editor); }