mirror of https://github.com/GNOME/gimp.git
app: add gimp_container_tree_view_name_edited() as public default callback
and use it in GimpBufferView and GimpTemplateView.
This commit is contained in:
parent
7aadf34a23
commit
8350ab4217
|
@ -33,7 +33,6 @@
|
|||
#include "core/gimpcontext.h"
|
||||
#include "core/gimpimage.h"
|
||||
|
||||
#include "gimpcontainertreestore.h"
|
||||
#include "gimpcontainertreeview.h"
|
||||
#include "gimpcontainerview.h"
|
||||
#include "gimpbufferview.h"
|
||||
|
@ -56,10 +55,6 @@ static void gimp_buffer_view_set_context (GimpDocked *docked,
|
|||
|
||||
static void gimp_buffer_view_activate_item (GimpContainerEditor *editor,
|
||||
GimpViewable *viewable);
|
||||
static void gimp_buffer_view_tree_name_edited (GtkCellRendererText *cell,
|
||||
const gchar *path_str,
|
||||
const gchar *new_name,
|
||||
GimpBufferView *view);
|
||||
|
||||
static void gimp_buffer_view_clipboard_changed (Gimp *gimp,
|
||||
GimpBufferView *buffer_view);
|
||||
|
@ -158,8 +153,8 @@ gimp_buffer_view_new (GimpViewType view_type,
|
|||
tree_view = GIMP_CONTAINER_TREE_VIEW (editor->view);
|
||||
|
||||
gimp_container_tree_view_connect_name_edited (tree_view,
|
||||
G_CALLBACK (gimp_buffer_view_tree_name_edited),
|
||||
buffer_view);
|
||||
G_CALLBACK (gimp_container_tree_view_name_edited),
|
||||
tree_view);
|
||||
}
|
||||
|
||||
frame = gtk_frame_new (NULL);
|
||||
|
@ -274,58 +269,6 @@ gimp_buffer_view_activate_item (GimpContainerEditor *editor,
|
|||
}
|
||||
}
|
||||
|
||||
static void
|
||||
gimp_buffer_view_tree_name_edited (GtkCellRendererText *cell,
|
||||
const gchar *path_str,
|
||||
const gchar *new_name,
|
||||
GimpBufferView *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_buffer_view_clipboard_changed (Gimp *gimp,
|
||||
GimpBufferView *buffer_view)
|
||||
|
|
|
@ -576,6 +576,60 @@ gimp_container_tree_view_connect_name_edited (GimpContainerTreeView *tree_view,
|
|||
data);
|
||||
}
|
||||
|
||||
gboolean
|
||||
gimp_container_tree_view_name_edited (GtkCellRendererText *cell,
|
||||
const gchar *path_str,
|
||||
const gchar *new_name,
|
||||
GimpContainerTreeView *tree_view)
|
||||
{
|
||||
GtkTreePath *path;
|
||||
GtkTreeIter iter;
|
||||
gboolean changed = FALSE;
|
||||
|
||||
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);
|
||||
|
||||
changed = TRUE;
|
||||
}
|
||||
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);
|
||||
|
||||
return changed;
|
||||
}
|
||||
|
||||
|
||||
/* GimpContainerView methods */
|
||||
|
||||
|
|
|
@ -131,6 +131,11 @@ void gimp_container_tree_view_connect_name_edited
|
|||
(GimpContainerTreeView *tree_view,
|
||||
GCallback callback,
|
||||
gpointer data);
|
||||
gboolean gimp_container_tree_view_name_edited
|
||||
(GtkCellRendererText *cell,
|
||||
const gchar *path_str,
|
||||
const gchar *new_name,
|
||||
GimpContainerTreeView *tree_view);
|
||||
|
||||
|
||||
#endif /* __GIMP_CONTAINER_TREE_VIEW_H__ */
|
||||
|
|
|
@ -36,7 +36,6 @@
|
|||
#include "core/gimpimage.h"
|
||||
#include "core/gimptemplate.h"
|
||||
|
||||
#include "gimpcontainertreestore.h"
|
||||
#include "gimpcontainertreeview.h"
|
||||
#include "gimpcontainerview.h"
|
||||
#include "gimpmenufactory.h"
|
||||
|
@ -49,12 +48,8 @@
|
|||
#include "gimp-intl.h"
|
||||
|
||||
|
||||
static void gimp_template_view_activate_item (GimpContainerEditor *editor,
|
||||
GimpViewable *viewable);
|
||||
static void gimp_template_view_tree_name_edited (GtkCellRendererText *cell,
|
||||
const gchar *path_str,
|
||||
const gchar *new_name,
|
||||
GimpTemplateView *view);
|
||||
static void gimp_template_view_activate_item (GimpContainerEditor *editor,
|
||||
GimpViewable *viewable);
|
||||
|
||||
|
||||
G_DEFINE_TYPE (GimpTemplateView, gimp_template_view,
|
||||
|
@ -122,8 +117,8 @@ gimp_template_view_new (GimpViewType view_type,
|
|||
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);
|
||||
G_CALLBACK (gimp_container_tree_view_name_edited),
|
||||
tree_view);
|
||||
}
|
||||
|
||||
template_view->create_button =
|
||||
|
@ -182,55 +177,3 @@ gimp_template_view_activate_item (GimpContainerEditor *editor,
|
|||
gtk_button_clicked (GTK_BUTTON (view->create_button));
|
||||
}
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue