static void gimp_container_combo_box_set_view_size (GimpContainerView *view) { GtkTreeModel *model = gtk_combo_box_get_model (GTK_COMBO_BOX (view)); GtkTreeIter iter; gboolean iter_valid; gint view_size; gint border_width; view_size = gimp_container_view_get_view_size (view, &border_width); for (iter_valid = gtk_tree_model_get_iter_first (model, &iter); iter_valid; iter_valid = gtk_tree_model_iter_next (model, &iter)) { GimpViewRenderer *renderer; gtk_tree_model_get (model, &iter, COLUMN_RENDERER, &renderer, -1); gimp_view_renderer_set_size (renderer, view_size, border_width); g_object_unref (renderer); } }
static void gimp_container_popup_larger_clicked (GtkWidget *button, GimpContainerPopup *popup) { gint view_size; view_size = gimp_container_view_get_view_size (popup->editor->view, NULL); gimp_container_popup_set_view_size (popup, view_size * 1.2); }
static void gimp_buffer_view_view_notify (GimpContainerView *container_view, GParamSpec *pspec, GimpBufferView *buffer_view) { GimpView *view = GIMP_VIEW (buffer_view->global_view); gint view_size; gint view_border_width; view_size = gimp_container_view_get_view_size (container_view, &view_border_width); gimp_view_renderer_set_size_full (view->renderer, view_size, view_size, view_border_width); }
void gimp_container_box_set_size_request (GimpContainerBox *box, gint width, gint height) { GimpContainerView *view; GtkScrolledWindowClass *sw_class; GtkRequisition req; gint view_size; gint scrollbar_width; gint border_x; gint border_y; g_return_if_fail (GIMP_IS_CONTAINER_BOX (box)); view = GIMP_CONTAINER_VIEW (box); view_size = gimp_container_view_get_view_size (view, NULL); g_return_if_fail (width <= 0 || width >= view_size); g_return_if_fail (height <= 0 || height >= view_size); sw_class = GTK_SCROLLED_WINDOW_GET_CLASS (box->scrolled_win); if (sw_class->scrollbar_spacing >= 0) scrollbar_width = sw_class->scrollbar_spacing; else gtk_widget_style_get (GTK_WIDGET (box->scrolled_win), "scrollbar-spacing", &scrollbar_width, NULL); gtk_widget_size_request (GTK_SCROLLED_WINDOW (box->scrolled_win)->vscrollbar, &req); scrollbar_width += req.width; border_x = GTK_CONTAINER (box)->border_width; border_y = GTK_CONTAINER (box)->border_width; border_x += box->scrolled_win->style->xthickness * 2 + scrollbar_width; border_y += box->scrolled_win->style->ythickness * 2; gtk_widget_set_size_request (box->scrolled_win, width > 0 ? width + border_x : -1, height > 0 ? height + border_y : -1); }
static gpointer gimp_container_grid_view_insert_item (GimpContainerView *container_view, GimpViewable *viewable, gpointer parent_insert_data, gint index) { GimpContainerGridView *grid_view = GIMP_CONTAINER_GRID_VIEW (container_view); GtkWidget *view; gint view_size; view_size = gimp_container_view_get_view_size (container_view, NULL); view = gimp_view_new_full (gimp_container_view_get_context (container_view), viewable, view_size, view_size, 1, FALSE, TRUE, TRUE); gimp_view_renderer_set_border_type (GIMP_VIEW (view)->renderer, GIMP_VIEW_BORDER_WHITE); gimp_view_renderer_remove_idle (GIMP_VIEW (view)->renderer); gtk_wrap_box_pack (GTK_WRAP_BOX (grid_view->wrap_box), view, FALSE, FALSE, FALSE, FALSE); if (index != -1) gtk_wrap_box_reorder_child (GTK_WRAP_BOX (grid_view->wrap_box), view, index); gtk_widget_show (view); g_signal_connect (view, "button-press-event", G_CALLBACK (gimp_container_grid_view_item_selected), container_view); g_signal_connect (view, "double-clicked", G_CALLBACK (gimp_container_grid_view_item_activated), container_view); g_signal_connect (view, "context", G_CALLBACK (gimp_container_grid_view_item_context), container_view); return (gpointer) view; }
static void gimp_container_grid_view_set_view_size (GimpContainerView *view) { GimpContainerGridView *grid_view = GIMP_CONTAINER_GRID_VIEW (view); GtkWrapBoxChild *child; gint view_size; view_size = gimp_container_view_get_view_size (view, NULL); for (child = GTK_WRAP_BOX (grid_view->wrap_box)->children; child; child = child->next) { GimpView *view = GIMP_VIEW (child->widget); gimp_view_renderer_set_size (view->renderer, view_size, view->renderer->border_width); } gtk_widget_queue_resize (grid_view->wrap_box); }
static void gimp_container_combo_box_set (GimpContainerComboBox *combo_box, GtkTreeIter *iter, GimpViewable *viewable) { GimpContainerView *view = GIMP_CONTAINER_VIEW (combo_box); GtkTreeModel *model; GimpViewRenderer *renderer; gchar *name; gint view_size; gint border_width; model = gtk_combo_box_get_model (GTK_COMBO_BOX (combo_box)); view_size = gimp_container_view_get_view_size (view, &border_width); name = gimp_viewable_get_description (viewable, NULL); renderer = gimp_view_renderer_new (gimp_container_view_get_context (view), G_TYPE_FROM_INSTANCE (viewable), view_size, border_width, FALSE); gimp_view_renderer_set_viewable (renderer, viewable); gimp_view_renderer_remove_idle (renderer); g_signal_connect (renderer, "update", G_CALLBACK (gimp_container_combo_box_renderer_update), view); gtk_list_store_set (GTK_LIST_STORE (model), iter, COLUMN_RENDERER, renderer, COLUMN_NAME, name, -1); g_object_unref (renderer); g_free (name); }
static GtkWidget * gimp_container_box_get_preview (GimpDocked *docked, GimpContext *context, GtkIconSize size) { GimpContainerBox *box = GIMP_CONTAINER_BOX (docked); GimpContainerView *view = GIMP_CONTAINER_VIEW (docked); GimpContainer *container; GtkWidget *preview; gint width; gint height; gint border_width = 1; const gchar *prop_name; container = gimp_container_view_get_container (view); g_return_val_if_fail (container != NULL, NULL); gtk_icon_size_lookup_for_settings (gtk_widget_get_settings (GTK_WIDGET (box)), size, &width, &height); prop_name = gimp_context_type_to_prop_name (container->children_type); preview = gimp_prop_view_new (G_OBJECT (context), prop_name, context, height); GIMP_VIEW (preview)->renderer->size = -1; gimp_container_view_get_view_size (view, &border_width); border_width = MIN (1, border_width); gimp_view_renderer_set_size_full (GIMP_VIEW (preview)->renderer, width, height, border_width); return preview; }
void dockable_actions_update (GimpActionGroup *group, gpointer data) { GimpDockable *dockable; GimpDockbook *dockbook; GimpDocked *docked; GimpDialogFactoryEntry *entry; GimpContainerView *view; GimpViewType view_type = -1; gboolean list_view_available = FALSE; gboolean grid_view_available = FALSE; GimpViewSize view_size = -1; GimpTabStyle tab_style = -1; gint n_pages = 0; gint n_books = 0; if (GIMP_IS_DOCKBOOK (data)) { gint page_num; dockbook = GIMP_DOCKBOOK (data); page_num = gtk_notebook_get_current_page (GTK_NOTEBOOK (dockbook)); dockable = (GimpDockable *) gtk_notebook_get_nth_page (GTK_NOTEBOOK (dockbook), page_num); } else if (GIMP_IS_DOCKABLE (data)) { dockable = GIMP_DOCKABLE (data); dockbook = dockable->dockbook; } else { return; } docked = GIMP_DOCKED (gtk_bin_get_child (GTK_BIN (dockable))); gimp_dialog_factory_from_widget (GTK_WIDGET (dockable), &entry); if (entry) { gchar *identifier; gchar *substring = NULL; identifier = g_strdup (entry->identifier); if ((substring = strstr (identifier, "grid"))) view_type = GIMP_VIEW_TYPE_GRID; else if ((substring = strstr (identifier, "list"))) view_type = GIMP_VIEW_TYPE_LIST; if (substring) { memcpy (substring, "list", 4); if (gimp_dialog_factory_find_entry (dockbook->dock->dialog_factory, identifier)) list_view_available = TRUE; memcpy (substring, "grid", 4); if (gimp_dialog_factory_find_entry (dockbook->dock->dialog_factory, identifier)) grid_view_available = TRUE; } g_free (identifier); } view = gimp_container_view_get_by_dockable (dockable); if (view) view_size = gimp_container_view_get_view_size (view, NULL); tab_style = dockable->tab_style; n_pages = gtk_notebook_get_n_pages (GTK_NOTEBOOK (dockbook)); n_books = g_list_length (dockbook->dock->dockbooks); #define SET_ACTIVE(action,active) \ gimp_action_group_set_action_active (group, action, (active) != 0) #define SET_VISIBLE(action,active) \ gimp_action_group_set_action_visible (group, action, (active) != 0) #define SET_SENSITIVE(action,sensitive) \ gimp_action_group_set_action_sensitive (group, action, (sensitive) != 0) SET_SENSITIVE ("dockable-detach-tab", n_pages > 1 || n_books > 1); SET_VISIBLE ("dockable-preview-size-menu", view_size != -1); if (view_size != -1) { if (view_size >= GIMP_VIEW_SIZE_GIGANTIC) { SET_ACTIVE ("dockable-preview-size-gigantic", TRUE); } else if (view_size >= GIMP_VIEW_SIZE_ENORMOUS) { SET_ACTIVE ("dockable-preview-size-enormous", TRUE); } else if (view_size >= GIMP_VIEW_SIZE_HUGE) { SET_ACTIVE ("dockable-preview-size-huge", TRUE); } else if (view_size >= GIMP_VIEW_SIZE_EXTRA_LARGE) { SET_ACTIVE ("dockable-preview-size-extra-large", TRUE); } else if (view_size >= GIMP_VIEW_SIZE_LARGE) { SET_ACTIVE ("dockable-preview-size-large", TRUE); } else if (view_size >= GIMP_VIEW_SIZE_MEDIUM) { SET_ACTIVE ("dockable-preview-size-medium", TRUE); } else if (view_size >= GIMP_VIEW_SIZE_SMALL) { SET_ACTIVE ("dockable-preview-size-small", TRUE); } else if (view_size >= GIMP_VIEW_SIZE_EXTRA_SMALL) { SET_ACTIVE ("dockable-preview-size-extra-small", TRUE); } else if (view_size >= GIMP_VIEW_SIZE_TINY) { SET_ACTIVE ("dockable-preview-size-tiny", TRUE); } } SET_VISIBLE ("dockable-tab-style-menu", n_pages > 1); if (n_pages > 1) { GimpDockedInterface *docked_iface = GIMP_DOCKED_GET_INTERFACE (docked); if (tab_style == GIMP_TAB_STYLE_ICON) SET_ACTIVE ("dockable-tab-style-icon", TRUE); else if (tab_style == GIMP_TAB_STYLE_PREVIEW) SET_ACTIVE ("dockable-tab-style-preview", TRUE); else if (tab_style == GIMP_TAB_STYLE_NAME) SET_ACTIVE ("dockable-tab-style-name", TRUE); else if (tab_style == GIMP_TAB_STYLE_ICON_NAME) SET_ACTIVE ("dockable-tab-style-icon-name", TRUE); else if (tab_style == GIMP_TAB_STYLE_PREVIEW_NAME) SET_ACTIVE ("dockable-tab-style-preview-name", TRUE); SET_SENSITIVE ("dockable-tab-style-preview", docked_iface->get_preview); SET_SENSITIVE ("dockable-tab-style-preview-name", docked_iface->get_preview); } SET_VISIBLE ("dockable-view-type-grid", view_type != -1); SET_VISIBLE ("dockable-view-type-list", view_type != -1); if (view_type != -1) { if (view_type == GIMP_VIEW_TYPE_LIST) SET_ACTIVE ("dockable-view-type-list", TRUE); else SET_ACTIVE ("dockable-view-type-grid", TRUE); SET_SENSITIVE ("dockable-view-type-grid", grid_view_available); SET_SENSITIVE ("dockable-view-type-list", list_view_available); } SET_VISIBLE ("dockable-show-button-bar", gimp_docked_has_button_bar (docked)); SET_ACTIVE ("dockable-show-button-bar", gimp_docked_get_show_button_bar (docked)); #undef SET_ACTIVE #undef SET_VISIBLE #undef SET_SENSITIVE }