SF.net SVN: geany: [1966] trunk

ntrel at users.sourceforge.net ntrel at xxxxx
Mon Oct 22 12:42:19 UTC 2007


Revision: 1966
          http://geany.svn.sourceforge.net/geany/?rev=1966&view=rev
Author:   ntrel
Date:     2007-10-22 05:42:19 -0700 (Mon, 22 Oct 2007)

Log Message:
-----------
Added File Browser sidebar plugin.
Rename 'Open Files' sidebar tab 'Documents'.
Add keybindings->send_command() and tm->get_real_path() to the plugin
API.

Modified Paths:
--------------
    trunk/ChangeLog
    trunk/doc/geany.html
    trunk/doc/geany.txt
    trunk/geany.glade
    trunk/plugins/Makefile.am
    trunk/plugins/makefile.win32
    trunk/po/POTFILES.in
    trunk/src/interface.c
    trunk/src/plugindata.h
    trunk/src/plugins.c
    trunk/src/treeviews.c
    trunk/src/utils.c
    trunk/src/vte.c

Added Paths:
-----------
    trunk/plugins/filebrowser.c

Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog	2007-10-22 12:31:26 UTC (rev 1965)
+++ trunk/ChangeLog	2007-10-22 12:42:19 UTC (rev 1966)
@@ -1,3 +1,15 @@
+2007-10-22  Nick Treleaven  <nick(dot)treleaven(at)btinternet(dot)com>
+
+ * plugins/filebrowser.c, plugins/Makefile.am, plugins/makefile.win32,
+   src/interface.c, src/utils.c, src/plugindata.h, src/treeviews.c,
+   src/vte.c, src/plugins.c, doc/geany.txt, doc/geany.html,
+   po/POTFILES.in, geany.glade:
+   Added File Browser sidebar plugin.
+   Rename 'Open Files' sidebar tab 'Documents'.
+   Add keybindings->send_command() and tm->get_real_path() to the plugin
+   API.
+
+
 2007-10-20  Enrico Tröger  <enrico(dot)troeger(at)uvena(dot)de>
 
  * src/keyfile.c: Fix possible wrong window title when loading session

Modified: trunk/doc/geany.html
===================================================================
--- trunk/doc/geany.html	2007-10-22 12:31:26 UTC (rev 1965)
+++ trunk/doc/geany.html	2007-10-22 12:42:19 UTC (rev 1966)
@@ -3,10 +3,10 @@
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-<meta name="generator" content="Docutils 0.4.1: http://docutils.sourceforge.net/" />
+<meta name="generator" content="Docutils 0.4: http://docutils.sourceforge.net/" />
 <title>Geany</title>
 <meta name="authors" content="Enrico Tröger  Nick Treleaven  Frank Lanitz" />
