static void gimp_template_view_tree_name_edited (GtkCellRendererText *cell, const gchar *path_str, const gchar *new_name, GimpTemplateView *view) { GimpContainerTreeView *tree_view; GtkTreePath *path; GtkTreeIter iter; tree_view = GIMP_CONTAINER_TREE_VIEW (GIMP_CONTAINER_EDITOR (view)->view); path = gtk_tree_path_new_from_string (path_str); if (gtk_tree_model_get_iter (tree_view->model, &iter, path)) { GimpViewRenderer *renderer; GimpObject *object; const gchar *old_name; gtk_tree_model_get (tree_view->model, &iter, GIMP_CONTAINER_TREE_STORE_COLUMN_RENDERER, &renderer, -1); object = GIMP_OBJECT (renderer->viewable); old_name = gimp_object_get_name (object); if (! old_name) old_name = ""; if (! new_name) new_name = ""; if (strcmp (old_name, new_name)) { gimp_object_set_name (object, new_name); } else { gchar *name = gimp_viewable_get_description (renderer->viewable, NULL); gtk_tree_store_set (GTK_TREE_STORE (tree_view->model), &iter, GIMP_CONTAINER_TREE_STORE_COLUMN_NAME, name, -1); g_free (name); } g_object_unref (renderer); } gtk_tree_path_free (path); }
static void gimp_data_factory_view_tree_name_edited (GtkCellRendererText *cell, const gchar *path_str, const gchar *new_name, GimpDataFactoryView *view) { GimpContainerTreeView *tree_view; GtkTreePath *path; GtkTreeIter iter; tree_view = GIMP_CONTAINER_TREE_VIEW (GIMP_CONTAINER_EDITOR (view)->view); path = gtk_tree_path_new_from_string (path_str); if (gtk_tree_model_get_iter (tree_view->model, &iter, path)) { GimpViewRenderer *renderer; GimpData *data; gchar *name; gtk_tree_model_get (tree_view->model, &iter, tree_view->model_column_renderer, &renderer, -1); data = GIMP_DATA (renderer->viewable); if (! new_name) new_name = ""; name = g_strstrip (g_strdup (new_name)); if (data->writable && strlen (name)) { gimp_object_take_name (GIMP_OBJECT (data), name); } else { g_free (name); name = gimp_viewable_get_description (renderer->viewable, NULL); gtk_list_store_set (GTK_LIST_STORE (tree_view->model), &iter, tree_view->model_column_name, name, -1); g_free (name); } g_object_unref (renderer); } gtk_tree_path_free (path); }
static void gimp_container_grid_view_rename_item (GimpContainerView *container_view, GimpViewable *viewable, gpointer insert_data) { GimpContainerGridView *grid_view = GIMP_CONTAINER_GRID_VIEW (container_view); GtkWidget *view = GTK_WIDGET (insert_data); if (view == (GtkWidget *) grid_view->selected_item) { gchar *name = gimp_viewable_get_description (viewable, NULL); gimp_editor_set_name (GIMP_EDITOR (container_view), name); g_free (name); } }
static void gimp_container_combo_box_rename_item (GimpContainerView *view, GimpViewable *viewable, gpointer insert_data) { GtkTreeModel *model = gtk_combo_box_get_model (GTK_COMBO_BOX (view)); GtkTreeIter *iter = insert_data; if (iter) { gchar *name = gimp_viewable_get_description (viewable, NULL); gtk_list_store_set (GTK_LIST_STORE (model), iter, COLUMN_NAME, name, -1); g_free (name); } }
static void gimp_buffer_view_buffer_changed (Gimp *gimp, GimpBufferView *buffer_view) { gimp_view_set_viewable (GIMP_VIEW (buffer_view->global_view), (GimpViewable *) gimp->global_buffer); if (gimp->global_buffer) { gchar *desc; desc = gimp_viewable_get_description (GIMP_VIEWABLE (gimp->global_buffer), NULL); gtk_label_set_text (GTK_LABEL (buffer_view->global_label), desc); g_free (desc); } else { gtk_label_set_text (GTK_LABEL (buffer_view->global_label), _("(None)")); } }
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 void gimp_viewable_dialog_name_changed (GimpObject *object, GimpViewableDialog *dialog) { gchar *name; name = gimp_viewable_get_description (GIMP_VIEWABLE (object), NULL); if (GIMP_IS_ITEM (object)) { GimpImage *image = gimp_item_get_image (GIMP_ITEM (object)); gchar *tmp; tmp = name; name = g_strdup_printf ("%s-%d (%s)", tmp, gimp_item_get_ID (GIMP_ITEM (object)), gimp_image_get_display_name (image)); g_free (tmp); } gtk_label_set_text (GTK_LABEL (dialog->viewable_label), name); g_free (name); }
static gint gimp_display_shell_format_title (GimpDisplayShell *shell, gchar *title, gint title_len, const gchar *format) { GimpImage *image; gint num, denom; gint i = 0; g_return_val_if_fail (GIMP_IS_DISPLAY_SHELL (shell), 0); image = gimp_display_get_image (shell->display); if (! image) { title[0] = '\n'; return 0; } gimp_zoom_model_get_fraction (shell->zoom, &num, &denom); while (i < title_len && *format) { switch (*format) { case '%': format++; switch (*format) { case 0: /* format string ends within %-sequence, print literal '%' */ case '%': title[i++] = '%'; break; case 'f': /* base filename */ i += print (title, title_len, i, "%s", gimp_image_get_display_name (image)); break; case 'F': /* full filename */ i += print (title, title_len, i, "%s", gimp_image_get_display_path (image)); break; case 'p': /* PDB id */ i += print (title, title_len, i, "%d", gimp_image_get_ID (image)); break; case 'i': /* instance */ i += print (title, title_len, i, "%d", gimp_display_get_instance (shell->display)); break; case 't': /* image type */ i += print (title, title_len, i, "%s %s", gimp_display_shell_title_image_type (image), gimp_display_shell_title_image_precision (image)); break; case 'T': /* drawable type */ { GimpDrawable *drawable = gimp_image_get_active_drawable (image); const Babl *format = gimp_drawable_get_format (drawable); if (drawable) i += print (title, title_len, i, "%s", gimp_babl_get_description (format)); } break; case 's': /* user source zoom factor */ i += print (title, title_len, i, "%d", denom); break; case 'd': /* user destination zoom factor */ i += print (title, title_len, i, "%d", num); break; case 'z': /* user zoom factor (percentage) */ { gdouble scale = gimp_zoom_model_get_factor (shell->zoom); i += print (title, title_len, i, scale >= 0.15 ? "%.0f" : "%.2f", 100.0 * scale); } break; case 'D': /* dirty flag */ if (format[1] == 0) { /* format string ends within %D-sequence, print literal '%D' */ i += print (title, title_len, i, "%%D"); break; } if (gimp_image_is_dirty (image)) title[i++] = format[1]; format++; break; case 'C': /* clean flag */ if (format[1] == 0) { /* format string ends within %C-sequence, print literal '%C' */ i += print (title, title_len, i, "%%C"); break; } if (! gimp_image_is_dirty (image)) title[i++] = format[1]; format++; break; case 'B': /* dirty flag (long) */ if (gimp_image_is_dirty (image)) i += print (title, title_len, i, "%s", _("(modified)")); break; case 'A': /* clean flag (long) */ if (! gimp_image_is_dirty (image)) i += print (title, title_len, i, "%s", _("(clean)")); break; case 'm': /* memory used by image */ { GimpObject *object = GIMP_OBJECT (image); gchar *str; str = g_format_size (gimp_object_get_memsize (object, NULL)); i += print (title, title_len, i, "%s", str); g_free (str); } break; case 'M': /* image size in megapixels */ i += print (title, title_len, i, "%.1f", (gdouble) gimp_image_get_width (image) * (gdouble) gimp_image_get_height (image) / 1000000.0); break; case 'l': /* number of layers */ i += print (title, title_len, i, "%d", gimp_image_get_n_layers (image)); break; case 'L': /* number of layers (long) */ { gint num = gimp_image_get_n_layers (image); i += print (title, title_len, i, ngettext ("%d layer", "%d layers", num), num); } break; case 'n': /* active drawable name */ { GimpDrawable *drawable = gimp_image_get_active_drawable (image); if (drawable) { gchar *desc; desc = gimp_viewable_get_description (GIMP_VIEWABLE (drawable), NULL); i += print (title, title_len, i, "%s", desc); g_free (desc); } else { i += print (title, title_len, i, "%s", _("(none)")); } } break; case 'P': /* active drawable PDB id */ { GimpDrawable *drawable = gimp_image_get_active_drawable (image); if (drawable) i += print (title, title_len, i, "%d", gimp_item_get_ID (GIMP_ITEM (drawable))); else i += print (title, title_len, i, "%s", _("(none)")); } break; case 'W': /* width in real-world units */ if (shell->unit != GIMP_UNIT_PIXEL) { gdouble xres; gdouble yres; gchar unit_format[8]; gimp_image_get_resolution (image, &xres, &yres); g_snprintf (unit_format, sizeof (unit_format), "%%.%df", gimp_unit_get_digits (shell->unit) + 1); i += print (title, title_len, i, unit_format, gimp_pixels_to_units (gimp_image_get_width (image), shell->unit, xres)); break; } /* else fallthru */ case 'w': /* width in pixels */ i += print (title, title_len, i, "%d", gimp_image_get_width (image)); break; case 'H': /* height in real-world units */ if (shell->unit != GIMP_UNIT_PIXEL) { gdouble xres; gdouble yres; gchar unit_format[8]; gimp_image_get_resolution (image, &xres, &yres); g_snprintf (unit_format, sizeof (unit_format), "%%.%df", gimp_unit_get_digits (shell->unit) + 1); i += print (title, title_len, i, unit_format, gimp_pixels_to_units (gimp_image_get_height (image), shell->unit, yres)); break; } /* else fallthru */ case 'h': /* height in pixels */ i += print (title, title_len, i, "%d", gimp_image_get_height (image)); break; case 'u': /* unit symbol */ i += print (title, title_len, i, "%s", gimp_unit_get_symbol (shell->unit)); break; case 'U': /* unit abbreviation */ i += print (title, title_len, i, "%s", gimp_unit_get_abbreviation (shell->unit)); break; /* Other cool things to be added: * %r = xresolution * %R = yresolution * %ø = image's fractal dimension * %þ = the answer to everything */ default: /* format string contains unknown %-sequence, print it literally */ i += print (title, title_len, i, "%%%c", *format); break; } break; default: title[i++] = *format; break; } format++; } title[MIN (i, title_len - 1)] = '\0'; return i; }
static void gimp_container_grid_view_highlight_item (GimpContainerView *container_view, GimpViewable *viewable, gpointer insert_data) { GimpContainerGridView *grid_view = GIMP_CONTAINER_GRID_VIEW (container_view); GimpContainerBox *box = GIMP_CONTAINER_BOX (container_view); GimpContainer *container; GimpView *view = NULL; container = gimp_container_view_get_container (container_view); if (insert_data) view = GIMP_VIEW (insert_data); if (grid_view->selected_item && grid_view->selected_item != view) { gimp_view_renderer_set_border_type (grid_view->selected_item->renderer, GIMP_VIEW_BORDER_WHITE); gimp_view_renderer_update (grid_view->selected_item->renderer); } if (view) { GtkRequisition view_requisition; GtkAdjustment *adj; gint item_height; gint index; gint row; gchar *name; adj = gtk_scrolled_window_get_vadjustment (GTK_SCROLLED_WINDOW (box->scrolled_win)); gtk_widget_size_request (GTK_WIDGET (view), &view_requisition); item_height = view_requisition.height; index = gimp_container_get_child_index (container, GIMP_OBJECT (viewable)); row = index / grid_view->columns; if (row * item_height < gtk_adjustment_get_value (adj)) { gtk_adjustment_set_value (adj, row * item_height); } else if ((row + 1) * item_height > (gtk_adjustment_get_value (adj) + gtk_adjustment_get_page_size (adj))) { gtk_adjustment_set_value (adj, (row + 1) * item_height - gtk_adjustment_get_page_size (adj)); } gimp_view_renderer_set_border_type (view->renderer, GIMP_VIEW_BORDER_BLACK); gimp_view_renderer_update (view->renderer); name = gimp_viewable_get_description (view->renderer->viewable, NULL); gimp_editor_set_name (GIMP_EDITOR (grid_view), name); g_free (name); } else { gimp_editor_set_name (GIMP_EDITOR (grid_view), NULL); } grid_view->selected_item = view; }