SF.net SVN: geany-plugins:[1028] trunk/geany-plugins

eht16 at users.sourceforge.net eht16 at xxxxx
Sun Oct 25 22:34:43 UTC 2009


Revision: 1028
          http://geany-plugins.svn.sourceforge.net/geany-plugins/?rev=1028&view=rev
Author:   eht16
Date:     2009-10-25 22:34:43 +0000 (Sun, 25 Oct 2009)

Log Message:
-----------
Add a simple bookmark list to the sidebar (as part of the Addons plugin).

Modified Paths:
--------------
    trunk/geany-plugins/addons/src/Makefile.am
    trunk/geany-plugins/addons/src/addons.c
    trunk/geany-plugins/po/POTFILES.in

Added Paths:
-----------
    trunk/geany-plugins/addons/src/ao_bookmarklist.c
    trunk/geany-plugins/addons/src/ao_bookmarklist.h

Modified: trunk/geany-plugins/addons/src/Makefile.am
===================================================================
--- trunk/geany-plugins/addons/src/Makefile.am	2009-10-25 12:12:53 UTC (rev 1027)
+++ trunk/geany-plugins/addons/src/Makefile.am	2009-10-25 22:34:43 UTC (rev 1028)
@@ -8,11 +8,13 @@
 	ao_doclist.h \
 	ao_openuri.h \
 	ao_systray.h \
+	ao_bookmarklist.h \
 	tasks.h \
 	addons.c \
 	ao_doclist.c \
 	ao_openuri.c \
 	ao_systray.c \
+	ao_bookmarklist.c \
 	tasks.c
 
 addons_la_LIBADD = $(COMMONLIBS)

Modified: trunk/geany-plugins/addons/src/addons.c
===================================================================
--- trunk/geany-plugins/addons/src/addons.c	2009-10-25 12:12:53 UTC (rev 1027)
+++ trunk/geany-plugins/addons/src/addons.c	2009-10-25 22:34:43 UTC (rev 1028)
@@ -27,6 +27,7 @@
 #include "ao_doclist.h"
 #include "ao_openuri.h"
 #include "ao_systray.h"
+#include "ao_bookmarklist.h"
 #include "tasks.h"
 
 
@@ -36,7 +37,7 @@
 GeanyFunctions	*geany_functions;
 
 
-PLUGIN_VERSION_CHECK(161)
+PLUGIN_VERSION_CHECK(164)
 PLUGIN_SET_INFO(_("Addons"), _("Various small addons for Geany."), VERSION,
 	"Enrico Tröger, Bert Vermeulen")
 
@@ -49,11 +50,13 @@
 	gboolean enable_openuri;
 	gboolean enable_tasks;
 	gboolean enable_systray;
+	gboolean enable_bookmarklist;
 
 	/* instances and variables of components */
 	AoDocList *doclist;
 	AoOpenUri *openuri;
 	AoSystray *systray;
+	AoBookmarkList *bookmarklist;
 } AddonsInfo;
 static AddonsInfo *ao_info = NULL;
 
@@ -61,21 +64,37 @@
 
 static void ao_update_editor_menu_cb(GObject *obj, const gchar *word, gint pos,
 									 GeanyDocument *doc, gpointer data);
+static void ao_document_activate_cb(GObject *obj, GeanyDocument *doc, gpointer data);
+gboolean ao_editor_notify_cb(GObject *object, GeanyEditor *editor,
+	SCNotification *nt, gpointer data);
 
 
 PluginCallback plugin_callbacks[] =
 {
     { "update-editor-menu", (GCallback) &ao_update_editor_menu_cb, FALSE, NULL },
 
-	{ "editor-notify", (GCallback) &tasks_on_editor_notify, TRUE, NULL },
+	{ "editor-notify", (GCallback) &ao_editor_notify_cb, TRUE, NULL },
 	{ "document-open", (GCallback) &tasks_on_document_open, TRUE, NULL },
 	{ "document-close", (GCallback) &tasks_on_document_close, TRUE, NULL },
-	{ "document-activate", (GCallback) &tasks_on_document_activate, TRUE, NULL },
+	{ "document-activate", (GCallback) &ao_document_activate_cb, TRUE, NULL },
 
 	{ NULL, NULL, FALSE, NULL }
 };
 
 
