app: add gimp_container_tree_view_name_edited() as public default callback

and use it in GimpBufferView and GimpTemplateView.
This commit is contained in:
Michael Natterer 2017-11-14 20:54:38 +01:00
parent 7aadf34a23
commit 8350ab4217
4 changed files with 65 additions and 120 deletions

View File

@ -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)

View File

@ -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 */

View File

@ -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__ */

View File

@ -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);
}