[gimp] app: add an "edit-name" binding signal and default to F2
- From: Michael Natterer <mitch src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gimp] app: add an "edit-name" binding signal and default to F2
- Date: Mon, 14 Feb 2011 19:01:39 +0000 (UTC)
commit 95f14f5de86cf07ae14ba27807b71e9841a14978
Author: Michael Natterer <mitch gimp org>
Date: Mon Feb 14 20:01:08 2011 +0100
app: add an "edit-name" binding signal and default to F2
app/widgets/gimpcontainertreeview.c | 70 +++++++++++++++++++++++++++++++++++
app/widgets/gimpcontainertreeview.h | 6 +++
2 files changed, 76 insertions(+), 0 deletions(-)
---
diff --git a/app/widgets/gimpcontainertreeview.c b/app/widgets/gimpcontainertreeview.c
index b3adffe..ea87894 100644
--- a/app/widgets/gimpcontainertreeview.c
+++ b/app/widgets/gimpcontainertreeview.c
@@ -22,6 +22,7 @@
#include <string.h>
+#include <gdk/gdkkeysyms.h>
#include <gtk/gtk.h>
#include "libgimpwidgets/gimpwidgets.h"
@@ -30,6 +31,7 @@
#include "core/gimpcontainer.h"
#include "core/gimpcontext.h"
+#include "core/gimpmarshal.h"
#include "core/gimpviewable.h"
#include "gimpcellrendererviewable.h"
@@ -44,6 +46,13 @@
#include "gimpwidgets-utils.h"
+enum
+{
+ EDIT_NAME,
+ LAST_SIGNAL
+};
+
+
static void gimp_container_tree_view_view_iface_init (GimpContainerViewInterface *iface);
static void gimp_container_tree_view_constructed (GObject *object);
@@ -79,6 +88,8 @@ static gboolean gimp_container_tree_view_select_item (GimpContainerVi
static void gimp_container_tree_view_clear_items (GimpContainerView *view);
static void gimp_container_tree_view_set_view_size (GimpContainerView *view);
+static void gimp_container_tree_view_real_edit_name (GimpContainerTreeView *tree_view);
+
static void gimp_container_tree_view_name_canceled (GtkCellRendererText *cell,
GimpContainerTreeView *tree_view);
@@ -114,12 +125,15 @@ G_DEFINE_TYPE_WITH_CODE (GimpContainerTreeView, gimp_container_tree_view,
static GimpContainerViewInterface *parent_view_iface = NULL;
+static guint tree_view_signals[LAST_SIGNAL] = { 0 };
+
static void
gimp_container_tree_view_class_init (GimpContainerTreeViewClass *klass)
{
GObjectClass *object_class = G_OBJECT_CLASS (klass);
GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
+ GtkBindingSet *binding_set;
object_class->constructed = gimp_container_tree_view_constructed;
object_class->finalize = gimp_container_tree_view_finalize;
@@ -127,6 +141,7 @@ gimp_container_tree_view_class_init (GimpContainerTreeViewClass *klass)
widget_class->unmap = gimp_container_tree_view_unmap;
widget_class->popup_menu = gimp_container_tree_view_popup_menu;
+ klass->edit_name = gimp_container_tree_view_real_edit_name;
klass->drop_possible = gimp_container_tree_view_real_drop_possible;
klass->drop_viewable = gimp_container_tree_view_real_drop_viewable;
klass->drop_color = NULL;
@@ -135,6 +150,20 @@ gimp_container_tree_view_class_init (GimpContainerTreeViewClass *klass)
klass->drop_component = NULL;
klass->drop_pixbuf = NULL;
+ tree_view_signals[EDIT_NAME] =
+ g_signal_new ("edit-name",
+ G_TYPE_FROM_CLASS (klass),
+ G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
+ G_STRUCT_OFFSET (GimpContainerTreeViewClass, edit_name),
+ NULL, NULL,
+ gimp_marshal_VOID__VOID,
+ G_TYPE_NONE, 0);
+
+ binding_set = gtk_binding_set_by_class (klass);
+
+ gtk_binding_entry_add_signal (binding_set, GDK_F2, 0,
+ "edit-name", 0);
+
g_type_class_add_private (klass, sizeof (GimpContainerTreeViewPriv));
}
@@ -754,6 +783,47 @@ gimp_container_tree_view_set_view_size (GimpContainerView *view)
}
+/* GimpContainerTreeView methods */
+
+static void
+gimp_container_tree_view_real_edit_name (GimpContainerTreeView *tree_view)
+{
+ GtkTreeIter selected_iter;
+
+ if (g_list_find (tree_view->priv->editable_cells,
+ tree_view->priv->name_cell) &&
+ gimp_container_tree_view_get_selected_single (tree_view,
+ &selected_iter))
+ {
+ GimpViewRenderer *renderer;
+ const gchar *real_name;
+ GtkTreePath *path;
+
+ gtk_tree_model_get (tree_view->model, &selected_iter,
+ GIMP_CONTAINER_TREE_STORE_COLUMN_RENDERER, &renderer,
+ -1);
+
+ real_name = gimp_object_get_name (renderer->viewable);
+
+ g_object_unref (renderer);
+
+ gtk_tree_store_set (GTK_TREE_STORE (tree_view->model),
+ &selected_iter,
+ GIMP_CONTAINER_TREE_STORE_COLUMN_NAME, real_name,
+ -1);
+
+ path = gtk_tree_model_get_path (tree_view->model, &selected_iter);
+
+ gtk_tree_view_set_cursor_on_cell (tree_view->view, path,
+ tree_view->main_column,
+ tree_view->priv->name_cell,
+ TRUE);
+
+ gtk_tree_path_free (path);
+ }
+}
+
+
/* callbacks */
static void
diff --git a/app/widgets/gimpcontainertreeview.h b/app/widgets/gimpcontainertreeview.h
index 8bfb6d0..b9d0cc6 100644
--- a/app/widgets/gimpcontainertreeview.h
+++ b/app/widgets/gimpcontainertreeview.h
@@ -58,6 +58,12 @@ struct _GimpContainerTreeViewClass
{
GimpContainerBoxClass parent_class;
+ /* signals */
+
+ void (* edit_name) (GimpContainerTreeView *tree_view);
+
+ /* virtual functions */
+
gboolean (* drop_possible) (GimpContainerTreeView *tree_view,
GimpDndType src_type,
GimpViewable *src_viewable,
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]