+gboolean ao_editor_notify_cb(GObject *object, GeanyEditor *editor,
+							 SCNotification *nt, gpointer data)
+{
+	gboolean ret = FALSE;
+
+	ao_bookmark_list_update_marker(ao_info->bookmarklist, editor, nt);
+
+	ret = tasks_on_editor_notify(object, editor, nt, data);
+
+	return ret;
+}
+
+
 static void ao_update_editor_menu_cb(GObject *obj, const gchar *word, gint pos,
 									 GeanyDocument *doc, gpointer data)
 {
@@ -85,6 +104,15 @@
 }
 
 
+static void ao_document_activate_cb(GObject *obj, GeanyDocument *doc, gpointer data)
+{
+	g_return_if_fail(doc != NULL && doc->is_valid);
+
+	tasks_on_document_activate(obj, doc, data);
+	ao_bookmark_list_update(ao_info->bookmarklist, doc);
+}
+
+
 GtkWidget *ao_image_menu_item_new(const gchar *stock_id, const gchar *label)
 {
 	GtkWidget *item = gtk_image_menu_item_new_with_label(label);
@@ -114,6 +142,8 @@
 		"addons", "enable_tasks", TRUE);
 	ao_info->enable_systray = utils_get_setting_boolean(config,
 		"addons", "enable_systray", FALSE);
+	ao_info->enable_bookmarklist = utils_get_setting_boolean(config,
+		"addons", "enable_bookmarklist", FALSE);
 
 	main_locale_init(LOCALEDIR, GETTEXT_PACKAGE);
 	plugin_module_make_resident(geany_plugin);
@@ -121,6 +151,7 @@
 	ao_info->doclist = ao_doc_list_new(ao_info->show_toolbar_doclist_item);
 	ao_info->openuri = ao_open_uri_new(ao_info->enable_openuri);
 	ao_info->systray = ao_systray_new(ao_info->enable_systray);
+	ao_info->bookmarklist = ao_bookmark_list_new(ao_info->enable_bookmarklist);
 
 	tasks_set_enable(ao_info->enable_tasks);
 }
@@ -142,6 +173,8 @@
 			g_object_get_data(G_OBJECT(dialog), "check_tasks"))));
 		ao_info->enable_systray = (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(
 			g_object_get_data(G_OBJECT(dialog), "check_systray"))));
+		ao_info->enable_bookmarklist = (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(
+			g_object_get_data(G_OBJECT(dialog), "check_bookmarklist"))));
 
 		g_key_file_load_from_file(config, ao_info->config_file, G_KEY_FILE_NONE, NULL);
 		g_key_file_set_boolean(config, "addons",
@@ -149,10 +182,14 @@
 		g_key_file_set_boolean(config, "addons", "enable_openuri", ao_info->enable_openuri);
 		g_key_file_set_boolean(config, "addons", "enable_tasks", ao_info->enable_tasks);
 		g_key_file_set_boolean(config, "addons", "enable_systray", ao_info->enable_systray);
+		g_key_file_set_boolean(config, "addons", "enable_bookmarklist",
+			ao_info->enable_bookmarklist);
 
 		g_object_set(ao_info->doclist, "enable-doclist", ao_info->show_toolbar_doclist_item, NULL);
 		g_object_set(ao_info->openuri, "enable-openuri", ao_info->enable_openuri, NULL);
 		g_object_set(ao_info->systray, "enable-systray", ao_info->enable_systray, NULL);
+		g_object_set(ao_info->bookmarklist, "enable-bookmarklist",
+			ao_info->enable_bookmarklist, NULL);
 		tasks_set_enable(ao_info->enable_tasks);
 
 		if (! g_file_test(config_dir, G_FILE_TEST_IS_DIR) && utils_mkdir(config_dir, TRUE) != 0)
@@ -176,6 +213,7 @@
 GtkWidget *plugin_configure(GtkDialog *dialog)
 {
 	GtkWidget *vbox, *check_doclist, *check_openuri, *check_tasks, *check_systray;
+	GtkWidget *check_bookmarklist;
 
 	vbox = gtk_vbox_new(FALSE, 6);
 
@@ -204,10 +242,17 @@
 		ao_info->enable_systray);
 	gtk_box_pack_start(GTK_BOX(vbox), check_systray, FALSE, FALSE, 3);
 
+	check_bookmarklist = gtk_check_button_new_with_label(
+		_("Show define bookmarks (marked lines) in the sidebar"));
+	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check_bookmarklist),
+		ao_info->enable_bookmarklist);
+	gtk_box_pack_start(GTK_BOX(vbox), check_bookmarklist, FALSE, FALSE, 3);
+
 	g_object_set_data(G_OBJECT(dialog), "check_doclist", check_doclist);
 	g_object_set_data(G_OBJECT(dialog), "check_openuri", check_openuri);
 	g_object_set_data(G_OBJECT(dialog), "check_tasks", check_tasks);
 	g_object_set_data(G_OBJECT(dialog), "check_systray", check_systray);
