anjuta r4477 - in trunk: . plugins/document-manager
- From: jhs svn gnome org
- To: svn-commits-list gnome org
- Subject: anjuta r4477 - in trunk: . plugins/document-manager
- Date: Sun, 21 Dec 2008 23:33:34 +0000 (UTC)
Author: jhs
Date: Sun Dec 21 23:33:34 2008
New Revision: 4477
URL: http://svn.gnome.org/viewvc/anjuta?rev=4477&view=rev
Log:
2008-12-22 Johannes Schmid <jhs gnome org>
* plugins/document-manager/anjuta-bookmarks.c (on_title_edited),
(anjuta_bookmarks_init), (anjuta_bookmarks_get_text),
(anjuta_bookmarks_add):
Be able to assign names to bookmarks and use selection or symbol-manager scope
as default name
Modified:
trunk/ChangeLog
trunk/plugins/document-manager/anjuta-bookmarks.c
Modified: trunk/plugins/document-manager/anjuta-bookmarks.c
==============================================================================
--- trunk/plugins/document-manager/anjuta-bookmarks.c (original)
+++ trunk/plugins/document-manager/anjuta-bookmarks.c Sun Dec 21 23:33:34 2008
@@ -21,6 +21,8 @@
#include "anjuta-docman.h"
#include <libanjuta/interfaces/ianjuta-markable.h>
#include <libanjuta/interfaces/ianjuta-file.h>
+#include <libanjuta/interfaces/ianjuta-editor-selection.h>
+#include <libanjuta/interfaces/ianjuta-symbol-manager.h>
#include <gtk/gtk.h>
#include <gio/gio.h>
@@ -36,6 +38,8 @@
GtkWidget* window;
GtkWidget* tree;
GtkTreeModel* model;
+ GtkCellRenderer* renderer;
+ GtkTreeViewColumn* column;
GtkWidget* button_add;
GtkWidget* button_remove;
@@ -154,11 +158,27 @@
}
static void
+on_title_edited (GtkCellRendererText *cell,
+ gchar *path_string,
+ gchar *new_text,
+ AnjutaBookmarks* bookmarks)
+{
+ AnjutaBookmarksPrivate* priv = BOOKMARKS_GET_PRIVATE(bookmarks);
+ GtkTreeModel *model = priv->model;
+ GtkTreeIter iter;
+ GtkTreePath *path = gtk_tree_path_new_from_string (path_string);
+
+ gtk_tree_model_get_iter (model, &iter, path);
+ gtk_list_store_set (GTK_LIST_STORE (model), &iter, COLUMN_TEXT, new_text, -1);
+
+ gtk_tree_path_free (path);
+ g_object_set (G_OBJECT(priv->renderer), "editable", FALSE, NULL);
+}
+
+static void
anjuta_bookmarks_init (AnjutaBookmarks *bookmarks)
{
AnjutaBookmarksPrivate* priv = BOOKMARKS_GET_PRIVATE(bookmarks);
- GtkCellRenderer* renderer;
- GtkTreeViewColumn* column;
GtkWidget* scrolled_window;
GtkWidget* button_box;
GtkTreeSelection* selection;
@@ -175,10 +195,12 @@
G_TYPE_OBJECT, G_TYPE_INT, G_TYPE_INT));
priv->tree = gtk_tree_view_new_with_model (priv->model);
gtk_tree_view_set_headers_visible (GTK_TREE_VIEW(priv->tree), FALSE);
- renderer = gtk_cell_renderer_text_new();
- column = gtk_tree_view_column_new_with_attributes ("Bookmark", renderer,
+ priv->renderer = gtk_cell_renderer_text_new();
+ g_signal_connect (G_OBJECT(priv->renderer), "edited", G_CALLBACK(on_title_edited),
+ bookmarks);
+ priv->column = gtk_tree_view_column_new_with_attributes ("Bookmark", priv->renderer,
"text", COLUMN_TEXT, NULL);
- gtk_tree_view_append_column (GTK_TREE_VIEW(priv->tree), column);
+ gtk_tree_view_append_column (GTK_TREE_VIEW(priv->tree), priv->column);
gtk_container_add (GTK_CONTAINER(scrolled_window),
priv->tree);
@@ -189,7 +211,6 @@
g_signal_connect (G_OBJECT(selection), "changed", G_CALLBACK(on_selection_changed),
bookmarks);
-
button_box = gtk_hbutton_box_new ();
priv->button_add = gtk_button_new_from_stock (GTK_STOCK_ADD);
priv->button_remove = gtk_button_new_from_stock (GTK_STOCK_REMOVE);
@@ -252,12 +273,55 @@
return bookmarks;
}
+static gchar*
+anjuta_bookmarks_get_text (AnjutaBookmarks* bookmarks, IAnjutaEditor* editor, gint line)
+{
+ AnjutaBookmarksPrivate* priv = BOOKMARKS_GET_PRIVATE(bookmarks);
+ IAnjutaSymbolManager* sym_manager;
+ /* If we have a (short) selection, take this */
+ if (IANJUTA_IS_EDITOR_SELECTION(editor))
+ {
+ IAnjutaEditorSelection* selection = IANJUTA_EDITOR_SELECTION(editor);
+ if (ianjuta_editor_selection_has_selection (selection, NULL))
+ {
+ gchar* text = ianjuta_editor_selection_get (selection, NULL);
+ if (strlen (text) < 100)
+ return text;
+ g_free (text);
+ }
+ }
+ /* If we can get the symbol scope - take it */
+ sym_manager = anjuta_shell_get_interface (ANJUTA_PLUGIN(priv->docman)->shell,
+ IAnjutaSymbolManager,
+ NULL);
+ if (sym_manager != NULL)
+ {
+ GFile* file = ianjuta_file_get_file(IANJUTA_FILE(editor), NULL);
+ gchar* path = g_file_get_path (file);
+ IAnjutaIterable* iter =
+ ianjuta_symbol_manager_get_scope (sym_manager,
+ path,
+ line,
+ IANJUTA_SYMBOL_FIELD_SIMPLE,
+ NULL);
+ g_free (path);
+ if (iter)
+ {
+ return g_strdup (ianjuta_symbol_get_name(IANJUTA_SYMBOL(iter), NULL));
+ }
+ }
+ /* As last chance, take file + line */
+ return g_strdup_printf ("%s:%d", ianjuta_document_get_filename(IANJUTA_DOCUMENT(editor), NULL),
+ line);
+}
+
void
anjuta_bookmarks_add (AnjutaBookmarks* bookmarks, IAnjutaEditor* editor, gint line)
{
g_return_if_fail (IANJUTA_IS_MARKABLE(editor));
IAnjutaMarkable* markable = IANJUTA_MARKABLE(editor);
GtkTreeIter iter;
+ GtkTreePath* path;
gint handle;
gchar* text;
AnjutaBookmarksPrivate* priv = BOOKMARKS_GET_PRIVATE(bookmarks);
@@ -270,8 +334,7 @@
handle = ianjuta_markable_mark (markable, line, IANJUTA_MARKABLE_BOOKMARK, NULL);
gtk_list_store_append (GTK_LIST_STORE(priv->model), &iter);
- text = g_strdup_printf ("%s:%d", ianjuta_document_get_filename(IANJUTA_DOCUMENT(editor), NULL),
- line);
+ text = anjuta_bookmarks_get_text (bookmarks, editor, line);
file = ianjuta_file_get_file(IANJUTA_FILE(editor), NULL);
gtk_list_store_set (GTK_LIST_STORE(priv->model), &iter,
COLUMN_TEXT, text,
@@ -281,6 +344,22 @@
-1);
g_free(text);
g_object_unref (file);
+
+ g_object_set (G_OBJECT(priv->renderer), "editable", TRUE, NULL);
+
+ path = gtk_tree_model_get_path (priv->model, &iter);
+
+ anjuta_shell_present_widget (ANJUTA_PLUGIN(priv->docman)->shell,
+ priv->window, NULL);
+ gtk_widget_grab_focus (priv->tree);
+ gtk_tree_view_scroll_to_cell (GTK_TREE_VIEW (priv->tree), path,
+ priv->column, FALSE, 0.0, 0.0);
+
+ gtk_tree_view_set_cursor_on_cell (GTK_TREE_VIEW (priv->tree), path,
+ priv->column,
+ priv->renderer,
+ TRUE);
+ gtk_tree_path_free (path);
}
void
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]