Revision: 2160 http://geany-plugins.svn.sourceforge.net/geany-plugins/?rev=2160&view=re... 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. + +@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) +@ENABLE_DEBUGGER_TRUE@plugindata_DATA = $(FILES) +@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@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.