+	g_object_set_data(G_OBJECT(dialog), "check_bookmarklist", check_bookmarklist);
 	g_signal_connect(dialog, "response", G_CALLBACK(ao_configure_response_cb), NULL);
 
 	gtk_widget_show_all(vbox);
@@ -225,6 +270,7 @@
 	g_object_unref(ao_info->doclist);
 	g_object_unref(ao_info->openuri);
 	g_object_unref(ao_info->systray);
+	g_object_unref(ao_info->bookmarklist);
 
 	tasks_set_enable(FALSE);
 

Added: trunk/geany-plugins/addons/src/ao_bookmarklist.c
===================================================================
--- trunk/geany-plugins/addons/src/ao_bookmarklist.c	                        (rev 0)
+++ trunk/geany-plugins/addons/src/ao_bookmarklist.c	2009-10-25 22:34:43 UTC (rev 1028)
@@ -0,0 +1,354 @@
+/*
+ *      ao_bookmarklist.c - this file is part of Addons, a Geany plugin
+ *
+ *      Copyright 2009 Enrico Tröger <enrico(dot)troeger(at)uvena(dot)de>
+ *
+ *      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$
+ */
+
+
+#include <gtk/gtk.h>
+#include <glib-object.h>
+
+#include "geanyplugin.h"
+
+#include "addons.h"
+#include "ao_bookmarklist.h"
+
+#include <gdk/gdkkeysyms.h>
+
+/*
+ * TODO
+ * - context menu
+ * - activate keybinding
+ */
+
+typedef struct _AoBookmarkListPrivate			AoBookmarkListPrivate;
+
+#define AO_BOOKMARK_LIST_GET_PRIVATE(obj)		(G_TYPE_INSTANCE_GET_PRIVATE((obj),\
+			AO_BOOKMARK_LIST_TYPE, AoBookmarkListPrivate))
+
+struct _AoBookmarkList
+{
+	GObject parent;
+};
+
+struct _AoBookmarkListClass
+{
+	GObjectClass parent_class;
+};
+
+struct _AoBookmarkListPrivate
+{
+	gboolean enable_bookmarklist;
+
+	GtkWidget *box;
+
+	gint page_number;
+	GtkListStore *store;
+
+	gint		 search_line;
+	GtkTreeIter	*search_iter;
+};
+
+enum
+{
+	PROP_0,
+	PROP_ENABLE_BOOKMARKLIST
+};
+
+/* documents tree model columns */
+enum
+{
+	BMLIST_COL_LINE,
+	BMLIST_COL_NAME,
+	BMLIST_COL_TOOLTIP,
+	BMLIST_COL_MAX
+};
+
+static void ao_bookmark_list_finalize  			(GObject *object);
+static void ao_bookmark_list_show				(AoBookmarkList *bm);
+static void ao_bookmark_list_hide				(AoBookmarkList *bm);
+
+G_DEFINE_TYPE(AoBookmarkList, ao_bookmark_list, G_TYPE_OBJECT);
+
+
+static void ao_bookmark_list_set_property(GObject *object, guint prop_id,
+										  const GValue *value, GParamSpec *pspec)
+{
+	AoBookmarkListPrivate *priv = AO_BOOKMARK_LIST_GET_PRIVATE(object);
+
+	switch (prop_id)
+	{
+		case PROP_ENABLE_BOOKMARKLIST:
+		{
+			gboolean new_val = g_value_get_boolean(value);
+			if (new_val && ! priv->enable_bookmarklist)
+				ao_bookmark_list_show(AO_BOOKMARK_LIST(object));
+			if (! new_val && priv->enable_bookmarklist)
+				ao_bookmark_list_hide(AO_BOOKMARK_LIST(object));
+
+			priv->enable_bookmarklist = new_val;
+			break;
+		}
+		default:
+			G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
+			break;
+	}
+}
+
+
+static void ao_bookmark_list_class_init(AoBookmarkListClass *klass)
+{
+	GObjectClass *g_object_class;
+
+	g_object_class = G_OBJECT_CLASS(klass);
+	g_object_class->finalize = ao_bookmark_list_finalize;
+	g_object_class->set_property = ao_bookmark_list_set_property;
+	g_type_class_add_private(klass, sizeof(AoBookmarkListPrivate));
+
+	g_object_class_install_property(g_object_class,
+									PROP_ENABLE_BOOKMARKLIST,
+									g_param_spec_boolean(
+									"enable-bookmarklist",
+									"enable-bookmarklist",
+									"Whether to show a sidebar listing set bookmarks in the current doc",
+									TRUE,
+									G_PARAM_WRITABLE));
+}
+
+
+static void ao_bookmark_list_finalize(GObject *object)
+{
+	g_return_if_fail(object != NULL);
+	g_return_if_fail(IS_AO_BOOKMARK_LIST(object));
+
+	ao_bookmark_list_hide(AO_BOOKMARK_LIST(object));
+
+	G_OBJECT_CLASS(ao_bookmark_list_parent_class)->finalize(object);
+}
+
+
+static gboolean tree_model_foreach(GtkTreeModel *model, GtkTreePath *path,
+								   GtkTreeIter *iter, gpointer data)
+{
+	gint x;
+	AoBookmarkListPrivate *priv = AO_BOOKMARK_LIST_GET_PRIVATE(data);
+
+	gtk_tree_model_get(model, iter, BMLIST_COL_LINE, &x, -1);
+	if (x == priv->search_line)
+	{
+		priv->search_iter = gtk_tree_iter_copy(iter);
+		return TRUE;
+	}
+	return FALSE;
+}
+
+
+static void delete_line(AoBookmarkList *bm, gint line_nr)
+{
+	AoBookmarkListPrivate *priv = AO_BOOKMARK_LIST_GET_PRIVATE(bm);
+
+	priv->search_line = line_nr + 1;
+	priv->search_iter = NULL;
+	gtk_tree_model_foreach(GTK_TREE_MODEL(priv->store), tree_model_foreach, bm);
+	if (priv->search_iter != NULL)
+	{
+		gtk_list_store_remove(priv->store, priv->search_iter);
+		gtk_tree_iter_free(priv->search_iter);
+	}
+}
+
+
+static void add_line(AoBookmarkList *bm, ScintillaObject *sci, gint line_nr)
+{
+	gchar *line, *tooltip;
+	AoBookmarkListPrivate *priv = AO_BOOKMARK_LIST_GET_PRIVATE(bm);
+
+	line = g_strstrip(sci_get_line(sci, line_nr));
+	if (! NZV(line))
+		line = g_strdup(_("(Empty Line)"));
+	tooltip = g_markup_escape_text(line, -1);
+
+	gtk_list_store_insert_with_values(priv->store, NULL, -1,
+		BMLIST_COL_LINE, line_nr + 1,
+		BMLIST_COL_NAME, line,
+		BMLIST_COL_TOOLTIP, tooltip,
+		-1);
+	g_free(line);
+	g_free(tooltip);
+}
+
+
+static gboolean ao_selection_changed_cb(gpointer widget)
+{
+	GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(widget));
+	GtkTreeIter iter;
+	GtkTreeModel *model;
+
+	/* use switch_notebook_page to ignore changing the notebook page because it is already done */
+	if (gtk_tree_selection_get_selected(selection, &model, &iter))
+	{
+		gint line;
+		GeanyDocument *doc = document_get_current();
+		if (DOC_VALID(doc))
+		{
+			gtk_tree_model_get(model, &iter, BMLIST_COL_LINE, &line, -1);
+			sci_goto_line(doc->editor->sci, line - 1, TRUE);
+
+			gtk_widget_grab_focus(GTK_WIDGET(doc->editor->sci));
+		}
+	}
+	return FALSE;
+}
+
+
+static gboolean ao_button_press_cb(GtkWidget *widget, GdkEventButton *event, gpointer data)
+{
+	if (event->button == 1)
+	{	/* allow reclicking of a treeview item */
+		g_idle_add(ao_selection_changed_cb, widget);
+	}
+	return FALSE;
+}
+
+
+static gboolean ao_key_press_cb(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)
+	{
+		g_idle_add(ao_selection_changed_cb, widget);
+	}
+	return FALSE;
+}
+
+
+static void ao_bookmark_list_hide(AoBookmarkList *bm)
+{
+	AoBookmarkListPrivate *priv = AO_BOOKMARK_LIST_GET_PRIVATE(bm);
+
+	gtk_notebook_remove_page(GTK_NOTEBOOK(geany->main_widgets->sidebar_notebook), priv->page_number);
+}
+
+
+static void ao_bookmark_list_show(AoBookmarkList *bm)
+{
+	GtkCellRenderer *text_renderer;
+	GtkTreeViewColumn *column;
+	GtkTreeView *tree;
+	GtkListStore *store;
+	GtkWidget *scrollwin;
+	GtkTreeSortable *sortable;
+	AoBookmarkListPrivate *priv = AO_BOOKMARK_LIST_GET_PRIVATE(bm);
+
+	tree = GTK_TREE_VIEW(gtk_tree_view_new());
+	store = gtk_list_store_new(BMLIST_COL_MAX, G_TYPE_INT, G_TYPE_STRING, G_TYPE_STRING);
+	gtk_tree_view_set_model(tree, GTK_TREE_MODEL(store));
+
+	text_renderer = gtk_cell_renderer_text_new();
+	column = gtk_tree_view_column_new();
+	gtk_tree_view_column_set_title(column, _("No."));
+	gtk_tree_view_column_pack_start(column, text_renderer, TRUE);
+	gtk_tree_view_column_set_attributes(column, text_renderer, "text", BMLIST_COL_LINE, NULL);
+	gtk_tree_view_append_column(tree, column);
+
+	text_renderer = gtk_cell_renderer_text_new();
+	g_object_set(text_renderer, "ellipsize", PANGO_ELLIPSIZE_END, NULL);
+	column = gtk_tree_view_column_new();
+	gtk_tree_view_column_set_title(column, _("Contents"));
+	gtk_tree_view_column_pack_start(column, text_renderer, TRUE);
+	gtk_tree_view_column_set_attributes(column, text_renderer, "text", BMLIST_COL_NAME, NULL);
+	gtk_tree_view_append_column(tree, column);
+	gtk_tree_view_set_headers_visible(tree, TRUE);
+
+	gtk_tree_view_set_search_column(tree, BMLIST_COL_NAME);
+
+	/* sorting */
+	sortable = GTK_TREE_SORTABLE(GTK_TREE_MODEL(store));
+	gtk_tree_sortable_set_sort_column_id(sortable, BMLIST_COL_LINE, GTK_SORT_ASCENDING);
+
+	ui_widget_modify_font_from_string(GTK_WIDGET(tree), geany->interface_prefs->tagbar_font);
+
+	/* GTK 2.12 tooltips */
+	if (gtk_check_version(2, 12, 0) == NULL)
+		g_object_set(tree, "has-tooltip", TRUE, "tooltip-column", BMLIST_COL_TOOLTIP, NULL);
+
+	/* selection handling */
+	g_signal_connect(tree, "button-press-event", G_CALLBACK(ao_button_press_cb), NULL);
+	g_signal_connect(tree, "key-press-event", G_CALLBACK(ao_key_press_cb), NULL);
+
+	/* scrolled window */
+	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), GTK_WIDGET(tree));
+
+	gtk_widget_show_all(scrollwin);
+	priv->page_number = gtk_notebook_append_page(
+		GTK_NOTEBOOK(geany->main_widgets->sidebar_notebook),
+		scrollwin,
+		gtk_label_new(_("Bookmarks")));
+
+	priv->store = store;
+}
+
+
+void ao_bookmark_list_update(AoBookmarkList *bm, GeanyDocument *doc)
+{
+	gint line_nr = 0;
+	gint mask = 1 << 1;
+	ScintillaObject *sci = doc->editor->sci;
+	AoBookmarkListPrivate *priv = AO_BOOKMARK_LIST_GET_PRIVATE(bm);
+
+	gtk_list_store_clear(priv->store);
+	while ((line_nr = scintilla_send_message(sci, SCI_MARKERNEXT, line_nr, mask)) != -1)
+	{
+		add_line(bm, sci, line_nr);
+		line_nr++;
+	}
+}
+
+
+void ao_bookmark_list_update_marker(AoBookmarkList *bm, GeanyEditor *editor, SCNotification *nt)
+{
+	if (nt->nmhdr.code == SCN_MODIFIED && nt->modificationType == SC_MOD_CHANGEMARKER)
+	{
+		if (sci_is_marker_set_at_line(editor->sci, nt->line, 1))
+		{
+			add_line(bm, editor->sci, nt->line);
+		}
+		else
+		{
+			delete_line(bm, nt->line);
+		}
+	}
+}
+
+
+static void ao_bookmark_list_init(AoBookmarkList *self)
+{
+}
+
+
+AoBookmarkList *ao_bookmark_list_new(gboolean enable)
+{
+	return g_object_new(AO_BOOKMARK_LIST_TYPE, "enable-bookmarklist", enable, NULL);
+}