-<meta name="date" content="2007-10-18" />
+<meta name="date" content="2007-10-19" />
 <style type="text/css">
 
 /*
@@ -133,7 +133,7 @@
 <br />Nick Treleaven
 <br />Frank Lanitz</td></tr>
 <tr><th class="docinfo-name">Date:</th>
-<td>2007-10-18</td></tr>
+<td>2007-10-19</td></tr>
 <tr><th class="docinfo-name">Version:</th>
 <td>0.13</td></tr>
 </tbody>
@@ -1237,10 +1237,10 @@
 <h3><a class="toc-backref" href="#id53" id="interface-tab-in-preferences-dialog" name="interface-tab-in-preferences-dialog">Interface tab in preferences dialog</a></h3>
 <p>Interface tab in preferences dialog</p>
 <img alt="./images/pref_dialog_interface.png" src="./images/pref_dialog_interface.png" />
-<p>The open files list and the editor tabs are two different ways
+<p>The documents list and the editor tabs are two different ways
 to switch between documents using the mouse. When you hit the key
 combination to move between tabs, the order is determined by the tab
-order, not alphabetical as shown in the open files list (regardless
+order, not alphabetical as shown in the documents list (regardless
 whether or not editor tabs are visible).</p>
 </div>
 <div class="section">
@@ -3096,7 +3096,7 @@
 <div class="footer">
 <hr class="footer" />
 <a class="reference" href="geany.txt">View document source</a>.
-Generated on: 2007-10-19 14:35 UTC.
+Generated on: 2007-10-22 12:32 UTC.
 Generated by <a class="reference" href="http://docutils.sourceforge.net/">Docutils</a> from <a class="reference" href="http://docutils.sourceforge.net/rst.html">reStructuredText</a> source.
 
 </div>

Modified: trunk/doc/geany.txt
===================================================================
--- trunk/doc/geany.txt	2007-10-22 12:31:26 UTC (rev 1965)
+++ trunk/doc/geany.txt	2007-10-22 12:42:19 UTC (rev 1966)
@@ -1052,10 +1052,10 @@
 
 .. image:: ./images/pref_dialog_interface.png
 
-The open files list and the editor tabs are two different ways
+The documents list and the editor tabs are two different ways
 to switch between documents using the mouse. When you hit the key
 combination to move between tabs, the order is determined by the tab
-order, not alphabetical as shown in the open files list (regardless
+order, not alphabetical as shown in the documents list (regardless
 whether or not editor tabs are visible).
 
 

Modified: trunk/geany.glade
===================================================================
--- trunk/geany.glade	2007-10-22 12:31:26 UTC (rev 1965)
+++ trunk/geany.glade	2007-10-22 12:42:19 UTC (rev 1966)
@@ -2088,7 +2088,7 @@
 		  <child>
 		    <widget class="GtkLabel" id="label136">
 		      <property name="visible">True</property>
-		      <property name="label" translatable="yes">Open files</property>
+		      <property name="label" translatable="yes">Documents</property>
 		      <property name="use_underline">False</property>
 		      <property name="use_markup">False</property>
 		      <property name="justify">GTK_JUSTIFY_LEFT</property>
@@ -3690,9 +3690,9 @@
 			  <child>
 			    <widget class="GtkCheckButton" id="check_list_openfiles">
 			      <property name="visible">True</property>
-			      <property name="tooltip" translatable="yes">Toggle the open files list on and off</property>
+			      <property name="tooltip" translatable="yes">Toggle the documents list on and off</property>
 			      <property name="can_focus">True</property>
-			      <property name="label" translatable="yes">Show open files list</property>
+			      <property name="label" translatable="yes">Show documents list</property>
 			      <property name="use_underline">True</property>
 			      <property name="relief">GTK_RELIEF_NORMAL</property>
 			      <property name="focus_on_click">False</property>
@@ -3711,7 +3711,7 @@
 			    <widget class="GtkCheckButton" id="check_list_openfiles_fullpath">
 			      <property name="visible">True</property>
 			      <property name="can_focus">True</property>
-			      <property name="label" translatable="yes">Show full path name in open files list</property>
+			      <property name="label" translatable="yes">Show full path name in documents list</property>
 			      <property name="use_underline">True</property>
 			      <property name="relief">GTK_RELIEF_NORMAL</property>
 			      <property name="focus_on_click">False</property>

Modified: trunk/plugins/Makefile.am
===================================================================
--- trunk/plugins/Makefile.am	2007-10-22 12:31:26 UTC (rev 1965)
+++ trunk/plugins/Makefile.am	2007-10-22 12:42:19 UTC (rev 1966)
@@ -10,6 +10,7 @@
 htmlchars_la_LDFLAGS     = -module -avoid-version
 export_la_LDFLAGS        = -module -avoid-version
 svndiff_la_LDFLAGS       = -module -avoid-version
+filebrowser_la_LDFLAGS   = -module -avoid-version
 
 if PLUGINS
 
@@ -18,7 +19,8 @@
 	classbuilder.la \
 	htmlchars.la \
 	export.la \
-	svndiff.la
+	svndiff.la \
+	filebrowser.la
 
 # Plugins not to be installed
 noinst_LTLIBRARIES = \
@@ -29,12 +31,14 @@
 htmlchars_la_SOURCES     = htmlchars.c
 export_la_SOURCES        = export.c
 svndiff_la_SOURCES       = svndiff.c
+filebrowser_la_SOURCES   = filebrowser.c
 
 demoplugin_la_LIBADD    = $(GTK_LIBS)
 classbuilder_la_LIBADD  = $(GTK_LIBS)
 htmlchars_la_LIBADD     = $(GTK_LIBS)
 export_la_LIBADD        = $(GTK_LIBS)
 svndiff_la_LIBADD       = $(GTK_LIBS)
+filebrowser_la_LIBADD   = $(GTK_LIBS)
 
 endif # PLUGINS
 

Added: trunk/plugins/filebrowser.c
===================================================================
--- trunk/plugins/filebrowser.c	                        (rev 0)
+++ trunk/plugins/filebrowser.c	2007-10-22 12:42:19 UTC (rev 1966)
@@ -0,0 +1,409 @@
+/*
+ *      filebrowser.c - this file is part of Geany, a fast and lightweight IDE
+ *
+ *      Copyright 2007 Enrico Tröger <enrico.troeger at uvena.de>
+ *      Copyright 2007 Nick Treleaven <nick.treleaven at btinternet.com>
+ *
+ *      This program is free software; you can redistribute it and/or modify
+ *      it under the terms of the GNU General Public License as published by
+ *      the Free Software Foundation; either version 2 of the License, or
+ *      (at your option) any later version.
+ *
+ *      This program is distributed in the hope that it will be useful,
+ *      but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *      GNU General Public License for more details.
+ *
+ *      You should have received a copy of the GNU General Public License
+ *      along with this program; if not, write to the Free Software
+ *      Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ *      MA 02110-1301, USA.
+ *
+ * $Id$
+ */
+
+/* Sidebar file browser plugin. */
+
+#include "geany.h"
+
+#include <gdk/gdkkeysyms.h>
+
+#include "support.h"
+#include "prefs.h"
+#include "document.h"
+#include "utils.h"
+#include "plugindata.h"
+
+
+PluginFields	*plugin_fields;
+GeanyData		*geany_data;
+
+
+VERSION_CHECK(26)
+
+PLUGIN_INFO(_("File Browser"), _("Adds a file browser tab to the sidebar."), "0.1")
+
+
+#define doc_array	geany_data->doc_array
+#define documents	geany_data->document
+#define utils		geany_data->utils
+#define ui			geany_data->ui
+#define support		geany_data->support
+#define tm			geany_data->tm
+
+
+enum
+{
+	FILEVIEW_COLUMN_ICON = 0,
+	FILEVIEW_COLUMN_NAME,
+	FILEVIEW_N_COLUMNS,
+};
+
+static gboolean show_hidden_files = FALSE;
+static gboolean hide_object_files = TRUE;
+
+static GtkWidget	*file_view;
+static GtkListStore	*file_store;
+static GtkTreeIter	*last_dir_iter = NULL;
+
+static GtkWidget	*path_entry;
+static gchar		*current_dir = NULL;	// in locale-encoding
+
+
+// Returns: whether name should be hidden.
+static gboolean check_hidden(const gchar *basename)
+{
+	gsize len;
+
+	if (! NZV(basename))
+		return FALSE;
+
+	if (basename[0] == '.')
+		return TRUE;
+
+	len = strlen(basename);
+	if (basename[len - 1] == '~')
+		return TRUE;
+
+	if (hide_object_files)
+	{
+		const gchar *exts[] = {".o", ".obj", ".so", ".dll", ".a", ".lib"};
+		guint i;
+
+		for (i = 0; i < G_N_ELEMENTS(exts); i++)
+		{
+			const gchar *ext = exts[i];
+
+			if (utils->str_equal(&basename[len - strlen(ext)], ext))
+				return TRUE;
+		}
+	}
+	return FALSE;
+}
+
+
+// name is in locale encoding
+static void add_item(const gchar *name)
+{
+	GtkTreeIter iter;
+	gchar *fname, *utf8_name;
+	gboolean dir;
+
+	if (! show_hidden_files && check_hidden(name))
+		return;
+
+	fname = g_strconcat(current_dir, G_DIR_SEPARATOR_S, name, NULL);
+	dir = g_file_test(fname, G_FILE_TEST_IS_DIR);
+	g_free(fname);
+
+	if (dir)
+	{
+		if (last_dir_iter == NULL)
+			gtk_list_store_prepend(file_store, &iter);
+		else
+		{
+			gtk_list_store_insert_after(file_store, &iter, last_dir_iter);
+			gtk_tree_iter_free(last_dir_iter);
+		}
+		last_dir_iter = gtk_tree_iter_copy(&iter);
+	}
+	else
+		gtk_list_store_append(file_store, &iter);
+
+	utf8_name = utils->get_utf8_from_locale(name);
+
+	gtk_list_store_set(file_store, &iter,
+		FILEVIEW_COLUMN_ICON, (dir) ? GTK_STOCK_DIRECTORY : GTK_STOCK_FILE,
+		FILEVIEW_COLUMN_NAME, utf8_name, -1);
+	g_free(utf8_name);
+}
+
+
+static void clear()
+{
+	gtk_list_store_clear(file_store);
+
+	// reset the directory item pointer
+	if (last_dir_iter != NULL)
+		gtk_tree_iter_free(last_dir_iter);
+	last_dir_iter = NULL;
+}
+
+
+// recreate the tree model from current_dir.
+static void refresh()
+{
+	gchar *utf8_dir;
+	GSList *list;
+
+	clear();
+
+	// TODO: really, we don't want to dereference symlinks
+	setptr(current_dir, tm->get_real_path(current_dir));
+
+	utf8_dir = utils->get_utf8_from_locale(current_dir);
+	gtk_entry_set_text(GTK_ENTRY(path_entry), utf8_dir);
+	g_free(utf8_dir);
+
+	list = utils->get_file_list(current_dir, NULL, NULL);
+	if (list != NULL)
+	{
+		g_slist_foreach(list, (GFunc) add_item, NULL);
+		g_slist_foreach(list, (GFunc) g_free, NULL);
+		g_slist_free(list);
+	}
+}
+
+
+static void on_current_path()
+{
+	gchar *fname;
+	gchar *dir;
+	gint idx = documents->get_cur_idx();
+
+	if (! DOC_IDX_VALID(idx))
+		return;
+
+	fname = DOC_FILENAME(idx);
+	fname = utils->get_locale_from_utf8(fname);
+	dir = g_path_get_dirname(fname);
+	g_free(fname);
+
+	setptr(current_dir, dir);
+	refresh();
+}
+
+
+static void handle_selection(GList *list, GtkTreeSelection *treesel)
+{
+	GList *item;
+	GtkTreeModel *model = GTK_TREE_MODEL(file_store);
+	GtkTreePath *treepath;
+	GtkTreeIter iter;
+	gboolean dir_found = FALSE;
+
+	for (item = list; item != NULL; item = g_list_next(item))
+	{
+		gchar *icon;
+
+		treepath = (GtkTreePath*) item->data;
+		gtk_tree_model_get_iter(model, &iter, treepath);
+		gtk_tree_model_get(model, &iter, FILEVIEW_COLUMN_ICON, &icon, -1);
+
+		if (utils->str_equal(icon, GTK_STOCK_DIRECTORY))
+		{
+			dir_found = TRUE;
+			g_free(icon);
+			break;
+		}
+		g_free(icon);
+	}
+
+	if (dir_found && gtk_tree_selection_count_selected_rows(treesel) > 1)
+	{
+		ui->set_statusbar(FALSE, _("Too many items selected!"));
+		return;
+	}
+
+	for (item = list; item != NULL; item = g_list_next(item))
+	{
+		gchar *name, *fname;
+
+		treepath = (GtkTreePath*) item->data;
+		gtk_tree_model_get_iter(model, &iter, treepath);
+		gtk_tree_model_get(model, &iter, FILEVIEW_COLUMN_NAME, &name, -1);
+
+		setptr(name, utils->get_locale_from_utf8(name));
+		fname = g_strconcat(current_dir, G_DIR_SEPARATOR_S, name, NULL);
+		g_free(name);
+
+		if (dir_found)
+		{
+			setptr(current_dir, fname);
+			refresh();
+			return;
+		}
+		else
+		{
+			documents->open_file(fname, FALSE, NULL, NULL);
+			g_free(fname);
+		}
+	}
+}
+
+
+static void open_selected_files()
+{
+	GtkTreeSelection *treesel;
+	GtkTreeModel *model;
+	GList *list;
+
+	treesel = gtk_tree_view_get_selection(GTK_TREE_VIEW(file_view));
+
+	list = gtk_tree_selection_get_selected_rows(treesel, &model);
+	handle_selection(list, treesel);
+
+	g_list_foreach(list, (GFunc) gtk_tree_path_free, NULL);
+	g_list_free(list);
+}
+
+
+static gboolean on_button_press(GtkWidget *widget, GdkEventButton *event, gpointer user_data)
+{
+	if (event->button == 1 && event->type == GDK_2BUTTON_PRESS)
+		open_selected_files();
+	return FALSE;
+}
+
+
+static void on_go_home()
+{
+	setptr(current_dir, g_strdup(g_get_home_dir()));
+	refresh();
+}
+
+
+static void on_go_up()
+{
+	setptr(current_dir, g_build_path(G_DIR_SEPARATOR_S, current_dir, "..", NULL));
+	refresh();
+}
+
+
+static gboolean on_key_press(GtkWidget *widget, GdkEventKey *event, gpointer data)
+{
+	if (event->keyval == GDK_Return
+		|| event->keyval == GDK_ISO_Enter
+		|| event->keyval == GDK_KP_Enter
+		|| event->keyval == GDK_space)
+		open_selected_files();
+
+	if ((event->keyval == GDK_Up ||
+		event->keyval == GDK_KP_Up) &&
+		(event->state & GDK_MOD1_MASK))	// FIXME: Alt-Up doesn't seem to work!
+		on_go_up();
+	return FALSE;
+}
+
+
+static void prepare_file_view()
+{
+	GtkCellRenderer *text_renderer, *icon_renderer;
+	GtkTreeViewColumn *column;
+	GtkTreeSelection *select;
+	PangoFontDescription *pfd;
+
+	file_store = gtk_list_store_new(FILEVIEW_N_COLUMNS, G_TYPE_STRING, G_TYPE_STRING);
+
+	gtk_tree_view_set_model(GTK_TREE_VIEW(file_view), GTK_TREE_MODEL(file_store));
+
+	icon_renderer = gtk_cell_renderer_pixbuf_new();
+	text_renderer = gtk_cell_renderer_text_new();
+	column = gtk_tree_view_column_new();
+    gtk_tree_view_column_pack_start(column, icon_renderer, FALSE);
+  	gtk_tree_view_column_set_attributes(column, icon_renderer, "stock-id", FILEVIEW_COLUMN_ICON, NULL);
+    gtk_tree_view_column_pack_start(column, text_renderer, TRUE);
+  	gtk_tree_view_column_set_attributes(column, text_renderer, "text", FILEVIEW_COLUMN_NAME, NULL);
+	gtk_tree_view_append_column(GTK_TREE_VIEW(file_view), column);
+	gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(file_view), FALSE);
+
+	gtk_tree_view_set_enable_search(GTK_TREE_VIEW(file_view), TRUE);
+	gtk_tree_view_set_search_column(GTK_TREE_VIEW(file_view), FILEVIEW_COLUMN_NAME);
+
+	pfd = pango_font_description_from_string(geany_data->prefs->tagbar_font);
+	gtk_widget_modify_font(file_view, pfd);
+	pango_font_description_free(pfd);
+
+	// selection handling
+	select = gtk_tree_view_get_selection(GTK_TREE_VIEW(file_view));
+	gtk_tree_selection_set_mode(select, GTK_SELECTION_MULTIPLE);
+
+	g_signal_connect(G_OBJECT(file_view), "realize", G_CALLBACK(on_current_path), NULL);
+	g_signal_connect(G_OBJECT(file_view), "button-press-event",
+		G_CALLBACK(on_button_press), NULL);
+	g_signal_connect(G_OBJECT(file_view), "key-press-event",
+		G_CALLBACK(on_key_press), NULL);
+}
+
+
+void init(GeanyData *data)
+{
+	GtkWidget *scrollwin, *wid, *vbox, *toolbar;
+	GtkTooltips *tooltips = GTK_TOOLTIPS(support->lookup_widget(
+		geany_data->app->window, "tooltips"));
+
+	file_view = gtk_tree_view_new();
+	prepare_file_view();
+
+	vbox = gtk_vbox_new(FALSE, 0);
+
+	toolbar = gtk_toolbar_new();
+	gtk_toolbar_set_icon_size(GTK_TOOLBAR(toolbar), GTK_ICON_SIZE_MENU);
+
+	wid = (GtkWidget *) gtk_tool_button_new_from_stock(GTK_STOCK_GO_UP);
+	gtk_tool_item_set_tooltip(GTK_TOOL_ITEM(wid), tooltips,
+		_("Up"), NULL);
+	g_signal_connect(G_OBJECT(wid), "clicked", G_CALLBACK(on_go_up), NULL);
+	gtk_container_add(GTK_CONTAINER(toolbar), wid);
+
+	wid = (GtkWidget *) gtk_tool_button_new_from_stock(GTK_STOCK_REFRESH);
+	gtk_tool_item_set_tooltip(GTK_TOOL_ITEM(wid), tooltips,
+		_("Refresh"), NULL);
+	g_signal_connect(G_OBJECT(wid), "clicked", G_CALLBACK(refresh), NULL);
+	gtk_container_add(GTK_CONTAINER(toolbar), wid);
+
+	wid = (GtkWidget *) gtk_tool_button_new_from_stock(GTK_STOCK_HOME);
+	gtk_tool_item_set_tooltip(GTK_TOOL_ITEM(wid), tooltips,
+		_("Home"), NULL);
+	g_signal_connect(G_OBJECT(wid), "clicked", G_CALLBACK(on_go_home), NULL);
+	gtk_container_add(GTK_CONTAINER(toolbar), wid);
+
+	wid = (GtkWidget *) gtk_tool_button_new_from_stock(GTK_STOCK_JUMP_TO);
+	gtk_tool_item_set_tooltip(GTK_TOOL_ITEM(wid), tooltips,
+		_("Set path from document"), NULL);
+	g_signal_connect(G_OBJECT(wid), "clicked", G_CALLBACK(on_current_path), NULL);
+	gtk_container_add(GTK_CONTAINER(toolbar), wid);
+
+	gtk_box_pack_start(GTK_BOX(vbox), toolbar, FALSE, FALSE, 0);
+
+	path_entry = gtk_entry_new();
+	gtk_editable_set_editable(GTK_EDITABLE(path_entry), FALSE);
+	gtk_box_pack_start(GTK_BOX(vbox), path_entry, FALSE, FALSE, 2);
+
+	scrollwin = gtk_scrolled_window_new(NULL, NULL);
+	gtk_scrolled_window_set_policy(
+		GTK_SCROLLED_WINDOW(scrollwin),
+		GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
+	gtk_container_add(GTK_CONTAINER(scrollwin), file_view);
+	gtk_container_add(GTK_CONTAINER(vbox), scrollwin);
+
+	gtk_widget_show_all(vbox);
+	gtk_notebook_append_page(GTK_NOTEBOOK(data->app->treeview_notebook), vbox,
+		gtk_label_new(_("Files")));
+}
+
+
+void cleanup()
+{
+	gtk_widget_destroy(file_view);
+}


Property changes on: trunk/plugins/filebrowser.c
___________________________________________________________________
Name: svn:keywords
   + Author Date Id Revision
Name: svn:eol-style
   + native

Modified: trunk/plugins/makefile.win32
===================================================================
--- trunk/plugins/makefile.win32	2007-10-22 12:31:26 UTC (rev 1965)
+++ trunk/plugins/makefile.win32	2007-10-22 12:42:19 UTC (rev 1966)
@@ -45,7 +45,8 @@
 		demoplugin.dll \
 		classbuilder.dll \
 		export.dll \
-		svndiff.dll
+		svndiff.dll \
+		filebrowser.dll
 
 clean:
 	-$(RM) deps.mak *.o *.dll

Modified: trunk/po/POTFILES.in
===================================================================
--- trunk/po/POTFILES.in	2007-10-22 12:31:26 UTC (rev 1965)
+++ trunk/po/POTFILES.in	2007-10-22 12:42:19 UTC (rev 1966)
@@ -38,3 +38,4 @@
 plugins/htmlchars.c
 plugins/export.c
 plugins/svndiff.c
+plugins/filebrowser.c

Modified: trunk/src/interface.c
===================================================================
--- trunk/src/interface.c	2007-10-22 12:31:26 UTC (rev 1965)
+++ trunk/src/interface.c	2007-10-22 12:42:19 UTC (rev 1966)
@@ -1211,7 +1211,7 @@
   gtk_widget_show (treeview6);
   gtk_container_add (GTK_CONTAINER (scrolledwindow7), treeview6);
 
-  label136 = gtk_label_new (_("Open files"));
+  label136 = gtk_label_new (_("Documents"));
   gtk_widget_show (label136);
   gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook3), gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook3), 1), label136);
 
