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

dmaphy at users.sourceforge.net dmaphy at xxxxx
Sun Dec 13 06:35:56 UTC 2009


Revision: 1075
          http://geany-plugins.svn.sourceforge.net/geany-plugins/?rev=1075&view=rev
Author:   dmaphy
Date:     2009-12-13 06:35:56 +0000 (Sun, 13 Dec 2009)

Log Message:
-----------
fix naming issues for GeanyGDB, show up as 'GeanyGDB' in plugin manager

Modified Paths:
--------------
    trunk/geany-plugins/geanygdb/ChangeLog
    trunk/geany-plugins/geanygdb/src/gdb-ui-main.c
    trunk/geany-plugins/wscript

Added Paths:
-----------
    trunk/geany-plugins/geanygdb/src/geanygdb.c

Removed Paths:
-------------
    trunk/geany-plugins/geanygdb/src/geanydebug.c

Modified: trunk/geany-plugins/geanygdb/ChangeLog
===================================================================
--- trunk/geany-plugins/geanygdb/ChangeLog	2009-12-08 20:41:17 UTC (rev 1074)
+++ trunk/geany-plugins/geanygdb/ChangeLog	2009-12-13 06:35:56 UTC (rev 1075)
@@ -1,7 +1,11 @@
+2009-12-13 Dominic Hopf <dmaphy at googlemail.com>
+ * finally fix any remaining naming issues, GeanyGDB will show up as "GeanyGDB"
+   now in the plugin manager
+
 2009-09-02 Dominic Hopf <dmaphy at googlemail.com>
  * fix an issue with button labels, where some localizations may caused a stack
    overflow
- * rember the last targetpath
+ * remember the last targetpath
 
 2009-05-07 Dominic Hopf <dmaphy at googlemail.com>
  * install ttyhelper and geanydebug.so to /usr/lib/geany/

Modified: trunk/geany-plugins/geanygdb/src/gdb-ui-main.c
===================================================================
--- trunk/geany-plugins/geanygdb/src/gdb-ui-main.c	2009-12-08 20:41:17 UTC (rev 1074)
+++ trunk/geany-plugins/geanygdb/src/gdb-ui-main.c	2009-12-13 06:35:56 UTC (rev 1075)
@@ -392,7 +392,6 @@
 		gtk_button_new_with_mnemonic(text);
 	}
 
-
 	if (cb)
 	{
 		g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(cb), NULL);

