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

cesspit at users.sourceforge.net cesspit at xxxxx
Mon Aug 22 00:11:00 UTC 2011


Revision: 2160
          http://geany-plugins.svn.sourceforge.net/geany-plugins/?rev=2160&view=rev
Author:   cesspit
Date:     2011-08-22 00:10:59 +0000 (Mon, 22 Aug 2011)

Log Message:
-----------
debugger: buttons panel is made visible on all debug tabs; run, stop, step etc buttons are added to the button panel; restart command added; load/save config messages removed, all compiler warnings removed, disabled breakpoint pixmap corrected, frame and currect frame marker pixmaps changed, refactoring

Modified Paths:
--------------
    trunk/geany-plugins/build/debugger.m4
    trunk/geany-plugins/debugger/Makefile.am
    trunk/geany-plugins/debugger/src/Makefile.am
    trunk/geany-plugins/debugger/src/bptree.c
    trunk/geany-plugins/debugger/src/breakpoints.c
    trunk/geany-plugins/debugger/src/breakpoints.h
    trunk/geany-plugins/debugger/src/callbacks.c
    trunk/geany-plugins/debugger/src/dbm_gdb.c
    trunk/geany-plugins/debugger/src/debug.c
    trunk/geany-plugins/debugger/src/debug.h
    trunk/geany-plugins/debugger/src/debug_module.c
    trunk/geany-plugins/debugger/src/debug_module.h
    trunk/geany-plugins/debugger/src/keys.c
    trunk/geany-plugins/debugger/src/keys.h
    trunk/geany-plugins/debugger/src/markers.c
    trunk/geany-plugins/debugger/src/plugin.c
    trunk/geany-plugins/debugger/src/stree.c
    trunk/geany-plugins/debugger/src/tpage.c
    trunk/geany-plugins/debugger/src/tpage.h
    trunk/geany-plugins/debugger/src/utils.c
    trunk/geany-plugins/debugger/src/utils.h
    trunk/geany-plugins/debugger/src/watch_model.c
    trunk/geany-plugins/debugger/src/watch_model.h
    trunk/geany-plugins/debugger/src/wtree.c
    trunk/geany-plugins/debugger/src/wtree.h
    trunk/geany-plugins/debugger/src/xpm/breakpoint.xpm
    trunk/geany-plugins/debugger/src/xpm/breakpoint_condition.xpm
    trunk/geany-plugins/debugger/src/xpm/breakpoint_disabled.xpm
    trunk/geany-plugins/po/ru.po

Added Paths:
-----------
    trunk/geany-plugins/debugger/img/
    trunk/geany-plugins/debugger/img/Makefile
    trunk/geany-plugins/debugger/img/Makefile.am
    trunk/geany-plugins/debugger/img/Makefile.in
    trunk/geany-plugins/debugger/img/continue.png
    trunk/geany-plugins/debugger/img/restart.gif
    trunk/geany-plugins/debugger/img/run.gif
    trunk/geany-plugins/debugger/img/run_to_cursor.gif
    trunk/geany-plugins/debugger/img/step_in.png
    trunk/geany-plugins/debugger/img/step_out.gif
    trunk/geany-plugins/debugger/img/step_over.gif
    trunk/geany-plugins/debugger/img/stop.gif
    trunk/geany-plugins/debugger/img/tab.gif
    trunk/geany-plugins/debugger/img/tabs.gif
    trunk/geany-plugins/debugger/src/btnpanel.c
    trunk/geany-plugins/debugger/src/btnpanel.h
    trunk/geany-plugins/debugger/src/dconfig.c
    trunk/geany-plugins/debugger/src/dconfig.h
    trunk/geany-plugins/debugger/src/gui.c
    trunk/geany-plugins/debugger/src/gui.h
    trunk/geany-plugins/debugger/src/xpm/frame.xpm
    trunk/geany-plugins/debugger/src/xpm/frame_current.xpm

Removed Paths:
-------------
    trunk/geany-plugins/debugger/src/xpm/arrow_1_disable.xpm
    trunk/geany-plugins/debugger/src/xpm/arrow_1_yellow.xpm

Modified: trunk/geany-plugins/build/debugger.m4
===================================================================
--- trunk/geany-plugins/build/debugger.m4	2011-08-20 15:05:19 UTC (rev 2159)
+++ trunk/geany-plugins/build/debugger.m4	2011-08-22 00:10:59 UTC (rev 2160)
@@ -7,5 +7,6 @@
     AC_CONFIG_FILES([
         debugger/Makefile
         debugger/src/Makefile
+        debugger/img/Makefile
     ])
 ])

Modified: trunk/geany-plugins/debugger/Makefile.am
===================================================================
--- trunk/geany-plugins/debugger/Makefile.am	2011-08-20 15:05:19 UTC (rev 2159)
+++ trunk/geany-plugins/debugger/Makefile.am	2011-08-22 00:10:59 UTC (rev 2160)
@@ -5,5 +5,5 @@
 EXTRA_DIST =
 endif
 
-SUBDIRS = src
+SUBDIRS = src img
 plugin = debugger