@@ -2911,13 +2911,13 @@
   gtk_tooltips_set_tip (tooltips, check_list_symbol, _("Toggle the symbol list on and off"), NULL);
   gtk_button_set_focus_on_click (GTK_BUTTON (check_list_symbol), FALSE);
 
-  check_list_openfiles = gtk_check_button_new_with_mnemonic (_("Show open files list"));
+  check_list_openfiles = gtk_check_button_new_with_mnemonic (_("Show documents list"));
   gtk_widget_show (check_list_openfiles);
   gtk_box_pack_start (GTK_BOX (vbox11), check_list_openfiles, FALSE, FALSE, 0);
-  gtk_tooltips_set_tip (tooltips, check_list_openfiles, _("Toggle the open files list on and off"), NULL);
+  gtk_tooltips_set_tip (tooltips, check_list_openfiles, _("Toggle the documents list on and off"), NULL);
   gtk_button_set_focus_on_click (GTK_BUTTON (check_list_openfiles), FALSE);
 
-  check_list_openfiles_fullpath = gtk_check_button_new_with_mnemonic (_("Show full path name in open files list"));
+  check_list_openfiles_fullpath = gtk_check_button_new_with_mnemonic (_("Show full path name in documents list"));
   gtk_widget_show (check_list_openfiles_fullpath);
   gtk_box_pack_start (GTK_BOX (vbox11), check_list_openfiles_fullpath, FALSE, FALSE, 0);
   gtk_button_set_focus_on_click (GTK_BUTTON (check_list_openfiles_fullpath), FALSE);