Deleted: trunk/geany-plugins/geanygdb/src/geanydebug.c
===================================================================
--- trunk/geany-plugins/geanygdb/src/geanydebug.c	2009-12-08 20:41:17 UTC (rev 1074)
+++ trunk/geany-plugins/geanygdb/src/geanydebug.c	2009-12-13 06:35:56 UTC (rev 1075)
@@ -1,445 +0,0 @@
-/*
- * geanydebug.c - Integrated debugger plugin for the Geany IDE
- * Copyright 2008 Jeff Pohlmeyer <yetanothergeek(at)gmail(dot)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.
- *
- *
- */
-
-
-#include "geany.h"
-
-#include <glib/gstdio.h>
-
-#ifdef HAVE_LOCALE_H
-# include <locale.h>
-#endif
-
-#include "support.h"
-#include "prefs.h"
-#include "document.h"
-#include "editor.h"
-#include "utils.h"
-#include "ui_utils.h"
-#include "keybindings.h"
-#include "project.h"
-#include "msgwindow.h"
-
-#include "plugindata.h"
-#include "geanyfunctions.h"
-
-#include "gdb-io.h"
-#include "gdb-ui.h"
-
-
-
-#define UNIX_NAME "geanygdb"
-#define UNIX_NAME_OLD "debugger"
-
-
-PLUGIN_VERSION_CHECK(115)
-PLUGIN_SET_INFO(_("Debugger"), _("Integrated debugging with GDB."), VERSION, _("Jeff Pohlmeyer"))
-
-GeanyData *geany_data;
-GeanyFunctions *geany_functions;
-
-static GtkNotebook *msgbook;
-static GtkWidget *compwin;
-static GtkWidget *frame;
-static gchar *config_file;
-
-
-static void show_compwin()
-{
-	gint page = gtk_notebook_page_num(msgbook, compwin);
-	gtk_notebook_set_current_page(msgbook, page);
-}
-
-
-
-static void
-info_message_cb(const gchar * msg)
-{
-	show_compwin();
-	msgwin_compiler_add(COLOR_BLACK, "%s", msg);
-}
-
-
-static void
-warn_message_cb(const gchar * msg)
-{
-	show_compwin();
-	msgwin_compiler_add(COLOR_RED, "%s", msg);
-}
-
-
-#define NOTEBOOK GTK_NOTEBOOK(geany->main_widgets->notebook)
-//#define DOCS ((document*)(doc_array->data))
-
-//static gint
-//doc_idx_to_tab_idx(gint idx)
-//{
-	// FIXME
-//	return 0;
-//	  return (
-//			  (idx>=0) && ((guint)idx<doc_array->len) && DOCS[idx].is_valid
-//	  ) ? gtk_notebook_page_num(NOTEBOOK, GTK_WIDGET(DOCS[idx].sci)):-1;
-//}
-
-
-static void
-goto_file_line_cb(const gchar * filename, const gchar * line, const gchar * reason)
-{
-	gint pos;
-	gint page;
-	GeanyDocument *doc;
-
-	gint line_num = gdbio_atoi((gchar *) line) - 1;
-	if (reason)
-	{
-		msgwin_compiler_add(COLOR_BLUE, "%s", reason);
-	}
-	doc = document_open_file(filename, FALSE, NULL, NULL);
-	if (!(doc && doc->is_valid))
-	{
-		return;
-	}
-	page = gtk_notebook_page_num(NOTEBOOK, GTK_WIDGET(doc->editor->sci));
-	gtk_notebook_set_current_page(NOTEBOOK, page);
-	pos = sci_get_position_from_line(doc->editor->sci, line_num);
-	sci_ensure_line_is_visible(doc->editor->sci, line_num);
-	while (gtk_events_pending())
-	{
-		gtk_main_iteration();
-	}
-	sci_set_current_position(doc->editor->sci, pos, TRUE);
-	gtk_widget_grab_focus(GTK_WIDGET(doc->editor->sci));
-	gtk_window_present(GTK_WINDOW(geany->main_widgets->window));
-}
-
-
-/*
-static gchar *
-get_current_word()
-{
-	const gchar *word_chars = NULL;
-	gint pos, linenum, bol, bow, eow;
-	gchar *text = NULL;
-	gchar *rv = NULL;
-	document *doc = document_get_current();
-	if (!(doc && doc->is_valid))
-	{
-		return NULL;
-	}
-	pos = sci_get_current_position(doc->sci);
-	linenum = sci_get_line_from_position(doc->sci, pos);
-	bol = sci_get_position_from_line(doc->sci, linenum);
-	bow = pos - bol;
-	eow = pos - bol;
-	text = sci_get_line(doc->sci, linenum);
-	word_chars = GEANY_WORDCHARS;
-	while ((bow > 0) && (strchr(word_chars, text[bow - 1]) != NULL))
-	{
-		bow--;
-	}
-	while (text[eow] && (strchr(word_chars, text[eow]) != NULL))
-	{
-		eow++;
-	}
-	text[eow] = '\0';
-	rv = g_strdup(text + bow);
-	g_free(text);
-	return rv;
-}*/
-
-static gboolean word_check_left(gchar c)
-{
-	if (g_ascii_isalnum(c) || c == '_' || c == '.')
-		return TRUE;
-	return FALSE;
-}
-
-static gboolean
-word_check_right(gchar c)
-{
-	if (g_ascii_isalnum(c) || c == '_')
-		return TRUE;
-	return FALSE;
-}
-
-static gchar *
-get_current_word()
-{
-	gchar *txt;
-	GeanyDocument *doc;
-
-	gint pos;
-	gint cstart, cend;
-	gchar c;
-	gint text_len;
-
-	doc = document_get_current();
-	g_return_val_if_fail(doc != NULL && doc->file_name != NULL, NULL);
-
-	text_len = sci_get_selected_text_length(doc->editor->sci);
-	if (text_len > 1)
-	{
-		txt = g_malloc(text_len + 1);
-		sci_get_selected_text(doc->editor->sci, txt);
-		return txt;
-	}
-
-	pos = sci_get_current_position(doc->editor->sci);
-	if (pos > 0)
-		pos--;
-
-	cstart = pos;
-	c = sci_get_char_at(doc->editor->sci, cstart);
-
-	if (!word_check_left(c))
-		return NULL;
-
-	while (word_check_left(c))
-	{
-		cstart--;
-		if (cstart >= 0)
-			c = sci_get_char_at(doc->editor->sci, cstart);
-		else
-			break;
-	}
-	cstart++;
-
-	cend = pos;
-	c = sci_get_char_at(doc->editor->sci, cend);
-	while (word_check_right(c) && cend < sci_get_length(doc->editor->sci))
-	{
-		cend++;
-		c = sci_get_char_at(doc->editor->sci, cend);
-	}
-
-	if (cstart == cend)
-		return NULL;
-	txt = g_malloc0(cend - cstart + 1);
-
-	sci_get_text_range(doc->editor->sci, cstart, cend, txt);
-	return txt;
-}
-
-
-
-
-static LocationInfo *
-location_query_cb()
-{
-	GeanyDocument *doc = document_get_current();
-	if (!(doc && doc->is_valid))
-	{
-		return NULL;
-	}
-	if (doc->file_name)
-	{
-		LocationInfo *abi;
-		gint line;
-		abi = g_new0(LocationInfo, 1);
-		line = sci_get_current_line(doc->editor->sci);
-		abi->filename = g_strdup(doc->file_name);
-		if (line >= 0)
-		{
-			abi->line_num = g_strdup_printf("%d", line + 1);
-		}
-		abi->symbol = get_current_word();
-		return abi;
-	}
-	return NULL;
-}
-
-
-
-static void
-update_settings_cb()
-{
-	GKeyFile *kf = g_key_file_new();
-	gchar *data;
-
-	g_key_file_set_string(kf, UNIX_NAME, "mono_font", gdbui_setup.options.mono_font);
-	g_key_file_set_string(kf, UNIX_NAME, "term_cmd", gdbui_setup.options.term_cmd);
-	g_key_file_set_boolean(kf, UNIX_NAME, "show_tooltips", gdbui_setup.options.show_tooltips);
-	g_key_file_set_boolean(kf, UNIX_NAME, "show_icons", gdbui_setup.options.show_icons);
-
-	data = g_key_file_to_data(kf, NULL, NULL);
-	utils_write_file(config_file, data);
-	g_free(data);
-
-	g_key_file_free(kf);
-	gtk_widget_destroy(GTK_BIN(frame)->child);
-	gdbui_create_widgets(frame);
-	gtk_widget_show_all(frame);
-}
-
-
-
-
-#define CLEAR() if (err) { g_error_free(err); err=NULL; }
-
-#define GET_KEY_STR(k) { \
-  gchar *tmp=g_key_file_get_string(kf,UNIX_NAME,#k"",&err); \
-  if (tmp) { \
-	if (*tmp && !err) { \
-	  g_free(gdbui_setup.options.k); \
-	  gdbui_setup.options.k=tmp; \
-	} else { g_free(tmp); } \
-  } \
-  CLEAR(); \
-}
-
-
-static void locale_init(void)
-{
-#ifdef ENABLE_NLS
-	gchar *locale_dir = NULL;
-
-#ifdef HAVE_LOCALE_H
-	setlocale(LC_ALL, "");
-#endif
-
-#ifdef G_OS_WIN32
-	gchar *install_dir = g_win32_get_package_installation_directory("geany", NULL);
-	/* e.g. C:\Program Files\geany\lib\locale */
-	locale_dir = g_strconcat(install_dir, "\\share\\locale", NULL);
-	g_free(install_dir);
-#else
-	locale_dir = g_strdup(LOCALEDIR);
-#endif
-
-	bindtextdomain(GETTEXT_PACKAGE, locale_dir);
-	bind_textdomain_codeset(GETTEXT_PACKAGE, "UTF-8");
-	textdomain(GETTEXT_PACKAGE);
-	g_free(locale_dir);
-#endif
-}
-
-
-#define GET_KEY_BOOL(k) { \
-  gboolean tmp=g_key_file_get_boolean(kf,UNIX_NAME,#k"",&err); \
-  if (err) { CLEAR() } else { gdbui_setup.options.k=tmp; } \
-}
-
-void
-plugin_init(GeanyData * data)
-{
-	GKeyFile *kf = g_key_file_new();
-	GError *err = NULL;
-	gchar *glob_file;
-	gchar *user_file;
-	gchar *old_config_dir;
-
-	locale_init();
-
-	gdbui_setup.main_window = geany->main_widgets->window;
-
-	gdbio_setup.temp_dir = g_build_filename(geany->app->configdir, "plugins", UNIX_NAME, NULL);
-	old_config_dir = g_build_filename(geany->app->configdir, "plugins", UNIX_NAME_OLD, NULL);
-
-	if (g_file_test(old_config_dir, G_FILE_TEST_IS_DIR)
-			&& !g_file_test(gdbio_setup.temp_dir, G_FILE_TEST_EXISTS))
-		g_rename(old_config_dir, gdbio_setup.temp_dir);
-
-	/*
-	 * the tty helper binary is either in the user's config dir or globally
-	 * installed in $LIBDIR/geany/
-	 */
-	glob_file = g_build_filename(TTYHELPERDIR, "ttyhelper", NULL);
-	user_file = g_build_filename(geany->app->configdir, "plugins", UNIX_NAME, "ttyhelper", NULL);
-	gdbio_setup.tty_helper = NULL;
-
-	if (utils_mkdir(gdbio_setup.temp_dir, TRUE) != 0)
-	{
-		dialogs_show_msgbox(GTK_MESSAGE_ERROR,
-					   _("Plugin configuration directory (%s) could not be created."), gdbio_setup.temp_dir);
-	}
-
-	/* the global ttyhelper has higher priority */
-	if (!g_file_test(glob_file, G_FILE_TEST_IS_REGULAR))
-	{
-		if (g_file_test(user_file, G_FILE_TEST_IS_REGULAR)
-				&& g_file_test(user_file, G_FILE_TEST_IS_EXECUTABLE))
-		{
-			gdbio_setup.tty_helper = g_strdup(user_file);
-		}
-	}
-	else if (g_file_test(glob_file, G_FILE_TEST_IS_EXECUTABLE))
-		gdbio_setup.tty_helper = g_strdup(glob_file);
-
-	if (NULL == gdbio_setup.tty_helper)
-		dialogs_show_msgbox(GTK_MESSAGE_ERROR,
-					   _("geanygdb: ttyhelper program not found."));
-
-	config_file = g_build_filename(gdbio_setup.temp_dir,"debugger.cfg", NULL);
-	gdbui_opts_init();
-
-	if (g_key_file_load_from_file(kf, config_file, G_KEY_FILE_NONE, NULL))
-	{
-		GET_KEY_STR(mono_font);
-		GET_KEY_STR(term_cmd);
-		GET_KEY_BOOL(show_tooltips);
-		GET_KEY_BOOL(show_icons);
-	}
-
-	g_key_file_free(kf);
-
-	gdbui_setup.warn_func = warn_message_cb;
-	gdbui_setup.info_func = info_message_cb;
-	gdbui_setup.opts_func = update_settings_cb;
-	gdbui_setup.location_query = location_query_cb;
-	gdbui_setup.line_func = goto_file_line_cb;
-
-
-	g_free(old_config_dir);
-	g_free(glob_file);
-	g_free(user_file);
-	msgbook = GTK_NOTEBOOK(ui_lookup_widget(geany->main_widgets->window, "notebook_info"));
-	compwin = gtk_widget_get_parent(ui_lookup_widget(geany->main_widgets->window, "treeview5"));
-	frame = gtk_frame_new(NULL);
-	gtk_notebook_append_page(GTK_NOTEBOOK(geany->main_widgets->sidebar_notebook), frame,
-				 gtk_label_new("Debug"));
-	gdbui_set_tips(GTK_TOOLTIPS(ui_lookup_widget(geany->main_widgets->window, "tooltips")));
-	gdbui_create_widgets(frame);
-	gtk_widget_show_all(frame);
-}
-
-
-void
-plugin_cleanup()
-{
-	gdbio_exit();
-	update_settings_cb();
-
-	g_free(config_file);
-	g_free(gdbio_setup.temp_dir);
-	g_free(gdbio_setup.tty_helper);
-
-	gtk_widget_destroy(frame);
-	gdbui_opts_done();
-}
-
-
-void
-plugin_configure_single(G_GNUC_UNUSED GtkWidget * parent)
-{
-	gdbui_opts_dlg();
-}