Added: trunk/geany-plugins/debugger/img/Makefile
===================================================================
--- trunk/geany-plugins/debugger/img/Makefile	                        (rev 0)
+++ trunk/geany-plugins/debugger/img/Makefile	2011-08-22 00:10:59 UTC (rev 2160)
@@ -0,0 +1,530 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# debugger/img/Makefile.  Generated from Makefile.in by configure.
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+
+
+
+pkgdatadir = $(datadir)/geany-plugins
+pkgincludedir = $(includedir)/geany-plugins
+pkglibdir = $(libdir)/geany-plugins
+pkglibexecdir = $(libexecdir)/geany-plugins
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = i686-pc-linux-gnu
+host_triplet = i686-pc-linux-gnu
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+	$(top_srcdir)/build/vars.docs.mk
+subdir = debugger/img
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/build/bundled/gpgme.m4 \
+	$(top_srcdir)/build/addons.m4 $(top_srcdir)/build/cflags.m4 \
+	$(top_srcdir)/build/codenav.m4 $(top_srcdir)/build/common.m4 \
+	$(top_srcdir)/build/cppcheck.m4 \
+	$(top_srcdir)/build/debugger.m4 $(top_srcdir)/build/devhelp.m4 \
+	$(top_srcdir)/build/expansions.m4 $(top_srcdir)/build/geany.m4 \
+	$(top_srcdir)/build/geanycfp.m4 \
+	$(top_srcdir)/build/geanydoc.m4 \
+	$(top_srcdir)/build/geanyextrasel.m4 \
+	$(top_srcdir)/build/geanygdb.m4 \
+	$(top_srcdir)/build/geanygendoc.m4 \
+	$(top_srcdir)/build/geanyinsertnum.m4 \
+	$(top_srcdir)/build/geanylatex.m4 \
+	$(top_srcdir)/build/geanylipsum.m4 \
+	$(top_srcdir)/build/geanylua.m4 \
+	$(top_srcdir)/build/geanymacro.m4 \
+	$(top_srcdir)/build/geanynumberedbookmarks.m4 \
+	$(top_srcdir)/build/geanypg.m4 $(top_srcdir)/build/geanyprj.m4 \
+	$(top_srcdir)/build/geanysendmail.m4 \
+	$(top_srcdir)/build/geanyvc.m4 $(top_srcdir)/build/gproject.m4 \
+	$(top_srcdir)/build/i18n.m4 \
+	$(top_srcdir)/build/pretty-printer.m4 \
+	$(top_srcdir)/build/shiftcolumn.m4 \
+	$(top_srcdir)/build/spellcheck.m4 \
+	$(top_srcdir)/build/status.m4 \
+	$(top_srcdir)/build/tableconvert.m4 \
+	$(top_srcdir)/build/treebrowser.m4 \
+	$(top_srcdir)/build/unittests.m4 \
+	$(top_srcdir)/build/updatechecker.m4 \
+	$(top_srcdir)/build/webhelper.m4 \
+	$(top_srcdir)/build/xmlsnippets.m4 \
+	$(top_srcdir)/build/cache/glib-gettext.m4 \
+	$(top_srcdir)/build/cache/intltool.m4 \
+	$(top_srcdir)/build/cache/libtool.m4 \
+	$(top_srcdir)/build/cache/ltoptions.m4 \
+	$(top_srcdir)/build/cache/ltsugar.m4 \
+	$(top_srcdir)/build/cache/ltversion.m4 \
+	$(top_srcdir)/build/cache/lt~obsolete.m4 \
+	$(top_srcdir)/build/cache/nls.m4 \
+	$(top_srcdir)/build/cache/pkg.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_GEN = $(am__v_GEN_$(V))
+am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
+am__v_GEN_0 = @echo "  GEN   " $@;
+AM_V_at = $(am__v_at_$(V))
+am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+am__v_at_0 = @
+SOURCES =
+DIST_SOURCES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(plugindatadir)"
+DATA = $(plugindata_DATA)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = ${SHELL} /home/pit/src/geany-plugins/trunk/geany-plugins/missing --run aclocal-1.11
+ALL_LINGUAS = be ca da de es fr gl ja nl pt pt_BR ru tr zh_CN 
+AMTAR = ${SHELL} /home/pit/src/geany-plugins/trunk/geany-plugins/missing --run tar
+AM_DEFAULT_VERBOSITY = 0
+AR = ar
+AUTOCONF = ${SHELL} /home/pit/src/geany-plugins/trunk/geany-plugins/missing --run autoconf
+AUTOHEADER = ${SHELL} /home/pit/src/geany-plugins/trunk/geany-plugins/missing --run autoheader
+AUTOMAKE = ${SHELL} /home/pit/src/geany-plugins/trunk/geany-plugins/missing --run automake-1.11
+AWK = mawk
+CATALOGS =  be.gmo ca.gmo da.gmo de.gmo es.gmo fr.gmo gl.gmo ja.gmo nl.gmo pt.gmo pt_BR.gmo ru.gmo tr.gmo zh_CN.gmo
+CATOBJEXT = .gmo
+CC = gcc
+CCDEPMODE = depmode=gcc3
+CFLAGS = -g -O0
+CHECK_CFLAGS = 
+CHECK_LIBS = 
+CPP = gcc -E
+CPPCHECK = NONE
+CPPFLAGS = 
+CYGPATH_W = echo
+DATADIRNAME = share
+DEFS = -DHAVE_CONFIG_H
+DEPDIR = .deps
+DEVHELP_CFLAGS = -pthread -I/usr/include/gtk-2.0 -I/usr/lib/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng12 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/webkit-1.0 -I/usr/include/libsoup-2.4 -I/usr/include/libxml2 -I/usr/include/devhelp-1.0 -I/usr/include/libwnck-1.0 -I/usr/include/startup-notification-1.0  
+DEVHELP_LIBS = -pthread -ldevhelp-1 -lwebkit-1.0 -lgtk-x11-2.0 -lsoup-2.4 -lgdk-x11-2.0 -latk-1.0 -lpangoft2-1.0 -lgdk_pixbuf-2.0 -lm -lpangocairo-1.0 -lcairo -lpango-1.0 -lfreetype -lfontconfig -lgio-2.0 -lgobject-2.0 -lgmodule-2.0 -lgthread-2.0 -lrt -lglib-2.0  
+DSYMUTIL = 
+DUMPBIN = 
+ECHO_C = 
+ECHO_N = -n
+ECHO_T = 
+EGREP = /bin/grep -E
+ENCHANT_CFLAGS = -pthread -I/usr/include/enchant -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include  
+ENCHANT_LIBS = -pthread -lenchant -lgmodule-2.0 -lrt -lglib-2.0  
+EXEEXT = 
+FGREP = /bin/grep -F
+GEANYGENDOC_CFLAGS = -pthread -I/usr/local/include -I/usr/include/gtk-2.0 -I/usr/lib/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng12 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include  
+GEANYGENDOC_LIBS = -pthread -L/usr/local/lib -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lpangoft2-1.0 -lgdk_pixbuf-2.0 -lm -lpangocairo-1.0 -lcairo -lpango-1.0 -lfreetype -lfontconfig -lctpl -lgio-2.0 -lgobject-2.0 -lgmodule-2.0 -lgthread-2.0 -lrt -lglib-2.0  
+GEANY_CFLAGS = -DGTK -pthread -I/usr/local/include/geany -I/usr/local/include/geany/tagmanager -I/usr/local/include/geany/scintilla -I/usr/include/gtk-2.0 -I/usr/lib/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng12 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include  
+GEANY_LIBS = -pthread -L/usr/local/lib -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lpangoft2-1.0 -lgdk_pixbuf-2.0 -lm -lpangocairo-1.0 -lcairo -lgio-2.0 -lpango-1.0 -lfreetype -lfontconfig -lgobject-2.0 -lgmodule-2.0 -lgthread-2.0 -lrt -lglib-2.0  
+GEANY_VERSION = 0.21
+GETTEXT_PACKAGE = geany-plugins
+GIO_CFLAGS = -pthread -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include  
+GIO_LIBS = -pthread -lgio-2.0 -lgobject-2.0 -lgmodule-2.0 -lgthread-2.0 -lrt -lglib-2.0  
+GLIB_MKENUMS = /usr/bin/glib-mkenums
+GMOFILES =  be.gmo ca.gmo da.gmo de.gmo es.gmo fr.gmo gl.gmo ja.gmo nl.gmo pt.gmo pt_BR.gmo ru.gmo tr.gmo zh_CN.gmo
+GMSGFMT = /usr/bin/msgfmt
+GPGME_CFLAGS = 
+GPGME_CONFIG = no
+GPGME_LIBS = 
+GP_CFLAGS =  -Wall -Wimplicit-function-declaration -Wmissing-parameter-type -Wold-style-declaration -Wpointer-arith -Wshadow -Wundef -Wwrite-strings
+GREP = /bin/grep
+GTKSPELL_CFLAGS = -pthread -I/usr/include/gtkspell-2.0 -I/usr/include/gtk-2.0 -I/usr/lib/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng12 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include  
+GTKSPELL_LIBS = -pthread -lgtkspell -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lpangoft2-1.0 -lgdk_pixbuf-2.0 -lm -lpangocairo-1.0 -lcairo -lgio-2.0 -lpango-1.0 -lfreetype -lfontconfig -lgobject-2.0 -lgmodule-2.0 -lgthread-2.0 -lrt -lglib-2.0  
+INSTALL = /usr/bin/install -c
+INSTALL_DATA = ${INSTALL} -m 644
+INSTALL_PROGRAM = ${INSTALL}
+INSTALL_SCRIPT = ${INSTALL}
+INSTALL_STRIP_PROGRAM = $(install_sh) -c -s
+INSTOBJEXT = .mo
+INTLLIBS = 
+INTLTOOL_EXTRACT = /usr/bin/intltool-extract
+INTLTOOL_MERGE = /usr/bin/intltool-merge
+INTLTOOL_PERL = /usr/bin/perl
+INTLTOOL_UPDATE = /usr/bin/intltool-update
+LD = /usr/bin/ld
+LDFLAGS = 
+LIBOBJS = 
+LIBS = 
+LIBTOOL = $(SHELL) $(top_builddir)/libtool
+LIBXML_CFLAGS = -I/usr/include/libxml2  
+LIBXML_LIBS = -lxml2  
+LIPO = 
+LN_S = ln -s
+LOCALEDIR = ${datarootdir}/locale
+LTLIBOBJS = 
+LUA_CFLAGS = -I/usr/include/lua5.1  
+LUA_LIBS = -llua5.1  
+MAKEINFO = ${SHELL} /home/pit/src/geany-plugins/trunk/geany-plugins/missing --run makeinfo
+MKDIR_P = /bin/mkdir -p
+MKINSTALLDIRS = ./mkinstalldirs
+MSGFMT = /usr/bin/msgfmt
+MSGFMT_OPTS = -c
+MSGMERGE = /usr/bin/msgmerge
+NM = /usr/bin/nm -B
+NMEDIT = 
+OBJDUMP = objdump
+OBJEXT = o
+OTOOL = 
+OTOOL64 = 
+PACKAGE = geany-plugins
+PACKAGE_BUGREPORT = 
+PACKAGE_NAME = geany-plugins
+PACKAGE_STRING = geany-plugins 0.21
+PACKAGE_TARNAME = geany-plugins
+PACKAGE_URL = 
+PACKAGE_VERSION = 0.21
+PATH_SEPARATOR = :
+PKG_CONFIG = /usr/bin/pkg-config
+PKG_CONFIG_LIBDIR = 
+PKG_CONFIG_PATH = 
+POFILES =  be.po ca.po da.po de.po es.po fr.po gl.po ja.po nl.po pt.po pt_BR.po ru.po tr.po zh_CN.po
+POSUB = po
+PO_IN_DATADIR_FALSE = 
+PO_IN_DATADIR_TRUE = 
+RANLIB = ranlib
+RST2HTML = no
+SED = /bin/sed
+SET_MAKE = 
+SHELL = /bin/bash
+STRIP = strip
+UPDATECHECKER_CFLAGS = -pthread -I/usr/include/libsoup-2.4 -I/usr/include/libxml2 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include  
+UPDATECHECKER_LIBS = -pthread -lsoup-2.4 -lgio-2.0 -lgobject-2.0 -lgmodule-2.0 -lgthread-2.0 -lrt -lglib-2.0  
+USE_NLS = yes
+VERSION = 0.21
+VTE_CFLAGS = -pthread -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/pango-1.0 -I/usr/include/gtk-2.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/lib/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng12  
+VTE_LIBS = -pthread -lvte -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lpangoft2-1.0 -lgdk_pixbuf-2.0 -lm -lpangocairo-1.0 -lpango-1.0 -lfreetype -lfontconfig -lgio-2.0 -lgobject-2.0 -lgmodule-2.0 -lgthread-2.0 -lrt -lglib-2.0 -lcairo -lX11  
+WEBHELPER_CFLAGS = -pthread -I/usr/include/gtk-2.0 -I/usr/lib/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng12 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/webkit-1.0 -I/usr/include/libsoup-2.4 -I/usr/include/libxml2  
+WEBHELPER_LIBS = -pthread -lwebkit-1.0 -lgtk-x11-2.0 -lsoup-2.4 -lgdk-x11-2.0 -latk-1.0 -lpangoft2-1.0 -lgdk_pixbuf-2.0 -lm -lpangocairo-1.0 -lcairo -lpango-1.0 -lfreetype -lfontconfig -lgio-2.0 -lgobject-2.0 -lgmodule-2.0 -lgthread-2.0 -lrt -lglib-2.0  
+XGETTEXT = /usr/bin/xgettext
+abs_builddir = /home/pit/src/geany-plugins/trunk/geany-plugins/debugger/img
+abs_srcdir = /home/pit/src/geany-plugins/trunk/geany-plugins/debugger/img
+abs_top_builddir = /home/pit/src/geany-plugins/trunk/geany-plugins
+abs_top_srcdir = /home/pit/src/geany-plugins/trunk/geany-plugins
+ac_ct_CC = gcc
+ac_ct_DUMPBIN = 
+am__include = include
+am__leading_dot = .
+am__quote = 
+am__tar = tar --format=ustar -chf - "$$tardir"
+am__untar = tar -xf -
+bindir = ${exec_prefix}/bin
+build = i686-pc-linux-gnu
+build_alias = 
+build_cpu = i686
+build_os = linux-gnu
+build_vendor = pc
+builddir = .
+datadir = ${datarootdir}
+datarootdir = ${prefix}/share
+docdir = ${datarootdir}/doc/${PACKAGE_TARNAME}
+dvidir = ${docdir}
+exec_prefix = ${prefix}
+geanypluginsdir = /usr/local/lib/geany
+host = i686-pc-linux-gnu
+host_alias = 
+host_cpu = i686
+host_os = linux-gnu
+host_vendor = pc
+htmldir = ${docdir}
+includedir = ${prefix}/include
+infodir = ${datarootdir}/info
+install_sh = ${SHELL} /home/pit/src/geany-plugins/trunk/geany-plugins/install-sh
+libdir = ${exec_prefix}/lib
+libexecdir = ${exec_prefix}/libexec
+localedir = ${datarootdir}/locale
+localstatedir = ${prefix}/var
+lt_ECHO = echo
+mandir = ${datarootdir}/man
+mkdir_p = /bin/mkdir -p
+oldincludedir = /usr/include
+pdfdir = ${docdir}
+prefix = /usr/local
+program_transform_name = s,x,x,
+psdir = ${docdir}
+sbindir = ${exec_prefix}/sbin
+sharedstatedir = ${prefix}/com
+srcdir = .
+sysconfdir = ${prefix}/etc
+target_alias = 
+top_build_prefix = ../../
+top_builddir = ../..
+top_srcdir = ../..
+plugindocdir = $(docdir)/$(plugin)
+htmldocdir = $(plugindocdir)
+plugindatadir = $(pkgdatadir)/$(plugin)
+pluginlibdir = $(pkglibdir)/$(plugin)
+examplesdir = $(plugindatadir)
+AUXFILES = \
+	README \
+	ChangeLog \
+	NEWS \
+	COPYING \
+	AUTHORS
+
+plugin = debugger
+FILES = \
+	continue.png \
+	restart.gif \
+	run.gif \
+	run_to_cursor.gif \
+	step_in.png \
+	step_out.gif \
+	step_over.gif \
+	stop.gif \
+	tab.gif \
+	tabs.gif
+
+EXTRA_DIST = $(FILES)
+plugindata_DATA = $(FILES)
+#EXTRA_DATA = $(FILES)
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am $(top_srcdir)/build/vars.docs.mk $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign debugger/img/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --foreign debugger/img/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure:  $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+install-plugindataDATA: $(plugindata_DATA)
+	@$(NORMAL_INSTALL)
+	test -z "$(plugindatadir)" || $(MKDIR_P) "$(DESTDIR)$(plugindatadir)"
+	@list='$(plugindata_DATA)'; test -n "$(plugindatadir)" || list=; \
+	for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(plugindatadir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(plugindatadir)" || exit $$?; \
+	done
+
+uninstall-plugindataDATA:
+	@$(NORMAL_UNINSTALL)
+	@list='$(plugindata_DATA)'; test -n "$(plugindatadir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	test -n "$$files" || exit 0; \
+	echo " ( cd '$(DESTDIR)$(plugindatadir)' && rm -f" $$files ")"; \
+	cd "$(DESTDIR)$(plugindatadir)" && rm -f $$files
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  dist_files=`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  if test -d $$d/$$file; then \
+	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+	  else \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+check: check-am
+all-am: Makefile $(DATA)
+installdirs:
+	for dir in "$(DESTDIR)$(plugindatadir)"; do \
+	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+	done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	  `test -z '$(STRIP)' || \
+	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+	-rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-plugindataDATA
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-plugindataDATA
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am check check-am clean clean-generic clean-libtool \
+	distclean distclean-generic distclean-libtool distdir dvi \
+	dvi-am html html-am info info-am install install-am \
+	install-data install-data-am install-dvi install-dvi-am \
+	install-exec install-exec-am install-html install-html-am \
+	install-info install-info-am install-man install-pdf \
+	install-pdf-am install-plugindataDATA install-ps install-ps-am \
+	install-strip installcheck installcheck-am installdirs \
+	maintainer-clean maintainer-clean-generic mostlyclean \
+	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+	uninstall uninstall-am uninstall-plugindataDATA
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:

Added: trunk/geany-plugins/debugger/img/Makefile.am
===================================================================
--- trunk/geany-plugins/debugger/img/Makefile.am	                        (rev 0)
+++ trunk/geany-plugins/debugger/img/Makefile.am	2011-08-22 00:10:59 UTC (rev 2160)
@@ -0,0 +1,22 @@
+include $(top_srcdir)/build/vars.docs.mk
+
+plugin = debugger
+FILES = \
+	continue.png \
+	restart.gif \
+	run.gif \
+	run_to_cursor.gif \
+	step_in.png \
+	step_out.gif \
+	step_over.gif \
+	stop.gif \
+	tab.gif \
+	tabs.gif
+
+EXTRA_DIST = $(FILES)
+
+if ENABLE_DEBUGGER
+plugindata_DATA = $(FILES)
+else
+EXTRA_DATA = $(FILES)
+endif

Added: trunk/geany-plugins/debugger/img/Makefile.in
===================================================================
--- trunk/geany-plugins/debugger/img/Makefile.in	                        (rev 0)
+++ trunk/geany-plugins/debugger/img/Makefile.in	2011-08-22 00:10:59 UTC (rev 2160)
@@ -0,0 +1,530 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+	$(top_srcdir)/build/vars.docs.mk
+subdir = debugger/img
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/build/bundled/gpgme.m4 \
+	$(top_srcdir)/build/addons.m4 $(top_srcdir)/build/cflags.m4 \
+	$(top_srcdir)/build/codenav.m4 $(top_srcdir)/build/common.m4 \
+	$(top_srcdir)/build/cppcheck.m4 \
+	$(top_srcdir)/build/debugger.m4 $(top_srcdir)/build/devhelp.m4 \
+	$(top_srcdir)/build/expansions.m4 $(top_srcdir)/build/geany.m4 \
+	$(top_srcdir)/build/geanycfp.m4 \
+	$(top_srcdir)/build/geanydoc.m4 \
+	$(top_srcdir)/build/geanyextrasel.m4 \
+	$(top_srcdir)/build/geanygdb.m4 \
+	$(top_srcdir)/build/geanygendoc.m4 \
+	$(top_srcdir)/build/geanyinsertnum.m4 \
+	$(top_srcdir)/build/geanylatex.m4 \
+	$(top_srcdir)/build/geanylipsum.m4 \
+	$(top_srcdir)/build/geanylua.m4 \
+	$(top_srcdir)/build/geanymacro.m4 \
+	$(top_srcdir)/build/geanynumberedbookmarks.m4 \
+	$(top_srcdir)/build/geanypg.m4 $(top_srcdir)/build/geanyprj.m4 \
+	$(top_srcdir)/build/geanysendmail.m4 \
+	$(top_srcdir)/build/geanyvc.m4 $(top_srcdir)/build/gproject.m4 \
+	$(top_srcdir)/build/i18n.m4 \
+	$(top_srcdir)/build/pretty-printer.m4 \
+	$(top_srcdir)/build/shiftcolumn.m4 \
+	$(top_srcdir)/build/spellcheck.m4 \
+	$(top_srcdir)/build/status.m4 \
+	$(top_srcdir)/build/tableconvert.m4 \
+	$(top_srcdir)/build/treebrowser.m4 \
+	$(top_srcdir)/build/unittests.m4 \
+	$(top_srcdir)/build/updatechecker.m4 \
+	$(top_srcdir)/build/webhelper.m4 \
+	$(top_srcdir)/build/xmlsnippets.m4 \
+	$(top_srcdir)/build/cache/glib-gettext.m4 \
+	$(top_srcdir)/build/cache/intltool.m4 \
+	$(top_srcdir)/build/cache/libtool.m4 \
+	$(top_srcdir)/build/cache/ltoptions.m4 \
+	$(top_srcdir)/build/cache/ltsugar.m4 \
+	$(top_srcdir)/build/cache/ltversion.m4 \
+	$(top_srcdir)/build/cache/lt~obsolete.m4 \
+	$(top_srcdir)/build/cache/nls.m4 \
+	$(top_srcdir)/build/cache/pkg.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_GEN = $(am__v_GEN_$(V))
+am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
+am__v_GEN_0 = @echo "  GEN   " $@;
+AM_V_at = $(am__v_at_$(V))
+am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+am__v_at_0 = @
+SOURCES =
+DIST_SOURCES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(plugindatadir)"
+DATA = $(plugindata_DATA)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+ALL_LINGUAS = @ALL_LINGUAS@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CATALOGS = @CATALOGS@
+CATOBJEXT = @CATOBJEXT@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CHECK_CFLAGS = @CHECK_CFLAGS@
+CHECK_LIBS = @CHECK_LIBS@
+CPP = @CPP@
+CPPCHECK = @CPPCHECK@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DATADIRNAME = @DATADIRNAME@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DEVHELP_CFLAGS = @DEVHELP_CFLAGS@
+DEVHELP_LIBS = @DEVHELP_LIBS@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+ENCHANT_CFLAGS = @ENCHANT_CFLAGS@
+ENCHANT_LIBS = @ENCHANT_LIBS@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GEANYGENDOC_CFLAGS = @GEANYGENDOC_CFLAGS@
+GEANYGENDOC_LIBS = @GEANYGENDOC_LIBS@
+GEANY_CFLAGS = @GEANY_CFLAGS@
+GEANY_LIBS = @GEANY_LIBS@
+GEANY_VERSION = @GEANY_VERSION@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GIO_CFLAGS = @GIO_CFLAGS@
+GIO_LIBS = @GIO_LIBS@
+GLIB_MKENUMS = @GLIB_MKENUMS@
+GMOFILES = @GMOFILES@
+GMSGFMT = @GMSGFMT@
+GPGME_CFLAGS = @GPGME_CFLAGS@
+GPGME_CONFIG = @GPGME_CONFIG@
+GPGME_LIBS = @GPGME_LIBS@
+GP_CFLAGS = @GP_CFLAGS@
+GREP = @GREP@
+GTKSPELL_CFLAGS = @GTKSPELL_CFLAGS@
+GTKSPELL_LIBS = @GTKSPELL_LIBS@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INSTOBJEXT = @INSTOBJEXT@
+INTLLIBS = @INTLLIBS@
+INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
+INTLTOOL_MERGE = @INTLTOOL_MERGE@
+INTLTOOL_PERL = @INTLTOOL_PERL@
+INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIBXML_CFLAGS = @LIBXML_CFLAGS@
+LIBXML_LIBS = @LIBXML_LIBS@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LOCALEDIR = @LOCALEDIR@
+LTLIBOBJS = @LTLIBOBJS@
+LUA_CFLAGS = @LUA_CFLAGS@
+LUA_LIBS = @LUA_LIBS@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
+MSGFMT = @MSGFMT@
+MSGFMT_OPTS = @MSGFMT_OPTS@
+MSGMERGE = @MSGMERGE@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
+POFILES = @POFILES@
+POSUB = @POSUB@
+PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
+PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
+RANLIB = @RANLIB@
+RST2HTML = @RST2HTML@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+UPDATECHECKER_CFLAGS = @UPDATECHECKER_CFLAGS@
+UPDATECHECKER_LIBS = @UPDATECHECKER_LIBS@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+VTE_CFLAGS = @VTE_CFLAGS@
+VTE_LIBS = @VTE_LIBS@
+WEBHELPER_CFLAGS = @WEBHELPER_CFLAGS@
+WEBHELPER_LIBS = @WEBHELPER_LIBS@
+XGETTEXT = @XGETTEXT@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+geanypluginsdir = @geanypluginsdir@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+plugindocdir = $(docdir)/$(plugin)
+htmldocdir = $(plugindocdir)
+plugindatadir = $(pkgdatadir)/$(plugin)
+pluginlibdir = $(pkglibdir)/$(plugin)
+examplesdir = $(plugindatadir)
+AUXFILES = \
+	README \
+	ChangeLog \
+	NEWS \
+	COPYING \
+	AUTHORS
+
+plugin = debugger
+FILES = \
+	continue.png \
+	restart.gif \
+	run.gif \
+	run_to_cursor.gif \
+	step_in.png \
+	step_out.gif \
+	step_over.gif \
+	stop.gif \
+	tab.gif \
+	tabs.gif
+
+EXTRA_DIST = $(FILES)
+ at ENABLE_DEBUGGER_TRUE@plugindata_DATA = $(FILES)
+ at ENABLE_DEBUGGER_FALSE@EXTRA_DATA = $(FILES)
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am $(top_srcdir)/build/vars.docs.mk $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign debugger/img/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --foreign debugger/img/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure:  $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+install-plugindataDATA: $(plugindata_DATA)
+	@$(NORMAL_INSTALL)
+	test -z "$(plugindatadir)" || $(MKDIR_P) "$(DESTDIR)$(plugindatadir)"
+	@list='$(plugindata_DATA)'; test -n "$(plugindatadir)" || list=; \
+	for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(plugindatadir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(plugindatadir)" || exit $$?; \
+	done
+
+uninstall-plugindataDATA:
+	@$(NORMAL_UNINSTALL)
+	@list='$(plugindata_DATA)'; test -n "$(plugindatadir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	test -n "$$files" || exit 0; \
+	echo " ( cd '$(DESTDIR)$(plugindatadir)' && rm -f" $$files ")"; \
+	cd "$(DESTDIR)$(plugindatadir)" && rm -f $$files
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  dist_files=`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  if test -d $$d/$$file; then \
+	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+	  else \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+check: check-am
+all-am: Makefile $(DATA)
+installdirs:
+	for dir in "$(DESTDIR)$(plugindatadir)"; do \
+	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+	done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	  `test -z '$(STRIP)' || \
+	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+	-rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-plugindataDATA
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-plugindataDATA
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am check check-am clean clean-generic clean-libtool \
+	distclean distclean-generic distclean-libtool distdir dvi \
+	dvi-am html html-am info info-am install install-am \
+	install-data install-data-am install-dvi install-dvi-am \
+	install-exec install-exec-am install-html install-html-am \
+	install-info install-info-am install-man install-pdf \
+	install-pdf-am install-plugindataDATA install-ps install-ps-am \
+	install-strip installcheck installcheck-am installdirs \
+	maintainer-clean maintainer-clean-generic mostlyclean \
+	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+	uninstall uninstall-am uninstall-plugindataDATA
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:

Added: trunk/geany-plugins/debugger/img/continue.png
===================================================================
(Binary files differ)


Property changes on: trunk/geany-plugins/debugger/img/continue.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Added: trunk/geany-plugins/debugger/img/restart.gif
===================================================================
(Binary files differ)


Property changes on: trunk/geany-plugins/debugger/img/restart.gif
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Added: trunk/geany-plugins/debugger/img/run.gif
===================================================================
(Binary files differ)


Property changes on: trunk/geany-plugins/debugger/img/run.gif
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Added: trunk/geany-plugins/debugger/img/run_to_cursor.gif
===================================================================
(Binary files differ)


Property changes on: trunk/geany-plugins/debugger/img/run_to_cursor.gif
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Added: trunk/geany-plugins/debugger/img/step_in.png
===================================================================
(Binary files differ)


Property changes on: trunk/geany-plugins/debugger/img/step_in.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Added: trunk/geany-plugins/debugger/img/step_out.gif
===================================================================
(Binary files differ)


Property changes on: trunk/geany-plugins/debugger/img/step_out.gif
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Added: trunk/geany-plugins/debugger/img/step_over.gif
===================================================================
(Binary files differ)


Property changes on: trunk/geany-plugins/debugger/img/step_over.gif
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Added: trunk/geany-plugins/debugger/img/stop.gif
===================================================================
(Binary files differ)


Property changes on: trunk/geany-plugins/debugger/img/stop.gif
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Added: trunk/geany-plugins/debugger/img/tab.gif
===================================================================
(Binary files differ)


Property changes on: trunk/geany-plugins/debugger/img/tab.gif
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Added: trunk/geany-plugins/debugger/img/tabs.gif
===================================================================
(Binary files differ)


Property changes on: trunk/geany-plugins/debugger/img/tabs.gif
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Modified: trunk/geany-plugins/debugger/src/Makefile.am
===================================================================
--- trunk/geany-plugins/debugger/src/Makefile.am	2011-08-20 15:05:19 UTC (rev 2159)
+++ trunk/geany-plugins/debugger/src/Makefile.am	2011-08-22 00:10:59 UTC (rev 2160)
@@ -1,4 +1,5 @@
 include $(top_srcdir)/build/vars.build.mk
+include $(top_srcdir)/build/vars.docs.mk
 
 if ENABLE_DEBUGGER
 geanyplugins_LTLIBRARIES = debugger.la
@@ -6,6 +7,8 @@
 EXTRA_LTLIBRARIES = debugger.la
 endif
 
+plugin = debugger
+
 debugger_la_SOURCES = \
 	bptree.c     \
 	bptree.h     \
@@ -13,15 +16,21 @@
 	breakpoint.h     \
 	breakpoints.c     \
 	breakpoints.h     \
+	btnpanel.c     \
+	btnpanel.h     \
 	callbacks.c     \
 	callbacks.h     \
 	calltip.c     \
 	calltip.h     \
 	dbm_gdb.c     \
+	dconfig.h     \
+	dconfig.c     \
 	debug.c     \
 	debug.h     \
 	debug_module.c     \
 	debug_module.h     \
+	gui.h     \
+	gui.c     \
 	keys.c     \
 	keys.h     \
 	ltree.c     \
@@ -43,6 +52,6 @@
 	wtree.h
 
 debugger_la_LIBADD = $(COMMONLIBS) -lutil
-debugger_la_CFLAGS = $(AM_CFLAGS) $(VTE_CFLAGS)
+debugger_la_CFLAGS = $(AM_CFLAGS) $(VTE_CFLAGS) -DDBGPLUG_DATA_DIR=\"$(plugindatadir)\" -DPLUGIN_NAME=\"$(plugin)\"
 
 include $(top_srcdir)/build/cppcheck.mk

Modified: trunk/geany-plugins/debugger/src/bptree.c
===================================================================
--- trunk/geany-plugins/debugger/src/bptree.c	2011-08-20 15:05:19 UTC (rev 2159)
+++ trunk/geany-plugins/debugger/src/bptree.c	2011-08-22 00:10:59 UTC (rev 2160)
@@ -27,6 +27,7 @@
  * 		bptree_set... if breakpoint has been changed altered/added/removed
  */
 
+#include <stdlib.h>
 #include <memory.h>
 
 #include <gtk/gtk.h>
@@ -83,7 +84,7 @@
 void on_row_double_click(GtkTreeView *tree_view, GtkTreePath *path, GtkTreeViewColumn *column, gpointer user_data)
 {
 	GtkTreeIter iter;
-	gboolean res = gtk_tree_model_get_iter (
+	gtk_tree_model_get_iter (
 		 model,
 		 &iter,
 		 path);
@@ -111,7 +112,7 @@
 	GtkTreeIter  iter;
     GtkTreePath *tree_path = gtk_tree_path_new_from_string (path);
 
-	gboolean res = gtk_tree_model_get_iter (
+	gtk_tree_model_get_iter (
 		 model,
 		 &iter,
 		 tree_path);
@@ -147,7 +148,7 @@
 	GtkTreeIter  iter;
     GtkTreePath *tree_path = gtk_tree_path_new_from_string (path);
 
-	gboolean res = gtk_tree_model_get_iter (
+	gtk_tree_model_get_iter (
 		 model,
 		 &iter,
 		 tree_path);
@@ -182,7 +183,7 @@
 	GtkTreeIter  iter;
     GtkTreePath *tree_path = gtk_tree_path_new_from_string (path);
 
-	gboolean res = gtk_tree_model_get_iter (
+	gtk_tree_model_get_iter (
 		 model,
 		 &iter,
 		 tree_path);
@@ -280,9 +281,9 @@
 			path = gtk_tree_row_reference_get_path(reference_to_select);
 		else
 		{
-			GtkTreeIter iter;
-			gtk_tree_model_get_iter_first(model, &iter);
-			path = gtk_tree_model_get_path(model, &iter);
+			GtkTreeIter tree_iter;
+			gtk_tree_model_get_iter_first(model, &tree_iter);
+			path = gtk_tree_model_get_path(model, &tree_iter);
 		}
 		
 		/* set selection if any */

Modified: trunk/geany-plugins/debugger/src/breakpoints.c
===================================================================
--- trunk/geany-plugins/debugger/src/breakpoints.c	2011-08-20 15:05:19 UTC (rev 2159)
+++ trunk/geany-plugins/debugger/src/breakpoints.c	2011-08-22 00:10:59 UTC (rev 2160)
@@ -36,6 +36,7 @@
 #include "markers.h"
 #include "debug.h"
 #include "bptree.h"
+#include "dconfig.h"
 
 /* container for break-for-file g_tree GTree-s */
 GHashTable* files = NULL;
@@ -92,6 +93,7 @@
  * arguments:
  * 		bp - breakpoint
  */
+void handle_break_remove(breakpoint* bp, gboolean success);
 void breaks_remove_internal(breakpoint *bp)
 {
 	handle_break_remove(bp, TRUE);
@@ -107,7 +109,7 @@
 {
 	breakpoint* bp = NULL;
 	GTree* tree = NULL;
-	if (tree = (GTree*)g_hash_table_lookup(files, file))
+	if ( (tree = (GTree*)g_hash_table_lookup(files, file)) )
 		bp = g_tree_lookup(tree, GINT_TO_POINTER(line));
 
 	return bp;
@@ -484,7 +486,7 @@
 {
 	/* first look for the tree for the given file */
 	GTree *tree = NULL;
-	if (tree = g_hash_table_lookup(files, file))
+	if ( (tree = g_hash_table_lookup(files, file)) )
 	{
 		/* lookup for the break in GTree*/
 		breakpoint *bp = (breakpoint*)g_tree_lookup(tree, GINT_TO_POINTER(line_from));
@@ -509,7 +511,7 @@
 	
 	/* first look for the tree for the given file */
 	GTree *tree;
-	if (tree = g_hash_table_lookup(files, file))
+	if ( (tree = g_hash_table_lookup(files, file)) )
 	{
 		breakpoint *bp = g_tree_lookup(tree, GINT_TO_POINTER(line));
 		if (bp)
@@ -555,3 +557,21 @@
 {
 	return bptree_get_widget();
 }
+
+/*
+ * Read new breakpoints from dconfig
+ */
+void breaks_read_config()
+{
+	/* clear all breaks */
+	breaks_remove_all();
+
+	GList *list = dconfig_breaks_get();
+
+	while(list)
+	{
+		breakpoint *bp = (breakpoint*)list->data;
+		breaks_add(bp->file, bp->line, bp->condition, bp->enabled, bp->hitscount);
+		list = list->next;
+	}
+}

Modified: trunk/geany-plugins/debugger/src/breakpoints.h
===================================================================
--- trunk/geany-plugins/debugger/src/breakpoints.h	2011-08-20 15:05:19 UTC (rev 2159)
+++ trunk/geany-plugins/debugger/src/breakpoints.h	2011-08-22 00:10:59 UTC (rev 2160)
@@ -40,4 +40,5 @@
 GtkWidget*	breaks_get_widget();
 GList*			breaks_get_for_document(char* file);
 GList*			breaks_get_all();
+void			breaks_read_config();
 

Added: trunk/geany-plugins/debugger/src/btnpanel.c
===================================================================
--- trunk/geany-plugins/debugger/src/btnpanel.c	                        (rev 0)
+++ trunk/geany-plugins/debugger/src/btnpanel.c	2011-08-22 00:10:59 UTC (rev 2160)
@@ -0,0 +1,302 @@
+/*
+ *      btnpanel.c
+ *      
+ *      Copyright 2010 Alexander Petukhov <Alexander(dot)Petukhov(at)mail(dot)ru>
+ *      
+ *      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.
+ */
+
+/*
+ * 		buttons panel
+ */
+
+#include <sys/stat.h>
+
+#include "geanyplugin.h"
+extern GeanyFunctions	*geany_functions;
+extern GeanyPlugin		*geany_plugin;
+
+#include "gui.h"
+#include "breakpoint.h"
+#include "debug.h"
+#include "dconfig.h"
+#include "tpage.h"
+#include "breakpoints.h"
+#include "watch_model.h"
+#include "wtree.h"
+#include "btnpanel.h"
+
+#define CP_BUTTONS_PAD 5
+#define CONFIG_NAME ".debugger"
+
+static GtkWidget *savebtn = NULL;
+static GtkWidget *loadbtn = NULL;
+static GtkWidget *clearbtn = NULL;
+
+static GtkWidget *runbtn = NULL;
+static GtkWidget *restartbtn = NULL;
+static GtkWidget *stopbtn = NULL;
+
+static GtkWidget *stepoverbtn = NULL;
+static GtkWidget *stepinbtn = NULL;
+static GtkWidget *stepoutbtn = NULL;
+static GtkWidget *runcursorbtn = NULL;
+
+static GtkWidget *tabbtn = NULL;
+static GtkWidget *optbtn = NULL;
+
+static gboolean debugging = FALSE;
+
+/*
+ * load config button handler
+ */
+void on_config_load(GtkButton *button, gpointer user_data)
+{
+	GeanyDocument *doc = document_get_current();
+	if (!doc && !doc->real_path)
+	{
+		dialogs_show_msgbox(GTK_MESSAGE_ERROR, _("Error reading config file"));
+	}
+	else
+	{
+		gchar *folder = g_path_get_dirname(DOC_FILENAME(doc));
+		if (!dconfig_load(folder))
+		{
+			dialogs_show_msgbox(GTK_MESSAGE_ERROR, _("Error reading config file"));
+		}
+		else
+		{
+			/* update target page */
+			tpage_read_config();
+			/* breakpoints */
+			breaks_read_config();
+			/* watches */
+			wtree_read_config();
+		}
+		g_free(folder);
+	}
+}
+
+/*
+ * save config button handler
+ */
+void on_config_save(GtkButton *button, gpointer user_data)
+{
+	GeanyDocument *doc = document_get_current();
+	if (doc && doc->real_path)
+	{
+		/* open config file */
+		gchar *folder = g_path_get_dirname(DOC_FILENAME(doc));
+		if (!dconfig_save(folder))
+		{
+			dialogs_show_msgbox(GTK_MESSAGE_ERROR, _("Error saving config file"));
+		}
+		g_free(folder);
+	}
+}
+
+/*
+ * clear config values button handler
+ */
+void on_config_clear(GtkButton *button, gpointer user_data)
+{
+	/* target page */
+	tpage_clear();
+
+	/* breakpoints */
+	breaks_remove_all();
+
+	/* watches */
+	wtree_remove_all();
+}
+
+/*
+ * calls settings dialog
+ */
+void on_settings(GtkButton *button, gpointer user_data)
+{
+	plugin_show_configure(geany_plugin);
+}
+
+/*
+ * gets current file and line and calls debug function
+ */
+void on_execute_until(GtkButton *button, gpointer user_data)
+{
+	GeanyDocument *doc = document_get_current();
+	if (doc)
+	{
+		int line = sci_get_current_line(doc->editor->sci) + 1;
+		debug_execute_until(DOC_FILENAME(doc), line);
+	}
+}
+
+/*
+ * create and initialize buttons panel
+ */
+GtkWidget* btnpanel_create()
+{
+	GtkWidget *vbox = gtk_vbox_new(FALSE, CP_BUTTONS_PAD);
+	gtk_container_set_border_width (GTK_CONTAINER (vbox), 7);
+
+	GtkWidget *hbutton_box = gtk_hbox_new(FALSE, CP_BUTTONS_PAD);
+
+	runbtn = create_button("run.gif", _("Run"));
+	g_signal_connect(G_OBJECT(runbtn), "clicked", G_CALLBACK (debug_run), (gpointer)TRUE);
+
+	gtk_box_pack_start(GTK_BOX(hbutton_box), runbtn, TRUE, TRUE, 0);
+	gtk_box_pack_start(GTK_BOX(vbox), hbutton_box, FALSE, TRUE, 0);
+	
+	hbutton_box = gtk_hbox_new(TRUE, CP_BUTTONS_PAD);
+
+	restartbtn = create_button("restart.gif", _("Restart"));
+	g_signal_connect(G_OBJECT(restartbtn), "clicked", G_CALLBACK (debug_restart), (gpointer)TRUE);
+
+	stopbtn = create_button("stop.gif", _("Stop"));
+	g_signal_connect(G_OBJECT(stopbtn), "clicked", G_CALLBACK (debug_stop), (gpointer)TRUE);
+
+	gtk_box_pack_start(GTK_BOX(hbutton_box), restartbtn, FALSE, TRUE, 0);
+	gtk_box_pack_start(GTK_BOX(hbutton_box), stopbtn, FALSE, TRUE, 0);
+	gtk_box_pack_start(GTK_BOX(vbox), hbutton_box, FALSE, TRUE, 0);
+
+	hbutton_box = gtk_hbox_new(TRUE, CP_BUTTONS_PAD);
+
+	stepoverbtn = create_button("step_over.gif", _("Step over"));
+	g_signal_connect(G_OBJECT(stepoverbtn), "clicked", G_CALLBACK (debug_step_over), (gpointer)TRUE);
+
+	stepinbtn = create_button("step_in.png", _("Step into"));
+	g_signal_connect(G_OBJECT(stepinbtn), "clicked", G_CALLBACK (debug_step_into), (gpointer)TRUE);
+
+	gtk_box_pack_start(GTK_BOX(hbutton_box), stepoverbtn, FALSE, TRUE, 0);
+	gtk_box_pack_start(GTK_BOX(hbutton_box), stepinbtn, FALSE, TRUE, 0);
+	gtk_box_pack_start(GTK_BOX(vbox), hbutton_box, FALSE, TRUE, 0);
+
+	hbutton_box = gtk_hbox_new(TRUE, CP_BUTTONS_PAD);
+
+	stepoutbtn = create_button("step_out.gif", _("Step out"));
+	g_signal_connect(G_OBJECT(stepoutbtn), "clicked", G_CALLBACK (debug_step_out), (gpointer)TRUE);
+
+	runcursorbtn = create_button("run_to_cursor.gif", _("Run to cursor"));
+	g_signal_connect(G_OBJECT(runcursorbtn), "clicked", G_CALLBACK (on_execute_until), (gpointer)TRUE);
+
+	gtk_box_pack_start(GTK_BOX(hbutton_box), stepoutbtn, FALSE, TRUE, 0);
+	gtk_box_pack_start(GTK_BOX(hbutton_box), runcursorbtn, FALSE, TRUE, 0);
+	gtk_box_pack_start(GTK_BOX(vbox), hbutton_box, FALSE, TRUE, 0);
+
+	GtkWidget *vbox_panels_buttons = gtk_vbox_new(FALSE, 0);
+	GtkWidget *vbutton_box = gtk_vbox_new(TRUE, CP_BUTTONS_PAD);
+
+	loadbtn = create_stock_button(GTK_STOCK_OPEN, _("Load settings"));
+	g_signal_connect(G_OBJECT(loadbtn), "clicked", G_CALLBACK (on_config_load), (gpointer)TRUE);
+	gtk_box_pack_start(GTK_BOX(vbutton_box), loadbtn, FALSE, TRUE, 0);
+
+	savebtn = create_stock_button(GTK_STOCK_SAVE, _("Save settings"));
+	g_signal_connect(G_OBJECT(savebtn), "clicked", G_CALLBACK (on_config_save), NULL);
+	gtk_box_pack_start(GTK_BOX(vbutton_box), savebtn, FALSE, TRUE, 0);
+	
+	clearbtn = create_stock_button(GTK_STOCK_CLEAR, _("Clear settings"));
+	g_signal_connect(G_OBJECT(clearbtn), "clicked", G_CALLBACK (on_config_clear), NULL);
+	gtk_box_pack_start(GTK_BOX(vbutton_box), clearbtn, FALSE, FALSE, 0);
+
+	gtk_box_pack_start(GTK_BOX(vbox_panels_buttons), vbutton_box, TRUE, FALSE, 0);
+	gtk_box_pack_start(GTK_BOX(vbox), vbox_panels_buttons, TRUE, FALSE, 0);
+
+	vbutton_box = gtk_vbox_new(TRUE, CP_BUTTONS_PAD);
+	tabbtn = create_toggle_button("tabs.gif", _("Tabs"));
+	gtk_box_pack_start(GTK_BOX(vbox), tabbtn, FALSE, FALSE, 0);
+
+	optbtn = create_stock_button(GTK_STOCK_PREFERENCES, "Настройки");
+	g_signal_connect(G_OBJECT(optbtn), "clicked", G_CALLBACK (on_settings), NULL);
+	gtk_box_pack_start(GTK_BOX(vbox), optbtn, FALSE, FALSE, 0);
+
+	btnpanel_set_debug_state(DBS_IDLE);
+
+	return vbox;
+}
+
+/*
+ * disable load/save config buttons on document close
+ */
+void btnpanel_on_document_close()
+{
+	gtk_widget_set_sensitive(loadbtn, FALSE);
+	gtk_widget_set_sensitive(savebtn, FALSE);
+}
+
+/*
+ * enable load/save config buttons on document activate
+ * if page is not readonly and have config
+ */
+void btnpanel_on_document_activate(GeanyDocument *doc)
+{
+	if (debugging)
+		return;
+	
+	if (!doc || !doc->real_path)
+	{
+		btnpanel_on_document_close();
+		return;
+	}
+
+	gtk_widget_set_sensitive(savebtn, TRUE);
+	
+	gchar *dirname = g_path_get_dirname(DOC_FILENAME(doc));
+	gchar *config = g_build_path(G_DIR_SEPARATOR_S, dirname, CONFIG_NAME, NULL);
+	struct stat st;
+	gtk_widget_set_sensitive(loadbtn, !stat(config, &st));
+	
+	g_free(config);
+}
+
+/*
+ * set buttons sensitive based on whether it is a config file
+ * in the current folder
+ */
+void btnpanel_set_have_config(gboolean haveconfig)
+{
+	gtk_widget_set_sensitive(loadbtn, haveconfig);
+}
+
+/*
+ * set buttons sensitive based on debugger state
+ */
+void btnpanel_set_debug_state(enum dbs state)
+{
+	debugging = (DBS_IDLE != state);
+
+	if (DBS_STOPPED == state)
+	{
+		set_button_image(runbtn, "continue.png");
+		gtk_widget_set_tooltip_text(runbtn, _("Continue"));
+	}
+	else
+	{
+		set_button_image(runbtn, "run.gif");		
+		gtk_widget_set_tooltip_text(runbtn, _("Run"));
+	}
+	
+	gtk_widget_set_sensitive(runbtn, DBS_IDLE == state || DBS_STOPPED == state);
+	gtk_widget_set_sensitive(restartbtn, DBS_IDLE != state);
+	gtk_widget_set_sensitive(stopbtn, DBS_IDLE != state);
+	
+	gtk_widget_set_sensitive(stepoverbtn, DBS_STOPPED == state);
+	gtk_widget_set_sensitive(stepinbtn, DBS_STOPPED == state);
+	gtk_widget_set_sensitive(stepoutbtn, DBS_STOPPED == state);
+	gtk_widget_set_sensitive(runcursorbtn, DBS_STOPPED == state);
+
+	gtk_widget_set_sensitive(loadbtn, DBS_IDLE == state);
+	gtk_widget_set_sensitive(clearbtn, DBS_IDLE == state);
+}

Added: trunk/geany-plugins/debugger/src/btnpanel.h
===================================================================
--- trunk/geany-plugins/debugger/src/btnpanel.h	                        (rev 0)
+++ trunk/geany-plugins/debugger/src/btnpanel.h	2011-08-22 00:10:59 UTC (rev 2160)
@@ -0,0 +1,27 @@
+/*
+ *      btnpanel.h
+ *      
+ *      Copyright 2010 Alexander Petukhov <Alexander(dot)Petukhov(at)mail(dot)ru>
+ *      
+ *      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.
+ */
+
+GtkWidget*	btnpanel_create();
+void 			btnpanel_on_document_close();
+void			btnpanel_on_document_activate(GeanyDocument *doc);
+
+void			btnpanel_set_have_config(gboolean haveconfig);
+void			btnpanel_set_debug_state(enum dbs state);

Modified: trunk/geany-plugins/debugger/src/callbacks.c
===================================================================
--- trunk/geany-plugins/debugger/src/callbacks.c	2011-08-20 15:05:19 UTC (rev 2159)
+++ trunk/geany-plugins/debugger/src/callbacks.c	2011-08-22 00:10:59 UTC (rev 2160)
@@ -36,6 +36,8 @@
 #include "markers.h"
 #include "utils.h"
 #include "bptree.h"
+#include "btnpanel.h"
+#include "dconfig.h"
 
 extern GeanyFunctions *geany_functions;
 
@@ -50,7 +52,7 @@
  */
 void on_document_close(GObject *obj, GeanyDocument *doc, gpointer user_data)
 {
-	tpage_on_document_close();
+	btnpanel_on_document_close();
 }
 
 /*
@@ -58,7 +60,7 @@
  */
 void on_document_save(GObject *obj, GeanyDocument *doc, gpointer user_data)
 {
-	tpage_on_document_activate(doc);
+	btnpanel_on_document_activate(doc);
 }
 
 /*
@@ -73,7 +75,7 @@
  */
 void on_document_activate(GObject *obj, GeanyDocument *doc, gpointer user_data)
 {
-	tpage_on_document_activate(doc);
+	btnpanel_on_document_activate(doc);
 }
 
 /*
@@ -96,10 +98,12 @@
 	scintilla_send_message(doc->editor->sci, SCI_SETYCARETPOLICY, CARET_SLOP | CARET_JUMPS | CARET_EVEN , 3);
 	
 	/* check if current path contains config file */
-	tpage_on_document_activate(doc);
+	gchar *folder = g_path_get_dirname(DOC_FILENAME(doc));
+	btnpanel_set_have_config(dconfig_is_found_at(folder));
+	g_free(folder);
 
 	GList *breaks;
-	if (breaks = breaks_get_for_document(file))
+	if ( (breaks = breaks_get_for_document(file)) )
 	{
 		GList *iter = breaks;
 		while (iter)
@@ -264,6 +268,9 @@
 		case KEY_STOP:
 			debug_stop();
 			break;
+		case KEY_RESTART:
+			debug_restart();
+			break;
 		case KEY_STEP_OVER:
 			debug_step_over();
 			break;

Modified: trunk/geany-plugins/debugger/src/dbm_gdb.c
===================================================================
--- trunk/geany-plugins/debugger/src/dbm_gdb.c	2011-08-20 15:05:19 UTC (rev 2159)
+++ trunk/geany-plugins/debugger/src/dbm_gdb.c	2011-08-22 00:10:59 UTC (rev 2160)
@@ -26,6 +26,10 @@
 #include <string.h>
 #include <stdlib.h>
 #include <poll.h>
+#include <ctype.h>
+#include <wctype.h>
+#include <unistd.h>
+
 #include <gtk/gtk.h>
 
 #include "breakpoint.h"
@@ -66,7 +70,7 @@
 dbg_callbacks* dbg_cbs;
 
 /* GDB command line arguments*/
-static gchar *gdb_args[] = { "gdb", "-i=mi", NULL };
+static const gchar *gdb_args[] = { "gdb", "-i=mi", NULL };
 
 /* GDB pid*/
 static GPid gdb_pid = 0;
@@ -130,7 +134,7 @@
  */
 void colorize_message(gchar *message)
 {
-	gchar *color;
+	const gchar *color;
 	if ('=' == *message)
 		color = "rose";
 	else if ('^' == *message)
@@ -228,7 +232,6 @@
 	while(poll(&pfd, 1, 100))
 	{
 		gchar *line = NULL;
-		GIOStatus st;
 		gsize terminator;
 		GError *err = NULL;
 
@@ -278,7 +281,7 @@
 	{
 		/* asyncronous record found */
 		char *record = NULL;
-		if (record = strchr(line, ','))
+		if ( (record = strchr(line, ',')) )
 		{
 			*record = '\0';
 			record++;
@@ -380,7 +383,7 @@
  * connects reader to output channel and exits
  * after execution
  */ 
-void exec_async_command(gchar* command)
+void exec_async_command(const gchar* command)
 {
 #ifdef DEBUG_OUTPUT
 	dbg_cbs->send_message(command, "red");
@@ -419,7 +422,7 @@
  * i.e. reading output right
  * after execution
  */ 
-result_class exec_sync_command(gchar* command, gboolean wait4prompt, gchar** command_record)
+result_class exec_sync_command(const gchar* command, gboolean wait4prompt, gchar** command_record)
 {
 
 #ifdef DEBUG_OUTPUT
@@ -523,8 +526,7 @@
 	/* spawn GDB */
 	const gchar *exclude[] = { "LANG", NULL };
 	gchar **gdb_env = utils_copy_environment(exclude, "LANG", "C", NULL);
-	const gchar *env_lang = g_getenv("LANG");
-	if (!g_spawn_async_with_pipes(NULL, gdb_args, gdb_env,
+	if (!g_spawn_async_with_pipes(NULL, (gchar**)gdb_args, gdb_env,
 				     GDB_SPAWN_FLAGS, NULL,
 				     NULL, &gdb_pid, &gdb_in, &gdb_out, NULL, &err))
 	{
@@ -655,7 +657,7 @@
 	GList *iter = start_messages;
 	while (iter)
 	{
-		dbg_cbs->send_message((gchar*)iter->data, "grey");
+		dbg_cbs->send_message((const gchar*)iter->data, "grey");
 		iter = iter->next;
 	}
 	free_start_messages();
@@ -664,6 +666,15 @@
 }
 
 /*
+ * starts debugging
+ */
+void restart(char* terminal_device)
+{
+	dbg_cbs->clear_messages();
+	exec_async_command("-exec-run &");
+}
+	
+/*
  * stops GDB
  */
 void stop()
@@ -714,6 +725,41 @@
 }
 
 /*
+ * gets breakpoint number by file and line
+ */
+int get_break_number(char* file, int line)
+{
+	gchar* record;
+	exec_sync_command("-break-list", TRUE, &record);
+	
+	gchar* bstart = record;
+	while ( (bstart = strstr(bstart, "bkpt=")) )
+	{
+		bstart += strlen("bkpt={number=\"");
+		*strchr(bstart, '\"') = '\0';
+		int num = atoi(bstart);
+		
+		bstart += strlen(bstart) + 1;
+		bstart = strstr(bstart, "original-location=\"") + strlen("original-location=\"");
+		*strchr(bstart, ':') = '\0';
+		gchar *fname = bstart;
+		
+		bstart += strlen(bstart) + 1;
+		*strchr(bstart, '\"') = '\0';
+		int bline = atoi(bstart);
+		
+		if (!strcmp(fname, file) && bline == line)
+			return num;
+		
+		bstart += strlen(bstart) + 1;
+	} 
+	
+	free(record);
+	
+	return -1;
+}
+
+/*
  * set breakpoint
  */
 gboolean set_break(breakpoint* bp, break_set_activity bsa)
@@ -784,41 +830,6 @@
 }
 
 /*
- * gets breakpoint number by file and line
- */
-int get_break_number(char* file, int line)
-{
-	gchar* record;
-	result_class rc = exec_sync_command("-break-list", TRUE, &record);
-	
-	gchar* bstart = record;
-	while (bstart = strstr(bstart, "bkpt="))
-	{
-		bstart += strlen("bkpt={number=\"");
-		*strchr(bstart, '\"') = '\0';
-		int num = atoi(bstart);
-		
-		bstart += strlen(bstart) + 1;
-		bstart = strstr(bstart, "original-location=\"") + strlen("original-location=\"");
-		*strchr(bstart, ':') = '\0';
-		gchar *fname = bstart;
-		
-		bstart += strlen(bstart) + 1;
-		*strchr(bstart, '\"') = '\0';
-		int bline = atoi(bstart);
-		
-		if (!strcmp(fname, file) && bline == line)
-			return num;
-		
-		bstart += strlen(bstart) + 1;
-	} 
-	
-	free(record);
-	
-	return -1;
-}
-
-/*
  * removes breakpoint
  */
 gboolean remove_break(breakpoint* bp)
@@ -933,7 +944,7 @@
 	GString *dest = g_string_new("");
 	
 	gchar *slash;
-	while (slash = strstr(src, "\\x"))
+	while ( (slash = strstr(src, "\\x")) )
 	{
 		/* append what has been missed
 		unescaping it in advance */
@@ -1066,12 +1077,9 @@
  */
 void get_variables (GList *vars)
 {
-	GList *variables;
-	
 	while (vars)
 	{
 		gchar command[1000];
-		result_class rc;
 		
 		variable *var = (variable*)vars->data;
 
@@ -1136,7 +1144,7 @@
 	gchar *record = NULL;
 	exec_sync_command("-file-list-exec-source-files", TRUE, &record);
 	gchar *pos = record;
-	while (pos = strstr(pos, "fullname=\""))
+	while ( (pos = strstr(pos, "fullname=\"")) )
 	{
 		pos += strlen("fullname=\"");
 		*(strchr(pos, '\"')) = '\0';
@@ -1159,7 +1167,6 @@
 void update_watches()
 {
 	gchar command[1000];
-	result_class rc;
 
 	/* delete all GDB variables */
 	GList *iter = watches;
@@ -1355,7 +1362,7 @@
 	if (RC_DONE == rc)
 	{
 		pos = record;
-		while (pos = strstr(pos, "child={"))
+		while ( (pos = strstr(pos, "child={")) )
 		{
 			gchar *name, *internal;
 			
@@ -1394,7 +1401,6 @@
 variable* add_watch(gchar* expression)
 {
 	gchar command[1000];
-	result_class rc;
 
 	variable *var = variable_new(expression);
 	watches = g_list_append(watches, var);

Added: trunk/geany-plugins/debugger/src/dconfig.c
===================================================================
--- trunk/geany-plugins/debugger/src/dconfig.c	                        (rev 0)
+++ trunk/geany-plugins/debugger/src/dconfig.c	2011-08-22 00:10:59 UTC (rev 2160)
@@ -0,0 +1,388 @@
+/*
+ *
+ *		dconfig.c
+ *      
+ *      Copyright 2010 Alexander Petukhov <Alexander(dot)Petukhov(at)mail(dot)ru>
+ *      
+ *      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.
+ */
+
+ /*
+ *		Working with debugger configs.
+ */
+
+#include <sys/stat.h>
+
+#include "geanyplugin.h"
+extern GeanyFunctions	*geany_functions;
+extern GeanyPlugin		*geany_plugin;
+
+#include "dconfig.h"
+#include "breakpoint.h"
+#include "debug.h"
+#include "watch_model.h"
+#include "wtree.h"
+#include "breakpoints.h"
+#include "tpage.h"
+
+#define CONFIG_NAME ".debugger"
+
+/* config file markers */
+#define ENVIRONMENT_MARKER	"[ENV]"
+#define BREAKPOINTS_MARKER	"[BREAK]"
+#define WATCH_MARKER		"[WATCH]"
+
+/* maximus config file line length */
+#define MAXLINE 1000
+
+static gchar	*target = NULL;
+static int		module = -1; 
+static gchar	*args = NULL;
+static GList	*env = NULL;
+static GList	*breaks = NULL;
+static GList	*watches = NULL;
+
+/*
+ * reads line from a file
+ */
+int readline(FILE *file, gchar *buffer, int buffersize)
+{
+	gchar c;
+	int read = 0;
+	while (buffersize && fread(&c, 1, 1, file) && '\n' != c)
+	{
+		buffer[read++] = c;
+		buffersize--;
+	}
+	buffer[read] = '\0';
+
+	return read;
+} 
+
+/*
+ * checks whether a config fileis founs in the folder
+ */
+gboolean 	dconfig_is_found_at(gchar *folder)
+{
+	gchar *config = g_build_path(G_DIR_SEPARATOR_S, folder, CONFIG_NAME, NULL);
+	gboolean res = g_file_test(config, G_FILE_TEST_EXISTS | G_FILE_TEST_IS_REGULAR);
+	g_free(config);
+
+	return res;
+}
+
+/*
+ * loads config from a folder
+ */
+gboolean dconfig_load(gchar *folder)
+{
+	dconfig_clear();
+	
+	gchar *path = g_build_path(G_DIR_SEPARATOR_S, folder, CONFIG_NAME, NULL);
+	FILE *file = fopen(path, "r");
+	if (!file)
+	{
+		return FALSE;
+	}
+
+	/* target */
+	gchar buffer[FILENAME_MAX];
+	if(!readline(file, buffer, FILENAME_MAX - 1))
+	{
+		memset(target, 0, FILENAME_MAX * sizeof(gchar));
+	}
+	target = g_strdup(buffer);
+
+	/* debugger */
+	gchar debugger[FILENAME_MAX];
+	if(readline(file, debugger, FILENAME_MAX - 1))
+	{
+		module = debug_get_module_index(debugger);
+		if (-1 == module)
+		{
+			module = 0;
+		}
+	}
+		
+	/* arguments */
+	if(!readline(file, buffer, FILENAME_MAX - 1))
+	{
+		memset(buffer, 0, FILENAME_MAX * sizeof(gchar));
+	}
+	args = g_strdup(buffer);
+
+	/* breakpoints and environment variables */
+	gchar line[MAXLINE];
+	while (readline(file, line, MAXLINE))
+	{
+		if (!strcmp(line, BREAKPOINTS_MARKER))
+		{
+			/* file */
+			gchar _path[FILENAME_MAX];
+			readline(file, _path, MAXLINE);
+			
+			/* line */
+			int nline;
+			readline(file, line, MAXLINE);
+			sscanf(line, "%i", &nline);
+			
+			/* hitscount */
+			int hitscount;
+			readline(file, line, MAXLINE);
+			sscanf(line, "%d", &hitscount);
+
+			/* condition */
+			gchar condition[MAXLINE];
+			readline(file, condition, MAXLINE);
+
+			/* enabled */
+			gboolean enabled;
+			readline(file, line, MAXLINE);
+			sscanf(line, "%d", &enabled);
+			
+			/* check whether file is available */
+			struct stat st;
+			if(!stat(_path, &st))
+			{
+				breakpoint *bp = break_new_full(_path, nline, condition, enabled, hitscount);
+				breaks = g_list_append(breaks, bp);
+			}
+		}
+		else if (!strcmp(line, ENVIRONMENT_MARKER))
+		{
+			gchar name[MAXLINE], value[1000];
+			if(readline(file, name, MAXLINE) && readline(file, value, MAXLINE))
+			{
+				env = g_list_append(env, name);
+				env = g_list_append(env, value);
+			}
+		}
+		else if (!strcmp(line, WATCH_MARKER))
+		{
+			gchar watch[MAXLINE];
+			if(readline(file, watch, MAXLINE))
+			{
+				watches = g_list_append(watches, g_strdup(watch));
+			}
+		}
+	}
+	
+	return TRUE;
+}
+
+/*
+ * saves config to a folder
+ */
+gboolean dconfig_save(gchar *folder)
+{
+	/* open config file */
+	gchar *config_file = g_build_path(G_DIR_SEPARATOR_S, folder, CONFIG_NAME, NULL);		
+
+	FILE *config = fopen(config_file, "w");
+	if (config)
+	{
+		/* get target */
+		const gchar *_target = tpage_get_target();
+		fprintf(config, "%s\n", _target);
+		
+		/* debugger type */
+		gchar *debugger = tpage_get_debugger();
+		fprintf(config, "%s\n", debugger);
+		
+		/* get command line arguments */
+		gchar *_args = tpage_get_commandline();
+		fprintf(config, "%s\n", _args);
+		g_free(_args);
+
+		/* environment */
+		GList *_env = tpage_get_environment();
+		GList *iter = _env;
+		
+		while(iter)
+		{
+			gchar *name = (gchar*)iter->data;
+			iter = iter->next;
+			gchar *value = (gchar*)iter->data;
+
+			fprintf(config, "%s\n", ENVIRONMENT_MARKER);
+			fprintf(config, "%s\n%s\n", name, value);
+
+			iter = iter->next;
+		}
+		
+		/* breakpoints */
+		GList *_breaks = breaks_get_all();
+		GList *biter = _breaks;
+		while (biter)
+		{
+			breakpoint *bp = (breakpoint*)biter->data;
+			
+			fprintf(config, "%s\n", BREAKPOINTS_MARKER);
+			fprintf(config, "%s\n%i\n%i\n%s\n%i\n",
+				bp->file, bp->line, bp->hitscount, bp->condition, bp->enabled);
+					
+			biter = biter->next;
+		}
+		g_list_free(_breaks);
+		_breaks = NULL;
+		
+		/* watches */
+		GList *cur_watches = wtree_get_watches();
+		biter = cur_watches;
+		while (biter)
+		{
+			gchar *watch = (gchar*)biter->data;
+			
+			fprintf(config, "%s\n", WATCH_MARKER);
+			fprintf(config, "%s\n", watch);
+					
+			biter = biter->next;
+		}
+		g_list_foreach(cur_watches, (GFunc)g_free, NULL);
+		g_list_free(cur_watches);
+		cur_watches = NULL;
+
+		fclose(config);
+	}
+
+	g_free(config_file);
+
+	return (gboolean)config;
+}
+
+/*
+ * gets target
+ */
+gchar* dconfig_target_get()
+{
+	return target;
+}
+
+/*
+ * sets target
+ */
+void dconfig_target_set(gchar *newvalue)
+{
+	if (target)
+	{
+		g_free(target);
+	}
+	target = newvalue;
+}
+
+/*
+ * gets debugger module index
+ */
+int dconfig_module_get()
+{
+	return module;
+}
+
+/*
+ * sets debugger module index
+ */
+void dconfig_module_set(int newvalue)
+{
+	module = newvalue;
+}
+
+/*
+ * gets command line arguments
+ */
+gchar* dconfig_args_get()
+{
+	return args;
+}
+
+/*
+ * sets command line arguments
+ */
+void dconfig_args_set(gchar *newvalue)
+{
+	if (args)
+	{
+		g_free(args);
+	}
+	args = newvalue;
+}
+
+/*
+ * gets environment variables
+ */
+GList* dconfig_env_get()
+{
+	return env;
+}
+
+/*
+ * removes all environment variables
+ */
+void dconfig_env_clear()
+{
+	g_list_foreach(env, (GFunc)g_free, NULL);
+	g_list_free(env);
+	env = NULL;
+}
+
+/*
+ * gets breakpoints
+ */
+GList*	dconfig_breaks_get()
+{
+	return breaks;
+}
+
+/*
+ * clears breakpoints
+ */
+void dconfig_breaks_clear()
+{
+	g_list_foreach(breaks, (GFunc)g_free, NULL);
+	g_list_free(breaks);
+	breaks = NULL;
+}
+
+/*
+ * gets watches
+ */
+GList* dconfig_watches_get()
+{
+	return watches;
+}
+
+/*
+ * clears watches
+ */
+void dconfig_watches_clear()
+{
+	g_list_foreach(watches, (GFunc)g_free, NULL);
+	g_list_free(watches);
+	watches = NULL;
+}
+
+/*
+ * clears all config values
+ */
+void dconfig_clear()
+{
+	dconfig_target_set(NULL);
+	dconfig_module_set(0);
+	dconfig_args_set(NULL);
+	dconfig_env_clear();
+
+	dconfig_breaks_clear();
+	dconfig_watches_clear();
+}

Added: trunk/geany-plugins/debugger/src/dconfig.h
===================================================================
--- trunk/geany-plugins/debugger/src/dconfig.h	                        (rev 0)
+++ trunk/geany-plugins/debugger/src/dconfig.h	2011-08-22 00:10:59 UTC (rev 2160)
@@ -0,0 +1,34 @@
+/*
+ *		dconfig.h
+ *      
+ *      Copyright 2010 Alexander Petukhov <Alexander(dot)Petukhov(at)mail(dot)ru>
+ *      
+ *      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.
+ */
+ 
+gboolean 	dconfig_is_found_at(gchar *folder);
+gboolean 	dconfig_load(gchar *folder);
+gboolean	dconfig_save(gchar *folder);
+void		dconfig_clear();
+
+gchar*	dconfig_target_get();
+int			dconfig_module_get();
+gchar*	dconfig_args_get();
+GList*		dconfig_env_get();
+GList*		dconfig_breaks_get();
+GList*		dconfig_watches_get();
+
+

Modified: trunk/geany-plugins/debugger/src/debug.c
===================================================================
--- trunk/geany-plugins/debugger/src/debug.c	2011-08-20 15:05:19 UTC (rev 2159)
+++ trunk/geany-plugins/debugger/src/debug.c	2011-08-22 00:10:59 UTC (rev 2160)
@@ -30,7 +30,11 @@
  */
 
 #include <stdio.h>
+
 #include <stdlib.h>
+int unlockpt(int fildes);
+int grantpt(int fd);
+
 #include <string.h>
 #include <unistd.h>
 #include <pty.h>
@@ -53,6 +57,8 @@
 #include "ltree.h"
 #include "tpage.h"
 #include "calltip.h"
+#include "bptree.h"
+#include "btnpanel.h"
 
 /*
  *  calltip size  
@@ -62,7 +68,7 @@
 
 /* module description structure (name/module pointer) */
 typedef struct _module_description {
-	gchar *title;
+	const gchar *title;
 	dbg_module *module;
 } module_description;
 
@@ -92,6 +98,11 @@
  */
 gboolean exit_pending = FALSE;
 
+/* flag to set when debug restart is requested while debugger is running.
+ * Then this flag is set to TRUE, and debug_request_interrupt function is called
+ */
+gboolean restart_pending = FALSE;
+
 /* debug terminal PTY master/slave file descriptors */
 int pty_master, pty_slave;
 
@@ -200,8 +211,8 @@
 {
 	/* get iterator to the changed row */
 	GtkTreeIter  iter;
-    GtkTreePath *tree_path = gtk_tree_path_new_from_string (path);
-	gboolean res = gtk_tree_model_get_iter (
+	GtkTreePath *tree_path = gtk_tree_path_new_from_string (path);
+	gtk_tree_model_get_iter (
 		 gtk_tree_view_get_model(GTK_TREE_VIEW(wtree)),
 		 &iter,
 		 tree_path);
@@ -257,11 +268,11 @@
 		/* if new watch has been added - set selection to the new created row */
 		if (is_empty_row)
 		{
-			GtkTreePath *path = gtk_tree_model_get_path(wmodel, &newiter);
+			GtkTreePath *_path = gtk_tree_model_get_path(wmodel, &newiter);
 			GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(wtree));
 			gtk_tree_selection_unselect_all(selection);
-			gtk_tree_selection_select_path(selection, path);
-			gtk_tree_path_free(path);
+			gtk_tree_selection_select_path(selection, _path);
+			gtk_tree_path_free(_path);
 		}
 	}
 	
@@ -276,7 +287,7 @@
  * text has been dragged into the watch tree view
  */
 static void on_watch_dragged_callback(GtkWidget *wgt, GdkDragContext *context, int x, int y,
-	GtkSelectionData *seldata, guint info, guint time,
+	GtkSelectionData *seldata, guint info, guint _time,
     gpointer userdata)
 {
 	/* string that is dragged */
@@ -582,6 +593,9 @@
 
 	/* disable widgets */
 	enable_sensitive_widgets(FALSE);
+
+	/* update buttons panel state */
+	btnpanel_set_debug_state(debug_state);
 }
 
 
@@ -593,6 +607,12 @@
 	/* update debug state */
 	debug_state = DBS_STOPPED;
 
+	/* update buttons panel state */
+	if (!interrupt_data)
+	{
+		btnpanel_set_debug_state(debug_state);
+	}
+
 	/* clear calltips cache */
 	g_hash_table_remove_all(calltips);
 
@@ -604,6 +624,15 @@
 		exit_pending = FALSE;
 		return;
 	}
+
+	/* if the stop was requested for asyncronous exitig -
+	 * stop debug module and exit */
+	if (restart_pending)
+	{
+		active_module->restart();
+		restart_pending = FALSE;
+		return;
+	}
 	
 	/* check for async activities pending */
 	if (interrupt_data)
@@ -770,12 +799,15 @@
 
 	/* update debug state */
 	debug_state = DBS_IDLE;
+
+	/* update buttons panel state */
+	btnpanel_set_debug_state(debug_state);
 }
 
 /* 
  * called from debugger module to show a message in  debugger messages pane 
  */
-static void on_debugger_message (gchar* message, gchar *color)
+static void on_debugger_message (const gchar* message, const gchar *color)
 {
 	gchar *msg = g_strdup_printf("%s\n", message);
 
@@ -791,6 +823,18 @@
 }
 
 /* 
+ * called from debugger module to clear messages tab 
+ */
+static void on_debugger_messages_clear ()
+{
+	/* clear debug messages window */
+	GtkTextIter start, end;
+	GtkTextBuffer *buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(debugger_messages_textview));
+	gtk_text_buffer_get_bounds(buffer, &start, &end);
+	gtk_text_buffer_delete(buffer, &start, &end);
+}
+
+/* 
  * called from debugger module to show an error message box 
  */
 static void on_debugger_error (gchar* message)
@@ -804,6 +848,7 @@
 	on_debugger_stopped,
 	on_debugger_exited,
 	on_debugger_message,
+	on_debugger_messages_clear,
 	on_debugger_error,
 };
 
@@ -881,9 +926,9 @@
 	vte_terminal_set_pty(VTE_TERMINAL(terminal), pty_master);
 	GtkWidget *scrollbar = gtk_vscrollbar_new(GTK_ADJUSTMENT(VTE_TERMINAL(terminal)->adjustment));
 	GTK_WIDGET_UNSET_FLAGS(scrollbar, GTK_CAN_FOCUS);
-	GtkWidget *frame = gtk_frame_new(NULL);
+	GtkWidget *_frame = gtk_frame_new(NULL);
 	GtkWidget *hbox = gtk_hbox_new(FALSE, 0);
-	gtk_container_add(GTK_CONTAINER(frame), hbox);
+	gtk_container_add(GTK_CONTAINER(_frame), hbox);
 	gtk_box_pack_start(GTK_BOX(hbox), terminal, TRUE, TRUE, 0);
 	gtk_box_pack_start(GTK_BOX(hbox), scrollbar, FALSE, FALSE, 0);
 	/* set the default widget size first to prevent VTE expanding too much,
@@ -897,7 +942,7 @@
 	gchar *font = utils_get_setting_string(config, "VTE", "font", "Monospace 10");
 	vte_terminal_set_font_from_string (VTE_TERMINAL(terminal), font);	
 	gtk_notebook_append_page(GTK_NOTEBOOK(debug_notebook),
-		frame,
+		_frame,
 		gtk_label_new(_("Debug terminal")));
 		
 	/* debug messages page */
@@ -971,12 +1016,12 @@
  */
 int debug_get_module_index(gchar *modulename)
 {
-	int index = 0;
-	while (modules[index].title)
+	int _index = 0;
+	while (modules[_index].title)
 	{
-		if (!strcmp(modules[index].title, modulename))
-			return index;
-		index++;
+		if (!strcmp(modules[_index].title, modulename))
+			return _index;
+		_index++;
 	}
 
 	return -1;
@@ -991,7 +1036,7 @@
 	module_description *desc = modules;
 	while (desc->title)
 	{
-		mods = g_list_append(mods, desc->title);
+		mods = g_list_append(mods, (gpointer)desc->title);
 		desc++;
 	}
 	
@@ -1097,6 +1142,25 @@
 }
 
 /*
+ * restarts debug process
+ */
+void debug_restart()
+{
+	if (DBS_STOPPED == debug_state)
+	{
+		/* stop instantly if not running */
+		active_module->restart();
+		debug_state = DBS_RUN_REQUESTED;
+	}
+	else if (DBS_IDLE != debug_state)
+	{
+		/* if running - request interrupt */
+		restart_pending = TRUE;
+		active_module->request_interrupt();	
+	}
+}
+
+/*
  * stops debug process
  */
 void debug_stop()

Modified: trunk/geany-plugins/debugger/src/debug.h
===================================================================
--- trunk/geany-plugins/debugger/src/debug.h	2011-08-20 15:05:19 UTC (rev 2159)
+++ trunk/geany-plugins/debugger/src/debug.h	2011-08-22 00:10:59 UTC (rev 2160)
@@ -56,4 +56,5 @@
 void			debug_on_file_open(GeanyDocument *doc);
 gchar*		debug_get_calltip_for_expression(gchar* expression);
 GList*			debug_get_stack();
+void			debug_restart();
 

Modified: trunk/geany-plugins/debugger/src/debug_module.c
===================================================================
--- trunk/geany-plugins/debugger/src/debug_module.c	2011-08-20 15:05:19 UTC (rev 2159)
+++ trunk/geany-plugins/debugger/src/debug_module.c	2011-08-22 00:10:59 UTC (rev 2160)
@@ -64,7 +64,7 @@
 }
 
 /* reset all variable fields (except name) */
-variable *variable_reset(variable *var)
+void variable_reset(variable *var)
 {
 	g_string_assign(var->internal, "");
 	g_string_assign(var->type, "");

Modified: trunk/geany-plugins/debugger/src/debug_module.h
===================================================================
--- trunk/geany-plugins/debugger/src/debug_module.h	2011-08-20 15:05:19 UTC (rev 2159)
+++ trunk/geany-plugins/debugger/src/debug_module.h	2011-08-22 00:10:59 UTC (rev 2160)
@@ -24,7 +24,8 @@
 	void (*set_run) ();
 	void (*set_stopped) ();
 	void (*set_exited) (int code);
-	void (*send_message) (gchar* message, gchar *color);
+	void (*send_message) (const gchar* message, const gchar *color);
+	void (*clear_messages) ();
 	void (*report_error) (gchar* message);
 } dbg_callbacks;
 
@@ -77,6 +78,7 @@
 	gboolean (*init) (dbg_callbacks* callbacks);
 	gboolean (*load) (char* file, char* commandline, GList* env, GList *witer);
 	void (*run) (char* terminal_device);
+	void (*restart) ();
 	void (*stop) ();
 	void (*resume) ();
 	void (*step_over) ();
@@ -111,6 +113,7 @@
 	init, \
 	load, \
 	run, \
+	restart, \
 	stop, \
 	resume, \
 	step_over, \
@@ -131,8 +134,8 @@
 	error_message, \
 	MODULE_FEATURES }
 
-void		variable_free(variable *var);
+void			variable_free(variable *var);
 variable*	variable_new(gchar *name);
 variable*	variable_new2(gchar *name, gchar *internal);
-variable*	variable_reset(variable *var);
+void			variable_reset(variable *var);
 

Added: trunk/geany-plugins/debugger/src/gui.c
===================================================================
--- trunk/geany-plugins/debugger/src/gui.c	                        (rev 0)
+++ trunk/geany-plugins/debugger/src/gui.c	2011-08-22 00:10:59 UTC (rev 2160)
@@ -0,0 +1,92 @@
+/*
+ *      gui.c
+ *      
+ *      Copyright 2010 Alexander Petukhov <Alexander(dot)Petukhov(at)mail(dot)ru>
+ *      
+ *      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.
+ */
+
+/*
+ * 		function for creating GUI elements
+ */
+
+#include <gtk/gtk.h>
+
+/*
+ * 	creates a button with an icon from file and a tooltip 
+ */
+GtkWidget* create_button(const gchar *icon, const gchar *tooltip)
+{
+	GtkWidget *btn = gtk_button_new();
+
+	gchar *path = g_build_path(G_DIR_SEPARATOR_S, DBGPLUG_DATA_DIR, icon, NULL);
+	GtkWidget *image =  gtk_image_new_from_file(path);
+	g_free(path);
+
+	gtk_widget_show(image);
+	gtk_button_set_image(GTK_BUTTON(btn), image);
+
+	gtk_widget_set_tooltip_text(btn, tooltip);
+	
+	return btn;
+}
+
+/*
+ * 	creates a button with a stock icon and a tooltip 
+ */
+GtkWidget* create_stock_button(const gchar *stockid, const gchar *tooltip)
+{
+	GtkWidget *btn = gtk_button_new();
+	GtkWidget *image = gtk_image_new_from_stock (stockid, GTK_ICON_SIZE_MENU);
+	gtk_widget_show(image);
+	gtk_button_set_image(GTK_BUTTON(btn), image);
+
+	gtk_widget_set_tooltip_text(btn, tooltip);
+	
+	return btn;
+}
+
+/*
+ * 	creates a toggle button with an icon from file and a tooltip 
+ */
+GtkWidget* create_toggle_button(const gchar *icon, const gchar *tooltip)
+{
+	GtkWidget *btn = gtk_toggle_button_new();
+
+	gchar *path = g_build_path(G_DIR_SEPARATOR_S, DBGPLUG_DATA_DIR, icon, NULL);
+	GtkWidget *image =  gtk_image_new_from_file(path);
+	g_free(path);
+
+	gtk_widget_show(image);
+	gtk_button_set_image(GTK_BUTTON(btn), image);
+
+	gtk_widget_set_tooltip_text(btn, tooltip);
+	
+	return btn;
+}
+
+/*
+ * 	sets button icon from file 
+ */
+void set_button_image(GtkWidget *btn, const gchar *icon)
+{
+	gchar *path = g_build_path(G_DIR_SEPARATOR_S, DBGPLUG_DATA_DIR, icon, NULL);
+	GtkWidget *image =  gtk_image_new_from_file(path);
+	g_free(path);
+
+	gtk_widget_show(image);
+	gtk_button_set_image(GTK_BUTTON(btn), image);
+}

Added: trunk/geany-plugins/debugger/src/gui.h
===================================================================
--- trunk/geany-plugins/debugger/src/gui.h	                        (rev 0)
+++ trunk/geany-plugins/debugger/src/gui.h	2011-08-22 00:10:59 UTC (rev 2160)
@@ -0,0 +1,26 @@
+/*
+ *      gui.c
+ *      
+ *      Copyright 2010 Alexander Petukhov <Alexander(dot)Petukhov(at)mail(dot)ru>
+ *      
+ *      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.
+ */
+
+GtkWidget*	create_button(const gchar *icon, const gchar *tooltip);
+GtkWidget*	create_stock_button(const gchar *stockid, const gchar *tooltip);
+GtkWidget*	create_toggle_button(const gchar *stockid, const gchar *tooltip);
+
+void			set_button_image(GtkWidget *btn, const gchar *icon);

Modified: trunk/geany-plugins/debugger/src/keys.c
===================================================================
--- trunk/geany-plugins/debugger/src/keys.c	2011-08-20 15:05:19 UTC (rev 2159)
+++ trunk/geany-plugins/debugger/src/keys.c	2011-08-22 00:10:59 UTC (rev 2160)
@@ -44,6 +44,7 @@
 keyinfo keys[] = {
 	{ "key_debug_run", "Run / Continue", KEY_RUN},
 	{ "key_debug_stop", "Stop", KEY_STOP},
+	{ "key_debug_restart", "Restart", KEY_RESTART},
 	{ "key_debug_step_into", "Step into", KEY_STEP_INTO},
 	{ "key_debug_step_over", "Step over", KEY_STEP_OVER},
 	{ "key_debug_step_out", "Step out", KEY_STEP_OUT},
@@ -71,19 +72,19 @@
 		keys_callback);
 
 	/* add keys */
-	int index = 0;
-	while (keys[index].key_name)
+	int _index = 0;
+	while (keys[_index].key_name)
 	{
 		keybindings_set_item(
 			key_group,
-			keys[index].key_id,
+			keys[_index].key_id,
 			NULL,
 			0,
 			0,
-			keys[index].key_name,
-			_(keys[index].key_label),
+			keys[_index].key_name,
+			_(keys[_index].key_label),
 			NULL);
-		index++;
+		_index++;
 	}
 	 	
 	return 1;

Modified: trunk/geany-plugins/debugger/src/keys.h
===================================================================
--- trunk/geany-plugins/debugger/src/keys.h	2011-08-20 15:05:19 UTC (rev 2159)
+++ trunk/geany-plugins/debugger/src/keys.h	2011-08-22 00:10:59 UTC (rev 2160)
@@ -24,6 +24,7 @@
 {
 	KEY_RUN,
 	KEY_STOP,
+	KEY_RESTART,
 	KEY_STEP_OVER,
 	KEY_STEP_INTO,
 	KEY_STEP_OUT,

Modified: trunk/geany-plugins/debugger/src/markers.c
===================================================================
--- trunk/geany-plugins/debugger/src/markers.c	2011-08-20 15:05:19 UTC (rev 2159)
+++ trunk/geany-plugins/debugger/src/markers.c	2011-08-22 00:10:59 UTC (rev 2160)
@@ -34,8 +34,8 @@
 #include "xpm/breakpoint_disabled.xpm"
 #include "xpm/breakpoint_condition.xpm"
 
-#include "xpm/arrow_1_disable.xpm"
-#include "xpm/arrow_1_yellow.xpm"
+#include "xpm/frame.xpm"
+#include "xpm/frame_current.xpm"
 
 /* markers identifiers */
 #define M_FIRST									12
@@ -84,10 +84,10 @@
 	scintilla_send_message(sci, SCI_MARKERSETALPHA, M_CI_BACKGROUND, 75);
 
 	/* currect instruction arrow */
-	scintilla_send_message(sci, SCI_MARKERDEFINEPIXMAP, M_CI_ARROW, (long)arrow_1_yellow_xpm);
+	scintilla_send_message(sci, SCI_MARKERDEFINEPIXMAP, M_CI_ARROW, (long)frame_current_xpm);
 
 	/* frame marker current */
-	scintilla_send_message(sci, SCI_MARKERDEFINEPIXMAP, M_FRAME, (long)arrow_1_disable_xpm);
+	scintilla_send_message(sci, SCI_MARKERDEFINEPIXMAP, M_FRAME, (long)frame_xpm);
 }
 
 /*

Modified: trunk/geany-plugins/debugger/src/plugin.c
===================================================================
--- trunk/geany-plugins/debugger/src/plugin.c	2011-08-20 15:05:19 UTC (rev 2159)
+++ trunk/geany-plugins/debugger/src/plugin.c	2011-08-22 00:10:59 UTC (rev 2160)
@@ -34,6 +34,9 @@
 #include "debug.h"
 #include "tpage.h"
 #include "utils.h"
+#include "btnpanel.h"
+#include "keys.h"
+#include "dconfig.h"
 
 /* These items are set by Geany before plugin_init() is called. */
 GeanyPlugin		*geany_plugin;
@@ -53,7 +56,7 @@
 	"Alexander Petukhov <devel at apetukhov.ru>")
 
 /* vbox for keeping breaks/stack/watch notebook */
-static GtkWidget *vbox = NULL;
+static GtkWidget *hbox = NULL;
 
 PluginCallback plugin_callbacks[] =
 {
@@ -76,25 +79,27 @@
 {
     main_locale_init(LOCALEDIR, GETTEXT_PACKAGE);
 
+	keys_init();
+
 	/* main box */
-	vbox = gtk_vbox_new(1, 0);
+	hbox = gtk_hbox_new(FALSE, 0);
 	
 	GtkWidget *debug_notebook = gtk_notebook_new ();
 	gtk_notebook_set_tab_pos(GTK_NOTEBOOK(debug_notebook), GTK_POS_TOP);
 
-	keys_init();
-	
 	/* add target page */
 	tpage_init();
 	gtk_notebook_append_page(GTK_NOTEBOOK(debug_notebook),
 		tpage_get_widget(),
 		gtk_label_new(_("Target")));
+	gtk_notebook_set_tab_reorderable(GTK_NOTEBOOK(debug_notebook), tpage_get_widget(), TRUE);
 	
 	/* init brekpoints */
 	breaks_init(editor_open_position);
 	gtk_notebook_append_page(GTK_NOTEBOOK(debug_notebook),
 		breaks_get_widget(),
 		gtk_label_new(_("Breakpoints")));
+	gtk_notebook_set_tab_reorderable(GTK_NOTEBOOK(debug_notebook), breaks_get_widget(), TRUE);
 		
 	/* init markers */
 	markers_init();
@@ -103,18 +108,18 @@
 	debug_init(debug_notebook);
 
 	gtk_widget_show_all(debug_notebook);
+
+	GtkWidget* vbox = btnpanel_create();
+
+	gtk_box_pack_start(GTK_BOX(hbox), debug_notebook, TRUE, TRUE, 0);
+	gtk_box_pack_start(GTK_BOX(hbox), vbox, FALSE, FALSE, 0);
 	
-	gtk_box_pack_start(GTK_BOX(vbox), debug_notebook, 1, 1, 0);
-	gtk_widget_show_all(vbox);
+	gtk_widget_show_all(hbox);
 	
 	gtk_notebook_append_page(
 		GTK_NOTEBOOK(geany->main_widgets->message_window_notebook),
-		vbox,
+		hbox,
 		gtk_label_new(_("Debug")));
-
-	/* if we have config in current path - load it */
-	if (tpage_have_config())
-		tpage_load_config();
 }
 
 
@@ -127,7 +132,7 @@
 GtkWidget *plugin_configure(GtkDialog *dialog)
 {
 	/* configuration dialog */
-	vbox = gtk_vbox_new(FALSE, 6);
+	GtkWidget *vbox = gtk_vbox_new(FALSE, 6);
 
 	gtk_widget_show_all(vbox);
 	return vbox;
@@ -153,6 +158,9 @@
 	/* destroy breaks */
 	breaks_destroy();
 
+	/* clears config */
+	dconfig_clear();
+
 	/* release other allocated strings and objects */
-	gtk_widget_destroy(vbox);
+	gtk_widget_destroy(hbox);
 }

Modified: trunk/geany-plugins/debugger/src/stree.c
===================================================================
--- trunk/geany-plugins/debugger/src/stree.c	2011-08-20 15:05:19 UTC (rev 2159)
+++ trunk/geany-plugins/debugger/src/stree.c	2011-08-22 00:10:59 UTC (rev 2160)
@@ -79,7 +79,7 @@
 		GtkTreePath *path = (GtkTreePath*)rows->data;
 		
 		GtkTreeIter iter;
-		gboolean res = gtk_tree_model_get_iter (
+		gtk_tree_model_get_iter (
 			 gtk_tree_view_get_model(GTK_TREE_VIEW(tree)),
 			 &iter,
 			 path);

Modified: trunk/geany-plugins/debugger/src/tpage.c
===================================================================
--- trunk/geany-plugins/debugger/src/tpage.c	2011-08-20 15:05:19 UTC (rev 2159)
+++ trunk/geany-plugins/debugger/src/tpage.c	2011-08-22 00:10:59 UTC (rev 2160)
@@ -39,23 +39,14 @@
 #include "watch_model.h"
 #include "wtree.h"
 #include "debug.h"
+#include "dconfig.h"
+#include "tpage.h"
 
 /* boxes margins */
 #define SPACING 5
 
-/* config file name */
-#define CONFIG_NAME ".debugger"
-
-/* config file markers */
-#define ENVIRONMENT_MARKER	"[ENV]"
-#define BREAKPOINTS_MARKER	"[BREAK]"
-#define WATCH_MARKER		"[WATCH]"
-
-/* maximus config file line length */
-#define MAXLINE 1000
-
 /* environment variables tree view columns minumum width in characters */
-#define MW_NAME		15
+#define MW_NAME	15
 #define MW_VALUE	0
 
 /* environment variables tree view columns */
@@ -72,9 +63,6 @@
 /* flag shows we entered new env variable name and now entering its value */
 gboolean entering_new_var = FALSE;
 
-/* holds config file path for the currently open folder */
-gchar current_path[FILENAME_MAX];
-
 /* reference to the env tree view empty row */
 static GtkTreeRowReference *empty_row = NULL;
 
@@ -100,11 +88,6 @@
 /* debugger messages text view */
 GtkWidget *textview = NULL;
 
-/* config manipulating buttons */
-GtkWidget *savebtn = NULL;
-GtkWidget *loadbtn = NULL;
-GtkWidget *clearbtn = NULL;
-
 /* env variable name cloumn */
 GtkTreeViewColumn *column_name = NULL;
 GtkCellRenderer *renderer_name = NULL;
@@ -268,7 +251,7 @@
     
 	gboolean empty = !gtk_tree_path_compare(tree_path, gtk_tree_row_reference_get_path(empty_row));
 
-	gboolean res = gtk_tree_model_get_iter (
+	gtk_tree_model_get_iter (
 		 model,
 		 &iter,
 		 tree_path);
@@ -366,7 +349,7 @@
     
 	gboolean empty = !gtk_tree_path_compare(tree_path, gtk_tree_row_reference_get_path(empty_row));
 
-	gboolean res = gtk_tree_model_get_iter (
+	gtk_tree_model_get_iter (
 		 model,
 		 &iter,
 		 tree_path);
@@ -405,234 +388,39 @@
 	g_free(striped);
 }
 
-/*
- * save config
- */
-void on_save_config(GtkButton *button, gpointer user_data)
+void tpage_read_config()
 {
-	/* open config file */
-	FILE *config = fopen(current_path, "w");
-	
-	/* get target */
-	const gchar *target = gtk_entry_get_text(GTK_ENTRY(targetname));
-	fprintf(config, "%s\n", target);
-	
-	/* debugger type */
-	gchar *debugger = gtk_combo_box_get_active_text(GTK_COMBO_BOX(cmb_debugger));
-	fprintf(config, "%s\n", debugger);
-	
-	/* get command line arguments */
-	GtkTextIter start, end;
-	GtkTextBuffer *buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(textview));
-	
-	gtk_text_buffer_get_start_iter(buffer, &start);
-	gtk_text_buffer_get_end_iter(buffer, &end);
-	
-	gchar *args = gtk_text_buffer_get_text(buffer, &start, &end, FALSE);
-	gchar** lines = g_strsplit(args, "\n", 0);
-	g_free(args);
-	args = g_strjoinv(" ", lines);
-	g_strfreev(lines);
-	fprintf(config, "%s\n", args);
-	g_free(args);
+	/* remove old values */
+	tpage_clear();
 
-	/* environment */
-	GtkTreeIter iter;
-	GtkTreeModel *model = gtk_tree_view_get_model(GTK_TREE_VIEW(envtree));
-	gtk_tree_model_get_iter_first(model, &iter);
-	do
-	{
-		gchar *name, *value;
-		gtk_tree_model_get (
-			model,
-			&iter,
-			NAME, &name,
-			VALUE, &value,
-		   -1);
-		 if (strlen(name))
-		 {
-			fprintf(config, "%s\n", ENVIRONMENT_MARKER);
-			fprintf(config, "%s\n%s\n", name, value);
-		 }
-		 
-		 g_free(name);
-		 g_free(value);
-	}
-	while (gtk_tree_model_iter_next(model, &iter));
-
-	/* breakpoints */
-	GList *breaks = breaks_get_all();
-	GList *biter = breaks;
-	while (biter)
-	{
-		breakpoint *bp = (breakpoint*)biter->data;
-		
-		fprintf(config, "%s\n", BREAKPOINTS_MARKER);
-		fprintf(config, "%s\n%i\n%i\n%s\n%i\n",
-			bp->file, bp->line, bp->hitscount, bp->condition, bp->enabled);
-				
-		biter = biter->next;
-	}
-	g_list_free(breaks);
-	breaks = NULL;
-	
-	/* watches */
-	GList *watches = wtree_get_watches();
-	biter = watches;
-	while (biter)
-	{
-		gchar *watch = (gchar*)biter->data;
-		
-		fprintf(config, "%s\n", WATCH_MARKER);
-		fprintf(config, "%s\n", watch);
-				
-		biter = biter->next;
-	}
-	g_list_foreach(watches, (GFunc)g_free, NULL);
-	g_list_free(watches);
-	watches = NULL;
-	
-
-	fclose(config);
-
-	dialogs_show_msgbox(GTK_MESSAGE_INFO, _("Config saved successfully"));
-}
-
-/*
- * reads line from a file
- */
-int readline(FILE *file, gchar *buffer, int buffersize)
-{
-	gchar c;
-	int read = 0;
-	while (buffersize && fread(&c, 1, 1, file) && '\n' != c)
-	{
-		buffer[read++] = c;
-		buffersize--;
-	}
-	buffer[read] = '\0';
-
-	return read;
-} 
-
-/*
- * load config file
- */
-void on_load_config(GtkButton *button, gpointer user_data)
-{
-	FILE *config = fopen(current_path, "r");
-	if (!config)
-		dialogs_show_msgbox(GTK_MESSAGE_ERROR, _("Error reading config file"));
-
 	/* target */
-	gchar target[FILENAME_MAX];
-	readline(config, target, FILENAME_MAX - 1);
-	gtk_entry_set_text(GTK_ENTRY(targetname), target);
-	
+	gtk_entry_set_text(GTK_ENTRY(targetname), dconfig_target_get());
+
 	/* debugger */
-	gchar debugger[FILENAME_MAX];
-	readline(config, debugger, FILENAME_MAX - 1);
-	int index = debug_get_module_index(debugger);
-	if (-1 == index)
-	{
-		dialogs_show_msgbox(GTK_MESSAGE_ERROR, _("Configuration error: debugger module \'%s\' is not found"), debugger);
-		gtk_combo_box_set_active(GTK_COMBO_BOX(cmb_debugger), 0);
-	}
-	else
-		gtk_combo_box_set_active(GTK_COMBO_BOX(cmb_debugger), index);
+	gtk_combo_box_set_active(GTK_COMBO_BOX(cmb_debugger), dconfig_module_get());
 
 	/* arguments */
-	gchar arguments[FILENAME_MAX];
-	readline(config, arguments, FILENAME_MAX - 1);
 	GtkTextBuffer *buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(textview));
-	gtk_text_buffer_set_text(buffer, arguments, -1);
+	gtk_text_buffer_set_text(buffer, dconfig_args_get(), -1);
 
-	/* breakpoints and environment variables */
-	breaks_remove_all();
-	wtree_remove_all();
-	
-	gboolean wrongbreaks = FALSE;
-	gchar line[MAXLINE];
-	gtk_list_store_clear(store);
-	while (readline(config, line, MAXLINE))
+	/* environment */
+	GList *env = dconfig_env_get();
+	while (env)
 	{
-		if (!strcmp(line, BREAKPOINTS_MARKER))
-		{
-			/* file */
-			gchar file[FILENAME_MAX];
-			readline(config, file, MAXLINE);
-			
-			/* line */
-			int nline;
-			readline(config, line, MAXLINE);
-			sscanf(line, "%d", &nline);
-			
-			/* hitscount */
-			int hitscount;
-			readline(config, line, MAXLINE);
-			sscanf(line, "%d", &hitscount);
+		gchar *name = (gchar*)env->data;
+		env = env->next;
+		gchar *value = (gchar*)env->data;
 
-			/* condition */
-			gchar condition[MAXLINE];
-			readline(config, condition, MAXLINE);
+		GtkTreeIter iter;
+		gtk_list_store_append(store, &iter);
+		gtk_list_store_set(store, &iter, NAME, name, VALUE, value, -1);
 
-			/* enabled */
-			gboolean enabled;
-			readline(config, line, MAXLINE);
-			sscanf(line, "%d", &enabled);
-			
-			/* check whether file is available */
-			struct stat st;
-			if(!stat(file, &st))
-				breaks_add(file, nline, condition, enabled, hitscount);
-			else
-				wrongbreaks = TRUE;
-		}
-		else if (!strcmp(line, ENVIRONMENT_MARKER))
-		{
-			gchar name[MAXLINE], value[1000];
-			readline(config, name, MAXLINE);
-			readline(config, value, MAXLINE);
-			
-			GtkTreeIter iter;
-			gtk_list_store_append(store, &iter);
-			
-			gtk_list_store_set(store, &iter, NAME, name, VALUE, value, -1);
-		}
-		else if (!strcmp(line, WATCH_MARKER))
-		{
-			gchar watch[MAXLINE];
-			readline(config, watch, MAXLINE);
-			wtree_add_watch(watch);
-		}
-		else
-		{
-			dialogs_show_msgbox(GTK_MESSAGE_ERROR, _("Error reading config file"));
-			break;
-		}
+		env = env->next;
 	}
-	if (wrongbreaks)
-		dialogs_show_msgbox(GTK_MESSAGE_ERROR, _("Some breakpoints can't be set as the files are missed"));
-	
-	add_empty_row();
-	
-	fclose(config);
-	
-	if (user_data)
-		dialogs_show_msgbox(GTK_MESSAGE_INFO, _("Config loaded successfully"));
 }
 
-/*
- * clears current configuration
- */
-void on_clear(GtkButton *button, gpointer user_data)
+void tpage_clear()
 {
-	/* breakpoints */
-	breaks_remove_all();
-
-	/* watches */
-	wtree_remove_all();
-	
 	/* target */
 	gtk_entry_set_text(GTK_ENTRY(targetname), "");
 	
@@ -646,7 +434,6 @@
 	/* environment variables */
 	gtk_list_store_clear(store);
 	add_empty_row();
-
 }
 
 /*
@@ -701,6 +488,14 @@
 }
 
 /*
+ * get selected debugger name
+ */
+gchar* tpage_get_debugger()
+{
+	return gtk_combo_box_get_active_text(GTK_COMBO_BOX(cmb_debugger));
+}
+
+/*
  * get command line
  */
 gchar* tpage_get_commandline()
@@ -728,13 +523,13 @@
 	GList *env = NULL;
 	
 	GtkTreeIter iter;
-	GtkTreeModel *model = gtk_tree_view_get_model(GTK_TREE_VIEW(envtree));
-	gtk_tree_model_get_iter_first(model, &iter);
+	GtkTreeModel *_model = gtk_tree_view_get_model(GTK_TREE_VIEW(envtree));
+	gtk_tree_model_get_iter_first(_model, &iter);
 	do
 	{
 		gchar *name, *value;
 		gtk_tree_model_get (
-			model,
+			_model,
 			&iter,
 			NAME, &name,
 			VALUE, &value,
@@ -746,48 +541,12 @@
 			env = g_list_append(env, value);

@@ Diff output truncated at 100000 characters. @@

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