Modified: trunk/src/plugindata.h
===================================================================
--- trunk/src/plugindata.h	2007-10-22 12:31:26 UTC (rev 1965)
+++ trunk/src/plugindata.h	2007-10-22 12:42:19 UTC (rev 1966)
@@ -71,7 +71,7 @@
 
 /* The API version should be incremented whenever any plugin data types below are
  * modified or appended to. */
-static const gint api_version = 25;
+static const gint api_version = 26;
 
 /* The ABI version should be incremented whenever existing fields in the plugin
  * data types below have to be changed or reordered. It should stay the same if fields
@@ -119,6 +119,17 @@
 	}
 
 
+/* For geany_callbacks array - see top of file. */
+typedef struct GeanyCallback
+{
+	gchar		*signal_name;
+	GCallback	callback;
+	gboolean	after;
+	gpointer	user_data;
+}
+GeanyCallback;
+
+
 typedef enum
 {
 	PLUGIN_IS_DOCUMENT_SENSITIVE	= 1 << 0	// if menu_item should be disabled when there are no documents
@@ -159,6 +170,8 @@
 	struct DialogFuncs		*dialogs;
 	struct MsgWinFuncs		*msgwindow;
 	struct EncodingFuncs	*encoding;
+	struct KeybindingFuncs	*keybindings;
+	struct TagManagerFuncs	*tm;
 }
 GeanyData;
 
