SF.net SVN: geany-plugins:[1102] trunk/geany-plugins/addons
eht16 at users.sourceforge.net
eht16 at xxxxx
Fri Jan 1 22:30:09 UTC 2010
Revision: 1102
http://geany-plugins.svn.sourceforge.net/geany-plugins/?rev=1102&view=rev
Author: eht16
Date: 2010-01-01 22:30:09 +0000 (Fri, 01 Jan 2010)
Log Message:
-----------
Add an option to define whether all open documents or only the current document should be scanned for tasks (closes #2911086).
Modified Paths:
--------------
trunk/geany-plugins/addons/ChangeLog
trunk/geany-plugins/addons/src/addons.c
trunk/geany-plugins/addons/src/ao_tasks.c
trunk/geany-plugins/addons/src/ao_tasks.h
Modified: trunk/geany-plugins/addons/ChangeLog
===================================================================
--- trunk/geany-plugins/addons/ChangeLog 2010-01-01 22:28:39 UTC (rev 1101)
+++ trunk/geany-plugins/addons/ChangeLog 2010-01-01 22:30:09 UTC (rev 1102)
@@ -9,6 +9,9 @@
delete tasks (closes #2911105).
List tasks only once per line even if there were more than
one matching token.
+ * src/addons.c, src/ao_tasks.c, src/ao_tasks.h:
+ Add an option to define whether all open documents or only the
+ current document should be scanned for tasks (closes #2911086).
2009-12-08 Enrico Tröger <enrico(dot)troeger(at)uvena(dot)de>
Modified: trunk/geany-plugins/addons/src/addons.c
===================================================================
--- trunk/geany-plugins/addons/src/addons.c 2010-01-01 22:28:39 UTC (rev 1101)
+++ trunk/geany-plugins/addons/src/addons.c 2010-01-01 22:30:09 UTC (rev 1102)
@@ -66,6 +66,7 @@
gboolean enable_markword;
gchar *tasks_token_list;
+ gboolean tasks_scan_all_documents;
/* instances and variables of components */
AoDocList *doclist;
@@ -145,6 +146,7 @@
g_return_if_fail(doc != NULL && doc->is_valid);
ao_bookmark_list_update(ao_info->bookmarklist, doc);
+ ao_tasks_update_single(ao_info->tasks, doc);
}
@@ -200,6 +202,8 @@
"addons", "enable_openuri", FALSE);
ao_info->enable_tasks = utils_get_setting_boolean(config,
"addons", "enable_tasks", TRUE);
+ ao_info->tasks_scan_all_documents = utils_get_setting_boolean(config,
+ "addons", "tasks_scan_all_documents", FALSE);
ao_info->tasks_token_list = utils_get_setting_string(config,
"addons", "tasks_token_list", "TODO;FIXME");
ao_info->enable_systray = utils_get_setting_boolean(config,
@@ -217,7 +221,8 @@
ao_info->systray = ao_systray_new(ao_info->enable_systray);
ao_info->bookmarklist = ao_bookmark_list_new(ao_info->enable_bookmarklist);
ao_info->markword = ao_mark_word_new(ao_info->enable_markword);
- ao_info->tasks = ao_tasks_new(ao_info->enable_tasks, ao_info->tasks_token_list);
+ ao_info->tasks = ao_tasks_new(ao_info->enable_tasks,
+ ao_info->tasks_token_list, ao_info->tasks_scan_all_documents);
/* setup keybindings */
key_group = plugin_set_key_group(geany_plugin, "addons", KB_COUNT, NULL);
@@ -230,6 +235,15 @@
}
+static void ao_configure_tasks_toggled_cb(GtkToggleButton *togglebutton, gpointer data)
+{
+ gboolean sens = gtk_toggle_button_get_active(togglebutton);
+
+ gtk_widget_set_sensitive(g_object_get_data(G_OBJECT(data), "check_tasks_scan_mode"), sens);
+ gtk_widget_set_sensitive(g_object_get_data(G_OBJECT(data), "entry_tasks_tokens"), sens);
+}
+
+
static void ao_configure_response_cb(GtkDialog *dialog, gint response, gpointer user_data)
{
if (response == GTK_RESPONSE_OK || response == GTK_RESPONSE_APPLY)
@@ -244,6 +258,8 @@
g_object_get_data(G_OBJECT(dialog), "check_openuri"))));
ao_info->enable_tasks = (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(
g_object_get_data(G_OBJECT(dialog), "check_tasks"))));
+ ao_info->tasks_scan_all_documents = (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(
+ g_object_get_data(G_OBJECT(dialog), "check_tasks_scan_mode"))));
g_free(ao_info->tasks_token_list);
ao_info->tasks_token_list = g_strdup(gtk_entry_get_text(GTK_ENTRY(
g_object_get_data(G_OBJECT(dialog), "entry_tasks_tokens"))));
@@ -253,8 +269,6 @@
g_object_get_data(G_OBJECT(dialog), "check_bookmarklist"))));
ao_info->enable_markword = (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(
g_object_get_data(G_OBJECT(dialog), "check_markword"))));
- ao_info->enable_tasks = (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(
- g_object_get_data(G_OBJECT(dialog), "check_tasks"))));
g_key_file_load_from_file(config, ao_info->config_file, G_KEY_FILE_NONE, NULL);
g_key_file_set_boolean(config, "addons",
@@ -262,6 +276,8 @@
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_string(config, "addons", "tasks_token_list", ao_info->tasks_token_list);
+ g_key_file_set_boolean(config, "addons", "tasks_scan_all_documents",
+ ao_info->tasks_scan_all_documents);
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);
@@ -275,6 +291,7 @@
g_object_set(ao_info->markword, "enable-markword", ao_info->enable_markword, NULL);
g_object_set(ao_info->tasks,
"enable-tasks", ao_info->enable_tasks,
+ "scan-all-documents", ao_info->tasks_scan_all_documents,
"tokens", ao_info->tasks_token_list,
NULL);
@@ -299,8 +316,8 @@
GtkWidget *plugin_configure(GtkDialog *dialog)
{
GtkWidget *vbox, *check_doclist, *check_openuri, *check_tasks, *check_systray;
- GtkWidget *check_bookmarklist, *check_markword;
- GtkWidget *entry_tasks_tokens, *label_tasks_tokens, *tokens_hbox;
+ GtkWidget *check_bookmarklist, *check_markword, *frame_tasks, *vbox_tasks;
+ GtkWidget *check_tasks_scan_mode, *entry_tasks_tokens, *label_tasks_tokens, *tokens_hbox;
vbox = gtk_vbox_new(FALSE, 6);
@@ -321,8 +338,15 @@
_("Show available Tasks in the Messages Window"));
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check_tasks),
ao_info->enable_tasks);
- gtk_box_pack_start(GTK_BOX(vbox), check_tasks, FALSE, FALSE, 3);
+ g_signal_connect(check_tasks, "toggled", G_CALLBACK(ao_configure_tasks_toggled_cb), dialog);
+ check_tasks_scan_mode = gtk_check_button_new_with_label(
+ _("Show tasks of all documents"));
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check_tasks_scan_mode),
+ ao_info->tasks_scan_all_documents);
+ ui_widget_set_tooltip_text(check_tasks_scan_mode,
+ _("Whether to show the tasks of all open documents in the list or only those of the current document."));
+
entry_tasks_tokens = gtk_entry_new();
if (NZV(ao_info->tasks_token_list))
gtk_entry_set_text(GTK_ENTRY(entry_tasks_tokens), ao_info->tasks_token_list);
@@ -336,8 +360,16 @@
tokens_hbox = gtk_hbox_new(FALSE, 0);
gtk_box_pack_start(GTK_BOX(tokens_hbox), label_tasks_tokens, FALSE, FALSE, 3);
gtk_box_pack_start(GTK_BOX(tokens_hbox), entry_tasks_tokens, TRUE, TRUE, 3);
- gtk_box_pack_start(GTK_BOX(vbox), tokens_hbox, TRUE, TRUE, 3);
+ vbox_tasks = gtk_vbox_new(FALSE, 0);
+ gtk_box_pack_start(GTK_BOX(vbox_tasks), check_tasks_scan_mode, FALSE, FALSE, 3);
+ gtk_box_pack_start(GTK_BOX(vbox_tasks), tokens_hbox, TRUE, TRUE, 3);
+
+ frame_tasks = gtk_frame_new(NULL);
+ gtk_frame_set_label_widget(GTK_FRAME(frame_tasks), check_tasks);
+ gtk_container_add(GTK_CONTAINER(frame_tasks), vbox_tasks);
+ gtk_box_pack_start(GTK_BOX(vbox), frame_tasks, TRUE, TRUE, 3);
+
check_systray = gtk_check_button_new_with_label(
_("Show status icon in the Notification Area"));
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check_systray),
@@ -360,11 +392,14 @@
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), "entry_tasks_tokens", entry_tasks_tokens);
+ g_object_set_data(G_OBJECT(dialog), "check_tasks_scan_mode", check_tasks_scan_mode);
g_object_set_data(G_OBJECT(dialog), "check_systray", check_systray);
g_object_set_data(G_OBJECT(dialog), "check_bookmarklist", check_bookmarklist);
g_object_set_data(G_OBJECT(dialog), "check_markword", check_markword);
g_signal_connect(dialog, "response", G_CALLBACK(ao_configure_response_cb), NULL);
+ ao_configure_tasks_toggled_cb(GTK_TOGGLE_BUTTON(check_tasks), dialog);
+
gtk_widget_show_all(vbox);
#if ! GTK_CHECK_VERSION(2, 10, 0)
Modified: trunk/geany-plugins/addons/src/ao_tasks.c
===================================================================
--- trunk/geany-plugins/addons/src/ao_tasks.c 2010-01-01 22:28:39 UTC (rev 1101)
+++ trunk/geany-plugins/addons/src/ao_tasks.c 2010-01-01 22:30:09 UTC (rev 1102)
@@ -60,13 +60,16 @@
GtkWidget *popup_menu_delete_button;
gchar **tokens;
+
+ gboolean scan_all_documents;
};
enum
{
PROP_0,
PROP_ENABLE_TASKS,
- PROP_TOKENS
+ PROP_TOKENS,
+ PROP_SCAN_ALL_DOCUMENTS
};
enum
@@ -104,6 +107,11 @@
priv->enable_tasks = new_val;
break;
}
+ case PROP_SCAN_ALL_DOCUMENTS:
+ {
+ priv->scan_all_documents = g_value_get_boolean(value);
+ break;
+ }
case PROP_TOKENS:
{
const gchar *t = g_value_get_string(value);
@@ -131,6 +139,15 @@
g_type_class_add_private(klass, sizeof(AoTasksPrivate));
g_object_class_install_property(g_object_class,
+ PROP_SCAN_ALL_DOCUMENTS,
+ g_param_spec_boolean(
+ "scan-all-documents",
+ "scan-all-documents",
+ "Whether to show tasks for all open documents",
+ TRUE,
+ G_PARAM_WRITABLE));
+
+ g_object_class_install_property(g_object_class,
PROP_ENABLE_TASKS,
g_param_spec_boolean(
"enable-tasks",
@@ -540,6 +557,21 @@
}
+void ao_tasks_update_single(AoTasks *t, GeanyDocument *cur_doc)
+{
+ AoTasksPrivate *priv = AO_TASKS_GET_PRIVATE(t);
+
+ if (! priv->active)
+ return;
+
+ if (! priv->scan_all_documents)
+ {
+ gtk_list_store_clear(priv->store);
+ ao_tasks_update(t, cur_doc);
+ }
+}
+
+
void ao_tasks_update(AoTasks *t, GeanyDocument *cur_doc)
{
AoTasksPrivate *priv = AO_TASKS_GET_PRIVATE(t);
@@ -547,6 +579,14 @@
if (! priv->active)
return;
+ if (! priv->scan_all_documents && cur_doc == NULL)
+ {
+ /* clear all */
+ gtk_list_store_clear(priv->store);
+ /* get the current document */
+ cur_doc = document_get_current();
+ }
+
if (cur_doc != NULL)
{
/* TODO handle renaming of files, probably we need a new signal for this */
@@ -578,7 +618,10 @@
}
-AoTasks *ao_tasks_new(gboolean enable, const gchar *tokens)
+AoTasks *ao_tasks_new(gboolean enable, const gchar *tokens, gboolean scan_all_documents)
{
- return g_object_new(AO_TASKS_TYPE, "tokens", tokens, "enable-tasks", enable, NULL);
+ return g_object_new(AO_TASKS_TYPE,
+ "scan-all-documents", scan_all_documents,
+ "tokens", tokens,
+ "enable-tasks", enable, NULL);
}
Modified: trunk/geany-plugins/addons/src/ao_tasks.h
===================================================================
--- trunk/geany-plugins/addons/src/ao_tasks.h 2010-01-01 22:28:39 UTC (rev 1101)
+++ trunk/geany-plugins/addons/src/ao_tasks.h 2010-01-01 22:30:09 UTC (rev 1102)
@@ -36,8 +36,11 @@
typedef struct _AoTasksClass AoTasksClass;
GType ao_tasks_get_type (void);
-AoTasks* ao_tasks_new (gboolean enable, const gchar *tokens);
+AoTasks* ao_tasks_new (gboolean enable,
+ const gchar *tokens,
+ gboolean scan_all_documents);
void ao_tasks_update (AoTasks *t, GeanyDocument *cur_doc);
+void ao_tasks_update_single (AoTasks *t, GeanyDocument *cur_doc);
void ao_tasks_remove (AoTasks *t, GeanyDocument *cur_doc);
void ao_tasks_activate (AoTasks *t);
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