Property changes on: trunk/geany-plugins/addons/src/ao_bookmarklist.c
___________________________________________________________________
Added: svn:mime-type
   + text/x-csrc
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Added: trunk/geany-plugins/addons/src/ao_bookmarklist.h
===================================================================
--- trunk/geany-plugins/addons/src/ao_bookmarklist.h	                        (rev 0)
+++ trunk/geany-plugins/addons/src/ao_bookmarklist.h	2009-10-25 22:34:43 UTC (rev 1028)
@@ -0,0 +1,50 @@
+/*
+ *      ao_bookmarklist.h - this file is part of Addons, a Geany plugin
+ *
+ *      Copyright 2009 Enrico Tröger <enrico(dot)troeger(at)uvena(dot)de>
+ *
+ *      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$
+ */
+
+
+#ifndef __AO_BOOKMARKLIST_H__
+#define __AO_BOOKMARKLIST_H__
+
+G_BEGIN_DECLS
+
+#define AO_BOOKMARK_LIST_TYPE				(ao_bookmark_list_get_type())
+#define AO_BOOKMARK_LIST(obj)				(G_TYPE_CHECK_INSTANCE_CAST((obj),\
+			AO_BOOKMARK_LIST_TYPE, AoBookmarkList))
+#define AO_BOOKMARK_LIST_CLASS(klass)		(G_TYPE_CHECK_CLASS_CAST((klass),\
+			AO_BOOKMARK_LIST_TYPE, AoBookmarkListClass))
+#define IS_AO_BOOKMARK_LIST(obj)			(G_TYPE_CHECK_INSTANCE_TYPE((obj),\
+			AO_BOOKMARK_LIST_TYPE))
+#define IS_AO_BOOKMARK_LIST_CLASS(klass)	(G_TYPE_CHECK_CLASS_TYPE((klass),\
+			AO_BOOKMARK_LIST_TYPE))
+
+typedef struct _AoBookmarkList			AoBookmarkList;
+typedef struct _AoBookmarkListClass		AoBookmarkListClass;
+
+GType			ao_bookmark_list_get_type		(void);
+AoBookmarkList*	ao_bookmark_list_new			(gboolean enable);
+void			ao_bookmark_list_update			(AoBookmarkList *bm, GeanyDocument *doc);
+void 			ao_bookmark_list_update_marker	(AoBookmarkList *bm, GeanyEditor *editor,
+												 SCNotification *nt);
+
+G_END_DECLS
+
+#endif /* __AO_BOOKMARKLIST_H__ */


Property changes on: trunk/geany-plugins/addons/src/ao_bookmarklist.h
___________________________________________________________________
Added: svn:mime-type
   + text/x-chdr
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Modified: trunk/geany-plugins/po/POTFILES.in
===================================================================
--- trunk/geany-plugins/po/POTFILES.in	2009-10-25 12:12:53 UTC (rev 1027)
+++ trunk/geany-plugins/po/POTFILES.in	2009-10-25 22:34:43 UTC (rev 1028)
@@ -6,6 +6,7 @@
 addons/src/ao_openuri.c
 addons/src/addons.c
 addons/src/ao_doclist.c
+addons/src/ao_bookmarklist.c
 
 #codenav
 codenav/src/codenavigation.c


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



More information about the Plugins-Commits mailing list