@@ -289,13 +302,18 @@
 EncodingFuncs;
 
 
-typedef struct GeanyCallback
+typedef struct KeybindingFuncs
 {
-	gchar		*signal_name;
-	GCallback	callback;
-	gboolean	after;
-	gpointer	user_data;
+	/* See GeanyKeyCommand enum for cmd_id. */
+	void		(*send_command) (gint cmd_id);
 }
-GeanyCallback;
+KeybindingFuncs;
 
+
+typedef struct TagManagerFuncs
+{
+	gchar*		(*get_real_path) (const gchar *file_name);
+}
+TagManagerFuncs;
+
 #endif

Modified: trunk/src/plugins.c
===================================================================
--- trunk/src/plugins.c	2007-10-22 12:31:26 UTC (rev 1965)
+++ trunk/src/plugins.c	2007-10-22 12:42:19 UTC (rev 1966)
@@ -50,7 +50,10 @@
 #include "build.h"
 #include "encodings.h"
 
+void keybindings_cmd(gint cmd_id);	// don't require keybindings.h enum in plugindata.h
 
+
+
 #ifdef G_OS_WIN32
 # define PLUGIN_EXT "dll"
 #else
@@ -184,7 +187,15 @@
 	&encodings_convert_to_utf8_from_charset
 };
 
