Revision: 3288 http://geany.svn.sourceforge.net/geany/?rev=3288&view=rev Author: eht16 Date: 2008-11-29 12:50:52 +0000 (Sat, 29 Nov 2008)
Log Message: ----------- Add editor_get_calltip_text(). Add tooltips for the symbol list items.
Modified Paths: -------------- trunk/ChangeLog trunk/src/editor.c trunk/src/editor.h trunk/src/symbols.c trunk/src/treeviews.c trunk/src/treeviews.h
Modified: trunk/ChangeLog =================================================================== --- trunk/ChangeLog 2008-11-29 12:50:27 UTC (rev 3287) +++ trunk/ChangeLog 2008-11-29 12:50:52 UTC (rev 3288) @@ -4,6 +4,10 @@ Simplify the tooltips code for the Open Files treeview. Change the dependency handling for GTK 2.12 for some features from compile time to run time. + * src/editor.c, src/editor.h, src/symbols.c, src/treeviews.c, + src/treeviews.h: + Add editor_get_calltip_text(). + Add tooltips for the symbol list items.
2008-11-28 Nick Treleaven <nick(dot)treleaven(at)btinternet(dot)com>
Modified: trunk/src/editor.c =================================================================== --- trunk/src/editor.c 2008-11-29 12:50:27 UTC (rev 3287) +++ trunk/src/editor.c 2008-11-29 12:50:52 UTC (rev 3288) @@ -1387,6 +1387,20 @@ }
+gchar *editor_get_calltip_text(GeanyEditor *editor, const TMTag *tag) +{ + GString *str; + + g_return_val_if_fail(editor != NULL, NULL); + + str = g_string_new(NULL); + if (append_calltip(str, tag, FILETYPE_ID(editor->document->file_type))) + return g_string_free(str, FALSE); + else + return g_string_free(str, TRUE); +} + + static void show_autocomplete(ScintillaObject *sci, gint rootlen, const gchar *words) { /* store whether a calltip is showing, so we can reshow it after autocompletion */
Modified: trunk/src/editor.h =================================================================== --- trunk/src/editor.h 2008-11-29 12:50:27 UTC (rev 3287) +++ trunk/src/editor.h 2008-11-29 12:50:52 UTC (rev 3288) @@ -256,4 +256,6 @@
void editor_apply_update_prefs(GeanyEditor *editor);
+gchar *editor_get_calltip_text(GeanyEditor *editor, const TMTag *tag); + #endif
Modified: trunk/src/symbols.c =================================================================== --- trunk/src/symbols.c 2008-11-29 12:50:27 UTC (rev 3287) +++ trunk/src/symbols.c 2008-11-29 12:50:52 UTC (rev 3288) @@ -831,8 +831,7 @@ }
-static const gchar *get_symbol_name(GeanyDocument *doc, const TMTag *tag, - gboolean found_parent) +static const gchar *get_symbol_name(GeanyDocument *doc, const TMTag *tag, gboolean found_parent) { gchar *utf8_name; const gchar *scope = tag->atts.entry.scope; @@ -879,6 +878,22 @@ }
+static gchar *get_symbol_tooltip(GeanyDocument *doc, const TMTag *tag) +{ + gchar *utf8_name = editor_get_calltip_text(doc->editor, tag); + + /* encodings_convert_to_utf8_from_charset() fails with charset "None", so skip conversion + * for None at this point completely */ + if (! utils_str_equal(doc->encoding, "UTF-8") && ! utils_str_equal(doc->encoding, "None")) + { + setptr(utf8_name, + encodings_convert_to_utf8_from_charset(utf8_name, -1, doc->encoding, TRUE)); + } + + return utf8_name; +} + + /* find the last word in "foo::bar::blah", e.g. "blah" */ const gchar *get_parent_name(const TMTag *tag, filetype_id ft_id) { @@ -989,6 +1004,7 @@ { const gchar *name; const gchar *parent_name = get_parent_name(tag, ft_id); + gchar *tooltip; GtkTreeIter iter; GtkTreeIter *icon_iter = NULL, *child = NULL; GdkPixbuf *icon = NULL; @@ -1025,11 +1041,15 @@ gtk_tree_store_append(tree_store, child, parent);
name = get_symbol_name(doc, tag, (parent_name != NULL)); + tooltip = get_symbol_tooltip(doc, tag); gtk_tree_store_set(tree_store, child, SYMBOLS_COLUMN_ICON, icon, SYMBOLS_COLUMN_NAME, name, - SYMBOLS_COLUMN_TAG, tag, -1); + SYMBOLS_COLUMN_TAG, tag, + SYMBOLS_COLUMN_TOOLTIP, tooltip, + -1);
+ g_free(tooltip); if (G_LIKELY(G_IS_OBJECT(icon))) g_object_unref(icon); }
Modified: trunk/src/treeviews.c =================================================================== --- trunk/src/treeviews.c 2008-11-29 12:50:27 UTC (rev 3287) +++ trunk/src/treeviews.c 2008-11-29 12:50:52 UTC (rev 3288) @@ -122,6 +122,10 @@ g_object_set(tree, "show-expanders", interface_prefs.show_symbol_list_expanders, NULL); if (! interface_prefs.show_symbol_list_expanders) g_object_set(tree, "level-indentation", 10, NULL); + /* Tooltips */ + g_object_set(tree, + "has-tooltip", TRUE, + "tooltip-column", SYMBOLS_COLUMN_TOOLTIP, NULL); }
/* selection handling */ @@ -180,7 +184,7 @@ if (doc->priv->tag_tree == NULL) { doc->priv->tag_store = gtk_tree_store_new( - SYMBOLS_N_COLUMNS, GDK_TYPE_PIXBUF, G_TYPE_STRING, G_TYPE_POINTER); + SYMBOLS_N_COLUMNS, GDK_TYPE_PIXBUF, G_TYPE_STRING, G_TYPE_POINTER, G_TYPE_STRING); doc->priv->tag_tree = gtk_tree_view_new(); prepare_taglist(doc->priv->tag_tree, doc->priv->tag_store); gtk_widget_show(doc->priv->tag_tree);
Modified: trunk/src/treeviews.h =================================================================== --- trunk/src/treeviews.h 2008-11-29 12:50:27 UTC (rev 3287) +++ trunk/src/treeviews.h 2008-11-29 12:50:52 UTC (rev 3288) @@ -42,6 +42,7 @@ SYMBOLS_COLUMN_ICON, SYMBOLS_COLUMN_NAME, SYMBOLS_COLUMN_TAG, + SYMBOLS_COLUMN_TOOLTIP, SYMBOLS_N_COLUMNS };
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.