Copied: trunk/geany-plugins/geanygdb/src/geanygdb.c (from rev 1072, trunk/geany-plugins/geanygdb/src/geanydebug.c)
===================================================================
--- trunk/geany-plugins/geanygdb/src/geanygdb.c	                        (rev 0)
+++ trunk/geany-plugins/geanygdb/src/geanygdb.c	2009-12-13 06:35:56 UTC (rev 1075)
@@ -0,0 +1,445 @@
+/*
+ * geanygdb.c - Integrated debugger plugin for the Geany IDE
+ * Copyright 2008 Jeff Pohlmeyer <yetanothergeek(at)gmail(dot)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.
+ *
+ *
+ */
+
+
+#include "geany.h"
+
+#include <glib/gstdio.h>
+
+#ifdef HAVE_LOCALE_H
+# include <locale.h>
+#endif
+
+#include "support.h"
+#include "prefs.h"
+#include "document.h"
+#include "editor.h"
+#include "utils.h"
+#include "ui_utils.h"
+#include "keybindings.h"
+#include "project.h"
+#include "msgwindow.h"
+
+#include "plugindata.h"
+#include "geanyfunctions.h"
+
+#include "gdb-io.h"
+#include "gdb-ui.h"
+
+
+
+#define UNIX_NAME "geanygdb"
+#define UNIX_NAME_OLD "debugger"
+
+
+PLUGIN_VERSION_CHECK(115)
+PLUGIN_SET_INFO(_("GeanyGDB"), _("Integrated debugging with GDB."), VERSION, _("Jeff Pohlmeyer, Dominic Hopf"))
+
+GeanyData *geany_data;
+GeanyFunctions *geany_functions;
+
+static GtkNotebook *msgbook;
+static GtkWidget *compwin;
+static GtkWidget *frame;
+static gchar *config_file;
+
+
+static void show_compwin()
+{
+	gint page = gtk_notebook_page_num(msgbook, compwin);
+	gtk_notebook_set_current_page(msgbook, page);
+}
+
+
+
+static void
+info_message_cb(const gchar * msg)
+{
+	show_compwin();
+	msgwin_compiler_add(COLOR_BLACK, "%s", msg);
+}
+
+
+static void
+warn_message_cb(const gchar * msg)
+{
+	show_compwin();
+	msgwin_compiler_add(COLOR_RED, "%s", msg);
+}
+
+
+#define NOTEBOOK GTK_NOTEBOOK(geany->main_widgets->notebook)
+//#define DOCS ((document*)(doc_array->data))
+
+//static gint
+//doc_idx_to_tab_idx(gint idx)
+//{
+	// FIXME
+//	return 0;
+//	  return (
+//			  (idx>=0) && ((guint)idx<doc_array->len) && DOCS[idx].is_valid
+//	  ) ? gtk_notebook_page_num(NOTEBOOK, GTK_WIDGET(DOCS[idx].sci)):-1;
+//}
+
+
+static void
+goto_file_line_cb(const gchar * filename, const gchar * line, const gchar * reason)
+{
+	gint pos;
+	gint page;
+	GeanyDocument *doc;
+
+	gint line_num = gdbio_atoi((gchar *) line) - 1;
+	if (reason)
+	{
+		msgwin_compiler_add(COLOR_BLUE, "%s", reason);
+	}
+	doc = document_open_file(filename, FALSE, NULL, NULL);
+	if (!(doc && doc->is_valid))
+	{
+		return;
+	}
+	page = gtk_notebook_page_num(NOTEBOOK, GTK_WIDGET(doc->editor->sci));
+	gtk_notebook_set_current_page(NOTEBOOK, page);
+	pos = sci_get_position_from_line(doc->editor->sci, line_num);
+	sci_ensure_line_is_visible(doc->editor->sci, line_num);
+	while (gtk_events_pending())
+	{
+		gtk_main_iteration();
+	}
+	sci_set_current_position(doc->editor->sci, pos, TRUE);
+	gtk_widget_grab_focus(GTK_WIDGET(doc->editor->sci));
+	gtk_window_present(GTK_WINDOW(geany->main_widgets->window));
+}
+
+
+/*
+static gchar *
+get_current_word()
+{
+	const gchar *word_chars = NULL;
+	gint pos, linenum, bol, bow, eow;
+	gchar *text = NULL;
+	gchar *rv = NULL;
+	document *doc = document_get_current();
+	if (!(doc && doc->is_valid))
+	{
+		return NULL;
+	}
+	pos = sci_get_current_position(doc->sci);
+	linenum = sci_get_line_from_position(doc->sci, pos);
+	bol = sci_get_position_from_line(doc->sci, linenum);
+	bow = pos - bol;
+	eow = pos - bol;
+	text = sci_get_line(doc->sci, linenum);
+	word_chars = GEANY_WORDCHARS;
+	while ((bow > 0) && (strchr(word_chars, text[bow - 1]) != NULL))
+	{
+		bow--;
+	}
+	while (text[eow] && (strchr(word_chars, text[eow]) != NULL))
+	{
+		eow++;
+	}
+	text[eow] = '\0';
+	rv = g_strdup(text + bow);
+	g_free(text);
+	return rv;
+}*/
+
+static gboolean word_check_left(gchar c)
+{
+	if (g_ascii_isalnum(c) || c == '_' || c == '.')
+		return TRUE;
+	return FALSE;
+}
+
+static gboolean
+word_check_right(gchar c)
+{
+	if (g_ascii_isalnum(c) || c == '_')
+		return TRUE;
+	return FALSE;
+}
+
+static gchar *
+get_current_word()
+{
+	gchar *txt;
+	GeanyDocument *doc;
+
+	gint pos;
+	gint cstart, cend;
+	gchar c;
+	gint text_len;
+
+	doc = document_get_current();
+	g_return_val_if_fail(doc != NULL && doc->file_name != NULL, NULL);
+
+	text_len = sci_get_selected_text_length(doc->editor->sci);
+	if (text_len > 1)
+	{
+		txt = g_malloc(text_len + 1);
+		sci_get_selected_text(doc->editor->sci, txt);
+		return txt;
+	}
+
+	pos = sci_get_current_position(doc->editor->sci);
+	if (pos > 0)
+		pos--;
+
+	cstart = pos;
+	c = sci_get_char_at(doc->editor->sci, cstart);
+
+	if (!word_check_left(c))
+		return NULL;
+
+	while (word_check_left(c))
+	{
+		cstart--;
+		if (cstart >= 0)
+			c = sci_get_char_at(doc->editor->sci, cstart);
+		else
+			break;
+	}
+	cstart++;
+
+	cend = pos;
+	c = sci_get_char_at(doc->editor->sci, cend);
+	while (word_check_right(c) && cend < sci_get_length(doc->editor->sci))
+	{
+		cend++;
+		c = sci_get_char_at(doc->editor->sci, cend);
+	}
+
+	if (cstart == cend)
+		return NULL;
+	txt = g_malloc0(cend - cstart + 1);
+
+	sci_get_text_range(doc->editor->sci, cstart, cend, txt);
+	return txt;
+}
+
+
+
+
+static LocationInfo *
+location_query_cb()
+{
+	GeanyDocument *doc = document_get_current();
+	if (!(doc && doc->is_valid))
+	{
+		return NULL;
+	}
+	if (doc->file_name)
+	{
+		LocationInfo *abi;
+		gint line;
+		abi = g_new0(LocationInfo, 1);
+		line = sci_get_current_line(doc->editor->sci);
+		abi->filename = g_strdup(doc->file_name);
+		if (line >= 0)
+		{
+			abi->line_num = g_strdup_printf("%d", line + 1);
+		}
+		abi->symbol = get_current_word();
+		return abi;
+	}
+	return NULL;
+}
+
+
+
+static void
+update_settings_cb()
+{
+	GKeyFile *kf = g_key_file_new();
+	gchar *data;
+
+	g_key_file_set_string(kf, UNIX_NAME, "mono_font", gdbui_setup.options.mono_font);
+	g_key_file_set_string(kf, UNIX_NAME, "term_cmd", gdbui_setup.options.term_cmd);
+	g_key_file_set_boolean(kf, UNIX_NAME, "show_tooltips", gdbui_setup.options.show_tooltips);
+	g_key_file_set_boolean(kf, UNIX_NAME, "show_icons", gdbui_setup.options.show_icons);
+
+	data = g_key_file_to_data(kf, NULL, NULL);
+	utils_write_file(config_file, data);
+	g_free(data);
+
+	g_key_file_free(kf);
+	gtk_widget_destroy(GTK_BIN(frame)->child);
+	gdbui_create_widgets(frame);
+	gtk_widget_show_all(frame);
+}
+
+
+
+
+#define CLEAR() if (err) { g_error_free(err); err=NULL; }
+
+#define GET_KEY_STR(k) { \
+  gchar *tmp=g_key_file_get_string(kf,UNIX_NAME,#k"",&err); \
+  if (tmp) { \
+	if (*tmp && !err) { \
+	  g_free(gdbui_setup.options.k); \
+	  gdbui_setup.options.k=tmp; \
+	} else { g_free(tmp); } \
+  } \
+  CLEAR(); \
+}
+
+
+static void locale_init(void)
+{
+#ifdef ENABLE_NLS
+	gchar *locale_dir = NULL;
+
+#ifdef HAVE_LOCALE_H
+	setlocale(LC_ALL, "");
+#endif
+
+#ifdef G_OS_WIN32
+	gchar *install_dir = g_win32_get_package_installation_directory("geany", NULL);
+	/* e.g. C:\Program Files\geany\lib\locale */
+	locale_dir = g_strconcat(install_dir, "\\share\\locale", NULL);
+	g_free(install_dir);
+#else
+	locale_dir = g_strdup(LOCALEDIR);
+#endif
+
+	bindtextdomain(GETTEXT_PACKAGE, locale_dir);
+	bind_textdomain_codeset(GETTEXT_PACKAGE, "UTF-8");
+	textdomain(GETTEXT_PACKAGE);
+	g_free(locale_dir);
+#endif
+}
+
+
+#define GET_KEY_BOOL(k) { \
+  gboolean tmp=g_key_file_get_boolean(kf,UNIX_NAME,#k"",&err); \
+  if (err) { CLEAR() } else { gdbui_setup.options.k=tmp; } \
+}
+
+void
+plugin_init(GeanyData * data)
+{
+	GKeyFile *kf = g_key_file_new();
+	GError *err = NULL;
+	gchar *glob_file;
+	gchar *user_file;
+	gchar *old_config_dir;
+
+	locale_init();
+
+	gdbui_setup.main_window = geany->main_widgets->window;
+
+	gdbio_setup.temp_dir = g_build_filename(geany->app->configdir, "plugins", UNIX_NAME, NULL);
+	old_config_dir = g_build_filename(geany->app->configdir, "plugins", UNIX_NAME_OLD, NULL);
+
+	if (g_file_test(old_config_dir, G_FILE_TEST_IS_DIR)
+			&& !g_file_test(gdbio_setup.temp_dir, G_FILE_TEST_EXISTS))
+		g_rename(old_config_dir, gdbio_setup.temp_dir);
+
+	/*
+	 * the tty helper binary is either in the user's config dir or globally
+	 * installed in $LIBDIR/geany/
+	 */
+	glob_file = g_build_filename(TTYHELPERDIR, "ttyhelper", NULL);
+	user_file = g_build_filename(geany->app->configdir, "plugins", UNIX_NAME, "ttyhelper", NULL);
+	gdbio_setup.tty_helper = NULL;
+
+	if (utils_mkdir(gdbio_setup.temp_dir, TRUE) != 0)
+	{
+		dialogs_show_msgbox(GTK_MESSAGE_ERROR,
+					   _("Plugin configuration directory (%s) could not be created."), gdbio_setup.temp_dir);
+	}
+
+	/* the global ttyhelper has higher priority */
+	if (!g_file_test(glob_file, G_FILE_TEST_IS_REGULAR))
+	{
+		if (g_file_test(user_file, G_FILE_TEST_IS_REGULAR)
+				&& g_file_test(user_file, G_FILE_TEST_IS_EXECUTABLE))
+		{
+			gdbio_setup.tty_helper = g_strdup(user_file);
+		}
+	}
+	else if (g_file_test(glob_file, G_FILE_TEST_IS_EXECUTABLE))
+		gdbio_setup.tty_helper = g_strdup(glob_file);
+
+	if (NULL == gdbio_setup.tty_helper)
+		dialogs_show_msgbox(GTK_MESSAGE_ERROR,
+					   _("geanygdb: ttyhelper program not found."));
+
+	config_file = g_build_filename(gdbio_setup.temp_dir,"debugger.cfg", NULL);
+	gdbui_opts_init();
+
+	if (g_key_file_load_from_file(kf, config_file, G_KEY_FILE_NONE, NULL))
+	{
+		GET_KEY_STR(mono_font);
+		GET_KEY_STR(term_cmd);
+		GET_KEY_BOOL(show_tooltips);
+		GET_KEY_BOOL(show_icons);
+	}
+
+	g_key_file_free(kf);
+
+	gdbui_setup.warn_func = warn_message_cb;
+	gdbui_setup.info_func = info_message_cb;
+	gdbui_setup.opts_func = update_settings_cb;
+	gdbui_setup.location_query = location_query_cb;
+	gdbui_setup.line_func = goto_file_line_cb;
+
+
+	g_free(old_config_dir);
+	g_free(glob_file);
+	g_free(user_file);
+	msgbook = GTK_NOTEBOOK(ui_lookup_widget(geany->main_widgets->window, "notebook_info"));
+	compwin = gtk_widget_get_parent(ui_lookup_widget(geany->main_widgets->window, "treeview5"));
+	frame = gtk_frame_new(NULL);
+	gtk_notebook_append_page(GTK_NOTEBOOK(geany->main_widgets->sidebar_notebook), frame,
+				 gtk_label_new("Debug"));
+	gdbui_set_tips(GTK_TOOLTIPS(ui_lookup_widget(geany->main_widgets->window, "tooltips")));
+	gdbui_create_widgets(frame);
+	gtk_widget_show_all(frame);
+}
+
+
+void
+plugin_cleanup()
+{
+	gdbio_exit();
+	update_settings_cb();
+
+	g_free(config_file);
+	g_free(gdbio_setup.temp_dir);
+	g_free(gdbio_setup.tty_helper);
+
+	gtk_widget_destroy(frame);
+	gdbui_opts_done();
+}
+
+
+void
+plugin_configure_single(G_GNUC_UNUSED GtkWidget * parent)
+{
+	gdbui_opts_dlg();
+}

Modified: trunk/geany-plugins/wscript
===================================================================
--- trunk/geany-plugins/wscript	2009-12-08 20:41:17 UTC (rev 1074)
+++ trunk/geany-plugins/wscript	2009-12-13 06:35:56 UTC (rev 1075)
@@ -87,7 +87,7 @@
 		   'gdb-io-envir.c', 'gdb-io-frame.c', 'gdb-io-read.c', 'gdb-io-run.c',
 		   'gdb-io-stack.c', 'gdb-lex.c', 'gdb-ui-break.c', 'gdb-ui-envir.c',
 		   'gdb-ui-frame.c',  'gdb-ui-locn.c', 'gdb-ui-main.c',
-		   'geanydebug.c']), # source files
+		   'geanygdb.c']), # source files
 		 [ 'geanygdb', 'geanygdb/src' ], # include dirs
 		 [ [ 'elf.h', '', False ], [ 'elf_abi.h', '', False ] ]
 		 ),


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