+static KeybindingFuncs keybindings_funcs = {
+	&keybindings_cmd
+};
 
+static TagManagerFuncs tagmanager_funcs = {
+	&tm_get_real_path
+};
+
+
 static GeanyData geany_data = {
 	NULL,
 	NULL,
@@ -202,7 +213,9 @@
 	&support_funcs,
 	&dialog_funcs,
 	&msgwin_funcs,
-	&encoding_funcs
+	&encoding_funcs,
+	&keybindings_funcs,
+	&tagmanager_funcs,
 };
 
 

Modified: trunk/src/treeviews.c
===================================================================
--- trunk/src/treeviews.c	2007-10-22 12:31:26 UTC (rev 1965)
+++ trunk/src/treeviews.c	2007-10-22 12:42:19 UTC (rev 1966)
@@ -241,7 +241,7 @@
 			GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
 
 	renderer = gtk_cell_renderer_text_new();
-	column = gtk_tree_view_column_new_with_attributes(_("Open files"), renderer,
+	column = gtk_tree_view_column_new_with_attributes(_("Documents"), renderer,
 															"text", 0, "foreground-gdk", 2, NULL);
 	gtk_tree_view_append_column(GTK_TREE_VIEW(tv.tree_openfiles), column);
 	gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(tv.tree_openfiles), FALSE);

Modified: trunk/src/utils.c
===================================================================
--- trunk/src/utils.c	2007-10-22 12:31:26 UTC (rev 1965)
+++ trunk/src/utils.c	2007-10-22 12:42:19 UTC (rev 1966)
@@ -1564,7 +1564,8 @@
 }
 
 
-/* Gets a sorted list of files in the specified directory.
+/* Gets a sorted list of files from the specified directory.
+ * Locale encoding is expected for path and used for the file list.
  * The list and the data in the list should be freed after use.
  * Returns: The list or NULL if no files found.
  * length will point to the number of non-NULL data items in the list, unless NULL.

Modified: trunk/src/vte.c
===================================================================
--- trunk/src/vte.c	2007-10-22 12:31:26 UTC (rev 1965)
+++ trunk/src/vte.c	2007-10-22 12:42:19 UTC (rev 1966)
@@ -411,7 +411,7 @@
 	gtk_container_add(GTK_CONTAINER(menu), item);
 	g_signal_connect((gpointer)item, "activate", G_CALLBACK(vte_popup_menu_clicked), GINT_TO_POINTER(POPUP_PASTE));
 
-	item = gtk_image_menu_item_new_with_label("Change current working directory");
+	item = gtk_image_menu_item_new_with_label(_("Set path from document"));
 	gtk_widget_show(item);
 	gtk_container_add(GTK_CONTAINER(menu), item);
 	g_signal_connect((gpointer)item, "activate", G_CALLBACK(vte_popup_menu_clicked), GINT_TO_POINTER(POPUP_CHANGEPATH));


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.



More information about the Commits mailing list