gobby-0.4.94/0000755000175000017500000000000011543672435007725 500000000000000gobby-0.4.94/win32/0000755000175000017500000000000011543672435010667 500000000000000gobby-0.4.94/win32/Makefile.in0000644000175000017500000002475511543672415012667 00000000000000# 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@ subdir = win32 DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = $(top_builddir)/code/features.hpp 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 = DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALL_LINGUAS = @ALL_LINGUAS@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@ DOC_USER_FORMATS = @DOC_USER_FORMATS@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GMOFILES = @GMOFILES@ GMSGFMT = @GMSGFMT@ GREP = @GREP@ HELP_DIR = @HELP_DIR@ 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@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MKINSTALLDIRS = @MKINSTALLDIRS@ MSGFMT = @MSGFMT@ MSGFMT_OPTS = @MSGFMT_OPTS@ MSGMERGE = @MSGMERGE@ OBJEXT = @OBJEXT@ OMF_DIR = @OMF_DIR@ 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@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ WINDRES = @WINDRES@ 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_CXX = @ac_ct_CXX@ 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@ gobby_CFLAGS = @gobby_CFLAGS@ gobby_LIBS = @gobby_LIBS@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infinote_CFLAGS = @infinote_CFLAGS@ infinote_LIBS = @infinote_LIBS@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ 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@ unique_CFLAGS = @unique_CFLAGS@ unique_LIBS = @unique_LIBS@ @WIN32_TRUE@BUILT_SOURCES = gobby.res EXTRA_DIST = gobby.ico gobby.rc all: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(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) --gnu win32/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu win32/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: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): 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: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) check-am all-am: Makefile installdirs: install: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) 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." -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) clean: clean-am clean-am: clean-generic 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-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 pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: all check install install-am install-strip .PHONY: all all-am check check-am clean clean-generic distclean \ distclean-generic 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-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-generic pdf pdf-am ps ps-am uninstall uninstall-am @WIN32_TRUE@gobby.res: gobby.rc @WIN32_TRUE@ $(WINDRES) -i gobby.rc --input-format=rc -o gobby.res -O coff # 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: gobby-0.4.94/win32/Makefile.am0000644000175000017500000000023611531722663012640 00000000000000if WIN32 gobby.res: gobby.rc $(WINDRES) -i gobby.rc --input-format=rc -o gobby.res -O coff BUILT_SOURCES = gobby.res endif EXTRA_DIST = gobby.ico gobby.rc gobby-0.4.94/win32/gobby.ico0000644000175000017500000002267611517044575012421 0000000000000000 %(0` &!(:;97: 4:;;;;:70#######################&7D;;;;;;;7& JJJLLLNOOQQQTTTSSSOOOKKKHHHJJJMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNKKKABB;<<::: ! Y<;;8- %|||YmmmJJJ___STSJMJAFAAFAJMJSTS\\\qqqEFF[4% ZZZ***&8O"d"$l$&r&(x((x(&r&$m$"f"U>6<><{{{PPP5VVV#!(u(////////////////////////////++1\\\+tttT1@@>><<884411////////////////////B\\\+O}}}VVV???+YYWWTTOOJJCC;;33////////////////<Tn\\\+AAA5+"PC6(& kkqqmmhhaaZZPPGG<<22//////////..#1#c}7U}\\\+ lYFoXs[r[XJC~R`.-+&} [7bbbtu[f*;.-("wCU AAAFMIX.-+%{ _7" ]]]:u7SSS{y{P...6+1r'2m, 2010. msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2010-06-20 14:26+0200\n" "PO-Revision-Date: 2010-06-20 17:27+0300\n" "Last-Translator: Yannis Kaskamanidis \n" "Language-Team: Ελληνικά \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Lokalize 1.0\n" #: ../code/commands/browser-commands.cpp:109 msgid "Subscribing to %1..." msgstr "Εγγραφή στο %1..." #: ../code/commands/browser-commands.cpp:122 msgid "Subscribing to chat on %1..." msgstr "Εγγραφή στη συνομιλία %1..." #: ../code/commands/browser-commands.cpp:307 msgid "Subscription failed" msgstr "Η εγγραφή απέτυχε" #: ../code/commands/browser-context-commands.cpp:94 msgid "Create Do_cument..." msgstr "Δημιουργία εγγράφου..." #: ../code/commands/browser-context-commands.cpp:129 msgid "Create Directory..." msgstr "Δημιουργία φακέλου..." #: ../code/commands/browser-context-commands.cpp:142 msgid "_Open Document..." msgstr "Άνοιγμα εγγράφου..." #: ../code/commands/browser-context-commands.cpp:161 msgid "D_elete" msgstr "Διαγραφή" #: ../code/commands/browser-context-commands.cpp:197 msgid "Choose a name for the directory" msgstr "Επιλογή ονόματος για τον φάκελο" #: ../code/commands/browser-context-commands.cpp:198 msgid "Choose a name for the document" msgstr "Επιλογή ονόματος για το έγγραφο" #: ../code/commands/browser-context-commands.cpp:199 msgid "_Directory Name:" msgstr "Όνομα φακέλου:" #: ../code/commands/browser-context-commands.cpp:200 msgid "_Document Name:" msgstr "Όνομα εγγράφου:" #: ../code/commands/browser-context-commands.cpp:203 msgid "C_reate" msgstr "Δημιουργία" #: ../code/commands/browser-context-commands.cpp:207 msgid "New Directory" msgstr "Νέος φάκελος" #: ../code/commands/browser-context-commands.cpp:208 #: ../code/commands/file-tasks/task-new.cpp:38 msgid "New Document" msgstr "Νέο έγγραφο" #: ../code/commands/browser-context-commands.cpp:224 #: ../code/commands/file-tasks/task-open-file.cpp:24 msgid "Choose a text file to open" msgstr "Επιλογή ενός αρχείου κειμένου για άνοιγμα" #: ../code/commands/file-tasks/task-export-html.cpp:29 msgid "Choose a location to export document \"%1\" to" msgstr "Επιλογή τοποθεσίας για εξαγωγή του εγγράφου \"%1\" στο" #: ../code/commands/file-tasks/task-open.cpp:48 msgid "Querying \"%1\"..." msgstr "Ερώτημα \"%1\"..." #: ../code/commands/file-tasks/task-open.cpp:105 #: ../code/operations/operation-open.cpp:437 #: ../code/operations/operation-open-multiple.cpp:159 msgid "Failed to open document \"%1\"" msgstr "Αποτυχία ανοίγματος του εγγράφου \"%1\"" #: ../code/commands/file-tasks/task-save.cpp:26 msgid "Choose a location to save document \"%1\" to" msgstr "Επιλογή τοποθεσίας για αποθήκευση του εγγράφου \"%1\" στο" #. Help browser could not be invoked, show an error message to the user. #: ../code/commands/help-commands.cpp:69 msgid "There was an error displaying help." msgstr "Υπήρξε κάποιο σφάλμα κατά την προβολή της βοήθειας." #: ../code/commands/help-commands.cpp:92 msgid "Contributors:" msgstr "Άτομα που συνεισέφεραν:" #: ../code/commands/help-commands.cpp:98 msgid "British English:" msgstr "Αγγλικά (Βρετανίας):" #: ../code/commands/help-commands.cpp:100 msgid "German:" msgstr "Γερμανικά:" #: ../code/commands/help-commands.cpp:117 msgid "" "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.\n" "\n" "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.\n" "\n" "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" msgstr "" "Αυτή η εφαρμογή είναι Ελεύθερο Λογισμικό. Μπορείτε να την αναδιανείμετε ή να " "την τροποποιήσετε υπό τους όρους της Γενικής Δημόσιας Άδειας GNU, όπως έχει " "δημοσιευτεί από το Ίδρυμα Ελεύθερου Λογισμικού (FSF), είτε την έκδοση 2, " "είτε (ανάλογα με τις προθέσεις σας) με κάθε επόμενη έκδοση.\n" "\n" "Αυτή η εφαρμογή διανέμεται με την ελπίδα ότι θα είναι χρήσιμη, αλλά ΧΩΡΙΣ " "ΚΑΜΙΑ ΕΓΓΥΗΣΗ, χωρίς ακόμη υποδηλούμενη εγγύηση ΕΜΠΟΡΕΥΣΙΜΟΤΗΤΑΣ ή " "ΚΑΤΑΛΛΗΛΟΤΗΤΑΣ ΓΙΑ ΣΥΓΚΕΚΡΙΜΕΝΟΥΣ ΣΚΟΠΟΥΣ. Δείτε τη Γενική Δημόσια Άδεια GNU " "για περισσότερες λεπτομέρειες.\n" "\n" "Θα πρέπει να έχετε λάβει ένα αντίγραφο της άδειας αυτής μαζί με την " "εφαρμογή. Εάν όχι, στείλτε μια επιστολή στο Ίδρυμα Ελεύθερου Λογισμικού " "(FSF), Inc., 675 Mass Ave, Cambridge, MA 02139, USA." #: ../code/commands/subscription-commands.cpp:259 msgid "" "The connection to the publisher of this document has been lost. Further " "changes to the document could not be synchronized to others anymore, " "therefore the document cannot be edited anymore.\n" "\n" "Please note also that it is possible that not all of your latest changes " "have reached the publisher before the connection was lost." msgstr "" "Η σύνδεση με τον εκδότη αυτού του εγγράφου χάθηκε. Περισσότερες αλλαγές στο " "έγγραφο δεν είναι πλέον δυνατόν να συγχρονιστούν με άλλους χρήστες. Η " "επεξεργασία του εγγράφου δεν είναι πια δυνατή.\n" "\n" "Παρακαλώ σημειώστε ότι είναι δυνατόν να μην έχουν φθάσει στον εκδότη όλες οι " "τελευταίες αλλαγές πριν τη διακοπή της σύνδεσης." #: ../code/commands/synchronization-commands.cpp:32 msgid "Synchronization in progress... %1%%" msgstr "Συγχρονισμός σε εξέλιξη... %1%%" #. Document cannot be used if an error happened #. during synchronization. #: ../code/commands/synchronization-commands.cpp:44 msgid "This document cannot be used." msgstr "Αυτό το έγγραφο δεν μπορεί να χρησιμοποιηθεί." #: ../code/commands/synchronization-commands.cpp:47 #: ../code/commands/user-join-commands.cpp:40 msgid "" "If you have an idea what could have caused the problem, then you may attempt " "to solve it and try again (after having closed this document). Otherwise it " "is most likely a bug in the software. In that case, please file a bug report " "at http://gobby.0x539.de/trac/newticket and provide as much information as " "you can, including what you did when the problem occurred and how to " "reproduce the problem (if possible) so that we can fix the problem in a " "later version. Thank you." msgstr "" "Εάν υποψιάζεστε τι μπορεί να προκάλεσε το πρόβλημα, προσπαθήστε να το λύσετε " "και ξαναπροσπαθήστε (αφού έχετε κλείσει το έγγραφο). Διαφορετικά, πιθανόν να " "πρόκειται για κάποιο σφάλμα του λογισμικού. Σε αυτή την περίπτωση, στείλτε " "μια αναφορά σφάλματος στο http://gobby.0x539.de/trac/newticket και προσθέστε " "όσες περισσότερες πληροφορίες μπορείτε, καθώς και το τι κάνατε όταν συνέβη " "το πρόβλημα. Επίσης, δώστε πληροφορίες σχετικά με το πώς μπορεί να γίνει " "αναπαραγωγή του προβλήματος (αν κάτι τέτοιο είναι εφικτό), ώστε να " "διορθώσουμε το πρόβλημα σε μια επόμενη έκδοση. Ευχαριστούμε." #: ../code/commands/synchronization-commands.cpp:61 msgid "Synchronization failed: %1" msgstr "Ο συγχρονισμός απέτυχε: %1" #. TODO: Adjust this for chat sessions #: ../code/commands/user-join-commands.cpp:35 msgid "" "You can still watch others editing the document, but you cannot edit it " "yourself." msgstr "" "Μπορείτε ακόμη να παρακολουθείτε άλλους να επεξεργάζονται το έγγραφο, αλλά " "δεν μπορείτε εσείς να συμμετέχετε στην επεξεργασία." #: ../code/commands/user-join-commands.cpp:54 msgid "User Join failed: %1" msgstr "Η σύνδεση του χρήστη απέτυχε: %1" #: ../code/commands/user-join-commands.cpp:283 msgid "User Join in progress..." msgstr "Σύνδεση του χρήστη σε εξέλιξη..." #: ../code/core/browser.cpp:113 msgid "_Direct Connection" msgstr "Άμεση σύνδεση" #: ../code/core/browser.cpp:115 msgid "Host Name:" msgstr "Όνομα κόμβου:" #: ../code/core/browser.cpp:301 ../code/core/browser.cpp:425 msgid "Connection to \"%1\" failed" msgstr "Η σύνδεση στο \"%1\" απέτυχε" #: ../code/core/browser.cpp:354 msgid "Could not resolve \"%1\"" msgstr "Αδυναμία επίλυσης \"%1\"" #: ../code/core/browser.cpp:428 msgid "Device \"%1\" does not exist" msgstr "Η συσκευή \"%1\" δεν υπάρχει" #: ../code/core/browser.cpp:464 msgid "Resolving \"%1\"..." msgstr "Επίλυση \"%1\"..." #: ../code/core/header.cpp:198 msgid "_None" msgstr "Κανένα" #: ../code/core/header.cpp:222 msgid "_File" msgstr "Αρχείο" #: ../code/core/header.cpp:225 msgid "_Open..." msgstr "Άνοιγμα..." #: ../code/core/header.cpp:228 msgid "Open _Location..." msgstr "Άνοιγμα τοποθεσίας..." #: ../code/core/header.cpp:232 msgid "Save _As..." msgstr "Αποθήκευση ως..." #: ../code/core/header.cpp:236 ../code/core/iconmanager.cpp:40 msgid "Save All" msgstr "Αποθήκευση όλων" #: ../code/core/header.cpp:236 msgid "Save all open files locally" msgstr "Αποθήκευση όλων των ανοιχτών αρχείων τοπικά" #: ../code/core/header.cpp:238 msgid "Export As _HTML..." msgstr "Εξαγωγή ως HTML..." #: ../code/core/header.cpp:241 msgid "Connect _to Server..." msgstr "Σύνδεση στον διακομιστή..." #: ../code/core/header.cpp:246 msgid "_Edit" msgstr "Επεξεργασία" #: ../code/core/header.cpp:254 msgid "_Find..." msgstr "Εύρεση..." #: ../code/core/header.cpp:256 msgid "Find Ne_xt" msgstr "Εύρεση επόμενου" #: ../code/core/header.cpp:257 msgid "Find next match of phrase searched for" msgstr "Εύρεση επόμενης φράσης που ταιριάζει με αυτήν που αναζητάτε" #: ../code/core/header.cpp:260 msgid "Find Pre_vious" msgstr "Εύρεση προηγούμενου" #: ../code/core/header.cpp:261 msgid "Find previous match of phrase searched for" msgstr "Εύρεση προηγούμενης φράσης που ταιριάζει με αυτήν που αναζητάτε" #: ../code/core/header.cpp:266 msgid "Find and Rep_lace..." msgstr "Εύρεση και αντικατάσταση..." #: ../code/core/header.cpp:270 msgid "Go to _Line..." msgstr "Μετάβαση στη γραμμή..." #: ../code/core/header.cpp:274 msgid "Pr_eferences..." msgstr "Προτιμήσεις..." #: ../code/core/header.cpp:276 msgid "_View" msgstr "Προβολή" #: ../code/core/header.cpp:279 msgid "Reset User Colors" msgstr "Επαναφορά χρωμάτων χρήστη" #: ../code/core/header.cpp:280 msgid "Hide user colors in current document" msgstr "Απόκρυψη χρωμάτων χρήστη στο τρέχον έγγραφο" #: ../code/core/header.cpp:283 msgid "View Toolbar" msgstr "Προβολή γραμμής εργαλείων" #: ../code/core/header.cpp:284 msgid "Whether to show the toolbar" msgstr "Αν θα εμφανίζεται η γραμμή εργαλείων" #: ../code/core/header.cpp:288 msgid "View Statusbar" msgstr "Προβολή γραμμής κατάστασης" #: ../code/core/header.cpp:289 msgid "Whether to show the statusbar" msgstr "Αν θα εμφανίζεται η γραμμή κατάστασης" #: ../code/core/header.cpp:293 msgid "View Document Browser" msgstr "Προβολή περιηγητή εγγράφου" #: ../code/core/header.cpp:294 msgid "Whether to show the document browser" msgstr "Αν θα εμφανίζεται ο περιηγητής εγγράφου" #: ../code/core/header.cpp:298 msgid "View Chat" msgstr "Προβολή συνομιλίας" #: ../code/core/header.cpp:299 msgid "Whether to show the chat pane" msgstr "Εάν θα εμφανίζεται το παράθυρο συνομιλίας" #: ../code/core/header.cpp:303 msgid "View Document User List" msgstr "Προβολή καταλόγου χρηστών του εγγράφου" #: ../code/core/header.cpp:304 msgid "Whether to show the user list for documents" msgstr "Εάν θα εμφανίζεται ο κατάλογος χρηστών για τα έγγραφα" #: ../code/core/header.cpp:308 msgid "View Chat User List" msgstr "Προβολή καταλόγου χρηστών συνομιλίας" #: ../code/core/header.cpp:309 msgid "Whether to show the user list for the chat" msgstr "Εάν θα εμφανίζεται ο κατάλογος χρηστών της συνομιλίας" #: ../code/core/header.cpp:313 msgid "_Highlight Mode" msgstr "Λειτουργία επισήμανσης" #: ../code/core/header.cpp:319 msgid "_Help" msgstr "Βοήθεια" #: ../code/core/header.cpp:322 msgid "_Contents" msgstr "Περιεχόμενα" #: ../code/core/header.cpp:323 msgid "Opens the Gobby manual" msgstr "Ανοίγει το εγχειρίδιο του Gobby" #: ../code/core/header.cpp:326 msgid "_About..." msgstr "Σχετικά..." #: ../code/core/header.cpp:327 msgid "Shows Gobby's copyright and credits" msgstr "Εμφανίζει τα πνευματικά δικαιώματα και τα εύσημα για το Gobby" #: ../code/core/iconmanager.cpp:46 msgid "User list" msgstr "Κατάλογος χρηστών" #: ../code/core/iconmanager.cpp:52 msgid "Document list" msgstr "Κατάλογος εγγράφων" #: ../code/core/iconmanager.cpp:58 ../code/window.cpp:49 msgid "Chat" msgstr "Συνομιλία" #: ../code/core/iconmanager.cpp:65 msgid "User Color Indicator" msgstr "Ένδειξη χρώματος χρήστη" #: ../code/core/sessionuserview.cpp:41 msgid "User List" msgstr "Κατάλογος χρηστών" #: ../code/core/statusbar.cpp:395 msgid "Ln %1, Col %2\t%3" msgstr "Ln %1, Col %2\t%3" #: ../code/core/statusbar.cpp:398 msgid "OVR" msgstr "OVR" #: ../code/core/statusbar.cpp:398 msgid "INS" msgstr "INS" #: ../code/core/textsessionview.cpp:519 msgid "Text written by %1" msgstr "Κείμενο που συντάχθηκε από τον/την %1" #: ../code/core/textsessionview.cpp:525 msgid "Unowned text" msgstr "Κείμενο που δεν ανήκει σε κανέναν" #: ../code/core/userlist.cpp:105 msgid "Users" msgstr "Χρήστες" #: ../code/dialogs/connection-dialog.cpp:28 msgid "Connect to Server" msgstr "Σύνδεση στον διακομιστή" #: ../code/dialogs/connection-dialog.cpp:32 msgid "Please enter a host name with which to establish a connection." msgstr "" "Παρακαλώ εισάγετε το όνομα του διακομιστή με τον οποίο θα γίνει η σύνδεση." #: ../code/dialogs/connection-dialog.cpp:34 msgid "_Remote Endpoint:" msgstr "Απομακρυσμένο τελικό σημείο:" #: ../code/dialogs/document-location-dialog.cpp:29 msgid "Document Name:" msgstr "Όνομα εγγράφου:" #: ../code/dialogs/document-location-dialog.cpp:156 msgid "Select document's target location" msgstr "Επιλογή θέσης προορισμού του εγγράφου" #: ../code/dialogs/document-location-dialog.cpp:158 msgid "Choose a directory to create the document into:" msgstr "Επιλογή φακέλου για δημιουργία εγγράφου μέσα σ' αυτόν:" #: ../code/dialogs/document-location-dialog.cpp:164 msgid "Select documents' target location" msgstr "Επιλογή θέσης προορισμού του εγγράφου" #: ../code/dialogs/document-location-dialog.cpp:166 msgid "Choose a directory to create the documents into:" msgstr "Επιλογή φακέλου για δημιουργία εγγράφου μέσα σ' αυτόν:" #: ../code/dialogs/find-dialog.cpp:46 ../code/dialogs/find-dialog.cpp:144 msgid "Find" msgstr "Εύρεση" #: ../code/dialogs/find-dialog.cpp:49 msgid "_Search for:" msgstr "Εύρεση για:" #: ../code/dialogs/find-dialog.cpp:51 msgid "Replace _with:" msgstr "Αντικατάσταση με:" #: ../code/dialogs/find-dialog.cpp:53 msgid "_Match case" msgstr "Ταίριασμα" #: ../code/dialogs/find-dialog.cpp:54 msgid "Match _entire word only" msgstr "Ταίριασμα μόνον ολόκληρης λέξης" #: ../code/dialogs/find-dialog.cpp:55 msgid "Search _backwards" msgstr "Αναζήτηση προς τα πίσω" #: ../code/dialogs/find-dialog.cpp:56 msgid "Wra_p around" msgstr "Αναδίπλωση ολόγυρα" #: ../code/dialogs/find-dialog.cpp:102 msgid "Replace _All" msgstr "Αντικατάσταση όλων" #: ../code/dialogs/find-dialog.cpp:104 msgid "_Replace" msgstr "Αντικατάσταση" #: ../code/dialogs/find-dialog.cpp:144 msgid "Replace" msgstr "Αντικατάσταση" #: ../code/dialogs/find-dialog.cpp:163 ../code/dialogs/find-dialog.cpp:179 msgid "Phrase \"%1\" has not been found" msgstr "Η φράση \"%1\" δεν βρέθηκε" #: ../code/dialogs/find-dialog.cpp:337 msgid "No occurrence has been replaced" msgstr "Τίποτε δεν αντικαταστάθηκε" #: ../code/dialogs/find-dialog.cpp:343 msgid "%1 occurrence has been replaced" msgid_plural "%1 occurrences have been replaced" msgstr[0] "%1 αντικαταστάθηκε" msgstr[1] "%1 αντικαταστάθηκαν" #: ../code/dialogs/goto-dialog.cpp:27 msgid "Go to line" msgstr "Μετάβαση στη γραμμή" #: ../code/dialogs/goto-dialog.cpp:30 msgid "Line _number:" msgstr "Αριθμός γραμμής:" #: ../code/dialogs/goto-dialog.cpp:51 msgid "Go To _Line" msgstr "Μετάβαση στη γραμμή" #: ../code/dialogs/initial-dialog.cpp:49 msgid "Choose a user color" msgstr "Επιλογή χρώματος χρήστη" #: ../code/dialogs/initial-dialog.cpp:53 msgid "Welcome to Gobby" msgstr "Καλωσήρθατε στο Gobby" #: ../code/dialogs/initial-dialog.cpp:62 msgid "" "Before we start, a few options need to be configured. You can later change " "them by choosing Edit ▸ Preferences from the menu." msgstr "" "Πριν ξεκινήσουμε, καλό είναι να ρυθμίσουμε ορισμένες επιλογές. Αργότερα " "μπορούμε να τις αλλάξουμε επιλέγοντας το μενού Επεξεργασία ▸ Προτιμήσεις." #: ../code/dialogs/initial-dialog.cpp:69 msgid "User Name" msgstr "Όνομα χρήστη" #: ../code/dialogs/initial-dialog.cpp:71 msgid "Your name as shown to other users." msgstr "Το όνομά σας όπως το βλέπουν οι άλλοι χρήστες" #: ../code/dialogs/initial-dialog.cpp:80 msgid "User Color" msgstr "Χρώμα χρήστη" #: ../code/dialogs/initial-dialog.cpp:82 msgid "The color with which text you have written is branded." msgstr "Το χρώμα με το οποίο έχετε γράψει το κείμενό σας είναι επώνυμο." #: ../code/dialogs/open-location-dialog.cpp:27 msgid "Open Location" msgstr "Άνοιγμα τοποθεσίας" #: ../code/dialogs/open-location-dialog.cpp:28 msgid "Enter the _location (URI) of the file you would like to open:" msgstr "Εισαγωγή της τοποθεσίας (URI) του αρχείου που θέλετε να ανοίξετε:" #: ../code/dialogs/password-dialog.cpp:27 msgid "Password Required" msgstr "Απαιτείται κωδικός πρόσβασης" #: ../code/dialogs/password-dialog.cpp:33 msgid "Connection to host \"%1\" requires a password." msgstr "Η σύνδεση με τον διακομιστή \"%1\" απαιτεί κωδικό πρόσβασης." #: ../code/dialogs/password-dialog.cpp:34 msgid "Invalid password for host \"%1\". Please try again." msgstr "" "Μη έγκυρος κωδικός πρόσβασης για τον διακομιστή \"%1\". Παρακαλώ προσπαθήστε " "πάλι." #: ../code/dialogs/password-dialog.cpp:37 msgid "Server _Password:" msgstr "Κωδικός πρόσβασης διακομιστή:" #: ../code/dialogs/preferences-dialog.cpp:232 msgid "Settings" msgstr "Ρυθμίσεις" #: ../code/dialogs/preferences-dialog.cpp:233 msgid "Paths" msgstr "Διαδρομές" #: ../code/dialogs/preferences-dialog.cpp:235 msgid "User name:" msgstr "Όνομα χρήστη:" #: ../code/dialogs/preferences-dialog.cpp:237 msgid "User color:" msgstr "Χρώμα χρήστη:" #: ../code/dialogs/preferences-dialog.cpp:238 msgid "Choose a new user color" msgstr "Επιλογή νέου χρώματος χρήστη" #: ../code/dialogs/preferences-dialog.cpp:241 msgid "Host directory:" msgstr "Φάκελος κόμβου:" #: ../code/dialogs/preferences-dialog.cpp:283 msgid "The directory into which locally hosted sessions are permanently stored" msgstr "" "Ο φάκελος στον οποίο οι τοπικά φιλοξενούμενες συνεδρίες έχουν μόνιμα " "αποθηκευτεί." #: ../code/dialogs/preferences-dialog.cpp:300 msgid "Tab Stops" msgstr "Στηλοθέτες" #: ../code/dialogs/preferences-dialog.cpp:301 msgid "Indentation" msgstr "Εσοχή" #: ../code/dialogs/preferences-dialog.cpp:302 msgid "Home/End Behavior" msgstr "Συμπεριφορά πλήκτρων Home/End" #: ../code/dialogs/preferences-dialog.cpp:303 msgid "File Saving" msgstr "Αποθήκευση αρχείου" #: ../code/dialogs/preferences-dialog.cpp:304 msgid "_Tab width:" msgstr "Πλάτος στηλοθέτη:" #: ../code/dialogs/preferences-dialog.cpp:306 msgid "Insert _spaces instead of tabs" msgstr "Εισαγωγή διαστημάτων αντί και στηλοθέτες" #: ../code/dialogs/preferences-dialog.cpp:307 msgid "Enable automatic _indentation" msgstr "Ενεργοποίηση αυτόματης εισαγωγής εσοχών" #: ../code/dialogs/preferences-dialog.cpp:308 msgid "Smart _home/end" msgstr "Έξυπνο Home/End" #: ../code/dialogs/preferences-dialog.cpp:309 msgid "Enable _automatic saving of documents" msgstr "Ενεργοποίηση αυτόματης αποθήκευσης εγγράφων" #: ../code/dialogs/preferences-dialog.cpp:311 msgid "Autosave interval in _minutes:" msgstr "Χρονικό διάστημα αυτόματης αποθήκευσης σε λεπτά:" #: ../code/dialogs/preferences-dialog.cpp:332 msgid "" "With this option enabled, Home/End keys move to first/last character before " "going to the start/end of the line." msgstr "" "Με αυτή την επιλογή ενεργοποιημένη, τα πλήκτρα Home/End μας μετακινούν στον " "πρώτο/τελευταίο χαρακτήρα πριν μεταβούμε στην αρχή/τέλος της γραμμής." #: ../code/dialogs/preferences-dialog.cpp:402 msgid "Text Wrapping" msgstr "Αναδίπλωση κειμένου" #: ../code/dialogs/preferences-dialog.cpp:403 msgid "Line Numbers" msgstr "Αριθμοί γραμμών" #: ../code/dialogs/preferences-dialog.cpp:404 msgid "Current Line" msgstr "Τρέχουσα γραμμή" #: ../code/dialogs/preferences-dialog.cpp:405 msgid "Right Margin" msgstr "Δεξί περιθώριο" #: ../code/dialogs/preferences-dialog.cpp:406 msgid "Bracket Matching" msgstr "Αγκύλες ταιριάσματος" #: ../code/dialogs/preferences-dialog.cpp:407 msgid "Whitespace Display" msgstr "Εμφάνιση λευκού διαστήματος" #: ../code/dialogs/preferences-dialog.cpp:408 msgid "Enable text wrapping" msgstr "Ενεργοποίηση αναδίπλωσης κειμένου" #: ../code/dialogs/preferences-dialog.cpp:409 msgid "Do not split words over two lines" msgstr "Να μη διαχωρίζονται οι λέξεις σε περισσότερες από δυο γραμμές" #: ../code/dialogs/preferences-dialog.cpp:410 msgid "Display line numbers" msgstr "Εμφάνιση αριθμών στις γραμμές" #: ../code/dialogs/preferences-dialog.cpp:411 msgid "Highlight current line" msgstr "Επισήμανση τρέχουσας γραμμής" #: ../code/dialogs/preferences-dialog.cpp:412 msgid "Display right margin" msgstr "Εμφάνιση δεξιού περιθωρίου" #: ../code/dialogs/preferences-dialog.cpp:413 msgid "Right margin at column:" msgstr "Δεξί περιθώριο σε στήλη:" #: ../code/dialogs/preferences-dialog.cpp:414 msgid "Highlight matching bracket" msgstr "Επισήμανση αγκύλης ταιριάσματος" #: ../code/dialogs/preferences-dialog.cpp:465 msgid "Display no whitespace" msgstr "Απόκρυψη λευκού διαστήματος" #: ../code/dialogs/preferences-dialog.cpp:468 msgid "Display spaces" msgstr "Εμφάνιση διαστημάτων" #: ../code/dialogs/preferences-dialog.cpp:472 msgid "Display tabs" msgstr "Εμφάνιση στηλοθετών" #: ../code/dialogs/preferences-dialog.cpp:476 msgid "Display tabs and spaces" msgstr "Εμφάνιση στηλοθετών και διαστημάτων" #: ../code/dialogs/preferences-dialog.cpp:526 msgid "Toolbar" msgstr "Γραμμή εργαλείων" #: ../code/dialogs/preferences-dialog.cpp:527 msgid "Font" msgstr "Γραμματοσειρά" #: ../code/dialogs/preferences-dialog.cpp:528 msgid "Color Scheme" msgstr "Απεικόνιση χρώματος" #: ../code/dialogs/preferences-dialog.cpp:535 msgid "Show text only" msgstr "Εμφάνιση μόνο του κειμένου" #: ../code/dialogs/preferences-dialog.cpp:537 msgid "Show icons only" msgstr "Εμφάνιση μόνο των εικονιδίων" #: ../code/dialogs/preferences-dialog.cpp:539 msgid "Show both icons and text" msgstr "Εμφάνιση εικονιδίων και κειμένου" #: ../code/dialogs/preferences-dialog.cpp:541 msgid "Show text besides icons" msgstr "Εμφάνιση κειμένου δίπλα στα εικονίδια" #: ../code/dialogs/preferences-dialog.cpp:620 msgid "Trusted CAs" msgstr "Έμπιστα CAs" #: ../code/dialogs/preferences-dialog.cpp:621 msgid "Secure Connection" msgstr "Ασφαλής σύνδεση" #: ../code/dialogs/preferences-dialog.cpp:622 msgid "Select a file containing trusted CAs" msgstr "Επιλογή αρχείου που περιέχει έμπιστα CAs" #: ../code/dialogs/preferences-dialog.cpp:639 msgid "Use TLS if possible" msgstr "Χρήση TLS εάν είναι δυνατό" #: ../code/dialogs/preferences-dialog.cpp:642 msgid "Always use TLS" msgstr "Παντοτινή χρήση TLS" #: ../code/dialogs/preferences-dialog.cpp:654 msgid "Preferences" msgstr "Προτιμήσεις" #: ../code/dialogs/preferences-dialog.cpp:659 msgid "User" msgstr "Χρήστης" #: ../code/dialogs/preferences-dialog.cpp:660 msgid "Editor" msgstr "Επεξεργαστής" #: ../code/dialogs/preferences-dialog.cpp:661 msgid "View" msgstr "Προβολή" #: ../code/dialogs/preferences-dialog.cpp:662 msgid "Appearance" msgstr "Εμφάνιση" #: ../code/dialogs/preferences-dialog.cpp:663 msgid "Security" msgstr "Ασφάλεια" #: ../code/main.cpp:196 msgid "Gobby options" msgstr "Επιλογές του Gobby" #: ../code/main.cpp:196 msgid "Options related to Gobby" msgstr "Επιλογές σχετικές με το Gobby" #: ../code/main.cpp:201 msgid "Display version information and exit" msgstr "Εμφάνιση πληροφοριών έκδοσης και έξοδος" #: ../code/main.cpp:208 msgid "Also start a new Gobby instance when there is one running already" msgstr "" "Έναρξη ενός νέου στιγμιότυπου Gobby όταν υπάρχει ένα που ήδη εκτελείται." #: ../code/main.cpp:216 msgid "Connect to given host on startup, can be given multiple times" msgstr "" "Η σύνδεση με τον συγκεκριμένο διακομιστή κατά την έναρξη, μπορεί να δοθεί " "πολλές φορές." #: ../code/main.cpp:217 msgid "HOSTNAME" msgstr "Όνομα διακομιστή" #: ../code/operations/operation-delete.cpp:42 msgid "Removing node \"%1\"..." msgstr "Αφαίρεση διακομιστή %1..." #: ../code/operations/operation-delete.cpp:57 msgid "Failed to delete node \"%1\"" msgstr "Αποτυχία διαγραφής διακομιστή %1: %2" #: ../code/operations/operation-export-html.cpp:166 #, c-format msgid "written by: %s" msgstr "συντάχθηκε από τον/την: %s" #: ../code/operations/operation-export-html.cpp:239 msgid "" msgstr "<αδυναμία εκτύπωσης της ημερομηνίας>" #. %1$s is session name/hostname #. %2$s is path within the session #. %3$s is current date as formatted by %c, #. %4$s is a link to the gobby site, it must be present because #. we need to handle that manually to insert a hyperlink #. instead of just printf'ing it. #: ../code/operations/operation-export-html.cpp:252 #, c-format msgid "Document generated from %1$s:%2$s at %3$s by %4$s" msgstr "Έγγραφο που δημιουργήθηκε από τους %1$s:%2$s at %3$s by %4$s" #: ../code/operations/operation-export-html.cpp:393 msgid "Participants" msgstr "Συμμετέχοντες" #: ../code/operations/operation-export-html.cpp:454 msgid "Exporting document \"%1\" to \"%2\" in HTML..." msgstr "Εξαγωγή εγγράφου \"%1\" σε \"%2\" σε HTML..." #: ../code/operations/operation-export-html.cpp:526 msgid "Failed to export document \"%1\" to HTML" msgstr "Αποτυχία εξαγωγής του εγγράφου \"%1\" σε HTML" #: ../code/operations/operation-new.cpp:56 msgid "Creating directory \"%1\"..." msgstr "Δημιουργία φακέλου \"%1\"..." #: ../code/operations/operation-new.cpp:57 msgid "Creating document \"%1\"..." msgstr "Δημιουργία εγγράφου \"%1\"..." #: ../code/operations/operation-new.cpp:73 msgid "Failed to create directory \"%1\"" msgstr "Αποτυχία δημιουργίας φακέλου \"%1\"" #: ../code/operations/operation-new.cpp:74 msgid "Failed to create document \"%1\"" msgstr "Αποτυχία δημιουργίας εγγράφου \"%1\"" #. Translators: This is the 8 bit encoding that is tried when #. autodetecting a file's encoding. #: ../code/operations/operation-open.cpp:38 msgid "ISO-8859-1" msgstr "ISO-8859-1" #: ../code/operations/operation-open.cpp:89 msgid "Opening document \"%1\"..." msgstr "Άνοιγμα εγγράφου \"%1\"..." #: ../code/operations/operation-open.cpp:124 msgid "" "The directory into which the new document was supposed to be inserted has " "been removed" msgstr "" "Ο φάκελος στον οποίο υποτίθεται ότι θα αποθηκευόταν το νέο έγγραφο έχει " "αφαιρεθεί." #: ../code/operations/operation-open.cpp:313 msgid "The file contains data not in the specified encoding" msgstr "" "Το αρχείο περιέχει δεδομένα που δεν διαθέτουν την καθορισμένη κωδικοποίηση." #: ../code/operations/operation-open.cpp:324 msgid "" "The file either contains data in an unknown encoding, or it contains binary " "data." msgstr "" "Είτε το αρχείο περιέχει δεδομένα σε άγνωστη κωδικοποίηση, είτε περιέχει " "δυαδικά δεδομένα." #: ../code/operations/operation-open-multiple.cpp:84 msgid "Parent folder was removed" msgstr "Ο γονικός φάκελος αφαιρέθηκε" #: ../code/operations/operation-open-multiple.cpp:172 msgid "Failed to open multiple documents" msgstr "Αποτυχία ανοίγματος πολλαπλών εγγράφων" #: ../code/operations/operation-save.cpp:74 msgid "Saving document \"%1\" to \"%2\"..." msgstr "Αποθήκευση εγγράφου \"%1\" στο \"%2\"..." #: ../code/operations/operation-save.cpp:227 msgid "" "The document contains one or more characters that cannot be encoded in the " "specified character coding." msgstr "" "Το έγγραφο περιέχει έναν ή περισσότερους χαρακτήρες που δεν μπορούν να " "κωδικοποιηθούν στην καθορισμένη κωδικοποίηση χαρακτήρων." #: ../code/operations/operation-save.cpp:288 msgid "Failed to save document \"%1\"" msgstr "Αποτυχία αποθήκευσης εγγράφου \"%1\"" #: ../code/util/file.cpp:67 ../code/util/file.cpp:76 msgid "Could not create directory \"%1\": %2" msgstr "Αδυναμία δημιουργίας φακέλου \"%1\": %2" #: ../code/window.cpp:112 msgid "Document Browser" msgstr "Περιηγητής εγγράφου" #: ../code/window.cpp:168 msgid "You are still connected to a session" msgstr "Είστε ακόμη συνδεδεμένοι σε μια συνεδρία" #: ../code/window.cpp:176 msgid "Do you want to close Gobby nevertheless?" msgstr "Θέλετε παρόλα αυτά να κλείσετε το Gobby;" #: ../code/window.cpp:182 msgid "C_ancel" msgstr "Άκυρο" #: ../gobby-0.5.desktop.in.h:1 msgid "Collaborative Editor" msgstr "Συνεργατικός επεξεργαστής κειμένων" #: ../gobby-0.5.desktop.in.h:2 msgid "Edit text files collaboratively" msgstr "Συνεργατική επεξεργασία αρχείων κειμένου" #: ../gobby-0.5.desktop.in.h:3 msgid "Gobby" msgstr "Gobby" #: ../gobby-0.5.desktop.in.h:4 msgid "Gobby Collaborative Editor (0.5)" msgstr "Συνεργατικός επεξεργαστής κειμένων Gobby (0.5)" #~ msgid "Subscription already in progress" #~ msgstr "Εγγραφή ήδη σε εξέλιξη" gobby-0.4.94/po/POTFILES.in0000644000175000017500000000234511531722663012040 00000000000000code/commands/auth-commands.cpp code/commands/browser-commands.cpp code/commands/browser-context-commands.cpp code/commands/file-tasks/task-export-html.cpp code/commands/file-tasks/task-new.cpp code/commands/file-tasks/task-open.cpp code/commands/file-tasks/task-open-file.cpp code/commands/file-tasks/task-save.cpp code/commands/help-commands.cpp code/commands/subscription-commands.cpp code/commands/synchronization-commands.cpp code/commands/user-join-commands.cpp code/core/browser.cpp code/core/header.cpp code/core/iconmanager.cpp code/core/sessionuserview.cpp code/core/statusbar.cpp code/core/textsessionview.cpp code/core/userlist.cpp code/dialogs/connection-dialog.cpp code/dialogs/document-location-dialog.cpp code/dialogs/find-dialog.cpp code/dialogs/goto-dialog.cpp code/dialogs/initial-dialog.cpp code/dialogs/open-location-dialog.cpp code/dialogs/password-dialog.cpp code/dialogs/preferences-dialog.cpp code/main.cpp code/operations/operation-delete.cpp code/operations/operation-export-html.cpp code/operations/operation-new.cpp code/operations/operation-open.cpp code/operations/operation-open-multiple.cpp code/operations/operation-save.cpp code/util/file.cpp code/util/i18n.cpp code/util/i18n.hpp code/window.cpp gobby-0.5.desktop.in gobby-0.4.94/po/ja.po0000644000175000017500000007232611531722663011223 00000000000000# Japanese translations for gobby package. # Copyright (C) 2010 THE gobby'S COPYRIGHT HOLDER # This file is distributed under the same license as the gobby package. # , 2010. # msgid "" msgstr "" "Project-Id-Version: gobby 0.4.94\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2010-06-20 14:26+0200\n" "PO-Revision-Date: 2010-11-19 01:09+0900\n" "Last-Translator: Takahiro Sunaga \n" "Language-Team: Japanese\n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" #: ../code/commands/browser-commands.cpp:109 msgid "Subscribing to %1..." msgstr "%1へ加入..." #: ../code/commands/browser-commands.cpp:122 msgid "Subscribing to chat on %1..." msgstr "チャット%1へ加入..." #: ../code/commands/browser-commands.cpp:307 msgid "Subscription failed" msgstr "加入に失敗" #: ../code/commands/browser-context-commands.cpp:94 msgid "Create Do_cument..." msgstr "ドキュメントの作成(_C)" #: ../code/commands/browser-context-commands.cpp:129 msgid "Create Directory..." msgstr "ディレクトリの作成" #: ../code/commands/browser-context-commands.cpp:142 msgid "_Open Document..." msgstr "ドキュメントを開く(_O)" #: ../code/commands/browser-context-commands.cpp:161 msgid "D_elete" msgstr "削除(_D)" #: ../code/commands/browser-context-commands.cpp:197 msgid "Choose a name for the directory" msgstr "ディレクトリ名の選択" #: ../code/commands/browser-context-commands.cpp:198 msgid "Choose a name for the document" msgstr "ドキュメント名の選択" #: ../code/commands/browser-context-commands.cpp:199 msgid "_Directory Name:" msgstr "ディレクトリ名(_D)" #: ../code/commands/browser-context-commands.cpp:200 msgid "_Document Name:" msgstr "ドキュメント名(_D)" #: ../code/commands/browser-context-commands.cpp:203 msgid "C_reate" msgstr "作成(_C)" #: ../code/commands/browser-context-commands.cpp:207 msgid "New Directory" msgstr "新規ディレクトリ" #: ../code/commands/browser-context-commands.cpp:208 #: ../code/commands/file-tasks/task-new.cpp:38 msgid "New Document" msgstr "新規ドキュメント" #: ../code/commands/browser-context-commands.cpp:224 #: ../code/commands/file-tasks/task-open-file.cpp:24 msgid "Choose a text file to open" msgstr "開くテキストファイルの選択" #: ../code/commands/file-tasks/task-export-html.cpp:29 msgid "Choose a location to export document \"%1\" to" msgstr "\"%1\"をエクスポートする先の選択" #: ../code/commands/file-tasks/task-open.cpp:48 msgid "Querying \"%1\"..." msgstr "\"%1\"の問い合わせ..." #: ../code/commands/file-tasks/task-open.cpp:105 #: ../code/operations/operation-open.cpp:437 #: ../code/operations/operation-open-multiple.cpp:159 msgid "Failed to open document \"%1\"" msgstr "\"%1\"を開くのに失敗しました" #: ../code/commands/file-tasks/task-save.cpp:26 msgid "Choose a location to save document \"%1\" to" msgstr "\"%1\"を保存する先の選択" #. Help browser could not be invoked, show an error message to the user. #: ../code/commands/help-commands.cpp:69 msgid "There was an error displaying help." msgstr "ヘルプ表示時にエラーが発生しました。" #: ../code/commands/help-commands.cpp:92 msgid "Contributors:" msgstr "貢献者:" #: ../code/commands/help-commands.cpp:98 msgid "British English:" msgstr "British English:" #: ../code/commands/help-commands.cpp:100 msgid "German:" msgstr "German:" #: ../code/commands/help-commands.cpp:117 msgid "" "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.\n" "\n" "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.\n" "\n" "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" msgstr "" "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.\n" "\n" "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.\n" "\n" "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" #: ../code/commands/subscription-commands.cpp:259 msgid "" "The connection to the publisher of this document has been lost. Further " "changes to the document could not be synchronized to others anymore, " "therefore the document cannot be edited anymore.\n" "\n" "Please note also that it is possible that not all of your latest changes " "have reached the publisher before the connection was lost." msgstr "" "このドキュメントの発行者への接続が失われました。ドキュメントへの変更の同期が" "これ以上できないため、このドキュメントはこれ以上編集できません。\n" "\n" "発行者への接続が失われる前に伝達された変更でも適用されていない可能性がありま" "す。" #: ../code/commands/synchronization-commands.cpp:32 msgid "Synchronization in progress... %1%%" msgstr "同期中です... %1%%" #. Document cannot be used if an error happened #. during synchronization. #: ../code/commands/synchronization-commands.cpp:44 msgid "This document cannot be used." msgstr "このドキュメントは使用できません。" #: ../code/commands/synchronization-commands.cpp:47 #: ../code/commands/user-join-commands.cpp:40 msgid "" "If you have an idea what could have caused the problem, then you may attempt " "to solve it and try again (after having closed this document). Otherwise it " "is most likely a bug in the software. In that case, please file a bug report " "at http://gobby.0x539.de/trac/newticket and provide as much information as " "you can, including what you did when the problem occurred and how to " "reproduce the problem (if possible) so that we can fix the problem in a " "later version. Thank you." msgstr "" "もしなにがこの問題を引き起こしているか分かる場合、それを解決してもう一度試し" "てください(このドキュメントを閉じた後)。そうでなければこのソフトウェアのバグ" "の可能性があります。この場合は私たちは今後のバージョンで問題を修復できるよう" "に、http://gobby.0x539.de/trac/newticket(英語)にバグレポートを記録し、この問" "題が起きたときどんな操作をしていたか、または問題の再現の方法(可能ならば)を含" "むできるだけたくさんの情報を提供してください。よろしくお願いします。" #: ../code/commands/synchronization-commands.cpp:61 msgid "Synchronization failed: %1" msgstr "同期に失敗しました: %1" #. TODO: Adjust this for chat sessions #: ../code/commands/user-join-commands.cpp:35 msgid "" "You can still watch others editing the document, but you cannot edit it " "yourself." msgstr "" "このドキュメントが他人によって編集されるのを見ることができますが、編集はでき" "ません。" #: ../code/commands/user-join-commands.cpp:54 msgid "User Join failed: %1" msgstr "ユーザーの参加に失敗: %1" #: ../code/commands/user-join-commands.cpp:283 msgid "User Join in progress..." msgstr "ユーザーの参加処理を行っています..." #: ../code/core/browser.cpp:113 msgid "_Direct Connection" msgstr "直接接続(_D)" #: ../code/core/browser.cpp:115 msgid "Host Name:" msgstr "ホスト名:" #: ../code/core/browser.cpp:301 ../code/core/browser.cpp:425 msgid "Connection to \"%1\" failed" msgstr "\"%1\"への接続が失敗しました" #: ../code/core/browser.cpp:354 msgid "Could not resolve \"%1\"" msgstr "\"%1\"の解決に失敗しました" #: ../code/core/browser.cpp:428 msgid "Device \"%1\" does not exist" msgstr "デバイス\"%1\"は存在しません" #: ../code/core/browser.cpp:464 msgid "Resolving \"%1\"..." msgstr "\"%1\"を解決しています..." #: ../code/core/header.cpp:198 msgid "_None" msgstr "_None" #: ../code/core/header.cpp:222 msgid "_File" msgstr "ファイル(_F)" #: ../code/core/header.cpp:225 msgid "_Open..." msgstr "開く(_O)" #: ../code/core/header.cpp:228 msgid "Open _Location..." msgstr "場所を開く(_L)" #: ../code/core/header.cpp:232 msgid "Save _As..." msgstr "名前をつけて保存(_A)" #: ../code/core/header.cpp:236 ../code/core/iconmanager.cpp:40 msgid "Save All" msgstr "すべて保存" #: ../code/core/header.cpp:236 msgid "Save all open files locally" msgstr "開かれているすべてのファイルをローカルへ保存" #: ../code/core/header.cpp:238 msgid "Export As _HTML..." msgstr "HTMLとしてエクスポート(_H)" #: ../code/core/header.cpp:241 msgid "Connect _to Server..." msgstr "サーバーへ接続(_T)" #: ../code/core/header.cpp:246 msgid "_Edit" msgstr "編集(_E)" #: ../code/core/header.cpp:254 msgid "_Find..." msgstr "検索(_F)" #: ../code/core/header.cpp:256 msgid "Find Ne_xt" msgstr "次を検索(_X)" #: ../code/core/header.cpp:257 msgid "Find next match of phrase searched for" msgstr "フレーズ検索の次を検索" #: ../code/core/header.cpp:260 msgid "Find Pre_vious" msgstr "前を検索(_V)" #: ../code/core/header.cpp:261 msgid "Find previous match of phrase searched for" msgstr "フレーズ検索の前を検索" #: ../code/core/header.cpp:266 msgid "Find and Rep_lace..." msgstr "置換(_L)" #: ../code/core/header.cpp:270 msgid "Go to _Line..." msgstr "指定行へ移動(_L)" #: ../code/core/header.cpp:274 msgid "Pr_eferences..." msgstr "設定(_E)" #: ../code/core/header.cpp:276 msgid "_View" msgstr "表示(_V)" #: ../code/core/header.cpp:279 msgid "Reset User Colors" msgstr "ユーザーカラーをリセット" #: ../code/core/header.cpp:280 msgid "Hide user colors in current document" msgstr "このドキュメントユーザーカラーを非表示" #: ../code/core/header.cpp:283 msgid "View Toolbar" msgstr "ツールバー" #: ../code/core/header.cpp:284 msgid "Whether to show the toolbar" msgstr "ツールバーを表示するかどうか" #: ../code/core/header.cpp:288 msgid "View Statusbar" msgstr "ステータスバー" #: ../code/core/header.cpp:289 msgid "Whether to show the statusbar" msgstr "ステータスバーを表示するかどうか" #: ../code/core/header.cpp:293 msgid "View Document Browser" msgstr "ドキュメントブラウザ" #: ../code/core/header.cpp:294 msgid "Whether to show the document browser" msgstr "ドキュメントブラウザを表示するかどうか" #: ../code/core/header.cpp:298 msgid "View Chat" msgstr "チャット" #: ../code/core/header.cpp:299 msgid "Whether to show the chat pane" msgstr "チャットを表示するかどうか" #: ../code/core/header.cpp:303 msgid "View Document User List" msgstr "ドキュメントユーザーリスト" #: ../code/core/header.cpp:304 msgid "Whether to show the user list for documents" msgstr "このドキュメントのユーザーリストを表示するかどうか" #: ../code/core/header.cpp:308 msgid "View Chat User List" msgstr "チャットユーザーリスト" #: ../code/core/header.cpp:309 msgid "Whether to show the user list for the chat" msgstr "チャットユーザーリストを表示するかどうか" #: ../code/core/header.cpp:313 msgid "_Highlight Mode" msgstr "強調表示モード(_H)" #: ../code/core/header.cpp:319 msgid "_Help" msgstr "ヘルプ(_H)" #: ../code/core/header.cpp:322 msgid "_Contents" msgstr "目次(_C)" #: ../code/core/header.cpp:323 msgid "Opens the Gobby manual" msgstr "Gobbyのマニュアルを開く" #: ../code/core/header.cpp:326 msgid "_About..." msgstr "Gobbyについて(_A)" #: ../code/core/header.cpp:327 msgid "Shows Gobby's copyright and credits" msgstr "Gobbyの著作権やクレジットの表示" #: ../code/core/iconmanager.cpp:46 msgid "User list" msgstr "ユーザーリスト" #: ../code/core/iconmanager.cpp:52 msgid "Document list" msgstr "ドキュメントリスト" #: ../code/core/iconmanager.cpp:58 ../code/window.cpp:49 msgid "Chat" msgstr "チャット" #: ../code/core/iconmanager.cpp:65 msgid "User Color Indicator" msgstr "ユーザーカラー表示" #: ../code/core/sessionuserview.cpp:41 msgid "User List" msgstr "ユーザーリスト" #: ../code/core/statusbar.cpp:395 msgid "Ln %1, Col %2\t%3" msgstr "%1行, %2列\t%3" #: ../code/core/statusbar.cpp:398 msgid "OVR" msgstr "上書" #: ../code/core/statusbar.cpp:398 msgid "INS" msgstr "挿入" #: ../code/core/textsessionview.cpp:519 msgid "Text written by %1" msgstr "%1によって書かれたテキスト" #: ../code/core/textsessionview.cpp:525 msgid "Unowned text" msgstr "所有していないテキスト" #: ../code/core/userlist.cpp:105 msgid "Users" msgstr "ユーザー" #: ../code/dialogs/connection-dialog.cpp:28 msgid "Connect to Server" msgstr "サーバーへ接続" #: ../code/dialogs/connection-dialog.cpp:32 msgid "Please enter a host name with which to establish a connection." msgstr "接続先のホスト名を入力してください" #: ../code/dialogs/connection-dialog.cpp:34 msgid "_Remote Endpoint:" msgstr "接続先(_R)" #: ../code/dialogs/document-location-dialog.cpp:29 msgid "Document Name:" msgstr "ドキュメント名:" #: ../code/dialogs/document-location-dialog.cpp:156 msgid "Select document's target location" msgstr "ドキュメントの対象場所を選択" #: ../code/dialogs/document-location-dialog.cpp:158 msgid "Choose a directory to create the document into:" msgstr "ドキュメントをいれるディレクトリ名:" #: ../code/dialogs/document-location-dialog.cpp:164 msgid "Select documents' target location" msgstr "ドキュメントの対象場所を選択" #: ../code/dialogs/document-location-dialog.cpp:166 msgid "Choose a directory to create the documents into:" msgstr "ドキュメントをいれるディレクトリ名:" #: ../code/dialogs/find-dialog.cpp:46 ../code/dialogs/find-dialog.cpp:144 msgid "Find" msgstr "検索" #: ../code/dialogs/find-dialog.cpp:49 msgid "_Search for:" msgstr "検索文字列(_S):" #: ../code/dialogs/find-dialog.cpp:51 msgid "Replace _with:" msgstr "置換先(_W)" #: ../code/dialogs/find-dialog.cpp:53 msgid "_Match case" msgstr "大文字小文字の区別(_M)" #: ../code/dialogs/find-dialog.cpp:54 msgid "Match _entire word only" msgstr "完全単語一致(_E)" #: ../code/dialogs/find-dialog.cpp:55 msgid "Search _backwards" msgstr "前へ検索(_B)" #: ../code/dialogs/find-dialog.cpp:56 msgid "Wra_p around" msgstr "行をはさむ(_P)" #: ../code/dialogs/find-dialog.cpp:102 msgid "Replace _All" msgstr "すべて置換(_A)" #: ../code/dialogs/find-dialog.cpp:104 msgid "_Replace" msgstr "置換(_R)" #: ../code/dialogs/find-dialog.cpp:144 msgid "Replace" msgstr "置換" #: ../code/dialogs/find-dialog.cpp:163 ../code/dialogs/find-dialog.cpp:179 msgid "Phrase \"%1\" has not been found" msgstr "フレーズ\"%1\"は発見されません" #: ../code/dialogs/find-dialog.cpp:337 msgid "No occurrence has been replaced" msgstr "置換されませんでした" #: ../code/dialogs/find-dialog.cpp:343 msgid "%1 occurrence has been replaced" msgid_plural "%1 occurrences have been replaced" msgstr[0] "%1件置換されました" #: ../code/dialogs/goto-dialog.cpp:27 msgid "Go to line" msgstr "指定行へ移動" #: ../code/dialogs/goto-dialog.cpp:30 msgid "Line _number:" msgstr "行番号(_N):" #: ../code/dialogs/goto-dialog.cpp:51 msgid "Go To _Line" msgstr "指定行へ移動(_L)" #: ../code/dialogs/initial-dialog.cpp:49 msgid "Choose a user color" msgstr "ユーザーカラーの選択" #: ../code/dialogs/initial-dialog.cpp:53 msgid "Welcome to Gobby" msgstr "Gobbyへようそこ" #: ../code/dialogs/initial-dialog.cpp:62 msgid "" "Before we start, a few options need to be configured. You can later change " "them by choosing Edit ▸ Preferences from the menu." msgstr "" "開始する前に、いくつかのオプションを設定する必要があります。これらは後から" "「設定」メニューで変更できます。" #: ../code/dialogs/initial-dialog.cpp:69 msgid "User Name" msgstr "ユーザー名" #: ../code/dialogs/initial-dialog.cpp:71 msgid "Your name as shown to other users." msgstr "他のユーザーへ表示されるあなたの名前" #: ../code/dialogs/initial-dialog.cpp:80 msgid "User Color" msgstr "ユーザーカラー" #: ../code/dialogs/initial-dialog.cpp:82 msgid "The color with which text you have written is branded." msgstr "あなたが書いた文章につけられる色" #: ../code/dialogs/open-location-dialog.cpp:27 msgid "Open Location" msgstr "場所を開く" #: ../code/dialogs/open-location-dialog.cpp:28 msgid "Enter the _location (URI) of the file you would like to open:" msgstr "開きたいファイルがある場所(URI)(_L):" #: ../code/dialogs/password-dialog.cpp:27 msgid "Password Required" msgstr "パスワードが必要です" #: ../code/dialogs/password-dialog.cpp:33 msgid "Connection to host \"%1\" requires a password." msgstr "ホスト\"%1\"への接続にはパスワードが必要です。" #: ../code/dialogs/password-dialog.cpp:34 msgid "Invalid password for host \"%1\". Please try again." msgstr "ホスト\"%1\"のパスワードが違います。再試行してください。" #: ../code/dialogs/password-dialog.cpp:37 msgid "Server _Password:" msgstr "サーバーパスワード(_P):" #: ../code/dialogs/preferences-dialog.cpp:232 msgid "Settings" msgstr "設定" #: ../code/dialogs/preferences-dialog.cpp:233 msgid "Paths" msgstr "パス" #: ../code/dialogs/preferences-dialog.cpp:235 msgid "User name:" msgstr "ユーザー名:" #: ../code/dialogs/preferences-dialog.cpp:237 msgid "User color:" msgstr "ユーザーカラー:" #: ../code/dialogs/preferences-dialog.cpp:238 msgid "Choose a new user color" msgstr "新しいユーザーカラーを選択してください" #: ../code/dialogs/preferences-dialog.cpp:241 msgid "Host directory:" msgstr "ホストディレクトリ:" #: ../code/dialogs/preferences-dialog.cpp:283 msgid "The directory into which locally hosted sessions are permanently stored" msgstr "ローカルでホストされたセッションが恒久的に記憶されるディレクトリ" #: ../code/dialogs/preferences-dialog.cpp:300 msgid "Tab Stops" msgstr "タブストップ" #: ../code/dialogs/preferences-dialog.cpp:301 msgid "Indentation" msgstr "インデント" #: ../code/dialogs/preferences-dialog.cpp:302 msgid "Home/End Behavior" msgstr "Home/Endキーの挙動" #: ../code/dialogs/preferences-dialog.cpp:303 msgid "File Saving" msgstr "ファイルの保存" #: ../code/dialogs/preferences-dialog.cpp:304 msgid "_Tab width:" msgstr "タブ幅(_T):" #: ../code/dialogs/preferences-dialog.cpp:306 msgid "Insert _spaces instead of tabs" msgstr "タブ文字の代わりにスペースを挿入する(_I)" #: ../code/dialogs/preferences-dialog.cpp:307 msgid "Enable automatic _indentation" msgstr "オートインデントを有効にする(_I)" #: ../code/dialogs/preferences-dialog.cpp:308 msgid "Smart _home/end" msgstr "スマートhome/end(_H)" #: ../code/dialogs/preferences-dialog.cpp:309 msgid "Enable _automatic saving of documents" msgstr "ドキュメントの自動保存を有効にする(_A)" #: ../code/dialogs/preferences-dialog.cpp:311 msgid "Autosave interval in _minutes:" msgstr "自動保存間隔(分)(_M):" #: ../code/dialogs/preferences-dialog.cpp:332 msgid "" "With this option enabled, Home/End keys move to first/last character before " "going to the start/end of the line." msgstr "" "このオプションによって、Home/Endキーは行頭/行末にいく前に最初/最後の文字へ移" "動するようになります。" #: ../code/dialogs/preferences-dialog.cpp:402 msgid "Text Wrapping" msgstr "ワードラップ" #: ../code/dialogs/preferences-dialog.cpp:403 msgid "Line Numbers" msgstr "行番号" #: ../code/dialogs/preferences-dialog.cpp:404 msgid "Current Line" msgstr "現在行" #: ../code/dialogs/preferences-dialog.cpp:405 msgid "Right Margin" msgstr "右マージン" #: ../code/dialogs/preferences-dialog.cpp:406 msgid "Bracket Matching" msgstr "対応する括弧の表示" #: ../code/dialogs/preferences-dialog.cpp:407 msgid "Whitespace Display" msgstr "空白文字の表示" #: ../code/dialogs/preferences-dialog.cpp:408 msgid "Enable text wrapping" msgstr "ワードラップを有効にする" #: ../code/dialogs/preferences-dialog.cpp:409 msgid "Do not split words over two lines" msgstr "一単語を二行に分割しない" #: ../code/dialogs/preferences-dialog.cpp:410 msgid "Display line numbers" msgstr "行番号を表示する" #: ../code/dialogs/preferences-dialog.cpp:411 msgid "Highlight current line" msgstr "現在の行をハイライトする" #: ../code/dialogs/preferences-dialog.cpp:412 msgid "Display right margin" msgstr "右マージンの表示" #: ../code/dialogs/preferences-dialog.cpp:413 msgid "Right margin at column:" msgstr "右マージンの列数:" #: ../code/dialogs/preferences-dialog.cpp:414 msgid "Highlight matching bracket" msgstr "対応する括弧のハイライト" #: ../code/dialogs/preferences-dialog.cpp:465 msgid "Display no whitespace" msgstr "空白文字を表示しない" #: ../code/dialogs/preferences-dialog.cpp:468 msgid "Display spaces" msgstr "スペースの表示" #: ../code/dialogs/preferences-dialog.cpp:472 msgid "Display tabs" msgstr "タブ文字の表示" #: ../code/dialogs/preferences-dialog.cpp:476 msgid "Display tabs and spaces" msgstr "タブ文字とスペースの表示" #: ../code/dialogs/preferences-dialog.cpp:526 msgid "Toolbar" msgstr "ツールバー" #: ../code/dialogs/preferences-dialog.cpp:527 msgid "Font" msgstr "フォント" #: ../code/dialogs/preferences-dialog.cpp:528 msgid "Color Scheme" msgstr "カラースキーム" #: ../code/dialogs/preferences-dialog.cpp:535 msgid "Show text only" msgstr "テキストのみ表示" #: ../code/dialogs/preferences-dialog.cpp:537 msgid "Show icons only" msgstr "アイコンのみ表示" #: ../code/dialogs/preferences-dialog.cpp:539 msgid "Show both icons and text" msgstr "アイコンとテキストの表示" #: ../code/dialogs/preferences-dialog.cpp:541 msgid "Show text besides icons" msgstr "アイコンの隣にテキストを表示" #: ../code/dialogs/preferences-dialog.cpp:620 msgid "Trusted CAs" msgstr "信頼したCA" #: ../code/dialogs/preferences-dialog.cpp:621 msgid "Secure Connection" msgstr "保護された接続" #: ../code/dialogs/preferences-dialog.cpp:622 msgid "Select a file containing trusted CAs" msgstr "信頼されたCAを含むファイルの選択" #: ../code/dialogs/preferences-dialog.cpp:639 msgid "Use TLS if possible" msgstr "可能であればTLSを使用する" #: ../code/dialogs/preferences-dialog.cpp:642 msgid "Always use TLS" msgstr "常にTLSを使用する" #: ../code/dialogs/preferences-dialog.cpp:654 msgid "Preferences" msgstr "設定" #: ../code/dialogs/preferences-dialog.cpp:659 msgid "User" msgstr "ユーザー" #: ../code/dialogs/preferences-dialog.cpp:660 msgid "Editor" msgstr "エディタ" #: ../code/dialogs/preferences-dialog.cpp:661 msgid "View" msgstr "表示" #: ../code/dialogs/preferences-dialog.cpp:662 msgid "Appearance" msgstr "外観" #: ../code/dialogs/preferences-dialog.cpp:663 msgid "Security" msgstr "セキュリティ" #: ../code/main.cpp:196 msgid "Gobby options" msgstr "Gobbyオプション" #: ../code/main.cpp:196 msgid "Options related to Gobby" msgstr "Gobbyに関連したオプション" #: ../code/main.cpp:201 msgid "Display version information and exit" msgstr "バージョン情報を表示して終了" #: ../code/main.cpp:208 msgid "Also start a new Gobby instance when there is one running already" msgstr "Gobbyが既にひとつ起動していても新しいインスタンスを起動する" #: ../code/main.cpp:216 msgid "Connect to given host on startup, can be given multiple times" msgstr "起動時に与えられたホストへ接続します。複数回指定できます。" #: ../code/main.cpp:217 msgid "HOSTNAME" msgstr "HOSTNAME" #: ../code/operations/operation-delete.cpp:42 msgid "Removing node \"%1\"..." msgstr "ノード\"%1\"を削除..." #: ../code/operations/operation-delete.cpp:57 msgid "Failed to delete node \"%1\"" msgstr "ノード\"%1\"の削除に失敗" #: ../code/operations/operation-export-html.cpp:166 #, c-format msgid "written by: %s" msgstr "%sによって書かれた" #: ../code/operations/operation-export-html.cpp:239 msgid "" msgstr "<日付を表示できません>" #. %1$s is session name/hostname #. %2$s is path within the session #. %3$s is current date as formatted by %c, #. %4$s is a link to the gobby site, it must be present because #. we need to handle that manually to insert a hyperlink #. instead of just printf'ing it. #: ../code/operations/operation-export-html.cpp:252 #, c-format msgid "Document generated from %1$s:%2$s at %3$s by %4$s" msgstr "ドキュメントは%3$sの%1$s:%2$sから%4$sによって生成された" #: ../code/operations/operation-export-html.cpp:393 msgid "Participants" msgstr "参加者" #: ../code/operations/operation-export-html.cpp:454 msgid "Exporting document \"%1\" to \"%2\" in HTML..." msgstr "\"%1\"を\"%2\"へHTMLでエクスポート..." #: ../code/operations/operation-export-html.cpp:526 msgid "Failed to export document \"%1\" to HTML" msgstr "\"%1\"のHTMLでのエクスポートに失敗しました" #: ../code/operations/operation-new.cpp:56 msgid "Creating directory \"%1\"..." msgstr "ディレクトリ\"%1\"の作成..." #: ../code/operations/operation-new.cpp:57 msgid "Creating document \"%1\"..." msgstr "ドキュメント\"%1\"の作成" #: ../code/operations/operation-new.cpp:73 msgid "Failed to create directory \"%1\"" msgstr "ディレクトリ\"%1\"の作成に失敗しました" #: ../code/operations/operation-new.cpp:74 msgid "Failed to create document \"%1\"" msgstr "ドキュメント\"%1\"の作成に失敗しました" #. Translators: This is the 8 bit encoding that is tried when #. autodetecting a file's encoding. #: ../code/operations/operation-open.cpp:38 msgid "ISO-8859-1" msgstr "ISO-8859-1" #: ../code/operations/operation-open.cpp:89 msgid "Opening document \"%1\"..." msgstr "ドキュメント\"%1\"を開く..." #: ../code/operations/operation-open.cpp:124 msgid "" "The directory into which the new document was supposed to be inserted has " "been removed" msgstr "新しいドキュメントを挿入しようとしたディレクトリは削除されています" #: ../code/operations/operation-open.cpp:313 msgid "The file contains data not in the specified encoding" msgstr "入力されたエンコーディングでないデータがファイルに含まれています" #: ../code/operations/operation-open.cpp:324 msgid "" "The file either contains data in an unknown encoding, or it contains binary " "data." msgstr "未知のエンコーディングか、バイナリデータがファイルに含まれています" #: ../code/operations/operation-open-multiple.cpp:84 msgid "Parent folder was removed" msgstr "親フォルダは削除されました" #: ../code/operations/operation-open-multiple.cpp:172 msgid "Failed to open multiple documents" msgstr "複数のファイルを開くのに失敗" #: ../code/operations/operation-save.cpp:74 msgid "Saving document \"%1\" to \"%2\"..." msgstr "\"%1\"を\"%2\"へ保存..." #: ../code/operations/operation-save.cpp:227 msgid "" "The document contains one or more characters that cannot be encoded in the " "specified character coding." msgstr "" "指定された文字エンコーディングでエンコードできない文字がドキュメントに含まれ" "ています" #: ../code/operations/operation-save.cpp:288 msgid "Failed to save document \"%1\"" msgstr "ドキュメント\"%1\"の保存に失敗しました" #: ../code/util/file.cpp:67 ../code/util/file.cpp:76 msgid "Could not create directory \"%1\": %2" msgstr "ディレクトリ\"%1\"を作成できませんでした: %2" #: ../code/window.cpp:112 msgid "Document Browser" msgstr "ドキュメントブラウザ" #: ../code/window.cpp:168 msgid "You are still connected to a session" msgstr "まだセッションに接続されています" #: ../code/window.cpp:176 msgid "Do you want to close Gobby nevertheless?" msgstr "それでもGobbyを閉じてもいいですか?" #: ../code/window.cpp:182 msgid "C_ancel" msgstr "キャンセル(_C)" #: ../gobby-0.5.desktop.in.h:1 msgid "Collaborative Editor" msgstr "共同作業テキストエディタ" #: ../gobby-0.5.desktop.in.h:2 msgid "Edit text files collaboratively" msgstr "テキストを共同作業で編集する" #: ../gobby-0.5.desktop.in.h:3 msgid "Gobby" msgstr "Gobby" #: ../gobby-0.5.desktop.in.h:4 msgid "Gobby Collaborative Editor (0.5)" msgstr "Gobby Collaborative Editor (0.5)" gobby-0.4.94/po/ChangeLog0000644000175000017500000000413311531722663012032 000000000000002010-11-18 Takahiro Sunaga * ja.po: Add Japanese translation. * LINGUAS: Add ja. 2010-11-16 Claude Paroz * fr.po: Add French translation. * LINGUAS: Add fr. 2010-06-20 Armin Burgmeier * en_GB.po: * de.po: Brought up to date. 2010-06-20 Γιάννης Κασκαμανίδης * LINGUAS: Added el_GR. * el_GR.po: Added greek translation. 2010-02-26 Armin Burgmeier * de.po: Choose v as mnemonic for "Direktverbindung" as d is already in use by "_Datei" in the menu bar. 2010-02-14 Benjamin Herr * en_GB.po: * de.po: Brought up to date 2010-02-14 Armin Burgmeier , Benjamin Herr , Michael Frey * de.po: Added german translation. * LINGUAS: Added de. 2009-12-19 Armin Burgmeier * gobby05.pot: Added .pot file, to allow synchronization with launchpad. * Makefile.in.in: Include gobby05.pot in distribution tarball. 2009-12-19 Armin Burgmeier * en_GB.po: Update. 2009-12-16 Armin Burgmeier * POTFILES.in: Updated. 2009-12-03 Gabríel A. Pétursson * LINGUAS: * en_GB.po: Added British English translation. 2009-11-15 Armin Burgmeier * POTFILES.in: Updated. * LINGUAS: Removed all languages. * *.po: Removed as these were just remains from Gobby 0.4.x which contained only very few strings that are still valid, and a lot of invalid fuzzy matches. 2009-08-29 Armin Burgmeier * POTFILES.in: Updated. 2009-04-24 Armin Burgmeier * POTFILES.in: Updated. 2008-11-23 Armin Burgmeier * POTFILES.in: Added contrib/gobby-0.5.desktop.in. * gobby05.pot: Regenerated. * *.po: Updated for the new strings. 2008-10-16 Armin Burgmeier * POTFILES.in: * gobby.pot: Updated for 0.4.90 release. 2008-09-19 Armin Burgmeier * POTFILES.in: Regenerated. * gobby.pot: * *.po: Updated to the strings of 0.4.90. gobby-0.4.94/po/fr.po0000644000175000017500000007407111531722663011237 00000000000000# French translation of Gobby. # Copyright (C) 2010, Listed translators # This file is distributed under the same license as the Gobby package. # Claude Paroz , 2010 # msgid "" msgstr "" "Project-Id-Version: Gobby 0.5 fr\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2010-11-16 23:39+0100\n" "PO-Revision-Date: 2010-11-16 23:04+0100\n" "Last-Translator: Claude Paroz \n" "Language-Team: French \n" "Language: French\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" #: ../code/commands/browser-commands.cpp:109 msgid "Subscribing to %1..." msgstr "Inscription à %1..." #: ../code/commands/browser-commands.cpp:122 msgid "Subscribing to chat on %1..." msgstr "Inscription à la discussion sur %1..." #: ../code/commands/browser-commands.cpp:307 msgid "Subscription failed" msgstr "Échec de l'inscription" #: ../code/commands/browser-context-commands.cpp:97 #, fuzzy msgid "_Disconnect from Server" msgstr "Connexion à un serveur" #: ../code/commands/browser-context-commands.cpp:116 msgid "Create Do_cument..." msgstr "Créer un do_cument..." #: ../code/commands/browser-context-commands.cpp:151 #, fuzzy msgid "Create Di_rectory..." msgstr "Créer un dossier..." #: ../code/commands/browser-context-commands.cpp:164 msgid "_Open Document..." msgstr "_Ouvrir un document..." #: ../code/commands/browser-context-commands.cpp:183 msgid "D_elete" msgstr "_Supprimer" #: ../code/commands/browser-context-commands.cpp:232 msgid "Choose a name for the directory" msgstr "Choisissez un nom pour le dossier" #: ../code/commands/browser-context-commands.cpp:233 msgid "Choose a name for the document" msgstr "Choisissez un nom pour le document" #: ../code/commands/browser-context-commands.cpp:234 msgid "_Directory Name:" msgstr "Nom du _dossier :" #: ../code/commands/browser-context-commands.cpp:235 msgid "_Document Name:" msgstr "Nom du _document :" #: ../code/commands/browser-context-commands.cpp:238 msgid "C_reate" msgstr "C_réer" #: ../code/commands/browser-context-commands.cpp:242 msgid "New Directory" msgstr "Nouveau dossier" #: ../code/commands/browser-context-commands.cpp:243 #: ../code/commands/file-tasks/task-new.cpp:38 msgid "New Document" msgstr "Nouveau document" #: ../code/commands/browser-context-commands.cpp:259 #: ../code/commands/file-tasks/task-open-file.cpp:24 msgid "Choose a text file to open" msgstr "Choisissez un fichier texte à ouvrir" #: ../code/commands/file-tasks/task-export-html.cpp:29 msgid "Choose a location to export document \"%1\" to" msgstr "Choisissez un emplacement pour y exporter le document « %1 »" #: ../code/commands/file-tasks/task-open.cpp:48 msgid "Querying \"%1\"..." msgstr "Requête vers « %1 »..." #: ../code/commands/file-tasks/task-open.cpp:105 #: ../code/operations/operation-open.cpp:437 #: ../code/operations/operation-open-multiple.cpp:159 msgid "Failed to open document \"%1\"" msgstr "Le document « %1 » n'a pas pu être ouvert" #: ../code/commands/file-tasks/task-save.cpp:26 msgid "Choose a location to save document \"%1\" to" msgstr "Choisissez un emplacement pour y enregistrer le document « %1 »" #. Help browser could not be invoked, show an error message to the user. #: ../code/commands/help-commands.cpp:69 msgid "There was an error displaying help." msgstr "Une erreur est survenue durant l'affichage de l'aide" #: ../code/commands/help-commands.cpp:92 msgid "Contributors:" msgstr "Contributeurs :" #: ../code/commands/help-commands.cpp:98 msgid "British English:" msgstr "Anglais britannique :" #: ../code/commands/help-commands.cpp:100 msgid "German:" msgstr "Allemand :" #: ../code/commands/help-commands.cpp:117 msgid "" "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.\n" "\n" "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.\n" "\n" "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" msgstr "" "Ce programme est un logiciel libre ; vous pouvez le redistribuer et/ou le " "modifier au titre des clauses de la Licence Publique Générale GNU, telle que " "publiée par la Free Software Foundation ; soit la version 2 de la Licence, " "ou (à votre discrétion) une version ultérieure quelconque.\n" "Ce programme est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE " "GARANTIE ; sans même une garantie implicite de COMMERCIABILITÉ ou DE " "CONFORMITÉ À UNE UTILISATION PARTICULIÈRE. Voir la Licence Publique Générale " "GNU pour plus de détails.\n" "Vous devriez avoir reçu un exemplaire de la Licence Publique Générale GNU " "avec ce programme ; si ce n'est pas le cas, écrivez à la Free Software " "Foundation Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA." #: ../code/commands/subscription-commands.cpp:259 msgid "" "The connection to the publisher of this document has been lost. Further " "changes to the document could not be synchronized to others anymore, " "therefore the document cannot be edited anymore.\n" "\n" "Please note also that it is possible that not all of your latest changes " "have reached the publisher before the connection was lost." msgstr "" "La connexion à l'éditeur de ce document a été interrompue. De nouvelles " "modifications au document ne pourraient plus être partagées avec les autres, " "c'est pourquoi le document ne peut plus être modifié.\n" "\n" "Sachez également qu'il n'est pas certain que vos dernières modifications " "aient pu être transmises à l'éditeur avant la perte de la connexion." #: ../code/commands/synchronization-commands.cpp:32 msgid "Synchronization in progress... %1%%" msgstr "Synchronisation en cours... %1 %%" #. Document cannot be used if an error happened #. during synchronization. #: ../code/commands/synchronization-commands.cpp:44 msgid "This document cannot be used." msgstr "Ce document est inutilisable." #: ../code/commands/synchronization-commands.cpp:47 #: ../code/commands/user-join-commands.cpp:40 msgid "" "If you have an idea what could have caused the problem, then you may attempt " "to solve it and try again (after having closed this document). Otherwise it " "is most likely a bug in the software. In that case, please file a bug report " "at http://gobby.0x539.de/trac/newticket and provide as much information as " "you can, including what you did when the problem occurred and how to " "reproduce the problem (if possible) so that we can fix the problem in a " "later version. Thank you." msgstr "" "Si vous avez une idée sur la cause de ce problème, vous pouvez tenter de le " "résoudre puis essayer à nouveau (après avoir fermé ce document). Sinon, " "c'est probablement une anomalie du logiciel. Dans ce cas, veuillez signaler " "cette erreur dans un rapport sur http://gobby.0x539.de/trac/newticket et " "indiquer le maximum d'informations, y compris ce que vous faisiez lorsque le " "problème est survenu et comment il est possible de le reproduire (le cas " "échéant), afin que nous puissions corriger cette erreur dans une prochaine " "version. Merci." #: ../code/commands/synchronization-commands.cpp:61 msgid "Synchronization failed: %1" msgstr "Échec de synchronisation : %1" #. TODO: Adjust this for chat sessions #: ../code/commands/user-join-commands.cpp:35 msgid "" "You can still watch others editing the document, but you cannot edit it " "yourself." msgstr "" "Vous pouvez encore voir les modifications des autres personnes, mais vous ne " "pouvez plus modifier ce document vous-même." #: ../code/commands/user-join-commands.cpp:54 msgid "User Join failed: %1" msgstr "Échec de l'adhésion d'un utilisateur : %1" #: ../code/commands/user-join-commands.cpp:283 msgid "User Join in progress..." msgstr "Adhésion d'utilisateur en cours..." #: ../code/core/browser.cpp:113 msgid "_Direct Connection" msgstr "Connexion _directe" #: ../code/core/browser.cpp:115 msgid "Host Name:" msgstr "Nom d'hôte :" #: ../code/core/browser.cpp:301 ../code/core/browser.cpp:425 msgid "Connection to \"%1\" failed" msgstr "La connexion à « %1 » a échoué" #: ../code/core/browser.cpp:354 msgid "Could not resolve \"%1\"" msgstr "Impossible de résoudre « %1 »" #: ../code/core/browser.cpp:428 msgid "Device \"%1\" does not exist" msgstr "Le périphérique « %1 » n'existe pas" #: ../code/core/browser.cpp:464 msgid "Resolving \"%1\"..." msgstr "Résolution de « %1 »..." #: ../code/core/header.cpp:198 msgid "_None" msgstr "_Aucun" #: ../code/core/header.cpp:222 msgid "_File" msgstr "_Fichier" #: ../code/core/header.cpp:225 msgid "_Open..." msgstr "_Ouvrir..." #: ../code/core/header.cpp:228 msgid "Open _Location..." msgstr "Ouvrir un _emplacement..." #: ../code/core/header.cpp:232 msgid "Save _As..." msgstr "Enregistrer _sous..." #: ../code/core/header.cpp:236 ../code/core/iconmanager.cpp:40 msgid "Save All" msgstr "Tout enregistrer" #: ../code/core/header.cpp:236 msgid "Save all open files locally" msgstr "Enregistrer localement tous les fichiers ouverts" #: ../code/core/header.cpp:238 msgid "Export As _HTML..." msgstr "Exporter en _HTML..." #: ../code/core/header.cpp:241 msgid "Connect _to Server..." msgstr "Se _connecter à un serveur..." #: ../code/core/header.cpp:246 msgid "_Edit" msgstr "É_dition" #: ../code/core/header.cpp:254 msgid "_Find..." msgstr "_Rechercher..." #: ../code/core/header.cpp:256 msgid "Find Ne_xt" msgstr "Rechercher le _suivant" #: ../code/core/header.cpp:257 msgid "Find next match of phrase searched for" msgstr "Rechercher la prochaine occurrence du texte recherché" #: ../code/core/header.cpp:260 msgid "Find Pre_vious" msgstr "Rechercher le _précédent" #: ../code/core/header.cpp:261 msgid "Find previous match of phrase searched for" msgstr "Rechercher la précédente occurrence du texte recherché" #: ../code/core/header.cpp:266 msgid "Find and Rep_lace..." msgstr "Rechercher et re_mplacer..." #: ../code/core/header.cpp:270 msgid "Go to _Line..." msgstr "Aller à la _ligne..." #: ../code/core/header.cpp:274 msgid "Pr_eferences..." msgstr "_Préférences..." #: ../code/core/header.cpp:276 msgid "_View" msgstr "_Affichage" #: ../code/core/header.cpp:279 msgid "Reset User Colors" msgstr "Réinitialiser les couleurs des utilisateurs" #: ../code/core/header.cpp:280 msgid "Hide user colors in current document" msgstr "Masquer les couleurs des utilisateurs dans le document actuel" #: ../code/core/header.cpp:283 msgid "View Toolbar" msgstr "Afficher la barre d'outils" #: ../code/core/header.cpp:284 msgid "Whether to show the toolbar" msgstr "Indique s'il faut afficher la barre d'outils" #: ../code/core/header.cpp:288 msgid "View Statusbar" msgstr "Afficher la barre d'état" #: ../code/core/header.cpp:289 msgid "Whether to show the statusbar" msgstr "Indique s'il faut afficher la barre d'état" #: ../code/core/header.cpp:293 msgid "View Document Browser" msgstr "Afficher le navigateur de document" #: ../code/core/header.cpp:294 msgid "Whether to show the document browser" msgstr "Indique s'il faut afficher le navigateur de document" #: ../code/core/header.cpp:298 msgid "View Chat" msgstr "Afficher la discussion" #: ../code/core/header.cpp:299 msgid "Whether to show the chat pane" msgstr "Indique s'il faut afficher le volet de discussion" #: ../code/core/header.cpp:303 msgid "View Document User List" msgstr "Afficher la liste des utilisateurs du document" #: ../code/core/header.cpp:304 msgid "Whether to show the user list for documents" msgstr "Indique s'il faut afficher la liste des utilisateurs du document" #: ../code/core/header.cpp:308 msgid "View Chat User List" msgstr "Afficher la liste des utilisateurs de la discussion" #: ../code/core/header.cpp:309 msgid "Whether to show the user list for the chat" msgstr "Indique s'il faut afficher la liste des utilisateurs de la discussion" #: ../code/core/header.cpp:313 msgid "_Highlight Mode" msgstr "_Mode de coloration" #: ../code/core/header.cpp:319 msgid "_Help" msgstr "Aid_e" #: ../code/core/header.cpp:322 msgid "_Contents" msgstr "_Sommaire" #: ../code/core/header.cpp:323 msgid "Opens the Gobby manual" msgstr "Ouvre le manuel de Gobby" #: ../code/core/header.cpp:326 msgid "_About..." msgstr "À _propos..." #: ../code/core/header.cpp:327 msgid "Shows Gobby's copyright and credits" msgstr "Affiche le copyright et les remerciements de Gobby" #: ../code/core/iconmanager.cpp:46 msgid "User list" msgstr "Liste des utilisateurs" #: ../code/core/iconmanager.cpp:52 msgid "Document list" msgstr "Liste des documents" #: ../code/core/iconmanager.cpp:58 ../code/window.cpp:49 msgid "Chat" msgstr "Discussion" #: ../code/core/iconmanager.cpp:65 msgid "User Color Indicator" msgstr "Indicateur des couleurs des utilisateurs" #: ../code/core/sessionuserview.cpp:41 msgid "User List" msgstr "Liste des utilisateurs" #: ../code/core/statusbar.cpp:395 msgid "Ln %1, Col %2\t%3" msgstr "Lig %1, col %2\t%3" #: ../code/core/statusbar.cpp:398 msgid "OVR" msgstr "ÉCR" #: ../code/core/statusbar.cpp:398 msgid "INS" msgstr "INS" #: ../code/core/textsessionview.cpp:582 msgid "Text written by %1" msgstr "Texte écrit par %1" #: ../code/core/textsessionview.cpp:588 msgid "Unowned text" msgstr "Texte anonyme" #: ../code/core/userlist.cpp:105 msgid "Users" msgstr "Utilisateurs" #: ../code/dialogs/connection-dialog.cpp:28 msgid "Connect to Server" msgstr "Connexion à un serveur" #: ../code/dialogs/connection-dialog.cpp:32 msgid "Please enter a host name with which to establish a connection." msgstr "Veuillez indiquer un nom d'hôte pour établir la connexion." #: ../code/dialogs/connection-dialog.cpp:34 msgid "_Remote Endpoint:" msgstr "Point d'_accès distant :" #: ../code/dialogs/document-location-dialog.cpp:29 msgid "Document Name:" msgstr "Nom du document :" #: ../code/dialogs/document-location-dialog.cpp:156 msgid "Select document's target location" msgstr "Sélectionnez l'emplacement cible du document" #: ../code/dialogs/document-location-dialog.cpp:158 msgid "Choose a directory to create the document into:" msgstr "Choisissez un dossier dans lequel créer le document :" #: ../code/dialogs/document-location-dialog.cpp:164 msgid "Select documents' target location" msgstr "Sélectionnez l'emplacement cible du document" #: ../code/dialogs/document-location-dialog.cpp:166 msgid "Choose a directory to create the documents into:" msgstr "Choisissez un dossier dans lequel créer les documents :" #: ../code/dialogs/find-dialog.cpp:46 ../code/dialogs/find-dialog.cpp:144 msgid "Find" msgstr "Rechercher" #: ../code/dialogs/find-dialog.cpp:49 msgid "_Search for:" msgstr "_Rechercher :" #: ../code/dialogs/find-dialog.cpp:51 msgid "Replace _with:" msgstr "Rem_placer par :" #: ../code/dialogs/find-dialog.cpp:53 msgid "_Match case" msgstr "Re_specter la casse" #: ../code/dialogs/find-dialog.cpp:54 msgid "Match _entire word only" msgstr "_Mots entiers seulement" #: ../code/dialogs/find-dialog.cpp:55 msgid "Search _backwards" msgstr "Rechercher en _arrière" #: ../code/dialogs/find-dialog.cpp:56 msgid "Wra_p around" msgstr "Recherche _circulaire" #: ../code/dialogs/find-dialog.cpp:102 msgid "Replace _All" msgstr "_Tout remplacer" #: ../code/dialogs/find-dialog.cpp:104 msgid "_Replace" msgstr "R_emplacer" #: ../code/dialogs/find-dialog.cpp:144 msgid "Replace" msgstr "Remplacer" #: ../code/dialogs/find-dialog.cpp:163 ../code/dialogs/find-dialog.cpp:179 msgid "Phrase \"%1\" has not been found" msgstr "Le texte « %1 » n'a pas été trouvé" #: ../code/dialogs/find-dialog.cpp:337 msgid "No occurrence has been replaced" msgstr "Aucune occurrence n'a été remplacée" #: ../code/dialogs/find-dialog.cpp:343 msgid "%1 occurrence has been replaced" msgid_plural "%1 occurrences have been replaced" msgstr[0] "%1 occurrence a été remplacée" msgstr[1] "%1 occurrences ont été remplacées" #: ../code/dialogs/goto-dialog.cpp:27 msgid "Go to line" msgstr "Aller à la ligne" #: ../code/dialogs/goto-dialog.cpp:30 msgid "Line _number:" msgstr "_Numéro de ligne :" #: ../code/dialogs/goto-dialog.cpp:51 msgid "Go To _Line" msgstr "Aller à la _ligne" #: ../code/dialogs/initial-dialog.cpp:49 msgid "Choose a user color" msgstr "Choisissez une couleur d'utilisateur" #: ../code/dialogs/initial-dialog.cpp:53 msgid "Welcome to Gobby" msgstr "Bienvenue dans Gobby" #: ../code/dialogs/initial-dialog.cpp:62 msgid "" "Before we start, a few options need to be configured. You can later change " "them by choosing Edit ▸ Preferences from the menu." msgstr "" "Avant de commencer, quelques options doivent être configurées. Il est " "possible de les modifier ultérieurement en choisissant Édition ▸ Préférences " "dans le menu." #: ../code/dialogs/initial-dialog.cpp:69 msgid "User Name" msgstr "Nom d'utilisateur" #: ../code/dialogs/initial-dialog.cpp:71 msgid "Your name as shown to other users." msgstr "Votre nom tel qu'il apparaîtra pour les autres personnes." #: ../code/dialogs/initial-dialog.cpp:80 msgid "User Color" msgstr "Couleur d'utilisateur" #: ../code/dialogs/initial-dialog.cpp:82 msgid "The color with which text you have written is branded." msgstr "La couleur qui marquera le texte que vous écrivez." #: ../code/dialogs/open-location-dialog.cpp:27 msgid "Open Location" msgstr "Ouvrir un emplacement" #: ../code/dialogs/open-location-dialog.cpp:28 msgid "Enter the _location (URI) of the file you would like to open:" msgstr "Saisissez l'_emplacement (URI) du fichier que vous souhaitez ouvrir :" #: ../code/dialogs/password-dialog.cpp:27 msgid "Password Required" msgstr "Mot de passe nécessaire" #: ../code/dialogs/password-dialog.cpp:33 msgid "Connection to host \"%1\" requires a password." msgstr "La connexion au serveur « %1 » exige un mot de passe." #: ../code/dialogs/password-dialog.cpp:34 msgid "Invalid password for host \"%1\". Please try again." msgstr "" "Le mot de passe pour le serveur « %1 » n'est pas valable. Essayez encore une " "fois." #: ../code/dialogs/password-dialog.cpp:37 msgid "Server _Password:" msgstr "_Mot de passe du serveur :" #: ../code/dialogs/preferences-dialog.cpp:232 msgid "Settings" msgstr "Paramètres" #: ../code/dialogs/preferences-dialog.cpp:233 msgid "Paths" msgstr "Chemins" #: ../code/dialogs/preferences-dialog.cpp:234 #, fuzzy msgid "Remote Users" msgstr "Réinitialiser les couleurs des utilisateurs" #: ../code/dialogs/preferences-dialog.cpp:236 msgid "User name:" msgstr "Nom d'utilisateur :" #: ../code/dialogs/preferences-dialog.cpp:238 msgid "User color:" msgstr "Couleur d'utilisateur :" #: ../code/dialogs/preferences-dialog.cpp:239 msgid "Choose a new user color" msgstr "Choisissez une nouvelle couleur d'utilisateur" #: ../code/dialogs/preferences-dialog.cpp:242 msgid "Host directory:" msgstr "Dossier de l'hôte :" #: ../code/dialogs/preferences-dialog.cpp:243 msgid "Show cursors of remote users" msgstr "" #: ../code/dialogs/preferences-dialog.cpp:244 msgid "Show selections of remote users" msgstr "" #: ../code/dialogs/preferences-dialog.cpp:246 #, fuzzy msgid "Highlight current line of remote users" msgstr "Surligner la ligne actuelle" #: ../code/dialogs/preferences-dialog.cpp:248 msgid "Indicate remote users' cursor position in the scrollbar" msgstr "" #: ../code/dialogs/preferences-dialog.cpp:290 msgid "The directory into which locally hosted sessions are permanently stored" msgstr "" "Le dossier dans lequel les sessions hébergées localement sont enregistrées " "de façon permanente" #: ../code/dialogs/preferences-dialog.cpp:338 msgid "Tab Stops" msgstr "Tabulations" #: ../code/dialogs/preferences-dialog.cpp:339 msgid "Indentation" msgstr "Indentation" #: ../code/dialogs/preferences-dialog.cpp:340 msgid "Home/End Behavior" msgstr "Comportement de Origine/Fin" #: ../code/dialogs/preferences-dialog.cpp:341 msgid "File Saving" msgstr "Enregistrement de fichiers" #: ../code/dialogs/preferences-dialog.cpp:342 msgid "_Tab width:" msgstr "_Largeur des tabulations :" #: ../code/dialogs/preferences-dialog.cpp:344 msgid "Insert _spaces instead of tabs" msgstr "Insérer des _espaces au lieu de tabulations" #: ../code/dialogs/preferences-dialog.cpp:345 msgid "Enable automatic _indentation" msgstr "Activer l'_indentation automatique" #: ../code/dialogs/preferences-dialog.cpp:346 msgid "Smart _home/end" msgstr "_Origine/fin intelligents" #: ../code/dialogs/preferences-dialog.cpp:347 msgid "Enable _automatic saving of documents" msgstr "_Activer l'enregistrement automatique des documents" #: ../code/dialogs/preferences-dialog.cpp:349 msgid "Autosave interval in _minutes:" msgstr "Intervalle d'enregistrement en _minutes :" #: ../code/dialogs/preferences-dialog.cpp:370 msgid "" "With this option enabled, Home/End keys move to first/last character before " "going to the start/end of the line." msgstr "" "Quand cette option est activée, les touches Origine/Fin se placent au " "premier/dernier caractère avant d'aller au début/à la fin de la ligne." #: ../code/dialogs/preferences-dialog.cpp:440 msgid "Text Wrapping" msgstr "Longues lignes" #: ../code/dialogs/preferences-dialog.cpp:441 msgid "Line Numbers" msgstr "Numéros de ligne" #: ../code/dialogs/preferences-dialog.cpp:442 msgid "Current Line" msgstr "Ligne actuelle" #: ../code/dialogs/preferences-dialog.cpp:443 msgid "Right Margin" msgstr "Marge de droite" #: ../code/dialogs/preferences-dialog.cpp:444 msgid "Bracket Matching" msgstr "Correspondance des parenthèses" #: ../code/dialogs/preferences-dialog.cpp:445 msgid "Whitespace Display" msgstr "Affichage des blancs" #: ../code/dialogs/preferences-dialog.cpp:446 msgid "Enable text wrapping" msgstr "Activer le retour à la ligne" #: ../code/dialogs/preferences-dialog.cpp:447 msgid "Do not split words over two lines" msgstr "Ne pas couper les mots sur deux lignes" #: ../code/dialogs/preferences-dialog.cpp:448 msgid "Display line numbers" msgstr "Afficher les numéros de ligne" #: ../code/dialogs/preferences-dialog.cpp:449 msgid "Highlight current line" msgstr "Surligner la ligne actuelle" #: ../code/dialogs/preferences-dialog.cpp:450 msgid "Display right margin" msgstr "Afficher la marge de droite" #: ../code/dialogs/preferences-dialog.cpp:451 msgid "Right margin at column:" msgstr "Marge de droite à la colonne :" #: ../code/dialogs/preferences-dialog.cpp:452 msgid "Highlight matching bracket" msgstr "Surligner les parenthèses correspondantes" #: ../code/dialogs/preferences-dialog.cpp:503 msgid "Display no whitespace" msgstr "N'afficher aucun type d'espace" #: ../code/dialogs/preferences-dialog.cpp:506 msgid "Display spaces" msgstr "Afficher les espaces" #: ../code/dialogs/preferences-dialog.cpp:510 msgid "Display tabs" msgstr "Afficher les tabulations" #: ../code/dialogs/preferences-dialog.cpp:514 msgid "Display tabs and spaces" msgstr "Afficher les tabulations et les espaces" #: ../code/dialogs/preferences-dialog.cpp:564 msgid "Toolbar" msgstr "Barre d'outils" #: ../code/dialogs/preferences-dialog.cpp:565 msgid "Font" msgstr "Police" #: ../code/dialogs/preferences-dialog.cpp:566 msgid "Color Scheme" msgstr "Jeu de couleurs" #: ../code/dialogs/preferences-dialog.cpp:573 msgid "Show text only" msgstr "Afficher uniquement le texte" #: ../code/dialogs/preferences-dialog.cpp:575 msgid "Show icons only" msgstr "Afficher unqiuement les icônes" #: ../code/dialogs/preferences-dialog.cpp:577 msgid "Show both icons and text" msgstr "Afficher les icônes et le texte" #: ../code/dialogs/preferences-dialog.cpp:579 msgid "Show text besides icons" msgstr "Afficher le texte à côté des icônes" #: ../code/dialogs/preferences-dialog.cpp:658 msgid "Trusted CAs" msgstr "Autorités de confiance" #: ../code/dialogs/preferences-dialog.cpp:659 msgid "Secure Connection" msgstr "Connexion sécurisée" #: ../code/dialogs/preferences-dialog.cpp:660 msgid "Select a file containing trusted CAs" msgstr "" "Choisissez un fichier contenant les autorités de certification de confiance" #: ../code/dialogs/preferences-dialog.cpp:677 msgid "Use TLS if possible" msgstr "Utiliser TSL si possible" #: ../code/dialogs/preferences-dialog.cpp:680 msgid "Always use TLS" msgstr "Toujours utiliser TLS" #: ../code/dialogs/preferences-dialog.cpp:692 msgid "Preferences" msgstr "Préférences" #: ../code/dialogs/preferences-dialog.cpp:697 msgid "User" msgstr "Utilisateur" #: ../code/dialogs/preferences-dialog.cpp:698 msgid "Editor" msgstr "Éditeur" #: ../code/dialogs/preferences-dialog.cpp:699 msgid "View" msgstr "Affichage" #: ../code/dialogs/preferences-dialog.cpp:700 msgid "Appearance" msgstr "Apparence" #: ../code/dialogs/preferences-dialog.cpp:701 msgid "Security" msgstr "Sécurité" #: ../code/main.cpp:196 msgid "Gobby options" msgstr "Options de Gobby" #: ../code/main.cpp:196 msgid "Options related to Gobby" msgstr "Options liées à Gobby" #: ../code/main.cpp:201 msgid "Display version information and exit" msgstr "Affiche l'information de version et quitte" #: ../code/main.cpp:208 msgid "Also start a new Gobby instance when there is one running already" msgstr "Démarre une nouvelle instance Gobby même s'il y en a déjà une" #: ../code/main.cpp:216 msgid "Connect to given host on startup, can be given multiple times" msgstr "" "Se connecte à l'hôte indiqué au démarrage, peut apparaître plusieurs fois" #: ../code/main.cpp:217 msgid "HOSTNAME" msgstr "NOM_HÒTE" #: ../code/operations/operation-delete.cpp:42 msgid "Removing node \"%1\"..." msgstr "Suppression du nœud « %1 »..." #: ../code/operations/operation-delete.cpp:57 msgid "Failed to delete node \"%1\"" msgstr "Échec de suppression du nœud « %1 »" #: ../code/operations/operation-export-html.cpp:166 #, c-format msgid "written by: %s" msgstr "écrit par : %s" #: ../code/operations/operation-export-html.cpp:239 msgid "" msgstr "" #. %1$s is session name/hostname #. %2$s is path within the session #. %3$s is current date as formatted by %c, #. %4$s is a link to the gobby site, it must be present because #. we need to handle that manually to insert a hyperlink #. instead of just printf'ing it. #: ../code/operations/operation-export-html.cpp:252 #, c-format msgid "Document generated from %1$s:%2$s at %3$s by %4$s" msgstr "Document généré à partir de %1$s:%2$s le %3$s par %4$s" #: ../code/operations/operation-export-html.cpp:393 msgid "Participants" msgstr "Participants" #: ../code/operations/operation-export-html.cpp:454 msgid "Exporting document \"%1\" to \"%2\" in HTML..." msgstr "Exportation HTML du document « %1 » vers « %2 »..." #: ../code/operations/operation-export-html.cpp:526 msgid "Failed to export document \"%1\" to HTML" msgstr "Impossible d'exporter le document « %1 » en HTML" #: ../code/operations/operation-new.cpp:56 msgid "Creating directory \"%1\"..." msgstr "Création du dossier « %1 »..." #: ../code/operations/operation-new.cpp:57 msgid "Creating document \"%1\"..." msgstr "Création du document « %1 »..." #: ../code/operations/operation-new.cpp:73 msgid "Failed to create directory \"%1\"" msgstr "Impossible de créer le dossier « %1 »" #: ../code/operations/operation-new.cpp:74 msgid "Failed to create document \"%1\"" msgstr "Impossible de créer le document « %1 »" #. Translators: This is the 8 bit encoding that is tried when #. autodetecting a file's encoding. #: ../code/operations/operation-open.cpp:38 msgid "ISO-8859-1" msgstr "ISO-8859-1" #: ../code/operations/operation-open.cpp:89 msgid "Opening document \"%1\"..." msgstr "Ouverture du document « %1 »..." #: ../code/operations/operation-open.cpp:124 msgid "" "The directory into which the new document was supposed to be inserted has " "been removed" msgstr "" "Le dossier dans lequel le document aurait dû être inséré a été supprimé" #: ../code/operations/operation-open.cpp:313 msgid "The file contains data not in the specified encoding" msgstr "" "Le fichier contient des données incompatibles avec le jeu de caractères " "indiqué" #: ../code/operations/operation-open.cpp:324 msgid "" "The file either contains data in an unknown encoding, or it contains binary " "data." msgstr "" "Soit le fichier contient des données dans un codage inconnu, soit il " "contient des données binaires." #: ../code/operations/operation-open-multiple.cpp:84 msgid "Parent folder was removed" msgstr "Le dossier parent a été supprimé" #: ../code/operations/operation-open-multiple.cpp:172 msgid "Failed to open multiple documents" msgstr "Impossible d'ouvrir plusieurs documents" #: ../code/operations/operation-save.cpp:74 msgid "Saving document \"%1\" to \"%2\"..." msgstr "Enregistrement du document « %1 » vers « %2 »..." #: ../code/operations/operation-save.cpp:227 msgid "" "The document contains one or more characters that cannot be encoded in the " "specified character coding." msgstr "" "Le document contient un ou plusieurs caractères qui ne peuvent pas être " "codés dans le jeu de caractères indiqué." #: ../code/operations/operation-save.cpp:288 msgid "Failed to save document \"%1\"" msgstr "L'enregistrement du document « %1 » a échoué" #: ../code/util/file.cpp:67 ../code/util/file.cpp:76 msgid "Could not create directory \"%1\": %2" msgstr "Impossible de créer le " #: ../code/window.cpp:112 msgid "Document Browser" msgstr "Navigateur de documents" #: ../code/window.cpp:168 msgid "You are still connected to a session" msgstr "Vous êtes toujours connecté à une session" #: ../code/window.cpp:176 msgid "Do you want to close Gobby nevertheless?" msgstr "Souhaitez-vous tout de même fermer Gobby ?" #: ../code/window.cpp:182 msgid "C_ancel" msgstr "_Annuler" #: ../gobby-0.5.desktop.in.h:1 msgid "Collaborative Editor" msgstr "Éditeur collaboratif" #: ../gobby-0.5.desktop.in.h:2 msgid "Edit text files collaboratively" msgstr "Éditer des fichiers texte de manière collaborative" #: ../gobby-0.5.desktop.in.h:3 msgid "Gobby" msgstr "Gobby" #: ../gobby-0.5.desktop.in.h:4 msgid "Gobby Collaborative Editor (0.5)" msgstr "Éditeur collaboratif Gobby (0.5)" gobby-0.4.94/po/LINGUAS0000644000175000017500000000002511531722663011301 00000000000000de el_GR en_GB fr ja gobby-0.4.94/po/de.po0000644000175000017500000007132611531722663011220 00000000000000# Gobby German translation # Copyright (C) 2010 Michael Frey # This file is distributed under the same license as the gobby-0.5 package. # Michael Frey , 2010 msgid "" msgstr "" "Project-Id-Version: 0.4.93\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2010-06-20 14:26+0200\n" "PO-Revision-Date: 2010-02-07 09:40+0100\n" "Last-Translator: Michael Frey \n" "Language-Team: \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: ../code/commands/browser-commands.cpp:109 msgid "Subscribing to %1..." msgstr "Anmeldung bei %1…" #: ../code/commands/browser-commands.cpp:122 msgid "Subscribing to chat on %1..." msgstr "Anmeldung zum Chat bei %1…" #: ../code/commands/browser-commands.cpp:307 msgid "Subscription failed" msgstr "Anmeldung fehlgeschlagen" #: ../code/commands/browser-context-commands.cpp:94 msgid "Create Do_cument..." msgstr "Dokument erstellen…" #: ../code/commands/browser-context-commands.cpp:129 msgid "Create Directory..." msgstr "Verzeichnis erstellen…" #: ../code/commands/browser-context-commands.cpp:142 msgid "_Open Document..." msgstr "Dokument ö_ffnen…" #: ../code/commands/browser-context-commands.cpp:161 msgid "D_elete" msgstr "_Löschen" #: ../code/commands/browser-context-commands.cpp:197 msgid "Choose a name for the directory" msgstr "Wählen Sie einen Namen für das Verzeichnis" #: ../code/commands/browser-context-commands.cpp:198 msgid "Choose a name for the document" msgstr "Wählen Sie einen Namen für das Dokument:" #: ../code/commands/browser-context-commands.cpp:199 msgid "_Directory Name:" msgstr "_Verzeichnisname:" #: ../code/commands/browser-context-commands.cpp:200 msgid "_Document Name:" msgstr "_Dokumentname:" #: ../code/commands/browser-context-commands.cpp:203 msgid "C_reate" msgstr "E_rstellen" #: ../code/commands/browser-context-commands.cpp:207 msgid "New Directory" msgstr "Neues Verzeichnis" #: ../code/commands/browser-context-commands.cpp:208 #: ../code/commands/file-tasks/task-new.cpp:38 msgid "New Document" msgstr "Neues Dokument" #: ../code/commands/browser-context-commands.cpp:224 #: ../code/commands/file-tasks/task-open-file.cpp:24 msgid "Choose a text file to open" msgstr "Dateien öffnen" #: ../code/commands/file-tasks/task-export-html.cpp:29 msgid "Choose a location to export document \"%1\" to" msgstr "Wählen Sie ein Verzeichnis zum Exportieren der Datei »%1«" #: ../code/commands/file-tasks/task-open.cpp:48 msgid "Querying \"%1\"..." msgstr "»%1« wird abgefragt" #: ../code/commands/file-tasks/task-open.cpp:105 #: ../code/operations/operation-open.cpp:437 #: ../code/operations/operation-open-multiple.cpp:159 msgid "Failed to open document \"%1\"" msgstr "Öffnen des Dokuments fehlschlagen »%1«" #: ../code/commands/file-tasks/task-save.cpp:26 msgid "Choose a location to save document \"%1\" to" msgstr "Wählen Sie ein Verzeichnis zum Speichern der Datei »%1«" #. Help browser could not be invoked, show an error message to the user. #: ../code/commands/help-commands.cpp:69 msgid "There was an error displaying help." msgstr "Beim Anzeigen der Hilfe ist ein Fehler aufgetreten." #: ../code/commands/help-commands.cpp:92 msgid "Contributors:" msgstr "Mitwirkende:" #: ../code/commands/help-commands.cpp:98 msgid "British English:" msgstr "Britisches Englisch:" #: ../code/commands/help-commands.cpp:100 msgid "German:" msgstr "Deutsch:" #: ../code/commands/help-commands.cpp:117 msgid "" "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.\n" "\n" "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.\n" "\n" "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" msgstr "" "Dieses Programm ist freie Software. Sie können es unter den Bedingungen der " "GNU General Public License, wie von der Free Software Foundation " "veröffentlicht, weitergeben und/oder modifizieren, entweder gemäß Version 2 " "der Lizenz oder (nach Ihrer Option) jeder späteren Version.\n" "\n" "Die Veröffentlichung dieses Programms erfolgt in der Hoffnung, daß es Ihnen " "von Nutzen sein wird, aber OHNE IRGENDEINE GARANTIE, sogar ohne die " "implizite Garantie der MARKTREIFE oder der VERWENDBARKEIT FÜR EINEN " "BESTIMMTEN ZWECK. Details finden Sie in der GNU General Public License.\n" "\n" "Sie sollten ein Exemplar der GNU General Public License zusammen mit diesem " "Programm erhalten haben. Falls nicht, schreiben Sie an die Free Software " "Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110, USA." #: ../code/commands/subscription-commands.cpp:259 msgid "" "The connection to the publisher of this document has been lost. Further " "changes to the document could not be synchronized to others anymore, " "therefore the document cannot be edited anymore.\n" "\n" "Please note also that it is possible that not all of your latest changes " "have reached the publisher before the connection was lost." msgstr "" "Die Verbindung zum Verteiler dieses Dokumentes wurde verloren. Änderungen am " "Dokument können nicht mehr mit anderen abgeglichen werden, daher kann dieses " "Dokument nicht mehr bearbeitet werden.\n" "\n" "Bitte beachten Sie, dass ihre letzten Änderungen möglicherweise nicht mehr " "den Verteiler erreichen konnten, bevor die Verbindung verloren ging." #: ../code/commands/synchronization-commands.cpp:32 msgid "Synchronization in progress... %1%%" msgstr "Abgleich in Arbeit… %1%%" #. Document cannot be used if an error happened #. during synchronization. #: ../code/commands/synchronization-commands.cpp:44 msgid "This document cannot be used." msgstr "Dieses Dokument kann nicht verwendet werden." #: ../code/commands/synchronization-commands.cpp:47 #: ../code/commands/user-join-commands.cpp:40 msgid "" "If you have an idea what could have caused the problem, then you may attempt " "to solve it and try again (after having closed this document). Otherwise it " "is most likely a bug in the software. In that case, please file a bug report " "at http://gobby.0x539.de/trac/newticket and provide as much information as " "you can, including what you did when the problem occurred and how to " "reproduce the problem (if possible) so that we can fix the problem in a " "later version. Thank you." msgstr "" "Falls Sie eine Möglichkeit zur Behebung des Problems sehen, können Sie das " "Dokument schließen und es erneut versuchen. Ansonsten handelt es sich " "wahrscheinlich um einen Programmfehler. In diesem Fall können Sie einen " "Fehlerbericht unter http://gobby.0x539.de/trac/newticket einreichen mit " "möglichst vielen zusätzlichen Informationen, insbesondere, was Sie gerade " "taten, als das Problem auftrat, und, wenn möglich, wie man es reproduzieren " "kann, so dass wir den Fehler für die nächste Version beheben können. Vielen " "Dank." #: ../code/commands/synchronization-commands.cpp:61 msgid "Synchronization failed: %1" msgstr "Abgleich fehlgeschlagen: %1" #. TODO: Adjust this for chat sessions #: ../code/commands/user-join-commands.cpp:35 msgid "" "You can still watch others editing the document, but you cannot edit it " "yourself." msgstr "" "Sie können anderen beim Bearbeiten des Dokuments zusehen, aber nicht selbst " "Änderungen vornehmen." #: ../code/commands/user-join-commands.cpp:54 msgid "User Join failed: %1" msgstr "Anmeldung fehlgeschlagen: %1" #: ../code/commands/user-join-commands.cpp:283 msgid "User Join in progress..." msgstr "Benutzerbeitritt wird bearbeitet…" #: ../code/core/browser.cpp:113 msgid "_Direct Connection" msgstr "Direkt_verbindung" #: ../code/core/browser.cpp:115 msgid "Host Name:" msgstr "Servername:" #: ../code/core/browser.cpp:301 ../code/core/browser.cpp:425 msgid "Connection to \"%1\" failed" msgstr "Verbindung zu »%1« fehlgeschlagen" #: ../code/core/browser.cpp:354 msgid "Could not resolve \"%1\"" msgstr "Auflösung von »%1« fehlgeschlagen" #: ../code/core/browser.cpp:428 msgid "Device \"%1\" does not exist" msgstr "Schnittstelle »%1« existiert nicht" #: ../code/core/browser.cpp:464 msgid "Resolving \"%1\"..." msgstr "Löse »%1« auf…" #: ../code/core/header.cpp:198 msgid "_None" msgstr "_Keine" #: ../code/core/header.cpp:222 msgid "_File" msgstr "_Datei" #: ../code/core/header.cpp:225 msgid "_Open..." msgstr "Ö_ffnen…" #: ../code/core/header.cpp:228 msgid "Open _Location..." msgstr "_Ort öffnen…" #: ../code/core/header.cpp:232 msgid "Save _As..." msgstr "Speichern _als…" #: ../code/core/header.cpp:236 ../code/core/iconmanager.cpp:40 msgid "Save All" msgstr "Alle speichern" #: ../code/core/header.cpp:236 msgid "Save all open files locally" msgstr "Alle offenen Dateien lokal speichern" #: ../code/core/header.cpp:238 msgid "Export As _HTML..." msgstr "Als _HTML exportieren..." #: ../code/core/header.cpp:241 msgid "Connect _to Server..." msgstr "_Zu Server verbinden…" #: ../code/core/header.cpp:246 msgid "_Edit" msgstr "_Bearbeiten" #: ../code/core/header.cpp:254 msgid "_Find..." msgstr "_Suchen…" #: ../code/core/header.cpp:256 msgid "Find Ne_xt" msgstr "_Weitersuchen" #: ../code/core/header.cpp:257 msgid "Find next match of phrase searched for" msgstr "Suche nach nächstem Vorkommen des Suchbegriffs" #: ../code/core/header.cpp:260 msgid "Find Pre_vious" msgstr "_Rückwärts suchen" #: ../code/core/header.cpp:261 msgid "Find previous match of phrase searched for" msgstr "Suche nach vorigem Vorkommen des Suchbegriffs" #: ../code/core/header.cpp:266 msgid "Find and Rep_lace..." msgstr "Suchen und _Ersetzen…" #: ../code/core/header.cpp:270 msgid "Go to _Line..." msgstr "Gehe zu _Zeile…" #: ../code/core/header.cpp:274 msgid "Pr_eferences..." msgstr "_Einstellungen…" #: ../code/core/header.cpp:276 msgid "_View" msgstr "_Ansicht" #: ../code/core/header.cpp:279 msgid "Reset User Colors" msgstr "Benutzerfarben zurücksetzen" #: ../code/core/header.cpp:280 msgid "Hide user colors in current document" msgstr "Benutzerfarben im aktuellen Dokument nicht anzeigen" #: ../code/core/header.cpp:283 msgid "View Toolbar" msgstr "Zeige Werkzeugleiste" #: ../code/core/header.cpp:284 msgid "Whether to show the toolbar" msgstr "Ob die Werkzeugleiste angezeigt werden soll" #: ../code/core/header.cpp:288 msgid "View Statusbar" msgstr "Zeige Statusleiste" #: ../code/core/header.cpp:289 msgid "Whether to show the statusbar" msgstr "Ob die Statusleiste angezeigt werden soll" #: ../code/core/header.cpp:293 msgid "View Document Browser" msgstr "Zeige Dokumentenliste" #: ../code/core/header.cpp:294 msgid "Whether to show the document browser" msgstr "Ob die Dokumentenliste angezeigt werden soll" #: ../code/core/header.cpp:298 msgid "View Chat" msgstr "Chat anzeigen" #: ../code/core/header.cpp:299 msgid "Whether to show the chat pane" msgstr "Ob das Chatfenster angezeigt werden soll" #: ../code/core/header.cpp:303 msgid "View Document User List" msgstr "Zeige Dokument-Benutzerliste" #: ../code/core/header.cpp:304 msgid "Whether to show the user list for documents" msgstr "Ob die Benutzerliste für Dokumente angezeigt werden soll" #: ../code/core/header.cpp:308 msgid "View Chat User List" msgstr "Zeige Chat-Benutzerliste" #: ../code/core/header.cpp:309 msgid "Whether to show the user list for the chat" msgstr "Ob die Benutzerliste des Chats angezeigt werden soll" #: ../code/core/header.cpp:313 msgid "_Highlight Mode" msgstr "_Syntaxhervorhebung" #: ../code/core/header.cpp:319 msgid "_Help" msgstr "_Hilfe" #: ../code/core/header.cpp:322 msgid "_Contents" msgstr "_Inhalt" #: ../code/core/header.cpp:323 msgid "Opens the Gobby manual" msgstr "Öffnet die Gobby-Anleitung" #: ../code/core/header.cpp:326 msgid "_About..." msgstr "Ü_ber…" #: ../code/core/header.cpp:327 msgid "Shows Gobby's copyright and credits" msgstr "Zeigt Gobbys Lizenz und Autoren" #: ../code/core/iconmanager.cpp:46 msgid "User list" msgstr "Benutzerliste:" #: ../code/core/iconmanager.cpp:52 msgid "Document list" msgstr "Dokumentenliste" #: ../code/core/iconmanager.cpp:58 ../code/window.cpp:49 msgid "Chat" msgstr "Chat" #: ../code/core/iconmanager.cpp:65 msgid "User Color Indicator" msgstr "Benutzerfarbenindikator" #: ../code/core/sessionuserview.cpp:41 msgid "User List" msgstr "Benutzerliste" #: ../code/core/statusbar.cpp:395 msgid "Ln %1, Col %2\t%3" msgstr "Z. %1, Sp. %2\t%3" #: ../code/core/statusbar.cpp:398 msgid "OVR" msgstr "ÜBS" #: ../code/core/statusbar.cpp:398 msgid "INS" msgstr "EIN" #: ../code/core/textsessionview.cpp:519 msgid "Text written by %1" msgstr "Text geschrieben von %1" #: ../code/core/textsessionview.cpp:525 msgid "Unowned text" msgstr "Kein Verfasser" #: ../code/core/userlist.cpp:105 msgid "Users" msgstr "Benutzer" #: ../code/dialogs/connection-dialog.cpp:28 msgid "Connect to Server" msgstr "Zu Server verbinden" #: ../code/dialogs/connection-dialog.cpp:32 msgid "Please enter a host name with which to establish a connection." msgstr "" "Bitte geben sie den Namen des Servers ein, zu dem Sie verbinden wollen." #: ../code/dialogs/connection-dialog.cpp:34 msgid "_Remote Endpoint:" msgstr "Servername:" #: ../code/dialogs/document-location-dialog.cpp:29 msgid "Document Name:" msgstr "Dokumentnamen:" #: ../code/dialogs/document-location-dialog.cpp:156 msgid "Select document's target location" msgstr "Zielverzeichnis des Dokumentes auswählen" #: ../code/dialogs/document-location-dialog.cpp:158 msgid "Choose a directory to create the document into:" msgstr "Wählen Sie das Verzeichnis, in dem das Dokument erstellt werden soll:" #: ../code/dialogs/document-location-dialog.cpp:164 msgid "Select documents' target location" msgstr "Zielverzeichnis der Dokumente auswählen" #: ../code/dialogs/document-location-dialog.cpp:166 msgid "Choose a directory to create the documents into:" msgstr "" "Wählen Sie das Verzeichnis, in dem die Dokumente erstellt werden sollen:" #: ../code/dialogs/find-dialog.cpp:46 ../code/dialogs/find-dialog.cpp:144 msgid "Find" msgstr "Suche" #: ../code/dialogs/find-dialog.cpp:49 msgid "_Search for:" msgstr "_Suche nach:" #: ../code/dialogs/find-dialog.cpp:51 msgid "Replace _with:" msgstr "Ersetze _mit:" #: ../code/dialogs/find-dialog.cpp:53 msgid "_Match case" msgstr "_Groß-/Kleinschreibung berücksichtigen" #: ../code/dialogs/find-dialog.cpp:54 msgid "Match _entire word only" msgstr "Nur vollständige Wörter berücksichtigen" #: ../code/dialogs/find-dialog.cpp:55 msgid "Search _backwards" msgstr "Rückwärts suchen" #: ../code/dialogs/find-dialog.cpp:56 msgid "Wra_p around" msgstr "Suche beim Erreichen des Endes am Anfang _fortsetzen" #: ../code/dialogs/find-dialog.cpp:102 msgid "Replace _All" msgstr "_Alle ersetzen" #: ../code/dialogs/find-dialog.cpp:104 msgid "_Replace" msgstr "_Ersetzen" #: ../code/dialogs/find-dialog.cpp:144 msgid "Replace" msgstr "Ersetzen" #: ../code/dialogs/find-dialog.cpp:163 ../code/dialogs/find-dialog.cpp:179 msgid "Phrase \"%1\" has not been found" msgstr "Der Ausdruck »%1« wurde nicht gefunden" #: ../code/dialogs/find-dialog.cpp:337 msgid "No occurrence has been replaced" msgstr "Es wurde keine Ersetzung vorgenommen" #: ../code/dialogs/find-dialog.cpp:343 msgid "%1 occurrence has been replaced" msgid_plural "%1 occurrences have been replaced" msgstr[0] "%1 Treffer wurde ersetzt" msgstr[1] "%1 Treffer wurden ersetzt" #: ../code/dialogs/goto-dialog.cpp:27 msgid "Go to line" msgstr "Gehe zu Zeile" #: ../code/dialogs/goto-dialog.cpp:30 msgid "Line _number:" msgstr "Zeilen_nummer" #: ../code/dialogs/goto-dialog.cpp:51 msgid "Go To _Line" msgstr "Gehe zu _Zeile" #: ../code/dialogs/initial-dialog.cpp:49 msgid "Choose a user color" msgstr "Wählen Sie eine Benutzerfarbe" #: ../code/dialogs/initial-dialog.cpp:53 msgid "Welcome to Gobby" msgstr "Willkommen zu Gobby" #: ../code/dialogs/initial-dialog.cpp:62 msgid "" "Before we start, a few options need to be configured. You can later change " "them by choosing Edit ▸ Preferences from the menu." msgstr "" "Bevor Sie loslegen können, müssen noch einige Einstellungen vorgenommen " "werden. Sie können diese Einstellungen später unter Bearbeiten ▸ " "Einstellungen im Hauptmenü verändern." #: ../code/dialogs/initial-dialog.cpp:69 msgid "User Name" msgstr "Benutzername" #: ../code/dialogs/initial-dialog.cpp:71 msgid "Your name as shown to other users." msgstr "Ihr Name, wie er anderen Benutzern angezeigt wird." #: ../code/dialogs/initial-dialog.cpp:80 msgid "User Color" msgstr "Benutzerfarbe" #: ../code/dialogs/initial-dialog.cpp:82 msgid "The color with which text you have written is branded." msgstr "Die Farbe, in der von Ihnen geschriebener Text hervorgeheben wird." #: ../code/dialogs/open-location-dialog.cpp:27 msgid "Open Location" msgstr "Ort öffnen" #: ../code/dialogs/open-location-dialog.cpp:28 msgid "Enter the _location (URI) of the file you would like to open:" msgstr "Geben Sie den Ort (URI) der Datei ein, die Sie öffnen möchten:" #: ../code/dialogs/password-dialog.cpp:27 msgid "Password Required" msgstr "Passwort benötigt" #: ../code/dialogs/password-dialog.cpp:33 msgid "Connection to host \"%1\" requires a password." msgstr "Die Verbindung zum Server »%1« erfordert ein Passwort." #: ../code/dialogs/password-dialog.cpp:34 msgid "Invalid password for host \"%1\". Please try again." msgstr "Ungültiges Password für Server »%1«. Bitte versuchen Sie es erneut." #: ../code/dialogs/password-dialog.cpp:37 msgid "Server _Password:" msgstr "Server-Passwort:" #: ../code/dialogs/preferences-dialog.cpp:232 msgid "Settings" msgstr "Einstellungen" #: ../code/dialogs/preferences-dialog.cpp:233 msgid "Paths" msgstr "Pfade" #: ../code/dialogs/preferences-dialog.cpp:235 msgid "User name:" msgstr "Benutzername:" #: ../code/dialogs/preferences-dialog.cpp:237 msgid "User color:" msgstr "Benutzerfarbe:" #: ../code/dialogs/preferences-dialog.cpp:238 msgid "Choose a new user color" msgstr "Neue Benutzerfarbe wählen" #: ../code/dialogs/preferences-dialog.cpp:241 msgid "Host directory:" msgstr "Sitzungsverzeichnis" #: ../code/dialogs/preferences-dialog.cpp:283 msgid "The directory into which locally hosted sessions are permanently stored" msgstr "Verzeichnis zur permanenten Aufbewahrung veröffentlichter Dokuemente" #: ../code/dialogs/preferences-dialog.cpp:300 msgid "Tab Stops" msgstr "Tabulatoren" #: ../code/dialogs/preferences-dialog.cpp:301 msgid "Indentation" msgstr "Zeileneinrückung" #: ../code/dialogs/preferences-dialog.cpp:302 msgid "Home/End Behavior" msgstr "Pos1/Ende-Verhalten" #: ../code/dialogs/preferences-dialog.cpp:303 msgid "File Saving" msgstr "Datei speichern" #: ../code/dialogs/preferences-dialog.cpp:304 msgid "_Tab width:" msgstr "_Tabulatorbreite" #: ../code/dialogs/preferences-dialog.cpp:306 msgid "Insert _spaces instead of tabs" msgstr "_Leerzeichen statt Tabulatoren einfügen" #: ../code/dialogs/preferences-dialog.cpp:307 msgid "Enable automatic _indentation" msgstr "Automatische Zeileneinrückung aktivieren" #: ../code/dialogs/preferences-dialog.cpp:308 msgid "Smart _home/end" msgstr "Intelligentes Pos1/Ende" #: ../code/dialogs/preferences-dialog.cpp:309 msgid "Enable _automatic saving of documents" msgstr "Dokumente _automatische speichern" #: ../code/dialogs/preferences-dialog.cpp:311 msgid "Autosave interval in _minutes:" msgstr "Abstand in Minuten zwischen automatischem Speichern:" #: ../code/dialogs/preferences-dialog.cpp:332 msgid "" "With this option enabled, Home/End keys move to first/last character before " "going to the start/end of the line." msgstr "" "Ist diese Option aktiviert, bewegen die Pos1-/Ende-Taste den Cursor zum " "ersten/letzten Zeichen, bevor sie bis an den Zeilenanfang/das Zeilenende " "gehen." #: ../code/dialogs/preferences-dialog.cpp:402 msgid "Text Wrapping" msgstr "Textumbruch" #: ../code/dialogs/preferences-dialog.cpp:403 msgid "Line Numbers" msgstr "Zeilennummern" #: ../code/dialogs/preferences-dialog.cpp:404 msgid "Current Line" msgstr "Aktuelle Zeile" #: ../code/dialogs/preferences-dialog.cpp:405 msgid "Right Margin" msgstr "Rechter Rand" #: ../code/dialogs/preferences-dialog.cpp:406 msgid "Bracket Matching" msgstr "Klammernpaare" #: ../code/dialogs/preferences-dialog.cpp:407 msgid "Whitespace Display" msgstr "Leerraum" #: ../code/dialogs/preferences-dialog.cpp:408 msgid "Enable text wrapping" msgstr "Zeilenumbruch aktivieren" #: ../code/dialogs/preferences-dialog.cpp:409 msgid "Do not split words over two lines" msgstr "Wörter nicht getrennt über zwei Zeilen schreiben" #: ../code/dialogs/preferences-dialog.cpp:410 msgid "Display line numbers" msgstr "Zeilennummern anzeigen" #: ../code/dialogs/preferences-dialog.cpp:411 msgid "Highlight current line" msgstr "Aktuelle Zeile hervorheben" #: ../code/dialogs/preferences-dialog.cpp:412 msgid "Display right margin" msgstr "Rechter Rand anzeigen" #: ../code/dialogs/preferences-dialog.cpp:413 msgid "Right margin at column:" msgstr "Rechter Rand in Spalte:" #: ../code/dialogs/preferences-dialog.cpp:414 msgid "Highlight matching bracket" msgstr "Klammernpaare hervorheben" #: ../code/dialogs/preferences-dialog.cpp:465 msgid "Display no whitespace" msgstr "Leerräume nicht anzeigen" #: ../code/dialogs/preferences-dialog.cpp:468 msgid "Display spaces" msgstr "Leerzeichen anzeigen" #: ../code/dialogs/preferences-dialog.cpp:472 msgid "Display tabs" msgstr "Tabulatoren anzeigen" #: ../code/dialogs/preferences-dialog.cpp:476 msgid "Display tabs and spaces" msgstr "Tabulatoren und Leerzeichen anzeigen" #: ../code/dialogs/preferences-dialog.cpp:526 msgid "Toolbar" msgstr "Werkzeugleiste" #: ../code/dialogs/preferences-dialog.cpp:527 msgid "Font" msgstr "Schrift" #: ../code/dialogs/preferences-dialog.cpp:528 msgid "Color Scheme" msgstr "Farbschema" #: ../code/dialogs/preferences-dialog.cpp:535 msgid "Show text only" msgstr "Nur Text anzeigen" #: ../code/dialogs/preferences-dialog.cpp:537 msgid "Show icons only" msgstr "Nur Symbole anzeigen" #: ../code/dialogs/preferences-dialog.cpp:539 msgid "Show both icons and text" msgstr "Zeige Symbol und Text" #: ../code/dialogs/preferences-dialog.cpp:541 msgid "Show text besides icons" msgstr "Zeige Text neben dem Symbol" #: ../code/dialogs/preferences-dialog.cpp:620 msgid "Trusted CAs" msgstr "Vertrauenswürdige Zertifizierungsstellen" #: ../code/dialogs/preferences-dialog.cpp:621 msgid "Secure Connection" msgstr "Sichere Verbindung" #: ../code/dialogs/preferences-dialog.cpp:622 msgid "Select a file containing trusted CAs" msgstr "" "Wählen Sie eine Datei, die vertrauenswürdige Zertifizierungsstellen enthält" #: ../code/dialogs/preferences-dialog.cpp:639 msgid "Use TLS if possible" msgstr "Wenn möglich TLS-Verschlüsselung verwenden" #: ../code/dialogs/preferences-dialog.cpp:642 msgid "Always use TLS" msgstr "Immer TLS-Verschlüsselung verwenden" #: ../code/dialogs/preferences-dialog.cpp:654 msgid "Preferences" msgstr "Einstellungen" #: ../code/dialogs/preferences-dialog.cpp:659 msgid "User" msgstr "Benutzer" #: ../code/dialogs/preferences-dialog.cpp:660 msgid "Editor" msgstr "Textbearbeitung" #: ../code/dialogs/preferences-dialog.cpp:661 msgid "View" msgstr "Ansicht" #: ../code/dialogs/preferences-dialog.cpp:662 msgid "Appearance" msgstr "Erscheinungsbild" #: ../code/dialogs/preferences-dialog.cpp:663 msgid "Security" msgstr "Sicherheit" #: ../code/main.cpp:196 msgid "Gobby options" msgstr "Gobby-Optionen" #: ../code/main.cpp:196 msgid "Options related to Gobby" msgstr "Optionen bezüglich Gobby" #: ../code/main.cpp:201 msgid "Display version information and exit" msgstr "Zeige Version von Gobby an" #: ../code/main.cpp:208 msgid "Also start a new Gobby instance when there is one running already" msgstr "Auch neue Gobby-Instanz starten, wenn bereits eine Instanz läuft" #: ../code/main.cpp:216 msgid "Connect to given host on startup, can be given multiple times" msgstr "" "Beim Programmstart zum angegebenen Server verbinden, Mehrfachnennung möglich" #: ../code/main.cpp:217 msgid "HOSTNAME" msgstr "SERVER" #: ../code/operations/operation-delete.cpp:42 msgid "Removing node \"%1\"..." msgstr "Eintrag »%1« wird entfernt…" #: ../code/operations/operation-delete.cpp:57 msgid "Failed to delete node \"%1\"" msgstr "Entfernen des Eintrags »%1« fehlgeschlagen" #: ../code/operations/operation-export-html.cpp:166 #, c-format msgid "written by: %s" msgstr "geschrieben von: %s" #: ../code/operations/operation-export-html.cpp:239 msgid "" msgstr "" #. %1$s is session name/hostname #. %2$s is path within the session #. %3$s is current date as formatted by %c, #. %4$s is a link to the gobby site, it must be present because #. we need to handle that manually to insert a hyperlink #. instead of just printf'ing it. #: ../code/operations/operation-export-html.cpp:252 #, c-format msgid "Document generated from %1$s:%2$s at %3$s by %4$s" msgstr "Dokument erstellt aus %1$s:%2$s am %3$s durch %4$s" #: ../code/operations/operation-export-html.cpp:393 msgid "Participants" msgstr "Teilnehmer" #: ../code/operations/operation-export-html.cpp:454 msgid "Exporting document \"%1\" to \"%2\" in HTML..." msgstr "Exportiere Dokument »%1« nach »%2« als HTML…" #: ../code/operations/operation-export-html.cpp:526 msgid "Failed to export document \"%1\" to HTML" msgstr "Exportieren des Dokuments »%1« zu HTML fehlgeschlagen" #: ../code/operations/operation-new.cpp:56 msgid "Creating directory \"%1\"..." msgstr "Erstelle Verzeichnis »%1«…" #: ../code/operations/operation-new.cpp:57 msgid "Creating document \"%1\"..." msgstr "Erstelle Dokument »%1«…" #: ../code/operations/operation-new.cpp:73 msgid "Failed to create directory \"%1\"" msgstr "Erstellen des Verzeichnisses »%1« fehlgeschlagen" #: ../code/operations/operation-new.cpp:74 msgid "Failed to create document \"%1\"" msgstr "Erstellen des Dokuments »%1« fehlgeschlagen" #. Translators: This is the 8 bit encoding that is tried when #. autodetecting a file's encoding. #: ../code/operations/operation-open.cpp:38 msgid "ISO-8859-1" msgstr "ISO-8859-15" #: ../code/operations/operation-open.cpp:89 msgid "Opening document \"%1\"..." msgstr "Dokument »%1« wird geöffnet…" #: ../code/operations/operation-open.cpp:124 msgid "" "The directory into which the new document was supposed to be inserted has " "been removed" msgstr "" "Das Verzeichnis, in das das neue Dokument eingefügt werden sollte, wurde " "entfernt" #: ../code/operations/operation-open.cpp:313 msgid "The file contains data not in the specified encoding" msgstr "" "Die Datei enthält Daten, die nicht dem angegebenen Zeichensatz entsprechen" #: ../code/operations/operation-open.cpp:324 msgid "" "The file either contains data in an unknown encoding, or it contains binary " "data." msgstr "" "Die Datei enthält entweder Text aus einem unbekannten Zeichensatz oder " "Binärdaten" #: ../code/operations/operation-open-multiple.cpp:84 msgid "Parent folder was removed" msgstr "Enthaltender Ordner wurde entfernt" #: ../code/operations/operation-open-multiple.cpp:172 msgid "Failed to open multiple documents" msgstr "Öffnen mehrerer Dokumente fehlgeschlagen" #: ../code/operations/operation-save.cpp:74 msgid "Saving document \"%1\" to \"%2\"..." msgstr "Speichere Dokument »%1« nach »%2«…" #: ../code/operations/operation-save.cpp:227 msgid "" "The document contains one or more characters that cannot be encoded in the " "specified character coding." msgstr "" "Das Dokument enthält ein oder mehrere Zeichen, die mit dem aktuellen " "Zeichensatz nicht dargestellt werden können." #: ../code/operations/operation-save.cpp:288 msgid "Failed to save document \"%1\"" msgstr "Speichern des Dokuments »%1« fehlgeschlagen" #: ../code/util/file.cpp:67 ../code/util/file.cpp:76 msgid "Could not create directory \"%1\": %2" msgstr "Erstellen des Verzeichnisses »%1« fehlgeschlagen: %2" #: ../code/window.cpp:112 msgid "Document Browser" msgstr "Dokumentenliste" #: ../code/window.cpp:168 msgid "You are still connected to a session" msgstr "Sie sind noch in einer Sitzung" #: ../code/window.cpp:176 msgid "Do you want to close Gobby nevertheless?" msgstr "Wollen Sie Gobby dennoch schließen?" #: ../code/window.cpp:182 msgid "C_ancel" msgstr "_Abbrechen" #: ../gobby-0.5.desktop.in.h:1 msgid "Collaborative Editor" msgstr "Gemeinschaftlicher Editor" #: ../gobby-0.5.desktop.in.h:2 msgid "Edit text files collaboratively" msgstr "Textdateien gemeinsam bearbeiten" #: ../gobby-0.5.desktop.in.h:3 msgid "Gobby" msgstr "Gobby" #: ../gobby-0.5.desktop.in.h:4 msgid "Gobby Collaborative Editor (0.5)" msgstr "Gobby Gemeinschaftlicher Editor (0.5)" #~ msgid "Subscription already in progress" #~ msgstr "Anmeldung läuft bereits" gobby-0.4.94/po/en_GB.po0000644000175000017500000006707711531722663011612 00000000000000# British English translation for Gobby, the collaborative real-time text # editor. # Copyright (C) 2009 Gabríel A. Pétursson # This file is distributed under the same license as the Gobby package. # Gabríel A. Pétursson , 2009. # msgid "" msgstr "" "Project-Id-Version: gobby-0.4.93~dev\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2010-06-20 14:26+0200\n" "PO-Revision-Date: 2009-12-03 19:26-0000\n" "Last-Translator: Gabríel A. Pétursson \n" "Language-Team: LANGUAGE \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n!=1;\n" #: ../code/commands/browser-commands.cpp:109 msgid "Subscribing to %1..." msgstr "Subscribing to %1..." #: ../code/commands/browser-commands.cpp:122 msgid "Subscribing to chat on %1..." msgstr "Subscribing to chat on %1..." #: ../code/commands/browser-commands.cpp:307 msgid "Subscription failed" msgstr "Subscription failed" #: ../code/commands/browser-context-commands.cpp:94 msgid "Create Do_cument..." msgstr "Create Do_cument..." #: ../code/commands/browser-context-commands.cpp:129 msgid "Create Directory..." msgstr "Create Directory..." #: ../code/commands/browser-context-commands.cpp:142 msgid "_Open Document..." msgstr "_Open Document..." #: ../code/commands/browser-context-commands.cpp:161 msgid "D_elete" msgstr "D_elete" #: ../code/commands/browser-context-commands.cpp:197 msgid "Choose a name for the directory" msgstr "Choose a name for the directory" #: ../code/commands/browser-context-commands.cpp:198 msgid "Choose a name for the document" msgstr "Choose a name for the document" #: ../code/commands/browser-context-commands.cpp:199 msgid "_Directory Name:" msgstr "_Directory Name:" #: ../code/commands/browser-context-commands.cpp:200 msgid "_Document Name:" msgstr "_Document Name:" #: ../code/commands/browser-context-commands.cpp:203 msgid "C_reate" msgstr "C_reate" #: ../code/commands/browser-context-commands.cpp:207 msgid "New Directory" msgstr "New Directory" #: ../code/commands/browser-context-commands.cpp:208 #: ../code/commands/file-tasks/task-new.cpp:38 msgid "New Document" msgstr "New Document" #: ../code/commands/browser-context-commands.cpp:224 #: ../code/commands/file-tasks/task-open-file.cpp:24 msgid "Choose a text file to open" msgstr "Choose a text file to open" #: ../code/commands/file-tasks/task-export-html.cpp:29 msgid "Choose a location to export document \"%1\" to" msgstr "Choose a location to export document \"%1\" to" #: ../code/commands/file-tasks/task-open.cpp:48 msgid "Querying \"%1\"..." msgstr "Querying \"%1\"..." #: ../code/commands/file-tasks/task-open.cpp:105 #: ../code/operations/operation-open.cpp:437 #: ../code/operations/operation-open-multiple.cpp:159 msgid "Failed to open document \"%1\"" msgstr "Failed to open document \"%1\"" #: ../code/commands/file-tasks/task-save.cpp:26 msgid "Choose a location to save document \"%1\" to" msgstr "Choose a location to save document \"%1\" to" #. Help browser could not be invoked, show an error message to the user. #: ../code/commands/help-commands.cpp:69 msgid "There was an error displaying help." msgstr "There was an error displaying help." #: ../code/commands/help-commands.cpp:92 msgid "Contributors:" msgstr "Contributors:" #: ../code/commands/help-commands.cpp:98 msgid "British English:" msgstr "British English:" #: ../code/commands/help-commands.cpp:100 msgid "German:" msgstr "German:" #: ../code/commands/help-commands.cpp:117 msgid "" "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.\n" "\n" "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.\n" "\n" "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" msgstr "" "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.\n" "\n" "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.\n" "\n" "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" #: ../code/commands/subscription-commands.cpp:259 msgid "" "The connection to the publisher of this document has been lost. Further " "changes to the document could not be synchronized to others anymore, " "therefore the document cannot be edited anymore.\n" "\n" "Please note also that it is possible that not all of your latest changes " "have reached the publisher before the connection was lost." msgstr "" "The connection to the publisher of this document has been lost. Further " "changes to the document could not be synchronised to others any longer, " "therefore the document cannot be edited any longer.\n" "\n" "Please note also that it is possible that not all of your latest changes " "have reached the publisher before the connection was lost." #: ../code/commands/synchronization-commands.cpp:32 msgid "Synchronization in progress... %1%%" msgstr "Synchronisation in progress... %1%%" #. Document cannot be used if an error happened #. during synchronization. #: ../code/commands/synchronization-commands.cpp:44 msgid "This document cannot be used." msgstr "This document cannot be used." #: ../code/commands/synchronization-commands.cpp:47 #: ../code/commands/user-join-commands.cpp:40 msgid "" "If you have an idea what could have caused the problem, then you may attempt " "to solve it and try again (after having closed this document). Otherwise it " "is most likely a bug in the software. In that case, please file a bug report " "at http://gobby.0x539.de/trac/newticket and provide as much information as " "you can, including what you did when the problem occurred and how to " "reproduce the problem (if possible) so that we can fix the problem in a " "later version. Thank you." msgstr "" "If you have an idea what could have caused the problem, then you may attempt " "to solve it and try again (after having closed this document). Otherwise it " "is most likely a bug in the software. In that case, please file a bug report " "at http://gobby.0x539.de/trac/newticket and provide as much information as " "you can, including what you did when the problem occurred and how to " "reproduce the problem (if possible) in order for us to fix the problem in a " "later version. Thank you." #: ../code/commands/synchronization-commands.cpp:61 msgid "Synchronization failed: %1" msgstr "Synchronisation failed: %1" #. TODO: Adjust this for chat sessions #: ../code/commands/user-join-commands.cpp:35 msgid "" "You can still watch others editing the document, but you cannot edit it " "yourself." msgstr "" "You can still watch others editing the document, but you cannot edit it " "yourself." #: ../code/commands/user-join-commands.cpp:54 msgid "User Join failed: %1" msgstr "User Join failed: %1" #: ../code/commands/user-join-commands.cpp:283 msgid "User Join in progress..." msgstr "User Join in progress..." #: ../code/core/browser.cpp:113 msgid "_Direct Connection" msgstr "_Direct Connection" #: ../code/core/browser.cpp:115 msgid "Host Name:" msgstr "Host Name:" #: ../code/core/browser.cpp:301 ../code/core/browser.cpp:425 msgid "Connection to \"%1\" failed" msgstr "Connection to \"%1\" failed" #: ../code/core/browser.cpp:354 msgid "Could not resolve \"%1\"" msgstr "Could not resolve \"%1\"" #: ../code/core/browser.cpp:428 msgid "Device \"%1\" does not exist" msgstr "Device \"%1\" does not exist" #: ../code/core/browser.cpp:464 msgid "Resolving \"%1\"..." msgstr "Resolving \"%1\"..." #: ../code/core/header.cpp:198 msgid "_None" msgstr "_None" #: ../code/core/header.cpp:222 msgid "_File" msgstr "_File" #: ../code/core/header.cpp:225 msgid "_Open..." msgstr "_Open..." #: ../code/core/header.cpp:228 msgid "Open _Location..." msgstr "Open _Location..." #: ../code/core/header.cpp:232 msgid "Save _As..." msgstr "Save _As..." #: ../code/core/header.cpp:236 ../code/core/iconmanager.cpp:40 msgid "Save All" msgstr "Save All" #: ../code/core/header.cpp:236 msgid "Save all open files locally" msgstr "Save all open files locally" #: ../code/core/header.cpp:238 msgid "Export As _HTML..." msgstr "Export As _HTML..." #: ../code/core/header.cpp:241 msgid "Connect _to Server..." msgstr "Connect _to Server..." #: ../code/core/header.cpp:246 msgid "_Edit" msgstr "_Edit" #: ../code/core/header.cpp:254 msgid "_Find..." msgstr "_Find..." #: ../code/core/header.cpp:256 msgid "Find Ne_xt" msgstr "Find Ne_xt" #: ../code/core/header.cpp:257 msgid "Find next match of phrase searched for" msgstr "Find next match of phrase searched for" #: ../code/core/header.cpp:260 msgid "Find Pre_vious" msgstr "Find Pre_vious" #: ../code/core/header.cpp:261 msgid "Find previous match of phrase searched for" msgstr "Find previous match of phrase searched for" #: ../code/core/header.cpp:266 msgid "Find and Rep_lace..." msgstr "Find and Rep_lace..." #: ../code/core/header.cpp:270 msgid "Go to _Line..." msgstr "Go to _Line..." #: ../code/core/header.cpp:274 msgid "Pr_eferences..." msgstr "Pr_eferences..." #: ../code/core/header.cpp:276 msgid "_View" msgstr "_View" #: ../code/core/header.cpp:279 msgid "Reset User Colors" msgstr "Reset User Colours" #: ../code/core/header.cpp:280 msgid "Hide user colors in current document" msgstr "Hide user colours in current document" #: ../code/core/header.cpp:283 msgid "View Toolbar" msgstr "View Toolbar" #: ../code/core/header.cpp:284 msgid "Whether to show the toolbar" msgstr "Whether to show the toolbar" #: ../code/core/header.cpp:288 msgid "View Statusbar" msgstr "View Statusbar" #: ../code/core/header.cpp:289 msgid "Whether to show the statusbar" msgstr "Whether to show the statusbar" #: ../code/core/header.cpp:293 msgid "View Document Browser" msgstr "View Document Browser" #: ../code/core/header.cpp:294 msgid "Whether to show the document browser" msgstr "Whether to show the document browser" #: ../code/core/header.cpp:298 msgid "View Chat" msgstr "View Chat" #: ../code/core/header.cpp:299 msgid "Whether to show the chat pane" msgstr "Whether to show the chat pane" #: ../code/core/header.cpp:303 msgid "View Document User List" msgstr "View Document User List" #: ../code/core/header.cpp:304 msgid "Whether to show the user list for documents" msgstr "Whether to show the user list for documents" #: ../code/core/header.cpp:308 msgid "View Chat User List" msgstr "View Chat User List" #: ../code/core/header.cpp:309 msgid "Whether to show the user list for the chat" msgstr "Whether to show the user list for the chat" #: ../code/core/header.cpp:313 msgid "_Highlight Mode" msgstr "_Highlight Mode" #: ../code/core/header.cpp:319 msgid "_Help" msgstr "_Help" #: ../code/core/header.cpp:322 msgid "_Contents" msgstr "_Contents" #: ../code/core/header.cpp:323 msgid "Opens the Gobby manual" msgstr "Opens the Gobby manual" #: ../code/core/header.cpp:326 msgid "_About..." msgstr "_About..." #: ../code/core/header.cpp:327 msgid "Shows Gobby's copyright and credits" msgstr "Shows Gobby's copyright and credits" #: ../code/core/iconmanager.cpp:46 msgid "User list" msgstr "User list" #: ../code/core/iconmanager.cpp:52 msgid "Document list" msgstr "Document list" #: ../code/core/iconmanager.cpp:58 ../code/window.cpp:49 msgid "Chat" msgstr "Chat" #: ../code/core/iconmanager.cpp:65 msgid "User Color Indicator" msgstr "User Colour Indicator" #: ../code/core/sessionuserview.cpp:41 msgid "User List" msgstr "User List" #: ../code/core/statusbar.cpp:395 msgid "Ln %1, Col %2\t%3" msgstr "Ln %1, Col %2\t%3" #: ../code/core/statusbar.cpp:398 msgid "OVR" msgstr "OVR" #: ../code/core/statusbar.cpp:398 msgid "INS" msgstr "INS" #: ../code/core/textsessionview.cpp:519 msgid "Text written by %1" msgstr "Text written by %1" #: ../code/core/textsessionview.cpp:525 msgid "Unowned text" msgstr "Ownerless text" #: ../code/core/userlist.cpp:105 msgid "Users" msgstr "Users" #: ../code/dialogs/connection-dialog.cpp:28 msgid "Connect to Server" msgstr "Connect to Server" #: ../code/dialogs/connection-dialog.cpp:32 msgid "Please enter a host name with which to establish a connection." msgstr "Please enter a host name with which to establish a connection." #: ../code/dialogs/connection-dialog.cpp:34 msgid "_Remote Endpoint:" msgstr "_Remote Endpoint:" #: ../code/dialogs/document-location-dialog.cpp:29 msgid "Document Name:" msgstr "Document Name:" #: ../code/dialogs/document-location-dialog.cpp:156 msgid "Select document's target location" msgstr "Select document's target location" #: ../code/dialogs/document-location-dialog.cpp:158 msgid "Choose a directory to create the document into:" msgstr "Choose a directory to create the document into:" #: ../code/dialogs/document-location-dialog.cpp:164 msgid "Select documents' target location" msgstr "Select documents' target location" #: ../code/dialogs/document-location-dialog.cpp:166 msgid "Choose a directory to create the documents into:" msgstr "Choose a directory to create the documents into:" #: ../code/dialogs/find-dialog.cpp:46 ../code/dialogs/find-dialog.cpp:144 msgid "Find" msgstr "Find" #: ../code/dialogs/find-dialog.cpp:49 msgid "_Search for:" msgstr "_Search for:" #: ../code/dialogs/find-dialog.cpp:51 msgid "Replace _with:" msgstr "Replace _with:" #: ../code/dialogs/find-dialog.cpp:53 msgid "_Match case" msgstr "_Match case" #: ../code/dialogs/find-dialog.cpp:54 msgid "Match _entire word only" msgstr "Match _entire word only" #: ../code/dialogs/find-dialog.cpp:55 msgid "Search _backwards" msgstr "Search _backwards" #: ../code/dialogs/find-dialog.cpp:56 msgid "Wra_p around" msgstr "Wra_p around" #: ../code/dialogs/find-dialog.cpp:102 msgid "Replace _All" msgstr "Replace _All" #: ../code/dialogs/find-dialog.cpp:104 msgid "_Replace" msgstr "_Replace" #: ../code/dialogs/find-dialog.cpp:144 msgid "Replace" msgstr "Replace" #: ../code/dialogs/find-dialog.cpp:163 ../code/dialogs/find-dialog.cpp:179 msgid "Phrase \"%1\" has not been found" msgstr "Phrase \"%1\" has not been found" #: ../code/dialogs/find-dialog.cpp:337 msgid "No occurrence has been replaced" msgstr "No occurrence has been replaced" #: ../code/dialogs/find-dialog.cpp:343 msgid "%1 occurrence has been replaced" msgid_plural "%1 occurrences have been replaced" msgstr[0] "%1 occurrence has been replaced" msgstr[1] "%1 occurrences have been replaced" #: ../code/dialogs/goto-dialog.cpp:27 msgid "Go to line" msgstr "Go to line" #: ../code/dialogs/goto-dialog.cpp:30 msgid "Line _number:" msgstr "Line _number:" #: ../code/dialogs/goto-dialog.cpp:51 msgid "Go To _Line" msgstr "Go To _Line" #: ../code/dialogs/initial-dialog.cpp:49 msgid "Choose a user color" msgstr "Choose a user colour" #: ../code/dialogs/initial-dialog.cpp:53 msgid "Welcome to Gobby" msgstr "Welcome to Gobby" #: ../code/dialogs/initial-dialog.cpp:62 msgid "" "Before we start, a few options need to be configured. You can later change " "them by choosing Edit ▸ Preferences from the menu." msgstr "" "Before we start, a few options need to be configured. You can later change " "them by choosing Edit ▸ Preferences from the menu." #: ../code/dialogs/initial-dialog.cpp:69 msgid "User Name" msgstr "User Name" #: ../code/dialogs/initial-dialog.cpp:71 msgid "Your name as shown to other users." msgstr "Your name as shown to other users." #: ../code/dialogs/initial-dialog.cpp:80 msgid "User Color" msgstr "User Colour" #: ../code/dialogs/initial-dialog.cpp:82 msgid "The color with which text you have written is branded." msgstr "The colour with which text you have written is branded." #: ../code/dialogs/open-location-dialog.cpp:27 msgid "Open Location" msgstr "Open Location" #: ../code/dialogs/open-location-dialog.cpp:28 msgid "Enter the _location (URI) of the file you would like to open:" msgstr "Enter the _location (URI) of the file you would like to open:" #: ../code/dialogs/password-dialog.cpp:27 msgid "Password Required" msgstr "Password Required" #: ../code/dialogs/password-dialog.cpp:33 msgid "Connection to host \"%1\" requires a password." msgstr "Connection to host \"%1\" requires a password." #: ../code/dialogs/password-dialog.cpp:34 msgid "Invalid password for host \"%1\". Please try again." msgstr "Invalid password for host \"%1\". Please try again." #: ../code/dialogs/password-dialog.cpp:37 msgid "Server _Password:" msgstr "Server _Password:" #: ../code/dialogs/preferences-dialog.cpp:232 msgid "Settings" msgstr "Settings" #: ../code/dialogs/preferences-dialog.cpp:233 msgid "Paths" msgstr "Paths" #: ../code/dialogs/preferences-dialog.cpp:235 msgid "User name:" msgstr "User name:" #: ../code/dialogs/preferences-dialog.cpp:237 msgid "User color:" msgstr "User colour:" #: ../code/dialogs/preferences-dialog.cpp:238 msgid "Choose a new user color" msgstr "Choose a new user colour" #: ../code/dialogs/preferences-dialog.cpp:241 msgid "Host directory:" msgstr "Host directory:" #: ../code/dialogs/preferences-dialog.cpp:283 msgid "The directory into which locally hosted sessions are permanently stored" msgstr "" "The directory into which locally hosted sessions are permanently stored" #: ../code/dialogs/preferences-dialog.cpp:300 msgid "Tab Stops" msgstr "Tab Stops" #: ../code/dialogs/preferences-dialog.cpp:301 msgid "Indentation" msgstr "Indentation" #: ../code/dialogs/preferences-dialog.cpp:302 msgid "Home/End Behavior" msgstr "Home/End Behaviour" #: ../code/dialogs/preferences-dialog.cpp:303 msgid "File Saving" msgstr "File Saving" #: ../code/dialogs/preferences-dialog.cpp:304 msgid "_Tab width:" msgstr "_Tab width:" #: ../code/dialogs/preferences-dialog.cpp:306 msgid "Insert _spaces instead of tabs" msgstr "Insert _spaces instead of tabs" #: ../code/dialogs/preferences-dialog.cpp:307 msgid "Enable automatic _indentation" msgstr "Enable automatic _indentation" #: ../code/dialogs/preferences-dialog.cpp:308 msgid "Smart _home/end" msgstr "Smart _home/end" #: ../code/dialogs/preferences-dialog.cpp:309 msgid "Enable _automatic saving of documents" msgstr "Enable _automatic saving of documents" #: ../code/dialogs/preferences-dialog.cpp:311 msgid "Autosave interval in _minutes:" msgstr "Autosave interval in _minutes:" #: ../code/dialogs/preferences-dialog.cpp:332 msgid "" "With this option enabled, Home/End keys move to first/last character before " "going to the start/end of the line." msgstr "" "With this option enabled, Home/End keys move to first/last character before " "going to the start/end of the line." #: ../code/dialogs/preferences-dialog.cpp:402 msgid "Text Wrapping" msgstr "Text Wrapping" #: ../code/dialogs/preferences-dialog.cpp:403 msgid "Line Numbers" msgstr "Line Numbers" #: ../code/dialogs/preferences-dialog.cpp:404 msgid "Current Line" msgstr "Current Line" #: ../code/dialogs/preferences-dialog.cpp:405 msgid "Right Margin" msgstr "Right Margin" #: ../code/dialogs/preferences-dialog.cpp:406 msgid "Bracket Matching" msgstr "Bracket Matching" #: ../code/dialogs/preferences-dialog.cpp:407 msgid "Whitespace Display" msgstr "Whitespace Display" #: ../code/dialogs/preferences-dialog.cpp:408 msgid "Enable text wrapping" msgstr "Enable text wrapping" #: ../code/dialogs/preferences-dialog.cpp:409 msgid "Do not split words over two lines" msgstr "Do not split words over two lines" #: ../code/dialogs/preferences-dialog.cpp:410 msgid "Display line numbers" msgstr "Display line numbers" #: ../code/dialogs/preferences-dialog.cpp:411 msgid "Highlight current line" msgstr "Highlight current line" #: ../code/dialogs/preferences-dialog.cpp:412 msgid "Display right margin" msgstr "Display right margin" #: ../code/dialogs/preferences-dialog.cpp:413 msgid "Right margin at column:" msgstr "Right margin at column:" #: ../code/dialogs/preferences-dialog.cpp:414 msgid "Highlight matching bracket" msgstr "Highlight matching bracket" #: ../code/dialogs/preferences-dialog.cpp:465 msgid "Display no whitespace" msgstr "Display no whitespace" #: ../code/dialogs/preferences-dialog.cpp:468 msgid "Display spaces" msgstr "Display spaces" #: ../code/dialogs/preferences-dialog.cpp:472 msgid "Display tabs" msgstr "Display tabs" #: ../code/dialogs/preferences-dialog.cpp:476 msgid "Display tabs and spaces" msgstr "Display tabs and spaces" #: ../code/dialogs/preferences-dialog.cpp:526 msgid "Toolbar" msgstr "Toolbar" #: ../code/dialogs/preferences-dialog.cpp:527 msgid "Font" msgstr "Font" #: ../code/dialogs/preferences-dialog.cpp:528 msgid "Color Scheme" msgstr "Colour Scheme" #: ../code/dialogs/preferences-dialog.cpp:535 msgid "Show text only" msgstr "Show text only" #: ../code/dialogs/preferences-dialog.cpp:537 msgid "Show icons only" msgstr "Show icons only" #: ../code/dialogs/preferences-dialog.cpp:539 msgid "Show both icons and text" msgstr "Show both icons and text" #: ../code/dialogs/preferences-dialog.cpp:541 msgid "Show text besides icons" msgstr "Show text besides icons" #: ../code/dialogs/preferences-dialog.cpp:620 msgid "Trusted CAs" msgstr "Trusted CAs" #: ../code/dialogs/preferences-dialog.cpp:621 msgid "Secure Connection" msgstr "Secure Connection" #: ../code/dialogs/preferences-dialog.cpp:622 msgid "Select a file containing trusted CAs" msgstr "Select a file containing trusted CAs" #: ../code/dialogs/preferences-dialog.cpp:639 msgid "Use TLS if possible" msgstr "Use TLS where possible" #: ../code/dialogs/preferences-dialog.cpp:642 msgid "Always use TLS" msgstr "Always use TLS" #: ../code/dialogs/preferences-dialog.cpp:654 msgid "Preferences" msgstr "Preferences" #: ../code/dialogs/preferences-dialog.cpp:659 msgid "User" msgstr "User" #: ../code/dialogs/preferences-dialog.cpp:660 msgid "Editor" msgstr "Editor" #: ../code/dialogs/preferences-dialog.cpp:661 msgid "View" msgstr "View" #: ../code/dialogs/preferences-dialog.cpp:662 msgid "Appearance" msgstr "Appearance" #: ../code/dialogs/preferences-dialog.cpp:663 msgid "Security" msgstr "Security" #: ../code/main.cpp:196 msgid "Gobby options" msgstr "Gobby options" #: ../code/main.cpp:196 msgid "Options related to Gobby" msgstr "Options related to Gobby" #: ../code/main.cpp:201 msgid "Display version information and exit" msgstr "Display version information and exit" #: ../code/main.cpp:208 msgid "Also start a new Gobby instance when there is one running already" msgstr "Also start a new Gobby instance when there is one running already" #: ../code/main.cpp:216 msgid "Connect to given host on startup, can be given multiple times" msgstr "Connect to given host on startup, can be given multiple times" #: ../code/main.cpp:217 msgid "HOSTNAME" msgstr "HOSTNAME" #: ../code/operations/operation-delete.cpp:42 msgid "Removing node \"%1\"..." msgstr "Removing node \"%1\"..." #: ../code/operations/operation-delete.cpp:57 msgid "Failed to delete node \"%1\"" msgstr "Failed to delete node \"%1\"" #: ../code/operations/operation-export-html.cpp:166 #, c-format msgid "written by: %s" msgstr "written by: %s" #: ../code/operations/operation-export-html.cpp:239 msgid "" msgstr "" #. %1$s is session name/hostname #. %2$s is path within the session #. %3$s is current date as formatted by %c, #. %4$s is a link to the gobby site, it must be present because #. we need to handle that manually to insert a hyperlink #. instead of just printf'ing it. #: ../code/operations/operation-export-html.cpp:252 #, c-format msgid "Document generated from %1$s:%2$s at %3$s by %4$s" msgstr "Document generated from %1$s:%2$s at %3$s by %4$s" #: ../code/operations/operation-export-html.cpp:393 msgid "Participants" msgstr "Participants" #: ../code/operations/operation-export-html.cpp:454 msgid "Exporting document \"%1\" to \"%2\" in HTML..." msgstr "Exporting document \"%1\" to \"%2\" in HTML..." #: ../code/operations/operation-export-html.cpp:526 msgid "Failed to export document \"%1\" to HTML" msgstr "Failed to export document \"%1\" to HTML" #: ../code/operations/operation-new.cpp:56 msgid "Creating directory \"%1\"..." msgstr "Creating directory \"%1\"..." #: ../code/operations/operation-new.cpp:57 msgid "Creating document \"%1\"..." msgstr "Creating document \"%1\"..." #: ../code/operations/operation-new.cpp:73 msgid "Failed to create directory \"%1\"" msgstr "Failed to create directory \"%1\"" #: ../code/operations/operation-new.cpp:74 msgid "Failed to create document \"%1\"" msgstr "Failed to create document \"%1\"" #. Translators: This is the 8 bit encoding that is tried when #. autodetecting a file's encoding. #: ../code/operations/operation-open.cpp:38 msgid "ISO-8859-1" msgstr "ISO-8859-1" #: ../code/operations/operation-open.cpp:89 msgid "Opening document \"%1\"..." msgstr "Opening document \"%1\"..." #: ../code/operations/operation-open.cpp:124 msgid "" "The directory into which the new document was supposed to be inserted has " "been removed" msgstr "" "The directory into which the new document was supposed to be inserted has " "been removed" #: ../code/operations/operation-open.cpp:313 msgid "The file contains data not in the specified encoding" msgstr "The file contains data not in the specified encoding" #: ../code/operations/operation-open.cpp:324 msgid "" "The file either contains data in an unknown encoding, or it contains binary " "data." msgstr "" "The file either contains data in an unknown encoding, or it contains binary " "data." #: ../code/operations/operation-open-multiple.cpp:84 msgid "Parent folder was removed" msgstr "Parent folder was removed" #: ../code/operations/operation-open-multiple.cpp:172 msgid "Failed to open multiple documents" msgstr "Failed to open multiple documents" #: ../code/operations/operation-save.cpp:74 msgid "Saving document \"%1\" to \"%2\"..." msgstr "Saving document \"%1\" to \"%2\"..." #: ../code/operations/operation-save.cpp:227 msgid "" "The document contains one or more characters that cannot be encoded in the " "specified character coding." msgstr "" "The document contains one or more characters that cannot be encoded in the " "specified character coding." #: ../code/operations/operation-save.cpp:288 msgid "Failed to save document \"%1\"" msgstr "Failed to save document \"%1\"" #: ../code/util/file.cpp:67 ../code/util/file.cpp:76 msgid "Could not create directory \"%1\": %2" msgstr "Could not create directory \"%1\": %2" #: ../code/window.cpp:112 msgid "Document Browser" msgstr "Document Browser" #: ../code/window.cpp:168 msgid "You are still connected to a session" msgstr "You are still connected to a session" #: ../code/window.cpp:176 msgid "Do you want to close Gobby nevertheless?" msgstr "Do you want to close Gobby nevertheless?" #: ../code/window.cpp:182 msgid "C_ancel" msgstr "C_ancel" #: ../gobby-0.5.desktop.in.h:1 msgid "Collaborative Editor" msgstr "Collaborative Editor" #: ../gobby-0.5.desktop.in.h:2 msgid "Edit text files collaboratively" msgstr "Edit text files collaboratively" #: ../gobby-0.5.desktop.in.h:3 msgid "Gobby" msgstr "Gobby" #: ../gobby-0.5.desktop.in.h:4 msgid "Gobby Collaborative Editor (0.5)" msgstr "Gobby Collaborative Editor (0.5)" #, fuzzy #~ msgid "Subscription already in progress" #~ msgstr "Subscription failed" #, fuzzy #~ msgid "Whether to show the user list" #~ msgstr "Whether to show the user list for the chat" gobby-0.4.94/po/Makefile.in.in0000644000175000017500000001537711543672403012745 00000000000000# Makefile for program source directory in GNU NLS utilities package. # Copyright (C) 1995, 1996, 1997 by Ulrich Drepper # Copyright (C) 2004-2008 Rodney Dawes # # This file may be copied and used freely without restrictions. It may # be used in projects which are not available under a GNU Public License, # but which still want to provide support for the GNU gettext functionality. # # - Modified by Owen Taylor to use GETTEXT_PACKAGE # instead of PACKAGE and to look for po2tbl in ./ not in intl/ # # - Modified by jacob berkman to install # Makefile.in.in and po2tbl.sed.in for use with glib-gettextize # # - Modified by Rodney Dawes for use with intltool # # We have the following line for use by intltoolize: # INTLTOOL_MAKEFILE GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ PACKAGE = @PACKAGE@ VERSION = @VERSION@ SHELL = @SHELL@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ top_builddir = @top_builddir@ VPATH = @srcdir@ prefix = @prefix@ exec_prefix = @exec_prefix@ datadir = @datadir@ datarootdir = @datarootdir@ libdir = @libdir@ DATADIRNAME = @DATADIRNAME@ itlocaledir = $(prefix)/$(DATADIRNAME)/locale subdir = po install_sh = @install_sh@ # Automake >= 1.8 provides @mkdir_p@. # Until it can be supposed, use the safe fallback: mkdir_p = $(install_sh) -d INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ GMSGFMT = @GMSGFMT@ MSGFMT = @MSGFMT@ XGETTEXT = @XGETTEXT@ INTLTOOL_UPDATE = @INTLTOOL_UPDATE@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@ MSGMERGE = INTLTOOL_EXTRACT=$(INTLTOOL_EXTRACT) srcdir=$(srcdir) $(INTLTOOL_UPDATE) --gettext-package $(GETTEXT_PACKAGE) --dist GENPOT = INTLTOOL_EXTRACT=$(INTLTOOL_EXTRACT) srcdir=$(srcdir) $(INTLTOOL_UPDATE) --gettext-package $(GETTEXT_PACKAGE) --pot ALL_LINGUAS = @ALL_LINGUAS@ PO_LINGUAS=$(shell if test -r $(srcdir)/LINGUAS; then grep -v "^\#" $(srcdir)/LINGUAS; else echo "$(ALL_LINGUAS)"; fi) USER_LINGUAS=$(shell if test -n "$(LINGUAS)"; then LLINGUAS="$(LINGUAS)"; ALINGUAS="$(ALL_LINGUAS)"; for lang in $$LLINGUAS; do if test -n "`grep \^$$lang$$ $(srcdir)/LINGUAS 2>/dev/null`" -o -n "`echo $$ALINGUAS|tr ' ' '\n'|grep \^$$lang$$`"; then printf "$$lang "; fi; done; fi) USE_LINGUAS=$(shell if test -n "$(USER_LINGUAS)" -o -n "$(LINGUAS)"; then LLINGUAS="$(USER_LINGUAS)"; else if test -n "$(PO_LINGUAS)"; then LLINGUAS="$(PO_LINGUAS)"; else LLINGUAS="$(ALL_LINGUAS)"; fi; fi; for lang in $$LLINGUAS; do printf "$$lang "; done) POFILES=$(shell LINGUAS="$(PO_LINGUAS)"; for lang in $$LINGUAS; do printf "$$lang.po "; done) DISTFILES = Makefile.in.in POTFILES.in $(POFILES) EXTRA_DISTFILES = ChangeLog POTFILES.skip Makevars LINGUAS POTFILES = \ # This comment gets stripped out CATALOGS=$(shell LINGUAS="$(USE_LINGUAS)"; for lang in $$LINGUAS; do printf "$$lang.gmo "; done) .SUFFIXES: .SUFFIXES: .po .pox .gmo .mo .msg .cat .po.pox: $(MAKE) $(GETTEXT_PACKAGE).pot $(MSGMERGE) $< $(GETTEXT_PACKAGE).pot -o $*.pox .po.mo: $(MSGFMT) -o $@ $< .po.gmo: file=`echo $* | sed 's,.*/,,'`.gmo \ && rm -f $$file && $(GMSGFMT) -o $$file $< .po.cat: sed -f ../intl/po2msg.sed < $< > $*.msg \ && rm -f $@ && gencat $@ $*.msg all: all-@USE_NLS@ all-yes: $(CATALOGS) all-no: $(GETTEXT_PACKAGE).pot: $(POTFILES) $(GENPOT) install: install-data install-data: install-data-@USE_NLS@ install-data-no: all install-data-yes: all linguas="$(USE_LINGUAS)"; \ for lang in $$linguas; do \ dir=$(DESTDIR)$(itlocaledir)/$$lang/LC_MESSAGES; \ $(mkdir_p) $$dir; \ if test -r $$lang.gmo; then \ $(INSTALL_DATA) $$lang.gmo $$dir/$(GETTEXT_PACKAGE).mo; \ echo "installing $$lang.gmo as $$dir/$(GETTEXT_PACKAGE).mo"; \ else \ $(INSTALL_DATA) $(srcdir)/$$lang.gmo $$dir/$(GETTEXT_PACKAGE).mo; \ echo "installing $(srcdir)/$$lang.gmo as" \ "$$dir/$(GETTEXT_PACKAGE).mo"; \ fi; \ if test -r $$lang.gmo.m; then \ $(INSTALL_DATA) $$lang.gmo.m $$dir/$(GETTEXT_PACKAGE).mo.m; \ echo "installing $$lang.gmo.m as $$dir/$(GETTEXT_PACKAGE).mo.m"; \ else \ if test -r $(srcdir)/$$lang.gmo.m ; then \ $(INSTALL_DATA) $(srcdir)/$$lang.gmo.m \ $$dir/$(GETTEXT_PACKAGE).mo.m; \ echo "installing $(srcdir)/$$lang.gmo.m as" \ "$$dir/$(GETTEXT_PACKAGE).mo.m"; \ else \ true; \ fi; \ fi; \ done # Empty stubs to satisfy archaic automake needs dvi info ctags tags CTAGS TAGS ID: # Define this as empty until I found a useful application. install-exec installcheck: uninstall: linguas="$(USE_LINGUAS)"; \ for lang in $$linguas; do \ rm -f $(DESTDIR)$(itlocaledir)/$$lang/LC_MESSAGES/$(GETTEXT_PACKAGE).mo; \ rm -f $(DESTDIR)$(itlocaledir)/$$lang/LC_MESSAGES/$(GETTEXT_PACKAGE).mo.m; \ done check: all $(GETTEXT_PACKAGE).pot rm -f missing notexist srcdir=$(srcdir) $(INTLTOOL_UPDATE) -m if [ -r missing -o -r notexist ]; then \ exit 1; \ fi mostlyclean: rm -f *.pox $(GETTEXT_PACKAGE).pot *.old.po cat-id-tbl.tmp rm -f .intltool-merge-cache clean: mostlyclean distclean: clean rm -f Makefile Makefile.in POTFILES stamp-it rm -f *.mo *.msg *.cat *.cat.m *.gmo maintainer-clean: distclean @echo "This command is intended for maintainers to use;" @echo "it deletes files that may require special tools to rebuild." rm -f Makefile.in.in distdir = ../$(PACKAGE)-$(VERSION)/$(subdir) dist distdir: $(DISTFILES) dists="$(DISTFILES)"; \ extra_dists="$(EXTRA_DISTFILES)"; \ for file in $$extra_dists; do \ test -f $(srcdir)/$$file && dists="$$dists $(srcdir)/$$file"; \ done; \ for file in $$dists; do \ test -f $$file || file="$(srcdir)/$$file"; \ ln $$file $(distdir) 2> /dev/null \ || cp -p $$file $(distdir); \ done update-po: Makefile $(MAKE) $(GETTEXT_PACKAGE).pot tmpdir=`pwd`; \ linguas="$(USE_LINGUAS)"; \ for lang in $$linguas; do \ echo "$$lang:"; \ result="`$(MSGMERGE) -o $$tmpdir/$$lang.new.po $$lang`"; \ if $$result; then \ if cmp $(srcdir)/$$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \ rm -f $$tmpdir/$$lang.new.po; \ else \ if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \ :; \ else \ echo "msgmerge for $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \ rm -f $$tmpdir/$$lang.new.po; \ exit 1; \ fi; \ fi; \ else \ echo "msgmerge for $$lang.gmo failed!"; \ rm -f $$tmpdir/$$lang.new.po; \ fi; \ done Makefile POTFILES: stamp-it @if test ! -f $@; then \ rm -f stamp-it; \ $(MAKE) stamp-it; \ fi stamp-it: Makefile.in.in $(top_builddir)/config.status POTFILES.in cd $(top_builddir) \ && CONFIG_FILES=$(subdir)/Makefile.in CONFIG_HEADERS= CONFIG_LINKS= \ $(SHELL) ./config.status # Tell versions [3.59,3.63) of GNU make not to export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: gobby-0.4.94/icons/0000755000175000017500000000000011543672436011041 500000000000000gobby-0.4.94/icons/Makefile.in0000644000175000017500000004241211543672414013025 00000000000000# 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@ subdir = icons DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = $(top_builddir)/code/features.hpp 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 = RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ install-dvi-recursive install-exec-recursive \ install-html-recursive install-info-recursive \ install-pdf-recursive install-ps-recursive install-recursive \ installcheck-recursive installdirs-recursive pdf-recursive \ ps-recursive uninstall-recursive RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ distdir ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" ACLOCAL = @ACLOCAL@ ALL_LINGUAS = @ALL_LINGUAS@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@ DOC_USER_FORMATS = @DOC_USER_FORMATS@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GMOFILES = @GMOFILES@ GMSGFMT = @GMSGFMT@ GREP = @GREP@ HELP_DIR = @HELP_DIR@ 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@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MKINSTALLDIRS = @MKINSTALLDIRS@ MSGFMT = @MSGFMT@ MSGFMT_OPTS = @MSGFMT_OPTS@ MSGMERGE = @MSGMERGE@ OBJEXT = @OBJEXT@ OMF_DIR = @OMF_DIR@ 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@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ WINDRES = @WINDRES@ 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_CXX = @ac_ct_CXX@ 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@ gobby_CFLAGS = @gobby_CFLAGS@ gobby_LIBS = @gobby_LIBS@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infinote_CFLAGS = @infinote_CFLAGS@ infinote_LIBS = @infinote_LIBS@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ 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@ unique_CFLAGS = @unique_CFLAGS@ unique_LIBS = @unique_LIBS@ SUBDIRS = hicolor HighContrastLargePrint HighContrastLargePrintInverse all: all-recursive .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(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) --gnu icons/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu icons/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: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. # To change the values of `make' variables: instead of editing Makefiles, # (1) if the variable is set in `config.status', edit `config.status' # (which will cause the Makefiles to be regenerated when you run `make'); # (2) otherwise, pass the desired values on the `make' command line. $(RECURSIVE_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ list='$(SUBDIRS)'; for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" $(RECURSIVE_CLEAN_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ rev=''; for subdir in $$list; do \ if test "$$subdir" = "."; then :; else \ rev="$$subdir $$rev"; \ fi; \ done; \ rev="$$rev ."; \ target=`echo $@ | sed s/-recursive//`; \ for subdir in $$rev; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags 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 @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: check-recursive all-am: Makefile installdirs: installdirs-recursive installdirs-am: install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive 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-recursive clean-am: clean-generic mostlyclean-am distclean: distclean-recursive -rm -f Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: .MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \ install-am install-strip tags-recursive .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ all all-am check check-am clean clean-generic ctags \ ctags-recursive distclean distclean-generic distclean-tags \ 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-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ installdirs-am maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic pdf pdf-am ps ps-am tags \ tags-recursive uninstall uninstall-am # 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: gobby-0.4.94/icons/hicolor/0000755000175000017500000000000011543672437012501 500000000000000gobby-0.4.94/icons/hicolor/Makefile.in0000644000175000017500000004347411543672414014475 00000000000000# 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@ subdir = icons/hicolor DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = $(top_builddir)/code/features.hpp 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 = RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ install-dvi-recursive install-exec-recursive \ install-html-recursive install-info-recursive \ install-pdf-recursive install-ps-recursive install-recursive \ installcheck-recursive installdirs-recursive pdf-recursive \ ps-recursive uninstall-recursive RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ distdir ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" ACLOCAL = @ACLOCAL@ ALL_LINGUAS = @ALL_LINGUAS@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@ DOC_USER_FORMATS = @DOC_USER_FORMATS@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GMOFILES = @GMOFILES@ GMSGFMT = @GMSGFMT@ GREP = @GREP@ HELP_DIR = @HELP_DIR@ 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@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MKINSTALLDIRS = @MKINSTALLDIRS@ MSGFMT = @MSGFMT@ MSGFMT_OPTS = @MSGFMT_OPTS@ MSGMERGE = @MSGMERGE@ OBJEXT = @OBJEXT@ OMF_DIR = @OMF_DIR@ 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@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ WINDRES = @WINDRES@ 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_CXX = @ac_ct_CXX@ 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@ gobby_CFLAGS = @gobby_CFLAGS@ gobby_LIBS = @gobby_LIBS@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infinote_CFLAGS = @infinote_CFLAGS@ infinote_LIBS = @infinote_LIBS@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ 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@ unique_CFLAGS = @unique_CFLAGS@ unique_LIBS = @unique_LIBS@ SUBDIRS = 48x48 scalable gtk_update_icon_cache = gtk-update-icon-cache -f -t $(datadir)/icons/hicolor all: all-recursive .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(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) --gnu icons/hicolor/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu icons/hicolor/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: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. # To change the values of `make' variables: instead of editing Makefiles, # (1) if the variable is set in `config.status', edit `config.status' # (which will cause the Makefiles to be regenerated when you run `make'); # (2) otherwise, pass the desired values on the `make' command line. $(RECURSIVE_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ list='$(SUBDIRS)'; for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" $(RECURSIVE_CLEAN_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ rev=''; for subdir in $$list; do \ if test "$$subdir" = "."; then :; else \ rev="$$subdir $$rev"; \ fi; \ done; \ rev="$$rev ."; \ target=`echo $@ | sed s/-recursive//`; \ for subdir in $$rev; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags 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 @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: check-recursive all-am: Makefile installdirs: installdirs-recursive installdirs-am: install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive 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-recursive clean-am: clean-generic mostlyclean-am distclean: distclean-recursive -rm -f Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: @$(NORMAL_INSTALL) $(MAKE) $(AM_MAKEFLAGS) install-data-hook install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: @$(NORMAL_INSTALL) $(MAKE) $(AM_MAKEFLAGS) uninstall-hook .MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \ install-am install-data-am install-strip tags-recursive \ uninstall-am .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ all all-am check check-am clean clean-generic ctags \ ctags-recursive distclean distclean-generic distclean-tags \ distdir dvi dvi-am html html-am info info-am install \ install-am install-data install-data-am install-data-hook \ 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-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs installdirs-am maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic pdf \ pdf-am ps ps-am tags tags-recursive uninstall uninstall-am \ uninstall-hook install-data-hook: update-icon-cache uninstall-hook: update-icon-cache update-icon-cache: @-if test -z "$(DESTDIR)"; then \ echo "Updating Gtk icon cache."; \ $(gtk_update_icon_cache); \ else \ echo "*** Icon cache not updated. After (un)install, run this:"; \ echo "*** $(gtk_update_icon_cache)"; \ fi # 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: gobby-0.4.94/icons/hicolor/48x48/0000755000175000017500000000000011543672437013300 500000000000000gobby-0.4.94/icons/hicolor/48x48/Makefile.in0000644000175000017500000004241311543672414015264 00000000000000# 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@ subdir = icons/hicolor/48x48 DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = $(top_builddir)/code/features.hpp 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 = RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ install-dvi-recursive install-exec-recursive \ install-html-recursive install-info-recursive \ install-pdf-recursive install-ps-recursive install-recursive \ installcheck-recursive installdirs-recursive pdf-recursive \ ps-recursive uninstall-recursive RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ distdir ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" ACLOCAL = @ACLOCAL@ ALL_LINGUAS = @ALL_LINGUAS@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@ DOC_USER_FORMATS = @DOC_USER_FORMATS@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GMOFILES = @GMOFILES@ GMSGFMT = @GMSGFMT@ GREP = @GREP@ HELP_DIR = @HELP_DIR@ 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@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MKINSTALLDIRS = @MKINSTALLDIRS@ MSGFMT = @MSGFMT@ MSGFMT_OPTS = @MSGFMT_OPTS@ MSGMERGE = @MSGMERGE@ OBJEXT = @OBJEXT@ OMF_DIR = @OMF_DIR@ 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@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ WINDRES = @WINDRES@ 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_CXX = @ac_ct_CXX@ 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@ gobby_CFLAGS = @gobby_CFLAGS@ gobby_LIBS = @gobby_LIBS@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infinote_CFLAGS = @infinote_CFLAGS@ infinote_LIBS = @infinote_LIBS@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ 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@ unique_CFLAGS = @unique_CFLAGS@ unique_LIBS = @unique_LIBS@ SUBDIRS = apps actions status all: all-recursive .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(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) --gnu icons/hicolor/48x48/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu icons/hicolor/48x48/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: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. # To change the values of `make' variables: instead of editing Makefiles, # (1) if the variable is set in `config.status', edit `config.status' # (which will cause the Makefiles to be regenerated when you run `make'); # (2) otherwise, pass the desired values on the `make' command line. $(RECURSIVE_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ list='$(SUBDIRS)'; for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" $(RECURSIVE_CLEAN_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ rev=''; for subdir in $$list; do \ if test "$$subdir" = "."; then :; else \ rev="$$subdir $$rev"; \ fi; \ done; \ rev="$$rev ."; \ target=`echo $@ | sed s/-recursive//`; \ for subdir in $$rev; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags 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 @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: check-recursive all-am: Makefile installdirs: installdirs-recursive installdirs-am: install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive 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-recursive clean-am: clean-generic mostlyclean-am distclean: distclean-recursive -rm -f Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: .MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \ install-am install-strip tags-recursive .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ all all-am check check-am clean clean-generic ctags \ ctags-recursive distclean distclean-generic distclean-tags \ 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-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ installdirs-am maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic pdf pdf-am ps ps-am tags \ tags-recursive uninstall uninstall-am # 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: gobby-0.4.94/icons/hicolor/48x48/apps/0000755000175000017500000000000011543672437014243 500000000000000gobby-0.4.94/icons/hicolor/48x48/apps/gobby-0.5.png0000644000175000017500000000615611531722663016275 00000000000000PNG  IHDR00WsRGBbKGD pHYs B(xtIME   IDAThpTu?o{vWҢHB c;!vĉq v!xihf:n!nݦ%V Ǹ&a$ !I{w.BH837{ᄏs\K-,3gζYf|@J+RJٶ]k( Z>oN0|텶zVek ѮOLmwO7źP(`Y2:S@8k<\JɆ6PWWf?Xѥl<9BS9 ٚG>4P(eYg|w&qg΋a$QJM_f̓SCK̛Z_k}JyW.2~btϓ~rX켞/d~?UUm"o5wojlq+`RGeoĻ|AT~+Rn <0 [S Fzv⊛5w͉.Rpdđds#'/Be4:M#|̝{9/S[[Z^y؜"re\E*EBx8;_sx"!⚆SJC$ ٷ?$I䬯[oA)E6ct_uQT玥rѧ]CCιbժU 444EO[ҊgPWW{zj,i.OW{{;ǏHcc#gX95bFBE$~'A)#ÙD٧O!"8By ]=2-[~z Sf ye-;^cdxӛUgUU{ypb*ˡc@hko 4ꑷJj*yì_ZmKNmlÈC:!NǡϢQUU緰 /.2Z9dRVco~+/RdՑxMHW OKI 8.Ṭv$CN*yңNDkb <8G"OG-K9V:OzTސ$ R[[Cs  vgF&`V ?EBI. D"xRw£3@u=A__߸9uCE Qe&lUV|{ϕu \:0#c̟wI뱯'OBs0M40 0Ks;iI"S _&MW7͚P.Kd>$U, LWv;,u1d$Ǐl24M;s;. ZR$<}/iN>)eapױ$Czq3]m pw,sqyاQBZ"cHtU ;v@u"}${;IPB4+K79 .T?yw^{{6Iec%r"s)dH)2NT! N CA̯l|/aҥ @:1DÜf"~󅇾 @<SM]E6±=+oS`0=HB$hHH )Ri;MxF=s9O~tuuerWͥiUȩu̺btkѸ馛}3\ym mgڜU7ЗCzWҦȻyrn lѱd2Adt_~x-W~hr\$+Wʕ+\sȑyXiN/#>/p-llaW"q󔕕[oSܱv#Sg]1H&ӄáXn]?=զi^{?oy@x቉Ŧ#H8J)|qͽ"e-+icdÆ O<ĞHZ&P3%$aO|:::HR]aYeF? %CO )l ZF閎ѭ↕y,H`P!%U|KQYYY*|>gѣ$b"p]ו٬X֭[ԕ'NX`0)RLMDeLm`455 TTT`9B!0x)Blۦ}50/*fΜ^kk3 C3 C)r]W !Rl3nq|]|>M=>52(IO@I"؅Xh|4% L-1 }Tʒ+Js J %KrI.pZHnIENDB`gobby-0.4.94/icons/hicolor/48x48/apps/Makefile.in0000644000175000017500000003025311543672414016226 00000000000000# 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@ subdir = icons/hicolor/48x48/apps DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = $(top_builddir)/code/features.hpp 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)$(icondir)" DATA = $(icon_DATA) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALL_LINGUAS = @ALL_LINGUAS@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@ DOC_USER_FORMATS = @DOC_USER_FORMATS@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GMOFILES = @GMOFILES@ GMSGFMT = @GMSGFMT@ GREP = @GREP@ HELP_DIR = @HELP_DIR@ 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@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MKINSTALLDIRS = @MKINSTALLDIRS@ MSGFMT = @MSGFMT@ MSGFMT_OPTS = @MSGFMT_OPTS@ MSGMERGE = @MSGMERGE@ OBJEXT = @OBJEXT@ OMF_DIR = @OMF_DIR@ 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@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ WINDRES = @WINDRES@ 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_CXX = @ac_ct_CXX@ 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@ gobby_CFLAGS = @gobby_CFLAGS@ gobby_LIBS = @gobby_LIBS@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infinote_CFLAGS = @infinote_CFLAGS@ infinote_LIBS = @infinote_LIBS@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ 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@ unique_CFLAGS = @unique_CFLAGS@ unique_LIBS = @unique_LIBS@ icondir = $(datadir)/icons/hicolor/48x48/apps icon_DATA = gobby-0.5.png EXTRA_DIST = $(icon_DATA) all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(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) --gnu icons/hicolor/48x48/apps/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu icons/hicolor/48x48/apps/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: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-iconDATA: $(icon_DATA) @$(NORMAL_INSTALL) test -z "$(icondir)" || $(MKDIR_P) "$(DESTDIR)$(icondir)" @list='$(icon_DATA)'; test -n "$(icondir)" || 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)$(icondir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(icondir)" || exit $$?; \ done uninstall-iconDATA: @$(NORMAL_UNINSTALL) @list='$(icon_DATA)'; test -n "$(icondir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ test -n "$$files" || exit 0; \ echo " ( cd '$(DESTDIR)$(icondir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(icondir)" && 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)$(icondir)"; 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 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-iconDATA 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 pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-iconDATA .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic distclean \ distclean-generic 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-iconDATA install-info install-info-am \ install-man install-pdf install-pdf-am install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic pdf pdf-am ps ps-am uninstall \ uninstall-am uninstall-iconDATA # 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: gobby-0.4.94/icons/hicolor/48x48/apps/Makefile.am0000644000175000017500000000014311531722663016207 00000000000000icondir = $(datadir)/icons/hicolor/48x48/apps icon_DATA = gobby-0.5.png EXTRA_DIST = $(icon_DATA) gobby-0.4.94/icons/hicolor/48x48/status/0000755000175000017500000000000011543672437014623 500000000000000gobby-0.4.94/icons/hicolor/48x48/status/Makefile.in0000644000175000017500000003031011543672414016600 00000000000000# 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@ subdir = icons/hicolor/48x48/status DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = $(top_builddir)/code/features.hpp 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)$(icondir)" DATA = $(icon_DATA) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALL_LINGUAS = @ALL_LINGUAS@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@ DOC_USER_FORMATS = @DOC_USER_FORMATS@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GMOFILES = @GMOFILES@ GMSGFMT = @GMSGFMT@ GREP = @GREP@ HELP_DIR = @HELP_DIR@ 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@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MKINSTALLDIRS = @MKINSTALLDIRS@ MSGFMT = @MSGFMT@ MSGFMT_OPTS = @MSGFMT_OPTS@ MSGMERGE = @MSGMERGE@ OBJEXT = @OBJEXT@ OMF_DIR = @OMF_DIR@ 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@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ WINDRES = @WINDRES@ 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_CXX = @ac_ct_CXX@ 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@ gobby_CFLAGS = @gobby_CFLAGS@ gobby_LIBS = @gobby_LIBS@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infinote_CFLAGS = @infinote_CFLAGS@ infinote_LIBS = @infinote_LIBS@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ 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@ unique_CFLAGS = @unique_CFLAGS@ unique_LIBS = @unique_LIBS@ icondir = $(datadir)/gobby-0.5/icons/hicolor/48x48/status icon_DATA = user-color-indicator.png EXTRA_DIST = $(icon_DATA) all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(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) --gnu icons/hicolor/48x48/status/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu icons/hicolor/48x48/status/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: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-iconDATA: $(icon_DATA) @$(NORMAL_INSTALL) test -z "$(icondir)" || $(MKDIR_P) "$(DESTDIR)$(icondir)" @list='$(icon_DATA)'; test -n "$(icondir)" || 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)$(icondir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(icondir)" || exit $$?; \ done uninstall-iconDATA: @$(NORMAL_UNINSTALL) @list='$(icon_DATA)'; test -n "$(icondir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ test -n "$$files" || exit 0; \ echo " ( cd '$(DESTDIR)$(icondir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(icondir)" && 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)$(icondir)"; 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 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-iconDATA 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 pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-iconDATA .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic distclean \ distclean-generic 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-iconDATA install-info install-info-am \ install-man install-pdf install-pdf-am install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic pdf pdf-am ps ps-am uninstall \ uninstall-am uninstall-iconDATA # 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: gobby-0.4.94/icons/hicolor/48x48/status/user-color-indicator.png0000644000175000017500000000463111531722663021313 00000000000000PNG  IHDR00WsBIT|d pHYs))+ܲtEXtSoftwarewww.inkscape.org< IDATh՚MlE=vdQEX+!  \+.Q. 0r%ₖ\#-r0 8)6CuMWXvTz﷾RJBTIiqX~6Οw\JH  ʾ={d| xh>a9[j?< <fM"Itn_# /= \R~kM*S8<@< unC|?@TLq aHu)5mR,jɻ, 4= /At(RDTDMcX[+׀&ۭlΙNaټβg8 Ǐ̌VKq~k@aDogB&'L۳fSϞ_ 5`^\탱1eV6wT$gbbڜ !^6Cci-ҧVȈ2'W$Q&cnJ7Tl_<+ij0>!*IP^!Np> SS x=Lw]Ja$6:zj &˰*_ua|\+CXGaTZA62>]qhS֜byRu^zIv;7abک=\ iad$`ttԔgT8w Z1Wތ 0?IjqMa8ExE:\~$SfBe}Ӹ,Ir iUysNjW\h0?'a&pm6qyfv-3iGi<8*P>x<F7^v[}m) ŅbPA3UpfVVtFTԶ_ȯsDLl.5 !!QAP$)B)Sk3Mw9$MrCC-(%xVˊ'i5hNLkє>Zl*(R!^W jJL e&djF70URh mΫip6 Sr9IЎaYk@1Ҳ LIY5ز裥o`:HՃa$L 62 4Bm?v pP Xo)N6M5 9gphiz8ӥadʴ2i#ۭiDdKܟ軽ىo$m&~)eG[n]'MmI)lO.hStF- [n睐0VVn2̊r)e i2aXXMd'4Lb,|ٔ;"x:G[/kYATsH_n:? Q)e"xlqW_ؘq"=/n7N67|Q_f鴔r%#izLN.8 k{ewnZڠZڂFέ[sllKJ)]! $q&BlYEtQ(ˋ|9°qaVЂFJP)e}&'/uۼX(V˗_^ˤbPGػw.A"}.[&Nq·૯z›|mVߟaϞLNVoڙ:fy:mVĶA0Q)FG;A Ofڟ=vlBͿ5X8ttoIENDB`gobby-0.4.94/icons/hicolor/48x48/status/Makefile.am0000644000175000017500000000017211531722663016571 00000000000000icondir = $(datadir)/gobby-0.5/icons/hicolor/48x48/status icon_DATA = user-color-indicator.png EXTRA_DIST = $(icon_DATA) gobby-0.4.94/icons/hicolor/48x48/actions/0000755000175000017500000000000011543672437014740 500000000000000gobby-0.4.94/icons/hicolor/48x48/actions/Makefile.in0000644000175000017500000003033411543672414016723 00000000000000# 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@ subdir = icons/hicolor/48x48/actions DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = $(top_builddir)/code/features.hpp 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)$(icondir)" DATA = $(icon_DATA) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALL_LINGUAS = @ALL_LINGUAS@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@ DOC_USER_FORMATS = @DOC_USER_FORMATS@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GMOFILES = @GMOFILES@ GMSGFMT = @GMSGFMT@ GREP = @GREP@ HELP_DIR = @HELP_DIR@ 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@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MKINSTALLDIRS = @MKINSTALLDIRS@ MSGFMT = @MSGFMT@ MSGFMT_OPTS = @MSGFMT_OPTS@ MSGMERGE = @MSGMERGE@ OBJEXT = @OBJEXT@ OMF_DIR = @OMF_DIR@ 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@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ WINDRES = @WINDRES@ 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_CXX = @ac_ct_CXX@ 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@ gobby_CFLAGS = @gobby_CFLAGS@ gobby_LIBS = @gobby_LIBS@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infinote_CFLAGS = @infinote_CFLAGS@ infinote_LIBS = @infinote_LIBS@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ 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@ unique_CFLAGS = @unique_CFLAGS@ unique_LIBS = @unique_LIBS@ icondir = $(datadir)/gobby-0.5/icons/hicolor/48x48/actions icon_DATA = chat.png document-list.png user-list.png EXTRA_DIST = $(icon_DATA) all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(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) --gnu icons/hicolor/48x48/actions/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu icons/hicolor/48x48/actions/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: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-iconDATA: $(icon_DATA) @$(NORMAL_INSTALL) test -z "$(icondir)" || $(MKDIR_P) "$(DESTDIR)$(icondir)" @list='$(icon_DATA)'; test -n "$(icondir)" || 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)$(icondir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(icondir)" || exit $$?; \ done uninstall-iconDATA: @$(NORMAL_UNINSTALL) @list='$(icon_DATA)'; test -n "$(icondir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ test -n "$$files" || exit 0; \ echo " ( cd '$(DESTDIR)$(icondir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(icondir)" && 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)$(icondir)"; 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 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-iconDATA 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 pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-iconDATA .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic distclean \ distclean-generic 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-iconDATA install-info install-info-am \ install-man install-pdf install-pdf-am install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic pdf pdf-am ps ps-am uninstall \ uninstall-am uninstall-iconDATA # 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: gobby-0.4.94/icons/hicolor/48x48/actions/user-list.png0000644000175000017500000000526111517044575017316 00000000000000PNG  IHDR00WsRGB pHYs B(xtIME!+ CIDATh͙{lS?ׯ8N;! @@RcݣimWm*6U[=*4V u@;.P&<Iĉ;so<=9N|w/\-@P@h h|F<ޔzXE&d ~U|.<ϺC] 5̿F!l~c } +בvM'ـu o`TVgxsʲץNML!p.p'2`T8pjh# q5NOIOI.߭4OE2^6|s"MIKpz4%Ҵ Kn+]NdL(?m,e)%:֘tR;B~9E &Pn,MFN ~h\Q-.q@D&ȄMȫ!M %RH)GhJ4g~.D)" UJ6ɌLtЙaF~E9>.ρ?'0] *U_emj)⹝T;Ϻr3 pvw"8CMSgޏްnO)'<~/M?)9pT07$}lʇ':2'T%N~ؠ4* kBK]8MAӖ-7g:=E)snt8RǁWtr-Nh|9) ΚۜNS`sXS_ V= %xV_$6ݷK,\GhL}j9ɒw:bסN.F-Xgס |KL.'vsYUJyo^- mebut8q EaWe: aߺb={xH@V7,k #`]ߞy~_Pa{9$\cwm7"w8TU3硻9teli0skT|Ty_`A4&)e8eTXTRAZB5o޼s͖eK_=s;ZSydrsp8]PGHHS3Gh%;1?把ORr O=TRjbR–H$N$u88:BӔPRH ?˕ ]KKKۗ.] ܕR|jhEJeJi===`{{{N4͊Fx2Ϛ<|ҀnJȨ*3@>,`3Z,^hv;111vv;XVhkkpsu}(u_wDžWMz>^ߌ!33 222HMMeĈ)ŋTWWSUUűcpy- ȘT^PNR^W=jVǏWj̘1J 2 Drt:%.KXNц_N8I<z7UBBI I6Uiir*Xv{hsX> f3;;[9*r5ej_сbQ *555~vM6)ŢIO*~5k֨(uiu=V&o=СU^N~eeep}/..1z>@۶m ͖-[t//x+)rrr jVZG/P׫-[KBsߏj%~ lo,`I󉉉!$ :::vSLaڵ7E@ZXX7o&$<*5s-5ie;~2Z hy&۷oח'd|zIcUw_twc;PAX`5@AAA@ nJ{{;b:76,z}O{7 -oiiif8weŊzW \|?VLz"Cр]/7nPPPW x1n"2Sѽ^l~&CqNΑBHv*33^}ӦMx.=\`8C&<=ETVUTT ~ΝvX%Px(~9=|;)>Ԝh gwy_%%%}Az(LzsDCǃZhQq"S?~ Γ2y>!PDUUU4SQshwDlUnn}<&Md70 H7䁢1.Fӯ^IeddP$d ^&CJ6{;wTJ)uel6c;*x8TGw@͚5K߿_\4o4]yTĞ1>6?bf,d#C[ߓyc֣PY/eIENDB`gobby-0.4.94/icons/hicolor/48x48/actions/document-list.png0000644000175000017500000000622211517044575020154 00000000000000PNG  IHDR00WsRGB pHYs B(xtIMEXE $IDAThKl]]]~_C|cBXRFF0b"&bнb._6h6`fXD6hG6vnUo6Uv;$$Oծr?|eG=BB|S˲888e_lV|<#|k׮[oq֭[ lL\.72lek׮O?TBQU<(0  /Q'l0 Ldz< Bf7@:wIHDgaaZ,S,y&.\`jj !BlۦhP׹z*^a:9;O\nq5W_f!hZ|b1 @QL$NBPh6d2ϓj5FaZ>㻎fT*E$!NJYXX7|({'?Qgh9¿ y?N4Ų,$=mcY/ovpnnEG ̜3_@UUn޼Idggj @44M`0x6M۶  wEn=otĉ3<L93|Z\\?}矩jb1áK nܸA*²,L4MbOƶmOJO?M^>sΟ>  `}}UUZrƍ9 4d2I'#IgX,˔J%,"i?^xAOT*`߉NaiJs1>yEQHRDQ2 $˗ygm@ `0xH?{B3`9!9>F1ZM'2x(#B7MIt]dY& i~*B.s/N.NOѠRP(X]]!lEQH#\.,,,$I vƏ{ &@X,z H@T*HXdqqqD붷 c~~-R C{fggXdN 0SUU677ZhЅ,b~~ 2 [[[E(Jz!{FSG%VTzbʦiΜ9C?Sc&333HDXD$fgg BHp8Q4f!;=nYzn}]#&v7n߾M>jtftp]B6`˾}a~B @u&ǎc{{{b9pmX,F8&JeY̰aD"N8q7X.7ҟy=yG9~8eq曉[Vr9$IB$.FX,ɓ'Bfy7L$Ƹfd2I:&iPh@cee49qkkk#Bw$ӧO: ~9{7o>lqQw㶻mZ^G-h4ʓO>(츞MnnE:n8 QvmvhBvww4mOH$B*RPUO<xB@\&Q,IRr¤x@;;;z+揄=}x= AVZ4fnK2`x\Ća/N!IGqd2Ν;i s)N)ߧi1װjJ&AS,BP(eYhix҆Ovnw,N֖v=~uvvv0 t:MZ^sCZ[]tD(='8ař~!nK\(r˲PUu|d2b1~'rrd2f$ dY>'M}۷G:U_0.[[[GVz)&%H$B#J!2ƣQ^N[;8j.--qi\|5:rb1qےx'5ǚVUUU@MhlYV|[˭-,Qd2j5.'O<bx_nNw,pQ\ XE\fzz4=dY$ey, ! ~) {i.E3Eբ\.{1ʶCvV~ :p{Q0Z-hC(vT4_ ]|~p^x}8wk9W? y5~+ۘ_z76uZ<#>l<9^[4{~+!6SIENDB`gobby-0.4.94/icons/hicolor/48x48/Makefile.am0000644000175000017500000000003611531722663015245 00000000000000SUBDIRS = apps actions status gobby-0.4.94/icons/hicolor/scalable/0000755000175000017500000000000011543672437014247 500000000000000gobby-0.4.94/icons/hicolor/scalable/Makefile.in0000644000175000017500000004242411543672414016235 00000000000000# 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@ subdir = icons/hicolor/scalable DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = $(top_builddir)/code/features.hpp 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 = RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ install-dvi-recursive install-exec-recursive \ install-html-recursive install-info-recursive \ install-pdf-recursive install-ps-recursive install-recursive \ installcheck-recursive installdirs-recursive pdf-recursive \ ps-recursive uninstall-recursive RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ distdir ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" ACLOCAL = @ACLOCAL@ ALL_LINGUAS = @ALL_LINGUAS@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@ DOC_USER_FORMATS = @DOC_USER_FORMATS@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GMOFILES = @GMOFILES@ GMSGFMT = @GMSGFMT@ GREP = @GREP@ HELP_DIR = @HELP_DIR@ 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@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MKINSTALLDIRS = @MKINSTALLDIRS@ MSGFMT = @MSGFMT@ MSGFMT_OPTS = @MSGFMT_OPTS@ MSGMERGE = @MSGMERGE@ OBJEXT = @OBJEXT@ OMF_DIR = @OMF_DIR@ 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@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ WINDRES = @WINDRES@ 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_CXX = @ac_ct_CXX@ 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@ gobby_CFLAGS = @gobby_CFLAGS@ gobby_LIBS = @gobby_LIBS@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infinote_CFLAGS = @infinote_CFLAGS@ infinote_LIBS = @infinote_LIBS@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ 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@ unique_CFLAGS = @unique_CFLAGS@ unique_LIBS = @unique_LIBS@ SUBDIRS = apps actions status all: all-recursive .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(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) --gnu icons/hicolor/scalable/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu icons/hicolor/scalable/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: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. # To change the values of `make' variables: instead of editing Makefiles, # (1) if the variable is set in `config.status', edit `config.status' # (which will cause the Makefiles to be regenerated when you run `make'); # (2) otherwise, pass the desired values on the `make' command line. $(RECURSIVE_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ list='$(SUBDIRS)'; for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" $(RECURSIVE_CLEAN_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ rev=''; for subdir in $$list; do \ if test "$$subdir" = "."; then :; else \ rev="$$subdir $$rev"; \ fi; \ done; \ rev="$$rev ."; \ target=`echo $@ | sed s/-recursive//`; \ for subdir in $$rev; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags 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 @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: check-recursive all-am: Makefile installdirs: installdirs-recursive installdirs-am: install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive 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-recursive clean-am: clean-generic mostlyclean-am distclean: distclean-recursive -rm -f Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: .MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \ install-am install-strip tags-recursive .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ all all-am check check-am clean clean-generic ctags \ ctags-recursive distclean distclean-generic distclean-tags \ 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-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ installdirs-am maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic pdf pdf-am ps ps-am tags \ tags-recursive uninstall uninstall-am # 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: gobby-0.4.94/icons/hicolor/scalable/apps/0000755000175000017500000000000011543672437015212 500000000000000gobby-0.4.94/icons/hicolor/scalable/apps/Makefile.in0000644000175000017500000003026711543672415017203 00000000000000# 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@ subdir = icons/hicolor/scalable/apps DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = $(top_builddir)/code/features.hpp 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)$(icondir)" DATA = $(icon_DATA) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALL_LINGUAS = @ALL_LINGUAS@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@ DOC_USER_FORMATS = @DOC_USER_FORMATS@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GMOFILES = @GMOFILES@ GMSGFMT = @GMSGFMT@ GREP = @GREP@ HELP_DIR = @HELP_DIR@ 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@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MKINSTALLDIRS = @MKINSTALLDIRS@ MSGFMT = @MSGFMT@ MSGFMT_OPTS = @MSGFMT_OPTS@ MSGMERGE = @MSGMERGE@ OBJEXT = @OBJEXT@ OMF_DIR = @OMF_DIR@ 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@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ WINDRES = @WINDRES@ 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_CXX = @ac_ct_CXX@ 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@ gobby_CFLAGS = @gobby_CFLAGS@ gobby_LIBS = @gobby_LIBS@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infinote_CFLAGS = @infinote_CFLAGS@ infinote_LIBS = @infinote_LIBS@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ 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@ unique_CFLAGS = @unique_CFLAGS@ unique_LIBS = @unique_LIBS@ icondir = $(datadir)/icons/hicolor/scalable/apps icon_DATA = gobby-0.5.svg EXTRA_DIST = $(icon_DATA) all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(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) --gnu icons/hicolor/scalable/apps/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu icons/hicolor/scalable/apps/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: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-iconDATA: $(icon_DATA) @$(NORMAL_INSTALL) test -z "$(icondir)" || $(MKDIR_P) "$(DESTDIR)$(icondir)" @list='$(icon_DATA)'; test -n "$(icondir)" || 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)$(icondir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(icondir)" || exit $$?; \ done uninstall-iconDATA: @$(NORMAL_UNINSTALL) @list='$(icon_DATA)'; test -n "$(icondir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ test -n "$$files" || exit 0; \ echo " ( cd '$(DESTDIR)$(icondir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(icondir)" && 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)$(icondir)"; 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 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-iconDATA 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 pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-iconDATA .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic distclean \ distclean-generic 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-iconDATA install-info install-info-am \ install-man install-pdf install-pdf-am install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic pdf pdf-am ps ps-am uninstall \ uninstall-am uninstall-iconDATA # 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: gobby-0.4.94/icons/hicolor/scalable/apps/Makefile.am0000644000175000017500000000014611531722663017161 00000000000000icondir = $(datadir)/icons/hicolor/scalable/apps icon_DATA = gobby-0.5.svg EXTRA_DIST = $(icon_DATA) gobby-0.4.94/icons/hicolor/scalable/apps/gobby-0.5.svg0000644000175000017500000015003611531722663017254 00000000000000 image/svg+xml image/svg+xml image/svg+xml gobby-0.4.94/icons/hicolor/scalable/status/0000755000175000017500000000000011543672437015572 500000000000000gobby-0.4.94/icons/hicolor/scalable/status/user-color-indicator.svg0000644000175000017500000001700511531722663022274 00000000000000 image/svg+xml gobby-0.4.94/icons/hicolor/scalable/status/Makefile.in0000644000175000017500000003032411543672415017555 00000000000000# 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@ subdir = icons/hicolor/scalable/status DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = $(top_builddir)/code/features.hpp 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)$(icondir)" DATA = $(icon_DATA) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALL_LINGUAS = @ALL_LINGUAS@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@ DOC_USER_FORMATS = @DOC_USER_FORMATS@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GMOFILES = @GMOFILES@ GMSGFMT = @GMSGFMT@ GREP = @GREP@ HELP_DIR = @HELP_DIR@ 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@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MKINSTALLDIRS = @MKINSTALLDIRS@ MSGFMT = @MSGFMT@ MSGFMT_OPTS = @MSGFMT_OPTS@ MSGMERGE = @MSGMERGE@ OBJEXT = @OBJEXT@ OMF_DIR = @OMF_DIR@ 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@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ WINDRES = @WINDRES@ 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_CXX = @ac_ct_CXX@ 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@ gobby_CFLAGS = @gobby_CFLAGS@ gobby_LIBS = @gobby_LIBS@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infinote_CFLAGS = @infinote_CFLAGS@ infinote_LIBS = @infinote_LIBS@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ 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@ unique_CFLAGS = @unique_CFLAGS@ unique_LIBS = @unique_LIBS@ icondir = $(datadir)/gobby-0.5/icons/hicolor/scalable/status icon_DATA = user-color-indicator.svg EXTRA_DIST = $(icon_DATA) all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(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) --gnu icons/hicolor/scalable/status/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu icons/hicolor/scalable/status/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: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-iconDATA: $(icon_DATA) @$(NORMAL_INSTALL) test -z "$(icondir)" || $(MKDIR_P) "$(DESTDIR)$(icondir)" @list='$(icon_DATA)'; test -n "$(icondir)" || 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)$(icondir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(icondir)" || exit $$?; \ done uninstall-iconDATA: @$(NORMAL_UNINSTALL) @list='$(icon_DATA)'; test -n "$(icondir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ test -n "$$files" || exit 0; \ echo " ( cd '$(DESTDIR)$(icondir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(icondir)" && 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)$(icondir)"; 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 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-iconDATA 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 pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-iconDATA .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic distclean \ distclean-generic 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-iconDATA install-info install-info-am \ install-man install-pdf install-pdf-am install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic pdf pdf-am ps ps-am uninstall \ uninstall-am uninstall-iconDATA # 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: gobby-0.4.94/icons/hicolor/scalable/status/Makefile.am0000644000175000017500000000017511531722663017543 00000000000000icondir = $(datadir)/gobby-0.5/icons/hicolor/scalable/status icon_DATA = user-color-indicator.svg EXTRA_DIST = $(icon_DATA) gobby-0.4.94/icons/hicolor/scalable/actions/0000755000175000017500000000000011543672437015707 500000000000000gobby-0.4.94/icons/hicolor/scalable/actions/Makefile.in0000644000175000017500000003035011543672415017671 00000000000000# 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@ subdir = icons/hicolor/scalable/actions DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = $(top_builddir)/code/features.hpp 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)$(icondir)" DATA = $(icon_DATA) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALL_LINGUAS = @ALL_LINGUAS@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@ DOC_USER_FORMATS = @DOC_USER_FORMATS@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GMOFILES = @GMOFILES@ GMSGFMT = @GMSGFMT@ GREP = @GREP@ HELP_DIR = @HELP_DIR@ 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@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MKINSTALLDIRS = @MKINSTALLDIRS@ MSGFMT = @MSGFMT@ MSGFMT_OPTS = @MSGFMT_OPTS@ MSGMERGE = @MSGMERGE@ OBJEXT = @OBJEXT@ OMF_DIR = @OMF_DIR@ 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@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ WINDRES = @WINDRES@ 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_CXX = @ac_ct_CXX@ 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@ gobby_CFLAGS = @gobby_CFLAGS@ gobby_LIBS = @gobby_LIBS@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infinote_CFLAGS = @infinote_CFLAGS@ infinote_LIBS = @infinote_LIBS@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ 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@ unique_CFLAGS = @unique_CFLAGS@ unique_LIBS = @unique_LIBS@ icondir = $(datadir)/gobby-0.5/icons/hicolor/scalable/actions icon_DATA = chat.svg document-list.svg user-list.svg EXTRA_DIST = $(icon_DATA) all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(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) --gnu icons/hicolor/scalable/actions/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu icons/hicolor/scalable/actions/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: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-iconDATA: $(icon_DATA) @$(NORMAL_INSTALL) test -z "$(icondir)" || $(MKDIR_P) "$(DESTDIR)$(icondir)" @list='$(icon_DATA)'; test -n "$(icondir)" || 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)$(icondir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(icondir)" || exit $$?; \ done uninstall-iconDATA: @$(NORMAL_UNINSTALL) @list='$(icon_DATA)'; test -n "$(icondir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ test -n "$$files" || exit 0; \ echo " ( cd '$(DESTDIR)$(icondir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(icondir)" && 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)$(icondir)"; 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 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-iconDATA 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 pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-iconDATA .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic distclean \ distclean-generic 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-iconDATA install-info install-info-am \ install-man install-pdf install-pdf-am install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic pdf pdf-am ps ps-am uninstall \ uninstall-am uninstall-iconDATA # 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: gobby-0.4.94/icons/hicolor/scalable/actions/user-list.svg0000644000175000017500000005711311517044575020303 00000000000000 image/svg+xml image/svg+xml image/svg+xml gobby-0.4.94/icons/hicolor/scalable/actions/chat.svg0000644000175000017500000001654511517044575017277 00000000000000 image/svg+xml gobby-0.4.94/icons/hicolor/scalable/actions/document-list.svg0000644000175000017500000017771711517044575021160 00000000000000 image/svg+xml gobby-0.4.94/icons/hicolor/scalable/actions/Makefile.am0000644000175000017500000000021611531722663017654 00000000000000icondir = $(datadir)/gobby-0.5/icons/hicolor/scalable/actions icon_DATA = chat.svg document-list.svg user-list.svg EXTRA_DIST = $(icon_DATA) gobby-0.4.94/icons/hicolor/scalable/Makefile.am0000644000175000017500000000003611531722663016214 00000000000000SUBDIRS = apps actions status gobby-0.4.94/icons/hicolor/Makefile.am0000644000175000017500000000065711517044575014462 00000000000000SUBDIRS = 48x48 scalable gtk_update_icon_cache = gtk-update-icon-cache -f -t $(datadir)/icons/hicolor install-data-hook: update-icon-cache uninstall-hook: update-icon-cache update-icon-cache: @-if test -z "$(DESTDIR)"; then \ echo "Updating Gtk icon cache."; \ $(gtk_update_icon_cache); \ else \ echo "*** Icon cache not updated. After (un)install, run this:"; \ echo "*** $(gtk_update_icon_cache)"; \ fi gobby-0.4.94/icons/HighContrastLargePrint/0000755000175000017500000000000011543672437015427 500000000000000gobby-0.4.94/icons/HighContrastLargePrint/Makefile.in0000644000175000017500000004357011543672414017420 00000000000000# 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@ subdir = icons/HighContrastLargePrint DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = $(top_builddir)/code/features.hpp 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 = RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ install-dvi-recursive install-exec-recursive \ install-html-recursive install-info-recursive \ install-pdf-recursive install-ps-recursive install-recursive \ installcheck-recursive installdirs-recursive pdf-recursive \ ps-recursive uninstall-recursive RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ distdir ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" ACLOCAL = @ACLOCAL@ ALL_LINGUAS = @ALL_LINGUAS@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@ DOC_USER_FORMATS = @DOC_USER_FORMATS@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GMOFILES = @GMOFILES@ GMSGFMT = @GMSGFMT@ GREP = @GREP@ HELP_DIR = @HELP_DIR@ 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@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MKINSTALLDIRS = @MKINSTALLDIRS@ MSGFMT = @MSGFMT@ MSGFMT_OPTS = @MSGFMT_OPTS@ MSGMERGE = @MSGMERGE@ OBJEXT = @OBJEXT@ OMF_DIR = @OMF_DIR@ 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@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ WINDRES = @WINDRES@ 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_CXX = @ac_ct_CXX@ 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@ gobby_CFLAGS = @gobby_CFLAGS@ gobby_LIBS = @gobby_LIBS@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infinote_CFLAGS = @infinote_CFLAGS@ infinote_LIBS = @infinote_LIBS@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ 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@ unique_CFLAGS = @unique_CFLAGS@ unique_LIBS = @unique_LIBS@ SUBDIRS = 48x48 scalable gtk_update_icon_cache = gtk-update-icon-cache -f -t $(datadir)/icons/HighContrastLargePrint all: all-recursive .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(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) --gnu icons/HighContrastLargePrint/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu icons/HighContrastLargePrint/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: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. # To change the values of `make' variables: instead of editing Makefiles, # (1) if the variable is set in `config.status', edit `config.status' # (which will cause the Makefiles to be regenerated when you run `make'); # (2) otherwise, pass the desired values on the `make' command line. $(RECURSIVE_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ list='$(SUBDIRS)'; for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" $(RECURSIVE_CLEAN_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ rev=''; for subdir in $$list; do \ if test "$$subdir" = "."; then :; else \ rev="$$subdir $$rev"; \ fi; \ done; \ rev="$$rev ."; \ target=`echo $@ | sed s/-recursive//`; \ for subdir in $$rev; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags 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 @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: check-recursive all-am: Makefile installdirs: installdirs-recursive installdirs-am: install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive 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-recursive clean-am: clean-generic mostlyclean-am distclean: distclean-recursive -rm -f Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: @$(NORMAL_INSTALL) $(MAKE) $(AM_MAKEFLAGS) install-data-hook install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: @$(NORMAL_INSTALL) $(MAKE) $(AM_MAKEFLAGS) uninstall-hook .MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \ install-am install-data-am install-strip tags-recursive \ uninstall-am .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ all all-am check check-am clean clean-generic ctags \ ctags-recursive distclean distclean-generic distclean-tags \ distdir dvi dvi-am html html-am info info-am install \ install-am install-data install-data-am install-data-hook \ 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-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs installdirs-am maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic pdf \ pdf-am ps ps-am tags tags-recursive uninstall uninstall-am \ uninstall-hook install-data-hook: update-icon-cache uninstall-hook: update-icon-cache update-icon-cache: @-if test -z "$(DESTDIR)"; then \ echo "Updating Gtk icon cache."; \ $(gtk_update_icon_cache); \ else \ echo "*** Icon cache not updated. After (un)install, run this:"; \ echo "*** $(gtk_update_icon_cache)"; \ fi # 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: gobby-0.4.94/icons/HighContrastLargePrint/48x48/0000755000175000017500000000000011543672437016226 500000000000000gobby-0.4.94/icons/HighContrastLargePrint/48x48/Makefile.in0000644000175000017500000004246111543672413020214 00000000000000# 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@ subdir = icons/HighContrastLargePrint/48x48 DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = $(top_builddir)/code/features.hpp 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 = RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ install-dvi-recursive install-exec-recursive \ install-html-recursive install-info-recursive \ install-pdf-recursive install-ps-recursive install-recursive \ installcheck-recursive installdirs-recursive pdf-recursive \ ps-recursive uninstall-recursive RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ distdir ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" ACLOCAL = @ACLOCAL@ ALL_LINGUAS = @ALL_LINGUAS@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@ DOC_USER_FORMATS = @DOC_USER_FORMATS@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GMOFILES = @GMOFILES@ GMSGFMT = @GMSGFMT@ GREP = @GREP@ HELP_DIR = @HELP_DIR@ 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@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MKINSTALLDIRS = @MKINSTALLDIRS@ MSGFMT = @MSGFMT@ MSGFMT_OPTS = @MSGFMT_OPTS@ MSGMERGE = @MSGMERGE@ OBJEXT = @OBJEXT@ OMF_DIR = @OMF_DIR@ 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@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ WINDRES = @WINDRES@ 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_CXX = @ac_ct_CXX@ 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@ gobby_CFLAGS = @gobby_CFLAGS@ gobby_LIBS = @gobby_LIBS@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infinote_CFLAGS = @infinote_CFLAGS@ infinote_LIBS = @infinote_LIBS@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ 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@ unique_CFLAGS = @unique_CFLAGS@ unique_LIBS = @unique_LIBS@ SUBDIRS = apps actions all: all-recursive .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(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) --gnu icons/HighContrastLargePrint/48x48/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu icons/HighContrastLargePrint/48x48/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: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. # To change the values of `make' variables: instead of editing Makefiles, # (1) if the variable is set in `config.status', edit `config.status' # (which will cause the Makefiles to be regenerated when you run `make'); # (2) otherwise, pass the desired values on the `make' command line. $(RECURSIVE_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ list='$(SUBDIRS)'; for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" $(RECURSIVE_CLEAN_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ rev=''; for subdir in $$list; do \ if test "$$subdir" = "."; then :; else \ rev="$$subdir $$rev"; \ fi; \ done; \ rev="$$rev ."; \ target=`echo $@ | sed s/-recursive//`; \ for subdir in $$rev; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags 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 @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: check-recursive all-am: Makefile installdirs: installdirs-recursive installdirs-am: install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive 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-recursive clean-am: clean-generic mostlyclean-am distclean: distclean-recursive -rm -f Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: .MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \ install-am install-strip tags-recursive .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ all all-am check check-am clean clean-generic ctags \ ctags-recursive distclean distclean-generic distclean-tags \ 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-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ installdirs-am maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic pdf pdf-am ps ps-am tags \ tags-recursive uninstall uninstall-am # 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: gobby-0.4.94/icons/HighContrastLargePrint/48x48/apps/0000755000175000017500000000000011543672437017171 500000000000000gobby-0.4.94/icons/HighContrastLargePrint/48x48/apps/gobby-0.5.png0000644000175000017500000000463411531722663021222 00000000000000PNG  IHDR00WsRGB pHYs B(xtIME.-}Hn .IDATh޽kLUW^,h2MijA;*-jiUƤ j:mt2IS&|MӴF ڴ"ikQbբcA% *vryykIT&ɣ$t%j< ( Qx< dپaTMLs5440gٲejhhDSo.}фv}AI3 `6p:c^ KUU=,IZmFx%)]_%e<7MTPP`Y0//o\/fT+IU IU5?%Q|Sssx@SͷO8zJ֢K,I?>)0 C~WVwS %;;Xv p/^aҥ_ݻwS__޽{z#g`vIxx5VXX+nSRRBff9o0VV֭[p(??_v}׊_nݒ$;v@rrMz0 ksT-IgϞ ݮCusss-Z$@5oKV^=&/}\.ΐBf)ƦM(..歷OfŊJPPc۶mx<7F 'dggt\XXmmmn\.5eF_j*@.\-\P~'Iҹs&Ս(vtt3bcc~:8K%<N6n{DZ[[1I3d^Jaa,d۶mcҥJbL̼ywttqF9Yj9ygFDž$]{OxA֯ өaVTTʅn۷Y7`-ŋ/3g ـ,_K.QSScpE|3͛7̕$''SYYɓO>'|Bff&Ñ3gZciii[A߫$5Iүϊ0-YD֮];bرcPAkkkajoo.D>IjjjR^^u1ͦ'O|mmf̘!@Og}wƻ)++… ٳ{RRRyuq5OGE.]BkHBBvu/4 #_8͗T$}g,p8k׮]cq!\.]rES$͒"F:$ڢk֬QNNU>ׯ?hzG1FÃ& ` .fdb?1!i0 043o_zmK{;3${99WFaa%I"~/FcHld5p$'I~GrE28g;OMMa``X,p\0KkpT_k$; yEn߾bJ~~>kjj=~[~ fFyed21c@2'[VTTh.;wА3 g^lB!ݻ݂nGEEvՊ tuu>Ou8zp\H7GH'ksaD322X__ Iϳv]o۶mQH֛ ---vMsׯrn&e9$Ilmm]+W 055%,vz$9ӧUUU% q.zحz!" )9q |g9i^^ʱigP6uaaeK/YYYIXZ-CAdlw#an4aZ̛ ~ecƍrիWF x\˃`X2o2~T6:$GGGq{^]^^޼B)7-~A=<#ȲgJa:~ rI:\~a!yMMͲ_~]ӦMWL.lt#Тz1D}}&\b@ 77###jLIeeelkkc4ê*#eW/[Y8pţGɓd~~MNiKR$*$ݿ+b0xٸ񪫫O5Q🐔Nb4e__4ߵk?~8$S(JMe} <OΝcii)sssAb>}=>Ѩ vgKRØc2:fSSmr,%{ۮ]&زeڥa9cZZb0 N sÆ ,hB$ wbnnNNZFdz49sF"an-G%mɋ/* .**RE wX,9fcm֭”Zjiy回F0m Ŕ9H [Xj!X:SN`ڵB{hh(ྏb%==]D")'0;;+M&S\l#\yqz{{SN8n0jj?sLݬQURRvV -ˈ;wĈW۷cbCC-_JH'FU ͛71rrr4X8X} b999p8Z0L00 C8|>:;;ݍ6 <͛H5%7oް8I)Q?קrYFwtR?<>465w֭[>IYFdeeaժUp:p8p&O$gW|ԛ$$I6$$4,4;ؾXXca @$I?ւIENDB`gobby-0.4.94/icons/HighContrastLargePrint/48x48/actions/Makefile.am0000644000175000017500000000023211531722663021631 00000000000000icondir = $(datadir)/gobby-0.5/icons/HighContrastLargePrint/48x48/actions icon_DATA = chat.png document-list.png user-list.png EXTRA_DIST = $(icon_DATA) gobby-0.4.94/icons/HighContrastLargePrint/48x48/actions/chat.png0000644000175000017500000000350011517044575021226 00000000000000PNG  IHDR00WsRGB pHYs B(xtIME0!;IDAThՙ_LTǿ`֪"2R}dy)1+X 5av1ilj5F7dڇ@:(D]&cSH71;#ovͽw. L̹wΜs~F`Br3}@ :(`i Z <".h #I0 G1.H54xtH$L&Jl6p8PZZ ݾVcB<~$K}?H `dd?˷b ӉZԠ Ǟ={PVVf4UnR?Bp%>%djj,--%ZlooW?FM$cV:3gh67b452£YB$-hˡCpV---8p\.jkkQUUłʼ;KKX^^b1$ID",..ӧB䤢'ˎ;p]TWWoxOIJ$ BʣGI6ARlݺldY)LzQ ===l&!PHB\iG"MYn-..*=N cyeeE߽IR:dR驨( f l$P"/#c )%D@ b:Bb(6dRƀʢ3@=%/J[uuuJLQ $GNYBxA(?wܩWLɭlթf111QP~&׫|W'N(©TwVX?ny(B0l8|"`GG&5H*%w3 |نAz<h=j'uFVpm)GCCCCAcaap`h4OgzqBo4Iǣ(m۶+p3cF)OZ^W !xҥ5OLLe]|]]Oxxn$B:۷ǎӧz877~:opO%eUUvW}˓'OܜJuJ$@[?) e xss3GGG o$FoD $i ^nݺEͦ^\NC$[H9I>Pi_Nժ[,^|3rU e7+ QOOM&WRRA=IJL~ZSvd__yw Lܖ)ŋ900w^ P[s333x4knz2X&9{ll6~='5 6`Je\.Glv7:j544UTj7oK'd$pb7?/dmmmy\vM BbrU:zzz$Ud2++<ܹsj ]7f__>*$_"#Ɉѿ$E$w?a&IENDB`gobby-0.4.94/icons/HighContrastLargePrint/48x48/actions/document-list.png0000644000175000017500000000205611517044575023103 00000000000000PNG  IHDR00WsRGB pHYs B(xtIME07 6IDAThOH+Wƿ hb"Zq.nJWnZqS()HAy RZ"ծH N( ֍P5I8/1 LΜ;sfD@E$ JB5UfH4!9%7fCVV,?(px\ڊ\L=~!"ݎnJH_*.//u >}V !l/ @'AR$oR(nG4}dZ'Ieb{{χLW?H~ өY|4sss7IV @ B\ߓ4 @ jrcc#WPf.Px\s:BΊ.XXX@]]]}}}Y) Ɋ3!īF?22RHLLL(ݾΌTleYiYA9n+++Y-[SYӰX,%vU[V{ZRTlFss3fwRzzQi(i b1B!? ,--)xeߟ7QSSeL$ɂx. ncvv>I "_cc#l6r)Ds(q 6D"444@8<<,S(JJ{f,&LMM_CCCEgKMN&1l6ݛsx0R#K&6,Ԭ9_W,FvUrkgoK_x:M efjKWOZq^d1*H~\gHIENDB`gobby-0.4.94/icons/HighContrastLargePrint/48x48/Makefile.am0000644000175000017500000000002711517044575020176 00000000000000SUBDIRS = apps actions gobby-0.4.94/icons/HighContrastLargePrint/scalable/0000755000175000017500000000000011543672437017175 500000000000000gobby-0.4.94/icons/HighContrastLargePrint/scalable/Makefile.in0000644000175000017500000004247211543672414021166 00000000000000# 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@ subdir = icons/HighContrastLargePrint/scalable DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = $(top_builddir)/code/features.hpp 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 = RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ install-dvi-recursive install-exec-recursive \ install-html-recursive install-info-recursive \ install-pdf-recursive install-ps-recursive install-recursive \ installcheck-recursive installdirs-recursive pdf-recursive \ ps-recursive uninstall-recursive RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ distdir ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" ACLOCAL = @ACLOCAL@ ALL_LINGUAS = @ALL_LINGUAS@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@ DOC_USER_FORMATS = @DOC_USER_FORMATS@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GMOFILES = @GMOFILES@ GMSGFMT = @GMSGFMT@ GREP = @GREP@ HELP_DIR = @HELP_DIR@ 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@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MKINSTALLDIRS = @MKINSTALLDIRS@ MSGFMT = @MSGFMT@ MSGFMT_OPTS = @MSGFMT_OPTS@ MSGMERGE = @MSGMERGE@ OBJEXT = @OBJEXT@ OMF_DIR = @OMF_DIR@ 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@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ WINDRES = @WINDRES@ 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_CXX = @ac_ct_CXX@ 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@ gobby_CFLAGS = @gobby_CFLAGS@ gobby_LIBS = @gobby_LIBS@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infinote_CFLAGS = @infinote_CFLAGS@ infinote_LIBS = @infinote_LIBS@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ 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@ unique_CFLAGS = @unique_CFLAGS@ unique_LIBS = @unique_LIBS@ SUBDIRS = apps actions all: all-recursive .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(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) --gnu icons/HighContrastLargePrint/scalable/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu icons/HighContrastLargePrint/scalable/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: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. # To change the values of `make' variables: instead of editing Makefiles, # (1) if the variable is set in `config.status', edit `config.status' # (which will cause the Makefiles to be regenerated when you run `make'); # (2) otherwise, pass the desired values on the `make' command line. $(RECURSIVE_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ list='$(SUBDIRS)'; for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" $(RECURSIVE_CLEAN_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ rev=''; for subdir in $$list; do \ if test "$$subdir" = "."; then :; else \ rev="$$subdir $$rev"; \ fi; \ done; \ rev="$$rev ."; \ target=`echo $@ | sed s/-recursive//`; \ for subdir in $$rev; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags 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 @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: check-recursive all-am: Makefile installdirs: installdirs-recursive installdirs-am: install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive 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-recursive clean-am: clean-generic mostlyclean-am distclean: distclean-recursive -rm -f Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: .MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \ install-am install-strip tags-recursive .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ all all-am check check-am clean clean-generic ctags \ ctags-recursive distclean distclean-generic distclean-tags \ 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-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ installdirs-am maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic pdf pdf-am ps ps-am tags \ tags-recursive uninstall uninstall-am # 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: gobby-0.4.94/icons/HighContrastLargePrint/scalable/apps/0000755000175000017500000000000011543672437020140 500000000000000gobby-0.4.94/icons/HighContrastLargePrint/scalable/apps/Makefile.in0000644000175000017500000003036311543672414022125 00000000000000# 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@ subdir = icons/HighContrastLargePrint/scalable/apps DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = $(top_builddir)/code/features.hpp 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)$(icondir)" DATA = $(icon_DATA) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALL_LINGUAS = @ALL_LINGUAS@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@ DOC_USER_FORMATS = @DOC_USER_FORMATS@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GMOFILES = @GMOFILES@ GMSGFMT = @GMSGFMT@ GREP = @GREP@ HELP_DIR = @HELP_DIR@ 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@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MKINSTALLDIRS = @MKINSTALLDIRS@ MSGFMT = @MSGFMT@ MSGFMT_OPTS = @MSGFMT_OPTS@ MSGMERGE = @MSGMERGE@ OBJEXT = @OBJEXT@ OMF_DIR = @OMF_DIR@ 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@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ WINDRES = @WINDRES@ 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_CXX = @ac_ct_CXX@ 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@ gobby_CFLAGS = @gobby_CFLAGS@ gobby_LIBS = @gobby_LIBS@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infinote_CFLAGS = @infinote_CFLAGS@ infinote_LIBS = @infinote_LIBS@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ 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@ unique_CFLAGS = @unique_CFLAGS@ unique_LIBS = @unique_LIBS@ icondir = $(datadir)/icons/HighContrastLargePrint/scalable/apps icon_DATA = gobby-0.5.svg EXTRA_DIST = $(icon_DATA) all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(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) --gnu icons/HighContrastLargePrint/scalable/apps/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu icons/HighContrastLargePrint/scalable/apps/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: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-iconDATA: $(icon_DATA) @$(NORMAL_INSTALL) test -z "$(icondir)" || $(MKDIR_P) "$(DESTDIR)$(icondir)" @list='$(icon_DATA)'; test -n "$(icondir)" || 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)$(icondir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(icondir)" || exit $$?; \ done uninstall-iconDATA: @$(NORMAL_UNINSTALL) @list='$(icon_DATA)'; test -n "$(icondir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ test -n "$$files" || exit 0; \ echo " ( cd '$(DESTDIR)$(icondir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(icondir)" && 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)$(icondir)"; 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 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-iconDATA 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 pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-iconDATA .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic distclean \ distclean-generic 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-iconDATA install-info install-info-am \ install-man install-pdf install-pdf-am install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic pdf pdf-am ps ps-am uninstall \ uninstall-am uninstall-iconDATA # 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: gobby-0.4.94/icons/HighContrastLargePrint/scalable/apps/Makefile.am0000644000175000017500000000016511531722663022110 00000000000000icondir = $(datadir)/icons/HighContrastLargePrint/scalable/apps icon_DATA = gobby-0.5.svg EXTRA_DIST = $(icon_DATA) gobby-0.4.94/icons/HighContrastLargePrint/scalable/apps/gobby-0.5.svg0000644000175000017500000006050111531722663022177 00000000000000 image/svg+xml gobby-0.4.94/icons/HighContrastLargePrint/scalable/actions/0000755000175000017500000000000011543672437020635 500000000000000gobby-0.4.94/icons/HighContrastLargePrint/scalable/actions/Makefile.in0000644000175000017500000003044411543672414022622 00000000000000# 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@ subdir = icons/HighContrastLargePrint/scalable/actions DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = $(top_builddir)/code/features.hpp 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)$(icondir)" DATA = $(icon_DATA) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALL_LINGUAS = @ALL_LINGUAS@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@ DOC_USER_FORMATS = @DOC_USER_FORMATS@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GMOFILES = @GMOFILES@ GMSGFMT = @GMSGFMT@ GREP = @GREP@ HELP_DIR = @HELP_DIR@ 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@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MKINSTALLDIRS = @MKINSTALLDIRS@ MSGFMT = @MSGFMT@ MSGFMT_OPTS = @MSGFMT_OPTS@ MSGMERGE = @MSGMERGE@ OBJEXT = @OBJEXT@ OMF_DIR = @OMF_DIR@ 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@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ WINDRES = @WINDRES@ 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_CXX = @ac_ct_CXX@ 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@ gobby_CFLAGS = @gobby_CFLAGS@ gobby_LIBS = @gobby_LIBS@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infinote_CFLAGS = @infinote_CFLAGS@ infinote_LIBS = @infinote_LIBS@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ 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@ unique_CFLAGS = @unique_CFLAGS@ unique_LIBS = @unique_LIBS@ icondir = $(datadir)/gobby-0.5/icons/HighContrastLargePrint/scalable/actions icon_DATA = chat.svg document-list.svg user-list.svg EXTRA_DIST = $(icon_DATA) all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(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) --gnu icons/HighContrastLargePrint/scalable/actions/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu icons/HighContrastLargePrint/scalable/actions/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: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-iconDATA: $(icon_DATA) @$(NORMAL_INSTALL) test -z "$(icondir)" || $(MKDIR_P) "$(DESTDIR)$(icondir)" @list='$(icon_DATA)'; test -n "$(icondir)" || 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)$(icondir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(icondir)" || exit $$?; \ done uninstall-iconDATA: @$(NORMAL_UNINSTALL) @list='$(icon_DATA)'; test -n "$(icondir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ test -n "$$files" || exit 0; \ echo " ( cd '$(DESTDIR)$(icondir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(icondir)" && 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)$(icondir)"; 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 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-iconDATA 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 pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-iconDATA .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic distclean \ distclean-generic 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-iconDATA install-info install-info-am \ install-man install-pdf install-pdf-am install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic pdf pdf-am ps ps-am uninstall \ uninstall-am uninstall-iconDATA # 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: gobby-0.4.94/icons/HighContrastLargePrint/scalable/actions/user-list.svg0000644000175000017500000001576111517044575023234 00000000000000 image/svg+xml gobby-0.4.94/icons/HighContrastLargePrint/scalable/actions/chat.svg0000644000175000017500000001040611517044575022213 00000000000000 image/svg+xml gobby-0.4.94/icons/HighContrastLargePrint/scalable/actions/document-list.svg0000644000175000017500000000760111517044575024066 00000000000000 image/svg+xml gobby-0.4.94/icons/HighContrastLargePrint/scalable/actions/Makefile.am0000644000175000017500000000023511531722663022603 00000000000000icondir = $(datadir)/gobby-0.5/icons/HighContrastLargePrint/scalable/actions icon_DATA = chat.svg document-list.svg user-list.svg EXTRA_DIST = $(icon_DATA) gobby-0.4.94/icons/HighContrastLargePrint/scalable/Makefile.am0000644000175000017500000000002711517044575021145 00000000000000SUBDIRS = apps actions gobby-0.4.94/icons/HighContrastLargePrint/Makefile.am0000644000175000017500000000067611517044575017411 00000000000000SUBDIRS = 48x48 scalable gtk_update_icon_cache = gtk-update-icon-cache -f -t $(datadir)/icons/HighContrastLargePrint install-data-hook: update-icon-cache uninstall-hook: update-icon-cache update-icon-cache: @-if test -z "$(DESTDIR)"; then \ echo "Updating Gtk icon cache."; \ $(gtk_update_icon_cache); \ else \ echo "*** Icon cache not updated. After (un)install, run this:"; \ echo "*** $(gtk_update_icon_cache)"; \ fi gobby-0.4.94/icons/Makefile.am0000644000175000017500000000010711517044575013011 00000000000000SUBDIRS = hicolor HighContrastLargePrint HighContrastLargePrintInverse gobby-0.4.94/icons/HighContrastLargePrintInverse/0000755000175000017500000000000011543672437016763 500000000000000gobby-0.4.94/icons/HighContrastLargePrintInverse/Makefile.in0000644000175000017500000004362411543672414020754 00000000000000# 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@ subdir = icons/HighContrastLargePrintInverse DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = $(top_builddir)/code/features.hpp 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 = RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ install-dvi-recursive install-exec-recursive \ install-html-recursive install-info-recursive \ install-pdf-recursive install-ps-recursive install-recursive \ installcheck-recursive installdirs-recursive pdf-recursive \ ps-recursive uninstall-recursive RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ distdir ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" ACLOCAL = @ACLOCAL@ ALL_LINGUAS = @ALL_LINGUAS@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@ DOC_USER_FORMATS = @DOC_USER_FORMATS@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GMOFILES = @GMOFILES@ GMSGFMT = @GMSGFMT@ GREP = @GREP@ HELP_DIR = @HELP_DIR@ 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@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MKINSTALLDIRS = @MKINSTALLDIRS@ MSGFMT = @MSGFMT@ MSGFMT_OPTS = @MSGFMT_OPTS@ MSGMERGE = @MSGMERGE@ OBJEXT = @OBJEXT@ OMF_DIR = @OMF_DIR@ 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@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ WINDRES = @WINDRES@ 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_CXX = @ac_ct_CXX@ 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@ gobby_CFLAGS = @gobby_CFLAGS@ gobby_LIBS = @gobby_LIBS@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infinote_CFLAGS = @infinote_CFLAGS@ infinote_LIBS = @infinote_LIBS@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ 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@ unique_CFLAGS = @unique_CFLAGS@ unique_LIBS = @unique_LIBS@ SUBDIRS = 48x48 scalable gtk_update_icon_cache = gtk-update-icon-cache -f -t $(datadir)/icons/HighContrastLargePrintInverse all: all-recursive .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(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) --gnu icons/HighContrastLargePrintInverse/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu icons/HighContrastLargePrintInverse/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: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. # To change the values of `make' variables: instead of editing Makefiles, # (1) if the variable is set in `config.status', edit `config.status' # (which will cause the Makefiles to be regenerated when you run `make'); # (2) otherwise, pass the desired values on the `make' command line. $(RECURSIVE_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ list='$(SUBDIRS)'; for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" $(RECURSIVE_CLEAN_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ rev=''; for subdir in $$list; do \ if test "$$subdir" = "."; then :; else \ rev="$$subdir $$rev"; \ fi; \ done; \ rev="$$rev ."; \ target=`echo $@ | sed s/-recursive//`; \ for subdir in $$rev; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags 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 @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: check-recursive all-am: Makefile installdirs: installdirs-recursive installdirs-am: install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive 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-recursive clean-am: clean-generic mostlyclean-am distclean: distclean-recursive -rm -f Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: @$(NORMAL_INSTALL) $(MAKE) $(AM_MAKEFLAGS) install-data-hook install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: @$(NORMAL_INSTALL) $(MAKE) $(AM_MAKEFLAGS) uninstall-hook .MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \ install-am install-data-am install-strip tags-recursive \ uninstall-am .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ all all-am check check-am clean clean-generic ctags \ ctags-recursive distclean distclean-generic distclean-tags \ distdir dvi dvi-am html html-am info info-am install \ install-am install-data install-data-am install-data-hook \ 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-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs installdirs-am maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic pdf \ pdf-am ps ps-am tags tags-recursive uninstall uninstall-am \ uninstall-hook install-data-hook: update-icon-cache uninstall-hook: update-icon-cache update-icon-cache: @-if test -z "$(DESTDIR)"; then \ echo "Updating Gtk icon cache."; \ $(gtk_update_icon_cache); \ else \ echo "*** Icon cache not updated. After (un)install, run this:"; \ echo "*** $(gtk_update_icon_cache)"; \ fi # 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: gobby-0.4.94/icons/HighContrastLargePrintInverse/48x48/0000755000175000017500000000000011543672437017562 500000000000000gobby-0.4.94/icons/HighContrastLargePrintInverse/48x48/Makefile.in0000644000175000017500000004250611543672414021551 00000000000000# 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@ subdir = icons/HighContrastLargePrintInverse/48x48 DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = $(top_builddir)/code/features.hpp 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 = RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ install-dvi-recursive install-exec-recursive \ install-html-recursive install-info-recursive \ install-pdf-recursive install-ps-recursive install-recursive \ installcheck-recursive installdirs-recursive pdf-recursive \ ps-recursive uninstall-recursive RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ distdir ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" ACLOCAL = @ACLOCAL@ ALL_LINGUAS = @ALL_LINGUAS@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@ DOC_USER_FORMATS = @DOC_USER_FORMATS@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GMOFILES = @GMOFILES@ GMSGFMT = @GMSGFMT@ GREP = @GREP@ HELP_DIR = @HELP_DIR@ 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@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MKINSTALLDIRS = @MKINSTALLDIRS@ MSGFMT = @MSGFMT@ MSGFMT_OPTS = @MSGFMT_OPTS@ MSGMERGE = @MSGMERGE@ OBJEXT = @OBJEXT@ OMF_DIR = @OMF_DIR@ 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@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ WINDRES = @WINDRES@ 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_CXX = @ac_ct_CXX@ 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@ gobby_CFLAGS = @gobby_CFLAGS@ gobby_LIBS = @gobby_LIBS@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infinote_CFLAGS = @infinote_CFLAGS@ infinote_LIBS = @infinote_LIBS@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ 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@ unique_CFLAGS = @unique_CFLAGS@ unique_LIBS = @unique_LIBS@ SUBDIRS = apps actions all: all-recursive .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(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) --gnu icons/HighContrastLargePrintInverse/48x48/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu icons/HighContrastLargePrintInverse/48x48/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: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. # To change the values of `make' variables: instead of editing Makefiles, # (1) if the variable is set in `config.status', edit `config.status' # (which will cause the Makefiles to be regenerated when you run `make'); # (2) otherwise, pass the desired values on the `make' command line. $(RECURSIVE_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ list='$(SUBDIRS)'; for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" $(RECURSIVE_CLEAN_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ rev=''; for subdir in $$list; do \ if test "$$subdir" = "."; then :; else \ rev="$$subdir $$rev"; \ fi; \ done; \ rev="$$rev ."; \ target=`echo $@ | sed s/-recursive//`; \ for subdir in $$rev; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags 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 @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: check-recursive all-am: Makefile installdirs: installdirs-recursive installdirs-am: install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive 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-recursive clean-am: clean-generic mostlyclean-am distclean: distclean-recursive -rm -f Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: .MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \ install-am install-strip tags-recursive .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ all all-am check check-am clean clean-generic ctags \ ctags-recursive distclean distclean-generic distclean-tags \ 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-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ installdirs-am maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic pdf pdf-am ps ps-am tags \ tags-recursive uninstall uninstall-am # 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: gobby-0.4.94/icons/HighContrastLargePrintInverse/48x48/apps/0000755000175000017500000000000011543672437020525 500000000000000gobby-0.4.94/icons/HighContrastLargePrintInverse/48x48/apps/gobby-0.5.png0000644000175000017500000000455411531722663022557 00000000000000PNG  IHDR00WsRGB pHYs B(xtIME'8IDATh޽mLW ˼$@x[5m)FDVƴԒ~`m5Mܘlڢͺ[ݕZְ!a#Hk@еPgv &p39i}@l9 yMp$o* BhH j ͕KIIэ74[illTJJhOt z-KeFh&R"l"?Ρ!n'lX,2228<7ofxx`9w`=FwVa,))-**3穨Phho**[& ;0ןxqXXhѢ޾}{Pq@ ) 9ikkۧp ˗`<kY;QNii)9 % ;::ϧ JKK ,Y{bX&u G+**ĉX,|>TVVõ@nv(KKK%IGRRREGGP;wpкuL\reZٳ=122bcXm&@+V$y^mٲ%&I裏Ç PMMʹ8q":Nf\}9w۶mȑ#~ժU100`hhݻwsiV+wS#&JKKzhtb\.caj'Izg&p풤<zJ&e\"**h:;;'͛7Xt)82Jpf*p80I#d/_NQQQ,$ӧOT02S__/Ia(>>^^~ejjjzB| >Ɂ!!`jkk{.wd3 !իW|$%%q% hjj2?|駼+fp-زe ;v8sLC8uuuIY}>TVV*ӭ>OCCC&EFFh9i(//$(77WǏ7-uuuzvZnI<BvXfjkkK/dr(^x.]ʒ%Kxꩧx'X,rMz… yąKWWǎN%.\ I:sCHMMUKK˄Ybh```G7xc!T (66V^W9F\.I۷~hzuus>-X`Af";wrU[oNYYj6lkظq#w{Myy97ߐ̮]B=.\2J1%I<ŋ'l6Mnݒ$9rd^Ѐq11\.9+W7.dNZZ/O? ?0dW2w[[[KCCYYY԰o>*++x<W… 3.]DLL/x2/tPoosSkk$jx=z蘂fZvc722A(11Q%%%ϧ OMMU$g̠^W[Mh"6l@ff&$$$֭[|>cTUUl2^/Vʕ+nLexxf|>'MJvϞ=c,x_hzuI t*---nnnҁ/ɓf/_}V\NIRCCYԆUUUl޼fVX&))m۶MXX ={v#<3()|\(++ hv!IRGGŒ n@%%%i;&&Ƥ6m2/·6$رcF1_J;fwxXVp:x'9&yӕA2')h駟kMzje ><USi` z.Tr8דj[p:\.vbcc`p)c̛Os.6qGt)y)5l1 ?fقH$ j/ _FdÌ%N2-,ԥS*ut,Jt% w?ޜ{[ල$ܞs9{AY1.[%`(G/V`Ps.-Kм 9_ \NNڵO&t:jD6N[<ϧ/Roo/%AlTRR8w_xtsGϟp8LrիWJFJbq ͥwR*2 R2݈rc? BluBWW\.BZ-, ?Q<~|)=577'ZT*544P {)mܸ7< 4`jjjD 0:>KKKibbB4E~a x<8T]]7jh;$rLb^{{{*1jmm驫٣Xŗ.]޹sgJZ- znݺ%ӨӬG FR+txB59T2ƶmۄDZ33>>.ԋшܢb؆V333ibC:)L`0(7oN+**HPhEgB}PT)رcP+Moln B9r$eB{UH&zD"v)###ۢ㸪wnq͖SN{^RTlhФtK<ϋ܉fYhqqQD`dd };4\t8 }|Nq\pD"<{,t<c3YRnѣ|p\χlFYYٚ3ׇ}aaa!h@)|HKKK=x nI%H^Pߍ7onOLQyyyЛ7oq{n?~8s<;vLJ< jҕ+Wp͑磞~:rbB!AԺ>ё*]}vv6  !k8Q 9JXu'sq*|քy2?/ 23ם Dm/a[l=qL&ӺX,Byx^8n;wT455l9NiOc݈'N9[gΜISjkksI}c222vyNֺZdeeɓ'qGGG d=b{N%%% ~?BD_ʠuuuQccJ{i,7K\^^d``@^^rss/6`ff]5@ 0?ϒAMJ*QXAs|mJRQ]Y)-_z9_{M{3IENDB`gobby-0.4.94/icons/HighContrastLargePrintInverse/48x48/actions/Makefile.am0000644000175000017500000000024111531722663023165 00000000000000icondir = $(datadir)/gobby-0.5/icons/HighContrastLargePrintInverse/48x48/actions icon_DATA = chat.png document-list.png user-list.png EXTRA_DIST = $(icon_DATA) gobby-0.4.94/icons/HighContrastLargePrintInverse/48x48/actions/chat.png0000644000175000017500000000343111517044575022565 00000000000000PNG  IHDR00WsRGB pHYs B(xtIME&3OIDATh՚_LT?3Έ3 0]۔vp4+hV҈ щ@LԤuLվb oM(!6RLKBBI[P*j{B2o2!߹;  pyxTƀ? !3  fWJg-*"]JO[zj^/6 Ś5kx<̌v昞^n'.._7n7{% RZZJII EEE׫M&LLLDcpp^>nXuuz/555 BI'Xqs`rzb2q%P䧁#@P6 ٱca4Gx<˩S>R+-jǏGFF4fI&Zܜ:t >DANW\ FA3߀ ËgJCCaFg3|2|-2dƍ c~jjJvmd8 sŴm^U,j3|_VLj,#5Άh TSShU[[ked0:zSݿ"[. ~~~^9bY6.pi;vLR6] mrبf=|$۲wvpp>4D*H,%8#\?Ӽs;Lr:WsIENDB`gobby-0.4.94/icons/HighContrastLargePrintInverse/48x48/actions/document-list.png0000644000175000017500000000203011517044575024427 00000000000000PNG  IHDR00WsRGB pHYs B(xtIME'!m IDAThKH+gGJH(xcB*ޅtU J馈hႠT\M v!^Eh݈tQ(Hu!DƠy1ҤIkq>.*///<NS鷚.ؐHsssQuPkkk~Ƚ>ۇEqvcjSb!"p\#fDfUX^K{n=@AKjp8hiiQψ68^^*666;$0::Z9Kɔߧ$˶N'+++444d;??'V@ P<ѧ hy\BE8nlv788(|>\/www+g?^<'`osYvV g;oQ.!sYTIENDB`gobby-0.4.94/icons/HighContrastLargePrintInverse/48x48/Makefile.am0000644000175000017500000000002711517044575021532 00000000000000SUBDIRS = apps actions gobby-0.4.94/icons/HighContrastLargePrintInverse/scalable/0000755000175000017500000000000011543672437020531 500000000000000gobby-0.4.94/icons/HighContrastLargePrintInverse/scalable/Makefile.in0000644000175000017500000004251711543672414022522 00000000000000# 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@ subdir = icons/HighContrastLargePrintInverse/scalable DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = $(top_builddir)/code/features.hpp 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 = RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ install-dvi-recursive install-exec-recursive \ install-html-recursive install-info-recursive \ install-pdf-recursive install-ps-recursive install-recursive \ installcheck-recursive installdirs-recursive pdf-recursive \ ps-recursive uninstall-recursive RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ distdir ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" ACLOCAL = @ACLOCAL@ ALL_LINGUAS = @ALL_LINGUAS@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@ DOC_USER_FORMATS = @DOC_USER_FORMATS@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GMOFILES = @GMOFILES@ GMSGFMT = @GMSGFMT@ GREP = @GREP@ HELP_DIR = @HELP_DIR@ 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@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MKINSTALLDIRS = @MKINSTALLDIRS@ MSGFMT = @MSGFMT@ MSGFMT_OPTS = @MSGFMT_OPTS@ MSGMERGE = @MSGMERGE@ OBJEXT = @OBJEXT@ OMF_DIR = @OMF_DIR@ 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@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ WINDRES = @WINDRES@ 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_CXX = @ac_ct_CXX@ 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@ gobby_CFLAGS = @gobby_CFLAGS@ gobby_LIBS = @gobby_LIBS@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infinote_CFLAGS = @infinote_CFLAGS@ infinote_LIBS = @infinote_LIBS@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ 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@ unique_CFLAGS = @unique_CFLAGS@ unique_LIBS = @unique_LIBS@ SUBDIRS = apps actions all: all-recursive .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(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) --gnu icons/HighContrastLargePrintInverse/scalable/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu icons/HighContrastLargePrintInverse/scalable/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: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. # To change the values of `make' variables: instead of editing Makefiles, # (1) if the variable is set in `config.status', edit `config.status' # (which will cause the Makefiles to be regenerated when you run `make'); # (2) otherwise, pass the desired values on the `make' command line. $(RECURSIVE_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ list='$(SUBDIRS)'; for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" $(RECURSIVE_CLEAN_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ rev=''; for subdir in $$list; do \ if test "$$subdir" = "."; then :; else \ rev="$$subdir $$rev"; \ fi; \ done; \ rev="$$rev ."; \ target=`echo $@ | sed s/-recursive//`; \ for subdir in $$rev; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags 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 @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: check-recursive all-am: Makefile installdirs: installdirs-recursive installdirs-am: install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive 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-recursive clean-am: clean-generic mostlyclean-am distclean: distclean-recursive -rm -f Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: .MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \ install-am install-strip tags-recursive .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ all all-am check check-am clean clean-generic ctags \ ctags-recursive distclean distclean-generic distclean-tags \ 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-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ installdirs-am maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic pdf pdf-am ps ps-am tags \ tags-recursive uninstall uninstall-am # 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: gobby-0.4.94/icons/HighContrastLargePrintInverse/scalable/apps/0000755000175000017500000000000011543672437021474 500000000000000gobby-0.4.94/icons/HighContrastLargePrintInverse/scalable/apps/Makefile.in0000644000175000017500000003041711543672414023461 00000000000000# 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@ subdir = icons/HighContrastLargePrintInverse/scalable/apps DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = $(top_builddir)/code/features.hpp 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)$(icondir)" DATA = $(icon_DATA) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALL_LINGUAS = @ALL_LINGUAS@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@ DOC_USER_FORMATS = @DOC_USER_FORMATS@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GMOFILES = @GMOFILES@ GMSGFMT = @GMSGFMT@ GREP = @GREP@ HELP_DIR = @HELP_DIR@ 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@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MKINSTALLDIRS = @MKINSTALLDIRS@ MSGFMT = @MSGFMT@ MSGFMT_OPTS = @MSGFMT_OPTS@ MSGMERGE = @MSGMERGE@ OBJEXT = @OBJEXT@ OMF_DIR = @OMF_DIR@ 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@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ WINDRES = @WINDRES@ 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_CXX = @ac_ct_CXX@ 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@ gobby_CFLAGS = @gobby_CFLAGS@ gobby_LIBS = @gobby_LIBS@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infinote_CFLAGS = @infinote_CFLAGS@ infinote_LIBS = @infinote_LIBS@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ 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@ unique_CFLAGS = @unique_CFLAGS@ unique_LIBS = @unique_LIBS@ icondir = $(datadir)/icons/HighContrastLargePrintInverse/scalable/apps icon_DATA = gobby-0.5.svg EXTRA_DIST = $(icon_DATA) all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(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) --gnu icons/HighContrastLargePrintInverse/scalable/apps/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu icons/HighContrastLargePrintInverse/scalable/apps/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: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-iconDATA: $(icon_DATA) @$(NORMAL_INSTALL) test -z "$(icondir)" || $(MKDIR_P) "$(DESTDIR)$(icondir)" @list='$(icon_DATA)'; test -n "$(icondir)" || 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)$(icondir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(icondir)" || exit $$?; \ done uninstall-iconDATA: @$(NORMAL_UNINSTALL) @list='$(icon_DATA)'; test -n "$(icondir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ test -n "$$files" || exit 0; \ echo " ( cd '$(DESTDIR)$(icondir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(icondir)" && 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)$(icondir)"; 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 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-iconDATA 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 pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-iconDATA .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic distclean \ distclean-generic 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-iconDATA install-info install-info-am \ install-man install-pdf install-pdf-am install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic pdf pdf-am ps ps-am uninstall \ uninstall-am uninstall-iconDATA # 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: gobby-0.4.94/icons/HighContrastLargePrintInverse/scalable/apps/Makefile.am0000644000175000017500000000017411531722663023444 00000000000000icondir = $(datadir)/icons/HighContrastLargePrintInverse/scalable/apps icon_DATA = gobby-0.5.svg EXTRA_DIST = $(icon_DATA) gobby-0.4.94/icons/HighContrastLargePrintInverse/scalable/apps/gobby-0.5.svg0000644000175000017500000006165111531722663023542 00000000000000 image/svg+xml gobby-0.4.94/icons/HighContrastLargePrintInverse/scalable/actions/0000755000175000017500000000000011543672437022171 500000000000000gobby-0.4.94/icons/HighContrastLargePrintInverse/scalable/actions/Makefile.in0000644000175000017500000003050011543672414024147 00000000000000# 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@ subdir = icons/HighContrastLargePrintInverse/scalable/actions DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = $(top_builddir)/code/features.hpp 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)$(icondir)" DATA = $(icon_DATA) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALL_LINGUAS = @ALL_LINGUAS@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@ DOC_USER_FORMATS = @DOC_USER_FORMATS@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GMOFILES = @GMOFILES@ GMSGFMT = @GMSGFMT@ GREP = @GREP@ HELP_DIR = @HELP_DIR@ 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@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MKINSTALLDIRS = @MKINSTALLDIRS@ MSGFMT = @MSGFMT@ MSGFMT_OPTS = @MSGFMT_OPTS@ MSGMERGE = @MSGMERGE@ OBJEXT = @OBJEXT@ OMF_DIR = @OMF_DIR@ 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@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ WINDRES = @WINDRES@ 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_CXX = @ac_ct_CXX@ 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@ gobby_CFLAGS = @gobby_CFLAGS@ gobby_LIBS = @gobby_LIBS@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infinote_CFLAGS = @infinote_CFLAGS@ infinote_LIBS = @infinote_LIBS@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ 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@ unique_CFLAGS = @unique_CFLAGS@ unique_LIBS = @unique_LIBS@ icondir = $(datadir)/gobby-0.5/icons/HighContrastLargePrintInverse/scalable/actions icon_DATA = chat.svg document-list.svg user-list.svg EXTRA_DIST = $(icon_DATA) all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(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) --gnu icons/HighContrastLargePrintInverse/scalable/actions/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu icons/HighContrastLargePrintInverse/scalable/actions/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: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-iconDATA: $(icon_DATA) @$(NORMAL_INSTALL) test -z "$(icondir)" || $(MKDIR_P) "$(DESTDIR)$(icondir)" @list='$(icon_DATA)'; test -n "$(icondir)" || 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)$(icondir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(icondir)" || exit $$?; \ done uninstall-iconDATA: @$(NORMAL_UNINSTALL) @list='$(icon_DATA)'; test -n "$(icondir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ test -n "$$files" || exit 0; \ echo " ( cd '$(DESTDIR)$(icondir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(icondir)" && 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)$(icondir)"; 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 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-iconDATA 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 pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-iconDATA .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic distclean \ distclean-generic 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-iconDATA install-info install-info-am \ install-man install-pdf install-pdf-am install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic pdf pdf-am ps ps-am uninstall \ uninstall-am uninstall-iconDATA # 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: gobby-0.4.94/icons/HighContrastLargePrintInverse/scalable/actions/user-list.svg0000644000175000017500000001575411517044575024572 00000000000000 image/svg+xml gobby-0.4.94/icons/HighContrastLargePrintInverse/scalable/actions/chat.svg0000644000175000017500000001047311517044575023553 00000000000000 image/svg+xml gobby-0.4.94/icons/HighContrastLargePrintInverse/scalable/actions/document-list.svg0000644000175000017500000000757411517044575025433 00000000000000 image/svg+xml gobby-0.4.94/icons/HighContrastLargePrintInverse/scalable/actions/Makefile.am0000644000175000017500000000024411531722663024137 00000000000000icondir = $(datadir)/gobby-0.5/icons/HighContrastLargePrintInverse/scalable/actions icon_DATA = chat.svg document-list.svg user-list.svg EXTRA_DIST = $(icon_DATA) gobby-0.4.94/icons/HighContrastLargePrintInverse/scalable/Makefile.am0000644000175000017500000000002711517044575022501 00000000000000SUBDIRS = apps actions gobby-0.4.94/icons/HighContrastLargePrintInverse/Makefile.am0000644000175000017500000000070511517044575020736 00000000000000SUBDIRS = 48x48 scalable gtk_update_icon_cache = gtk-update-icon-cache -f -t $(datadir)/icons/HighContrastLargePrintInverse install-data-hook: update-icon-cache uninstall-hook: update-icon-cache update-icon-cache: @-if test -z "$(DESTDIR)"; then \ echo "Updating Gtk icon cache."; \ $(gtk_update_icon_cache); \ else \ echo "*** Icon cache not updated. After (un)install, run this:"; \ echo "*** $(gtk_update_icon_cache)"; \ fi gobby-0.4.94/AUTHORS0000644000175000017500000000171411531722662010713 00000000000000gobby ===== This program is written by the 0x539 dev group and is licensed under the GNU General Public License (GPL) version 2 or any later version. A copy of the license is included in the distribution. 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. Copyright (C) 2005 0x539 dev group Authors: * Armin Burgmeier * Philipp Kern Contributors: * Benjamin Herr * Ben Levitt * Gabríel A. Pétursson Translations: French: * Peer Janssen * Mohammed Adnene Trojette Spanish: * Mario Palomo Swedish: * Daniel Nylander German: * Philipp Kern gobby-0.4.94/Makefile.in0000644000175000017500000010112211543672415011705 00000000000000# 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@ @HAVE_GNOME_DOC_UTILS_TRUE@am__append_1 = help bin_PROGRAMS = gobby-0.5$(EXEEXT) @WIN32_TRUE@am__append_2 = -lws2_32 subdir = . DIST_COMMON = README $(am__configure_deps) $(dist_man_MANS) \ $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ $(top_srcdir)/configure AUTHORS COPYING ChangeLog INSTALL NEWS \ TODO compile config.guess config.sub depcomp install-sh \ missing mkinstalldirs ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ configure.lineno config.status.lineno mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = $(top_builddir)/code/features.hpp CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man1dir)" \ "$(DESTDIR)$(desktopdir)" PROGRAMS = $(bin_PROGRAMS) am_gobby_0_5_OBJECTS = gobby_0_5_OBJECTS = $(am_gobby_0_5_OBJECTS) am__DEPENDENCIES_1 = gobby_0_5_DEPENDENCIES = code/libgobby.a \ code/commands/libgobby-commands.a \ code/commands/file-tasks/libgobby-file-tasks.a \ code/operations/libgobby-operations.a \ code/dialogs/libgobby-dialogs.a code/core/libgobby-core.a \ code/util/libgobby-util.a $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) gobby_0_5_LINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \ $(gobby_0_5_LDFLAGS) $(LDFLAGS) -o $@ DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/code depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) AM_V_CXX = $(am__v_CXX_$(V)) am__v_CXX_ = $(am__v_CXX_$(AM_DEFAULT_VERBOSITY)) am__v_CXX_0 = @echo " CXX " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ CXXLD = $(CXX) CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \ -o $@ AM_V_CXXLD = $(am__v_CXXLD_$(V)) am__v_CXXLD_ = $(am__v_CXXLD_$(AM_DEFAULT_VERBOSITY)) am__v_CXXLD_0 = @echo " CXXLD " $@; AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; SOURCES = $(gobby_0_5_SOURCES) $(nodist_EXTRA_gobby_0_5_SOURCES) DIST_SOURCES = $(gobby_0_5_SOURCES) RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ install-dvi-recursive install-exec-recursive \ install-html-recursive install-info-recursive \ install-pdf-recursive install-ps-recursive install-recursive \ installcheck-recursive installdirs-recursive pdf-recursive \ ps-recursive uninstall-recursive 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' man1dir = $(mandir)/man1 NROFF = nroff MANS = $(dist_man_MANS) DATA = $(desktop_DATA) RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ distdir dist dist-all distcheck ETAGS = etags CTAGS = ctags DIST_SUBDIRS = m4 win32 code . icons po help DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) distdir = $(PACKAGE)-$(VERSION) top_distdir = $(distdir) am__remove_distdir = \ { test ! -d "$(distdir)" \ || { find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \ && rm -fr "$(distdir)"; }; } am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" DIST_ARCHIVES = $(distdir).tar.gz GZIP_ENV = --best distuninstallcheck_listfiles = find . -type f -print distcleancheck_listfiles = find . -type f -print ACLOCAL = @ACLOCAL@ ALL_LINGUAS = @ALL_LINGUAS@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DISTCHECK_CONFIGURE_FLAGS = --disable-scrollkeeper --with-gtk3 DOC_USER_FORMATS = @DOC_USER_FORMATS@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GMOFILES = @GMOFILES@ GMSGFMT = @GMSGFMT@ GREP = @GREP@ HELP_DIR = @HELP_DIR@ 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@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MKINSTALLDIRS = @MKINSTALLDIRS@ MSGFMT = @MSGFMT@ MSGFMT_OPTS = @MSGFMT_OPTS@ MSGMERGE = @MSGMERGE@ OBJEXT = @OBJEXT@ OMF_DIR = @OMF_DIR@ 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@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ WINDRES = @WINDRES@ 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_CXX = @ac_ct_CXX@ 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@ gobby_CFLAGS = @gobby_CFLAGS@ gobby_LIBS = @gobby_LIBS@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infinote_CFLAGS = @infinote_CFLAGS@ infinote_LIBS = @infinote_LIBS@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ 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@ unique_CFLAGS = @unique_CFLAGS@ unique_LIBS = @unique_LIBS@ SUBDIRS = m4 win32 code . icons po $(am__append_1) # Tell aclocal where to find `.m4' files. ACLOCAL_AMFLAGS = -I m4 dist_man_MANS = gobby-0.5.1 gobby_0_5_LDADD = code/libgobby.a code/commands/libgobby-commands.a \ code/commands/file-tasks/libgobby-file-tasks.a \ code/operations/libgobby-operations.a \ code/dialogs/libgobby-dialogs.a code/core/libgobby-core.a \ code/util/libgobby-util.a $(gobby_LIBS) $(unique_LIBS) \ $(infinote_LIBS) $(LIBS) $(am__append_2) @WIN32_TRUE@gobby_0_5_LDFLAGS = \ @WIN32_TRUE@ -Wl,--enable-runtime-pseudo-reloc \ @WIN32_TRUE@ -mwindows \ @WIN32_TRUE@ win32/gobby.res gobby_0_5_SOURCES = # .desktop file @WIN32_FALSE@desktopdir = $(datadir)/applications @WIN32_FALSE@desktop_in_files = gobby-0.5.desktop.in @WIN32_FALSE@desktop_DATA = $(desktop_in_files:.desktop.in=.desktop) # Dummy C++ source to cause C++ linking, otherwise some platforms don't link # correctly against libstdc++. See also #399. Note that this file does not # (need to) exist in the source tree. nodist_EXTRA_gobby_0_5_SOURCES = dummy.cpp # Debian seems to need an XPM of the program icon, so we provide one here. # It's currently not used for anything else, though. # For the manual EXTRA_DIST = gobby-0.5.xpm gnome-doc-utils.make gobby-0.5.desktop.in DISTCLEANFILES = gnome-doc-utils.make all: all-recursive .SUFFIXES: .SUFFIXES: .cpp .o .obj am--refresh: @: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ echo ' cd $(srcdir) && $(AUTOMAKE) --gnu'; \ $(am__cd) $(srcdir) && $(AUTOMAKE) --gnu \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ echo ' $(SHELL) ./config.status'; \ $(SHELL) ./config.status;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(SHELL) ./config.status --recheck $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) $(am__cd) $(srcdir) && $(AUTOCONF) $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) $(am__aclocal_m4_deps): install-binPROGRAMS: $(bin_PROGRAMS) @$(NORMAL_INSTALL) test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)" @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ for p in $$list; do echo "$$p $$p"; done | \ sed 's/$(EXEEXT)$$//' | \ while read p p1; do if test -f $$p; \ then echo "$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) files[d] = files[d] " " $$1; \ else { print "f", $$3 "/" $$4, $$1; } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \ $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ } \ ; done uninstall-binPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ -e 's/$$/$(EXEEXT)/' `; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(bindir)" && rm -f $$files clean-binPROGRAMS: -test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS) gobby-0.5$(EXEEXT): $(gobby_0_5_OBJECTS) $(gobby_0_5_DEPENDENCIES) @rm -f gobby-0.5$(EXEEXT) $(AM_V_CXXLD)$(gobby_0_5_LINK) $(gobby_0_5_OBJECTS) $(gobby_0_5_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dummy.Po@am__quote@ .cpp.o: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $< .cpp.obj: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` install-man1: $(dist_man_MANS) @$(NORMAL_INSTALL) test -z "$(man1dir)" || $(MKDIR_P) "$(DESTDIR)$(man1dir)" @list=''; test -n "$(man1dir)" || exit 0; \ { for i in $$list; do echo "$$i"; done; \ l2='$(dist_man_MANS)'; for i in $$l2; do echo "$$i"; done | \ sed -n '/\.1[a-z]*$$/p'; \ } | while read p; do \ if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; echo "$$p"; \ done | \ sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \ sed 'N;N;s,\n, ,g' | { \ list=; while read file base inst; do \ if test "$$base" = "$$inst"; then list="$$list $$file"; else \ echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \ $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst" || exit $$?; \ fi; \ done; \ for i in $$list; do echo "$$i"; done | $(am__base_list) | \ while read files; do \ test -z "$$files" || { \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man1dir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(man1dir)" || exit $$?; }; \ done; } uninstall-man1: @$(NORMAL_UNINSTALL) @list=''; test -n "$(man1dir)" || exit 0; \ files=`{ for i in $$list; do echo "$$i"; done; \ l2='$(dist_man_MANS)'; for i in $$l2; do echo "$$i"; done | \ sed -n '/\.1[a-z]*$$/p'; \ } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \ test -z "$$files" || { \ echo " ( cd '$(DESTDIR)$(man1dir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(man1dir)" && rm -f $$files; } install-desktopDATA: $(desktop_DATA) @$(NORMAL_INSTALL) test -z "$(desktopdir)" || $(MKDIR_P) "$(DESTDIR)$(desktopdir)" @list='$(desktop_DATA)'; test -n "$(desktopdir)" || 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)$(desktopdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(desktopdir)" || exit $$?; \ done uninstall-desktopDATA: @$(NORMAL_UNINSTALL) @list='$(desktop_DATA)'; test -n "$(desktopdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ test -n "$$files" || exit 0; \ echo " ( cd '$(DESTDIR)$(desktopdir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(desktopdir)" && rm -f $$files # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. # To change the values of `make' variables: instead of editing Makefiles, # (1) if the variable is set in `config.status', edit `config.status' # (which will cause the Makefiles to be regenerated when you run `make'); # (2) otherwise, pass the desired values on the `make' command line. $(RECURSIVE_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ list='$(SUBDIRS)'; for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" $(RECURSIVE_CLEAN_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ rev=''; for subdir in $$list; do \ if test "$$subdir" = "."; then :; else \ rev="$$subdir $$rev"; \ fi; \ done; \ rev="$$rev ."; \ target=`echo $@ | sed s/-recursive//`; \ for subdir in $$rev; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @case `sed 15q $(srcdir)/NEWS` in \ *"$(VERSION)"*) : ;; \ *) \ echo "NEWS not updated; not releasing" 1>&2; \ exit 1;; \ esac @list='$(MANS)'; if test -n "$$list"; then \ list=`for p in $$list; do \ if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; else :; fi; done`; \ if test -n "$$list" && \ grep 'ab help2man is required to generate this page' $$list >/dev/null; then \ echo "error: found man pages containing the \`missing help2man' replacement text:" >&2; \ grep -l 'ab help2man is required to generate this page' $$list | sed 's/^/ /' >&2; \ echo " to fix them, install help2man, remove and regenerate the man pages;" >&2; \ echo " typically \`make maintainer-clean' will remove them" >&2; \ exit 1; \ else :; fi; \ else :; fi $(am__remove_distdir) test -d "$(distdir)" || mkdir "$(distdir)" @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 @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done -test -n "$(am__skip_mode_fix)" \ || find "$(distdir)" -type d ! -perm -755 \ -exec chmod u+rwx,go+rx {} \; -o \ ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ || chmod -R a+r "$(distdir)" dist-gzip: distdir tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz $(am__remove_distdir) dist-bzip2: distdir tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2 $(am__remove_distdir) dist-lzma: distdir tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma $(am__remove_distdir) dist-xz: distdir tardir=$(distdir) && $(am__tar) | xz -c >$(distdir).tar.xz $(am__remove_distdir) dist-tarZ: distdir tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z $(am__remove_distdir) dist-shar: distdir shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz $(am__remove_distdir) dist-zip: distdir -rm -f $(distdir).zip zip -rq $(distdir).zip $(distdir) $(am__remove_distdir) dist dist-all: distdir tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz $(am__remove_distdir) # This target untars the dist file and tries a VPATH configuration. Then # it guarantees that the distribution is self-contained by making another # tarfile. distcheck: dist case '$(DIST_ARCHIVES)' in \ *.tar.gz*) \ GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\ *.tar.bz2*) \ bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ *.tar.lzma*) \ lzma -dc $(distdir).tar.lzma | $(am__untar) ;;\ *.tar.xz*) \ xz -dc $(distdir).tar.xz | $(am__untar) ;;\ *.tar.Z*) \ uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ *.shar.gz*) \ GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\ *.zip*) \ unzip $(distdir).zip ;;\ esac chmod -R a-w $(distdir); chmod a+w $(distdir) mkdir $(distdir)/_build mkdir $(distdir)/_inst chmod a-w $(distdir) test -d $(distdir)/_build || exit 0; \ dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ && am__cwd=`pwd` \ && $(am__cd) $(distdir)/_build \ && ../configure --srcdir=.. --prefix="$$dc_install_base" \ $(DISTCHECK_CONFIGURE_FLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) dvi \ && $(MAKE) $(AM_MAKEFLAGS) check \ && $(MAKE) $(AM_MAKEFLAGS) install \ && $(MAKE) $(AM_MAKEFLAGS) installcheck \ && $(MAKE) $(AM_MAKEFLAGS) uninstall \ && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ distuninstallcheck \ && chmod -R a-w "$$dc_install_base" \ && ({ \ (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ } || { rm -rf "$$dc_destdir"; exit 1; }) \ && rm -rf "$$dc_destdir" \ && $(MAKE) $(AM_MAKEFLAGS) dist \ && rm -rf $(DIST_ARCHIVES) \ && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \ && cd "$$am__cwd" \ || exit 1 $(am__remove_distdir) @(echo "$(distdir) archives ready for distribution: "; \ list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' distuninstallcheck: @$(am__cd) '$(distuninstallcheck_dir)' \ && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \ || { echo "ERROR: files left after uninstall:" ; \ if test -n "$(DESTDIR)"; then \ echo " (check DESTDIR support)"; \ fi ; \ $(distuninstallcheck_listfiles) ; \ exit 1; } >&2 distcleancheck: distclean @if test '$(srcdir)' = . ; then \ echo "ERROR: distcleancheck can only run from a VPATH build" ; \ exit 1 ; \ fi @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ || { echo "ERROR: files left in build directory after distclean:" ; \ $(distcleancheck_listfiles) ; \ exit 1; } >&2 check-am: all-am check: check-recursive all-am: Makefile $(PROGRAMS) $(MANS) $(DATA) installdirs: installdirs-recursive installdirs-am: for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(desktopdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive 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) -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) 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-recursive clean-am: clean-binPROGRAMS clean-generic clean-local mostlyclean-am distclean: distclean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-desktopDATA install-man install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-binPROGRAMS install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-man1 install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -rf $(top_srcdir)/autom4te.cache -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: uninstall-binPROGRAMS uninstall-desktopDATA \ uninstall-man uninstall-man: uninstall-man1 .MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \ install-am install-strip tags-recursive .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ all all-am am--refresh check check-am clean clean-binPROGRAMS \ clean-generic clean-local ctags ctags-recursive dist dist-all \ dist-bzip2 dist-gzip dist-lzma dist-shar dist-tarZ dist-xz \ dist-zip distcheck distclean distclean-compile \ distclean-generic distclean-tags distcleancheck distdir \ distuninstallcheck dvi dvi-am html html-am info info-am \ install install-am install-binPROGRAMS install-data \ install-data-am install-desktopDATA install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-man1 \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ installdirs-am maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-compile mostlyclean-generic pdf pdf-am \ ps ps-am tags tags-recursive uninstall uninstall-am \ uninstall-binPROGRAMS uninstall-desktopDATA uninstall-man \ uninstall-man1 clean-local: -rm -rf gobby-0.5.desktop @INTLTOOL_DESKTOP_RULE@ # 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: gobby-0.4.94/compile0000755000175000017500000000727111424242734011223 00000000000000#! /bin/sh # Wrapper for compilers which do not understand `-c -o'. scriptversion=2009-10-06.20; # UTC # Copyright (C) 1999, 2000, 2003, 2004, 2005, 2009 Free Software # Foundation, Inc. # Written by Tom Tromey . # # 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, 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, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # This file is maintained in Automake, please report # bugs to or send patches to # . case $1 in '') echo "$0: No command. Try \`$0 --help' for more information." 1>&2 exit 1; ;; -h | --h*) cat <<\EOF Usage: compile [--help] [--version] PROGRAM [ARGS] Wrapper for compilers which do not understand `-c -o'. Remove `-o dest.o' from ARGS, run PROGRAM with the remaining arguments, and rename the output as expected. If you are trying to build a whole package this is not the right script to run: please start by reading the file `INSTALL'. Report bugs to . EOF exit $? ;; -v | --v*) echo "compile $scriptversion" exit $? ;; esac ofile= cfile= eat= for arg do if test -n "$eat"; then eat= else case $1 in -o) # configure might choose to run compile as `compile cc -o foo foo.c'. # So we strip `-o arg' only if arg is an object. eat=1 case $2 in *.o | *.obj) ofile=$2 ;; *) set x "$@" -o "$2" shift ;; esac ;; *.c) cfile=$1 set x "$@" "$1" shift ;; *) set x "$@" "$1" shift ;; esac fi shift done if test -z "$ofile" || test -z "$cfile"; then # If no `-o' option was seen then we might have been invoked from a # pattern rule where we don't need one. That is ok -- this is a # normal compilation that the losing compiler can handle. If no # `.c' file was seen then we are probably linking. That is also # ok. exec "$@" fi # Name of file we expect compiler to create. cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'` # Create the lock directory. # Note: use `[/\\:.-]' here to ensure that we don't use the same name # that we are using for the .o file. Also, base the name on the expected # object file name, since that is what matters with a parallel build. lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d while true; do if mkdir "$lockdir" >/dev/null 2>&1; then break fi sleep 1 done # FIXME: race condition here if user kills between mkdir and trap. trap "rmdir '$lockdir'; exit 1" 1 2 15 # Run the compile. "$@" ret=$? if test -f "$cofile"; then test "$cofile" = "$ofile" || mv "$cofile" "$ofile" elif test -f "${cofile}bj"; then test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile" fi rmdir "$lockdir" exit $ret # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: gobby-0.4.94/configure0000755000175000017500000101334611543672407011563 00000000000000#! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.68 for gobby 0.4.94. # # Report bugs to . # # # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, # 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software # Foundation, Inc. # # # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH if test "x$CONFIG_SHELL" = x; then as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else case \`(set -o) 2>/dev/null\` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi " as_required="as_fn_return () { (exit \$1); } as_fn_success () { as_fn_return 0; } as_fn_failure () { as_fn_return 1; } as_fn_ret_success () { return 0; } as_fn_ret_failure () { return 1; } exitcode=0 as_fn_success || { exitcode=1; echo as_fn_success failed.; } as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : else exitcode=1; echo positional parameters were not saved. fi test x\$exitcode = x0 || exit 1" as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 test \$(( 1 + 1 )) = 2 || exit 1" if (eval "$as_required") 2>/dev/null; then : as_have_required=yes else as_have_required=no fi if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. as_found=: case $as_dir in #( /*) for as_base in sh bash ksh sh5; do # Try only shells that exist, to save several forks. as_shell=$as_dir/$as_base if { test -f "$as_shell" || test -f "$as_shell.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : CONFIG_SHELL=$as_shell as_have_required=yes if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : break 2 fi fi done;; esac as_found=false done $as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : CONFIG_SHELL=$SHELL as_have_required=yes fi; } IFS=$as_save_IFS if test "x$CONFIG_SHELL" != x; then : # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV export CONFIG_SHELL case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec "$CONFIG_SHELL" $as_opts "$as_myself" ${1+"$@"} fi if test x$as_have_required = xno; then : $as_echo "$0: This script requires a shell more modern than all" $as_echo "$0: the shells that I found on your system." if test x${ZSH_VERSION+set} = xset ; then $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" $as_echo "$0: be upgraded to zsh 4.3.4 or later." else $as_echo "$0: Please tell bug-autoconf@gnu.org and crew@0x539.de $0: about your system, including any error possibly output $0: before this message. Then install a modern shell, or $0: manually run the script under such a shell if you do $0: have one." fi exit 1 fi fi fi SHELL=${CONFIG_SHELL-/bin/sh} export SHELL # Unset more variables known to interfere with behavior of common tools. CLICOLOR_FORCE= GREP_OPTIONS= unset CLICOLOR_FORCE GREP_OPTIONS ## --------------------- ## ## M4sh Shell Functions. ## ## --------------------- ## # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits as_lineno_1=$LINENO as_lineno_1a=$LINENO as_lineno_2=$LINENO as_lineno_2a=$LINENO eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= ' <$as_myself | sed ' s/[$]LINENO.*/&-/ t lineno b :lineno N :loop s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). . "./$as_me.lineno" # Exit status is that of the last command. exit } ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -p'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -p' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -p' fi else as_ln_s='cp -p' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi if test -x / >/dev/null 2>&1; then as_test_x='test -x' else if ls -dL / >/dev/null 2>&1; then as_ls_L_option=L else as_ls_L_option= fi as_test_x=' eval sh -c '\'' if test -d "$1"; then test -d "$1/."; else case $1 in #( -*)set "./$1";; esac; case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #(( ???[sx]*):;;*)false;;esac;fi '\'' sh ' fi as_executable_p=$as_test_x # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" test -n "$DJDIR" || exec 7<&0 &1 # Name of the host. # hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` # # Initializations. # ac_default_prefix=/usr/local ac_clean_files= ac_config_libobj_dir=. LIBOBJS= cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= # Identity of this package. PACKAGE_NAME='gobby' PACKAGE_TARNAME='gobby' PACKAGE_VERSION='0.4.94' PACKAGE_STRING='gobby 0.4.94' PACKAGE_BUGREPORT='crew@0x539.de' PACKAGE_URL='' ac_unique_file="code/window.hpp" # Factoring default headers for most tests. ac_includes_default="\ #include #ifdef HAVE_SYS_TYPES_H # include #endif #ifdef HAVE_SYS_STAT_H # include #endif #ifdef STDC_HEADERS # include # include #else # ifdef HAVE_STDLIB_H # include # endif #endif #ifdef HAVE_STRING_H # if !defined STDC_HEADERS && defined HAVE_MEMORY_H # include # endif # include #endif #ifdef HAVE_STRINGS_H # include #endif #ifdef HAVE_INTTYPES_H # include #endif #ifdef HAVE_STDINT_H # include #endif #ifdef HAVE_UNISTD_H # include #endif" ac_subst_vars='am__EXEEXT_FALSE am__EXEEXT_TRUE LTLIBOBJS LIBOBJS HAVE_GNOME_DOC_UTILS_FALSE HAVE_GNOME_DOC_UTILS_TRUE DISTCHECK_CONFIGURE_FLAGS ENABLE_SK_FALSE ENABLE_SK_TRUE DOC_USER_FORMATS OMF_DIR HELP_DIR GETTEXT_PACKAGE ALL_LINGUAS INTLTOOL_PERL MSGMERGE INTLTOOL_POLICY_RULE INTLTOOL_SERVICE_RULE INTLTOOL_THEME_RULE INTLTOOL_SCHEMAS_RULE INTLTOOL_CAVES_RULE INTLTOOL_XML_NOMERGE_RULE INTLTOOL_XML_RULE INTLTOOL_KBD_RULE INTLTOOL_XAM_RULE INTLTOOL_UI_RULE INTLTOOL_SOUNDLIST_RULE INTLTOOL_SHEET_RULE INTLTOOL_SERVER_RULE INTLTOOL_PONG_RULE INTLTOOL_OAF_RULE INTLTOOL_PROP_RULE INTLTOOL_KEYS_RULE INTLTOOL_DIRECTORY_RULE INTLTOOL_DESKTOP_RULE INTLTOOL_EXTRACT INTLTOOL_MERGE INTLTOOL_UPDATE MKINSTALLDIRS POSUB POFILES PO_IN_DATADIR_FALSE PO_IN_DATADIR_TRUE INTLLIBS INSTOBJEXT GMOFILES DATADIRNAME CATOBJEXT CATALOGS XGETTEXT GMSGFMT MSGFMT_OPTS MSGFMT USE_NLS EGREP GREP WITH_UNIQUE_FALSE WITH_UNIQUE_TRUE unique_LIBS unique_CFLAGS infinote_LIBS infinote_CFLAGS gobby_LIBS gobby_CFLAGS PKG_CONFIG_LIBDIR PKG_CONFIG_PATH PKG_CONFIG WIN32_FALSE WIN32_TRUE WINDRES RANLIB LN_S CPP am__fastdepCC_FALSE am__fastdepCC_TRUE CCDEPMODE ac_ct_CC CFLAGS CC am__fastdepCXX_FALSE am__fastdepCXX_TRUE CXXDEPMODE AMDEPBACKSLASH AMDEP_FALSE AMDEP_TRUE am__quote am__include DEPDIR OBJEXT EXEEXT ac_ct_CXX CPPFLAGS LDFLAGS CXXFLAGS CXX host_os host_vendor host_cpu host build_os build_vendor build_cpu build MAINT MAINTAINER_MODE_FALSE MAINTAINER_MODE_TRUE AM_BACKSLASH AM_DEFAULT_VERBOSITY am__untar am__tar AMTAR am__leading_dot SET_MAKE AWK mkdir_p MKDIR_P INSTALL_STRIP_PROGRAM STRIP install_sh MAKEINFO AUTOHEADER AUTOMAKE AUTOCONF ACLOCAL VERSION PACKAGE CYGPATH_W am__isrc INSTALL_DATA INSTALL_SCRIPT INSTALL_PROGRAM target_alias host_alias build_alias LIBS ECHO_T ECHO_N ECHO_C DEFS mandir localedir libdir psdir pdfdir dvidir htmldir infodir docdir oldincludedir includedir localstatedir sharedstatedir sysconfdir datadir datarootdir libexecdir sbindir bindir program_transform_name prefix exec_prefix PACKAGE_URL PACKAGE_BUGREPORT PACKAGE_STRING PACKAGE_VERSION PACKAGE_TARNAME PACKAGE_NAME PATH_SEPARATOR SHELL' ac_subst_files='' ac_user_opts=' enable_option_checking enable_silent_rules enable_maintainer_mode enable_dependency_tracking with_gtk3 with_unique enable_nls with_help_dir with_omf_dir with_help_formats enable_scrollkeeper ' ac_precious_vars='build_alias host_alias target_alias CXX CXXFLAGS LDFLAGS LIBS CPPFLAGS CCC CC CFLAGS CPP PKG_CONFIG PKG_CONFIG_PATH PKG_CONFIG_LIBDIR gobby_CFLAGS gobby_LIBS infinote_CFLAGS infinote_LIBS unique_CFLAGS unique_LIBS' # Initialize some variables set by options. ac_init_help= ac_init_version=false ac_unrecognized_opts= ac_unrecognized_sep= # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null exec_prefix=NONE no_create= no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= verbose= x_includes=NONE x_libraries=NONE # Installation directory options. # These are left unexpanded so users can "make install exec_prefix=/foo" # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. # (The list follows the same order as the GNU Coding Standards.) bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datarootdir='${prefix}/share' datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' infodir='${datarootdir}/info' htmldir='${docdir}' dvidir='${docdir}' pdfdir='${docdir}' psdir='${docdir}' libdir='${exec_prefix}/lib' localedir='${datarootdir}/locale' mandir='${datarootdir}/man' ac_prev= ac_dashdash= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval $ac_prev=\$ac_option ac_prev= continue fi case $ac_option in *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; *=) ac_optarg= ;; *) ac_optarg=yes ;; esac # Accept the important Cygnus configure options, so we can diagnose typos. case $ac_dashdash$ac_option in --) ac_dashdash=yes ;; -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build_alias=$ac_optarg ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file=$ac_optarg ;; --config-cache | -C) cache_file=config.cache ;; -datadir | --datadir | --datadi | --datad) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=*) datadir=$ac_optarg ;; -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ | --dataroo | --dataro | --datar) ac_prev=datarootdir ;; -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) datarootdir=$ac_optarg ;; -disable-* | --disable-*) ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=no ;; -docdir | --docdir | --docdi | --doc | --do) ac_prev=docdir ;; -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) docdir=$ac_optarg ;; -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) ac_prev=dvidir ;; -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) dvidir=$ac_optarg ;; -enable-* | --enable-*) ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=\$ac_optarg ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he | -h) ac_init_help=long ;; -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ac_init_help=recursive ;; -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ac_init_help=short ;; -host | --host | --hos | --ho) ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) ac_prev=htmldir ;; -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ | --ht=*) htmldir=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; -localedir | --localedir | --localedi | --localed | --locale) ac_prev=localedir ;; -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) localedir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst | --locals) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir=$ac_optarg ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c | -n) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) ac_prev=pdfdir ;; -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) pdfdir=$ac_optarg ;; -psdir | --psdir | --psdi | --psd | --ps) ac_prev=psdir ;; -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) psdir=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers | -V) ac_init_version=: ;; -with-* | --with-*) ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=\$ac_optarg ;; -without-* | --without-*) ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=no ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; -*) as_fn_error $? "unrecognized option: \`$ac_option' Try \`$0 --help' for more information" ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. case $ac_envvar in #( '' | [0-9]* | *[!_$as_cr_alnum]* ) as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; esac eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" ;; esac done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` as_fn_error $? "missing argument to $ac_option" fi if test -n "$ac_unrecognized_opts"; then case $enable_option_checking in no) ;; fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac fi # Check all directory arguments for consistency. for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ libdir localedir mandir do eval ac_val=\$$ac_var # Remove trailing slashes. case $ac_val in */ ) ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` eval $ac_var=\$ac_val;; esac # Be sure to have absolute directory names. case $ac_val in [\\/$]* | ?:[\\/]* ) continue;; NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" done # There might be people who depend on the old broken behavior: `$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias host=$host_alias target=$target_alias # FIXME: To remove some day. if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe $as_echo "$as_me: WARNING: if you wanted to set the --build type, don't use --host. If a cross compiler is detected then cross compile mode will be used" >&2 elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi fi ac_tool_prefix= test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null ac_pwd=`pwd` && test -n "$ac_pwd" && ac_ls_di=`ls -di .` && ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || as_fn_error $? "working directory cannot be determined" test "X$ac_ls_di" = "X$ac_pwd_ls_di" || as_fn_error $? "pwd does not report name of working directory" # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then the parent directory. ac_confdir=`$as_dirname -- "$as_myself" || $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_myself" : 'X\(//\)[^/]' \| \ X"$as_myself" : 'X\(//\)$' \| \ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_myself" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` srcdir=$ac_confdir if test ! -r "$srcdir/$ac_unique_file"; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" fi ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ac_abs_confdir=`( cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" pwd)` # When building in place, set srcdir=. if test "$ac_abs_confdir" = "$ac_pwd"; then srcdir=. fi # Remove unnecessary trailing slashes from srcdir. # Double slashes in file names in object file debugging info # mess up M-x gdb in Emacs. case $srcdir in */) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; esac for ac_var in $ac_precious_vars; do eval ac_env_${ac_var}_set=\${${ac_var}+set} eval ac_env_${ac_var}_value=\$${ac_var} eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} eval ac_cv_env_${ac_var}_value=\$${ac_var} done # # Report the --help message. # if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF \`configure' configures gobby 0.4.94 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print \`checking ...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for \`--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, \`make install' will install all the files in \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify an installation prefix other than \`$ac_default_prefix' using \`--prefix', for instance \`--prefix=\$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] --datadir=DIR read-only architecture-independent data [DATAROOTDIR] --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] --docdir=DIR documentation root [DATAROOTDIR/doc/gobby] --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] --psdir=DIR ps documentation [DOCDIR] _ACEOF cat <<\_ACEOF Program names: --program-prefix=PREFIX prepend PREFIX to installed program names --program-suffix=SUFFIX append SUFFIX to installed program names --program-transform-name=PROGRAM run sed PROGRAM on installed program names System types: --build=BUILD configure for building on BUILD [guessed] --host=HOST cross-compile to build programs to run on HOST [BUILD] _ACEOF fi if test -n "$ac_init_help"; then case $ac_init_help in short | recursive ) echo "Configuration of gobby 0.4.94:";; esac cat <<\_ACEOF Optional Features: --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --enable-silent-rules less verbose build output (undo: `make V=1') --disable-silent-rules verbose build output (undo: `make V=0') --enable-maintainer-mode enable make rules and dependencies not useful (and sometimes confusing) to the casual installer --disable-dependency-tracking speeds up one-time build --enable-dependency-tracking do not reject slow dependency extractors --disable-nls do not use Native Language Support --disable-scrollkeeper do not make updates to the scrollkeeper database Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-gtk3 Builds gobby against GTK+ 3 instead of GTK+ 2[[default=no]] --with-unique Enables support for single-instance [[default=auto]] --with-help-dir=DIR path to help docs --with-omf-dir=DIR path to OMF files --with-help-formats=FORMATS list of formats Some influential environment variables: CXX C++ compiler command CXXFLAGS C++ compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory LIBS libraries to pass to the linker, e.g. -l CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory CC C compiler command CFLAGS C compiler flags CPP C preprocessor PKG_CONFIG path to pkg-config utility PKG_CONFIG_PATH directories to add to pkg-config's search path PKG_CONFIG_LIBDIR path overriding pkg-config's built-in search path gobby_CFLAGS C compiler flags for gobby, overriding pkg-config gobby_LIBS linker flags for gobby, overriding pkg-config infinote_CFLAGS C compiler flags for infinote, overriding pkg-config infinote_LIBS linker flags for infinote, overriding pkg-config unique_CFLAGS C compiler flags for unique, overriding pkg-config unique_LIBS linker flags for unique, overriding pkg-config Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. Report bugs to . _ACEOF ac_status=$? fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d "$ac_dir" || { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || continue ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" || { ac_status=$?; continue; } # Check for guested configure. if test -f "$ac_srcdir/configure.gnu"; then echo && $SHELL "$ac_srcdir/configure.gnu" --help=recursive elif test -f "$ac_srcdir/configure"; then echo && $SHELL "$ac_srcdir/configure" --help=recursive else $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF gobby configure 0.4.94 generated by GNU Autoconf 2.68 Copyright (C) 2010 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF exit fi ## ------------------------ ## ## Autoconf initialization. ## ## ------------------------ ## # ac_fn_cxx_try_compile LINENO # ---------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. ac_fn_cxx_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_cxx_try_compile # ac_fn_c_try_compile LINENO # -------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_compile # ac_fn_c_try_cpp LINENO # ---------------------- # Try to preprocess conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_cpp () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } > conftest.i && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_cpp # ac_fn_c_try_run LINENO # ---------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. Assumes # that executables *can* be run. ac_fn_c_try_run () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then : ac_retval=0 else $as_echo "$as_me: program exited with status $ac_status" >&5 $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=$ac_status fi rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_run # ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES # ------------------------------------------------------- # Tests whether HEADER exists, giving a warning if it cannot be compiled using # the include files in INCLUDES and setting the cache variable VAR # accordingly. ac_fn_c_check_header_mongrel () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if eval \${$3+:} false; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } else # Is the header compilable? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 $as_echo_n "checking $2 usability... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_header_compiler=yes else ac_header_compiler=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 $as_echo "$ac_header_compiler" >&6; } # Is the header present? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 $as_echo_n "checking $2 presence... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include <$2> _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : ac_header_preproc=yes else ac_header_preproc=no fi rm -f conftest.err conftest.i conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 $as_echo "$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( yes:no: ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 $as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ;; no:yes:* ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 $as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 $as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 $as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 $as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ( $as_echo "## ---------------------------- ## ## Report this to crew@0x539.de ## ## ---------------------------- ##" ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else eval "$3=\$ac_header_compiler" fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_header_mongrel # ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES # ------------------------------------------------------- # Tests whether HEADER exists and can be compiled using the include files in # INCLUDES, setting the cache variable VAR accordingly. ac_fn_c_check_header_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_header_compile # ac_fn_c_try_link LINENO # ----------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest$ac_exeext if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would # interfere with the next link command; also delete a directory that is # left behind by Apple's compiler. We do this before executing the actions. rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_link # ac_fn_c_check_func LINENO FUNC VAR # ---------------------------------- # Tests whether FUNC exists, setting the cache variable VAR accordingly ac_fn_c_check_func () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Define $2 to an innocuous variant, in case declares $2. For example, HP-UX 11i declares gettimeofday. */ #define $2 innocuous_$2 /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $2 (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef $2 /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char $2 (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined __stub_$2 || defined __stub___$2 choke me #endif int main () { return $2 (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_func cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by gobby $as_me 0.4.94, which was generated by GNU Autoconf 2.68. Invocation command line was $ $0 $@ _ACEOF exec 5>>config.log { cat <<_ASUNAME ## --------- ## ## Platform. ## ## --------- ## hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` /usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` _ASUNAME as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. $as_echo "PATH: $as_dir" done IFS=$as_save_IFS } >&5 cat >&5 <<_ACEOF ## ----------- ## ## Core tests. ## ## ----------- ## _ACEOF # Keep a trace of the command line. # Strip out --no-create and --no-recursion so they do not pile up. # Strip out --silent because we don't want to record it for future runs. # Also quote any args containing shell meta-characters. # Make two passes to allow for proper duplicate-argument suppression. ac_configure_args= ac_configure_args0= ac_configure_args1= ac_must_keep_next=false for ac_pass in 1 2 do for ac_arg do case $ac_arg in -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; 2) as_fn_append ac_configure_args1 " '$ac_arg'" if test $ac_must_keep_next = true; then ac_must_keep_next=false # Got value, back to normal. else case $ac_arg in *=* | --config-cache | -C | -disable-* | --disable-* \ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ | -with-* | --with-* | -without-* | --without-* | --x) case "$ac_configure_args0 " in "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; esac ;; -* ) ac_must_keep_next=true ;; esac fi as_fn_append ac_configure_args " '$ac_arg'" ;; esac done done { ac_configure_args0=; unset ac_configure_args0;} { ac_configure_args1=; unset ac_configure_args1;} # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. # WARNING: Use '\'' to represent an apostrophe within the trap. # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? # Save into config.log some information that might help in debugging. { echo $as_echo "## ---------------- ## ## Cache variables. ## ## ---------------- ##" echo # The following way of writing the cache mishandles newlines in values, ( for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( *${as_nl}ac_space=\ *) sed -n \ "s/'\''/'\''\\\\'\'''\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" ;; #( *) sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) echo $as_echo "## ----------------- ## ## Output variables. ## ## ----------------- ##" echo for ac_var in $ac_subst_vars do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then $as_echo "## ------------------- ## ## File substitutions. ## ## ------------------- ##" echo for ac_var in $ac_subst_files do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then $as_echo "## ----------- ## ## confdefs.h. ## ## ----------- ##" echo cat confdefs.h echo fi test "$ac_signal" != 0 && $as_echo "$as_me: caught signal $ac_signal" $as_echo "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h $as_echo "/* confdefs.h */" > confdefs.h # Predefined preprocessor variables. cat >>confdefs.h <<_ACEOF #define PACKAGE_NAME "$PACKAGE_NAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_TARNAME "$PACKAGE_TARNAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_VERSION "$PACKAGE_VERSION" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_STRING "$PACKAGE_STRING" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_URL "$PACKAGE_URL" _ACEOF # Let the site file select an alternate cache file if it wants to. # Prefer an explicitly selected file to automatically selected ones. ac_site_file1=NONE ac_site_file2=NONE if test -n "$CONFIG_SITE"; then # We do not want a PATH search for config.site. case $CONFIG_SITE in #(( -*) ac_site_file1=./$CONFIG_SITE;; */*) ac_site_file1=$CONFIG_SITE;; *) ac_site_file1=./$CONFIG_SITE;; esac elif test "x$prefix" != xNONE; then ac_site_file1=$prefix/share/config.site ac_site_file2=$prefix/etc/config.site else ac_site_file1=$ac_default_prefix/share/config.site ac_site_file2=$ac_default_prefix/etc/config.site fi for ac_site_file in "$ac_site_file1" "$ac_site_file2" do test "x$ac_site_file" = xNONE && continue if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 $as_echo "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" \ || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "failed to load site script $ac_site_file See \`config.log' for more details" "$LINENO" 5; } fi done if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special files # actually), so we avoid doing that. DJGPP emulates it as a regular file. if test /dev/null != "$cache_file" && test -f "$cache_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 $as_echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 $as_echo "$as_me: creating cache $cache_file" >&6;} >$cache_file fi # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in $ac_precious_vars; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set eval ac_old_val=\$ac_cv_env_${ac_var}_value eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then # differences in whitespace do not lead to failure. ac_old_val_w=`echo x $ac_old_val` ac_new_val_w=`echo x $ac_new_val` if test "$ac_old_val_w" != "$ac_new_val_w"; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 $as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} ac_cache_corrupted=: else { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 $as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} eval $ac_var=\$ac_old_val fi { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 $as_echo "$as_me: former value: \`$ac_old_val'" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 $as_echo "$as_me: current value: \`$ac_new_val'" >&2;} fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. *) as_fn_append ac_configure_args " '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 $as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 fi ## -------------------- ## ## Main body of script. ## ## -------------------- ## ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu am__api_version='1.11' ac_aux_dir= for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do if test -f "$ac_dir/install-sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install-sh -c" break elif test -f "$ac_dir/install.sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install.sh -c" break elif test -f "$ac_dir/shtool"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/shtool install -c" break fi done if test -z "$ac_aux_dir"; then as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5 fi # These three variables are undocumented and unsupported, # and are intended to be withdrawn in a future Autoconf release. # They can cause serious problems if a builder's source tree is in a directory # whose full name contains unusual characters. ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install # SunOS /usr/etc/install # IRIX /sbin/install # AIX /bin/install # AmigaOS /C/install, which installs bootblocks on floppy discs # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. # Reject install programs that cannot install multiple files. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 $as_echo_n "checking for a BSD-compatible install... " >&6; } if test -z "$INSTALL"; then if ${ac_cv_path_install+:} false; then : $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. # Account for people who put trailing slashes in PATH elements. case $as_dir/ in #(( ./ | .// | /[cC]/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. # Don't use installbsd from OSF since it installs stuff as root # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then if test $ac_prog = install && grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else rm -rf conftest.one conftest.two conftest.dir echo one > conftest.one echo two > conftest.two mkdir conftest.dir if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && test -s conftest.one && test -s conftest.two && test -s conftest.dir/conftest.one && test -s conftest.dir/conftest.two then ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" break 3 fi fi fi done done ;; esac done IFS=$as_save_IFS rm -rf conftest.one conftest.two conftest.dir fi if test "${ac_cv_path_install+set}" = set; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. Don't cache a # value for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. INSTALL=$ac_install_sh fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 $as_echo "$INSTALL" >&6; } # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 $as_echo_n "checking whether build environment is sane... " >&6; } # Just in case sleep 1 echo timestamp > conftest.file # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' ' case `pwd` in *[\\\"\#\$\&\'\`$am_lf]*) as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;; esac case $srcdir in *[\\\"\#\$\&\'\`$am_lf\ \ ]*) as_fn_error $? "unsafe srcdir value: \`$srcdir'" "$LINENO" 5;; esac # Do `set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` if test "$*" = "X"; then # -L didn't work. set X `ls -t "$srcdir/configure" conftest.file` fi rm -f conftest.file if test "$*" != "X $srcdir/configure conftest.file" \ && test "$*" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". as_fn_error $? "ls -t appears to fail. Make sure there is not a broken alias in your environment" "$LINENO" 5 fi test "$2" = conftest.file ) then # Ok. : else as_fn_error $? "newly created file is older than distributed files! Check your system clock" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } test "$program_prefix" != NONE && program_transform_name="s&^&$program_prefix&;$program_transform_name" # Use a double $ so make ignores it. test "$program_suffix" != NONE && program_transform_name="s&\$&$program_suffix&;$program_transform_name" # Double any \ or $. # By default was `s,x,x', remove it if useless. ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` # expand $ac_aux_dir to an absolute path am_aux_dir=`cd $ac_aux_dir && pwd` if test x"${MISSING+set}" != xset; then case $am_aux_dir in *\ * | *\ *) MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; *) MISSING="\${SHELL} $am_aux_dir/missing" ;; esac fi # Use eval to expand $SHELL if eval "$MISSING --run true"; then am_missing_run="$MISSING --run " else am_missing_run= { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`missing' script is too old or missing" >&5 $as_echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} fi if test x"${install_sh}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; *) install_sh="\${SHELL} $am_aux_dir/install-sh" esac fi # Installed binaries are usually stripped using `strip' when the user # run `make install-strip'. However `strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the `STRIP' environment variable to overrule this program. if test "$cross_compiling" != no; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 $as_echo "$STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_STRIP="strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 $as_echo "$ac_ct_STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_STRIP" = x; then STRIP=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP fi else STRIP="$ac_cv_prog_STRIP" fi fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5 $as_echo_n "checking for a thread-safe mkdir -p... " >&6; } if test -z "$MKDIR_P"; then if ${ac_cv_path_mkdir+:} false; then : $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in mkdir gmkdir; do for ac_exec_ext in '' $ac_executable_extensions; do { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; } || continue case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( 'mkdir (GNU coreutils) '* | \ 'mkdir (coreutils) '* | \ 'mkdir (fileutils) '4.1*) ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext break 3;; esac done done done IFS=$as_save_IFS fi test -d ./--version && rmdir ./--version if test "${ac_cv_path_mkdir+set}" = set; then MKDIR_P="$ac_cv_path_mkdir -p" else # As a last resort, use the slow shell script. Don't cache a # value for MKDIR_P within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. MKDIR_P="$ac_install_sh -d" fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 $as_echo "$MKDIR_P" >&6; } mkdir_p="$MKDIR_P" case $mkdir_p in [\\/$]* | ?:[\\/]*) ;; */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; esac for ac_prog in gawk mawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_AWK+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$AWK"; then ac_cv_prog_AWK="$AWK" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_AWK="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 $as_echo "$AWK" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$AWK" && break done { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 $as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } set x ${MAKE-make} ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : $as_echo_n "(cached) " >&6 else cat >conftest.make <<\_ACEOF SHELL = /bin/sh all: @echo '@@@%%%=$(MAKE)=@@@%%%' _ACEOF # GNU make sometimes prints "make[1]: Entering ...", which would confuse us. case `${MAKE-make} -f conftest.make 2>/dev/null` in *@@@%%%=?*=@@@%%%*) eval ac_cv_prog_make_${ac_make}_set=yes;; *) eval ac_cv_prog_make_${ac_make}_set=no;; esac rm -f conftest.make fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } SET_MAKE= else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } SET_MAKE="MAKE=${MAKE-make}" fi rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." am__isrc=' -I$(srcdir)' # test to see if srcdir already configured if test -f $srcdir/config.status; then as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 fi fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi # Define the identity of the package. PACKAGE='gobby' VERSION='0.4.94' cat >>confdefs.h <<_ACEOF #define PACKAGE "$PACKAGE" _ACEOF cat >>confdefs.h <<_ACEOF #define VERSION "$VERSION" _ACEOF # Some tools Automake needs. ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} # We need awk for the "check" target. The system "awk" is bad on # some platforms. # Always define AMTAR for backward compatibility. AMTAR=${AMTAR-"${am_missing_run}tar"} am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -' # Check whether --enable-silent-rules was given. if test "${enable_silent_rules+set}" = set; then : enableval=$enable_silent_rules; fi case $enable_silent_rules in yes) AM_DEFAULT_VERBOSITY=0;; no) AM_DEFAULT_VERBOSITY=1;; *) AM_DEFAULT_VERBOSITY=1;; esac AM_BACKSLASH='\' { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&5 $as_echo_n "checking whether to enable maintainer-specific portions of Makefiles... " >&6; } # Check whether --enable-maintainer-mode was given. if test "${enable_maintainer_mode+set}" = set; then : enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval else USE_MAINTAINER_MODE=no fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_MAINTAINER_MODE" >&5 $as_echo "$USE_MAINTAINER_MODE" >&6; } if test $USE_MAINTAINER_MODE = yes; then MAINTAINER_MODE_TRUE= MAINTAINER_MODE_FALSE='#' else MAINTAINER_MODE_TRUE='#' MAINTAINER_MODE_FALSE= fi MAINT=$MAINTAINER_MODE_TRUE ac_config_headers="$ac_config_headers code/features.hpp" # Extract host information. # Make sure we can run config.sub. $SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 $as_echo_n "checking build system type... " >&6; } if ${ac_cv_build+:} false; then : $as_echo_n "(cached) " >&6 else ac_build_alias=$build_alias test "x$ac_build_alias" = x && ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` test "x$ac_build_alias" = x && as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 $as_echo "$ac_cv_build" >&6; } case $ac_cv_build in *-*-*) ;; *) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; esac build=$ac_cv_build ac_save_IFS=$IFS; IFS='-' set x $ac_cv_build shift build_cpu=$1 build_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: build_os=$* IFS=$ac_save_IFS case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 $as_echo_n "checking host system type... " >&6; } if ${ac_cv_host+:} false; then : $as_echo_n "(cached) " >&6 else if test "x$host_alias" = x; then ac_cv_host=$ac_cv_build else ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 $as_echo "$ac_cv_host" >&6; } case $ac_cv_host in *-*-*) ;; *) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; esac host=$ac_cv_host ac_save_IFS=$IFS; IFS='-' set x $ac_cv_host shift host_cpu=$1 host_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: host_os=$* IFS=$ac_save_IFS case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac # Checks for programs. ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu if test -z "$CXX"; then if test -n "$CCC"; then CXX=$CCC else if test -n "$ac_tool_prefix"; then for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CXX+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CXX"; then ac_cv_prog_CXX="$CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CXX=$ac_cv_prog_CXX if test -n "$CXX"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 $as_echo "$CXX" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CXX" && break done fi if test -z "$CXX"; then ac_ct_CXX=$CXX for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CXX+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CXX"; then ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_CXX="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CXX=$ac_cv_prog_ac_ct_CXX if test -n "$ac_ct_CXX"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5 $as_echo "$ac_ct_CXX" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CXX" && break done if test "x$ac_ct_CXX" = x; then CXX="g++" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CXX=$ac_ct_CXX fi fi fi fi # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C++ compiler works" >&5 $as_echo_n "checking whether the C++ compiler works... " >&6; } ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` # The possible output files: ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" ac_rmfiles= for ac_file in $ac_files do case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; * ) ac_rmfiles="$ac_rmfiles $ac_file";; esac done rm -f $ac_rmfiles if { { ac_try="$ac_link_default" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link_default") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. # So ignore a value of `no', otherwise this would lead to `EXEEXT = no' # in a Makefile. We should not override ac_cv_exeext if it was cached, # so that the user can short-circuit this test for compilers unknown to # Autoconf. for ac_file in $ac_files '' do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; then :; else ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi # We set ac_cv_exeext here because the later test for it is not # safe: cross compilers may not add the suffix if given an `-o' # argument, so we may need to know it at that point already. # Even if this section looks crufty: it has the advantage of # actually working. break;; * ) break;; esac done test "$ac_cv_exeext" = no && ac_cv_exeext= else ac_file='' fi if test -z "$ac_file"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "C++ compiler cannot create executables See \`config.log' for more details" "$LINENO" 5; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler default output file name" >&5 $as_echo_n "checking for C++ compiler default output file name... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 $as_echo "$ac_file" >&6; } ac_exeext=$ac_cv_exeext rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 $as_echo_n "checking for suffix of executables... " >&6; } if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with # `rm'. for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` break;; * ) break;; esac done else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of executables: cannot compile and link See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest conftest$ac_cv_exeext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 $as_echo "$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { FILE *f = fopen ("conftest.out", "w"); return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF ac_clean_files="$ac_clean_files conftest.out" # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 $as_echo_n "checking whether we are cross compiling... " >&6; } if test "$cross_compiling" != yes; then { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if { ac_try='./conftest$ac_cv_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot run C++ compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details" "$LINENO" 5; } fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 $as_echo "$cross_compiling" >&6; } rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 $as_echo_n "checking for suffix of object files... " >&6; } if ${ac_cv_objext+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.o conftest.obj if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : for ac_file in conftest.o conftest.obj conftest.*; do test -f "$ac_file" || continue; case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of object files: cannot compile See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 $as_echo "$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5 $as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; } if ${ac_cv_cxx_compiler_gnu+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_compiler_gnu=yes else ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_cxx_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5 $as_echo "$ac_cv_cxx_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GXX=yes else GXX= fi ac_test_CXXFLAGS=${CXXFLAGS+set} ac_save_CXXFLAGS=$CXXFLAGS { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5 $as_echo_n "checking whether $CXX accepts -g... " >&6; } if ${ac_cv_prog_cxx_g+:} false; then : $as_echo_n "(cached) " >&6 else ac_save_cxx_werror_flag=$ac_cxx_werror_flag ac_cxx_werror_flag=yes ac_cv_prog_cxx_g=no CXXFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_prog_cxx_g=yes else CXXFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : else ac_cxx_werror_flag=$ac_save_cxx_werror_flag CXXFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_prog_cxx_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cxx_werror_flag=$ac_save_cxx_werror_flag fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5 $as_echo "$ac_cv_prog_cxx_g" >&6; } if test "$ac_test_CXXFLAGS" = set; then CXXFLAGS=$ac_save_CXXFLAGS elif test $ac_cv_prog_cxx_g = yes; then if test "$GXX" = yes; then CXXFLAGS="-g -O2" else CXXFLAGS="-g" fi else if test "$GXX" = yes; then CXXFLAGS="-O2" else CXXFLAGS= fi fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu DEPDIR="${am__leading_dot}deps" ac_config_commands="$ac_config_commands depfiles" am_make=${MAKE-make} cat > confinc << 'END' am__doit: @echo this is the am__doit target .PHONY: am__doit END # If we don't find an include directive, just comment out the code. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5 $as_echo_n "checking for style of include used by $am_make... " >&6; } am__include="#" am__quote= _am_result=none # First try GNU make style include. echo "include confinc" > confmf # Ignore all kinds of additional output from `make'. case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=include am__quote= _am_result=GNU ;; esac # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=.include am__quote="\"" _am_result=BSD ;; esac fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5 $as_echo "$_am_result" >&6; } rm -f confinc confmf # Check whether --enable-dependency-tracking was given. if test "${enable_dependency_tracking+set}" = set; then : enableval=$enable_dependency_tracking; fi if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' fi if test "x$enable_dependency_tracking" != xno; then AMDEP_TRUE= AMDEP_FALSE='#' else AMDEP_TRUE='#' AMDEP_FALSE= fi depcc="$CXX" am_compiler_list= { $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 $as_echo_n "checking dependency style of $depcc... " >&6; } if ${am_cv_CXX_dependencies_compiler_type+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named `D' -- because `-MD' means `put the output # in D'. mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CXX_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi am__universal=false case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with # Solaris 8's {/usr,}/bin/sh. touch sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with `-c' and `-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle `-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # after this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvisualcpp | msvcmsys) # This compiler won't grok `-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CXX_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CXX_dependencies_compiler_type=none fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CXX_dependencies_compiler_type" >&5 $as_echo "$am_cv_CXX_dependencies_compiler_type" >&6; } CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then am__fastdepCXX_TRUE= am__fastdepCXX_FALSE='#' else am__fastdepCXX_TRUE='#' am__fastdepCXX_FALSE= fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="${ac_tool_prefix}gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_CC="gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="${ac_tool_prefix}cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $# != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl.exe do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl.exe do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_CC="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CC" && break done if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi fi fi test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "no acceptable C compiler found in \$PATH See \`config.log' for more details" "$LINENO" 5; } # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 $as_echo_n "checking whether we are using the GNU C compiler... " >&6; } if ${ac_cv_c_compiler_gnu+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_compiler_gnu=yes else ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 $as_echo "$ac_cv_c_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GCC=yes else GCC= fi ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 $as_echo_n "checking whether $CC accepts -g... " >&6; } if ${ac_cv_prog_cc_g+:} false; then : $as_echo_n "(cached) " >&6 else ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes else CFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : else ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 $as_echo "$ac_cv_prog_cc_g" >&6; } if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 $as_echo_n "checking for $CC option to accept ISO C89... " >&6; } if ${ac_cv_prog_cc_c89+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_prog_cc_c89=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #include /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ struct buf { int x; }; FILE * (*rcsopen) (struct buf *, struct stat *, int); static char *e (p, i) char **p; int i; { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not '\xHH' hex character constants. These don't provoke an error unfortunately, instead are silently treated as 'x'. The following induces an error, until -std is added to get proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an array size at least. It's necessary to write '\x00'==0 to get something that's true only with -std. */ int osf4_cc_array ['\x00' == 0 ? 1 : -1]; /* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters inside strings and character constants. */ #define FOO(x) 'x' int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); int argc; char **argv; int main () { return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; ; return 0; } _ACEOF for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_c89=$ac_arg fi rm -f core conftest.err conftest.$ac_objext test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi # AC_CACHE_VAL case "x$ac_cv_prog_cc_c89" in x) { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 $as_echo "none needed" >&6; } ;; xno) { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 $as_echo "unsupported" >&6; } ;; *) CC="$CC $ac_cv_prog_cc_c89" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 $as_echo "$ac_cv_prog_cc_c89" >&6; } ;; esac if test "x$ac_cv_prog_cc_c89" != xno; then : fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu depcc="$CC" am_compiler_list= { $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 $as_echo_n "checking dependency style of $depcc... " >&6; } if ${am_cv_CC_dependencies_compiler_type+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named `D' -- because `-MD' means `put the output # in D'. mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CC_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi am__universal=false case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with # Solaris 8's {/usr,}/bin/sh. touch sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with `-c' and `-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle `-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # after this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvisualcpp | msvcmsys) # This compiler won't grok `-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CC_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CC_dependencies_compiler_type=none fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 $as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then am__fastdepCC_TRUE= am__fastdepCC_FALSE='#' else am__fastdepCC_TRUE='#' am__fastdepCC_FALSE= fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 $as_echo_n "checking how to run the C preprocessor... " >&6; } # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= fi if test -z "$CPP"; then if ${ac_cv_prog_CPP+:} false; then : $as_echo_n "(cached) " >&6 else # Double quotes because CPP needs to be expanded for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" do ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : break fi done ac_cv_prog_CPP=$CPP fi CPP=$ac_cv_prog_CPP else ac_cv_prog_CPP=$CPP fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 $as_echo "$CPP" >&6; } ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details" "$LINENO" 5; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 $as_echo_n "checking whether ln -s works... " >&6; } LN_S=$as_ln_s if test "$LN_S" = "ln -s"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 $as_echo "no, using $LN_S" >&6; } fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 $as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } set x ${MAKE-make} ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : $as_echo_n "(cached) " >&6 else cat >conftest.make <<\_ACEOF SHELL = /bin/sh all: @echo '@@@%%%=$(MAKE)=@@@%%%' _ACEOF # GNU make sometimes prints "make[1]: Entering ...", which would confuse us. case `${MAKE-make} -f conftest.make 2>/dev/null` in *@@@%%%=?*=@@@%%%*) eval ac_cv_prog_make_${ac_make}_set=yes;; *) eval ac_cv_prog_make_${ac_make}_set=no;; esac rm -f conftest.make fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } SET_MAKE= else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } SET_MAKE="MAKE=${MAKE-make}" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_RANLIB+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$RANLIB"; then ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi RANLIB=$ac_cv_prog_RANLIB if test -n "$RANLIB"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 $as_echo "$RANLIB" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_RANLIB"; then ac_ct_RANLIB=$RANLIB # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_RANLIB+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_RANLIB"; then ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_RANLIB="ranlib" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB if test -n "$ac_ct_RANLIB"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 $as_echo "$ac_ct_RANLIB" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_RANLIB" = x; then RANLIB=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac RANLIB=$ac_ct_RANLIB fi else RANLIB="$ac_cv_prog_RANLIB" fi if test "x$CC" != xcc; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC and cc understand -c and -o together" >&5 $as_echo_n "checking whether $CC and cc understand -c and -o together... " >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether cc understands -c and -o together" >&5 $as_echo_n "checking whether cc understands -c and -o together... " >&6; } fi set dummy $CC; ac_cc=`$as_echo "$2" | sed 's/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/'` if eval \${ac_cv_prog_cc_${ac_cc}_c_o+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF # Make sure it works both with $CC and with simple cc. # We do the test twice because some compilers refuse to overwrite an # existing .o file with -o, though they will create one. ac_try='$CC -c conftest.$ac_ext -o conftest2.$ac_objext >&5' rm -f conftest2.* if { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -f conftest2.$ac_objext && { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then eval ac_cv_prog_cc_${ac_cc}_c_o=yes if test "x$CC" != xcc; then # Test first that cc exists at all. if { ac_try='cc -c conftest.$ac_ext >&5' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then ac_try='cc -c conftest.$ac_ext -o conftest2.$ac_objext >&5' rm -f conftest2.* if { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -f conftest2.$ac_objext && { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then # cc works too. : else # cc exists but doesn't like -o. eval ac_cv_prog_cc_${ac_cc}_c_o=no fi fi fi else eval ac_cv_prog_cc_${ac_cc}_c_o=no fi rm -f core conftest* fi if eval test \$ac_cv_prog_cc_${ac_cc}_c_o = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } $as_echo "#define NO_MINUS_C_MINUS_O 1" >>confdefs.h fi # FIXME: we rely on the cache variable name because # there is no other way. set dummy $CC am_cc=`echo $2 | sed 's/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/'` eval am_t=\$ac_cv_prog_cc_${am_cc}_c_o if test "$am_t" != yes; then # Losing compiler, so override with the script. # FIXME: It is wrong to rewrite CC. # But if we don't then we get into trouble of one sort or another. # A longer-term fix would be to have automake use am__CC in this case, # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" CC="$am_aux_dir/compile $CC" fi cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs, see configure's option --config-cache. # It is not useful on other systems. If it contains results you don't # want to keep, you may remove or edit it. # # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # # `ac_cv_env_foo' variables (set or unset) will be overridden when # loading this file, other *unset* `ac_cv_foo' will be assigned the # following values. _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, we kill variables containing newlines. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. ( for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) # `set' does not quote correctly, so add quotes: double-quote # substitution turns \\\\ into \\, and sed turns \\ into \. sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; #( *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) | sed ' /^ac_cv_env_/b end t clear :clear s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ t end s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then if test "x$cache_file" != "x/dev/null"; then { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 $as_echo "$as_me: updating cache $cache_file" >&6;} if test ! -f "$cache_file" || test -h "$cache_file"; then cat confcache >"$cache_file" else case $cache_file in #( */* | ?:*) mv -f confcache "$cache_file"$$ && mv -f "$cache_file"$$ "$cache_file" ;; #( *) mv -f confcache "$cache_file" ;; esac fi fi else { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 $as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache ################################### # Check for Win32 ################################### { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable WIN32 specific flags" >&5 $as_echo_n "checking whether to enable WIN32 specific flags... " >&6; } case "$host_os" in *mingw*) win32=true { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}windres", so it can be a program name with args. set dummy ${ac_tool_prefix}windres; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_WINDRES+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$WINDRES"; then ac_cv_prog_WINDRES="$WINDRES" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_WINDRES="${ac_tool_prefix}windres" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi WINDRES=$ac_cv_prog_WINDRES if test -n "$WINDRES"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $WINDRES" >&5 $as_echo "$WINDRES" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_WINDRES"; then ac_ct_WINDRES=$WINDRES # Extract the first word of "windres", so it can be a program name with args. set dummy windres; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_WINDRES+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_WINDRES"; then ac_cv_prog_ac_ct_WINDRES="$ac_ct_WINDRES" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_WINDRES="windres" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_WINDRES=$ac_cv_prog_ac_ct_WINDRES if test -n "$ac_ct_WINDRES"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_WINDRES" >&5 $as_echo "$ac_ct_WINDRES" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_WINDRES" = x; then WINDRES="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac WINDRES=$ac_ct_WINDRES fi else WINDRES="$ac_cv_prog_WINDRES" fi ;; *) win32=false { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } ;; esac if test x$win32 = xtrue; then WIN32_TRUE= WIN32_FALSE='#' else WIN32_TRUE='#' WIN32_FALSE= fi ################################### # Check for GTK+ 3 ################################### # Check whether --with-gtk3 was given. if test "${with_gtk3+set}" = set; then : withval=$with_gtk3; with_gtk3=$withval else with_gtk3=no fi if test "x$with_gtk3" = "xyes"; then # TODO: Increase to 2.99.2 once it's out gtk_requirement="gtkmm-3.0 >= 2.99.1 gtksourceview-3.0 >= 2.91.0" gtk_version=3 else gtk_requirement="gtkmm-2.4 >= 2.12.0 gtksourceview-2.0 >= 2.4" gtk_version=2 fi required_libs="libxml++-2.6 glibmm-2.4 >= 2.18.0 giomm-2.4 >= 2.18.0 gthread-2.0 libgsasl >= 0.2.21 $gtk_requirement" ################################### # Check for Mac OS X ################################### # Check if we are running on OS X, for special link handling. if test "x$build_vendor" = "xapple" ; then $as_echo "#define PLATFORM_OSX 1" >>confdefs.h # Check whether we are running the native quartz backend if test "$gtk_version" == "2"; then target=`pkg-config --variable=target gtk+-2.0` else target=`pkg-config --variable=targets gtk+-3.0` fi # If so use ige-mac-integration if test "$target" = "quartz" ; then $as_echo "#define PLATFORM_OSX_NATIVE 1" >>confdefs.h required_libs="$required_libs ige-mac-integration" fi fi cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs, see configure's option --config-cache. # It is not useful on other systems. If it contains results you don't # want to keep, you may remove or edit it. # # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # # `ac_cv_env_foo' variables (set or unset) will be overridden when # loading this file, other *unset* `ac_cv_foo' will be assigned the # following values. _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, we kill variables containing newlines. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. ( for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) # `set' does not quote correctly, so add quotes: double-quote # substitution turns \\\\ into \\, and sed turns \\ into \. sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; #( *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) | sed ' /^ac_cv_env_/b end t clear :clear s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ t end s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then if test "x$cache_file" != "x/dev/null"; then { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 $as_echo "$as_me: updating cache $cache_file" >&6;} if test ! -f "$cache_file" || test -h "$cache_file"; then cat confcache >"$cache_file" else case $cache_file in #( */* | ?:*) mv -f confcache "$cache_file"$$ && mv -f "$cache_file"$$ "$cache_file" ;; #( *) mv -f confcache "$cache_file" ;; esac fi fi else { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 $as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache ################################### # Check for libraries. ################################### if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_PKG_CONFIG+:} false; then : $as_echo_n "(cached) " >&6 else case $PKG_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi PKG_CONFIG=$ac_cv_path_PKG_CONFIG if test -n "$PKG_CONFIG"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 $as_echo "$PKG_CONFIG" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_path_PKG_CONFIG"; then ac_pt_PKG_CONFIG=$PKG_CONFIG # Extract the first word of "pkg-config", so it can be a program name with args. set dummy pkg-config; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_ac_pt_PKG_CONFIG+:} false; then : $as_echo_n "(cached) " >&6 else case $ac_pt_PKG_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG if test -n "$ac_pt_PKG_CONFIG"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5 $as_echo "$ac_pt_PKG_CONFIG" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_pt_PKG_CONFIG" = x; then PKG_CONFIG="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac PKG_CONFIG=$ac_pt_PKG_CONFIG fi else PKG_CONFIG="$ac_cv_path_PKG_CONFIG" fi fi if test -n "$PKG_CONFIG"; then _pkg_min_version=0.9.0 { $as_echo "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5 $as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; } if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } PKG_CONFIG="" fi fi pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gobby" >&5 $as_echo_n "checking for gobby... " >&6; } if test -n "$gobby_CFLAGS"; then pkg_cv_gobby_CFLAGS="$gobby_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$required_libs\""; } >&5 ($PKG_CONFIG --exists --print-errors "$required_libs") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_gobby_CFLAGS=`$PKG_CONFIG --cflags "$required_libs" 2>/dev/null` else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$gobby_LIBS"; then pkg_cv_gobby_LIBS="$gobby_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$required_libs\""; } >&5 ($PKG_CONFIG --exists --print-errors "$required_libs") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_gobby_LIBS=`$PKG_CONFIG --libs "$required_libs" 2>/dev/null` else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then gobby_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "$required_libs" 2>&1` else gobby_PKG_ERRORS=`$PKG_CONFIG --print-errors "$required_libs" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$gobby_PKG_ERRORS" >&5 as_fn_error $? "Package requirements ($required_libs) were not met: $gobby_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. Alternatively, you may set the environment variables gobby_CFLAGS and gobby_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. Alternatively, you may set the environment variables gobby_CFLAGS and gobby_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. To get pkg-config, see . See \`config.log' for more details" "$LINENO" 5; } else gobby_CFLAGS=$pkg_cv_gobby_CFLAGS gobby_LIBS=$pkg_cv_gobby_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for infinote" >&5 $as_echo_n "checking for infinote... " >&6; } if test -n "$infinote_CFLAGS"; then pkg_cv_infinote_CFLAGS="$infinote_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libinfinity-0.5 libinftext-0.5 libinfgtk-0.5 libinftextgtk-0.5\""; } >&5 ($PKG_CONFIG --exists --print-errors "libinfinity-0.5 libinftext-0.5 libinfgtk-0.5 libinftextgtk-0.5") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_infinote_CFLAGS=`$PKG_CONFIG --cflags "libinfinity-0.5 libinftext-0.5 libinfgtk-0.5 libinftextgtk-0.5" 2>/dev/null` else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$infinote_LIBS"; then pkg_cv_infinote_LIBS="$infinote_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libinfinity-0.5 libinftext-0.5 libinfgtk-0.5 libinftextgtk-0.5\""; } >&5 ($PKG_CONFIG --exists --print-errors "libinfinity-0.5 libinftext-0.5 libinfgtk-0.5 libinftextgtk-0.5") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_infinote_LIBS=`$PKG_CONFIG --libs "libinfinity-0.5 libinftext-0.5 libinfgtk-0.5 libinftextgtk-0.5" 2>/dev/null` else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then infinote_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "libinfinity-0.5 libinftext-0.5 libinfgtk-0.5 libinftextgtk-0.5" 2>&1` else infinote_PKG_ERRORS=`$PKG_CONFIG --print-errors "libinfinity-0.5 libinftext-0.5 libinfgtk-0.5 libinftextgtk-0.5" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$infinote_PKG_ERRORS" >&5 as_fn_error $? "Package requirements (libinfinity-0.5 libinftext-0.5 libinfgtk-0.5 libinftextgtk-0.5) were not met: $infinote_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. Alternatively, you may set the environment variables infinote_CFLAGS and infinote_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. Alternatively, you may set the environment variables infinote_CFLAGS and infinote_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. To get pkg-config, see . See \`config.log' for more details" "$LINENO" 5; } else infinote_CFLAGS=$pkg_cv_infinote_CFLAGS infinote_LIBS=$pkg_cv_infinote_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs, see configure's option --config-cache. # It is not useful on other systems. If it contains results you don't # want to keep, you may remove or edit it. # # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # # `ac_cv_env_foo' variables (set or unset) will be overridden when # loading this file, other *unset* `ac_cv_foo' will be assigned the # following values. _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, we kill variables containing newlines. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. ( for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) # `set' does not quote correctly, so add quotes: double-quote # substitution turns \\\\ into \\, and sed turns \\ into \. sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; #( *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) | sed ' /^ac_cv_env_/b end t clear :clear s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ t end s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then if test "x$cache_file" != "x/dev/null"; then { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 $as_echo "$as_me: updating cache $cache_file" >&6;} if test ! -f "$cache_file" || test -h "$cache_file"; then cat confcache >"$cache_file" else case $cache_file in #( */* | ?:*) mv -f confcache "$cache_file"$$ && mv -f "$cache_file"$$ "$cache_file" ;; #( *) mv -f confcache "$cache_file" ;; esac fi fi else { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 $as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache ################################### # Check libinfinity GTK+ version ################################### inf_gtk_version=`pkg-config --variable=gtk_version libinfgtk-0.5` if test "$inf_gtk_version" != "$gtk_version"; then as_fn_error $? "Gobby is being built with GTK+ $gtk_version but libinfinity was built against GTK+ $inf_gtk_version" "$LINENO" 5 fi ################################### # Check for unique (optional) ################################### # Check whether --with-unique was given. if test "${with_unique+set}" = set; then : withval=$with_unique; use_unique=$withval else use_unique=auto fi if test "$with_gtk3" != "yes"; then unique_req="unique-1.0 >= 1.1.2" else unique_req="unique-3.0" fi if test "x$use_unique" = "xauto"; then pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for unique" >&5 $as_echo_n "checking for unique... " >&6; } if test -n "$unique_CFLAGS"; then pkg_cv_unique_CFLAGS="$unique_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$unique_req\""; } >&5 ($PKG_CONFIG --exists --print-errors "$unique_req") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_unique_CFLAGS=`$PKG_CONFIG --cflags "$unique_req" 2>/dev/null` else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$unique_LIBS"; then pkg_cv_unique_LIBS="$unique_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$unique_req\""; } >&5 ($PKG_CONFIG --exists --print-errors "$unique_req") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_unique_LIBS=`$PKG_CONFIG --libs "$unique_req" 2>/dev/null` else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then unique_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "$unique_req" 2>&1` else unique_PKG_ERRORS=`$PKG_CONFIG --print-errors "$unique_req" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$unique_PKG_ERRORS" >&5 use_unique=no elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } use_unique=no else unique_CFLAGS=$pkg_cv_unique_CFLAGS unique_LIBS=$pkg_cv_unique_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } use_unique=yes fi elif test "x$use_unique" = "xyes"; then pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for unique" >&5 $as_echo_n "checking for unique... " >&6; } if test -n "$unique_CFLAGS"; then pkg_cv_unique_CFLAGS="$unique_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$unique_req\""; } >&5 ($PKG_CONFIG --exists --print-errors "$unique_req") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_unique_CFLAGS=`$PKG_CONFIG --cflags "$unique_req" 2>/dev/null` else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$unique_LIBS"; then pkg_cv_unique_LIBS="$unique_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$unique_req\""; } >&5 ($PKG_CONFIG --exists --print-errors "$unique_req") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_unique_LIBS=`$PKG_CONFIG --libs "$unique_req" 2>/dev/null` else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then unique_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "$unique_req" 2>&1` else unique_PKG_ERRORS=`$PKG_CONFIG --print-errors "$unique_req" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$unique_PKG_ERRORS" >&5 as_fn_error $? "Package requirements ($unique_req) were not met: $unique_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. Alternatively, you may set the environment variables unique_CFLAGS and unique_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. Alternatively, you may set the environment variables unique_CFLAGS and unique_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. To get pkg-config, see . See \`config.log' for more details" "$LINENO" 5; } else unique_CFLAGS=$pkg_cv_unique_CFLAGS unique_LIBS=$pkg_cv_unique_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi fi if test "x$use_unique" = "xyes"; then $as_echo "#define WITH_UNIQUE 1" >>confdefs.h fi if test "x$use_unique" = "xyes"; then WITH_UNIQUE_TRUE= WITH_UNIQUE_FALSE='#' else WITH_UNIQUE_TRUE='#' WITH_UNIQUE_FALSE= fi cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs, see configure's option --config-cache. # It is not useful on other systems. If it contains results you don't # want to keep, you may remove or edit it. # # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # # `ac_cv_env_foo' variables (set or unset) will be overridden when # loading this file, other *unset* `ac_cv_foo' will be assigned the # following values. _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, we kill variables containing newlines. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. ( for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) # `set' does not quote correctly, so add quotes: double-quote # substitution turns \\\\ into \\, and sed turns \\ into \. sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; #( *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) | sed ' /^ac_cv_env_/b end t clear :clear s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ t end s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then if test "x$cache_file" != "x/dev/null"; then { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 $as_echo "$as_me: updating cache $cache_file" >&6;} if test ! -f "$cache_file" || test -h "$cache_file"; then cat confcache >"$cache_file" else case $cache_file in #( */* | ?:*) mv -f confcache "$cache_file"$$ && mv -f "$cache_file"$$ "$cache_file" ;; #( *) mv -f confcache "$cache_file" ;; esac fi fi else { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 $as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache ################################### # Glib i18n/gettext support. ################################### ALL_LINGUAS="`grep -v '^#' "$srcdir/po/LINGUAS" | tr '\n' ' '`" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 $as_echo_n "checking for grep that handles long lines and -e... " >&6; } if ${ac_cv_path_GREP+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$GREP"; then ac_path_GREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in grep ggrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue # Check for GNU ac_path_GREP and select it if it is found. # Check for GNU $ac_path_GREP case `"$ac_path_GREP" --version 2>&1` in *GNU*) ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'GREP' >> "conftest.nl" "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_GREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_GREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_GREP"; then as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_GREP=$GREP fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 $as_echo "$ac_cv_path_GREP" >&6; } GREP="$ac_cv_path_GREP" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 $as_echo_n "checking for egrep... " >&6; } if ${ac_cv_path_EGREP+:} false; then : $as_echo_n "(cached) " >&6 else if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 then ac_cv_path_EGREP="$GREP -E" else if test -z "$EGREP"; then ac_path_EGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in egrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue # Check for GNU ac_path_EGREP and select it if it is found. # Check for GNU $ac_path_EGREP case `"$ac_path_EGREP" --version 2>&1` in *GNU*) ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'EGREP' >> "conftest.nl" "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_EGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_EGREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_EGREP"; then as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_EGREP=$EGREP fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 $as_echo "$ac_cv_path_EGREP" >&6; } EGREP="$ac_cv_path_EGREP" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 $as_echo_n "checking for ANSI C header files... " >&6; } if ${ac_cv_header_stdc+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #include int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_header_stdc=yes else ac_cv_header_stdc=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "memchr" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "free" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. if test "$cross_compiling" = yes; then : : else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) #else # define ISLOWER(c) \ (('a' <= (c) && (c) <= 'i') \ || ('j' <= (c) && (c) <= 'r') \ || ('s' <= (c) && (c) <= 'z')) # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) #endif #define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) int main () { int i; for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) return 2; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : else ac_cv_header_stdc=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 $as_echo "$ac_cv_header_stdc" >&6; } if test $ac_cv_header_stdc = yes; then $as_echo "#define STDC_HEADERS 1" >>confdefs.h fi # On IRIX 5.3, sys/types and inttypes.h are conflicting. for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ inttypes.h stdint.h unistd.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default " if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in locale.h do : ac_fn_c_check_header_mongrel "$LINENO" "locale.h" "ac_cv_header_locale_h" "$ac_includes_default" if test "x$ac_cv_header_locale_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_LOCALE_H 1 _ACEOF fi done if test $ac_cv_header_locale_h = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for LC_MESSAGES" >&5 $as_echo_n "checking for LC_MESSAGES... " >&6; } if ${am_cv_val_LC_MESSAGES+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { return LC_MESSAGES ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : am_cv_val_LC_MESSAGES=yes else am_cv_val_LC_MESSAGES=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_val_LC_MESSAGES" >&5 $as_echo "$am_cv_val_LC_MESSAGES" >&6; } if test $am_cv_val_LC_MESSAGES = yes; then $as_echo "#define HAVE_LC_MESSAGES 1" >>confdefs.h fi fi USE_NLS=yes gt_cv_have_gettext=no CATOBJEXT=NONE XGETTEXT=: INTLLIBS= ac_fn_c_check_header_mongrel "$LINENO" "libintl.h" "ac_cv_header_libintl_h" "$ac_includes_default" if test "x$ac_cv_header_libintl_h" = xyes; then : gt_cv_func_dgettext_libintl="no" libintl_extra_libs="" # # First check in libc # { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ngettext in libc" >&5 $as_echo_n "checking for ngettext in libc... " >&6; } if ${gt_cv_func_ngettext_libc+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { return !ngettext ("","", 1) ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : gt_cv_func_ngettext_libc=yes else gt_cv_func_ngettext_libc=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_ngettext_libc" >&5 $as_echo "$gt_cv_func_ngettext_libc" >&6; } if test "$gt_cv_func_ngettext_libc" = "yes" ; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dgettext in libc" >&5 $as_echo_n "checking for dgettext in libc... " >&6; } if ${gt_cv_func_dgettext_libc+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { return !dgettext ("","") ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : gt_cv_func_dgettext_libc=yes else gt_cv_func_dgettext_libc=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_dgettext_libc" >&5 $as_echo "$gt_cv_func_dgettext_libc" >&6; } fi if test "$gt_cv_func_ngettext_libc" = "yes" ; then for ac_func in bind_textdomain_codeset do : ac_fn_c_check_func "$LINENO" "bind_textdomain_codeset" "ac_cv_func_bind_textdomain_codeset" if test "x$ac_cv_func_bind_textdomain_codeset" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_BIND_TEXTDOMAIN_CODESET 1 _ACEOF fi done fi # # If we don't have everything we want, check in libintl # if test "$gt_cv_func_dgettext_libc" != "yes" \ || test "$gt_cv_func_ngettext_libc" != "yes" \ || test "$ac_cv_func_bind_textdomain_codeset" != "yes" ; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for bindtextdomain in -lintl" >&5 $as_echo_n "checking for bindtextdomain in -lintl... " >&6; } if ${ac_cv_lib_intl_bindtextdomain+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lintl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char bindtextdomain (); int main () { return bindtextdomain (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_intl_bindtextdomain=yes else ac_cv_lib_intl_bindtextdomain=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_intl_bindtextdomain" >&5 $as_echo "$ac_cv_lib_intl_bindtextdomain" >&6; } if test "x$ac_cv_lib_intl_bindtextdomain" = xyes; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ngettext in -lintl" >&5 $as_echo_n "checking for ngettext in -lintl... " >&6; } if ${ac_cv_lib_intl_ngettext+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lintl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char ngettext (); int main () { return ngettext (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_intl_ngettext=yes else ac_cv_lib_intl_ngettext=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_intl_ngettext" >&5 $as_echo "$ac_cv_lib_intl_ngettext" >&6; } if test "x$ac_cv_lib_intl_ngettext" = xyes; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dgettext in -lintl" >&5 $as_echo_n "checking for dgettext in -lintl... " >&6; } if ${ac_cv_lib_intl_dgettext+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lintl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dgettext (); int main () { return dgettext (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_intl_dgettext=yes else ac_cv_lib_intl_dgettext=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_intl_dgettext" >&5 $as_echo "$ac_cv_lib_intl_dgettext" >&6; } if test "x$ac_cv_lib_intl_dgettext" = xyes; then : gt_cv_func_dgettext_libintl=yes fi fi fi if test "$gt_cv_func_dgettext_libintl" != "yes" ; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking if -liconv is needed to use gettext" >&5 $as_echo_n "checking if -liconv is needed to use gettext... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: " >&5 $as_echo "" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ngettext in -lintl" >&5 $as_echo_n "checking for ngettext in -lintl... " >&6; } if ${ac_cv_lib_intl_ngettext+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lintl -liconv $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char ngettext (); int main () { return ngettext (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_intl_ngettext=yes else ac_cv_lib_intl_ngettext=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_intl_ngettext" >&5 $as_echo "$ac_cv_lib_intl_ngettext" >&6; } if test "x$ac_cv_lib_intl_ngettext" = xyes; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dcgettext in -lintl" >&5 $as_echo_n "checking for dcgettext in -lintl... " >&6; } if ${ac_cv_lib_intl_dcgettext+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lintl -liconv $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dcgettext (); int main () { return dcgettext (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_intl_dcgettext=yes else ac_cv_lib_intl_dcgettext=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_intl_dcgettext" >&5 $as_echo "$ac_cv_lib_intl_dcgettext" >&6; } if test "x$ac_cv_lib_intl_dcgettext" = xyes; then : gt_cv_func_dgettext_libintl=yes libintl_extra_libs=-liconv else : fi else : fi fi # # If we found libintl, then check in it for bind_textdomain_codeset(); # we'll prefer libc if neither have bind_textdomain_codeset(), # and both have dgettext and ngettext # if test "$gt_cv_func_dgettext_libintl" = "yes" ; then glib_save_LIBS="$LIBS" LIBS="$LIBS -lintl $libintl_extra_libs" unset ac_cv_func_bind_textdomain_codeset for ac_func in bind_textdomain_codeset do : ac_fn_c_check_func "$LINENO" "bind_textdomain_codeset" "ac_cv_func_bind_textdomain_codeset" if test "x$ac_cv_func_bind_textdomain_codeset" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_BIND_TEXTDOMAIN_CODESET 1 _ACEOF fi done LIBS="$glib_save_LIBS" if test "$ac_cv_func_bind_textdomain_codeset" = "yes" ; then gt_cv_func_dgettext_libc=no else if test "$gt_cv_func_dgettext_libc" = "yes" \ && test "$gt_cv_func_ngettext_libc" = "yes"; then gt_cv_func_dgettext_libintl=no fi fi fi fi if test "$gt_cv_func_dgettext_libc" = "yes" \ || test "$gt_cv_func_dgettext_libintl" = "yes"; then gt_cv_have_gettext=yes fi if test "$gt_cv_func_dgettext_libintl" = "yes"; then INTLLIBS="-lintl $libintl_extra_libs" fi if test "$gt_cv_have_gettext" = "yes"; then $as_echo "#define HAVE_GETTEXT 1" >>confdefs.h # Extract the first word of "msgfmt", so it can be a program name with args. set dummy msgfmt; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_MSGFMT+:} false; then : $as_echo_n "(cached) " >&6 else case "$MSGFMT" in /*) ac_cv_path_MSGFMT="$MSGFMT" # Let the user override the test with a path. ;; *) IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" for ac_dir in $PATH; do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$ac_word; then if test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"; then ac_cv_path_MSGFMT="$ac_dir/$ac_word" break fi fi done IFS="$ac_save_ifs" test -z "$ac_cv_path_MSGFMT" && ac_cv_path_MSGFMT="no" ;; esac fi MSGFMT="$ac_cv_path_MSGFMT" if test "$MSGFMT" != "no"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGFMT" >&5 $as_echo "$MSGFMT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "$MSGFMT" != "no"; then glib_save_LIBS="$LIBS" LIBS="$LIBS $INTLLIBS" for ac_func in dcgettext do : ac_fn_c_check_func "$LINENO" "dcgettext" "ac_cv_func_dcgettext" if test "x$ac_cv_func_dcgettext" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_DCGETTEXT 1 _ACEOF fi done MSGFMT_OPTS= { $as_echo "$as_me:${as_lineno-$LINENO}: checking if msgfmt accepts -c" >&5 $as_echo_n "checking if msgfmt accepts -c... " >&6; } cat >conftest.foo <<_ACEOF msgid "" msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Project-Id-Version: test 1.0\n" "PO-Revision-Date: 2007-02-15 12:01+0100\n" "Last-Translator: test \n" "Language-Team: C \n" "MIME-Version: 1.0\n" "Content-Transfer-Encoding: 8bit\n" _ACEOF if { { $as_echo "$as_me:${as_lineno-$LINENO}: \$MSGFMT -c -o /dev/null conftest.foo"; } >&5 ($MSGFMT -c -o /dev/null conftest.foo) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then MSGFMT_OPTS=-c; { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } echo "$as_me: failed input was:" >&5 sed 's/^/| /' conftest.foo >&5 fi # Extract the first word of "gmsgfmt", so it can be a program name with args. set dummy gmsgfmt; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_GMSGFMT+:} false; then : $as_echo_n "(cached) " >&6 else case $GMSGFMT in [\\/]* | ?:[\\/]*) ac_cv_path_GMSGFMT="$GMSGFMT" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_GMSGFMT="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT" ;; esac fi GMSGFMT=$ac_cv_path_GMSGFMT if test -n "$GMSGFMT"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GMSGFMT" >&5 $as_echo "$GMSGFMT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # Extract the first word of "xgettext", so it can be a program name with args. set dummy xgettext; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_XGETTEXT+:} false; then : $as_echo_n "(cached) " >&6 else case "$XGETTEXT" in /*) ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path. ;; *) IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" for ac_dir in $PATH; do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$ac_word; then if test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"; then ac_cv_path_XGETTEXT="$ac_dir/$ac_word" break fi fi done IFS="$ac_save_ifs" test -z "$ac_cv_path_XGETTEXT" && ac_cv_path_XGETTEXT=":" ;; esac fi XGETTEXT="$ac_cv_path_XGETTEXT" if test "$XGETTEXT" != ":"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $XGETTEXT" >&5 $as_echo "$XGETTEXT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { extern int _nl_msg_cat_cntr; return _nl_msg_cat_cntr ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : CATOBJEXT=.gmo DATADIRNAME=share else case $host in *-*-solaris*) ac_fn_c_check_func "$LINENO" "bind_textdomain_codeset" "ac_cv_func_bind_textdomain_codeset" if test "x$ac_cv_func_bind_textdomain_codeset" = xyes; then : CATOBJEXT=.gmo DATADIRNAME=share else CATOBJEXT=.mo DATADIRNAME=lib fi ;; *) CATOBJEXT=.mo DATADIRNAME=lib ;; esac fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS="$glib_save_LIBS" INSTOBJEXT=.mo else gt_cv_have_gettext=no fi fi fi if test "$gt_cv_have_gettext" = "yes" ; then $as_echo "#define ENABLE_NLS 1" >>confdefs.h fi if test "$XGETTEXT" != ":"; then if $XGETTEXT --omit-header /dev/null 2> /dev/null; then : ; else { $as_echo "$as_me:${as_lineno-$LINENO}: result: found xgettext program is not GNU xgettext; ignore it" >&5 $as_echo "found xgettext program is not GNU xgettext; ignore it" >&6; } XGETTEXT=":" fi fi # We need to process the po/ directory. POSUB=po ac_config_commands="$ac_config_commands default-1" for lang in $ALL_LINGUAS; do GMOFILES="$GMOFILES $lang.gmo" POFILES="$POFILES $lang.po" done if test "$gt_cv_have_gettext" = "yes"; then if test "x$ALL_LINGUAS" = "x"; then LINGUAS= else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for catalogs to be installed" >&5 $as_echo_n "checking for catalogs to be installed... " >&6; } NEW_LINGUAS= for presentlang in $ALL_LINGUAS; do useit=no if test "%UNSET%" != "${LINGUAS-%UNSET%}"; then desiredlanguages="$LINGUAS" else desiredlanguages="$ALL_LINGUAS" fi for desiredlang in $desiredlanguages; do # Use the presentlang catalog if desiredlang is # a. equal to presentlang, or # b. a variant of presentlang (because in this case, # presentlang can be used as a fallback for messages # which are not translated in the desiredlang catalog). case "$desiredlang" in "$presentlang"*) useit=yes;; esac done if test $useit = yes; then NEW_LINGUAS="$NEW_LINGUAS $presentlang" fi done LINGUAS=$NEW_LINGUAS { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LINGUAS" >&5 $as_echo "$LINGUAS" >&6; } fi if test -n "$LINGUAS"; then for lang in $LINGUAS; do CATALOGS="$CATALOGS $lang$CATOBJEXT"; done fi fi MKINSTALLDIRS= if test -n "$ac_aux_dir"; then MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs" fi if test -z "$MKINSTALLDIRS"; then MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs" fi test -d po || mkdir po if test "x$srcdir" != "x."; then if test "x`echo $srcdir | sed 's@/.*@@'`" = "x"; then posrcprefix="$srcdir/" else posrcprefix="../$srcdir/" fi else posrcprefix="../" fi rm -f po/POTFILES sed -e "/^#/d" -e "/^\$/d" -e "s,.*, $posrcprefix& \\\\," -e "\$s/\(.*\) \\\\/\1/" \ < $srcdir/po/POTFILES.in > po/POTFILES glib_save_prefix="$prefix" glib_save_exec_prefix="$exec_prefix" glib_save_datarootdir="$datarootdir" test "x$prefix" = xNONE && prefix=$ac_default_prefix test "x$exec_prefix" = xNONE && exec_prefix=$prefix datarootdir=`eval echo "${datarootdir}"` if test "x$CATOBJEXT" = "x.mo" ; then localedir=`eval echo "${libdir}/locale"` else localedir=`eval echo "${datadir}/locale"` fi prefix="$glib_save_prefix" exec_prefix="$glib_save_exec_prefix" datarootdir="$glib_save_datarootdir" cat >>confdefs.h <<_ACEOF #define GOBBY_LOCALEDIR "$localedir" _ACEOF { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether NLS is requested" >&5 $as_echo_n "checking whether NLS is requested... " >&6; } # Check whether --enable-nls was given. if test "${enable_nls+set}" = set; then : enableval=$enable_nls; USE_NLS=$enableval else USE_NLS=yes fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5 $as_echo "$USE_NLS" >&6; } case "$am__api_version" in 1.01234) as_fn_error $? "Automake 1.5 or newer is required to use intltool" "$LINENO" 5 ;; *) ;; esac if test -n "0.35.0"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for intltool >= 0.35.0" >&5 $as_echo_n "checking for intltool >= 0.35.0... " >&6; } INTLTOOL_REQUIRED_VERSION_AS_INT=`echo 0.35.0 | awk -F. '{ print $ 1 * 1000 + $ 2 * 100 + $ 3; }'` INTLTOOL_APPLIED_VERSION=`intltool-update --version | head -1 | cut -d" " -f3` INTLTOOL_APPLIED_VERSION_AS_INT=`echo $INTLTOOL_APPLIED_VERSION | awk -F. '{ print $ 1 * 1000 + $ 2 * 100 + $ 3; }'` { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INTLTOOL_APPLIED_VERSION found" >&5 $as_echo "$INTLTOOL_APPLIED_VERSION found" >&6; } test "$INTLTOOL_APPLIED_VERSION_AS_INT" -ge "$INTLTOOL_REQUIRED_VERSION_AS_INT" || as_fn_error $? "Your intltool is too old. You need intltool 0.35.0 or later." "$LINENO" 5 fi # Extract the first word of "intltool-update", so it can be a program name with args. set dummy intltool-update; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_INTLTOOL_UPDATE+:} false; then : $as_echo_n "(cached) " >&6 else case $INTLTOOL_UPDATE in [\\/]* | ?:[\\/]*) ac_cv_path_INTLTOOL_UPDATE="$INTLTOOL_UPDATE" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_INTLTOOL_UPDATE="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi INTLTOOL_UPDATE=$ac_cv_path_INTLTOOL_UPDATE if test -n "$INTLTOOL_UPDATE"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INTLTOOL_UPDATE" >&5 $as_echo "$INTLTOOL_UPDATE" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # Extract the first word of "intltool-merge", so it can be a program name with args. set dummy intltool-merge; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_INTLTOOL_MERGE+:} false; then : $as_echo_n "(cached) " >&6 else case $INTLTOOL_MERGE in [\\/]* | ?:[\\/]*) ac_cv_path_INTLTOOL_MERGE="$INTLTOOL_MERGE" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_INTLTOOL_MERGE="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi INTLTOOL_MERGE=$ac_cv_path_INTLTOOL_MERGE if test -n "$INTLTOOL_MERGE"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INTLTOOL_MERGE" >&5 $as_echo "$INTLTOOL_MERGE" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # Extract the first word of "intltool-extract", so it can be a program name with args. set dummy intltool-extract; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_INTLTOOL_EXTRACT+:} false; then : $as_echo_n "(cached) " >&6 else case $INTLTOOL_EXTRACT in [\\/]* | ?:[\\/]*) ac_cv_path_INTLTOOL_EXTRACT="$INTLTOOL_EXTRACT" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_INTLTOOL_EXTRACT="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi INTLTOOL_EXTRACT=$ac_cv_path_INTLTOOL_EXTRACT if test -n "$INTLTOOL_EXTRACT"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INTLTOOL_EXTRACT" >&5 $as_echo "$INTLTOOL_EXTRACT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test -z "$INTLTOOL_UPDATE" -o -z "$INTLTOOL_MERGE" -o -z "$INTLTOOL_EXTRACT"; then as_fn_error $? "The intltool scripts were not found. Please install intltool." "$LINENO" 5 fi INTLTOOL_DESKTOP_RULE='%.desktop: %.desktop.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' INTLTOOL_DIRECTORY_RULE='%.directory: %.directory.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' INTLTOOL_KEYS_RULE='%.keys: %.keys.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -k -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' INTLTOOL_PROP_RULE='%.prop: %.prop.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' INTLTOOL_OAF_RULE='%.oaf: %.oaf.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -o -p $(top_srcdir)/po $< $@' INTLTOOL_PONG_RULE='%.pong: %.pong.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' INTLTOOL_SERVER_RULE='%.server: %.server.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -o -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' INTLTOOL_SHEET_RULE='%.sheet: %.sheet.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' INTLTOOL_SOUNDLIST_RULE='%.soundlist: %.soundlist.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' INTLTOOL_UI_RULE='%.ui: %.ui.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' INTLTOOL_XML_RULE='%.xml: %.xml.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' INTLTOOL_XML_NOMERGE_RULE='%.xml: %.xml.in $(INTLTOOL_MERGE) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u /tmp $< $@' INTLTOOL_XAM_RULE='%.xam: %.xml.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' INTLTOOL_KBD_RULE='%.kbd: %.kbd.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -m -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' INTLTOOL_CAVES_RULE='%.caves: %.caves.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' INTLTOOL_SCHEMAS_RULE='%.schemas: %.schemas.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -s -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' INTLTOOL_THEME_RULE='%.theme: %.theme.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' INTLTOOL_SERVICE_RULE='%.service: %.service.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' INTLTOOL_POLICY_RULE='%.policy: %.policy.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' # Check the gettext tools to make sure they are GNU # Extract the first word of "xgettext", so it can be a program name with args. set dummy xgettext; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_XGETTEXT+:} false; then : $as_echo_n "(cached) " >&6 else case $XGETTEXT in [\\/]* | ?:[\\/]*) ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_XGETTEXT="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi XGETTEXT=$ac_cv_path_XGETTEXT if test -n "$XGETTEXT"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $XGETTEXT" >&5 $as_echo "$XGETTEXT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # Extract the first word of "msgmerge", so it can be a program name with args. set dummy msgmerge; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_MSGMERGE+:} false; then : $as_echo_n "(cached) " >&6 else case $MSGMERGE in [\\/]* | ?:[\\/]*) ac_cv_path_MSGMERGE="$MSGMERGE" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_MSGMERGE="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi MSGMERGE=$ac_cv_path_MSGMERGE if test -n "$MSGMERGE"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGMERGE" >&5 $as_echo "$MSGMERGE" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # Extract the first word of "msgfmt", so it can be a program name with args. set dummy msgfmt; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_MSGFMT+:} false; then : $as_echo_n "(cached) " >&6 else case $MSGFMT in [\\/]* | ?:[\\/]*) ac_cv_path_MSGFMT="$MSGFMT" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_MSGFMT="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi MSGFMT=$ac_cv_path_MSGFMT if test -n "$MSGFMT"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGFMT" >&5 $as_echo "$MSGFMT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # Extract the first word of "gmsgfmt", so it can be a program name with args. set dummy gmsgfmt; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_GMSGFMT+:} false; then : $as_echo_n "(cached) " >&6 else case $GMSGFMT in [\\/]* | ?:[\\/]*) ac_cv_path_GMSGFMT="$GMSGFMT" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_GMSGFMT="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT" ;; esac fi GMSGFMT=$ac_cv_path_GMSGFMT if test -n "$GMSGFMT"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GMSGFMT" >&5 $as_echo "$GMSGFMT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test -z "$XGETTEXT" -o -z "$MSGMERGE" -o -z "$MSGFMT"; then as_fn_error $? "GNU gettext tools not found; required for intltool" "$LINENO" 5 fi xgversion="`$XGETTEXT --version|grep '(GNU ' 2> /dev/null`" mmversion="`$MSGMERGE --version|grep '(GNU ' 2> /dev/null`" mfversion="`$MSGFMT --version|grep '(GNU ' 2> /dev/null`" if test -z "$xgversion" -o -z "$mmversion" -o -z "$mfversion"; then as_fn_error $? "GNU gettext tools not found; required for intltool" "$LINENO" 5 fi # Extract the first word of "perl", so it can be a program name with args. set dummy perl; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_INTLTOOL_PERL+:} false; then : $as_echo_n "(cached) " >&6 else case $INTLTOOL_PERL in [\\/]* | ?:[\\/]*) ac_cv_path_INTLTOOL_PERL="$INTLTOOL_PERL" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_INTLTOOL_PERL="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi INTLTOOL_PERL=$ac_cv_path_INTLTOOL_PERL if test -n "$INTLTOOL_PERL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INTLTOOL_PERL" >&5 $as_echo "$INTLTOOL_PERL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test -z "$INTLTOOL_PERL"; then as_fn_error $? "perl not found" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for perl >= 5.8.1" >&5 $as_echo_n "checking for perl >= 5.8.1... " >&6; } $INTLTOOL_PERL -e "use 5.8.1;" > /dev/null 2>&1 if test $? -ne 0; then as_fn_error $? "perl 5.8.1 is required for intltool" "$LINENO" 5 else IT_PERL_VERSION="`$INTLTOOL_PERL -e \"printf '%vd', $^V\"`" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $IT_PERL_VERSION" >&5 $as_echo "$IT_PERL_VERSION" >&6; } fi if test "x" != "xno-xml"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for XML::Parser" >&5 $as_echo_n "checking for XML::Parser... " >&6; } if `$INTLTOOL_PERL -e "require XML::Parser" 2>/dev/null`; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 $as_echo "ok" >&6; } else as_fn_error $? "XML::Parser perl module is required for intltool" "$LINENO" 5 fi fi # Substitute ALL_LINGUAS so we can use it in po/Makefile # Set DATADIRNAME correctly if it is not set yet # (copied from glib-gettext.m4) if test -z "$DATADIRNAME"; then cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { extern int _nl_msg_cat_cntr; return _nl_msg_cat_cntr ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : DATADIRNAME=share else case $host in *-*-solaris*) ac_fn_c_check_func "$LINENO" "bind_textdomain_codeset" "ac_cv_func_bind_textdomain_codeset" if test "x$ac_cv_func_bind_textdomain_codeset" = xyes; then : DATADIRNAME=share else DATADIRNAME=lib fi ;; *) DATADIRNAME=lib ;; esac fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi GETTEXT_PACKAGE=gobby05 cat >>confdefs.h <<_ACEOF #define GETTEXT_PACKAGE "${GETTEXT_PACKAGE}" _ACEOF ################################### # Help file building ################################### gdu_cv_version_required=0.9.0 { $as_echo "$as_me:${as_lineno-$LINENO}: checking gnome-doc-utils >= $gdu_cv_version_required" >&5 $as_echo_n "checking gnome-doc-utils >= $gdu_cv_version_required... " >&6; } if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gnome-doc-utils >= \$gdu_cv_version_required\""; } >&5 ($PKG_CONFIG --exists --print-errors "gnome-doc-utils >= $gdu_cv_version_required") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then gdu_cv_have_gdu=yes else gdu_cv_have_gdu=no fi if test "$gdu_cv_have_gdu" = "yes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } : else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: gnome-doc-utils not found: documentation will not be built." >&5 $as_echo "$as_me: WARNING: gnome-doc-utils not found: documentation will not be built." >&2;} fi # Check whether --with-help-dir was given. if test "${with_help_dir+set}" = set; then : withval=$with_help_dir; else with_help_dir='${datadir}/gnome/help' fi HELP_DIR="$with_help_dir" # Check whether --with-omf-dir was given. if test "${with_omf_dir+set}" = set; then : withval=$with_omf_dir; else with_omf_dir='${datadir}/omf' fi OMF_DIR="$with_omf_dir" # Check whether --with-help-formats was given. if test "${with_help_formats+set}" = set; then : withval=$with_help_formats; else with_help_formats='' fi DOC_USER_FORMATS="$with_help_formats" # Check whether --enable-scrollkeeper was given. if test "${enable_scrollkeeper+set}" = set; then : enableval=$enable_scrollkeeper; else enable_scrollkeeper=yes fi if test "$gdu_cv_have_gdu" = "yes" -a "$enable_scrollkeeper" = "yes"; then ENABLE_SK_TRUE= ENABLE_SK_FALSE='#' else ENABLE_SK_TRUE='#' ENABLE_SK_FALSE= fi DISTCHECK_CONFIGURE_FLAGS="--disable-scrollkeeper $DISTCHECK_CONFIGURE_FLAGS" if test "$gdu_cv_have_gdu" = "yes"; then HAVE_GNOME_DOC_UTILS_TRUE= HAVE_GNOME_DOC_UTILS_FALSE='#' else HAVE_GNOME_DOC_UTILS_TRUE='#' HAVE_GNOME_DOC_UTILS_FALSE= fi # AC_DEFINE(GOBBY_CONFIGDIR, [".gobby-0.5"], # [where to store Gobby's config files, # relative to the user's home directory]) ################################### # Output ################################### ac_config_files="$ac_config_files Makefile m4/Makefile po/Makefile.in code/Makefile code/util/Makefile code/core/Makefile code/dialogs/Makefile code/operations/Makefile code/commands/Makefile code/commands/file-tasks/Makefile icons/Makefile icons/hicolor/Makefile icons/hicolor/48x48/Makefile icons/hicolor/48x48/apps/Makefile icons/hicolor/48x48/actions/Makefile icons/hicolor/48x48/status/Makefile icons/hicolor/scalable/Makefile icons/hicolor/scalable/apps/Makefile icons/hicolor/scalable/actions/Makefile icons/hicolor/scalable/status/Makefile icons/HighContrastLargePrint/Makefile icons/HighContrastLargePrint/48x48/Makefile icons/HighContrastLargePrint/48x48/apps/Makefile icons/HighContrastLargePrint/48x48/actions/Makefile icons/HighContrastLargePrint/scalable/Makefile icons/HighContrastLargePrint/scalable/apps/Makefile icons/HighContrastLargePrint/scalable/actions/Makefile icons/HighContrastLargePrintInverse/Makefile icons/HighContrastLargePrintInverse/48x48/Makefile icons/HighContrastLargePrintInverse/48x48/apps/Makefile icons/HighContrastLargePrintInverse/48x48/actions/Makefile icons/HighContrastLargePrintInverse/scalable/Makefile icons/HighContrastLargePrintInverse/scalable/apps/Makefile icons/HighContrastLargePrintInverse/scalable/actions/Makefile help/Makefile win32/Makefile" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs, see configure's option --config-cache. # It is not useful on other systems. If it contains results you don't # want to keep, you may remove or edit it. # # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # # `ac_cv_env_foo' variables (set or unset) will be overridden when # loading this file, other *unset* `ac_cv_foo' will be assigned the # following values. _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, we kill variables containing newlines. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. ( for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) # `set' does not quote correctly, so add quotes: double-quote # substitution turns \\\\ into \\, and sed turns \\ into \. sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; #( *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) | sed ' /^ac_cv_env_/b end t clear :clear s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ t end s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then if test "x$cache_file" != "x/dev/null"; then { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 $as_echo "$as_me: updating cache $cache_file" >&6;} if test ! -f "$cache_file" || test -h "$cache_file"; then cat confcache >"$cache_file" else case $cache_file in #( */* | ?:*) mv -f confcache "$cache_file"$$ && mv -f "$cache_file"$$ "$cache_file" ;; #( *) mv -f confcache "$cache_file" ;; esac fi fi else { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 $as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' DEFS=-DHAVE_CONFIG_H ac_libobjs= ac_ltlibobjs= U= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' ac_i=`$as_echo "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' done LIBOBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs if test -n "$EXEEXT"; then am__EXEEXT_TRUE= am__EXEEXT_FALSE='#' else am__EXEEXT_TRUE='#' am__EXEEXT_FALSE= fi if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then as_fn_error $? "conditional \"MAINTAINER_MODE\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then as_fn_error $? "conditional \"AMDEP\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then as_fn_error $? "conditional \"am__fastdepCXX\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then as_fn_error $? "conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${WIN32_TRUE}" && test -z "${WIN32_FALSE}"; then as_fn_error $? "conditional \"WIN32\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${WITH_UNIQUE_TRUE}" && test -z "${WITH_UNIQUE_FALSE}"; then as_fn_error $? "conditional \"WITH_UNIQUE\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi ac_config_commands="$ac_config_commands po/stamp-it" if test -z "${ENABLE_SK_TRUE}" && test -z "${ENABLE_SK_FALSE}"; then as_fn_error $? "conditional \"ENABLE_SK\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${HAVE_GNOME_DOC_UTILS_TRUE}" && test -z "${HAVE_GNOME_DOC_UTILS_FALSE}"; then as_fn_error $? "conditional \"HAVE_GNOME_DOC_UTILS\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi : "${CONFIG_STATUS=./config.status}" ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 $as_echo "$as_me: creating $CONFIG_STATUS" >&6;} as_write_fail=0 cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. # Compiler output produced by configure, useful for debugging # configure, is in config.log if it exists. debug=false ac_cs_recheck=false ac_cs_silent=false SHELL=\${CONFIG_SHELL-$SHELL} export SHELL _ASEOF cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -p'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -p' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -p' fi else as_ln_s='cp -p' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi if test -x / >/dev/null 2>&1; then as_test_x='test -x' else if ls -dL / >/dev/null 2>&1; then as_ls_L_option=L else as_ls_L_option= fi as_test_x=' eval sh -c '\'' if test -d "$1"; then test -d "$1/."; else case $1 in #( -*)set "./$1";; esac; case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #(( ???[sx]*):;;*)false;;esac;fi '\'' sh ' fi as_executable_p=$as_test_x # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" exec 6>&1 ## ----------------------------------- ## ## Main body of $CONFIG_STATUS script. ## ## ----------------------------------- ## _ASEOF test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Save the log message, to keep $0 and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" This file was extended by gobby $as_me 0.4.94, which was generated by GNU Autoconf 2.68. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ on `(hostname || uname -n) 2>/dev/null | sed 1q` " _ACEOF case $ac_config_files in *" "*) set x $ac_config_files; shift; ac_config_files=$*;; esac case $ac_config_headers in *" "*) set x $ac_config_headers; shift; ac_config_headers=$*;; esac cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # Files that config.status was made for. config_files="$ac_config_files" config_headers="$ac_config_headers" config_commands="$ac_config_commands" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ \`$as_me' instantiates files and other configuration actions from templates according to the current configuration. Unless the files and actions are specified as TAGs, all are instantiated by default. Usage: $0 [OPTION]... [TAG]... -h, --help print this help, then exit -V, --version print version number and configuration settings, then exit --config print configuration, then exit -q, --quiet, --silent do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE --header=FILE[:TEMPLATE] instantiate the configuration header FILE Configuration files: $config_files Configuration headers: $config_headers Configuration commands: $config_commands Report bugs to ." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ gobby config.status 0.4.94 configured by $0, generated by GNU Autoconf 2.68, with options \\"\$ac_cs_config\\" Copyright (C) 2010 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." ac_pwd='$ac_pwd' srcdir='$srcdir' INSTALL='$INSTALL' MKDIR_P='$MKDIR_P' AWK='$AWK' test -n "\$AWK" || AWK=awk _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # The default lists apply if the user does not specify any file. ac_need_defaults=: while test $# != 0 do case $1 in --*=?*) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ac_shift=: ;; --*=) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg= ac_shift=: ;; *) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; esac case $ac_option in # Handling of the options. -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) $as_echo "$ac_cs_version"; exit ;; --config | --confi | --conf | --con | --co | --c ) $as_echo "$ac_cs_config"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; '') as_fn_error $? "missing file argument" ;; esac as_fn_append CONFIG_FILES " '$ac_optarg'" ac_need_defaults=false;; --header | --heade | --head | --hea ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; esac as_fn_append CONFIG_HEADERS " '$ac_optarg'" ac_need_defaults=false;; --he | --h) # Conflict between --help and --header as_fn_error $? "ambiguous option: \`$1' Try \`$0 --help' for more information.";; --help | --hel | -h ) $as_echo "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. -*) as_fn_error $? "unrecognized option: \`$1' Try \`$0 --help' for more information." ;; *) as_fn_append ac_config_targets " $1" ac_need_defaults=false ;; esac shift done ac_configure_extra_args= if $ac_cs_silent; then exec 6>/dev/null ac_configure_extra_args="$ac_configure_extra_args --silent" fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' export CONFIG_SHELL exec "\$@" fi _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX $as_echo "$ac_log" } >&5 _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # # INIT-COMMANDS # AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Handling of arguments. for ac_config_target in $ac_config_targets do case $ac_config_target in "code/features.hpp") CONFIG_HEADERS="$CONFIG_HEADERS code/features.hpp" ;; "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; "default-1") CONFIG_COMMANDS="$CONFIG_COMMANDS default-1" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; "m4/Makefile") CONFIG_FILES="$CONFIG_FILES m4/Makefile" ;; "po/Makefile.in") CONFIG_FILES="$CONFIG_FILES po/Makefile.in" ;; "code/Makefile") CONFIG_FILES="$CONFIG_FILES code/Makefile" ;; "code/util/Makefile") CONFIG_FILES="$CONFIG_FILES code/util/Makefile" ;; "code/core/Makefile") CONFIG_FILES="$CONFIG_FILES code/core/Makefile" ;; "code/dialogs/Makefile") CONFIG_FILES="$CONFIG_FILES code/dialogs/Makefile" ;; "code/operations/Makefile") CONFIG_FILES="$CONFIG_FILES code/operations/Makefile" ;; "code/commands/Makefile") CONFIG_FILES="$CONFIG_FILES code/commands/Makefile" ;; "code/commands/file-tasks/Makefile") CONFIG_FILES="$CONFIG_FILES code/commands/file-tasks/Makefile" ;; "icons/Makefile") CONFIG_FILES="$CONFIG_FILES icons/Makefile" ;; "icons/hicolor/Makefile") CONFIG_FILES="$CONFIG_FILES icons/hicolor/Makefile" ;; "icons/hicolor/48x48/Makefile") CONFIG_FILES="$CONFIG_FILES icons/hicolor/48x48/Makefile" ;; "icons/hicolor/48x48/apps/Makefile") CONFIG_FILES="$CONFIG_FILES icons/hicolor/48x48/apps/Makefile" ;; "icons/hicolor/48x48/actions/Makefile") CONFIG_FILES="$CONFIG_FILES icons/hicolor/48x48/actions/Makefile" ;; "icons/hicolor/48x48/status/Makefile") CONFIG_FILES="$CONFIG_FILES icons/hicolor/48x48/status/Makefile" ;; "icons/hicolor/scalable/Makefile") CONFIG_FILES="$CONFIG_FILES icons/hicolor/scalable/Makefile" ;; "icons/hicolor/scalable/apps/Makefile") CONFIG_FILES="$CONFIG_FILES icons/hicolor/scalable/apps/Makefile" ;; "icons/hicolor/scalable/actions/Makefile") CONFIG_FILES="$CONFIG_FILES icons/hicolor/scalable/actions/Makefile" ;; "icons/hicolor/scalable/status/Makefile") CONFIG_FILES="$CONFIG_FILES icons/hicolor/scalable/status/Makefile" ;; "icons/HighContrastLargePrint/Makefile") CONFIG_FILES="$CONFIG_FILES icons/HighContrastLargePrint/Makefile" ;; "icons/HighContrastLargePrint/48x48/Makefile") CONFIG_FILES="$CONFIG_FILES icons/HighContrastLargePrint/48x48/Makefile" ;; "icons/HighContrastLargePrint/48x48/apps/Makefile") CONFIG_FILES="$CONFIG_FILES icons/HighContrastLargePrint/48x48/apps/Makefile" ;; "icons/HighContrastLargePrint/48x48/actions/Makefile") CONFIG_FILES="$CONFIG_FILES icons/HighContrastLargePrint/48x48/actions/Makefile" ;; "icons/HighContrastLargePrint/scalable/Makefile") CONFIG_FILES="$CONFIG_FILES icons/HighContrastLargePrint/scalable/Makefile" ;; "icons/HighContrastLargePrint/scalable/apps/Makefile") CONFIG_FILES="$CONFIG_FILES icons/HighContrastLargePrint/scalable/apps/Makefile" ;; "icons/HighContrastLargePrint/scalable/actions/Makefile") CONFIG_FILES="$CONFIG_FILES icons/HighContrastLargePrint/scalable/actions/Makefile" ;; "icons/HighContrastLargePrintInverse/Makefile") CONFIG_FILES="$CONFIG_FILES icons/HighContrastLargePrintInverse/Makefile" ;; "icons/HighContrastLargePrintInverse/48x48/Makefile") CONFIG_FILES="$CONFIG_FILES icons/HighContrastLargePrintInverse/48x48/Makefile" ;; "icons/HighContrastLargePrintInverse/48x48/apps/Makefile") CONFIG_FILES="$CONFIG_FILES icons/HighContrastLargePrintInverse/48x48/apps/Makefile" ;; "icons/HighContrastLargePrintInverse/48x48/actions/Makefile") CONFIG_FILES="$CONFIG_FILES icons/HighContrastLargePrintInverse/48x48/actions/Makefile" ;; "icons/HighContrastLargePrintInverse/scalable/Makefile") CONFIG_FILES="$CONFIG_FILES icons/HighContrastLargePrintInverse/scalable/Makefile" ;; "icons/HighContrastLargePrintInverse/scalable/apps/Makefile") CONFIG_FILES="$CONFIG_FILES icons/HighContrastLargePrintInverse/scalable/apps/Makefile" ;; "icons/HighContrastLargePrintInverse/scalable/actions/Makefile") CONFIG_FILES="$CONFIG_FILES icons/HighContrastLargePrintInverse/scalable/actions/Makefile" ;; "help/Makefile") CONFIG_FILES="$CONFIG_FILES help/Makefile" ;; "win32/Makefile") CONFIG_FILES="$CONFIG_FILES win32/Makefile" ;; "po/stamp-it") CONFIG_COMMANDS="$CONFIG_COMMANDS po/stamp-it" ;; *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; esac done # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands fi # Have a temporary directory for convenience. Make it in the build tree # simply because there is no reason against having it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Hook for its removal unless debugging. # Note that there is a small window in which the directory will not be cleaned: # after its creation but before its name has been assigned to `$tmp'. $debug || { tmp= ac_tmp= trap 'exit_status=$? : "${ac_tmp:=$tmp}" { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status ' 0 trap 'as_fn_exit 1' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && test -d "$tmp" } || { tmp=./conf$$-$RANDOM (umask 077 && mkdir "$tmp") } || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 ac_tmp=$tmp # Set up the scripts for CONFIG_FILES section. # No need to generate them if there are no CONFIG_FILES. # This happens for instance with `./config.status config.h'. if test -n "$CONFIG_FILES"; then ac_cr=`echo X | tr X '\015'` # On cygwin, bash can eat \r inside `` if the user requested igncr. # But we know of no other shell where ac_cr would be empty at this # point, so we can use a bashism as a fallback. if test "x$ac_cr" = x; then eval ac_cr=\$\'\\r\' fi ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then ac_cs_awk_cr='\\r' else ac_cs_awk_cr=$ac_cr fi echo 'BEGIN {' >"$ac_tmp/subs1.awk" && _ACEOF { echo "cat >conf$$subs.awk <<_ACEOF" && echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && echo "_ACEOF" } >conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` ac_delim='%!_!# ' for ac_last_try in false false false false false :; do . ./conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` if test $ac_delim_n = $ac_delim_num; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done rm -f conf$$subs.sh cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && _ACEOF sed -n ' h s/^/S["/; s/!.*/"]=/ p g s/^[^!]*!// :repl t repl s/'"$ac_delim"'$// t delim :nl h s/\(.\{148\}\)..*/\1/ t more1 s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ p n b repl :more1 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t nl :delim h s/\(.\{148\}\)..*/\1/ t more2 s/["\\]/\\&/g; s/^/"/; s/$/"/ p b :more2 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t delim ' >$CONFIG_STATUS || ac_write_fail=1 rm -f conf$$subs.awk cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACAWK cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && for (key in S) S_is_set[key] = 1 FS = "" } { line = $ 0 nfields = split(line, field, "@") substed = 0 len = length(field[1]) for (i = 2; i < nfields; i++) { key = field[i] keylen = length(key) if (S_is_set[key]) { value = S[key] line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) len += length(value) + length(field[++i]) substed = 1 } else len += 1 + keylen } print line } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" else cat fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 _ACEOF # VPATH may cause trouble with some makes, so we remove sole $(srcdir), # ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ h s/// s/^/:/ s/[ ]*$/:/ s/:\$(srcdir):/:/g s/:\${srcdir}:/:/g s/:@srcdir@:/:/g s/^:*// s/:*$// x s/\(=[ ]*\).*/\1/ G s/\n// s/^[^=]*=[ ]*$// }' fi cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 fi # test -n "$CONFIG_FILES" # Set up the scripts for CONFIG_HEADERS section. # No need to generate them if there are no CONFIG_HEADERS. # This happens for instance with `./config.status Makefile'. if test -n "$CONFIG_HEADERS"; then cat >"$ac_tmp/defines.awk" <<\_ACAWK || BEGIN { _ACEOF # Transform confdefs.h into an awk script `defines.awk', embedded as # here-document in config.status, that substitutes the proper values into # config.h.in to produce config.h. # Create a delimiter string that does not exist in confdefs.h, to ease # handling of long lines. ac_delim='%!_!# ' for ac_last_try in false false :; do ac_tt=`sed -n "/$ac_delim/p" confdefs.h` if test -z "$ac_tt"; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done # For the awk script, D is an array of macro values keyed by name, # likewise P contains macro parameters if any. Preserve backslash # newline sequences. ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* sed -n ' s/.\{148\}/&'"$ac_delim"'/g t rset :rset s/^[ ]*#[ ]*define[ ][ ]*/ / t def d :def s/\\$// t bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3"/p s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p d :bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3\\\\\\n"\\/p t cont s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p t cont d :cont n s/.\{148\}/&'"$ac_delim"'/g t clear :clear s/\\$// t bsnlc s/["\\]/\\&/g; s/^/"/; s/$/"/p d :bsnlc s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p b cont ' >$CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 for (key in D) D_is_set[key] = 1 FS = "" } /^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { line = \$ 0 split(line, arg, " ") if (arg[1] == "#") { defundef = arg[2] mac1 = arg[3] } else { defundef = substr(arg[1], 2) mac1 = arg[2] } split(mac1, mac2, "(") #) macro = mac2[1] prefix = substr(line, 1, index(line, defundef) - 1) if (D_is_set[macro]) { # Preserve the white space surrounding the "#". print prefix "define", macro P[macro] D[macro] next } else { # Replace #undef with comments. This is necessary, for example, # in the case of _POSIX_SOURCE, which is predefined and required # on some systems where configure will not decide to define it. if (defundef == "undef") { print "/*", prefix defundef, macro, "*/" next } } } { print } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 fi # test -n "$CONFIG_HEADERS" eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" shift for ac_tag do case $ac_tag in :[FHLC]) ac_mode=$ac_tag; continue;; esac case $ac_mode$ac_tag in :[FHL]*:*);; :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac ac_save_IFS=$IFS IFS=: set x $ac_tag IFS=$ac_save_IFS shift ac_file=$1 shift case $ac_mode in :L) ac_source=$1;; :[FH]) ac_file_inputs= for ac_f do case $ac_f in -) ac_f="$ac_tmp/stdin";; *) # Look for the file first in the build tree, then in the source tree # (if the path is not absolute). The absolute path cannot be DOS-style, # because $ac_f cannot contain `:'. test -f "$ac_f" || case $ac_f in [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; esac case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac as_fn_append ac_file_inputs " '$ac_f'" done # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input='Generated from '` $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 $as_echo "$as_me: creating $ac_file" >&6;} fi # Neutralize special characters interpreted by sed in replacement strings. case $configure_input in #( *\&* | *\|* | *\\* ) ac_sed_conf_input=`$as_echo "$configure_input" | sed 's/[\\\\&|]/\\\\&/g'`;; #( *) ac_sed_conf_input=$configure_input;; esac case $ac_tag in *:-:* | *:-) cat >"$ac_tmp/stdin" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; esac ;; esac ac_dir=`$as_dirname -- "$ac_file" || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir="$ac_dir"; as_fn_mkdir_p ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix case $ac_mode in :F) # # CONFIG_FILE # case $INSTALL in [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; esac ac_MKDIR_P=$MKDIR_P case $MKDIR_P in [\\/$]* | ?:[\\/]* ) ;; */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; esac _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # If the template does not know about datarootdir, expand it. # FIXME: This hack should be removed a few years after 2.60. ac_datarootdir_hack=; ac_datarootdir_seen= ac_sed_dataroot=' /datarootdir/ { p q } /@datadir@/p /@docdir@/p /@infodir@/p /@localedir@/p /@mandir@/p' case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 $as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_datarootdir_hack=' s&@datadir@&$datadir&g s&@docdir@&$docdir&g s&@infodir@&$infodir&g s&@localedir@&$localedir&g s&@mandir@&$mandir&g s&\\\${datarootdir}&$datarootdir&g' ;; esac _ACEOF # Neutralize VPATH when `$srcdir' = `.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_sed_extra="$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s|@configure_input@|$ac_sed_conf_input|;t t s&@top_builddir@&$ac_top_builddir_sub&;t t s&@top_build_prefix@&$ac_top_build_prefix&;t t s&@srcdir@&$ac_srcdir&;t t s&@abs_srcdir@&$ac_abs_srcdir&;t t s&@top_srcdir@&$ac_top_srcdir&;t t s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t s&@builddir@&$ac_builddir&;t t s&@abs_builddir@&$ac_abs_builddir&;t t s&@abs_top_builddir@&$ac_abs_top_builddir&;t t s&@INSTALL@&$ac_INSTALL&;t t s&@MKDIR_P@&$ac_MKDIR_P&;t t $ac_datarootdir_hack " eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ "$ac_tmp/out"`; test -z "$ac_out"; } && { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&5 $as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&2;} rm -f "$ac_tmp/stdin" case $ac_file in -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; esac \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; :H) # # CONFIG_HEADER # if test x"$ac_file" != x-; then { $as_echo "/* $configure_input */" \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" } >"$ac_tmp/config.h" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 $as_echo "$as_me: $ac_file is unchanged" >&6;} else rm -f "$ac_file" mv "$ac_tmp/config.h" "$ac_file" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 fi else $as_echo "/* $configure_input */" \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ || as_fn_error $? "could not create -" "$LINENO" 5 fi # Compute "$ac_file"'s index in $config_headers. _am_arg="$ac_file" _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $_am_arg | $_am_arg:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || $as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$_am_arg" : 'X\(//\)[^/]' \| \ X"$_am_arg" : 'X\(//\)$' \| \ X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$_am_arg" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'`/stamp-h$_am_stamp_count ;; :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 $as_echo "$as_me: executing $ac_file commands" >&6;} ;; esac case $ac_file$ac_mode in "depfiles":C) test x"$AMDEP_TRUE" != x"" || { # Autoconf 2.62 quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. case $CONFIG_FILES in *\'*) eval set x "$CONFIG_FILES" ;; *) set x $CONFIG_FILES ;; esac shift for mf do # Strip MF so we end up with the name of the file. mf=`echo "$mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile or not. # We used to match only the files named `Makefile.in', but # some people rename them; so instead we look at the file content. # Grep'ing the first line is not enough: some people post-process # each Makefile.in and add a new line on top of each file to say so. # Grep'ing the whole file is not good either: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then dirpart=`$as_dirname -- "$mf" || $as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$mf" : 'X\(//\)[^/]' \| \ X"$mf" : 'X\(//\)$' \| \ X"$mf" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$mf" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` else continue fi # Extract the definition of DEPDIR, am__include, and am__quote # from the Makefile without running `make'. DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue am__include=`sed -n 's/^am__include = //p' < "$mf"` test -z "am__include" && continue am__quote=`sed -n 's/^am__quote = //p' < "$mf"` # When using ansi2knr, U may be empty or an underscore; expand it U=`sed -n 's/^U = //p' < "$mf"` # Find all dependency output files, they are included files with # $(DEPDIR) in their names. We invoke sed twice because it is the # simplest approach to changing $(DEPDIR) to its actual value in the # expansion. for file in `sed -n " s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`$as_dirname -- "$file" || $as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$file" : 'X\(//\)[^/]' \| \ X"$file" : 'X\(//\)$' \| \ X"$file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir=$dirpart/$fdir; as_fn_mkdir_p # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done } ;; "default-1":C) case "$CONFIG_FILES" in *po/Makefile.in*) sed -e "/POTFILES =/r po/POTFILES" po/Makefile.in > po/Makefile esac ;; "po/stamp-it":C) if ! grep "^# INTLTOOL_MAKEFILE$" "po/Makefile.in" > /dev/null ; then as_fn_error $? "po/Makefile.in.in was not created by intltoolize." "$LINENO" 5 fi rm -f "po/stamp-it" "po/stamp-it.tmp" "po/POTFILES" "po/Makefile.tmp" >"po/stamp-it.tmp" sed '/^#/d s/^[[].*] *// /^[ ]*$/d '"s|^| $ac_top_srcdir/|" \ "$srcdir/po/POTFILES.in" | sed '$!s/$/ \\/' >"po/POTFILES" sed '/^POTFILES =/,/[^\\]$/ { /^POTFILES =/!d r po/POTFILES } ' "po/Makefile.in" >"po/Makefile" rm -f "po/Makefile.tmp" mv "po/stamp-it.tmp" "po/stamp-it" ;; esac done # for ac_tag as_fn_exit 0 _ACEOF ac_clean_files=$ac_clean_files_save test $ac_write_fail = 0 || as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. # Unfortunately, on DOS this fails, as config.log is still kept open # by configure, so config.status won't be able to write to it; its # output is simply discarded. So we exec the FD to /dev/null, # effectively closing config.log, so it can be properly (re)opened and # appended to by config.status. When coming back to configure, we # need to make the FD available again. if test "$no_create" != yes; then ac_cs_success=: ac_config_status_args= test "$silent" = yes && ac_config_status_args="$ac_config_status_args --quiet" exec 5>/dev/null $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. $ac_cs_success || as_fn_exit 1 fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi # vim:set et sw=2 ts=2: gobby-0.4.94/configure.ac0000644000175000017500000001376211543670212012133 00000000000000# -*- Autoconf -*- # Process this file with autoconf to produce a configure script. AC_PREREQ(2.59) AC_INIT([gobby], [0.4.94], [crew@0x539.de]) AM_INIT_AUTOMAKE(1.9 check-news) m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES]) AM_MAINTAINER_MODE AC_CONFIG_SRCDIR([code/window.hpp]) AC_CONFIG_HEADER([code/features.hpp]) # Extract host information. AC_CANONICAL_HOST # Checks for programs. AC_PROG_CXX AC_PROG_CC AC_PROG_CPP AC_PROG_INSTALL AC_PROG_LN_S AC_PROG_MAKE_SET AC_PROG_RANLIB AM_PROG_CC_C_O AC_CACHE_SAVE ################################### # Check for Win32 ################################### AC_MSG_CHECKING([whether to enable WIN32 specific flags]) case "$host_os" in *mingw*) win32=true AC_MSG_RESULT([yes]) AC_CHECK_TOOL(WINDRES, windres) ;; *) win32=false AC_MSG_RESULT([no]) ;; esac AM_CONDITIONAL(WIN32, test x$win32 = xtrue) ################################### # Check for GTK+ 3 ################################### AC_ARG_WITH([gtk3], AS_HELP_STRING([--with-gtk3], [Builds gobby against GTK+ 3 instead of GTK+ 2[[default=no]]]), [with_gtk3=$withval], [with_gtk3=no]) if test "x$with_gtk3" = "xyes"; then # TODO: Increase to 2.99.2 once it's out gtk_requirement="gtkmm-3.0 >= 2.99.1 gtksourceview-3.0 >= 2.91.0" gtk_version=3 else gtk_requirement="gtkmm-2.4 >= 2.12.0 gtksourceview-2.0 >= 2.4" gtk_version=2 fi required_libs="libxml++-2.6 glibmm-2.4 >= 2.18.0 giomm-2.4 >= 2.18.0 gthread-2.0 libgsasl >= 0.2.21 $gtk_requirement" ################################### # Check for Mac OS X ################################### # Check if we are running on OS X, for special link handling. if test "x$build_vendor" = "xapple" ; then AC_DEFINE([PLATFORM_OSX], 1, [Define whether we are running on Mac OS X.]) # Check whether we are running the native quartz backend if test "$gtk_version" == "2"; then target=`pkg-config --variable=target gtk+-2.0` else target=`pkg-config --variable=targets gtk+-3.0` fi # If so use ige-mac-integration if test "$target" = "quartz" ; then AC_DEFINE([PLATFORM_OSX_NATIVE], 1, [Define whether we are running on Mac OS X with the quartz GDK target]) required_libs="$required_libs ige-mac-integration" fi fi AC_CACHE_SAVE ################################### # Check for libraries. ################################### PKG_CHECK_MODULES([gobby], [$required_libs]) PKG_CHECK_MODULES([infinote], [libinfinity-0.5 libinftext-0.5 libinfgtk-0.5 libinftextgtk-0.5]) AC_CACHE_SAVE ################################### # Check libinfinity GTK+ version ################################### inf_gtk_version=`pkg-config --variable=gtk_version libinfgtk-0.5` if test "$inf_gtk_version" != "$gtk_version"; then AC_MSG_ERROR([Gobby is being built with GTK+ $gtk_version but libinfinity was built against GTK+ $inf_gtk_version]) fi ################################### # Check for unique (optional) ################################### AC_ARG_WITH([unique], AS_HELP_STRING([--with-unique], [Enables support for single-instance [[default=auto]]]), [use_unique=$withval], [use_unique=auto]) if test "$with_gtk3" != "yes"; then unique_req="unique-1.0 >= 1.1.2" else unique_req="unique-3.0" fi if test "x$use_unique" = "xauto"; then PKG_CHECK_MODULES([unique], [$unique_req], [use_unique=yes], [use_unique=no]) elif test "x$use_unique" = "xyes"; then PKG_CHECK_MODULES([unique], [$unique_req]) fi if test "x$use_unique" = "xyes"; then AC_DEFINE([WITH_UNIQUE], 1, [Whether support for unique is enabled]) fi AM_CONDITIONAL([WITH_UNIQUE], test "x$use_unique" = "xyes") AC_CACHE_SAVE ################################### # Glib i18n/gettext support. ################################### ALL_LINGUAS="`grep -v '^#' "$srcdir/po/LINGUAS" | tr '\n' ' '`" AM_GLIB_GNU_GETTEXT AM_GLIB_DEFINE_LOCALEDIR(GOBBY_LOCALEDIR) IT_PROG_INTLTOOL([0.35.0]) GETTEXT_PACKAGE=gobby05 AC_SUBST(GETTEXT_PACKAGE) AC_DEFINE_UNQUOTED([GETTEXT_PACKAGE], ["${GETTEXT_PACKAGE}"], [gettext domain]) ################################### # Help file building ################################### GNOME_DOC_INIT([0.9.0],, [AC_MSG_WARN([[gnome-doc-utils not found: documentation will not be built.]])]) # AC_DEFINE(GOBBY_CONFIGDIR, [".gobby-0.5"], # [where to store Gobby's config files, # relative to the user's home directory]) ################################### # Output ################################### AC_OUTPUT([ Makefile m4/Makefile po/Makefile.in code/Makefile code/util/Makefile code/core/Makefile code/dialogs/Makefile code/operations/Makefile code/commands/Makefile code/commands/file-tasks/Makefile icons/Makefile icons/hicolor/Makefile icons/hicolor/48x48/Makefile icons/hicolor/48x48/apps/Makefile icons/hicolor/48x48/actions/Makefile icons/hicolor/48x48/status/Makefile icons/hicolor/scalable/Makefile icons/hicolor/scalable/apps/Makefile icons/hicolor/scalable/actions/Makefile icons/hicolor/scalable/status/Makefile icons/HighContrastLargePrint/Makefile icons/HighContrastLargePrint/48x48/Makefile icons/HighContrastLargePrint/48x48/apps/Makefile icons/HighContrastLargePrint/48x48/actions/Makefile icons/HighContrastLargePrint/scalable/Makefile icons/HighContrastLargePrint/scalable/apps/Makefile icons/HighContrastLargePrint/scalable/actions/Makefile icons/HighContrastLargePrintInverse/Makefile icons/HighContrastLargePrintInverse/48x48/Makefile icons/HighContrastLargePrintInverse/48x48/apps/Makefile icons/HighContrastLargePrintInverse/48x48/actions/Makefile icons/HighContrastLargePrintInverse/scalable/Makefile icons/HighContrastLargePrintInverse/scalable/apps/Makefile icons/HighContrastLargePrintInverse/scalable/actions/Makefile help/Makefile win32/Makefile ]) # vim:set et sw=2 ts=2: gobby-0.4.94/gnome-doc-utils.make0000644000175000017500000005472611543625355013527 00000000000000# gnome-doc-utils.make - make magic for building documentation # Copyright (C) 2004-2005 Shaun McCance # # 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. ################################################################################ ## @@ Generating Header Files ## @ DOC_H_FILE ## The name of the header file to generate DOC_H_FILE ?= ## @ DOC_H_DOCS ## The input DocBook files for generating the header file DOC_H_DOCS ?= $(DOC_H_FILE): $(DOC_H_DOCS); @rm -f $@.tmp; touch $@.tmp; echo 'const gchar* documentation_credits[] = {' >> $@.tmp list='$(DOC_H_DOCS)'; for doc in $$list; do \ xmlpath="`echo $$doc | sed -e 's/^\(.*\/\).*/\1/' -e '/\//!s/.*//'`:$(srcdir)/`echo $$doc | sed -e 's/^\(.*\/\).*/\1/' -e '/\//!s/.*//'`"; \ if ! test -f "$$doc"; then doc="$(srcdir)/$$doc"; fi; \ xsltproc --path "$$xmlpath" $(_credits) $$doc; \ done | sort | uniq \ | awk 'BEGIN{s=""}{n=split($$0,w,"<");if(s!=""&&s!=substr(w[1],1,length(w[1])-1)){print s};if(n>1){print $$0;s=""}else{s=$$0}};END{if(s!=""){print s}}' \ | sed -e 's/\\/\\\\/' -e 's/"/\\"/' -e 's/\(.*\)/\t"\1",/' >> $@.tmp echo ' NULL' >> $@.tmp echo '};' >> $@.tmp echo >> $@.tmp list='$(DOC_H_DOCS)'; for doc in $$list; do \ xmlpath="`echo $$doc | sed -e 's/^\(.*\/\).*/\1/' -e '/\//!s/.*//'`:$(srcdir)/`echo $$doc | sed -e 's/^\(.*\/\).*/\1/' -e '/\//!s/.*//'`"; \ if ! test -f "$$doc"; then doc="$(srcdir)/$$doc"; fi; \ docid=`echo "$$doc" | sed -e 's/.*\/\([^/]*\)\.xml/\1/' \ | sed -e 's/[^a-zA-Z_]/_/g' | tr 'a-z' 'A-Z'`; \ echo $$xmlpath; \ ids=`xsltproc --xinclude --path "$$xmlpath" $(_ids) $$doc`; \ for id in $$ids; do \ echo '#define HELP_'`echo $$docid`'_'`echo $$id \ | sed -e 's/[^a-zA-Z_]/_/g' | tr 'a-z' 'A-Z'`' "'$$id'"' >> $@.tmp; \ done; \ echo >> $@.tmp; \ done; cp $@.tmp $@ && rm -f $@.tmp dist-check-gdu: if !HAVE_GNOME_DOC_UTILS @echo "*** GNOME Doc Utils must be installed in order to make dist" @false endif .PHONY: dist-doc-header dist-doc-header: $(DOC_H_FILE) @if test -f "$(DOC_H_FILE)"; then d=; else d="$(srcdir)/"; fi; \ echo "$(INSTALL_DATA) $${d}$(DOC_H_FILE) $(distdir)/$(DOC_H_FILE)"; \ $(INSTALL_DATA) "$${d}$(DOC_H_FILE)" "$(distdir)/$(DOC_H_FILE)"; doc-dist-hook: dist-check-gdu $(if $(DOC_H_FILE),dist-doc-header) .PHONY: clean-doc-header _clean_doc_header = $(if $(DOC_H_FILE),clean-doc-header) clean-local: $(_clean_doc_header) distclean-local: $(_clean_doc_header) mostlyclean-local: $(_clean_doc_header) maintainer-clean-local: $(_clean_doc_header) clean-doc-header: rm -f $(DOC_H_FILE) all: $(DOC_H_FILE) ################################################################################ ## @@ Generating Documentation Files ## @ DOC_MODULE ## The name of the document being built DOC_MODULE ?= ## @ DOC_ID ## The unique identifier for a Mallard document DOC_ID ?= ## @ DOC_PAGES ## Page files in a Mallard document DOC_PAGES ?= ## @ DOC_ENTITIES ## Files included with a SYSTEM entity DOC_ENTITIES ?= ## @ DOC_INCLUDES ## Files included with XInclude DOC_INCLUDES ?= ## @ DOC_FIGURES ## Figures and other external data DOC_FIGURES ?= ## @ DOC_FORMATS ## The default formats to be built and installed DOC_FORMATS ?= docbook _DOC_REAL_FORMATS = $(if $(DOC_USER_FORMATS),$(DOC_USER_FORMATS),$(DOC_FORMATS)) ## @ DOC_LINGUAS ## The languages this document is translated into DOC_LINGUAS ?= _DOC_REAL_LINGUAS = $(if $(filter environment,$(origin LINGUAS)), \ $(filter $(LINGUAS),$(DOC_LINGUAS)), \ $(DOC_LINGUAS)) _DOC_ABS_SRCDIR = @abs_srcdir@ ################################################################################ ## Variables for Bootstrapping _xml2po ?= `which xml2po` _xml2po_mode = $(if $(DOC_ID),mallard,docbook) _db2html ?= `$(PKG_CONFIG) --variable db2html gnome-doc-utils` _db2omf ?= `$(PKG_CONFIG) --variable db2omf gnome-doc-utils` _malrng ?= `$(PKG_CONFIG) --variable malrng gnome-doc-utils` _chunks ?= `$(PKG_CONFIG) --variable xmldir gnome-doc-utils`/gnome/xslt/docbook/utils/chunks.xsl _credits ?= `$(PKG_CONFIG) --variable xmldir gnome-doc-utils`/gnome/xslt/docbook/utils/credits.xsl _ids ?= $(shell $(PKG_CONFIG) --variable xmldir gnome-doc-utils)/gnome/xslt/docbook/utils/ids.xsl if ENABLE_SK _ENABLE_SK = true _skpkgdatadir ?= `scrollkeeper-config --pkgdatadir` _sklocalstatedir ?= `scrollkeeper-config --pkglocalstatedir` _skcontentslist ?= $(_skpkgdatadir)/Templates/C/scrollkeeper_cl.xml endif ################################################################################ ## @@ Rules for OMF Files db2omf_args = \ --stringparam db2omf.basename $(DOC_MODULE) \ --stringparam db2omf.format $(3) \ --stringparam db2omf.dtd \ $(shell xmllint --format $(2) | grep -h PUBLIC | head -n 1 \ | sed -e 's/.*PUBLIC \(\"[^\"]*\"\).*/\1/') \ --stringparam db2omf.lang $(notdir $(patsubst %/$(notdir $(2)),%,$(2))) \ --stringparam db2omf.omf_dir "$(OMF_DIR)" \ --stringparam db2omf.help_dir "$(HELP_DIR)" \ --stringparam db2omf.omf_in "$(_DOC_OMF_IN)" \ $(if $(_ENABLE_SK), \ --stringparam db2omf.scrollkeeper_cl "$(_skcontentslist)") \ $(_db2omf) $(2) ## @ _DOC_OMF_IN ## The OMF input file _DOC_OMF_IN = $(if $(DOC_MODULE),$(wildcard $(_DOC_ABS_SRCDIR)/$(DOC_MODULE).omf.in)) ## @ _DOC_OMF_DB ## The OMF files for DocBook output _DOC_OMF_DB = $(if $(_DOC_OMF_IN), \ $(foreach lc,C $(_DOC_REAL_LINGUAS),$(DOC_MODULE)-$(lc).omf)) $(_DOC_OMF_DB) : $(_DOC_OMF_IN) $(_DOC_OMF_DB) : $(DOC_MODULE)-%.omf : %/$(DOC_MODULE).xml @test "x$(_ENABLE_SK)" != "xtrue" -o -f "$(_skcontentslist)" || { \ echo "The file '$(_skcontentslist)' does not exist." >&2; \ echo "Please check your ScrollKeeper installation." >&2; \ exit 1; } xsltproc -o $@ $(call db2omf_args,$@,$<,'docbook') || { rm -f "$@"; exit 1; } ## @ _DOC_OMF_HTML ## The OMF files for HTML output _DOC_OMF_HTML = $(if $(_DOC_OMF_IN), \ $(foreach lc,C $(_DOC_REAL_LINGUAS),$(DOC_MODULE)-html-$(lc).omf)) $(_DOC_OMF_HTML) : $(_DOC_OMF_IN) $(_DOC_OMF_HTML) : $(DOC_MODULE)-html-%.omf : %/$(DOC_MODULE).xml if ENABLE_SK @test "x$(_ENABLE_SK)" != "xtrue" -o -f "$(_skcontentslist)" || { \ echo "The file '$(_skcontentslist)' does not exist" >&2; \ echo "Please check your ScrollKeeper installation." >&2; \ exit 1; } endif xsltproc -o $@ $(call db2omf_args,$@,$<,'xhtml') || { rm -f "$@"; exit 1; } ## @ _DOC_OMF_ALL ## All OMF output files to be built # FIXME _DOC_OMF_ALL = \ $(if $(filter docbook,$(_DOC_REAL_FORMATS)),$(_DOC_OMF_DB)) \ $(if $(filter html HTML,$(_DOC_REAL_FORMATS)),$(_DOC_OMF_HTML)) .PHONY: omf omf: $(_DOC_OMF_ALL) ################################################################################ ## @@ C Locale Documents ## @ _DOC_C_MODULE ## The top-level documentation file in the C locale _DOC_C_MODULE = $(if $(DOC_MODULE),C/$(DOC_MODULE).xml) ## @ _DOC_C_PAGES ## Page files in a Mallard document in the C locale _DOC_C_PAGES = $(foreach page,$(DOC_PAGES),C/$(page)) ## @ _DOC_C_ENTITIES ## Files included with a SYSTEM entity in the C locale _DOC_C_ENTITIES = $(foreach ent,$(DOC_ENTITIES),C/$(ent)) ## @ _DOC_C_XINCLUDES ## Files included with XInclude in the C locale _DOC_C_INCLUDES = $(foreach inc,$(DOC_INCLUDES),C/$(inc)) ## @ _DOC_C_DOCS ## All documentation files in the C locale _DOC_C_DOCS = \ $(_DOC_C_ENTITIES) $(_DOC_C_INCLUDES) \ $(_DOC_C_PAGES) $(_DOC_C_MODULE) ## @ _DOC_C_DOCS_NOENT ## All documentation files in the C locale, ## except files included with a SYSTEM entity _DOC_C_DOCS_NOENT = \ $(_DOC_C_MODULE) $(_DOC_C_INCLUDES) \ $(_DOC_C_PAGES) ## @ _DOC_C_FIGURES ## All figures and other external data in the C locale _DOC_C_FIGURES = $(if $(DOC_FIGURES), \ $(foreach fig,$(DOC_FIGURES),C/$(fig)), \ $(patsubst $(srcdir)/%,%,$(wildcard $(srcdir)/C/figures/*.png))) ## @ _DOC_C_HTML ## All HTML documentation in the C locale # FIXME: probably have to shell escape to determine the file names _DOC_C_HTML = $(foreach f, \ $(shell xsltproc --xinclude \ --stringparam db.chunk.basename "$(DOC_MODULE)" \ $(_chunks) "C/$(DOC_MODULE).xml"), \ C/$(f).xhtml) ############################################################################### ## @@ Other Locale Documentation ## @ _DOC_POFILES ## The .po files used for translating the document _DOC_POFILES = $(if $(DOC_MODULE)$(DOC_ID), \ $(foreach lc,$(_DOC_REAL_LINGUAS),$(lc)/$(lc).po)) .PHONY: po po: $(_DOC_POFILES) ## @ _DOC_MOFILES ## The .mo files used for translating the document _DOC_MOFILES = $(patsubst %.po,%.mo,$(_DOC_POFILES)) .PHONY: mo mo: $(_DOC_MOFILES) ## @ _DOC_LC_MODULES ## The top-level documentation files in all other locales _DOC_LC_MODULES = $(if $(DOC_MODULE), \ $(foreach lc,$(_DOC_REAL_LINGUAS),$(lc)/$(DOC_MODULE).xml)) ## @ _DOC_LC_PAGES ## Page files in a Mallard document in all other locales _DOC_LC_PAGES = \ $(foreach lc,$(_DOC_REAL_LINGUAS),$(foreach page,$(_DOC_C_PAGES), \ $(lc)/$(notdir $(page)) )) ## @ _DOC_LC_XINCLUDES ## Files included with XInclude in all other locales _DOC_LC_INCLUDES = \ $(foreach lc,$(_DOC_REAL_LINGUAS),$(foreach inc,$(_DOC_C_INCLUDES), \ $(lc)/$(notdir $(inc)) )) ## @ _DOC_LC_HTML ## All HTML documentation in all other locales # FIXME: probably have to shell escape to determine the file names _DOC_LC_HTML = \ $(foreach lc,$(_DOC_REAL_LINGUAS),$(foreach doc,$(_DOC_C_HTML), \ $(lc)/$(notdir $(doc)) )) ## @ _DOC_LC_DOCS ## All documentation files in all other locales _DOC_LC_DOCS = \ $(_DOC_LC_MODULES) $(_DOC_LC_INCLUDES) $(_DOC_LC_PAGES) \ $(if $(filter html HTML,$(_DOC_REAL_FORMATS)),$(_DOC_LC_HTML)) ## @ _DOC_LC_FIGURES ## All figures and other external data in all other locales _DOC_LC_FIGURES = $(foreach lc,$(_DOC_REAL_LINGUAS), \ $(patsubst C/%,$(lc)/%,$(_DOC_C_FIGURES)) ) _DOC_SRC_FIGURES = \ $(foreach fig,$(_DOC_C_FIGURES), $(foreach lc,C $(_DOC_REAL_LINGUAS), \ $(wildcard $(srcdir)/$(lc)/$(patsubst C/%,%,$(fig))) )) $(_DOC_POFILES): @if ! test -d $(dir $@); then \ echo "mkdir $(dir $@)"; \ mkdir "$(dir $@)"; \ fi @if test ! -f $@ -a -f $(srcdir)/$@; then \ echo "cp $(srcdir)/$@ $@"; \ cp "$(srcdir)/$@" "$@"; \ fi; @docs=; \ list='$(_DOC_C_DOCS_NOENT)'; for doc in $$list; do \ docs="$$docs $(_DOC_ABS_SRCDIR)/$$doc"; \ done; \ if ! test -f $@; then \ echo "(cd $(dir $@) && \ $(_xml2po) -m $(_xml2po_mode) -e $$docs > $(notdir $@).tmp && \ cp $(notdir $@).tmp $(notdir $@) && rm -f $(notdir $@).tmp)"; \ (cd $(dir $@) && \ $(_xml2po) -m $(_xml2po_mode) -e $$docs > $(notdir $@).tmp && \ cp $(notdir $@).tmp $(notdir $@) && rm -f $(notdir $@).tmp); \ else \ echo "(cd $(dir $@) && \ $(_xml2po) -m $(_xml2po_mode) -e -u $(notdir $@) $$docs)"; \ (cd $(dir $@) && \ $(_xml2po) -m $(_xml2po_mode) -e -u $(notdir $@) $$docs); \ fi $(_DOC_MOFILES): %.mo: %.po @if ! test -d $(dir $@); then \ echo "mkdir $(dir $@)"; \ mkdir "$(dir $@)"; \ fi msgfmt -o $@ $< # FIXME: fix the dependancy # FIXME: hook xml2po up $(_DOC_LC_DOCS) : $(_DOC_MOFILES) $(_DOC_LC_DOCS) : $(_DOC_C_DOCS) if ! test -d $(dir $@); then mkdir $(dir $@); fi if [ -f "C/$(notdir $@)" ]; then d="../"; else d="$(_DOC_ABS_SRCDIR)/"; fi; \ mo="$(dir $@)$(patsubst %/$(notdir $@),%,$@).mo"; \ if [ -f "$${mo}" ]; then mo="../$${mo}"; else mo="$(_DOC_ABS_SRCDIR)/$${mo}"; fi; \ (cd $(dir $@) && \ $(_xml2po) -m $(_xml2po_mode) -e -t "$${mo}" \ "$${d}C/$(notdir $@)" > $(notdir $@).tmp && \ cp $(notdir $@).tmp $(notdir $@) && rm -f $(notdir $@).tmp) ## @ _DOC_POT ## A pot file _DOC_POT = $(if $(DOC_MODULE),$(DOC_MODULE).pot) .PHONY: pot pot: $(_DOC_POT) $(_DOC_POT): $(_DOC_C_DOCS_NOENT) $(_xml2po) -m $(_xml2po_mode) -e -o $@ $^ ################################################################################ ## @@ All Documentation ## @ _DOC_HTML_ALL ## All HTML documentation, only if it's built _DOC_HTML_ALL = $(if $(filter html HTML,$(_DOC_REAL_FORMATS)), \ $(_DOC_C_HTML) $(_DOC_LC_HTML)) _DOC_HTML_TOPS = $(foreach lc,C $(_DOC_REAL_LINGUAS),$(lc)/$(DOC_MODULE).xhtml) $(_DOC_HTML_TOPS): $(_DOC_C_DOCS) $(_DOC_LC_DOCS) xsltproc -o $@ --xinclude --param db.chunk.chunk_top "false()" --stringparam db.chunk.basename "$(DOC_MODULE)" --stringparam db.chunk.extension ".xhtml" $(_db2html) $(patsubst %.xhtml,%.xml,$@) ################################################################################ ## All all: \ $(_DOC_C_DOCS) $(_DOC_LC_DOCS) \ $(_DOC_OMF_ALL) $(_DOC_DSK_ALL) \ $(_DOC_HTML_ALL) $(_DOC_POFILES) ################################################################################ ## Clean .PHONY: clean-doc-omf clean-doc-dsk clean-doc-lc clean-doc-dir clean-doc-omf: ; rm -f $(_DOC_OMF_DB) $(_DOC_OMF_HTML) clean-doc-dsk: ; rm -f $(_DOC_DSK_DB) $(_DOC_DSK_HTML) clean-doc-lc: rm -f $(_DOC_LC_DOCS) rm -f $(_DOC_MOFILES) @list='$(_DOC_POFILES)'; for po in $$list; do \ if ! test "$$po" -ef "$(srcdir)/$$po"; then \ echo "rm -f $$po"; \ rm -f "$$po"; \ fi; \ done # .xml2.po.mo cleaning is obsolete as of 0.18.1 and could be removed in 0.20.x @for lc in C $(_DOC_REAL_LINGUAS); do \ if test -f "$$lc/.xml2po.mo"; then \ echo "rm -f $$lc/.xml2po.mo"; \ rm -f "$$lc/.xml2po.mo"; \ fi; \ done clean-doc-dir: clean-doc-lc @for lc in C $(_DOC_REAL_LINGUAS); do \ for dir in `find $$lc -depth -type d`; do \ if ! test $$dir -ef $(srcdir)/$$dir; then \ echo "rmdir $$dir"; \ rmdir "$$dir"; \ fi; \ done; \ done _clean_omf = $(if $(_DOC_OMF_IN),clean-doc-omf) _clean_dsk = $(if $(_DOC_DSK_IN),clean-doc-dsk) _clean_lc = $(if $(_DOC_REAL_LINGUAS),clean-doc-lc) _clean_dir = $(if $(DOC_MODULE)$(DOC_ID),clean-doc-dir) clean-local: \ $(_clean_omf) $(_clean_dsk) \ $(_clean_lc) $(_clean_dir) distclean-local: \ $(_clean_omf) $(_clean_dsk) \ $(_clean_lc) $(_clean_dir) mostlyclean-local: \ $(_clean_omf) $(_clean_dsk) \ $(_clean_lc) $(_clean_dir) maintainer-clean-local: \ $(_clean_omf) $(_clean_dsk) \ $(_clean_lc) $(_clean_dir) ################################################################################ ## Dist .PHONY: dist-doc-docs dist-doc-pages dist-doc-figs dist-doc-omf dist-doc-dsk doc-dist-hook: \ $(if $(DOC_MODULE)$(DOC_ID),dist-doc-docs) \ $(if $(_DOC_C_FIGURES),dist-doc-figs) \ $(if $(_DOC_OMF_IN),dist-doc-omf) # $(if $(_DOC_DSK_IN),dist-doc-dsk) dist-doc-docs: $(_DOC_C_DOCS) $(_DOC_LC_DOCS) $(_DOC_POFILES) @for lc in C $(_DOC_REAL_LINGUAS); do \ echo " $(mkinstalldirs) $(distdir)/$$lc"; \ $(mkinstalldirs) "$(distdir)/$$lc"; \ done @list='$(_DOC_C_DOCS) $(_DOC_LC_DOCS) $(_DOC_POFILES)'; \ for doc in $$list; do \ if test -f "$$doc"; then d=; else d="$(srcdir)/"; fi; \ docdir=`echo $$doc | sed -e 's/^\(.*\/\).*/\1/' -e '/\//!s/.*//'`; \ if ! test -d "$(distdir)/$$docdir"; then \ echo "$(mkinstalldirs) $(distdir)/$$docdir"; \ $(mkinstalldirs) "$(distdir)/$$docdir"; \ fi; \ echo "$(INSTALL_DATA) $$d$$doc $(distdir)/$$doc"; \ $(INSTALL_DATA) "$$d$$doc" "$(distdir)/$$doc"; \ done dist-doc-figs: $(_DOC_SRC_FIGURES) @list='$(_DOC_C_FIGURES) $(_DOC_LC_FIGURES)'; \ for fig in $$list; do \ if test -f "$$fig"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$fig"; then \ figdir=`echo $$fig | sed -e 's/^\(.*\/\).*/\1/' -e '/\//!s/.*//'`; \ if ! test -d "$(distdir)/$$figdir"; then \ echo "$(mkinstalldirs) $(distdir)/$$figdir"; \ $(mkinstalldirs) "$(distdir)/$$figdir"; \ fi; \ echo "$(INSTALL_DATA) $$d$$fig $(distdir)/$$fig"; \ $(INSTALL_DATA) "$$d$$fig" "$(distdir)/$$fig"; \ fi; \ done; dist-doc-omf: @if test -f "$(_DOC_OMF_IN)"; then d=; else d="$(srcdir)/"; fi; \ echo "$(INSTALL_DATA) $$d$(_DOC_OMF_IN) $(distdir)/$(notdir $(_DOC_OMF_IN))"; \ $(INSTALL_DATA) "$$d$(_DOC_OMF_IN)" "$(distdir)/$(notdir $(_DOC_OMF_IN))" dist-doc-dsk: @if test -f "$(_DOC_DSK_IN)"; then d=; else d="$(srcdir)/"; fi; \ echo "$(INSTALL_DATA) $$d$(_DOC_DSK_IN) $(distdir)/$(notdir $(_DOC_DSK_IN))"; \ $(INSTALL_DATA) "$$d$(_DOC_DSK_IN)" "$(distdir)/$(notdir $(_DOC_DSK_IN))" ################################################################################ ## Check .PHONY: check-doc-docs check-doc-omf check: \ $(if $(DOC_MODULE),check-doc-docs) \ $(if $(DOC_ID),check-doc-pages) \ $(if $(_DOC_OMF_IN),check-doc-omf) check-doc-docs: $(_DOC_C_DOCS) $(_DOC_LC_DOCS) @for lc in C $(_DOC_REAL_LINGUAS); do \ if test -f "$$lc"; \ then d=; \ xmlpath="$$lc"; \ else \ d="$(srcdir)/"; \ xmlpath="$$lc:$(srcdir)/$$lc"; \ fi; \ echo "xmllint --noout --noent --path $$xmlpath --xinclude --postvalid $$d$$lc/$(DOC_MODULE).xml"; \ xmllint --noout --noent --path "$$xmlpath" --xinclude --postvalid "$$d$$lc/$(DOC_MODULE).xml"; \ done check-doc-pages: $(_DOC_C_PAGES) $(_DOC_LC_PAGES) for lc in C $(_DOC_REAL_LINGUAS); do \ if test -f "$$lc"; \ then d=; \ xmlpath="$$lc"; \ else \ d="$(srcdir)/"; \ xmlpath="$$lc:$(srcdir)/$$lc"; \ fi; \ for page in $(DOC_PAGES); do \ echo "xmllint --noout --noent --path $$xmlpath --xinclude --relaxng $(_malrng) $$d$$lc/$$page"; \ xmllint --noout --noent --path "$$xmlpath" --xinclude --relaxng "$(_malrng)" "$$d$$lc/$$page"; \ done; \ done check-doc-omf: $(_DOC_OMF_ALL) @list='$(_DOC_OMF_ALL)'; for omf in $$list; do \ echo "xmllint --noout --xinclude --dtdvalid 'http://scrollkeeper.sourceforge.net/dtds/scrollkeeper-omf-1.0/scrollkeeper-omf.dtd' $$omf"; \ xmllint --noout --xinclude --dtdvalid 'http://scrollkeeper.sourceforge.net/dtds/scrollkeeper-omf-1.0/scrollkeeper-omf.dtd' $$omf; \ done ################################################################################ ## Install .PHONY: install-doc-docs install-doc-html install-doc-figs install-doc-omf install-doc-dsk _doc_install_dir = $(if $(DOC_ID),$(DOC_ID),$(DOC_MODULE)) install-data-local: \ $(if $(DOC_MODULE)$(DOC_ID),install-doc-docs) \ $(if $(_DOC_HTML_ALL),install-doc-html) \ $(if $(_DOC_C_FIGURES),install-doc-figs) \ $(if $(_DOC_OMF_IN),install-doc-omf) # $(if $(_DOC_DSK_IN),install-doc-dsk) install-doc-docs: @for lc in C $(_DOC_REAL_LINGUAS); do \ echo "$(mkinstalldirs) $(DESTDIR)$(HELP_DIR)/$(_doc_install_dir)/$$lc"; \ $(mkinstalldirs) $(DESTDIR)$(HELP_DIR)/$(_doc_install_dir)/$$lc; \ done @list='$(_DOC_C_DOCS) $(_DOC_LC_DOCS)'; for doc in $$list; do \ if test -f "$$doc"; then d=; else d="$(srcdir)/"; fi; \ docdir="$$lc/"`echo $$doc | sed -e 's/^\(.*\/\).*/\1/' -e '/\//!s/.*//'`; \ docdir="$(DESTDIR)$(HELP_DIR)/$(_doc_install_dir)/$$docdir"; \ if ! test -d "$$docdir"; then \ echo "$(mkinstalldirs) $$docdir"; \ $(mkinstalldirs) "$$docdir"; \ fi; \ echo "$(INSTALL_DATA) $$d$$doc $(DESTDIR)$(HELP_DIR)/$(_doc_install_dir)/$$doc"; \ $(INSTALL_DATA) $$d$$doc $(DESTDIR)$(HELP_DIR)/$(_doc_install_dir)/$$doc; \ done install-doc-figs: @list='$(patsubst C/%,%,$(_DOC_C_FIGURES))'; for fig in $$list; do \ for lc in C $(_DOC_REAL_LINGUAS); do \ figsymlink=false; \ if test -f "$$lc/$$fig"; then \ figfile="$$lc/$$fig"; \ elif test -f "$(srcdir)/$$lc/$$fig"; then \ figfile="$(srcdir)/$$lc/$$fig"; \ else \ figsymlink=true; \ fi; \ figdir="$$lc/"`echo $$fig | sed -e 's/^\(.*\/\).*/\1/' -e '/\//!s/.*//'`; \ figdir="$(DESTDIR)$(HELP_DIR)/$(_doc_install_dir)/$$figdir"; \ if ! test -d "$$figdir"; then \ echo "$(mkinstalldirs) $$figdir"; \ $(mkinstalldirs) "$$figdir"; \ fi; \ figbase=`echo $$fig | sed -e 's/^.*\///'`; \ if $$figsymlink; then \ echo "cd $$figdir && $(LN_S) -f ../../C/$$fig $$figbase"; \ ( cd "$$figdir" && $(LN_S) -f "../../C/$$fig" "$$figbase" ); \ else \ echo "$(INSTALL_DATA) $$figfile $$figdir$$figbase"; \ $(INSTALL_DATA) "$$figfile" "$$figdir$$figbase"; \ fi; \ done; \ done install-doc-html: echo install-html install-doc-omf: $(mkinstalldirs) $(DESTDIR)$(OMF_DIR)/$(_doc_install_dir) @list='$(_DOC_OMF_ALL)'; for omf in $$list; do \ echo "$(INSTALL_DATA) $$omf $(DESTDIR)$(OMF_DIR)/$(_doc_install_dir)/$$omf"; \ $(INSTALL_DATA) $$omf $(DESTDIR)$(OMF_DIR)/$(_doc_install_dir)/$$omf; \ done @if test "x$(_ENABLE_SK)" = "xtrue"; then \ echo "scrollkeeper-update -p $(DESTDIR)$(_sklocalstatedir) -o $(DESTDIR)$(OMF_DIR)/$(_doc_install_dir)"; \ scrollkeeper-update -p "$(DESTDIR)$(_sklocalstatedir)" -o "$(DESTDIR)$(OMF_DIR)/$(_doc_install_dir)"; \ fi; install-doc-dsk: echo install-dsk ################################################################################ ## Uninstall .PHONY: uninstall-doc-docs uninstall-doc-html uninstall-doc-figs uninstall-doc-omf uninstall-doc-dsk uninstall-local: \ $(if $(DOC_MODULE)$(DOC_ID),uninstall-doc-docs) \ $(if $(_DOC_HTML_ALL),uninstall-doc-html) \ $(if $(_DOC_C_FIGURES),uninstall-doc-figs) \ $(if $(_DOC_OMF_IN),uninstall-doc-omf) # $(if $(_DOC_DSK_IN),uninstall-doc-dsk) uninstall-doc-docs: @list='$(_DOC_C_DOCS) $(_DOC_LC_DOCS)'; for doc in $$list; do \ echo " rm -f $(DESTDIR)$(HELP_DIR)/$(_doc_install_dir)/$$doc"; \ rm -f "$(DESTDIR)$(HELP_DIR)/$(_doc_install_dir)/$$doc"; \ done uninstall-doc-figs: @list='$(_DOC_C_FIGURES) $(_DOC_LC_FIGURES)'; for fig in $$list; do \ echo "rm -f $(DESTDIR)$(HELP_DIR)/$(_doc_install_dir)/$$fig"; \ rm -f "$(DESTDIR)$(HELP_DIR)/$(_doc_install_dir)/$$fig"; \ done; uninstall-doc-omf: @list='$(_DOC_OMF_ALL)'; for omf in $$list; do \ if test "x$(_ENABLE_SK)" = "xtrue"; then \ echo "scrollkeeper-uninstall -p $(_sklocalstatedir) $(DESTDIR)$(OMF_DIR)/$(_doc_install_dir)/$$omf"; \ scrollkeeper-uninstall -p "$(_sklocalstatedir)" "$(DESTDIR)$(OMF_DIR)/$(_doc_install_dir)/$$omf"; \ fi; \ echo "rm -f $(DESTDIR)$(OMF_DIR)/$(_doc_install_dir)/$$omf"; \ rm -f "$(DESTDIR)$(OMF_DIR)/$(_doc_install_dir)/$$omf"; \ done gobby-0.4.94/mkinstalldirs0000755000175000017500000000672211424242734012453 00000000000000#! /bin/sh # mkinstalldirs --- make directory hierarchy scriptversion=2009-04-28.21; # UTC # Original author: Noah Friedman # Created: 1993-05-16 # Public domain. # # This file is maintained in Automake, please report # bugs to or send patches to # . nl=' ' IFS=" "" $nl" errstatus=0 dirmode= usage="\ Usage: mkinstalldirs [-h] [--help] [--version] [-m MODE] DIR ... Create each directory DIR (with mode MODE, if specified), including all leading file name components. Report bugs to ." # process command line arguments while test $# -gt 0 ; do case $1 in -h | --help | --h*) # -h for help echo "$usage" exit $? ;; -m) # -m PERM arg shift test $# -eq 0 && { echo "$usage" 1>&2; exit 1; } dirmode=$1 shift ;; --version) echo "$0 $scriptversion" exit $? ;; --) # stop option processing shift break ;; -*) # unknown option echo "$usage" 1>&2 exit 1 ;; *) # first non-opt arg break ;; esac done for file do if test -d "$file"; then shift else break fi done case $# in 0) exit 0 ;; esac # Solaris 8's mkdir -p isn't thread-safe. If you mkdir -p a/b and # mkdir -p a/c at the same time, both will detect that a is missing, # one will create a, then the other will try to create a and die with # a "File exists" error. This is a problem when calling mkinstalldirs # from a parallel make. We use --version in the probe to restrict # ourselves to GNU mkdir, which is thread-safe. case $dirmode in '') if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then echo "mkdir -p -- $*" exec mkdir -p -- "$@" else # On NextStep and OpenStep, the `mkdir' command does not # recognize any option. It will interpret all options as # directories to create, and then abort because `.' already # exists. test -d ./-p && rmdir ./-p test -d ./--version && rmdir ./--version fi ;; *) if mkdir -m "$dirmode" -p --version . >/dev/null 2>&1 && test ! -d ./--version; then echo "mkdir -m $dirmode -p -- $*" exec mkdir -m "$dirmode" -p -- "$@" else # Clean up after NextStep and OpenStep mkdir. for d in ./-m ./-p ./--version "./$dirmode"; do test -d $d && rmdir $d done fi ;; esac for file do case $file in /*) pathcomp=/ ;; *) pathcomp= ;; esac oIFS=$IFS IFS=/ set fnord $file shift IFS=$oIFS for d do test "x$d" = x && continue pathcomp=$pathcomp$d case $pathcomp in -*) pathcomp=./$pathcomp ;; esac if test ! -d "$pathcomp"; then echo "mkdir $pathcomp" mkdir "$pathcomp" || lasterr=$? if test ! -d "$pathcomp"; then errstatus=$lasterr else if test ! -z "$dirmode"; then echo "chmod $dirmode $pathcomp" lasterr= chmod "$dirmode" "$pathcomp" || lasterr=$? if test ! -z "$lasterr"; then errstatus=$lasterr fi fi fi fi pathcomp=$pathcomp/ done done exit $errstatus # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: gobby-0.4.94/config.guess0000755000175000017500000012714311531741040012157 00000000000000#! /bin/sh # Attempt to guess a canonical system name. # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, # 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, # 2011 Free Software Foundation, Inc. timestamp='2011-02-02' # This file 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. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Originally written by Per Bothner. Please send patches (context # diff format) to and include a ChangeLog # entry. # # This script attempts to guess a canonical system name similar to # config.sub. If it succeeds, it prints the system name on stdout, and # exits with 0. Otherwise, it exits with 1. # # You can get the latest version of this script from: # http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] Output the configuration name of the system \`$me' is run on. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" >&2 exit 1 ;; * ) break ;; esac done if test $# != 0; then echo "$me: too many arguments$help" >&2 exit 1 fi trap 'exit 1' 1 2 15 # CC_FOR_BUILD -- compiler used by this script. Note that the use of a # compiler to aid in system detection is discouraged as it requires # temporary files to be created and, as you can see below, it is a # headache to deal with in a portable fashion. # Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still # use `HOST_CC' if defined, but it is deprecated. # Portable tmp directory creation inspired by the Autoconf team. set_cc_for_build=' trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; : ${TMPDIR=/tmp} ; { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; dummy=$tmp/dummy ; tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; case $CC_FOR_BUILD,$HOST_CC,$CC in ,,) echo "int x;" > $dummy.c ; for c in cc gcc c89 c99 ; do if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then CC_FOR_BUILD="$c"; break ; fi ; done ; if test x"$CC_FOR_BUILD" = x ; then CC_FOR_BUILD=no_compiler_found ; fi ;; ,,*) CC_FOR_BUILD=$CC ;; ,*,*) CC_FOR_BUILD=$HOST_CC ;; esac ; set_cc_for_build= ;' # This is needed to find uname on a Pyramid OSx when run in the BSD universe. # (ghazi@noc.rutgers.edu 1994-08-24) if (test -f /.attbin/uname) >/dev/null 2>&1 ; then PATH=$PATH:/.attbin ; export PATH fi UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown case "${UNAME_SYSTEM}" in Linux|GNU/*) eval $set_cc_for_build cat <<-EOF > $dummy.c #include #ifdef __UCLIBC__ # ifdef __UCLIBC_CONFIG_VERSION__ LIBC=uclibc __UCLIBC_CONFIG_VERSION__ # else LIBC=uclibc # endif #else # ifdef __dietlibc__ LIBC=dietlibc # else LIBC=gnu # endif #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'` ;; esac # Note: order is significant - the case branches are not exclusive. case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in *:NetBSD:*:*) # NetBSD (nbsd) targets should (where applicable) match one or # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*, # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently # switched to ELF, *-*-netbsd* would select the old # object file format. This provides both forward # compatibility and a consistent mechanism for selecting the # object file format. # # Note: NetBSD doesn't particularly care about the vendor # portion of the name. We always set it to "unknown". sysctl="sysctl -n hw.machine_arch" UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ /usr/sbin/$sysctl 2>/dev/null || echo unknown)` case "${UNAME_MACHINE_ARCH}" in armeb) machine=armeb-unknown ;; arm*) machine=arm-unknown ;; sh3el) machine=shl-unknown ;; sh3eb) machine=sh-unknown ;; sh5el) machine=sh5le-unknown ;; *) machine=${UNAME_MACHINE_ARCH}-unknown ;; esac # The Operating System including object format, if it has switched # to ELF recently, or will in the future. case "${UNAME_MACHINE_ARCH}" in arm*|i386|m68k|ns32k|sh3*|sparc|vax) eval $set_cc_for_build if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ELF__ then # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). # Return netbsd for either. FIX? os=netbsd else os=netbsdelf fi ;; *) os=netbsd ;; esac # The OS release # Debian GNU/NetBSD machines have a different userland, and # thus, need a distinct triplet. However, they do not need # kernel version information, so it can be replaced with a # suitable tag, in the style of linux-gnu. case "${UNAME_VERSION}" in Debian*) release='-gnu' ;; *) release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` ;; esac # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: # contains redundant information, the shorter form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. echo "${machine}-${os}${release}" exit ;; *:OpenBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} exit ;; *:ekkoBSD:*:*) echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} exit ;; *:SolidBSD:*:*) echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} exit ;; macppc:MirBSD:*:*) echo powerpc-unknown-mirbsd${UNAME_RELEASE} exit ;; *:MirBSD:*:*) echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} exit ;; alpha:OSF1:*:*) case $UNAME_RELEASE in *4.0) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` ;; *5.*) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` ;; esac # According to Compaq, /usr/sbin/psrinfo has been available on # OSF/1 and Tru64 systems produced since 1995. I hope that # covers most systems running today. This code pipes the CPU # types through head -n 1, so we only detect the type of CPU 0. ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` case "$ALPHA_CPU_TYPE" in "EV4 (21064)") UNAME_MACHINE="alpha" ;; "EV4.5 (21064)") UNAME_MACHINE="alpha" ;; "LCA4 (21066/21068)") UNAME_MACHINE="alpha" ;; "EV5 (21164)") UNAME_MACHINE="alphaev5" ;; "EV5.6 (21164A)") UNAME_MACHINE="alphaev56" ;; "EV5.6 (21164PC)") UNAME_MACHINE="alphapca56" ;; "EV5.7 (21164PC)") UNAME_MACHINE="alphapca57" ;; "EV6 (21264)") UNAME_MACHINE="alphaev6" ;; "EV6.7 (21264A)") UNAME_MACHINE="alphaev67" ;; "EV6.8CB (21264C)") UNAME_MACHINE="alphaev68" ;; "EV6.8AL (21264B)") UNAME_MACHINE="alphaev68" ;; "EV6.8CX (21264D)") UNAME_MACHINE="alphaev68" ;; "EV6.9A (21264/EV69A)") UNAME_MACHINE="alphaev69" ;; "EV7 (21364)") UNAME_MACHINE="alphaev7" ;; "EV7.9 (21364A)") UNAME_MACHINE="alphaev79" ;; esac # A Pn.n version is a patched version. # A Vn.n version is a released version. # A Tn.n version is a released field test version. # A Xn.n version is an unreleased experimental baselevel. # 1.2 uses "1.2" for uname -r. echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` # Reset EXIT trap before exiting to avoid spurious non-zero exit code. exitcode=$? trap '' 0 exit $exitcode ;; Alpha\ *:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # Should we change UNAME_MACHINE based on the output of uname instead # of the specific Alpha model? echo alpha-pc-interix exit ;; 21064:Windows_NT:50:3) echo alpha-dec-winnt3.5 exit ;; Amiga*:UNIX_System_V:4.0:*) echo m68k-unknown-sysv4 exit ;; *:[Aa]miga[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-amigaos exit ;; *:[Mm]orph[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-morphos exit ;; *:OS/390:*:*) echo i370-ibm-openedition exit ;; *:z/VM:*:*) echo s390-ibm-zvmoe exit ;; *:OS400:*:*) echo powerpc-ibm-os400 exit ;; arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) echo arm-acorn-riscix${UNAME_RELEASE} exit ;; arm:riscos:*:*|arm:RISCOS:*:*) echo arm-unknown-riscos exit ;; SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) echo hppa1.1-hitachi-hiuxmpp exit ;; Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. if test "`(/bin/universe) 2>/dev/null`" = att ; then echo pyramid-pyramid-sysv3 else echo pyramid-pyramid-bsd fi exit ;; NILE*:*:*:dcosx) echo pyramid-pyramid-svr4 exit ;; DRS?6000:unix:4.0:6*) echo sparc-icl-nx6 exit ;; DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) case `/usr/bin/uname -p` in sparc) echo sparc-icl-nx7; exit ;; esac ;; s390x:SunOS:*:*) echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4H:SunOS:5.*:*) echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) echo i386-pc-auroraux${UNAME_RELEASE} exit ;; i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) eval $set_cc_for_build SUN_ARCH="i386" # If there is a compiler, see if it is configured for 64-bit objects. # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. # This test works for both compilers. if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then SUN_ARCH="x86_64" fi fi echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:6*:*) # According to config.sub, this is the proper way to canonicalize # SunOS6. Hard to guess exactly what SunOS6 will be like, but # it's likely to be more like Solaris than SunOS4. echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:*:*) case "`/usr/bin/arch -k`" in Series*|S4*) UNAME_RELEASE=`uname -v` ;; esac # Japanese Language versions have a version number like `4.1.3-JL'. echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` exit ;; sun3*:SunOS:*:*) echo m68k-sun-sunos${UNAME_RELEASE} exit ;; sun*:*:4.2BSD:*) UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 case "`/bin/arch`" in sun3) echo m68k-sun-sunos${UNAME_RELEASE} ;; sun4) echo sparc-sun-sunos${UNAME_RELEASE} ;; esac exit ;; aushp:SunOS:*:*) echo sparc-auspex-sunos${UNAME_RELEASE} exit ;; # The situation for MiNT is a little confusing. The machine name # can be virtually everything (everything which is not # "atarist" or "atariste" at least should have a processor # > m68000). The system name ranges from "MiNT" over "FreeMiNT" # to the lowercase version "mint" (or "freemint"). Finally # the system name "TOS" denotes a system which is actually not # MiNT. But MiNT is downward compatible to TOS, so this should # be no problem. atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) echo m68k-milan-mint${UNAME_RELEASE} exit ;; hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) echo m68k-hades-mint${UNAME_RELEASE} exit ;; *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) echo m68k-unknown-mint${UNAME_RELEASE} exit ;; m68k:machten:*:*) echo m68k-apple-machten${UNAME_RELEASE} exit ;; powerpc:machten:*:*) echo powerpc-apple-machten${UNAME_RELEASE} exit ;; RISC*:Mach:*:*) echo mips-dec-mach_bsd4.3 exit ;; RISC*:ULTRIX:*:*) echo mips-dec-ultrix${UNAME_RELEASE} exit ;; VAX*:ULTRIX*:*:*) echo vax-dec-ultrix${UNAME_RELEASE} exit ;; 2020:CLIX:*:* | 2430:CLIX:*:*) echo clipper-intergraph-clix${UNAME_RELEASE} exit ;; mips:*:*:UMIPS | mips:*:*:RISCos) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #ifdef __cplusplus #include /* for printf() prototype */ int main (int argc, char *argv[]) { #else int main (argc, argv) int argc; char *argv[]; { #endif #if defined (host_mips) && defined (MIPSEB) #if defined (SYSTYPE_SYSV) printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_SVR4) printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); #endif #endif exit (-1); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && SYSTEM_NAME=`$dummy $dummyarg` && { echo "$SYSTEM_NAME"; exit; } echo mips-mips-riscos${UNAME_RELEASE} exit ;; Motorola:PowerMAX_OS:*:*) echo powerpc-motorola-powermax exit ;; Motorola:*:4.3:PL8-*) echo powerpc-harris-powermax exit ;; Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) echo powerpc-harris-powermax exit ;; Night_Hawk:Power_UNIX:*:*) echo powerpc-harris-powerunix exit ;; m88k:CX/UX:7*:*) echo m88k-harris-cxux7 exit ;; m88k:*:4*:R4*) echo m88k-motorola-sysv4 exit ;; m88k:*:3*:R3*) echo m88k-motorola-sysv3 exit ;; AViiON:dgux:*:*) # DG/UX returns AViiON for all architectures UNAME_PROCESSOR=`/usr/bin/uname -p` if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] then if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ [ ${TARGET_BINARY_INTERFACE}x = x ] then echo m88k-dg-dgux${UNAME_RELEASE} else echo m88k-dg-dguxbcs${UNAME_RELEASE} fi else echo i586-dg-dgux${UNAME_RELEASE} fi exit ;; M88*:DolphinOS:*:*) # DolphinOS (SVR3) echo m88k-dolphin-sysv3 exit ;; M88*:*:R3*:*) # Delta 88k system running SVR3 echo m88k-motorola-sysv3 exit ;; XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) echo m88k-tektronix-sysv3 exit ;; Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) echo m68k-tektronix-bsd exit ;; *:IRIX*:*:*) echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` exit ;; ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' i*86:AIX:*:*) echo i386-ibm-aix exit ;; ia64:AIX:*:*) if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} exit ;; *:AIX:2:3) if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include main() { if (!__power_pc()) exit(1); puts("powerpc-ibm-aix3.2.5"); exit(0); } EOF if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` then echo "$SYSTEM_NAME" else echo rs6000-ibm-aix3.2.5 fi elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then echo rs6000-ibm-aix3.2.4 else echo rs6000-ibm-aix3.2 fi exit ;; *:AIX:*:[4567]) IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then IBM_ARCH=rs6000 else IBM_ARCH=powerpc fi if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${IBM_ARCH}-ibm-aix${IBM_REV} exit ;; *:AIX:*:*) echo rs6000-ibm-aix exit ;; ibmrt:4.4BSD:*|romp-ibm:BSD:*) echo romp-ibm-bsd4.4 exit ;; ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to exit ;; # report: romp-ibm BSD 4.3 *:BOSX:*:*) echo rs6000-bull-bosx exit ;; DPX/2?00:B.O.S.:*:*) echo m68k-bull-sysv3 exit ;; 9000/[34]??:4.3bsd:1.*:*) echo m68k-hp-bsd exit ;; hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) echo m68k-hp-bsd4.4 exit ;; 9000/[34678]??:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` case "${UNAME_MACHINE}" in 9000/31? ) HP_ARCH=m68000 ;; 9000/[34]?? ) HP_ARCH=m68k ;; 9000/[678][0-9][0-9]) if [ -x /usr/bin/getconf ]; then sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` case "${sc_cpu_version}" in 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 532) # CPU_PA_RISC2_0 case "${sc_kernel_bits}" in 32) HP_ARCH="hppa2.0n" ;; 64) HP_ARCH="hppa2.0w" ;; '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 esac ;; esac fi if [ "${HP_ARCH}" = "" ]; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #define _HPUX_SOURCE #include #include int main () { #if defined(_SC_KERNEL_BITS) long bits = sysconf(_SC_KERNEL_BITS); #endif long cpu = sysconf (_SC_CPU_VERSION); switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0"); break; case CPU_PA_RISC1_1: puts ("hppa1.1"); break; case CPU_PA_RISC2_0: #if defined(_SC_KERNEL_BITS) switch (bits) { case 64: puts ("hppa2.0w"); break; case 32: puts ("hppa2.0n"); break; default: puts ("hppa2.0"); break; } break; #else /* !defined(_SC_KERNEL_BITS) */ puts ("hppa2.0"); break; #endif default: puts ("hppa1.0"); break; } exit (0); } EOF (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` test -z "$HP_ARCH" && HP_ARCH=hppa fi ;; esac if [ ${HP_ARCH} = "hppa2.0w" ] then eval $set_cc_for_build # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler # generating 64-bit code. GNU and HP use different nomenclature: # # $ CC_FOR_BUILD=cc ./config.guess # => hppa2.0w-hp-hpux11.23 # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess # => hppa64-hp-hpux11.23 if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | grep -q __LP64__ then HP_ARCH="hppa2.0w" else HP_ARCH="hppa64" fi fi echo ${HP_ARCH}-hp-hpux${HPUX_REV} exit ;; ia64:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` echo ia64-hp-hpux${HPUX_REV} exit ;; 3050*:HI-UX:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include int main () { long cpu = sysconf (_SC_CPU_VERSION); /* The order matters, because CPU_IS_HP_MC68K erroneously returns true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct results, however. */ if (CPU_IS_PA_RISC (cpu)) { switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; default: puts ("hppa-hitachi-hiuxwe2"); break; } } else if (CPU_IS_HP_MC68K (cpu)) puts ("m68k-hitachi-hiuxwe2"); else puts ("unknown-hitachi-hiuxwe2"); exit (0); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && { echo "$SYSTEM_NAME"; exit; } echo unknown-hitachi-hiuxwe2 exit ;; 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) echo hppa1.1-hp-bsd exit ;; 9000/8??:4.3bsd:*:*) echo hppa1.0-hp-bsd exit ;; *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) echo hppa1.0-hp-mpeix exit ;; hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) echo hppa1.1-hp-osf exit ;; hp8??:OSF1:*:*) echo hppa1.0-hp-osf exit ;; i*86:OSF1:*:*) if [ -x /usr/sbin/sysversion ] ; then echo ${UNAME_MACHINE}-unknown-osf1mk else echo ${UNAME_MACHINE}-unknown-osf1 fi exit ;; parisc*:Lites*:*:*) echo hppa1.1-hp-lites exit ;; C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) echo c1-convex-bsd exit ;; C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit ;; C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) echo c34-convex-bsd exit ;; C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) echo c38-convex-bsd exit ;; C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) echo c4-convex-bsd exit ;; CRAY*Y-MP:*:*:*) echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*[A-Z]90:*:*:*) echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ -e 's/\.[^.]*$/.X/' exit ;; CRAY*TS:*:*:*) echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*T3E:*:*:*) echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*SV1:*:*:*) echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; *:UNICOS/mp:*:*) echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; 5000:UNIX_System_V:4.*:*) FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} exit ;; sparc*:BSD/OS:*:*) echo sparc-unknown-bsdi${UNAME_RELEASE} exit ;; *:BSD/OS:*:*) echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} exit ;; *:FreeBSD:*:*) case ${UNAME_MACHINE} in pc98) echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; amd64) echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; *) echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; esac exit ;; i*:CYGWIN*:*) echo ${UNAME_MACHINE}-pc-cygwin exit ;; *:MINGW*:*) echo ${UNAME_MACHINE}-pc-mingw32 exit ;; i*:windows32*:*) # uname -m includes "-pc" on this system. echo ${UNAME_MACHINE}-mingw32 exit ;; i*:PW*:*) echo ${UNAME_MACHINE}-pc-pw32 exit ;; *:Interix*:*) case ${UNAME_MACHINE} in x86) echo i586-pc-interix${UNAME_RELEASE} exit ;; authenticamd | genuineintel | EM64T) echo x86_64-unknown-interix${UNAME_RELEASE} exit ;; IA64) echo ia64-unknown-interix${UNAME_RELEASE} exit ;; esac ;; [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) echo i${UNAME_MACHINE}-pc-mks exit ;; 8664:Windows_NT:*) echo x86_64-pc-mks exit ;; i*:Windows_NT*:* | Pentium*:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we # UNAME_MACHINE based on the output of uname instead of i386? echo i586-pc-interix exit ;; i*:UWIN*:*) echo ${UNAME_MACHINE}-pc-uwin exit ;; amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) echo x86_64-unknown-cygwin exit ;; p*:CYGWIN*:*) echo powerpcle-unknown-cygwin exit ;; prep*:SunOS:5.*:*) echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; *:GNU:*:*) # the GNU system echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-${LIBC}`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` exit ;; *:GNU/*:*:*) # other systems with GNU libc and userland echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC} exit ;; i*86:Minix:*:*) echo ${UNAME_MACHINE}-pc-minix exit ;; alpha:Linux:*:*) case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in EV5) UNAME_MACHINE=alphaev5 ;; EV56) UNAME_MACHINE=alphaev56 ;; PCA56) UNAME_MACHINE=alphapca56 ;; PCA57) UNAME_MACHINE=alphapca56 ;; EV6) UNAME_MACHINE=alphaev6 ;; EV67) UNAME_MACHINE=alphaev67 ;; EV68*) UNAME_MACHINE=alphaev68 ;; esac objdump --private-headers /bin/sh | grep -q ld.so.1 if test "$?" = 0 ; then LIBC="gnulibc1" ; fi echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; arm*:Linux:*:*) eval $set_cc_for_build if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_EABI__ then echo ${UNAME_MACHINE}-unknown-linux-${LIBC} else echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabi fi exit ;; avr32*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; cris:Linux:*:*) echo cris-axis-linux-${LIBC} exit ;; crisv32:Linux:*:*) echo crisv32-axis-linux-${LIBC} exit ;; frv:Linux:*:*) echo frv-unknown-linux-${LIBC} exit ;; i*86:Linux:*:*) echo ${UNAME_MACHINE}-pc-linux-${LIBC} exit ;; ia64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; m32r*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; m68*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; mips:Linux:*:* | mips64:Linux:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #undef CPU #undef ${UNAME_MACHINE} #undef ${UNAME_MACHINE}el #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) CPU=${UNAME_MACHINE}el #else #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) CPU=${UNAME_MACHINE} #else CPU= #endif #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'` test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; } ;; or32:Linux:*:*) echo or32-unknown-linux-${LIBC} exit ;; padre:Linux:*:*) echo sparc-unknown-linux-${LIBC} exit ;; parisc64:Linux:*:* | hppa64:Linux:*:*) echo hppa64-unknown-linux-${LIBC} exit ;; parisc:Linux:*:* | hppa:Linux:*:*) # Look for CPU level case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in PA7*) echo hppa1.1-unknown-linux-${LIBC} ;; PA8*) echo hppa2.0-unknown-linux-${LIBC} ;; *) echo hppa-unknown-linux-${LIBC} ;; esac exit ;; ppc64:Linux:*:*) echo powerpc64-unknown-linux-${LIBC} exit ;; ppc:Linux:*:*) echo powerpc-unknown-linux-${LIBC} exit ;; s390:Linux:*:* | s390x:Linux:*:*) echo ${UNAME_MACHINE}-ibm-linux exit ;; sh64*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; sh*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; sparc:Linux:*:* | sparc64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; tile*:Linux:*:*) echo ${UNAME_MACHINE}-tilera-linux-gnu exit ;; vax:Linux:*:*) echo ${UNAME_MACHINE}-dec-linux-${LIBC} exit ;; x86_64:Linux:*:*) echo x86_64-unknown-linux-${LIBC} exit ;; xtensa*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; i*86:DYNIX/ptx:4*:*) # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. # earlier versions are messed up and put the nodename in both # sysname and nodename. echo i386-sequent-sysv4 exit ;; i*86:UNIX_SV:4.2MP:2.*) # Unixware is an offshoot of SVR4, but it has its own version # number series starting with 2... # I am not positive that other SVR4 systems won't match this, # I just have to hope. -- rms. # Use sysv4.2uw... so that sysv4* matches it. echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} exit ;; i*86:OS/2:*:*) # If we were able to find `uname', then EMX Unix compatibility # is probably installed. echo ${UNAME_MACHINE}-pc-os2-emx exit ;; i*86:XTS-300:*:STOP) echo ${UNAME_MACHINE}-unknown-stop exit ;; i*86:atheos:*:*) echo ${UNAME_MACHINE}-unknown-atheos exit ;; i*86:syllable:*:*) echo ${UNAME_MACHINE}-pc-syllable exit ;; i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) echo i386-unknown-lynxos${UNAME_RELEASE} exit ;; i*86:*DOS:*:*) echo ${UNAME_MACHINE}-pc-msdosdjgpp exit ;; i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} else echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} fi exit ;; i*86:*:5:[678]*) # UnixWare 7.x, OpenUNIX and OpenServer 6. case `/bin/uname -X | grep "^Machine"` in *486*) UNAME_MACHINE=i486 ;; *Pentium) UNAME_MACHINE=i586 ;; *Pent*|*Celeron) UNAME_MACHINE=i686 ;; esac echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} exit ;; i*86:*:3.2:*) if test -f /usr/options/cb.name; then UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ && UNAME_MACHINE=i586 (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ && UNAME_MACHINE=i686 (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ && UNAME_MACHINE=i686 echo ${UNAME_MACHINE}-pc-sco$UNAME_REL else echo ${UNAME_MACHINE}-pc-sysv32 fi exit ;; pc:*:*:*) # Left here for compatibility: # uname -m prints for DJGPP always 'pc', but it prints nothing about # the processor, so we play safe by assuming i586. # Note: whatever this is, it MUST be the same as what config.sub # prints for the "djgpp" host, or else GDB configury will decide that # this is a cross-build. echo i586-pc-msdosdjgpp exit ;; Intel:Mach:3*:*) echo i386-pc-mach3 exit ;; paragon:*:*:*) echo i860-intel-osf1 exit ;; i860:*:4.*:*) # i860-SVR4 if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 else # Add other i860-SVR4 vendors below as they are discovered. echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 fi exit ;; mini*:CTIX:SYS*5:*) # "miniframe" echo m68010-convergent-sysv exit ;; mc68k:UNIX:SYSTEM5:3.51m) echo m68k-convergent-sysv exit ;; M680?0:D-NIX:5.3:*) echo m68k-diab-dnix exit ;; M68*:*:R3V[5678]*:*) test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) OS_REL='' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4; exit; } ;; NCR*:*:4.2:* | MPRAS*:*:4.2:*) OS_REL='.3' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) echo m68k-unknown-lynxos${UNAME_RELEASE} exit ;; mc68030:UNIX_System_V:4.*:*) echo m68k-atari-sysv4 exit ;; TSUNAMI:LynxOS:2.*:*) echo sparc-unknown-lynxos${UNAME_RELEASE} exit ;; rs6000:LynxOS:2.*:*) echo rs6000-unknown-lynxos${UNAME_RELEASE} exit ;; PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) echo powerpc-unknown-lynxos${UNAME_RELEASE} exit ;; SM[BE]S:UNIX_SV:*:*) echo mips-dde-sysv${UNAME_RELEASE} exit ;; RM*:ReliantUNIX-*:*:*) echo mips-sni-sysv4 exit ;; RM*:SINIX-*:*:*) echo mips-sni-sysv4 exit ;; *:SINIX-*:*:*) if uname -p 2>/dev/null >/dev/null ; then UNAME_MACHINE=`(uname -p) 2>/dev/null` echo ${UNAME_MACHINE}-sni-sysv4 else echo ns32k-sni-sysv fi exit ;; PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort # says echo i586-unisys-sysv4 exit ;; *:UNIX_System_V:4*:FTX*) # From Gerald Hewes . # How about differentiating between stratus architectures? -djm echo hppa1.1-stratus-sysv4 exit ;; *:*:*:FTX*) # From seanf@swdc.stratus.com. echo i860-stratus-sysv4 exit ;; i*86:VOS:*:*) # From Paul.Green@stratus.com. echo ${UNAME_MACHINE}-stratus-vos exit ;; *:VOS:*:*) # From Paul.Green@stratus.com. echo hppa1.1-stratus-vos exit ;; mc68*:A/UX:*:*) echo m68k-apple-aux${UNAME_RELEASE} exit ;; news*:NEWS-OS:6*:*) echo mips-sony-newsos6 exit ;; R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) if [ -d /usr/nec ]; then echo mips-nec-sysv${UNAME_RELEASE} else echo mips-unknown-sysv${UNAME_RELEASE} fi exit ;; BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. echo powerpc-be-beos exit ;; BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. echo powerpc-apple-beos exit ;; BePC:BeOS:*:*) # BeOS running on Intel PC compatible. echo i586-pc-beos exit ;; BePC:Haiku:*:*) # Haiku running on Intel PC compatible. echo i586-pc-haiku exit ;; SX-4:SUPER-UX:*:*) echo sx4-nec-superux${UNAME_RELEASE} exit ;; SX-5:SUPER-UX:*:*) echo sx5-nec-superux${UNAME_RELEASE} exit ;; SX-6:SUPER-UX:*:*) echo sx6-nec-superux${UNAME_RELEASE} exit ;; SX-7:SUPER-UX:*:*) echo sx7-nec-superux${UNAME_RELEASE} exit ;; SX-8:SUPER-UX:*:*) echo sx8-nec-superux${UNAME_RELEASE} exit ;; SX-8R:SUPER-UX:*:*) echo sx8r-nec-superux${UNAME_RELEASE} exit ;; Power*:Rhapsody:*:*) echo powerpc-apple-rhapsody${UNAME_RELEASE} exit ;; *:Rhapsody:*:*) echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} exit ;; *:Darwin:*:*) UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown case $UNAME_PROCESSOR in i386) eval $set_cc_for_build if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then UNAME_PROCESSOR="x86_64" fi fi ;; unknown) UNAME_PROCESSOR=powerpc ;; esac echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} exit ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) UNAME_PROCESSOR=`uname -p` if test "$UNAME_PROCESSOR" = "x86"; then UNAME_PROCESSOR=i386 UNAME_MACHINE=pc fi echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} exit ;; *:QNX:*:4*) echo i386-pc-qnx exit ;; NEO-?:NONSTOP_KERNEL:*:*) echo neo-tandem-nsk${UNAME_RELEASE} exit ;; NSE-?:NONSTOP_KERNEL:*:*) echo nse-tandem-nsk${UNAME_RELEASE} exit ;; NSR-?:NONSTOP_KERNEL:*:*) echo nsr-tandem-nsk${UNAME_RELEASE} exit ;; *:NonStop-UX:*:*) echo mips-compaq-nonstopux exit ;; BS2000:POSIX*:*:*) echo bs2000-siemens-sysv exit ;; DS/*:UNIX_System_V:*:*) echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} exit ;; *:Plan9:*:*) # "uname -m" is not consistent, so use $cputype instead. 386 # is converted to i386 for consistency with other x86 # operating systems. if test "$cputype" = "386"; then UNAME_MACHINE=i386 else UNAME_MACHINE="$cputype" fi echo ${UNAME_MACHINE}-unknown-plan9 exit ;; *:TOPS-10:*:*) echo pdp10-unknown-tops10 exit ;; *:TENEX:*:*) echo pdp10-unknown-tenex exit ;; KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) echo pdp10-dec-tops20 exit ;; XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) echo pdp10-xkl-tops20 exit ;; *:TOPS-20:*:*) echo pdp10-unknown-tops20 exit ;; *:ITS:*:*) echo pdp10-unknown-its exit ;; SEI:*:*:SEIUX) echo mips-sei-seiux${UNAME_RELEASE} exit ;; *:DragonFly:*:*) echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` exit ;; *:*VMS:*:*) UNAME_MACHINE=`(uname -p) 2>/dev/null` case "${UNAME_MACHINE}" in A*) echo alpha-dec-vms ; exit ;; I*) echo ia64-dec-vms ; exit ;; V*) echo vax-dec-vms ; exit ;; esac ;; *:XENIX:*:SysV) echo i386-pc-xenix exit ;; i*86:skyos:*:*) echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//' exit ;; i*86:rdos:*:*) echo ${UNAME_MACHINE}-pc-rdos exit ;; i*86:AROS:*:*) echo ${UNAME_MACHINE}-pc-aros exit ;; esac #echo '(No uname command or uname output not recognized.)' 1>&2 #echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 eval $set_cc_for_build cat >$dummy.c < # include #endif main () { #if defined (sony) #if defined (MIPSEB) /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, I don't know.... */ printf ("mips-sony-bsd\n"); exit (0); #else #include printf ("m68k-sony-newsos%s\n", #ifdef NEWSOS4 "4" #else "" #endif ); exit (0); #endif #endif #if defined (__arm) && defined (__acorn) && defined (__unix) printf ("arm-acorn-riscix\n"); exit (0); #endif #if defined (hp300) && !defined (hpux) printf ("m68k-hp-bsd\n"); exit (0); #endif #if defined (NeXT) #if !defined (__ARCHITECTURE__) #define __ARCHITECTURE__ "m68k" #endif int version; version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; if (version < 4) printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); else printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); exit (0); #endif #if defined (MULTIMAX) || defined (n16) #if defined (UMAXV) printf ("ns32k-encore-sysv\n"); exit (0); #else #if defined (CMU) printf ("ns32k-encore-mach\n"); exit (0); #else printf ("ns32k-encore-bsd\n"); exit (0); #endif #endif #endif #if defined (__386BSD__) printf ("i386-pc-bsd\n"); exit (0); #endif #if defined (sequent) #if defined (i386) printf ("i386-sequent-dynix\n"); exit (0); #endif #if defined (ns32000) printf ("ns32k-sequent-dynix\n"); exit (0); #endif #endif #if defined (_SEQUENT_) struct utsname un; uname(&un); if (strncmp(un.version, "V2", 2) == 0) { printf ("i386-sequent-ptx2\n"); exit (0); } if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ printf ("i386-sequent-ptx1\n"); exit (0); } printf ("i386-sequent-ptx\n"); exit (0); #endif #if defined (vax) # if !defined (ultrix) # include # if defined (BSD) # if BSD == 43 printf ("vax-dec-bsd4.3\n"); exit (0); # else # if BSD == 199006 printf ("vax-dec-bsd4.3reno\n"); exit (0); # else printf ("vax-dec-bsd\n"); exit (0); # endif # endif # else printf ("vax-dec-bsd\n"); exit (0); # endif # else printf ("vax-dec-ultrix\n"); exit (0); # endif #endif #if defined (alliant) && defined (i860) printf ("i860-alliant-bsd\n"); exit (0); #endif exit (1); } EOF $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` && { echo "$SYSTEM_NAME"; exit; } # Apollos put the system type in the environment. test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; } # Convex versions that predate uname can use getsysinfo(1) if [ -x /usr/convex/getsysinfo ] then case `getsysinfo -f cpu_type` in c1*) echo c1-convex-bsd exit ;; c2*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit ;; c34*) echo c34-convex-bsd exit ;; c38*) echo c38-convex-bsd exit ;; c4*) echo c4-convex-bsd exit ;; esac fi cat >&2 < in order to provide the needed information to handle your system. config.guess timestamp = $timestamp uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` /bin/uname -X = `(/bin/uname -X) 2>/dev/null` hostinfo = `(hostinfo) 2>/dev/null` /bin/universe = `(/bin/universe) 2>/dev/null` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` /bin/arch = `(/bin/arch) 2>/dev/null` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` UNAME_MACHINE = ${UNAME_MACHINE} UNAME_RELEASE = ${UNAME_RELEASE} UNAME_SYSTEM = ${UNAME_SYSTEM} UNAME_VERSION = ${UNAME_VERSION} EOF exit 1 # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: gobby-0.4.94/README0000644000175000017500000001155211543670212010520 00000000000000 Gobby: First Contact _________________________________________________________ Table of Contents 1. Synopsis 2. Features 3. Installation 3.1. Dependencies 4. More information 4.1. How to report bugs 4.2. How to get involved 5. Licensing 6. Development 1. Synopsis Gobby is a free collaborative editor. This means that it provides you with the possibility to edit files simultaneously with other users over a network. The platforms on which you could use Gobby are so far Microsoft Windows, Linux, Mac OS X and other Unix-like ones. Developed with the GTK+ toolkit it integrates nicely into the GNOME desktop environment if you want it to. _________________________________________________________ 2. Features * Realtime collaboration through encrypted connections * Each user has its own colour to be identified by others * Local group Undo * IRC-like chat * Shows cursors and selections of remote users * Sidebar with all the others having joined the session * Syntax highlighting, auto indentation, configurable tab width * Multiple documents in one session * Document subscriptions * Zeroconf support (optional) * Unicode support * Internationalisation * Cross-platform: Microsoft Windows, Linux, Mac OS X, other flavours of Unix * Free software, licenced under the terms of the GNU General Public License _________________________________________________________ 3. Installation Please see INSTALL for details. _________________________________________________________ 3.1. Dependencies * libsigc++ (>= 2.0.2) * GNUTLS (>= 1.7.2) * libinfinity (0.5.x) * Gtk+ (>= 2.12.0) * Glib (>= 2.18.0) * GtkSourceView (>= 2.0) * Glibmm (>= 2.18.0) * libxml++ (>= 2.6.0) * Gtkmm (>= 2.12.0) _________________________________________________________ 4. More information The development of the obby family is coordinated on its Trac project page on http://gobby.0x539.de/. The primary distribution point is http://releases.0x539.de/. _________________________________________________________ 4.1. How to report bugs Bugs could be filed as tickets at http://gobby.0x539.de/trac/newticket or submitted directly to us at crew@0x539.de. Please include a reachable email address in your bug report as we often need to contact the reporters for clarifications. Commonly bugs are scheduled for the next major release and will be listed in the roadmap. _________________________________________________________ 4.2. How to get involved We urgently seek all kind of people who could help us in any way. Firstly we need documentation writers who could help us crafting a help file and some standalone documentation for the web. Secondly, if you are skilled in C/C++ programming, we could need helping hands with programming. You could use our project page as a starting point to look for tickets which need fixing. And last, but certainly not least, we need translators who get their hands at Gobby's string templates to get it localised. Thus more could use Gobby in their native language. Just contact us, if in doubt, for more details. There are also two mailing lists which should provide a mean of contact to other Gobby users and to the developers. * obby-announce: A moderated list used to announce new releases of Gobby and its foundation, net6, obby and libinfinity. Please refer to http://list.0x539.de/mailman/listinfo/obby-announce if you want to subscribe it. * obby-users: Discussions about Gobby's usage and installation problems. The announcements are also posted there. Please refer to http://list.0x539.de/mailman/listinfo/obby-announce if you want to subscribe it. _________________________________________________________ 5. Licensing This program is written by the 0x539 dev group and is licenced under the GNU General Public License (GPL) version 2 or any later version. A copy of the license is included in the distribution. 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. Copyright (C) 2005-2009 0x539 dev group _________________________________________________________ 6. Development To get in contact with the developers, either use the obby-users mailing list mentioned above or drop by in our IRC channel #infinote on irc.freenode.org. To get the up-to-date Gobby code to hack on, use `git clone git://git.0x539.de/git/gobby.git'. Patches should be filed in our bug tracker on http://gobby.0x539.de/trac/newticket. gobby-0.4.94/help/0000755000175000017500000000000011543672437010657 500000000000000gobby-0.4.94/help/C/0000755000175000017500000000000011543672437011041 500000000000000gobby-0.4.94/help/C/gobby.xml0000644000175000017500000004040411543672437012607 00000000000000 ]>
&appname; Manual &appname; is a text editor that allows multiple persons to edit documents collaboratively over the network. 2009 Philipp Kern Philipp Kern 0x539 dev group
phil@0x539.de
&appname; Manual &manrevision; 2009-05-10 This manual explains how to use Gobby &appversion;, a collaborative editor. Feedback To report a bug or make a suggestion regarding this manual, please file a ticket on http://gobby.0x539.de. The application &appname; and this manual are both licensed under the GNU General Public License (GPL) version 2 or any later version. They are distributed in the hope that they will be useful, but WITHOUT ANY WARRANTY; without even the implied warrenty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Please see the GNU General Public License for more details.
Introduction &appname; is a text editor that allows multiple persons to edit documents collaboratively over the network. Changes to the documents are instantly synced to other interested parties. It uses an algorithm which does not require locking or a central coordinator but instead merges the changes on all participating peers. That said, &appname; is currently relying on a central server that relays the editing actions to other users. A public server can be found on gobby.0x539.de. If you want to host such a server yourself, please look at the infinoted daemon. As it is not needed algorithmically future versions might be able to do real peer-to-peer communication. Support for editing over the instant messaging protocol Jabber/XMPP is planed. Depending on the setup of the server, connections can be encrypted through Transport Layer Security (TLS). There is no support for user authentication yet. &appname; is cross-platform and supports so far Microsoft Windows, Linux, Mac OS X and other Unix-like platforms. It is developed on Linux and regularly tested on Windows. As it is developed using the Gtk+ toolkit it integrates nicely into the GNOME desktop environment. In contrast to the older Gobby 0.4 this version also supports local undo and redo, which means that you can undo your own changes regardless if someone else changed the document in the meantime. Getting Started Starting Gobby Choose Applications Internet Gobby Collaborative Editor (0.5) to start the application. You may also start &appname; from the command line: gobby-0.5 Main Window The Gobby main window is split into two parts: a document and server browser on the left and an editor part on the right. Main Window Setting Preferences Choose Edit Preferences to open Gobby's Preferences window. The window has five tabs: User - personal settings like user name and user color (see ) Editor - text editor settings like indentation and auto saving (see ) View - control how the text files being edited should be presented on the screen (see ) Appearance - font and window layout settings (see ) Security - controls security parameters like trusted certificates and encryption enforcing (see ) Personalization Preferences: User tab Text Editing Preferences Preferences: Editor tab Tab Stops - The Tab width setting controls the display of tab characters. In conjunction with Insert spaces instead of tabs it also determins the amount of white space characters inserted into the text when the tab key is pressed. Indentation - Home/End Behavior - Smart home/end controls if the Home and End keys should move to the first/last non-space character before moving to the beginning/end of the line. File Saving - Text View Preferences TODO General Appearance TODO Security Settings TODO Shortcuts This section documents both the set of shortcuts denoted in the menus and those which do not have a corresponding menu entry. Gobby's Shortcuts Shortcut Action Ctrl-N New document Ctrl-O Open document Ctrl-S Save current document Ctrl-Shift-S Save current document under a different filename Ctrl-Shift-L Save all open documents Ctrl-Shift-H Export as HTML (since 0.4.93) Ctrl-T Connect to Server (since 0.4.93) Ctrl-W Close current document Ctrl-Q Exit Gobby Ctrl-M Switch to chat (since 0.4.93) Ctrl-Shift-M Switch to text document (since 0.4.93) Ctrl-Shift-C Reset user colors in the current document (since 0.4.93) F9 Toggle document browser visibility Shift-F9 Toggle chat visibility (since 0.4.93) Ctrl-F9 Toggle document user list visibility Ctrl-Shift-F9 Toggle chat user list visibility (since 0.4.93) Ctrl-Z Undo Ctrl-Shift-Z Redo Ctrl-F Find Ctrl-G Find next Ctrl-Shift-G Find previous Ctrl-H Find and replace Ctrl-I Go to line
GtkTextView's Shortcuts Shortcut Action Ctrl-Up Go to the beginning of the line Ctrl-Down Go to the end of the line Ctrl-Home Go to the beginning of the document Ctrl-End Go to the end of the document Ctrl-A Select all Shift-Ctrl-A Deselect all Insert Toggle overwrite mode F7 Toggle caret visibility
GtkSourceView's Shortcuts Shortcut Action Alt-Shift-Up Move viewport one line up Alt-Shift-Down Move viewport one line down Alt-Shift-PageUp Move viewport one page up Alt-Shift-PageDown Move viewport one page down Alt-Shift-Home Move viewport to the beginning of the document Alt-Shift-End Move viewport to the end of document
About Gobby Gobby was written by Armin Burgmeier and others. To report a bug or make a suggestion regarding this application or this manual, please file a ticket on http://gobby.0x539.de. Please include a reachable email address in your bug report as we often need to contact the reporters for further clarifications. Mailinglists There are also two mailing lists which should provide a means of contact to other Gobby users and to the developers. obby-announce: A moderated list used to announce new releases of Gobby and its foundation libraries. obby-users: Discussions about Gobby's usage and installation problems. The announcements are also posted there. More information about how to subscribe can be found on http://gobby.0x539.de/trac/wiki/MailingLists . IRC channel Questions can also be taken to the IRC channel #infinote on Freenode (irc.freenode.net). However, you might need to be patient due to you and the developers living in different time zones.
gobby-0.4.94/help/C/figures/0000755000175000017500000000000011543672437012505 500000000000000gobby-0.4.94/help/C/figures/main_window.png0000644000175000017500000005500711543672437015455 00000000000000PNG  IHDR*u6fQsBIT|dtEXtSoftwaregnome-screenshot> IDATxw]e96w$^!?V]uv]-PEW]]XqQA)R,$RH/3d~i?nɝɔ;)w&5̹<>Џ\oB!B{z];Qǵd'2_+{](sR'B!8ؖN<}.~S!`) Wڷ] 3Juc&#^!B! @qQnTO=|domdĦX!BI'r?zѼXlʽO8ӲI;%HB!8詽\v߰zQ]sÿΝr1u$2&N^h_F&E&9+B!Dd[+4ҽ.14)4,X²miZXMȫ1#-\NuT/bd~ ţ2Bҙa3.meO85Hs5*d˲ӉAR{g8uh2,+XOxL+U ..9=rcB!yԮyg `$Hwc߃2?3Gm>!C- nعrP%-fzaˁ~OY,Y1zL"d;[E-ckT740 ˲mp8d9#l}J/^c !8f䡻ɊO=ᅥz ^>wK]Ϧtr}F#kzߐ0\JP׎q_Ŷ_zŲ)n+thFX<ө yGioocwS UյضOFÒMBptwup* <IoIH̽dݻ/߬o~LOos.%罏p/W4;ay\rCk|T-{1>9M-ʕǦWQM c&c>WidU57\1oVnb{}Sn@2mMp'nųOYeYD[,7kfx\Bx*ꩩũL ?~.|7tiW&;|m],wpVnGY^.X;@}t6OVcm)mD֍_v9ip`v^"+fmDE!Ni"hp"[2`뉥}?ᮧ2N;}ըЫ@ޟ^O/>ka2#=$ƶmlf$vڋ߉f!ZbY岫'.FTơX83ɾaq8ztip;YT U i9Dڰh.}gƜeq;ChNnOcv{B>{qኚ3φh箧3 ws| u@w2ݻbY>$<,>|J"#;Pµ z5C$TL;fޖWǜ=~Wz@K.pP)SQQTlr?@<s/~NJph8%Y BnwH`&*R.f/e}Ҧ 68T[:!iu.i anUZ]|Bux!n[P'`c !D+%+QrtLz}c)iFefr Xk1-;7 R{GӀ~IW\3EjO B1 UU0j>?5$p^F>)7<#{6qMCSaN4BŲ>˟*끾MJhUJ+\膍!ks1Jw"јUeNN !D_}o3|ר.w^6zh Z<ӽg㨮T!}6qˆJs\2z!2&zc_B!Ds󭉅B c4 =~Ec$)B!pٗB!|8*^h3۶B!Bh8#Mxnw(d!B!P'KB!b;PK)B!Bπ*!B!KK/!B!D_`7Fo7UvB!1@ӯT,YɮZ>}}=! c܏!BQ>FeҕL۵uvm{2Ʃ|_zi]4}tYC~oXwO?8."(}m7Fe/!BQގʮmKPMO)Ki_?'"u4cބB!D9>.Xik:''SHB2 ٛXz g;~^]@y#wcYV4:?|ڿn|{]pܵ0}]+F%ݥξ]twǜ~yXOf2̸W!B~۶Khſe6z^?\n7_7K^Hӓ淿CGg'y<<~Ӻs&vnέF%m˖.aVc#?cjsfZwZ6l| ۶9o2X۶Ya#眽v̷pmᥗo/Ovq ?#?#?#?#?@e8.;`Anܧi7|ǟ|x0hz#qg>Euu55O꺇rG?^~ӻ?mugeƗxv{dug5joݷP]]ō?بW!BL~Q)]GZ۸(elAg66꺇rSQUoOg2\I`ukxn{w.^{m_틣iq2}[g̠8S)B!'e8O^[S}9uu#^HPS]&fϚ:ʻלr7}cSzllw^s9|<ԟ5s&g?ro/MTWUB!Әt{jn2pm~?tvv|+v8V!B}_kGk9sg?: n򓏙c˫qo܋J |>li]WD"YhP7Wt 罴|] \q٥|k*Y;1ĥۣ򖓹&Op٥QNB!̔ukϰ~[ tj$E+V B!t{ iGd{;7^a@ɛt >4UJad.B!'UnrKO_垾L4 !B@Ev11&B!5_B!B1VFE!BQvFaxb!B!]*t!B!NP .~Uk!B!@"9fZJ3 !B!xQ':B!Bї*B!B#B!H"B!(;!B!ʎ*B!B#B!EgWWI.?oS3Z;:;b~Jx܃. ֶAkDT*E n:M$LqqM!!Fbx|xܚpR.^CUUl&~%{5 W-nøS~6)vmMx< ]43B ۸֨$ ,pr OOtttt:NmMx&qLM^^CcnSU>H-_ }B?7z}$f0MlFs8Bt3_WwOɧaX,UH ݩPrS7mmqd2NgaqlذS#:@3˲un(t:9t0 '\6n͘A,²}XL v ѼeYXEKK i 4vjʾL&"]]A0wq4\#Ye˘j@O%@O'ad2TU%t:qMQTU6(EQ*}ౝ'ӰŅcH҃vDN$V<9^s"gG à"{[M#äit]rXv׶ RBan[1){_;NJ0sxltb:aD42V>PUޣs(A*~24iJ&.PɎॐL$phdv+0z@wl@Q.(NG WDzаPl3P(ʍyo:T ]t-3edtˁg0sCk[t8q:J:'֕N %"62 iӝW5CNpedO 5@N<P0H$.aiA0ĶmĔLeӅ;r dLB"HI%ػh4 Ͳf͛ˡCTh}PTl0ٳh\8f .&sMC_i'~inX,V}0 t:mYTUWaµ%9x}^tۦ2Ť4 (c6a`+RM|!H x`0ib:P{H{};FMsYɾaB3ⴍ$ʗjV BӴnZ}m9Jyդ˧WU5,  oI4M,>a]7ضuX6dH8tK0r#r0z:MW{;sCi4U8o?-l [\ΊSQ*,&0~f777w^b3Xt锿&D4~{p1 v{HSI| XõiSI,B\et&_`1 ۲r /?yk)ZϱAQ˺0_ܔx-l֢6i[UUKIJ#)ٴVA @U4M;!n=]݄B!55r8N6"jSg6J"GuVz _yj:&8o8Ȕۙ~s؊|{<LӤxEUe%MMM̚5Rh.lwq"@ݻwB]!Xmep 0t۶Q_J:DMTU䆩-\r>/=s}TtH,ߎ JnO  e`[B0tNtt: BwcaaP}*Ɠ/ ycfTU% N èBeUd@0;0M`0x&(`yUVհ{׎^R>K19-aP_퇺{7B0v' T*dT*IL:D`:x O%\nP,_h:}RW} ѿ6!Q)jvN>h8ZP3iSHB:{fN$ٱ(ׇ=jV4 K8TI$!vO7Wm}{w" e_fۤR) f6( g6ky=++Q]D9{vM 5qj*u\Q4U%/0#O3)~gLɶm2μ`^E Ù&].xbDroV_@( +*m۶q{={Y^9V+vݾuɽ. ψA'lԉ3rM!N~ӑ0~ i=d2H`yݞBd?@gggaeyޗbjr_i6V?#2 >;}N@Bsmmm3yvSM =/NO*(QSf,kR**BQyEFPٍO h;ӛ۷t v2'h`oRu8W˕{aEM^NpQ[WKMmM!0WcgKz\V-AJ~H}Nl8+.4/X]rQe)b*@@ӲsKUjɮ)8DQ6 8c8*_r|Y l rhd$Ge`|&{KQ1dɦ !B!NxQf~N˜Bo㝯ڎSu&e(\0ISS=BLEQP-s2kc9?1i:Vrfsr&{"]*h9@hS6> Cg7h=L:BshTT0c\յ 1;R5A0\ɂ+N)wVz:1Mƹ ^9. D/?ϜE8p8]4/3/ھ%<>?kι` 4hkib7ig&:bw2q@3:;)giLxms]֜#-1}Y$ۉNXju*hiX}y=>b=qvovlˢ+߂쓜vE8Fu{SϺtLfCW˶عemGqhfYekfZa: BouӦs+Dw)a7=oVJ:#݅,]u*.=I{~Ziÿ,ȗ`Me964֙N&yuӜz83BQ51|gOǑ~k.VvxT"aּEL1{8}-{mH㙯chHCc/˲طs+Gb%4ΙL@L1/ 8].,YWף f{wpow~/}PpMtMsNf4-{jP5?hc%q2D5 4}K" +ߋ 4 a[c}1̘o6N7lyu= 'eSzxu=3.«% 5سMm :{}No~rLf;gҜwsW][ɤS{;`mc:$@s8<'[WwG3/!N%m lЉG ;\P(,]}חE{RT~8s"ݍ3WؿMf^@U݌?,+y{Z>,XKAι䝤I\@+>&Vn*_CCbý^k7#m\t߁ n?زPe5,[}:`xhiޏ#8.ZDUU::ZQjf1Kg+it3iΣ7Nř`1 dcI"M#Չ ,;t<^/;m?=gg70t0ϩk/`4h73fΡ ?ȌYػs Nwv[ٶp%t6`HKW#1{^m=|eş/\BKӾ^xxwt1q=Y7Zt]ǽriRJJُ]P5V Ԭ"^&:t=SY] ~]P5 ˆHW'TpRK9\&xkchW^arpzN^?"2sB\31ƭmּżsT6בIxG!\]7*MxZFD:YpFfE&Ʋ^tU8|l5!Jt{Hƣ1I$VlBQUl*A_zND,mxs+X}&m `Glo%~*BU5z:K6FQ~ PmThӄjG- O>Oz&Exyq5^m8&KF$`g߆rRJJُ]gYȮ-rm̚G}\o9TVqҚuzfp^|e4W3o2]\&xkchW^at8ʤӄGz 2&y &޸*pl{u=oY{~\n7x|ci<^-4gf:z^]1KwEU-~Zc`Ty'b J&p]6dvypl"]h.X3O>?&MY$^4t'j39e4˲Ub:emʉ%yx,=f@vJ{7>wyH%bϓ$Np\SEO™]>供L Z禮~Nz(%OuؿMFg?)ŅW۶12i!k0˪hkai1}gZWJHmi<514?O/M2d;@9FgH>Ѽo/‰VY]ǖW^dڬMM <5uӱLsLof/fM9|1 MiڷN(jv0M3|-4LYnc)VShٴYڎ4ɤmt*m VT:ۦ/Ӵ6g﵌ʚZt84Fl9fMokB<փe[XEoʌ9 z=aL]C#oO06 hNpG>sn2x̞][_p3c.0O bMؖE&b׶Mp:E.z”R`G9 ٽu,]&n6`g RrGi=έ1 MUMo9B?E–WדGqy<֖̚^˙>{[_]+tƅ6i܅>vlD<6xf̚IJ{5wRv‹8w!G YDZmچF>}T@ٿk+} vopM`՚8g;e̚M.?]^gx=w1mѲ {><1 ,F*%OmNdeMP׵z2Xէo~׺ϛ{(5_yGs})z Ckܻ{ ˶=o1^dnymfa΂D5o]7<4 h@q2\&ӏ26^*614x٥\T"^hIC؎4t*' .Q!zh6-h>s.}F&E B#I>P!0<0kFs8HD%HB%()BQ>s 4`!d"Q$PER]*(N!ʃ܌B!BQ TB!eG!B!Dّ@E!BQv$PB!B TB!ewm}m!B!8A-Xv1 T5!D9gO?8D!8qrƹc!(JL't>. !goc(!('௨,i^. !ctBlBUr(BrgB!B TB!eG!B!Dّ@E!BQv$PB!BA'HSS3?$دϙ=sYw B!BF<|t۶ww'zUTVx>D"ɝ?)|Cysp!B!5@%T*Ś5kH&(²ex<(=Ý?1|U\!9wRE3kf#瞳_{ UUǓܲ6wR65dzϽP-ZO?={:+ַ]ÿ??EKK˰_M/oWk>|sO|s7d˖<Ѓ9n7{-xWdkI6db|{?O5}Ӧ<ЃٱumnYl--G-6r9g^_yXy&!y>1*IDATi`?w? z?w(~X LcS)BQN!i~y ömR_|1k׮{D Co 5pMG-|oozB 7}3Zߗoix<\{ǹ577}z~?ǟ[p3ux^ȵlZzPup)~w={sgWչf桇<ǀlrlikmӧ/:MM޷܏^I},NB!FjDai(@4Ŷˆ`]]]$I4TT*i> wtt0k߳f6kY3GC,fG9E^^"֜^ +~.{wn㵗s5nRyZ0ضZ{<|__W^{gm~9.{%d2ip8ضDuz}sYg`Ssf&p`'RT!i-O~syEE7ض|̚9G=^;o{dYak'@Ns0If(ƌ;?|1|?/̞_&n{6}f߽ܪo{nܸ1swg5q՗M89""&rR̽ױgƳ>ve٣st{~T?#Xq笈;gEi{†@A_|wϏ۶E㎋ؾ}{l۶-o7o^{1`6mW׽>9bxwѧw\4˜{ٕW?_0uJu1 S|ؼYώѿ8ohtIQ߉3T?{n?yS?oFoozU8!]g5rıqƟWϻ6F*cnjsL߯y! 8(ʵ{P[6ǖUEշOUwsjѰT;lhÒ /*֒ cБѵ{f+Ư<~9|*lk׮'ƺubݺuѭ[غuk{T-Z}D>nT4YoحG[c vy5gW4oأG8ĦMsΉٳglܸ1:uQWW彑Ԧ!c"n^ -=VTZ}fb#^ #Tt P*@:BHG #Tt P*@:BHG #Tt P*@:BHG #Tt P*@:BHG #Tt P*@:BHG #Tt P*@:BHG #Tt P*@:BHG #Tt P*@:BHG #Tt P*@:BHsl*S-Q*@:BHG #Tt P*@:BHG #Tt P*@:BHG #Tt P*@:BHG #Tt P*@:BHG #Tt P*@:BHG #Tt P*@:BHG #Tt P*@:BHG #Tt P*@:BHG >-:*c&Qu42#Tt P*@:BHGT4T?JMU4T>ɳ f2BICe+jLȢ2|6ʀbAq!a^w};=n3OUjɻ\CkZ:;Z >rh >=gJklϟ)rկgUO_=$Ki8SŵkaY3ϊÆC'~lq4n'nkDDĻ_sI|+_Z㱦; 9vT|ȡm۶uG?ig믿KĐ{7ݝNspcIq'Έ^zF{'kgύ >2.tnn3zx?Xx_cӏۺvhvcҤIO7onӹG=bq»c+#"v<ʸwcGuuu̻Ͽxg{~K?nݺ1Zzqq-Ǻ? z?NK:c%m|X;]CeٲeqM7_]tiӹJ/dVg9c}G׮]͈ŋx$8wѽ1gok=/ozj1 s/8}sfE+.ӟ^={6{_~;}~'w^={/}m1q4~~GmٳG]t[x{J.;*;~pW 1~|߾}b_67׼b9昡qOh1{^=ּbdק5%JF͛ɕOW͋;Q̘>'Έ/̞_&n{6}fNP\~UnxՍquwmJ|[7mw 6lx%oW<=ǜ<~\\qռx6^˯:N9kl@K**72E.={Vɓ#ęg}*=}1Ř1_0uJwƸ'Ĉ_?5ࠃ5,]#G]qUf^}Qƨccs3͟F1-:vІ%?^Z%Ɛ#k+ۿb^[^q]ƈ&x/>\X7ӷ5RZ{GxwPl  P#Tt P*@:BHG4*{':ёkHE8ޙ~mѵGTUՑHE8͆u"t]ʈ&t:R{hgW%ߕfwTFHkڿPC h #Tt P*@[xaխ{Dž >o>^mC42tBq/_@a2q/_@a2t֌{:TkƽZ5UJ Mf-G>Zvhoԙb#˫G&`7VeNwx%UȇcBjׯW73>>*"|`DCD5ώgTWw)bndYQ*o:vІZ[;a4v5IENDB`gobby-0.4.94/help/C/figures/preferences_view.png0000644000175000017500000007014611543672437016476 00000000000000PNG  IHDRe 0sBIT|dtEXtSoftwaregnome-screenshot> IDATxy|W#=Zؘ2YJ9~1Lgfne cfP1s sVOT$?Ѵi)iGy|& PMkhBY"6}aж8;ڣP= ! BI&.> @dguYwK@5-q):x@SتPکP:s65BjB|x;H:>X!7{I~-*h z1UQڽԨ5Z$! !NUE㞾te67<)1wqW8I m_~ԎhEYc!ϴ R ,J-UANMj)o$a@u͓ \AVB6Jj "6* )YҢ_~]aw@E{HBjIQILJh\Z `g)?OBѐh1FFIM +b^l"=D~G{k5j'>@̎tңV _(cBV!9pR>[{n\Vl[T-[efjF$Q5Mw }"lmrs1s:qWH ]ul!rCH(?򿆥t$To+Nڦh4Z<9RN}FgtnF=u8z(hRU*U_B芥D<|@ESdOOM*R޴6G-u؃^gw/Y~oQE_G#DR  i}VčfކT1ӵ#r4~ebʥz(YQQ& JX7$F7Mcr"99WoSU6$8*)^H.X3͓ܘՅj[;?Զmjϲ] #G)<|lq1Œr'9DVj+?# Z{ .½-$%6& (v,Qӡ T.nK5`^ƹ70/D!VP8YéIsmjuJnp]E#5EmRʷw7h?;p1(Vj%hxeG j㒠!1Y/)+߰'<_ C4'yK|jhZC0<;a`?@ JL1 ׵Q;)!!ТQz ʹfO0mnMOe7m )O(Y (^'[xYs 9߯#KԬۀA>fש\:@7̓VEߌ7{od x܍N/+!uR] @LcӰ#~.Rpuu%|߯h˿ʫM!{KI4X Ql!^PQTȼ9ؤ9Ak^Tۯ4~0Ɇm~3r[Z j>9;b)«mtcN?5ϥ]coJ£[gHHLdxbs,77۾ %o`1 liaFwnVr3%s͈$kݪwQƽmqDЪyk8~#^P'} wȽxzw̲}N_C#k9v=wa;I~^`V?wOLCia Be(Pp. 7oM m4ZD`5we{nd6c^RV*h9']W9Lb\")7xxv<6JqDt`B]nMY=)HB;%PՎw~iEMEۙ5|3!QI'ipWP#x7c~I"qꅜB6ZEk*R6=՟ Ej'Ip6w$_c>t# )\R*o"..Cܼy /jO!leg+ZVyƞҬ) -+q5Ҏ$-jMbOjoNkmmBWiǣDhS$*ܜ~ꕵɖ'@a)[1K--NjtEbf&ͻ>-96T>xgO|ܢG^icH5?U~X<߅39R^>r3Vfi]zƓ'u-=h5ZӕukfVzu}3Slv-VTKZ[/!hPӢc(2GXW'aa899SN-rOYOI[VMYfHlu[vˣ8]yqO4kٖ55cj$&&2vdj7ů||^*5Rn[ZQ?3it36vPʕ.Ɏ]{nתٲ}{rRie/s/{; *{] Z5q)Ъ{ѣU|$͚׋VB_a)»]ť(WQofqdZ c妞[! u}Y1 #"2Zf݆Mxݸx_]yrr2, 4g|*YR l~evƗ~?5z{׏_]/ޝw xfȚU)7!q>~+>wNWw˹p"ȁ};Q왷s8;φ5?rTYc06.V/"*:];6qJ;&?#s|ђgǶ lߺ;w/3J{ZtԾ ם_._Ð|޴cUg'G{jo\jlܶ ʞA|4?nJ{kzV;o֮ϴ'NfUڱH,]fvȰ;7^* 9m?ɪ&7eҔ%_.cc3VL23g&!!`;S}׃2ۛ_}ewpvvԏȚrig,S?hcteQ'G̞}4 ע.fZ 3ʷQ#S7WWF'i;~3ԏeL>ukT(8t4Gqu)J׼ &{k׍U})Y՗M "2VK9qZ-΂icXhZN=ObiN_dkHH(_M@-[֛kZsqeԈlu妞-VSnqvr!>fti3nxRѻ{7.]WW헝1r.'}hxM ̢'O/o0<0c`l6ɉFr-:»m5_KIN̴MTjRk3w~K}CB4& OukP(su)lcc;},EFE{\=SDEEU]}dTycytoҎ2߭Ƨ^Ma Cvt~ZWqLN*ʖ.{qtPܷ E2%qtR7 .x׬HTt4u|h :P8Zzw#"2R/rSsY+ !ZI{lk)jqDd%< >e`Ё}:/ZBXz=W3c3gmMc{^X2}Yt{tI]3#I忺9#5*U|YoW,kSU͙VБc|:m6{vl͍~Aq _?S iVwܡLRܾ}xbsukzb.Yi |x [6nEdd M}fHUoIs2J[,v_̞zLtEбM/佮t1IJJ_c5,~]z?`ozԟ~-ܹ[1WXM=GѸax8&-]뜴I͍۔+[&SWs ॲe$h(~^c㳱!!! aiX9ϔ L&E&B[: $&&s<}oAWo)wh5og̹&%%+W1zoͽb]QQDFEق%zm/\ok߲E3>[Ȩ*y+)?vNNI1F z~wR =%"*jhߪ)#kT'],q=V2%<,EW+eTT4s.uz3VnOLL;;[BoeꬹY>Wi~[-=1aHʕ-goScݨym'`P6{>m삳3=}CG ٣t3x]!2{tx;ܿycEQ!ڶSn٣T*ҧ+Ct5X/s.cbz!w2_of]vmZPkս/?E@Sfhg?q|)#Nnok~k6ۓKNj=ެbק6nag {[17|eִfal|F`9||%=ݣ+{i Je˔]&_0o`u~O࿬vlڽv}'+/Ն8= [=}acHi(-%gЗ@9so׊^̜<B<ɑRڡPˈ Mr2Jg[u ~V;h;S]~OC |q/={?qR5y&>NhZa-Pzmt?>fD*zWcպ6?XEEj?I(zIΞtۏOiWZ_@*Ui+S{g8>Vi3f59'ٺy= ;~lL> ʕ9^~Z~m2"gmRiuOzKB|x!NN #~ 9d՗/\Ǐs8~?&Es[V\q*T(^prr6?^yeFgG1..0j22>l(NNN4oP]+RǎI1WW2vH19c Ezܽ_T)y3_=CR%sԟO5#::|4FPIQаAL]]\8yy qҿ<~Xw%&66S^^߽w/2,ݓO׳dmJl ۤIw77u._+VԣjJa~_ IDATi NS&T*6aI]Ns. KhҸjKi޻GRtA?g^v,Q[!!ܻ;)Z=}ѻWw[_o|0|666,Y8 T*1.\T*9qo$0 @Wآ9; ꙌQucHJJbY֝\cbayzI:ÌYsrS|{ɓ8">Mi߂W{z0i4]ΔIx啗X~:k׮3i4H"i' \\]Uj54o+oꇽW+UHT+нWtD^ʲnsۃM3j$=zѣ;gȯ]A`*"3o0}є[ҩ F[`h?n1\qQKgҧ(A F]r+,#e 0_ 99۷:m!e }i߮-&MWPTTŋt1#Iي{:"O[ lAyڇ"B+"IY!$e!"ŠHRB+"IY!$e!"ŠHRB+"IY!H3̮PsQW_*+s\.(x NRNJSsɺ66Ӫ]G<щIsIIZ-,Ǖo}c1M 6Yq&~eZqUM_rV-_*Tb:mt)OsȈOF]}|oy@&jܸqѣG3p@u16[ٓGi2'D=9u0Ǐ 6c^cOsVc#"Xh~~5_`͜'[s1ގ%/9=w>s.` 3+vS&=vnAIӤ<~(܊=:`9۶}n|nŊ1~(/siBCCܹ36l`ɨT*f̘X)wpp %SO3s\_H||< B}ҥGDHNVmeet؁ϗ,eOpw7;v#_ ߺm;sf`ety-N9g/^\%uYDD$J=.]T֓"#=z0sLn߾ΝK.+We٣Gɵ8w8ZCBCuCoͭX0xxsSׯ\Խ7/]bM|b[7n4;e˔a;qttS45\ٲ8::fd:;wb , Os>`Qn|*k3,c}Щx?i2zv~4oFo0aҔ,eϗ(ڵM=EҮm"""ig<)[b]GSF}|Ѫu{jתayu!,Aۨ`b":ksb-0{×2aTO*g:ϴAL蹌Udsk׮ӻoߝ'E #.z~C ΅>|66H!4kgBd0uL BrrSg̢w$BXZIE]iն?jIJJA|tR4|DZ4!r$eFˣBS>u^׫Ec a{O!#IBaE$) !,VDBXIBaE$) !,VDBXIBaE$) !,VDBX-qɉ $%&]_HOFS9xK/|^d}򧂓8sg->~jבGu `1(0IYtT*ubbbزe ]1A&? Δ-S~b9dKx/ 2: VdoݺEnݸv*UB6Qivx]M?Ӧ}'6_MR,6v!B_ll,]vL0Fe;#Ux3iXy[HWĘqVjc$%%e|EoVYG*UNpYҎMeTR&]Az ]GbMߟ~ZqUM_rVfW|G||P II5j˲o3{eLL,u7"6^X5lBlj5ΧnT~&Æ ..سZϴZ7c?g?SsZ+I90}tnܸѣ8p`wy- =;!ؿ7ɝ;w!GcӺ5=yV-;~YҎܯ_h-G"8wW̙ʏ?[=܏`FkN9v1i4sqq_gf\| ?'2*Î_~pl7wq)믷duz׮[Om)ZK/}fN=Jbgs:Zrel35쬵ȾW\I@@!!!zj:tEp'66Vx/;8~ nnx3q8h)Nӳ8/~۸$NNN-SсfMh޳rel~mMT}zb+Ý#ԝ~~ّ昝W2>LW־mkLIDd$L:/S)׮\)hZ4j^"2*gѱC{2_?&L1o{C;&Nߓϐ7ڷӍ9"2)fꕛozṃGX' 9;SӋdqy))){2Æ0: c^[NcvZd_Lʐg͚EÆ )[l㔯MJUӠ1#GEgǶz9"wwZ /OO>hx4}ЩO_ `Z63?y׭StI\]]Ɋ96%22vmSEm䒓!E_sZ} gk=?׭CQzm}L``ѱgdhjr"j &&^޺N=(6C˞1|x!f.@_bB<1i2MDˈ{F\ A!AG g ȯY !)0Iٹ+v4:Z-IIy;(!Ȧ-ȗ CN]a >!ȏ$) !,VDBXIBaE$) !,VDBXIBaE$) !,VDBXIBaE$) !,VDBXIBaE$) !,VDBX|+zWw=gE/ O֔j˄"7>)r9\rV}} !^ >)gluTQ-q*rs6V3>Szc^ʴYӚի}+/ @ǣ8s, C П+2k>B+Iy899ѼYSBBCuei쏃{KhƸ3mʧq#'&ȶ$mK~91ah;'c,Wh4J%aa9'+wݣtRs3^=e= 1r4Gi !2)/ݫ;s-q௃7 [qL_L|diCtt -sȰ\2ޕ+ӰA}T*A/) pN? ׫GwT*Vߦ۫]&Xjd`ezgN¤)`Jxy1xPoܔf?]AHm3j$=+ +zsJfָ֠ M NRNJSsɺ66Ӫ]GXxB|:g *:111lٲ]a Zd4f@R;;;SLiҷOo܊OI.?UQIjuJ ֭[t֍k׮QR%b%x]M?Ӧ}'6_}7n0zh]~ }(>sgN~*Μ[ܱ.Zl0Nӻ'\f`,\FW%KyW .9zMpQZ d_}ؾu3'BR19gnJΞCБ[w~2Kݏ4ӼեUצ|Eo"*4ϗ,EV`Ӎqq)@JsaahՆ)_ћ>S(9gWק624̡xzM=BuGԣ1c@޽)WX~M,Q.[V1r8+ 'c }7b `8ƌϗB GZt-3o̙ӧ0wL/;?oXgqӕ`kkKBB.FG`|Ms2Sϡy@)у3&:fBB/\dʴ۰3X#z?Sjhji3fEdTSϢc$&&RaR C`71t@r=njۅ&p-RRRe xޕ_o'!!pO"49PTӤ1oٲe8N( )W,Mcf o!pV˿y׭StQ\mۼer=c:f,NKO\P_91Ct)_%ҙӧ2j8%Կ+49PmP{P01rlֵt9GѦ+[X܃\ 3rpmt01!ic4{3!th׆Z,|qb87Xa77$)+ϴA&/.ȯYCu6qMڶi#ҪmG:Ւ#/ZҥJx|yY@VIZG,s5?Xԅ|f !,VDBXIBaE$) !,VDBXIBaE$) !,VDBXIBaE$) !,VDBXIBaE$) !,VDBXIBaE$)3Qѻ"_NLLd+u.߸Irr2nnnZfIiIs+(x>)?|p;mZcooǙ+9IBlV%Kp?]ަH888аA}r=^j5~TZXA@6T^,;Zml%vxWE9z츮+9eտBXOʻvC&* b^z߶o򅿍n9{uԱt~s/4x~In^ysz?Ǝ3ݑ핋H7;!eI9""7b&*M'h0LniZ쏃{`Ok2>l(NNN4oPb)<ϗ՟Svww{DFFY"1]]\@VGw6mlvvvԀ3!eIer6ZWVhP*o/OOBo&:RP!ċO_ :W+UbŬ]G'eP IDAT0]2Kow̙ǁҧ߀l)\0Oi<yꏔ)u?+X͘EJJ .E]YWo)L2gMWTi >MWQVM+[q_~E@>^N/ZjBmP{P01rlֵt9GBX1otud/E"IY!$e!"ŠHRB+"IY!$e!"ŠHRB+"IY!$e!"ŠHRB+R`rrbqb̾=~BioYR޹*tHBgV}JNJSsɺ66Ӫ]G~b|q^&TR:qTT%mjsSAc*VaG'06FckojlB< 2)g|!M>7n0zh}[qϽܱ'Oes16[ٓGi2'iY_\z~{w/{?vlߺk/dmW_soɣPTlEa7glBW\I@@!!!zj:theee; bp+VcGe3Ӊxzё &⦷y&M'Ef¸1j6>cmȤ ٙOF~<1ۜ 94tܙ 60ydT*3fQ,c TɒǥKTť))oUߏlj^Mn E6z &vm؄k.)1c@޽)W3͍wPLBo߶yxs+$ _TfkkKBBRsQBw~ްO y汉G;}y̙ xf}wh׆3gMTt4f̶Ek׍_L:{x!S?]Cʯߓۻ︦$@ ZޢWiQTܶκԶ֪WZöںgmgq^G"D Iy$oX{Nr"#4Lo`S+ڙܶ}G}+ -kbL Y;wRk=a֔@Ycr* eﮝ6Ѯrc8k{中Ȉk h?{ 4hˬ)rrrafI3g0v( V[ծB=&UN~tLQ0se,KϿ5qhǪ]!zM(+&sB0__k3 !nO !-PBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPU*^^lS[Y?$ S>AS&QXї:KO[\ř~ّboGҼUC !ͬ/?͙ ߏdSS)}9z,EYZoW^oVK@N|tuU;qQs۱af *:izjxբZ4h܌iT}Z&~Tᝥy8y !M2taU2sv(^իoϯYLѣFΟ2%h:r!+|7(&# M~\~a+OeBX6l١]|۷qܩly !M7+W&uu~Zoʤw)I!OOLz7ǎfM+[mZf gͺ t֕ŋY!T\ :w{R ?wwwE֞"gT/oK,ɤw'dX[,Q"ғ|Bx"ωÆǟFY_m;Tu==ΟfLFZܾ5){6z}{fJ^o4e"'hؤ= ?t:]=r8 ? W>1n(*UwЙ [ZkS4({$&v۹m=V]-QByy=\(">w"#1dTb@Μ=GBB7n0sV0t=qy lh߮-SKzjŋo텣SG`סʿ[0rSG`Bak$BE$BE$BE$BE$BE$BE$BE$BE$BEc q,@(&iB/^:HEO( -Ӻ: Ҫ]'?q߶Z8fkpy a7(pp^>5:111lݺ=3sr uΰ Uh4˗eJӴIc OBl/5lKAg+nBhLL7իW\jժɓ'\z[MlٸҥJYmBrٓW2uT6l6ܨYËSн_\سwZiO4mRlٗ˧^ޤ7/uIگRfm b'ac޼y ѣTmUW+Ac_*VjLxo^PAc>[er6ȷ9UkxӶCgΝ_v*TJǰfz4ZMoZiϱ'w۽pE ye6Oo^B gϞ͵kט4iÇq=ueiDǍظv5q*Em܍bi3hˉ#8zh*VdVp(Fg⥘L&s|€~}7y}QX)o+ϥ*`=fߞ_m;~"UCe:ŽUKMz|[`U?B?h(we:qmZ3ie\,yByժU4oޜׯpA֮]/GJEƒ,ӻ{.ݧdLQ>-h2.+ 3-h2[Oz;N>z{o6n?3^ƞg@>9h~… 4eb:~0bŊ9{.{3?D⸺2?bcc9czΜ9k1Ho^š."""ҥ ̘1^Oppڿ{7 4>]1{MN4kɯJQ^tGEE'Nk^K*^xժýnH;j0>^ F0|`\]O(ZheQQє*Y8r]]]ILlOyώYX_|v3;z^y֘dwܧOBBBq 4уrY7iŗ1=(q#nܠpW#njo^޿+qQ5- 8yzv.\7odv Ңֹa) exɆ 68{< aæ-=~lƌ(峂}1sv(:Ox\z\zGD0%hzrFè=j8..ٞ[vm2{s}f ϟWfdv Ғӹ2!)CCClٲnB/*Vλ׻ߦsCu <>^K6hԴ9 CMݏW_NBٹS0!p4l܌V[6ΖйKW_d%E9yMӸwAbn縱ӹ?ye+}ç25dzW7wIYS>gK?d1d(:kCvm&+W?h({wjy"'a vcq!# 4hˬ)qrrafIA& ph&*mΜѣHH0038ͭn^c7'vf%դtR,^ZuvJ.ki/m[`OsnBY1)<~/MںȍoЯ/zy"ݞB[$,*",*",*",*",*",*",*",*b3&&Bi4pֻsR7|(D߽î~p f!L%3NK%hׂaTfl> q*U=hdGFGerF %9~p/%SW<~:eŘH+tJ2z8B(()z$}uo]F|d:q FY! EA1~DRǜh^FLa NX,]U e!SPVONѥ[7^Jn ;<% e!S[) {;a׮\ ޣalbl{BVCz ={&t1;8k -b++WгgO*WLʕٳ'W\1+ٳF-"}IA1PL&V}ݻ+&=wc+R|Ȓ%Kh޼ŋx{{{{{s…"HsuяZ퉾?;2o<J.o.%_|#66SaOz@8P?~<]taذa|g7B8@Bcbm~so09d|aV\ ƍzUr)^uN:EjdBQbtvOjժ,^C>ܵkW̙Cdd$̙3nݺህ# 4OZm(/YCQNԩѣGYdwԯ____|}}gϞy8b!Dv=ol]6m!GˉTJ6mڔnF!((8*!Dnx[7FKΝw|,4INm6SU>[€#o ,ȊePë-qxr X ʖy:e!xi8yU*ۿۄ&V$6OQHsiU*N͇F:Ib-JvPGyz>)ktNPG`4VB%1)&2ʔz>uޕ;Ӷ-̘8QVB8K,i)Z41ĩ6: o(:j;BMLF#8z0|($&&X}W!žH( !H( !H( !H( !H( !H( !H( !H( !H( !H( !H( !H( !H( !H( !H( !H([W-xa)K'!rNwy/3EOLKѢEhdY۱af *:ihcmnW:#Gm3qFXz -ZQû.;e+D8, 'OzzjNU~evls=rQ&eæ-̜j._f-ߟFٳk'?l… ;Or̙ׄKzu9q]̼IznaILLdoXÆY?f4KѣFΟ2%hzs5VePWgߞ_Yr;~iѱL('g8;3y⻩{Bʕpqqsڽ\|ERpM+ ɩ^nM~%Jij\(F+`u9weiۦ5kmp֬@n])^X3kz,=ǎfMi땫2] yzRӓ)R (T/Y`0nFfafp(׮JQ#cO0"y;!sۑ*Y21Ν(N +WJQy-ZM[,bFOAFF f=KKA Ggggs}M)Y =r2uygfRñ'X0ogÎsc@`(^,iy Z\]]yIo)ʒ8oyk\8fQREZ֭ٝ"EYϒc`ma|v=!B`0qs ʕ*eRLF#`00 Ys&&!s榪Z}}V˘oe`<|XCϟ->^8KOe7K<~L ߯je3\||6aG2}TTҦCg*/N^oYȼ!#Py Za }!*",*",*",*",*",*",*",*",*",*b7G~FyP+G~<^vg&n"'OoohėV:ALPŋ縝ծ-c"݄}{`z4İuVzɁj963 r+$n^@N"s_vFcbN^r UVhL|ɣB͞rFCZ RjLo\>sFMYJF#s}D^?'q.C9?dgڵkL4Çj,ѣ+?cOeDIDATslXGôjϔi,w֮":uhGACٽ{/kVԉ#mӚI?#ؿ/'}TXY\|w)oEQ]Kً=?nnT -NQv۾sߒk7 e/|gϱ}۷?^Oȿex\}{>ayWS.]ʦM(S k׮4mڔ5k֘O;f8V!!iԔVSLZNQCxx ..ZuťS[f4GanëVT=hԴ9O}Yk*V(r|21K]ArzowCѢE=/?~8}*K>e.6m7˿R ܍m9{U|q>SNA.]شi3f@2 hJ,i~\TTuCՕs%ori=|'N$d<Ξ;ϓ'Oh2(ʖ)nyVQ]Kًʔ./rfl_.7""#ТUev\}>}7hРOG{m ͛7nݜ9f<}=\x'(J)R¯Gزs̮G<Wč.\(?nXUyC(^:o2BsaÆ;k9ܻ{3+x*-P ?^j>WL iovČ};1sv!;lV#=fSl͵xblXMg~ޟ_$&&rEƎ`.ϭ?O2!)CCClٲ/ pwwaf hO:qvvvD]~~Nlfϡw]zǫɴqcFQb%w_ J>`M9f^K6hԴ9=~l3%s-Z(׬dm,^)Ç~Ww526_["ՉO/djnܹj0> 2}΢\+W?h({wv3amr/ 4hˬ)rrrafI3g0v( s+5k [c7'vf+c)]~EsLuL5vʊIÜ5 ![hמ1nO !-PBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBlPYUCYr?6&ɚ !( $th]ZvP ϋ/Yƚ !h4}#JZmWz=qkjYa״Z-f׬ڮUCYF݆lR!BPBPBPBPBPBPBPBPBPBǬ꣘F>рFEӡr; e!b2C䭛y=jyHQ4lGhU/PŽ>ef|V8~hGW\Ocb:tFŘC9:u_{Ka0$9dBI9ۜtNM&0s\AEQz6eA e!(/%RDNI( R6ӏ|0l^!khõigtܿH( (, 常8-h!6t.sFѢh4`2)HGI(I{G߶^ { B8% +ǏQ0 Z'hA4<={Jr0'tĤ5 GG텄@AAQ,D_\|:PLh(IʉI6S+FFԦ;: e!AV&˾L(~/4|BPD4`JDS7$NE ~2ј?ʔkfuLHGl1!i+*xt7iCuHڪ0$kA6ʮVdǑZ%P$m_XEOE}$)]M)2P u^cŴv$tTR iu?:bԣRؙ?bq",CPN4\?rl5O(SJFtyQ¾ؤ~RN+WҭG/ސݿ™|4a{q䟗EBYJ5UabU8 y(v%(D?I}巏?u }̈CV<< ӥRg]u4%xs{hѪ դac_֭h.KLL$/zb<~XVBSqʭs(׎3I6)Ӫ!IivѮm{- v$7o1Bsp&8֭˖~gΜmqz=!seOY7R~Vu ӭsp/ܼӾG߷A)\.̴)ls^Ν܋G =\afO}bŊ{~٩ʕ\'0IL0XTטU_OYsFg;~ZӒvi (;w(R ǓhJ/f~\xQ/Y8.cKG4=|yڤhWX|L^& e!@VV{ESe҃v/@; ww.GUB8|O抛[)r:9 e!I( ^7Pži#=+De:C e!Fx\'+T`Φ׮RTY4l^B1Ή{8 ټ‘Z/AzѻzB1VKAOOZhG1t_iN'}',hu]ѻPKBE$BE$BE$BE$BE$BE$BE$BE$BE$BE$BE$BE$BE$BE$BE$BE$BEzB!iڵ z,Bᐢ#o0fD~?pHc޾HLH1 !CJKX 󷽚n]QL4ObDGaL4~@ݳ(35/)ā@B9Y>KB8J , _IENDB`gobby-0.4.94/help/C/figures/preferences_appearance.png0000644000175000017500000004244011543672437017617 00000000000000PNG  IHDRe 0sBIT|dtEXtSoftwaregnome-screenshot> IDATxw|Se_ini d"D|-  PTTG@EPF6  ]y( %B#g\IS>ߢkd6.\pnjYL};BDD ˝̩3IVh gσ[԰FlMтǝpי91^<\eW{|;.tRzUM{ǹZam'S ),MwDyf0(_X'A Gf-Q. G|2_qh@'8wOKM( U7+n %?BP$e8ggLkNč)^G9Cb;[z~ 5͞ $:8wѫU} p[nR2SNI9q#gna7WymQ]坻i)[^qc ,Gl8jt'Ovmݢ^ ےZ'nO>_{{8v㟡t^l^2/ ݽx>x;fUPť;r.^,fKr% }E0pn65溈 n/Zcd7'X4 d/O;T8 Ï~Rtq,J]%2 v#zx1sG>w6l (X.F{˕Į>T^&j{!ܿY7:xKs*YmEY>2o_$" 9u %99-S!"?:i%Q8NdAb2l荾5w{&}Y~W} N_dr|&1}W+Z!в,5n9z lN_a;{M+Xn7gb4u /I9vU*$,Q̘W{Q%Kn_7DPhn_&Y7nhn ft{SP8Sl0mT ŝĝtT8/xk[Ͽvsd_ln mSчd)ns2!Mp3I)a/:uk8}3g:aYesO&]8_}# 6lpBɂ DAm6*@;$;DHkز1q^l+?ͿY|ý%kdkr@ųwt*Oz x~`$oApG/F]mEҭ.z(O3mL{lc+.GϜf!7?o:#eN'Ŋc][ʷ -w9_ B4 u''[#ޥxZ-jF޶|4T,ęd7J ໷,`xfhTgO'СIJ{p4!珱[&[yey- s:|` .fgkfwnK8y'9Q&]qT#yC.ؿ|:waiEJ1K _Nݬݿbva|OaW?|MֽiL-mѯ`ƦhZ h/KӳeyZ(yO" t`b 9ۮt%v2YW]_Rx'""*W"..J|mą~L;cV*DrJG36OFwgk?ݴ_0QL?@OV %.Q68&BD$\:!""@@𒌝rz,""V],DD$(ED P1BYD e(ED P1BYD e(ED P1BYD e$H<֯^&~׆J`;(Z:U~ gЦʉgΰy c,)Ѹ؜_Ln(_I;nYY/fHĭ9=+nS4q,;ͲהWfL ;KvPvv^KƲ5Vs{nm2cܘ4!n58_ai9!e}&_&-#FBshquB <5fG $9:Βt|*W[ghcb-,+GNYΓlXv-jMk͋u)ظ`YXn;0敱0x|2ϫF_7i.W7,JP+nQo;[7vEfHLLx;vk\ٺ8rcX\>6_δO>J#0ַSv}Ɛٸ,"11L7sK|4:Ukj<{y7~f 1NRX.|g\.III|6c&vyk\om:Ŷ;<~3[mwЦ]qn\閏>GtEGyoXE g߈9̄.7ٴi uq:=Sޥޕװa**VK/ju,~v˘lܼvmZ򉯽߲roWg5Jb)V(m[5hҬ 6Ï?Mw׹|B<--rĉtd̨;/=Xg>T6n){sVf~IoxqfMMk5eYn|k*G໯'XګNVy 6[)}Dỹv,<S޹1We)ŸynjTJl5iԀ?֬Ų>WsI,?дqC؃,-vaMN, :ё 7{^6/JxxqË|˧Ϙȗ_D`OҸqcN' b BXX%=rQQQгl|%"#yi`OW_eЀg,Ahp}{?O?΀~OSHQPNtKZ/`s} +ZbԿW;=N[0]/Ҙ?~׺}FGY/֤aVm1p:̟#5hܰx쁩m_p'unt \Wg^wGKe/Rӭ$&n{Lxeoo> d@Ҵ1чc~6ͫbE ?[Ky^2xv2z O^4:5aXM7aيU)\*+Kf:5Rxi@>І62;~A,J.Yw^:Չ3(={R|(Vf|lJDEy'͐s[[)X Nj^_9]dDwBkmszq;!~;eY޳iفDDl\,%gx~Zs3{xwif.];Ow?/?EEFcǿo۾QժTy7 |iF)+΂X|gY~wƁ_֦wc-tCd誼w]yi86nDٰi /=wwl7hvErr2ۍ>w0 ݷmACGx3;i۪^#3n:?.T ;wߺm4IVͳ4f˲IC9rF eXbQ۴o˲h׺LxF ҿd)->?szi|SҺ4E_gƜY={pM7ÏpCZy[;Pz-{anN*+u_L^\w]ڴTɒ~zǞ˂GJCчy}ʻԨVc{GּڛD>'0y38@F%v_;- 0גG'#N`-s svS-M?x{\26S/9bb(W4u}ث?_}_llu7OnͲE;?t/u{3gxٝW'A{Ufxyi苼4KƁunb77SON;j0yʻ1, {\A'DFki=73;e˔C=7͍Z-]CYn93I]wcǖƼ/}(I/n7k_]-t"u[ݗJVi YwZyU]O}a:}tz֫dq n9}iy-}& ǖll;oʹ7rd(^yE6[=9Iwʆ3j@l6 %no e5泿',)Kќr8Y׬&cˈicN8}2'v!dnhx6mf{(D^wؑBk&wfٺj7Ⱦ' tъ\ ]/SAkJklm7HD$`pgWT(D,"bA""Q(D,"bA""Q(D,"bA""Q(D,"b|WUjd\Dj"_r].۶nJ#:C7-" wߧY6TQ[[f{{̥Zڢ5im>)WAjhtm 'OâiS!|94oE5ŋHkCߠ}6cm[b7x.i,Z?%L5U>l6 g?6[sY_2rtmm۾?n <-׆/fЭ#8N?f_6|-JbE89>mx+^GPPwſ~}&44R_CF)g :%m%J{|!Ϻ?֬eߜ>}˲8zX-.)/^FEE^69?Ok2i«lٰȵhIII|w/i7#GrQ^?]]. *DRR^ JD\;}t',7̝>Fdd}M/i4o֌})^<=Ǐe䘱<ܥQQ|m\ ߖ.h졋o}?Ι]vrzl`q8쎜M:>-ǎtD<vGDҨ- f7k ׇ˕K)[<# ׿$Xb W-YV(r}YaqD`Gu4a[+HJJR(g;+: dvەCI'Y!mc u 9)1611L(M\);E;{; IDATr}P,7)U;t o(̉בh wE`<XV~ɉDfױw׎lˏyYfƎ}sGL(g'N0q,':DhP&vyMW?wrk+g,g|VΌ䜌3g1dpV‹CaYV<{NOSlf|6RJr1XoNI㆞rb*}_.Uf%k~1k6c_өY7nKǰ(ά_΂; +V0xJNXX1noߎϦfT\vd˖?= "j֥Zͺ za X-yW[nks\L}ojD5`\JPr*:.\ίĈQcS5j?k,id_~eT\77ci=tѓ*kSJuڝXJHH\&7f=?|~_1%%&PTROɓX C1slv9 ˰=-Y[]1c&>5cY5jTgG0cLs4vMwB;ƺu8xk׮#!!!ÃbJ9 kWѦUK8S>a$f8p'cY77mU,1쥑 xUrs \j5."&&I_ϝ`ع/_1=l۶~C?>y=ӇM0sg[>1uѓn]vrVXJ 2r+~ڤoX|<h?T6o·sfͪe8NƌeY "fżoDz,_~/f؞+A|9kժVZ_jU5@5M HL}M_B:71r ǎÇIHp0?֍-nϙ-Æ xX s֛rj,fN',+WqM} Y<,aCy~VW_ۧ=o>EJDERP!0ƒYN1T=218[7l3(B sXd}}3wXyd?~1kg_ ϲp`Y0I?WOdט$2>.Zx+Ԯa̜ەLJr_ gz3,v>`g=6RRR<(U"TIIN~: y$)ɉ|3wcG#k׭ca>P2*SV2*8L^/ie11*s[ƒYS&OwgS(X Cy[}g :a2n3g`+66k*Ὰp>L6֝?bE qgۙ ,Ŋq/5)[Xn+ -W!5֓ػw=+V mBҥ8zsS.?e =js߾է?clٳvYKj՘:e2+~a/ š#2SxXx!oZK,_cpݻ}pyg{ZO֭3˯y|ڵǯ5~ĄDy6okrW3ekᮏƒԪY|7=n߮5ǎ#668F2۵7m҈WM,ѯдI#cJk̸ WspBwgcltc^h?W'=۷ Arr2npL 8Aw>4ҫա}[~cq_{a޳g}²,N>MA/21l~/}g{~dm9w{ NwѭSlܼ˲ظi3z>="Ps9=؉76އp&MޯO/iu{GZޑyS޴q#hߦ5eѾmkbh8Pvm:uEt'[t!*רȬדStt-AQ~blތ^}S~cƿ6qcFf8/q] =NڵںX_~" Ѭu{^׫>օ֡KԾ>?͛aY/Gu,fLy웑Ӓs(4>ҍ{tߧ~k͍Z-]CYn93'9yH6 ?ɉ |6|'_~Eطku 94r / }Nӯvg|BE/{lehuF}ѫ_y/~оH^}wPNmʖ-s 2fH""YsLy"L(c]H_ʘpɢ|r}P6Uɚr}PHU,vma\5?m`9~,[NEDr pFfFeN_[ȝ,"fٹk')顤C~&,_+֯ݟQ+aQ$I'ׇnHb4oݎD,,HFl L@3Ne݁38gphNED$K e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD ȰlMOv)"r4 KrfӬeԨí-Z3qWRoЪmԨC;U=n+"r}(0qoۆmVLAmW^Üf2yxo Cw۶n]\iw/ӿ@t:hf̚O&44 }ED ,, p6**@,qdESH!oZ&>ӱ#hIII|w/B k/2t',7̝>Fdd}M/O=[Lyv>'"9PX8پ%qn][G.o""$O_% e(ED P1BYD e(ED P1BYD F?, ˅uۋd͎fwhlݜ8vK%nS<"FohX86Y>]VXJ2tW%KXj͚"(84%'e9x`6WJJNID pPAֽ$rRx#@8\n7]9=tr(eYN"riLL<X>}!lY:[p&b<ʖeNY$u-2 eH׭<X F׭<z/"WO c<-ˢEl߱=;%/-{mE 5˲;n<}>C{Q e4}qEӢi٢g݂?Z UC@ קϧb*~Z8Ob3y{`~0 Zo٣;L}k;S;S%$&0p TYj50IHL𔗫p=~9oҮCGlwſB6X*o3jrM \DB¹w[ǩRT㑮݈'%%2bhԫO7)KIIfԽTp?6ya9wf#28пgy&;e-ٷmӚx֬YeY,_GѦu~v &qP4-~L8٫+WlX6Z2š~{6aX~W+WfsE0in=zҭk֮^KPZFzS>7ٶm;yz{*7o9_f2N'cƎcϵgvjTy^ZUٶ7M e,&dm6(>XSGǺaO;y2l`ΰ!/0g}А:u7LSv$sROvL~MfnxͳTTy⽎I`O47PPA @fz.ٶddqoՉs_9 6SKOtaZiu ѣ,X'OR 44<`$eYҥ "}"00 c+[={V}ר^SR3~[C^bٯ?y9 o<-77`:u z#g>-_."3iDEFd*^w7oQlڼ&M_Y^[Rwkݺejzt과}֌;8bc8no綗SoAl߱dn Θq'..ѯyq: d} yiWx#ǼC;~ѯN=p= >{loA9~lrҽs1mc&ч}0x7MS0b4_1fn@֭I.|rl~+g޽/WqcFzwcZtN>M-yWOO藇ʸ98w?,z'NNaYO|SXGCҽ'111/_'s-e/oYr]ٷ/ӉNwuvsoKs4Pq zIN; COrbMn=p֯JغauNC.Ѿ]۩Ӹ1vH3>NOƩGYZyo=zCwʖ3K[ eF_c{y39j:<ʖea\ܢ58[_hu<hNYD6?G>Z,a>m6;%Jb;(m#we箝,6#Ne# |lZ6φdaQ$I'ׇnHb4oݎD,?."f6 g0AΜN:>lvP9=,;_H$"(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P 6[l9{۝͊Ų %)ÁݞXxdIdg""Ffwph£JekUjcڕڶUw"vZn38eg""1BYD e(ED P1BYD e(ED P1BYD k"brah. l6;qŻS(a͉cXWJv4j| E±eWu^H,\)\e8t_֬XUhּAW?!<̲<}͎+%%8mЄuo ))I,"Y`[|np|_WyeY9=\jAH>`U*H~p w._ݻ_2?f oIwp\ ePNHH q"!O` t#lv, np+ R 4VN`%yGL(ze +"u w'OHZVC@ fqC҂9u6SؖHhZ8AhH}yBY$,~/!1)\hYle)]^Km~P.N:/w `RCutPv;[(lwZn0:2uY(S:qr3}!H~`:JNX Iư@ݻS*-[A=w|n}S:[v%'h">LDDLǓV/..R%zt0bI,E6, p+ߴa:IENDB`gobby-0.4.94/help/C/figures/preferences_editor.png0000644000175000017500000006560411543672437017015 00000000000000PNG  IHDRe 0sBIT|dtEXtSoftwaregnome-screenshot> IDATxwXSoX( VTT{mk[[ϭumZ:ꬳnk{ZuWD$ $J7P l gΜgtqdZM%_A)Q {{Uf@,~?x 3޵<8~^3ܸ06½Ǹo;1Cxrq+7qO0~npxr REmS3=3[ 9ǃ}_%}LeZVC"EXE]/K͏@9KR g7~lZ_"ɬcc_帩?]c%o:ɵ)y7˕bNhOXڧ _p%̞ÇPq:ϟvxnP'w}탲o? _|F}Wyexbhqw?^/Tpvz *?Zlg-7޵>Sœ}=mNuGrausR{ 6?1_wcgwoZaGV8ZM!+_MG)^ʇ={sQJx8%ҀN$Xscdby 0L#[UEr{yJN s۷C>EP EQ翣yٱCVəCv4/յ^(ϩP(+X^,Bjg=3ڕ͒䵇emS3n| ƭ\z3Iʟ0zĄS͑/DCqlYpC9Βi|) yˋ/L27&B_2. mQ{ yh"4͓l +X08s&l8e.AR3Zm.t:ςqS?K+~[A -Y0k\sؑCR]$; 8i~%tzE,k[#Ʒ}8J6qRx_,-yCp-.UMs-Ny̎wn<,zKc%ygytg\(1:|IRl}a~ .QEQwOqk[-ᶂ Ԑ7=^nXV{`oQOȒ+?V'$8ȠJA\IdzQY65&SᱨW͗Gwv]K;oVn&6G!UBA#(T܀".IO^XU;WOr|jP]M0_߷|>g_hv;Z&W\<>+JyN=}-Y,5FNQ75ErC 6G۸~'6oHAwz|ܔURD_ X65&%go) 9lqvrCc8:ͣe ofH¢MevaBݰ}] 2ه9;xUUQ 7i p.ǿA;CͰO閝݆(" dCbՋ < !H'ŠHRB+"IY!$e!"ŠHRB+"IY!$e!"ŠHRB+"IY!$e!"v[$"668(_v2B%Mrtd$]:Mȓ6Ulll\lrStܹ}?M$ԭNzc\.((w8»66668Q|UԎY;Is*BmMˮ_Ne(^,6(6x/=7_V1:кco){4|o\9O*;I9qe*ųimiᄟ#:mlz"Zlj.={VSFiiR)qYSs*LN`V7:Egu1etڜ a\gNKػH*cdNE7A[{4yqq[>C[{Ok)9ޙSPt4. |0M4JV S/퓲5؃ =Vxo~{4.l_k>K6gpaNJI?U%ɭOy͕J#In%n㩺޽ԬۈhN>ӧ䮱(r U⇕k5D7cs3fͥADu|PN>nq&|\VracN 鱄Ȩ(Nb)[oޠM^zo?|h(I%1j4QQ,[NJU0i|6s(XЋ ˶FqO?SƧ49rdsjcƌ-?ƾYnt1ưt͚ǁmEJ9ˎ?I>Lj4lښ-lחԬ5>j#"%Vb͏׸U6Ё5Ac ns#88'=?~°჻q_Ϟ3G8zÇ̙;נ˗]{'i Vʊг{WVVkp\Ѱ~Ok'\X2oMZ;w߿uMZZ;~'''>199~Ayɲq+ZPJ-Ob7Wn?aTVrjл M>>,iy/4lښ2?f]@R>֬8^sszy H|y!W.g6nX<>F36_%VdJc׋_gQAS={|Ejۋ'fzU_l*߸Mk8zh/j,2ϫزq W/2E! "In۶qqqՕ)_L~߶ؙ; L0ܹ]g`p%?48g.IIԼըV.(:>s.#(:Ν@U-6oOڣ(:>Co)I/u:~߳`rsA';GJB=oLJ%mΞ8u a/Ν;i-l% 0xͩo2L2W$**h;scؘ .KiEGnrgH/Ο}BlY#IY$%wٲ3j`57 "NڍhԬ ,iXcؘ  VZY8~4}qD/bc!:*[[Z6666fNaʵ|t9ٳggԮYOha*`\9˿0)7WWў}{0oE~Feɢa*>cc&>fc,^ۥ4[-[qs¸N#I=wܥxoݾ{}R(‰gbl %?|KDep= @ө6[2et̚(|1ej6}6Eїjق/LeLr [4>SY*/_ϒ{yg|GG5Wa58^ɢV4v{n$_^=sg*^_K\}*7wG̰AQ ٲeŋHj6la:msqq! x%bՒ (TQCPQ+T|DEEV4lۊ?loSv F,Ice];u6gpS'=u2@*nőпw1y.,7fh2_j5sgMgF77~ÓPAb8hKZՊ|l%EAqú|{U|&<hUhټ1ʔN=x ԡov͝Ǥq#;FJ&&=pR>EdqWly;3, E.]V"Mx SM3/geJΟr{ӱ{?"##pVE/OZ6o0IUzUSDj9oeh_w()o|7$0pԱ׺k4]Za'ҤQ}4lѨMdUw/l@@F*uc2mر7Ұ^ >魼ЗlUFKɾЗ^7&s\ߖ ~Uj7!;3J'=+e{T*2B93}J٣lg<~\ۻmVmI4SH/їd0MT{732kOk)9/yR™2MDx!kOk){tMBFUQ;fI~<)/L3ϟw)bs)Ļ.$(;pyUI3O 2^V2BX/;[[<{r֍47?B!66Х+JRB+"IY!$e!"ŠHRB+"IY!$e!"ŠHRB+"IY!$e!"ŠHRB+"IY!HNż}(a!ȇܧs ֍ol'O0y4N:Cdd$9rd'_޼sdBwU'm'&r |Zjr-_쭌-xwekQۇKZzLϟ'mwҬU[J-OY:}9sҥpt|h<*>6Ncmo_4h̒e Ξ;GvǷU{>;qIBd(:)GEEwv^:ؼNÇj9ORL1u7;3-~qؼ?~/Obu~Xh޴ ϟiF_eW8#Fs̛ͅ3'ק7k\o$ !2 {vmZpI5\XG}ϛ='44v0amؔn3[ޭ j -?'k.@ecCX[1!2 _ȧRbU,C{4IݼI? 0jUٽϔ/&윓_hOȝ;7...>NR\lC@ecCPƷ|ԁ'OA1eؤ(I&Lr&CSO>b󆸽gFsuK!!!Iql];w™yC_>rE !2 uZ-9r@0W#4,0fϝ@LYnAh41ܺ}5ȑ?m[m\FÊUk)ACx(A*P;M.ȸOL?wSg̢SO֭_.>댟C\]];z$;~flٲ1wK.gg>h׆1F ߗo_BF̀W/ Eѱ}.V^Kh. t * r;zxJqjU=q {ؿc4-s7Eqo4j!}ߧC3BdFŠd=N-JY!$e!"ŠHRB+"IY!$e!"'q66(/?$#S{#vo$LF%cCV=<򥨾 nyR~C;fA: IDAT":HRd4QO>E_֯d׏DsQ?J< F'D(XܿK6߫Pzc(:;;;WɊ󰵵`x$)g2ZV )Ke3=ZPH_+2+儷!O㷭%)tU-Df IYu JjiH0g#y8gNxhA"zgrbV7fzĔ+姡A;}*î/]"+eNzg${%Vpqt:- D ܼ~ T*Y)wNT"w[$e.V{.ǏܹsTTӧSHCN"E6cAγw9 ~ѾjժsdiDDDp9j׮͂ ؑٵN:},lȕ ghҸ&LzIHaÆ|<{p/^L ҤR MwESNj5F f$4iX\]\?܍#'Nܵu`ێ8+>3gѶM$mŦkO8{pv @ _w[fʔ)iӆyΝ;_TS~ݲwya]2mRx3gDFFR#~PFժ2y4v3XR:|/_fάI_3Ic2#i}x|7΢E(Qkz<1^B+2mR=c:f̦T|ک+*&SBy6oM: ȕ˙aC%_ڵelќ`y`Di֢ UT6(ݳ۵ko8Yx1O___Ν;ŋ؉%|Wle-lWBx'e=/5nԀƍ _ڹS}{%ugW9?_|C~}_d'wu_+V[lyi- <}Avmٲu-K3IrBdv>)G\S.>+,3mrɪeQ}ٶ %g<w V-#ǰ`,Jz- IYd@F^.Q۶`gg++dN,:EJFV'I9Qκ:*(/O2ĽTv,ΞDMw_Ms6 >!27Y)g2jGj˯;~jkᑏW, yzҨY+4QvkIRdlm锅>֖ :MT1o$L(66ȈdOY!$e!"ŠHRB+"IY!$e!"ŠHRB+"IY!HI1QDY|{, MF xRgΞzzio;ۓifٺvT]&-i[N$p1wcfΞ˔iؠ~z"XIʊ勹QM֍dء4idLJJsuSVěi/X @Ŋ?kXdV{{CXLߤżٰq356x2hݎ7֗qx2ԬۀM?mїiZfUjPt9 NDDA+VZ)^ROX=CSc.͒e?PjM}|5f<=T (U{/aڌYT\*|*T\5s|Dk4=o_*W+=KcOǷ>7asn&Wn.FuNɵAr >s_6oʅ34i܈q&ˆzH@@c..S^g/sq ±#سk'O6qh^|m2xɕL_\ >$)/&,Yлgw]ˣvTBCBɗ//fL՗m3'Ýlٲ1j0;`qqɝ;E`҄¤ cپslTVZM95b(Ǐԗoݾ'᎓S&k˔םccinܥC7WW&Oorԟ4q<;v܍1#Ω"}HRNgƾڗ~"?AmS1֗>aJ4O<)Ԙ^^y%>БeS7>˟< 'Ƙ;sqs:q`9Ln>Sˠ~pp6\`:Zi"-KCQ8zcs1\ٶe3)O;&? C\\^[ٳg'""Jr77WSp$;sqMi`MbX?S'1Ǖu~SB9RN# ;Ģ(q+g3~">x@ll,ܼɠ!M䔃;wf&8$NE֭e883ndk˗SHx3Niu|iR?AL6SZhƔi3 &(8/Nus0#oZ7GViI| >pB|5o^]O(\5_=hݮ=/^H>ScTP[<"͛2l }ә6c6 ={vgמ_~h֪ 0^~͗8;a5j'G?q4Fʤ/RAZ4kʈaC,>?c`.F0}ԵoV 0_ی;6ѮK?? 5_9E7 8sj,&FGE2mP&:]b}Bya<tHu_̳RVZL7!c^^3(S,X+$l9sѤE[oS47$W)$eE<\>\($m!2& !"ŠHRB+"IY!$e!"ŠHRB+"IY!$e!"ŠHRB+"IY!$e!"ŠHRB+"IY!$e!"ŠHRB+"IY!;yP'ðHFUv>)g䔚3 !@wA~Xr4jo_j˙ Z#u6d4kՖmw&KQV^K)Y<7b(bx WV׮*KZ0 ?nmu:K.n&xRAc,[NK!WKΝ?p\n߾ø ek׭gƬ9.UG8t(I?\sX<ϞBV^kx Wn\Md\tCy/L>ˢ -a.y&\>1"-_BX @֬Y_~k0fr9;ٙ1F$cMGGGu S4)}{@68|KOSo-tZMu`Ӗ,V!D˰{y0rx@^>~ @&- QK kn/^з {l?~@ܹpqq;i:dؤlJ^ygD;r\_&4h SIv&,\wZ~ٍqY{M˹+$e66ل:vݻw)^8ZmE}ʃ^6/=}O?{1qDW&.͆YKEv\=T (U{lǒe?PjM}|5f<ѱZ-}E*5(Q '"""̍mY@&h;~>ĸ $p1ooDzxT7o y67jn޴(Hx?&&i3fQruV}v #GǗjt ]S'w^ Ks!S&jܿ1cзo4y#W.IF0I_֣w?wų'9w8EaڌYϞ;=;8vOX7Fn2][pjs%%c''[7 )j!>1m< ?rYڶnI9r(׮ϋgiѼ)c[6GőErmƱ 01u,\DpHǎ`ϮmN:_^_젞LX).ͥsqv @TT>Ө(ji3'B {>uƩcGcլۀ5+h< Ev=u̢16v_njWQMPP!޻gr6Ϟ"W.g>ItLYV]֯]M…A3u֬æk4haKS:\<^yo;2՞r<ڷoϖ-[/Q̘12ptt$6^K9{׮ 22Je~PF4lXd ^ԉO7ƎtLy$^+a\cXr=LoLj’ҘۗrΝ;v,ժU[n|y[ٳg'""Ju1qqm/77Wmٌ{4Ύ(} 5...>'wnZʒ92͕~S\aś>˔{ʝ;wf̙.qDGGVVϸ ԙ6c6!!0u,ڶneNu`s& KϲVE`c&L )w38֪E3LIPp0A|9u:[S\Hvmr4 3mZ_`L37#1cڹxG}2)C\b5kUV@O o=c:f̦T|ک+*&SBy6oM: ȕ˙aCo^TX]G24t5xgNʾć|JjU {Av w𡸹RA6h;# x>^'Ncq$4x-RfP~C˗x :9Q>Zj);ś>T/}B&\1Ǐɓ)ftT$ e%V!D /RAu6n/^^;!R$YIrIf:(h4o6(a5$"$eE<\>\He"#,VDBXIBaE$) !,VDBXIBaE$) !,VDBXIBaE$) !,VDBXIBaE$) !,VDBXIBaE$)gpż}({%ożujӰcv:i2`oo+U+WfAɓ!0rFp䏣tqk#>Hy yÏYR0_BL}Xt9u6Ǘ: drt:N[~^æ*[?Gp54dnמK.)kiи9%˔vF,]EQ b8} Ϟ=I;hԴ%>4kՖ3g[G6lB2i֪-۶|yʒ% ;}_]K9fc]vż}xTYժDŽI_sžR\EJ.Ǔ'O?~L(]"aaOl_&X?@(^k͡oJJ~Xh޴ ϟiF_eW${57 [9a߻_ōa ?\sX<ϞBV^k?>J*ϝ?p\n߾ø ek׭gƬ9.UG8t(c@Jy݆M-*)Yzbd\tCy/L> g眴iV܍Vm8;L2VRY4n;yO dIxKl-tZMu`Ӗ2x YfVc k֬ԭS<З퍣#ݺt`::ӨA׊׫lu5\rvf̨F*9)_`o#St зw/{(kGkl߱K_ǮݥSG[zmml,{H2YZTW))z/qOs ͝+W<ח>m|G&- # /Bƍ,?1w<1%Q@y=<޷D| bڌL1^)[rzE/Ë/eaOPX1V3g~oE[TZŋ=%_oZIʖpuu! \]] ^%pwCN?Oމ.sS޷\K,~< 3~UN)>n!fڵW{ʖ% 'OXbj֨NtK>smw}nc,ZNk'l!SپDqOW^FaŪ5|QTݭk'_@x3"""8z8{ Գ)tJt~֜y_/FO?{E[riȑFü&Ӡ~]Ǯݿk<~iɵ#DFFhw)[kVʃCQtl߹ג'C OkNՎ[jࠦo95no_GF. V ϾvHll,k׭FxyO}$)ufܘQ 0}?wSg̢SOϤoccCN1k<za?3KS"hԦfK IDATߧC3Ezڷ֖,HL}~zoBd,VDBXIBaE$) !,VDBXIBaE$) !,VDBXIBaE2g_DGJrB%RЌp1oݺauy)$eM/]L֎jҤe[? { !e2MRV8u(_]ZhntT$SIv&={_/f-[V*WDQZZoVF^ ޺u}ǡ}V/$e6lBP;fA5[oaxbú˛O9u |[Oٱ'Yzz!D /pƎ'Mش~Nbެ߰~24nފ.moԌ%Тu;yS恟=T (U{lUkV.Ep1oٰq356Џ{2F񭄏o%MFIչhZfUjPt9 NDDALǎV/\9Dk4=o_*W+L_D!2I&T(_1'qewI6o+ҶuK͑#GYv^'K)ypwC,Yݳ;׮J;va҄ʤٱkwe󖟙Q(BYDD""&P1(EDLD,"b" eQ(BYDD""&P1(EDLD,"b" eQ(BYDD""&R$BNFԩ(fW+"f)ߛu>}$j6.\@ɒ%R2}Q+"|ίp~ll=;vWED "9}waλڣ 7Sm۶ШaAA4h+/-bwOфv;3uS$%%Hæ-װ)Ovo)5lJæ-IHHvOWҽW?7jFmL.~ zҠqszO>LS!"\eoz]{-k{:/w{ܯtXn&OeŇԩSWlr/W};8a+>3f%,4tgjN' GXXl߱c'+? Сߙ9^7n$N>.Mq\4l2S|7[mOWriw阪ThNj0>vxWh/b<Ν;Orr27mfy!˯nOCt{ @ɒ%7vj*ZVNU92o41%$$r6!sS"Rbr odӮӋǧGٵ#/COش[Nk?ymGXXiz+2| ߗҥK]Qsb /r|7|˗䇝m/xs_煅/ >!jVˇoVrz>rg׿K>[>mĸQXǶzSU>wl%,4)))4j֊f_JJ n۾wyu9]CezKuuykt\}bM>oVureYos,__jլ pאalݼϮ[(S&]gFͮX>v#Y]jתw̽Gѣ{7*U mva3 ߮!00AnX=T|Ey:'vO8t+P=Mp3˗,vc>Bx+Sr|v{߬ڔ{Nw9mNqyz̙7_… X,/ë^Zqq7.=E}2-{YRwNǻFjǟɴͥlY-iyrt5W!ꢗxWY"J(ɴOеKg]un/^C}54oތ*U*gYs"..U_WZc}sO3c+oSf݌4};Cf>ށaq?9vrfYV ٺyWǁ};00g_X\L=CٲYW'*ht &f(>5ӯ1b0xŌ56fT\9?~sg?s_Կ9y O?w3R(TBl6m6cbyffVvFN|s7#ռٳ9{sahmZhN>psWʔ ,1iݲw3n$w̚ШY+n睴o61F2`홎P<]{ٵ'Ùx#7̪=4}=SnT05w=wѤ9s #陳=2wdXbؙӼY'NxҥKqS.;mZ|OʍnFEꍾW_^ȓs^qԔ ̜<^,\>r ׭-H.>,h)'x },5c=iivf̞K+2\tzG =5U@VZUtEJj*ݺvvJS eetN7gP6!&7DDLD,"b" eQ(BYDD""&P1(EDL|O_9i4-)}a@-@BXH!t:8p>!pdjP2 "80E eB̞BC)[#+a>oz?=+yߩQ(bAԉhJ$v\W|K,R0b2xրdQȵcW<'a˺/H>zP|eϹ3ڲγ3;'^?S(5/""y mܒP'#\F)rXRߙҠi֨MZZ Usc~g,V)bosC9޷0w8 ^ַ׬t?r>}NԺ/8|p_5ĸhڪUfOu/X:M[wp.oNJL(\.,]ΓSg\nHc z r#$e.lߙ8g#}F¸4{jGZ.ڟPްqKbؐ)M3jsiYƿ3ngyb45kEfAc:DvefԿ'I E4a؈ǓHIL|Q|BB"v 1Nyeװ)O$999cZut :Dv;`8WN}i1Zu{mv _%},]Nݩј}]|'t]o䪾ܜC9]WChjP`[(PjPcGLCeȄ2t N+3:;e7_/9~ ^xѽI1ᡱ>X>?{11bPvmb\_63g%,4z`ڰ| ߗҥK_z=69xnV,cmѝSy޽?3?޽?rWiS|rT(_iONaO왳TRg׭r5۵fQdI4͛9|/]K`=XGLr *Sxq}a֬v?4+ʘQ#eyS_:1ʕ-S={NXfxʕ+ˆHNNf3-_Z}x[Opc8wC{wwE}K.'F4bNuԨ^Fjǟq~uKʫ,|y%Kd'ڥ3vfμo?.\pߗvZԹz ᫯мy3T @l)쓩-9AXXiwxfǗ*V~=rz,e\dS9o}Oր@\NNlN|pRi[OT?(lǟi7TZս<:&AǏ#88@RRRPϞMZvr刎up4:GM7alظGŽ-x<:RD iԬ{ÇEۇ]̧UPO>\Ax OS{as[z:S%9.H:@6;hsO_|s4i)WFÆZ卷!%%SLTK*δ<3sqY wy3vD4ap?TBl6m6cb+UkK]3 'YwrUC2t]Yrd)sf`ohԬNڷԘQ#0L8 ٵ']{R)0&͙|_{ݼٳ9{sah>gf;f4[РqsMD]s9Y8s[_v ܜC9WQʕ$,,?D}QV^w(x~ӱf`>ұ}[c[H;֮\Πx*4MDI>έhݩ)oݹqJ)%r/~q]_sD 1Gmd,GZQ뿤?>K%+#ea kAӶP"[9/`v 4\)HP\)"=h@vS(H>&C +M7 e_|dP),o6 }'V4_',ɘ#&݌VwzHY PQs~ۻV2ZJH62/H!DN=P:SyHaP)4IzӬМ(EDLD,"b" eQ(BYDD""&P1(EDLD,"b" eQ(BYDD""&P1(EDLD,"b" eQ(BYDD""&P1(EDLD,"b" eQ(BYDD""&P1(EDLD,"b" eQ(BYDD""&P1(EDLD,"b" eQ(BYD>F IDATD""&P1(EDLD,"b" eQ(BYDD""&P1(EDLD,"b" eQ(BYDD""&P1(EDLD," /jlI\.,VDT ,XWwlx5 +W2G?@*կf""bcG)^媖}UC~kGhYD4Jh檖{UCJWH7DDLD,"b" eQ(BYDD""&P1(EDLD,"b"Wc"b>ˉhr,ր|N,R. Ğ8^)V++T]N-*ߪ"E`Q&1@){j ;nf("t'8X֧Hf.NawcXq:ݤB' mnb+[ e\.ȹ3Dat+ kу e?`5+?Ht\NбmXryᄴm!7" /'+ "PNII!u"*9Bd`bbX,rN;b8RFjr)1R;ٕMo7Ȋ 0r0RN:ұp  V+`⻇`\ 4 ŀvip?R,vS,44_P(}))r`qBa](;v93=R '^;?HxٗˁXZߍndz .\,±:/}?c*XK\Ng^z 3ݐH)pOEl{ΟNưB[ӧ*܏4h3'1ֽ|yL{;r~\# e?>}NIM`KA:Xj4OǞkލOdYסg}ШYKۀ/3́}\+ e`qi$cDa4K!PTk]M&őrVuq0wt=]{vSl0ɟkE,z:.]E Iqm]RX{=SPZz`|R6_Y /} ,4A4mҘW_y)ˑrJj*=1͉hܜ'O%%5ս~ tهFоc$˖^p8|jˍ$%%i,"%N;FRƉ}Gvq;rk"{痳:үooؓk}Ǐ`Oz{v%GW? ]ۣl̙E`h|WuW\'\ןŜلʄy^zrjʖ|rL:Vl6N:͙3T\f׭#?9+VG'=k֚rKDfi[gZh8yE@!o^~}㋣e7q-hٙvEaa9}*؞KSRuJ?~h^y %K0Gy3ֳOr-}r-)E@NF{mg2K/Z L5, z`2coצ5_|5CS{ʕ-KtL ըʖ)^ߨa"aq<1u:QBr|=+VX /DEO-u;wkك_j.e[?ng{;,#秽?)9徽{2ksק{Iq拉a\8N;N{GHspA&Lz̔s)/] i (7V"}_`Yyy=+1~K>`+u8i> \p)gt],~u?"RRWFF3,ӶO̚K>ݣ;^߭K$hj^w͙^7zp /N:M͚qFrP|,0.`}>~i`|ȕ|z]_ϲY_VM^^\muN`[03gem^=ݫGb0fpƌz3Q()[B0ŒA0E+[BÀ+7n5 eyQ 'XBKZKhi '߿g0(ZP(K)b!s߭3W^b+H,z-;AAAD}jj렎ZkۤAA e)EAFBԡ{j6fc9g tRTVb>R(mATR2aav\}cj%88Ŋa 9R(|jBhWS BYO\BY\;I)E2Kt3M/ZI*E0JU8ԬU[KJX>0"EX@@ Ė7]8sy%? ZP2-[)E0J2eң7{*˥rXl"E-bnr/"b" eQ(BYDD""&P1(EDLD,"b" eQ(BYDD""&P1(EDLD,"b"V{_ZM -""~)>c'>Ʀ#- $"RS2nn \H>_ 78C?6Z ۳ݺwd}z Al!N0vc@%۷5QDD֦WdTŔ˧IENDB`gobby-0.4.94/help/C/figures/preferences_user.png0000644000175000017500000003711111543672437016475 00000000000000PNG  IHDRe 0sBIT|dtEXtSoftwaregnome-screenshot> IDATxw|б wE*\DE HQD((X+"H^.BYXR 9I}uwΜs;n6Щe ;""?_qᶀ<ܮ}:bb[)x'l+3vX~\ gN-kc{!`3'9s"'8qsߌۻj@~c`xct7`{sFԗvm،m]elKa[ICyÞl؝||ھZjPlT}8y&1>etZ6;yDD@IXmۄV]v*$}5JhH@IrCJ /JAO{:k.o@b]z 䳥ǸAK[RXV+ṯ60c5n\~MdXn˲}rc])'? m7ΓVc+b,[ObYɫ`UOTV@GItõ7KDR6 xi=pB{FT+8lؑu$p$IphL,HzOc:z wO^ʼ;T$#{=N^x[)QnBW}}5ߝm|BjSyoBK\ %f4N_" ,J>q} }Ien+eg}yN>FD :)YP/:צfnW}/[}K|JL\,#w#˱p IO^Iñ͑ ܳUz}pco.5^{\}M<ͮûHa f}8S wĿq3 m~)%SY3m;I5c=à Cퟝ2oZ_8҉HlssK,oM? mkyq8pW \1kTr+RjU5{N>'4znr9ۖLHp'.;cwrQn?Ql؀˙8;-Ya}R`z_یsnqd,] (U4aG3뺄yV;f3~LILE 5ʄ*%Or .:#c*fp:ϭj/tud[Wus)Z,~udX}?iy(rMkO3dCB p((JՊgnY]vQ+>E("@'[жza_K~e@ʁl $.c%!.vnߴg̛V )m b{l %ppr{ViP.9 qP#Ohh&2,_ hS#k>㦷RNo pSihc~?0 (`s&0qI;OEdXUYۯL[F?2oZ}ږ6e|oe宿Chٖq5XSnߎe~e`̵9fk6NTR7]f`@\ĚM)1~_)ۖmy:_i|]lٰeL)1~el=Jivɨߵ~n2Nu*\r(cz%ws(ۮ@4dz+JRR^nZ2ΎiJ*5e/;R߹s]9 Jɓ'ҭ;~O]CzcOx zqT lc/_zuk7˯fPFu *:<=7_~5 bx+ 48'du̜1UVy&M_Ŝc3}Yf5s~vJj|qc[ZUk5nK?ٱ4lڜM3z$$$ϹͭT0? }9g{bb"=ŧ.۶qݼdnhކ: o'q*.۶iNm߶}m;ܙc.\;u$< -iZ1nnKF>jLcQ{Fömvˣ ~zzyñ6kZr;55ᮎٴy=))^itC >,כ1]OOR8N 6?mR B9x GR*^mW<3DEEV>ɏ?gԈ+<Π4cg}Ҕ9r(sɌit >)ׯ^ KYzos;ٳ1-ת%Wr%ʖ.ܟl9Ԩ^ʤ?dMLc#AضMUضŁC=F"7#=O>o7Ԑ,^P{ ۲q#V ۲nO-?WiFYiϞlذm[c[6ڴbÆMݳϧ_ʱ(^dsܞ-MD ۇ%Kgxg'(Q8!tҙ͛xۿGoM \of ㉎bԳִnw_zNdyKk WF{ƍ ǟϟ;wpRcH>e%::[RJe7mTRkլᅢm2++,Q}3H1Ο+\Rm^TR=Kd>8rQ%=rgҬ+1ԬXt) a)\*]f-1qݝ|p8WϿ8wRgF }ڲf:F {".6u =J&4 cU2ñ>ceԞX^6[lL||vH}ҧ@Xq DGOeV.HޏЯ#ضͮ{䋯 }M*Uذq##F=C.{ <֗aY<֥} }jώIҥؾo&Oyo'ξ]/ -}+aȃ/hP6|>ޟzGDS(YxАʔ.yLx-SLYbbϜJ(}kGy%uؿ_"+F3>\߸ qnhuk:;}޽(_l]271*+˓qc۲|L2rOHp0ǎH]Gf^.h&LyLz]֭C3?%^VzwCNuQ.O WGi݊^Qzm^<ֻW4}]rZ06[\E;y/Һ%_‘#G=r^ 䟝|iu3/:#G2[dyڛ]ߘ\=FFnc̸ٻͶ1&oҾmlצ%&NF_JL^*:UyR#GdڵeԞHHH$((OLku)}v[6$bɓL|mrсPZ,ϑQ}?3}z>_](VEKrkt~gΜ^| nOZhΣ=Nzlw@xfK<;rhl{K'`?Ρñ/Wݺxۛ4ϛ~@ͱiӪ9MO5s}ztKs{?PfuN>M7~gM~{vǶC]\oF]6ҫĝ#XMgQY#F>8Ͼ0>%ӭ}Y~iNreС}LmIYEK8v%6WHN4m}oNqQV-MTVle&~kБm݂nNwUKmϯbGA^)CrN&֜ݚ2gsRrs,Yb}\|r? }3֔Y?땒˟{ɸgt8rI~e#!fe9]E3fk17˜.9N#JPncCB6C`:~^;%Hrp {vla?37/LF!"WET2ܶɯ;ED _Q,"bA""Q(D,"bA""Q(D,"bA""Q(D,"bA鸶J R#|?tnjee9sB R*:oqQMeiHN0> 7hn[{UHHN0ŲeQATV)o泏m|'lӞ5rcּ_Ho{Fgoo@uhwl Z>sjK՚uiwM5PN׮=zǢŗzD$0>fL5>b܋_./枻d+Gm>No{FVXɬ_ؾ}F}"UƇ_J8z3ňQм-̘wϿHsIHH gO{=GXX-n ={z>3=5bERhQ=5$qqqAz*"ܴIcfc3/BRR_>w #ʹU[J 5j {=% ^"9RmKJ5Ơp8yϽԬӀӉEV}QwEjS޶H,{bۦزa1%n۷څ1c Пo!O]:E\Ƈ]?q86$m 7.LxUN8I\\ X=zy)T{!su;vǎ @6oJʕiܨ!!<~ƿ%@L*vS4<|»σ]gOI n<}=ڛ)oMs/=;v˶Ohz͔-S_ryxLxUVYN<=l+"yYEK8v%6o֗@N?vM\Us~.?;qſD;:]X1{wң /_6 b$%%w>{D$70Ens[[9YlFpp0ժVIӺU.MDrm݊[t i _IDAT"K򅈈A""Q(D,"bA""[;x<ON"rY9t 夢P<7/sٷgY4EpgG qs$ e!1!Bū]p誖]a[֋3NtI>ʂq{ߴ?.[!K١q[W\q G+d7\9]J*W("bAʒmKDAD(WJDDL'BYD$W?h6*U [Wӽm'BFSzm8qqqV~Lf͹R4ǯxm:R՚zlܴ۾{zjQZ-|cc}ŗxskV6oϕ1Zns֭Y;e(]4o&jka$&&uWqQfMjéS|~_>eʔnOiԨ˗M6lذ![V*?1Aך?XfͷeÆ̞5̸&_vgӝc|=m*kW.m 1H><V-_̊ x /fvrt{'?usk[xj1RXt)gҥ:t &K. tI&n:̙ڵk j*̙޽{/^̬Yشiڵ's U(s!9JRь9o۴3=r8QQ(P' fܟ}6b2c3,Ihh(=?̆m~M& PB< .\EHHw{8{v϶ϭR?6]cƌx/^1c7G<|'mֻ}ԩ;h ,Ȱa}>3DDDl7nQQQѻwo֯_Er%K̴"!!!UW3ʼnlظ3gΤ9GѢ>vYR-[C|}]:vHڵ}8po1ú"##S~7oJhZ5k;ob6/!O gŒ?(Q8LFdd]f,X8jipIc^C ػw/ŋi믹{(R}n/Y$}QQQ.*O\r_'>=5k֒HBb"Wa>~>;HJrc6yQN<5|$vveV_LHH $8`˰/y̬})o |g%66ѣGswGGG3sLNʤIۻvʐ!Cصkn͛7-O{NhX(O Ν;Pﻗ]׶uKzϮ{Xw8x̘1;x8p cʔ)tؑp50`%W95ml/Xc\`f}ɝ~(Mxs+}|ʔn/]4D.zK.)Nc?N\Oޝ;(o\+""Q(KtBS(D,8ײW%xgRRQ( W+^xtynxIXAEp`.&;jVbYzk]Ng KWV؎@OeBYLeg.Ar5xٶٗ/~iN Yк-9]BP/۶-sW)Z$w槙T eCT l۔E6^?y} e9Gymy"3Ze%l,cymy"O,t-PBQ嫏}i-6Ë_~\6 |8o{k?I\Uj'%%1kؔZ?%&&QԨӀu0l('}ӫU}l lܛ9})_'2h@Z'_}k֬lذٳfr"Dk׮cucm~޶Ɓ~'~#˯8Y7Zö-o{ϧ|!:xGRT4_x6m FNTT$ !;g# %Xtǟ1z")\#?m4#"(Q8Fgw'+U$s%Oy⚲r|{<swޚk&S`!Fx-n & ڶp8|,:treˤKe˕-CllY-ayq'%}\te_(nFʕ}o޲RǵjwĶm~_CΊ%PDq>]ٽg/WU-""={R|yvKtV_}':/O\r_'>=5k֒HBb"Wa>~>;HJrc6sn;ڽ͖[ylUw>7b8q$=?vۭ3vcc9˳=ڧ9{K~oz#ϕ|>剕r عs'*T}ҵڶnIٵ{+V_8x+Vߣ/2ʼnlۦGmCĨgy˶<0q.f_J~UܓUrGhִ`>ޙ7K|Cir}ʍLܩ.']jOKkt)Z@Z_W⯾+cĝ8_.;wPX)D:K,^|!(eew$<2BY1O&GS(mjU$ L?LPsl d\6 e9Ƕ7Ջ e8<|w\β<882 S( VP8K_e flSLe<sTBRjԩǺKsXVRN$r8.[ZuTqke`(ULC%yO`!TQ8:WBY *X:bL[!)"W(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED~ e,˟ÊŶ6EfD*aEDpDD~ *a2vnۤղiNKRN#P nRD$_ }""Q(D,"bA""Q(D,"bA""Q(įf-"-[G=p8\.NeN,ٖYwbݟJN%JҤ鍄꼐BY$x,[re+pwnOb%&ijrBV,_L +$ٶſr=q8x.)qzVOYJbbBYD. e R g[+es]D$6mtޕ8 e|+)r"E=;[#=T[{rӝ\dyBY$b(Ǔ0k2%q+\8Nl, ,7x!);'NrtdhԎaB,R>u$EbVa] NWN $lـv''۝|ߑ@X*H$?I')RIJO{W - uW`_'[5ss_XGvv(EYt0 q I8Qfr[i(y-ru$a}(?Yo]6iε}zK:zǝGkYޮH`_씕;{j?yGs4 e@Z8on};{gWi?бSgn)͟(noJQ(T3\SEc͛‘8ogh96tO=ǫA=|'ËHZ5ykipլKuyj;ڶѴYs~v3mИJUjﱁ:uJ+e)ٸ~I>uߍ;WXu;7Ù|;G4O=Kpk,_S8Ub9O//}O2x@֯]zo۔7f |?V-_Lpp0O5eR>ux'ֿnlϟ5ǎQ4<Ιx*_W=oAei6ڵiz[hN{*/τqcm=|CTPG{u7rPl{mSsN:PB[{Ɛ}f QeL#0PNc+0 ְAA3cFo[6i?ݻѳ{4MP.#4D qSy(Fj#4IuMJֱiݟY7Q(s]"<#KsoZ" u"@!WSQWVɟ֙INH0&R(iЖ@TiKٔv_ҟ,GLD*H,\J9,4ڳBM?֔.)L2e S(gBY$_5@ʔ*EpIPP ̷׈/BY$s:ZdN,O\IM,\O:S(e';$m.CHp8.?Bū(Ug6x"y@F׳dfl"?s9~^"yHѢhwbe律.A!_"y"8$.E@r/"bA""Q(D,"bA""Q(D,"bA""Q(D,"bA""Q(D,"b'@b霮CDD::ڎs|)6f:/II9YH 0c;#718q,d/ ׳Zpɉ:ED2\)5ml_DD?/M2IENDB`gobby-0.4.94/help/C/figures/preferences_security.png0000644000175000017500000004565711543672437017404 00000000000000PNG  IHDRe 0sBIT|dtEXtSoftwaregnome-screenshot> IDATxw|W.vFd ˍnA2T(ˁ q,AD@B)+64i~[O]7K:ŵ}Zڹ3 ~QkX1PLgND a[i$&e\~bDBˇI:|OґWDTs }ۘNYsK/œt}x⋷bCöS2m}C.H?kGT&%1N,"sр+i{N"wns{)Xnmٯu)H=W)lˢEgqۢq_,< x<S^=m࡫3sm>Ya9ƺ=,]q~FgDnxy-~΁ XVYrpp0[4#z֫$ t9LUܬe.0sss{P:>]Oz ΚgTx5T:iG8[INͻkݨXEعWhlaSz#Aj߽@εޚsSj}gٻĬ25TۆZLpptzˑ.S-y)3y9yl9L9ƈz8Á4kޒѣG9}+-uڴoY%Ϲd:+0{;@kw1w7)wRh^%?0]=n˿{Qn'8nt|ppʹ11ám<7ÃJ@_?ƭ#ư-] FN&T*/<<\B-ٸt DʻKeyEm¹g@#| c{4yrܵ2~L9 $_}11*aضM@@ {H|A")+%VAio ?.]o22Qέ_T7o5'{ ۓJԊpXw5x!`c Lo"Δ8K?s^6.O`h{QҎ8<%s_`W\**h}| .KZZ*#w <J2Nכ/&217 c% g'\ҀVs\ ?gI)n>Jh&}~;S9OXx<,į^G0ks)2/+ؖE},ӦH dÇhڠ4sy1#1*~>Ӣ߹eNH9sY6p1iQ;T_V/%88ʕ+sojB:dսQ7@Fi[vQtZ<ڱՋgߡ$u,[ݽr'k"Ҏ"7d.<'@ٻ3C;[e=O>4lUc*A3ڬmFOU?CO^c]YeʑB;p9"!0߸3ydZP{7u%O);RHNt9QEʁk;XW!ό]q$Z rвv8hZ\w_/=>FNMjr}L Nή^;_)]vu8zgʹyaacBYʇ!ᢊ2j;ILLdر)TDz HbJyҼթ $26T qpv}s_nnc] 7 "26)`[18 P7вJh*8hY+KyhsikXlпeג}L9Sl.=kAWO"+C @ e9@%;.Je01_Wbo70mlnɻ^֮D6]Yڈ엍}/_CA^fU,+N"4pynuTmw|q"Rе:/NwsQ""gQ#T|._IIUyWw""T 3Vp8f_q""rrA""Q(D,"bA""Q(D,"bA""Q(D,"b.@Lr >}])tۂ!?,z&+PNIJ+;(-Ia)r ĚMs:U~8e[l?>Bۛfw9*Pgjji@trfY"=;2ۍk6β<,Uh31LIV d?UAai(G8_ZD:l^ʸ1fk*<8Y+.RNHCٲΟe,2.LĚJ4g Ǽ]O튻}&?L-/&lbM%3P]d , v Bܳ(kˋ5XS >s)љ jҼ n\WĚJ,g ec[$_kb݅Hg~}(|j˜眖ؼ"3mS]q ƶ|;Svwݻѹsgn~3=w/RQ6vGD emP۶s,lڊrɭsZu)u㘹=}3?-iX\`[ٖwAZj !j.W is-%qpu¯S'vk;"Hludb?Y^m׆O>[k9Ъe *T(_,OF͜yx_>-kI_pb`ٶϲl x~jשr*\z,?'执E붜հ1wMѣT&?[I޶fu5j7ߢ]ԬSϧFԨ]׻AW/|z)wZΔZm t B 0ϽmnϠ{؝GZwfs~KhަcjWmۤCҮS}!;gLhֺw]}]{ѱk/&?ϙ|al<TfϙÆԕqҁl_y .XcTX믽J,]§Y3_@N=xr ;wE3j]rm:t㈉{ 2fO{ZۅAWzxf4Gy \x lҾ{ϽYIrc{xٰa֮&88'| /ݢ}{|<3:`ݺ,Kwli߽swnK0n(^6 ˓ci:&*/)eԙNfjO?uڰ;ϦM̟>K~ZDppO{g6ld_]m+ws?`>c2{J^׮8U8_竅ٳw/xknzNcԪw?Ei٢1q֥۶طO>=Gm{>f͝u\m[\s`fϙcOeƫo=z5ӷ,ׯ˳S=j>|MV,>{23^{[`,S_z)aX~5jժNYtܝyÇ}>3}ʖ-ˢo{,^BE&?<ۖ~?.Y<~L{%n7S_;Fs;|Wc$%9 tzL}1ޜ9Wxsτ1׽+dk};Uնv/yzxvUs̓qqqDT3>6.P5mbJ:ۖ+WQb6ik-۹m[Sq7Ȥx X/~\k˾ ;ts]?o>ὝXFT #&6g.7ld-$%'hǺ cʕ pގF<^Y./ ţEvC3}ر 1_@@IIIp!m]}z3e <<~_E՝ իu67:gH"Wi޴ /Ny۶Yr<,?|)U˜+T Y;v?cªTaϞ=ԩ] ݻfT3>:z7U*[{|Dvm5{.7>g[jתwDHH0=v͙˯KSe=fi|ͷ|Ԭ]{^:Q '((IXٳ*}מkHuDre9v,}/{OfLuaaaDG^:9 SL\7CST\oӶMko!7\}QVM"nc+1i <y)>Eٲe MoɈop|<>dFy^Su+V$rk$g7h>f7gy\Й卾㯿!%%oȣONA&>[GmYx,.㱧+z7n-ۘc~_N aꋯwظ86gL֟+/>= 6..} /sAޅٶmzt1|;:LNqҩϿ*_۶"]:u(PMΡFDu5kDЬIcGcw)gpQ>ko?RRR "00{yyWue^fIH`׻8)g]ƍ_~M~\1Kbӽ}q:uCn{;~;n_F}Y'g?мU;]y ]t>}[t 5htrV xEޏm_E#m֮k,ϾŃ\r *=mjn>$#n_bUC׻n^qMC'ч˵OA[y͙ }{KѥsX]ɰ?:FOw_ĚOƙ+6t 7vZxN~ǥsZ3ɵĚOƙ3pH푛?/Δ gb'SӪ%˯rIJQ(P65XSJ?S>>ʆ3fk*ij3qO)ĚMI(PkE=e1X5dǎw w t: E)y<8)*NҒq1ٵ_66 gLDNLiɇZڲ)'ȿBDLtv`߬T(D,"bA""Q(D,"bA""Q(D,"bA""Q(D,"biԨiK5mYeNɗl˦ |ۧryIIIg͢lAZZaaa4iܐowևygxx ^C9k gHN 6ȭLz`"\|AA[3ߛ׶mf4apa^)ї/2/|G׻Y[LVU ehӞ᷍e˽}g63ߛEӬU;ݏ7z;_x~jE]gQ}ziƫi3u^MŊ s ˖`(>}g۶,_ҧPδ%2oZ]℻cݺL,k~_3e9߲igN}vj9Wp6O=-7cْ᧟ /^o?J7{"s]ASDS*Byq-[g $""I仭7 쏽}{C&{7CC{.оVoݻ/ҸQ#:vhOhܸ?+{-~H(\94Ls W^Ctյ,["qШiK={}]gV  66oò,9yu'"R7gʡC9t0Ny@3&3ŗ3oG%%%aĨ+ IDAT|7:|n]ðeuBܡC|ĝ|ɏ=FDFμLy~k׭pжM1^wo :>1]z$((vmpaޱÆހfևֳ7ujbmb ,;Sv TM`׵tEWeWG3ѣkg{ɲ)k_87h"(MDlGowktP:/_T e(ED P1BYD e(ED P1BYD ׬m˃"<9prp8]]M%>m"!>e~e=]tR5]Gh0|VCqeԭSބ+B)ɬYիӫw?B?4* f{D3p8x.ID rЮS7־Tr,\.cY`yJ~(gmrEiLLRvO_? Mrrrmt8Z5΢Z]ai۵I~]{m8$zx8z<Rʶm8S^ыʡ92tjZ*?SF7ltJmrYb? z`.=LPNLų#'Ԅ2\2s{҈܆mpATǁ={xJ̿))\S)>bZ=r߇37 =J?1nݺ!!ſ)1>gY+Np{,֭Czuӗ[קaóP nǓqǒcO;֭EI8'@Bz{pϸ?gU<&JM([4ܩ)2DŎ;ҿ,cxSS|` 5uyi3IIzw8޾ݲq]\.|UB+\Yտ0ۼ?cT^y-43i=j)Y߇+#p{73+s +z7SӒROBhKcԄrr3F.W 5r Is9&j;wEsVz9Ny=Q\9Ѯsw\x^5y͢zj]Ϻ%}mo٢9Ϙm,Y'=_ȱj+>Kɔ`(ov&մ )GFIؖE3 (1RsMܮOY8 bǎ]ҧ| k]W ǟzO>;ۖBppA슎f#g̙3]wUL;v"-Ϳma}>_ غm{fyz0vܺ4,cy|7nѶ@8h)9tS!a'س%n+Hݵ}pl%-vhRvL9Ng1M):Se8EFp8~p並le|Tζ}=g=6<"_mیqwO>O?[Pܥ},ZF ]I -6s%"%|eKѝkoYe NdV&=0K.@֭*BZ$_Ulќ@Z4o+/Mc63ߛEӬU;ݏ7z >yvtՇ?:|GfNhٽ4Uٴwkb йSG|meY[{M[g[XYrwfm~~^JӖm+}ScvQHib|(W +s;8Sh߾ZΕ2>g|~{?yGjɷ_-*sp%~;r: v8&GٲrvAXª Fa̙qc([, STDz zDJ)wҙ~޽eo0Egӹr@g9s޽ޟ@5 ]S匳L~nV c}Qz<8p*U;,,,}9O`` @P9DzK40L9S\wUCETx_2oٴ7g=ynxg y)sӿo_VM8 UTDz N~ƇCoEKjj["#ޭMÆ0i9@bb"K~[Fx FxYbbc9|8mS6? III4XfܘQ4iܘi/̜y 8z()))c #Fbf7Ty}X߱P%ӹ_"%/ʕ+ǔ8rh(^{6t!|8cIPP0ڶaü}p=!!!#zGʕ7f'ccO0v3o'DA+`lf7gO=&R%6=oܘض_|fQZ8Ǎam0XQ1^w? w:Kp^lcza#9J1[,[]~mm'BDLP1BYD e(ED P1BYD e(ED bYmyxQjB9# 9Uΐw et,R)RʶmaHiuLfMypض5W_u+:&!kEu\Acۙkƌn:̙=5kpp<+V䥗gЭk|J@WKq1wyv }LV- ~+66\ue1TYxErn/Q|_~ӰIss r'{ܵsw}rJ sc{вe lۦez̙7iJO(wd|2αlXyfu޶W^}W ?cͪ3S `:zm׎ğ%99X۶푛9ϾZ͢o_L}i۷\O?|˞={y:Fڲs~5d{]KZld7k泾yf|2A4&3>~s!ڂ9x bY#g|6w&? իQlY.m?ԪUDv#˸#,«1YTVwl/G])8c{h AAAB+E/rntWCn_uyG=ȭ[IKKòl00dQFl 3|(<zM)C֛oLHy;_.^5믽;o^7v~z<޶[wa-#8x cͭOrFq?ǟ"11U޵ Ӧ>w[ۦ cǸ_ƍ;f<Գd te_ YK>`\p5<-[D_1>N=v,[}sxH* &-%ٳaq;zm$jں=Qe-ڇ{vOC0 41kvҵ%9򟿥מGGq Lٶ/OHJ*A_Fm[NPD1*n:KԄ2'?RHJ3[zB?."tJ|(\tԍ~eú?X%3"rjN#jо}GCw99Pv8T\/mYʲ8\.C .rr( p)KpH.EDPJϷĉ e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BO )IDATYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(ED P1BYD e(EDNmQi(;NòVD( d.NgўdajsDԬSӊž; ^H.Pnں=-t,"rj4o۩H-P)CrJ31BYD e(ED P1BYD e(ED P1BYD Ek"bx}4'˅:S(beϲe.Dr:T FZ% GUgv eRqeԭSބ+@O̚KYj9z#()ݞ!R̶-f7p8]RrЮS7־T e R Wsuʷ "϶m(NT(l>-"P9!ϰ~ݿ8OH %#94P() ɤ,An2w Wq8XXnBZ ;Ra$?9;(G8ptreOdBY `ф*+z53Np:i؞v'۝#-$>!eʜ},-"g.o%$r@mW(oy|X8\stg:șΔ-OǾ,76x&CzPQ:AϦs: Mԧ??]Q[Ox\I/$9ؤ_S.IKp023 JT]Ҡp/~Y3'uآ^N EAAׅIIMHKQ5ZRAF8K(ٵk_۷u[[rѴl۞47|S. e3}BؙgT]ky(i [9һb2/ %{pT9aw[ @Ih;"a(ZH:ZEK[D rPb TӉEf:p)Z)[$ &KbE6aL> 3{Mó/Hhvʱj|p?w9{vQS}e%iɟPqkuNQ4swc{_d-) sre:4R.Qc׮' %%n bvM-Yʨ1c5f,?}șWb|uSt- Rr~n9|:e)]Z.:spof\}IÌm~|9f53uJ^3{v/;3^&`b-`ݶu$N¡ @K\n׺P~!ƫm[eፄO-SR9>s?mN^>z~j*^už/YLoP_@ΤvkF?Pqt{׺ȞqKn)+0'΁ԡbdڽ:߸}}HNN⦡Cy} 8)E!bhz:))w7 >˱3R(8@gGixxOS"a3ґBYΤ"G\|OIuivP,ҋ!}}YE'N KfvBYKHpB]#qi.6ybbv=h@gGݛM gKr$>EDpa@4BiO""up ԔH;$IENDB`gobby-0.4.94/help/Makefile.in0000644000175000017500000007602611543672413012651 00000000000000# 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@ # gnome-doc-utils.make - make magic for building documentation # Copyright (C) 2004-2005 Shaun McCance # # 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. ################################################################################ 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)/gnome-doc-utils.make subdir = help ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = $(top_builddir)/code/features.hpp 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 = DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALL_LINGUAS = @ALL_LINGUAS@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@ DOC_USER_FORMATS = @DOC_USER_FORMATS@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GMOFILES = @GMOFILES@ GMSGFMT = @GMSGFMT@ GREP = @GREP@ HELP_DIR = @HELP_DIR@ 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@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MKINSTALLDIRS = @MKINSTALLDIRS@ MSGFMT = @MSGFMT@ MSGFMT_OPTS = @MSGFMT_OPTS@ MSGMERGE = @MSGMERGE@ OBJEXT = @OBJEXT@ OMF_DIR = @OMF_DIR@ 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@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ WINDRES = @WINDRES@ 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_CXX = @ac_ct_CXX@ 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@ gobby_CFLAGS = @gobby_CFLAGS@ gobby_LIBS = @gobby_LIBS@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infinote_CFLAGS = @infinote_CFLAGS@ infinote_LIBS = @infinote_LIBS@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ 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@ unique_CFLAGS = @unique_CFLAGS@ unique_LIBS = @unique_LIBS@ _clean_doc_header = $(if $(DOC_H_FILE),clean-doc-header) _DOC_REAL_FORMATS = $(if $(DOC_USER_FORMATS),$(DOC_USER_FORMATS),$(DOC_FORMATS)) _DOC_REAL_LINGUAS = $(if $(filter environment,$(origin LINGUAS)), \ $(filter $(LINGUAS),$(DOC_LINGUAS)), \ $(DOC_LINGUAS)) _DOC_ABS_SRCDIR = @abs_srcdir@ _xml2po_mode = $(if $(DOC_ID),mallard,docbook) @ENABLE_SK_TRUE@_ENABLE_SK = true ################################################################################ db2omf_args = \ --stringparam db2omf.basename $(DOC_MODULE) \ --stringparam db2omf.format $(3) \ --stringparam db2omf.dtd \ $(shell xmllint --format $(2) | grep -h PUBLIC | head -n 1 \ | sed -e 's/.*PUBLIC \(\"[^\"]*\"\).*/\1/') \ --stringparam db2omf.lang $(notdir $(patsubst %/$(notdir $(2)),%,$(2))) \ --stringparam db2omf.omf_dir "$(OMF_DIR)" \ --stringparam db2omf.help_dir "$(HELP_DIR)" \ --stringparam db2omf.omf_in "$(_DOC_OMF_IN)" \ $(if $(_ENABLE_SK), \ --stringparam db2omf.scrollkeeper_cl "$(_skcontentslist)") \ $(_db2omf) $(2) _DOC_OMF_IN = $(if $(DOC_MODULE),$(wildcard $(_DOC_ABS_SRCDIR)/$(DOC_MODULE).omf.in)) _DOC_OMF_DB = $(if $(_DOC_OMF_IN), \ $(foreach lc,C $(_DOC_REAL_LINGUAS),$(DOC_MODULE)-$(lc).omf)) _DOC_OMF_HTML = $(if $(_DOC_OMF_IN), \ $(foreach lc,C $(_DOC_REAL_LINGUAS),$(DOC_MODULE)-html-$(lc).omf)) # FIXME _DOC_OMF_ALL = \ $(if $(filter docbook,$(_DOC_REAL_FORMATS)),$(_DOC_OMF_DB)) \ $(if $(filter html HTML,$(_DOC_REAL_FORMATS)),$(_DOC_OMF_HTML)) ################################################################################ _DOC_C_MODULE = $(if $(DOC_MODULE),C/$(DOC_MODULE).xml) _DOC_C_PAGES = $(foreach page,$(DOC_PAGES),C/$(page)) _DOC_C_ENTITIES = $(foreach ent,$(DOC_ENTITIES),C/$(ent)) _DOC_C_INCLUDES = $(foreach inc,$(DOC_INCLUDES),C/$(inc)) _DOC_C_DOCS = \ $(_DOC_C_ENTITIES) $(_DOC_C_INCLUDES) \ $(_DOC_C_PAGES) $(_DOC_C_MODULE) _DOC_C_DOCS_NOENT = \ $(_DOC_C_MODULE) $(_DOC_C_INCLUDES) \ $(_DOC_C_PAGES) _DOC_C_FIGURES = $(if $(DOC_FIGURES), \ $(foreach fig,$(DOC_FIGURES),C/$(fig)), \ $(patsubst $(srcdir)/%,%,$(wildcard $(srcdir)/C/figures/*.png))) # FIXME: probably have to shell escape to determine the file names _DOC_C_HTML = $(foreach f, \ $(shell xsltproc --xinclude \ --stringparam db.chunk.basename "$(DOC_MODULE)" \ $(_chunks) "C/$(DOC_MODULE).xml"), \ C/$(f).xhtml) ############################################################################### _DOC_POFILES = $(if $(DOC_MODULE)$(DOC_ID), \ $(foreach lc,$(_DOC_REAL_LINGUAS),$(lc)/$(lc).po)) _DOC_MOFILES = $(patsubst %.po,%.mo,$(_DOC_POFILES)) _DOC_LC_MODULES = $(if $(DOC_MODULE), \ $(foreach lc,$(_DOC_REAL_LINGUAS),$(lc)/$(DOC_MODULE).xml)) _DOC_LC_PAGES = \ $(foreach lc,$(_DOC_REAL_LINGUAS),$(foreach page,$(_DOC_C_PAGES), \ $(lc)/$(notdir $(page)) )) _DOC_LC_INCLUDES = \ $(foreach lc,$(_DOC_REAL_LINGUAS),$(foreach inc,$(_DOC_C_INCLUDES), \ $(lc)/$(notdir $(inc)) )) # FIXME: probably have to shell escape to determine the file names _DOC_LC_HTML = \ $(foreach lc,$(_DOC_REAL_LINGUAS),$(foreach doc,$(_DOC_C_HTML), \ $(lc)/$(notdir $(doc)) )) _DOC_LC_DOCS = \ $(_DOC_LC_MODULES) $(_DOC_LC_INCLUDES) $(_DOC_LC_PAGES) \ $(if $(filter html HTML,$(_DOC_REAL_FORMATS)),$(_DOC_LC_HTML)) _DOC_LC_FIGURES = $(foreach lc,$(_DOC_REAL_LINGUAS), \ $(patsubst C/%,$(lc)/%,$(_DOC_C_FIGURES)) ) _DOC_SRC_FIGURES = \ $(foreach fig,$(_DOC_C_FIGURES), $(foreach lc,C $(_DOC_REAL_LINGUAS), \ $(wildcard $(srcdir)/$(lc)/$(patsubst C/%,%,$(fig))) )) _DOC_POT = $(if $(DOC_MODULE),$(DOC_MODULE).pot) ################################################################################ _DOC_HTML_ALL = $(if $(filter html HTML,$(_DOC_REAL_FORMATS)), \ $(_DOC_C_HTML) $(_DOC_LC_HTML)) _DOC_HTML_TOPS = $(foreach lc,C $(_DOC_REAL_LINGUAS),$(lc)/$(DOC_MODULE).xhtml) _clean_omf = $(if $(_DOC_OMF_IN),clean-doc-omf) _clean_dsk = $(if $(_DOC_DSK_IN),clean-doc-dsk) _clean_lc = $(if $(_DOC_REAL_LINGUAS),clean-doc-lc) _clean_dir = $(if $(DOC_MODULE)$(DOC_ID),clean-doc-dir) _doc_install_dir = $(if $(DOC_ID),$(DOC_ID),$(DOC_MODULE)) DOC_MODULE = gobby DOC_FIGURES = figures/main_window.png \ figures/preferences_editor.png \ figures/preferences_user.png \ figures/preferences_appearance.png \ figures/preferences_security.png \ figures/preferences_view.png DOC_LINGUAS = all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/gnome-doc-utils.make $(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) --gnu help/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu help/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: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): 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 $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$(top_distdir)" distdir="$(distdir)" \ dist-hook check-am: all-am check: check-am all-am: Makefile installdirs: 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-local mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic distclean-local dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-data-local 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 \ maintainer-clean-local mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-local pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-local .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-local \ dist-hook distclean distclean-generic distclean-local distdir \ dvi dvi-am html html-am info info-am install install-am \ install-data install-data-am install-data-local 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-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic \ maintainer-clean-local mostlyclean mostlyclean-generic \ mostlyclean-local pdf pdf-am ps ps-am uninstall uninstall-am \ uninstall-local DOC_H_FILE ?= DOC_H_DOCS ?= $(DOC_H_FILE): $(DOC_H_DOCS); @rm -f $@.tmp; touch $@.tmp; echo 'const gchar* documentation_credits[] = {' >> $@.tmp list='$(DOC_H_DOCS)'; for doc in $$list; do \ xmlpath="`echo $$doc | sed -e 's/^\(.*\/\).*/\1/' -e '/\//!s/.*//'`:$(srcdir)/`echo $$doc | sed -e 's/^\(.*\/\).*/\1/' -e '/\//!s/.*//'`"; \ if ! test -f "$$doc"; then doc="$(srcdir)/$$doc"; fi; \ xsltproc --path "$$xmlpath" $(_credits) $$doc; \ done | sort | uniq \ | awk 'BEGIN{s=""}{n=split($$0,w,"<");if(s!=""&&s!=substr(w[1],1,length(w[1])-1)){print s};if(n>1){print $$0;s=""}else{s=$$0}};END{if(s!=""){print s}}' \ | sed -e 's/\\/\\\\/' -e 's/"/\\"/' -e 's/\(.*\)/\t"\1",/' >> $@.tmp echo ' NULL' >> $@.tmp echo '};' >> $@.tmp echo >> $@.tmp list='$(DOC_H_DOCS)'; for doc in $$list; do \ xmlpath="`echo $$doc | sed -e 's/^\(.*\/\).*/\1/' -e '/\//!s/.*//'`:$(srcdir)/`echo $$doc | sed -e 's/^\(.*\/\).*/\1/' -e '/\//!s/.*//'`"; \ if ! test -f "$$doc"; then doc="$(srcdir)/$$doc"; fi; \ docid=`echo "$$doc" | sed -e 's/.*\/\([^/]*\)\.xml/\1/' \ | sed -e 's/[^a-zA-Z_]/_/g' | tr 'a-z' 'A-Z'`; \ echo $$xmlpath; \ ids=`xsltproc --xinclude --path "$$xmlpath" $(_ids) $$doc`; \ for id in $$ids; do \ echo '#define HELP_'`echo $$docid`'_'`echo $$id \ | sed -e 's/[^a-zA-Z_]/_/g' | tr 'a-z' 'A-Z'`' "'$$id'"' >> $@.tmp; \ done; \ echo >> $@.tmp; \ done; cp $@.tmp $@ && rm -f $@.tmp dist-check-gdu: @HAVE_GNOME_DOC_UTILS_FALSE@ @echo "*** GNOME Doc Utils must be installed in order to make dist" @HAVE_GNOME_DOC_UTILS_FALSE@ @false .PHONY: dist-doc-header dist-doc-header: $(DOC_H_FILE) @if test -f "$(DOC_H_FILE)"; then d=; else d="$(srcdir)/"; fi; \ echo "$(INSTALL_DATA) $${d}$(DOC_H_FILE) $(distdir)/$(DOC_H_FILE)"; \ $(INSTALL_DATA) "$${d}$(DOC_H_FILE)" "$(distdir)/$(DOC_H_FILE)"; doc-dist-hook: dist-check-gdu $(if $(DOC_H_FILE),dist-doc-header) .PHONY: clean-doc-header clean-local: $(_clean_doc_header) distclean-local: $(_clean_doc_header) mostlyclean-local: $(_clean_doc_header) maintainer-clean-local: $(_clean_doc_header) clean-doc-header: rm -f $(DOC_H_FILE) all: $(DOC_H_FILE) ################################################################################ DOC_MODULE ?= DOC_ID ?= DOC_PAGES ?= DOC_ENTITIES ?= DOC_INCLUDES ?= DOC_FIGURES ?= DOC_FORMATS ?= docbook DOC_LINGUAS ?= ################################################################################ _xml2po ?= `which xml2po` _db2html ?= `$(PKG_CONFIG) --variable db2html gnome-doc-utils` _db2omf ?= `$(PKG_CONFIG) --variable db2omf gnome-doc-utils` _malrng ?= `$(PKG_CONFIG) --variable malrng gnome-doc-utils` _chunks ?= `$(PKG_CONFIG) --variable xmldir gnome-doc-utils`/gnome/xslt/docbook/utils/chunks.xsl _credits ?= `$(PKG_CONFIG) --variable xmldir gnome-doc-utils`/gnome/xslt/docbook/utils/credits.xsl _ids ?= $(shell $(PKG_CONFIG) --variable xmldir gnome-doc-utils)/gnome/xslt/docbook/utils/ids.xsl @ENABLE_SK_TRUE@_skpkgdatadir ?= `scrollkeeper-config --pkgdatadir` @ENABLE_SK_TRUE@_sklocalstatedir ?= `scrollkeeper-config --pkglocalstatedir` @ENABLE_SK_TRUE@_skcontentslist ?= $(_skpkgdatadir)/Templates/C/scrollkeeper_cl.xml $(_DOC_OMF_DB) : $(_DOC_OMF_IN) $(_DOC_OMF_DB) : $(DOC_MODULE)-%.omf : %/$(DOC_MODULE).xml @test "x$(_ENABLE_SK)" != "xtrue" -o -f "$(_skcontentslist)" || { \ echo "The file '$(_skcontentslist)' does not exist." >&2; \ echo "Please check your ScrollKeeper installation." >&2; \ exit 1; } xsltproc -o $@ $(call db2omf_args,$@,$<,'docbook') || { rm -f "$@"; exit 1; } $(_DOC_OMF_HTML) : $(_DOC_OMF_IN) $(_DOC_OMF_HTML) : $(DOC_MODULE)-html-%.omf : %/$(DOC_MODULE).xml @ENABLE_SK_TRUE@ @test "x$(_ENABLE_SK)" != "xtrue" -o -f "$(_skcontentslist)" || { \ @ENABLE_SK_TRUE@ echo "The file '$(_skcontentslist)' does not exist" >&2; \ @ENABLE_SK_TRUE@ echo "Please check your ScrollKeeper installation." >&2; \ @ENABLE_SK_TRUE@ exit 1; } xsltproc -o $@ $(call db2omf_args,$@,$<,'xhtml') || { rm -f "$@"; exit 1; } .PHONY: omf omf: $(_DOC_OMF_ALL) .PHONY: po po: $(_DOC_POFILES) .PHONY: mo mo: $(_DOC_MOFILES) $(_DOC_POFILES): @if ! test -d $(dir $@); then \ echo "mkdir $(dir $@)"; \ mkdir "$(dir $@)"; \ fi @if test ! -f $@ -a -f $(srcdir)/$@; then \ echo "cp $(srcdir)/$@ $@"; \ cp "$(srcdir)/$@" "$@"; \ fi; @docs=; \ list='$(_DOC_C_DOCS_NOENT)'; for doc in $$list; do \ docs="$$docs $(_DOC_ABS_SRCDIR)/$$doc"; \ done; \ if ! test -f $@; then \ echo "(cd $(dir $@) && \ $(_xml2po) -m $(_xml2po_mode) -e $$docs > $(notdir $@).tmp && \ cp $(notdir $@).tmp $(notdir $@) && rm -f $(notdir $@).tmp)"; \ (cd $(dir $@) && \ $(_xml2po) -m $(_xml2po_mode) -e $$docs > $(notdir $@).tmp && \ cp $(notdir $@).tmp $(notdir $@) && rm -f $(notdir $@).tmp); \ else \ echo "(cd $(dir $@) && \ $(_xml2po) -m $(_xml2po_mode) -e -u $(notdir $@) $$docs)"; \ (cd $(dir $@) && \ $(_xml2po) -m $(_xml2po_mode) -e -u $(notdir $@) $$docs); \ fi $(_DOC_MOFILES): %.mo: %.po @if ! test -d $(dir $@); then \ echo "mkdir $(dir $@)"; \ mkdir "$(dir $@)"; \ fi msgfmt -o $@ $< # FIXME: fix the dependancy # FIXME: hook xml2po up $(_DOC_LC_DOCS) : $(_DOC_MOFILES) $(_DOC_LC_DOCS) : $(_DOC_C_DOCS) if ! test -d $(dir $@); then mkdir $(dir $@); fi if [ -f "C/$(notdir $@)" ]; then d="../"; else d="$(_DOC_ABS_SRCDIR)/"; fi; \ mo="$(dir $@)$(patsubst %/$(notdir $@),%,$@).mo"; \ if [ -f "$${mo}" ]; then mo="../$${mo}"; else mo="$(_DOC_ABS_SRCDIR)/$${mo}"; fi; \ (cd $(dir $@) && \ $(_xml2po) -m $(_xml2po_mode) -e -t "$${mo}" \ "$${d}C/$(notdir $@)" > $(notdir $@).tmp && \ cp $(notdir $@).tmp $(notdir $@) && rm -f $(notdir $@).tmp) .PHONY: pot pot: $(_DOC_POT) $(_DOC_POT): $(_DOC_C_DOCS_NOENT) $(_xml2po) -m $(_xml2po_mode) -e -o $@ $^ $(_DOC_HTML_TOPS): $(_DOC_C_DOCS) $(_DOC_LC_DOCS) xsltproc -o $@ --xinclude --param db.chunk.chunk_top "false()" --stringparam db.chunk.basename "$(DOC_MODULE)" --stringparam db.chunk.extension ".xhtml" $(_db2html) $(patsubst %.xhtml,%.xml,$@) ################################################################################ all: \ $(_DOC_C_DOCS) $(_DOC_LC_DOCS) \ $(_DOC_OMF_ALL) $(_DOC_DSK_ALL) \ $(_DOC_HTML_ALL) $(_DOC_POFILES) ################################################################################ .PHONY: clean-doc-omf clean-doc-dsk clean-doc-lc clean-doc-dir clean-doc-omf: ; rm -f $(_DOC_OMF_DB) $(_DOC_OMF_HTML) clean-doc-dsk: ; rm -f $(_DOC_DSK_DB) $(_DOC_DSK_HTML) clean-doc-lc: rm -f $(_DOC_LC_DOCS) rm -f $(_DOC_MOFILES) @list='$(_DOC_POFILES)'; for po in $$list; do \ if ! test "$$po" -ef "$(srcdir)/$$po"; then \ echo "rm -f $$po"; \ rm -f "$$po"; \ fi; \ done # .xml2.po.mo cleaning is obsolete as of 0.18.1 and could be removed in 0.20.x @for lc in C $(_DOC_REAL_LINGUAS); do \ if test -f "$$lc/.xml2po.mo"; then \ echo "rm -f $$lc/.xml2po.mo"; \ rm -f "$$lc/.xml2po.mo"; \ fi; \ done clean-doc-dir: clean-doc-lc @for lc in C $(_DOC_REAL_LINGUAS); do \ for dir in `find $$lc -depth -type d`; do \ if ! test $$dir -ef $(srcdir)/$$dir; then \ echo "rmdir $$dir"; \ rmdir "$$dir"; \ fi; \ done; \ done clean-local: \ $(_clean_omf) $(_clean_dsk) \ $(_clean_lc) $(_clean_dir) distclean-local: \ $(_clean_omf) $(_clean_dsk) \ $(_clean_lc) $(_clean_dir) mostlyclean-local: \ $(_clean_omf) $(_clean_dsk) \ $(_clean_lc) $(_clean_dir) maintainer-clean-local: \ $(_clean_omf) $(_clean_dsk) \ $(_clean_lc) $(_clean_dir) ################################################################################ .PHONY: dist-doc-docs dist-doc-pages dist-doc-figs dist-doc-omf dist-doc-dsk doc-dist-hook: \ $(if $(DOC_MODULE)$(DOC_ID),dist-doc-docs) \ $(if $(_DOC_C_FIGURES),dist-doc-figs) \ $(if $(_DOC_OMF_IN),dist-doc-omf) # $(if $(_DOC_DSK_IN),dist-doc-dsk) dist-doc-docs: $(_DOC_C_DOCS) $(_DOC_LC_DOCS) $(_DOC_POFILES) @for lc in C $(_DOC_REAL_LINGUAS); do \ echo " $(mkinstalldirs) $(distdir)/$$lc"; \ $(mkinstalldirs) "$(distdir)/$$lc"; \ done @list='$(_DOC_C_DOCS) $(_DOC_LC_DOCS) $(_DOC_POFILES)'; \ for doc in $$list; do \ if test -f "$$doc"; then d=; else d="$(srcdir)/"; fi; \ docdir=`echo $$doc | sed -e 's/^\(.*\/\).*/\1/' -e '/\//!s/.*//'`; \ if ! test -d "$(distdir)/$$docdir"; then \ echo "$(mkinstalldirs) $(distdir)/$$docdir"; \ $(mkinstalldirs) "$(distdir)/$$docdir"; \ fi; \ echo "$(INSTALL_DATA) $$d$$doc $(distdir)/$$doc"; \ $(INSTALL_DATA) "$$d$$doc" "$(distdir)/$$doc"; \ done dist-doc-figs: $(_DOC_SRC_FIGURES) @list='$(_DOC_C_FIGURES) $(_DOC_LC_FIGURES)'; \ for fig in $$list; do \ if test -f "$$fig"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$fig"; then \ figdir=`echo $$fig | sed -e 's/^\(.*\/\).*/\1/' -e '/\//!s/.*//'`; \ if ! test -d "$(distdir)/$$figdir"; then \ echo "$(mkinstalldirs) $(distdir)/$$figdir"; \ $(mkinstalldirs) "$(distdir)/$$figdir"; \ fi; \ echo "$(INSTALL_DATA) $$d$$fig $(distdir)/$$fig"; \ $(INSTALL_DATA) "$$d$$fig" "$(distdir)/$$fig"; \ fi; \ done; dist-doc-omf: @if test -f "$(_DOC_OMF_IN)"; then d=; else d="$(srcdir)/"; fi; \ echo "$(INSTALL_DATA) $$d$(_DOC_OMF_IN) $(distdir)/$(notdir $(_DOC_OMF_IN))"; \ $(INSTALL_DATA) "$$d$(_DOC_OMF_IN)" "$(distdir)/$(notdir $(_DOC_OMF_IN))" dist-doc-dsk: @if test -f "$(_DOC_DSK_IN)"; then d=; else d="$(srcdir)/"; fi; \ echo "$(INSTALL_DATA) $$d$(_DOC_DSK_IN) $(distdir)/$(notdir $(_DOC_DSK_IN))"; \ $(INSTALL_DATA) "$$d$(_DOC_DSK_IN)" "$(distdir)/$(notdir $(_DOC_DSK_IN))" ################################################################################ .PHONY: check-doc-docs check-doc-omf check: \ $(if $(DOC_MODULE),check-doc-docs) \ $(if $(DOC_ID),check-doc-pages) \ $(if $(_DOC_OMF_IN),check-doc-omf) check-doc-docs: $(_DOC_C_DOCS) $(_DOC_LC_DOCS) @for lc in C $(_DOC_REAL_LINGUAS); do \ if test -f "$$lc"; \ then d=; \ xmlpath="$$lc"; \ else \ d="$(srcdir)/"; \ xmlpath="$$lc:$(srcdir)/$$lc"; \ fi; \ echo "xmllint --noout --noent --path $$xmlpath --xinclude --postvalid $$d$$lc/$(DOC_MODULE).xml"; \ xmllint --noout --noent --path "$$xmlpath" --xinclude --postvalid "$$d$$lc/$(DOC_MODULE).xml"; \ done check-doc-pages: $(_DOC_C_PAGES) $(_DOC_LC_PAGES) for lc in C $(_DOC_REAL_LINGUAS); do \ if test -f "$$lc"; \ then d=; \ xmlpath="$$lc"; \ else \ d="$(srcdir)/"; \ xmlpath="$$lc:$(srcdir)/$$lc"; \ fi; \ for page in $(DOC_PAGES); do \ echo "xmllint --noout --noent --path $$xmlpath --xinclude --relaxng $(_malrng) $$d$$lc/$$page"; \ xmllint --noout --noent --path "$$xmlpath" --xinclude --relaxng "$(_malrng)" "$$d$$lc/$$page"; \ done; \ done check-doc-omf: $(_DOC_OMF_ALL) @list='$(_DOC_OMF_ALL)'; for omf in $$list; do \ echo "xmllint --noout --xinclude --dtdvalid 'http://scrollkeeper.sourceforge.net/dtds/scrollkeeper-omf-1.0/scrollkeeper-omf.dtd' $$omf"; \ xmllint --noout --xinclude --dtdvalid 'http://scrollkeeper.sourceforge.net/dtds/scrollkeeper-omf-1.0/scrollkeeper-omf.dtd' $$omf; \ done ################################################################################ .PHONY: install-doc-docs install-doc-html install-doc-figs install-doc-omf install-doc-dsk install-data-local: \ $(if $(DOC_MODULE)$(DOC_ID),install-doc-docs) \ $(if $(_DOC_HTML_ALL),install-doc-html) \ $(if $(_DOC_C_FIGURES),install-doc-figs) \ $(if $(_DOC_OMF_IN),install-doc-omf) # $(if $(_DOC_DSK_IN),install-doc-dsk) install-doc-docs: @for lc in C $(_DOC_REAL_LINGUAS); do \ echo "$(mkinstalldirs) $(DESTDIR)$(HELP_DIR)/$(_doc_install_dir)/$$lc"; \ $(mkinstalldirs) $(DESTDIR)$(HELP_DIR)/$(_doc_install_dir)/$$lc; \ done @list='$(_DOC_C_DOCS) $(_DOC_LC_DOCS)'; for doc in $$list; do \ if test -f "$$doc"; then d=; else d="$(srcdir)/"; fi; \ docdir="$$lc/"`echo $$doc | sed -e 's/^\(.*\/\).*/\1/' -e '/\//!s/.*//'`; \ docdir="$(DESTDIR)$(HELP_DIR)/$(_doc_install_dir)/$$docdir"; \ if ! test -d "$$docdir"; then \ echo "$(mkinstalldirs) $$docdir"; \ $(mkinstalldirs) "$$docdir"; \ fi; \ echo "$(INSTALL_DATA) $$d$$doc $(DESTDIR)$(HELP_DIR)/$(_doc_install_dir)/$$doc"; \ $(INSTALL_DATA) $$d$$doc $(DESTDIR)$(HELP_DIR)/$(_doc_install_dir)/$$doc; \ done install-doc-figs: @list='$(patsubst C/%,%,$(_DOC_C_FIGURES))'; for fig in $$list; do \ for lc in C $(_DOC_REAL_LINGUAS); do \ figsymlink=false; \ if test -f "$$lc/$$fig"; then \ figfile="$$lc/$$fig"; \ elif test -f "$(srcdir)/$$lc/$$fig"; then \ figfile="$(srcdir)/$$lc/$$fig"; \ else \ figsymlink=true; \ fi; \ figdir="$$lc/"`echo $$fig | sed -e 's/^\(.*\/\).*/\1/' -e '/\//!s/.*//'`; \ figdir="$(DESTDIR)$(HELP_DIR)/$(_doc_install_dir)/$$figdir"; \ if ! test -d "$$figdir"; then \ echo "$(mkinstalldirs) $$figdir"; \ $(mkinstalldirs) "$$figdir"; \ fi; \ figbase=`echo $$fig | sed -e 's/^.*\///'`; \ if $$figsymlink; then \ echo "cd $$figdir && $(LN_S) -f ../../C/$$fig $$figbase"; \ ( cd "$$figdir" && $(LN_S) -f "../../C/$$fig" "$$figbase" ); \ else \ echo "$(INSTALL_DATA) $$figfile $$figdir$$figbase"; \ $(INSTALL_DATA) "$$figfile" "$$figdir$$figbase"; \ fi; \ done; \ done install-doc-html: echo install-html install-doc-omf: $(mkinstalldirs) $(DESTDIR)$(OMF_DIR)/$(_doc_install_dir) @list='$(_DOC_OMF_ALL)'; for omf in $$list; do \ echo "$(INSTALL_DATA) $$omf $(DESTDIR)$(OMF_DIR)/$(_doc_install_dir)/$$omf"; \ $(INSTALL_DATA) $$omf $(DESTDIR)$(OMF_DIR)/$(_doc_install_dir)/$$omf; \ done @if test "x$(_ENABLE_SK)" = "xtrue"; then \ echo "scrollkeeper-update -p $(DESTDIR)$(_sklocalstatedir) -o $(DESTDIR)$(OMF_DIR)/$(_doc_install_dir)"; \ scrollkeeper-update -p "$(DESTDIR)$(_sklocalstatedir)" -o "$(DESTDIR)$(OMF_DIR)/$(_doc_install_dir)"; \ fi; install-doc-dsk: echo install-dsk ################################################################################ .PHONY: uninstall-doc-docs uninstall-doc-html uninstall-doc-figs uninstall-doc-omf uninstall-doc-dsk uninstall-local: \ $(if $(DOC_MODULE)$(DOC_ID),uninstall-doc-docs) \ $(if $(_DOC_HTML_ALL),uninstall-doc-html) \ $(if $(_DOC_C_FIGURES),uninstall-doc-figs) \ $(if $(_DOC_OMF_IN),uninstall-doc-omf) # $(if $(_DOC_DSK_IN),uninstall-doc-dsk) uninstall-doc-docs: @list='$(_DOC_C_DOCS) $(_DOC_LC_DOCS)'; for doc in $$list; do \ echo " rm -f $(DESTDIR)$(HELP_DIR)/$(_doc_install_dir)/$$doc"; \ rm -f "$(DESTDIR)$(HELP_DIR)/$(_doc_install_dir)/$$doc"; \ done uninstall-doc-figs: @list='$(_DOC_C_FIGURES) $(_DOC_LC_FIGURES)'; for fig in $$list; do \ echo "rm -f $(DESTDIR)$(HELP_DIR)/$(_doc_install_dir)/$$fig"; \ rm -f "$(DESTDIR)$(HELP_DIR)/$(_doc_install_dir)/$$fig"; \ done; uninstall-doc-omf: @list='$(_DOC_OMF_ALL)'; for omf in $$list; do \ if test "x$(_ENABLE_SK)" = "xtrue"; then \ echo "scrollkeeper-uninstall -p $(_sklocalstatedir) $(DESTDIR)$(OMF_DIR)/$(_doc_install_dir)/$$omf"; \ scrollkeeper-uninstall -p "$(_sklocalstatedir)" "$(DESTDIR)$(OMF_DIR)/$(_doc_install_dir)/$$omf"; \ fi; \ echo "rm -f $(DESTDIR)$(OMF_DIR)/$(_doc_install_dir)/$$omf"; \ rm -f "$(DESTDIR)$(OMF_DIR)/$(_doc_install_dir)/$$omf"; \ done dist-hook: doc-dist-hook # 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: gobby-0.4.94/help/Makefile.am0000644000175000017500000000054611531722663012632 00000000000000include $(top_srcdir)/gnome-doc-utils.make dist-hook: doc-dist-hook DOC_MODULE = gobby DOC_FIGURES = figures/main_window.png \ figures/preferences_editor.png \ figures/preferences_user.png \ figures/preferences_appearance.png \ figures/preferences_security.png \ figures/preferences_view.png DOC_LINGUAS = gobby-0.4.94/help/gobby.omf.in0000644000175000017500000000044311543672437013012 00000000000000 manual gobby-0.4.94/ChangeLog0000644000175000017500000031305011543670212011410 000000000000002011-03-27 Armin Burgmeier * === Released 0.4.94 === * README: * NEWS: Update for release. 2011-03-27 Armin Burgmeier * configure.ac: Use unique-3.0 when compiling against GTK+ 3.0. 2011-01-30 Armin Burgmeier * code/commands/subscription-commands.cpp (on_notify_connection): Don't show the info text if session's state is not RUNNING. In that case the connection was unset in SYNCHRONIZING state in which case synchronization-commands will set a more specific error message. 2011-01-30 Armin Burgmeier * code/core/folder.cpp (remove_document): Don't call inf_session_close() if the session is already closed. This can happen if the session synchronization fails. 2011-01-29 Armin Burgmeier * all source files: Add 2011 to copyright years. 2011-01-29 Armin Burgmeier * code/core/textsessionview.cpp (get_cursor_position): Fix a compiler warning. 2011-01-29 Armin Burgmeier * code/core/textsessionuserview.hpp: * code/core/textsessionuserview.cpp: * code/core/Makefile.am: Add the InfTextSessionUserView class which handles scrolling to a remote user's cursor when double-clicking it in the user list. * code/core/userlist.hpp: * code/core/userlist.cpp: Add the user_activated signal. * code/core/folder.cpp: Create a TextSessionUserView for text sessions. 2011-01-29 Armin Burgmeier * code/core/sessionuserview.hpp: Fix the include guard. 2011-01-29 Armin Burgmeier * code/util/gtk-compat.hpp: Add a wrapper for Gtk::IconSet which is now used by a RefPtr in gtkmm 3. * code/core/iconmanager.hpp: * code/core/iconmanager.cpp: Adapt for that. * code/core/textsessionview.hpp: * code/operations/operations.hpp: * code/operations/operation-export-html.cpp: Rearrange some include directives to avoid including gtkmm headers after Xlib headers, which causes trouble because of common Xlib #defines such as None, Window or Status. 2011-01-24 Armin Burgmeier * code/util/gtk-compat.cpp: Fix a crash when connecting to a server with GTK+ 2. 2011-01-23 Armin Burgmeier * code/util/gtk-compat.hpp: * code/util/historyentry.hpp: * code/util/historyentry.cpp: * code/util/Makefile.am: * code/core/browser.cpp: * code/core/closableframe.cpp: * code/core/folder.hpp: * code/core/folder.cpp: * code/core/preferences.cpp: * code/core/sessionuserview.cpp: * code/core/statusbar.cpp: * code/core/tablabel.cpp: * code/core/texttablabel.hpp: * code/core/texttablabel.cpp: * code/core/userlist.cpp: * code/dialogs/document-location-dialog.cpp: * code/dialogs/entry-dialog.cpp: * code/dialogs/find-dialog.cpp: * code/dialogs/goto-dialog.cpp: * code/dialogs/initial-dialog.cpp: * code/dialogs/open-location-dialog.cpp: * code/dialogs/preferences-dialog.cpp: * code/operations/operation-export-html.cpp: * code/operations/operation-save.cpp: * code/commands/browser-context-commands.cpp: * code/commands/edit-commands.cpp: * code/commands/help-commands.cpp: * code/commands/user-join-commands.cpp: * code/commands/view-commands.cpp: * code/window.cpp: * code/main.cpp: * configure.ac: Add a --with-gtk3 switch to Gobby and adapt the code so that it compiles with gtkmm-3. If GTK 3 is enabled then the --with-unique switch is ignored. Eventually we need to port that code to GtkApplication. 2010-12-25 Armin Burgmeier * code/core/browser.hpp: * code/core/browser.cpp: * code/commands/auth-commands.hpp: * code/commands/auth-commands.cpp: Adapt to latest API changes in libinfinity, show password dialog asynchronously. 2010-09-21 Armin Burgmeier * code/commands/browser-context-commands.hpp: * code/commands/browser-context-commands.cpp: Add a "Disconnect from Server" option to the context menu (#542). 2010-09-21 Armin Burgmeier * code/core/preferences.hpp: * code/core/preferences.cpp: Add preferences options for showing remote cursors, selections, current lines and cursor positions in the scrollbar. * code/core/textsessionview.hpp: * code/core/textsessionview.cpp: Apply the new settings on the underlying objects. * code/dialogs/preferences-dialog.hpp: * code/dialogs/preferences-dialog.cpp: Add the new options to the preferences dialog. 2010-06-04 Armin Burgmeier * code/core/texttablabel.hpp: * code/core/texttablabel.cpp: Adapt for a recent API change in InfTextBuffer. 2010-03-02 Armin Burgmeier * gobby-0.5.desktop.in: Added GenericName and X-GNOME-FullName fields, changed Name to be just Gobby. Bug #528. 2010-02-25 Armin Burgmeier * code/core/textsessionview.hpp: * code/core/textsessionview.cpp: Show remote users' position in scrollbar using InfTextGtkViewport. 2010-02-14 Benjamin Herr * code/dialogs/password-dialog.cpp: * code/operations/operation-delete.cpp: * code/operations/operation-new.cpp: * code/operations/operation-open.cpp: * code/operations/operation-save.cpp: Added quotation marks in messages including file paths or document names. * code/operations/operation-export-html.cpp: Quotations marks as above, also moved a comment so it shows up in .po files. * code/commands/help-commands.cpp: Updated FSF address in GPL, added Michael Frey to translation credits. 2010-02-13 Armin Burgmeier * code/core/textsessionview.hpp: * code/core/textsessionview.cpp: Add a InfTextGtkView, to show remote cursors. 2010-02-12 Armin Burgmeier * all source files: Added 2010 to copyright years. 2010-02-09 Benjamin Herr * code/commands/auth-commands.hpp: * code/commands/auth-commands.cpp: Handle _TRY_AGAIN errors, do the whole retrying thing properly. 2010-01-31 Benjamin Herr , Armin Burgmeier * code/commands/auth-commands.cpp: Adapt to the removal of the user-authenticated signal, instead query detailed SASL error using inf_xmpp_connection_get_sasl_error(). 2009-01-27 Benjamin Herr * code/commands/auth-commands.cpp: Display errors from the InfPostAuthenticationError domain properly instead of a generic "unknown error". 2009-12-23 Armin Burgmeier * code/core/folder.hpp: * code/core/folder.cpp: Added get_document(). * code/commands/file-tasks/task-save-all.cpp (run): Use it, instead of (wrongly) iterating the folder's documents by itself, fixing "Save All". Bug #519. 2009-12-19 Armin Burgmeier * configure.ac: Post-release bump to 0.4.94, require libinfinity-0.5. * README: Update dependencies list. 2009-12-19 Armin Burgmeier * === Released 0.4.93 === * README: * NEWS: Update for release. 2009-12-19 Armin Burgmeier * code/core/browser.cpp (compare_func): Don't use result when it is uninitialized. 2009-12-19 Armin Burgmeier * configure.ac: * Makefile.am: Don't require gnome-doc-utils do be available, build without documentation if they are not, such as on Windows. 2009-12-19 Armin Burgmeier * code/dialogs/preferences-dialog.cpp: Don't add GTK_SOURCE_DRAW_SPACES_NBSP when showing flags since this does not exist in GtkSourceView 2.4.0 yet (which we require). We may it add later when we bump the GtkSourceView dependency. 2009-12-19 Armin Burgmeier * code/dialogs/password-dialog.hpp: * code/dialogs/connection-dialog.hpp: Include , to fix the build with gtkmm 2.12. 2009-12-19 Armin Burgmeier * code/core/browser.cpp: Sort top-level items by name. 2009-12-18 Armin Burgmeier * help/C/gobby.xml: Mention Shift+Ctrl+C shortcut for color reset. 2009-12-18 Armin Burgmeier * code/core/header.hpp: * code/core/header.cpp: Added a reset user color item to the view menu. * code/commands/view-commands.hpp: * code/commands/view-commands.cpp: Added corresponding functionality, using inf_text_gtk_buffer_show_user_colors(). Bug #211. 2009-12-16 Armin Burgmeier * Makefile.am: Added gobby-0.5.desktop.in to EXTRA_DIST. * help/C/gobby.xml: Added dummy items for referenced sections, so that the XML validates. This fixes make distcheck. 2009-12-16 Armin Burgmeier * Makefile.am: Don't install the .desktop file on Windows. 2009-12-15 Armin Burgmeier * code/dialogs/password-dialog.cpp: Fix spacings. 2009-12-15 Benjamin Herr * code/commands/file-commands.hpp: * code/commands/file-commands.cpp: * code/core/header.hpp: * code/core/header.cpp: * code/dialogs/Makefile.am: Added a File menu action to connect to a server, equivalent to the existing Direct Connection entry. 2009-12-15 Benjamin Herr * code/commands/Makefile.am: * code/commands/auth-commands.hpp: * code/commands/auth-commands.cpp: * code/core/browser.hpp: * code/core/browser.cpp: * code/dialogs/Makefile.am: * code/dialogs/password-dialog.hpp: * code/dialogs/password-dialog.cpp: * code/window.hpp: * code/window.cpp: Added support for SASL PLAIN authentication, prompting the user for a password upon connection. 2009-12-15 Benjamin Herr * configure.ac: Enable optional AM_SILENT_RULES. 2009-12-14 Armin Burgmeier * README: Update IRC channel, updated dependencies. 2009-12-14 Armin Burgmeier * code/commands/browser-context-commands.cpp (on_populate_popup): Don't crash when right-clicking on a browser item whose connection is currently being established. 2009-12-14 Armin Burgmeier * code/commands/browser-commands.cpp (on_notify_status): Close network connection when server does not send initial welcome message. 2009-12-10 Benjamin Herr * code/commands/browser-context-commands.cpp: Do not try to create context menu popup for directories that are not in working order. Fixes a crash when rightclicking disconnected browser entries. 2009-12-10 Benjamin Herr * code/core/browser.cpp: Use new inf_tcp_connection_new() function instead of manually creating a GObject. 2009-12-07 Armin Burgmeier * code/commands/browser-commands.hpp: * code/commands/browser-commands.cpp: Simplified the code a bit using the new InfcBrowser "status" property. 2009-12-05 Armin Burgmeier * code/core/textundogrouping.hpp: * code/core/textundogrouping.cpp: * code/core/Makefile.am: Added a thin wrapper around InfTextUndoGrouping which also encloses GtkTextBuffer's user actions into an undo group. * code/core/textsessionview.hpp: * code/core/textsessionview.cpp: Instantiate an undo group when an active user is set. * code/commands/edit-commands.cpp: Undo multiple requests according to the document's undo grouping. 2009-12-03 Gabríel A. Pétursson * code/commands/help-commands.cpp: Added translator credits. 2009-12-03 Gabríel A. Pétursson * code/dialogs/find-dialog.cpp: Fixed a spelling error. 2009-12-02 Gabríel A. Pétursson * code/window.cpp: * code/core/statusbar.hpp: * code/core/statusbar.cpp: Do not show the statusbar's grip handle while the window is maximized. 2009-12-02 Armin Burgmeier * code/commands/edit-commands.cpp: Adapt to another libinfinity API change: inf_adopted_session_undo() and inf_adopted_session_redo() have a new guint parameter. 2009-12-01 Armin Burgmeier * code/core/chattablabel.hpp: * code/core/chattablabel.cpp: * code/core/Makefile.am: Added a tab label for the chat tabs. * code/core/folder.cpp: Make use of it for new chat sessions. 2009-12-01 Armin Burgmeier * code/core/tablabel.hpp: * code/core/tablabel.cpp: Removed all text-specific functionality from TabLabel. * code/core/texttablabel.hpp: * code/core/texttablabel.cpp: * code/core/Makefile.am: Readded it to TextTagTabel which derives from TabLabel. * code/core/folder.cpp: Create a TextTabLabel for text documents. 2009-12-01 Gabríel A. Pétursson * code/core/statusbar.cpp: Do not display documents' status on the status bar when there are no documents open. 2009-12-01 Gabríel A. Pétursson * code/core/statusbar.hpp: * code/core/statusbar.cpp: Display the overwrite status on the status bar. 2009-11-30 Armin Burgmeier * code/core/noteplugin.cpp: * code/operations/operation-open.cpp: Adapt to recent API change in libinfinity: inf_text_session_new() and InfcNotePlugin's session_new() now take a InfSessionStatus parameter. 2009-11-30 Armin Burgmeier * code/commands/folder-commands.cpp (constructor): Fixed a comparison of signed vs. unsigned compiler warning. 2009-11-30 Armin Burgmeier * code/commands/subscription-commands.cpp (on_notify_connection): Also reset the active user for chat sessions. This prevents a crash when changing to a chat session tab which belongs to a closed chat session. 2009-11-21 Armin Burgmeier * code/core/sessionview.hpp: * code/core/sessionview.cpp: * code/core/chatsessionview.hpp: * code/core/chatsessionview.cpp: * code/core/textsessionview.hpp: * code/core/textsessionview.cpp: Moved get_active_user and the active-user-changed signal to the base class. * code/commands/folder-commands.hpp: * code/commands/folder-commands.cpp: Make this work with chat sessions. * code/dialogs/find-dialog.hpp: * code/dialogs/find-dialog.cpp: * code/commands/edit-commands.hpp: * code/commands/edit-commands.cpp: Adapt for changed active-user-changed signal signature. * code/window.hpp: * code/window.cpp: Renamed commands member variables to have _commands as suffix, not as prefix, and added a folder commands for the chat folder. 2009-11-21 Philipp Kern * help/C/gobby.xml: document Editor settings a bit more 2009-11-21 Philipp Kern * code/dialogs/preferences-dialog.cpp: fix en_UK-ism 2009-11-21 Philipp Kern * help/C/gobby.xml: add shortcuts 2009-11-17 Philipp Kern * help/C/gobby.xml: point to the new IRC channel on Freenode 2009-11-17 Armin Burgmeier * code/window.hpp: * code/window.cpp: Switch to text when chat pane is hidden while it had focus, and give it focus if it is shown and nothing else has focus already. 2009-11-17 Armin Burgmeier * code/core/chatsessionview.hpp: Added get_chat(). * code/window.hpp: * code/window.cpp: Added Ctrl+M and Ctrl+Shift+M shortcuts to easily jump between chat and document. 2009-11-17 Armin Burgmeier * code/core/closableframe.hpp: * code/core/closableframe.cpp: Add set_allow_visible(). * code/core/preferences.hpp: * code/core/preferences.cpp: Added settings for chat visibility and chat userlist visibility and width. * code/core/folder.cpp: Use different preference settings for document userlist visibility and chat userlist visibility. * code/core/iconmanager.hpp: * code/core/iconmanager.cpp: Added stock chat icon. * code/core/header.hpp: * code/core/header.cpp: Added "View Chat" and "View Chat User List" menu items and actions. * code/commands/view-commands.hpp: * code/commands/view-commands.cpp: Implemented functionality for the new actions. * code/window.hpp: * code/window.cpp: Pass chat frame and folder to view-commands. 2009-11-17 Armin Burgmeier * code/util/color.hpp: * code/util/color.cpp: Fixed return type of rgb_to_hsv() and hsv_to_rgb(). 2009-11-15 Armin Burgmeier * code/core/userlist.hpp: * code/core/userlist.cpp: Added set_show_disconnected(). * code/core/sessionuserview.hpp: * code/core/sessionuserview.cpp: Added a show_disconnected parameter in the constructor. * code/core/folder.cpp: Don't show disconnected users for chat sessions. 2009-11-15 Gabríel A. Pétursson * code/commands/help-commands.cpp: Updated the about dialog. 2009-11-11 Benjamin Herr * code/core/textsessionview.hpp: * code/core/textsessionview.bpp: On style change, use new libinfinity functionality to adjust user colour saturation/value. The formulas used might not be optimal, so there is room for improvement. 2009-11-10 Benjamin Herr * code/core/statusbar.cpp: Manually add a "Close" button to the status bar message dialog because RESPONSE_CLOSE seems to add a "Cancel" button instead for some people (Gabríel). 2009-11-10 Gabríel A. Pétursson * code/commands/browser-context-commands.hpp: * code/commands/browser-context-commands.cpp: Fixed an assertion error. 2009-11-09 Benjamin Herr , Armin Burgmeier * code/core/statusbar.hpp: * code/core/statusbar.cpp: Readded timeout mechanism into status bar message functions. * code/dialogs/find-dialog.cpp: Readded timeout for status bar messages so that they would actually disappear at some point. 2009-11-09 Benjamin Herr , Armin Burgmeier * code/core/statusbar.cpp: Changed "OK" back to "Close" in status bar error message popup dialog. 2009-11-09 Benjamin Herr , Armin Burgmeier * code/core/statusbar.cpp: Made status bar error message popup dialog non-modal. 2009-11-09 Gabríel A. Pétursson , Armin Burgmeier * code/core/preferences.hpp: * code/core/preferences.cpp: Added scheme_id preference option to appearance. * code/core/textsessionview.hpp: * code/core/textsessionview.cpp: Set GtkSourceView style scheme according to selected scheme ID. * code/dialogs/preferences-dialog.hpp: * code/dialogs/preferences-dialog.cpp: Add a list to choose one's favoured style scheme to the appearance tab. 2009-11-09 Benjamin Herr * code/core/statusbar.cpp: * code/core/statusbar.hpp: Add hide_message that only removes a message widget without removing the (then-null) pointer from the m_list. hide_message can be called multiple times, thus avoiding the crash when an info message was removed twice. 2009-11-09 Benjamin Herr * code/core/statusbar.cpp: * code/core/statusbar.hpp: Minor refactoring to the status bar message change. Also made more stuff a detail of StatusBar::Message. 2009-11-08 Armin Burgmeier * code/commands/browser-commands.hpp: * code/commands/browser-commands.cpp: Initiate a subscription to a server's chat upon connection. * code/commands/subscription-commands.hpp: * code/commands/subscription-commands.cpp: Create a ChatSessionView in the bottom pane in case of a chat subscription. * code/commands/user-join-commands.cpp: Do a chat user join for chat sessions. * code/core/folder.hpp: * code/core/folder.cpp: Added a hide_single_tab option. * code/window.cpp: Adapt to changed folder and browser-commands constructors. 2009-11-08 Armin Burgmeier * code/commands/subscription-commands.hpp: * code/commands/subscription-commands.cpp: New class handling session subscriptions. * code/commands/synchronization-commands.hpp: * code/commands/synchronization-commands.cpp: New class handling session synchronization. * code/commands/user-join-commands.hpp: * code/commands/user-join-commands.cpp: New class handling user join. * code/commands/browser-commands.hpp: * code/commands/browser-commands.cpp: Removed the functionality that has been moved to the classes mentioned above. * code/commands/Makfile.am: Add the new files to the build. * code/window.hpp: * code/window.cpp: Instantiante the new classes. 2009-11-08 Armin Burgmeier * code/core/chatsessionview.hpp: * code/core/chatsessionview.cpp: Added a SessionView-deriving class to show a chat session. * code/core/Makefile.am: Added the new files to the build. * code/core/folder.hpp: * code/core/folder.cpp: Added add_chat_session, renamed add_document to add_text_session. * code/commands/browser-commands.cpp: Use add_text_session instead of add_document. * code/window.hpp: * code/window.cpp: Added a bottom pane for the chat. 2009-10-25 Armin Burgmeier * code/core/textsessionview.hpp: * code/core/textsessionview.cpp: Added TextSessionView, a SessionView-deriving class showing a InfTextSession. * code/core/docwindow.hpp: * code/core/docwindow.cpp: Removed. * code/core/Makefile.am: Adapted the build. * code/core/sessionview.hpp: * code/core/sessionview.cpp: Added path & hostname to SessionView. * code/core/folder.hpp: * code/core/folder.cpp: * code/core/statusbar.hpp: * code/core/statusbar.cpp: * code/core/tablabel.hpp: * code/core/tablabel.cpp: * code/core/titlebar.hpp: * code/core/titlebar.cpp: * code/core/userlist.cpp: * code/dialogs/find-dialog.hpp: * code/dialogs/find-dialog.cpp: * code/dialogs/goto-dialog.hpp: * code/dialogs/goto-dialog.cpp: * code/operations/operation-export-html.hpp: * code/operations/operation-export-html.cpp: * code/operations/operation-save.hpp: * code/operations/operation-save.cpp: * code/operations/operations.hpp: * code/operations/operations.cpp: * code/commands/autosave-commands.hpp: * code/commands/autosave-commands.cpp: * code/commands/browser-commands.cpp: * code/commands/edit-commands.hpp: * code/commands/edit-commands.cpp: * code/commands/file-commands.hpp: * code/commands/file-commands.cpp: * code/commands/folder-commands.hpp: * code/commands/folder-commands.cpp: * code/commands/view-commands.hpp: * code/commands/view-commands.cpp: * code/commands/file-tasks/task-export-html.hpp: * code/commands/file-tasks/task-export-html.cpp: * code/commands/file-tasks/task-save-all.hpp: * code/commands/file-tasks/task-save-all.cpp: * code/commands/file-tasks/task-save.hpp: * code/commands/file-tasks/task-save.cpp: * code/window.cpp: Adapt for the DocWindow->TextSessionView API change. 2009-10-18 Armin Burgmeier * code/core/sessionview.hpp: * code/core/sessionview.cpp: Added SessionView base class which will replace DocWindow soon. * code/core/sessionuserview.hpp: * code/core/sessionuserview.cpp: Added SessionUserView, a wrapper around SessionView with a userlist next to it. * code/core/Makefile.am: Added the new files to the build. 2009-10-23 Armin Burgmeier * code/core/userlist.hpp: * code/core/userlist.cpp: Made UserList work with non-InfText users. * code/core/docwindow.cpp: Only pass InfUserTable to the userlist, not the whole session. 2009-11-09 Gabríel A. Pétursson * code/commands/browser-commands.cpp: * code/commands/file-tasks/task-open.cpp: * code/core/browser.cpp: * code/core/statusbar.cpp: * code/core/statusbar.hpp: * code/dialogs/find-dialog.cpp: * code/operations/operation-delete.cpp: * code/operations/operation-export-html.cpp: * code/operations/operation-new.cpp: * code/operations/operation-open-multiple.cpp: * code/operations/operation-open.cpp: * code/operations/operation-save.cpp: Minor refactoring. Added detailed status bar error messages. 2009-11-07 Armin Burgmeier * code/commands/browser-context-commands.cpp (on_open_response): Use OperationOpenMultiple instead of mulitple OperationOpens, so that the documents are opened one after the other, not all at once. 2009-11-07 Gabríel A. Pétursson * code/commands/browser-context-commands.cpp: * code/commands/file-tasks/task-open-file.hpp: * code/commands/file-tasks/task-open-file.cpp: Added the ability to upload multiple files simultaneously. 2009-11-07 Armin Burgmeier * AUTHORS: Updated. 2009-11-07 Gabríel A. Pétursson * code/commands/file-commands.cpp: * code/core/browser.hpp: * code/core/browser.cpp: Alphabetical sorting of directory and file names. 2009-11-06 Armin Burgmeier * code/commands/folder-commands.cpp: Avoid a crash if the connection goes down before the activation timeout fired, i.e. right after changing a tab. 2009-11-01 Armin Burgmeier * configure.ac: Require glibmm-2.4 >= 2.18.0 and giomm-2.4 >= 2.18.0 to make sure overwriting files works when saving. See also bug #471. 2009-11-01 Benjamin Herr * code/core/preferences.hpp: * code/core/preferences.cpp: Added view.whitespace_display option. * code/dialogs/preferences-dialog.hpp: * code/dialogs/preferences-dialog.cpp: Added a corresponding widget to the View pane in the preferences dialog. * code/core/docwindow.hpp: * code/core/docwindow.cpp: Honor the setting. * configure.ac: Require gtksourceview-2.0 >= 2.4 since gtk_source_view_set_draw_spaces() is available only since this version. 2009-10-31 Armin Burgmeier * code/Makefile.am: Pass both public and private icon paths to the code. * code/core/iconmanager.cpp: Add both to the icon search path. This fixes lookup of the application icon if gobby is installed in a non-standard prefix. 2009-10-26 Armin Burgmeier * code/core/userlist.cpp (sort_func): Sort the user list case-insensitively. 2009-10-26 Armin Burgmeier * code/operations/operation-open.cpp (constructor): Also disable GtkSourceView's Undo for sync'ed-in sessions. Otherwise the user was able to press Ctrl+Z in a newly opened document to trigger GtkSourceView (global) Undo when local group Undo is not available (such as right after document creation). 2009-10-26 Armin Burgmeier * code/commands/browser-commands.cpp (on_subscribe_session): Use the remote-hostname of the InfXmppConnection of the browser instead of the root entry name of the browser model as hostname passed to the DocWindow. This is currently used in the exported HTML's footer. 2009-10-25 Armin Burgmeier , Benjamin Herr * code/operations/operation-export-html.hpp: * code/operations/operation-export-html.cpp: * code/operations/Makefile.am: Added an operation which exports a document to a XHTML document. * code/operations/operations.hpp: * code/operations/operations.cpp: Added export_html() functio. * code/core/header.hpp: * code/core/header.cpp: Added a menu entry for exporting a document to HTML. * code/core/folder.hpp: * code/core/folder.cpp: * code/core/docwindow.hpp: * code/core/docwindow.cpp: * code/commands/browser-commands.cpp: Store path on remote host and its hostname in the DocWindow. * code/commands/file-tasks/task-export-html.hpp: * code/commands/file-tasks/task-export-html.cpp: * code/commands/file-tasks/Makefile.am: Added a task for HTML export showing a file chooser dialog for the user to select a location to export to. * code/commands/file-commands.hpp: * code/commands/file-commands.cpp: Start the task when the user activates the corresponding action defined in Header. 2009-10-24 Armin Burgmeier * icons/hicolor/scalable/status/user-color-indicator.svg: Removed blur, so that rsvg renders it correctly. * icons/hicolor/scalable/Makefile.am: * icons/hicolor/48x48/Makefile.am: * icons/hicolor/48x48/status/Makefile.am: * icons/hicolor/scalable/status/Makefile.am: * configure.ac: Added the new item to the build system. * code/util/color.hpp: * code/util/color.cpp: Added public rgb_to_hsv() and hsv_to_rgb() functions. * code/core/iconmanager.hpp: * code/core/iconmanager.cpp: Added a stock item for the user color indicator. * code/core/userlist.cpp: Show the user color indicator for the user color instead of a boring monochromatic square. 2009-10-24 Benjamin Herr * icons/hicolor/48x48/status/user-color-indicator.png: * icons/hicolor/scalable/status/user-color-indicator.svg: Added fancier icon to display the user colors in the user list. Not actually implemented. 2009-10-06 Armin Burgmeier * code/core/docwindow.cpp: Restore the "highlight matching brackets" option correctly from the preferences. Bug #470. 2009-09-14 Armin Burgmeier * code/commands/file-tasks/task-open-multiple.hpp: Added an include to fix the build. Bug #469. 2009-09-09 Armin Burgmeier * code/window.cpp (on_message_received): Don't leak the uris vector when an exception is thrown. 2009-09-09 Benjamin Herr * code/window.cpp: * code/window.hpp: * code/main.cpp: Also send hostnames given with --connect to an already running instance of gobby (via libunique). 2009-09-08 Benjamin Herr * code/core/browser.hpp: * code/core/browser.cpp: * code/window.hpp: * code/window.cpp: * code/main.cpp: Added --connect=HOSTNAME command line flag to connect to the given hostnames on startup. 2009-08-30 Armin Burgmeier * configure.ac: Require glib-2.18, as replacing existing files while saving does not work with lower versions. * README: Added the new dependency to the README. 2009-08-30 Armin Burgmeier * README: Updated the text, parts of it were still from when we used darcs (Nicolás Alvarez). 2009-08-29 Armin Burgmeier * update-potfiles: Fixed path of the desktop file, and use --binary-file=without-matches instead of a checking for the string 'matches', so that it also works in non-english environments (Nicolás Alvarez). 2009-06-05 Philipp Kern * gobby-0.5.desktop.in: fix icon to not specify the extension, which is discouraged by the icon theme specification 2009-06-03 Armin Burgmeier * code/core/header.cpp: Replace localized section string by a numerical ID for the action names of the various language sections, to prevent a crash when starting Gobby on a Japanese system. Based on a patch by Takahiro Sunaga. 2009-05-26 Armin Burgmeier * code/core/browser.hpp: * code/core/browser.cpp: Changed the HistoryEntry to a HistoryComboBoxEntry, so that we have a dropdown list for recently used hosts. Bug #451. 2009-05-17 Philipp Kern * help/C/gobby.xml: ported content from the old readme to the help file 2009-05-16 Armin Burgmeier * code/commands/file-tasks/task-open.hpp: Include to make sure Gio::File is known. * code/commands/file-tasks/task-open.cpp: Removed an unused variable. 2009-05-16 Armin Burgmeier * docs/: Removed. This was outdated anyway. It should be updated and merged into the new DocBook help in help/. See also #448. 2009-05-16 Armin Burgmeier * Makefile.am: Don't define EXTRA_DIST twice. 2009-05-16 Armin Burgmeier * help/C/gobby.xml: Fixed Gobby command line invocation instruction: The executable is called gobby-0.5, not gobby. 2009-05-16 Armin Burgmeier * code/core/tablabel.cpp: Use gdk_color_to_string instead of Gdk::Color::to_string so that Gobby continues to compile with gtkmm 2.12. Bug #447 (Philipp Kern). 2009-05-12 Philipp Kern * code/dialogs/initial-dialog.cpp: match menuchoice style with manual 2009-05-12 Philipp Kern * configure.ac: get rid of WITH_GNOME, as it is currently unused 2009-05-12 Philipp Kern * autogen.sh: let autogen fail if some command is not available or returns with a failure 2009-05-11 Philipp Kern * code/core/header.cpp: use F1 for HelpContents, instead of the stock Ctrl-H 2009-05-11 Philipp Kern * code/core/header.hpp: * code/core/header.cpp: add HelpContents action * code/commands/help-commands.hpp: * code/commands/help-commands.cpp: invoke help through gtk_show_uri 2009-05-10 Philipp Kern * help/C/gobby.xml: initial manual draft, still pretty empty * help/Makefile.am: * Makefile.am: * autogen.sh: * configure.ac: use gnome-doc-utils as specified in their manual * help/C/figures/main_window.png: * help/C/figures/preferences_appearance.png: * help/C/figures/preferences_editor.png: * help/C/figures/preferences_security.png: * help/C/figures/preferences_user.png: * help/C/figures/preferences_view.png: add an initial set of screenshots (main window and preference panes) 2009-05-10 Philipp Kern * contrib/gobby-0.5.desktop.in: moved to the toplevel * Makefile.am: install the .desktop file unconditionally (i.e. not only WITH_GNOME) * contrib/*: removed 2009-05-03 Armin Burgmeier , Benjamin Herr * configure.ac: Added a --with-unique configure option, require unique-1.0 if set. * code/core/nodewatch.hpp: * code/core/nodewatch.cpp: Accept a const InfcBrowserIter, and changed the signature of get_browser_iter() to return the BrowserIter instead of setting a reference parameter. * code/operations/operation-new.cpp: * code/operations/operation-new.hpp: * code/operations/operation-open.cpp: * code/operations/operation-open.hpp: * code/operations/operation-delete.cpp: * code/operations/operation-delete.hpp: Accept a const InfcBrowserIter in the constructor. * code/operations/operation-open-multiple.hpp: * code/operations/operation-open-multiple.cpp: Added an operation which opens multiple files into the same directory. This is nothing which can't be achieved by creating multiple OperationOpen operations, but it creates the documents one-after-the-other, and therefore does not clutter the statusbar, plus it queries the display name of a file automatically to use as document name, if no document name is given explicitely. * code/operations/operations.hpp: * code/operations/operations.cpp: Accept a const InfcBrowserIter for most operations, added the create_documents() method which creates an OperationOpenMultiple. * code/commands/file-commands.hpp: Make set_task() public. We should later make a separate class for managing the file tasks. * code/dialogs/document-location-dialog.hpp: * code/dialogs/document-location-dialog.cpp: Added a multiple document mode to load multiple files. This basically hides the document name entry. * code/commands/file-tasks/task-new.cpp: * code/commands/file-tasks/task-open.cpp: Explicitely set single document mode on the document location dialog. * code/commands/file-tasks/task-open-multiple.hpp: * code/commands/file-tasks/task-open-multiple.cpp: Added a new task to open multiple files. This shows a document location dialog in multiple document mode and launches an OperationOpenMultiple when the user is done with the dialog. * code/commands/file-tasks/task-save-all.cpp: Added a TODO comment about splitting parts of this into an OperationSaveAll. * code/window.hpp: * code/window.cpp: Take command line arguments in the constructor, and open documents passed on the command line using a TaskOpenMultiple. If unique support is enabled, then react on incoming messages and activate the application window, or open files received in a message. * code/main.cpp: Added a --new-instance command line option. If not set and compiled with unique support, and if another instance is already running, then send a message to the running instance and exit. * Makefile.am: * code/Makefile.am: * code/util/Makefile.am: * code/core/Makefile.am: * code/dialogs/Makefile.am: * code/operations/Makefile.am: * code/commands/Makefile.am: * code/commands/file-tasks/Makefile.am: Added compiler and linker flags for unique, added the new files to the build. * code/commands/autosave-commands.cpp: Fixed two compiler warnings. 2009-05-01 Armin Burgmeier * code/core/nodewatch.hpp: * code/core/nodewatch.cpp: Removed the model from NodeWatch, instead connect to browser's connection's notify::status to detect disconnection. * code/commands/browser-context-commands.cpp: Adapt. 2008-05-01 Armin Burgmeier * gobby-0.5.xpm: Added a 32x32 XPM of the gobby icon. * Makefile.am: Distribute it. 2009-04-28 Benjamin Herr * code/commands/file-tasks/task-open.cpp: Do not delay reporting errors in Gobby::TaskOpen::run() anymore, since signal_finished will already be connected to. 2009-04-27 Armin Burgmeier * code/dialogs/document-location-dialog.cpp: Removed operator== for two GtkTextIters, as it is not used anymore. We are forced to compare TextPaths anyway. 2009-04-27 Armin Burgmeier * code/commands/file-tasks/task-save.cpp: Initialize m_running to false in constructor, and set m_running to true in run(). 2009-04-27 Benjamin Herr * code/commands/file-commands.cpp: * code/commands/file-commands.hpp: * code/commands/file-tasks/task-new.cpp: * code/commands/file-tasks/task-new.hpp: * code/commands/file-tasks/task-open-file.cpp: * code/commands/file-tasks/task-open-file.hpp: * code/commands/file-tasks/task-open-location.cpp: * code/commands/file-tasks/task-open-location.hpp: * code/commands/file-tasks/task-open.cpp: * code/commands/file-tasks/task-open.hpp: * code/commands/file-tasks/task-save-all.cpp: * code/commands/file-tasks/task-save-all.hpp: * code/commands/file-tasks/task-save.cpp: * code/commands/file-tasks/task-save.hpp: Split most of all Task constructors into a separate run() member function that is called by FileCommands::set_task after resetting its current task. This ensures that a new task only gets to mess with stuff after the old one's destructor has been run. 2009-04-26 Armin Burgmeier * README: * configure.ac: Post-release bump to 0.4.93, require libfinity-0.4. 2009-04-26 Armin Burgmeier * === Released 0.4.92 === * README: * NEWS: Update for release. 2009-04-25 Armin Burgmeier * code/core/tablabel.hpp: * code/core/tablabel.cpp: Added a fallback chain for the dot character if the current font doesn't support the pencil glyph. 2009-04-24 Armin Burgmeier * code/main.cpp: Changed locale lookup directory on Windows from lib/locale to share/locale. 2009-04-24 Armin Burgmeier * configure.ac: Changed PACKAGE name back to gobby. * icons/HighContrastLargePrint/48x48/actions/Makefile.am: * icons/HighContrastLargePrint/scalable/actions/Makefile.am: * icons/HighContrastLargePrintInverse/48x48/actions/Makefile.am: * icons/HighContrastLargePrintInverse/scalable/actions/Makefile.am: * icons/hicolor/48x48/actions/Makefile.am: * icons/hicolor/scalable/actions/Makefile.am: * code/core/Makefile.am: Use $(datadir)/gobby-0.5 instead of $(pkgdatadir), so we still install the private icons into a separate directory. 2009-04-22 Benjamin Herr * code/core/tablabel.hpp: * code/core/tablabel.cpp: Display pencil icons in user hue for each user that has edited a document since it was last viewed (Bug #66 by Mattis Manzel). 2009-04-20 Benjamin Herr * code/commands/file-tasks/task-new.cpp: Removed spurious semicolon. 2009-04-20 Armin Burgmeier * code/core/browser.cpp: * code/core/documentinfostorage.cpp: * code/dialogs/open-location-dialog.cpp: * code/main.cpp: * code/util/file.cpp: * code/util/file.hpp: * configure.ac: Store config in Glib::get_user_config_dir() everywhere instead of only on Win32 (Bug #437 by Cristian Klein). 2009-04-20 Armin Burgmeier * configure.ac: Adapt to libinfinity becoming parallel-installable. 2009-02-28 Armin Burgmeier * code/operations/operation-save.cpp: When saving files, don't write almost every line twice if the first line is empty. 2009-02-26 Armin Burgmeier * code/util/resolv.cpp: Added include to fix the build on Free BSD. Bug #431. Patch by Romain Tartière. 2009-02-14 Armin Burgmeier * code/util/config.hpp: * code/util/config.cpp: Added ParentEntry::has_value(). * code/core/preferences.cpp: Added /etc/ssl/certs/ca-certificates.crt as default value for the trust-file, if the file exists. 2009-02-03 Armin Burgmeier * code/operations/operation-save.cpp: Make sure terminating newline characters are saved correctly. 2009-02-02 Armin Burgmeier * pixmaps/: Removed the pixmaps directory. The pixmaps are now installed as icons, to respect theme settings. * contrib/artwork/: Removed as well, since all artwork is now contained in icons/ anyway. * contrib/Makefile.am: * Makefile.am: Adapt for the removal of the above directories. * icons/hicolor/48x48/actions/chat.png: * icons/hicolor/48x48/actions/document-list.png: * icons/hicolor/48x48/actions/user-list.png: * icons/hicolor/48x48/actions/Makefile.am: * icons/hicolor/48x48/Makefile.am: * icons/hicolor/scalable/actions/chat.svg: * icons/hicolor/scalable/actions/document-list.svg: * icons/hicolor/scalable/actions/user-list.svg: * icons/hicolor/scalable/actions/Makefile.am: * icons/hicolor/scalable/Makefile.am: Added previous pixmaps as icons, so they are themeable. * icons/HighContrastLargePrintInverse/48x48/actions/chat.png: * icons/HighContrastLargePrintInverse/48x48/actions/document-list.png: * icons/HighContrastLargePrintInverse/48x48/actions/user-list.png: * icons/HighContrastLargePrintInverse/48x48/actions/Makefile.am: * icons/HighContrastLargePrintInverse/48x48/apps/gobby.png: * icons/HighContrastLargePrintInverse/48x48/Makefile.am: * icons/HighContrastLargePrintInverse/scalable/actions/chat.svg: * icons/HighContrastLargePrintInverse/scalable/actions/document-list.svg: * icons/HighContrastLargePrintInverse/scalable/actions/user-list.svg: * icons/HighContrastLargePrintInverse/scalable/actions/Makefile.am: * icons/HighContrastLargePrintInverse/scalable/apps/gobby.svg: * icons/HighContrastLargePrintInverse/scalable/Makefile.am: Added corresponding HCLPI icons (thanks Tom). * icons/HighContrastLargePrint/48x48/actions/chat.png: * icons/HighContrastLargePrint/48x48/actions/document-list.png: * icons/HighContrastLargePrint/48x48/actions/user-list.png: * icons/HighContrastLargePrint/48x48/actions/Makefile.am: * icons/HighContrastLargePrint/48x48/apps/gobby.png: * icons/HighContrastLargePrint/48x48/apps/Makefile.am: * icons/HighContrastLargePrint/48x48/Makefile.am: * icons/HighContrastLargePrint/scalable/actions/chat.svg: * icons/HighContrastLargePrint/scalable/actions/document-list.svg: * icons/HighContrastLargePrint/scalable/actions/user-list.svg: * icons/HighContrastLargePrint/scalable/actions/Makefile.am: * icons/HighContrastLargePrint/scalable/apps/gobby.svg: * icons/HighContrastLargePrint/scalable/apps/Makefile.am: * icons/HighContrastLargePrint/scalable/Makefile.am: * icons/HighContrastLargePrint/Makefile.am: Added corresponding HCLP icons (again, thanks Tom). * icons/Makefile.am: Descend into HigtContrastLargePrint subdirectory. * code/core/iconmanager.hpp: * code/core/iconmanager.cpp: Load icons from icon name instead of directly from their path, added priate icons directory to icon theme search path. * code/util/Makefile.am: * code/core/Makefile.am: * code/dialogs/Makefile.am: * code/operations/Makefile.am: * code/commands/file-tasks/Makefile.am: * code/commands/Makefile.am: * code/Makefile.am: Removed APPICON_DIR and PIXMAPS_DIR definitions, as these are no longer required. * configure.ac: Generate newly added Makefiles, changed package name to gobby-0.5, so that the private icons end up in their own directory, parallel-installable with the 0.4 line. 2009-02-01 Armin Burgmeier * code/dialogs/find-dialog.hpp: * code/dialogs/goto-dialog.hpp: * code/dialogs/preferences-dialog.hpp: * code/dialogs/entry-dialog.hpp: * code/dialogs/document-location-dialog.hpp: * code/dialogs/open-location-dialog.hpp: * code/dialogs/initial-dialog.hpp: * code/dialogs/find-dialog.cpp: * code/dialogs/goto-dialog.cpp: * code/dialogs/preferences-dialog.cpp: * code/dialogs/entry-dialog.cpp: * code/dialogs/document-location-dialog.cpp: * code/dialogs/open-location-dialog.cpp: * code/dialogs/initial-dialog.cpp: * code/dialogs/Makefile.am: Added hyphens into the file names, to stay consistent with other code files, such as commands/ or operations/. * code/commands/file-tasks/task-open-location.hpp: * code/commands/browser-context-commands.hpp: * code/commands/edit-commands.hpp: * code/commands/file-commands.hpp: * code/window.hpp: Adapt #include directives. 2009-02-01 Armin Burgmeier * code/commands/file-tasks/task-new.hpp: * code/commands/file-tasks/task-open.hpp: * code/commands/file-tasks/task-open-file.hpp: * code/commands/file-tasks/task-open-location.hpp: * code/commands/file-tasks/task-save.hpp: * code/commands/file-tasks/task-save-all.hpp: * code/commands/file-tasks/task-new.cpp: * code/commands/file-tasks/task-open.cpp: * code/commands/file-tasks/task-open-file.cpp: * code/commands/file-tasks/task-open-location.cpp: * code/commands/file-tasks/task-save.cpp: * code/commands/file-tasks/task-save-all.cpp: * code/commands/file-tasks/Makefile.am: Splitted the tasks which were defined in code/commands/file-commands.cpp into multiple files. * code/commands/file-commands.hpp: * code/commands/file-commands.cpp: Adapt accordingly. * code/commands/Makefile.am: Descend into file-tasks subdirectory. * Makefile.am: Link against the new tasks. * configure.ac: Create the new Makefiles. 2009-01-30 Armin Burgmeier * code/util/resolv.cpp: Removed the _WIN32_WINNT #define which is no longer required now that we use for getaddrinfo support. 2009-01-30 Armin Burgmeier * icons/HighContrastLargePrintInverse/48x48/Makefile.am: * icons/HighContrastLargePrintInverse/48x48/apps/Makefile.am: * icons/HighContrastLargePrintInverse/48x48/apps/gobby.png: * icons/HighContrastLargePrintInverse/scalable/Makefile.am: * icons/HighContrastLargePrintInverse/scalable/apps/Makefile.am: * icons/HighContrastLargePrintInverse/scalable/apps/gobby.svg: * icons/hicolor/48x48/Makefile.am: * icons/hicolor/48x48/apps/Makefile.am: * icons/hicolor/48x48/apps/gobby.png: * icons/hicolor/scalable/Makefile.am: * icons/hicolor/scalable/apps/Makefile.am: * icons/hicolor/scalable/apps/gobby.svg: * configure.ac: Added context ("apps") to icons directory structure. 2009-01-30 Armin Burgmeier * code/util/resolv.cpp: Include the header file on Windows to support Windows 2000. Bug #425. 2009-01-16 Armin Burgmeier * code/commands/file-commands.cpp: Don't use Gtk::FileChooser::get_file(), so that we don't require gtkmm 2.14. 2009-01-16 Armin Burgmeier * code/commands/file-commands.cpp: Marked a string for localization. 2009-01-15 Armin Burgmeier * all source files: Added 2009 to copyright years. 2009-01-04 Armin Burgmeier * configure.ac: Post-release bump to 0.4.92. 2009-01-04 Armin Burgmeier * === Released 0.4.91 === * NEWS: Update for release. 2009-01-04 Armin Burgmeier * code/core/window.cpp: Re-enable shortcuts for Undo and Redo. These have been accidentally disabled when pasting text in the "Direct Connection" entry has been fixed. 2009-01-04 Armin Burgmeier * code/core/docwindow.hpp: * code/core/docwindow.cpp: Show a tooltip when hovering over text, saying what user wrote the hovered text. 2009-01-04 Armin Burgmeier * code/core/window.hpp: * code/core/window.cpp: Fixed pasting text into the direct connection entry when having open a document. Before, the text was pasted into the document even though the entry was focused. We use the same workaround as gedit. 2009-01-04 Armin Burgmeier * code/core/folder.cpp: Re-enable Ctrl+Alt+PgDown/Ctrl+Alt+PgUp to cycle between tabs. * code/core/docwindow.cpp: Added a TODO comment about using a single UserList widget for all documents. 2009-01-04 Armin Burgmeier * code/core/statusbar.hpp: * code/core/statusbar.cpp: Added an invalid_handle() function, so other code can keep around invalid message handles, and fixed invalid memory access when a document was removed. * code/commands/browser-context-commands.cpp: Added a TODO comment about using file-tasks for common operations. * code/commands/file-commands.cpp: Query file info asynchronously, to avoid UI hangs when opening unresponsive remote files. 2009-01-03 Armin Burgmeier * code/util/historyentry.hpp: * code/util/historyentry.cpp: Added HistoryComboBoxEntry, which allows to select the history entries via a combo box. * code/dialogs/openlocationdialog.hpp: * code/dialogs/openlocationdialog.cpp: Use a HistoryComboBoxEntry instead of a simple GtkEntry. * code/dialogs/entrydialog.cpp: Don't use Gtk::Entry::get_text_length() since this is available only since gtkmm 2.14, but we require only 2.12. 2009-01-03 Armin Burgmeier * code/dialogs/openlocationdialog.hpp: * code/dialogs/openlocationdialog.cpp: * code/dialogs/Makefile.am: Added a dialog which queries the user for an URI to open. * code/core/header.hpp: * code/core/header.cpp: Added an "Open Location" menu item. * code/commands/file-commands.hpp: * code/commands/file-commands.cpp: Handle the "Open Location" menu item, fixed deinitialization order. * code/window.cpp: Pass statusbar to file commands. * code/operations/operation-open.cpp: Added error handling for the initial read_async operation. 2009-01-02 Armin Burgmeier * code/util/historyentry.hpp: * code/util/historyentry.cpp: * code/util/Makefile.am: Added a HistoryEntry class which allows scrolling through past entries in a GtkEntry, optionally saving and restoring the history from/to disk. * code/core/browser.hpp: * code/core/browser.cpp: Use a history entry for the hostname entry. 2008-12-31 Armin Burgmeier * code/core/preferences.hpp: * code/core/preferences.cpp: Added autosave_enabled and autosave_interval properties. * code/dialogs/preferencesdialog.hpp: * code/dialogs/preferencesdialog.cpp: Added the two preferences to the user interface. * code/commands/autosave-commands.hpp: * code/commands/autosave-commands.cpp: * code/commands/Makefile.am: Implemented autosave. * code/window.hpp: * code/window.cpp: Instantiate AutosaveCommands. * code/commands/file-commands.cpp: Added a TODO comment about defaulting to CRLF on Windows. 2008-12-31 Armin Burgmeier * code/operations/operations.hpp: * code/operations/operations.cpp: Added a begin_save_operation signal, and added a boolean parameter to base operation's finished signal which indicates whether the operation was performed successfully or not. Removed the remove() function, and added finish() and fail() instead. * code/operations/operation-open.hpp: Derive from sigc::trackable. * code/operations/operation-save.hpp: * code/operations/operation-save.cpp: Added get_document(), get_start_time() and derive from sigc::trackable, adapt to finish() and fail(). * code/operations/operation-new.cpp: * code/operations/operation-open.cpp: * code/operations/operation-delete.cpp: Adapt to finish() and fail(). 2008-12-30 Armin Burgmeier * code/operations/operations.hpp: * code/operations/operations.cpp: Added signal_finished to the operation base class, and the various functions creating operations now return them. * code/operations/operation-save.cpp: Fixed a typo in a comment. 2008-12-29 Armin Burgmeier * code/window.hpp: * code/window.cpp: Changed (de)initialization order so that browser is freed after folder. This is required to avoid a warning when an InfSession holds a reference to a connection (such as during synchronization) and Gobby is closed. 2008-12-28 Armin Burgmeier * configure.ac: Require libinfinity >= 0.2. 2008-12-28 Armin Burgmeier * code/core/browser.cpp: * code/core/noteplugin.cpp: * code/operations/operation-open.cpp: Adapt to libinfinity's new communication API. 2008-12-23 Philipp Kern * configure.ac: separate infinote pkg-config from those determining if all libraries needed for Gobby's user interface are present, allowing easier and separate overrides of them * Makefile.am: * code/Makefile.am: * code/commands/Makefile.am: * code/core/Makefile.am: * code/dialogs/Makefile.am: * code/operations/Makefile.am: * code/util/Makefile.am: use AM_CPPFLAGS for everything instead of specialized per-target CPPFLAGS entries 2008-12-23 Philipp Kern * code/Makefile.am: * code/commands/Makefile.am: * code/core/Makefile.am: * code/dialogs/Makefile.am: * code/operations/Makefile.am: * code/util/Makefile.am: Include top-level CFLAGS. 2008-12-19 Armin Burgmeier * po/fr.po: Changed application name to "Editeur collaboratif Gobby" to meet French Gnome standard. 2008-12-19 Armin Burgmeier * po/fr.po: Added translation for the desktop file (Bug #415, Pascal Kreyer). 2008-12-19 Armin Burgmeier * po/de.po: Removed dash from application name, as other GNOME programs do. 2008-12-17 Armin Burgmeier * icons/hicolor/48x48/gobby-0.5.png: * icons/hicolor/48x48/Makefile.am: * icons/hicolor/Makefile.am: Added fixed-size version of gobby icon. * icons/HighContrastLargePrintInverse/48x48/gobby-0.5.png: * icons/HighContrastLargePrintInverse/48x48/Makefile.am: * icons/hicolor/Makefile.am: Added fixed-size version of HCLPI gobby icon. * configure.ac: Generate the new Makefiles. 2008-12-17 Armin Burgmeier * contrib/artwork/gobby.svg: Centered the gobby icon into the document. * code/core/iconmanager.hpp: * code/core/iconmanager.cpp: Removed the gobby icon pixbuf. * code/dialogs/initialdialog.cpp: * code/commands/help-commands.cpp: * code/main.cpp: Lookup the gobby icon by its icon name. * pixmaps/gobby-0.5.png: Deleted. * icons/hicolor/scalable/gobby-0.5.svg: Added scalable gobby icon. * icons/hicolor/scalable/Makefile.am: Install it into a proper location. * icons/hicolor/Makefile.am: Run update-icon-cache on hicolor theme after (un)intall. * icons/HighContrastLargePrintInverse/scalable/gobby-0.5.svg: Added scalable gobby icon for HCLPI theme (Thomas Glatt, Bug #413). * icons/HighContrastLargePrintInverse/scalable/Makefile.am: Install it. * icons/HighContrastLargePrintInverse/Makefile.am: Run update-icon-cache on HighContrastLargePrintInverse after (un)install. * Makefile.am: Decend into the icons/ subdir. * pixmaps/Makefile.am: Don't install gobby-0.5.png to share/pixmaps anymore. * configure.ac: Generate the new Makefiles. 2008-11-23 Armin Burgmeier * configure.ac: Post-release bump to 0.4.91. 2008-11-23 Armin Burgmeier * contrib/Makefile.am: Always add gobby-0.5.desktop.in to the distribution. 2008-11-23 Armin Burgmeier * Makefile.am: Add a dummy C++ file to nondistributed sources, to cause C++ linking. Bug #399, Markus Wanjura. 2008-11-23 Armin Burgmeier * code/core/browser.cpp: Added include, required on Mac OS X. Bug #399, Markus Wanjura. 2008-11-23 Armin Burgmeier * code/util/i18n.hpp: Added definition for N_. * code/operations/operation-open.cpp: Made 8bit encoding used for auto detection translatable, so that locales with other default 8bit encodings than iso-8859-1 get better results for auto detection. 2008-11-23 Armin Burgmeier * contrib/gobby-0.5.desktop: Removed. * contrib/gobby-0.5.desktop.in: Added, marking name and comment for translation. * contrib/Makefile.am: Generate contrib/gobby-0.5.desktop from contrib/gobby-0.5.desktop.in via intltool. This allows the desktop file to be translated via po files. Bug #396, based on a patch from Takao Fujiwara. * autogen.sh: Run intltoolize. * configure.ac: Require intltool. * update-potfiles: Added contrib/gobby-0.5.desktop.in to list of files scanned for translatable strings. 2008-11-09 Armin Burgmeier * code/commands/edit-commands.cpp: Scroll to cursor after cut or paste. 2008-11-05 Armin Burgmeier * code/commands/edit-commands.cpp: Added a (hopefully) temporary hack to set the cursor position to the place where a Undo/Redo has occurred. This stopped to work with the latest changes in libinfinity (which in turn fix other caret stuff, such as no longer moving the caret around on block indent/unindent, or allowing to paste text over a selected area). This can be properly implemented as soon as libinfinity supports caret-aware requests. 2008-10-18 Armin Burgmeier * code/core/browser.cpp: * code/core/header.cpp: Use standard capitalization for control labels. Bug #223 (Matthew Paul Thomas). 2008-10-18 Armin Burgmeier * code/main.cpp: Set localedir relative to Gobby executable on Windows, so i18n is properly relocatable. 2008-10-18 Armin Burgmeier * === Released 0.4.90 === 2008-10-17 Armin Burgmeier * contrib/gobby-0.5.desktop: Fixed icon file name. 2008-10-16 Armin Burgmeier * code/Makefile.am: * code/commands/Makefile.am: * code/core/Makefile.am: * code/dialogs/Makefile.am: * code/operations/Makefile.am: * code/util/Makefile.am: Fix `make distcheck' by using -I$(top_srcdir) instead of a relative path such as -I.. Also, changed pixmapdir to $(datadir)/pixmaps/gobby-0.5. * pixmaps/Makefile.am: * pixmaps/gobby-0.5.png: Moved from pixmaps/gobby.png. * contrib/Makefile.am: * contrib/gobby-0.5.desktop: Moved from gobby.desktop. * configure.ac: Changed GETTEXT_PACKAGE from gobby to gobby05. * code/core/iconmanager.cpp: Load gobby-0.5.png for the Gobby logo instead of gobby.png. 2008-10-16 Armin Burgmeier * NEWS: Update for release. 2008-10-16 Armin Burgmeier * all source files: Changed description in GPL header since Gobby is no longer libobby driven. Also changed Copyright holder to me and Copyright date to 2008 since 99% of the code was written by me in 2008. 2008-10-16 Armin Burgmeier * contrib/gobby.desktop: Launch the correct executable, added a "(0.5)" to the description to differentiate it from a previous parallel-installed version. 2008-10-16 Armin Burgmeier * code/commands/browser-commands.cpp (on_synchronization_failed): Remove the entry from the session map directly instead of waiting for session closure, otherwise the error message is overwritten with a useless (and incorrent) 'The connection to the publisher has been lost' one. 2008-10-15 Armin Burgmeier * code/core/browser.hpp: * code/core/browser.cpp: Adapt to libinfinity API change, INFINOTE_HAVE_AVAHI has been renamed to LIBINFINITY_HAVE_AVAHI. 2008-10-15 Armin Burgmeier * code/core/Makefile.am: Added appicondir and pixmapdir back, so that installed pixmaps can be found. * code/util/resolv.cpp: Set all fields in getaddrinfo hint, otherwise the Win32 implementation of getaddrinfo produces an error. * code/core/browser.cpp: Commented-out the device name to device index translation for %dev syntax on Windows. It won't be available for now. * code/core/iconmanager.cpp: Don't load save-all.svg since GTK+ on Win32 has no SVG loader by defualt. Also, locate pixbufs using the non-deprecated g_win32_get_package_installation_directory_of_module function. * code/core/statusbar.cpp: Added code that undefs ERROR, because this is used in an enum, and seems to be defined somewhere in a Windows header. * code/dialogs/preferencesdialog.cpp: Don't set current folder of host directory file chooser (which is not shown currently anyway), because this could produce an error message if the directory does not exist. * code/operations/operation-open.cpp: * code/operations/operation-save.cpp: Use the C g_iconv API instead of Glib::IConv::iconv, because iconv is a define to libiconv on Windows, but Glib::IConv::libiconv does not exist. * Makefile.am: Fixed linking order, link to stdc++ and ws2_32 on Windows. * win32/gobby.rc: Fixed path to gobby.res file. 2008-10-15 Armin Burgmeier * po/LINGUAS: Added LINGUAS file that lists all languages. This seems to be required for `make dist'. * configure.ac: Use the po/LINGUAS file to set the ALL_LINGUAS variable. 2008-10-14 Armin Burgmeier * code/main.cpp: Call inf_init() instead of initializing gnutls and the GObject type system directly. 2008-10-14 Armin Burgmeier * code/commands/browser-commands.cpp: Fixed a typo in a string. 2008-10-14 Armin Burgmeier * code/commands/folder-commands.cpp: Only wake inactive users when the corresponding document is the currently active one. This fixes a crash when text has was selected in an inactive document and the selection is erased by selecting something elsewhere. 2008-10-13 Armin Burgmeier * code/core/titlebar.hpp: * code/core/titlebar.cpp: * code/core/Makefile.am: Added a new class that handles what is displayed in the titel bar of the Gobby window. * code/window.hpp: * code/window.cpp: Instantiate a TitleBar. * code/core/documentinfostorage.hpp: Added a superflous TODO comment. 2008-10-13 Armin Burgmeier * code/commands/browser-commands.hpp: * code/commands/browser-commands.cpp: * code/operations/operation-open.cpp: * code/operations/operation-save.cpp: Set the modified flag upon opening or saving a document correctly. * code/core/tablabel.hpp: * code/core/tablabel.cpp: Show the modify flag in the tab. 2008-10-12 Armin Burgmeier * code/operations/operation-open.cpp: Fixed double unref of IO object. * code/core/browser.cpp: Added a TODO comment about initial root node expansion for direct connections. 2008-10-11 Armin Burgmeier * code/core/tablabel.hpp: * code/core/tablabel.cpp: * code/core/Makefile.am: Added TabLabel to this extra source file, make color of tab label red on activity, and grey when the document is being synchronized or the connection has been lost. * code/core/tablabel.cpp: Removed the TabLabel class in the anonymous namespace, use the one introduced above instead. 2008-10-10 Armin Burgmeier * code/core/filechooser.cpp: Allow selecting non-local files in Gobby's filechooser. * code/commands/file-commands.cpp: * code/commands/browser-context-commands.cpp: Query the display name when opening a file, to use as document title. FileChooser::get_filename() does not work for non-local files. 2008-10-09 Armin Burgmeier * code/core/iconmanager.cpp: Removed the Save All icon from display, because it does not fit to the "Save" icon for Toolbar and Menu sizes. * code/core/header.cpp: Remove Save All icon from the toolbar. Items without icons look ugly and the toolbar, and there is a shortcut for quick access. 2008-10-09 Armin Burgmeier * code/util/file.hpp: * code/util/file.cpp: Added the config_filename() function. * code/core/browser.cpp: * code/core/documentinfostorage.cpp: * code/main.cpp: Make use of that function to access config files. * code/window.cpp: Give initial focus to browser. 2008-10-09 Armin Burgmeier * configure.ac: Renamed the `OSX' define to `PLATFORM_OSX', and added `PLATFORM_OSX_NATIVE' when running with the quartz GDK target. * code/core/header.cpp: Adapt, only use ige-mac-integration when running natively on OS X. 2008-10-09 Armin Burgmeier * code/: Moved from src/. * code/commands/browser-commands.hpp: * code/commands/browser-context-commands.hpp: * code/commands/edit-commands.hpp: * code/commands/file-commands.hpp: * code/commands/folder-commands.hpp: * code/commands/help-commands.hpp: * code/commands/view-commands.hpp: * code/core/browser.hpp: * code/core/closableframe.hpp: * code/core/documentinfostorage.hpp: * code/core/docwindow.hpp: * code/core/filechooser.hpp: * code/core/folder.hpp: * code/core/header.hpp: * code/core/huebutton.hpp: * code/core/iconmanager.hpp: * code/core/nodewatch.hpp: * code/core/noteplugin.hpp: * code/core/preferences.hpp: * code/core/statusbar.hpp: * code/core/userlist.hpp: * code/dialogs/documentlocationdialog.hpp: * code/dialogs/entrydialog.hpp: * code/dialogs/finddialog.hpp: * code/dialogs/gotodialog.hpp: * code/dialogs/initialdialog.hpp: * code/dialogs/preferencesdialog.hpp: * code/operations/operation-delete.hpp: * code/operations/operation-new.hpp: * code/operations/operation-open.hpp: * code/operations/operation-save.hpp: * code/operations/operations.hpp: * code/util/closebutton.hpp: * code/util/color.hpp: * code/util/config.hpp: * code/util/defaultaccumulator.hpp: * code/util/file.hpp: * code/util/i18n.hpp: * code/util/resolv.hpp: * code/util/serialize.hpp: * code/features.hpp: * code/window.hpp: Moved from inc/. * code/commands/Makefile.am: * code/operations/Makefile.am: * code/dialogs/Makefile.am: * code/core/Makefile.am: * code/util/Makefile.am: * code/Makefile.am: * Makefile.am: * configure.ac: Adapt to the new build structure. 2008-10-09 Armin Burgmeier * src/Makefile.am: Rename the gobby binary to gobby-0.5, to support parallel installation with gobby 0.4. 2008-10-09 Armin Burgmeier * inc/core/docwindow.hpp: * src/core/docwindow.cpp: Added the scroll_to_cursor_position() function. * src/commands/edit-commands.cpp: Scroll to cursor position on Undo or Redo. 2008-10-08 Armin Burgmeier * src/core/folder.cpp: Emit document_changed with NULL document after the last document has been removed, not before, so get_current_document() yields the correct result. * inc/commands/edit-commands.hpp: * src/commands/edit-commands.cpp: Don't rely on m_current_document being valid until on_document_changed() was called. * inc/commands/file-commands.hpp: * src/commands/file-commands.cpp: Make "New" and "Open" actions insensitive when there is no entry in the Document Browser. 2008-10-08 Armin Burgmeier * src/core/browser.cpp: Adapt to infinote API changes. 2008-10-01 Armin Burgmeier * src/util/config.cpp: Renamed the root config from gobby_config to gobby-config. 2008-09-30 Armin Burgmeier * src/commands/folder-commands.cpp: Added another assertion to be able to better track another problem with users becoming active without having the document selected in the notebook. 2008-09-22 Armin Burgmeier * src/commands/folder-commands.cpp: Flush pending user requests before setting user inactive, to avoid the user becoming active again due to a delayed caret movement. 2008-09-22 Armin Burgmeier * src/core/preferences.cpp: Fixed writing the insert-tabs-instead-of-spaces option to the config file. 2008-09-22 Armin Burgmeier * src/core/huebutton.cpp: Fix button ordering. 2008-09-21 Armin Burgmeier * src/main.cpp: Display version information on -v. 2008-09-21 Armin Burgmeier * src/core/docwindow.cpp: Make sure author tags have lower priority than GtkSourceView tags. 2008-09-21 Armin Burgmeier * src/window.cpp: Set main window role. 2008-09-21 Armin Burgmeier * inc/dialogs/preferenceswindow.hpp: Don't notify option if the newly selected option is the same as the already selected one. 2008-09-21 Armin Burgmeier * src/commands/file-fommands.cpp: Use document title as initial filename for Save dialog if no URI is available in info storage. 2008-09-21 Armin Burgmeier * src/commands/view-commands.cpp: Set "View Userlist" insensitive if no document is open. 2008-09-21 Armin Burgmeier * inc/core/browser.hpp: * src/core/browser.cpp: Support hostname:port%device syntax for direct connections, to be able to establish IPv6 link-local connections directly. 2008-09-18 Armin Burgmeier * update-potfiles: Added a small script to generate the po/POTFILES.in. It is simple, but enough for our needs. 2008-09-18 Armin Burgmeier * src/commands/browser-commands.cpp: * src/commands/browser-context-commands.cpp: * src/core/browser.cpp: * src/core/header.cpp: * src/operations/operation-delete.cpp: * src/operations/operation-new.cpp: * src/operations/operation-open.cpp: * src/operations/operation-save.cpp: Changed all "…" character in strings to "...". Gedit does the same, and xgettext does not accept … without complaining. Translators can still choose to translate "..." to "…". 2008-09-18 Armin Burgmeier * inc/util/encoding.hpp: * inc/core/encodingselector.hpp: * inc/dragdrop.hpp: * src/util/encoding.cpp: * src/core/encodingselector.cpp: * src/dragdrop.cpp: Removed. These remained from Gobby 0.4 but were never used in 0.5. * inc/util/Makefile.am: * inc/core/Makefile.am: * inc/Makefile.am: * src/util/Makefile.am: * src/core/Makefile.am: * src/Makefile.am: Removed the files from the build. * inc/window.hpp: Removed includes including those files. 2008-09-18 Armin Burgmeier * inc/dialogs/preferencesdialogs.hpp: * src/dialogs/preferencesdialogs.cpp: Added a security page. * inc/core/browser.hpp: * src/core/browser.cpp: Set discovery's security policy and certificate manager's trust file from preferences. 2008-09-18 Armin Burgmeier * src/core/preferencesdialog.cpp: Use a Gtk::SizeGroup to align the "User name" and "User color" labels correctly. 2008-09-18 Armin Burgmeier * configure.ac: Added a new define, GOBBY_CONFIGDIR, that specifies where Gobby shall store it's configuration files (preferences, known documents, known hosts) * inc/core/preferences.hpp: * src/core/preferences.cpp: Added a security section with trust file and security-policy entries, changed serialise to serialize for consistency. * src/window.cpp: Call preferences.serialize instead of serialise. * src/core/browser.cpp: Use the security policy to create new XMPP connections. Honor GOBBY_CONFIGDIR for known hosts file. * src/core/documentinfostorage: Honor GOBBY_CONFIGDIR for known documents file. * src/main.cpp: Honor GOBBY_CONFIGDIR for config file. 2008-09-17 Armin Burgmeier * src/Makefile.am: * src/commands/Makefile.am: * src/core/Makefile.am: * src/dialogs/Makefile.am: * src/operations/Makefile.am: * src/util/Makefile.am: Removed LOCALE_DIR definition from compiler command line. * configure.ac: Use AM_GLIB_DEFINE_LOCALEDIR instead. * src/main.cpp: Use GOBBY_LOCALEDIR instead of LOCALE_DIR. 2008-09-17 Armin Burgmeier * inc/core/browser.hpp: * src/core/browser.cpp: Instantiate a InfGtkCertificateManager, to handle server certificates. 2008-09-17 Armin Burgmeier * src/commands/view-commands.cpp: Fix usage of an uninitialized variable. 2008-09-13 Armin Burgmeier * src/core/browser.cpp: Adapt to infinote API change. 2008-09-11 Armin Burgmeier * inc/core/closableframe.hpp: * src/core/closableframe.cpp: Added title and icon for the frame. * src/core/docwindow.cpp: * src/window.cpp: Set title and icon for userlist and browser. 2008-09-11 Armin Burgmeier * pixmaps/chat.png: Removed. * pixmaps/Makefile.am: Removed chat.png from distribution. * inc/core/iconmanager.hpp: * src/core/iconmanager.cpp: Removed chat icon. * src/commands/help-commands.cpp: Added Thomas Glatt to artists because he designed the Gobby logo. 2008-09-11 Armin Burgmeier * inc/core/docwindow.hpp: * src/core/docwindow.cpp: Added a boolean parameter to set_info() that specifies whether the info box can be closed by the user. * src/commands/browser-commands.cpp: Make persistent error infos closable, but not temporary synchronization infos. 2008-09-11 Armin Burgmeier * inc/core/closableframe.hpp: * src/core/closableframe.cpp: Added a new widget, derived from Gtk::Frame, that shows a close button in the upper right corner, for the frame to be closed. * inc/core/Makefile.am: * src/core/Makefile.am: Added the new files to the build. * inc/core/preferences.hpp: * src/core/preferences.cpp: Added show_browser and show_userlist options. * inc/window.hpp: * src/window.cpp: * src/core/docwindow.cpp: Use a ClosableFrame for the browser and userlist, respectively. * src/core/browser.cpp: Removed the border_width. It is now applied by the ClosableFrame. If border_width is desired in certain situations, then it can still be called from elsewhere. * inc/core/header.hpp: * src/core/header.cpp: Added "Show Document Browser" and "Show Userlist" items to the View menu. * inc/commands/view-commands.hpp: * src/commands/view-commands.cpp: Implemented functionality for these (by setting the preference options). 2008-09-11 Armin Burgmeier * inc/util/closebutton.hpp: * src/util/closebutton.cpp: Added CloseButton class that provides an as-small-as-possible GtkButton with a close icon on it. * inc/util/Makefile.am: * src/util/Makefile.am: Added new files to the build. * src/core/folder.cpp: Use CloseButton on the tabs. 2008-09-10 Armin Burgmeier * src/core/userlist.cpp: Fixed userlist sorting, sometimes unavailable users were shown above available ones. 2008-09-10 Armin Burgmeier * src/commands/folder-commands.cpp: Fix a warning when the connection to the server has been lost while being subscribed to a document. 2008-09-10 Armin Burgmeier * src/window.cpp: Keep browser pane at a fixed width. 2008-09-10 Armin Burgmeier * inc/core/docwindow.hpp: * src/core/docwindow.cpp: Fixed an endless loop when the userlist is forcefully resized. 2008-09-10 Armin Burgmeier * inc/core/docwindow.hpp: * src/core/docwindow.cpp: Change user color in running session on preferences color change. 2008-09-10 Armin Burgmeier * src/dialogs/preferencesdialog.cpp: Use notify::color instead of signal_color_set on ColorButton, because ColorButton::set_color (as used by HueButton) odes not emit the latter. 2008-09-10 Armin Burgmeier * inc/core/userlist.hpp: * src/core/userlist.cpp: Watch notify::hue instead of notify::color on InfTextUser for user color changes. InfTextUser::color does not exist. 2008-09-09 Armin Burgmeier * inc/core/huebutton.hpp: * src/core/huebutton.cpp: Added HueButton widget which is similar to Gtk::ColorButton but launches a InfTextGtkHueChooser instead of a GtkColorSelector on click. * inc/core/Makefile.am: * src/core/Makefile.am: Add the new files to the build. * inc/dialogs/initialdialog.hpp: * inc/dialogs/preferencesdialog.hpp: * src/dialogs/initialdialog.cpp: * src/dialogs/preferencesdialog.cpp: Use HueButton instead of ColorButton for user color selection. 2008-09-08 Armin Burgmeier * inc/core/header.hpp: * src/core/header.cpp: Added FileClose action and menu item. * inc/commands/file-commands.hpp: * src/commands/file-commands.cpp: Handle it. 2008-09-08 Armin Burgmeier * src/core/folder.cpp: Make tabs reorderable. 2008-09-08 Armin Burgmeier * inc/core/preferences.hpp: * src/core/preferences.cpp: Added userlist_width property. * inc/core/docwindow.hpp: * src/core/docwindow.cpp: Honor it by making sure the userlist always has the width specified in the preferences, and update preferences when the user resizes the user list. * inc/core/folder.hpp: * src/core/folder.cpp: Make Preferences nonconst, so DocWindow can store the current userlist width in it. * src/window.cpp: Increase default window size to 800x600. 2008-09-08 Armin Burgmeier * inc/util/color.hpp: * src/util/color.cpp: Added hue_to_gdk_color(). * inc/core/userlist.hpp: * src/core/userlist.cpp: Added a new widget that displays all users in a session. * inc/core/Makefile.am: * src/core/Makefile.am: Added new files to the build. * inc/core/docwindow.hpp: * src/core/docwindow.cpp: Show userlist in a right pane. * src/core/folder.cpp (remove_document): Keep the session alive until the corresponding page has been removed from the folder. 2008-09-07 Armin Burgmeier * inc/commands/folder-commands.hpp: * src/commands/folder-commands.cpp: Added FolderCommands class, setting user status according to currently activated document in folder. * src/core/folder.cpp: Make sure signal_document_added is emitted before the first emission of signal_document_changed for the new document. * inc/window.hpp: * src/window.cpp: Instantiate FolderCommands. * inc/commands/Makefile.am: * src/commands/Makefile.am: Added new files to the build. 2008-08-27 Armin Burgmeier * src/commands/browser-commands.cpp: Set initial status depending on whether the document is currently displayed in the folder. * src/operations/operation-open.cpp: Set initial status of user in the document to inactive. 2008-08-26 Armin Burgmeier * src/core/noteplugin.cpp: Adapt to libinfinity API change (user_data parameter to InfcNotePlugin callback functions). 2008-08-25 Armin Burgmeier * src/operations/operation-open.cpp: Fixed a typo in a comment. 2008-08-24 Armin Burgmeier * inc/core/nodewatch.hpp: * src/core/nodewatch.cpp: Added a class that watches a node in a InfcBrowser and emits a signal when it is removed. * inc/dialogs/entrydialog.hpp: * src/dialogs/entrydialog.cpp: Added a class that shows a dialog with an entry, to prompt the user for a string to enter. * inc/operations/operation-delete.hpp: * src/operations/operation-delete.cpp: Added an operation that deletes a node. * inc/core/browser.hpp: * src/core/browser.cpp: Added get_view(). * inc/operations/operation-new.hpp: * src/operations/operation-new.cpp: Allow this to create a directory, via a boolean parameter. * inc/operations/operations.hpp: * src/operations/operations.cpp: Added delete_node() and create_directory(). * src/core/documentinfostorage.cpp (on_node_removed): Don't require the removed node to be in our map. * inc/commands/browser-context-commands.hpp: * src/commands/browser-context-commands.cpp: Added a class that shows a context menu for the left browser pane, allowing the user to create or remove nodes. * inc/window.hpp: * src/window.cpp: Instantiate a BrowserContextCommands object. * inc/core/Makefile.am: * inc/dialogs/Makefile.am: * inc/operations/Makefile.am: * inc/commands/Makefile.am: * src/core/Makefile.am: * src/dialogs/Makefile.am: * src/operations/Makefile.am: * src/commands/Makefile.am: Added the new files to the build. 2008-08-24 Armin Burgmeier * inc/core/filechooser.hpp: * src/core/filechooser.cpp: Added a new class that manages a "current folder uri" which specifies at which location the filechooser has been used the last time. This is used as default location for newly opened file chooser dialogs. * inc/core/Makefile.am: * src/core/Makefile.am: Add the new files to the build. * inc/commands/file-commands.hpp: * src/commands/file-commands.cpp: Use this when showing open or save dialogs. * inc/window.hpp: * src/window.cpp: Instantiate a FileChooser, pass to FileCommands. 2008-08-24 Armin Burgmeier * inc/core/browser.hpp: * src/core/browser.cpp: Added the get_selected() and set_selected() methods, using the new inf_gtk_browser_view_set_selected(). * src/commands/browser-commands.cpp: When subscribing to a session, then change the BrowserView selection to the corresponding note, and give focus to the DocWindow, so the user can start typing immediately. 2008-08-14 Armin Burgmeier * src/commands/browser-commands.cpp: Removed an obsolete TODO item. * inc/core/folder.hpp: * src/core/folder.cpp: Automatically record every session to ~/.infinote-records, to be able to reproduce errors that occur somewhere in the session. 2008-08-13 Armin Burgmeier * src/core/header.cpp: Don't show hidden languages for syntax highlighting. 2008-07-23 Armin Burgmeier * src/commands/view-commands.cpp: Block signal_language_changed while closing last document, to avoid a crash in the handler 2008-07-16 Armin Burgmeier * inc/core/header.hpp: * src/core/header.cpp: Added lookup_language_action() to lookup a languagu action by the GtkSourceLanguage. * inc/commands/view-commands.hpp: * src/commands/view-commands.cpp: Switch the language of the current document if the user chooses another language in the menu, and make the menu reflect the language for the current document. * inc/commands/help-commands.hpp: * src/commands/help-commands.cpp: Implemented the About option. * inc/commands/Makefile.am: * src/commands/Makefile.am: Added help-commands to the build. * inc/window.hpp: * src/window.cpp: Instantiate HelpCommands. 2008-07-14 Armin Burgmeier * configure.in: Require giomm 2.16.4 since this contains a bugfix that allows overwriting files when saving. 2008-07-12 Armin Burgmeier * inc/commands/browser-commands.hpp: * src/commands/browser-commands.cpp: Join with an alternative user name if the preferred one is already in use. 2008-07-11 Armin Burgmeier * inc/commands/view-commands.hpp: * src/commands/view-commands.cpp: Implemented View Toolbar and View Statusbar. * inc/commands/Makefile.am: * src/commands/Makefile.am: Add the new files to the build. * inc/core/folder.hpp: * src/core/folder.cpp: Added a const version of get_current_document(). * inc/core/statusbar.hpp: * src/core/statusbar.cpp: Added display of current line and column. * src/core/header.cpp: Hide toolbar initially if the show_toolbar preference is not set. * inc/window.hpp: * src/window.cpp: Instantiate ViewCommands. 2008-07-04 Armin Burgmeier * inc/core/toolwindow.hpp: * src/core/toolwindow.cpp: Removed. ToolWindow is no longer used. * inc/core/Makefile.am: * src/core/Makefile.am: Adjusted build files. 2008-07-04 Armin Burgmeier * inc/dialogs/gotodialog.hpp: * src/dialogs/gotodialog.cpp: Redesigned GotoDialog, and limit maximum line number to the line count of the current document. * inc/commands/edit-commands.hpp: * src/commands/edit-commands.cpp: Show GotoDialog and PreferencesDialog when the corresponding actions have been activated. * inc/dialogs/finddialog.hpp: * src/dialogs/finddialog.cpp: Added a destructor disconnecting from the active_user_changed signal of the current document. * src/core/header.cpp: Added mnemonics for a few menu items. * src/util/file.cpp: Fixed endless recursion in create_directory_with_parents(). 2008-07-03 Armin Burgmeier * inc/commands/edit-commands.hpp: * src/commands/edit-commands.cpp: Take a StatusBar in constructor to hand to find dialog, implemented find and replace. * inc/core/docwindow.hpp: * src/core/docwindow.cpp: Changed set_selection paramaters from const Gtk::TextIter& to const GtkTextIter* since we are using the C API of GtkTextBuffer. * src/dialogs/gotodialog.cpp: Adapt to API change in DocWindow. * inc/dialogs/finddialog.hpp: * src/dialogs/finddialog.cpp: Changed FindDialog to better meet the GNOME HIG, added "Wrap around" option, inherit from Gtk::Dialog instead of Gobby::ToolWindow. * src/core/header.cpp: Add a horizontal ellipsis to all menu items that open dialogs. * src/dialogs/initialdialog.cpp: Call Gtk::Dialog constructor with parent instead of default constructor. * src/window.cpp: Pass statusbar to EditCommands. 2008-07-03 Armin Burgmeier * inc/commands/edit-commands.hpp: * src/commands/edit-commands.cpp: Implemented Cut/Copy/Paste functionality. * src/core/folder.cpp: Emit signal_document_changed when the last document is about to be removed before the document has actually been removed, so that signal handlers that still have a reference to the last document can still make use of it. * src/core/header.cpp: Added a shortcut (L) for Save All, as in gedit. 2008-07-02 Armin Burgmeier * inc/core/docwindow.hpp: * src/core/docwindow.cpp: Added the active_user_changed signal and the get_active_user() function. * src/core/header.cpp: Added shortcuts for Undo and Redo. * src/core/noteplugin.cpp: Disable GtkSourceView Undo/Redo system by calling gtk_source_buffer_begin_non_undoable_action() without ever ending that non-undoable action. * inc/commands/edit-commands.hpp: * src/commands/edit-commands.cpp: New class handling the commands in the Edit submenu. For now Undo and Redo are implemented. * inc/window.hpp: * src/window.cpp: Instantiate EditCommands. * inc/commands/Makefile.am: * src/commands/Makefile.am: Added new files to build. 2008-06-29 Armin Burgmeier * inc/commands/file-commands.hpp: * src/commands/file-commands.cpp: Cleaned up the code a bit, implemented save all. * src/core/folder.cpp: Emit document_changed with NULL argument in case the last document has been removed. 2008-06-28 Armin Burgmeier * pixmaps/save-all.svg: * pixmaps/Makefile.am: Added icon for the save all menu item, contributed by Benjamin Herr * inc/core/iconmanager.hpp: * src/core/iconmanager.cpp: Add it to the icon manager. * src/core/header.cpp: Add it to the menu. * src/commands/file-commands.cpp: Fix a crash when unsubscribing from a session after having opened the file chooser to save a file. 2008-06-28 Armin Burgmeier * inc/core/documentinfostorage.hpp: * src/core/documentinfostorage.cpp: Moved from operations/documentinfostorage.[hc]pp. Also added the get_key() method and added overloads of get_info and set_info that take a key instead of browser and iter. * inc/operations/operation-open.hpp: Fixed include of documentinfostorage.hpp. * inc/operations/operation-save.hpp: * src/operations/operation-save.cpp: Implemented saving of documents. This currently does refuse to overwrite existing files due to a bug in giomm, see http://bugzilla.gnome.org/show_bug.cgi?id=540656. * inc/core/docwindow.hpp: * src/core/docwindow.cpp: Store a storage info key, so that on save the corresponding info can be updated. * inc/core/folder.hpp: * src/core/folder.cpp: Pass a correct storage info key to newly created documents. * inc/commands/browser-commands.hpp: * src/commands/browser-commands.cpp: Pass a storage info key to the folder when a new document is opened because of a new subscription. * inc/commands/file-commands.hpp: * src/commands/file-commands.cpp: Implemented save and save as functionality. * inc/operations/operations.hpp: * src/operations/operations.cpp: Added save_document(). * src/window.cpp: Pass info storage to browser and file commands. * inc/core/Makefile.am: * inc/operations/Makefile.am: * src/core/Makefile.am: * src/operations/Makefile.am: Add new and moved files to build. 2008-06-28 Armin Burgmeier * inc/commands/browser-commands.hpp: * src/commands/browser-commands.cpp: Set info text in DocWindow and make the document readonly when the connection to the publisher has been lost. * src/core/docwindow.cpp: Allow user to be NULL in set_active_user(). * src/core/folder.cpp: Set icon in tab label when the connection to the document's publisher has been lost. 2008-06-27 Armin Burgmeier * inc/commands/browser-commands.hpp: * src/commands/browser-commands.cpp: Make sure subscription progress is only shown for sessions that are synchronized, not for sync-ins. * inc/core/preferences.hpp: Removed the non-const operator Type& since it allows changing the Properties content without notification. Also added get() in analogy to set(). * inc/operations/operation-open.hpp: * src/operations/operation-open.cpp: Take a Preferences in the constructor, add a user to the session before synchronizing it to the server so that we can start editing the document before the synchronization is complete. * inc/operations/operations.hpp: * src/operations/operations.cpp: * src/window.cpp: Pass the Preferences object to OperationOpen. * src/operations/operation-new.cpp: Automatically Subscribe to newly created documents. 2008-06-27 Armin Burgmeier * inc/commands/browser-commands.hpp: * src/commands/browser-commands.cpp: Watch synchronization and join user for every session subscribed to, not only sessions that have been subscribed to by the BrowserCommands. * src/core/folder.cpp: Fixed a typo in a comment 2008-06-25 Yarek Tyshchenko (Merged from master): * configure.ac: Require ige-mac-integration when Gobby is compiled natively on OS X. * src/core/header.cpp: Integrate the menu bar into the main OS X menu bar. 2008-06-22 Armin Burgmeier * src/operations/documentinfostorage.cpp: Added return value for load_document, fixed storage of "root" node (was in top-level instead of ), * src/operations/operation-open.cpp: Added a TODO comment to remmove memmove. 2008-06-22 Armin Burgmeier * inc/operations/documentinfostorage.hpp: * src/operations/documentinfostorage.cpp: Disconnect from the set-browser signal handler on destruction. 2008-06-21 Armin Burgmeier * inc/util/file.hpp: * src/util/file.cpp: * inc/util/Makefile.am: * src/util/Makefile.am: Added file.hpp/.cpp containing utility functions to deal with the filesystem. Currently, a function that creates a directory and all its parent if necessary is implemented. * inc/util/config.hpp: * src/util/config.cpp: Make use of that function in the destructor. * inc/util/resolv.hpp: Include since we use std::auto_ptr<>. * inc/operations/documentinfostorage.hpp: * src/operations/documentinfostorage.cpp: Added class that stores local information on known documents such as the local location, the encoding and the eol style. * inc/operations/operation-open.hpp: * src/operations/operation-open.cpp: Implemented opening documents from files, via giomm. * inc/operations/Makefile.am: * src/operations/Makefile.am: Add the new source files to the build. * inc/operations/operations.hpp: * src/operations/operations.cpp: Added encoding parameter to create_document(), added DocumentInfoStorage member. * inc/commands/file-commands.hpp: * src/commands/file-commands.cpp: Added functionlity for the Open menu item. * inc/window.hpp: * src/window.cpp: Instantiate a DocumentInfoStorage, pass to Operations. * src/main.cpp: Initialize giomm. * configure.ac: Added giomm as a dependency. 2008-05-19 Armin Burgmeier * inc/Makefile.am: * inc/operations/Makefile.am: * inc/operations/operation-new.hpp: * inc/operations/operations.hpp: * src/Makefile.am: * src/operations/Makefile.am: * src/operations/operation-new.cpp: * src/operations/operations.cpp: Added Operation subsystem, handling tracking of asynchronous operations. * inc/commands/file-commands.hpp: * src/commands/file-commands.cpp: Make use of OperationNew to create new documents. * inc/window.hpp: * src/window.cpp: Instantate an Operations object, pass to FileCommands. * configure.ac: * Makefile.am: Create new makefiles, link libgobby-operations.h. 2008-05-18 Armin Burgmeier * inc/core/Makefile.am: * src/core/Makefile.am: * inc/core/noteplugin.hpp: * src/core/noteplugin.cpp: Added text plugin as a public global constant. * src/window.cpp: Adapt. 2008-05-18 Armin Burgmeier * src/dialogs/documentlocationdialog.cpp: Initially refilter the InfGtkBrowserModelFilter, otherwise previously explored nodes are always visible. * src/commands/file-commands.cpp: Adapt to the new infinote API in infc_browser_add_note(). 2008-05-09 Armin Burgmeier * inc/dialogs/documentlocationdialog.hpp: * src/dialogs/documentlocationdialog.cpp: Only allow ACCEPT response when a subdirectory is selected, filter all nodes but subdirectories. * src/commands/file-commands.cpp: Hide DocumentLocationDialog after usage. 2008-05-09 Armin Burgmeier * inc/util/Makefile.am: * inc/util/color.hpp: * inc/util/config.hpp: * inc/util/defaultaccumulator.hpp: * inc/util/encoding.hpp: * inc/util/i18n.hpp: * inc/util/resolv.hpp: * inc/util/serialize.hpp: * inc/core/Makefile.am: * inc/core/browser.hpp: * inc/core/docwindow.hpp: * inc/core/encodingselector.hpp: * inc/core/folder.hpp: * inc/core/header.hpp: * inc/core/iconmanager.hpp: * inc/core/preferences.hpp: * inc/core/statusbar.hpp: * inc/core/toolwindow.hpp: * inc/dialogs/Makefile.am: * inc/dialogs/finddialog.hpp: * inc/dialogs/gotodialog.hpp: * inc/dialogs/initialdialog.hpp: * inc/dialogs/preferencesdialog.hpp: * inc/commands/Makefile.am: * inc/commands/browser-commands.hpp: * inc/window.hpp: * inc/Makefile.am: * src/util/Makefile.am: * src/util/color.cpp: * src/util/config.cpp: * src/util/encoding.cpp: * src/util/i18n.cpp: * src/util/resolv.cpp: * src/util/serialize.cpp: * src/core/Makefile.am: * src/core/browser.cpp: * src/core/docwindow.cpp: * src/core/encodingselector.cpp: * src/core/folder.cpp: * src/core/header.cpp: * src/core/iconmanager.cpp: * src/core/preferences.cpp: * src/core/statusbar.cpp: * src/core/toolwindow.cpp: * src/dialogs/Makefile.am: * src/dialogs/finddialog.cpp: * src/dialogs/gotodialog.cpp: * src/dialogs/initialdialog.cpp: * src/dialogs/preferencesdialog.cpp: * src/commands/Makefile.am: * src/commands/browser-commands.cpp: * src/dragdrop.cpp: * src/main.cpp: * src/window.cpp: * src/Makefile.am: * Makefile.am: * configure.ac: Reordered file hierarchy, fixing includes. * inc/dialogs/documentlocationdialog.hpp: * src/dialogs/documentlocationdialog.cpp: Added a dialog allowing the user to select on which directory and server to create a document. * inc/commands/file-commands.hpp: * src/commands/file-commands.cpp: Added functionality for File/New using the new dialog. 2008-04-20 Armin Burgmeier * inc/browser.hpp: * src/browser.cpp: Adapt to new infinote API by using InfGtkBrowserStore instead of InfGtkBrowserModel. 2008-04-20 Armin Burgmeier * src/browser.cpp: Fixed a format string (%1 instead of %0). 2008-04-13 Armin Burgmeier * inc/docwindow.hpp: * src/docwindow.cpp: Added DocWindow::set_active_user(). * src/folder.cpp: Show icon in the tab representing the current subscription state. * src/commands/browser-commands.cpp: Set active user after user join. 2008-04-13 Armin Burgmeier * inc/commands/browser-commands.hpp: * src/commands/browser-commands.cpp: Track synchronization, perform a user join after synchronization, show error and status messages. * inc/docwindow.hpp: * src/docwindow.cpp: Implemented DocWindow::set_info() and DocWindow::unset_info(). * src/folder.cpp: Changed Folder::lookup_document() to use a PageList and an iterator instead of traversing the list by index. * src/window.cpp: Pass the preferences to the BrowserCommands because it needs to find the name for the user to join. 2008-04-12 Armin Burgmeier * inc/commands/browser-commands.hpp: * inc/commands/Makefile.am * src/commands/browser-commands.cpp: * src/commands/Makefile.am: Added functionality to subscribe to a session. * inc/Makefile.am: * src/Makefile.am: Recurse into the commands subdirectory. * Makefile.am: Link src/commands/libgobby-commands.a * configure.ac: Create inc/commands/Makefile.am and src/commands/Makefile.am. * inc/folder.hpp: * src/folder.cpp: Added switch_to_document(), make close button in tab label look correct. * src/header.cpp: Rename label for save all menu item from "Save all" to "Save All". * src/docwindow.cpp: Make the window non-editable by default. We make it editable later when a local user has joined. * inc/window.hpp: * src/window.cpp: Added BrowserCommands object. 2008-04-12 Armin Burgmeier * contrib/gobby-0.0.20050522.ebuild: * contrib/artwork/chat.svg: * test/test_document.cpp: Removed, these are outdated. * inc/default_accumulator.hpp: * inc/serialize.hpp: * src/serialize.cpp: Added. These are basically copies from net6, but in the Gobby namespace. * inc/i18n.hpp: * src/i18n.cpp: Moved from inc/common.hpp or src/common.cpp, respectively. * inc/application_state.hpp: * inc/buffer_def.hpp: * inc/chat.hpp: * inc/colorsel.hpp: * inc/historyentry.hpp: * inc/document.hpp: * inc/document_settings.hpp: * inc/entrydialog.hpp: * inc/fileentry.hpp: * inc/gselector.hpp: * inc/hostdialog.hpp: * inc/hostprogressdialog.hpp: * inc/ipc.hpp: * inc/joindialog.hpp: * inc/joinprogressdialog.hpp: * inc/logview.hpp: * inc/passworddialog.hpp: * inc/progressdialog.hpp: * inc/regex.hpp: * inc/togglewindow.hpp: * inc/unix.hpp: * src/application_state.cpp: * src/buffer_def.cpp: * src/chat.cpp: * src/colorsel.cpp: * src/document.cpp: * src/document_settings.cpp: * src/entrydialog.cpp: * src/fileentry.cpp: * src/gselector.cpp: * src/historyentry.cpp: * src/hostdialog.cpp: * src/hostprogressdialog.cpp: * src/ipc.cpp: * src/joindialog.cpp: * src/joinprogressdialog.cpp: * src/logview.cpp: * src/passworddialog.cpp: * src/preferencesdialog.cpp: * src/progressdialog.cpp: * src/regex.cpp: * src/togglewindow.cpp: * src/unix.cpp: Removed. They are no longer required for infinote, or at least not in a such way that a complete rewrite would not be easier anyway. * inc/config.hpp: * inc/dragdrop.hpp: * inc/encoding.hpp: * inc/finddialog.hpp: * inc/folder.hpp: * inc/statusbar.hpp: * inc/window.hpp: * src/browser.cpp: * src/config.cpp: * src/dragdrop.cpp: * src/encoding.cpp: * src/encoding_selector.cpp: * src/finddialog.cpp: * src/folder.cpp: * src/gotodialog.cpp: * src/header.cpp: * src/icon.cpp: * src/initialdialog.cpp: * src/main.cpp: * src/resolv.cpp: * src/statusbar.cpp: * src/window.cpp: Removed any occurences of net6/obby stuff, replaced by equivalent functionality if possible. * po/POTFILES.in: Removed source files, added a TODO comment to readd them as soon as the required files are ready. * Makefile.am: * contrib/Makefile.am: * contrib/artwork/Makefile.am: * inc/Makefile.am: * pixmaps/Makefile.am: * src/Makefile.am: * win32/Makefile.am: Hierarchical build instead of only a top-level Makefile.am, so that each Makefile.am is smaller and easier to use. * configure.ac: Remove dependency on net6 and obby. 2008-04-12 Armin Burgmeier * src/preferences.cpp: Changed default value for homeend_smart to false. * inc/resolv.hpp: * src/resolv.cpp: Changed signature of callbacks to include the ResolvHandle. * inc/browser.hpp: * src/browser.cpp: Added resolv map to correctly cancel pending resolvs on destruction. * inc/statusbar.hpp: * src/statusbar.cpp: Correctly remove the timeout connection on destruction of a statusbar message. * inc/folder.hpp: * inc/docwindow.hpp: * src/folder.cpp: * src/docwindow.cpp: Changed Folder and DocWindow to be used with InfTextSession instead of obby::local_document_info. * inc/window.hpp: * src/finddialog.cpp: * src/gotodialog.cpp: * src/window.cpp: Adapted to Folder and DocWindow changes. 2008-03-13 Armin Burgmeier * inc/statusbar.hpp: * src/statusbar.cpp: Removed old functionality, add methods to add and remove status messages. * inc/window.hpp: * inc/window.cpp: Adapt. 2008-03-09 Armin Burgmeier * inc/documentlist.hpp: * inc/userlist.hpp: * src/documentlist.cpp: * src/userlist.cpp: * Makefile.am: Removed. * inc/preferences.hpp: * src/preferences.cpp: Added show_toolbar and show_statusbar preferences. * inc/initialdialog.hpp: Added missing include (gtkmm/image.h). * inc/header.hpp: * src/header.cpp: Redesign menu/toolbar to better match common editors. * inc/window.hpp: * src/folder.cpp: * src/window.cpp: Adapt to above changes, current UI disfunctional. 2008-03-06 Armin Burgmeier * inc/resolv.hpp: * src/resolv.cpp: Code to asynchronously resolve host names. * inc/browser.hpp: * src/browser.cpp: Added Browser class that shows remote directories to browse (via InfGtkBrowserView), and that allows to create direct connections. * inc/window.hpp: * src/window.cpp: Show browser in a sidepane to the left, remove chat. * src/initialdialog.cpp: Set window title. * Makefile.am: Added browser.{h,c}pp and resolv.{h,c}pp * configure.ac: Depend on infinote. 2008-03-03 Armin Burgmeier * inc/initialdialog.hpp: * src/initialdialog.cpp: * Makefile.am: Added an initial welcome dialog. * inc/window.hpp: * src/window.cpp: Show initial dialog the first time gobby is started. 2008-03-03 Armin Burgmeier * inc/preferencesdialog.hpp: * src/preferencesdialog.cpp: Store chosen preferences. * inc/preferences.hpp: Add Preferences::Option::set for convenience. * inc/colorutil.hpp: * src/colorutil.cpp: * Makefile.am: Added colorutil containing some utility functions to handle colors. 2008-03-02 Armin Burgmeier * configure.ac: Require at least gtkmm 2.12, drop gtksourceview1 support, post-branch bump to 0.4.90. * inc/preferences.hpp: * src/preferences.cpp: Removed options not required for infinote, added user preferences page. * inc/preferencesdialog.hpp: * src/preferencesdialog.cpp: Adapted and redesigned preferences dialog to better meet the Gnome HIG. Currently disfunctional. * inc/header.hpp: * inc/folder.hpp: * inc/docwindow.hpp: * inc/window.hpp: * src/header.cpp: * src/folder.cpp: * src/chat.cpp: * src/togglewindow.cpp: * src/docwindow.cpp: * src/window.cpp: Adapt. gobby-0.4.94/aclocal.m40000644000175000017500000021035711543672406011513 00000000000000# generated automatically by aclocal 1.11.1 -*- Autoconf -*- # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, # 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. # This file 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. m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.68],, [m4_warning([this file was generated for autoconf 2.68. You have another version of autoconf. It may work, but is not guaranteed to. If you have problems, you may need to regenerate the build system entirely. To do so, use the procedure documented by the package, typically `autoreconf'.])]) # Copyright (C) 1995-2002 Free Software Foundation, Inc. # Copyright (C) 2001-2003,2004 Red Hat, Inc. # # This file is free software, distributed under the terms of the GNU # General Public License. As a special exception to the GNU General # Public License, this file may be distributed as part of a program # that contains a configuration script generated by Autoconf, under # the same distribution terms as the rest of that program. # # This file can be copied and used freely without restrictions. It can # be used in projects which are not available under the GNU Public License # but which still want to provide support for the GNU gettext functionality. # # Macro to add for using GNU gettext. # Ulrich Drepper , 1995, 1996 # # Modified to never use included libintl. # Owen Taylor , 12/15/1998 # # Major rework to remove unused code # Owen Taylor , 12/11/2002 # # Added better handling of ALL_LINGUAS from GNU gettext version # written by Bruno Haible, Owen Taylor 5/30/3002 # # Modified to require ngettext # Matthias Clasen 08/06/2004 # # We need this here as well, since someone might use autoconf-2.5x # to configure GLib then an older version to configure a package # using AM_GLIB_GNU_GETTEXT AC_PREREQ(2.53) dnl dnl We go to great lengths to make sure that aclocal won't dnl try to pull in the installed version of these macros dnl when running aclocal in the glib directory. dnl m4_copy([AC_DEFUN],[glib_DEFUN]) m4_copy([AC_REQUIRE],[glib_REQUIRE]) dnl dnl At the end, if we're not within glib, we'll define the public dnl definitions in terms of our private definitions. dnl # GLIB_LC_MESSAGES #-------------------- glib_DEFUN([GLIB_LC_MESSAGES], [AC_CHECK_HEADERS([locale.h]) if test $ac_cv_header_locale_h = yes; then AC_CACHE_CHECK([for LC_MESSAGES], am_cv_val_LC_MESSAGES, [AC_TRY_LINK([#include ], [return LC_MESSAGES], am_cv_val_LC_MESSAGES=yes, am_cv_val_LC_MESSAGES=no)]) if test $am_cv_val_LC_MESSAGES = yes; then AC_DEFINE(HAVE_LC_MESSAGES, 1, [Define if your file defines LC_MESSAGES.]) fi fi]) # GLIB_PATH_PROG_WITH_TEST #---------------------------- dnl GLIB_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR, dnl TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]]) glib_DEFUN([GLIB_PATH_PROG_WITH_TEST], [# Extract the first word of "$2", so it can be a program name with args. set dummy $2; ac_word=[$]2 AC_MSG_CHECKING([for $ac_word]) AC_CACHE_VAL(ac_cv_path_$1, [case "[$]$1" in /*) ac_cv_path_$1="[$]$1" # Let the user override the test with a path. ;; *) IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" for ac_dir in ifelse([$5], , $PATH, [$5]); do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$ac_word; then if [$3]; then ac_cv_path_$1="$ac_dir/$ac_word" break fi fi done IFS="$ac_save_ifs" dnl If no 4th arg is given, leave the cache variable unset, dnl so AC_PATH_PROGS will keep looking. ifelse([$4], , , [ test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4" ])dnl ;; esac])dnl $1="$ac_cv_path_$1" if test ifelse([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then AC_MSG_RESULT([$]$1) else AC_MSG_RESULT(no) fi AC_SUBST($1)dnl ]) # GLIB_WITH_NLS #----------------- glib_DEFUN([GLIB_WITH_NLS], dnl NLS is obligatory [USE_NLS=yes AC_SUBST(USE_NLS) gt_cv_have_gettext=no CATOBJEXT=NONE XGETTEXT=: INTLLIBS= AC_CHECK_HEADER(libintl.h, [gt_cv_func_dgettext_libintl="no" libintl_extra_libs="" # # First check in libc # AC_CACHE_CHECK([for ngettext in libc], gt_cv_func_ngettext_libc, [AC_TRY_LINK([ #include ], [return !ngettext ("","", 1)], gt_cv_func_ngettext_libc=yes, gt_cv_func_ngettext_libc=no) ]) if test "$gt_cv_func_ngettext_libc" = "yes" ; then AC_CACHE_CHECK([for dgettext in libc], gt_cv_func_dgettext_libc, [AC_TRY_LINK([ #include ], [return !dgettext ("","")], gt_cv_func_dgettext_libc=yes, gt_cv_func_dgettext_libc=no) ]) fi if test "$gt_cv_func_ngettext_libc" = "yes" ; then AC_CHECK_FUNCS(bind_textdomain_codeset) fi # # If we don't have everything we want, check in libintl # if test "$gt_cv_func_dgettext_libc" != "yes" \ || test "$gt_cv_func_ngettext_libc" != "yes" \ || test "$ac_cv_func_bind_textdomain_codeset" != "yes" ; then AC_CHECK_LIB(intl, bindtextdomain, [AC_CHECK_LIB(intl, ngettext, [AC_CHECK_LIB(intl, dgettext, gt_cv_func_dgettext_libintl=yes)])]) if test "$gt_cv_func_dgettext_libintl" != "yes" ; then AC_MSG_CHECKING([if -liconv is needed to use gettext]) AC_MSG_RESULT([]) AC_CHECK_LIB(intl, ngettext, [AC_CHECK_LIB(intl, dcgettext, [gt_cv_func_dgettext_libintl=yes libintl_extra_libs=-liconv], :,-liconv)], :,-liconv) fi # # If we found libintl, then check in it for bind_textdomain_codeset(); # we'll prefer libc if neither have bind_textdomain_codeset(), # and both have dgettext and ngettext # if test "$gt_cv_func_dgettext_libintl" = "yes" ; then glib_save_LIBS="$LIBS" LIBS="$LIBS -lintl $libintl_extra_libs" unset ac_cv_func_bind_textdomain_codeset AC_CHECK_FUNCS(bind_textdomain_codeset) LIBS="$glib_save_LIBS" if test "$ac_cv_func_bind_textdomain_codeset" = "yes" ; then gt_cv_func_dgettext_libc=no else if test "$gt_cv_func_dgettext_libc" = "yes" \ && test "$gt_cv_func_ngettext_libc" = "yes"; then gt_cv_func_dgettext_libintl=no fi fi fi fi if test "$gt_cv_func_dgettext_libc" = "yes" \ || test "$gt_cv_func_dgettext_libintl" = "yes"; then gt_cv_have_gettext=yes fi if test "$gt_cv_func_dgettext_libintl" = "yes"; then INTLLIBS="-lintl $libintl_extra_libs" fi if test "$gt_cv_have_gettext" = "yes"; then AC_DEFINE(HAVE_GETTEXT,1, [Define if the GNU gettext() function is already present or preinstalled.]) GLIB_PATH_PROG_WITH_TEST(MSGFMT, msgfmt, [test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"], no)dnl if test "$MSGFMT" != "no"; then glib_save_LIBS="$LIBS" LIBS="$LIBS $INTLLIBS" AC_CHECK_FUNCS(dcgettext) MSGFMT_OPTS= AC_MSG_CHECKING([if msgfmt accepts -c]) GLIB_RUN_PROG([$MSGFMT -c -o /dev/null],[ msgid "" msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Project-Id-Version: test 1.0\n" "PO-Revision-Date: 2007-02-15 12:01+0100\n" "Last-Translator: test \n" "Language-Team: C \n" "MIME-Version: 1.0\n" "Content-Transfer-Encoding: 8bit\n" ], [MSGFMT_OPTS=-c; AC_MSG_RESULT([yes])], [AC_MSG_RESULT([no])]) AC_SUBST(MSGFMT_OPTS) AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT) GLIB_PATH_PROG_WITH_TEST(XGETTEXT, xgettext, [test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"], :) AC_TRY_LINK(, [extern int _nl_msg_cat_cntr; return _nl_msg_cat_cntr], [CATOBJEXT=.gmo DATADIRNAME=share], [case $host in *-*-solaris*) dnl On Solaris, if bind_textdomain_codeset is in libc, dnl GNU format message catalog is always supported, dnl since both are added to the libc all together. dnl Hence, we'd like to go with DATADIRNAME=share and dnl and CATOBJEXT=.gmo in this case. AC_CHECK_FUNC(bind_textdomain_codeset, [CATOBJEXT=.gmo DATADIRNAME=share], [CATOBJEXT=.mo DATADIRNAME=lib]) ;; *) CATOBJEXT=.mo DATADIRNAME=lib ;; esac]) LIBS="$glib_save_LIBS" INSTOBJEXT=.mo else gt_cv_have_gettext=no fi fi ]) if test "$gt_cv_have_gettext" = "yes" ; then AC_DEFINE(ENABLE_NLS, 1, [always defined to indicate that i18n is enabled]) fi dnl Test whether we really found GNU xgettext. if test "$XGETTEXT" != ":"; then dnl If it is not GNU xgettext we define it as : so that the dnl Makefiles still can work. if $XGETTEXT --omit-header /dev/null 2> /dev/null; then : ; else AC_MSG_RESULT( [found xgettext program is not GNU xgettext; ignore it]) XGETTEXT=":" fi fi # We need to process the po/ directory. POSUB=po AC_OUTPUT_COMMANDS( [case "$CONFIG_FILES" in *po/Makefile.in*) sed -e "/POTFILES =/r po/POTFILES" po/Makefile.in > po/Makefile esac]) dnl These rules are solely for the distribution goal. While doing this dnl we only have to keep exactly one list of the available catalogs dnl in configure.ac. for lang in $ALL_LINGUAS; do GMOFILES="$GMOFILES $lang.gmo" POFILES="$POFILES $lang.po" done dnl Make all variables we use known to autoconf. AC_SUBST(CATALOGS) AC_SUBST(CATOBJEXT) AC_SUBST(DATADIRNAME) AC_SUBST(GMOFILES) AC_SUBST(INSTOBJEXT) AC_SUBST(INTLLIBS) AC_SUBST(PO_IN_DATADIR_TRUE) AC_SUBST(PO_IN_DATADIR_FALSE) AC_SUBST(POFILES) AC_SUBST(POSUB) ]) # AM_GLIB_GNU_GETTEXT # ------------------- # Do checks necessary for use of gettext. If a suitable implementation # of gettext is found in either in libintl or in the C library, # it will set INTLLIBS to the libraries needed for use of gettext # and AC_DEFINE() HAVE_GETTEXT and ENABLE_NLS. (The shell variable # gt_cv_have_gettext will be set to "yes".) It will also call AC_SUBST() # on various variables needed by the Makefile.in.in installed by # glib-gettextize. dnl glib_DEFUN([GLIB_GNU_GETTEXT], [AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([AC_HEADER_STDC])dnl GLIB_LC_MESSAGES GLIB_WITH_NLS if test "$gt_cv_have_gettext" = "yes"; then if test "x$ALL_LINGUAS" = "x"; then LINGUAS= else AC_MSG_CHECKING(for catalogs to be installed) NEW_LINGUAS= for presentlang in $ALL_LINGUAS; do useit=no if test "%UNSET%" != "${LINGUAS-%UNSET%}"; then desiredlanguages="$LINGUAS" else desiredlanguages="$ALL_LINGUAS" fi for desiredlang in $desiredlanguages; do # Use the presentlang catalog if desiredlang is # a. equal to presentlang, or # b. a variant of presentlang (because in this case, # presentlang can be used as a fallback for messages # which are not translated in the desiredlang catalog). case "$desiredlang" in "$presentlang"*) useit=yes;; esac done if test $useit = yes; then NEW_LINGUAS="$NEW_LINGUAS $presentlang" fi done LINGUAS=$NEW_LINGUAS AC_MSG_RESULT($LINGUAS) fi dnl Construct list of names of catalog files to be constructed. if test -n "$LINGUAS"; then for lang in $LINGUAS; do CATALOGS="$CATALOGS $lang$CATOBJEXT"; done fi fi dnl If the AC_CONFIG_AUX_DIR macro for autoconf is used we possibly dnl find the mkinstalldirs script in another subdir but ($top_srcdir). dnl Try to locate is. MKINSTALLDIRS= if test -n "$ac_aux_dir"; then MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs" fi if test -z "$MKINSTALLDIRS"; then MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs" fi AC_SUBST(MKINSTALLDIRS) dnl Generate list of files to be processed by xgettext which will dnl be included in po/Makefile. test -d po || mkdir po if test "x$srcdir" != "x."; then if test "x`echo $srcdir | sed 's@/.*@@'`" = "x"; then posrcprefix="$srcdir/" else posrcprefix="../$srcdir/" fi else posrcprefix="../" fi rm -f po/POTFILES sed -e "/^#/d" -e "/^\$/d" -e "s,.*, $posrcprefix& \\\\," -e "\$s/\(.*\) \\\\/\1/" \ < $srcdir/po/POTFILES.in > po/POTFILES ]) # AM_GLIB_DEFINE_LOCALEDIR(VARIABLE) # ------------------------------- # Define VARIABLE to the location where catalog files will # be installed by po/Makefile. glib_DEFUN([GLIB_DEFINE_LOCALEDIR], [glib_REQUIRE([GLIB_GNU_GETTEXT])dnl glib_save_prefix="$prefix" glib_save_exec_prefix="$exec_prefix" glib_save_datarootdir="$datarootdir" test "x$prefix" = xNONE && prefix=$ac_default_prefix test "x$exec_prefix" = xNONE && exec_prefix=$prefix datarootdir=`eval echo "${datarootdir}"` if test "x$CATOBJEXT" = "x.mo" ; then localedir=`eval echo "${libdir}/locale"` else localedir=`eval echo "${datadir}/locale"` fi prefix="$glib_save_prefix" exec_prefix="$glib_save_exec_prefix" datarootdir="$glib_save_datarootdir" AC_DEFINE_UNQUOTED($1, "$localedir", [Define the location where the catalogs will be installed]) ]) dnl dnl Now the definitions that aclocal will find dnl ifdef(glib_configure_ac,[],[ AC_DEFUN([AM_GLIB_GNU_GETTEXT],[GLIB_GNU_GETTEXT($@)]) AC_DEFUN([AM_GLIB_DEFINE_LOCALEDIR],[GLIB_DEFINE_LOCALEDIR($@)]) ])dnl # GLIB_RUN_PROG(PROGRAM, TEST-FILE, [ACTION-IF-PASS], [ACTION-IF-FAIL]) # # Create a temporary file with TEST-FILE as its contents and pass the # file name to PROGRAM. Perform ACTION-IF-PASS if PROGRAM exits with # 0 and perform ACTION-IF-FAIL for any other exit status. AC_DEFUN([GLIB_RUN_PROG], [cat >conftest.foo <<_ACEOF $2 _ACEOF if AC_RUN_LOG([$1 conftest.foo]); then m4_ifval([$3], [$3], [:]) m4_ifvaln([$4], [else $4])dnl echo "$as_me: failed input was:" >&AS_MESSAGE_LOG_FD sed 's/^/| /' conftest.foo >&AS_MESSAGE_LOG_FD fi]) dnl Do not call GNOME_DOC_DEFINES directly. It is split out from dnl GNOME_DOC_INIT to allow gnome-doc-utils to bootstrap off itself. AC_DEFUN([GNOME_DOC_DEFINES], [ AC_ARG_WITH([help-dir], AC_HELP_STRING([--with-help-dir=DIR], [path to help docs]),, [with_help_dir='${datadir}/gnome/help']) HELP_DIR="$with_help_dir" AC_SUBST(HELP_DIR) AC_ARG_WITH([omf-dir], AC_HELP_STRING([--with-omf-dir=DIR], [path to OMF files]),, [with_omf_dir='${datadir}/omf']) OMF_DIR="$with_omf_dir" AC_SUBST(OMF_DIR) AC_ARG_WITH([help-formats], AC_HELP_STRING([--with-help-formats=FORMATS], [list of formats]),, [with_help_formats='']) DOC_USER_FORMATS="$with_help_formats" AC_SUBST(DOC_USER_FORMATS) AC_ARG_ENABLE([scrollkeeper], [AC_HELP_STRING([--disable-scrollkeeper], [do not make updates to the scrollkeeper database])],, enable_scrollkeeper=yes) AM_CONDITIONAL([ENABLE_SK],[test "$gdu_cv_have_gdu" = "yes" -a "$enable_scrollkeeper" = "yes"]) dnl disable scrollkeeper automatically for distcheck DISTCHECK_CONFIGURE_FLAGS="--disable-scrollkeeper $DISTCHECK_CONFIGURE_FLAGS" AC_SUBST(DISTCHECK_CONFIGURE_FLAGS) AM_CONDITIONAL([HAVE_GNOME_DOC_UTILS],[test "$gdu_cv_have_gdu" = "yes"]) ]) # GNOME_DOC_INIT ([MINIMUM-VERSION],[ACTION-IF-FOUND],[ACTION-IF-NOT-FOUND]) # AC_DEFUN([GNOME_DOC_INIT], [AC_REQUIRE([AC_PROG_LN_S])dnl ifelse([$1],,[gdu_cv_version_required=0.3.2],[gdu_cv_version_required=$1]) AC_MSG_CHECKING([gnome-doc-utils >= $gdu_cv_version_required]) PKG_CHECK_EXISTS([gnome-doc-utils >= $gdu_cv_version_required], [gdu_cv_have_gdu=yes],[gdu_cv_have_gdu=no]) if test "$gdu_cv_have_gdu" = "yes"; then AC_MSG_RESULT([yes]) ifelse([$2],,[:],[$2]) else AC_MSG_RESULT([no]) ifelse([$3],,[AC_MSG_ERROR([gnome-doc-utils >= $gdu_cv_version_required not found])],[$3]) fi GNOME_DOC_DEFINES ]) dnl IT_PROG_INTLTOOL([MINIMUM-VERSION], [no-xml]) # serial 40 IT_PROG_INTLTOOL AC_DEFUN([IT_PROG_INTLTOOL], [ AC_PREREQ([2.50])dnl AC_REQUIRE([AM_NLS])dnl case "$am__api_version" in 1.[01234]) AC_MSG_ERROR([Automake 1.5 or newer is required to use intltool]) ;; *) ;; esac if test -n "$1"; then AC_MSG_CHECKING([for intltool >= $1]) INTLTOOL_REQUIRED_VERSION_AS_INT=`echo $1 | awk -F. '{ print $ 1 * 1000 + $ 2 * 100 + $ 3; }'` INTLTOOL_APPLIED_VERSION=`intltool-update --version | head -1 | cut -d" " -f3` [INTLTOOL_APPLIED_VERSION_AS_INT=`echo $INTLTOOL_APPLIED_VERSION | awk -F. '{ print $ 1 * 1000 + $ 2 * 100 + $ 3; }'` ] AC_MSG_RESULT([$INTLTOOL_APPLIED_VERSION found]) test "$INTLTOOL_APPLIED_VERSION_AS_INT" -ge "$INTLTOOL_REQUIRED_VERSION_AS_INT" || AC_MSG_ERROR([Your intltool is too old. You need intltool $1 or later.]) fi AC_PATH_PROG(INTLTOOL_UPDATE, [intltool-update]) AC_PATH_PROG(INTLTOOL_MERGE, [intltool-merge]) AC_PATH_PROG(INTLTOOL_EXTRACT, [intltool-extract]) if test -z "$INTLTOOL_UPDATE" -o -z "$INTLTOOL_MERGE" -o -z "$INTLTOOL_EXTRACT"; then AC_MSG_ERROR([The intltool scripts were not found. Please install intltool.]) fi INTLTOOL_DESKTOP_RULE='%.desktop: %.desktop.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' INTLTOOL_DIRECTORY_RULE='%.directory: %.directory.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' INTLTOOL_KEYS_RULE='%.keys: %.keys.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -k -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' INTLTOOL_PROP_RULE='%.prop: %.prop.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' INTLTOOL_OAF_RULE='%.oaf: %.oaf.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -o -p $(top_srcdir)/po $< [$]@' INTLTOOL_PONG_RULE='%.pong: %.pong.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' INTLTOOL_SERVER_RULE='%.server: %.server.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -o -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' INTLTOOL_SHEET_RULE='%.sheet: %.sheet.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' INTLTOOL_SOUNDLIST_RULE='%.soundlist: %.soundlist.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' INTLTOOL_UI_RULE='%.ui: %.ui.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' INTLTOOL_XML_RULE='%.xml: %.xml.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' INTLTOOL_XML_NOMERGE_RULE='%.xml: %.xml.in $(INTLTOOL_MERGE) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u /tmp $< [$]@' INTLTOOL_XAM_RULE='%.xam: %.xml.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' INTLTOOL_KBD_RULE='%.kbd: %.kbd.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -m -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' INTLTOOL_CAVES_RULE='%.caves: %.caves.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' INTLTOOL_SCHEMAS_RULE='%.schemas: %.schemas.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -s -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' INTLTOOL_THEME_RULE='%.theme: %.theme.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' INTLTOOL_SERVICE_RULE='%.service: %.service.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' INTLTOOL_POLICY_RULE='%.policy: %.policy.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' _IT_SUBST(INTLTOOL_DESKTOP_RULE) _IT_SUBST(INTLTOOL_DIRECTORY_RULE) _IT_SUBST(INTLTOOL_KEYS_RULE) _IT_SUBST(INTLTOOL_PROP_RULE) _IT_SUBST(INTLTOOL_OAF_RULE) _IT_SUBST(INTLTOOL_PONG_RULE) _IT_SUBST(INTLTOOL_SERVER_RULE) _IT_SUBST(INTLTOOL_SHEET_RULE) _IT_SUBST(INTLTOOL_SOUNDLIST_RULE) _IT_SUBST(INTLTOOL_UI_RULE) _IT_SUBST(INTLTOOL_XAM_RULE) _IT_SUBST(INTLTOOL_KBD_RULE) _IT_SUBST(INTLTOOL_XML_RULE) _IT_SUBST(INTLTOOL_XML_NOMERGE_RULE) _IT_SUBST(INTLTOOL_CAVES_RULE) _IT_SUBST(INTLTOOL_SCHEMAS_RULE) _IT_SUBST(INTLTOOL_THEME_RULE) _IT_SUBST(INTLTOOL_SERVICE_RULE) _IT_SUBST(INTLTOOL_POLICY_RULE) # Check the gettext tools to make sure they are GNU AC_PATH_PROG(XGETTEXT, xgettext) AC_PATH_PROG(MSGMERGE, msgmerge) AC_PATH_PROG(MSGFMT, msgfmt) AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT) if test -z "$XGETTEXT" -o -z "$MSGMERGE" -o -z "$MSGFMT"; then AC_MSG_ERROR([GNU gettext tools not found; required for intltool]) fi xgversion="`$XGETTEXT --version|grep '(GNU ' 2> /dev/null`" mmversion="`$MSGMERGE --version|grep '(GNU ' 2> /dev/null`" mfversion="`$MSGFMT --version|grep '(GNU ' 2> /dev/null`" if test -z "$xgversion" -o -z "$mmversion" -o -z "$mfversion"; then AC_MSG_ERROR([GNU gettext tools not found; required for intltool]) fi AC_PATH_PROG(INTLTOOL_PERL, perl) if test -z "$INTLTOOL_PERL"; then AC_MSG_ERROR([perl not found]) fi AC_MSG_CHECKING([for perl >= 5.8.1]) $INTLTOOL_PERL -e "use 5.8.1;" > /dev/null 2>&1 if test $? -ne 0; then AC_MSG_ERROR([perl 5.8.1 is required for intltool]) else IT_PERL_VERSION="`$INTLTOOL_PERL -e \"printf '%vd', $^V\"`" AC_MSG_RESULT([$IT_PERL_VERSION]) fi if test "x$2" != "xno-xml"; then AC_MSG_CHECKING([for XML::Parser]) if `$INTLTOOL_PERL -e "require XML::Parser" 2>/dev/null`; then AC_MSG_RESULT([ok]) else AC_MSG_ERROR([XML::Parser perl module is required for intltool]) fi fi # Substitute ALL_LINGUAS so we can use it in po/Makefile AC_SUBST(ALL_LINGUAS) # Set DATADIRNAME correctly if it is not set yet # (copied from glib-gettext.m4) if test -z "$DATADIRNAME"; then AC_LINK_IFELSE( [AC_LANG_PROGRAM([[]], [[extern int _nl_msg_cat_cntr; return _nl_msg_cat_cntr]])], [DATADIRNAME=share], [case $host in *-*-solaris*) dnl On Solaris, if bind_textdomain_codeset is in libc, dnl GNU format message catalog is always supported, dnl since both are added to the libc all together. dnl Hence, we'd like to go with DATADIRNAME=share dnl in this case. AC_CHECK_FUNC(bind_textdomain_codeset, [DATADIRNAME=share], [DATADIRNAME=lib]) ;; *) [DATADIRNAME=lib] ;; esac]) fi AC_SUBST(DATADIRNAME) IT_PO_SUBDIR([po]) ]) # IT_PO_SUBDIR(DIRNAME) # --------------------- # All po subdirs have to be declared with this macro; the subdir "po" is # declared by IT_PROG_INTLTOOL. # AC_DEFUN([IT_PO_SUBDIR], [AC_PREREQ([2.53])dnl We use ac_top_srcdir inside AC_CONFIG_COMMANDS. dnl dnl The following CONFIG_COMMANDS should be executed at the very end dnl of config.status. AC_CONFIG_COMMANDS_PRE([ AC_CONFIG_COMMANDS([$1/stamp-it], [ if [ ! grep "^# INTLTOOL_MAKEFILE$" "$1/Makefile.in" > /dev/null ]; then AC_MSG_ERROR([$1/Makefile.in.in was not created by intltoolize.]) fi rm -f "$1/stamp-it" "$1/stamp-it.tmp" "$1/POTFILES" "$1/Makefile.tmp" >"$1/stamp-it.tmp" [sed '/^#/d s/^[[].*] *// /^[ ]*$/d '"s|^| $ac_top_srcdir/|" \ "$srcdir/$1/POTFILES.in" | sed '$!s/$/ \\/' >"$1/POTFILES" ] [sed '/^POTFILES =/,/[^\\]$/ { /^POTFILES =/!d r $1/POTFILES } ' "$1/Makefile.in" >"$1/Makefile"] rm -f "$1/Makefile.tmp" mv "$1/stamp-it.tmp" "$1/stamp-it" ]) ])dnl ]) # _IT_SUBST(VARIABLE) # ------------------- # Abstract macro to do either _AM_SUBST_NOTMAKE or AC_SUBST # AC_DEFUN([_IT_SUBST], [ AC_SUBST([$1]) m4_ifdef([_AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE([$1])]) ] ) # deprecated macros AU_ALIAS([AC_PROG_INTLTOOL], [IT_PROG_INTLTOOL]) # A hint is needed for aclocal from Automake <= 1.9.4: # AC_DEFUN([AC_PROG_INTLTOOL], ...) # nls.m4 serial 5 (gettext-0.18) dnl Copyright (C) 1995-2003, 2005-2006, 2008-2010 Free Software Foundation, dnl Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl dnl This file can can be used in projects which are not available under dnl the GNU General Public License or the GNU Library General Public dnl License but which still want to provide support for the GNU gettext dnl functionality. dnl Please note that the actual code of the GNU gettext library is covered dnl by the GNU Library General Public License, and the rest of the GNU dnl gettext package package is covered by the GNU General Public License. dnl They are *not* in the public domain. dnl Authors: dnl Ulrich Drepper , 1995-2000. dnl Bruno Haible , 2000-2003. AC_PREREQ([2.50]) AC_DEFUN([AM_NLS], [ AC_MSG_CHECKING([whether NLS is requested]) dnl Default is enabled NLS AC_ARG_ENABLE([nls], [ --disable-nls do not use Native Language Support], USE_NLS=$enableval, USE_NLS=yes) AC_MSG_RESULT([$USE_NLS]) AC_SUBST([USE_NLS]) ]) # pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*- # serial 1 (pkg-config-0.24) # # Copyright © 2004 Scott James Remnant . # # 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # PKG_PROG_PKG_CONFIG([MIN-VERSION]) # ---------------------------------- AC_DEFUN([PKG_PROG_PKG_CONFIG], [m4_pattern_forbid([^_?PKG_[A-Z_]+$]) m4_pattern_allow([^PKG_CONFIG(_PATH)?$]) AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility]) AC_ARG_VAR([PKG_CONFIG_PATH], [directories to add to pkg-config's search path]) AC_ARG_VAR([PKG_CONFIG_LIBDIR], [path overriding pkg-config's built-in search path]) if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then AC_PATH_TOOL([PKG_CONFIG], [pkg-config]) fi if test -n "$PKG_CONFIG"; then _pkg_min_version=m4_default([$1], [0.9.0]) AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version]) if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) PKG_CONFIG="" fi fi[]dnl ])# PKG_PROG_PKG_CONFIG # PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) # # Check to see whether a particular set of modules exists. Similar # to PKG_CHECK_MODULES(), but does not set variables or print errors. # # Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG]) # only at the first occurence in configure.ac, so if the first place # it's called might be skipped (such as if it is within an "if", you # have to call PKG_CHECK_EXISTS manually # -------------------------------------------------------------- AC_DEFUN([PKG_CHECK_EXISTS], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl if test -n "$PKG_CONFIG" && \ AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then m4_default([$2], [:]) m4_ifvaln([$3], [else $3])dnl fi]) # _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES]) # --------------------------------------------- m4_define([_PKG_CONFIG], [if test -n "$$1"; then pkg_cv_[]$1="$$1" elif test -n "$PKG_CONFIG"; then PKG_CHECK_EXISTS([$3], [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null`], [pkg_failed=yes]) else pkg_failed=untried fi[]dnl ])# _PKG_CONFIG # _PKG_SHORT_ERRORS_SUPPORTED # ----------------------------- AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED], [AC_REQUIRE([PKG_PROG_PKG_CONFIG]) if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi[]dnl ])# _PKG_SHORT_ERRORS_SUPPORTED # PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], # [ACTION-IF-NOT-FOUND]) # # # Note that if there is a possibility the first call to # PKG_CHECK_MODULES might not happen, you should be sure to include an # explicit call to PKG_PROG_PKG_CONFIG in your configure.ac # # # -------------------------------------------------------------- AC_DEFUN([PKG_CHECK_MODULES], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl pkg_failed=no AC_MSG_CHECKING([for $1]) _PKG_CONFIG([$1][_CFLAGS], [cflags], [$2]) _PKG_CONFIG([$1][_LIBS], [libs], [$2]) m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS and $1[]_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details.]) if test $pkg_failed = yes; then AC_MSG_RESULT([no]) _PKG_SHORT_ERRORS_SUPPORTED if test $_pkg_short_errors_supported = yes; then $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "$2" 2>&1` else $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors "$2" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD m4_default([$4], [AC_MSG_ERROR( [Package requirements ($2) were not met: $$1_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. _PKG_TEXT])[]dnl ]) elif test $pkg_failed = untried; then AC_MSG_RESULT([no]) m4_default([$4], [AC_MSG_FAILURE( [The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. _PKG_TEXT To get pkg-config, see .])dnl ]) else $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS $1[]_LIBS=$pkg_cv_[]$1[]_LIBS AC_MSG_RESULT([yes]) $3 fi[]dnl ])# PKG_CHECK_MODULES # Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. # # This file 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. # AM_AUTOMAKE_VERSION(VERSION) # ---------------------------- # Automake X.Y traces this macro to ensure aclocal.m4 has been # generated from the m4 files accompanying Automake X.Y. # (This private macro should not be called outside this file.) AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version='1.11' dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to dnl require some minimum version. Point them to the right macro. m4_if([$1], [1.11.1], [], [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl ]) # _AM_AUTOCONF_VERSION(VERSION) # ----------------------------- # aclocal traces this macro to find the Autoconf version. # This is a private macro too. Using m4_define simplifies # the logic in aclocal, which can simply ignore this definition. m4_define([_AM_AUTOCONF_VERSION], []) # AM_SET_CURRENT_AUTOMAKE_VERSION # ------------------------------- # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. # This function is AC_REQUIREd by AM_INIT_AUTOMAKE. AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], [AM_AUTOMAKE_VERSION([1.11.1])dnl m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) # AM_AUX_DIR_EXPAND -*- Autoconf -*- # Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. # # This file 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. # For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets # $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to # `$srcdir', `$srcdir/..', or `$srcdir/../..'. # # Of course, Automake must honor this variable whenever it calls a # tool from the auxiliary directory. The problem is that $srcdir (and # therefore $ac_aux_dir as well) can be either absolute or relative, # depending on how configure is run. This is pretty annoying, since # it makes $ac_aux_dir quite unusable in subdirectories: in the top # source directory, any form will work fine, but in subdirectories a # relative path needs to be adjusted first. # # $ac_aux_dir/missing # fails when called from a subdirectory if $ac_aux_dir is relative # $top_srcdir/$ac_aux_dir/missing # fails if $ac_aux_dir is absolute, # fails when called from a subdirectory in a VPATH build with # a relative $ac_aux_dir # # The reason of the latter failure is that $top_srcdir and $ac_aux_dir # are both prefixed by $srcdir. In an in-source build this is usually # harmless because $srcdir is `.', but things will broke when you # start a VPATH build or use an absolute $srcdir. # # So we could use something similar to $top_srcdir/$ac_aux_dir/missing, # iff we strip the leading $srcdir from $ac_aux_dir. That would be: # am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` # and then we would define $MISSING as # MISSING="\${SHELL} $am_aux_dir/missing" # This will work as long as MISSING is not called from configure, because # unfortunately $(top_srcdir) has no meaning in configure. # However there are other variables, like CC, which are often used in # configure, and could therefore not use this "fixed" $ac_aux_dir. # # Another solution, used here, is to always expand $ac_aux_dir to an # absolute PATH. The drawback is that using absolute paths prevent a # configured tree to be moved without reconfiguration. AC_DEFUN([AM_AUX_DIR_EXPAND], [dnl Rely on autoconf to set up CDPATH properly. AC_PREREQ([2.50])dnl # expand $ac_aux_dir to an absolute path am_aux_dir=`cd $ac_aux_dir && pwd` ]) # AM_CONDITIONAL -*- Autoconf -*- # Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006, 2008 # Free Software Foundation, Inc. # # This file 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. # serial 9 # AM_CONDITIONAL(NAME, SHELL-CONDITION) # ------------------------------------- # Define a conditional. AC_DEFUN([AM_CONDITIONAL], [AC_PREREQ(2.52)dnl ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl AC_SUBST([$1_TRUE])dnl AC_SUBST([$1_FALSE])dnl _AM_SUBST_NOTMAKE([$1_TRUE])dnl _AM_SUBST_NOTMAKE([$1_FALSE])dnl m4_define([_AM_COND_VALUE_$1], [$2])dnl if $2; then $1_TRUE= $1_FALSE='#' else $1_TRUE='#' $1_FALSE= fi AC_CONFIG_COMMANDS_PRE( [if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then AC_MSG_ERROR([[conditional "$1" was never defined. Usually this means the macro was only invoked conditionally.]]) fi])]) # Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009 # Free Software Foundation, Inc. # # This file 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. # serial 10 # There are a few dirty hacks below to avoid letting `AC_PROG_CC' be # written in clear, in which case automake, when reading aclocal.m4, # will think it sees a *use*, and therefore will trigger all it's # C support machinery. Also note that it means that autoscan, seeing # CC etc. in the Makefile, will ask for an AC_PROG_CC use... # _AM_DEPENDENCIES(NAME) # ---------------------- # See how the compiler implements dependency checking. # NAME is "CC", "CXX", "GCJ", or "OBJC". # We try a few techniques and use that to set a single cache variable. # # We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was # modified to invoke _AM_DEPENDENCIES(CC); we would have a circular # dependency, and given that the user is not expected to run this macro, # just rely on AC_PROG_CC. AC_DEFUN([_AM_DEPENDENCIES], [AC_REQUIRE([AM_SET_DEPDIR])dnl AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl AC_REQUIRE([AM_MAKE_INCLUDE])dnl AC_REQUIRE([AM_DEP_TRACK])dnl ifelse([$1], CC, [depcc="$CC" am_compiler_list=], [$1], CXX, [depcc="$CXX" am_compiler_list=], [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'], [$1], UPC, [depcc="$UPC" am_compiler_list=], [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'], [depcc="$$1" am_compiler_list=]) AC_CACHE_CHECK([dependency style of $depcc], [am_cv_$1_dependencies_compiler_type], [if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named `D' -- because `-MD' means `put the output # in D'. mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_$1_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` fi am__universal=false m4_case([$1], [CC], [case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac], [CXX], [case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac]) for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with # Solaris 8's {/usr,}/bin/sh. touch sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with `-c' and `-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle `-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # after this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvisualcpp | msvcmsys) # This compiler won't grok `-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_$1_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_$1_dependencies_compiler_type=none fi ]) AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) AM_CONDITIONAL([am__fastdep$1], [ test "x$enable_dependency_tracking" != xno \ && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) ]) # AM_SET_DEPDIR # ------------- # Choose a directory name for dependency files. # This macro is AC_REQUIREd in _AM_DEPENDENCIES AC_DEFUN([AM_SET_DEPDIR], [AC_REQUIRE([AM_SET_LEADING_DOT])dnl AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl ]) # AM_DEP_TRACK # ------------ AC_DEFUN([AM_DEP_TRACK], [AC_ARG_ENABLE(dependency-tracking, [ --disable-dependency-tracking speeds up one-time build --enable-dependency-tracking do not reject slow dependency extractors]) if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' fi AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) AC_SUBST([AMDEPBACKSLASH])dnl _AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl ]) # Generate code to set up dependency tracking. -*- Autoconf -*- # Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2008 # Free Software Foundation, Inc. # # This file 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. #serial 5 # _AM_OUTPUT_DEPENDENCY_COMMANDS # ------------------------------ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], [{ # Autoconf 2.62 quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. case $CONFIG_FILES in *\'*) eval set x "$CONFIG_FILES" ;; *) set x $CONFIG_FILES ;; esac shift for mf do # Strip MF so we end up with the name of the file. mf=`echo "$mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile or not. # We used to match only the files named `Makefile.in', but # some people rename them; so instead we look at the file content. # Grep'ing the first line is not enough: some people post-process # each Makefile.in and add a new line on top of each file to say so. # Grep'ing the whole file is not good either: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then dirpart=`AS_DIRNAME("$mf")` else continue fi # Extract the definition of DEPDIR, am__include, and am__quote # from the Makefile without running `make'. DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue am__include=`sed -n 's/^am__include = //p' < "$mf"` test -z "am__include" && continue am__quote=`sed -n 's/^am__quote = //p' < "$mf"` # When using ansi2knr, U may be empty or an underscore; expand it U=`sed -n 's/^U = //p' < "$mf"` # Find all dependency output files, they are included files with # $(DEPDIR) in their names. We invoke sed twice because it is the # simplest approach to changing $(DEPDIR) to its actual value in the # expansion. for file in `sed -n " s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`AS_DIRNAME(["$file"])` AS_MKDIR_P([$dirpart/$fdir]) # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done } ])# _AM_OUTPUT_DEPENDENCY_COMMANDS # AM_OUTPUT_DEPENDENCY_COMMANDS # ----------------------------- # This macro should only be invoked once -- use via AC_REQUIRE. # # This code is only required when automatic dependency tracking # is enabled. FIXME. This creates each `.P' file that we will # need in order to bootstrap the dependency handling code. AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], [AC_CONFIG_COMMANDS([depfiles], [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) ]) # Do all the work for Automake. -*- Autoconf -*- # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, # 2005, 2006, 2008, 2009 Free Software Foundation, Inc. # # This file 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. # serial 16 # This macro actually does too much. Some checks are only needed if # your package does certain things. But this isn't really a big deal. # AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) # AM_INIT_AUTOMAKE([OPTIONS]) # ----------------------------------------------- # The call with PACKAGE and VERSION arguments is the old style # call (pre autoconf-2.50), which is being phased out. PACKAGE # and VERSION should now be passed to AC_INIT and removed from # the call to AM_INIT_AUTOMAKE. # We support both call styles for the transition. After # the next Automake release, Autoconf can make the AC_INIT # arguments mandatory, and then we can depend on a new Autoconf # release and drop the old call support. AC_DEFUN([AM_INIT_AUTOMAKE], [AC_PREREQ([2.62])dnl dnl Autoconf wants to disallow AM_ names. We explicitly allow dnl the ones we care about. m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl AC_REQUIRE([AC_PROG_INSTALL])dnl if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl # test to see if srcdir already configured if test -f $srcdir/config.status; then AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) fi fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi AC_SUBST([CYGPATH_W]) # Define the identity of the package. dnl Distinguish between old-style and new-style calls. m4_ifval([$2], [m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl AC_SUBST([PACKAGE], [$1])dnl AC_SUBST([VERSION], [$2])], [_AM_SET_OPTIONS([$1])dnl dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. m4_if(m4_ifdef([AC_PACKAGE_NAME], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,, [m4_fatal([AC_INIT should be called with package and version arguments])])dnl AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl _AM_IF_OPTION([no-define],, [AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl # Some tools Automake needs. AC_REQUIRE([AM_SANITY_CHECK])dnl AC_REQUIRE([AC_ARG_PROGRAM])dnl AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version}) AM_MISSING_PROG(AUTOCONF, autoconf) AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version}) AM_MISSING_PROG(AUTOHEADER, autoheader) AM_MISSING_PROG(MAKEINFO, makeinfo) AC_REQUIRE([AM_PROG_INSTALL_SH])dnl AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl AC_REQUIRE([AM_PROG_MKDIR_P])dnl # We need awk for the "check" target. The system "awk" is bad on # some platforms. AC_REQUIRE([AC_PROG_AWK])dnl AC_REQUIRE([AC_PROG_MAKE_SET])dnl AC_REQUIRE([AM_SET_LEADING_DOT])dnl _AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], [_AM_PROG_TAR([v7])])]) _AM_IF_OPTION([no-dependencies],, [AC_PROVIDE_IFELSE([AC_PROG_CC], [_AM_DEPENDENCIES(CC)], [define([AC_PROG_CC], defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl AC_PROVIDE_IFELSE([AC_PROG_CXX], [_AM_DEPENDENCIES(CXX)], [define([AC_PROG_CXX], defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl AC_PROVIDE_IFELSE([AC_PROG_OBJC], [_AM_DEPENDENCIES(OBJC)], [define([AC_PROG_OBJC], defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl ]) _AM_IF_OPTION([silent-rules], [AC_REQUIRE([AM_SILENT_RULES])])dnl dnl The `parallel-tests' driver may need to know about EXEEXT, so add the dnl `am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This macro dnl is hooked onto _AC_COMPILER_EXEEXT early, see below. AC_CONFIG_COMMANDS_PRE(dnl [m4_provide_if([_AM_COMPILER_EXEEXT], [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl ]) dnl Hook into `_AC_COMPILER_EXEEXT' early to learn its expansion. Do not dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further dnl mangled by Autoconf and run in a shell conditional statement. m4_define([_AC_COMPILER_EXEEXT], m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])]) # When config.status generates a header, we must update the stamp-h file. # This file resides in the same directory as the config header # that is generated. The stamp files are numbered to have different names. # Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the # loop where config.status creates the headers, so we can generate # our stamp files there. AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], [# Compute $1's index in $config_headers. _am_arg=$1 _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $_am_arg | $_am_arg:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) # Copyright (C) 2001, 2003, 2005, 2008 Free Software Foundation, Inc. # # This file 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. # AM_PROG_INSTALL_SH # ------------------ # Define $install_sh. AC_DEFUN([AM_PROG_INSTALL_SH], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl if test x"${install_sh}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; *) install_sh="\${SHELL} $am_aux_dir/install-sh" esac fi AC_SUBST(install_sh)]) # Copyright (C) 2003, 2005 Free Software Foundation, Inc. # # This file 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. # serial 2 # Check whether the underlying file-system supports filenames # with a leading dot. For instance MS-DOS doesn't. AC_DEFUN([AM_SET_LEADING_DOT], [rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null AC_SUBST([am__leading_dot])]) # Add --enable-maintainer-mode option to configure. -*- Autoconf -*- # From Jim Meyering # Copyright (C) 1996, 1998, 2000, 2001, 2002, 2003, 2004, 2005, 2008 # Free Software Foundation, Inc. # # This file 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. # serial 5 # AM_MAINTAINER_MODE([DEFAULT-MODE]) # ---------------------------------- # Control maintainer-specific portions of Makefiles. # Default is to disable them, unless `enable' is passed literally. # For symmetry, `disable' may be passed as well. Anyway, the user # can override the default with the --enable/--disable switch. AC_DEFUN([AM_MAINTAINER_MODE], [m4_case(m4_default([$1], [disable]), [enable], [m4_define([am_maintainer_other], [disable])], [disable], [m4_define([am_maintainer_other], [enable])], [m4_define([am_maintainer_other], [enable]) m4_warn([syntax], [unexpected argument to AM@&t@_MAINTAINER_MODE: $1])]) AC_MSG_CHECKING([whether to am_maintainer_other maintainer-specific portions of Makefiles]) dnl maintainer-mode's default is 'disable' unless 'enable' is passed AC_ARG_ENABLE([maintainer-mode], [ --][am_maintainer_other][-maintainer-mode am_maintainer_other make rules and dependencies not useful (and sometimes confusing) to the casual installer], [USE_MAINTAINER_MODE=$enableval], [USE_MAINTAINER_MODE=]m4_if(am_maintainer_other, [enable], [no], [yes])) AC_MSG_RESULT([$USE_MAINTAINER_MODE]) AM_CONDITIONAL([MAINTAINER_MODE], [test $USE_MAINTAINER_MODE = yes]) MAINT=$MAINTAINER_MODE_TRUE AC_SUBST([MAINT])dnl ] ) AU_DEFUN([jm_MAINTAINER_MODE], [AM_MAINTAINER_MODE]) # Check to see how 'make' treats includes. -*- Autoconf -*- # Copyright (C) 2001, 2002, 2003, 2005, 2009 Free Software Foundation, Inc. # # This file 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. # serial 4 # AM_MAKE_INCLUDE() # ----------------- # Check to see how make treats includes. AC_DEFUN([AM_MAKE_INCLUDE], [am_make=${MAKE-make} cat > confinc << 'END' am__doit: @echo this is the am__doit target .PHONY: am__doit END # If we don't find an include directive, just comment out the code. AC_MSG_CHECKING([for style of include used by $am_make]) am__include="#" am__quote= _am_result=none # First try GNU make style include. echo "include confinc" > confmf # Ignore all kinds of additional output from `make'. case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=include am__quote= _am_result=GNU ;; esac # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=.include am__quote="\"" _am_result=BSD ;; esac fi AC_SUBST([am__include]) AC_SUBST([am__quote]) AC_MSG_RESULT([$_am_result]) rm -f confinc confmf ]) # Copyright (C) 1999, 2000, 2001, 2003, 2004, 2005, 2008 # Free Software Foundation, Inc. # # This file 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. # serial 6 # AM_PROG_CC_C_O # -------------- # Like AC_PROG_CC_C_O, but changed for automake. AC_DEFUN([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC_C_O])dnl AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl AC_REQUIRE_AUX_FILE([compile])dnl # FIXME: we rely on the cache variable name because # there is no other way. set dummy $CC am_cc=`echo $[2] | sed ['s/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/']` eval am_t=\$ac_cv_prog_cc_${am_cc}_c_o if test "$am_t" != yes; then # Losing compiler, so override with the script. # FIXME: It is wrong to rewrite CC. # But if we don't then we get into trouble of one sort or another. # A longer-term fix would be to have automake use am__CC in this case, # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" CC="$am_aux_dir/compile $CC" fi dnl Make sure AC_PROG_CC is never called again, or it will override our dnl setting of CC. m4_define([AC_PROG_CC], [m4_fatal([AC_PROG_CC cannot be called after AM_PROG_CC_C_O])]) ]) # Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- # Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005, 2008 # Free Software Foundation, Inc. # # This file 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. # serial 6 # AM_MISSING_PROG(NAME, PROGRAM) # ------------------------------ AC_DEFUN([AM_MISSING_PROG], [AC_REQUIRE([AM_MISSING_HAS_RUN]) $1=${$1-"${am_missing_run}$2"} AC_SUBST($1)]) # AM_MISSING_HAS_RUN # ------------------ # Define MISSING if not defined so far and test if it supports --run. # If it does, set am_missing_run to use it, otherwise, to nothing. AC_DEFUN([AM_MISSING_HAS_RUN], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl AC_REQUIRE_AUX_FILE([missing])dnl if test x"${MISSING+set}" != xset; then case $am_aux_dir in *\ * | *\ *) MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; *) MISSING="\${SHELL} $am_aux_dir/missing" ;; esac fi # Use eval to expand $SHELL if eval "$MISSING --run true"; then am_missing_run="$MISSING --run " else am_missing_run= AC_MSG_WARN([`missing' script is too old or missing]) fi ]) # Copyright (C) 2003, 2004, 2005, 2006 Free Software Foundation, Inc. # # This file 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. # AM_PROG_MKDIR_P # --------------- # Check for `mkdir -p'. AC_DEFUN([AM_PROG_MKDIR_P], [AC_PREREQ([2.60])dnl AC_REQUIRE([AC_PROG_MKDIR_P])dnl dnl Automake 1.8 to 1.9.6 used to define mkdir_p. We now use MKDIR_P, dnl while keeping a definition of mkdir_p for backward compatibility. dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile. dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of dnl Makefile.ins that do not define MKDIR_P, so we do our own dnl adjustment using top_builddir (which is defined more often than dnl MKDIR_P). AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl case $mkdir_p in [[\\/$]]* | ?:[[\\/]]*) ;; */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; esac ]) # Helper functions for option handling. -*- Autoconf -*- # Copyright (C) 2001, 2002, 2003, 2005, 2008 Free Software Foundation, Inc. # # This file 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. # serial 4 # _AM_MANGLE_OPTION(NAME) # ----------------------- AC_DEFUN([_AM_MANGLE_OPTION], [[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) # _AM_SET_OPTION(NAME) # ------------------------------ # Set option NAME. Presently that only means defining a flag for this option. AC_DEFUN([_AM_SET_OPTION], [m4_define(_AM_MANGLE_OPTION([$1]), 1)]) # _AM_SET_OPTIONS(OPTIONS) # ---------------------------------- # OPTIONS is a space-separated list of Automake options. AC_DEFUN([_AM_SET_OPTIONS], [m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) # _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) # ------------------------------------------- # Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. AC_DEFUN([_AM_IF_OPTION], [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) # Check to make sure that the build environment is sane. -*- Autoconf -*- # Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005, 2008 # Free Software Foundation, Inc. # # This file 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. # serial 5 # AM_SANITY_CHECK # --------------- AC_DEFUN([AM_SANITY_CHECK], [AC_MSG_CHECKING([whether build environment is sane]) # Just in case sleep 1 echo timestamp > conftest.file # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' ' case `pwd` in *[[\\\"\#\$\&\'\`$am_lf]]*) AC_MSG_ERROR([unsafe absolute working directory name]);; esac case $srcdir in *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) AC_MSG_ERROR([unsafe srcdir value: `$srcdir']);; esac # Do `set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` if test "$[*]" = "X"; then # -L didn't work. set X `ls -t "$srcdir/configure" conftest.file` fi rm -f conftest.file if test "$[*]" != "X $srcdir/configure conftest.file" \ && test "$[*]" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken alias in your environment]) fi test "$[2]" = conftest.file ) then # Ok. : else AC_MSG_ERROR([newly created file is older than distributed files! Check your system clock]) fi AC_MSG_RESULT(yes)]) # Copyright (C) 2009 Free Software Foundation, Inc. # # This file 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. # serial 1 # AM_SILENT_RULES([DEFAULT]) # -------------------------- # Enable less verbose build rules; with the default set to DEFAULT # (`yes' being less verbose, `no' or empty being verbose). AC_DEFUN([AM_SILENT_RULES], [AC_ARG_ENABLE([silent-rules], [ --enable-silent-rules less verbose build output (undo: `make V=1') --disable-silent-rules verbose build output (undo: `make V=0')]) case $enable_silent_rules in yes) AM_DEFAULT_VERBOSITY=0;; no) AM_DEFAULT_VERBOSITY=1;; *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);; esac AC_SUBST([AM_DEFAULT_VERBOSITY])dnl AM_BACKSLASH='\' AC_SUBST([AM_BACKSLASH])dnl _AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl ]) # Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. # # This file 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. # AM_PROG_INSTALL_STRIP # --------------------- # One issue with vendor `install' (even GNU) is that you can't # specify the program used to strip binaries. This is especially # annoying in cross-compiling environments, where the build's strip # is unlikely to handle the host's binaries. # Fortunately install-sh will honor a STRIPPROG variable, so we # always use install-sh in `make install-strip', and initialize # STRIPPROG with the value of the STRIP variable (set by the user). AC_DEFUN([AM_PROG_INSTALL_STRIP], [AC_REQUIRE([AM_PROG_INSTALL_SH])dnl # Installed binaries are usually stripped using `strip' when the user # run `make install-strip'. However `strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the `STRIP' environment variable to overrule this program. dnl Don't test for $cross_compiling = yes, because it might be `maybe'. if test "$cross_compiling" != no; then AC_CHECK_TOOL([STRIP], [strip], :) fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" AC_SUBST([INSTALL_STRIP_PROGRAM])]) # Copyright (C) 2006, 2008 Free Software Foundation, Inc. # # This file 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. # serial 2 # _AM_SUBST_NOTMAKE(VARIABLE) # --------------------------- # Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. # This macro is traced by Automake. AC_DEFUN([_AM_SUBST_NOTMAKE]) # AM_SUBST_NOTMAKE(VARIABLE) # --------------------------- # Public sister of _AM_SUBST_NOTMAKE. AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) # Check how to create a tarball. -*- Autoconf -*- # Copyright (C) 2004, 2005 Free Software Foundation, Inc. # # This file 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. # serial 2 # _AM_PROG_TAR(FORMAT) # -------------------- # Check how to create a tarball in format FORMAT. # FORMAT should be one of `v7', `ustar', or `pax'. # # Substitute a variable $(am__tar) that is a command # writing to stdout a FORMAT-tarball containing the directory # $tardir. # tardir=directory && $(am__tar) > result.tar # # Substitute a variable $(am__untar) that extract such # a tarball read from stdin. # $(am__untar) < result.tar AC_DEFUN([_AM_PROG_TAR], [# Always define AMTAR for backward compatibility. AM_MISSING_PROG([AMTAR], [tar]) m4_if([$1], [v7], [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'], [m4_case([$1], [ustar],, [pax],, [m4_fatal([Unknown tar format])]) AC_MSG_CHECKING([how to create a $1 tar archive]) # Loop over all known methods to create a tar archive until one works. _am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' _am_tools=${am_cv_prog_tar_$1-$_am_tools} # Do not fold the above two line into one, because Tru64 sh and # Solaris sh will not grok spaces in the rhs of `-'. for _am_tool in $_am_tools do case $_am_tool in gnutar) for _am_tar in tar gnutar gtar; do AM_RUN_LOG([$_am_tar --version]) && break done am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' am__untar="$_am_tar -xf -" ;; plaintar) # Must skip GNU tar: if it does not support --format= it doesn't create # ustar tarball either. (tar --version) >/dev/null 2>&1 && continue am__tar='tar chf - "$$tardir"' am__tar_='tar chf - "$tardir"' am__untar='tar xf -' ;; pax) am__tar='pax -L -x $1 -w "$$tardir"' am__tar_='pax -L -x $1 -w "$tardir"' am__untar='pax -r' ;; cpio) am__tar='find "$$tardir" -print | cpio -o -H $1 -L' am__tar_='find "$tardir" -print | cpio -o -H $1 -L' am__untar='cpio -i -H $1 -d' ;; none) am__tar=false am__tar_=false am__untar=false ;; esac # If the value was cached, stop now. We just wanted to have am__tar # and am__untar set. test -n "${am_cv_prog_tar_$1}" && break # tar/untar a dummy directory, and stop if the command works rm -rf conftest.dir mkdir conftest.dir echo GrepMe > conftest.dir/file AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) rm -rf conftest.dir if test -s conftest.tar; then AM_RUN_LOG([$am__untar /dev/null 2>&1 && break fi done rm -rf conftest.dir AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) AC_MSG_RESULT([$am_cv_prog_tar_$1])]) AC_SUBST([am__tar]) AC_SUBST([am__untar]) ]) # _AM_PROG_TAR gobby-0.4.94/TODO0000644000175000017500000000141011531722663010325 00000000000000Some features that would be nice for a final Gobby 0.5 release. We could perhaps do pre-releases with some of these missing before: - Implement self-hosting, this also requires showing and handling directories in InfGtkBrowserModel/Store - Add base preferences class with Preferences::Option definition to util/, inherit in core/, move ClosableFrame to util/ - Show in tab and userlist when others are typing, using an icon - Typing sounds (libcanberra?) These things need to be implemented in infinote, but again would be nice to have: - Show other user's viewport position in the scrollbar, instead or in addition to cursor position - Show what tab another user currently is in (needs cross-session user management as planned for the authentication business) gobby-0.4.94/config.sub0000755000175000017500000010453511531741040011622 00000000000000#! /bin/sh # Configuration validation subroutine script. # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, # 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, # 2011 Free Software Foundation, Inc. timestamp='2011-02-02' # This file is (in principle) common to ALL GNU software. # The presence of a machine in this file suggests that SOME GNU software # can handle that machine. It does not imply ALL GNU software can. # # This file 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. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Please send patches to . Submit a context # diff and a properly formatted GNU ChangeLog entry. # # Configuration subroutine to validate and canonicalize a configuration type. # Supply the specified configuration type as an argument. # If it is invalid, we print an error message on stderr and exit with code 1. # Otherwise, we print the canonical config type on stdout and succeed. # You can get the latest version of this script from: # http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD # This file is supposed to be the same for all GNU packages # and recognize all the CPU types, system types and aliases # that are meaningful with *any* GNU software. # Each package is responsible for reporting which valid configurations # it does not support. The user should be able to distinguish # a failure to support a valid configuration from a meaningless # configuration. # The goal of this file is to map all the various variations of a given # machine specification into a single specification in the form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM # or in some cases, the newer four-part form: # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM # It is wrong to echo any other type of specification. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] CPU-MFR-OPSYS $0 [OPTION] ALIAS Canonicalize a configuration name. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.sub ($timestamp) Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" exit 1 ;; *local*) # First pass through any local machine types. echo $1 exit ;; * ) break ;; esac done case $# in 0) echo "$me: missing argument$help" >&2 exit 1;; 1) ;; *) echo "$me: too many arguments$help" >&2 exit 1;; esac # Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). # Here we must recognize all the valid KERNEL-OS combinations. maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` case $maybe_os in nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \ linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ knetbsd*-gnu* | netbsd*-gnu* | \ kopensolaris*-gnu* | \ storm-chaos* | os2-emx* | rtmk-nova*) os=-$maybe_os basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` ;; *) basic_machine=`echo $1 | sed 's/-[^-]*$//'` if [ $basic_machine != $1 ] then os=`echo $1 | sed 's/.*-/-/'` else os=; fi ;; esac ### Let's recognize common machines as not being operating systems so ### that things like config.sub decstation-3100 work. We also ### recognize some manufacturers as not being operating systems, so we ### can provide default operating systems below. case $os in -sun*os*) # Prevent following clause from handling this invalid input. ;; -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ -apple | -axis | -knuth | -cray | -microblaze) os= basic_machine=$1 ;; -bluegene*) os=-cnk ;; -sim | -cisco | -oki | -wec | -winbond) os= basic_machine=$1 ;; -scout) ;; -wrs) os=-vxworks basic_machine=$1 ;; -chorusos*) os=-chorusos basic_machine=$1 ;; -chorusrdb) os=-chorusrdb basic_machine=$1 ;; -hiux*) os=-hiuxwe2 ;; -sco6) os=-sco5v6 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco5) os=-sco3.2v5 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco4) os=-sco3.2v4 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2.[4-9]*) os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2v[4-9]*) # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco5v6*) # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco*) os=-sco3.2v2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -udk*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -isc) os=-isc2.2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -clix*) basic_machine=clipper-intergraph ;; -isc*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -lynx*) os=-lynxos ;; -ptx*) basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` ;; -windowsnt*) os=`echo $os | sed -e 's/windowsnt/winnt/'` ;; -psos*) os=-psos ;; -mint | -mint[0-9]*) basic_machine=m68k-atari os=-mint ;; esac # Decode aliases for certain CPU-COMPANY combinations. case $basic_machine in # Recognize the basic CPU types without company name. # Some are omitted here because they have special meanings below. 1750a | 580 \ | a29k \ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ | am33_2.0 \ | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \ | bfin \ | c4x | clipper \ | d10v | d30v | dlx | dsp16xx | dvp \ | fido | fr30 | frv \ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ | i370 | i860 | i960 | ia64 \ | ip2k | iq2000 \ | lm32 \ | m32c | m32r | m32rle | m68000 | m68k | m88k \ | maxq | mb | microblaze | mcore | mep | metag \ | mips | mipsbe | mipseb | mipsel | mipsle \ | mips16 \ | mips64 | mips64el \ | mips64octeon | mips64octeonel \ | mips64orion | mips64orionel \ | mips64r5900 | mips64r5900el \ | mips64vr | mips64vrel \ | mips64vr4100 | mips64vr4100el \ | mips64vr4300 | mips64vr4300el \ | mips64vr5000 | mips64vr5000el \ | mips64vr5900 | mips64vr5900el \ | mipsisa32 | mipsisa32el \ | mipsisa32r2 | mipsisa32r2el \ | mipsisa64 | mipsisa64el \ | mipsisa64r2 | mipsisa64r2el \ | mipsisa64sb1 | mipsisa64sb1el \ | mipsisa64sr71k | mipsisa64sr71kel \ | mipstx39 | mipstx39el \ | mn10200 | mn10300 \ | moxie \ | mt \ | msp430 \ | nds32 | nds32le | nds32be \ | nios | nios2 \ | ns16k | ns32k \ | or32 \ | pdp10 | pdp11 | pj | pjl \ | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ | pyramid \ | rx \ | score \ | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ | sh64 | sh64le \ | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ | spu | strongarm \ | tahoe | thumb | tic4x | tic54x | tic55x | tic6x | tic80 | tron \ | ubicom32 \ | v850 | v850e \ | we32k \ | x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \ | z8k | z80) basic_machine=$basic_machine-unknown ;; c54x) basic_machine=tic54x-unknown ;; c55x) basic_machine=tic55x-unknown ;; c6x) basic_machine=tic6x-unknown ;; m6811 | m68hc11 | m6812 | m68hc12 | picochip) # Motorola 68HC11/12. basic_machine=$basic_machine-unknown os=-none ;; m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) ;; ms1) basic_machine=mt-unknown ;; # We use `pc' rather than `unknown' # because (1) that's what they normally are, and # (2) the word "unknown" tends to confuse beginning users. i*86 | x86_64) basic_machine=$basic_machine-pc ;; # Object if more than one company name word. *-*-*) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; # Recognize the basic CPU types with company name. 580-* \ | a29k-* \ | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ | avr-* | avr32-* \ | bfin-* | bs2000-* \ | c[123]* | c30-* | [cjt]90-* | c4x-* \ | clipper-* | craynv-* | cydra-* \ | d10v-* | d30v-* | dlx-* \ | elxsi-* \ | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ | h8300-* | h8500-* \ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ | i*86-* | i860-* | i960-* | ia64-* \ | ip2k-* | iq2000-* \ | lm32-* \ | m32c-* | m32r-* | m32rle-* \ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ | m88110-* | m88k-* | maxq-* | mcore-* | metag-* | microblaze-* \ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ | mips16-* \ | mips64-* | mips64el-* \ | mips64octeon-* | mips64octeonel-* \ | mips64orion-* | mips64orionel-* \ | mips64r5900-* | mips64r5900el-* \ | mips64vr-* | mips64vrel-* \ | mips64vr4100-* | mips64vr4100el-* \ | mips64vr4300-* | mips64vr4300el-* \ | mips64vr5000-* | mips64vr5000el-* \ | mips64vr5900-* | mips64vr5900el-* \ | mipsisa32-* | mipsisa32el-* \ | mipsisa32r2-* | mipsisa32r2el-* \ | mipsisa64-* | mipsisa64el-* \ | mipsisa64r2-* | mipsisa64r2el-* \ | mipsisa64sb1-* | mipsisa64sb1el-* \ | mipsisa64sr71k-* | mipsisa64sr71kel-* \ | mipstx39-* | mipstx39el-* \ | mmix-* \ | mt-* \ | msp430-* \ | nds32-* | nds32le-* | nds32be-* \ | nios-* | nios2-* \ | none-* | np1-* | ns16k-* | ns32k-* \ | orion-* \ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ | pyramid-* \ | romp-* | rs6000-* | rx-* \ | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ | sparclite-* \ | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \ | tahoe-* | thumb-* \ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ | tile-* | tilegx-* \ | tron-* \ | ubicom32-* \ | v850-* | v850e-* | vax-* \ | we32k-* \ | x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \ | xstormy16-* | xtensa*-* \ | ymp-* \ | z8k-* | z80-*) ;; # Recognize the basic CPU types without company name, with glob match. xtensa*) basic_machine=$basic_machine-unknown ;; # Recognize the various machine names and aliases which stand # for a CPU type and a company and sometimes even an OS. 386bsd) basic_machine=i386-unknown os=-bsd ;; 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) basic_machine=m68000-att ;; 3b*) basic_machine=we32k-att ;; a29khif) basic_machine=a29k-amd os=-udi ;; abacus) basic_machine=abacus-unknown ;; adobe68k) basic_machine=m68010-adobe os=-scout ;; alliant | fx80) basic_machine=fx80-alliant ;; altos | altos3068) basic_machine=m68k-altos ;; am29k) basic_machine=a29k-none os=-bsd ;; amd64) basic_machine=x86_64-pc ;; amd64-*) basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; amdahl) basic_machine=580-amdahl os=-sysv ;; amiga | amiga-*) basic_machine=m68k-unknown ;; amigaos | amigados) basic_machine=m68k-unknown os=-amigaos ;; amigaunix | amix) basic_machine=m68k-unknown os=-sysv4 ;; apollo68) basic_machine=m68k-apollo os=-sysv ;; apollo68bsd) basic_machine=m68k-apollo os=-bsd ;; aros) basic_machine=i386-pc os=-aros ;; aux) basic_machine=m68k-apple os=-aux ;; balance) basic_machine=ns32k-sequent os=-dynix ;; blackfin) basic_machine=bfin-unknown os=-linux ;; blackfin-*) basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; bluegene*) basic_machine=powerpc-ibm os=-cnk ;; c54x-*) basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'` ;; c55x-*) basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'` ;; c6x-*) basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'` ;; c90) basic_machine=c90-cray os=-unicos ;; cegcc) basic_machine=arm-unknown os=-cegcc ;; convex-c1) basic_machine=c1-convex os=-bsd ;; convex-c2) basic_machine=c2-convex os=-bsd ;; convex-c32) basic_machine=c32-convex os=-bsd ;; convex-c34) basic_machine=c34-convex os=-bsd ;; convex-c38) basic_machine=c38-convex os=-bsd ;; cray | j90) basic_machine=j90-cray os=-unicos ;; craynv) basic_machine=craynv-cray os=-unicosmp ;; cr16 | cr16-*) basic_machine=cr16-unknown os=-elf ;; crds | unos) basic_machine=m68k-crds ;; crisv32 | crisv32-* | etraxfs*) basic_machine=crisv32-axis ;; cris | cris-* | etrax*) basic_machine=cris-axis ;; crx) basic_machine=crx-unknown os=-elf ;; da30 | da30-*) basic_machine=m68k-da30 ;; decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) basic_machine=mips-dec ;; decsystem10* | dec10*) basic_machine=pdp10-dec os=-tops10 ;; decsystem20* | dec20*) basic_machine=pdp10-dec os=-tops20 ;; delta | 3300 | motorola-3300 | motorola-delta \ | 3300-motorola | delta-motorola) basic_machine=m68k-motorola ;; delta88) basic_machine=m88k-motorola os=-sysv3 ;; dicos) basic_machine=i686-pc os=-dicos ;; djgpp) basic_machine=i586-pc os=-msdosdjgpp ;; dpx20 | dpx20-*) basic_machine=rs6000-bull os=-bosx ;; dpx2* | dpx2*-bull) basic_machine=m68k-bull os=-sysv3 ;; ebmon29k) basic_machine=a29k-amd os=-ebmon ;; elxsi) basic_machine=elxsi-elxsi os=-bsd ;; encore | umax | mmax) basic_machine=ns32k-encore ;; es1800 | OSE68k | ose68k | ose | OSE) basic_machine=m68k-ericsson os=-ose ;; fx2800) basic_machine=i860-alliant ;; genix) basic_machine=ns32k-ns ;; gmicro) basic_machine=tron-gmicro os=-sysv ;; go32) basic_machine=i386-pc os=-go32 ;; h3050r* | hiux*) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; h8300hms) basic_machine=h8300-hitachi os=-hms ;; h8300xray) basic_machine=h8300-hitachi os=-xray ;; h8500hms) basic_machine=h8500-hitachi os=-hms ;; harris) basic_machine=m88k-harris os=-sysv3 ;; hp300-*) basic_machine=m68k-hp ;; hp300bsd) basic_machine=m68k-hp os=-bsd ;; hp300hpux) basic_machine=m68k-hp os=-hpux ;; hp3k9[0-9][0-9] | hp9[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k2[0-9][0-9] | hp9k31[0-9]) basic_machine=m68000-hp ;; hp9k3[2-9][0-9]) basic_machine=m68k-hp ;; hp9k6[0-9][0-9] | hp6[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k7[0-79][0-9] | hp7[0-79][0-9]) basic_machine=hppa1.1-hp ;; hp9k78[0-9] | hp78[0-9]) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[0-9][13679] | hp8[0-9][13679]) basic_machine=hppa1.1-hp ;; hp9k8[0-9][0-9] | hp8[0-9][0-9]) basic_machine=hppa1.0-hp ;; hppa-next) os=-nextstep3 ;; hppaosf) basic_machine=hppa1.1-hp os=-osf ;; hppro) basic_machine=hppa1.1-hp os=-proelf ;; i370-ibm* | ibm*) basic_machine=i370-ibm ;; # I'm not sure what "Sysv32" means. Should this be sysv3.2? i*86v32) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv32 ;; i*86v4*) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv4 ;; i*86v) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv ;; i*86sol2) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-solaris2 ;; i386mach) basic_machine=i386-mach os=-mach ;; i386-vsta | vsta) basic_machine=i386-unknown os=-vsta ;; iris | iris4d) basic_machine=mips-sgi case $os in -irix*) ;; *) os=-irix4 ;; esac ;; isi68 | isi) basic_machine=m68k-isi os=-sysv ;; m68knommu) basic_machine=m68k-unknown os=-linux ;; m68knommu-*) basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; m88k-omron*) basic_machine=m88k-omron ;; magnum | m3230) basic_machine=mips-mips os=-sysv ;; merlin) basic_machine=ns32k-utek os=-sysv ;; microblaze) basic_machine=microblaze-xilinx ;; mingw32) basic_machine=i386-pc os=-mingw32 ;; mingw32ce) basic_machine=arm-unknown os=-mingw32ce ;; miniframe) basic_machine=m68000-convergent ;; *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) basic_machine=m68k-atari os=-mint ;; mipsEE* | ee | ps2) basic_machine=mips64r5900el-scei case $os in -linux*) ;; *) os=-elf ;; esac ;; iop) basic_machine=mipsel-scei os=-irx ;; dvp) basic_machine=dvp-scei os=-elf ;; mips3*-*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` ;; mips3*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown ;; monitor) basic_machine=m68k-rom68k os=-coff ;; morphos) basic_machine=powerpc-unknown os=-morphos ;; msdos) basic_machine=i386-pc os=-msdos ;; ms1-*) basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` ;; mvs) basic_machine=i370-ibm os=-mvs ;; ncr3000) basic_machine=i486-ncr os=-sysv4 ;; netbsd386) basic_machine=i386-unknown os=-netbsd ;; netwinder) basic_machine=armv4l-rebel os=-linux ;; news | news700 | news800 | news900) basic_machine=m68k-sony os=-newsos ;; news1000) basic_machine=m68030-sony os=-newsos ;; news-3600 | risc-news) basic_machine=mips-sony os=-newsos ;; necv70) basic_machine=v70-nec os=-sysv ;; next | m*-next ) basic_machine=m68k-next case $os in -nextstep* ) ;; -ns2*) os=-nextstep2 ;; *) os=-nextstep3 ;; esac ;; nh3000) basic_machine=m68k-harris os=-cxux ;; nh[45]000) basic_machine=m88k-harris os=-cxux ;; nindy960) basic_machine=i960-intel os=-nindy ;; mon960) basic_machine=i960-intel os=-mon960 ;; nonstopux) basic_machine=mips-compaq os=-nonstopux ;; np1) basic_machine=np1-gould ;; neo-tandem) basic_machine=neo-tandem ;; nse-tandem) basic_machine=nse-tandem ;; nsr-tandem) basic_machine=nsr-tandem ;; op50n-* | op60c-*) basic_machine=hppa1.1-oki os=-proelf ;; openrisc | openrisc-*) basic_machine=or32-unknown ;; os400) basic_machine=powerpc-ibm os=-os400 ;; OSE68000 | ose68000) basic_machine=m68000-ericsson os=-ose ;; os68k) basic_machine=m68k-none os=-os68k ;; pa-hitachi) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; paragon) basic_machine=i860-intel os=-osf ;; parisc) basic_machine=hppa-unknown os=-linux ;; parisc-*) basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; pbd) basic_machine=sparc-tti ;; pbb) basic_machine=m68k-tti ;; pc532 | pc532-*) basic_machine=ns32k-pc532 ;; pc98) basic_machine=i386-pc ;; pc98-*) basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentium | p5 | k5 | k6 | nexgen | viac3) basic_machine=i586-pc ;; pentiumpro | p6 | 6x86 | athlon | athlon_*) basic_machine=i686-pc ;; pentiumii | pentium2 | pentiumiii | pentium3) basic_machine=i686-pc ;; pentium4) basic_machine=i786-pc ;; pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumpro-* | p6-* | 6x86-* | athlon-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentium4-*) basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pn) basic_machine=pn-gould ;; power) basic_machine=power-ibm ;; ppc) basic_machine=powerpc-unknown ;; ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppcle | powerpclittle | ppc-le | powerpc-little) basic_machine=powerpcle-unknown ;; ppcle-* | powerpclittle-*) basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64) basic_machine=powerpc64-unknown ;; ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64le | powerpc64little | ppc64-le | powerpc64-little) basic_machine=powerpc64le-unknown ;; ppc64le-* | powerpc64little-*) basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ps2) basic_machine=i386-ibm ;; pw32) basic_machine=i586-unknown os=-pw32 ;; rdos) basic_machine=i386-pc os=-rdos ;; rom68k) basic_machine=m68k-rom68k os=-coff ;; rm[46]00) basic_machine=mips-siemens ;; rtpc | rtpc-*) basic_machine=romp-ibm ;; s390 | s390-*) basic_machine=s390-ibm ;; s390x | s390x-*) basic_machine=s390x-ibm ;; sa29200) basic_machine=a29k-amd os=-udi ;; sb1) basic_machine=mipsisa64sb1-unknown ;; sb1el) basic_machine=mipsisa64sb1el-unknown ;; sde) basic_machine=mipsisa32-sde os=-elf ;; sei) basic_machine=mips-sei os=-seiux ;; sequent) basic_machine=i386-sequent ;; sh) basic_machine=sh-hitachi os=-hms ;; sh5el) basic_machine=sh5le-unknown ;; sh64) basic_machine=sh64-unknown ;; sparclite-wrs | simso-wrs) basic_machine=sparclite-wrs os=-vxworks ;; sps7) basic_machine=m68k-bull os=-sysv2 ;; spur) basic_machine=spur-unknown ;; st2000) basic_machine=m68k-tandem ;; stratus) basic_machine=i860-stratus os=-sysv4 ;; sun2) basic_machine=m68000-sun ;; sun2os3) basic_machine=m68000-sun os=-sunos3 ;; sun2os4) basic_machine=m68000-sun os=-sunos4 ;; sun3os3) basic_machine=m68k-sun os=-sunos3 ;; sun3os4) basic_machine=m68k-sun os=-sunos4 ;; sun4os3) basic_machine=sparc-sun os=-sunos3 ;; sun4os4) basic_machine=sparc-sun os=-sunos4 ;; sun4sol2) basic_machine=sparc-sun os=-solaris2 ;; sun3 | sun3-*) basic_machine=m68k-sun ;; sun4) basic_machine=sparc-sun ;; sun386 | sun386i | roadrunner) basic_machine=i386-sun ;; sv1) basic_machine=sv1-cray os=-unicos ;; symmetry) basic_machine=i386-sequent os=-dynix ;; t3e) basic_machine=alphaev5-cray os=-unicos ;; t90) basic_machine=t90-cray os=-unicos ;; # This must be matched before tile*. tilegx*) basic_machine=tilegx-unknown os=-linux-gnu ;; tile*) basic_machine=tile-unknown os=-linux-gnu ;; tx39) basic_machine=mipstx39-unknown ;; tx39el) basic_machine=mipstx39el-unknown ;; toad1) basic_machine=pdp10-xkl os=-tops20 ;; tower | tower-32) basic_machine=m68k-ncr ;; tpf) basic_machine=s390x-ibm os=-tpf ;; udi29k) basic_machine=a29k-amd os=-udi ;; ultra3) basic_machine=a29k-nyu os=-sym1 ;; v810 | necv810) basic_machine=v810-nec os=-none ;; vaxv) basic_machine=vax-dec os=-sysv ;; vms) basic_machine=vax-dec os=-vms ;; vpp*|vx|vx-*) basic_machine=f301-fujitsu ;; vxworks960) basic_machine=i960-wrs os=-vxworks ;; vxworks68) basic_machine=m68k-wrs os=-vxworks ;; vxworks29k) basic_machine=a29k-wrs os=-vxworks ;; w65*) basic_machine=w65-wdc os=-none ;; w89k-*) basic_machine=hppa1.1-winbond os=-proelf ;; xbox) basic_machine=i686-pc os=-mingw32 ;; xps | xps100) basic_machine=xps100-honeywell ;; ymp) basic_machine=ymp-cray os=-unicos ;; z8k-*-coff) basic_machine=z8k-unknown os=-sim ;; z80-*-coff) basic_machine=z80-unknown os=-sim ;; none) basic_machine=none-none os=-none ;; # Here we handle the default manufacturer of certain CPU types. It is in # some cases the only manufacturer, in others, it is the most popular. w89k) basic_machine=hppa1.1-winbond ;; op50n) basic_machine=hppa1.1-oki ;; op60c) basic_machine=hppa1.1-oki ;; romp) basic_machine=romp-ibm ;; mmix) basic_machine=mmix-knuth ;; rs6000) basic_machine=rs6000-ibm ;; vax) basic_machine=vax-dec ;; pdp10) # there are many clones, so DEC is not a safe bet basic_machine=pdp10-unknown ;; pdp11) basic_machine=pdp11-dec ;; we32k) basic_machine=we32k-att ;; sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele) basic_machine=sh-unknown ;; sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) basic_machine=sparc-sun ;; cydra) basic_machine=cydra-cydrome ;; orion) basic_machine=orion-highlevel ;; orion105) basic_machine=clipper-highlevel ;; mac | mpw | mac-mpw) basic_machine=m68k-apple ;; pmac | pmac-mpw) basic_machine=powerpc-apple ;; *-unknown) # Make sure to match an already-canonicalized machine name. ;; *) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; esac # Here we canonicalize certain aliases for manufacturers. case $basic_machine in *-digital*) basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` ;; *-commodore*) basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` ;; *) ;; esac # Decode manufacturer-specific aliases for certain operating systems. if [ x"$os" != x"" ] then case $os in # First match some system type aliases # that might get confused with valid system types. # -solaris* is a basic system type, with this one exception. -auroraux) os=-auroraux ;; -solaris1 | -solaris1.*) os=`echo $os | sed -e 's|solaris1|sunos4|'` ;; -solaris) os=-solaris2 ;; -svr4*) os=-sysv4 ;; -unixware*) os=-sysv4.2uw ;; -gnu/linux*) os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` ;; # First accept the basic system types. # The portable systems comes first. # Each alternative MUST END IN A *, to match a version number. # -sysv* is not here because it comes later, after sysvr4. -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ | -sym* | -kopensolaris* \ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ | -aos* | -aros* \ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ | -openbsd* | -solidbsd* \ | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ | -chorusos* | -chorusrdb* | -cegcc* \ | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ | -mingw32* | -linux-gnu* | -linux-android* \ | -linux-newlib* | -linux-uclibc* \ | -uxpv* | -beos* | -mpeix* | -udk* \ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* | -irx* \ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*) # Remember, each alternative MUST END IN *, to match a version number. ;; -qnx*) case $basic_machine in x86-* | i*86-*) ;; *) os=-nto$os ;; esac ;; -nto-qnx*) ;; -nto*) os=`echo $os | sed -e 's|nto|nto-qnx|'` ;; -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) ;; -mac*) os=`echo $os | sed -e 's|mac|macos|'` ;; -linux-dietlibc) os=-linux-dietlibc ;; -linux*) os=`echo $os | sed -e 's|linux|linux-gnu|'` ;; -sunos5*) os=`echo $os | sed -e 's|sunos5|solaris2|'` ;; -sunos6*) os=`echo $os | sed -e 's|sunos6|solaris3|'` ;; -opened*) os=-openedition ;; -os400*) os=-os400 ;; -wince*) os=-wince ;; -osfrose*) os=-osfrose ;; -osf*) os=-osf ;; -utek*) os=-bsd ;; -dynix*) os=-bsd ;; -acis*) os=-aos ;; -atheos*) os=-atheos ;; -syllable*) os=-syllable ;; -386bsd) os=-bsd ;; -ctix* | -uts*) os=-sysv ;; -nova*) os=-rtmk-nova ;; -ns2 ) os=-nextstep2 ;; -nsk*) os=-nsk ;; # Preserve the version number of sinix5. -sinix5.*) os=`echo $os | sed -e 's|sinix|sysv|'` ;; -sinix*) os=-sysv4 ;; -tpf*) os=-tpf ;; -triton*) os=-sysv3 ;; -oss*) os=-sysv3 ;; -svr4) os=-sysv4 ;; -svr3) os=-sysv3 ;; -sysvr4) os=-sysv4 ;; # This must come after -sysvr4. -sysv*) ;; -ose*) os=-ose ;; -es1800*) os=-ose ;; -xenix) os=-xenix ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) os=-mint ;; -aros*) os=-aros ;; -kaos*) os=-kaos ;; -zvmoe) os=-zvmoe ;; -dicos*) os=-dicos ;; -nacl*) ;; -none) ;; *) # Get rid of the `-' at the beginning of $os. os=`echo $os | sed 's/[^-]*-//'` echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 exit 1 ;; esac else # Here we handle the default operating systems that come with various machines. # The value should be what the vendor currently ships out the door with their # machine or put another way, the most popular os provided with the machine. # Note that if you're going to try to match "-MANUFACTURER" here (say, # "-sun"), then you have to tell the case statement up towards the top # that MANUFACTURER isn't an operating system. Otherwise, code above # will signal an error saying that MANUFACTURER isn't an operating # system, and we'll never get to this point. case $basic_machine in score-*) os=-elf ;; spu-*) os=-elf ;; *-acorn) os=-riscix1.2 ;; arm*-rebel) os=-linux ;; arm*-semi) os=-aout ;; c4x-* | tic4x-*) os=-coff ;; tic54x-*) os=-coff ;; tic55x-*) os=-coff ;; tic6x-*) os=-coff ;; # This must come before the *-dec entry. pdp10-*) os=-tops20 ;; pdp11-*) os=-none ;; *-dec | vax-*) os=-ultrix4.2 ;; m68*-apollo) os=-domain ;; i386-sun) os=-sunos4.0.2 ;; m68000-sun) os=-sunos3 # This also exists in the configure program, but was not the # default. # os=-sunos4 ;; m68*-cisco) os=-aout ;; mep-*) os=-elf ;; mips*-cisco) os=-elf ;; mips*-*) os=-elf ;; or32-*) os=-coff ;; *-tti) # must be before sparc entry or we get the wrong os. os=-sysv3 ;; sparc-* | *-sun) os=-sunos4.1.1 ;; *-be) os=-beos ;; *-haiku) os=-haiku ;; *-ibm) os=-aix ;; *-knuth) os=-mmixware ;; *-wec) os=-proelf ;; *-winbond) os=-proelf ;; *-oki) os=-proelf ;; *-hp) os=-hpux ;; *-hitachi) os=-hiux ;; i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) os=-sysv ;; *-cbm) os=-amigaos ;; *-dg) os=-dgux ;; *-dolphin) os=-sysv3 ;; m68k-ccur) os=-rtu ;; m88k-omron*) os=-luna ;; *-next ) os=-nextstep ;; *-sequent) os=-ptx ;; *-crds) os=-unos ;; *-ns) os=-genix ;; i370-*) os=-mvs ;; *-next) os=-nextstep3 ;; *-gould) os=-sysv ;; *-highlevel) os=-bsd ;; *-encore) os=-bsd ;; *-sgi) os=-irix ;; *-siemens) os=-sysv4 ;; *-masscomp) os=-rtu ;; f30[01]-fujitsu | f700-fujitsu) os=-uxpv ;; *-rom68k) os=-coff ;; *-*bug) os=-coff ;; *-apple) os=-macos ;; *-atari*) os=-mint ;; *) os=-none ;; esac fi # Here we handle the case where we know the os, and the CPU type, but not the # manufacturer. We pick the logical manufacturer. vendor=unknown case $basic_machine in *-unknown) case $os in -riscix*) vendor=acorn ;; -sunos*) vendor=sun ;; -cnk*|-aix*) vendor=ibm ;; -beos*) vendor=be ;; -hpux*) vendor=hp ;; -mpeix*) vendor=hp ;; -hiux*) vendor=hitachi ;; -unos*) vendor=crds ;; -dgux*) vendor=dg ;; -luna*) vendor=omron ;; -genix*) vendor=ns ;; -mvs* | -opened*) vendor=ibm ;; -os400*) vendor=ibm ;; -ptx*) vendor=sequent ;; -tpf*) vendor=ibm ;; -vxsim* | -vxworks* | -windiss*) vendor=wrs ;; -aux*) vendor=apple ;; -hms*) vendor=hitachi ;; -mpw* | -macos*) vendor=apple ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) vendor=atari ;; -vos*) vendor=stratus ;; esac basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` ;; esac echo $basic_machine$os exit # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: gobby-0.4.94/Makefile.am0000644000175000017500000000271111543670256011701 00000000000000SUBDIRS = m4 win32 code . icons po if HAVE_GNOME_DOC_UTILS SUBDIRS += help endif # Tell aclocal where to find `.m4' files. ACLOCAL_AMFLAGS = -I m4 dist_man_MANS = gobby-0.5.1 bin_PROGRAMS = gobby-0.5 gobby_0_5_LDADD = \ code/libgobby.a \ code/commands/libgobby-commands.a \ code/commands/file-tasks/libgobby-file-tasks.a \ code/operations/libgobby-operations.a \ code/dialogs/libgobby-dialogs.a \ code/core/libgobby-core.a \ code/util/libgobby-util.a \ $(gobby_LIBS) \ $(unique_LIBS) \ $(infinote_LIBS) \ $(LIBS) if WIN32 gobby_0_5_LDADD += -lws2_32 gobby_0_5_LDFLAGS = \ -Wl,--enable-runtime-pseudo-reloc \ -mwindows \ win32/gobby.res endif gobby_0_5_SOURCES = # .desktop file if !WIN32 desktopdir = $(datadir)/applications desktop_in_files = gobby-0.5.desktop.in desktop_DATA = $(desktop_in_files:.desktop.in=.desktop) endif clean-local: -rm -rf gobby-0.5.desktop @INTLTOOL_DESKTOP_RULE@ # Dummy C++ source to cause C++ linking, otherwise some platforms don't link # correctly against libstdc++. See also #399. Note that this file does not # (need to) exist in the source tree. nodist_EXTRA_gobby_0_5_SOURCES = dummy.cpp # Debian seems to need an XPM of the program icon, so we provide one here. # It's currently not used for anything else, though. EXTRA_DIST = gobby-0.5.xpm # For the manual EXTRA_DIST += gnome-doc-utils.make gobby-0.5.desktop.in DISTCLEANFILES = gnome-doc-utils.make DISTCHECK_CONFIGURE_FLAGS = --disable-scrollkeeper --with-gtk3 gobby-0.4.94/gobby-0.5.10000644000175000017500000000167711531722663011340 00000000000000.TH GOBBY 1 "August 17, 2006" .\" Please adjust this date whenever revising the manpage. .\" For manpage-specific macros: see man(7). .SH NAME .B gobby \- a collaborative text editor .SH SYNOPSIS .B gobby .RI [ options ] .RI [ file(s) ] .SH DESCRIPTION .B gobby is an editor which allows to edit text documents and source files collaboratively over a network. Changes to the documents are synchronised instantly to the other clients. .PP .\".SH OPTIONS .\".TP .\"\fB\-j\fR, \fB\-\-join\fR=\fIHOST\fR:\fIPORT\fR .\"Joins the obby session on the specified host. .\".TP .\"\fB\-n\fR, \fB\-\-new\-instance\fR .\"Forces a new instance of Gobby to be created. .\".TP .\".B file(s) .\"Files passed on the command line will be opened within Gobby. If there is .\"already a Gobby instance running they will be opened therein, otherwise .\"a new hosted session will be created automatically. .PP .SH AUTHOR .B gobby was written by the 0x539 dev group . gobby-0.4.94/NEWS0000644000175000017500000001631611543656137010354 00000000000000Gobby ===== Version 0.4.94: * Show cursors and selections of remote users in the own viewport and scrollbar * Add a "Disconnect from Server" option to the context menu * When double-clicking a user in the user list jump to its current cursor position * Allow gobby to be built against GTK+ 3 * Fixed a bug which prevented "Save All" from working Version 0.4.93: * Added IRC-like chat * Added functionality to export a document to HTML (#245) * Sort browser entries * Allow selecting multiple files when opening files * Allow resetting user colors in a document (Bug #211) * Added a Connect to Server option to the File menu * Undo words instead of individual characters * When starting Gobby twice then send commands to an existing Gobby (if any) unless the -n command line option is given. * Added an option to highlight spaces and tabs Version 0.4.92: * Support running Gobby on Windows 2000. * Added Icons for HCLP and HCLPI icon themes (Bug #413, Patrick Wade). * Make sure terminating newline characters are saved correctly * Added /etc/ssl/certs/ca-certificates.crt as default trust file, if available. * Don't mess up saving documents whose first line is empty. * Write config files in $XDG_CONFIG_HOME instead of $HOME (Bug #437, Cristian Klein). * Display colored pencil icons in a document's tab for each user that made a change since the document has been viewed the last time (Bug #66, Mattis Manzel). Version 0.4.91: * Keep track of a document's modified state between Undo/Redo operations * Scroll to Cursor after Cut or Paste * Added HCLPI icon of the Gobby Logo (Thanks to Thomas Glatt) * Added an Autosave Option in the preferences * Remember previous host names in "Direct Connection" entry * Added an "Open Location" dialog to open arbitrary URIs * Added a tooltip when hovering text, showing the author of that text Version 0.4.90: * Use libinfinity instead of libobby as backend * Allow connection to multiple servers * Redesigned UI to better match normal text editors, and to be more HIG-compliant * Added Undo support (via libinfinity) * Require GtkSourceView 2.x * Some features of the previous versions, especially self-hosting, are not implemented in 0.4.90. This will be added in a later version. Version 0.4.6: * Require gtksourceview 1.8 to enable indent-on-tab * Require obby 0.4.5 to support IPv6 autodiscovery * Several utility windows close on escape * Compilation fixes for gtksourceview 2.0 * New (partial) translations: - Brazilian Portuguese - Polish - Korean Version 0.4.5: * Important bugfixes: - fixed the save routine for files not encoded in UTF-8 - allow Gobby to run inside paths containing non-ASCII characters Version 0.4.4: * Fixed two crashes: one on Windows Vista related to the chat widget, and one triggered on rejoins with multiple documents opened in the editor * GtkSourceView's C API is called directly * The document list is now sorted alphabetically * New translations: - Italian - Russian Version 0.4.3: * Find and Goto dialogs are now focused when invoked * Zeroconf failures are now only printed on the console, no dialog is invoked * Preference option added to subscribe automatically to all documents in a session * Doubleclicks on documents in the user list now opens them if they are not already opened * Window highlights itself only if the chat widget is open * Toolbar style "text besides icon" is now supported * Tab bar is only shown if more than one document is opened Version 0.4.2: * Gobby now opens absolute file names passed via command line * View is now kept when remote operations affect the current position, through appropriate scrolling * Documents could be subscribed by double-clicking on them in the list * Local files are not flagged as modified anymore * Urgency hint is now configurable * Windows compilation fixes Version 0.4.1: * Release with no further important changes. Version 0.4.0: * Session encryption through GNUTLS * Reduced CPU usage and memory footprint through the removal of one supplemental document copy * Usability enhancements: - New button to close the chat window - Font types and sizes could now be set for the text editor from within Gobby - Documents could now be switched using Ctrl-Alt-Page-Down and Ctrl-Alt-Page-Up - Subscribe button is deactivated after it has been hit once for a document - Documents with the same name are suffixed with a number - Dialogs to host and join sessions are respawned if the attempt failed - Application highlights itself on new chat messages - Documents could be opened in an existing Gobby session by passing their filename as a command-line argument to the application - Sessions could be joined by passing the host and port via command-line options - User-modified colour palettes are now saved in the configuration Version 0.3.0: * This release depends on net6 1.2.0 and obby 0.3.0, it is *not* backwards- compatible protocol-wise to the 0.2.x series. * No more pending changes due to the new merging algorithm * Cursor is left-gravity now, which relieves some problems with newlines * Joins are now threaded and thus abortable * Connection status is displayed in the status bar * Lines in the chat log are now wrapped to the display width * Session serialisation and restore * Name and colour could be changed directly when they are already in use * User and document list are now separate windows, their position and state is preserved by default * Close document now just unsubscribes from the document * Scrollable document folder * Search and replace * New translations: - Swedish (complete) - Catalan (partial) - Chinese (partial) - Spanish (almost complete) Version 0.2.2: * Gobby no longer crashes when a document is closed after quitting a session, spotted and fixed by Kanru Chen. * Some new file extensions are mapped to their corresponding MIME type * Files saved are no longer converted to the charset settings of the current locale * Line endings of loaded files are now unified to result only in UNIX ones * Added Spanish translation, thanks to Mario Palomo Version 0.2.1: * This bugfix release features a recompile of the Windows version against more hardware-independent libraries. Version 0.2.0: * This version is *not* backwards-compatible to 0.1.0 due to heavy changes within obby. It depends on obby 0.2.0 and net6 1.1.0. * New features (in no particular order): - Document subscriptions - Global session passwords - Basic user authentication to protect the nickname - Preferences pane - Zeroconf support - Colour presets - Colour changes from within the session - Auto indentation - Drag'n'drop of documents into the session - Create document works without a delay - Better Win32 network handling * Changes in the build system: - It is now required to provide `gtksourceview-1.0', the depedency is no more optional. - Gobby now links against `gthread-2.0' which is included in `glibmm-2.4'. Version 0.1.1: * Bugfix release: Include contrib/gobby.desktop to fix the non-working build when configured ``--with-gnome''. Version 0.1.0: * Initial release. gobby-0.4.94/missing0000755000175000017500000002623311424242734011243 00000000000000#! /bin/sh # Common stub for a few missing GNU programs while installing. scriptversion=2009-04-28.21; # UTC # Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006, # 2008, 2009 Free Software Foundation, Inc. # Originally by Fran,cois Pinard , 1996. # 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, 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, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. if test $# -eq 0; then echo 1>&2 "Try \`$0 --help' for more information" exit 1 fi run=: sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p' sed_minuso='s/.* -o \([^ ]*\).*/\1/p' # In the cases where this matters, `missing' is being run in the # srcdir already. if test -f configure.ac; then configure_ac=configure.ac else configure_ac=configure.in fi msg="missing on your system" case $1 in --run) # Try to run requested program, and just exit if it succeeds. run= shift "$@" && exit 0 # Exit code 63 means version mismatch. This often happens # when the user try to use an ancient version of a tool on # a file that requires a minimum version. In this case we # we should proceed has if the program had been absent, or # if --run hadn't been passed. if test $? = 63; then run=: msg="probably too old" fi ;; -h|--h|--he|--hel|--help) echo "\ $0 [OPTION]... PROGRAM [ARGUMENT]... Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an error status if there is no known handling for PROGRAM. Options: -h, --help display this help and exit -v, --version output version information and exit --run try to run the given command, and emulate it if it fails Supported PROGRAM values: aclocal touch file \`aclocal.m4' autoconf touch file \`configure' autoheader touch file \`config.h.in' autom4te touch the output file, or create a stub one automake touch all \`Makefile.in' files bison create \`y.tab.[ch]', if possible, from existing .[ch] flex create \`lex.yy.c', if possible, from existing .c help2man touch the output file lex create \`lex.yy.c', if possible, from existing .c makeinfo touch the output file tar try tar, gnutar, gtar, then tar without non-portable flags yacc create \`y.tab.[ch]', if possible, from existing .[ch] Version suffixes to PROGRAM as well as the prefixes \`gnu-', \`gnu', and \`g' are ignored when checking the name. Send bug reports to ." exit $? ;; -v|--v|--ve|--ver|--vers|--versi|--versio|--version) echo "missing $scriptversion (GNU Automake)" exit $? ;; -*) echo 1>&2 "$0: Unknown \`$1' option" echo 1>&2 "Try \`$0 --help' for more information" exit 1 ;; esac # normalize program name to check for. program=`echo "$1" | sed ' s/^gnu-//; t s/^gnu//; t s/^g//; t'` # Now exit if we have it, but it failed. Also exit now if we # don't have it and --version was passed (most likely to detect # the program). This is about non-GNU programs, so use $1 not # $program. case $1 in lex*|yacc*) # Not GNU programs, they don't have --version. ;; tar*) if test -n "$run"; then echo 1>&2 "ERROR: \`tar' requires --run" exit 1 elif test "x$2" = "x--version" || test "x$2" = "x--help"; then exit 1 fi ;; *) if test -z "$run" && ($1 --version) > /dev/null 2>&1; then # We have it, but it failed. exit 1 elif test "x$2" = "x--version" || test "x$2" = "x--help"; then # Could not run --version or --help. This is probably someone # running `$TOOL --version' or `$TOOL --help' to check whether # $TOOL exists and not knowing $TOOL uses missing. exit 1 fi ;; esac # If it does not exist, or fails to run (possibly an outdated version), # try to emulate it. case $program in aclocal*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified \`acinclude.m4' or \`${configure_ac}'. You might want to install the \`Automake' and \`Perl' packages. Grab them from any GNU archive site." touch aclocal.m4 ;; autoconf*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified \`${configure_ac}'. You might want to install the \`Autoconf' and \`GNU m4' packages. Grab them from any GNU archive site." touch configure ;; autoheader*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified \`acconfig.h' or \`${configure_ac}'. You might want to install the \`Autoconf' and \`GNU m4' packages. Grab them from any GNU archive site." files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}` test -z "$files" && files="config.h" touch_files= for f in $files; do case $f in *:*) touch_files="$touch_files "`echo "$f" | sed -e 's/^[^:]*://' -e 's/:.*//'`;; *) touch_files="$touch_files $f.in";; esac done touch $touch_files ;; automake*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'. You might want to install the \`Automake' and \`Perl' packages. Grab them from any GNU archive site." find . -type f -name Makefile.am -print | sed 's/\.am$/.in/' | while read f; do touch "$f"; done ;; autom4te*) echo 1>&2 "\ WARNING: \`$1' is needed, but is $msg. You might have modified some files without having the proper tools for further handling them. You can get \`$1' as part of \`Autoconf' from any GNU archive site." file=`echo "$*" | sed -n "$sed_output"` test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` if test -f "$file"; then touch $file else test -z "$file" || exec >$file echo "#! /bin/sh" echo "# Created by GNU Automake missing as a replacement of" echo "# $ $@" echo "exit 0" chmod +x $file exit 1 fi ;; bison*|yacc*) echo 1>&2 "\ WARNING: \`$1' $msg. You should only need it if you modified a \`.y' file. You may need the \`Bison' package in order for those modifications to take effect. You can get \`Bison' from any GNU archive site." rm -f y.tab.c y.tab.h if test $# -ne 1; then eval LASTARG="\${$#}" case $LASTARG in *.y) SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'` if test -f "$SRCFILE"; then cp "$SRCFILE" y.tab.c fi SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'` if test -f "$SRCFILE"; then cp "$SRCFILE" y.tab.h fi ;; esac fi if test ! -f y.tab.h; then echo >y.tab.h fi if test ! -f y.tab.c; then echo 'main() { return 0; }' >y.tab.c fi ;; lex*|flex*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified a \`.l' file. You may need the \`Flex' package in order for those modifications to take effect. You can get \`Flex' from any GNU archive site." rm -f lex.yy.c if test $# -ne 1; then eval LASTARG="\${$#}" case $LASTARG in *.l) SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'` if test -f "$SRCFILE"; then cp "$SRCFILE" lex.yy.c fi ;; esac fi if test ! -f lex.yy.c; then echo 'main() { return 0; }' >lex.yy.c fi ;; help2man*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified a dependency of a manual page. You may need the \`Help2man' package in order for those modifications to take effect. You can get \`Help2man' from any GNU archive site." file=`echo "$*" | sed -n "$sed_output"` test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` if test -f "$file"; then touch $file else test -z "$file" || exec >$file echo ".ab help2man is required to generate this page" exit $? fi ;; makeinfo*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified a \`.texi' or \`.texinfo' file, or any other file indirectly affecting the aspect of the manual. The spurious call might also be the consequence of using a buggy \`make' (AIX, DU, IRIX). You might want to install the \`Texinfo' package or the \`GNU make' package. Grab either from any GNU archive site." # The file to touch is that specified with -o ... file=`echo "$*" | sed -n "$sed_output"` test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` if test -z "$file"; then # ... or it is the one specified with @setfilename ... infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'` file=`sed -n ' /^@setfilename/{ s/.* \([^ ]*\) *$/\1/ p q }' $infile` # ... or it is derived from the source name (dir/f.texi becomes f.info) test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info fi # If the file does not exist, the user really needs makeinfo; # let's fail without touching anything. test -f $file || exit 1 touch $file ;; tar*) shift # We have already tried tar in the generic part. # Look for gnutar/gtar before invocation to avoid ugly error # messages. if (gnutar --version > /dev/null 2>&1); then gnutar "$@" && exit 0 fi if (gtar --version > /dev/null 2>&1); then gtar "$@" && exit 0 fi firstarg="$1" if shift; then case $firstarg in *o*) firstarg=`echo "$firstarg" | sed s/o//` tar "$firstarg" "$@" && exit 0 ;; esac case $firstarg in *h*) firstarg=`echo "$firstarg" | sed s/h//` tar "$firstarg" "$@" && exit 0 ;; esac fi echo 1>&2 "\ WARNING: I can't seem to be able to run \`tar' with the given arguments. You may want to install GNU tar or Free paxutils, or check the command line arguments." exit 1 ;; *) echo 1>&2 "\ WARNING: \`$1' is needed, and is $msg. You might have modified some files without having the proper tools for further handling them. Check the \`README' file, it often tells you about the needed prerequisites for installing this package. You may also peek at any GNU archive site, in case some other package would contain this missing \`$1' program." exit 1 ;; esac exit 0 # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: gobby-0.4.94/depcomp0000755000175000017500000004426711424242734011230 00000000000000#! /bin/sh # depcomp - compile a program generating dependencies as side-effects scriptversion=2009-04-28.21; # UTC # Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009 Free # Software Foundation, Inc. # 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, 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, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Originally written by Alexandre Oliva . case $1 in '') echo "$0: No command. Try \`$0 --help' for more information." 1>&2 exit 1; ;; -h | --h*) cat <<\EOF Usage: depcomp [--help] [--version] PROGRAM [ARGS] Run PROGRAMS ARGS to compile a file, generating dependencies as side-effects. Environment variables: depmode Dependency tracking mode. source Source file read by `PROGRAMS ARGS'. object Object file output by `PROGRAMS ARGS'. DEPDIR directory where to store dependencies. depfile Dependency file to output. tmpdepfile Temporary file to use when outputing dependencies. libtool Whether libtool is used (yes/no). Report bugs to . EOF exit $? ;; -v | --v*) echo "depcomp $scriptversion" exit $? ;; esac if test -z "$depmode" || test -z "$source" || test -z "$object"; then echo "depcomp: Variables source, object and depmode must be set" 1>&2 exit 1 fi # Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. depfile=${depfile-`echo "$object" | sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} rm -f "$tmpdepfile" # Some modes work just like other modes, but use different flags. We # parameterize here, but still list the modes in the big case below, # to make depend.m4 easier to write. Note that we *cannot* use a case # here, because this file can only contain one case statement. if test "$depmode" = hp; then # HP compiler uses -M and no extra arg. gccflag=-M depmode=gcc fi if test "$depmode" = dashXmstdout; then # This is just like dashmstdout with a different argument. dashmflag=-xM depmode=dashmstdout fi cygpath_u="cygpath -u -f -" if test "$depmode" = msvcmsys; then # This is just like msvisualcpp but w/o cygpath translation. # Just convert the backslash-escaped backslashes to single forward # slashes to satisfy depend.m4 cygpath_u="sed s,\\\\\\\\,/,g" depmode=msvisualcpp fi case "$depmode" in gcc3) ## gcc 3 implements dependency tracking that does exactly what ## we want. Yay! Note: for some reason libtool 1.4 doesn't like ## it if -MD -MP comes after the -MF stuff. Hmm. ## Unfortunately, FreeBSD c89 acceptance of flags depends upon ## the command line argument order; so add the flags where they ## appear in depend2.am. Note that the slowdown incurred here ## affects only configure: in makefiles, %FASTDEP% shortcuts this. for arg do case $arg in -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; *) set fnord "$@" "$arg" ;; esac shift # fnord shift # $arg done "$@" stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi mv "$tmpdepfile" "$depfile" ;; gcc) ## There are various ways to get dependency output from gcc. Here's ## why we pick this rather obscure method: ## - Don't want to use -MD because we'd like the dependencies to end ## up in a subdir. Having to rename by hand is ugly. ## (We might end up doing this anyway to support other compilers.) ## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like ## -MM, not -M (despite what the docs say). ## - Using -M directly means running the compiler twice (even worse ## than renaming). if test -z "$gccflag"; then gccflag=-MD, fi "$@" -Wp,"$gccflag$tmpdepfile" stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" echo "$object : \\" > "$depfile" alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz ## The second -e expression handles DOS-style file names with drive letters. sed -e 's/^[^:]*: / /' \ -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" ## This next piece of magic avoids the `deleted header file' problem. ## The problem is that when a header file which appears in a .P file ## is deleted, the dependency causes make to die (because there is ## typically no way to rebuild the header). We avoid this by adding ## dummy dependencies for each header file. Too bad gcc doesn't do ## this for us directly. tr ' ' ' ' < "$tmpdepfile" | ## Some versions of gcc put a space before the `:'. On the theory ## that the space means something, we add a space to the output as ## well. ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; hp) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; sgi) if test "$libtool" = yes; then "$@" "-Wp,-MDupdate,$tmpdepfile" else "$@" -MDupdate "$tmpdepfile" fi stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files echo "$object : \\" > "$depfile" # Clip off the initial element (the dependent). Don't try to be # clever and replace this with sed code, as IRIX sed won't handle # lines with more than a fixed number of characters (4096 in # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; # the IRIX cc adds comments like `#:fec' to the end of the # dependency line. tr ' ' ' ' < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ tr ' ' ' ' >> "$depfile" echo >> "$depfile" # The second pass generates a dummy entry for each header file. tr ' ' ' ' < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ >> "$depfile" else # The sourcefile does not contain any dependencies, so just # store a dummy comment line, to avoid errors with the Makefile # "include basename.Plo" scheme. echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" ;; aix) # The C for AIX Compiler uses -M and outputs the dependencies # in a .u file. In older versions, this file always lives in the # current directory. Also, the AIX compiler puts `$object:' at the # start of each line; $object doesn't have directory information. # Version 6 uses the directory in both cases. dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` test "x$dir" = "x$object" && dir= base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` if test "$libtool" = yes; then tmpdepfile1=$dir$base.u tmpdepfile2=$base.u tmpdepfile3=$dir.libs/$base.u "$@" -Wc,-M else tmpdepfile1=$dir$base.u tmpdepfile2=$dir$base.u tmpdepfile3=$dir$base.u "$@" -M fi stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" do test -f "$tmpdepfile" && break done if test -f "$tmpdepfile"; then # Each line is of the form `foo.o: dependent.h'. # Do two passes, one to just change these to # `$object: dependent.h' and one to simply `dependent.h:'. sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" # That's a tab and a space in the []. sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" else # The sourcefile does not contain any dependencies, so just # store a dummy comment line, to avoid errors with the Makefile # "include basename.Plo" scheme. echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" ;; icc) # Intel's C compiler understands `-MD -MF file'. However on # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c # ICC 7.0 will fill foo.d with something like # foo.o: sub/foo.c # foo.o: sub/foo.h # which is wrong. We want: # sub/foo.o: sub/foo.c # sub/foo.o: sub/foo.h # sub/foo.c: # sub/foo.h: # ICC 7.1 will output # foo.o: sub/foo.c sub/foo.h # and will wrap long lines using \ : # foo.o: sub/foo.c ... \ # sub/foo.h ... \ # ... "$@" -MD -MF "$tmpdepfile" stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" # Each line is of the form `foo.o: dependent.h', # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. # Do two passes, one to just change these to # `$object: dependent.h' and one to simply `dependent.h:'. sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process this invocation # correctly. Breaking it into two sed invocations is a workaround. sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; hp2) # The "hp" stanza above does not work with aCC (C++) and HP's ia64 # compilers, which have integrated preprocessors. The correct option # to use with these is +Maked; it writes dependencies to a file named # 'foo.d', which lands next to the object file, wherever that # happens to be. # Much of this is similar to the tru64 case; see comments there. dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` test "x$dir" = "x$object" && dir= base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` if test "$libtool" = yes; then tmpdepfile1=$dir$base.d tmpdepfile2=$dir.libs/$base.d "$@" -Wc,+Maked else tmpdepfile1=$dir$base.d tmpdepfile2=$dir$base.d "$@" +Maked fi stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile1" "$tmpdepfile2" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" do test -f "$tmpdepfile" && break done if test -f "$tmpdepfile"; then sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile" # Add `dependent.h:' lines. sed -ne '2,${ s/^ *// s/ \\*$// s/$/:/ p }' "$tmpdepfile" >> "$depfile" else echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" "$tmpdepfile2" ;; tru64) # The Tru64 compiler uses -MD to generate dependencies as a side # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put # dependencies in `foo.d' instead, so we check for that too. # Subdirectories are respected. dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` test "x$dir" = "x$object" && dir= base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` if test "$libtool" = yes; then # With Tru64 cc, shared objects can also be used to make a # static library. This mechanism is used in libtool 1.4 series to # handle both shared and static libraries in a single compilation. # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d. # # With libtool 1.5 this exception was removed, and libtool now # generates 2 separate objects for the 2 libraries. These two # compilations output dependencies in $dir.libs/$base.o.d and # in $dir$base.o.d. We have to check for both files, because # one of the two compilations can be disabled. We should prefer # $dir$base.o.d over $dir.libs/$base.o.d because the latter is # automatically cleaned when .libs/ is deleted, while ignoring # the former would cause a distcleancheck panic. tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4 tmpdepfile2=$dir$base.o.d # libtool 1.5 tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5 tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504 "$@" -Wc,-MD else tmpdepfile1=$dir$base.o.d tmpdepfile2=$dir$base.d tmpdepfile3=$dir$base.d tmpdepfile4=$dir$base.d "$@" -MD fi stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" do test -f "$tmpdepfile" && break done if test -f "$tmpdepfile"; then sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" # That's a tab and a space in the []. sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" else echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" ;; #nosideeffect) # This comment above is used by automake to tell side-effect # dependency tracking mechanisms from slower ones. dashmstdout) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout, regardless of -o. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # Remove `-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done test -z "$dashmflag" && dashmflag=-M # Require at least two characters before searching for `:' # in the target name. This is to cope with DOS-style filenames: # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise. "$@" $dashmflag | sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" rm -f "$depfile" cat < "$tmpdepfile" > "$depfile" tr ' ' ' ' < "$tmpdepfile" | \ ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; dashXmstdout) # This case only exists to satisfy depend.m4. It is never actually # run, as this mode is specially recognized in the preamble. exit 1 ;; makedepend) "$@" || exit $? # Remove any Libtool call if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # X makedepend shift cleared=no eat=no for arg do case $cleared in no) set ""; shift cleared=yes ;; esac if test $eat = yes; then eat=no continue fi case "$arg" in -D*|-I*) set fnord "$@" "$arg"; shift ;; # Strip any option that makedepend may not understand. Remove # the object too, otherwise makedepend will parse it as a source file. -arch) eat=yes ;; -*|$object) ;; *) set fnord "$@" "$arg"; shift ;; esac done obj_suffix=`echo "$object" | sed 's/^.*\././'` touch "$tmpdepfile" ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" rm -f "$depfile" cat < "$tmpdepfile" > "$depfile" sed '1,2d' "$tmpdepfile" | tr ' ' ' ' | \ ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" "$tmpdepfile".bak ;; cpp) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # Remove `-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done "$@" -E | sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | sed '$ s: \\$::' > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" cat < "$tmpdepfile" >> "$depfile" sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; msvisualcpp) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi IFS=" " for arg do case "$arg" in -o) shift ;; $object) shift ;; "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") set fnord "$@" shift shift ;; *) set fnord "$@" "$arg" shift shift ;; esac done "$@" -E 2>/dev/null | sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" echo " " >> "$depfile" sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" rm -f "$tmpdepfile" ;; msvcmsys) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; none) exec "$@" ;; *) echo "Unknown depmode $depmode" 1>&2 exit 1 ;; esac exit 0 # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: gobby-0.4.94/gobby-0.5.xpm0000644000175000017500000001767111531722663012005 00000000000000/* XPM */ static char * gobby_0_5_xpm[] = { "32 32 368 2", " c None", ". c #404040", "+ c #666666", "@ c #646464", "# c #585858", "$ c #4E4E4E", "% c #474747", "& c #464646", "* c #585658", "= c #909090", "- c #EDEDED", "; c #F4F4F4", "> c #FEFEFE", ", c #FDFDFD", "' c #FCFCFC", ") c #FBFBFB", "! c #FAFAF9", "~ c #F9F9F8", "{ c #F8F8F7", "] c #F7F7F6", "^ c #F6F6F5", "/ c #F5F5F4", "( c #F3F3F3", "_ c #BEBBBE", ": c #676667", "< c #551B13", "[ c #814D35", "} c #632F22", "| c #8F8F8F", "1 c #F1F1F1", "2 c #FAFAFA", "3 c #F9F9F9", "4 c #F8F8F8", "5 c #F7F7F7", "6 c #F6F6F6", "7 c #F4F4F3", "8 c #F3F3F2", "9 c #C4C2C3", "0 c #E0DFE0", "a c #5C5B5C", "b c #A55B50", "c c #5E281B", "d c #704B35", "e c #763E2B", "f c #DBDBDB", "g c #D8D8D8", "h c #D7D7D6", "i c #D6D6D5", "j c #D5D5D4", "k c #D4D4D3", "l c #D3D3D2", "m c #D9D9D8", "n c #F2F2F2", "o c #C1BFC1", "p c #C8C7C7", "q c #703F3A", "r c #AC5547", "s c #922B1C", "t c #612016", "u c #5F261A", "v c #080503", "w c #110E0A", "x c #1E1C19", "y c #8A8A8A", "z c #F5F5F5", "A c #E8E8E8", "B c #E7E7E7", "C c #E6E6E6", "D c #E5E5E5", "E c #E4E4E3", "F c #E3E3E2", "G c #E2E2E1", "H c #EBEBEA", "I c #ABAAAB", "J c #ACAAAB", "K c #A0999B", "L c #99574F", "M c #9B3524", "N c #932D1B", "O c #812719", "P c #60160E", "Q c #000000", "R c #020101", "S c #5C5C5B", "T c #DBDBDA", "U c #DADADA", "V c #DADAD9", "W c #D8D8D7", "X c #D6D6D6", "Y c #DDDDDD", "Z c #EAEAEA", "` c #F0F0EF", " . c #E7E7E6", ".. c #9F7873", "+. c #AF5C4D", "@. c #962E1C", "#. c #8E2B1A", "$. c #772314", "%. c #020201", "&. c #040301", "*. c #EEEEEE", "=. c #D9D9D9", "-. c #E5E5E3", ";. c #9B635B", ">. c #A03C2B", ",. c #942D1C", "'. c #832819", "). c #5B130C", "!. c #533B13", "~. c #452F0F", "{. c #36230A", "]. c #3A2309", "^. c #44290B", "/. c #A4A4A3", "(. c #EAEAE9", "_. c #D3D3D3", ":. c #D1D1D1", "<. c #D0D0D0", "[. c #CFCFCF", "}. c #AF9593", "|. c #AD5D50", "1. c #972E1C", "2. c #8F2C1A", "3. c #722014", "4. c #D8942E", "5. c #DF922B", "6. c #D98624", "7. c #C4751D", "8. c #6A4F2F", "9. c #757162", "0. c #56544D", "a. c #BCBCBC", "b. c #D5D5D5", "c. c #D2D2D2", "d. c #D2D2D1", "e. c #D1D1D0", "f. c #E5E5E4", "g. c #EEEEED", "h. c #9C6963", "i. c #A54635", "j. c #952D1C", "k. c #842819", "l. c #5A120B", "m. c #DD9029", "n. c #D98825", "o. c #B56D1C", "p. c #948E7B", "q. c #E9E0C6", "r. c #FAF1D3", "s. c #EFE6C7", "t. c #AFAA98", "u. c #C4C4C3", "v. c #CECECD", "w. c #CDCDCC", "x. c #CDC1C0", "y. c #A45D52", "z. c #982F1D", "A. c #902C1B", "B. c #6D1C12", "C. c #130C03", "D. c #D78422", "E. c #D57F20", "F. c #736F61", "G. c #F5EDD1", "H. c #FAF3DD", "I. c #FAF2D6", "J. c #EAE3CC", "K. c #79766E", "L. c #D0D0CF", "M. c #CFCFCE", "N. c #E0E0DF", "O. c #EFEFEE", "P. c #9F7471", "Q. c #AA4E3F", "R. c #862919", "S. c #500E09", "T. c #A9651A", "U. c #2D1A07", "V. c #D6D0BA", "W. c #AEA999", "X. c #B5B0A0", "Y. c #BBB6A7", "Z. c #B5AE9D", "`. c #A19B8A", " + c #A9A491", ".+ c #E8E6E5", "++ c #9E6058", "@+ c #9C3220", "#+ c #912C1B", "$+ c #6C271E", "%+ c #212932", "&+ c #4C3B2A", "*+ c #3E2509", "=+ c #EBE3CD", "-+ c #B0812D", ";+ c #DE9F34", ">+ c #D2912E", ",+ c #E0942C", "'+ c #895518", ")+ c #BBB5A1", "!+ c #CBCBCA", "~+ c #AA8A87", "{+ c #AB5143", "]+ c #982E1C", "^+ c #852818", "/+ c #694643", "(+ c #151C22", "_+ c #485B6D", ":+ c #7694B4", "<+ c #6F859A", "[+ c #4B443C", "}+ c #EFE9D2", "|+ c #B17E29", "1+ c #E6A033", "2+ c #E2982E", "3+ c #DD8F29", "4+ c #835117", "5+ c #B9B3A0", "6+ c #C5C5C5", "7+ c #CCCCCC", "8+ c #9C655E", "9+ c #9F3625", "0+ c #912D1B", "a+ c #7B3C35", "b+ c #807E7D", "c+ c #47586B", "d+ c #728FAE", "e+ c #708EAC", "f+ c #6E8BA8", "g+ c #868B8F", "h+ c #ECE4CE", "i+ c #8E6322", "j+ c #DE912A", "k+ c #DA8825", "l+ c #5F3F1D", "m+ c #BAB5A1", "n+ c #A99796", "o+ c #A45144", "p+ c #992F1C", "q+ c #84281A", "r+ c #A18583", "s+ c #818181", "t+ c #232A30", "u+ c #6C87A4", "v+ c #6B87A4", "w+ c #6A86A2", "x+ c #6884A0", "y+ c #717F8C", "z+ c #DBD4BE", "A+ c #4C412A", "B+ c #DC8E29", "C+ c #DA8926", "D+ c #C8791F", "E+ c #36331F", "F+ c #AEA996", "G+ c #9B9B9B", "H+ c #956660", "I+ c #A33D2C", "J+ c #804740", "K+ c #2D343C", "L+ c #657F9A", "M+ c #647E9A", "N+ c #637D98", "O+ c #53697C", "P+ c #4F5E56", "Q+ c #8D887A", "R+ c #697560", "S+ c #5F552A", "T+ c #644B1B", "U+ c #4D5828", "V+ c #556B4C", "W+ c #606754", "X+ c #2B412B", "Y+ c #C7C8C7", "Z+ c #EBEAE8", "`+ c #8A4439", " @ c #9B2F1D", ".@ c #822B1D", "+@ c #B5A09D", "@@ c #DCDCDB", "#@ c #2D363F", "$@ c #5E7690", "%@ c #5D768F", "&@ c #596E85", "*@ c #47594B", "=@ c #93C393", "-@ c #6E976E", ";@ c #6FA46F", ">@ c #6AAC6A", ",@ c #57A257", "'@ c #439743", ")@ c #2A7E2A", "!@ c #2E882E", "~@ c #2E892E", "{@ c #374B37", "]@ c #DED9D3", "^@ c #905943", "/@ c #75291C", "(@ c #7E4942", "_@ c #E3E3E1", ":@ c #24282A", "<@ c #252C32", "[@ c #374553", "}@ c #3B4848", "|@ c #6AA36A", "1@ c #70AF70", "2@ c #67AB67", "3@ c #5CA55C", "4@ c #4D9D4D", "5@ c #3E943E", "6@ c #2F8C2F", "7@ c #286628", "8@ c #969795", "9@ c #CFC3B7", "0@ c #A07559", "a@ c #95725A", "b@ c #D9D3CD", "c@ c #E1E1E0", "d@ c #324332", "e@ c #4E9D4E", "f@ c #4A9B4A", "g@ c #449744", "h@ c #3B923B", "i@ c #2B802B", "j@ c #676F67", "k@ c #96877A", "l@ c #AB9380", "m@ c #E8E8E6", "n@ c #E9E9E8", "o@ c #233823", "p@ c #2B812B", "q@ c #287328", "r@ c #5F685F", "s@ c #CBCBC9", "t@ c #C6C6C5", "u@ c #CACAC9", "v@ c #D2D2D0", "w@ c #E0E0E0", "x@ c #323E32", "y@ c #273F27", "z@ c #294929", "A@ c #2A4D2A", "B@ c #2A542A", "C@ c #295829", "D@ c #295129", "E@ c #2B4E2B", "F@ c #345134", "G@ c #405440", "H@ c #676F66", "I@ c #B4B4B4", "J@ c #C2C2C1", "K@ c #B3B3B2", "L@ c #AEAEAC", "M@ c #A9A9A8", "N@ c #6A6A6A", "O@ c #616161", "P@ c #898989", "Q@ c #828282", "R@ c #858585", "S@ c #888888", "T@ c #878787", "U@ c #848484", "V@ c #848483", "W@ c #838383", "X@ c #838382", "Y@ c #7E7E7E", "Z@ c #727272", "`@ c #4A4A49", " ", " ", " ", " . + @ # $ % % % % % % % & & * ", " = - ; > , ' ) ! ~ { ] ^ / ( _ : < [ } ", " | 1 ( , ' ) 2 3 4 5 6 / 7 8 9 0 a b c d e ", " | - ( f g g h i j k l m ( n o / p q r s t u ", " v w x y ' z A B C C D E F G H I J K L M N O P ", " Q Q Q Q R S z F T U V m W X Y Z ` ...+.@.#.$. ", " %.&.Q Q Q Q Q *.*.U =.=.W h i F A A -.;.>.,.'.). ", " Q !.~.{.].^.Q /.(.i j _.l :.<.[.j W }.|.1.2.3. ", " Q 4.5.6.7.8.9.0.a.X b.k l c.d.e.f.g.h.i.j.k.l. ", " Q m.n.o.p.q.r.s.t.u.c.c.:.<.[.v.w.x.y.z.A.B. ", " C.D.E.F.G.H.H.I.J.K.c.d.e.L.M.N.O.P.Q.1.R.S. ", " T.U.V.W.X.Y.Z.`. +c.:.<.[.v.w..+++@+#+$+ ", " %+&+*+=+-+;+>+,+'+)+!+e.L.M.v.=.~+{+]+^+/+ ", " (+_+:+<+[+}+|+1+2+3+4+5+6+<.[.v.w.7+8+9+0+a+b+ ", " c+d+e+f+g+h+i+2+j+k+l+m+M.L.M.v.w.n+o+p+q+r+s+ ", "t+u+v+w+x+y+z+A+B+C+D+E+F+G+M.v.w.7+H+I+N J+h s+ ", "K+L+M+N+O+P+Q+R+S+T+U+V+W+X+Y+` O.Z+`+ @.@+@@@s+ ", "#@$@%@&@*@=@-@;@>@,@'@)@!@~@{@i g.]@^@/@(@_@<.s+ ", ":@<@[@}@|@1@2@3@4@5@6@6@6@6@7@8@H 9@0@a@b@G c@s+ ", " # d@e@f@g@h@6@6@6@6@6@6@i@j@F k@l@m@n@G h s+ ", " o@p@6@6@6@6@6@6@6@6@6@q@r@N.-.s@t@u@v@w@s+ ", " x@y@z@A@B@C@D@E@F@G@H@I@(.H G J@K@L@M@N@ ", " O@P@Q@s+R@S@T@R@U@U@V@W@W@X@Y@Z@+ `@ ", " ", " ", " ", " ", " ", " "}; gobby-0.4.94/install-sh0000755000175000017500000003253711424242734011654 00000000000000#!/bin/sh # install - install a program, script, or datafile scriptversion=2009-04-28.21; # UTC # This originates from X11R5 (mit/util/scripts/install.sh), which was # later released in X11R6 (xc/config/util/install.sh) with the # following copyright and license. # # Copyright (C) 1994 X Consortium # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to # deal in the Software without restriction, including without limitation the # rights to use, copy, modify, merge, publish, distribute, sublicense, and/or # sell copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in # all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN # AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- # TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # # Except as contained in this notice, the name of the X Consortium shall not # be used in advertising or otherwise to promote the sale, use or other deal- # ings in this Software without prior written authorization from the X Consor- # tium. # # # FSF changes to this file are in the public domain. # # Calling this script install-sh is preferred over install.sh, to prevent # `make' implicit rules from creating a file called install from it # when there is no Makefile. # # This script is compatible with the BSD install script, but was written # from scratch. nl=' ' IFS=" "" $nl" # set DOITPROG to echo to test this script # Don't use :- since 4.3BSD and earlier shells don't like it. doit=${DOITPROG-} if test -z "$doit"; then doit_exec=exec else doit_exec=$doit fi # Put in absolute file names if you don't have them in your path; # or use environment vars. chgrpprog=${CHGRPPROG-chgrp} chmodprog=${CHMODPROG-chmod} chownprog=${CHOWNPROG-chown} cmpprog=${CMPPROG-cmp} cpprog=${CPPROG-cp} mkdirprog=${MKDIRPROG-mkdir} mvprog=${MVPROG-mv} rmprog=${RMPROG-rm} stripprog=${STRIPPROG-strip} posix_glob='?' initialize_posix_glob=' test "$posix_glob" != "?" || { if (set -f) 2>/dev/null; then posix_glob= else posix_glob=: fi } ' posix_mkdir= # Desired mode of installed file. mode=0755 chgrpcmd= chmodcmd=$chmodprog chowncmd= mvcmd=$mvprog rmcmd="$rmprog -f" stripcmd= src= dst= dir_arg= dst_arg= copy_on_change=false no_target_directory= usage="\ Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE or: $0 [OPTION]... SRCFILES... DIRECTORY or: $0 [OPTION]... -t DIRECTORY SRCFILES... or: $0 [OPTION]... -d DIRECTORIES... In the 1st form, copy SRCFILE to DSTFILE. In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. In the 4th, create DIRECTORIES. Options: --help display this help and exit. --version display version info and exit. -c (ignored) -C install only if different (preserve the last data modification time) -d create directories instead of installing files. -g GROUP $chgrpprog installed files to GROUP. -m MODE $chmodprog installed files to MODE. -o USER $chownprog installed files to USER. -s $stripprog installed files. -t DIRECTORY install into DIRECTORY. -T report an error if DSTFILE is a directory. Environment variables override the default commands: CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG " while test $# -ne 0; do case $1 in -c) ;; -C) copy_on_change=true;; -d) dir_arg=true;; -g) chgrpcmd="$chgrpprog $2" shift;; --help) echo "$usage"; exit $?;; -m) mode=$2 case $mode in *' '* | *' '* | *' '* | *'*'* | *'?'* | *'['*) echo "$0: invalid mode: $mode" >&2 exit 1;; esac shift;; -o) chowncmd="$chownprog $2" shift;; -s) stripcmd=$stripprog;; -t) dst_arg=$2 shift;; -T) no_target_directory=true;; --version) echo "$0 $scriptversion"; exit $?;; --) shift break;; -*) echo "$0: invalid option: $1" >&2 exit 1;; *) break;; esac shift done if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then # When -d is used, all remaining arguments are directories to create. # When -t is used, the destination is already specified. # Otherwise, the last argument is the destination. Remove it from $@. for arg do if test -n "$dst_arg"; then # $@ is not empty: it contains at least $arg. set fnord "$@" "$dst_arg" shift # fnord fi shift # arg dst_arg=$arg done fi if test $# -eq 0; then if test -z "$dir_arg"; then echo "$0: no input file specified." >&2 exit 1 fi # It's OK to call `install-sh -d' without argument. # This can happen when creating conditional directories. exit 0 fi if test -z "$dir_arg"; then trap '(exit $?); exit' 1 2 13 15 # Set umask so as not to create temps with too-generous modes. # However, 'strip' requires both read and write access to temps. case $mode in # Optimize common cases. *644) cp_umask=133;; *755) cp_umask=22;; *[0-7]) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw='% 200' fi cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; *) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw=,u+rw fi cp_umask=$mode$u_plus_rw;; esac fi for src do # Protect names starting with `-'. case $src in -*) src=./$src;; esac if test -n "$dir_arg"; then dst=$src dstdir=$dst test -d "$dstdir" dstdir_status=$? else # Waiting for this to be detected by the "$cpprog $src $dsttmp" command # might cause directories to be created, which would be especially bad # if $src (and thus $dsttmp) contains '*'. if test ! -f "$src" && test ! -d "$src"; then echo "$0: $src does not exist." >&2 exit 1 fi if test -z "$dst_arg"; then echo "$0: no destination specified." >&2 exit 1 fi dst=$dst_arg # Protect names starting with `-'. case $dst in -*) dst=./$dst;; esac # If destination is a directory, append the input filename; won't work # if double slashes aren't ignored. if test -d "$dst"; then if test -n "$no_target_directory"; then echo "$0: $dst_arg: Is a directory" >&2 exit 1 fi dstdir=$dst dst=$dstdir/`basename "$src"` dstdir_status=0 else # Prefer dirname, but fall back on a substitute if dirname fails. dstdir=` (dirname "$dst") 2>/dev/null || expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$dst" : 'X\(//\)[^/]' \| \ X"$dst" : 'X\(//\)$' \| \ X"$dst" : 'X\(/\)' \| . 2>/dev/null || echo X"$dst" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q' ` test -d "$dstdir" dstdir_status=$? fi fi obsolete_mkdir_used=false if test $dstdir_status != 0; then case $posix_mkdir in '') # Create intermediate dirs using mode 755 as modified by the umask. # This is like FreeBSD 'install' as of 1997-10-28. umask=`umask` case $stripcmd.$umask in # Optimize common cases. *[2367][2367]) mkdir_umask=$umask;; .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; *[0-7]) mkdir_umask=`expr $umask + 22 \ - $umask % 100 % 40 + $umask % 20 \ - $umask % 10 % 4 + $umask % 2 `;; *) mkdir_umask=$umask,go-w;; esac # With -d, create the new directory with the user-specified mode. # Otherwise, rely on $mkdir_umask. if test -n "$dir_arg"; then mkdir_mode=-m$mode else mkdir_mode= fi posix_mkdir=false case $umask in *[123567][0-7][0-7]) # POSIX mkdir -p sets u+wx bits regardless of umask, which # is incompatible with FreeBSD 'install' when (umask & 300) != 0. ;; *) tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0 if (umask $mkdir_umask && exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1 then if test -z "$dir_arg" || { # Check for POSIX incompatibilities with -m. # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or # other-writeable bit of parent directory when it shouldn't. # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. ls_ld_tmpdir=`ls -ld "$tmpdir"` case $ls_ld_tmpdir in d????-?r-*) different_mode=700;; d????-?--*) different_mode=755;; *) false;; esac && $mkdirprog -m$different_mode -p -- "$tmpdir" && { ls_ld_tmpdir_1=`ls -ld "$tmpdir"` test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" } } then posix_mkdir=: fi rmdir "$tmpdir/d" "$tmpdir" else # Remove any dirs left behind by ancient mkdir implementations. rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null fi trap '' 0;; esac;; esac if $posix_mkdir && ( umask $mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" ) then : else # The umask is ridiculous, or mkdir does not conform to POSIX, # or it failed possibly due to a race condition. Create the # directory the slow way, step by step, checking for races as we go. case $dstdir in /*) prefix='/';; -*) prefix='./';; *) prefix='';; esac eval "$initialize_posix_glob" oIFS=$IFS IFS=/ $posix_glob set -f set fnord $dstdir shift $posix_glob set +f IFS=$oIFS prefixes= for d do test -z "$d" && continue prefix=$prefix$d if test -d "$prefix"; then prefixes= else if $posix_mkdir; then (umask=$mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break # Don't fail if two instances are running concurrently. test -d "$prefix" || exit 1 else case $prefix in *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; *) qprefix=$prefix;; esac prefixes="$prefixes '$qprefix'" fi fi prefix=$prefix/ done if test -n "$prefixes"; then # Don't fail if two instances are running concurrently. (umask $mkdir_umask && eval "\$doit_exec \$mkdirprog $prefixes") || test -d "$dstdir" || exit 1 obsolete_mkdir_used=true fi fi fi if test -n "$dir_arg"; then { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 else # Make a couple of temp file names in the proper directory. dsttmp=$dstdir/_inst.$$_ rmtmp=$dstdir/_rm.$$_ # Trap to clean up those temp files at exit. trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 # Copy the file name to the temp name. (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") && # and set any options; do chmod last to preserve setuid bits. # # If any of these fail, we abort the whole thing. If we want to # ignore errors from any of these, just make sure not to ignore # errors from the above "$doit $cpprog $src $dsttmp" command. # { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } && { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && # If -C, don't bother to copy if it wouldn't change the file. if $copy_on_change && old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && eval "$initialize_posix_glob" && $posix_glob set -f && set X $old && old=:$2:$4:$5:$6 && set X $new && new=:$2:$4:$5:$6 && $posix_glob set +f && test "$old" = "$new" && $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 then rm -f "$dsttmp" else # Rename the file to the real destination. $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || # The rename failed, perhaps because mv can't rename something else # to itself, or perhaps because mv is so ancient that it does not # support -f. { # Now remove or move aside any old file at destination location. # We try this two ways since rm can't unlink itself on some # systems and the destination file might be busy for other # reasons. In this case, the final cleanup might fail but the new # file should still install successfully. { test ! -f "$dst" || $doit $rmcmd -f "$dst" 2>/dev/null || { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } } || { echo "$0: cannot unlink or rename $dst" >&2 (exit 1); exit 1 } } && # Now rename the file to the real destination. $doit $mvcmd "$dsttmp" "$dst" } fi || exit 1 trap '' 0 fi done # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: gobby-0.4.94/code/0000755000175000017500000000000011543672435010637 500000000000000gobby-0.4.94/code/window.cpp0000644000175000017500000003073611531722663012577 00000000000000/* Gobby - GTK-based collaborative text editor * Copyright (C) 2008-2011 Armin Burgmeier * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "features.hpp" #include "window.hpp" #include "commands/file-tasks/task-open.hpp" #include "commands/file-tasks/task-open-multiple.hpp" #include "core/iconmanager.hpp" #include "core/noteplugin.hpp" #include "util/i18n.hpp" #include "util/gtk-compat.hpp" #include Gobby::Window::Window(unsigned int argc, const char* const argv[], const IconManager& icon_mgr, Config& config #ifdef WITH_UNIQUE , UniqueApp* app #endif ): Gtk::Window(Gtk::WINDOW_TOPLEVEL), m_argc(argc), m_argv(argv), m_config(config), m_lang_manager(gtk_source_language_manager_get_default()), m_preferences(m_config), m_icon_mgr(icon_mgr), #ifdef WITH_UNIQUE m_app(app), #endif m_header(m_preferences, m_lang_manager), m_browser(*this, Plugins::TEXT, m_statusbar, m_preferences), m_text_folder(false, m_preferences, m_lang_manager), m_chat_folder(true, m_preferences, m_lang_manager), m_chat_frame(_("Chat"), IconManager::STOCK_CHAT, m_preferences.appearance.show_chat), m_statusbar(*this, m_text_folder, m_preferences), m_info_storage(INF_GTK_BROWSER_MODEL(m_browser.get_store())), m_operations(m_info_storage, m_statusbar), m_browser_commands(m_browser, m_text_folder, m_statusbar), m_browser_context_commands(*this, m_browser, m_file_chooser, m_operations, m_preferences), m_auth_commands(*this, m_browser, m_statusbar, m_preferences), m_autosave_commands(m_text_folder, m_operations, m_info_storage, m_preferences), m_subscription_commands(m_browser, m_text_folder, m_chat_folder, m_info_storage), m_synchronization_commands(m_subscription_commands), m_user_join_commands(m_subscription_commands, m_preferences), m_text_folder_commands(m_text_folder), m_chat_folder_commands(m_chat_folder), m_file_commands(*this, m_header, m_browser, m_text_folder, m_statusbar, m_file_chooser, m_operations, m_info_storage, m_preferences), m_edit_commands(*this, m_header, m_text_folder, m_statusbar, m_preferences), m_view_commands(m_header, m_text_folder, m_chat_frame, m_chat_folder, m_preferences), m_help_commands(*this, m_header, m_icon_mgr), m_title_bar(*this, m_text_folder) { #ifdef WITH_UNIQUE g_object_ref(app); unique_app_watch_window(app, gobj()); g_signal_connect(app, "message-received", G_CALLBACK(on_message_received_static), this); #endif // WITH_UNIQUE m_chat_frame.signal_show().connect( sigc::mem_fun(*this, &Window::on_chat_show), true); m_chat_frame.signal_hide().connect( sigc::mem_fun(*this, &Window::on_chat_hide), false); m_header.show(); m_browser.show(); m_text_folder.show(); m_chat_folder.show(); // Build UI Glib::RefPtr group = m_header.get_accel_group(); // Add focus shortcuts; unfortunately gtkmm does not wrap that API GClosure* closure = g_cclosure_new( G_CALLBACK(on_switch_to_chat_static), this, NULL); gtk_accel_group_connect(group->gobj(), GDK_KEY_m, GDK_CONTROL_MASK, static_cast(0), closure); //g_closure_unref(closure); GClosure* closure2 = g_cclosure_new( G_CALLBACK(on_switch_to_text_static), this, NULL); gtk_accel_group_connect(group->gobj(), GDK_KEY_m, static_cast( GDK_CONTROL_MASK | GDK_SHIFT_MASK), static_cast(0), closure2); //g_closure_unref(closure2); add_accel_group(group); Gtk::Frame* frame_browser = Gtk::manage(new ClosableFrame( _("Document Browser"), IconManager::STOCK_DOCLIST, m_preferences.appearance.show_browser)); frame_browser->set_shadow_type(Gtk::SHADOW_IN); frame_browser->add(m_browser); // frame_browser manages visibility itself Gtk::Frame* frame_text = Gtk::manage(new Gtk::Frame); frame_text->set_shadow_type(Gtk::SHADOW_IN); frame_text->add(m_text_folder); frame_text->show(); m_chat_frame.set_shadow_type(Gtk::SHADOW_IN); m_chat_frame.add(m_chat_folder); // frame_chat manages visibility itself m_chat_paned.pack1(*frame_text, true, false); m_chat_paned.pack2(m_chat_frame, false, false); m_chat_paned.show(); m_paned.pack1(*frame_browser, false, false); m_paned.pack2(m_chat_paned, true, false); m_paned.show(); m_mainbox.pack_start(m_header, Gtk::PACK_SHRINK); m_mainbox.pack_start(m_paned, Gtk::PACK_EXPAND_WIDGET); m_mainbox.pack_start(m_statusbar, Gtk::PACK_SHRINK); m_mainbox.show(); // Give initial focus to the browser, which will in turn give focus // to the "Direct Connection" expander, so people can quickly // get going. set_focus_child(m_browser); add(m_mainbox); set_default_size(800, 600); set_role("Gobby"); } Gobby::Window::~Window() { // Serialise preferences into config m_preferences.serialize(m_config); #ifdef WITH_UNIQUE g_object_unref(m_app); #endif } bool Gobby::Window::on_delete_event(GdkEventAny* event) { #if 0 if(m_buffer.get() == NULL) return false; if(!m_buffer->is_open() ) return false; Gtk::MessageDialog dlg( *this, _("You are still connected to a session"), false, Gtk::MESSAGE_WARNING, Gtk::BUTTONS_NONE, true ); dlg.set_secondary_text( _("Do you want to close Gobby nevertheless?") ); Gtk::Image* img = Gtk::manage(new Gtk::Image(Gtk::Stock::CANCEL, Gtk::ICON_SIZE_BUTTON)); Gtk::Button* cancel_button = dlg.add_button(_("C_ancel"), Gtk::RESPONSE_CANCEL); dlg.add_button(Gtk::Stock::CLOSE, Gtk::RESPONSE_YES); cancel_button->set_image(*img); cancel_button->grab_focus(); return dlg.run() != Gtk::RESPONSE_YES; #endif return false; } // GtkWindow catches keybindings for the menu items _before_ passing them to // the focused widget. This is unfortunate and means that pressing ctrl+V // in an entry on the browser ends up pasting text in the TextView. // Here we override GtkWindow's handler to do the same things that it // does, but in the opposite order and then we chain up to the grand // parent handler, skipping Gtk::Window::key_press_event(). // This code is basically stolen from gedit, but ported to C++. bool Gobby::Window::on_key_press_event(GdkEventKey* event) { // We can't let GtkSourceView handle this, since we override // Undo/Redo. TODO: This is a bit of a hack. A proper solution would // perhaps be to subclass GtkSourceView, and either // unregister/reregister the keybinding there, or making sure the // key-press-event default handler returns false. // TODO: An even properer solution is to use the new GtkSourceView3 // feature which allows to plug a different undo manager to the // SourceView. This would also make the Undo/Redo context menu items // work. if(event->keyval == GDK_KEY_z || event->keyval == GDK_KEY_Z) return Gtk::Window::on_key_press_event(event); bool handled = gtk_window_propagate_key_event(gobj(), event); if(!handled) handled = gtk_window_activate_key(gobj(), event); // Skip Gtk::Window default handler here: if(!handled) handled = Gtk::Container::on_key_press_event(event); return handled; } void Gobby::Window::on_realize() { Gtk::Window::on_realize(); m_paned.set_position(m_paned.get_width() * 2 / 5); m_chat_paned.set_position(m_chat_paned.get_height() * 7 / 10); } void Gobby::Window::on_show() { Gtk::Window::on_show(); if(!m_config.get_root()["initial"].get_value("run", false)) { m_initial_dlg.reset(new InitialDialog(*this, m_preferences, m_icon_mgr)); m_initial_dlg->present(); m_initial_dlg->signal_hide().connect( sigc::mem_fun(*this, &Window::on_initial_dialog_hide)); } // Open files passed on the command line // TODO: Only do this when the Window is shown the first time if(m_argc == 1) { Glib::RefPtr file( Gio::File::create_for_commandline_arg(m_argv[0])); m_file_commands.set_task(new TaskOpen(m_file_commands, file)); } else if(m_argc > 1) { TaskOpenMultiple* task = new TaskOpenMultiple(m_file_commands); const char* const* arg = m_argv; do { Glib::RefPtr file( Gio::File::create_for_commandline_arg(*arg)); task->add_file(file->get_uri()); } while(*++arg); m_file_commands.set_task(task); } } void Gobby::Window::on_initial_dialog_hide() { m_initial_dlg.reset(NULL); // Don't show again m_config.get_root()["initial"].set_value("run", true); } bool Gobby::Window::on_switch_to_chat() { SessionView* view = m_chat_folder.get_current_document(); if(!view) return false; ChatSessionView* chat_view = dynamic_cast(view); if(!chat_view) return false; m_preferences.appearance.show_chat = true; InfGtkChat* chat = chat_view->get_chat(); GtkWidget* entry = inf_gtk_chat_get_entry(chat); gtk_widget_grab_focus(GTK_WIDGET(entry)); return true; } bool Gobby::Window::on_switch_to_text() { SessionView* view = m_text_folder.get_current_document(); if(!view) return false; TextSessionView* text_view = dynamic_cast(view); if(!text_view) return false; GtkSourceView* gtk_view = text_view->get_text_view(); gtk_widget_grab_focus(GTK_WIDGET(gtk_view)); // TODO: Turn chat back off if previously activated // via on_switch_to_chat()? return true; } void Gobby::Window::on_chat_hide() { Gtk::Widget* focus = get_focus(); // Actually this always returns NULL if m_chat_frame has focus, // because the focus is removed again. I think it's good enough // though. if(focus == NULL || focus == &m_chat_frame || focus->is_ancestor(m_chat_frame)) { on_switch_to_text(); } } void Gobby::Window::on_chat_show() { Gtk::Widget* focus = get_focus(); if(!focus) on_switch_to_chat(); } #ifdef WITH_UNIQUE UniqueResponse Gobby::Window::on_message_received(UniqueCommand command, UniqueMessageData* message, guint time) try { struct uris_holder { uris_holder(gchar** uris): uris(uris) {} ~uris_holder() { if(uris) g_strfreev(uris); } operator gchar* const*() const { return uris; } gchar** uris; private: uris_holder(const uris_holder&); uris_holder& operator=(const uris_holder&); }; // Cast to int to suppress a warning about UNIQUE_GOBBY_CONNECT not // being a member of the UniqueCommand enum. switch (static_cast(command)) { case UNIQUE_ACTIVATE: gtk_window_set_screen(gobj(), unique_message_data_get_screen(message)); present(time); return UNIQUE_RESPONSE_OK; case UNIQUE_OPEN: { uris_holder uris( unique_message_data_get_uris(message)); if(!uris || !uris[0]) return UNIQUE_RESPONSE_FAIL; if(uris[1]) // multiple files? { TaskOpenMultiple* task = new TaskOpenMultiple(m_file_commands); for(const gchar* const* p = uris; *p; ++p) task->add_file(*p); m_file_commands.set_task(task); } else { TaskOpen* task = new TaskOpen( m_file_commands, Gio::File::create_for_uri(*uris)); m_file_commands.set_task(task); } return UNIQUE_RESPONSE_OK; } case UNIQUE_GOBBY_CONNECT: { uris_holder uris(unique_message_data_get_uris(message)); if(!uris || !uris[0]) return UNIQUE_RESPONSE_FAIL; for(const gchar* const* p = uris; *p; ++p) { const gchar protocol[] = "infinote://"; if(!g_str_has_prefix(*p, protocol)) return UNIQUE_RESPONSE_FAIL; connect_to_host(*p + sizeof(protocol) - 1); } return UNIQUE_RESPONSE_OK; } default: return UNIQUE_RESPONSE_PASSTHROUGH; } } // For example, connect_to_host might throw Glib::ThreadError catch(const Glib::Exception& error) { // TODO: Do we want to show a dialog here? g_warning("Failed to process IPC message: %s", error.what().c_str()); return UNIQUE_RESPONSE_FAIL; } catch (...) { g_assert_not_reached(); return UNIQUE_RESPONSE_FAIL; } #endif // WITH_UNIQUE gobby-0.4.94/code/Makefile.in0000644000175000017500000005131711543672413012627 00000000000000# 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@ subdir = code DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in $(srcdir)/features.hpp.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = features.hpp CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = LIBRARIES = $(noinst_LIBRARIES) AR = ar ARFLAGS = cru AM_V_AR = $(am__v_AR_$(V)) am__v_AR_ = $(am__v_AR_$(AM_DEFAULT_VERBOSITY)) am__v_AR_0 = @echo " AR " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ libgobby_a_AR = $(AR) $(ARFLAGS) libgobby_a_LIBADD = am_libgobby_a_OBJECTS = main.$(OBJEXT) window.$(OBJEXT) libgobby_a_OBJECTS = $(am_libgobby_a_OBJECTS) DEFAULT_INCLUDES = -I.@am__isrc@ depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) AM_V_CXX = $(am__v_CXX_$(V)) am__v_CXX_ = $(am__v_CXX_$(AM_DEFAULT_VERBOSITY)) am__v_CXX_0 = @echo " CXX " $@; CXXLD = $(CXX) CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \ -o $@ AM_V_CXXLD = $(am__v_CXXLD_$(V)) am__v_CXXLD_ = $(am__v_CXXLD_$(AM_DEFAULT_VERBOSITY)) am__v_CXXLD_0 = @echo " CXXLD " $@; AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; SOURCES = $(libgobby_a_SOURCES) DIST_SOURCES = $(libgobby_a_SOURCES) RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ install-dvi-recursive install-exec-recursive \ install-html-recursive install-info-recursive \ install-pdf-recursive install-ps-recursive install-recursive \ installcheck-recursive installdirs-recursive pdf-recursive \ ps-recursive uninstall-recursive HEADERS = $(noinst_HEADERS) RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ distdir ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" ACLOCAL = @ACLOCAL@ ALL_LINGUAS = @ALL_LINGUAS@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@ DOC_USER_FORMATS = @DOC_USER_FORMATS@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GMOFILES = @GMOFILES@ GMSGFMT = @GMSGFMT@ GREP = @GREP@ HELP_DIR = @HELP_DIR@ 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@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MKINSTALLDIRS = @MKINSTALLDIRS@ MSGFMT = @MSGFMT@ MSGFMT_OPTS = @MSGFMT_OPTS@ MSGMERGE = @MSGMERGE@ OBJEXT = @OBJEXT@ OMF_DIR = @OMF_DIR@ 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@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ WINDRES = @WINDRES@ 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_CXX = @ac_ct_CXX@ 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@ gobby_CFLAGS = @gobby_CFLAGS@ gobby_LIBS = @gobby_LIBS@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infinote_CFLAGS = @infinote_CFLAGS@ infinote_LIBS = @infinote_LIBS@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ 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@ unique_CFLAGS = @unique_CFLAGS@ unique_LIBS = @unique_LIBS@ SUBDIRS = util core dialogs operations commands noinst_LIBRARIES = libgobby.a libgobby_a_SOURCES = \ main.cpp \ window.cpp noinst_HEADERS = window.hpp appicondir = $(datadir)/pixmaps pixmapdir = $(datadir)/pixmaps/gobby-0.5 AM_CPPFLAGS = $(gobby_CFLAGS) $(unique_CFLAGS) $(infinote_CFLAGS) \ -I$(top_srcdir)/code all: features.hpp $(MAKE) $(AM_MAKEFLAGS) all-recursive .SUFFIXES: .SUFFIXES: .cpp .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(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) --gnu code/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu code/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: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): features.hpp: stamp-h1 @if test ! -f $@; then \ rm -f stamp-h1; \ $(MAKE) $(AM_MAKEFLAGS) stamp-h1; \ else :; fi stamp-h1: $(srcdir)/features.hpp.in $(top_builddir)/config.status @rm -f stamp-h1 cd $(top_builddir) && $(SHELL) ./config.status code/features.hpp $(srcdir)/features.hpp.in: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) ($(am__cd) $(top_srcdir) && $(AUTOHEADER)) rm -f stamp-h1 touch $@ distclean-hdr: -rm -f features.hpp stamp-h1 clean-noinstLIBRARIES: -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) libgobby.a: $(libgobby_a_OBJECTS) $(libgobby_a_DEPENDENCIES) $(AM_V_at)-rm -f libgobby.a $(AM_V_AR)$(libgobby_a_AR) libgobby.a $(libgobby_a_OBJECTS) $(libgobby_a_LIBADD) $(AM_V_at)$(RANLIB) libgobby.a mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/main.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/window.Po@am__quote@ .cpp.o: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $< .cpp.obj: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. # To change the values of `make' variables: instead of editing Makefiles, # (1) if the variable is set in `config.status', edit `config.status' # (which will cause the Makefiles to be regenerated when you run `make'); # (2) otherwise, pass the desired values on the `make' command line. $(RECURSIVE_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ list='$(SUBDIRS)'; for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" $(RECURSIVE_CLEAN_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ rev=''; for subdir in $$list; do \ if test "$$subdir" = "."; then :; else \ rev="$$subdir $$rev"; \ fi; \ done; \ rev="$$rev ."; \ target=`echo $@ | sed s/-recursive//`; \ for subdir in $$rev; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) features.hpp.in $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ list='$(SOURCES) $(HEADERS) features.hpp.in $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: ctags-recursive $(HEADERS) $(SOURCES) features.hpp.in $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) features.hpp.in $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags 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 @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: check-recursive all-am: Makefile $(LIBRARIES) $(HEADERS) features.hpp installdirs: installdirs-recursive installdirs-am: install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive 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-recursive clean-am: clean-generic clean-noinstLIBRARIES mostlyclean-am distclean: distclean-recursive -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-hdr distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: .MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) all \ ctags-recursive install-am install-strip tags-recursive .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ all all-am check check-am clean clean-generic \ clean-noinstLIBRARIES ctags ctags-recursive distclean \ distclean-compile distclean-generic distclean-hdr \ distclean-tags 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-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ installdirs-am maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-compile mostlyclean-generic pdf pdf-am \ ps ps-am tags tags-recursive uninstall uninstall-am # 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: gobby-0.4.94/code/util/0000755000175000017500000000000011543672435011614 500000000000000gobby-0.4.94/code/util/config.hpp0000644000175000017500000003015011531722663013505 00000000000000/* Gobby - GTK-based collaborative text editor * Copyright (C) 2008-2011 Armin Burgmeier * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GOBBY_CONFIG_HPP_ #define _GOBBY_CONFIG_HPP_ #include "serialize.hpp" #include #include #include #include #include // TODO: Use registry on windows, gconf with gnome #include #include namespace Gobby { class Config { public: /** @brief Abstract base class for configuration file entries. */ class Entry { public: Entry(const Glib::ustring& name); virtual ~Entry() {} /** @brief Saves this entry into the given element. */ virtual void save(xmlpp::Element& elem) const = 0; /** @brief Returns the name of this entry. */ const Glib::ustring& get_name() const; protected: Glib::ustring m_name; }; /** @brief Entry that contains a value. */ class ValueEntry: public Entry { public: /** @brief Stores an object of the given type into this * entry. */ template ValueEntry( const Glib::ustring& name, const DataType& value, const serialize::context_base_to& ctx = serialize::default_context_to() ); /** @brief Returns the value of this entry and tries to * convert it to the requested type. */ template DataType get( const serialize::context_base_from& ctx = serialize::default_context_from() ) const; protected: serialize::data m_data; }; /** Value entry with type information. Useful for future storage * backends like gconf or windows registry. */ template class TypedValueEntry: public ValueEntry { public: /** @brief Creates a new typed value entry that is converted * to a string using the given context. */ TypedValueEntry( const Glib::ustring& name, const DataType& value, const serialize::context_base_to& ctx = serialize::default_context_to() ); /** @brief Reads a value entry from a xml element. */ TypedValueEntry(const xmlpp::Element& elem); /** @brief Stores this entry into the given element. */ virtual void save(xmlpp::Element& elem) const; }; /** @brief Entry containing child entries. */ class ParentEntry: public Entry { protected: typedef std::map map_type; public: template class iterator_base { public: typedef BaseIterator base_iterator; iterator_base(const base_iterator& iter); iterator_base& operator++(); iterator_base operator++(int); bool operator==(const iterator_base& other) const; bool operator!=(const iterator_base& other) const; Entry& operator*() const; Entry* operator->() const; protected: base_iterator m_iter; }; typedef iterator_base iterator; typedef iterator_base const_iterator; /** @brief Creates a new ParentEntry of the given name with * no children. */ ParentEntry(const Glib::ustring& name); /** @brief a new ParentEntry from the given xml element. */ ParentEntry(const xmlpp::Element& elem); virtual ~ParentEntry(); /** @brief Stores this ParentEntry into the given xml element. */ virtual void save(xmlpp::Element& elem) const; /** @brief Returns a child entry with the given name. * * Returns NULL if there is no such child. */ Entry* get_child(const Glib::ustring& name); /** @brief Returns a child entry with the given name. * * Returns NULL if there is no such child. */ const Entry* get_child(const Glib::ustring& name) const; /** @brief Returns a child that is another parent entry * and has the given name. * * Returns NULL if there is no such child. */ ParentEntry* get_parent_child(const Glib::ustring& name); /** @brief Returns a child that is another parent entry * and has the given name. * * Returns NULL if there is no such child. */ const ParentEntry* get_parent_child(const Glib::ustring& name) const; /** @brief Returns a child that is a value entry and has * the given name. * * Returns NULL if there is no such child. */ ValueEntry* get_value_child(const Glib::ustring& name); /** @brief Returns a child that is a value entry and has * the given name. * * Returns NULL if there is no such child. */ const ValueEntry* get_value_child(const Glib::ustring& name) const; /** @brief: Returns whether there is a child ValueEntry with * the given name. */ bool has_value(const Glib::ustring& name); /** @brief Returns the value from the child with the given * name. * * If there is no such child (or it is not a ValueEntry), the * given default value is returned. */ template DataType get_value( const Glib::ustring& name, const DataType& default_value = DataType(), const serialize::context_base_from& ctx = serialize::default_context_from() ) const; /** @brief Returns the value from the child with the given * name. * * If there is no such child (or it is not a ValueEntry), a * new child will be created (replacing a potential old one) * and assigned the given default value. */ template DataType supply_value( const Glib::ustring& name, const DataType& default_value = DataType(), const serialize::context_base_from& ctx_from = serialize::default_context_from(), const serialize::context_base_to& ctx_to = serialize::default_context_to() ); /** @brief Creates a new child ValueEntry with the given name * and value. * * If there is already a child with this name, it will be * removed. */ template void set_value( const Glib::ustring& name, const DataType& value, const serialize::context_base_to& ctx = serialize::default_context_to() ); /** @brief Returns the parent entry at name. * * If there is no parent node, a new one will be created * that overwrites the current entry (if any). */ ParentEntry& operator[](const Glib::ustring& name); /** @brief Creates a new ParentEntry with the given name. * * If there is already a child with this name, it will be * removed. */ ParentEntry& set_parent(const Glib::ustring& name); /** @brief Returns an iterator to the beginning of the * child entry sequence. */ iterator begin(); /** @brief Returns an iterator to the beginning of the * child entry sequence. */ const_iterator begin() const; /** @brief Returns an iterator to the end of the child * entry sequence. */ iterator end(); /** @brief Returns an iterator to the end of the child * entry sequence. */ const_iterator end() const; protected: map_type m_map; }; Config(const Glib::ustring& file); ~Config(); ParentEntry& get_root(); const ParentEntry& get_root() const; protected: Glib::ustring m_filename; std::auto_ptr m_root; }; template Config::ValueEntry:: ValueEntry(const Glib::ustring& name, const DataType& value, const serialize::context_base_to& ctx): Entry(name), m_data(value, ctx) { } template DataType Config::ValueEntry:: get(const serialize::context_base_from& from) const { return m_data.Gobby::serialize::data::as(from); } template Config::TypedValueEntry:: TypedValueEntry(const Glib::ustring& name, const DataType& value, const serialize::context_base_to& ctx): ValueEntry(name, value, ctx) { } template Config::TypedValueEntry::TypedValueEntry(const xmlpp::Element& elem): ValueEntry(elem.get_name(), elem.get_child_text()->get_content() ) { } template void Config::TypedValueEntry::save(xmlpp::Element& elem) const { elem.set_child_text(m_data.serialized() ); } template Config::ParentEntry::iterator_base:: iterator_base(const base_iterator& iter): m_iter(iter) { } template Config::ParentEntry::iterator_base& Config::ParentEntry::iterator_base::operator++() { ++ m_iter; return *this; } template Config::ParentEntry::iterator_base Config::ParentEntry::iterator_base::operator++(int) { iterator_base temp(*this); ++ m_iter; return temp; } template bool Config::ParentEntry::iterator_base:: operator==(const iterator_base& other) const { return m_iter == other.m_iter; } template bool Config::ParentEntry::iterator_base:: operator!=(const iterator_base& other) const { return m_iter != other.m_iter; } template Entry& Config::ParentEntry::iterator_base:: operator*() const { return *m_iter->second; } template Entry* Config::ParentEntry::iterator_base:: operator->() const { return m_iter->second; } template DataType Config::ParentEntry:: get_value(const Glib::ustring& name, const DataType& default_value, const serialize::context_base_from& ctx) const { const ValueEntry* entry = get_value_child(name); if(entry == NULL) return default_value; return entry->ValueEntry::get(ctx); } template DataType Config::ParentEntry:: supply_value(const Glib::ustring& name, const DataType& default_value, const serialize::context_base_from& ctx_from, const serialize::context_base_to& ctx_to) { ValueEntry* entry = get_value_child(name); if(entry != NULL) return entry->get(ctx_from); set_value(name, default_value, ctx_to); return default_value; } template void Config::ParentEntry:: set_value(const Glib::ustring& name, const DataType& value, const serialize::context_base_to& ctx) { Entry* entry = get_child(name); if(entry != NULL) delete entry; m_map[name] = new TypedValueEntry(name, value, ctx); } namespace serialize { /** @brief Used to convert Gdk::Color to a string. */ template<> class default_context_to: public context_base_to { public: typedef Gdk::Color data_type; virtual std::string to_string(const data_type& from) const; }; /** @brief Used to convert a string to Gdk::Color. */ template<> class default_context_from: public context_base_from { public: typedef Gdk::Color data_type; virtual data_type from_string(const std::string& from) const; }; template<> class default_context_to: public context_base_to { public: typedef Glib::ustring data_type; virtual std::string to_string(const data_type& from) const; }; template<> class default_context_from: public context_base_from { public: typedef Glib::ustring data_type; virtual data_type from_string(const std::string& from) const; }; } // namespace serialize } // namespace Gobby #endif // _GOBBY_CONFIG_HPP_ gobby-0.4.94/code/util/config.cpp0000644000175000017500000001626411531722663013512 00000000000000/* Gobby - GTK-based collaborative text editor * Copyright (C) 2008-2011 Armin Burgmeier * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "util/config.hpp" #include "util/file.hpp" #include "util/i18n.hpp" #include #include #include #include #include #include namespace { template typename Map::mapped_type ptrmap_find(const Map& map, const typename Map::key_type& key) { typename Map::const_iterator iter = map.find(key); if(iter == map.end() ) return NULL; return iter->second; } } Gobby::Config::Entry::Entry(const Glib::ustring& name): m_name(name) { } const Glib::ustring& Gobby::Config::Entry::get_name() const { return m_name; } Gobby::Config::ParentEntry::ParentEntry(const Glib::ustring& name): Entry(name) { } Gobby::Config::ParentEntry::ParentEntry(const xmlpp::Element& elem): Entry(elem.get_name() ) { xmlpp::Node::NodeList list = elem.get_children(); for(xmlpp::Node::NodeList::iterator iter = list.begin(); iter != list.end(); ++ iter) { xmlpp::Element* child = dynamic_cast(*iter); if(child == NULL) continue; if(child->get_child_text() && !child->get_child_text()->is_white_space()) { ValueEntry* entry = new TypedValueEntry( *child ); m_map[child->get_name()] = entry; } else { m_map[child->get_name()] = new ParentEntry(*child); } } } Gobby::Config::ParentEntry::~ParentEntry() { for(map_type::iterator iter = m_map.begin(); iter != m_map.end(); ++ iter) { delete iter->second; } } void Gobby::Config::ParentEntry::save(xmlpp::Element& elem) const { for(map_type::const_iterator iter = m_map.begin(); iter != m_map.end(); ++ iter) { Entry* entry = iter->second; xmlpp::Element* child = elem.add_child(entry->get_name() ); entry->save(*child); } } Gobby::Config::Entry* Gobby::Config::ParentEntry:: get_child(const Glib::ustring& name) { return ptrmap_find(m_map, name); } const Gobby::Config::Entry* Gobby::Config::ParentEntry:: get_child(const Glib::ustring& name) const { return ptrmap_find(m_map, name); } Gobby::Config::ParentEntry* Gobby::Config::ParentEntry:: get_parent_child(const Glib::ustring& name) { return dynamic_cast(get_child(name) ); } const Gobby::Config::ParentEntry* Gobby::Config::ParentEntry:: get_parent_child(const Glib::ustring& name) const { return dynamic_cast(get_child(name) ); } Gobby::Config::ValueEntry* Gobby::Config::ParentEntry:: get_value_child(const Glib::ustring& name) { return dynamic_cast(get_child(name) ); } const Gobby::Config::ValueEntry* Gobby::Config::ParentEntry:: get_value_child(const Glib::ustring& name) const { return dynamic_cast(get_child(name) ); } bool Gobby::Config::ParentEntry::has_value(const Glib::ustring& name) { return get_value_child(name) != NULL; } Gobby::Config::ParentEntry& Gobby::Config::ParentEntry:: operator[](const Glib::ustring& name) { ParentEntry* entry = get_parent_child(name); if(entry != NULL) return *entry; return set_parent(name); } Gobby::Config::ParentEntry& Gobby::Config::ParentEntry:: set_parent(const Glib::ustring& name) { Entry* entry = get_child(name); if(entry != NULL) delete entry; ParentEntry* child = new ParentEntry(name); m_map[name] = child; return *child; } Gobby::Config::ParentEntry::iterator Gobby::Config::ParentEntry::begin() { return iterator(m_map.begin() ); } Gobby::Config::ParentEntry::const_iterator Gobby::Config::ParentEntry:: begin() const { return const_iterator(m_map.begin() ); } Gobby::Config::ParentEntry::iterator Gobby::Config::ParentEntry::end() { return iterator(m_map.end() ); } Gobby::Config::ParentEntry::const_iterator Gobby::Config::ParentEntry:: end() const { return const_iterator(m_map.end() ); } Gobby::Config::Config(const Glib::ustring& file): m_filename(file) { xmlpp::DomParser parser; if(!Glib::file_test(file, Glib::FILE_TEST_IS_REGULAR)) { m_root.reset(new ParentEntry("gobby-config") ); return; } try { parser.parse_file(file); } catch(xmlpp::exception& e) { // Empty config m_root.reset(new ParentEntry("gobby-config") ); return; } xmlpp::Document* document = parser.get_document(); if(document == NULL) { m_root.reset(new ParentEntry("gobby-config") ); return; } xmlpp::Element* root = document->get_root_node(); // Config is present, but contains no root node if(root == NULL) { m_root.reset(new ParentEntry("gobby-config") ); return; } m_root.reset(new ParentEntry(*root) ); } Gobby::Config::~Config() { xmlpp::Document document; xmlpp::Element* root = document.create_root_node("gobby-config"); m_root->save(*root); try { Glib::ustring dirname = Glib::path_get_dirname(m_filename); create_directory_with_parents(dirname); document.write_to_file_formatted(m_filename, "UTF-8"); } catch(Glib::Exception& e) { g_warning("Could not write config file: %s", e.what().c_str() ); } catch(std::exception& e) { g_warning("Could not write config file: %s", e.what() ); } } Gobby::Config::ParentEntry& Gobby::Config::get_root() { return *m_root; } const Gobby::Config::ParentEntry& Gobby::Config::get_root() const { return *m_root; } std::string Gobby::serialize::default_context_to:: to_string(const data_type& from) const { unsigned int red = from.get_red() * 255 / 65535; unsigned int green = from.get_green() * 255 / 65535; unsigned int blue = from.get_blue() * 255 / 65535; std::stringstream stream; stream << std::hex << ( (red << 16) | (green << 8) | blue); return stream.str(); } Gobby::serialize::default_context_from::data_type Gobby::serialize::default_context_from:: from_string(const std::string& from) const { unsigned int rgb_color; std::stringstream stream(from); stream >> std::hex >> rgb_color; if(stream.bad() ) { throw conversion_error( from + " should be hexadecimal color triple" ); } Gdk::Color color; color.set_red( ((rgb_color >> 16) & 0xff) * 65535 / 255); color.set_green( ((rgb_color >> 8) & 0xff) * 65535 / 255); color.set_blue( ((rgb_color) & 0xff) * 65535 / 255); return color; } std::string Gobby::serialize::default_context_to:: to_string(const data_type& from) const { return from; } Gobby::serialize::default_context_from::data_type Gobby::serialize::default_context_from:: from_string(const std::string& from) const { return from; } gobby-0.4.94/code/util/gtk-compat.hpp0000644000175000017500000001256611531722663014321 00000000000000/* Gobby - GTK-based collaborative text editor * Copyright (C) 2008-2011 Armin Burgmeier * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GOBBY_GTK_COMPAT_HPP_ #define _GOBBY_GTK_COMPAT_HPP_ #include #if GTKMM_MAJOR_VERSION == 3 || \ (GTKMM_MAJOR_VERSION == 2 && GTKMM_MINOR_VERSION >= 90) # define USE_GTKMM3 #endif #include #include #ifndef USE_GTKMM3 #include #include #endif #include #if !GTK_CHECK_VERSION(2,22,0) #define GDK_KEY_Up GDK_Up #define GDK_KEY_Down GDK_Down #define GDK_KEY_Page_Up GDK_Page_Up #define GDK_KEY_Page_Down GDK_Page_Down #define GDK_KEY_0 GDK_0 #define GDK_KEY_1 GDK_1 #define GDK_KEY_2 GDK_2 #define GDK_KEY_3 GDK_3 #define GDK_KEY_4 GDK_4 #define GDK_KEY_5 GDK_5 #define GDK_KEY_6 GDK_6 #define GDK_KEY_7 GDK_7 #define GDK_KEY_8 GDK_8 #define GDK_KEY_9 GDK_9 #define GDK_KEY_m GDK_m #define GDK_KEY_z GDK_z #define GDK_KEY_Z GDK_Z #endif namespace Gobby { namespace GtkCompat { #ifdef USE_GTKMM3 class ComboBoxEntry: public Gtk::ComboBox { public: ComboBoxEntry(): Gtk::ComboBox(true) {} void set_text_column(const Gtk::TreeModelColumnBase& column) { set_entry_text_column(column); } }; #else typedef Gtk::ComboBoxEntry ComboBoxEntry; #endif #ifdef USE_GTKMM3 static const Gtk::Align ALIGN_LEFT = Gtk::ALIGN_START; static const Gtk::Align ALIGN_RIGHT = Gtk::ALIGN_END; static const Gtk::Align ALIGN_TOP = Gtk::ALIGN_START; #else static const Gtk::AlignmentEnum ALIGN_LEFT = Gtk::ALIGN_LEFT; static const Gtk::AlignmentEnum ALIGN_RIGHT = Gtk::ALIGN_RIGHT; static const Gtk::AlignmentEnum ALIGN_TOP = Gtk::ALIGN_TOP; #endif inline bool is_realized(const Gtk::Widget& widget) { #ifdef USE_GTKMM3 return widget.get_realized(); #else return (widget.get_flags() & Gtk::REALIZED) != 0; #endif } inline bool is_visible(const Gtk::Widget& widget) { #ifdef USE_GTKMM3 return widget.get_visible(); #else return widget.is_visible(); #endif } #ifndef USE_GTKMM3 class Notebook: public Gtk::Notebook { protected: virtual void on_switch_page(GtkNotebookPage* page, guint page_num) { Gtk::Notebook::on_switch_page(page, page_num); on_switch_page(get_nth_page(page_num), page_num); } virtual void on_switch_page(Gtk::Widget* page, guint page_num) {} }; #else typedef Gtk::Notebook Notebook; #endif inline Glib::RefPtr render_icon(Gtk::Widget& widget, const Gtk::StockID& stock_id, Gtk::IconSize size) { #ifdef USE_GTKMM3 return widget.render_icon_pixbuf(stock_id, size); #else return widget.render_icon(stock_id, size); #endif } #ifdef USE_GTKMM3 typedef GtkTextSearchFlags TextSearchFlags; static const TextSearchFlags TEXT_SEARCH_CASE_INSENSITIVE = GTK_TEXT_SEARCH_CASE_INSENSITIVE; #else typedef GtkSourceSearchFlags TextSearchFlags; static const TextSearchFlags TEXT_SEARCH_CASE_INSENSITIVE = GTK_SOURCE_SEARCH_CASE_INSENSITIVE; #endif inline gboolean text_iter_forward_search(const GtkTextIter* iter, const gchar* str, TextSearchFlags flags, GtkTextIter* match_start, GtkTextIter* match_end, const GtkTextIter* limit) { #ifdef USE_GTKMM3 return gtk_text_iter_forward_search(iter, str, flags, match_start, match_end, limit); #else return gtk_source_iter_forward_search(iter, str, flags, match_start, match_end, limit); #endif } inline gboolean text_iter_backward_search(const GtkTextIter* iter, const gchar* str, TextSearchFlags flags, GtkTextIter* match_start, GtkTextIter* match_end, const GtkTextIter* limit) { #ifdef USE_GTKMM3 return gtk_text_iter_backward_search(iter, str, flags, match_start, match_end, limit); #else return gtk_source_iter_backward_search(iter, str, flags, match_start, match_end, limit); #endif } #ifdef USE_GTKMM3 typedef Glib::RefPtr IconSet; inline IconSet create_icon_set() { return Gtk::IconSet::create(); } #else class IconSet: public Gtk::IconSet { public: IconSet* operator->() { return this; } const IconSet* operator->() const { return this; } }; inline IconSet create_icon_set() { return IconSet(); } #endif } // namespace GtkCompat } // namespace Gobby #endif // _GOBBY_GTK_COMPAT_HPP_ gobby-0.4.94/code/util/closebutton.hpp0000644000175000017500000000216711531722663014610 00000000000000/* Gobby - GTK-based collaborative text editor * Copyright (C) 2008-2011 Armin Burgmeier * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GOBBY_CLOSEBUTTON_HPP_ #define _GOBBY_CLOSEBUTTON_HPP_ #include namespace Gobby { class CloseButton: public Gtk::Button { public: CloseButton(); protected: virtual void on_style_changed( const Glib::RefPtr& previous_style); }; } // namespace Gobby #endif // _GOBBY_CLOSEBUTTON_HPP_ gobby-0.4.94/code/util/i18n.hpp0000644000175000017500000000232211531722663013017 00000000000000/* Gobby - GTK-based collaborative text editor * Copyright (C) 2008-2011 Armin Burgmeier * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GOBBY_I18N_HPP_ #define _GOBBY_I18N_HPP_ #ifndef N_ # define N_(id) (id) #endif namespace Gobby { /** Translates a message from the gobby catalog. */ const char* _(const char* msgid); /** Translate pluralized message from the gobby catalog. */ const char* ngettext(const char* msgid, const char* msgid_plural, unsigned long int n); } #endif // _GOBBY_I18N_HPP_ gobby-0.4.94/code/util/Makefile.in0000644000175000017500000003717211543672413013607 00000000000000# 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@ subdir = code/util DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = $(top_builddir)/code/features.hpp CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = LIBRARIES = $(noinst_LIBRARIES) AR = ar ARFLAGS = cru AM_V_AR = $(am__v_AR_$(V)) am__v_AR_ = $(am__v_AR_$(AM_DEFAULT_VERBOSITY)) am__v_AR_0 = @echo " AR " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ libgobby_util_a_AR = $(AR) $(ARFLAGS) libgobby_util_a_LIBADD = am_libgobby_util_a_OBJECTS = closebutton.$(OBJEXT) color.$(OBJEXT) \ config.$(OBJEXT) file.$(OBJEXT) historyentry.$(OBJEXT) \ i18n.$(OBJEXT) resolv.$(OBJEXT) serialize.$(OBJEXT) libgobby_util_a_OBJECTS = $(am_libgobby_util_a_OBJECTS) DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/code depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) AM_V_CXX = $(am__v_CXX_$(V)) am__v_CXX_ = $(am__v_CXX_$(AM_DEFAULT_VERBOSITY)) am__v_CXX_0 = @echo " CXX " $@; CXXLD = $(CXX) CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \ -o $@ AM_V_CXXLD = $(am__v_CXXLD_$(V)) am__v_CXXLD_ = $(am__v_CXXLD_$(AM_DEFAULT_VERBOSITY)) am__v_CXXLD_0 = @echo " CXXLD " $@; AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; SOURCES = $(libgobby_util_a_SOURCES) DIST_SOURCES = $(libgobby_util_a_SOURCES) HEADERS = $(noinst_HEADERS) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALL_LINGUAS = @ALL_LINGUAS@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@ DOC_USER_FORMATS = @DOC_USER_FORMATS@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GMOFILES = @GMOFILES@ GMSGFMT = @GMSGFMT@ GREP = @GREP@ HELP_DIR = @HELP_DIR@ 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@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MKINSTALLDIRS = @MKINSTALLDIRS@ MSGFMT = @MSGFMT@ MSGFMT_OPTS = @MSGFMT_OPTS@ MSGMERGE = @MSGMERGE@ OBJEXT = @OBJEXT@ OMF_DIR = @OMF_DIR@ 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@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ WINDRES = @WINDRES@ 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_CXX = @ac_ct_CXX@ 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@ gobby_CFLAGS = @gobby_CFLAGS@ gobby_LIBS = @gobby_LIBS@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infinote_CFLAGS = @infinote_CFLAGS@ infinote_LIBS = @infinote_LIBS@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ 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@ unique_CFLAGS = @unique_CFLAGS@ unique_LIBS = @unique_LIBS@ noinst_LIBRARIES = libgobby-util.a libgobby_util_a_SOURCES = \ closebutton.cpp \ color.cpp \ config.cpp \ file.cpp \ historyentry.cpp \ i18n.cpp \ resolv.cpp \ serialize.cpp noinst_HEADERS = \ closebutton.hpp \ color.hpp \ config.hpp \ defaultaccumulator.hpp \ file.hpp \ gtk-compat.hpp \ historyentry.hpp \ i18n.hpp \ resolv.hpp \ serialize.hpp AM_CPPFLAGS = $(gobby_CFLAGS) $(unique_CFLAGS) $(infinote_CFLAGS) \ -I$(top_srcdir)/code all: all-am .SUFFIXES: .SUFFIXES: .cpp .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(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) --gnu code/util/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu code/util/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: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstLIBRARIES: -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) libgobby-util.a: $(libgobby_util_a_OBJECTS) $(libgobby_util_a_DEPENDENCIES) $(AM_V_at)-rm -f libgobby-util.a $(AM_V_AR)$(libgobby_util_a_AR) libgobby-util.a $(libgobby_util_a_OBJECTS) $(libgobby_util_a_LIBADD) $(AM_V_at)$(RANLIB) libgobby-util.a mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/closebutton.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/color.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/config.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/file.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/historyentry.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/i18n.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/resolv.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/serialize.Po@am__quote@ .cpp.o: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $< .cpp.obj: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags 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 $(LIBRARIES) $(HEADERS) installdirs: 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-noinstLIBRARIES mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: 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 -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-noinstLIBRARIES ctags distclean distclean-compile \ distclean-generic distclean-tags 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-ps install-ps-am install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \ uninstall-am # 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: gobby-0.4.94/code/util/resolv.cpp0000644000175000017500000000774611531722663013564 00000000000000/* Gobby - GTK-based collaborative text editor * Copyright (C) 2008-2011 Armin Burgmeier * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "util/resolv.hpp" #include #include #ifdef G_OS_WIN32 # include /* We need to include wspiapi.h to support getaddrinfo on Windows 2000. * See the MSDN article for getaddrinfo * http://msdn.microsoft.com/en-us/library/ms738520(VS.85).aspx * and bug #425. */ # include #else # include # include # include /* Required for FreeBSD. See bug #431. */ # include #endif struct Gobby::ResolvHandle { Glib::ustring hostname; Glib::ustring service; SlotResolvDone slot_done; SlotResolvError slot_error; bool cancel; }; namespace { using namespace Gobby; bool on_done(ResolvHandle* handle, InfIpAddress* address, guint port) { std::auto_ptr auto_handle(handle); if(!handle->cancel) handle->slot_done(handle, address, port); inf_ip_address_free(address); return false; } bool on_error(ResolvHandle* handle, int errcode) { std::auto_ptr auto_handle(handle); if(!handle->cancel) { std::runtime_error error(gai_strerror(errcode)); handle->slot_error(handle, error); } return false;; } void on_resolv_thread(ResolvHandle* handle) { addrinfo hint; #ifdef AI_ADDRCONFIG hint.ai_flags = AI_ADDRCONFIG; #else hint.ai_flags = 0; #endif hint.ai_family = AF_UNSPEC; hint.ai_socktype = SOCK_STREAM; hint.ai_protocol = 0; hint.ai_addrlen = 0; hint.ai_canonname = NULL; hint.ai_addr = NULL; hint.ai_next = NULL; addrinfo* res = NULL; int val = getaddrinfo(handle->hostname.c_str(), handle->service.c_str(), &hint, &res); if(val != 0) { g_assert(res == NULL); Glib::signal_idle().connect( sigc::bind(sigc::ptr_fun(&on_error), handle, val)); } else { g_assert(res != NULL); InfIpAddress* addr; guint port; switch(res->ai_family) { case AF_INET: addr = inf_ip_address_new_raw4( reinterpret_cast( res->ai_addr) ->sin_addr.s_addr); port = ntohs( reinterpret_cast( res->ai_addr)->sin_port); break; case AF_INET6: addr = inf_ip_address_new_raw6( reinterpret_cast( res->ai_addr) ->sin6_addr.s6_addr); port = ntohs( reinterpret_cast( res->ai_addr)->sin6_port); break; default: g_assert_not_reached(); break; } freeaddrinfo(res); Glib::signal_idle().connect( sigc::bind(sigc::ptr_fun(&on_done), handle, addr, port)); } } } Gobby::ResolvHandle* Gobby::resolve(const Glib::ustring& hostname, const Glib::ustring& service, const SlotResolvDone& slot_done, const SlotResolvError& slot_error) { std::auto_ptr handle(new ResolvHandle); handle->hostname = hostname; handle->service = service; handle->slot_done = slot_done; handle->slot_error = slot_error; handle->cancel = false; Glib::Thread::create( sigc::bind(sigc::ptr_fun(on_resolv_thread), handle.get()), false); return handle.release(); } void Gobby::cancel(ResolvHandle* handle) { handle->cancel = TRUE; } gobby-0.4.94/code/util/color.cpp0000644000175000017500000000655611531722663013366 00000000000000/* Gobby - GTK-based collaborative text editor * Copyright (C) 2008-2011 Armin Burgmeier * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "util/color.hpp" namespace { void hsv_to_rgb(double* h, double* s, double* v) { double hue, saturation, value; double f, p, q, t; if (*s == 0.0) { *h = *v; *s = *v; *v = *v; /* heh */ } else { hue = *h * 6.0; saturation = *s; value = *v; if (hue == 6.0) hue = 0.0; f = hue - (int) hue; p = value * (1.0 - saturation); q = value * (1.0 - saturation * f); t = value * (1.0 - saturation * (1.0 - f)); switch ((int) hue) { case 0: *h = value; *s = t; *v = p; break; case 1: *h = q; *s = value; *v = p; break; case 2: *h = p; *s = value; *v = t; break; case 3: *h = p; *s = q; *v = value; break; case 4: *h = t; *s = p; *v = value; break; case 5: *h = value; *s = p; *v = q; break; default: g_assert_not_reached (); break; } } } void rgb_to_hsv(double* r, double* g, double* b) { double red, green, blue; double h, s, v; double min, max; double delta; red = *r; green = *g; blue = *b; h = 0.0; if (red > green) { if (red > blue) max = red; else max = blue; if (green < blue) min = green; else min = blue; } else { if (green > blue) max = green; else max = blue; if (red < blue) min = red; else min = blue; } v = max; if (max != 0.0) s = (max - min) / max; else s = 0.0; if (s == 0.0) h = 0.0; else { delta = max - min; if (red == max) h = (green - blue) / delta; else if (green == max) h = 2 + (blue - red) / delta; else if (blue == max) h = 4 + (red - green) / delta; h /= 6.0; if (h < 0.0) h += 1.0; else if (h > 1.0) h -= 1.0; } *r = h; *g = s; *b = v; } } namespace Gobby { void hsv_to_rgb(double& rh, double &gs, double &gv) { ::hsv_to_rgb(&rh, &gs, &gv); } void rgb_to_hsv(double &rh, double &gs, double &gv) { ::rgb_to_hsv(&rh, &gs, &gv); } double hue_from_gdk_color(const Gdk::Color& color) { double r = color.get_red() / 65535.0; double g = color.get_green() / 65535.0; double b = color.get_blue() / 65535.0; ::rgb_to_hsv(&r, &g, &b); return r; } Gdk::Color hue_to_gdk_color(double hue, double saturation, double value) { ::hsv_to_rgb(&hue, &saturation, &value); Gdk::Color color; color.set_red(static_cast(hue * 65535.0)); color.set_green(static_cast(saturation * 65535.0)); color.set_blue(static_cast(value * 65535.0)); return color; } } gobby-0.4.94/code/util/defaultaccumulator.hpp0000644000175000017500000000262211531722663016127 00000000000000/* Gobby - GTK-based collaborative text editor * Copyright (C) 2008-2011 Armin Burgmeier * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GOBBY_DEFAULT_ACCUMULATOR_HPP_ #define _GOBBY_DEFAULT_ACCUMULATOR_HPP_ namespace Gobby { /** Accumulator for signals with return type that defaults to a value if no * signal handler is connected. */ template class default_accumulator { public: typedef return_type result_type; template result_type operator()(iterator begin, iterator end) const { return_type result = default_return; for(; begin != end; ++ begin) result = *begin; return result; } }; } // namespace Gobby #endif // _GOBBY_DEFAULT_ACCUMULATOR_HPP_ gobby-0.4.94/code/util/file.cpp0000644000175000017500000000517311531722663013161 00000000000000/* Gobby - GTK-based collaborative text editor * Copyright (C) 2008-2011 Armin Burgmeier * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "util/file.hpp" #include "util/i18n.hpp" #include #include #include #include // For mkdir / CreateDirectory #ifdef WIN32 #include #else #include #include #include #endif namespace { void create_directory(const char* path) { #ifdef WIN32 // TODO: Use widechar API? if(CreateDirectoryA(path, NULL) == FALSE) { LPVOID msgbuf; DWORD err = GetLastError(); // TODO: Use widechar API? FormatMessageA( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM, NULL, err, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), reinterpret_cast(&msgbuf), 0, NULL ); std::string error_message = static_cast(msgbuf); LocalFree(msgbuf); // TODO: Convert to UTF-8? throw std::runtime_error( Glib::ustring::compose( Gobby::_("Could not create directory " "\"%1\": %2"), std::string(path), error_message)); } #else if(g_mkdir(path, 0755) == -1) { throw std::runtime_error( Glib::ustring::compose( Gobby::_("Could not create directory " "\"%1\": %2"), std::string(path), std::strerror(errno))); } #endif } } namespace Gobby { void create_directory_with_parents(const std::string& path) { // Directory exists, nothing to do if(Glib::file_test(path, Glib::FILE_TEST_IS_DIR) ) return; // Find path to the directory to create std::string path_to = Glib::path_get_dirname(path); // Create this path, if it doesn't exists create_directory_with_parents(path_to); // Create new directory create_directory(path.c_str() ); } std::string config_filename(const std::string& filename) { return Glib::build_filename( Glib::build_filename( Glib::get_user_config_dir(), "gobby"), filename); } } gobby-0.4.94/code/util/i18n.cpp0000644000175000017500000000224311531722663013014 00000000000000/* Gobby - GTK-based collaborative text editor * Copyright (C) 2008-2011 Armin Burgmeier * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "features.hpp" #include "util/i18n.hpp" #include const char* Gobby::_(const char* msgid) { return dgettext(GETTEXT_PACKAGE, msgid); } const char* Gobby::ngettext(const char* msgid, const char* msgid_plural, unsigned long int n) { return dngettext(GETTEXT_PACKAGE, msgid, msgid_plural, n); } gobby-0.4.94/code/util/file.hpp0000644000175000017500000000203211531722663013155 00000000000000/* Gobby - GTK-based collaborative text editor * Copyright (C) 2008-2011 Armin Burgmeier * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GOBBY_DIR_HPP_ #define _GOBBY_DIR_HPP_ #include namespace Gobby { void create_directory_with_parents(const std::string& path); std::string config_filename(const std::string& filename); } #endif // _GOBBY_DIR_HPP_ gobby-0.4.94/code/util/resolv.hpp0000644000175000017500000000274111531722663013557 00000000000000/* Gobby - GTK-based collaborative text editor * Copyright (C) 2008-2011 Armin Burgmeier * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GOBBY_RESOLV_HPP_ #define _GOBBY_RESOLV_HPP_ #include #include #include #include #include namespace Gobby { struct ResolvHandle; typedef sigc::slot SlotResolvDone; typedef sigc::slot SlotResolvError; ResolvHandle* resolve(const Glib::ustring& hostname, const Glib::ustring& service, const SlotResolvDone& done_slot, const SlotResolvError& error_slot); void cancel(ResolvHandle* handle); } #endif // _GOBBY_RESOLV_HPP_ gobby-0.4.94/code/util/serialize.hpp0000644000175000017500000001631611531722663014237 00000000000000/* Gobby - GTK-based collaborative text editor * Copyright (C) 2008-2011 Armin Burgmeier * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GOBBY_SERIALIZE_HPP_ #define _GOBBY_SERIALIZE_HPP_ #include #include #include namespace Gobby { /** Generic stuff to de/serialize data types to/from strings. */ namespace serialize { /** Error that is thrown if conversion from a string fails. For example, if * "t3" should be converted to int. */ class conversion_error: public std::runtime_error { public: conversion_error(const std::string& message); }; /** @brief Several built-in type names. */ template struct type_name {}; template<> struct type_name { static const char* name; }; template<> struct type_name { static const char* name; }; template<> struct type_name { static const char* name; }; template<> struct type_name { static const char* name; }; template<> struct type_name { static const char* name; }; template<> struct type_name { static const char* name; }; template<> struct type_name { static const char* name; }; template<> struct type_name { static const char* name; }; template<> struct type_name { static const char* name; }; template<> struct type_name { static const char* name; }; template<> struct type_name { static const char* name; }; template<> struct type_name { static const char* name; }; /** Abstract base context type to convert something to a string. */ template class context_base_to { public: virtual ~context_base_to() {} /** @brief Converts the given data type to a string. */ virtual std::string to_string(const data_type& from) const = 0; }; /** Abstract base context type to convert a string to another type. */ template class context_base_from { public: virtual ~context_base_from() {} /** @brief Converts a string to a data type. Might throw * serialize::conversion_error. */ virtual data_type from_string(const std::string& from) const = 0; }; /** Default context to convert something literally to a string. */ template class default_context_to: public context_base_to { public: /** @brief Converts the given data type to a string. */ virtual std::string to_string(const data_type& from) const; protected: /** Method derived classes may overload to alter the conversion. */ virtual void on_stream_setup(std::stringstream& stream) const; }; /** Default context to convert a string literally to a type. */ template class default_context_from: public context_base_from { public: /** @brief Converts the given string to the type specified * as template parameter. * * May throw serialize::conversion_error(). */ virtual data_type from_string(const std::string& from) const; protected: /** Method derived classes may overload to alter the conversion. */ virtual void on_stream_setup(std::stringstream& stream) const; }; #if 0 /** Context that uses hexadecimal representation for numerical types. */ template class hex_context_to: public default_context_to { protected: virtual void on_stream_setup(std::stringstream& stream) const; }; /** Context that uses hexadecimal representation for numerical types. */ template class hex_context_from: public default_context_from { public: virtual void on_stream_setup(std::stringstream& stream) const; }; #endif template<> class default_context_to: public context_base_to { public: typedef std::string data_type; virtual std::string to_string(const data_type& from) const; }; template<> class default_context_from: public context_base_from { public: typedef std::string data_type; virtual data_type from_string(const std::string& from) const; }; template<> class default_context_to: public context_base_to { public: typedef const char* data_type; virtual std::string to_string(const data_type& from) const; }; template class default_context_to: public context_base_to { public: typedef char data_type[N]; virtual std::string to_string(const data_type& from) const; }; /** A serialized object. */ class data { public: /** Uses the given string as serialized data without converting it. */ data(const std::string& serialized); /** Serialises the given object with the given context. A default * context is used if no one is given. */ template data(const type& data, const context_base_to& ctx = default_context_to()); /** Returns the serialized data. */ const std::string& serialized() const; /** Deserializes the object with the given context. A default context * is used of no one is given. */ template type as(const context_base_from& ctx = default_context_from()) const; protected: std::string m_serialized; }; template std::string default_context_to:: to_string(const data_type& from) const { std::stringstream stream; on_stream_setup(stream); stream << from; return stream.str(); } template data_type default_context_from:: from_string(const std::string& from) const { std::stringstream stream(from); on_stream_setup(stream); data_type data; stream >> data; if(stream.bad() ) { throw conversion_error( "Could not convert \"" + from + "\" to " + type_name::name ); } return data; } template void default_context_to:: on_stream_setup(std::stringstream& stream) const { } template void default_context_from:: on_stream_setup(std::stringstream& stream) const { } #if 0 template void hex_context_to:: on_stream_setup(std::stringstream& stream) const { stream << std::hex; } template void hex_context_from:: on_stream_setup(std::stringstream& stream) const { stream >> std::hex; } #endif template data::data(const data_type& data, const context_base_to& ctx): m_serialized(ctx.to_string(data) ) { } template data_type data::as(const context_base_from& ctx) const { return ctx.from_string(m_serialized); } template std::string default_context_to:: to_string(const data_type& from) const { return from; } } // namespace serialize } // namespace Gobby #endif // _GOBBY_SERIALIZE_HPP_ gobby-0.4.94/code/util/historyentry.cpp0000644000175000017500000001755611531722663015035 00000000000000/* Gobby - GTK-based collaborative text editor * Copyright (C) 2008-2011 Armin Burgmeier * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "util/historyentry.hpp" #include #include // Load history asynchronously, to save startup time class Gobby::History::Loader { public: Loader(History& history); private: void close(); void add(const std::string& str); void process(unsigned int size); void on_read(const Glib::RefPtr& result); void on_stream_read(const Glib::RefPtr& result); History& m_history; Glib::RefPtr m_file; Glib::RefPtr m_stream; std::string m_line; static const unsigned int BUFFER_SIZE = 1024; char m_buffer[BUFFER_SIZE]; }; Gobby::History::Loader::Loader(History& history): m_history(history) { m_file = Gio::File::create_for_path(m_history.m_history_file); m_file->read_async(sigc::mem_fun(*this, &Loader::on_read)); } void Gobby::History::Loader::close() { m_history.m_loader.reset(NULL); } void Gobby::History::Loader::add(const std::string& str) { if(!str.empty()) { Gtk::TreeIter iter = m_history.m_history->append(); (*iter)[m_history.m_history_columns.text] = str; } } void Gobby::History::Loader::process(unsigned int size) { const char* pos = m_buffer; const char* end = m_buffer + size; const char* next; const Gtk::TreeNodeChildren& children = m_history.m_history->children(); while((next = std::find(pos, end, '\n')) != end) { if(!m_line.empty()) { add(m_line + std::string(pos, next - pos)); m_line.clear(); } else { add(std::string(pos, next - pos)); } if(children.size() == m_history.m_length) break; pos = next + 1; } if(children.size() == m_history.m_length) { close(); } else { m_line.append(pos, end - pos); m_stream->read_async( m_buffer, BUFFER_SIZE, sigc::mem_fun(*this, &Loader::on_stream_read)); } } void Gobby::History::Loader::on_read( const Glib::RefPtr& result) { try { m_stream = m_file->read_finish(result); m_stream->read_async( m_buffer, BUFFER_SIZE, sigc::mem_fun(*this, &Loader::on_stream_read)); } catch(const Glib::Exception& ex) { close(); } } void Gobby::History::Loader::on_stream_read( const Glib::RefPtr& result) { gssize size; try { size = m_stream->read_finish(result); // This should have caused an exception g_assert(size >= 0); if(size == 0) { // EOF if(!m_line.empty()) add(m_line); close(); } else { process(size); } } catch(const Glib::Exception& ex) { close(); } } Gobby::History::History(const std::string& history_file, unsigned int length): m_length(length), m_history(Gtk::ListStore::create(m_history_columns)), m_current(m_history->children().end()), m_history_file(history_file), m_loader(new Loader(*this)) { } Gobby::History::History(unsigned int length): m_length(length), m_history(Gtk::ListStore::create(m_history_columns)), m_current(m_history->children().end()) { } Gobby::History::~History() { try { if(!m_history_file.empty()) { Glib::RefPtr file = Gio::File::create_for_path(m_history_file); Glib::RefPtr stream = file->replace(); const Gtk::TreeNodeChildren& children = m_history->children(); for(Gtk::TreeIter iter = children.begin(); iter != children.end(); ++ iter) { const Glib::ustring& str = (*iter)[m_history_columns.text]; gsize bytes_written; stream->write_all(str, bytes_written); g_assert(bytes_written == str.length()); stream->write_all("\n", bytes_written); g_assert(bytes_written == 1); } } } catch(const Glib::Exception& error) { // Ignore } } Glib::RefPtr Gobby::History::get_store() { return m_history; } const Gobby::History::Columns& Gobby::History::get_columns() const { return m_history_columns; } bool Gobby::History::up(const Glib::ustring& current, Glib::ustring& entry) { if(m_current == m_history->children().end()) { m_current = m_history->children().begin(); // No entries in list: if(m_current == m_history->children().end()) return false; if(!current.empty()) commit_noscroll(current); } else { ++ m_current; if(m_current == m_history->children().end()) { -- m_current; return false; } } entry = (*m_current)[m_history_columns.text]; return true; } bool Gobby::History::down(const Glib::ustring& current, Glib::ustring& entry) { if(m_current == m_history->children().end()) { if(!current.empty()) { entry.clear(); commit_noscroll(current); return true; } else { return false; } } if(m_current == m_history->children().begin()) { m_current = m_history->children().end(); entry.clear(); return true; } -- m_current; entry = (*m_current)[m_history_columns.text]; return true; } void Gobby::History::commit(const Glib::ustring& str) { commit_noscroll(str); m_current = m_history->children().end(); } void Gobby::History::commit_noscroll(const Glib::ustring& str) { if(m_history->children().begin() == m_history->children().end() || (*m_history->children().begin())[m_history_columns.text] != str) { Gtk::TreeIter iter = m_history->prepend(); (*iter)[m_history_columns.text] = str; while(m_history->children().size() > m_length) { iter = m_history->children().end(); -- iter; m_history->erase(iter); } } } Gobby::HistoryEntry::HistoryEntry(const std::string& history_file, unsigned int length): m_history(history_file, length) { } Gobby::HistoryEntry::HistoryEntry(unsigned int length): m_history(length) { } void Gobby::HistoryEntry::commit() { m_history.commit(get_text()); } bool Gobby::HistoryEntry::on_key_press_event(GdkEventKey* event) { Glib::ustring entry; if(event->keyval == GDK_KEY_Up) { if(m_history.up(get_text(), entry)) set_text(entry); return true; } if(event->keyval == GDK_KEY_Down) { if(m_history.down(get_text(), entry)) set_text(entry); return true; } return Gtk::Entry::on_key_press_event(event); } Gobby::HistoryComboBoxEntry::HistoryComboBoxEntry( const std::string& history_file, unsigned int length): m_history(history_file, length) { set_model(m_history.get_store()); set_text_column(m_history.get_columns().text); get_entry()->signal_key_press_event().connect( sigc::mem_fun( *this, &HistoryComboBoxEntry::on_entry_key_press_event), false); } Gobby::HistoryComboBoxEntry::HistoryComboBoxEntry(unsigned int length): m_history(length) { set_model(m_history.get_store()); set_text_column(m_history.get_columns().text); get_entry()->signal_key_press_event().connect( sigc::mem_fun( *this, &HistoryComboBoxEntry::on_entry_key_press_event), false); } void Gobby::HistoryComboBoxEntry::HistoryComboBoxEntry::commit() { m_history.commit(get_entry()->get_text()); } bool Gobby::HistoryComboBoxEntry::on_entry_key_press_event(GdkEventKey* event) { Glib::ustring entry; if(event->keyval == GDK_KEY_Up) { if(m_history.up(get_entry()->get_text(), entry)) get_entry()->set_text(entry); return true; } if(event->keyval == GDK_KEY_Down) { if(m_history.down(get_entry()->get_text(), entry)) get_entry()->set_text(entry); return true; } return false; } gobby-0.4.94/code/util/Makefile.am0000644000175000017500000000101611531722663013562 00000000000000noinst_LIBRARIES = libgobby-util.a libgobby_util_a_SOURCES = \ closebutton.cpp \ color.cpp \ config.cpp \ file.cpp \ historyentry.cpp \ i18n.cpp \ resolv.cpp \ serialize.cpp noinst_HEADERS = \ closebutton.hpp \ color.hpp \ config.hpp \ defaultaccumulator.hpp \ file.hpp \ gtk-compat.hpp \ historyentry.hpp \ i18n.hpp \ resolv.hpp \ serialize.hpp AM_CPPFLAGS = $(gobby_CFLAGS) $(unique_CFLAGS) $(infinote_CFLAGS) \ -I$(top_srcdir)/code gobby-0.4.94/code/util/historyentry.hpp0000644000175000017500000000466611531722663015040 00000000000000/* Gobby - GTK-based collaborative text editor * Copyright (C) 2008-2011 Armin Burgmeier * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GOBBY_HISTORYENTRY_HPP_ #define _GOBBY_HISTORYENTRY_HPP_ #include #include #include #include "util/gtk-compat.hpp" #include namespace Gobby { class History { public: class Columns: public Gtk::TreeModelColumnRecord { public: Columns() { add(text); } Gtk::TreeModelColumn text; }; History(const std::string& history_file, unsigned int length); History(unsigned int length); ~History(); Glib::RefPtr get_store(); const Columns& get_columns() const; bool up(const Glib::ustring& current, Glib::ustring& entry); bool down(const Glib::ustring& current, Glib::ustring& entry); void commit(const Glib::ustring& str); protected: void commit_noscroll(const Glib::ustring& str); const unsigned int m_length; const Columns m_history_columns; Glib::RefPtr m_history; Gtk::TreeIter m_current; std::string m_history_file; private: class Loader; std::auto_ptr m_loader; }; class HistoryEntry: public Gtk::Entry { public: HistoryEntry(const std::string& history_file, unsigned int length); HistoryEntry(unsigned int length); void commit(); protected: virtual bool on_key_press_event(GdkEventKey* event); History m_history; }; class HistoryComboBoxEntry: public GtkCompat::ComboBoxEntry { public: HistoryComboBoxEntry(const std::string& history_file, unsigned int length); HistoryComboBoxEntry(unsigned int length); void commit(); protected: bool on_entry_key_press_event(GdkEventKey* event); History m_history; }; } // namespace Gobby #endif // _GOBBY_HISTORYENTRY_HPP_ gobby-0.4.94/code/util/serialize.cpp0000644000175000017500000000454711531722663014235 00000000000000/* Gobby - GTK-based collaborative text editor * Copyright (C) 2008-2011 Armin Burgmeier * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "util/serialize.hpp" const char* Gobby::serialize::type_name::name = "int"; const char* Gobby::serialize::type_name::name = "long"; const char* Gobby::serialize::type_name::name = "short"; const char* Gobby::serialize::type_name::name = "char"; const char* Gobby::serialize::type_name::name = "unsigned int"; const char* Gobby::serialize::type_name::name = "unsigned long"; const char* Gobby::serialize::type_name::name = "unsigned short"; const char* Gobby::serialize::type_name::name = "unsigned char"; const char* Gobby::serialize::type_name::name = "float"; const char* Gobby::serialize::type_name::name = "double"; const char* Gobby::serialize::type_name::name = "long double"; const char* Gobby::serialize::type_name::name = "bool"; Gobby::serialize::conversion_error:: conversion_error(const std::string& message): std::runtime_error(message) { } Gobby::serialize::data::data(const std::string& serialized): m_serialized(serialized) { } const std::string& Gobby::serialize::data::serialized() const { return m_serialized; } std::string Gobby::serialize::default_context_to:: to_string(const data_type& from) const { return from; } Gobby::serialize::default_context_from::data_type Gobby::serialize::default_context_from:: from_string(const data_type& from) const { return from; } std::string Gobby::serialize::default_context_to:: to_string(const data_type& from) const { return from; } gobby-0.4.94/code/util/closebutton.cpp0000644000175000017500000000333611531722663014602 00000000000000/* Gobby - GTK-based collaborative text editor * Copyright (C) 2008-2011 Armin Burgmeier * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "util/closebutton.hpp" #include #include #include Gobby::CloseButton::CloseButton() { set_relief(Gtk::RELIEF_NONE); set_focus_on_click(false); //set_flags(get_flags() & ~Gtk::CAN_FOCUS); GtkRcStyle* rc_style = gtk_rc_style_new(); rc_style->xthickness = 0; rc_style->ythickness = 0; gtk_widget_modify_style(GTK_WIDGET(gobj()), rc_style); g_object_unref(rc_style); Gtk::Image* button_image = Gtk::manage( new Gtk::Image(Gtk::Stock::CLOSE, Gtk::ICON_SIZE_MENU)); add(*button_image); button_image->show(); } void Gobby::CloseButton::on_style_changed( const Glib::RefPtr& previous_style) { int width; int height; gtk_icon_size_lookup_for_settings( gtk_widget_get_settings(GTK_WIDGET(gobj())), GTK_ICON_SIZE_MENU, &width, &height); set_size_request(width + 2, height + 2); } gobby-0.4.94/code/util/color.hpp0000644000175000017500000000230411531722663013356 00000000000000/* Gobby - GTK-based collaborative text editor * Copyright (C) 2008-2011 Armin Burgmeier * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GOBBY_COLORUTIL_HPP_ #define _GOBBY_COLORUTIL_HPP_ #include namespace Gobby { void hsv_to_rgb(double& rh, double &gs, double &gv); void rgb_to_hsv(double &rh, double &gs, double &gv); double hue_from_gdk_color(const Gdk::Color& color); Gdk::Color hue_to_gdk_color(double hue, double saturation, double value); } #endif // _GOBBY_COLORUTIL_HPP_ gobby-0.4.94/code/dialogs/0000755000175000017500000000000011543672436012262 500000000000000gobby-0.4.94/code/dialogs/goto-dialog.hpp0000644000175000017500000000322311531722663015113 00000000000000/* Gobby - GTK-based collaborative text editor * Copyright (C) 2008-2011 Armin Burgmeier * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GOBBY_GOTODIALOG_HPP_ #define _GOBBY_GOTODIALOG_HPP_ #include "core/folder.hpp" #include "core/sessionview.hpp" #include #include #include #include namespace Gobby { class GotoDialog: public Gtk::Dialog { public: GotoDialog(Gtk::Window& parent, Folder& m_folder); ~GotoDialog(); protected: static void on_changed_static(GtkTextBuffer* buffer, gpointer user_data) { static_cast(user_data)->on_changed(); } virtual void on_show(); virtual void on_response(int id); void on_document_changed(SessionView* view); void on_changed(); Folder& m_folder; Gtk::Table m_table; Gtk::Label m_label_line; Gtk::SpinButton m_entry_line; TextSessionView* m_current_view; gulong m_changed_handler; }; } #endif // _GOBBY_GOTODIALOG_HPP_ gobby-0.4.94/code/dialogs/connection-dialog.cpp0000644000175000017500000000451411531722663016301 00000000000000/* Gobby - GTK-based collaborative text editor * Copyright (C) 2008-2011 Armin Burgmeier * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "dialogs/connection-dialog.hpp" #include "util/i18n.hpp" #include // TODO: Merge this with entrydialog and passworddialog to a slightly more // generic entry dialog. Gobby::ConnectionDialog::ConnectionDialog(Gtk::Window& parent): Gtk::Dialog(_("Connect to Server"), parent), m_box(false, 12), m_rightbox(false, 6), m_promptbox(false, 12), m_image(Gtk::Stock::NETWORK, Gtk::ICON_SIZE_DIALOG), m_intro_label(_("Please enter a host name with which " "to establish a connection.")), m_prompt_label(_("_Remote Endpoint:"), true) { m_prompt_label.set_mnemonic_widget(m_entry); m_promptbox.pack_start(m_prompt_label, Gtk::PACK_SHRINK); m_entry.set_activates_default(true); m_promptbox.pack_start(m_entry, Gtk::PACK_EXPAND_WIDGET); m_rightbox.pack_start(m_intro_label, Gtk::PACK_SHRINK); m_rightbox.pack_start(m_promptbox, Gtk::PACK_SHRINK); m_box.pack_start(m_image, Gtk::PACK_SHRINK); m_box.pack_start(m_rightbox, Gtk::PACK_EXPAND_WIDGET); m_box.show_all(); get_vbox()->set_spacing(6); get_vbox()->pack_start(m_box, Gtk::PACK_EXPAND_WIDGET); set_resizable(false); set_border_width(12); } Glib::ustring Gobby::ConnectionDialog::get_host_name() const { return m_entry.get_text(); } void Gobby::ConnectionDialog::on_show() { Gtk::Dialog::on_show(); // We can't do this in the constructor, because the buttons are added // by the caller after the widget has been constructed. set_default_response(Gtk::RESPONSE_ACCEPT); m_entry.select_region(0, m_entry.get_text().length()); m_entry.grab_focus(); } gobby-0.4.94/code/dialogs/preferences-dialog.cpp0000644000175000017500000005550611531722663016452 00000000000000/* Gobby - GTK-based collaborative text editor * Copyright (C) 2008-2011 Armin Burgmeier * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "dialogs/preferences-dialog.hpp" #include "util/color.hpp" #include "util/i18n.hpp" #include "util/gtk-compat.hpp" #include #include #include #include #include namespace { using namespace Gobby; Gtk::WrapMode wrap_mode_from_check_buttons(Gtk::CheckButton& char_button, Gtk::CheckButton& word_button) { if(!char_button.get_active()) return Gtk::WRAP_NONE; else if(!word_button.get_active()) return Gtk::WRAP_CHAR; else return Gtk::WRAP_WORD_CHAR; } Pango::FontDescription create_description(const Glib::ustring& str) { return Pango::FontDescription(str); } template void connect_option(Gtk::CheckButton& checkbutton, Preferences::Option& option) { checkbutton.signal_toggled().connect( sigc::compose( sigc::mem_fun( option, &Preferences::Option::set ), sigc::mem_fun( checkbutton, &Gtk::CheckButton::get_active ) ) ); } template void connect_option(Gtk::SpinButton& spinbutton, Preferences::Option& option) { spinbutton.signal_value_changed().connect( sigc::compose( sigc::mem_fun( option, &Preferences::Option::set ), sigc::mem_fun( spinbutton, &Gtk::SpinButton::get_value ) ) ); } template void connect_option(Gtk::Entry& entry, Preferences::Option& option) { entry.signal_changed().connect( sigc::compose( sigc::mem_fun( option, &Preferences::Option::set ), sigc::mem_fun( entry, &Gtk::Entry::get_text ) ) ); } void connect_wrap_option(Gtk::CheckButton& char_button, Gtk::CheckButton& word_button, Preferences::Option& option) { sigc::slot toggled_slot( sigc::compose( sigc::mem_fun( option, &Preferences::Option< Gtk::WrapMode>::set ), sigc::bind( sigc::ptr_fun( wrap_mode_from_check_buttons), sigc::ref(char_button), sigc::ref(word_button) ) ) ); char_button.signal_toggled().connect(toggled_slot); word_button.signal_toggled().connect(toggled_slot); } void connect_hue_option(Gtk::ColorButton& color_button, Preferences::Option& option) { color_button.property_color().signal_changed().connect( sigc::compose( sigc::mem_fun( option, &Preferences::Option::set ), sigc::compose( sigc::ptr_fun(&hue_from_gdk_color), sigc::mem_fun( color_button, &Gtk::ColorButton::get_color ) ) ) ); } void connect_path_option(Gtk::FileChooser& file_chooser, Preferences::Option& option) { file_chooser.signal_selection_changed().connect( sigc::compose( sigc::mem_fun( option, &Preferences::Option::set ), sigc::mem_fun( file_chooser, &Gtk::FileChooser::get_filename ) ) ); } void connect_font_option(Gtk::FontButton& button, Preferences::Option& option) { button.signal_font_set().connect( sigc::compose( sigc::mem_fun( option, &Preferences::Option< Pango::FontDescription>::set ), sigc::compose( sigc::ptr_fun(&create_description), sigc::mem_fun( button, &Gtk::FontButton:: get_font_name ) ) ) ); } } Gobby::PreferencesDialog::Group::Group(const Glib::ustring& title): m_box(false, 6) { Gtk::Label* title_label = Gtk::manage(new Gtk::Label); title_label->set_markup( "" + Glib::Markup::escape_text(title) + ""); set_label_widget(*title_label); title_label->show(); m_box.show(); m_alignment.set_padding(6, 0, 12, 0); m_alignment.add(m_box); m_alignment.show(); set_shadow_type(Gtk::SHADOW_NONE); Gtk::Frame::add(m_alignment); } void Gobby::PreferencesDialog::Group::add(Gtk::Widget& widget) { m_box.pack_start(widget, Gtk::PACK_EXPAND_WIDGET); } Gobby::PreferencesDialog::Page::Page(): Gtk::Frame(), m_box(false, 12) { Gtk::Frame::add(m_box); m_box.show(); // Remove shadow - use the frame just as container set_shadow_type(Gtk::SHADOW_NONE); set_border_width(12); } void Gobby::PreferencesDialog::Page::add(Gtk::Widget& widget, bool expand) { m_box.pack_start(widget, expand ? Gtk::PACK_EXPAND_WIDGET : Gtk::PACK_SHRINK); } Gobby::PreferencesDialog::User::User(Gtk::Window& parent, Preferences& preferences): m_group_settings(_("Settings")), m_group_paths(_("Paths")), m_group_remote(_("Remote Users")), m_box_user_name(false, 6), m_lbl_user_name(_("User name:"), GtkCompat::ALIGN_LEFT), m_box_user_color(false, 6), m_lbl_user_color(_("User color:"), GtkCompat::ALIGN_LEFT), m_btn_user_color(_("Choose a new user color"), parent), m_box_path_host_directory(false, 6), m_lbl_path_host_directory(_("Host directory:")), m_btn_path_host_directory(Gtk::FILE_CHOOSER_ACTION_SELECT_FOLDER), m_btn_remote_show_cursors(_("Show cursors of remote users")), m_btn_remote_show_selections(_("Show selections of remote users")), m_btn_remote_show_current_lines( _("Highlight current line of remote users")), m_btn_remote_show_cursor_positions( _("Indicate remote users' cursor position in the scrollbar")), m_size_group(Gtk::SizeGroup::create(Gtk::SIZE_GROUP_HORIZONTAL)) { m_lbl_user_name.show(); m_ent_user_name.set_text(preferences.user.name); m_ent_user_name.show(); connect_option(m_ent_user_name, preferences.user.name); m_box_user_name.pack_start(m_lbl_user_name, Gtk::PACK_SHRINK); m_box_user_name.pack_start(m_ent_user_name, Gtk::PACK_EXPAND_WIDGET); m_box_user_name.show(); m_btn_user_color.set_hue(preferences.user.hue); m_btn_user_color.set_saturation(0.35); m_btn_user_color.set_value(1.0); m_lbl_user_color.show(); m_btn_user_color.show(); connect_hue_option(m_btn_user_color, preferences.user.hue); m_box_user_color.pack_start(m_lbl_user_color, Gtk::PACK_SHRINK); m_box_user_color.pack_start( m_btn_user_color, Gtk::PACK_EXPAND_WIDGET); m_box_user_color.show(); m_group_settings.add(m_box_user_name); m_group_settings.add(m_box_user_color); m_size_group->add_widget(m_lbl_user_name); m_size_group->add_widget(m_lbl_user_color); m_group_settings.show(); m_lbl_path_host_directory.show(); // Don't call this as long as we are not showing the dialog, to // prevent spurious error messages when the folder does not exist. /*m_btn_path_host_directory.set_current_folder( static_cast( preferences.user.host_directory));*/ m_btn_path_host_directory.show(); connect_path_option(m_btn_path_host_directory, preferences.user.host_directory); m_box_path_host_directory.set_tooltip_text( _("The directory into which locally hosted sessions " "are permanently stored")); m_box_path_host_directory.pack_start( m_lbl_path_host_directory, Gtk::PACK_SHRINK); m_box_path_host_directory.pack_start( m_btn_path_host_directory, Gtk::PACK_EXPAND_WIDGET); m_box_path_host_directory.show(); m_group_paths.add(m_box_path_host_directory); // Disable until we support self-hosting: // m_group_paths.show(); m_btn_remote_show_cursors.set_active( preferences.user.show_remote_cursors); m_btn_remote_show_cursors.show(); connect_option(m_btn_remote_show_cursors, preferences.user.show_remote_cursors); m_btn_remote_show_selections.set_active( preferences.user.show_remote_selections); m_btn_remote_show_selections.show(); connect_option(m_btn_remote_show_selections, preferences.user.show_remote_selections); m_btn_remote_show_current_lines.set_active( preferences.user.show_remote_current_lines); m_btn_remote_show_current_lines.show(); connect_option(m_btn_remote_show_current_lines, preferences.user.show_remote_current_lines); m_btn_remote_show_cursor_positions.set_active( preferences.user.show_remote_cursor_positions); m_btn_remote_show_cursor_positions.show(); connect_option(m_btn_remote_show_cursor_positions, preferences.user.show_remote_cursor_positions); m_group_remote.add(m_btn_remote_show_cursors); m_group_remote.add(m_btn_remote_show_selections); m_group_remote.add(m_btn_remote_show_current_lines); m_group_remote.add(m_btn_remote_show_cursor_positions); m_group_remote.show(); add(m_group_settings, false); add(m_group_paths, false); add(m_group_remote, false); } Gobby::PreferencesDialog::Editor::Editor(Preferences& preferences): m_group_tab(_("Tab Stops")), m_group_indentation(_("Indentation")), m_group_homeend(_("Home/End Behavior")), m_group_saving(_("File Saving")), m_lbl_tab_width(_("_Tab width:"), GtkCompat::ALIGN_RIGHT, Gtk::ALIGN_CENTER, true), m_btn_tab_spaces(_("Insert _spaces instead of tabs"), true), m_btn_indentation_auto(_("Enable automatic _indentation"), true), m_btn_homeend_smart(_("Smart _home/end"), true), m_btn_autosave_enabled(_("Enable _automatic saving of documents"), true), m_lbl_autosave_interval(_("Autosave interval in _minutes:"), true) { unsigned int tab_width = preferences.editor.tab_width; bool tab_spaces = preferences.editor.tab_spaces; bool indentation_auto = preferences.editor.indentation_auto; bool homeend_smart = preferences.editor.homeend_smart; unsigned int autosave_enabled = preferences.editor.autosave_enabled; unsigned int autosave_interval = preferences.editor.autosave_interval; m_btn_autosave_enabled.signal_toggled().connect( sigc::mem_fun(*this, &Editor::on_autosave_enabled_toggled)); m_lbl_tab_width.set_mnemonic_widget(m_ent_tab_width); m_lbl_tab_width.show(); m_ent_tab_width.set_range(1, 8); m_ent_tab_width.set_value(tab_width); m_ent_tab_width.set_increments(1, 1); m_ent_tab_width.show(); connect_option(m_ent_tab_width, preferences.editor.tab_width); m_btn_homeend_smart.set_tooltip_text( _("With this option enabled, Home/End keys move to " "first/last character before going to the start/end of the " "line.") ); m_box_tab_width.set_spacing(6); m_box_tab_width.pack_start(m_lbl_tab_width, Gtk::PACK_SHRINK); m_box_tab_width.pack_start(m_ent_tab_width, Gtk::PACK_SHRINK); m_box_tab_width.show(); m_btn_tab_spaces.set_active(tab_spaces); m_btn_tab_spaces.show(); connect_option(m_btn_tab_spaces, preferences.editor.tab_spaces); m_btn_indentation_auto.set_active(indentation_auto); m_btn_indentation_auto.show(); connect_option(m_btn_indentation_auto, preferences.editor.indentation_auto); m_btn_homeend_smart.set_active(homeend_smart); m_btn_homeend_smart.show(); connect_option(m_btn_homeend_smart, preferences.editor.homeend_smart); m_btn_autosave_enabled.set_active(autosave_enabled); m_btn_autosave_enabled.show(); connect_option(m_btn_autosave_enabled, preferences.editor.autosave_enabled); m_lbl_autosave_interval.set_mnemonic_widget(m_ent_autosave_interval); m_lbl_autosave_interval.show(); m_ent_autosave_interval.set_range(1,60); m_ent_autosave_interval.set_value(autosave_interval); m_ent_autosave_interval.set_increments(1,10); m_ent_autosave_interval.set_sensitive(autosave_enabled); m_ent_autosave_interval.show(); connect_option(m_ent_autosave_interval, preferences.editor.autosave_interval); m_box_autosave_interval.set_spacing(6); m_box_autosave_interval.pack_start(m_lbl_autosave_interval, Gtk::PACK_SHRINK); m_box_autosave_interval.pack_start(m_ent_autosave_interval, Gtk::PACK_SHRINK); m_box_autosave_interval.show(); m_group_tab.add(m_box_tab_width); m_group_tab.add(m_btn_tab_spaces); m_group_tab.show(); m_group_indentation.add(m_btn_indentation_auto); m_group_indentation.show(); m_group_homeend.add(m_btn_homeend_smart); m_group_homeend.show(); m_group_saving.add(m_btn_autosave_enabled); m_group_saving.add(m_box_autosave_interval); m_group_saving.show(); add(m_group_tab, false); add(m_group_indentation, false); add(m_group_homeend, false); add(m_group_saving, false); } void Gobby::PreferencesDialog::Editor::on_autosave_enabled_toggled() { m_ent_autosave_interval.set_sensitive( m_btn_autosave_enabled.get_active()); } Gobby::PreferencesDialog::View::View(Preferences& preferences): m_group_wrap(_("Text Wrapping") ), m_group_linenum(_("Line Numbers") ), m_group_curline(_("Current Line") ), m_group_margin(_("Right Margin") ), m_group_bracket(_("Bracket Matching") ), m_group_spaces(_("Whitespace Display") ), m_btn_wrap_text(_("Enable text wrapping") ), m_btn_wrap_words(_("Do not split words over two lines") ), m_btn_linenum_display(_("Display line numbers") ), m_btn_curline_highlight(_("Highlight current line") ), m_btn_margin_display(_("Display right margin") ), m_lbl_margin_pos(_("Right margin at column:") ), m_btn_bracket_highlight(_("Highlight matching bracket") ), m_cmb_spaces_display(preferences.view.whitespace_display) { Gtk::WrapMode mode = preferences.view.wrap_mode; bool linenum_display = preferences.view.linenum_display; bool curline_highlight = preferences.view.curline_highlight; bool margin_display = preferences.view.margin_display; unsigned int margin_pos = preferences.view.margin_pos; bool bracket_highlight = preferences.view.bracket_highlight; m_btn_margin_display.signal_toggled().connect( sigc::mem_fun(*this, &View::on_margin_display_toggled)); m_btn_wrap_text.signal_toggled().connect( sigc::mem_fun(*this, &View::on_wrap_text_toggled)); m_ent_margin_pos.set_range(1, 1024); m_ent_margin_pos.set_value(margin_pos); m_ent_margin_pos.set_increments(1, 16); m_ent_margin_pos.show(); connect_option(m_ent_margin_pos, preferences.view.margin_pos); m_btn_wrap_text.set_active(mode != Gtk::WRAP_NONE); m_btn_wrap_text.show(); m_btn_wrap_words.set_active(mode == Gtk::WRAP_WORD_CHAR); m_btn_wrap_words.set_sensitive(mode != Gtk::WRAP_NONE); m_btn_wrap_words.show(); connect_wrap_option(m_btn_wrap_text, m_btn_wrap_words, preferences.view.wrap_mode); m_btn_linenum_display.set_active(linenum_display); m_btn_linenum_display.show(); connect_option(m_btn_linenum_display, preferences.view.linenum_display); m_btn_curline_highlight.set_active(curline_highlight); m_btn_curline_highlight.show(); connect_option(m_btn_curline_highlight, preferences.view.curline_highlight); m_btn_margin_display.set_active(margin_display); m_btn_margin_display.show(); connect_option(m_btn_margin_display, preferences.view.margin_display); m_btn_bracket_highlight.set_active(bracket_highlight); m_btn_bracket_highlight.show(); connect_option(m_btn_bracket_highlight, preferences.view.bracket_highlight); // TODO: When we require a higher version of GtkSourceView, then // we should add GTK_SOURCE_DRAW_SPACES_NBSP here. const int SOURCE_DRAW_SPACES = GTK_SOURCE_DRAW_SPACES_SPACE; m_cmb_spaces_display.add( _("Display no whitespace"), static_cast(0)); m_cmb_spaces_display.add( _("Display spaces"), static_cast( SOURCE_DRAW_SPACES)); m_cmb_spaces_display.add( _("Display tabs"), static_cast( GTK_SOURCE_DRAW_SPACES_TAB)); m_cmb_spaces_display.add( _("Display tabs and spaces"), static_cast( SOURCE_DRAW_SPACES | GTK_SOURCE_DRAW_SPACES_TAB)); m_cmb_spaces_display.show(); m_box_margin_pos.set_spacing(6); m_box_margin_pos.set_sensitive(margin_display); m_box_margin_pos.pack_start(m_lbl_margin_pos, Gtk::PACK_SHRINK); m_box_margin_pos.pack_start(m_ent_margin_pos, Gtk::PACK_EXPAND_WIDGET); m_box_margin_pos.show(); m_group_wrap.add(m_btn_wrap_text); m_group_wrap.add(m_btn_wrap_words); m_group_wrap.show(); m_group_linenum.add(m_btn_linenum_display); m_group_linenum.show(); m_group_curline.add(m_btn_curline_highlight); m_group_curline.show(); m_group_margin.add(m_btn_margin_display); m_group_margin.add(m_box_margin_pos); m_group_margin.show(); m_group_bracket.add(m_btn_bracket_highlight); m_group_bracket.show(); m_group_spaces.add(m_cmb_spaces_display); m_group_spaces.show(); add(m_group_wrap, false); add(m_group_linenum, false); add(m_group_curline, false); add(m_group_margin, false); add(m_group_bracket, false); add(m_group_spaces, false); } void Gobby::PreferencesDialog::View::on_wrap_text_toggled() { m_btn_wrap_words.set_sensitive(m_btn_wrap_text.get_active()); } void Gobby::PreferencesDialog::View::on_margin_display_toggled() { m_box_margin_pos.set_sensitive(m_btn_margin_display.get_active()); } Gobby::PreferencesDialog::Appearance::Appearance(Preferences& preferences): m_group_toolbar(_("Toolbar") ), m_group_font(_("Font") ), m_group_scheme(_("Color Scheme")), m_cmb_toolbar_style(preferences.appearance.toolbar_style), m_list(Gtk::ListStore::create(m_columns)), m_tree(m_list) { const Pango::FontDescription& font = preferences.appearance.font; m_cmb_toolbar_style.add(_("Show text only"), Gtk::TOOLBAR_TEXT); m_cmb_toolbar_style.add(_("Show icons only"), Gtk::TOOLBAR_ICONS); m_cmb_toolbar_style.add(_("Show both icons and text"), Gtk::TOOLBAR_BOTH ); m_cmb_toolbar_style.add(_("Show text besides icons"), Gtk::TOOLBAR_BOTH_HORIZ ); m_cmb_toolbar_style.show(); m_btn_font.set_font_name(font.to_string()); m_btn_font.show(); connect_font_option(m_btn_font, preferences.appearance.font); m_group_toolbar.add(m_cmb_toolbar_style); m_group_toolbar.show(); m_group_font.add(m_btn_font); m_group_font.show(); Gtk::TreeViewColumn column_name; Gtk::CellRendererText renderer_name; column_name.pack_start(renderer_name, false); column_name.add_attribute(renderer_name.property_text(), m_columns.name); m_tree.append_column(column_name);//"Scheme Name", m_columns.name); m_tree.append_column("Scheme description", m_columns.description); Pango::AttrList list; Pango::Attribute attr(Pango::Attribute::create_attr_weight(Pango::WEIGHT_BOLD)); list.insert(attr); renderer_name.property_attributes() = list; m_tree.set_headers_visible(false); m_tree.show(); Gtk::ScrolledWindow* scroll = Gtk::manage(new Gtk::ScrolledWindow); scroll->set_shadow_type(Gtk::SHADOW_IN); scroll->set_policy(Gtk::POLICY_AUTOMATIC, Gtk::POLICY_AUTOMATIC); scroll->add(m_tree); scroll->show(); m_group_scheme.add(*scroll); m_group_scheme.show(); GtkSourceStyleSchemeManager* manager = gtk_source_style_scheme_manager_get_default(); const gchar* const* ids = gtk_source_style_scheme_manager_get_scheme_ids(manager); Glib::ustring current_scheme = preferences.appearance.scheme_id; for (const gchar* const* id = ids; *id != NULL; ++id) { GtkSourceStyleScheme* scheme = gtk_source_style_scheme_manager_get_scheme(manager, *id); const gchar* name = gtk_source_style_scheme_get_name(scheme); const gchar* desc = gtk_source_style_scheme_get_description(scheme); Gtk::TreeIter iter = m_list->append(); (*iter)[m_columns.name] = name; (*iter)[m_columns.description] = desc; (*iter)[m_columns.scheme] = scheme; if (current_scheme == gtk_source_style_scheme_get_id(scheme)) m_tree.get_selection()->select(iter); } m_tree.get_selection()->signal_changed().connect( sigc::bind( sigc::mem_fun(*this, &Appearance::on_scheme_changed), sigc::ref(preferences))); #ifdef USE_GTKMM3 m_list->set_sort_column(m_columns.name, Gtk::SORT_ASCENDING); #else m_list->set_sort_column_id(m_columns.name, Gtk::SORT_ASCENDING); #endif add(m_group_toolbar, false); add(m_group_font, false); add(m_group_scheme, true); } void Gobby::PreferencesDialog::Appearance::on_scheme_changed(Preferences& preferences) { Gtk::TreeIter iter = m_tree.get_selection()->get_selected(); GtkSourceStyleScheme* scheme = (*iter)[m_columns.scheme]; preferences.appearance.scheme_id = gtk_source_style_scheme_get_id(scheme); } Gobby::PreferencesDialog::Security::Security(Preferences& preferences): m_group_trust_file(_("Trusted CAs")), m_group_connection_policy(_("Secure Connection")), m_btn_path_trust_file(_("Select a file containing trusted CAs")), m_cmb_connection_policy(preferences.security.policy) { const std::string& trust_file = preferences.security.trust_file; if(!trust_file.empty()) m_btn_path_trust_file.set_filename(trust_file); connect_path_option(m_btn_path_trust_file, preferences.security.trust_file); m_btn_path_trust_file.show(); m_group_trust_file.add(m_btn_path_trust_file); m_group_trust_file.show(); /* m_cmb_connection_policy.add( _("Never use a secure connection"), INF_XMPP_CONNECTION_SECURITY_ONLY_UNSECURED);*/ m_cmb_connection_policy.add( _("Use TLS if possible"), INF_XMPP_CONNECTION_SECURITY_BOTH_PREFER_TLS); m_cmb_connection_policy.add( _("Always use TLS"), INF_XMPP_CONNECTION_SECURITY_ONLY_TLS); m_cmb_connection_policy.show(); m_group_connection_policy.add(m_cmb_connection_policy); m_group_connection_policy.show(); add(m_group_trust_file, false); add(m_group_connection_policy, false); } Gobby::PreferencesDialog::PreferencesDialog(Gtk::Window& parent, Preferences& preferences): Gtk::Dialog(_("Preferences"), parent), m_preferences(preferences), m_page_user(*this, preferences), m_page_editor(preferences), m_page_view(preferences), m_page_appearance(preferences), m_page_security(preferences) { m_notebook.append_page(m_page_user, _("User")); m_notebook.append_page(m_page_editor, _("Editor")); m_notebook.append_page(m_page_view, _("View")); m_notebook.append_page(m_page_appearance, _("Appearance")); m_notebook.append_page(m_page_security, _("Security")); m_page_user.show(); m_page_editor.show(); m_page_view.show(); m_page_appearance.show(); m_page_security.show(); get_vbox()->set_spacing(6); get_vbox()->pack_start(m_notebook, Gtk::PACK_EXPAND_WIDGET); m_notebook.show(); add_button(Gtk::Stock::CLOSE, Gtk::RESPONSE_CLOSE); set_border_width(12); set_resizable(false); } void Gobby::PreferencesDialog::on_response(int id) { hide(); } gobby-0.4.94/code/dialogs/Makefile.in0000644000175000017500000004017511543672413014251 00000000000000# 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@ subdir = code/dialogs DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = $(top_builddir)/code/features.hpp CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = LIBRARIES = $(noinst_LIBRARIES) AR = ar ARFLAGS = cru AM_V_AR = $(am__v_AR_$(V)) am__v_AR_ = $(am__v_AR_$(AM_DEFAULT_VERBOSITY)) am__v_AR_0 = @echo " AR " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ libgobby_dialogs_a_AR = $(AR) $(ARFLAGS) libgobby_dialogs_a_LIBADD = am_libgobby_dialogs_a_OBJECTS = connection-dialog.$(OBJEXT) \ document-location-dialog.$(OBJEXT) entry-dialog.$(OBJEXT) \ find-dialog.$(OBJEXT) goto-dialog.$(OBJEXT) \ initial-dialog.$(OBJEXT) open-location-dialog.$(OBJEXT) \ password-dialog.$(OBJEXT) preferences-dialog.$(OBJEXT) libgobby_dialogs_a_OBJECTS = $(am_libgobby_dialogs_a_OBJECTS) DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/code depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) AM_V_CXX = $(am__v_CXX_$(V)) am__v_CXX_ = $(am__v_CXX_$(AM_DEFAULT_VERBOSITY)) am__v_CXX_0 = @echo " CXX " $@; CXXLD = $(CXX) CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \ -o $@ AM_V_CXXLD = $(am__v_CXXLD_$(V)) am__v_CXXLD_ = $(am__v_CXXLD_$(AM_DEFAULT_VERBOSITY)) am__v_CXXLD_0 = @echo " CXXLD " $@; AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; SOURCES = $(libgobby_dialogs_a_SOURCES) DIST_SOURCES = $(libgobby_dialogs_a_SOURCES) HEADERS = $(noinst_HEADERS) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALL_LINGUAS = @ALL_LINGUAS@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@ DOC_USER_FORMATS = @DOC_USER_FORMATS@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GMOFILES = @GMOFILES@ GMSGFMT = @GMSGFMT@ GREP = @GREP@ HELP_DIR = @HELP_DIR@ 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@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MKINSTALLDIRS = @MKINSTALLDIRS@ MSGFMT = @MSGFMT@ MSGFMT_OPTS = @MSGFMT_OPTS@ MSGMERGE = @MSGMERGE@ OBJEXT = @OBJEXT@ OMF_DIR = @OMF_DIR@ 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@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ WINDRES = @WINDRES@ 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_CXX = @ac_ct_CXX@ 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@ gobby_CFLAGS = @gobby_CFLAGS@ gobby_LIBS = @gobby_LIBS@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infinote_CFLAGS = @infinote_CFLAGS@ infinote_LIBS = @infinote_LIBS@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ 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@ unique_CFLAGS = @unique_CFLAGS@ unique_LIBS = @unique_LIBS@ noinst_LIBRARIES = libgobby-dialogs.a libgobby_dialogs_a_SOURCES = \ connection-dialog.cpp \ document-location-dialog.cpp \ entry-dialog.cpp \ find-dialog.cpp \ goto-dialog.cpp \ initial-dialog.cpp \ open-location-dialog.cpp \ password-dialog.cpp \ preferences-dialog.cpp noinst_HEADERS = \ connection-dialog.hpp \ document-location-dialog.hpp \ entry-dialog.hpp \ find-dialog.hpp \ goto-dialog.hpp \ initial-dialog.hpp \ open-location-dialog.hpp \ password-dialog.hpp \ preferences-dialog.hpp appicondir = $(datadir)/pixmaps pixmapdir = $(datadir)/pixmaps/gobby-0.5 AM_CPPFLAGS = $(gobby_CFLAGS) $(unique_CFLAGS) $(infinote_CFLAGS) \ -I$(top_srcdir)/code all: all-am .SUFFIXES: .SUFFIXES: .cpp .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(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) --gnu code/dialogs/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu code/dialogs/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: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstLIBRARIES: -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) libgobby-dialogs.a: $(libgobby_dialogs_a_OBJECTS) $(libgobby_dialogs_a_DEPENDENCIES) $(AM_V_at)-rm -f libgobby-dialogs.a $(AM_V_AR)$(libgobby_dialogs_a_AR) libgobby-dialogs.a $(libgobby_dialogs_a_OBJECTS) $(libgobby_dialogs_a_LIBADD) $(AM_V_at)$(RANLIB) libgobby-dialogs.a mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/connection-dialog.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/document-location-dialog.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/entry-dialog.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/find-dialog.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/goto-dialog.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/initial-dialog.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/open-location-dialog.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/password-dialog.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/preferences-dialog.Po@am__quote@ .cpp.o: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $< .cpp.obj: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags 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 $(LIBRARIES) $(HEADERS) installdirs: 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-noinstLIBRARIES mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: 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 -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-noinstLIBRARIES ctags distclean distclean-compile \ distclean-generic distclean-tags 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-ps install-ps-am install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \ uninstall-am # 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: gobby-0.4.94/code/dialogs/open-location-dialog.hpp0000644000175000017500000000261311531722663016714 00000000000000/* Gobby - GTK-based collaborative text editor * Copyright (C) 2008-2011 Armin Burgmeier * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GOBBY_OPENLOCATIONDIALOG_HPP_ #define _GOBBY_OPENLOCATIONDIALOG_HPP_ #include #include #include #include "util/historyentry.hpp" namespace Gobby { class OpenLocationDialog: public Gtk::Dialog { public: OpenLocationDialog(Gtk::Window& parent); Glib::ustring get_uri() const; void set_uri(const Glib::ustring& uri); protected: virtual void on_response(int response_id); virtual void on_show(); void on_entry_changed(); Gtk::VBox m_box; Gtk::Label m_label; HistoryComboBoxEntry m_combo; }; } #endif // _GOBBY_OPENLOCATIONDIALOG_HPP_ gobby-0.4.94/code/dialogs/password-dialog.cpp0000644000175000017500000000475411531722663016012 00000000000000/* Gobby - GTK-based collaborative text editor * Copyright (C) 2008-2011 Armin Burgmeier * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "dialogs/password-dialog.hpp" #include "util/i18n.hpp" #include Gobby::PasswordDialog::PasswordDialog(Gtk::Window& parent, const Glib::ustring& remote_id, unsigned int retry_counter): Gtk::Dialog(_("Password Required"), parent), m_box(false, 12), m_rightbox(false, 6), m_promptbox(false, 12), m_image(Gtk::Stock::DIALOG_AUTHENTICATION, Gtk::ICON_SIZE_DIALOG), m_intro_label(Glib::ustring::compose( (retry_counter == 0) ? _("Connection to host \"%1\" requires a password.") : _("Invalid password for host \"%1\". " "Please try again."), remote_id)), m_prompt_label(_("Server _Password:"), true) { m_prompt_label.set_mnemonic_widget(m_entry); m_promptbox.pack_start(m_prompt_label, Gtk::PACK_SHRINK); m_entry.set_visibility(false); m_entry.set_activates_default(true); m_promptbox.pack_start(m_entry, Gtk::PACK_EXPAND_WIDGET); m_rightbox.pack_start(m_intro_label, Gtk::PACK_SHRINK); m_rightbox.pack_start(m_promptbox, Gtk::PACK_SHRINK); m_box.pack_start(m_image, Gtk::PACK_SHRINK); m_box.pack_start(m_rightbox, Gtk::PACK_EXPAND_WIDGET); m_box.show_all(); get_vbox()->set_spacing(6); get_vbox()->pack_start(m_box, Gtk::PACK_EXPAND_WIDGET); set_resizable(false); set_border_width(12); } Glib::ustring Gobby::PasswordDialog::get_password() const { return m_entry.get_text(); } void Gobby::PasswordDialog::on_show() { Gtk::Dialog::on_show(); // We can't do this in the constructor, because the buttons are added // by the caller after the widget has been constructed. set_default_response(Gtk::RESPONSE_ACCEPT); m_entry.select_region(0, m_entry.get_text().length()); m_entry.grab_focus(); } gobby-0.4.94/code/dialogs/password-dialog.hpp0000644000175000017500000000273311531722663016012 00000000000000/* Gobby - GTK-based collaborative text editor * Copyright (C) 2008-2011 Armin Burgmeier * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GOBBY_PASSWORDDIALOG_HPP_ #define _GOBBY_PASSWORDDIALOG_HPP_ #include #include #include #include #include namespace Gobby { class PasswordDialog: public Gtk::Dialog { public: PasswordDialog(Gtk::Window& parent, const Glib::ustring& remote_id, unsigned int retry_counter); Glib::ustring get_password() const; protected: virtual void on_show(); Gtk::HBox m_box; Gtk::VBox m_rightbox; Gtk::HBox m_promptbox; Gtk::Image m_image; Gtk::Label m_intro_label; Gtk::Label m_prompt_label; Gtk::Entry m_entry; }; } #endif // _GOBBY_PASSWORDDIALOG_HPP_ gobby-0.4.94/code/dialogs/connection-dialog.hpp0000644000175000017500000000261211531722663016303 00000000000000/* Gobby - GTK-based collaborative text editor * Copyright (C) 2008-2011 Armin Burgmeier * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GOBBY_CONNECTIONDIALOG_HPP_ #define _GOBBY_CONNECTIONDIALOG_HPP_ #include #include #include #include #include namespace Gobby { class ConnectionDialog: public Gtk::Dialog { public: ConnectionDialog(Gtk::Window& parent); Glib::ustring get_host_name() const; protected: virtual void on_show(); Gtk::HBox m_box; Gtk::VBox m_rightbox; Gtk::HBox m_promptbox; Gtk::Image m_image; Gtk::Label m_intro_label; Gtk::Label m_prompt_label; Gtk::Entry m_entry; }; } #endif // _GOBBY_CONNECTIONDIALOG_HPP_ gobby-0.4.94/code/dialogs/entry-dialog.hpp0000644000175000017500000000254111531722663015306 00000000000000/* Gobby - GTK-based collaborative text editor * Copyright (C) 2008-2011 Armin Burgmeier * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GOBBY_ENTRYDIALOG_HPP_ #define _GOBBY_ENTRYDIALOG_HPP_ #include #include #include #include namespace Gobby { class EntryDialog: public Gtk::Dialog { public: EntryDialog(Gtk::Window& parent, const Glib::ustring& title, const Glib::ustring& intro_text); Glib::ustring get_text() const; void set_text(const Glib::ustring& text); protected: virtual void on_show(); Gtk::HBox m_box; Gtk::Label m_intro_label; Gtk::Entry m_entry; }; } #endif // _GOBBY_ENTRYDIALOG_HPP_ gobby-0.4.94/code/dialogs/find-dialog.cpp0000644000175000017500000003212211531722663015056 00000000000000/* Gobby - GTK-based collaborative text editor * Copyright (C) 2008-2011 Armin Burgmeier * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "dialogs/find-dialog.hpp" #include "core/folder.hpp" #include "util/i18n.hpp" #include "util/gtk-compat.hpp" #include #include #include namespace { typedef gboolean (*TextSearchFunc)( const GtkTextIter*, const gchar*, Gobby::GtkCompat::TextSearchFlags, GtkTextIter*, GtkTextIter*, const GtkTextIter* ); const int RESPONSE_FIND = 1; const int RESPONSE_REPLACE = 2; const int RESPONSE_REPLACE_ALL = 3; } Gobby::FindDialog::FindDialog(Gtk::Window& parent, Folder& folder, StatusBar& status_bar): Gtk::Dialog(_("Find"), parent), m_folder(folder), m_status_bar(status_bar), m_table_entries(2, 2), m_label_find(_("_Search for:"), GtkCompat::ALIGN_LEFT, Gtk::ALIGN_CENTER, true), m_label_replace(_("Replace _with:"), GtkCompat::ALIGN_LEFT, Gtk::ALIGN_CENTER, true), m_check_case(_("_Match case"), true), m_check_whole_word(_("Match _entire word only"), true), m_check_backwards(_("Search _backwards"), true), m_check_wrap_around(_("Wra_p around"), true) { m_entry_find.set_activates_default(true); m_entry_replace.set_activates_default(true); m_label_find.set_mnemonic_widget(m_entry_find); m_label_replace.set_mnemonic_widget(m_entry_replace); m_label_find.show(); m_entry_find.show(); m_table_entries.attach(m_label_find, 0, 1, 0, 1, Gtk::FILL, Gtk::FILL); m_table_entries.attach(m_label_replace, 0, 1, 1, 2, Gtk::FILL, Gtk::FILL); m_table_entries.attach(m_entry_find, 1, 2, 0, 1, Gtk::EXPAND | Gtk::FILL, Gtk::SHRINK); m_table_entries.attach(m_entry_replace, 1, 2, 1, 2, Gtk::EXPAND | Gtk::FILL, Gtk::SHRINK); m_table_entries.show(); m_table_entries.set_spacings(12); m_check_case.show(); m_check_whole_word.show(); m_check_backwards.show(); m_check_wrap_around.show(); m_check_wrap_around.set_active(true); m_box_main.pack_start(m_table_entries, Gtk::PACK_SHRINK); m_box_main.pack_start(m_check_case, Gtk::PACK_SHRINK); m_box_main.pack_start(m_check_whole_word, Gtk::PACK_SHRINK); m_box_main.pack_start(m_check_backwards, Gtk::PACK_SHRINK); m_box_main.pack_start(m_check_wrap_around, Gtk::PACK_SHRINK); m_box_main.set_spacing(12); m_box_main.show(); get_vbox()->pack_start(m_box_main); m_entry_find.signal_changed().connect( sigc::mem_fun(*this, &FindDialog::on_find_text_changed)); m_entry_replace.signal_changed().connect( sigc::mem_fun(*this, &FindDialog::on_replace_text_changed)); set_border_width(12); set_resizable(false); add_button(Gtk::Stock::CLOSE, Gtk::RESPONSE_CLOSE); m_button_replace_all = add_button(_("Replace _All"), RESPONSE_REPLACE_ALL); m_button_replace = add_button(_("_Replace"), RESPONSE_REPLACE); add_button(Gtk::Stock::FIND, RESPONSE_FIND); set_default_response(RESPONSE_FIND); m_button_replace->set_image(*Gtk::manage(new Gtk::Image( Gtk::Stock::FIND_AND_REPLACE, Gtk::ICON_SIZE_BUTTON))); m_folder.signal_document_changed().connect( sigc::mem_fun(*this, &FindDialog::on_document_changed)); on_document_changed(m_folder.get_current_document()); } Gobby::FindDialog::~FindDialog() { on_document_changed(NULL); } bool Gobby::FindDialog::get_search_only() const { return GtkCompat::is_visible(m_label_replace); } void Gobby::FindDialog::set_search_only(bool search_only) { if(search_only) { m_label_replace.hide(); m_entry_replace.hide(); m_button_replace->hide(); m_button_replace_all->hide(); } else { m_label_replace.show(); m_entry_replace.show(); m_button_replace->show(); m_button_replace_all->show(); } set_title(search_only ? _("Find") : _("Replace") ); } Glib::ustring Gobby::FindDialog::get_find_text() const { return m_entry_find.get_text(); } Glib::ustring Gobby::FindDialog::get_replace_text() const { return m_entry_replace.get_text(); } bool Gobby::FindDialog::find_next() { bool result = find_and_select(NULL, SEARCH_FORWARD); if(!result) { Glib::ustring str = Glib::ustring::compose( _("Phrase \"%1\" has not been found"), get_find_text()); m_status_bar.add_info_message(str, 5); return false; } return true; } bool Gobby::FindDialog::find_previous() { bool result = find_and_select(NULL, SEARCH_BACKWARD); if(!result) { Glib::ustring str = Glib::ustring::compose( _("Phrase \"%1\" has not been found"), get_find_text()); m_status_bar.add_info_message(str, 5); return false; } return true; } void Gobby::FindDialog::on_show() { Gtk::Dialog::on_show(); m_entry_find.grab_focus(); } void Gobby::FindDialog::on_response(int id) { switch(id) { case Gtk::RESPONSE_CLOSE: hide(); break; case RESPONSE_FIND: find(); break; case RESPONSE_REPLACE: replace(); break; case RESPONSE_REPLACE_ALL: replace_all(); break; } Gtk::Dialog::on_response(id); } void Gobby::FindDialog::on_document_changed(SessionView* view) { m_active_user_changed_connection.disconnect(); TextSessionView* text_view = dynamic_cast(view); if(text_view != NULL) { m_active_user_changed_connection = text_view->signal_active_user_changed().connect( sigc::mem_fun( *this, &FindDialog::on_active_user_changed)); } update_sensitivity(); } void Gobby::FindDialog::on_active_user_changed(InfUser* user) { update_sensitivity(); } void Gobby::FindDialog::on_find_text_changed() { update_sensitivity(); m_signal_find_text_changed.emit(); } void Gobby::FindDialog::on_replace_text_changed() { m_signal_replace_text_changed.emit(); } Gobby::FindDialog::SearchDirection Gobby::FindDialog::get_direction() const { if(m_check_backwards.get_active()) return SEARCH_BACKWARD; else return SEARCH_FORWARD; } bool Gobby::FindDialog::find() { if(get_direction() == SEARCH_FORWARD) return find_next(); else return find_previous(); } bool Gobby::FindDialog::replace() { SessionView* view = m_folder.get_current_document(); TextSessionView* text_view = dynamic_cast(view); g_assert(text_view != NULL); // Get selected string Glib::ustring sel_str = text_view->get_selected_text(); Glib::ustring find_str = get_find_text(); // Lowercase both if we are comparing insensitive if(!m_check_case.get_active() ) { sel_str = sel_str.casefold(); find_str = find_str.casefold(); } // Replace them if they are the same if(sel_str == find_str) { GtkTextBuffer* buffer = GTK_TEXT_BUFFER(text_view->get_text_buffer()); // Replace occurrence Glib::ustring replace_text = get_replace_text(); gtk_text_buffer_delete_selection(buffer, TRUE, TRUE); gtk_text_buffer_insert_at_cursor(buffer, replace_text.c_str(), replace_text.bytes()); // and find the next find_and_select(NULL, get_direction()); return true; } else { // Search the first occurrence return find(); } } bool Gobby::FindDialog::replace_all() { // TODO: Add helper function to get textsessionview? Maybe even add // to Folder? SessionView* view = m_folder.get_current_document(); TextSessionView* text_view = dynamic_cast(view); g_assert(text_view != NULL); GtkTextIter begin; GtkTextBuffer* buffer = GTK_TEXT_BUFFER(text_view->get_text_buffer()); gtk_text_buffer_get_start_iter(buffer, &begin); unsigned int replace_count = 0; GtkTextIter match_start, match_end; while(find_range(&begin, NULL, SEARCH_FORWARD, &match_start, &match_end)) { Glib::ustring replace_text = get_replace_text(); gtk_text_buffer_delete(buffer, &match_start, &match_end); gtk_text_buffer_insert(buffer, &match_start, replace_text.c_str(), replace_text.bytes()); ++ replace_count; begin = match_start; } Glib::ustring message; bool result; if(replace_count == 0) { message = _("No occurrence has been replaced"); result = false; } else { message = Glib::ustring::compose( ngettext("%1 occurrence has been replaced", "%1 occurrences have been replaced", replace_count), replace_count); result = true; } m_status_bar.add_info_message(message, 5); return result; } bool Gobby::FindDialog::find_and_select(const GtkTextIter* from, SearchDirection direction) { SessionView* view = m_folder.get_current_document(); TextSessionView* text_view = dynamic_cast(view); g_assert(text_view != NULL); const GtkTextIter* real_begin = from; GtkTextIter insert_iter; // Search from cursor position if from is not given if(from == NULL) { GtkTextBuffer* buffer = GTK_TEXT_BUFFER(text_view->get_text_buffer()); GtkTextMark* mark = gtk_text_buffer_get_insert(buffer); gtk_text_buffer_get_iter_at_mark(buffer, &insert_iter, mark); real_begin = &insert_iter; } GtkTextIter match_start, match_end; if(find_wrap(real_begin, direction, &match_start, &match_end)) { if(direction == SEARCH_FORWARD) text_view->set_selection(&match_end, &match_start); else text_view->set_selection(&match_start, &match_end); return true; } return false; } bool Gobby::FindDialog::find_wrap(const GtkTextIter* from, SearchDirection direction, GtkTextIter* match_start, GtkTextIter* match_end) { SessionView* view = m_folder.get_current_document(); TextSessionView* text_view = dynamic_cast(view); g_assert(text_view != NULL); GtkTextIter start_pos = *from; bool result = find_range(&start_pos, NULL, direction, match_start, match_end); if(result == true) return true; if(!m_check_wrap_around.get_active()) return false; // Wrap around GtkTextIter restart_pos; GtkTextBuffer* buffer = GTK_TEXT_BUFFER(text_view->get_text_buffer()); if(direction == SEARCH_FORWARD) gtk_text_buffer_get_start_iter(buffer, &restart_pos); else gtk_text_buffer_get_end_iter(buffer, &restart_pos); // Limit to search to: Normally the position where we started. GtkTextIter* relimit = &start_pos; if(direction == SEARCH_BACKWARD) { // ??? gtk_text_iter_forward_chars(&start_pos, get_find_text().length()); if(gtk_text_iter_is_end(&start_pos)) relimit = NULL; } return find_range(&restart_pos, relimit, direction, match_start, match_end); } bool Gobby::FindDialog::find_range(const GtkTextIter* from, const GtkTextIter* to, SearchDirection direction, GtkTextIter* match_start, GtkTextIter* match_end) { GtkTextIter start_pos = *from; while(find_range_once(&start_pos, to, direction, match_start, match_end)) { if(m_check_whole_word.get_active() ) { if(!gtk_text_iter_starts_word(match_start) || !gtk_text_iter_ends_word(match_end)) { if(direction == SEARCH_FORWARD) start_pos = *match_end; else start_pos = *match_start; continue; } } return true; } return false; } bool Gobby::FindDialog::find_range_once(const GtkTextIter* from, const GtkTextIter* to, SearchDirection direction, GtkTextIter* match_start, GtkTextIter* match_end) { GtkCompat::TextSearchFlags flags = GtkCompat::TextSearchFlags(0); if(!m_check_case.get_active() ) flags = GtkCompat::TEXT_SEARCH_CASE_INSENSITIVE; TextSearchFunc search_func = (direction == SEARCH_FORWARD ? GtkCompat::text_iter_forward_search : GtkCompat::text_iter_backward_search); Glib::ustring find_str = m_entry_find.get_text(); gboolean result = search_func( from, find_str.c_str(), flags, match_start, match_end, to != NULL ? to : NULL ); return result; } void Gobby::FindDialog::update_sensitivity() { SessionView* view = m_folder.get_current_document(); TextSessionView* text_view = dynamic_cast(view); bool find_sensitivity = (!m_entry_find.get_text().empty() && text_view != NULL); bool replace_sensitivity = (find_sensitivity && text_view->get_active_user() != NULL); set_response_sensitive(RESPONSE_FIND, find_sensitivity); set_response_sensitive(RESPONSE_REPLACE, replace_sensitivity); set_response_sensitive(RESPONSE_REPLACE_ALL, replace_sensitivity); } gobby-0.4.94/code/dialogs/document-location-dialog.cpp0000644000175000017500000001746011531722663017572 00000000000000/* Gobby - GTK-based collaborative text editor * Copyright (C) 2008-2011 Armin Burgmeier * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "dialogs/document-location-dialog.hpp" #include "util/i18n.hpp" #include "util/gtk-compat.hpp" #include Gobby::DocumentLocationDialog::DocumentLocationDialog(Gtk::Window& parent, InfGtkBrowserModel* m): Gtk::Dialog("", parent), m_box(false, 6), m_name_box(false, 6), m_name_label(_("Document Name:"), GtkCompat::ALIGN_RIGHT), m_location_label("", GtkCompat::ALIGN_LEFT), m_filter_model(inf_gtk_browser_model_filter_new(m)), m_view(INF_GTK_BROWSER_VIEW(inf_gtk_browser_view_new_with_model( INF_GTK_BROWSER_MODEL(m_filter_model)))) { // Default is single document mode: set_single_document_mode(); m_name_label.show(); m_name_entry.show(); m_name_entry.set_activates_default(true); m_location_label.show(); gtk_widget_show(GTK_WIDGET(m_view)); gtk_container_add(GTK_CONTAINER(m_scroll.gobj()), GTK_WIDGET(m_view)); m_scroll.set_policy(Gtk::POLICY_AUTOMATIC, Gtk::POLICY_AUTOMATIC); m_scroll.set_shadow_type(Gtk::SHADOW_IN); m_scroll.show(); m_name_box.pack_start(m_name_label, Gtk::PACK_SHRINK); m_name_box.pack_start(m_name_entry, Gtk::PACK_EXPAND_WIDGET); m_name_box.show(); m_box.pack_start(m_name_box, Gtk::PACK_SHRINK); m_box.pack_start(m_location_label, Gtk::PACK_SHRINK); m_box.pack_start(m_scroll, Gtk::PACK_EXPAND_WIDGET); m_box.show(); g_signal_connect(m_view, "selection-changed", G_CALLBACK(on_selection_changed_static), this); g_signal_connect(m_filter_model, "row-changed", G_CALLBACK(on_row_changed_static), this); // Hide non-subdirectories: gtk_tree_model_filter_set_visible_func( GTK_TREE_MODEL_FILTER(m_filter_model), filter_visible_func_static, this, NULL); // Required to filter initial content: gtk_tree_model_filter_refilter(GTK_TREE_MODEL_FILTER(m_filter_model)); get_vbox()->pack_start(m_box, Gtk::PACK_EXPAND_WIDGET); add_button(Gtk::Stock::CANCEL, Gtk::RESPONSE_CANCEL); add_button(Gtk::Stock::OPEN, Gtk::RESPONSE_ACCEPT); set_response_sensitive(Gtk::RESPONSE_ACCEPT, false); set_default_response(Gtk::RESPONSE_ACCEPT); set_default_size(-1, 480); set_border_width(12); } Gobby::DocumentLocationDialog::~DocumentLocationDialog() { g_object_unref(m_filter_model); m_filter_model = NULL; } Glib::ustring Gobby::DocumentLocationDialog::get_document_name() const { return m_name_entry.get_text(); } void Gobby::DocumentLocationDialog::set_document_name( const Glib::ustring& document_name) { m_name_entry.set_text(document_name); } InfcBrowser* Gobby::DocumentLocationDialog::get_selected_directory( InfcBrowserIter* iter) const { GtkTreeIter tree_iter; if(inf_gtk_browser_view_get_selected(m_view, &tree_iter)) { InfGtkBrowserModelStatus status = INF_GTK_BROWSER_MODEL_CONNECTED; GtkTreeIter dummy_iter; if(!gtk_tree_model_iter_parent(GTK_TREE_MODEL(m_filter_model), &dummy_iter, &tree_iter)) { gtk_tree_model_get( GTK_TREE_MODEL(m_filter_model), &tree_iter, INF_GTK_BROWSER_MODEL_COL_STATUS, &status, -1); } if(status == INF_GTK_BROWSER_MODEL_CONNECTED) { InfcBrowserIter* browser_iter; InfcBrowser* browser; gtk_tree_model_get( GTK_TREE_MODEL(m_filter_model), &tree_iter, INF_GTK_BROWSER_MODEL_COL_BROWSER, &browser, INF_GTK_BROWSER_MODEL_COL_NODE, &browser_iter, -1); *iter = *browser_iter; infc_browser_iter_free(browser_iter); g_object_unref(browser); return browser; } else { return NULL; } } else { return NULL; } } InfGtkBrowserModel* Gobby::DocumentLocationDialog::get_browser_model() const { return INF_GTK_BROWSER_MODEL( gtk_tree_model_filter_get_model( GTK_TREE_MODEL_FILTER(m_filter_model))); } void Gobby::DocumentLocationDialog::set_single_document_mode() { set_title(_("Select document's target location")); m_location_label.set_text( _("Choose a directory to create the document into:")); m_name_box.show(); } void Gobby::DocumentLocationDialog::set_multiple_document_mode() { set_title(_("Select documents' target location")); m_location_label.set_text( _("Choose a directory to create the documents into:")); m_name_box.hide(); } void Gobby::DocumentLocationDialog::on_show() { Gtk::Dialog::on_show(); if (GtkCompat::is_visible(m_name_box)) { m_name_entry.select_region(0, m_name_entry.get_text_length()); m_name_entry.grab_focus(); } else { gtk_widget_grab_focus(GTK_WIDGET(m_view)); } } void Gobby::DocumentLocationDialog::on_selection_changed(GtkTreeIter* iter) { gboolean accept_sensitive = false; if(iter != NULL) { GtkTreeIter dummy_iter; if(gtk_tree_model_iter_parent(GTK_TREE_MODEL(m_filter_model), &dummy_iter, iter)) { // Child: Always OK accept_sensitive = true; } else { // Top-level node: Check status InfGtkBrowserModelStatus status; gtk_tree_model_get(GTK_TREE_MODEL(m_filter_model), iter, INF_GTK_BROWSER_MODEL_COL_STATUS, &status, -1); accept_sensitive = (status == INF_GTK_BROWSER_MODEL_CONNECTED); } } set_response_sensitive(Gtk::RESPONSE_ACCEPT, accept_sensitive); } void Gobby::DocumentLocationDialog::on_row_changed(GtkTreePath* path, GtkTreeIter* iter) { // If a toplevel entry is selected, and the status changed to // connected, then make the Accept button sensitive. On the other // hand, if status changed to something else, then // make it insensitive. GtkTreeIter sel_iter; if(inf_gtk_browser_view_get_selected(m_view, &sel_iter)) { // We cannot compare the iterators directly here, since // GtkTreeModelFilter seems to allow two iterators pointing to // the same row but having a different user_data3 field. We // therefore compare the paths instead. GtkTreePath* sel_path = gtk_tree_model_get_path( GTK_TREE_MODEL(m_filter_model), &sel_iter); if(gtk_tree_path_compare(path, sel_path) == 0) { GtkTreeIter dummy_iter; if(!gtk_tree_model_iter_parent( GTK_TREE_MODEL(m_filter_model), &dummy_iter, iter)) { InfGtkBrowserModelStatus s; gtk_tree_model_get( GTK_TREE_MODEL(m_filter_model), iter, INF_GTK_BROWSER_MODEL_COL_STATUS, &s, -1); set_response_sensitive( Gtk::RESPONSE_ACCEPT, s == INF_GTK_BROWSER_MODEL_CONNECTED ); } } gtk_tree_path_free(sel_path); } } bool Gobby::DocumentLocationDialog::filter_visible_func(GtkTreeModel* model, GtkTreeIter* iter) { GtkTreeIter dummy_iter; if(!gtk_tree_model_iter_parent(model, &dummy_iter, iter)) { return true; } else { InfcBrowserIter* browser_iter; InfcBrowser* browser; gtk_tree_model_get( model, iter, INF_GTK_BROWSER_MODEL_COL_BROWSER, &browser, INF_GTK_BROWSER_MODEL_COL_NODE, &browser_iter, -1); bool result = infc_browser_iter_is_subdirectory(browser, browser_iter); infc_browser_iter_free(browser_iter); g_object_unref(browser); return result; } } gobby-0.4.94/code/dialogs/Makefile.am0000644000175000017500000000133611531722663014234 00000000000000noinst_LIBRARIES = libgobby-dialogs.a libgobby_dialogs_a_SOURCES = \ connection-dialog.cpp \ document-location-dialog.cpp \ entry-dialog.cpp \ find-dialog.cpp \ goto-dialog.cpp \ initial-dialog.cpp \ open-location-dialog.cpp \ password-dialog.cpp \ preferences-dialog.cpp noinst_HEADERS = \ connection-dialog.hpp \ document-location-dialog.hpp \ entry-dialog.hpp \ find-dialog.hpp \ goto-dialog.hpp \ initial-dialog.hpp \ open-location-dialog.hpp \ password-dialog.hpp \ preferences-dialog.hpp appicondir = $(datadir)/pixmaps pixmapdir = $(datadir)/pixmaps/gobby-0.5 AM_CPPFLAGS = $(gobby_CFLAGS) $(unique_CFLAGS) $(infinote_CFLAGS) \ -I$(top_srcdir)/code gobby-0.4.94/code/dialogs/find-dialog.hpp0000644000175000017500000000745711531722663015100 00000000000000/* Gobby - GTK-based collaborative text editor * Copyright (C) 2008-2011 Armin Burgmeier * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GOBBY_FINDDIALOG_HPP_ #define _GOBBY_FINDDIALOG_HPP_ #include "core/folder.hpp" #include "core/statusbar.hpp" #include "core/sessionview.hpp" #include #include #include #include #include #include namespace Gobby { class FindDialog: public Gtk::Dialog { public: typedef sigc::signal SignalFindTextChanged; typedef sigc::signal SignalReplaceTextChanged; FindDialog(Gtk::Window& parent, Folder& folder, StatusBar& status_bar); ~FindDialog(); bool get_search_only() const; void set_search_only(bool search_only); Glib::ustring get_find_text() const; Glib::ustring get_replace_text() const; bool find_next(); bool find_previous(); SignalFindTextChanged signal_find_text_changed() const { return m_signal_find_text_changed; } SignalReplaceTextChanged signal_replace_text_changed() const { return m_signal_replace_text_changed; } protected: enum SearchDirection { SEARCH_FORWARD, SEARCH_BACKWARD }; virtual void on_show(); virtual void on_response(int id); void on_document_changed(SessionView* view); void on_active_user_changed(InfUser* user); void on_find_text_changed(); void on_replace_text_changed(); SearchDirection get_direction() const; bool find(); bool replace(); bool replace_all(); // Searches for an occurence with the provided options, selecting the // result, if any. bool find_and_select(const GtkTextIter* from, SearchDirection direction); // Searches for a occurence, beginning from from, and wrapping around // if the corresponding checkbutton is checked. bool find_wrap(const GtkTextIter* from, SearchDirection direction, GtkTextIter* match_start, GtkTextIter* match_end); // Searches for an occurence in the given range bool find_range(const GtkTextIter* from, const GtkTextIter* to, SearchDirection direction, GtkTextIter* match_start, GtkTextIter* match_end); // Searches for an occurence, ignoring whole word only option bool find_range_once(const GtkTextIter* from, const GtkTextIter* to, SearchDirection direction, GtkTextIter* match_start, GtkTextIter* match_end); Folder& m_folder; StatusBar& m_status_bar; sigc::connection m_active_user_changed_connection; Gtk::VBox m_box_main; Gtk::Table m_table_entries; Gtk::Label m_label_find; Gtk::Label m_label_replace; Gtk::Entry m_entry_find; Gtk::Entry m_entry_replace; Gtk::CheckButton m_check_case; Gtk::CheckButton m_check_whole_word; Gtk::CheckButton m_check_backwards; Gtk::CheckButton m_check_wrap_around; Gtk::Button* m_button_replace; Gtk::Button* m_button_replace_all; SignalFindTextChanged m_signal_find_text_changed; SignalReplaceTextChanged m_signal_replace_text_changed; private: void update_sensitivity(); }; } #endif // _GOBBY_FINDDIALOG_HPP_ gobby-0.4.94/code/dialogs/preferences-dialog.hpp0000644000175000017500000001445611531722663016456 00000000000000/* Gobby - GTK-based collaborative text editor * Copyright (C) 2008-2011 Armin Burgmeier * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GOBBY_PREFERENCESDIALOG_HPP_ #define _GOBBY_PREFERENCESDIALOG_HPP_ #include "core/preferences.hpp" #include "core/huebutton.hpp" #include #include #include #include #include #include #include #include #include #include #include #include #include namespace Gobby { template class PreferencesComboBox: public Gtk::ComboBox { public: PreferencesComboBox(Preferences::Option& option): m_option(option), m_store(Gtk::ListStore::create(m_columns)) { set_model(m_store); Gtk::CellRendererText* renderer = Gtk::manage(new Gtk::CellRendererText); pack_start(*renderer, true); add_attribute(renderer->property_text(), m_columns.text); } void add(const Glib::ustring& text, const OptionType& value) { Gtk::TreeIter iter = m_store->append(); (*iter)[m_columns.text] = text; (*iter)[m_columns.value] = value; if(m_option == value) set_active(iter); } private: class Columns: public Gtk::TreeModelColumnRecord { public: Gtk::TreeModelColumn text; Gtk::TreeModelColumn value; Columns() { add(text); add(value); } }; virtual void on_changed() { Gtk::ComboBox::on_changed(); OptionType value = (*get_active())[m_columns.value]; if(m_option != value) m_option = value; } Preferences::Option& m_option; Columns m_columns; Glib::RefPtr m_store; }; class PreferencesDialog : public Gtk::Dialog { public: template class ComboColumns: public Gtk::TreeModelColumnRecord { }; class Group: public Gtk::Frame { public: Group(const Glib::ustring& title); void add(Gtk::Widget& widget); protected: Gtk::Alignment m_alignment; Gtk::VBox m_box; }; class Page: public Gtk::Frame { public: Page(); void add(Gtk::Widget& widget, bool expand); protected: Gtk::VBox m_box; }; class User: public Page { public: User(Gtk::Window& parent, Preferences& preferences); protected: Group m_group_settings; Group m_group_paths; Group m_group_remote; Gtk::HBox m_box_user_name; Gtk::Label m_lbl_user_name; Gtk::Entry m_ent_user_name; Gtk::HBox m_box_user_color; Gtk::Label m_lbl_user_color; HueButton m_btn_user_color; Gtk::HBox m_box_path_host_directory; Gtk::Label m_lbl_path_host_directory; Gtk::FileChooserButton m_btn_path_host_directory; Gtk::CheckButton m_btn_remote_show_cursors; Gtk::CheckButton m_btn_remote_show_selections; Gtk::CheckButton m_btn_remote_show_current_lines; Gtk::CheckButton m_btn_remote_show_cursor_positions; Glib::RefPtr m_size_group; }; class Editor: public Page { public: Editor(Preferences& preferences); protected: void on_autosave_enabled_toggled(); Group m_group_tab; Group m_group_indentation; Group m_group_homeend; Group m_group_saving; Gtk::HBox m_box_tab_width; Gtk::Label m_lbl_tab_width; Gtk::SpinButton m_ent_tab_width; Gtk::CheckButton m_btn_tab_spaces; Gtk::CheckButton m_btn_indentation_auto; Gtk::CheckButton m_btn_homeend_smart; Gtk::CheckButton m_btn_autosave_enabled; Gtk::HBox m_box_autosave_interval; Gtk::Label m_lbl_autosave_interval; Gtk::Label m_lbl_autosave_interval_suffix; Gtk::SpinButton m_ent_autosave_interval; }; class View: public Page { public: View(Preferences& preferences); void set(Preferences::View& view) const; protected: void on_wrap_text_toggled(); void on_margin_display_toggled(); Group m_group_wrap; Group m_group_linenum; Group m_group_curline; Group m_group_margin; Group m_group_bracket; Group m_group_spaces; Gtk::CheckButton m_btn_wrap_text; Gtk::CheckButton m_btn_wrap_words; Gtk::CheckButton m_btn_linenum_display; Gtk::CheckButton m_btn_curline_highlight; Gtk::CheckButton m_btn_margin_display; Gtk::HBox m_box_margin_pos; Gtk::Label m_lbl_margin_pos; Gtk::SpinButton m_ent_margin_pos; Gtk::CheckButton m_btn_bracket_highlight; PreferencesComboBox m_cmb_spaces_display; }; class Appearance: public Page { public: Appearance(Preferences& preferences); protected: class Columns: public Gtk::TreeModelColumnRecord { public: Gtk::TreeModelColumn scheme; Gtk::TreeModelColumn name; Gtk::TreeModelColumn description; Columns() { add(scheme); add(name); add(description); } }; void on_scheme_changed(Preferences& preferences); Group m_group_toolbar; Group m_group_font; Group m_group_scheme; PreferencesComboBox m_cmb_toolbar_style; Gtk::FontButton m_btn_font; Columns m_columns; Glib::RefPtr m_list; Gtk::TreeView m_tree; }; class Security: public Page { public: Security(Preferences& preferences); protected: Group m_group_trust_file; Group m_group_connection_policy; Gtk::FileChooserButton m_btn_path_trust_file; PreferencesComboBox m_cmb_connection_policy; }; PreferencesDialog(Gtk::Window& parent, Preferences& preferences); protected: virtual void on_response(int id); Preferences& m_preferences; Gtk::Notebook m_notebook; User m_page_user; Editor m_page_editor; View m_page_view; Appearance m_page_appearance; Security m_page_security; }; } #endif // _GOBBY_PREFERENCESDIALOG_HPP_ gobby-0.4.94/code/dialogs/entry-dialog.cpp0000644000175000017500000000404111531722663015276 00000000000000/* Gobby - GTK-based collaborative text editor * Copyright (C) 2008-2011 Armin Burgmeier * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "dialogs/entry-dialog.hpp" #include "util/gtk-compat.hpp" Gobby::EntryDialog::EntryDialog(Gtk::Window& parent, const Glib::ustring& title, const Glib::ustring& intro_text): Gtk::Dialog(title, parent), m_box(false, 6), m_intro_label(intro_text, GtkCompat::ALIGN_RIGHT, Gtk::ALIGN_CENTER, true) { m_intro_label.set_mnemonic_widget(m_entry); m_box.pack_start(m_intro_label, Gtk::PACK_EXPAND_WIDGET); m_intro_label.show(); m_entry.set_activates_default(true); m_box.pack_start(m_entry, Gtk::PACK_EXPAND_WIDGET); m_entry.show(); m_box.show(); get_vbox()->set_spacing(6); get_vbox()->pack_start(m_box, Gtk::PACK_EXPAND_WIDGET); set_resizable(false); set_border_width(12); } Glib::ustring Gobby::EntryDialog::get_text() const { return m_entry.get_text(); } void Gobby::EntryDialog::set_text(const Glib::ustring& text) { m_entry.set_text(text); } void Gobby::EntryDialog::on_show() { Gtk::Dialog::on_show(); // We can't do this in the constructor, because the buttons are added // by the caller after the widget has been constructed. set_default_response(Gtk::RESPONSE_ACCEPT); m_entry.select_region(0, m_entry.get_text().length()); m_entry.grab_focus(); } gobby-0.4.94/code/dialogs/initial-dialog.hpp0000644000175000017500000000324211531722663015575 00000000000000/* Gobby - GTK-based collaborative text editor * Copyright (C) 2008-2011 Armin Burgmeier * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GOBBY_INITIALDIALOG_HPP_ #define _GOBBY_INITIALDIALOG_HPP_ #include "core/preferences.hpp" #include "core/iconmanager.hpp" #include "core/huebutton.hpp" #include #include #include #include #include #include namespace Gobby { class InitialDialog : public Gtk::Dialog { public: InitialDialog(Gtk::Window& parent, Preferences& preferences, const IconManager& icon_manager); protected: virtual void on_response(int id); Preferences& m_preferences; Gtk::VBox m_topbox; Gtk::Label m_title; Gtk::HBox m_hbox; Gtk::Image m_image; Gtk::VBox m_vbox; Gtk::Label m_intro; Gtk::Table m_table; Gtk::Label m_name_label; Gtk::Entry m_name_entry; Gtk::Label m_color_label; HueButton m_color_button; }; } #endif // _GOBBY_INITIALDIALOG_HPP_ gobby-0.4.94/code/dialogs/goto-dialog.cpp0000644000175000017500000001001511531722663015103 00000000000000/* Gobby - GTK-based collaborative text editor * Copyright (C) 2008-2011 Armin Burgmeier * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "dialogs/goto-dialog.hpp" #include "util/i18n.hpp" #include "util/gtk-compat.hpp" #include #include #include Gobby::GotoDialog::GotoDialog(Gtk::Window& parent, Folder& folder): Gtk::Dialog(_("Go to line"), parent), m_folder(folder), m_table(1, 2), m_label_line(_("Line _number:"), GtkCompat::ALIGN_LEFT, Gtk::ALIGN_CENTER, true), m_current_view(NULL) { m_label_line.set_mnemonic_widget(m_entry_line); m_label_line.show(); m_entry_line.set_increments(1, 10); m_entry_line.set_activates_default(true); m_entry_line.show(); m_table.attach(m_label_line, 0, 1, 0, 1, Gtk::FILL, Gtk::FILL); m_table.attach(m_entry_line, 1, 2, 0, 1, Gtk::EXPAND | Gtk::FILL, Gtk::SHRINK); m_table.set_spacings(12); m_table.show(); get_vbox()->pack_start(m_table, Gtk::PACK_EXPAND_WIDGET); add_button(Gtk::Stock::CLOSE, Gtk::RESPONSE_CLOSE); Gtk::Button* button = add_button(_("Go To _Line"), Gtk::RESPONSE_ACCEPT); button->set_image(*Gtk::manage(new Gtk::Image( Gtk::Stock::JUMP_TO, Gtk::ICON_SIZE_BUTTON))); m_folder.signal_document_changed().connect( sigc::mem_fun(*this, &GotoDialog::on_document_changed)); set_default_response(Gtk::RESPONSE_ACCEPT); set_border_width(12); set_resizable(false); // For initial sensitivity: on_document_changed(m_folder.get_current_document()); } Gobby::GotoDialog::~GotoDialog() { on_document_changed(NULL); } void Gobby::GotoDialog::on_show() { Gtk::Dialog::on_show(); m_entry_line.grab_focus(); if(m_current_view != NULL) { GtkTextBuffer* buffer = GTK_TEXT_BUFFER( m_current_view->get_text_buffer()); GtkTextIter cursor; gtk_text_buffer_get_iter_at_mark( buffer, &cursor, gtk_text_buffer_get_insert(buffer)); m_entry_line.set_value(gtk_text_iter_get_line(&cursor) + 1); m_entry_line.select_region( 0, m_entry_line.get_text().length()); } } void Gobby::GotoDialog::on_response(int id) { if(id == Gtk::RESPONSE_ACCEPT) { g_assert(m_current_view != NULL); int value = m_entry_line.get_value_as_int(); GtkTextBuffer* buffer = GTK_TEXT_BUFFER( m_current_view->get_text_buffer()); GtkTextIter begin; gtk_text_buffer_get_iter_at_line(buffer, &begin, value - 1); m_current_view->set_selection(&begin, &begin); } else if(id == Gtk::RESPONSE_CLOSE) { hide(); } Gtk::Dialog::on_response(id); } void Gobby::GotoDialog::on_document_changed(SessionView* view) { if(m_current_view != NULL) { GtkTextBuffer* buffer = GTK_TEXT_BUFFER( m_current_view->get_text_buffer()); g_signal_handler_disconnect(buffer, m_changed_handler); } m_current_view = dynamic_cast(view); set_response_sensitive(Gtk::RESPONSE_ACCEPT, m_current_view != NULL); m_entry_line.set_sensitive(m_current_view != NULL); if(m_current_view != NULL) { GtkTextBuffer* buffer = GTK_TEXT_BUFFER( m_current_view->get_text_buffer()); m_changed_handler = g_signal_connect_after( G_OBJECT(buffer), "changed", G_CALLBACK(on_changed_static), this); on_changed(); } } void Gobby::GotoDialog::on_changed() { g_assert(m_current_view != NULL); GtkTextBuffer* buffer = GTK_TEXT_BUFFER( m_current_view->get_text_buffer()); m_entry_line.set_range(1, gtk_text_buffer_get_line_count(buffer)); } gobby-0.4.94/code/dialogs/open-location-dialog.cpp0000644000175000017500000000516211531722663016711 00000000000000/* Gobby - GTK-based collaborative text editor * Copyright (C) 2008-2011 Armin Burgmeier * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "dialogs/open-location-dialog.hpp" #include "util/file.hpp" #include "util/i18n.hpp" #include "util/gtk-compat.hpp" #include "features.hpp" Gobby::OpenLocationDialog::OpenLocationDialog(Gtk::Window& parent): Gtk::Dialog(_("Open Location"), parent), m_box(false, 6), m_label(_("Enter the _location (URI) of the file you would " "like to open:"), GtkCompat::ALIGN_LEFT, Gtk::ALIGN_CENTER, true), m_combo(config_filename("recent_uris"), 8) { m_label.set_mnemonic_widget(m_combo); m_box.pack_start(m_label, Gtk::PACK_SHRINK); m_label.show(); m_combo.get_entry()->set_activates_default(true); m_box.pack_start(m_combo, Gtk::PACK_SHRINK); m_combo.show(); m_combo.get_entry()->signal_changed().connect( sigc::mem_fun(*this, &OpenLocationDialog::on_entry_changed)); m_box.show(); get_vbox()->set_spacing(6); get_vbox()->pack_start(m_box, Gtk::PACK_EXPAND_WIDGET); set_resizable(false); set_border_width(12); } Glib::ustring Gobby::OpenLocationDialog::get_uri() const { return m_combo.get_entry()->get_text(); } void Gobby::OpenLocationDialog::set_uri(const Glib::ustring& uri) { m_combo.get_entry()->set_text(uri); } void Gobby::OpenLocationDialog::on_response(int response_id) { if(response_id == Gtk::RESPONSE_ACCEPT) m_combo.commit(); Gtk::Dialog::on_response(response_id); } void Gobby::OpenLocationDialog::on_show() { Gtk::Dialog::on_show(); // We can't do this in the constructor, because the buttons are added // by the caller after the widget has been constructed. set_default_response(Gtk::RESPONSE_ACCEPT); on_entry_changed(); m_combo.get_entry()->select_region( 0, m_combo.get_entry()->get_text().length()); m_combo.grab_focus(); } void Gobby::OpenLocationDialog::on_entry_changed() { set_response_sensitive( Gtk::RESPONSE_ACCEPT, !m_combo.get_entry()->get_text().empty()); } gobby-0.4.94/code/dialogs/document-location-dialog.hpp0000644000175000017500000000575111531722663017577 00000000000000/* Gobby - GTK-based collaborative text editor * Copyright (C) 2008-2011 Armin Burgmeier * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GOBBY_DOCUMENTLOCATIONDIALOG_HPP_ #define _GOBBY_DOCUMENTLOCATIONDIALOG_HPP_ #include #include #include #include #include #include #include #include namespace Gobby { class DocumentLocationDialog : public Gtk::Dialog { public: DocumentLocationDialog(Gtk::Window& parent, InfGtkBrowserModel* model); ~DocumentLocationDialog(); Glib::ustring get_document_name() const; void set_document_name(const Glib::ustring& document_name); InfcBrowser* get_selected_directory(InfcBrowserIter* iter) const; InfGtkBrowserModel* get_browser_model() const; void set_single_document_mode(); void set_multiple_document_mode(); protected: virtual void on_show(); static void on_selection_changed_static(InfGtkBrowserView* view, GtkTreeIter* iter, gpointer user_data) { static_cast( user_data)->on_selection_changed(iter); } static void on_row_changed_static(GtkTreeModel* model, GtkTreePath* path, GtkTreeIter* iter, gpointer user_data) { static_cast( user_data)->on_row_changed(path, iter); } static gboolean filter_visible_func_static(GtkTreeModel* model, GtkTreeIter* iter, gpointer user_data) { return static_cast( user_data)->filter_visible_func(model, iter); } void on_selection_changed(GtkTreeIter* iter); void on_row_changed(GtkTreePath* path, GtkTreeIter* iter); bool filter_visible_func(GtkTreeModel* model, GtkTreeIter* iter); Gtk::VBox m_box; Gtk::HBox m_name_box; Gtk::Label m_name_label; Gtk::Entry m_name_entry; Gtk::Label m_location_label; InfGtkBrowserModelFilter* m_filter_model; Gtk::ScrolledWindow m_scroll; InfGtkBrowserView* m_view; }; } #endif // _GOBBY_DOCUMENTLOCATIONDIALOG_HPP_ gobby-0.4.94/code/dialogs/initial-dialog.cpp0000644000175000017500000001053411531722663015572 00000000000000/* Gobby - GTK-based collaborative text editor * Copyright (C) 2008-2011 Armin Burgmeier * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "dialogs/initial-dialog.hpp" #include "util/color.hpp" #include "util/i18n.hpp" #include "util/gtk-compat.hpp" #include "features.hpp" #include #include namespace { Gtk::Widget* align_top(Gtk::Widget& widget) { Gtk::Alignment* alignment = new Gtk::Alignment(Gtk::ALIGN_CENTER, Gobby::GtkCompat::ALIGN_TOP, 1.0, 0.0); alignment->add(widget); alignment->show(); return Gtk::manage(alignment); } } Gobby::InitialDialog::InitialDialog(Gtk::Window& parent, Preferences& preferences, const IconManager& icon_manager): Gtk::Dialog("Gobby", parent), m_preferences(preferences), m_hbox(false, 12), m_vbox(false, 12), m_table(2, 2), m_color_button(_("Choose a user color"), *this) { m_title.set_markup( "" + Glib::Markup::escape_text(_("Welcome to Gobby")) + ""); m_title.show(); m_image.set_from_icon_name("gobby-0.5", Gtk::ICON_SIZE_DIALOG); m_image.set_alignment(Gtk::ALIGN_CENTER, GtkCompat::ALIGN_TOP); m_image.show(); m_intro.set_text( _("Before we start, a few options need to be configured. " "You can later change them by choosing Edit ▸ Preferences " "from the menu.")); m_intro.set_line_wrap(true); m_intro.show(); m_name_label.set_markup( "" + Glib::Markup::escape_text(_("User Name")) + "" "\n\n" + Glib::Markup::escape_text(_("Your name as shown to " "other users.")) + ""); m_name_label.set_alignment(GtkCompat::ALIGN_LEFT); m_name_label.set_line_wrap(true); m_name_label.set_width_chars(20); m_name_label.show(); m_color_label.set_markup( "" + Glib::Markup::escape_text(_("User Color")) + "" "\n\n" + Glib::Markup::escape_text(_("The color with which text you " "have written is branded.")) + ""); m_color_label.set_alignment(GtkCompat::ALIGN_LEFT); m_color_label.set_line_wrap(true); m_color_label.set_width_chars(20); m_color_label.show(); m_name_entry.set_text(preferences.user.name); m_name_entry.set_activates_default(true); m_name_entry.show(); m_color_button.set_hue(preferences.user.hue); m_color_button.set_saturation(0.35); m_color_button.set_value(1.0); m_color_button.show(); m_table.set_row_spacings(12); m_table.attach(m_name_label, 0, 1, 0, 1, Gtk::FILL | Gtk::SHRINK, Gtk::FILL | Gtk::SHRINK); m_table.attach(*align_top(m_name_entry), 1, 2, 0, 1, Gtk::FILL | Gtk::EXPAND, Gtk::FILL | Gtk::SHRINK); m_table.attach(m_color_label, 0, 1, 1, 2, Gtk::FILL | Gtk::SHRINK, Gtk::FILL | Gtk::SHRINK); m_table.attach(*align_top(m_color_button), 1, 2, 1, 2, Gtk::FILL | Gtk::EXPAND, Gtk::FILL | Gtk::SHRINK); m_table.show(); m_vbox.pack_start(m_intro, Gtk::PACK_SHRINK); m_vbox.pack_start(m_table, Gtk::PACK_EXPAND_WIDGET); m_vbox.show(); m_hbox.pack_start(m_image, Gtk::PACK_SHRINK); m_hbox.pack_start(m_vbox, Gtk::PACK_EXPAND_WIDGET); m_hbox.show(); m_topbox.pack_start(m_title, Gtk::PACK_SHRINK); m_topbox.pack_start(m_hbox, Gtk::PACK_EXPAND_WIDGET); m_topbox.set_spacing(24); m_topbox.set_border_width(12); m_topbox.show(); get_vbox()->pack_start(m_topbox, Gtk::PACK_EXPAND_WIDGET); add_button(Gtk::Stock::CLOSE, Gtk::RESPONSE_CLOSE); } void Gobby::InitialDialog::on_response(int id) { m_preferences.user.name = m_name_entry.get_text(); m_preferences.user.hue = hue_from_gdk_color(m_color_button.get_color()); hide(); } gobby-0.4.94/code/operations/0000755000175000017500000000000011543672436013023 500000000000000gobby-0.4.94/code/operations/operation-delete.hpp0000644000175000017500000000366311531722663016717 00000000000000/* Gobby - GTK-based collaborative text editor * Copyright (C) 2008-2011 Armin Burgmeier * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GOBBY_OPERATIONS_OPERATIONDELETE_HPP_ #define _GOBBY_OPERATIONS_OPERATIONDELETE_HPP_ #include "operations/operations.hpp" namespace Gobby { class OperationDelete: public Operations::Operation { public: OperationDelete(Operations& operations, InfcBrowser* browser, const InfcBrowserIter* iter); virtual ~OperationDelete(); protected: static void on_request_failed_static(InfcNodeRequest* request, const GError* error, gpointer user_data) { static_cast(user_data)-> on_request_failed(error); } static void on_request_finished_static(InfcNodeRequest* request, InfcBrowserIter* iter, gpointer user_data) { static_cast(user_data)-> on_request_finished(iter); } void on_request_failed(const GError* error); void on_request_finished(InfcBrowserIter* iter); protected: Glib::ustring m_name; InfcNodeRequest* m_request; gulong m_finished_id; gulong m_failed_id; StatusBar::MessageHandle m_message_handle; }; } #endif // _GOBBY_OPERATIONS_OPERATIONDELETE_HPP_ gobby-0.4.94/code/operations/operation-new.hpp0000644000175000017500000000374611531722663016250 00000000000000/* Gobby - GTK-based collaborative text editor * Copyright (C) 2008-2011 Armin Burgmeier * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GOBBY_OPERATIONS_OPERATIONNEW_HPP_ #define _GOBBY_OPERATIONS_OPERATIONNEW_HPP_ #include "operations/operations.hpp" namespace Gobby { class OperationNew: public Operations::Operation { public: OperationNew(Operations& operations, InfcBrowser* browser, const InfcBrowserIter* parent, const Glib::ustring& name, bool directory); virtual ~OperationNew(); protected: static void on_request_failed_static(InfcNodeRequest* request, const GError* error, gpointer user_data) { static_cast(user_data)-> on_request_failed(error); } static void on_request_finished_static(InfcNodeRequest* request, InfcBrowserIter* iter, gpointer user_data) { static_cast(user_data)-> on_request_finished(iter); } void on_request_failed(const GError* error); void on_request_finished(InfcBrowserIter* iter); protected: Glib::ustring m_name; bool m_directory; InfcNodeRequest* m_request; gulong m_finished_id; gulong m_failed_id; StatusBar::MessageHandle m_message_handle; }; } #endif // _GOBBY_OPERATIONS_OPERATIONNEW_HPP_ gobby-0.4.94/code/operations/operation-open-multiple.cpp0000644000175000017500000001053011531722663020231 00000000000000/* Gobby - GTK-based collaborative text editor * Copyright (C) 2008-2011 Armin Burgmeier * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ // TODO: Show "Querying file name(s)..." in statusbar when querying file // names without actually opening a file because of waiting for the file name. #include "operations/operation-open-multiple.hpp" #include "operations/operation-open.hpp" #include "util/i18n.hpp" Gobby::OperationOpenMultiple::OperationOpenMultiple( Operations& operations, const Preferences& prefs, InfcBrowser* browser, const InfcBrowserIter* parent, unsigned int num_uris): Operation(operations), m_preferences(prefs), m_parent(browser, parent), m_num_uris(num_uris), m_current(NULL) { m_parent.signal_node_removed().connect( sigc::mem_fun(*this, &OperationOpenMultiple::on_node_removed)); } void Gobby::OperationOpenMultiple::add_uri(const Glib::ustring& uri, const char* name, const char* encoding) { g_assert(m_num_uris > 0); -- m_num_uris; Glib::RefPtr file = Gio::File::create_for_uri(uri); info_list::iterator iter = m_infos.insert(m_infos.end(), Info()); Info& info = *iter; info.uri = uri; info.encoding = encoding; if(name == NULL) { try { // Query file name file->query_info_async( sigc::bind( sigc::mem_fun( *this, &OperationOpenMultiple:: on_query_info), file, iter), G_FILE_ATTRIBUTE_STANDARD_DISPLAY_NAME); } catch(const Gio::Error& ex) { single_error(iter, ex.what()); } } else { info.name = name; if(!m_current) load_info(iter); } } void Gobby::OperationOpenMultiple::on_node_removed() { fatal_error(_("Parent folder was removed")); } void Gobby::OperationOpenMultiple::on_query_info( const Glib::RefPtr& result, const Glib::RefPtr& file, const info_list::iterator& info) { try { Glib::RefPtr file_info = file->query_info_finish(result); info->name = file_info->get_display_name(); if(!m_current) load_info(info); } catch(const Gio::Error& ex) { single_error(info, ex.what()); } } void Gobby::OperationOpenMultiple::on_finished( bool success, const info_list::iterator& info) { m_infos.erase(info); m_current = NULL; if(!m_num_uris && m_infos.empty()) { // All documents loaded finish(); } else { // Find the next info with name set for(info_list::iterator iter = m_infos.begin(); iter != m_infos.end(); ++iter) { if(!iter->name.empty()) { load_info(iter); break; } } // If no info was found, then wait for names to become // available, either by the user adding more uris via // add_uri(), or by query info results. } } void Gobby::OperationOpenMultiple::load_info(const info_list::iterator& iter) { g_assert(m_current == NULL); g_assert(!iter->name.empty()); m_current = m_operations.create_document( m_parent.get_browser(), &m_parent.get_browser_iter(), iter->name, m_preferences, iter->uri, iter->encoding); m_current->signal_finished().connect( sigc::bind( sigc::mem_fun( *this, &OperationOpenMultiple::on_finished), iter)); } void Gobby::OperationOpenMultiple::single_error( const info_list::iterator& iter, const Glib::ustring& message) { get_status_bar().add_error_message( Glib::ustring::compose( _("Failed to open document \"%1\""), iter->uri), message); m_infos.erase(iter); // Finish operation if there are no more URIs to load if(!m_num_uris && m_infos.empty()) finish(); } void Gobby::OperationOpenMultiple::fatal_error(const Glib::ustring& message) { get_status_bar().add_error_message( _("Failed to open multiple documents"), message); fail(); } gobby-0.4.94/code/operations/Makefile.in0000644000175000017500000003760011543672413015011 00000000000000# 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@ subdir = code/operations DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = $(top_builddir)/code/features.hpp CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = LIBRARIES = $(noinst_LIBRARIES) AR = ar ARFLAGS = cru AM_V_AR = $(am__v_AR_$(V)) am__v_AR_ = $(am__v_AR_$(AM_DEFAULT_VERBOSITY)) am__v_AR_0 = @echo " AR " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ libgobby_operations_a_AR = $(AR) $(ARFLAGS) libgobby_operations_a_LIBADD = am_libgobby_operations_a_OBJECTS = operations.$(OBJEXT) \ operation-delete.$(OBJEXT) operation-export-html.$(OBJEXT) \ operation-new.$(OBJEXT) operation-open.$(OBJEXT) \ operation-open-multiple.$(OBJEXT) operation-save.$(OBJEXT) libgobby_operations_a_OBJECTS = $(am_libgobby_operations_a_OBJECTS) DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/code depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) AM_V_CXX = $(am__v_CXX_$(V)) am__v_CXX_ = $(am__v_CXX_$(AM_DEFAULT_VERBOSITY)) am__v_CXX_0 = @echo " CXX " $@; CXXLD = $(CXX) CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \ -o $@ AM_V_CXXLD = $(am__v_CXXLD_$(V)) am__v_CXXLD_ = $(am__v_CXXLD_$(AM_DEFAULT_VERBOSITY)) am__v_CXXLD_0 = @echo " CXXLD " $@; AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; SOURCES = $(libgobby_operations_a_SOURCES) DIST_SOURCES = $(libgobby_operations_a_SOURCES) HEADERS = $(noinst_HEADERS) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALL_LINGUAS = @ALL_LINGUAS@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@ DOC_USER_FORMATS = @DOC_USER_FORMATS@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GMOFILES = @GMOFILES@ GMSGFMT = @GMSGFMT@ GREP = @GREP@ HELP_DIR = @HELP_DIR@ 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@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MKINSTALLDIRS = @MKINSTALLDIRS@ MSGFMT = @MSGFMT@ MSGFMT_OPTS = @MSGFMT_OPTS@ MSGMERGE = @MSGMERGE@ OBJEXT = @OBJEXT@ OMF_DIR = @OMF_DIR@ 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@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ WINDRES = @WINDRES@ 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_CXX = @ac_ct_CXX@ 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@ gobby_CFLAGS = @gobby_CFLAGS@ gobby_LIBS = @gobby_LIBS@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infinote_CFLAGS = @infinote_CFLAGS@ infinote_LIBS = @infinote_LIBS@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ 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@ unique_CFLAGS = @unique_CFLAGS@ unique_LIBS = @unique_LIBS@ noinst_LIBRARIES = libgobby-operations.a libgobby_operations_a_SOURCES = \ operations.cpp \ operation-delete.cpp \ operation-export-html.cpp \ operation-new.cpp \ operation-open.cpp \ operation-open-multiple.cpp \ operation-save.cpp noinst_HEADERS = \ operations.hpp \ operation-delete.hpp \ operation-export-html.hpp \ operation-new.hpp \ operation-open.hpp \ operation-open-multiple.hpp \ operation-save.hpp appicondir = $(datadir)/pixmaps pixmapdir = $(datadir)/pixmaps/gobby-0.5 AM_CPPFLAGS = $(gobby_CFLAGS) $(unique_CFLAGS) $(infinote_CFLAGS) \ -I$(top_srcdir)/code all: all-am .SUFFIXES: .SUFFIXES: .cpp .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(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) --gnu code/operations/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu code/operations/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: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstLIBRARIES: -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) libgobby-operations.a: $(libgobby_operations_a_OBJECTS) $(libgobby_operations_a_DEPENDENCIES) $(AM_V_at)-rm -f libgobby-operations.a $(AM_V_AR)$(libgobby_operations_a_AR) libgobby-operations.a $(libgobby_operations_a_OBJECTS) $(libgobby_operations_a_LIBADD) $(AM_V_at)$(RANLIB) libgobby-operations.a mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/operation-delete.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/operation-export-html.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/operation-new.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/operation-open-multiple.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/operation-open.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/operation-save.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/operations.Po@am__quote@ .cpp.o: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $< .cpp.obj: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags 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 $(LIBRARIES) $(HEADERS) installdirs: 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-noinstLIBRARIES mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: 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 -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-noinstLIBRARIES ctags distclean distclean-compile \ distclean-generic distclean-tags 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-ps install-ps-am install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \ uninstall-am # 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: gobby-0.4.94/code/operations/operation-delete.cpp0000644000175000017500000000430311531722663016702 00000000000000/* Gobby - GTK-based collaborative text editor * Copyright (C) 2008-2011 Armin Burgmeier * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "operations/operation-delete.hpp" #include "util/i18n.hpp" Gobby::OperationDelete::OperationDelete(Operations& operations, InfcBrowser* browser, const InfcBrowserIter* iter): Operation(operations), m_name(infc_browser_iter_get_name(browser, iter)) { m_request = infc_browser_remove_node(browser, iter); // Note infc_browser_remove_node does not return a // new reference. g_object_ref(m_request); m_failed_id = g_signal_connect( G_OBJECT(m_request), "failed", G_CALLBACK(on_request_failed_static), this); m_finished_id = g_signal_connect( G_OBJECT(m_request), "finished", G_CALLBACK(on_request_finished_static), this); m_message_handle = get_status_bar().add_info_message( Glib::ustring::compose(_("Removing node \"%1\"..."), m_name)); } Gobby::OperationDelete::~OperationDelete() { g_signal_handler_disconnect(G_OBJECT(m_request), m_finished_id); g_signal_handler_disconnect(G_OBJECT(m_request), m_failed_id); g_object_unref(m_request); get_status_bar().remove_message(m_message_handle); } void Gobby::OperationDelete::on_request_failed(const GError* error) { get_status_bar().add_error_message( Glib::ustring::compose(_("Failed to delete node \"%1\""), m_name), error->message); fail(); } void Gobby::OperationDelete::on_request_finished(InfcBrowserIter* iter) { finish(); } gobby-0.4.94/code/operations/operation-open.cpp0000644000175000017500000003001111531722663016374 00000000000000/* Gobby - GTK-based collaborative text editor * Copyright (C) 2008-2011 Armin Burgmeier * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "operations/operation-open.hpp" #include "core/noteplugin.hpp" #include "util/i18n.hpp" #include #include #include #include // memmove. Is there some C++ replacement for this? namespace { // These are the charsets that we try to convert a file from when // autodetecting the encoding. const char* get_autodetect_encoding(unsigned int index) { // Translators: This is the 8 bit encoding that is tried when // autodetecting a file's encoding. static const char* DEFAULT_8BIT_ENCODING = N_("ISO-8859-1"); static const char* ENCODINGS[] = { "UTF-8", DEFAULT_8BIT_ENCODING, "UTF-16", "UCS-2", "UCS-4" }; static const unsigned int N_ENCODINGS = sizeof(ENCODINGS)/sizeof(ENCODINGS[0]); if(index == 1) return Gobby::_(ENCODINGS[index]); if(index < N_ENCODINGS) return ENCODINGS[index]; return NULL; } } Gobby::OperationOpen::OperationOpen(Operations& operations, const Preferences& preferences, InfcBrowser* browser, const InfcBrowserIter* parent, const std::string& name, const std::string& uri, const char* encoding): Operation(operations), m_preferences(preferences), m_name(name), m_parent(browser, parent), m_encoding_auto_detect_index(-1), m_eol_style(DocumentInfoStorage::EOL_CR), m_request(NULL), m_finished_id(0), m_failed_id(0), m_raw_pos(0) { if(encoding != NULL) { m_encoding = encoding; } else { m_encoding_auto_detect_index = 0; m_encoding = get_autodetect_encoding(0); } m_iconv.reset(new Glib::IConv("UTF-8", m_encoding)); try { m_file = Gio::File::create_for_uri(uri); m_file->read_async(sigc::mem_fun( *this, &OperationOpen::on_file_read)); m_message_handle = get_status_bar().add_info_message( Glib::ustring::compose( _("Opening document \"%1\"..."), uri)); m_parent.signal_node_removed().connect( sigc::mem_fun( *this, &OperationOpen::on_node_removed)); m_content = GTK_TEXT_BUFFER(gtk_source_buffer_new(NULL)); // Disable GtkSourceView's Undo by beginning a not undoable // action lasting forever. We have our own (local group) Undo. gtk_source_buffer_begin_not_undoable_action( GTK_SOURCE_BUFFER(m_content)); } catch(const Gio::Error& err) { error(err.what()); } } Gobby::OperationOpen::~OperationOpen() { // TODO: Cancel outstanding async operations? if(m_request != NULL) { g_signal_handler_disconnect(m_request, m_finished_id); g_signal_handler_disconnect(m_request, m_failed_id); g_object_unref(m_request); } g_object_unref(m_content); get_status_bar().remove_message(m_message_handle); } void Gobby::OperationOpen::on_node_removed() { error(_("The directory into which the new document " "was supposed to be inserted has been removed")); } void Gobby::OperationOpen::on_file_read( const Glib::RefPtr& result) { try { m_stream = m_file->read_finish(result); m_buffer.reset(new buffer); m_stream->read_async( m_buffer->buf, buffer::SIZE, sigc::mem_fun(*this, &OperationOpen::on_stream_read)); } catch(const Glib::Exception& ex) { error(ex.what()); } } void Gobby::OperationOpen::on_stream_read( const Glib::RefPtr& result) { try { gssize size = m_stream->read_finish(result); // Close stream after reading, this signals the idle handler // that all data has been read from the file. if(size <= 0) { m_stream->close(); m_stream.reset(); m_buffer.reset(NULL); // If the idle handler is not connected, then we have // already processed all the data. if(!m_idle_connection.connected()) read_finish(); } else { m_raw_content.insert(m_raw_content.end(), m_buffer->buf, m_buffer->buf + size); // Process read data in an idle handler if(!m_idle_connection.connected()) { m_idle_connection = Glib::signal_idle().connect( sigc::mem_fun(*this, &OperationOpen:: on_idle)); } m_stream->read_async( m_buffer->buf, buffer::SIZE, sigc::mem_fun( *this, &OperationOpen::on_stream_read)); } } catch(const Glib::Exception& ex) { error(ex.what()); } } bool Gobby::OperationOpen::on_idle() { static const unsigned int CONVERT_BUFFER_SIZE = 1024; const char* inbuffer = &m_raw_content[m_raw_pos]; char* inbuf = const_cast(inbuffer); gsize inbytes = m_raw_content.size() - m_raw_pos; char outbuffer[CONVERT_BUFFER_SIZE]; gchar* outbuf = outbuffer; gsize outbytes = CONVERT_BUFFER_SIZE; /* iconv is defined as libiconv on Windows, or at least when using the * binary packages from ftp.gnome.org. Therefore we can't propely * call Glib::IConv::iconv. Therefore, we use the C API here. */ const std::size_t result = g_iconv(m_iconv->gobj(), &inbuf, &inbytes, &outbuf, &outbytes); bool more_to_process = (inbytes != 0); if(result == static_cast(-1)) { if(errno == EILSEQ) { // Invalid text for the current encoding encoding_error(); return false; } if(errno == EINVAL) { // If EINVAL is set, this means that an incomplete // multibyte sequence was at the end of the input. // We might have some more bytes, but those do not // make up a whole character, so we need to wait for // more input. if(!m_stream) { // However, if we already read all input, then // there is no more input to come. We // consider this an error since the file // should not end with an incomplete multibyte // sequence. encoding_error(); return false; } else { // Otherwise, we need to wait for more data // to process. more_to_process = false; } } } m_raw_pos += (inbuf - inbuffer); // We now have outbuf - outbuffer bytes of valid UTF-8 in outbuffer. char* prev = outbuffer; char* pos; const char to_find[] = { '\r', '\n', '\0' }; /* TODO: Write directly into the buffer here, * instead of memmoving stuff. */ while( (pos = std::find_first_of(prev, outbuf, to_find, to_find + sizeof(to_find))) != outbuf) { if(*pos == '\0') { // There is a nullbyte in the conversion. As normal // text files don't contain nullbytes, this only // occurs when converting for example a UTF-16 from // ISO-8859-1 to UTF-8 (note that the UTF-16 file is // valid ISO-8859-1, it just contains lots of // nullbytes). We therefore produce an error here. encoding_error(); return false; } else { // We convert everything to '\n' as line separator, // but remember the current eol-style to correctly // save the document back to disk. prev = pos + 1; if(*pos == '\r' && prev != outbuf && *prev == '\n') { // CRLF style line break std::memmove(prev, prev + 1, outbuf - prev - 1); m_eol_style = DocumentInfoStorage::EOL_CRLF; --outbuf; } else if(*pos == '\r') { *pos = '\n'; m_eol_style = DocumentInfoStorage::EOL_CR; } else { m_eol_style = DocumentInfoStorage::EOL_LF; } } } GtkTextIter insert_iter; gtk_text_buffer_get_end_iter(m_content, &insert_iter); gtk_text_buffer_insert(m_content, &insert_iter, outbuffer, outbuf - outbuffer); // Done reading and converting the whole file if(!more_to_process && !m_stream) read_finish(); return more_to_process; } void Gobby::OperationOpen::encoding_error() { if(m_encoding_auto_detect_index == -1) { error(_("The file contains data not in the " "specified encoding")); } else { ++ m_encoding_auto_detect_index; const char* next_encoding = get_autodetect_encoding( m_encoding_auto_detect_index); if(next_encoding == NULL) { error(_("The file either contains data in an unknown " "encoding, or it contains binary data.")); } else { // Delete current content: GtkTextIter start_iter, end_iter; gtk_text_buffer_get_start_iter(m_content, &start_iter); gtk_text_buffer_get_end_iter(m_content, &end_iter); gtk_text_buffer_delete(m_content, &start_iter, &end_iter); m_raw_pos = 0; m_encoding = next_encoding; m_iconv.reset(new Glib::IConv("UTf-8", m_encoding)); // Read again, try with next encoding. m_idle_connection = Glib::signal_idle().connect( sigc::mem_fun(*this, &OperationOpen::on_idle)); } } } void Gobby::OperationOpen::read_finish() { gtk_text_buffer_set_modified(m_content, FALSE); GtkTextIter insert_iter; GtkTextMark* insert = gtk_text_buffer_get_insert(m_content); gtk_text_buffer_get_iter_at_mark(m_content, &insert_iter, insert); InfUser* user = INF_USER(g_object_new( INF_TEXT_TYPE_USER, "id", 1, "flags", INF_USER_LOCAL, "name", m_preferences.user.name.get().c_str(), /* The user is made active when the user * switches to the document. */ "status", INF_USER_INACTIVE, "hue", m_preferences.user.hue.get(), "caret-position", gtk_text_iter_get_offset(&insert_iter), static_cast(NULL))); InfUserTable* user_table = inf_user_table_new(); inf_user_table_add_user(user_table, user); g_object_unref(user); InfTextGtkBuffer* text_gtk_buffer = inf_text_gtk_buffer_new(m_content, user_table); g_object_unref(user_table); InfcBrowser* browser = m_parent.get_browser(); InfCommunicationManager* communication_manager = infc_browser_get_communication_manager(browser); InfIo* io; g_object_get(G_OBJECT(browser), "io", &io, NULL); InfTextSession* session = inf_text_session_new_with_user_table( communication_manager, INF_TEXT_BUFFER(text_gtk_buffer), io, user_table, INF_SESSION_RUNNING, NULL, NULL); g_object_unref(io); g_object_unref(text_gtk_buffer); m_request = infc_browser_add_note_with_content( m_parent.get_browser(), &m_parent.get_browser_iter(), m_name.c_str(), Plugins::TEXT, INF_SESSION(session), TRUE); g_object_unref(session); // Note infc_browser_add_note_with_content does not return a // new reference. g_object_ref(m_request); m_failed_id = g_signal_connect( G_OBJECT(m_request), "failed", G_CALLBACK(on_request_failed_static), this); m_finished_id = g_signal_connect( G_OBJECT(m_request), "finished", G_CALLBACK(on_request_finished_static), this); // TODO: We can remove the node watch here, but need to have the // browser available in on_request_finished then. Maybe just // disconnect the signal, or bind it. } void Gobby::OperationOpen::on_request_failed(const GError* error) { OperationOpen::error(error->message); } void Gobby::OperationOpen::on_request_finished(InfcBrowserIter* iter) { // Store document info so that we know where we loaded the file // from, so we don't have to ask the user where to store it when // s/he wants to save it again. DocumentInfoStorage::Info info; info.uri = m_file->get_uri(); info.encoding = m_encoding; info.eol_style = m_eol_style; get_info_storage().set_info(m_parent.get_browser(), iter, info); finish(); } void Gobby::OperationOpen::error(const Glib::ustring& message) { get_status_bar().add_error_message( Glib::ustring::compose( _("Failed to open document \"%1\""), m_file->get_uri()), message); fail(); } gobby-0.4.94/code/operations/operation-save.hpp0000644000175000017500000000517011531722663016406 00000000000000/* Gobby - GTK-based collaborative text editor * Copyright (C) 2008-2011 Armin Burgmeier * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GOBBY_OPERATIONS_OPERATION_SAVE_HPP_ #define _GOBBY_OPERATIONS_OPERATION_SAVE_HPP_ #include "operations/operations.hpp" #include "core/documentinfostorage.hpp" #include #include #include namespace Gobby { class OperationSave: public Operations::Operation, public sigc::trackable { public: // TODO: This should maybe just take a text buffer to save, not a // textsessionview. OperationSave(Operations& operations, TextSessionView& view, Folder& folder, const std::string& uri, const std::string& encoding, DocumentInfoStorage::EolStyle eol_style); virtual ~OperationSave(); // Note these can return NULL in case the view has been closed // in the meanwhile. TextSessionView* get_view() { return m_view; } const TextSessionView* get_view() const { return m_view; } std::time_t get_start_time() const { return m_start_time; } protected: void on_document_removed(SessionView& view); void on_file_replace(const Glib::RefPtr& result); void on_stream_write(const Glib::RefPtr& result); void attempt_next(); void write_next(); void error(const Glib::ustring& message); protected: TextSessionView* m_view; std::time_t m_start_time; typedef std::pair Line; std::list m_lines; std::list::iterator m_current_line; std::size_t m_current_line_index; std::string m_encoding; DocumentInfoStorage::EolStyle m_eol_style; std::string m_storage_key; Glib::IConv m_iconv; static const std::size_t BUFFER_SIZE = 1024; char m_buffer[BUFFER_SIZE]; std::size_t m_buffer_size; std::size_t m_buffer_index; Glib::RefPtr m_file; Glib::RefPtr m_stream; StatusBar::MessageHandle m_message_handle; }; } #endif // _GOBBY_OPERATIONS_OPERATION_SAVE_HPP_ gobby-0.4.94/code/operations/operations.cpp0000644000175000017500000001231611531722663015630 00000000000000/* Gobby - GTK-based collaborative text editor * Copyright (C) 2008-2011 Armin Burgmeier * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "operations/operation-new.hpp" #include "operations/operation-open.hpp" #include "operations/operation-open-multiple.hpp" #include "operations/operation-save.hpp" #include "operations/operation-delete.hpp" #include "operations/operation-export-html.hpp" #include "operations/operations.hpp" #include "core/noteplugin.hpp" #include "util/i18n.hpp" Gobby::Operations::Operation::~Operation() {} Gobby::Operations::Operations(DocumentInfoStorage& info_storage, StatusBar& status_bar): m_info_storage(info_storage), m_status_bar(status_bar) { } Gobby::Operations::~Operations() { for(OperationSet::iterator iter = m_operations.begin(); iter != m_operations.end(); ++ iter) { delete *iter; } } Gobby::OperationNew* Gobby::Operations::create_directory(InfcBrowser* browser, const InfcBrowserIter* parent, const Glib::ustring& name) { OperationNew* op = new OperationNew(*this, browser, parent, name, true); m_operations.insert(op); return op; } Gobby::OperationNew* Gobby::Operations::create_document(InfcBrowser* browser, const InfcBrowserIter* parent, const Glib::ustring& name) { OperationNew* op = new OperationNew(*this, browser, parent, name, false); m_operations.insert(op); return op; } Gobby::OperationOpen* Gobby::Operations::create_document(InfcBrowser* browser, const InfcBrowserIter* parent, const Glib::ustring& name, const Preferences& preferences, const Glib::ustring& from_uri, const char* encoding) { OperationOpen* op = new OperationOpen(*this, preferences, browser, parent, name, from_uri, encoding); m_operations.insert(op); return op; } Gobby::OperationOpenMultiple* Gobby::Operations::create_documents(InfcBrowser* browser, const InfcBrowserIter* parent, const Preferences& prefs, unsigned int num_uris) { OperationOpenMultiple* op = new OperationOpenMultiple(*this, prefs, browser, parent, num_uris); m_operations.insert(op); return op; } Gobby::OperationSave* Gobby::Operations::save_document(TextSessionView& view, Folder& folder, const std::string& uri, const std::string& encoding, DocumentInfoStorage::EolStyle eol_style) { OperationSave* prev_op = get_save_operation_for_document(view); // Cancel previous save operation: if(prev_op != NULL) fail_operation(prev_op); OperationSave* op = new OperationSave(*this, view, folder, uri, encoding, eol_style); m_operations.insert(op); m_signal_begin_save_operation.emit(op); return op; } Gobby::OperationDelete* Gobby::Operations::delete_node(InfcBrowser* browser, const InfcBrowserIter* iter) { OperationDelete* op = new OperationDelete(*this, browser, iter); m_operations.insert(op); return op; } Gobby::OperationExportHtml* Gobby::Operations::export_html(TextSessionView& view, const std::string& uri) { OperationExportHtml* op = new OperationExportHtml(*this, view, uri); m_operations.insert(op); return op; } Gobby::OperationSave* Gobby::Operations::get_save_operation_for_document(TextSessionView& view) { for(OperationSet::iterator iter = m_operations.begin(); iter != m_operations.end(); ++ iter) { Operation* op = *iter; OperationSave* save_op = dynamic_cast(op); if(save_op != NULL) { if(save_op->get_view() == &view) return save_op; } } return NULL; } void Gobby::Operations::finish_operation(Operation* operation) { m_operations.erase(operation); operation->signal_finished().emit(true); delete operation; } void Gobby::Operations::fail_operation(Operation* operation) { m_operations.erase(operation); operation->signal_finished().emit(false); delete operation; } gobby-0.4.94/code/operations/operation-export-html.hpp0000644000175000017500000000336311531722663017735 00000000000000/* Gobby - GTK-based collaborative text editor * Copyright (C) 2008-2011 Armin Burgmeier * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GOBBY_OPERATIONS_OPERATION_EXPORT_HTML_HPP_ #define _GOBBY_OPERATIONS_OPERATION_EXPORT_HTML_HPP_ #include "operations/operations.hpp" #include "core/documentinfostorage.hpp" #include #include #include namespace Gobby { class OperationExportHtml: public Operations::Operation, public sigc::trackable { public: OperationExportHtml(Operations& operations, TextSessionView& view, const std::string& uri); virtual ~OperationExportHtml(); protected: void on_file_replace(const Glib::RefPtr& result); void on_stream_write(const Glib::RefPtr& result); void error(const Glib::ustring& message); protected: const std::string m_xml; std::string::size_type m_index; Glib::RefPtr m_file; Glib::RefPtr m_stream; StatusBar::MessageHandle m_message_handle; }; } #endif // _GOBBY_OPERATIONS_OPERATION_EXPORT_HTML_HPP_ gobby-0.4.94/code/operations/operations.hpp0000644000175000017500000001010211531722663015624 00000000000000/* Gobby - GTK-based collaborative text editor * Copyright (C) 2008-2011 Armin Burgmeier * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GOBBY_OPERATIONS_OPERATIONS_HPP_ #define _GOBBY_OPERATIONS_OPERATIONS_HPP_ #include "core/statusbar.hpp" #include "core/documentinfostorage.hpp" #include "core/textsessionview.hpp" #include #include #include #include namespace Gobby { class OperationNew; class OperationOpen; class OperationOpenMultiple; class OperationSave; class OperationDelete; class OperationExportHtml; class Operations: public sigc::trackable { public: class Operation { public: typedef sigc::signal SignalFinished; Operation(Operations& operations): m_operations(operations) {} virtual ~Operation() = 0; StatusBar& get_status_bar() { return m_operations.m_status_bar; } DocumentInfoStorage& get_info_storage() { return m_operations.m_info_storage; } SignalFinished signal_finished() const { return m_signal_finished; } protected: void fail() { m_operations.fail_operation(this); } void finish() { m_operations.finish_operation(this); } Operations& m_operations; private: SignalFinished m_signal_finished; }; typedef sigc::signal SignalBeginSaveOperation; Operations(DocumentInfoStorage& info_storage, StatusBar& status_bar); ~Operations(); OperationNew* create_directory(InfcBrowser* browser, const InfcBrowserIter* parent, const Glib::ustring& name); OperationNew* create_document(InfcBrowser* browser, const InfcBrowserIter* parent, const Glib::ustring& name); OperationOpen* create_document(InfcBrowser* browser, const InfcBrowserIter* parent, const Glib::ustring& name, const Preferences& preferences, const Glib::ustring& from_uri, const char* encoding); OperationOpenMultiple* create_documents(InfcBrowser* browser, const InfcBrowserIter* parent, const Preferences& prefs, unsigned int num_uris); OperationSave* save_document(TextSessionView& view, Folder& folder, const std::string& uri, const std::string& encoding, DocumentInfoStorage::EolStyle eol_style); OperationDelete* delete_node(InfcBrowser* browser, const InfcBrowserIter* iter); OperationExportHtml* export_html(TextSessionView& view, const std::string& uri); OperationSave* get_save_operation_for_document(TextSessionView& view); SignalBeginSaveOperation signal_begin_save_operation() const { return m_signal_begin_save_operation; } protected: void fail_operation(Operation* operation); void finish_operation(Operation* operation); DocumentInfoStorage& m_info_storage; StatusBar& m_status_bar; typedef std::set OperationSet; OperationSet m_operations; SignalBeginSaveOperation m_signal_begin_save_operation; }; } #endif // _GOBBY_OPERATIONS_OPERATIONS_HPP_ gobby-0.4.94/code/operations/operation-export-html.cpp0000644000175000017500000004432311531722663017731 00000000000000/* Gobby - GTK-based collaborative text editor * Copyright (C) 2008-2011 Armin Burgmeier * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ // Include this first because some of the other headers include X11.h which, // among others, #defines "None". #include #include "operations/operation-export-html.hpp" #include "util/i18n.hpp" #include #include #include #include #include #include #include namespace { char const gobby_icon[] = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAAN1wAADdcBQiibeAAAAAd0SU1FB9gMEQwLEOi12dIAAAvuSURBVGje7Zl/cFTXdcc/b997u/t2V9Ki30hCEBAGgw3IEGPiH+MQGzshdpO4hcSJcezG+eEJdiF4HNdpaNJmOm7tIW7dpiWexh2Pm4KTVrELFv4RG8e4EyaG8MMFYSQLIfQDSfv713vv3nf7xy5CgMBIns44M5yZN3vvvrv7zvecc7/nnvPgklySS/IHLdrFLJozZ862WbNmhfP5fEBKqSulFIBSStm27Yxda5qmCAQCDiiKqyCbzVqe540+y/M8T9O0stqaWr19R/uisb9fDKYGV+gw1Az9z4O8kG7GxQBobW2d+vTTT7cK4QJQURFFKTV6lcCUxkXFT4/Hn+/7/T62b9tOMBB8pu2Ftq+eelZlyP/mvAUfaw0GzMTRroGeT55M3/W6bXecTzffxbqqUChg2/ZZyjI6h1NAOGs8/lxKyYaHNlBXV7tm9erVPwBYBNGli65sPDmY9EL1U+oarpj+8TkLpr362ZqKRz40gFAohGVZZ3x3JgjGAXHK+mfOi2EkUUqx6clNmqEb31+zZs2DU0P+9UsWzJvWWl9r7vvN/6Z9SnlXLprZ1DKzfu1iqJh0CJXiGM+T+P1+crkcsVjsvJ4YL2T8fj9VVZWj923bwfO8Iogfb+LuNXdvarls9nErYFKWixvXRwNlb+/tzMS7BrR8QVSaun4rUm6ZDAB/PB4P9vT00NjYMK71zw2TC1sfFMpTDJ8cRnoCx3b54oqbNXf3G82J7i6UUhi6xtLqcGTEkfRkcyPKJ4+Nt50vxEJlwH/5NO06TSPg8/nw+XzMnXs5L7W3U1tbi5SS/v7+D7T+2fO6ulpeefkVuru7kZ6H49ic2P4if3LdEt5/42Vcx0UqRUJ4OJ7HO73xX76Uc/54IiHkB+Kahs9TSkOB9CQg2bd/P42NjSSTSQKBwOSsr+CWW29BKUU2m2Okv4/X9/+OdF8P0nVRgKsUtlQci+eOpXLOAxOl0acAXUNDoc65qZRi1apVvPjiCzQ0NNDV1cXAwMAYRU9b+7TSiunTZ1BXV3sW/Xr8atMTLGmqo3/3LjzAQ5GTCqUkQ9nC9l3QNxEAUeA+AE+p88ZXe3s7x4/30tTUSGNjI+Xl5WdY+OywOTWOxWKjRgiFQgjXRc8kEX4XJ5tBKRCewvYUnSO5w5m8+/BEE9mnAeZPDyGkIpUVOELheQpdA7+ukbI9MgWPLVu2sH79egqFPENDJ8coejYrje+Z+vo63tq6hZaqChLvH8YrriArFa6QIpG3/30XpCcK4JMAf/2VaXz8YyFiCZvB4QL5rIOlQ01Ep3PI5Y5/6aOtrY0VK1ZcgE7PVdzvN5k9u2V0feeuN1naVE33yHDR+krhKsXR4cxBuyD+5oMocjwAMwAWNgYRtiCsK5ordETAoHPIZeObFstuXsVzzzTyzt4D/OL5/+C+r3+TYNC6KBAAQgg0TaPrwH6mhvzEOo9wKpdnhSJdELm44zz5BojJAAgBaEIghUQ6EukIfrUvR+0t63hq/fXU1ZSDUnz+thsYOJniz7+7jm8/8BC6bpxH8bFMVbzX3NzMqz/dTGtVlGOH96AAobyi9Ucy+35dkM9cTIIdD0APcK2wXTzXQ7qSPccKTP/cI6z89A2ELKt4AtEUhubSVF/OM5v/joe//xTfuv/+szbwmSxkmv5RFkonEvgLGdInBlBecW1GegymC6mUEI9e7AlhvLPQd6KWL+vmBcIWKE/xXGc9n7rxGkJWCLQg+EqXFgCfju04zG2pwTBMLCuIZQUJBq3SZ4BAIEAwGCQQ8I+G0Us/3cysmijJ3mMl6yuEp+hK5A/sLIjXLxbAeB7oD5i+ff1x5xNHT7p847lBnv3XtVRWVXOoo5NoRTmapoOmoaTAFQ7JZJoVN9/Atu3bWLBg4Rl0ejqcVIl56qmvr2f40EHqgh7SKSaujJQcz3nqPdt+bCIFzXgAIrG8vnfjf8euWb044ps31c/Sq1t5/j+3UzjwE37fVcD2Qhg+HVNmqQnkeWV/mi07XmNkeIjp05vHVfzUZ1VVFb97eQfN5RaJ9w4Ws66ncKVi2CqX78uhY5MGoOv6581AaPOia28N+zTb9+qRtxjJSmqqKnn33cOsX1rJbUtObWyJsMOIgp+hmEM6nSGZjJFOp8ehz6LymqZRVVXF7ue3sKjCoC+bLjKP9IgFowRa5jkc6WRSAAJW2WPR6tpvfuEb3ysvn1KL69pkD9WR73gWTfeRy9lIV+AJD0/I0UtJj5AJjuPgOC6pVPq8zKOU4n927iSqQ/L9TpQqnnny0qP5xhsZTqbURGtiAyAYijzaOPPy+//ovkciuk9HCBelFPUtS/jhj+bjieI5VjoST3qj7FQE4/HekCQQDFJbW0Nz87QL0ufWf/sZ88oCDHaMoICc8IiHq/nq+u+wZ+NGJgNgVtAKP/SZu9ZFlJS4QhQf5kn60i6RCgkaRCIW0hF4UhUVd4uekMKjMxFA13XePdRBX1/fuAc5pRTCdRFDA+RFCoXCUYq0hPmfuY2AZaEmbH/wVVbXfHvx8s+Vg8J1HYTrIFwb4Tro/jAjGZvuY73Mn3cZ299JFr3glpKc67GvJ0/M9giHQuzZcwDQME0T0zQwDAPDMEtzkwM72mmJhkkP9KEU5KQiU9nADV/68qinJuwBTdNXN82ap7nO6YIdpVDKwy7k2P3mS4hkF48+vJYV//AkVcEsCxpMpOvR0Vfgr3Y7LLx1Mf39A2ScJMeP97Bs2TI0TTuncxE79C4NWhalFLZSJDwf1999L4ZpTsr6AD4pZblhBnAdG9exEa6N69ok40PsenEzn12znG2//g3hcIiFdyzn74+Uc+ezce76eZy/2KdRf89CWiLT+NFj/0h0VZQHvvcgO3bsQNd1IpHI6OXXfSR7O0n19qBQ5KVCNMzk6pUrS7WxNzkPoKEJxy4Wl6pUP3mSd157jns23kllYyX3/O2fcucPHqHluhYic5eTKWRI2SkyToZUIcUL7k6CC4MEQ0HMr5hsfPwvqampYenSpZimCUA6MUTDnGb2vr2XyyJ+hvDzhYe+C0A8nhhT3U3QA4mRodDJE11FD7g2wrHpPbKbK2+aA1NgMD1IQiRovr6ZpEgSy8VIFBKkCilShRRpO014Rhg9pBdziaUTujnET372z3R1dY2GZXKoj/lXzaVp2eW8VZDIqXXMuuqqYgUVrZh0a9G46aabtu597RfLM7lceW3DDBWtbfJnkp3anFU30JfqQ3oSV7rY0qbgFsi7eXJujpyToyAK4/6p1WzRsbODZDKJ67oYhkH6ZB/xdI6MBl9+eC1X337vaB0dDofG6XJcJICVK1f+2cqVK5eOjIxcc+TIkXmxWKxpyE4vHBEjPi/tjQJwpIMtbGxhn1fxsSL9EsdxyOfzlJWV8fZbb+CzU9yxdiNTZ10xppunSCbThMOhyQFYt25dP9AGtD3++OPVpmlee/CfDv68P9VveaoIQHgC4YmJxablI5FI4DgOSin0yhl8cc29hCJl57QaLSuApmmT3MRjZMOGDcNPPPHEnvRIWhvuHSZQM7mNJbKC5PEkhmHi8xVP7Pd86wE6OjpIpVKYph9d92FZFpZlEY1GPwQLnSWVlZVDt6+4/Ze/3fbbTwymBquNKYYebApaRr2h6ZaOHtTRreKGlXmJLEi8goeX9GBQIYYl1RVVfP1L91FZWVnqpyp8Ph+zZ8/m6NGjJBKJYiLL5XBdB9eVBAIBstmsBlgf+v3A1q1b9b6+vhal1JUnTpxY1N3d/WAwEoyksilSmRSZTAZN0wiHwkTCEcrDZUytbWDG9Bk0NTURDAYIhcJUVFRgmsY5jd9CIc/w8DDxeAIpBUIIbNumvX2H29bW9jXgMJAC4sAIF6iNLyrwZs6c+V5ra+sUv9/vMwxDMwxDA6UphXJdVwkhlJRSua6rHMf2zmylM24P9dQax3F8tl3QfD5N7+09EejuPvY1oPvs3jKQKIFJTxhASeqB8P/j2yIdqAaqgNiFtthY72h8NCUMTC2BMc7jxgygfVQBjI2QypL3K0pzCRRKII9/1AGc8f4QqAOCJRDJDwi1S3JJLskfgvwfcPxaSBSG+m4AAAAASUVORK5CYII="; // Sort tags so that CSS declaration order corresponds to priority struct TagComparator { bool operator()(GtkTextTag* first, GtkTextTag* second) const { return gtk_text_tag_get_priority(first) < gtk_text_tag_get_priority(second); } }; typedef std::set priority_tag_set; // We don't use Glib::ustring::compose for now because // it's formatting support does not compile properly under // Windows. See https://bugzilla.gnome.org/show_bug.cgi?id=599340 Glib::ustring uprintf(gchar const* fmt, ...) { va_list args; va_start(args, fmt); gchar* str = g_strdup_vprintf(fmt, args); va_end(args); Glib::ustring result; try { result = str; } catch (...) { g_free(str); throw; } g_free(str); return result; } unsigned int color_to_rgb(GdkColor* color) { return ((color->red & 0xff00) << 8) | (color->green & 0xff00) | ((color->blue & 0xff00) >> 8); } Glib::ustring get_current_tags(priority_tag_set& tags, GtkTextIter* iter) { GSList* current_tags = gtk_text_iter_get_tags(iter); // make sure to free current_tags in an exception-safe manner: Glib::SListHandle > handle( current_tags, Glib::OWNERSHIP_SHALLOW); Glib::ustring classes; for(GSList* tag = current_tags; tag != 0; tag = tag->next) { if(!classes.empty()) classes += ' '; classes += uprintf( "tag_%p", static_cast(tag->data)); tags.insert(GTK_TEXT_TAG(tag->data)); } return classes; } // write the Gtk::TextBuffer from document into content, inserting // s for line breaks and authorship of chunks of text, also // save all users and tags encountered and the total number of // lines dumped void dump_buffer(Gobby::TextSessionView& view, xmlpp::Element* content, std::set& users, priority_tag_set& tags, unsigned int& line_counter) { using namespace Gobby; users.clear(); tags.clear(); line_counter = 1; xmlpp::Element* last_node = content; xmlpp::Element* line_no = last_node->add_child("span"); line_no->set_attribute("class", "line_no"); line_no->set_attribute("id", "line_1"); GtkTextBuffer* buffer = GTK_TEXT_BUFFER( view.get_text_buffer()); InfTextGtkBuffer* inf_buffer = INF_TEXT_GTK_BUFFER( inf_session_get_buffer( INF_SESSION(view.get_session()))); GtkTextIter begin; gtk_text_buffer_get_start_iter(buffer, &begin); { GtkTextIter end; gtk_text_buffer_get_end_iter(buffer, &end); gtk_source_buffer_ensure_highlight( GTK_SOURCE_BUFFER(buffer), &begin, &end); } // iterate through chunks of text during which the currently // set tags do not change, write each as a while(!gtk_text_iter_is_end(&begin)) { // add current tags as classes for CSS formatting // (both for author of text and syntax highlighting) Glib::ustring classes = get_current_tags(tags, &begin); if(!classes.empty()) { last_node = last_node->add_child("span"); last_node->set_attribute("class", classes); // add mouseover "written by" popup // this only needs to happen when there are tags, // because the presence of an author implies a tag InfTextUser* user = inf_text_gtk_buffer_get_author( inf_buffer, &begin); if(user) { char const* user_name = inf_user_get_name( INF_USER(user)); last_node->set_attribute( "title", uprintf(_("written by: %s"), user_name)); users.insert(user); } } GtkTextIter next = begin; gtk_text_iter_forward_to_tag_toggle(&next, 0); // split text by newlines so we can // insert line number elements gchar* text = gtk_text_iter_get_text(&begin, &next); try { gchar const* last_pos = text; for(gchar const* i = last_pos; *i; ++i) { if(*i != '\n') continue; ++line_counter; gchar const* next_pos = i; ++next_pos; last_node->add_child_text( Glib::ustring(last_pos, next_pos)); last_pos = next_pos; line_no = last_node->add_child("span"); line_no->set_attribute("class", "line_no"); line_no->set_attribute( "id", uprintf("line_%d", line_counter)); } last_node->add_child_text( Glib::ustring(last_pos)); } catch(...) { g_free(text); throw; } g_free(text); // if we do not have any tags, we did not add classes // and consequently did not go into a new span if(!classes.empty()) last_node = last_node->get_parent(); begin = next; } } // some random interesting information/advertisement to be put at // the end of the html output void dump_info(xmlpp::Element* node, Gobby::TextSessionView& view) { using namespace Gobby; // put current time char const* time_str; int const n = 128; char buf[n]; { std::time_t now; std::time(&now); // TODO: localtime is not threadsafe if(std::strftime(buf, n, "%c", localtime(&now))) time_str = buf; else time_str = _(""); } char const* hostname = view.get_hostname().c_str(); char const* path = view.get_path().c_str(); char const* translated = // %1$s is session name/hostname // %2$s is path within the session // %3$s is current date as formatted by %c, // %4$s is a link to the gobby site, it must be present because // we need to handle that manually to insert a hyperlink // instead of just printf'ing it. _("Document generated from %1$s:%2$s at %3$s by %4$s"); char const* p = std::strstr(translated, "%4$s"); g_assert(p); node->add_child_text( uprintf(Glib::ustring(translated, p).c_str(), hostname, path, time_str)); xmlpp::Element* link = node->add_child("a"); link->set_attribute("href", "http://gobby.0x539.de/"); link->add_child_text(PACKAGE_STRING); if(*p != '\0') node->add_child_text( uprintf(p+4 , hostname, path, time_str)); } // list each author before the actual text void dump_user_list(xmlpp::Element* list, const std::set& users) { for(std::set::const_iterator i = users.begin(); i != users.end(); ++i) { gdouble hue = inf_text_user_get_hue(*i); hue = std::fmod(hue, 1); Gdk::Color c; c.set_hsv(360.0 * hue, 0.35, 1.0); gchar const* name = inf_user_get_name(INF_USER(*i)); const unsigned int rgb = color_to_rgb(c.gobj()); xmlpp::Element* item = list->add_child("li"); item->add_child_text(name); item->set_attribute( "style", uprintf("background-color: #%06x;\n", rgb)); } } void dump_tags_style(xmlpp::Element* css, const priority_tag_set& tags) { for(priority_tag_set::const_iterator i = tags.begin(); i != tags.end(); ++i) { GdkColor* fg, * bg; gint weight; gboolean underline; PangoStyle style; gboolean fg_set, bg_set, weight_set, underline_set, style_set; g_object_get(G_OBJECT(*i), "background-gdk", &bg, "foreground-gdk", &fg, "weight", &weight, "underline", &underline, "style", &style, "background-set", &bg_set, "foreground-set", &fg_set, "weight-set", &weight_set, "underline-set", &underline_set, "style-set", &style_set, NULL); const unsigned int bg_rgb = color_to_rgb(bg); const unsigned int fg_rgb = color_to_rgb(fg); gdk_color_free(fg); gdk_color_free(bg); css->add_child_text( uprintf(".tag_%p {\n", static_cast(*i))); if(fg_set) css->add_child_text(uprintf( " color: #%06x;\n", fg_rgb)); if(bg_set) css->add_child_text(uprintf( " background-color: #%06x;\n", bg_rgb)); if(weight_set) css->add_child_text(uprintf( " font-weight: %d;\n", weight)); if(underline_set) css->add_child_text(uprintf( " text-decoration: %s;\n", underline ? "underline" : "none")); if(style_set) css->add_child_text(uprintf( " font-style: %s;\n", (style == PANGO_STYLE_ITALIC) ? "italic" : "none")); css->add_child_text("}\n"); } } // generate xhtml representation of the document and write it to the // specified location in the filesystem std::string export_html(Gobby::TextSessionView& view) { using namespace Gobby; xmlpp::Document output; output.set_internal_subset("html", "-//W3C//DTD XHTML 1.1//EN", "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"); xmlpp::Element * root = output.create_root_node( "html", "http://www.w3.org/1999/xhtml"), * head = root->add_child("head"), * body = root->add_child("body"), * title = head->add_child("title"), * style = head->add_child("style"), * h1 = body->add_child("h1"), * h2 = body->add_child("h2"), * user_list = body->add_child("ul"), * content = body->add_child("pre"), * info = body->add_child("p"), * icon = h1->add_child("img"); icon->set_attribute("src", gobby_icon); icon->set_attribute("width", "48"); icon->set_attribute("height", "48"); icon->set_attribute("alt", "a gobby document:"); icon->set_attribute("class", "icon"); const Glib::ustring& document_name = view.get_title(); title->add_child_text(document_name + " - infinote document"); h1->add_child_text(document_name); content->set_attribute("class", "document"); std::set users; priority_tag_set tags; unsigned int line_counter; dump_buffer(view, content, users, tags, line_counter); h2->add_child_text(_("Participants")); info->set_attribute("class", "info"); dump_info(info, view); style->set_attribute("type", "text/css"); dump_user_list(user_list, users); dump_tags_style(style, tags); if(!user_list->cobj()->children) { body->remove_child(h2); body->remove_child(user_list); } style->add_child_text( ".document {\n" " border-top: 1px solid gray;\n" " border-bottom: 1px solid black;\n" " padding-bottom: 1.2em;\n" " counter-reset: line;\n" "}\n" ".line_no:before {\n" " content: counter(line);\n" " counter-increment: line;\n" "}\n" ".info {\n" " font-size: small;\n" "}\n"); style->add_child_text( uprintf( ".line_no {\n" " position: absolute;\n" " float: left;\n" " clear: left;\n" " margin-left: -%1$uem;\n" " color: gray;\n" "}\n" ".document {\n" " padding-left: %1$uem\n" "}\n", static_cast( std::log(line_counter) / std::log(10))+1)); return output.write_to_string("utf-8"); } } // anonymous namespace Gobby::OperationExportHtml::OperationExportHtml(Operations& operations, TextSessionView& view, const std::string& uri): Operation(operations), m_xml(export_html(view)), m_index(0) { m_file = Gio::File::create_for_uri(uri); m_file->replace_async( sigc::mem_fun(*this, &OperationExportHtml::on_file_replace)); m_message_handle = get_status_bar().add_info_message( Glib::ustring::compose( _("Exporting document \"%1\" to \"%2\" in HTML..."), view.get_title(), uri)); } Gobby::OperationExportHtml::~OperationExportHtml() { // TODO: Cancel outstanding async operations? get_status_bar().remove_message(m_message_handle); // Reset file explicitely before closing stream so that, on failure, // existing files are not overriden with the temporary files we // actually wrote to, at least for local files. m_file.reset(); } void Gobby::OperationExportHtml::on_file_replace( const Glib::RefPtr& result) { try { m_stream = m_file->replace_finish(result); m_stream->write_async( m_xml.c_str(), m_xml.length(), sigc::mem_fun( *this, &OperationExportHtml::on_stream_write)); } catch(const Glib::Exception& ex) { error(ex.what()); } } void Gobby::OperationExportHtml::on_stream_write( const Glib::RefPtr& result) { try { gssize size = m_stream->write_finish(result); // On size < 0 an exception should have been thrown. g_assert(size >= 0); m_index += size; if(m_index < m_xml.length()) { // Write next chunk m_stream->write_async( m_xml.c_str() + m_index, m_xml.length() - m_index, sigc::mem_fun( *this, &OperationExportHtml:: on_stream_write)); } else { m_stream->close(); finish(); } } catch(const Glib::Exception& ex) { error(ex.what()); } } void Gobby::OperationExportHtml::error(const Glib::ustring& message) { get_status_bar().add_error_message( Glib::ustring::compose( _("Failed to export document \"%1\" to HTML"), m_file->get_uri()), message); fail(); } gobby-0.4.94/code/operations/operation-new.cpp0000644000175000017500000000524111531722663016233 00000000000000/* Gobby - GTK-based collaborative text editor * Copyright (C) 2008-2011 Armin Burgmeier * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "operations/operation-new.hpp" #include "core/noteplugin.hpp" #include "util/i18n.hpp" Gobby::OperationNew::OperationNew(Operations& operations, InfcBrowser* browser, const InfcBrowserIter* parent, const Glib::ustring& name, bool directory): Operation(operations), m_name(name), m_directory(directory) { if(directory) { m_request = infc_browser_add_subdirectory(browser, parent, name.c_str()); } else { m_request = infc_browser_add_note(browser, parent, name.c_str(), Plugins::TEXT, TRUE); } // Note infc_browser_add_note does not return a // new reference. g_object_ref(m_request); m_failed_id = g_signal_connect( G_OBJECT(m_request), "failed", G_CALLBACK(on_request_failed_static), this); m_finished_id = g_signal_connect( G_OBJECT(m_request), "finished", G_CALLBACK(on_request_finished_static), this); m_message_handle = get_status_bar().add_info_message( Glib::ustring::compose( directory ? _("Creating directory \"%1\"...") : _("Creating document \"%1\"..."), name)); } Gobby::OperationNew::~OperationNew() { g_signal_handler_disconnect(G_OBJECT(m_request), m_finished_id); g_signal_handler_disconnect(G_OBJECT(m_request), m_failed_id); g_object_unref(m_request); get_status_bar().remove_message(m_message_handle); } void Gobby::OperationNew::on_request_failed(const GError* error) { get_status_bar().add_error_message( Glib::ustring::compose( m_directory ? _("Failed to create directory \"%1\"") : _("Failed to create document \"%1\""), m_name), error->message); fail(); } void Gobby::OperationNew::on_request_finished(InfcBrowserIter* iter) { finish(); } gobby-0.4.94/code/operations/Makefile.am0000644000175000017500000000117711531722663015000 00000000000000noinst_LIBRARIES = libgobby-operations.a libgobby_operations_a_SOURCES = \ operations.cpp \ operation-delete.cpp \ operation-export-html.cpp \ operation-new.cpp \ operation-open.cpp \ operation-open-multiple.cpp \ operation-save.cpp noinst_HEADERS = \ operations.hpp \ operation-delete.hpp \ operation-export-html.hpp \ operation-new.hpp \ operation-open.hpp \ operation-open-multiple.hpp \ operation-save.hpp appicondir = $(datadir)/pixmaps pixmapdir = $(datadir)/pixmaps/gobby-0.5 AM_CPPFLAGS = $(gobby_CFLAGS) $(unique_CFLAGS) $(infinote_CFLAGS) \ -I$(top_srcdir)/code gobby-0.4.94/code/operations/operation-open-multiple.hpp0000644000175000017500000000446611531722663020251 00000000000000/* Gobby - GTK-based collaborative text editor * Copyright (C) 2008-2011 Armin Burgmeier * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GOBBY_OPERATIONS_OPERATION_OPEN_MULTIPLE_HPP_ #define _GOBBY_OPERATIONS_OPERATION_OPEN_MULTIPLE_HPP_ #include "operations/operations.hpp" #include "core/nodewatch.hpp" #include #include namespace Gobby { class OperationOpenMultiple: public Operations::Operation, public sigc::trackable { public: OperationOpenMultiple(Operations& operations, const Preferences& preferences, InfcBrowser* browser, const InfcBrowserIter* parent, unsigned int num_uris); void add_uri(const Glib::ustring& uri, const char* name /* Autodetected if NULL */, const char* encoding /* Autodetected if NULL */); protected: struct Info { Glib::ustring uri; std::string name; const char* encoding; }; typedef std::list info_list; void on_node_removed(); void on_query_info(const Glib::RefPtr& result, const Glib::RefPtr& file, const info_list::iterator& info); void on_finished(bool success, const info_list::iterator& info); void load_info(const info_list::iterator& iter); void single_error(const info_list::iterator& iter, const Glib::ustring& message); void fatal_error(const Glib::ustring& message); const Preferences& m_preferences; NodeWatch m_parent; unsigned int m_num_uris; info_list m_infos; OperationOpen* m_current; }; } #endif // _GOBBY_OPERATIONS_OPERATION_OPEN_MULTIPLE_HPP_ gobby-0.4.94/code/operations/operation-save.cpp0000644000175000017500000001605111531722663016401 00000000000000/* Gobby - GTK-based collaborative text editor * Copyright (C) 2008-2011 Armin Burgmeier * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "operations/operation-save.hpp" #include "util/i18n.hpp" #include Gobby::OperationSave::OperationSave(Operations& operations, TextSessionView& view, Folder& folder, const std::string& uri, const std::string& encoding, DocumentInfoStorage::EolStyle eol_style): Operation(operations), m_view(&view), m_start_time(std::time(NULL)), m_current_line_index(0), m_encoding(encoding), m_eol_style(eol_style), m_storage_key(view.get_info_storage_key()), m_iconv(encoding.c_str(), "UTF-8"), m_buffer_size(0), m_buffer_index(0) { // Load content so that the session can go on while saving GtkTextBuffer* buffer = GTK_TEXT_BUFFER(view.get_text_buffer()); GtkTextIter prev; GtkTextIter pos; GtkTextIter old_pos; gtk_text_buffer_get_start_iter(buffer, &prev); pos = prev; if(!gtk_text_iter_ends_line(&pos)) gtk_text_iter_forward_to_line_end(&pos); do { Line line; line.first = gtk_text_buffer_get_text(buffer, &prev, &pos, TRUE); line.second = gtk_text_iter_get_line_index(&pos); m_lines.push_back(line); //if(gtk_text_iter_is_end(&prev)) // break; old_pos = pos; gtk_text_iter_forward_line(&prev); gtk_text_iter_forward_to_line_end(&pos); } while(!gtk_text_iter_equal(&pos, &old_pos)); m_current_line = m_lines.begin(); m_file = Gio::File::create_for_uri(uri); m_file->replace_async(sigc::mem_fun(*this, &OperationSave::on_file_replace)); m_message_handle = get_status_bar().add_info_message( Glib::ustring::compose( _("Saving document \"%1\" to \"%2\"..."), view.get_title(), uri)); folder.signal_document_removed().connect( sigc::mem_fun(*this, &OperationSave::on_document_removed)); } Gobby::OperationSave::~OperationSave() { // TODO: Cancel outstanding async operations? for(std::list::iterator iter = m_lines.begin(); iter != m_lines.end(); ++ iter) { g_free(iter->first); } get_status_bar().remove_message(m_message_handle); // Reset file explicitely before closing stream so that, on failure, // existing files are not overriden with the temporary files we // actually wrote to, at least for local files. m_file.reset(); } void Gobby::OperationSave::on_document_removed(SessionView& view) { // We keep the document to unset the modified flag when the operation // is complete, however, if the document is removed in the meanwhile, // then we don't need to care anymore. if(m_view == &view) m_view = NULL; } void Gobby::OperationSave::on_file_replace( const Glib::RefPtr& result) { try { m_stream = m_file->replace_finish(result); attempt_next(); } catch(const Glib::Exception& ex) { error(ex.what()); } } void Gobby::OperationSave::attempt_next() { bool done; if(m_current_line == m_lines.end()) { done = true; } else { // Don't add newline after last line std::list::iterator next(m_current_line); ++ next; if(next == m_lines.end() && m_current_line_index == m_current_line->second) { done = true; } else { done = false; } } if(done) { DocumentInfoStorage::Info info; info.uri = m_file->get_uri(); info.encoding = m_encoding; info.eol_style = m_eol_style; get_info_storage().set_info(m_storage_key, info); m_stream->close(); if(m_view != NULL) { // TODO: Don't unset modified flag if the document has // changed in the meanwhile, but set // buffer-modified-time in algorithm. gtk_text_buffer_set_modified( GTK_TEXT_BUFFER(m_view->get_text_buffer()), FALSE); } finish(); } else { write_next(); } } void Gobby::OperationSave::write_next() { gchar* inbuf; gsize inlen; char newlinebuf[2] = { '\r', '\n' }; if(m_current_line_index < m_current_line->second) { inbuf = m_current_line->first + m_current_line_index; inlen = m_current_line->second - m_current_line_index; } else { // Write newline switch(m_eol_style) { case DocumentInfoStorage::EOL_CR: inbuf = newlinebuf + 0; inlen = 1; break; case DocumentInfoStorage::EOL_LF: inbuf = newlinebuf + 1; inlen = 1; break; case DocumentInfoStorage::EOL_CRLF: inbuf = newlinebuf + 0; inlen = 2; break; default: g_assert_not_reached(); break; } } gchar* outbuf = m_buffer; gsize outlen = BUFFER_SIZE; gchar* preserve_inbuf = inbuf; /* iconv is defined as libiconv on Windows, or at least when using the * binary packages from ftp.gnome.org. Therefore we can't properly * call Glib::IConv::iconv. Therefore, we use the C API here. */ std::size_t retval = g_iconv( m_iconv.gobj(), &inbuf, &inlen, &outbuf, &outlen); if(retval == static_cast(-1)) { g_assert(errno != EILSEQ); // E2BIG and EINVAL are fully OK here. } else if(retval > 0) { error(_("The document contains one or more characters that " "cannot be encoded in the specified character " "coding.")); return; } // Advance bytes read. m_current_line_index += inbuf - preserve_inbuf; m_buffer_size = BUFFER_SIZE - outlen; m_buffer_index = 0; g_assert(m_buffer_size > 0); if(m_current_line_index > m_current_line->second) { // Converted whole line: g_free(m_current_line->first); m_current_line = m_lines.erase(m_current_line); m_current_line_index = 0; } m_stream->write_async(m_buffer, m_buffer_size, sigc::mem_fun(*this, &OperationSave::on_stream_write)); } void Gobby::OperationSave::on_stream_write( const Glib::RefPtr& result) { try { gssize size = m_stream->write_finish(result); // On size < 0 an exception should have been thrown. g_assert(size >= 0); m_buffer_index += size; if(m_buffer_index < m_buffer_size) { // Write next chunk m_stream->write_async( m_buffer + m_buffer_index, m_buffer_size - m_buffer_index, sigc::mem_fun( *this, &OperationSave::on_stream_write)); } else { // Go on with next part of line and/or next line attempt_next(); } } catch(const Glib::Exception& ex) { error(ex.what()); } } void Gobby::OperationSave::error(const Glib::ustring& message) { get_status_bar().add_error_message( Glib::ustring::compose(_("Failed to save document \"%1\""), m_file->get_uri()), message); fail(); } gobby-0.4.94/code/operations/operation-open.hpp0000644000175000017500000000576211531722663016420 00000000000000/* Gobby - GTK-based collaborative text editor * Copyright (C) 2008-2011 Armin Burgmeier * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GOBBY_OPERATIONS_OPERATION_OPEN_HPP_ #define _GOBBY_OPERATIONS_OPERATION_OPEN_HPP_ #include "operations/operations.hpp" #include "core/documentinfostorage.hpp" #include "core/nodewatch.hpp" #include #include namespace Gobby { class OperationOpen: public Operations::Operation, public sigc::trackable { public: OperationOpen(Operations& operations, const Preferences& preferences, InfcBrowser* browser, const InfcBrowserIter* parent, const std::string& name, const std::string& uri, const char* encoding /* NULL means auto-detect */); virtual ~OperationOpen(); protected: static void on_request_failed_static(InfcNodeRequest* request, const GError* error, gpointer user_data) { static_cast(user_data)-> on_request_failed(error); } static void on_request_finished_static(InfcNodeRequest* request, InfcBrowserIter* iter, gpointer user_data) { static_cast(user_data)-> on_request_finished(iter); } void on_node_removed(); void on_file_read(const Glib::RefPtr& result); void on_stream_read(const Glib::RefPtr& result); bool on_idle(); void encoding_error(); void read_finish(); void on_request_failed(const GError* error); void on_request_finished(InfcBrowserIter* iter); void error(const Glib::ustring& message); protected: const Preferences& m_preferences; std::string m_name; NodeWatch m_parent; int m_encoding_auto_detect_index; std::auto_ptr m_iconv; std::string m_encoding; DocumentInfoStorage::EolStyle m_eol_style; struct buffer { static const unsigned int SIZE = 1024; char buf[SIZE]; }; Glib::RefPtr m_file; Glib::RefPtr m_stream; std::auto_ptr m_buffer; sigc::connection m_idle_connection; InfcNodeRequest* m_request; gulong m_finished_id; gulong m_failed_id; std::vector m_raw_content; std::vector::size_type m_raw_pos; GtkTextBuffer* m_content; StatusBar::MessageHandle m_message_handle; }; } #endif // _GOBBY_OPERATIONS_OPERATION_OPEN_HPP_ gobby-0.4.94/code/window.hpp0000644000175000017500000001314411531722663012576 00000000000000/* Gobby - GTK-based collaborative text editor * Copyright (C) 2008-2011 Armin Burgmeier * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GOBBY_WINDOW_HPP_ #define _GOBBY_WINDOW_HPP_ #include "features.hpp" #include "commands/autosave-commands.hpp" #include "commands/browser-commands.hpp" #include "commands/subscription-commands.hpp" #include "commands/synchronization-commands.hpp" #include "commands/user-join-commands.hpp" #include "commands/browser-context-commands.hpp" #include "commands/auth-commands.hpp" #include "commands/folder-commands.hpp" #include "commands/file-commands.hpp" #include "commands/edit-commands.hpp" #include "commands/view-commands.hpp" #include "commands/help-commands.hpp" #include "operations/operations.hpp" #include "dialogs/initial-dialog.hpp" #include "core/iconmanager.hpp" #include "core/header.hpp" #include "core/folder.hpp" #include "core/browser.hpp" #include "core/statusbar.hpp" #include "core/preferences.hpp" #include "core/filechooser.hpp" #include "core/closableframe.hpp" #include "core/titlebar.hpp" #include "util/config.hpp" #include #include #include #ifdef WITH_UNIQUE # include #endif #include namespace Gobby { #ifdef WITH_UNIQUE const int UNIQUE_GOBBY_CONNECT = 1; #endif class Window : public Gtk::Window { public: Window(unsigned int argc, const char* const argv[], const IconManager& icon_mgr, Config& config #ifdef WITH_UNIQUE , UniqueApp* app #endif ); ~Window(); const Folder& get_text_folder() const { return m_text_folder; } Folder& get_text_folder() { return m_text_folder; } void connect_to_host(const Glib::ustring& hostname) { m_browser.connect_to_host(hostname); } protected: #ifdef WITH_UNIQUE static UniqueResponse on_message_received_static(UniqueApp* app, UniqueCommand command, UniqueMessageData* message, guint time, gpointer user_data) { return static_cast(user_data)->on_message_received( command, message, time); } #endif // Gtk::Window overrides virtual bool on_delete_event(GdkEventAny* event); virtual bool on_key_press_event(GdkEventKey* event); virtual void on_realize(); virtual void on_show(); void on_initial_dialog_hide(); static gboolean on_switch_to_chat_static(GtkAccelGroup* group, GObject* acceleratable, guint keyval, GdkModifierType modifier, gpointer user_data) { return static_cast(user_data)->on_switch_to_chat(); } static gboolean on_switch_to_text_static(GtkAccelGroup* group, GObject* acceleratable, guint keyval, GdkModifierType modifier, gpointer user_data) { return static_cast(user_data)->on_switch_to_text(); } bool on_switch_to_chat(); bool on_switch_to_text(); void on_chat_hide(); void on_chat_show(); #ifdef WITH_UNIQUE UniqueResponse on_message_received(UniqueCommand command, UniqueMessageData* message, guint time); #endif // Command line arguments // TODO: We only require these in on_show to initially open files // passed on the command line. We can't do it in the constructor // already, because otherwise the main window is shown after the // document location dialog, and therefore ends up having focus, // which it shouldn't. Maybe we'll find a better solution which does // not require these member variables. const unsigned int m_argc; const char* const* m_argv; // Config Config& m_config; GtkSourceLanguageManager* m_lang_manager; Preferences m_preferences; const IconManager& m_icon_mgr; #ifdef WITH_UNIQUE UniqueApp* m_app; #endif // GUI Gtk::VBox m_mainbox; Gtk::HPaned m_paned; Gtk::VPaned m_chat_paned; Header m_header; Browser m_browser; Folder m_text_folder; Folder m_chat_folder; ClosableFrame m_chat_frame; StatusBar m_statusbar; // Functionality DocumentInfoStorage m_info_storage; FileChooser m_file_chooser; Operations m_operations; BrowserCommands m_browser_commands; BrowserContextCommands m_browser_context_commands; AuthCommands m_auth_commands; AutosaveCommands m_autosave_commands; SubscriptionCommands m_subscription_commands; SynchronizationCommands m_synchronization_commands; UserJoinCommands m_user_join_commands; FolderCommands m_text_folder_commands; FolderCommands m_chat_folder_commands; FileCommands m_file_commands; EditCommands m_edit_commands; ViewCommands m_view_commands; HelpCommands m_help_commands; TitleBar m_title_bar; // Dialogs std::auto_ptr m_initial_dlg; }; } #endif // _GOBBY_WINDOW_HPP_ gobby-0.4.94/code/Makefile.am0000644000175000017500000000051711531722663012612 00000000000000SUBDIRS = util core dialogs operations commands noinst_LIBRARIES = libgobby.a libgobby_a_SOURCES = \ main.cpp \ window.cpp noinst_HEADERS = window.hpp appicondir = $(datadir)/pixmaps pixmapdir = $(datadir)/pixmaps/gobby-0.5 AM_CPPFLAGS = $(gobby_CFLAGS) $(unique_CFLAGS) $(infinote_CFLAGS) \ -I$(top_srcdir)/code gobby-0.4.94/code/core/0000755000175000017500000000000011543672436011570 500000000000000gobby-0.4.94/code/core/textsessionuserview.cpp0000644000175000017500000000413011531722663016367 00000000000000/* Gobby - GTK-based collaborative text editor * Copyright (C) 2008-2011 Armin Burgmeier * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "core/textsessionuserview.hpp" Gobby::TextSessionUserView:: TextSessionUserView(TextSessionView& view, bool show_disconnected, Preferences::Option& opt_view, Preferences::Option& w): SessionUserView(view, show_disconnected, opt_view, w) { m_userlist.signal_user_activated().connect( sigc::mem_fun( *this, &TextSessionUserView::on_user_activated)); } void Gobby::TextSessionUserView::on_user_activated(InfUser* user) { g_assert(INF_TEXT_IS_USER(user)); InfTextUser* text_user = INF_TEXT_USER(user); // TODO: Instead, move this code to // TextSessionView::scroll_to_cursor_position which should take // an additional InfTextUser* argument GtkSourceBuffer* buffer = get_session_view().get_text_buffer(); GtkSourceView* view = get_session_view().get_text_view(); // Use a mark to make sure we scroll it onscreen GtkTextIter iter; gtk_text_buffer_get_iter_at_offset( GTK_TEXT_BUFFER(buffer), &iter, inf_text_user_get_caret_position(text_user)); GtkTextMark* mark = gtk_text_buffer_create_mark( GTK_TEXT_BUFFER(buffer), NULL, &iter, FALSE); gtk_text_view_scroll_to_mark( GTK_TEXT_VIEW(view), mark, 0.0, TRUE, 0.5, 0.5); gtk_text_buffer_delete_mark(GTK_TEXT_BUFFER(buffer), mark); } gobby-0.4.94/code/core/browser.cpp0000644000175000017500000003210311531722663013671 00000000000000/* Gobby - GTK-based collaborative text editor * Copyright (C) 2008-2011 Armin Burgmeier * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "dialogs/password-dialog.hpp" #include "core/browser.hpp" #include "util/gtk-compat.hpp" #include "util/file.hpp" #include "util/i18n.hpp" #include #include #include #ifndef G_OS_WIN32 # include # include #endif gint compare_func(GtkTreeModel* model, GtkTreeIter* first, GtkTreeIter* second, gpointer user_data) { gint result; InfcBrowser* br_one; InfcBrowser* br_two; InfcBrowserIter* bri_one; InfcBrowserIter* bri_two; GtkTreeIter parent; result = 0; if(gtk_tree_model_iter_parent(model, &parent, first)) { g_assert(gtk_tree_model_iter_parent(model, &parent, second)); gtk_tree_model_get( model, first, INF_GTK_BROWSER_MODEL_COL_BROWSER, &br_one, INF_GTK_BROWSER_MODEL_COL_NODE, &bri_one, -1); gtk_tree_model_get( model, second, INF_GTK_BROWSER_MODEL_COL_BROWSER, &br_two, INF_GTK_BROWSER_MODEL_COL_NODE, &bri_two, -1); if(infc_browser_iter_is_subdirectory(br_one, bri_one) && !infc_browser_iter_is_subdirectory(br_two, bri_two)) { result = -1; } else if(!infc_browser_iter_is_subdirectory(br_one, bri_one) && infc_browser_iter_is_subdirectory(br_two, bri_two)) { result = 1; } g_object_unref(br_one); g_object_unref(br_two); infc_browser_iter_free(bri_one); infc_browser_iter_free(bri_two); } if(!result) { gchar* name_one; gchar* name_two; gtk_tree_model_get( model, first, INF_GTK_BROWSER_MODEL_COL_NAME, &name_one, -1); gtk_tree_model_get( model, second, INF_GTK_BROWSER_MODEL_COL_NAME, &name_two, -1); gchar* one = g_utf8_casefold(name_one, -1); gchar* two = g_utf8_casefold(name_two, -1); result = g_utf8_collate(one, two); g_free(name_one); g_free(name_two); g_free(one); g_free(two); } return result; } Gobby::Browser::Browser(Gtk::Window& parent, const InfcNotePlugin* text_plugin, StatusBar& status_bar, Preferences& preferences): m_parent(parent), m_text_plugin(text_plugin), m_status_bar(status_bar), m_preferences(preferences), m_sasl_context(NULL), m_expander(_("_Direct Connection"), true), m_hbox(false, 6), m_label_hostname(_("Host Name:")), m_entry_hostname(config_filename("recent_hosts"), 5) { m_label_hostname.show(); m_entry_hostname.get_entry()->signal_activate().connect( sigc::mem_fun(*this, &Browser::on_hostname_activate)); m_entry_hostname.show(); m_hbox.pack_start(m_label_hostname, Gtk::PACK_SHRINK); m_hbox.pack_start(m_entry_hostname, Gtk::PACK_EXPAND_WIDGET); m_hbox.show(); m_expander.add(m_hbox); m_expander.show(); m_expander.property_expanded().signal_changed().connect( sigc::mem_fun(*this, &Browser::on_expanded_changed)); m_io = inf_gtk_io_new(); InfCommunicationManager* communication_manager = inf_communication_manager_new(); m_browser_store = inf_gtk_browser_store_new(INF_IO(m_io), communication_manager); g_object_unref(communication_manager); m_sort_model = inf_gtk_browser_model_sort_new(INF_GTK_BROWSER_MODEL(m_browser_store)); gtk_tree_sortable_set_default_sort_func(GTK_TREE_SORTABLE(m_sort_model), compare_func, NULL, NULL); m_xmpp_manager = inf_xmpp_manager_new(); #ifdef LIBINFINITY_HAVE_AVAHI m_discovery = inf_discovery_avahi_new(INF_IO(m_io), m_xmpp_manager, NULL, NULL, NULL); inf_discovery_avahi_set_security_policy( m_discovery, m_preferences.security.policy); inf_gtk_browser_store_add_discovery(m_browser_store, INF_DISCOVERY(m_discovery)); #endif Glib::ustring known_hosts_file = config_filename("known_hosts"); const std::string trust_file = m_preferences.security.trust_file; m_cert_manager = inf_gtk_certificate_manager_new( parent.gobj(), m_xmpp_manager, trust_file.empty() ? NULL : trust_file.c_str(), known_hosts_file.c_str()); m_browser_view = INF_GTK_BROWSER_VIEW( inf_gtk_browser_view_new_with_model( INF_GTK_BROWSER_MODEL(m_sort_model))); gtk_widget_show(GTK_WIDGET(m_browser_view)); gtk_container_add(GTK_CONTAINER(m_scroll.gobj()), GTK_WIDGET(m_browser_view)); m_scroll.set_policy(Gtk::POLICY_AUTOMATIC, Gtk::POLICY_AUTOMATIC); m_scroll.set_shadow_type(Gtk::SHADOW_IN); m_scroll.show(); g_signal_connect( m_browser_store, "set-browser", G_CALLBACK(&on_set_browser_static), this ); g_signal_connect( m_browser_view, "activate", G_CALLBACK(&on_activate_static), this ); m_preferences.security.policy.signal_changed().connect( sigc::mem_fun(*this, &Browser::on_security_policy_changed)); m_preferences.security.trust_file.signal_changed().connect( sigc::mem_fun(*this, &Browser::on_trust_file_changed)); set_spacing(6); pack_start(m_scroll, Gtk::PACK_EXPAND_WIDGET); pack_start(m_expander, Gtk::PACK_SHRINK); set_focus_child(m_expander); } Gobby::Browser::~Browser() { for(ResolvMap::iterator iter = m_resolv_map.begin(); iter != m_resolv_map.end(); ++ iter) { cancel(iter->first); } if(m_sasl_context) inf_sasl_context_unref(m_sasl_context); g_object_unref(m_browser_store); g_object_unref(m_sort_model); g_object_unref(m_cert_manager); g_object_unref(m_xmpp_manager); #ifdef LIBINFINITY_HAVE_AVAHI g_object_unref(m_discovery); #endif g_object_unref(m_io); } void Gobby::Browser::on_expanded_changed() { if(m_expander.get_expanded()) { if(GtkCompat::is_realized(m_entry_hostname)) { m_entry_hostname.grab_focus(); } else { m_entry_hostname.signal_realize().connect( sigc::mem_fun(m_entry_hostname, &Gtk::Entry::grab_focus)); } } } void Gobby::Browser::on_set_browser(GtkTreeIter* iter, InfcBrowser* browser) { if(browser) infc_browser_add_plugin(browser, m_text_plugin); } void Gobby::Browser::on_activate(GtkTreeIter* iter) { InfcBrowser* browser; InfcBrowserIter* browser_iter; gtk_tree_model_get(GTK_TREE_MODEL(m_sort_model), iter, INF_GTK_BROWSER_MODEL_COL_BROWSER, &browser, INF_GTK_BROWSER_MODEL_COL_NODE, &browser_iter, -1); m_signal_activate.emit(browser, browser_iter); infc_browser_iter_free(browser_iter); g_object_unref(browser); } void Gobby::Browser::on_hostname_activate() { Glib::ustring str = m_entry_hostname.get_entry()->get_text(); if(str.empty()) return; connect_to_host(str); m_entry_hostname.commit(); m_entry_hostname.get_entry()->set_text(""); } void Gobby::Browser::on_resolv_done(ResolvHandle* handle, InfIpAddress* address, guint port, const Glib::ustring& hostname, unsigned int device_index) { ResolvMap::iterator iter = m_resolv_map.find(handle); g_assert(iter != m_resolv_map.end()); m_status_bar.remove_message(iter->second.message_handle); m_resolv_map.erase(iter); InfXmppConnection* xmpp = inf_xmpp_manager_lookup_connection_by_address(m_xmpp_manager, address, port); if(!xmpp) { InfTcpConnection* connection = inf_tcp_connection_new( INF_IO(m_io), address, port); g_object_set(G_OBJECT(connection), "device-index", device_index, NULL); GError* error = NULL; if(!inf_tcp_connection_open(connection, &error)) { m_status_bar.add_error_message( Glib::ustring::compose( _("Connection to \"%1\" failed"), hostname), error->message); g_error_free(error); } else { xmpp = inf_xmpp_connection_new( connection, INF_XMPP_CONNECTION_CLIENT, NULL, hostname.c_str(), m_preferences.security.policy, NULL, m_sasl_context, m_sasl_mechanisms.empty() ? "" : m_sasl_mechanisms.c_str()); inf_xmpp_manager_add_connection(m_xmpp_manager, xmpp); g_object_unref(xmpp); } g_object_unref(connection); } // TODO: Check whether there is already an item with this // connection in the browser. If yes, don't add, but highlight for // feedback. // TODO: Remove erroneous entry with same name, if any, before // adding. if(xmpp != NULL) { inf_gtk_browser_store_add_connection( m_browser_store, INF_XML_CONNECTION(xmpp), hostname.c_str()); /* TODO: Initial root node expansion for the newly added node. * This probably requires additional API in * InfGtkBrowserView */ } } void Gobby::Browser::on_resolv_error(ResolvHandle* handle, const std::runtime_error& error, const Glib::ustring& hostname) { ResolvMap::iterator iter = m_resolv_map.find(handle); g_assert(iter != m_resolv_map.end()); m_status_bar.remove_message(iter->second.message_handle); m_resolv_map.erase(iter); m_status_bar.add_error_message( Glib::ustring::compose(_("Could not resolve \"%1\""), hostname), error.what()); } bool Gobby::Browser::get_selected(InfcBrowser** browser, InfcBrowserIter* iter) { GtkTreeIter tree_iter; if(!inf_gtk_browser_view_get_selected(m_browser_view, &tree_iter)) return false; InfcBrowser* tmp_browser; InfcBrowserIter* tmp_iter; gtk_tree_model_get( GTK_TREE_MODEL(m_sort_model), &tree_iter, INF_GTK_BROWSER_MODEL_COL_BROWSER, &tmp_browser, -1); if(tmp_browser == NULL) return false; gtk_tree_model_get( GTK_TREE_MODEL(m_sort_model), &tree_iter, INF_GTK_BROWSER_MODEL_COL_NODE, &tmp_iter, -1); *browser = tmp_browser; *iter = *tmp_iter; infc_browser_iter_free(tmp_iter); g_object_unref(tmp_browser); return true; } void Gobby::Browser::set_selected(InfcBrowser* browser, InfcBrowserIter* iter) { GtkTreeIter tree_iter; gboolean has_iter = inf_gtk_browser_model_browser_iter_to_tree_iter( INF_GTK_BROWSER_MODEL(m_sort_model), browser, iter, &tree_iter); g_assert(has_iter == TRUE); inf_gtk_browser_view_set_selected(m_browser_view, &tree_iter); } void Gobby::Browser::connect_to_host(Glib::ustring str) { Glib::ustring host; Glib::ustring service = "6523"; // Default unsigned int device_index = 0; // Default // Strip away device name Glib::ustring::size_type pos; if( (pos = str.rfind('%')) != Glib::ustring::npos) { Glib::ustring device_name = str.substr(pos + 1); str.erase(pos); #ifdef G_OS_WIN32 // TODO: Implement device_index = 0; #else device_index = if_nametoindex(device_name.c_str()); if(device_index == 0) { m_status_bar.add_error_message( Glib::ustring::compose( _("Connection to \"%1\" failed"), host), Glib::ustring::compose( _("Device \"%1\" does not exist"), device_name)); } #endif } if(str[0] == '[' && ((pos = str.find(']', 1)) != Glib::ustring::npos)) { // Hostname surrounded by '[...]' host = str.substr(1, pos-1); ++ pos; if(pos < str.length() && str[pos] == ':') service = str.substr(pos + 1); } else { pos = str.find(':'); if(pos != Glib::ustring::npos) { host = str.substr(0, pos); service = str.substr(pos + 1); } else host = str; } ResolvHandle* resolv_handle = resolve(host, service, sigc::bind( sigc::mem_fun(*this, &Browser::on_resolv_done), host, device_index), sigc::bind( sigc::mem_fun(*this, &Browser::on_resolv_error), host)); StatusBar::MessageHandle message_handle = m_status_bar.add_info_message( Glib::ustring::compose(_("Resolving \"%1\"..."), host)); m_resolv_map[resolv_handle].message_handle = message_handle; } void Gobby::Browser::set_sasl_context(InfSaslContext* sasl_context, const char* mechanisms) { if(m_sasl_context) inf_sasl_context_unref(m_sasl_context); m_sasl_context = sasl_context; if(m_sasl_context) inf_sasl_context_ref(m_sasl_context); m_sasl_mechanisms = mechanisms ? mechanisms : ""; #ifdef LIBINFINITY_HAVE_AVAHI g_object_set(G_OBJECT(m_discovery), "sasl-context", m_sasl_context, "sasl-mechanisms", mechanisms, NULL); #endif } void Gobby::Browser::on_security_policy_changed() { #ifdef LIBINFINITY_HAVE_AVAHI inf_discovery_avahi_set_security_policy( m_discovery, m_preferences.security.policy); #endif } void Gobby::Browser::on_trust_file_changed() { const std::string trust_file = m_preferences.security.trust_file; g_object_set(G_OBJECT(m_cert_manager), "trust-file", trust_file.empty() ? NULL : trust_file.c_str(), NULL); } gobby-0.4.94/code/core/Makefile.in0000644000175000017500000004437611543672413013566 00000000000000# 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@ subdir = code/core DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = $(top_builddir)/code/features.hpp CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = LIBRARIES = $(noinst_LIBRARIES) AR = ar ARFLAGS = cru AM_V_AR = $(am__v_AR_$(V)) am__v_AR_ = $(am__v_AR_$(AM_DEFAULT_VERBOSITY)) am__v_AR_0 = @echo " AR " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ libgobby_core_a_AR = $(AR) $(ARFLAGS) libgobby_core_a_LIBADD = am_libgobby_core_a_OBJECTS = browser.$(OBJEXT) \ chatsessionview.$(OBJEXT) chattablabel.$(OBJEXT) \ closableframe.$(OBJEXT) documentinfostorage.$(OBJEXT) \ filechooser.$(OBJEXT) folder.$(OBJEXT) header.$(OBJEXT) \ huebutton.$(OBJEXT) iconmanager.$(OBJEXT) nodewatch.$(OBJEXT) \ noteplugin.$(OBJEXT) preferences.$(OBJEXT) \ sessionuserview.$(OBJEXT) sessionview.$(OBJEXT) \ statusbar.$(OBJEXT) tablabel.$(OBJEXT) \ textsessionuserview.$(OBJEXT) textsessionview.$(OBJEXT) \ textundogrouping.$(OBJEXT) texttablabel.$(OBJEXT) \ titlebar.$(OBJEXT) userlist.$(OBJEXT) libgobby_core_a_OBJECTS = $(am_libgobby_core_a_OBJECTS) DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/code depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) AM_V_CXX = $(am__v_CXX_$(V)) am__v_CXX_ = $(am__v_CXX_$(AM_DEFAULT_VERBOSITY)) am__v_CXX_0 = @echo " CXX " $@; CXXLD = $(CXX) CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \ -o $@ AM_V_CXXLD = $(am__v_CXXLD_$(V)) am__v_CXXLD_ = $(am__v_CXXLD_$(AM_DEFAULT_VERBOSITY)) am__v_CXXLD_0 = @echo " CXXLD " $@; AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; SOURCES = $(libgobby_core_a_SOURCES) DIST_SOURCES = $(libgobby_core_a_SOURCES) HEADERS = $(noinst_HEADERS) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALL_LINGUAS = @ALL_LINGUAS@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@ DOC_USER_FORMATS = @DOC_USER_FORMATS@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GMOFILES = @GMOFILES@ GMSGFMT = @GMSGFMT@ GREP = @GREP@ HELP_DIR = @HELP_DIR@ 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@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MKINSTALLDIRS = @MKINSTALLDIRS@ MSGFMT = @MSGFMT@ MSGFMT_OPTS = @MSGFMT_OPTS@ MSGMERGE = @MSGMERGE@ OBJEXT = @OBJEXT@ OMF_DIR = @OMF_DIR@ 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@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ WINDRES = @WINDRES@ 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_CXX = @ac_ct_CXX@ 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@ gobby_CFLAGS = @gobby_CFLAGS@ gobby_LIBS = @gobby_LIBS@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infinote_CFLAGS = @infinote_CFLAGS@ infinote_LIBS = @infinote_LIBS@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ 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@ unique_CFLAGS = @unique_CFLAGS@ unique_LIBS = @unique_LIBS@ noinst_LIBRARIES = libgobby-core.a libgobby_core_a_SOURCES = \ browser.cpp \ chatsessionview.cpp \ chattablabel.cpp \ closableframe.cpp \ documentinfostorage.cpp \ filechooser.cpp \ folder.cpp \ header.cpp \ huebutton.cpp \ iconmanager.cpp \ nodewatch.cpp \ noteplugin.cpp \ preferences.cpp \ sessionuserview.cpp \ sessionview.cpp \ statusbar.cpp \ tablabel.cpp \ textsessionuserview.cpp \ textsessionview.cpp \ textundogrouping.cpp \ texttablabel.cpp \ titlebar.cpp \ userlist.cpp noinst_HEADERS = \ browser.hpp \ chatsessionview.hpp \ chattablabel.hpp \ closableframe.hpp \ documentinfostorage.hpp \ filechooser.hpp \ folder.hpp \ header.hpp \ huebutton.hpp \ iconmanager.hpp \ nodewatch.hpp \ noteplugin.hpp \ preferences.hpp \ sessionuserview.hpp \ sessionview.hpp \ statusbar.hpp \ tablabel.hpp \ textsessionuserview.hpp \ textsessionview.hpp \ textundogrouping.hpp \ texttablabel.hpp \ titlebar.hpp \ userlist.hpp appicondir = $(datadir)/pixmaps pixmapdir = $(datadir)/pixmaps/gobby-0.5 # PRIVATE_ICONS_DIR is required by iconmanager.cpp to get access to the # private icons that are installed into prefix/share/gobby-0.5/icons instead # of prefix/share/icons. We also set PUBLIC_ICONS_DIR explicitely so that # we find the application icon if it is installed in a non-standard prefix. AM_CPPFLAGS = $(gobby_CFLAGS) $(unique_CFLAGS) $(infinote_CFLAGS) \ -I$(top_srcdir)/code \ -DPRIVATE_ICONS_DIR=\""$(datadir)/gobby-0.5/icons"\" \ -DPUBLIC_ICONS_DIR=\""$(datadir)/icons"\" all: all-am .SUFFIXES: .SUFFIXES: .cpp .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(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) --gnu code/core/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu code/core/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: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstLIBRARIES: -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) libgobby-core.a: $(libgobby_core_a_OBJECTS) $(libgobby_core_a_DEPENDENCIES) $(AM_V_at)-rm -f libgobby-core.a $(AM_V_AR)$(libgobby_core_a_AR) libgobby-core.a $(libgobby_core_a_OBJECTS) $(libgobby_core_a_LIBADD) $(AM_V_at)$(RANLIB) libgobby-core.a mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/browser.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chatsessionview.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chattablabel.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/closableframe.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/documentinfostorage.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/filechooser.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/folder.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/header.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/huebutton.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/iconmanager.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nodewatch.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/noteplugin.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/preferences.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sessionuserview.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sessionview.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/statusbar.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tablabel.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/textsessionuserview.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/textsessionview.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/texttablabel.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/textundogrouping.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/titlebar.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/userlist.Po@am__quote@ .cpp.o: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $< .cpp.obj: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags 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 $(LIBRARIES) $(HEADERS) installdirs: 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-noinstLIBRARIES mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: 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 -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-noinstLIBRARIES ctags distclean distclean-compile \ distclean-generic distclean-tags 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-ps install-ps-am install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \ uninstall-am # 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: gobby-0.4.94/code/core/sessionview.cpp0000644000175000017500000000476211531722663014576 00000000000000/* Gobby - GTK-based collaborative text editor * Copyright (C) 2008-2011 Armin Burgmeier * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "features.hpp" #include "core/sessionview.hpp" Gobby::SessionView::SessionView(InfSession* session, const Glib::ustring& title, const Glib::ustring& path, const Glib::ustring& hostname): m_session(session), m_title(title), m_path(path), m_hostname(hostname), m_info_box(false, 0), m_info_close_button_box(false, 6) { g_object_ref(m_session); m_info_label.set_selectable(true); m_info_label.set_line_wrap(true); m_info_label.show(); m_info_close_button.signal_clicked().connect( sigc::mem_fun(m_info_frame, &Gtk::Frame::hide)); m_info_close_button.show(); m_info_close_button_box.pack_end(m_info_close_button, Gtk::PACK_SHRINK); // Don't show info close button box by default m_info_box.pack_start(m_info_close_button_box, Gtk::PACK_SHRINK); m_info_box.pack_start(m_info_label, Gtk::PACK_SHRINK); m_info_box.set_border_width(6); m_info_box.show(); m_info_frame.set_shadow_type(Gtk::SHADOW_IN); m_info_frame.add(m_info_box); // Don't show infoframe by default pack_start(m_info_frame, Gtk::PACK_SHRINK); } Gobby::SessionView::~SessionView() { g_object_unref(m_session); //m_session = NULL; // TODO: Any reason to reset this? } void Gobby::SessionView::set_info(const Glib::ustring& info, bool closable) { m_info_label.set_text(info); if(closable) m_info_close_button_box.show(); else m_info_close_button_box.hide(); m_info_frame.show(); } void Gobby::SessionView::unset_info() { m_info_frame.hide(); } InfUser* Gobby::SessionView::get_active_user() const { return NULL; } void Gobby::SessionView::active_user_changed(InfUser* new_user) { m_signal_active_user_changed.emit(new_user); } gobby-0.4.94/code/core/iconmanager.hpp0000644000175000017500000000302411531722663014476 00000000000000/* Gobby - GTK-based collaborative text editor * Copyright (C) 2008-2011 Armin Burgmeier * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GOBBY_ICON_HPP_ #define _GOBBY_ICON_HPP_ #include #include #include #include #include "util/gtk-compat.hpp" namespace Gobby { class IconManager { public: static Gtk::StockID STOCK_SAVE_ALL; static Gtk::StockID STOCK_USERLIST; static Gtk::StockID STOCK_DOCLIST; static Gtk::StockID STOCK_CHAT; static Gtk::StockID STOCK_USER_COLOR_INDICATOR; IconManager(); protected: GtkCompat::IconSet m_is_save_all; GtkCompat::IconSet m_is_userlist; GtkCompat::IconSet m_is_doclist; GtkCompat::IconSet m_is_chat; GtkCompat::IconSet m_is_user_color_indicator; Glib::RefPtr m_icon_factory; }; } #endif // _GOBBY_ICON_HPP_ gobby-0.4.94/code/core/userlist.hpp0000644000175000017500000000701311531722663014067 00000000000000/* Gobby - GTK-based collaborative text editor * Copyright (C) 2008-2011 Armin Burgmeier * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GOBBY_USERLIST_HPP_ #define _GOBBY_USERLIST_HPP_ #include #include #include #include #include #include namespace Gobby { class UserList: public Gtk::VBox { public: typedef sigc::signal SignalUserActivated; UserList(InfUserTable* table); ~UserList(); void set_show_disconnected(bool show_disconnected); SignalUserActivated signal_user_activated() const { return m_signal_user_activated; } protected: InfUserTable* m_table; class Columns: public Gtk::TreeModelColumnRecord { public: Gtk::TreeModelColumn user; Gtk::TreeModelColumn > color; Gtk::TreeModelColumn notify_hue_handle; Gtk::TreeModelColumn notify_status_handle; Columns() { add(user); add(color); add(notify_hue_handle); add(notify_status_handle); } }; static void on_add_user_static(InfUserTable* user_table, InfUser* user, gpointer user_data) { static_cast(user_data)-> on_add_user(user); } static void on_notify_status_static(InfUser* user, GParamSpec* pspec, gpointer user_data) { static_cast(user_data)-> on_notify_status(user); } static void on_notify_hue_static(InfUser* user, GParamSpec* pspec, gpointer user_data) { static_cast(user_data)-> on_notify_hue(INF_TEXT_USER(user)); } bool visible_func(const Gtk::TreeIter& iter); void icon_cell_data_func(Gtk::CellRenderer* renderer, const Gtk::TreeIter& iter); void color_cell_data_func(Gtk::CellRenderer* renderer, const Gtk::TreeIter& iter); void name_cell_data_func(Gtk::CellRenderer* renderer, const Gtk::TreeIter& iter); int sort_func(const Gtk::TreeIter& iter1, const Gtk::TreeIter& iter2); void on_add_user(InfUser* user); void on_notify_status(InfUser* user); void on_notify_hue(InfTextUser* user); //void on_select_func(const Gtk::TreeIter& iter); void on_row_activated(const Gtk::TreePath& path, Gtk::TreeViewColumn* column); Gtk::TreeIter find_user_iter(InfUser* user); Columns m_columns; Glib::RefPtr m_store; Glib::RefPtr m_filter_model; Gtk::TreeView m_view; gulong m_add_user_handle; SignalUserActivated m_signal_user_activated; }; } #endif // _GOBBY_ICON_HPP_ gobby-0.4.94/code/core/folder.cpp0000644000175000017500000002104711543642522013464 00000000000000/* Gobby - GTK-based collaborative text editor * Copyright (C) 2008-2011 Armin Burgmeier * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "core/folder.hpp" #include "core/textsessionuserview.hpp" #include "core/sessionuserview.hpp" #include "core/chattablabel.hpp" #include "core/texttablabel.hpp" #include "util/file.hpp" #include #include #include // For std::cerr #include namespace { class KeyMap { public: static const unsigned int nval = ~0u; KeyMap() { m_keyvals[GDK_KEY_0] = 9; m_keyvals[GDK_KEY_1] = 0; m_keyvals[GDK_KEY_2] = 1; m_keyvals[GDK_KEY_3] = 2; m_keyvals[GDK_KEY_4] = 3; m_keyvals[GDK_KEY_5] = 4; m_keyvals[GDK_KEY_6] = 5; m_keyvals[GDK_KEY_7] = 6; m_keyvals[GDK_KEY_8] = 7; m_keyvals[GDK_KEY_9] = 8; } unsigned int lookup(guint key) const { map_type::const_iterator iter = m_keyvals.find(key); if(iter == m_keyvals.end() ) return nval; return iter->second; } private: typedef std::map map_type; map_type m_keyvals; }; void record(InfTextSession* session, const Glib::ustring& title) { std::string dirname = Glib::build_filename( Glib::get_home_dir(), ".infinote-records"); std::string filename = Glib::build_filename( dirname, title + ".record.xml"); try { Gobby::create_directory_with_parents(dirname); InfAdoptedSessionRecord* record = inf_adopted_session_record_new( INF_ADOPTED_SESSION(session)); GError* error = NULL; inf_adopted_session_record_start_recording( record, filename.c_str(), &error); if(error != NULL) { g_object_unref(record); std::string what = error->message; g_error_free(error); throw std::runtime_error(what); } g_object_set_data_full( G_OBJECT(session), "GOBBY_SESSION_RECORD", record, g_object_unref); } catch(std::exception& ex) { std::cerr << "Failed to create record '" << filename << "': " << ex.what() << std::endl; } } } Gobby::Folder::Folder(bool hide_single_tab, Preferences& preferences, GtkSourceLanguageManager* lang_manager): m_hide_single_tab(hide_single_tab), m_preferences(preferences), m_lang_manager(lang_manager) { set_scrollable(true); if(hide_single_tab) set_show_tabs(false); } Gobby::Folder::~Folder() { // Remove all documents explicitely, so that all sessions are closed, // and records finished. while(get_n_pages()) remove_document(get_document(0)); } // TODO: Share common code of add_text_session and add_chat_session Gobby::TextSessionView& Gobby::Folder::add_text_session(InfTextSession* session, const Glib::ustring& title, const Glib::ustring& path, const Glib::ustring& hostname, const std::string& info_storage_key) { TextSessionView* view = Gtk::manage( new TextSessionView(session, title, path, hostname, info_storage_key, m_preferences, m_lang_manager)); view->show(); m_signal_document_added.emit(*view); TextSessionUserView* userview = Gtk::manage( new TextSessionUserView( *view, true, m_preferences.appearance.show_document_userlist, m_preferences.appearance.document_userlist_width)); userview->show(); TabLabel* tablabel = Gtk::manage(new TextTabLabel(*this, *view)); tablabel->signal_close_request().connect( sigc::bind( sigc::mem_fun(*this, &Folder::on_tab_close_request), sigc::ref(*view))); tablabel->show(); append_page(*userview, *tablabel); set_tab_reorderable(*userview, true); // Record the session, for debugging purposes: record(session, title); if(m_hide_single_tab && get_n_pages() > 1) set_show_tabs(true); return *view; } Gobby::ChatSessionView& Gobby::Folder::add_chat_session(InfChatSession* session, const Glib::ustring& title, const Glib::ustring& path, const Glib::ustring& hostname) { ChatSessionView* view = Gtk::manage( new ChatSessionView(session, title, path, hostname, m_preferences)); view->show(); m_signal_document_added.emit(*view); SessionUserView* userview = Gtk::manage( new SessionUserView( *view, false, m_preferences.appearance.show_chat_userlist, m_preferences.appearance.chat_userlist_width)); userview->show(); TabLabel* tablabel = Gtk::manage(new ChatTabLabel(*this, *view)); tablabel->signal_close_request().connect( sigc::bind( sigc::mem_fun(*this, &Folder::on_tab_close_request), sigc::ref(*view))); tablabel->show(); append_page(*userview, *tablabel); set_tab_reorderable(*userview, true); if(m_hide_single_tab && get_n_pages() > 1) set_show_tabs(true); return *view; } void Gobby::Folder::remove_document(SessionView& view) { m_signal_document_removed.emit(view); // Finish the record InfSession* session = view.get_session(); g_object_set_data(G_OBJECT(session), "GOBBY_SESSION_RECORD", NULL); g_object_ref(session); // Session could be closed already, for example if synchronization // failed. if(inf_session_get_status(session) != INF_SESSION_CLOSED) inf_session_close(session); // This relies on the sessionuserview being the direct parent of // view - maybe we should make a loop here instead which searches // the folder in the widget hierarchy, to be more robust. remove_page(*view.get_parent()); g_object_unref(session); if(get_n_pages() == 0) m_signal_document_changed.emit(NULL); if(m_hide_single_tab && get_n_pages() <= 1) set_show_tabs(false); } Gobby::SessionView& Gobby::Folder::get_document(unsigned int n) { SessionUserView* child = static_cast(get_nth_page(n)); if(!child) throw std::logic_error("Gobby::Folder::get_document: out of bounds"); return child->get_session_view(); } Gobby::SessionView* Gobby::Folder::lookup_document(InfSession* session) { const unsigned int n_pages = get_n_pages(); for(unsigned int i = 0; i < n_pages; ++i) if(get_document(i).get_session() == session) return &get_document(i); return NULL; } Gobby::SessionView* Gobby::Folder::get_current_document() { SessionUserView* child = static_cast( get_nth_page(get_current_page())); if(!child) return NULL; return &child->get_session_view(); } const Gobby::SessionView* Gobby::Folder::get_current_document() const { const SessionUserView* child = static_cast( get_nth_page(get_current_page())); if(!child) return NULL; return &child->get_session_view(); } void Gobby::Folder::switch_to_document(SessionView& document) { // Again, here we rely on document being the direct child of // the SessionUserView... set_current_page(page_num(*document.get_parent())); } void Gobby::Folder::on_tab_close_request(SessionView& view) { if(m_signal_document_close_request.emit(view)) remove_document(view); } void Gobby::Folder::on_switch_page(Gtk::Widget* page, guint page_num) { Notebook::on_switch_page(page, page_num); // SessionUserView& view = // *static_cast(get_nth_page(page_num)); SessionUserView& view = *static_cast(page); m_signal_document_changed.emit(&view.get_session_view()); } bool Gobby::Folder::on_key_press_event(GdkEventKey* event) { static KeyMap keymap; if( (event->state & GDK_MOD1_MASK) == GDK_MOD1_MASK) { unsigned int page = keymap.lookup(event->keyval); if(page != KeyMap::nval) { set_current_page(page); return true; } } if( (event->state & (GDK_CONTROL_MASK | GDK_MOD1_MASK)) == (GDK_CONTROL_MASK | GDK_MOD1_MASK)) { int offset = 0; if(event->keyval == GDK_KEY_Page_Up) offset = -1; if(event->keyval == GDK_KEY_Page_Down) offset = 1; if(offset != 0) { int res = get_current_page() + offset + get_n_pages(); set_current_page(res % get_n_pages() ); return true; } } return false; } gobby-0.4.94/code/core/sessionuserview.cpp0000644000175000017500000000723411531722663015472 00000000000000/* Gobby - GTK-based collaborative text editor * Copyright (C) 2008-2011 Armin Burgmeier * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "core/sessionuserview.hpp" #include "core/iconmanager.hpp" #include "core/closableframe.hpp" #include "util/i18n.hpp" // TODO: Consider using a single user list for all SessionViews, reparenting // into the current SessionUserView's frame. Keep dummy widgets in other // SessionUserViews so text does not resize. // Or, maybe more favorable, just put the userlist outside of the notebook, // but keep the notebook tabs on top of the userlist. Gobby::SessionUserView::SessionUserView(SessionView& view, bool show_disconnected, Preferences::Option& opt_view, Preferences::Option& w): m_view(view), m_userlist_width(w), m_userlist(inf_session_get_user_table(view.get_session())) { m_userlist.show(); m_userlist.set_show_disconnected(show_disconnected); Gtk::Frame* frame = Gtk::manage(new ClosableFrame( _("User List"), IconManager::STOCK_USERLIST, opt_view)); frame->set_shadow_type(Gtk::SHADOW_IN); frame->add(m_userlist); // frame manages visibility itself pack1(view, true, false); pack2(*frame, false, false); } void Gobby::SessionUserView::on_size_allocate(Gtk::Allocation& allocation) { Gtk::HPaned::on_size_allocate(allocation); // Setup initial paned position. We can't do this simply every time // on_size_allocate() is called since this would lead to an endless // loop somehow when the userlist width is changed forcefully // (for example by a m_view.set_info() requiring much width). if(!m_doc_userlist_width_changed_connection.connected()) { Glib::SignalProxyProperty proxy = property_position().signal_changed(); m_doc_userlist_width_changed_connection = proxy.connect(sigc::mem_fun( *this, &SessionUserView:: on_doc_userlist_width_changed)); Preferences::Option& option = m_userlist_width; m_pref_userlist_width_changed_connection = option.signal_changed().connect(sigc::mem_fun( *this, &SessionUserView:: on_pref_userlist_width_changed)); int desired_position = get_width() - m_userlist_width; desired_position = std::min( desired_position, property_max_position()); if(get_position() != desired_position) set_position(desired_position); } } void Gobby::SessionUserView::on_doc_userlist_width_changed() { unsigned int userlist_width = get_width() - get_position(); if(m_userlist_width != userlist_width) { m_pref_userlist_width_changed_connection.block(); m_userlist_width = userlist_width; m_pref_userlist_width_changed_connection.unblock(); } } void Gobby::SessionUserView::on_pref_userlist_width_changed() { int position = get_width() - m_userlist_width; if(get_position() != position) { m_doc_userlist_width_changed_connection.block(); set_position(position); m_doc_userlist_width_changed_connection.unblock(); } } gobby-0.4.94/code/core/closableframe.cpp0000644000175000017500000000472011531722663015011 00000000000000/* Gobby - GTK-based collaborative text editor * Copyright (C) 2008-2011 Armin Burgmeier * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "core/closableframe.hpp" #include "util/closebutton.hpp" #include "util/gtk-compat.hpp" #include #include Gobby::ClosableFrame::ClosableFrame(const Glib::ustring& title, const Gtk::StockID& stock_id, Preferences::Option& option): m_option(option), m_box(false, 6), m_allow_visible(true) { CloseButton* button = Gtk::manage(new CloseButton); button->signal_clicked().connect( sigc::mem_fun(*this, &ClosableFrame::on_clicked)); m_option.signal_changed().connect( sigc::mem_fun(*this, &ClosableFrame::on_option)); button->show(); Gtk::Image* image = Gtk::manage( new Gtk::Image(stock_id, Gtk::ICON_SIZE_MENU)); image->show(); Gtk::Label* label_title = Gtk::manage( new Gtk::Label(title, GtkCompat::ALIGN_LEFT)); label_title->show(); Gtk::HBox* hbox = Gtk::manage(new Gtk::HBox(false, 6)); hbox->pack_start(*image, Gtk::PACK_SHRINK); hbox->pack_start(*label_title, Gtk::PACK_SHRINK); hbox->pack_end(*button, Gtk::PACK_SHRINK); hbox->show(); m_box.set_border_width(6); m_box.pack_start(*hbox, Gtk::PACK_SHRINK); m_box.show(); add(m_box); on_option(); } void Gobby::ClosableFrame::set_allow_visible(bool allow_visible) { m_allow_visible = allow_visible; if(m_option && m_allow_visible) show(); else hide(); } void Gobby::ClosableFrame::on_add(Gtk::Widget* widget) { if(widget == &m_box) Gtk::Frame::on_add(widget); else m_box.pack_start(*widget, Gtk::PACK_EXPAND_WIDGET); } void Gobby::ClosableFrame::on_clicked() { m_option = false; } void Gobby::ClosableFrame::on_option() { if(m_option && m_allow_visible) show(); else hide(); } gobby-0.4.94/code/core/statusbar.hpp0000644000175000017500000000706611531722663014235 00000000000000/* Gobby - GTK-based collaborative text editor * Copyright (C) 2008-2011 Armin Burgmeier * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GOBBY_STATUSBAR_HPP_ #define _GOBBY_STATUSBAR_HPP_ #include "folder.hpp" #include #include #include #include #include /* ARGH!!! */ #ifdef G_OS_WIN32 # ifdef ERROR # undef ERROR # endif #endif namespace Gobby { class StatusBar: public Gtk::HBox { protected: class Message; typedef std::list MessageList; public: enum MessageType { INFO, ERROR }; typedef MessageList::iterator MessageHandle; StatusBar(Gtk::Window& window, Folder& folder, const Preferences& preferences); ~StatusBar(); MessageHandle add_info_message(const Glib::ustring& message, unsigned int timeout = 0); // This does not return a message handle because users dispose of // messages by clicking on them. void add_error_message(const Glib::ustring& brief_desc, const Glib::ustring& detailed_desc, unsigned int timeout = 0); void remove_message(const MessageHandle& handle); void hide_message(const MessageHandle& handle); MessageHandle invalid_handle(); protected: MessageHandle add_message(MessageType type, const Glib::ustring& message, const Glib::ustring& dialog_message, unsigned int timeout = 0); static void on_mark_set_static(GtkTextBuffer* buffer, GtkTextIter* location, GtkTextMark* mark, gpointer user_data) { static_cast(user_data)->on_mark_set(mark); } static void on_changed_static(GtkTextBuffer* buffer, gpointer user_data) { static_cast(user_data)->on_changed(); } static void on_toggled_overwrite_static(GtkTextView* buffer, GParamSpec* pspec, gpointer user_data) { static_cast(user_data)->on_toggled_overwrite(); } void on_message_clicked(GdkEventButton* button, const MessageHandle& handle); void on_document_removed(SessionView& view); void on_document_changed(SessionView* view); void on_view_changed(); void on_mark_set(GtkTextMark* mark); void on_toggled_overwrite(); void on_changed(); bool on_window_state_event(GdkEventWindowState* event); void update_pos_display(); Folder& m_folder; const Preferences& m_preferences; MessageList m_list; unsigned int m_visible_messages; Gtk::Statusbar m_bar_position; TextSessionView* m_current_view; gulong m_mark_set_handler; gulong m_changed_handler; gulong m_toverwrite_handler; guint m_position_context_id; }; } #endif // _GOBBY_STATUSBAR_HPP_ gobby-0.4.94/code/core/header.hpp0000644000175000017500000001116211531722663013445 00000000000000/* Gobby - GTK-based collaborative text editor * Copyright (C) 2008 Armin Burgmeier * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GOBBY_HEADER_HPP_ #define _GOBBY_HEADER_HPP_ #include #include #include #include #include #include #include #include #include "preferences.hpp" namespace Gobby { class Header: public Gtk::VBox { public: class Error: public Glib::Error { public: enum Code { MENUBAR_MISSING, TOOLBAR_MISSING }; Error(Code error_code, const Glib::ustring& error_message); Code code() const; }; class LanguageAction: public Gtk::RadioAction { protected: LanguageAction(GtkSourceLanguage* language, Gtk::RadioAction::Group& group); public: static Glib::RefPtr create(GtkSourceLanguage* language, Gtk::RadioAction::Group& group); GtkSourceLanguage* get_language() const { return m_language; } private: GtkSourceLanguage* m_language; }; typedef std::list > LanguageList; typedef std::map LanguageMap; Header(Preferences& preferences, GtkSourceLanguageManager* lang_mgr); Glib::RefPtr get_accel_group(); Glib::RefPtr get_accel_group() const; Gtk::MenuBar& get_menubar(); Gtk::Toolbar& get_toolbar(); Glib::RefPtr lookup_language_action(GtkSourceLanguage* language); protected: Preferences& m_preferences; Gtk::RadioAction::Group m_highlight_group; const Glib::RefPtr m_ui_manager; Gtk::MenuBar* m_menubar; Gtk::Toolbar* m_toolbar; public: const Glib::RefPtr group_file; const Glib::RefPtr group_edit; const Glib::RefPtr group_view; const Glib::RefPtr group_help; const Glib::RefPtr action_file; const Glib::RefPtr action_file_new; const Glib::RefPtr action_file_open; const Glib::RefPtr action_file_open_location; const Glib::RefPtr action_file_save; const Glib::RefPtr action_file_save_as; const Glib::RefPtr action_file_save_all; const Glib::RefPtr action_file_export_html; const Glib::RefPtr action_file_connect; const Glib::RefPtr action_file_close; const Glib::RefPtr action_file_quit; const Glib::RefPtr action_edit; const Glib::RefPtr action_edit_undo; const Glib::RefPtr action_edit_redo; const Glib::RefPtr action_edit_cut; const Glib::RefPtr action_edit_copy; const Glib::RefPtr action_edit_paste; const Glib::RefPtr action_edit_find; const Glib::RefPtr action_edit_find_next; const Glib::RefPtr action_edit_find_prev; const Glib::RefPtr action_edit_find_replace; const Glib::RefPtr action_edit_goto_line; const Glib::RefPtr action_edit_preferences; const Glib::RefPtr action_view; const Glib::RefPtr action_view_hide_user_colors; const Glib::RefPtr action_view_toolbar; const Glib::RefPtr action_view_statusbar; const Glib::RefPtr action_view_browser; const Glib::RefPtr action_view_chat; const Glib::RefPtr action_view_document_userlist; const Glib::RefPtr action_view_chat_userlist; const Glib::RefPtr action_view_highlight_mode; const Glib::RefPtr action_view_highlight_none; const LanguageMap action_view_highlight_languages; const Glib::RefPtr action_help; const Glib::RefPtr action_help_contents; const Glib::RefPtr action_help_about; }; } #endif // _GOBBY_HEADER_HPP_ gobby-0.4.94/code/core/tablabel.hpp0000644000175000017500000000472211531722663013767 00000000000000/* Gobby - GTK-based collaborative text editor * Copyright (C) 2008-2011 Armin Burgmeier * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GOBBY_TABLABEL_HPP_ #define _GOBBY_TABLABEL_HPP_ #include "core/sessionview.hpp" #include #include namespace Gobby { class Folder; class TabLabel: public Gtk::HBox { public: typedef Glib::SignalProxy0 SignalCloseRequest; TabLabel(Folder& folder, SessionView& view, Gtk::StockID active_icon); virtual ~TabLabel(); SignalCloseRequest signal_close_request() { return m_button.signal_clicked(); } protected: static void on_notify_status_static(GObject* object, GParamSpec* pspec, gpointer user_data) { static_cast(user_data)->on_notify_status(); } static void on_notify_subscription_group_static(GObject* object, GParamSpec* pspec, gpointer user_data) { static_cast(user_data)-> on_notify_subscription_group(); } void on_folder_document_changed(SessionView* view); // Can be overriden by derived classes: virtual void on_active_user_changed(InfUser* user); virtual void on_notify_status(); virtual void on_notify_subscription_group(); virtual void on_activate(); // To be called by derived classes: void set_changed(); Folder& m_folder; SessionView& m_view; Gtk::Image m_icon; Gtk::Label m_title; Gtk::HBox m_extra; CloseButton m_button; bool m_changed; private: void update_icon(); void update_color(); Gtk::StockID m_active_icon; // Whether the document was changed since it has been active. gulong m_notify_status_handle; gulong m_notify_subscription_group_handle; }; } #endif // _GOBBY_TABLABEL_HPP_ gobby-0.4.94/code/core/filechooser.hpp0000644000175000017500000000300411531722663014513 00000000000000/* Gobby - GTK-based collaborative text editor * Copyright (C) 2008-2011 Armin Burgmeier * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GOBBY_FILE_CHOOSER_HPP_ #define _GOBBY_FILE_CHOOSER_HPP_ #include #include namespace Gobby { // This class manages a common "current folder uri" for file chooser // dialogs. class FileChooser { public: class Dialog: public Gtk::FileChooserDialog { public: Dialog(Gobby::FileChooser& chooser, Gtk::Window& parent, const Glib::ustring& title, Gtk::FileChooserAction action); ~Dialog(); protected: Gobby::FileChooser& m_chooser; }; FileChooser(); const std::string& get_current_folder_uri() const; void set_current_folder_uri(const std::string& uri); private: std::string m_current_folder_uri; }; } #endif // _GOBBY_FILE_CHOOSER_HPP_ gobby-0.4.94/code/core/chattablabel.hpp0000644000175000017500000000277111531722663014631 00000000000000/* Gobby - GTK-based collaborative text editor * Copyright (C) 2008-2011 Armin Burgmeier * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GOBBY_CHATTABLABEL_HPP_ #define _GOBBY_CHATTABLABEL_HPP_ #include "core/chatsessionview.hpp" #include "core/tablabel.hpp" namespace Gobby { class ChatTabLabel: public TabLabel { public: ChatTabLabel(Folder& folder, ChatSessionView& view); ~ChatTabLabel(); protected: static void on_add_message_static(InfChatBuffer* buffer, InfChatBufferMessage* message, gpointer user_data) { static_cast(user_data)-> on_changed(message->user); } virtual void on_notify_subscription_group(); // override void on_changed(InfUser* author); private: gulong m_add_message_handle; }; } #endif // _GOBBY_CHATTABLABEL_HPP_ gobby-0.4.94/code/core/textundogrouping.hpp0000644000175000017500000000363011531722663015643 00000000000000/* Gobby - GTK-based collaborative text editor * Copyright (C) 2008-2011 Armin Burgmeier * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GOBBY_TEXTUNDOGROUPING_HPP_ #define _GOBBY_TEXTUNDOGROUPING_HPP_ #include #include #include #include namespace Gobby { class TextUndoGrouping { public: TextUndoGrouping(InfAdoptedAlgorithm* algorithm, InfTextUser* user, GtkTextBuffer* buffer); ~TextUndoGrouping(); guint get_undo_size() const; guint get_redo_size() const; protected: static void on_begin_user_action_static(GtkTextBuffer* buffer, gpointer user_data) { static_cast(user_data)-> on_begin_user_action(); } static void on_end_user_action_static(GtkTextBuffer* buffer, gpointer user_data) { static_cast(user_data)-> on_end_user_action(); } void on_begin_user_action(); void on_end_user_action(); GtkTextBuffer* m_buffer; InfTextUndoGrouping* m_grouping; gulong m_begin_user_action_handle; gulong m_end_user_action_handle; }; } #endif // _GOBBY_TEXTSESSIONVIEW_HPP_ gobby-0.4.94/code/core/userlist.cpp0000644000175000017500000002357511531722663014075 00000000000000/* Gobby - GTK-based collaborative text editor * Copyright (C) 2008-2011 Armin Burgmeier * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "core/userlist.hpp" #include "core/iconmanager.hpp" #include "util/i18n.hpp" #include "util/color.hpp" #include "util/gtk-compat.hpp" #include #include #include namespace { typedef sigc::slot ForeachUserFunc; void foreach_user_ctor_func(InfUser* user, gpointer user_data) { (*static_cast(user_data))(user); } Glib::RefPtr generate_user_color_pixbuf(Gtk::Widget& w, gdouble hue) { Gtk::StockID id = Gobby::IconManager::STOCK_USER_COLOR_INDICATOR; Glib::RefPtr pixbuf = Gobby::GtkCompat::render_icon( w, id, Gtk::ICON_SIZE_MENU); // pixbuf is shared, though we want to mess with it here pixbuf = pixbuf->copy(); for(int y = 0; y < pixbuf->get_height(); ++y) { for(int x = 0; x < pixbuf->get_width(); ++x) { guint8* pixels = pixbuf->get_pixels(); guint8* pixel = pixels + y * pixbuf->get_rowstride() + x * pixbuf->get_n_channels(); double r = pixel[0]/255.0; double g = pixel[1]/255.0; double b = pixel[2]/255.0; Gobby::rgb_to_hsv(r,g,b); r = hue; Gobby::hsv_to_rgb(r,g,b); pixel[0] = static_cast(r * 255.0 + 0.5); pixel[1] = static_cast(g * 255.0 + 0.5); pixel[2] = static_cast(b * 255.0 + 0.5); } } return pixbuf; } } Gobby::UserList::UserList(InfUserTable* table): m_table(table), m_store(Gtk::ListStore::create(m_columns)), m_view(m_store) { m_store->set_sort_func(m_columns.user, sigc::mem_fun(*this, &UserList::sort_func)); m_store->set_sort_column(m_columns.user, Gtk::SORT_ASCENDING); m_add_user_handle = g_signal_connect( G_OBJECT(table), "add-user", G_CALLBACK(on_add_user_static), this); ForeachUserFunc slot(sigc::mem_fun(*this, &UserList::on_add_user)); inf_user_table_foreach_user(table, foreach_user_ctor_func, &slot); Gtk::CellRendererPixbuf* icon_renderer = Gtk::manage(new Gtk::CellRendererPixbuf); Gtk::CellRendererPixbuf* color_renderer = Gtk::manage(new Gtk::CellRendererPixbuf); Gtk::CellRendererText* name_renderer = Gtk::manage(new Gtk::CellRendererText); Gtk::TreeViewColumn* column = Gtk::manage(new Gtk::TreeViewColumn(_("Users"))); column->pack_start(*icon_renderer, false); column->pack_start(*color_renderer, false); column->pack_start(*name_renderer, true); column->set_cell_data_func( *icon_renderer, sigc::mem_fun(*this, &UserList::icon_cell_data_func)); column->set_cell_data_func( *color_renderer, sigc::mem_fun(*this, &UserList::color_cell_data_func)); column->set_cell_data_func( *name_renderer, sigc::mem_fun(*this, &UserList::name_cell_data_func)); m_view.signal_row_activated().connect( sigc::mem_fun(*this, &UserList::on_row_activated)); column->set_spacing(6); m_view.append_column(*column); m_view.get_selection()->set_mode(Gtk::SELECTION_NONE); m_view.set_headers_visible(false); m_view.show(); Gtk::ScrolledWindow* scroll = Gtk::manage(new Gtk::ScrolledWindow); scroll->set_shadow_type(Gtk::SHADOW_IN); scroll->set_policy(Gtk::POLICY_AUTOMATIC, Gtk::POLICY_AUTOMATIC); scroll->add(m_view); scroll->show(); pack_start(*scroll, Gtk::PACK_EXPAND_WIDGET); } Gobby::UserList::~UserList() { g_signal_handler_disconnect(G_OBJECT(m_table), m_add_user_handle); m_filter_model.reset(); const Gtk::TreeModel::Children& children = m_store->children(); for(Gtk::TreeIter iter = children.begin(); iter != children.end(); ++ iter) { InfUser* user = (*iter)[m_columns.user]; gulong notify_hue_handle = (*iter)[m_columns.notify_hue_handle]; gulong notify_status_handle = (*iter)[m_columns.notify_status_handle]; if(notify_hue_handle > 0) g_signal_handler_disconnect(G_OBJECT(user), notify_hue_handle); g_signal_handler_disconnect(G_OBJECT(user), notify_status_handle); } } void Gobby::UserList::set_show_disconnected(bool show_disconnected) { if(show_disconnected) { m_filter_model.reset(); m_view.set_model(m_store); } else { m_filter_model = Gtk::TreeModelFilter::create(m_store); m_view.set_model(m_filter_model); m_filter_model->set_visible_func( sigc::mem_fun(*this, &UserList::visible_func)); } } bool Gobby::UserList::visible_func(const Gtk::TreeIter& iter) { InfUser* user = (*iter)[m_columns.user]; // Can happen after creation of the node when the user object has // not yet been set if(user == NULL) return false; return inf_user_get_status(user) != INF_USER_UNAVAILABLE; } void Gobby::UserList::icon_cell_data_func(Gtk::CellRenderer* renderer, const Gtk::TreeIter& iter) { Gtk::CellRendererPixbuf* pixbuf_renderer = dynamic_cast(renderer); g_assert(pixbuf_renderer); pixbuf_renderer->property_stock_size() = Gtk::ICON_SIZE_MENU; InfUser* user = (*iter)[m_columns.user]; switch(inf_user_get_status(user)) { case INF_USER_ACTIVE: case INF_USER_INACTIVE: pixbuf_renderer->property_stock_id() = Gtk::Stock::CONNECT.id; break; case INF_USER_UNAVAILABLE: pixbuf_renderer->property_stock_id() = Gtk::Stock::DISCONNECT.id; break; default: g_assert_not_reached(); break; } } void Gobby::UserList::color_cell_data_func(Gtk::CellRenderer* renderer, const Gtk::TreeIter& iter) { Gtk::CellRendererPixbuf* pixbuf_renderer = dynamic_cast(renderer); g_assert(pixbuf_renderer); Glib::RefPtr pixbuf = (*iter)[m_columns.color]; if(pixbuf) { pixbuf_renderer->property_pixbuf() = pixbuf; pixbuf_renderer->property_visible() = true; } else { pixbuf_renderer->property_visible() = false; } } void Gobby::UserList::name_cell_data_func(Gtk::CellRenderer* renderer, const Gtk::TreeIter& iter) { Gtk::CellRendererText* text_renderer = dynamic_cast(renderer); g_assert(text_renderer); InfUser* user = (*iter)[m_columns.user]; switch(inf_user_get_status(INF_USER(user))) { case INF_USER_ACTIVE: text_renderer->property_foreground_set() = false; break; case INF_USER_INACTIVE: text_renderer->property_foreground() = "#606060"; break; case INF_USER_UNAVAILABLE: text_renderer->property_foreground() = "#a0a0a0"; break; } text_renderer->property_text() = inf_user_get_name(user); } int Gobby::UserList::sort_func(const Gtk::TreeIter& iter1, const Gtk::TreeIter& iter2) { InfUser* user1 = (*iter1)[m_columns.user]; InfUser* user2 = (*iter2)[m_columns.user]; bool available1 = inf_user_get_status(user1) != INF_USER_UNAVAILABLE; bool available2 = inf_user_get_status(user2) != INF_USER_UNAVAILABLE; if(available1 != available2) { if(!available1) return 1; return -1; } else { // We might want to cache collate keys in the ListStore if // this turns out to be a performance problem: return g_utf8_collate(inf_user_get_name(user1), inf_user_get_name(user2)); } } void Gobby::UserList::on_add_user(InfUser* user) { g_assert(find_user_iter(user) == m_store->children().end()); Gtk::TreeIter iter = m_store->append(); (*iter)[m_columns.user] = user; (*iter)[m_columns.notify_status_handle] = g_signal_connect( G_OBJECT(user), "notify::status", G_CALLBACK(on_notify_status_static), this); if(INF_TEXT_IS_USER(user)) { Glib::RefPtr color_pixbuf = generate_user_color_pixbuf( *this, inf_text_user_get_hue(INF_TEXT_USER(user))); (*iter)[m_columns.color] = color_pixbuf; (*iter)[m_columns.notify_hue_handle] = g_signal_connect( G_OBJECT(user), "notify::hue", G_CALLBACK(on_notify_hue_static), this); } else { // Should be 0 anyway, but let's be sure: (*iter)[m_columns.notify_hue_handle] = 0; } } void Gobby::UserList::on_notify_hue(InfTextUser* user) { Gtk::TreeIter iter = find_user_iter(INF_USER(user)); g_assert(iter != m_store->children().end()); (*iter)[m_columns.color] = generate_user_color_pixbuf( *this, inf_text_user_get_hue(user)); } void Gobby::UserList::on_notify_status(InfUser* user) { Gtk::TreeIter iter = find_user_iter(user); g_assert(iter != m_store->children().end()); // This does not cause a resort: //m_store->row_changed(m_store->get_path(iter), iter); // But this does: (*iter)[m_columns.user] = user; } void Gobby::UserList::on_row_activated(const Gtk::TreePath& path, Gtk::TreeViewColumn* column) { Gtk::TreePath parent_path; if(m_filter_model) parent_path = m_filter_model->convert_path_to_child_path(path); else parent_path = path; const Gtk::TreeIter& iter = m_store->get_iter(path); InfUser* user = (*iter)[m_columns.user]; if(inf_user_get_status(user) != INF_USER_UNAVAILABLE) m_signal_user_activated.emit(user); } Gtk::TreeIter Gobby::UserList::find_user_iter(InfUser* user) { const Gtk::TreeModel::Children& children = m_store->children(); for(Gtk::TreeIter iter = children.begin(); iter != children.end(); ++ iter) { if(user == (*iter)[m_columns.user]) return iter; } return children.end(); } gobby-0.4.94/code/core/nodewatch.hpp0000644000175000017500000000516011531722663014172 00000000000000/* Gobby - GTK-based collaborative text editor * Copyright (C) 2008-2011 Armin Burgmeier * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GOBBY_NODE_WATCH_HPP_ #define _GOBBY_NODE_WATCH_HPP_ #include #include #include namespace Gobby { class NodeWatch { public: typedef sigc::signal SignalNodeRemoved; NodeWatch(InfcBrowser* browser, const InfcBrowserIter* iter); ~NodeWatch(); InfcBrowser* get_browser() const { return m_browser; } const InfcBrowserIter& get_browser_iter() const { g_assert(m_browser); return m_iter; } SignalNodeRemoved signal_node_removed() const { return m_signal_node_removed; } protected: static void on_connection_notify_status_static(GObject* object, GParamSpec* pspec, gpointer user_data) { static_cast(user_data)-> on_connection_notify_status(); } static void on_browser_notify_connection_static(GObject* object, GParamSpec* pspec, gpointer user_data) { static_cast(user_data)-> on_browser_notify_connection(); } static void on_node_removed_static(InfcBrowser* browser, InfcBrowserIter* iter, gpointer user_data) { static_cast(user_data)-> on_node_removed(browser, iter); } void on_connection_notify_status(); void on_browser_notify_connection(); void on_node_removed(InfcBrowser* browser, InfcBrowserIter* iter); void reset(); InfcBrowser* m_browser; InfXmlConnection* m_connection; InfcBrowserIter m_iter; gulong m_connection_notify_status_handler; gulong m_browser_notify_connection_handler; gulong m_node_removed_handler; SignalNodeRemoved m_signal_node_removed; private: void set_connection(InfXmlConnection* connection); }; } #endif // _GOBBY_NODE_WATCH_HPP_ gobby-0.4.94/code/core/filechooser.cpp0000644000175000017500000000416111531722663014513 00000000000000/* Gobby - GTK-based collaborative text editor * Copyright (C) 2008-2011 Armin Burgmeier * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "core/filechooser.hpp" #include Gobby::FileChooser::Dialog::Dialog(Gobby::FileChooser& chooser, Gtk::Window& parent, const Glib::ustring& title, Gtk::FileChooserAction action): Gtk::FileChooserDialog(parent, title, action), m_chooser(chooser) { // Set defaults depending on action switch(action) { case Gtk::FILE_CHOOSER_ACTION_SAVE: add_button(Gtk::Stock::CANCEL, Gtk::RESPONSE_CANCEL); add_button(Gtk::Stock::SAVE, Gtk::RESPONSE_ACCEPT); set_do_overwrite_confirmation(true); break; case Gtk::FILE_CHOOSER_ACTION_OPEN: add_button(Gtk::Stock::CANCEL, Gtk::RESPONSE_CANCEL); add_button(Gtk::Stock::OPEN, Gtk::RESPONSE_ACCEPT); break; default: g_assert_not_reached(); break; } set_local_only(false); set_current_folder_uri(m_chooser.get_current_folder_uri()); } Gobby::FileChooser::Dialog::~Dialog() { m_chooser.set_current_folder_uri(get_current_folder_uri()); } Gobby::FileChooser::FileChooser(): m_current_folder_uri(Glib::filename_to_uri(Glib::get_current_dir())) { } const std::string& Gobby::FileChooser::get_current_folder_uri() const { return m_current_folder_uri; } void Gobby::FileChooser::set_current_folder_uri(const std::string& uri) { m_current_folder_uri = uri; } gobby-0.4.94/code/core/preferences.hpp0000644000175000017500000001043211531722663014515 00000000000000/* Gobby - GTK-based collaborative text editor * Copyright (C) 2008-2011 Armin Burgmeier * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GOBBY_PREFERENCES_HPP_ #define _GOBBY_PREFERENCES_HPP_ #include "util/config.hpp" #include "features.hpp" #include #include #include #include namespace Gobby { class Preferences { public: template class Option { public: typedef sigc::signal signal_changed_type; Option(const Type& initial_value): m_value(initial_value) {} const Option& operator=(const Type& new_value) { m_value = new_value; notify(); return *this; } void set(const Type& new_value) { *this = new_value; } const Type& get() const { return m_value; } operator const Type&() const { return m_value; } /*operator Type&() { return m_value; }*/ signal_changed_type signal_changed() const { return m_signal_changed; } void notify() const { m_signal_changed.emit(); } protected: Type m_value; signal_changed_type m_signal_changed; }; /** Reads preferences values out of a config, using default values * for values that do not exist in the config. */ Preferences(Config& m_config); /** Serialises preferences back to config. */ void serialize(Config& config) const; class User { public: User(Config::ParentEntry& entry); void serialize(Config::ParentEntry& entry) const; Option name; Option hue; Option host_directory; Option show_remote_cursors; Option show_remote_selections; Option show_remote_current_lines; Option show_remote_cursor_positions; }; class Editor { public: Editor(Config::ParentEntry& entry); void serialize(Config::ParentEntry& entry) const; Option tab_width; Option tab_spaces; Option indentation_auto; Option homeend_smart; Option autosave_enabled; Option autosave_interval; }; class View { public: View(Config::ParentEntry& entry); void serialize(Config::ParentEntry& entry) const; Option wrap_mode; Option linenum_display; Option curline_highlight; Option margin_display; Option margin_pos; Option bracket_highlight; Option whitespace_display; }; class Appearance { public: Appearance(Config::ParentEntry& entry); void serialize(Config::ParentEntry& entry) const; // TODO: Option use_system_default_toolbar_style // (sets toolbar_style by gconf). At least WITH_GNOME. Option toolbar_style; Option font; Option scheme_id; Option document_userlist_width; Option chat_userlist_width; Option show_toolbar; Option show_statusbar; Option show_browser; Option show_chat; Option show_document_userlist; Option show_chat_userlist; }; class Security { public: Security(Config::ParentEntry& entry); void serialize(Config::ParentEntry& entry) const; Option trust_file; Option policy; }; User user; Editor editor; View view; Appearance appearance; Security security; }; template std::ostream& operator<<(std::ostream& stream, const Preferences::Option& option) { stream << static_cast(option); return stream; } } #endif // _GOBBY_PREFERENCES_HPP_ gobby-0.4.94/code/core/sessionview.hpp0000644000175000017500000000433711531722663014601 00000000000000/* Gobby - GTK-based collaborative text editor * Copyright (C) 2008-2011 Armin Burgmeier * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GOBBY_SESSIONVIEW_HPP_ #define _GOBBY_SESSIONVIEW_HPP_ #include "util/closebutton.hpp" #include #include #include #include namespace Gobby { class SessionView: public Gtk::VBox { public: typedef sigc::signal SignalActiveUserChanged; SessionView(InfSession* session, const Glib::ustring& title, const Glib::ustring& path, const Glib::ustring& hostname); virtual ~SessionView(); const InfSession* get_session() const { return m_session; } InfSession* get_session() { return m_session; } const Glib::ustring& get_title() const { return m_title; } const Glib::ustring& get_path() const { return m_path; } const Glib::ustring& get_hostname() const { return m_hostname; } void set_info(const Glib::ustring& info, bool closable); void unset_info(); virtual InfUser* get_active_user() const; SignalActiveUserChanged signal_active_user_changed() const { return m_signal_active_user_changed; } protected: void active_user_changed(InfUser* new_user); InfSession* m_session; const Glib::ustring m_title; const Glib::ustring m_path; const Glib::ustring m_hostname; Gtk::Frame m_info_frame; Gtk::VBox m_info_box; Gtk::HBox m_info_close_button_box; CloseButton m_info_close_button; Gtk::Label m_info_label; private: SignalActiveUserChanged m_signal_active_user_changed; }; } #endif // _GOBBY_SESSIONVIEW_HPP_ gobby-0.4.94/code/core/huebutton.cpp0000644000175000017500000000567311531722663014237 00000000000000/* Gobby - GTK-based collaborative text editor * Copyright (C) 2008-2011 Armin Burgmeier * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "core/huebutton.hpp" #include "util/color.hpp" #include #include Gobby::HueButton::HueButton(const Glib::ustring& title, Gtk::Window& parent): m_title(title), m_parent(parent), m_saturation(1.0), m_value(1.0) { parent.signal_hide().connect( sigc::mem_fun(*this, &HueButton::on_parent_hide)); set_hue(1.0); } double Gobby::HueButton::get_hue() const { return hue_from_gdk_color(get_color()); } double Gobby::HueButton::get_saturation() const { return m_saturation; } double Gobby::HueButton::get_value() const { return m_value; } void Gobby::HueButton::set_hue(double hue) { Gdk::Color color; color.set_hsv(hue * 360.0, m_saturation, m_value); set_color(color); } void Gobby::HueButton::set_saturation(double saturation) { m_saturation = saturation; set_hue(get_hue()); // Update view } void Gobby::HueButton::set_value(double value) { m_value = value; set_hue(get_hue()); // Update view } void Gobby::HueButton::on_clicked() { if(!m_dialog.get()) { m_dialog.reset(new Gtk::Dialog(m_title, m_parent)); m_hue_chooser = inf_text_gtk_hue_chooser_new_with_hue(get_hue()); gtk_box_pack_start(GTK_BOX(m_dialog->get_vbox()->gobj()), m_hue_chooser, FALSE, FALSE, 0); gtk_widget_show(m_hue_chooser); m_dialog->add_button(Gtk::Stock::CANCEL, Gtk::RESPONSE_CANCEL); m_dialog->add_button(Gtk::Stock::OK, Gtk::RESPONSE_OK); m_dialog->set_default_response(Gtk::RESPONSE_OK); m_dialog->set_resizable(false); m_dialog->signal_response().connect( sigc::mem_fun(*this, &HueButton::on_dialog_response)); } else { inf_text_gtk_hue_chooser_set_hue( INF_TEXT_GTK_HUE_CHOOSER(m_hue_chooser), get_hue()); } m_dialog->present(); } void Gobby::HueButton::on_parent_hide() { // Hide child dialog when the window containing the color button // goes away m_dialog.reset(NULL); } void Gobby::HueButton::on_dialog_response(int response_id) { if(response_id == Gtk::RESPONSE_OK) { set_hue( inf_text_gtk_hue_chooser_get_hue( INF_TEXT_GTK_HUE_CHOOSER(m_hue_chooser))); } m_dialog->hide(); } gobby-0.4.94/code/core/chattablabel.cpp0000644000175000017500000000360211531722663014616 00000000000000/* Gobby - GTK-based collaborative text editor * Copyright (C) 2008-2011 Armin Burgmeier * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "core/chattablabel.hpp" #include Gobby::ChatTabLabel::ChatTabLabel(Folder& folder, ChatSessionView& view): TabLabel(folder, view, Gtk::Stock::NETWORK) { m_button.hide(); // Only show when disconnected InfChatBuffer* buffer = INF_CHAT_BUFFER( inf_session_get_buffer(INF_SESSION(view.get_session()))); m_add_message_handle = g_signal_connect_after( G_OBJECT(buffer), "add-message", G_CALLBACK(on_add_message_static), this); } Gobby::ChatTabLabel::~ChatTabLabel() { InfChatBuffer* buffer = INF_CHAT_BUFFER( inf_session_get_buffer(INF_SESSION(m_view.get_session()))); g_signal_handler_disconnect(buffer, m_add_message_handle); } void Gobby::ChatTabLabel::on_notify_subscription_group() { InfSession* session = INF_SESSION(m_view.get_session()); if(inf_session_get_subscription_group(session) != NULL) m_button.hide(); else m_button.show(); } void Gobby::ChatTabLabel::on_changed(InfUser* author) { if(!m_changed) { InfSession* session = INF_SESSION(m_view.get_session()); if(inf_session_get_status(session) == INF_SESSION_RUNNING) set_changed(); } } gobby-0.4.94/code/core/browser.hpp0000644000175000017500000001100211531722663013671 00000000000000/* Gobby - GTK-based collaborative text editor * Copyright (C) 2008-2011 Armin Burgmeier * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GOBBY_BROWSER_HPP_ #define _GOBBY_BROWSER_HPP_ #include "core/statusbar.hpp" #include "core/preferences.hpp" #include "util/resolv.hpp" #include "util/historyentry.hpp" #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include namespace Gobby { class Browser: public Gtk::VBox { public: struct Resolv { StatusBar::MessageHandle message_handle; }; typedef std::map ResolvMap; typedef sigc::signal SignalActivate; Browser(Gtk::Window& parent, const InfcNotePlugin* text_plugin, StatusBar& status_bar, Preferences& preferences); ~Browser(); InfGtkBrowserModelSort* get_store() { return m_sort_model; } const InfGtkBrowserModelSort* get_store() const { return m_sort_model; } InfGtkBrowserView* get_view() { return m_browser_view; } bool get_selected(InfcBrowser** browser, InfcBrowserIter* iter); void set_selected(InfcBrowser* browser, InfcBrowserIter* iter); void connect_to_host(Glib::ustring str); void set_sasl_context(InfSaslContext* sasl_context, const char* mechanisms); SignalActivate signal_activate() const { return m_signal_activate; } protected: static void on_set_browser_static(InfGtkBrowserModel* model, GtkTreePath* path, GtkTreeIter* iter, InfcBrowser* browser, gpointer user_data) { Browser* browserpp = static_cast(user_data); browserpp->on_set_browser(iter, browser); //Gtk::TreeIter( // GTK_TREE_MODEL(browserpp->m_browser_store), // iter), browser); } static void on_activate_static(InfGtkBrowserView* view, GtkTreeIter* iter, gpointer user_data) { static_cast(user_data)->on_activate(iter); } void on_expanded_changed(); void on_set_browser(GtkTreeIter* iter, InfcBrowser* browser); void on_activate(GtkTreeIter* iter); void on_hostname_activate(); void on_resolv_done(ResolvHandle* handle, InfIpAddress* address, guint port, const Glib::ustring& hostname, unsigned int device_index); void on_resolv_error(ResolvHandle* handle, const std::runtime_error& error, const Glib::ustring& hostname); void on_security_policy_changed(); void on_trust_file_changed(); Gtk::Window& m_parent; const InfcNotePlugin* m_text_plugin; StatusBar& m_status_bar; Preferences& m_preferences; InfSaslContext* m_sasl_context; std::string m_sasl_mechanisms; InfXmppManager* m_xmpp_manager; #ifdef LIBINFINITY_HAVE_AVAHI InfDiscoveryAvahi* m_discovery; #endif InfGtkIo* m_io; InfGtkCertificateManager* m_cert_manager; InfGtkBrowserStore* m_browser_store; InfGtkBrowserView* m_browser_view; Gtk::ScrolledWindow m_scroll; Gtk::Expander m_expander; Gtk::HBox m_hbox; Gtk::Label m_label_hostname; HistoryComboBoxEntry m_entry_hostname; ResolvMap m_resolv_map; SignalActivate m_signal_activate; InfGtkBrowserModelSort* m_sort_model; }; } #endif // _GOBBY_BROWSER_HPP_ gobby-0.4.94/code/core/titlebar.hpp0000644000175000017500000000362311531722663014026 00000000000000/* Gobby - GTK-based collaborative text editor * Copyright (C) 2008-2011 Armin Burgmeier * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GOBBY_TITLEBAR_HPP_ #define _GOBBY_TITLEBAR_HPP_ #include "core/folder.hpp" #include "core/sessionview.hpp" #include #include namespace Gobby { class TitleBar: public sigc::trackable { public: TitleBar(Gtk::Window& window, Folder& folder); private: static void on_notify_status_static(GObject* object, GParamSpec* pspec, gpointer user_data) { static_cast(user_data)->on_notify_status(); } static void on_notify_modified_static(InfBuffer* buffer, GParamSpec* pspec, gpointer user_data) { static_cast(user_data)->on_notify_modified(); } void on_document_removed(SessionView& view); void on_document_changed(SessionView* view); void on_notify_status(); void on_notify_modified(); void update_title(); Gtk::Window& m_window; Folder& m_folder; SessionView* m_current_view; gulong m_notify_status_handler; gulong m_modified_changed_handler; }; } #endif // _GOBBY_TITLEBAR_HPP_ gobby-0.4.94/code/core/noteplugin.cpp0000644000175000017500000000421111531722663014371 00000000000000/* Gobby - GTK-based collaborative text editor * Copyright (C) 2008-2011 Armin Burgmeier * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "core/noteplugin.hpp" #include #include #include #include #include #include namespace { InfSession* session_new(InfIo* io, InfCommunicationManager* manager, InfSessionStatus status, InfCommunicationJoinedGroup* sync_group, InfXmlConnection* sync_connection, gpointer user_data) { GtkSourceBuffer* textbuffer = gtk_source_buffer_new(NULL); // We never end this non-undoable action since we have our // own (collaborative) Undo implementanion, and we don't want // GtkSourceView to get in our way: gtk_source_buffer_begin_not_undoable_action(textbuffer); InfUserTable* user_table = inf_user_table_new(); InfTextGtkBuffer* buffer = inf_text_gtk_buffer_new(GTK_TEXT_BUFFER(textbuffer), user_table); InfTextSession* session = inf_text_session_new_with_user_table( manager, INF_TEXT_BUFFER(buffer), io, user_table, status, INF_COMMUNICATION_GROUP(sync_group), sync_connection); return INF_SESSION(session); } const InfcNotePlugin TEXT_PLUGIN = { NULL, "InfText", session_new }; } const InfcNotePlugin* Gobby::Plugins::TEXT = &TEXT_PLUGIN; gobby-0.4.94/code/core/iconmanager.cpp0000644000175000017500000000607411531722663014501 00000000000000/* Gobby - GTK-based collaborative text editor * Copyright (C) 2008-2011 Armin Burgmeier * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "core/iconmanager.hpp" #include "util/i18n.hpp" #include #include Gtk::StockID Gobby::IconManager::STOCK_SAVE_ALL("gobby-save-all"); Gtk::StockID Gobby::IconManager::STOCK_USERLIST("gobby-user-list"); Gtk::StockID Gobby::IconManager::STOCK_DOCLIST("gobby-document-list"); Gtk::StockID Gobby::IconManager::STOCK_CHAT("gobby-chat"); Gtk::StockID Gobby::IconManager::STOCK_USER_COLOR_INDICATOR( "gobby-user-color-indicator"); // TODO: The save-all icon does not match the save icon for toolbar // or menu sized items. It is not yet enabled therefore. Gobby::IconManager::IconManager(): m_is_save_all(GtkCompat::create_icon_set()), m_is_userlist(GtkCompat::create_icon_set()), m_is_doclist(GtkCompat::create_icon_set()), m_is_chat(GtkCompat::create_icon_set()), m_is_user_color_indicator(GtkCompat::create_icon_set()), m_icon_factory(Gtk::IconFactory::create()) { Gtk::IconTheme::get_default()->append_search_path(PUBLIC_ICONS_DIR); Gtk::IconTheme::get_default()->append_search_path(PRIVATE_ICONS_DIR); Gtk::StockItem save_all_item(STOCK_SAVE_ALL, _("Save All")); //m_icon_factory->add(STOCK_SAVE_ALL, m_is_save_all); Gtk::IconSource userlist_source; userlist_source.set_icon_name("user-list"); m_is_userlist->add_source(userlist_source); Gtk::StockItem userlist_item(STOCK_USERLIST, _("User list") ); m_icon_factory->add(STOCK_USERLIST, m_is_userlist); Gtk::IconSource doclist_source; doclist_source.set_icon_name("document-list"); m_is_doclist->add_source(doclist_source); Gtk::StockItem doclist_item(STOCK_DOCLIST, _("Document list") ); m_icon_factory->add(STOCK_DOCLIST, m_is_doclist); Gtk::IconSource chat_source; chat_source.set_icon_name("chat"); m_is_chat->add_source(chat_source); Gtk::StockItem chat_item(STOCK_CHAT, _("Chat") ); m_icon_factory->add(STOCK_CHAT, m_is_chat); Gtk::IconSource user_color_indicator_source; user_color_indicator_source.set_icon_name("user-color-indicator"); m_is_user_color_indicator->add_source(user_color_indicator_source); Gtk::StockItem user_color_indicator_item(STOCK_USER_COLOR_INDICATOR, _("User Color Indicator")); m_icon_factory->add(STOCK_USER_COLOR_INDICATOR, m_is_user_color_indicator); m_icon_factory->add_default(); } gobby-0.4.94/code/core/titlebar.cpp0000644000175000017500000000573211531722663014024 00000000000000/* Gobby - GTK-based collaborative text editor * Copyright (C) 2008-2011 Armin Burgmeier * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "core/titlebar.hpp" Gobby::TitleBar::TitleBar(Gtk::Window& window, Folder& folder): m_window(window), m_folder(folder), m_current_view(NULL) { folder.signal_document_removed().connect( sigc::mem_fun(*this, &TitleBar::on_document_removed)); folder.signal_document_changed().connect( sigc::mem_fun(*this, &TitleBar::on_document_changed)); on_document_changed(folder.get_current_document()); } void Gobby::TitleBar::on_document_removed(SessionView& view) { // TODO: Isn't this called by Folder already? if(m_current_view == &view) on_document_changed(NULL); } void Gobby::TitleBar::on_document_changed(SessionView* view) { if(m_current_view != NULL) { InfSession* session = m_current_view->get_session(); InfBuffer* buffer = inf_session_get_buffer(session); g_signal_handler_disconnect(G_OBJECT(session), m_notify_status_handler); g_signal_handler_disconnect(G_OBJECT(buffer), m_modified_changed_handler); } m_current_view = view; if(view != NULL) { InfSession* session = view->get_session(); InfBuffer* buffer = inf_session_get_buffer(session); m_notify_status_handler = g_signal_connect( G_OBJECT(session), "notify::status", G_CALLBACK(on_notify_status_static), this); m_modified_changed_handler = g_signal_connect( G_OBJECT(buffer), "notify::modified", G_CALLBACK(on_notify_modified_static), this); } update_title(); } void Gobby::TitleBar::on_notify_status() { update_title(); } void Gobby::TitleBar::on_notify_modified() { update_title(); } void Gobby::TitleBar::update_title() { // TODO: Show path, as gedit does. This requires change notification // for document info storage. if(m_current_view != NULL) { InfSession* session = m_current_view->get_session(); InfBuffer* buffer = inf_session_get_buffer(session); InfSessionStatus status = inf_session_get_status(session); if(status == INF_SESSION_SYNCHRONIZING || !inf_buffer_get_modified(buffer)) { m_window.set_title( m_current_view->get_title() + " - Gobby"); } else { m_window.set_title( "*" + m_current_view->get_title() + " - Gobby"); } } else { m_window.set_title("Gobby"); } } gobby-0.4.94/code/core/textundogrouping.cpp0000644000175000017500000000466511531722663015647 00000000000000/* Gobby - GTK-based collaborative text editor * Copyright (C) 2008-2011 Armin Burgmeier * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "core/textundogrouping.hpp" Gobby::TextUndoGrouping::TextUndoGrouping(InfAdoptedAlgorithm* algorithm, InfTextUser* user, GtkTextBuffer* buffer): m_buffer(buffer), m_grouping(inf_text_undo_grouping_new()) { g_object_ref(m_buffer); inf_adopted_undo_grouping_set_algorithm( INF_ADOPTED_UNDO_GROUPING(m_grouping), algorithm, INF_ADOPTED_USER(user)); m_begin_user_action_handle = g_signal_connect( G_OBJECT(m_buffer), "begin-user-action", G_CALLBACK(on_begin_user_action_static), this); m_end_user_action_handle = g_signal_connect( G_OBJECT(m_buffer), "end-user-action", G_CALLBACK(on_end_user_action_static), this); } Gobby::TextUndoGrouping::~TextUndoGrouping() { g_signal_handler_disconnect(m_buffer, m_begin_user_action_handle); g_signal_handler_disconnect(m_buffer, m_end_user_action_handle); g_object_unref(m_grouping); g_object_unref(m_buffer); } guint Gobby::TextUndoGrouping::get_undo_size() const { return inf_adopted_undo_grouping_get_undo_size( INF_ADOPTED_UNDO_GROUPING(m_grouping)); } guint Gobby::TextUndoGrouping::get_redo_size() const { return inf_adopted_undo_grouping_get_redo_size( INF_ADOPTED_UNDO_GROUPING(m_grouping)); } void Gobby::TextUndoGrouping::on_begin_user_action() { // TODO: For paste actions we should not allow merging inf_adopted_undo_grouping_start_group( INF_ADOPTED_UNDO_GROUPING(m_grouping), TRUE); } void Gobby::TextUndoGrouping::on_end_user_action() { // TODO: For paste actions we should not allow merging inf_adopted_undo_grouping_end_group( INF_ADOPTED_UNDO_GROUPING(m_grouping), TRUE); } gobby-0.4.94/code/core/documentinfostorage.hpp0000644000175000017500000000636411531722663016304 00000000000000/* Gobby - GTK-based collaborative text editor * Copyright (C) 2008-2011 Armin Burgmeier * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GOBBY_OPERATIONS_DOCUMENTINFO_STORAGE_HPP_ #define _GOBBY_OPERATIONS_DOCUMENTINFO_STORAGE_HPP_ #include #include #include #include #include namespace Gobby { class DocumentInfoStorage: public sigc::trackable { public: enum EolStyle { EOL_CRLF, EOL_LF, EOL_CR }; struct Info { Glib::ustring uri; EolStyle eol_style; std::string encoding; }; DocumentInfoStorage(InfGtkBrowserModel* model); ~DocumentInfoStorage(); std::string get_key(InfcBrowser* browser, InfcBrowserIter* iter) const; const Info* get_info(InfcBrowser* browser, InfcBrowserIter* iter) const; const Info* get_info(const std::string& key) const; void set_info(InfcBrowser* browser, InfcBrowserIter* iter, const Info& info); void set_info(const std::string& key, const Info& info); protected: static void on_set_browser_static(InfGtkBrowserModel* model, GtkTreePath* path, GtkTreeIter* iter, InfcBrowser* browser, gpointer user_data) { static_cast(user_data)-> on_set_browser(iter, browser); } static void on_begin_explore_static(InfcBrowser* browser, InfcBrowserIter* iter, InfcExploreRequest* request, gpointer user_data) { static_cast(user_data)-> on_begin_explore(browser, iter, request); } static void on_node_removed_static(InfcBrowser* browser, InfcBrowserIter* iter, gpointer user_data) { static_cast(user_data)-> on_node_removed(browser, iter); } void on_set_browser(GtkTreeIter* iter, InfcBrowser* browser); void on_begin_explore(InfcBrowser* browser, InfcBrowserIter* iter, InfcExploreRequest* request); void on_node_removed(InfcBrowser* browser, InfcBrowserIter* iter); typedef std::map InfoMap; InfoMap m_infos; class BrowserConn; typedef std::map BrowserMap; BrowserMap m_browsers; gulong m_set_browser_handler; InfGtkBrowserModel* m_model; private: void init(xmlpp::Element* node); }; } #endif // _GOBBY_OPERATIONS_DOCUMENTINFO_STORAGE_HPP_ gobby-0.4.94/code/core/textsessionview.hpp0000644000175000017500000001075311531722663015505 00000000000000/* Gobby - GTK-based collaborative text editor * Copyright (C) 2008-2011 Armin Burgmeier * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GOBBY_TEXTSESSIONVIEW_HPP_ #define _GOBBY_TEXTSESSIONVIEW_HPP_ #include "core/sessionview.hpp" #include "core/textundogrouping.hpp" #include "core/preferences.hpp" #include #include #include #include #include #include #include #include namespace Gobby { class TextSessionView: public SessionView { public: typedef sigc::signal SignalLanguageChanged; TextSessionView(InfTextSession* session, const Glib::ustring& title, const Glib::ustring& path, const Glib::ustring& hostname, const std::string& info_storage_key, Preferences& preferences, GtkSourceLanguageManager* manager); ~TextSessionView(); InfTextSession* get_session() { return INF_TEXT_SESSION(m_session); } const std::string& get_info_storage_key() const { return m_info_storage_key; } void get_cursor_position(unsigned int& row, unsigned int& col) const; void set_selection(const GtkTextIter* begin, const GtkTextIter* end); Glib::ustring get_selected_text() const; void scroll_to_cursor_position(double within_margin); GtkSourceLanguage* get_language() const; void set_language(GtkSourceLanguage* language); // cannot overwrite with covariant return type InfTextUser because // C++ does not know GObject inheritance: virtual InfUser* get_active_user() const; void set_active_user(InfTextUser* user); // requires active user to be set: TextUndoGrouping& get_undo_grouping() { return *m_undo_grouping; } GtkSourceView* get_text_view() { return m_view; } GtkSourceBuffer* get_text_buffer() { return m_buffer; } SignalLanguageChanged signal_language_changed() const { return m_signal_language_changed; } protected: void on_user_color_changed(); void on_show_remote_cursors_changed(); void on_show_remote_selections_changed(); void on_show_remote_current_lines_changed(); void on_show_remote_cursor_positions_changed(); void on_tab_width_changed(); void on_tab_spaces_changed(); void on_auto_indent_changed(); void on_homeend_smart_changed(); void on_wrap_mode_changed(); void on_linenum_display_changed(); void on_curline_highlight_changed(); void on_margin_display_changed(); void on_margin_pos_changed(); void on_bracket_highlight_changed(); void on_whitespace_display_changed(); void on_font_changed(); void on_scheme_changed(); void on_style_set(); bool on_query_tooltip(int x, int y, bool keyboard_mode, const Glib::RefPtr& tooltip); static gboolean on_query_tooltip_static(GtkWidget* widget, int x, int y, gboolean keyboard_mode, GtkTooltip* tooltip, gpointer user_data) { return static_cast(user_data)-> on_query_tooltip(x, y, keyboard_mode, Glib::wrap(tooltip, true)); } static void on_style_set_static(GtkWidget* view, GtkStyle* previous_style, gpointer user_data) { static_cast(user_data)->on_style_set(); } std::string m_info_storage_key; Preferences& m_preferences; GtkSourceView* m_view; GtkSourceBuffer* m_buffer; std::auto_ptr m_undo_grouping; InfTextGtkView* m_infview; InfTextGtkViewport* m_infviewport; SignalLanguageChanged m_signal_language_changed; }; } #endif // _GOBBY_TEXTSESSIONVIEW_HPP_ gobby-0.4.94/code/core/textsessionuserview.hpp0000644000175000017500000000336011531722663016400 00000000000000/* Gobby - GTK-based collaborative text editor * Copyright (C) 2008-2011 Armin Burgmeier * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GOBBY_TEXTSESSIONUSERVIEW_HPP_ #define _GOBBY_TEXTSESSIENUSERVIEW_HPP_ #include "core/sessionuserview.hpp" #include "core/textsessionview.hpp" #include "core/preferences.hpp" #include "core/userlist.hpp" // Allows a user in the user list to be double-clicked at, scrolling // the text view to that user's cursor. namespace Gobby { class TextSessionUserView: public SessionUserView { public: TextSessionUserView(TextSessionView& view, bool show_disconnected, Preferences::Option& userlist_view, Preferences::Option& w); TextSessionView& get_session_view() { return static_cast( SessionUserView::get_session_view()); } const TextSessionView& get_session_view() const { return static_cast( SessionUserView::get_session_view()); } protected: void on_user_activated(InfUser* user); }; } #endif // _GOBBY_TEXTSESSIONUSERVIEW_HPP_ gobby-0.4.94/code/core/closableframe.hpp0000644000175000017500000000263711531722663015023 00000000000000/* Gobby - GTK-based collaborative text editor * Copyright (C) 2008-2011 Armin Burgmeier * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GOBBY_CLOSABLE_FRAME_HPP_ #define _GOBBY_CLOSABLE_FRAME_HPP_ #include "core/preferences.hpp" #include #include namespace Gobby { class ClosableFrame: public Gtk::Frame { public: ClosableFrame(const Glib::ustring& title, const Gtk::StockID& stock_id, Preferences::Option& option); void set_allow_visible(bool allow_visible); protected: virtual void on_add(Gtk::Widget* widget); void on_clicked(); void on_option(); Preferences::Option& m_option; Gtk::VBox m_box; bool m_allow_visible; }; } #endif // _GOBBY_CLOSABLE_FRAME_HPP_ gobby-0.4.94/code/core/documentinfostorage.cpp0000644000175000017500000002117311531722663016272 00000000000000/* Gobby - GTK-based collaborative text editor * Copyright (C) 2008-2011 Armin Burgmeier * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "core/documentinfostorage.hpp" #include "util/file.hpp" #include "features.hpp" #include #include #include #include namespace { Gobby::DocumentInfoStorage::EolStyle eol_style_from_text(const std::string& text) { if(text == "cr") return Gobby::DocumentInfoStorage::EOL_CR; if(text == "lf") return Gobby::DocumentInfoStorage::EOL_LF; if(text == "crlf") return Gobby::DocumentInfoStorage::EOL_CRLF; // Fallback: return Gobby::DocumentInfoStorage::EOL_LF; } std::string eol_style_to_text(Gobby::DocumentInfoStorage::EolStyle style) { switch(style) { case Gobby::DocumentInfoStorage::EOL_CR: return "cr"; case Gobby::DocumentInfoStorage::EOL_LF: return "lf"; case Gobby::DocumentInfoStorage::EOL_CRLF: return "crlf"; default: return "lf"; } } std::string load_document(xmlpp::Element* node, Gobby::DocumentInfoStorage::Info& info) { std::string root; xmlpp::Node::NodeList list = node->get_children(); for(xmlpp::Node::NodeList::iterator iter = list.begin(); iter != list.end(); ++ iter) { xmlpp::Element* child = dynamic_cast(*iter); if(child == NULL) continue; xmlpp::TextNode* text = child->get_child_text(); if(text == NULL) continue; if(child->get_name() == "root") root = text->get_content(); else if(child->get_name() == "uri") info.uri = text->get_content(); else if(child->get_name() == "eol-style") info.eol_style = eol_style_from_text( text->get_content()); else if(child->get_name() == "encoding") info.encoding = text->get_content(); } return root; } // Location to store the documents file: std::string filename() { return Gobby::config_filename("documents.xml"); } } class Gobby::DocumentInfoStorage::BrowserConn { public: BrowserConn(DocumentInfoStorage& storage, InfcBrowser* browser): m_browser(browser) { m_begin_explore_handler = g_signal_connect(G_OBJECT(browser), "begin-explore", G_CALLBACK(on_begin_explore_static), &storage); m_node_removed_handler = g_signal_connect(G_OBJECT(browser), "node-removed", G_CALLBACK(on_node_removed_static), &storage); } ~BrowserConn() { g_signal_handler_disconnect(m_browser, m_begin_explore_handler); g_signal_handler_disconnect(m_browser, m_node_removed_handler); } private: InfcBrowser* m_browser; gulong m_begin_explore_handler; gulong m_node_removed_handler; }; Gobby::DocumentInfoStorage::DocumentInfoStorage(InfGtkBrowserModel* model): m_model(model) { xmlpp::DomParser parser; try { parser.parse_file(filename()); xmlpp::Document* document = parser.get_document(); if(document) { xmlpp::Element* root = document->get_root_node(); if(root) { init(root); } } } catch(xmlpp::exception& e) { // Could not read file, ignore } g_object_ref(m_model); m_set_browser_handler = g_signal_connect( G_OBJECT(m_model), "set-browser", G_CALLBACK(&on_set_browser_static), this); } Gobby::DocumentInfoStorage::~DocumentInfoStorage() { try { create_directory_with_parents( Glib::path_get_dirname(filename())); xmlpp::Document document; xmlpp::Element* root = document.create_root_node("documents"); for(InfoMap::iterator iter = m_infos.begin(); iter != m_infos.end(); ++ iter) { xmlpp::Element* child = root->add_child("document"); xmlpp::Element* root_child = child->add_child("root"); root_child->set_child_text(iter->first); xmlpp::Element* uri_child = child->add_child("uri"); uri_child->set_child_text(iter->second.uri); xmlpp::Element* eol_style_child = child->add_child("eol-style"); eol_style_child->set_child_text( eol_style_to_text(iter->second.eol_style)); xmlpp::Element* encoding_child = child->add_child("encoding"); encoding_child->set_child_text(iter->second.encoding); } document.write_to_file_formatted(filename()); } catch(Glib::Exception& e) { g_warning("Could not write documents file: %s", e.what().c_str()); } catch(std::exception& e) { g_warning("Could not write documents file: %s", e.what()); } g_signal_handler_disconnect(m_model, m_set_browser_handler); g_object_unref(m_model); for(BrowserMap::iterator iter = m_browsers.begin(); iter != m_browsers.end(); ++ iter) { delete iter->second; } } void Gobby::DocumentInfoStorage::init(xmlpp::Element* node) { xmlpp::Node::NodeList list = node->get_children(); for(xmlpp::Node::NodeList::iterator iter = list.begin(); iter != list.end(); ++ iter) { xmlpp::Element* child = dynamic_cast(*iter); if(child == NULL) continue; if(child->get_name() == "document") { Info info; std::string root = load_document(child, info); m_infos[root] = info; } } } std::string Gobby::DocumentInfoStorage::get_key(InfcBrowser* browser, InfcBrowserIter* iter) const { InfXmlConnection* connection = infc_browser_get_connection(browser); g_assert(connection != NULL); gchar* path = infc_browser_iter_get_path(browser, iter); gchar* remote_id; g_object_get(G_OBJECT(connection), "remote-id", &remote_id, NULL); std::string result = std::string(remote_id) + "?" + path; g_free(path); g_free(remote_id); return result; } const Gobby::DocumentInfoStorage::Info* Gobby::DocumentInfoStorage::get_info(InfcBrowser* browser, InfcBrowserIter* iter) const { return get_info(get_key(browser, iter)); } const Gobby::DocumentInfoStorage::Info* Gobby::DocumentInfoStorage::get_info(const std::string& key) const { InfoMap::const_iterator map_iter = m_infos.find(key); if(map_iter != m_infos.end()) return &map_iter->second; return NULL; } void Gobby::DocumentInfoStorage::set_info(InfcBrowser* browser, InfcBrowserIter* iter, const Info& info) { set_info(get_key(browser, iter), info); } void Gobby::DocumentInfoStorage::set_info(const std::string& key, const Info& info) { m_infos[key] = info; } void Gobby::DocumentInfoStorage::on_set_browser(GtkTreeIter* iter, InfcBrowser* browser) { if(browser != NULL) { g_assert(m_browsers.find(browser) == m_browsers.end()); m_browsers[browser] = new BrowserConn(*this, browser); // TODO: Remove all infos that refer to no longer existing // documents in all explored directories in browser. Also // add all existing explore requests, to check // subdirectories when the explore finishes (see // on_begin_explore). } else { InfcBrowser* old_browser; gtk_tree_model_get(GTK_TREE_MODEL(m_model), iter, INF_GTK_BROWSER_MODEL_COL_BROWSER, &old_browser, -1); if(old_browser) { BrowserMap::iterator iter = m_browsers.find(old_browser); g_assert(iter != m_browsers.end()); delete iter->second; m_browsers.erase(iter); g_object_unref(old_browser); } } } void Gobby::DocumentInfoStorage::on_begin_explore(InfcBrowser* browser, InfcBrowserIter* iter, InfcExploreRequest* request) { // TODO: When request has finished, remove all infos that refer to // no longer existing documents in the explored directory. } void Gobby::DocumentInfoStorage::on_node_removed(InfcBrowser* browser, InfcBrowserIter* iter) { // Remove info when the corresponding document is removed. std::string key = get_key(browser, iter); InfoMap::iterator map_iter = m_infos.find(key); if(map_iter != m_infos.end()) m_infos.erase(map_iter); } gobby-0.4.94/code/core/nodewatch.cpp0000644000175000017500000000774111531722663014174 00000000000000/* Gobby - GTK-based collaborative text editor * Copyright (C) 2008-2011 Armin Burgmeier * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "core/nodewatch.hpp" Gobby::NodeWatch::NodeWatch(InfcBrowser* browser, const InfcBrowserIter* iter): m_browser(browser), m_iter(*iter) { // Need to have a connection for the browser, otherwise we can't // reach that node anyway. // TODO: (weak-)ref connection and browser? m_connection = infc_browser_get_connection(browser); g_assert(m_connection); InfXmlConnectionStatus status; g_object_get(G_OBJECT(m_connection), "status", &status, NULL); g_assert(status == INF_XML_CONNECTION_OPEN); m_browser_notify_connection_handler = g_signal_connect( browser, "notify::connection", G_CALLBACK(on_browser_notify_connection_static), this); m_node_removed_handler = g_signal_connect(m_browser, "node-removed", G_CALLBACK(on_node_removed_static), this); m_connection_notify_status_handler = g_signal_connect( m_connection, "notify::status", G_CALLBACK(on_connection_notify_status_static), this); } Gobby::NodeWatch::~NodeWatch() { if(m_browser != NULL) reset(); } void Gobby::NodeWatch::on_browser_notify_connection() { InfXmlConnection* connection = infc_browser_get_connection(m_browser); if(connection) { // Connection changed on-the-fly. This isn't a problem for // us if the watched node is still available (though I don't // think this can happen currently). InfXmlConnectionStatus status; g_object_get(G_OBJECT(connection), "status", &status, NULL); if(status == INF_XML_CONNECTION_OPEN) set_connection(connection); else connection = NULL; } if(!connection) { reset(); m_signal_node_removed.emit(); } } void Gobby::NodeWatch::on_connection_notify_status() { InfXmlConnectionStatus status; g_object_get(G_OBJECT(m_connection), "status", &status, NULL); // Connection was closed: Node is no longer reachable if(status != INF_XML_CONNECTION_OPEN) { reset(); m_signal_node_removed.emit(); } } void Gobby::NodeWatch::on_node_removed(InfcBrowser* browser, InfcBrowserIter* iter) { g_assert(browser == m_browser); InfcBrowserIter test_iter = m_iter; do { if(test_iter.node == iter->node && test_iter.node_id == iter->node_id) { reset(); // Note that we want to allow signal handlers to // delete the watch, so make sure we don't access // member variables anymore after having emitted this. m_signal_node_removed.emit(); break; } } while(infc_browser_iter_get_parent(browser, &test_iter)); } void Gobby::NodeWatch::reset() { g_assert(m_browser != NULL); set_connection(NULL); g_signal_handler_disconnect( m_browser, m_browser_notify_connection_handler); g_signal_handler_disconnect( m_browser, m_node_removed_handler); m_browser = NULL; } void Gobby::NodeWatch::set_connection(InfXmlConnection* connection) { if(m_connection != NULL) { g_signal_handler_disconnect( m_connection, m_connection_notify_status_handler); } m_connection = connection; if(connection != NULL) { m_connection_notify_status_handler = g_signal_connect( m_connection, "notify::status", G_CALLBACK(on_connection_notify_status_static), this); } } gobby-0.4.94/code/core/preferences.cpp0000644000175000017500000001706511531722663014521 00000000000000/* Gobby - GTK-based collaborative text editor * Copyright (C) 2008-2011 Armin Burgmeier * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "features.hpp" #include "core/preferences.hpp" // TODO: Support direct enum config storage via context specialization for // enums. Gobby::Preferences::User::User(Config::ParentEntry& entry): name(entry.get_value("name", Glib::get_user_name())), hue(entry.get_value("hue", Glib::Rand().get_double())), host_directory(entry.get_value("host-directory", Glib::build_filename(Glib::get_home_dir(), ".infinote"))), show_remote_cursors(entry.get_value( "show-remote-users", true)), show_remote_selections(entry.get_value( "show-remote-selections", true)), show_remote_current_lines(entry.get_value( "show-remote-current-lines", true)), show_remote_cursor_positions(entry.get_value( "show-remote-cursor-positions", true)) { } void Gobby::Preferences::User::serialize(Config::ParentEntry& entry) const { entry.set_value("name", name); entry.set_value("hue", hue); entry.set_value("host-directory", host_directory); entry.set_value("show-remote-cursors", show_remote_cursors); entry.set_value("show-remote-selections", show_remote_selections); entry.set_value("show-remote-current-lines", show_remote_current_lines); entry.set_value("show-remote-cursor-positions", show_remote_cursor_positions); } Gobby::Preferences::Editor::Editor(Config::ParentEntry& entry): tab_width(entry.get_value("tab-width", 8)), tab_spaces(entry.get_value("tab-insert-spaces", false)), indentation_auto(entry.get_value("auto-indentation", true)), homeend_smart(entry.get_value("smart-homeend", false) ), autosave_enabled(entry.get_value("autosave-enabled", false) ), autosave_interval( entry.get_value("autosave-interval", 10)) { } void Gobby::Preferences::Editor::serialize(Config::ParentEntry& entry) const { entry.set_value("tab-width", tab_width); entry.set_value("tab-insert-spaces", tab_spaces); entry.set_value("auto-indentation", indentation_auto); entry.set_value("smart-homeend", homeend_smart); entry.set_value("autosave-enabled", autosave_enabled); entry.set_value("autosave-interval", autosave_interval); } Gobby::Preferences::View::View(Config::ParentEntry& entry): wrap_mode(static_cast(entry.get_value( "wrap-mode", static_cast(Gtk::WRAP_WORD_CHAR)))), linenum_display(entry.get_value("display-line-numbers", true)), curline_highlight(entry.get_value( "highlight-current-line", true)), margin_display(entry.get_value("margin-display", true) ), margin_pos(entry.get_value("margin-position", 80) ), bracket_highlight(entry.get_value( "highlight-matching-brackets", true)), whitespace_display(static_cast( entry.get_value("display-whitespace", 0))) { } void Gobby::Preferences::View::serialize(Config::ParentEntry& entry) const { entry.set_value("wrap-mode", static_cast(wrap_mode)); entry.set_value("display-line-numbers", linenum_display); entry.set_value("highlight-current-line", curline_highlight); entry.set_value("margin-display", margin_display); entry.set_value("margin-position", margin_pos); entry.set_value("highlight-matching-brackets", bracket_highlight); entry.set_value("display-whitespace", static_cast(whitespace_display)); } Gobby::Preferences::Appearance::Appearance(Config::ParentEntry& entry): toolbar_style(static_cast(entry.get_value( "toolbar-style", static_cast(Gtk::TOOLBAR_BOTH)))), font(Pango::FontDescription(entry.get_value( "font", "Monospace 10"))), scheme_id(entry.get_value("scheme-id", "classic")), document_userlist_width(entry.get_value( "document-userlist-width", 150)), chat_userlist_width(entry.get_value( "chat-userlist-width", 150)), show_toolbar(entry.get_value("show-toolbar", true)), show_statusbar(entry.get_value("show-statusbar", true)), show_browser(entry.get_value("show-browser", true)), show_chat(entry.get_value("show-chat", true)), show_document_userlist(entry.get_value( "show-document-userlist", true)), show_chat_userlist(entry.get_value( "show-chat-userlist", true)) { } void Gobby::Preferences::Appearance:: serialize(Config::ParentEntry& entry) const { entry.set_value("toolbar-style", static_cast(toolbar_style) ); entry.set_value( "font", static_cast(font).to_string()); entry.set_value("scheme-id", scheme_id); entry.set_value("document-userlist-width", document_userlist_width); entry.set_value("chat-userlist-width", chat_userlist_width); entry.set_value("show-toolbar", show_toolbar); entry.set_value("show-statusbar", show_statusbar); entry.set_value("show-browser", show_browser); entry.set_value("show-chat", show_chat); entry.set_value("show-document-userlist", show_document_userlist); entry.set_value("show-chat-userlist", show_chat_userlist); } Gobby::Preferences::Security::Security(Config::ParentEntry& entry): trust_file(entry.get_value("trust-file")), policy(static_cast( entry.get_value("policy", static_cast( INF_XMPP_CONNECTION_SECURITY_BOTH_PREFER_TLS)))) { // Load default trust-file. As this accesses the filesystem, only do // it when we really need it, i.e. when starting Gobby the first time. if(!entry.has_value("trust-file")) { #ifdef G_OS_WIN32 gchar* package_directory = g_win32_get_package_installation_directory_of_module( NULL); trust_file = Glib::build_filename( Glib::build_filename(package_directory, "certs"), "ca-certificates.crt"); g_free(package_directory); #else // This seems to be the default location for both // Debian and Gentoo. I don't know about other distributions. // Maybe they need a distro-patch for this. const std::string DEFAULT_TRUST_FILE = "/etc/ssl/certs/ca-certificates.crt"; if(Glib::file_test(DEFAULT_TRUST_FILE, Glib::FILE_TEST_IS_REGULAR)) { trust_file = DEFAULT_TRUST_FILE; } #endif } } void Gobby::Preferences::Security::serialize(Config::ParentEntry& entry) const { entry.set_value("trust-file", trust_file); entry.set_value("policy", static_cast(policy)); } Gobby::Preferences::Preferences(Config& config): user(config.get_root()["user"]), editor(config.get_root()["editor"]), view(config.get_root()["view"]), appearance(config.get_root()["appearance"]), security(config.get_root()["security"]) { } void Gobby::Preferences::serialize(Config& config) const { // Serialise into config user.serialize(config.get_root()["user"]); editor.serialize(config.get_root()["editor"]); view.serialize(config.get_root()["view"]); appearance.serialize(config.get_root()["appearance"]); security.serialize(config.get_root()["security"]); } gobby-0.4.94/code/core/Makefile.am0000644000175000017500000000317711531722663013547 00000000000000noinst_LIBRARIES = libgobby-core.a libgobby_core_a_SOURCES = \ browser.cpp \ chatsessionview.cpp \ chattablabel.cpp \ closableframe.cpp \ documentinfostorage.cpp \ filechooser.cpp \ folder.cpp \ header.cpp \ huebutton.cpp \ iconmanager.cpp \ nodewatch.cpp \ noteplugin.cpp \ preferences.cpp \ sessionuserview.cpp \ sessionview.cpp \ statusbar.cpp \ tablabel.cpp \ textsessionuserview.cpp \ textsessionview.cpp \ textundogrouping.cpp \ texttablabel.cpp \ titlebar.cpp \ userlist.cpp noinst_HEADERS = \ browser.hpp \ chatsessionview.hpp \ chattablabel.hpp \ closableframe.hpp \ documentinfostorage.hpp \ filechooser.hpp \ folder.hpp \ header.hpp \ huebutton.hpp \ iconmanager.hpp \ nodewatch.hpp \ noteplugin.hpp \ preferences.hpp \ sessionuserview.hpp \ sessionview.hpp \ statusbar.hpp \ tablabel.hpp \ textsessionuserview.hpp \ textsessionview.hpp \ textundogrouping.hpp \ texttablabel.hpp \ titlebar.hpp \ userlist.hpp appicondir = $(datadir)/pixmaps pixmapdir = $(datadir)/pixmaps/gobby-0.5 # PRIVATE_ICONS_DIR is required by iconmanager.cpp to get access to the # private icons that are installed into prefix/share/gobby-0.5/icons instead # of prefix/share/icons. We also set PUBLIC_ICONS_DIR explicitely so that # we find the application icon if it is installed in a non-standard prefix. AM_CPPFLAGS = $(gobby_CFLAGS) $(unique_CFLAGS) $(infinote_CFLAGS) \ -I$(top_srcdir)/code \ -DPRIVATE_ICONS_DIR=\""$(datadir)/gobby-0.5/icons"\" \ -DPUBLIC_ICONS_DIR=\""$(datadir)/icons"\" gobby-0.4.94/code/core/chatsessionview.cpp0000644000175000017500000000360211531722663015426 00000000000000/* Gobby - GTK-based collaborative text editor * Copyright (C) 2008-2011 Armin Burgmeier * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "core/chatsessionview.hpp" Gobby::ChatSessionView::ChatSessionView(InfChatSession* session, const Glib::ustring& title, const Glib::ustring& path, const Glib::ustring& hostname, Preferences& preferences): SessionView(INF_SESSION(session), title, path, hostname), m_preferences(preferences), m_chat(INF_GTK_CHAT(inf_gtk_chat_new())) { inf_gtk_chat_set_session(m_chat, session); gtk_widget_show(GTK_WIDGET(m_chat)); gtk_box_pack_start(GTK_BOX(gobj()), GTK_WIDGET(m_chat), TRUE, TRUE, 0); } InfUser* Gobby::ChatSessionView::get_active_user() const { return inf_gtk_chat_get_active_user(m_chat); } void Gobby::ChatSessionView::set_active_user(InfUser* user) { g_assert( user == NULL || inf_user_table_lookup_user_by_id( inf_session_get_user_table(INF_SESSION(m_session)), inf_user_get_id(INF_USER(user))) == INF_USER(user)); inf_gtk_chat_set_active_user(m_chat, user); active_user_changed(user); } gobby-0.4.94/code/core/tablabel.cpp0000644000175000017500000001124311531722663013756 00000000000000/* Gobby - GTK-based collaborative text editor * Copyright (C) 2008-2011 Armin Burgmeier * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "core/tablabel.hpp" #include "core/folder.hpp" #include "util/gtk-compat.hpp" #include Gobby::TabLabel::TabLabel(Folder& folder, SessionView& view, Gtk::StockID active_icon): Gtk::HBox(false, 6), m_folder(folder), m_view(view), m_title(view.get_title()), m_changed(false), m_active_icon(active_icon) { m_title.set_alignment(GtkCompat::ALIGN_LEFT); update_icon(); update_color(); m_icon.show(); m_title.show(); m_extra.show(); m_button.show(); view.signal_active_user_changed().connect( sigc::mem_fun(*this, &TabLabel::on_active_user_changed)); m_notify_status_handle = g_signal_connect( G_OBJECT(view.get_session()), "notify::status", G_CALLBACK(on_notify_status_static), this); m_notify_subscription_group_handle = g_signal_connect( G_OBJECT(view.get_session()), "notify::subscription-group", G_CALLBACK(on_notify_subscription_group_static), this); m_folder.signal_document_changed().connect( sigc::mem_fun(*this, &TabLabel::on_folder_document_changed)); pack_start(m_icon, Gtk::PACK_SHRINK); pack_start(m_title, Gtk::PACK_SHRINK); pack_start(m_extra, Gtk::PACK_EXPAND_WIDGET); pack_end(m_button, Gtk::PACK_SHRINK); } Gobby::TabLabel::~TabLabel() { g_signal_handler_disconnect(m_view.get_session(), m_notify_status_handle); g_signal_handler_disconnect(m_view.get_session(), m_notify_subscription_group_handle); } void Gobby::TabLabel::on_folder_document_changed(SessionView* view) { if(view == &m_view) on_activate(); } void Gobby::TabLabel::on_active_user_changed(InfUser* user) { update_icon(); } void Gobby::TabLabel::on_notify_status() { update_icon(); update_color(); } void Gobby::TabLabel::on_notify_subscription_group() { update_icon(); update_color(); } void Gobby::TabLabel::on_activate() { m_changed = false; update_color(); } void Gobby::TabLabel::set_changed() { if(m_folder.get_current_document() != &m_view) { m_changed = true; update_color(); } } void Gobby::TabLabel::update_icon() { InfSession* session = INF_SESSION(m_view.get_session()); if(inf_session_get_subscription_group(session) == NULL) { m_icon.set(Gtk::Stock::DISCONNECT, Gtk::ICON_SIZE_MENU); } else { switch(inf_session_get_status(session)) { case INF_SESSION_PRESYNC: case INF_SESSION_SYNCHRONIZING: m_icon.set(Gtk::Stock::EXECUTE, Gtk::ICON_SIZE_MENU); break; case INF_SESSION_RUNNING: if(m_view.get_active_user() != NULL) { m_icon.set(m_active_icon, Gtk::ICON_SIZE_MENU); } else { m_icon.set(Gtk::Stock::FILE, Gtk::ICON_SIZE_MENU); } break; case INF_SESSION_CLOSED: m_icon.set(Gtk::Stock::STOP, Gtk::ICON_SIZE_MENU); break; } } } void Gobby::TabLabel::update_color() { InfSession* session = INF_SESSION(m_view.get_session()); if(m_changed) { // Document has changed: awareness -> red #ifdef USE_GTKMM3 m_title.override_color(Gdk::RGBA("#c00000")); #else m_title.modify_fg(Gtk::STATE_NORMAL, Gdk::Color("#c00000")); m_title.modify_fg(Gtk::STATE_ACTIVE, Gdk::Color("#c00000")); #endif } else if(inf_session_get_subscription_group(session) == NULL || inf_session_get_status(session) != INF_SESSION_RUNNING) { // Document disconnected or not yet running // (most probably synchronizing): not (yet) available -> grey #ifdef USE_GTKMM3 m_title.override_color(Gdk::RGBA("#606060")); #else m_title.modify_fg(Gtk::STATE_NORMAL, Gdk::Color("#606060")); m_title.modify_fg(Gtk::STATE_ACTIVE, Gdk::Color("#606060")); #endif } else { // Otherwise default #ifdef USE_GTKMM3 m_title.unset_color(); #else Glib::RefPtr default_style = Gtk::Widget::get_default_style(); m_title.modify_fg( Gtk::STATE_ACTIVE, default_style->get_fg(Gtk::STATE_ACTIVE)); m_title.modify_fg( Gtk::STATE_NORMAL, default_style->get_fg(Gtk::STATE_NORMAL)); #endif } } gobby-0.4.94/code/core/header.cpp0000644000175000017500000004473211531722663013451 00000000000000/* Gobby - GTK-based collaborative text editor * Copyright (C) 2008 Armin Burgmeier * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "core/header.hpp" #include "core/iconmanager.hpp" #include "util/i18n.hpp" #include "features.hpp" // For PLATFORM_OSX_NATIVE #include #ifdef PLATFORM_OSX_NATIVE #include #endif namespace { Glib::ustring ui_desc = "" " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " // " " " " " " " " " " " " " " " " " " " " " " " " ""; void show_widget(Gtk::Widget& widget, bool show) { if(show) widget.show(); else widget.hide(); } bool language_sort_func(Glib::RefPtr act1, Glib::RefPtr act2) { // TODO: Speedup by using collation keys? // We should profile first. gchar* casefold1 = g_utf8_casefold( gtk_source_language_get_name( act1->get_language()), -1); gchar* casefold2 = g_utf8_casefold( gtk_source_language_get_name( act2->get_language()), -1); int ret = g_utf8_collate(casefold1, casefold2); g_free(casefold1); g_free(casefold2); return ret < 0; } Gobby::Header::LanguageMap load_highlight_languages(GtkSourceLanguageManager* manager, Gtk::RadioAction::Group& group) { typedef std::map TempLanguageMap; TempLanguageMap map; const gchar* const* language_ids = gtk_source_language_manager_get_language_ids(manager); if(language_ids == NULL) return Gobby::Header::LanguageMap(); for(const gchar* const* id = language_ids; *id != NULL; ++ id) { GtkSourceLanguage* language = gtk_source_language_manager_get_language( manager, *id); if(gtk_source_language_get_hidden(language)) continue; const Glib::ustring name( gtk_source_language_get_name(language)); const Glib::ustring section( gtk_source_language_get_section(language)); map[section].push_back( Gobby::Header::LanguageAction::create( language, group)); } // Copy to map of const lists Gobby::Header::LanguageMap result; for(TempLanguageMap::iterator iter = map.begin(); iter != map.end(); ++ iter) { iter->second.sort(language_sort_func); result.insert(std::make_pair(iter->first, iter->second)); } return result; } } Gobby::Header::Error::Error(Code error_code, const Glib::ustring& error_message) : Glib::Error(g_quark_from_static_string("GOBBY_HEADER_ERROR"), static_cast(error_code), error_message) { } Gobby::Header::Error::Code Gobby::Header::Error::code() const { return static_cast(gobject_->code); } Gobby::Header::LanguageAction::LanguageAction(GtkSourceLanguage* language, Gtk::RadioAction::Group& group): Gtk::RadioAction( group, "ViewHighlightModeLanguage_" + Glib::ustring(language ? gtk_source_language_get_id(language) : "None"), Gtk::StockID(), language ? gtk_source_language_get_name(language) : _("_None")), m_language(language) { } Glib::RefPtr Gobby::Header::LanguageAction::create(GtkSourceLanguage* language, Gtk::RadioAction::Group& group) { return Glib::RefPtr( new LanguageAction(language, group)); } Gobby::Header::Header(Preferences& preferences, GtkSourceLanguageManager* lang_mgr): m_preferences(preferences), m_ui_manager(Gtk::UIManager::create()), group_file(Gtk::ActionGroup::create("MenuFile") ), group_edit(Gtk::ActionGroup::create("MenuEdit") ), group_view(Gtk::ActionGroup::create("MenuView") ), group_help(Gtk::ActionGroup::create("MenuHelp") ), action_file(Gtk::Action::create("MenuFile", _("_File"))), action_file_new(Gtk::Action::create("FileNew", Gtk::Stock::NEW)), action_file_open(Gtk::Action::create("FileOpen", Gtk::Stock::OPEN, _("_Open..."))), action_file_open_location( Gtk::Action::create("FileOpenLocation", _("Open _Location..."))), action_file_save(Gtk::Action::create("FileSave", Gtk::Stock::SAVE)), action_file_save_as( Gtk::Action::create("FileSaveAs", Gtk::Stock::SAVE_AS, _("Save _As..."))), action_file_save_all( Gtk::Action::create( "FileSaveAll", Gobby::IconManager::STOCK_SAVE_ALL, _("Save All"), _("Save all open files locally"))), action_file_export_html( Gtk::Action::create("FileExportHtml", _("Export As _HTML..."))), action_file_connect( Gtk::Action::create("FileConnect", Gtk::Stock::CONNECT, _("Connect _to Server..."))), action_file_close( Gtk::Action::create("FileClose", Gtk::Stock::CLOSE)), action_file_quit(Gtk::Action::create("FileQuit", Gtk::Stock::QUIT)), action_edit(Gtk::Action::create("MenuEdit", _("_Edit"))), action_edit_undo(Gtk::Action::create("EditUndo", Gtk::Stock::UNDO)), action_edit_redo(Gtk::Action::create("EditRedo", Gtk::Stock::REDO)), action_edit_cut(Gtk::Action::create("EditCut", Gtk::Stock::CUT)), action_edit_copy(Gtk::Action::create("EditCopy", Gtk::Stock::COPY)), action_edit_paste( Gtk::Action::create("EditPaste", Gtk::Stock::PASTE)), action_edit_find(Gtk::Action::create("EditFind", Gtk::Stock::FIND, _("_Find..."))), action_edit_find_next( Gtk::Action::create("EditFindNext", _("Find Ne_xt"), _("Find next match of phrase " "searched for"))), action_edit_find_prev( Gtk::Action::create("EditFindPrev", _("Find Pre_vious"), _("Find previous match of phrase " "searched for"))), action_edit_find_replace( Gtk::Action::create("EditFindReplace", Gtk::Stock::FIND_AND_REPLACE, _("Find and Rep_lace..."))), action_edit_goto_line( Gtk::Action::create("EditGotoLine", Gtk::Stock::JUMP_TO, _("Go to _Line..."))), action_edit_preferences( Gtk::Action::create("EditPreferences", Gtk::Stock::PREFERENCES, _("Pr_eferences..."))), action_view(Gtk::Action::create("MenuView", _("_View"))), action_view_hide_user_colors( Gtk::Action::create( "ViewHideUserColors", _("Reset User Colors"), _("Hide user colors in current document"))), action_view_toolbar( Gtk::ToggleAction::create( "ViewToolbar", _("View Toolbar"), _("Whether to show the toolbar"), preferences.appearance.show_toolbar)), action_view_statusbar( Gtk::ToggleAction::create( "ViewStatusbar", _("View Statusbar"), _("Whether to show the statusbar"), preferences.appearance.show_statusbar)), action_view_browser( Gtk::ToggleAction::create( "ViewBrowser", _("View Document Browser"), _("Whether to show the document browser"), preferences.appearance.show_browser)), action_view_chat( Gtk::ToggleAction::create( "ViewChat", _("View Chat"), _("Whether to show the chat pane"), preferences.appearance.show_chat)), action_view_document_userlist( Gtk::ToggleAction::create( "ViewDocumentUserList", _("View Document User List"), _("Whether to show the user list for documents"), preferences.appearance.show_document_userlist)), action_view_chat_userlist( Gtk::ToggleAction::create( "ViewChatUserList", _("View Chat User List"), _("Whether to show the user list for the chat"), preferences.appearance.show_chat_userlist)), action_view_highlight_mode( Gtk::Action::create("ViewHighlightMode", _("_Highlight Mode"))), action_view_highlight_none( LanguageAction::create(NULL, m_highlight_group)), action_view_highlight_languages( load_highlight_languages(lang_mgr, m_highlight_group)), action_help(Gtk::Action::create("MenuHelp", _("_Help")) ), action_help_contents( Gtk::Action::create( "HelpContents", Gtk::Stock::HELP, _("_Contents"), _("Opens the Gobby manual"))), action_help_about( Gtk::Action::create( "HelpAbout", Gtk::Stock::ABOUT, _("_About..."), _("Shows Gobby's copyright and credits"))) { // Add basic menu m_ui_manager->add_ui_from_string(ui_desc); group_file->add(action_file); group_file->add(action_file_new); group_file->add(action_file_open); group_file->add(action_file_open_location, Gtk::AccelKey("L", "/MenuFile/FileOpenLocation")); group_file->add(action_file_save); group_file->add(action_file_save_as, Gtk::AccelKey("S", "/MenuFile/FileSaveAs")); group_file->add(action_file_save_all, Gtk::AccelKey("L", "/MenuFile/FileSaveAll")); group_file->add(action_file_export_html, Gtk::AccelKey("H", "/MenuFile/FileExportHtml")); group_file->add(action_file_connect, Gtk::AccelKey("T", "/MenuFile/FileConnect")); group_file->add(action_file_close); group_file->add(action_file_quit); group_edit->add(action_edit); group_edit->add(action_edit_undo, Gtk::AccelKey("Z", "/MenuEdit/EditUndo")); group_edit->add(action_edit_redo, Gtk::AccelKey("Z", "/MenuEdit/EditRedo")); group_edit->add(action_edit_cut); group_edit->add(action_edit_copy); group_edit->add(action_edit_paste); group_edit->add(action_edit_find); group_edit->add(action_edit_find_next, Gtk::AccelKey("G", "/MenuEdit/EditFindNext")); group_edit->add(action_edit_find_prev, Gtk::AccelKey("G", "/MenuEdit/EditFindPrev")); group_edit->add(action_edit_find_replace, Gtk::AccelKey("H", "/MenuEdit/EditFindReplace")); group_edit->add(action_edit_goto_line, Gtk::AccelKey("I", "/MenuEdit/EditGotoLine")); group_edit->add(action_edit_preferences); group_view->add(action_view); group_view->add( action_view_hide_user_colors, Gtk::AccelKey("C", "/MenuView/ViewHideUserColors")); group_view->add(action_view_toolbar); group_view->add(action_view_statusbar); group_view->add(action_view_browser, Gtk::AccelKey( "F9", "/MenuView/ViewBrowser")); group_view->add(action_view_chat, Gtk::AccelKey( "F9", "/MenuView/ViewChat")); group_view->add(action_view_document_userlist, Gtk::AccelKey( "F9", "/MenuView/ViewDocumentUserList")); group_view->add(action_view_chat_userlist, Gtk::AccelKey( "F9", "/MenuView/ViewChatUserList")); group_view->add(action_view_highlight_mode); group_view->add(action_view_highlight_none); unsigned int language_menu_counter = 0; for(LanguageMap::const_iterator iter = action_view_highlight_languages.begin(); iter != action_view_highlight_languages.end(); ++ iter) { // We cannot use iter->first for the action name, since this // is a localized string. Glib::ustring section_action_name = Glib::ustring::compose("ViewHighlightModeSection_%1", language_menu_counter); ++language_menu_counter; Glib::ustring section_action_xml = Glib::Markup::escape_text(section_action_name); Glib::RefPtr section_action( Gtk::Action::create(section_action_name, iter->first)); group_view->add(section_action); for(LanguageList::const_iterator iter2 = iter->second.begin(); iter2 != iter->second.end(); ++ iter2) { Glib::ustring language_action_xml = Glib::Markup::escape_text( (*iter2)->get_name()); Glib::ustring xml_desc = "" " " " " " " " " " " " " " " " " " " ""; m_ui_manager->add_ui_from_string(xml_desc); group_view->add(*iter2); } } group_help->add(action_help); group_help->add(action_help_contents, Gtk::AccelKey("F1", "/MenuHelp/HelpContents")); group_help->add(action_help_about); m_ui_manager->insert_action_group(group_file); m_ui_manager->insert_action_group(group_edit); m_ui_manager->insert_action_group(group_view); m_ui_manager->insert_action_group(group_help); m_menubar = static_cast( m_ui_manager->get_widget("/MenuMainBar") ); m_toolbar = static_cast( m_ui_manager->get_widget("/ToolMainBar") ); if(m_menubar == NULL) { throw Error( Error::MENUBAR_MISSING, "XML UI definition lacks menubar" ); } if(m_toolbar == NULL) { throw Error( Error::TOOLBAR_MISSING, "XML UI definition lacks toolbar" ); } #ifdef PLATFORM_OSX_NATIVE ige_mac_menu_set_menu_bar(GTK_MENU_SHELL(m_menubar->gobj())); ige_mac_menu_set_quit_menu_item(GTK_MENU_ITEM( m_ui_manager->get_widget( "/MenuMainBar/MenuFile/FileQuit")->gobj())); ige_mac_menu_add_app_menu_item( ige_mac_menu_add_app_menu_group(), GTK_MENU_ITEM( m_ui_manager->get_widget( "/MenuMainBar/MenuHelp/HelpAbout")->gobj()), NULL); ige_mac_menu_add_app_menu_item( ige_mac_menu_add_app_menu_group(), GTK_MENU_ITEM( m_ui_manager->get_widget( "/MenuMainBar/MenuEdit/EditPreferences") ->gobj()), NULL); #else pack_start(*m_menubar, Gtk::PACK_SHRINK); #endif pack_start(*m_toolbar, Gtk::PACK_SHRINK); m_toolbar->set_toolbar_style(preferences.appearance.toolbar_style); m_menubar->show(); if(preferences.appearance.show_toolbar) m_toolbar->show(); else m_toolbar->hide(); preferences.appearance.toolbar_style.signal_changed().connect( sigc::compose( sigc::mem_fun( *m_toolbar, &Gtk::Toolbar::set_toolbar_style), sigc::mem_fun( preferences.appearance.toolbar_style, &Preferences::Option:: operator const Gtk::ToolbarStyle&))); preferences.appearance.show_toolbar.signal_changed().connect( sigc::compose( sigc::bind<0>( sigc::ptr_fun(show_widget), sigc::ref(*m_toolbar)), sigc::mem_fun( preferences.appearance.show_toolbar, &Preferences::Option:: operator const bool&))); } Glib::RefPtr Gobby::Header::get_accel_group() { return m_ui_manager->get_accel_group(); } Glib::RefPtr Gobby::Header::get_accel_group() const { return m_ui_manager->get_accel_group(); } Gtk::MenuBar& Gobby::Header::get_menubar() { return *m_menubar; } Gtk::Toolbar& Gobby::Header::get_toolbar() { return *m_toolbar; } Glib::RefPtr Gobby::Header::lookup_language_action(GtkSourceLanguage* language) { const Glib::ustring section( gtk_source_language_get_section(language)); LanguageMap::const_iterator iter = action_view_highlight_languages.find(section); g_assert(iter != action_view_highlight_languages.end()); const LanguageList& list = iter->second; for(LanguageList::const_iterator iter = list.begin(); iter != list.end(); ++ iter) { const Glib::RefPtr action = *iter; if(action->get_language() == language) return action; } g_assert_not_reached(); return Glib::RefPtr(); } gobby-0.4.94/code/core/noteplugin.hpp0000644000175000017500000000202211531722663014374 00000000000000/* Gobby - GTK-based collaborative text editor * Copyright (C) 2008-2011 Armin Burgmeier * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GOBBY_NOTEPLUGIN_HPP_ #define _GOBBY_NOTEPLUGIN_HPP_ #include namespace Gobby { namespace Plugins { extern const InfcNotePlugin* TEXT; } } #endif // _GOBBY_NOTEPLUGIN_HPP_ gobby-0.4.94/code/core/chatsessionview.hpp0000644000175000017500000000316711531722663015441 00000000000000/* Gobby - GTK-based collaborative text editor * Copyright (C) 2008-2011 Armin Burgmeier * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GOBBY_CHATSESSIONVIEW_HPP_ #define _GOBBY_CHATSESSIONVIEW_HPP_ #include "core/sessionview.hpp" #include "core/preferences.hpp" #include #include namespace Gobby { class ChatSessionView: public SessionView { public: ChatSessionView(InfChatSession* session, const Glib::ustring& title, const Glib::ustring& path, const Glib::ustring& hostname, Preferences& preferences); // Override base class covariantly InfChatSession* get_session() { return INF_CHAT_SESSION(m_session); } InfGtkChat* get_chat() { return m_chat; } virtual InfUser* get_active_user() const; void set_active_user(InfUser* user); protected: Preferences& m_preferences; InfGtkChat* m_chat; }; } #endif // _GOBBY_CHATSESSIONVIEW_HPP_ gobby-0.4.94/code/core/texttablabel.cpp0000644000175000017500000001355411531722663014672 00000000000000/* Gobby - GTK-based collaborative text editor * Copyright (C) 2008-2011 Armin Burgmeier * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "core/texttablabel.hpp" #include "core/folder.hpp" #include Gobby::TextTabLabel::UserWatcher::UserWatcher(TextTabLabel* label, InfTextUser* user): m_label(label), m_user(user) { connect(); } Gobby::TextTabLabel::UserWatcher::UserWatcher(const UserWatcher& other): m_label(other.m_label), m_user(other.m_user) { connect(); } Gobby::TextTabLabel::UserWatcher::~UserWatcher() { g_signal_handler_disconnect(m_user, m_handle); } InfTextUser* Gobby::TextTabLabel::UserWatcher::get_user() const { return m_user; } bool Gobby::TextTabLabel::UserWatcher::operator==(InfTextUser* other_user) const { return m_user == other_user; } void Gobby::TextTabLabel::UserWatcher::connect() { m_handle = g_signal_connect( G_OBJECT(m_user), "notify::hue", G_CALLBACK(&UserWatcher::on_notify_hue), m_label); } void Gobby::TextTabLabel::UserWatcher::on_notify_hue(GObject* user_object, GParamSpec* spec, gpointer user_data) { static_cast(user_data)->update_dots(); } Gobby::TextTabLabel::TextTabLabel(Folder& folder, TextSessionView& view): TabLabel(folder, view, Gtk::Stock::EDIT), m_dot_char(0) { update_modified(); update_dots(); m_modified_changed_handle = g_signal_connect_after( G_OBJECT(view.get_text_buffer()), "modified-changed", G_CALLBACK(on_modified_changed_static), this); InfTextBuffer* buffer = INF_TEXT_BUFFER( inf_session_get_buffer( INF_SESSION(view.get_session()))); m_insert_text_handle = g_signal_connect_after( G_OBJECT(buffer), "text-inserted", G_CALLBACK(on_text_inserted_static), this); m_erase_text_handle = g_signal_connect_after( G_OBJECT(buffer), "text-erased", G_CALLBACK(on_text_erased_static), this); m_extra.pack_start(m_dots, Gtk::PACK_SHRINK); } Gobby::TextTabLabel::~TextTabLabel() { TextSessionView& text_view = dynamic_cast(m_view); g_signal_handler_disconnect(text_view.get_text_buffer(), m_modified_changed_handle); InfTextBuffer* buffer = INF_TEXT_BUFFER( inf_session_get_buffer( INF_SESSION(m_view.get_session()))); g_signal_handler_disconnect(buffer, m_erase_text_handle); g_signal_handler_disconnect(buffer, m_insert_text_handle); } #ifdef USE_GTKMM3 void Gobby::TextTabLabel::on_style_updated() #else void Gobby::TextTabLabel::on_style_changed(const Glib::RefPtr& prev) #endif { #ifdef USE_GTKMM3 TabLabel::on_style_updated(); #else TabLabel::on_style_changed(prev); #endif static const gunichar dot_chars[] = { 0x270E, /* pencil */ 0x26AB, /* medium black circle */ 0x25CF, /* black circle */ 0x002A, /* asterisk */ 0x0000 }; // Find a glyph for the user dots const gunichar* c; for(c = dot_chars; *c; ++c) { m_dots.set_text(Glib::ustring(1, *c)); if(m_dots.get_layout()->get_unknown_glyphs_count() == 0) break; } m_dot_char = *c; // Update dots using this char update_dots(); } void Gobby::TextTabLabel::on_notify_status() { TabLabel::on_notify_status(); update_modified(); } void Gobby::TextTabLabel::on_activate() { TabLabel::on_activate(); m_changed_by.clear(); update_dots(); } void Gobby::TextTabLabel::on_modified_changed() { update_modified(); } void Gobby::TextTabLabel::on_changed(InfTextUser* author) { if(!m_changed) { InfSession* session = INF_SESSION(m_view.get_session()); if(inf_session_get_status(session) == INF_SESSION_RUNNING) set_changed(); } if(m_folder.get_current_document() != &m_view) { // TODO: remove dot if all the user's // new contributions where undone if(std::find(m_changed_by.begin(), m_changed_by.end(), author) == m_changed_by.end()) { m_changed_by.push_back(UserWatcher(this, author)); update_dots(); } } } void Gobby::TextTabLabel::update_modified() { InfSession* session = INF_SESSION(m_view.get_session()); bool modified = inf_buffer_get_modified(inf_session_get_buffer(session)); InfSessionStatus status = inf_session_get_status(session); if(status == INF_SESSION_SYNCHRONIZING || status == INF_SESSION_PRESYNC) { modified = false; } if(modified) m_title.set_text("*" + m_view.get_title()); else m_title.set_text(m_view.get_title()); } void Gobby::TextTabLabel::update_dots() { if (m_changed_by.empty()) { m_dots.hide(); } else { Glib::ustring markup; for(UserWatcherList::iterator iter = m_changed_by.begin(); iter != m_changed_by.end(); ++iter) { double hue = inf_text_user_get_hue(iter->get_user()); Gdk::Color c; c.set_hsv(360.0 * hue, 0.6, 0.6); // We are using the C API here since // gdk_color_to_string is available since GTK 2.12, // but Gdk::Color::to_string only since gtkmm 2.14, // and we want to require nothing more recent than // 2.12 for now. See also bug #447. gchar* color_str = gdk_color_to_string(c.gobj()); Glib::ustring cpp_color_str(color_str); g_free(color_str); markup += "" + m_dot_char + ""; } m_dots.set_markup(markup); m_dots.show(); } } gobby-0.4.94/code/core/texttablabel.hpp0000644000175000017500000000604611531722663014675 00000000000000/* Gobby - GTK-based collaborative text editor * Copyright (C) 2008-2011 Armin Burgmeier * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GOBBY_TEXTTABLABEL_HPP_ #define _GOBBY_TEXTTABLABEL_HPP_ #include "core/textsessionview.hpp" #include "core/tablabel.hpp" #include "util/gtk-compat.hpp" namespace Gobby { class TextTabLabel: public TabLabel { public: TextTabLabel(Folder& folder, TextSessionView& view); ~TextTabLabel(); protected: static void on_modified_changed_static(GtkTextBuffer* buffer, gpointer user_data) { static_cast(user_data)->on_modified_changed(); } static void on_text_erased_static(InfTextBuffer* buffer, guint position, InfTextChunk* chunk, InfTextUser* author, gpointer user_data) { static_cast(user_data)->on_changed(author); } static void on_text_inserted_static(InfTextBuffer* buffer, guint position, InfTextChunk* text, InfTextUser* author, gpointer user_data) { static_cast(user_data)->on_changed(author); } #ifdef USE_GTKMM3 virtual void on_style_updated(); #else virtual void on_style_changed(const Glib::RefPtr& prev); #endif virtual void on_notify_status(); // override virtual void on_activate(); void on_modified_changed(); void on_changed(InfTextUser* author); Gtk::Label m_dots; private: void update_modified(); void update_dots(); gunichar m_dot_char; gulong m_modified_changed_handle; gulong m_erase_text_handle; gulong m_insert_text_handle; class UserWatcher { public: UserWatcher(TextTabLabel* label, InfTextUser* user); UserWatcher(const UserWatcher& other); ~UserWatcher(); InfTextUser* get_user() const; bool operator==(InfTextUser* other_user) const; private: void connect(); void disconnect(); static void on_notify_hue(GObject* user_object, GParamSpec* spec, gpointer user_data); TabLabel* m_label; InfTextUser* m_user; gulong m_handle; }; typedef std::list UserWatcherList; UserWatcherList m_changed_by; }; } #endif // _GOBBY_TEXTTABLABEL_HPP_ gobby-0.4.94/code/core/sessionuserview.hpp0000644000175000017500000000351311531722663015473 00000000000000/* Gobby - GTK-based collaborative text editor * Copyright (C) 2008-2011 Armin Burgmeier * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GOBBY_SESSIONUSERVIEW_HPP_ #define _GOBBY_SESSIONUSERVIEW_HPP_ #include "core/sessionview.hpp" #include "core/preferences.hpp" #include "core/userlist.hpp" #include // Shows a sessionview with a userlist on the right hand side of it namespace Gobby { class SessionUserView: public Gtk::HPaned { public: SessionUserView(SessionView& view, bool show_disconnected, Preferences::Option& userlist_view, Preferences::Option& userlist_width); SessionView& get_session_view() { return m_view; } const SessionView& get_session_view() const { return m_view; } protected: virtual void on_size_allocate(Gtk::Allocation& allocation); void on_doc_userlist_width_changed(); void on_pref_userlist_width_changed(); SessionView& m_view; Preferences::Option& m_userlist_width; UserList m_userlist; sigc::connection m_doc_userlist_width_changed_connection; sigc::connection m_pref_userlist_width_changed_connection; }; } #endif // _GOBBY_SESSIONUSERVIEW_HPP_ gobby-0.4.94/code/core/statusbar.cpp0000644000175000017500000002440011531722663014217 00000000000000/* Gobby - GTK-based collaborative text editor * Copyright (C) 2008-2011 Armin Burgmeier * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "core/statusbar.hpp" #include "util/gtk-compat.hpp" #include "util/i18n.hpp" #include #include namespace { Gtk::StockID message_type_to_stock_id(Gobby::StatusBar::MessageType type) { switch(type) { case Gobby::StatusBar::INFO: return Gtk::Stock::DIALOG_INFO; case Gobby::StatusBar::ERROR: return Gtk::Stock::DIALOG_ERROR; default: g_assert_not_reached(); } } void dispose_dialog(Gtk::MessageDialog* dialog) { delete dialog; } } class Gobby::StatusBar::Message { public: Message(Gtk::Widget* widget, const Glib::ustring& simple, const Glib::ustring& detail, sigc::connection timeout_conn = sigc::connection()): m_widget(widget), m_timeout_conn(timeout_conn), m_simple_desc(simple), m_detail_desc(detail) { } ~Message() { m_timeout_conn.disconnect(); } void show_dialog() const { Gtk::MessageDialog* dialog = new Gtk::MessageDialog( m_simple_desc, false, Gtk::MESSAGE_ERROR, Gtk::BUTTONS_NONE, false); dialog->add_button(Gtk::Stock::CLOSE, Gtk::RESPONSE_CLOSE); dialog->set_secondary_text(m_detail_desc, true); dialog->signal_response().connect( sigc::hide( sigc::bind( sigc::ptr_fun(dispose_dialog), dialog))); dialog->show(); } bool is_error() { return !m_detail_desc.empty(); } Gtk::Widget* widget() const { return m_widget; } protected: Gtk::Widget* m_widget; sigc::connection m_timeout_conn; Glib::ustring m_simple_desc; Glib::ustring m_detail_desc; }; Gobby::StatusBar::StatusBar(Gtk::Window& window, Folder& folder, const Preferences& preferences): Gtk::HBox(false, 2), m_folder(folder), m_preferences(preferences), m_visible_messages(0), m_current_view(NULL), m_position_context_id(0) { pack_end(m_bar_position, Gtk::PACK_SHRINK); m_bar_position.set_size_request(200, -1); m_bar_position.show(); window.signal_window_state_event().connect( sigc::mem_fun(*this, &StatusBar::on_window_state_event)); m_folder.signal_document_removed().connect( sigc::mem_fun(*this, &StatusBar::on_document_removed)); m_folder.signal_document_changed().connect( sigc::mem_fun(*this, &StatusBar::on_document_changed)); m_preferences.appearance.show_statusbar.signal_changed().connect( sigc::mem_fun(*this, &StatusBar::on_view_changed)); // Initial update on_document_changed(m_folder.get_current_document()); on_view_changed(); } Gobby::StatusBar::~StatusBar() { on_document_changed(NULL); } Gobby::StatusBar::MessageHandle Gobby::StatusBar::add_message(Gobby::StatusBar::MessageType type, const Glib::ustring& message, const Glib::ustring& dialog_message, unsigned int timeout) { if(m_visible_messages >= 12) { for(MessageHandle iter = m_list.begin(); iter != m_list.end(); ++iter) { if(*iter) { if((*iter)->is_error()) remove_message(iter); else // only hide message because whoever // installed it is expecting to be // able to call remove_message on it hide_message(iter); break; } } } Gtk::HBox* bar = Gtk::manage(new Gtk::HBox); Gtk::Image* image = Gtk::manage(new Gtk::Image( message_type_to_stock_id(type), Gtk::ICON_SIZE_MENU)); bar->pack_start(*image, Gtk::PACK_SHRINK); image->show(); Gtk::Label* label = Gtk::manage( new Gtk::Label(message, GtkCompat::ALIGN_LEFT)); label->set_ellipsize(Pango::ELLIPSIZE_END); bar->pack_start(*label, Gtk::PACK_EXPAND_WIDGET); label->show(); GtkShadowType shadow_type; gtk_widget_style_get(GTK_WIDGET(m_bar_position.gobj()), "shadow-type", &shadow_type, NULL); Gtk::Frame* frame = Gtk::manage(new Gtk::Frame); m_list.push_back(0); Gobby::StatusBar::MessageHandle iter(--m_list.end()); sigc::connection timeout_conn; if(timeout) { timeout_conn = Glib::signal_timeout().connect_seconds( sigc::bind( sigc::bind_return( sigc::mem_fun( *this, &StatusBar::remove_message), false), iter), timeout); } *iter = new Message(frame, message, dialog_message, timeout_conn); ++m_visible_messages; if(dialog_message.empty()) { frame->add(*bar); } else { Gtk::EventBox *eventbox = Gtk::manage(new Gtk::EventBox); frame->add(*eventbox); eventbox->add(*bar); eventbox->signal_button_press_event().connect( sigc::bind_return(sigc::bind( sigc::mem_fun( *this, &StatusBar::on_message_clicked), iter), false)); eventbox->show(); } frame->set_shadow_type(static_cast(shadow_type)); bar->show(); pack_start(*frame, Gtk::PACK_EXPAND_WIDGET); reorder_child(*frame, 0); frame->show(); return iter; } Gobby::StatusBar::MessageHandle Gobby::StatusBar::add_info_message(const Glib::ustring& message, unsigned int timeout) { MessageHandle handle = Gobby::StatusBar::add_message(INFO, message, "", timeout); // Caller is not allowed to hold on to handles to messages that we are // going to delete anyway. if(timeout) return invalid_handle(); else return handle; } void Gobby::StatusBar::add_error_message(const Glib::ustring& brief_desc, const Glib::ustring& detailed_desc, unsigned int timeout) { Gobby::StatusBar::add_message(ERROR, brief_desc, detailed_desc, timeout); } void Gobby::StatusBar::remove_message(const MessageHandle& handle) { hide_message(handle); m_list.erase(handle); } void Gobby::StatusBar::hide_message(const MessageHandle& handle) { if(*handle != 0) { g_assert(m_visible_messages > 0); --m_visible_messages; remove(*(*handle)->widget()); delete *handle; *handle = 0; } } Gobby::StatusBar::MessageHandle Gobby::StatusBar::invalid_handle() { return m_list.end(); } void Gobby::StatusBar::on_message_clicked(GdkEventButton* button, const MessageHandle& handle) { if(button->button == 1) (*handle)->show_dialog(); remove_message(handle); } void Gobby::StatusBar::on_document_removed(SessionView& view) { if(m_current_view == &view) { GtkTextBuffer* buffer = GTK_TEXT_BUFFER( m_current_view->get_text_buffer()); g_signal_handler_disconnect(buffer, m_mark_set_handler); g_signal_handler_disconnect(buffer, m_changed_handler); g_signal_handler_disconnect(m_current_view->get_text_view(), m_toverwrite_handler); m_current_view = NULL; } } void Gobby::StatusBar::on_document_changed(SessionView* view) { if(m_current_view) { GtkTextBuffer* buffer = GTK_TEXT_BUFFER( m_current_view->get_text_buffer()); g_signal_handler_disconnect(buffer, m_mark_set_handler); g_signal_handler_disconnect(buffer, m_changed_handler); g_signal_handler_disconnect(m_current_view->get_text_view(), m_toverwrite_handler); } m_current_view = dynamic_cast(view); if(m_current_view) { GtkTextBuffer* buffer = GTK_TEXT_BUFFER( m_current_view->get_text_buffer()); m_mark_set_handler = g_signal_connect_after( G_OBJECT(buffer), "mark-set", G_CALLBACK(on_mark_set_static), this); m_changed_handler = g_signal_connect_after( G_OBJECT(buffer), "changed", G_CALLBACK(on_changed_static), this); m_toverwrite_handler = g_signal_connect_after( G_OBJECT(GTK_TEXT_VIEW(m_current_view->get_text_view())), "notify::overwrite", G_CALLBACK(on_toggled_overwrite_static), this); } // Initial update update_pos_display(); } void Gobby::StatusBar::on_view_changed() { if(m_preferences.appearance.show_statusbar) show(); else hide(); } void Gobby::StatusBar::on_mark_set(GtkTextMark* mark) { GtkTextBuffer* buffer = GTK_TEXT_BUFFER( m_current_view->get_text_buffer()); if(mark == gtk_text_buffer_get_insert(buffer)) update_pos_display(); } void Gobby::StatusBar::on_toggled_overwrite() { update_pos_display(); } void Gobby::StatusBar::on_changed() { update_pos_display(); } bool Gobby::StatusBar::on_window_state_event(GdkEventWindowState* event) { // In GTK+ 3 the resize grip is handled by the Window, // not the status bar #ifndef USE_GTKMM3 if (event->new_window_state & GDK_WINDOW_STATE_MAXIMIZED) m_bar_position.set_has_resize_grip(false); else m_bar_position.set_has_resize_grip(true); #endif return true; } void Gobby::StatusBar::update_pos_display() { if(m_position_context_id) m_bar_position.remove_message(m_position_context_id); if(m_current_view != NULL) { GtkTextBuffer* buffer = GTK_TEXT_BUFFER( m_current_view->get_text_buffer()); GtkTextIter iter; // TODO: Use TextSessionView::get_cursor_position()? gtk_text_buffer_get_iter_at_mark( buffer, &iter, gtk_text_buffer_get_insert(buffer)); gint offset = gtk_text_iter_get_line_offset(&iter); unsigned int column = 0; const unsigned int tab_width = m_preferences.editor.tab_width; for(gtk_text_iter_set_line_offset(&iter, 0); gtk_text_iter_get_line_offset(&iter) < offset; gtk_text_iter_forward_char(&iter)) { if(gtk_text_iter_get_char(&iter) == '\t') column += (tab_width - column % tab_width); else ++ column; } // TODO: We might want to have a separate widget for the // OVR/INS display. m_position_context_id = m_bar_position.push( Glib::ustring::compose( _("Ln %1, Col %2\t%3"), gtk_text_iter_get_line(&iter) + 1, column + 1, gtk_text_view_get_overwrite(GTK_TEXT_VIEW(m_current_view->get_text_view())) ? _("OVR") : _("INS") ) ); } } gobby-0.4.94/code/core/huebutton.hpp0000644000175000017500000000324411531722663014234 00000000000000/* Gobby - GTK-based collaborative text editor * Copyright (C) 2008-2011 Armin Burgmeier * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GOBBY_HUE_BUTTON_HPP_ #define _GOBBY_HUE_BUTTON_HPP_ #include #include #include namespace Gobby { // TODO: This should go to libinftextgtk as InfTextGtkHueButton, // inheriting directly from GtkButton to provide a clean API. class HueButton: public Gtk::ColorButton { public: HueButton(const Glib::ustring& title, Gtk::Window& parent); double get_hue() const; double get_saturation() const; double get_value() const; void set_hue(double hue); void set_saturation(double saturation); void set_value(double value); protected: virtual void on_clicked(); void on_parent_hide(); void on_dialog_response(int response_id); Glib::ustring m_title; Gtk::Window& m_parent; std::auto_ptr m_dialog; GtkWidget* m_hue_chooser; double m_saturation; double m_value; }; } #endif // _GOBBY_HUE_BUTTON_HPP_ gobby-0.4.94/code/core/folder.hpp0000644000175000017500000000674711531722663013505 00000000000000/* Gobby - GTK-based collaborative text editor * Copyright (C) 2008-2011 Armin Burgmeier * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GOBBY_FOLDER_HPP_ #define _GOBBY_FOLDER_HPP_ #include "core/textsessionview.hpp" #include "core/chatsessionview.hpp" #include "core/preferences.hpp" #include "util/defaultaccumulator.hpp" #include "util/gtk-compat.hpp" #include #include #include namespace Gobby { class Folder : public GtkCompat::Notebook { public: // TODO chat: This should be SignalSessionAdded/Removed/Changed typedef sigc::signal SignalDocumentAdded; typedef sigc::signal SignalDocumentRemoved; typedef sigc::signal SignalDocumentChanged; typedef sigc::signal:: accumulated > SignalDocumentCloseRequest; // TODO chat: Should not require langmgr Folder(bool hide_single_tab, Preferences& preferences, GtkSourceLanguageManager* lang_manager); ~Folder(); TextSessionView& add_text_session(InfTextSession* session, const Glib::ustring& title, const Glib::ustring& path, const Glib::ustring& hostname, const std::string& info_storage_key); ChatSessionView& add_chat_session(InfChatSession* session, const Glib::ustring& title, const Glib::ustring& path, const Glib::ustring& hostname); void remove_document(SessionView& view); SessionView& get_document(unsigned int n); SessionView* lookup_document(InfSession* session); SessionView* get_current_document(); const SessionView* get_current_document() const; void switch_to_document(SessionView& document); SignalDocumentAdded signal_document_added() const { return m_signal_document_added; } SignalDocumentRemoved signal_document_removed() const { return m_signal_document_removed; } SignalDocumentChanged signal_document_changed() const { return m_signal_document_changed; } SignalDocumentCloseRequest signal_document_close_request() const { return m_signal_document_close_request; } protected: virtual void on_switch_page(Gtk::Widget* page, guint page_num); virtual bool on_key_press_event(GdkEventKey* event); void on_tab_close_request(SessionView& window); const bool m_hide_single_tab; Preferences& m_preferences; GtkSourceLanguageManager* m_lang_manager; SignalDocumentAdded m_signal_document_added; SignalDocumentRemoved m_signal_document_removed; SignalDocumentChanged m_signal_document_changed; SignalDocumentCloseRequest m_signal_document_close_request; }; } #endif // _GOBBY_FOLDER_HPP_ gobby-0.4.94/code/core/textsessionview.cpp0000644000175000017500000004432511531722663015502 00000000000000/* Gobby - GTK-based collaborative text editor * Copyright (C) 2008-2011 Armin Burgmeier * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "core/textsessionview.hpp" #include "util/i18n.hpp" #include "util/color.hpp" #include #include #include // TODO: Put all the preferences handling into an extra class namespace { GtkWrapMode wrap_mode_from_preferences(const Gobby::Preferences& pref) { return static_cast( static_cast(pref.view.wrap_mode)); } bool glob_matches(const gchar* const* globs, const std::string& str) { if(globs) { for(const gchar* const* glob = globs; *glob != NULL; ++ glob) { Glib::PatternSpec spec(*glob); if(spec.match(str)) return true; } } return false; } bool language_matches_title(GtkSourceLanguage* language, const gchar* title) { bool result = false; gchar** globs = gtk_source_language_get_globs(language); if(glob_matches(globs, title)) result = true; g_strfreev(globs); return result; } GtkSourceLanguage* get_language_for_title(GtkSourceLanguageManager* manager, const gchar* title) { const gchar* const* ids = gtk_source_language_manager_get_language_ids(manager); if(ids) { for(const gchar* const* id = ids; *id != NULL; ++ id) { GtkSourceLanguage* l; l = gtk_source_language_manager_get_language( manager, *id); if(l) if(language_matches_title(l, title)) return l; } } return NULL; } bool tags_priority_idle_func(Gobby::TextSessionView& view) { InfTextGtkBuffer* buffer = INF_TEXT_GTK_BUFFER( inf_session_get_buffer( INF_SESSION(view.get_session()))); inf_text_gtk_buffer_ensure_author_tags_priority(buffer); // I don't know why it does not redraw automatically, perhaps // this is a bug. gtk_widget_queue_draw(GTK_WIDGET(view.get_text_view())); return false; } void on_tag_added(GtkTextTagTable* table, GtkTextTag* tag, gpointer user_data) { // We do the actual reordering in an idle handler because // the priority of the tag might not yet be set to its final // value. Glib::signal_idle().connect( sigc::bind( sigc::ptr_fun(tags_priority_idle_func), sigc::ref( *static_cast( user_data)))); } } Gobby::TextSessionView::TextSessionView(InfTextSession* session, const Glib::ustring& title, const Glib::ustring& path, const Glib::ustring& hostname, const std::string& info_storage_key, Preferences& preferences, GtkSourceLanguageManager* manager): SessionView(INF_SESSION(session), title, path, hostname), m_info_storage_key(info_storage_key), m_preferences(preferences), m_view(GTK_SOURCE_VIEW(gtk_source_view_new())) { InfBuffer* buffer = inf_session_get_buffer(INF_SESSION(session)); InfUserTable* user_table = inf_session_get_user_table(INF_SESSION(session)); m_buffer = GTK_SOURCE_BUFFER(inf_text_gtk_buffer_get_text_buffer( INF_TEXT_GTK_BUFFER(buffer))); m_infview = inf_text_gtk_view_new( inf_adopted_session_get_io(INF_ADOPTED_SESSION(session)), GTK_TEXT_VIEW(m_view), user_table); g_signal_connect_after( G_OBJECT(m_view), "style-set", G_CALLBACK(on_style_set_static), this); // This is a hack to make sure that the author tags in the textview // have lowest priority of all tags, especially lower than // GtkSourceView's FIXME tags. We do this every time a new tag is // added to the tag table since GtkSourceView seems to create tags // that it needs on the fly. GtkTextTagTable* table = gtk_text_buffer_get_tag_table( GTK_TEXT_BUFFER(m_buffer)); g_signal_connect(G_OBJECT(table), "tag-added", G_CALLBACK(on_tag_added), this); gtk_widget_set_has_tooltip(GTK_WIDGET(m_view), TRUE); g_signal_connect(m_view, "query-tooltip", G_CALLBACK(on_query_tooltip_static), this); gtk_text_view_set_buffer(GTK_TEXT_VIEW(m_view), GTK_TEXT_BUFFER(m_buffer)); gtk_text_view_set_editable(GTK_TEXT_VIEW(m_view), FALSE); set_language(get_language_for_title(manager, title.c_str())); m_preferences.user.hue.signal_changed().connect( sigc::mem_fun( *this, &TextSessionView::on_user_color_changed)); m_preferences.user.show_remote_cursors.signal_changed().connect( sigc::mem_fun( *this, &TextSessionView::on_show_remote_cursors_changed)); m_preferences.user.show_remote_selections.signal_changed().connect( sigc::mem_fun( *this, &TextSessionView::on_show_remote_selections_changed)); m_preferences.user.show_remote_current_lines.signal_changed().connect( sigc::mem_fun( *this, &TextSessionView::on_show_remote_current_lines_changed)); m_preferences.user.show_remote_cursor_positions.signal_changed().connect( sigc::mem_fun( *this, &TextSessionView::on_show_remote_cursor_positions_changed)); m_preferences.editor.tab_width.signal_changed().connect( sigc::mem_fun( *this, &TextSessionView::on_tab_width_changed)); m_preferences.editor.tab_spaces.signal_changed().connect( sigc::mem_fun( *this, &TextSessionView::on_tab_spaces_changed)); m_preferences.editor.indentation_auto.signal_changed().connect( sigc::mem_fun( *this, &TextSessionView::on_auto_indent_changed)); m_preferences.editor.homeend_smart.signal_changed().connect( sigc::mem_fun( *this, &TextSessionView::on_homeend_smart_changed)); m_preferences.view.wrap_mode.signal_changed().connect( sigc::mem_fun( *this, &TextSessionView::on_wrap_mode_changed)); m_preferences.view.linenum_display.signal_changed().connect( sigc::mem_fun( *this, &TextSessionView::on_linenum_display_changed)); m_preferences.view.curline_highlight.signal_changed().connect( sigc::mem_fun( *this, &TextSessionView::on_curline_highlight_changed)); m_preferences.view.margin_display.signal_changed().connect( sigc::mem_fun( *this, &TextSessionView::on_margin_display_changed)); m_preferences.view.margin_pos.signal_changed().connect( sigc::mem_fun( *this, &TextSessionView::on_margin_pos_changed)); m_preferences.view.bracket_highlight.signal_changed().connect( sigc::mem_fun( *this, &TextSessionView::on_bracket_highlight_changed)); m_preferences.view.whitespace_display.signal_changed().connect( sigc::mem_fun( *this, &TextSessionView::on_whitespace_display_changed)); m_preferences.appearance.font.signal_changed().connect( sigc::mem_fun(*this, &TextSessionView::on_font_changed)); m_preferences.appearance.scheme_id.signal_changed().connect( sigc::mem_fun(*this, &TextSessionView::on_scheme_changed)); inf_text_gtk_view_set_show_remote_cursors( m_infview, m_preferences.user.show_remote_cursors ); inf_text_gtk_view_set_show_remote_selections( m_infview, m_preferences.user.show_remote_selections ); inf_text_gtk_view_set_show_remote_current_lines( m_infview, m_preferences.user.show_remote_current_lines ); gtk_source_view_set_tab_width(m_view, m_preferences.editor.tab_width); gtk_source_view_set_insert_spaces_instead_of_tabs( m_view, m_preferences.editor.tab_spaces); gtk_source_view_set_auto_indent( m_view, m_preferences.editor.indentation_auto); gtk_source_view_set_smart_home_end( m_view, m_preferences.editor.homeend_smart ? GTK_SOURCE_SMART_HOME_END_ALWAYS : GTK_SOURCE_SMART_HOME_END_DISABLED); gtk_text_view_set_wrap_mode( GTK_TEXT_VIEW(m_view), wrap_mode_from_preferences(m_preferences)); gtk_source_view_set_show_line_numbers( m_view, m_preferences.view.linenum_display); gtk_source_view_set_highlight_current_line( m_view, m_preferences.view.curline_highlight); gtk_source_view_set_show_right_margin( m_view, m_preferences.view.margin_display); gtk_source_view_set_right_margin_position( m_view, m_preferences.view.margin_pos); gtk_source_buffer_set_highlight_matching_brackets( m_buffer, m_preferences.view.bracket_highlight); gtk_source_view_set_draw_spaces( m_view, m_preferences.view.whitespace_display); const Pango::FontDescription& desc = m_preferences.appearance.font; gtk_widget_modify_font( GTK_WIDGET(m_view), const_cast(desc.gobj())); gtk_widget_show(GTK_WIDGET(m_view)); Gtk::ScrolledWindow* scroll = Gtk::manage(new Gtk::ScrolledWindow); scroll->set_shadow_type(Gtk::SHADOW_IN); scroll->set_policy(Gtk::POLICY_AUTOMATIC, Gtk::POLICY_AUTOMATIC); gtk_container_add(GTK_CONTAINER(scroll->gobj()), GTK_WIDGET(m_view)); scroll->show(); m_infviewport = inf_text_gtk_viewport_new(scroll->gobj(), user_table); inf_text_gtk_viewport_set_show_user_markers( m_infviewport, m_preferences.user.show_remote_cursor_positions ); pack_start(*scroll, Gtk::PACK_EXPAND_WIDGET); gtk_source_buffer_set_style_scheme( m_buffer, gtk_source_style_scheme_manager_get_scheme( gtk_source_style_scheme_manager_get_default(), static_cast( preferences.appearance.scheme_id).c_str())); } Gobby::TextSessionView::~TextSessionView() { g_object_unref(m_infview); g_object_unref(m_infviewport); } void Gobby::TextSessionView::get_cursor_position(unsigned int& row, unsigned int& col) const { GtkTextMark* insert_mark = gtk_text_buffer_get_insert(GTK_TEXT_BUFFER(m_buffer)); GtkTextIter iter; gtk_text_buffer_get_iter_at_mark(GTK_TEXT_BUFFER(m_buffer), &iter, insert_mark); row = gtk_text_iter_get_line(&iter); col = 0; int chars = gtk_text_iter_get_line_offset(&iter); unsigned int tabs = m_preferences.editor.tab_width; // Tab characters expand to more than one column for(gtk_text_iter_set_line_offset(&iter, 0); gtk_text_iter_get_line_offset(&iter) < chars; gtk_text_iter_forward_char(&iter)) { unsigned int width = 1; if(gtk_text_iter_get_char(&iter) == '\t') { unsigned int offset = gtk_text_iter_get_line_offset(&iter); width = (tabs - offset % tabs) % tabs; if(width == 0) width = tabs; } col += width; } } void Gobby::TextSessionView::set_selection(const GtkTextIter* begin, const GtkTextIter* end) { gtk_text_buffer_select_range( gtk_text_view_get_buffer(GTK_TEXT_VIEW(m_view)), begin, end); scroll_to_cursor_position(0.1); } Glib::ustring Gobby::TextSessionView::get_selected_text() const { GtkTextIter start, end; gtk_text_buffer_get_selection_bounds( gtk_text_view_get_buffer(GTK_TEXT_VIEW(m_view)), &start, &end); Gtk::TextIter start_cpp(&start), end_cpp(&end); return start_cpp.get_slice(end_cpp); } void Gobby::TextSessionView::scroll_to_cursor_position(double within_margin) { gtk_text_view_scroll_to_mark( GTK_TEXT_VIEW(m_view), gtk_text_buffer_get_insert(gtk_text_view_get_buffer( GTK_TEXT_VIEW(m_view))), within_margin, FALSE, 0.0, 0.0); } InfUser* Gobby::TextSessionView::get_active_user() const { InfTextGtkBuffer* buffer = INF_TEXT_GTK_BUFFER( inf_session_get_buffer(INF_SESSION(m_session))); return INF_USER(inf_text_gtk_buffer_get_active_user(buffer)); } void Gobby::TextSessionView::set_active_user(InfTextUser* user) { g_assert( user == NULL || inf_user_table_lookup_user_by_id( inf_session_get_user_table(INF_SESSION(m_session)), inf_user_get_id(INF_USER(user))) == INF_USER(user)); inf_text_gtk_buffer_set_active_user( INF_TEXT_GTK_BUFFER( inf_session_get_buffer(INF_SESSION(m_session))), user); inf_text_gtk_view_set_active_user(m_infview, user); inf_text_gtk_viewport_set_active_user(m_infviewport, user); // TODO: Make sure the active user has the color specified in the // preferences, and set color if not. if(user != NULL) gtk_text_view_set_editable(GTK_TEXT_VIEW(m_view), TRUE); else gtk_text_view_set_editable(GTK_TEXT_VIEW(m_view), FALSE); active_user_changed(INF_USER(user)); if(user != NULL) { m_undo_grouping.reset( new TextUndoGrouping( inf_adopted_session_get_algorithm( INF_ADOPTED_SESSION(m_session)), user, GTK_TEXT_BUFFER(m_buffer))); } else { m_undo_grouping.reset(NULL); } } GtkSourceLanguage* Gobby::TextSessionView::get_language() const { return gtk_source_buffer_get_language(m_buffer); } void Gobby::TextSessionView::set_language(GtkSourceLanguage* language) { gtk_source_buffer_set_language(m_buffer, language); m_signal_language_changed.emit(language); } void Gobby::TextSessionView::on_user_color_changed() { InfTextUser* user = INF_TEXT_USER(get_active_user()); if(user) { inf_text_session_set_user_color(get_session(), user, m_preferences.user.hue); } } void Gobby::TextSessionView::on_show_remote_cursors_changed() { inf_text_gtk_view_set_show_remote_cursors( m_infview, m_preferences.user.show_remote_cursors ); } void Gobby::TextSessionView::on_show_remote_selections_changed() { inf_text_gtk_view_set_show_remote_selections( m_infview, m_preferences.user.show_remote_selections ); } void Gobby::TextSessionView::on_show_remote_current_lines_changed() { inf_text_gtk_view_set_show_remote_current_lines( m_infview, m_preferences.user.show_remote_current_lines ); } void Gobby::TextSessionView::on_show_remote_cursor_positions_changed() { inf_text_gtk_viewport_set_show_user_markers( m_infviewport, m_preferences.user.show_remote_cursor_positions ); } void Gobby::TextSessionView::on_tab_width_changed() { gtk_source_view_set_tab_width(m_view, m_preferences.editor.tab_width); } void Gobby::TextSessionView::on_tab_spaces_changed() { gtk_source_view_set_insert_spaces_instead_of_tabs( m_view, m_preferences.editor.tab_spaces); } void Gobby::TextSessionView::on_auto_indent_changed() { gtk_source_view_set_auto_indent( m_view, m_preferences.editor.indentation_auto); } void Gobby::TextSessionView::on_homeend_smart_changed() { gtk_source_view_set_smart_home_end( m_view, m_preferences.editor.homeend_smart ? GTK_SOURCE_SMART_HOME_END_ALWAYS : GTK_SOURCE_SMART_HOME_END_DISABLED); } void Gobby::TextSessionView::on_wrap_mode_changed() { gtk_text_view_set_wrap_mode( GTK_TEXT_VIEW(m_view), wrap_mode_from_preferences(m_preferences)); } void Gobby::TextSessionView::on_linenum_display_changed() { gtk_source_view_set_show_line_numbers( m_view, m_preferences.view.linenum_display); } void Gobby::TextSessionView::on_curline_highlight_changed() { gtk_source_view_set_highlight_current_line( m_view, m_preferences.view.curline_highlight); } void Gobby::TextSessionView::on_margin_display_changed() { gtk_source_view_set_show_right_margin( m_view, m_preferences.view.margin_display); } void Gobby::TextSessionView::on_margin_pos_changed() { gtk_source_view_set_right_margin_position( m_view, m_preferences.view.margin_pos); } void Gobby::TextSessionView::on_bracket_highlight_changed() { gtk_source_buffer_set_highlight_matching_brackets( m_buffer, m_preferences.view.bracket_highlight); } void Gobby::TextSessionView::on_whitespace_display_changed() { gtk_source_view_set_draw_spaces( m_view, m_preferences.view.whitespace_display); } void Gobby::TextSessionView::on_font_changed() { const Pango::FontDescription& desc = m_preferences.appearance.font; gtk_widget_modify_font( GTK_WIDGET(m_view), const_cast(desc.gobj())); } void Gobby::TextSessionView::on_scheme_changed() { gtk_source_buffer_set_style_scheme( m_buffer, gtk_source_style_scheme_manager_get_scheme( gtk_source_style_scheme_manager_get_default(), static_cast( m_preferences.appearance.scheme_id).c_str())); } bool Gobby::TextSessionView:: on_query_tooltip(int x, int y, bool keyboard_mode, const Glib::RefPtr& tooltip) { if(keyboard_mode) return false; int buffer_x, buffer_y; gtk_text_view_window_to_buffer_coords( GTK_TEXT_VIEW(m_view), GTK_TEXT_WINDOW_WIDGET, x, y, &buffer_x, &buffer_y); // Pointer is in line number display if(buffer_x < 0) return false; // Get the character at the mouse position GtkTextIter iter; int trailing; gtk_text_view_get_iter_at_position( GTK_TEXT_VIEW(m_view), &iter, &trailing, buffer_x, buffer_y); // Don't show a tooltip if the character is a newline character */ //if(gtk_text_iter_is_end(&iter)) return false; if(gtk_text_iter_ends_line(&iter)) return false; // Don't show a tooltip if we are past the end of the line GdkRectangle newline_location; GtkTextIter line_end = iter; gtk_text_iter_forward_to_line_end(&line_end); gtk_text_view_get_iter_location( GTK_TEXT_VIEW(m_view), &line_end, &newline_location); if(buffer_x >= newline_location.x && buffer_y >= newline_location.y) { return false; } InfTextGtkBuffer* buffer = INF_TEXT_GTK_BUFFER( inf_session_get_buffer(INF_SESSION(m_session))); InfTextUser* author = inf_text_gtk_buffer_get_author(buffer, &iter); if(author != NULL) { tooltip->set_markup(Glib::ustring::compose( _("Text written by %1"), Glib::Markup::escape_text( inf_user_get_name(INF_USER(author))))); } else { tooltip->set_text(_("Unowned text")); } return true; } void Gobby::TextSessionView::on_style_set() { GtkStyle* style = gtk_widget_get_style(GTK_WIDGET(m_view)); g_assert(style != NULL); const GdkColor& color = style->base[GTK_STATE_NORMAL]; double rh = color.red / 65535.0; double gs = color.green / 65535.0; double bv = color.blue / 65535.0; Gobby::rgb_to_hsv(rh, gs, bv); double my_sat = gs * 0.5 + 0.3; double my_val = (std::pow(bv + 1, 3) - 1) / 7 * 0.6 + 0.4; InfTextGtkBuffer* buffer = INF_TEXT_GTK_BUFFER( inf_session_get_buffer(INF_SESSION(m_session))); inf_text_gtk_buffer_set_saturation_value(buffer, my_sat, my_val); } gobby-0.4.94/code/main.cpp0000755000175000017500000001704011531722663012210 00000000000000/* Gobby - GTK-based collaborative text editor * Copyright (C) 2008-2011 Armin Burgmeier * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "features.hpp" #include "window.hpp" #include "core/iconmanager.hpp" #include "util/config.hpp" #include "util/file.hpp" #include "util/i18n.hpp" #include #include #include #include #include #include #include #ifdef WITH_UNIQUE # include #endif #include // bindtextdomain #include #include namespace { void handle_exception(const Glib::ustring& message) { Gtk::MessageDialog dlg("Unhandled exception", false, Gtk::MESSAGE_ERROR, Gtk::BUTTONS_OK, true); dlg.set_secondary_text(message); dlg.run(); std::cerr << "Unhandled exception: " << message << std::endl; } const char* _(const char* str) { return Gobby::_(str); } std::string gobby_localedir() { #ifdef G_OS_WIN32 gchar* root = g_win32_get_package_installation_directory_of_module( NULL); gchar* temp = g_build_filename(root, "share", "locale", NULL); g_free(root); gchar* result = g_win32_locale_filename_from_utf8(temp); g_free(temp); std::string cpp_result(result); g_free(result); return cpp_result; #else return GOBBY_LOCALEDIR; #endif } #ifdef WITH_UNIQUE int send_message_with_uris(UniqueApp* app, gint message_id, const std::vector& uris) { std::vector uri_cstrs(uris.size() + 1); for(unsigned int i = 0; i < uris.size(); ++i) uri_cstrs[i] = uris[i].c_str(); UniqueMessageData* message = unique_message_data_new(); unique_message_data_set_uris( message, const_cast(&uri_cstrs[0])); UniqueResponse response = unique_app_send_message( app, message_id, message); unique_message_data_free(message); if(response == UNIQUE_RESPONSE_OK) { return 0; } else { std::cerr << "error sending URIs to existing gobby " "instance (libunique): " << static_cast(response) << std::endl; return -1; } } int my_unique_activate(UniqueApp* app) { UniqueResponse response = unique_app_send_message(app, UNIQUE_ACTIVATE, NULL); if(response != UNIQUE_RESPONSE_OK) { std::cerr << "error activating existing gobby " "instance (libunique): " << static_cast(response) << std::endl; return -1; } else { return 0; } } int my_unique_send_file_args(UniqueApp* app, int argc, const char* const* argv) { std::vector uris(argc); for(int i = 0; i < argc; ++i) { uris[i] = Gio::File::create_for_commandline_arg( argv[i])->get_uri(); } return send_message_with_uris(app, UNIQUE_OPEN, uris); } int my_unique_send_hostname_args( UniqueApp* app, const std::vector& hostnames) { std::vector uris(hostnames); for(unsigned int i = 0; i < uris.size(); ++i) { uris[i].insert(0, "infinote://"); } return send_message_with_uris( app, Gobby::UNIQUE_GOBBY_CONNECT, uris); } int my_unique_check_other(UniqueApp* app, int argc, const char* const* argv, const std::vector& hostnames) { if(argc == 0 && hostnames.empty()) { return my_unique_activate(app); } if(argc) { if(my_unique_send_file_args(app, argc, argv) != 0) return -1; } if(!hostnames.empty()) { if (my_unique_send_hostname_args(app, hostnames)) return -1; } return 0; } #endif // WITH_UNIQUE } int main(int argc, char* argv[]) try { g_thread_init(NULL); Gio::init(); setlocale(LC_ALL, ""); bindtextdomain(GETTEXT_PACKAGE, gobby_localedir().c_str()); bind_textdomain_codeset(GETTEXT_PACKAGE, "UTF-8"); bool new_instance = false; bool display_version = false; std::vector hostnames; Glib::OptionGroup opt_group_gobby("gobby", _("Gobby options"), _("Options related to Gobby")); Glib::OptionEntry opt_version; opt_version.set_short_name('v'); opt_version.set_long_name("version"); opt_version.set_description( _("Display version information and exit")); opt_group_gobby.add_entry(opt_version, display_version); Glib::OptionEntry opt_new_instance; opt_new_instance.set_short_name('n'); opt_new_instance.set_long_name("new-instance"); opt_new_instance.set_description( _("Also start a new Gobby instance when there is one " "running already")); opt_group_gobby.add_entry(opt_new_instance, new_instance); Glib::OptionEntry opt_connect; opt_connect.set_short_name('c'); opt_connect.set_long_name("connect"); opt_connect.set_description( _("Connect to given host on startup, can be given multiple times")); opt_connect.set_arg_description(_("HOSTNAME")); opt_group_gobby.add_entry(opt_connect, hostnames); Glib::OptionContext opt_ctx; opt_ctx.set_help_enabled(true); opt_ctx.set_ignore_unknown_options(false); opt_ctx.set_main_group(opt_group_gobby); // I would rather like to have Gtk::Main on the stack, but I see // no other chance to catch exceptions from the command line option // parsing. armin. // TODO: Maybe we should parse before initializing GTK+, using // Gtk::Main::add_gtk_option_group() with open_default_display set // to false. std::auto_ptr kit; try { kit.reset(new Gtk::Main(argc, argv, opt_ctx)); } catch(Glib::Exception& e) { std::cerr << e.what() << std::endl; return EXIT_FAILURE; } if(display_version) { std::cout << "Gobby " << PACKAGE_VERSION << std::endl; return EXIT_SUCCESS; } #ifdef WITH_UNIQUE UniqueApp* app = unique_app_new_with_commands( "de._0x539.gobby", NULL, "UNIQUE_GOBBY_CONNECT", Gobby::UNIQUE_GOBBY_CONNECT, NULL); if(!new_instance && unique_app_is_running(app)) { int exit_code = my_unique_check_other( app, argc - 1, argv + 1, hostnames); g_object_unref(app); return exit_code; } #endif // WITH_UNIQUE GError* error = NULL; if(!inf_init(&error)) { std::string message = error->message; g_error_free(error); throw std::runtime_error(message); } Gobby::IconManager icon_manager; // Set default icon Gtk::Window::set_default_icon_name("gobby-0.5"); // Read the configuration Gobby::Config config(Gobby::config_filename("config.xml")); // Create window Gobby::Window wnd( argc-1, argv+1, icon_manager, config #ifdef WITH_UNIQUE , app #endif ); #ifdef WITH_UNIQUE g_object_unref(app); #endif wnd.show(); for(std::vector::const_iterator i = hostnames.begin(); i != hostnames.end(); ++ i) { wnd.connect_to_host(*i); } wnd.signal_hide().connect(sigc::ptr_fun(&Gtk::Main::quit) ); kit->run(); //inf_deinit(); return 0; } catch(Glib::Exception& e) { handle_exception(e.what() ); } catch(std::exception& e) { handle_exception(e.what() ); } gobby-0.4.94/code/commands/0000755000175000017500000000000011543672436012441 500000000000000gobby-0.4.94/code/commands/browser-commands.hpp0000644000175000017500000000430311531722663016347 00000000000000/* Gobby - GTK-based collaborative text editor * Copyright (C) 2008-2011 Armin Burgmeier * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GOBBY_BROWSER_COMMANDS_HPP_ #define _GOBBY_BROWSER_COMMANDS_HPP_ #include "core/browser.hpp" #include "core/statusbar.hpp" #include namespace Gobby { class BrowserCommands: public sigc::trackable { public: BrowserCommands(Browser& browser, Folder& folder, StatusBar& status_bar); ~BrowserCommands(); protected: static void on_set_browser_static(InfGtkBrowserModel* model, GtkTreePath* path, GtkTreeIter* iter, InfcBrowser* browser, gpointer user_data) { static_cast(user_data)-> on_set_browser(model, iter, browser); } void on_set_browser(InfGtkBrowserModel* model, GtkTreeIter* iter, InfcBrowser* browser); void on_notify_status(InfcBrowser* browser); void subscribe_chat(InfcBrowser* browser); void on_activate(InfcBrowser* browser, InfcBrowserIter* iter); void on_finished(InfcNodeRequest* request); void on_failed(InfcNodeRequest* request, const GError* error); Browser& m_browser; Folder& m_folder; StatusBar& m_status_bar; gulong m_set_browser_handler; class BrowserInfo; typedef std::map BrowserMap; BrowserMap m_browser_map; class RequestInfo; typedef std::map RequestMap; RequestMap m_request_map; }; } #endif // _GOBBY_BROWSER_COMMANDS_HPP_ gobby-0.4.94/code/commands/edit-commands.cpp0000644000175000017500000003540011531722663015606 00000000000000/* Gobby - GTK-based collaborative text editor * Copyright (C) 2008-2011 Armin Burgmeier * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "commands/edit-commands.hpp" #include "util/i18n.hpp" namespace { } // anonymous namespace Gobby::EditCommands::EditCommands(Gtk::Window& parent, Header& header, Folder& folder, StatusBar& status_bar, Preferences& preferences): m_parent(parent), m_header(header), m_folder(folder), m_status_bar(status_bar), m_preferences(preferences), m_current_view(NULL) { m_header.action_edit_undo->signal_activate().connect( sigc::mem_fun(*this, &EditCommands::on_undo)); m_header.action_edit_redo->signal_activate().connect( sigc::mem_fun(*this, &EditCommands::on_redo)); m_header.action_edit_cut->signal_activate().connect( sigc::mem_fun(*this, &EditCommands::on_cut)); m_header.action_edit_copy->signal_activate().connect( sigc::mem_fun(*this, &EditCommands::on_copy)); m_header.action_edit_paste->signal_activate().connect( sigc::mem_fun(*this, &EditCommands::on_paste)); m_header.action_edit_find->signal_activate().connect( sigc::mem_fun(*this, &EditCommands::on_find)); m_header.action_edit_find_next->signal_activate().connect( sigc::mem_fun(*this, &EditCommands::on_find_next)); m_header.action_edit_find_prev->signal_activate().connect( sigc::mem_fun(*this, &EditCommands::on_find_prev)); m_header.action_edit_find_replace->signal_activate().connect( sigc::mem_fun(*this, &EditCommands::on_find_replace)); m_header.action_edit_goto_line->signal_activate().connect( sigc::mem_fun(*this, &EditCommands::on_goto_line)); m_header.action_edit_preferences->signal_activate().connect( sigc::mem_fun(*this, &EditCommands::on_preferences)); m_folder.signal_document_removed().connect( sigc::mem_fun(*this, &EditCommands::on_document_removed)); m_folder.signal_document_changed().connect( sigc::mem_fun(*this, &EditCommands::on_document_changed)); // Setup initial sensitivity: on_document_changed(m_folder.get_current_document()); } Gobby::EditCommands::~EditCommands() { // Disconnect handlers from current document: on_document_changed(NULL); } void Gobby::EditCommands::on_document_removed(SessionView& view) { // TODO: Isn't this emitted by Folder already? if(&view == m_current_view) on_document_changed(NULL); } void Gobby::EditCommands::on_document_changed(SessionView* view) { if(m_current_view != NULL) { InfTextSession* session = m_current_view->get_session(); InfAdoptedAlgorithm* algorithm = inf_adopted_session_get_algorithm( INF_ADOPTED_SESSION(session)); GtkTextBuffer* buffer = GTK_TEXT_BUFFER( m_current_view->get_text_buffer()); if(m_synchronization_complete_handler != 0) { g_signal_handler_disconnect( G_OBJECT(session), m_synchronization_complete_handler); } else { g_signal_handler_disconnect( G_OBJECT(algorithm), m_can_undo_changed_handler); g_signal_handler_disconnect( G_OBJECT(algorithm), m_can_redo_changed_handler); } g_signal_handler_disconnect(G_OBJECT(buffer), m_mark_set_handler); g_signal_handler_disconnect(G_OBJECT(buffer), m_changed_handler); m_active_user_changed_connection.disconnect(); } m_current_view = dynamic_cast(view); if(m_current_view != NULL) { InfTextSession* session = m_current_view->get_session(); InfUser* active_user = m_current_view->get_active_user(); GtkTextBuffer* buffer = GTK_TEXT_BUFFER(m_current_view->get_text_buffer()); m_active_user_changed_connection = m_current_view->signal_active_user_changed().connect( sigc::mem_fun( *this, &EditCommands:: on_active_user_changed)); m_mark_set_handler = g_signal_connect_after( G_OBJECT(buffer), "mark-set", G_CALLBACK(&on_mark_set_static), this); // The selection might change without mark-set being emitted // when the document changes, for example when all // currently selected text is deleted. m_changed_handler = g_signal_connect_after( G_OBJECT(buffer), "changed", G_CALLBACK(&on_changed_static), this); if(inf_session_get_status(INF_SESSION(session)) == INF_SESSION_RUNNING) { // This connects to can-undo-changed and // can-redo-changed of the algorithm. Set // m_synchronization_complete_handler to zero so that // the function does not try to disconnect from it. m_synchronization_complete_handler = 0; on_sync_complete(); } else { // The InfAdoptedSession is created after // synchronization, so we wait until that finished. m_synchronization_complete_handler = g_signal_connect_after( G_OBJECT(session), "synchronization_complete", G_CALLBACK(&on_sync_complete_static), this); m_can_undo_changed_handler = 0; m_can_redo_changed_handler = 0; } // Set initial sensitivity for active user: on_active_user_changed(active_user); // Set initial sensitivity for cut/copy/paste: on_mark_set(); // Set initial sensitivity for find/replace/goto: m_header.action_edit_find->set_sensitive(true); if(m_find_dialog.get()) { on_find_text_changed(); } else { m_header.action_edit_find_next->set_sensitive(false); m_header.action_edit_find_prev->set_sensitive(false); } m_header.action_edit_find_replace->set_sensitive(true); m_header.action_edit_goto_line->set_sensitive(true); } else { m_header.action_edit_undo->set_sensitive(false); m_header.action_edit_redo->set_sensitive(false); m_header.action_edit_cut->set_sensitive(false); m_header.action_edit_copy->set_sensitive(false); m_header.action_edit_paste->set_sensitive(false); m_header.action_edit_find->set_sensitive(false); m_header.action_edit_find_next->set_sensitive(false); m_header.action_edit_find_prev->set_sensitive(false); m_header.action_edit_find_replace->set_sensitive(false); m_header.action_edit_goto_line->set_sensitive(false); } } void Gobby::EditCommands::on_sync_complete() { g_assert(m_current_view != NULL); InfTextSession* session = m_current_view->get_session(); InfAdoptedAlgorithm* algorithm = inf_adopted_session_get_algorithm( INF_ADOPTED_SESSION(session)); m_can_undo_changed_handler = g_signal_connect( G_OBJECT(algorithm), "can-undo-changed", G_CALLBACK(&on_can_undo_changed_static), this); m_can_redo_changed_handler = g_signal_connect( G_OBJECT(algorithm), "can-redo-changed", G_CALLBACK(&on_can_redo_changed_static), this); if(m_synchronization_complete_handler != 0) { g_signal_handler_disconnect( G_OBJECT(session), m_synchronization_complete_handler); m_synchronization_complete_handler = 0; } } void Gobby::EditCommands::on_active_user_changed(InfUser* active_user) { g_assert(m_current_view != NULL); if(active_user != NULL) { InfTextSession* session = m_current_view->get_session(); InfAdoptedAlgorithm* algorithm = inf_adopted_session_get_algorithm( INF_ADOPTED_SESSION(session)); GtkTextBuffer* buffer = GTK_TEXT_BUFFER( m_current_view->get_text_buffer()); m_header.action_edit_undo->set_sensitive( inf_adopted_algorithm_can_undo( algorithm, INF_ADOPTED_USER(active_user))); m_header.action_edit_redo->set_sensitive( inf_adopted_algorithm_can_redo( algorithm, INF_ADOPTED_USER(active_user))); m_header.action_edit_cut->set_sensitive( gtk_text_buffer_get_has_selection(buffer)); m_header.action_edit_paste->set_sensitive(true); } else { m_header.action_edit_undo->set_sensitive(false); m_header.action_edit_redo->set_sensitive(false); m_header.action_edit_cut->set_sensitive(false); m_header.action_edit_paste->set_sensitive(false); } } void Gobby::EditCommands::on_mark_set() { g_assert(m_current_view != NULL); GtkTextBuffer* buffer = GTK_TEXT_BUFFER(m_current_view->get_text_buffer()); m_header.action_edit_copy->set_sensitive( gtk_text_buffer_get_has_selection(buffer)); if(m_current_view->get_active_user() != NULL) { m_header.action_edit_cut->set_sensitive( gtk_text_buffer_get_has_selection(buffer)); } } void Gobby::EditCommands::on_changed() { on_mark_set(); } void Gobby::EditCommands::on_can_undo_changed(InfAdoptedUser* user, bool can_undo) { g_assert(m_current_view != NULL); if(INF_ADOPTED_USER(m_current_view->get_active_user()) == user) m_header.action_edit_undo->set_sensitive(can_undo); } void Gobby::EditCommands::on_can_redo_changed(InfAdoptedUser* user, bool can_redo) { g_assert(m_current_view != NULL); if(INF_ADOPTED_USER(m_current_view->get_active_user()) == user) m_header.action_edit_redo->set_sensitive(can_redo); } void Gobby::EditCommands::on_find_text_changed() { m_header.action_edit_find_next->set_sensitive( !m_find_dialog->get_find_text().empty()); m_header.action_edit_find_prev->set_sensitive( !m_find_dialog->get_find_text().empty()); } // TODO: The following is basically a hack to set the cursor to the position // where a Undo/Redo has happened. This can be properly fixed as soon as // libinfinity supports caret-aware requests, by generating undo-caret and // redo-caret requests. namespace { GtkTextMark* check = NULL; void recaret_i(GtkTextBuffer* buffer, GtkTextIter* location, gchar* text, gint len, gpointer user_data) { if(!check) { check = gtk_text_buffer_create_mark(buffer, NULL, location, FALSE); } else { GtkTextIter iter; gtk_text_buffer_get_iter_at_mark(buffer, &iter, check); if(gtk_text_iter_get_offset(&iter) < gtk_text_iter_get_offset(location)) gtk_text_buffer_move_mark(buffer, check, location); } } void recaret_e(GtkTextBuffer* buffer, GtkTextIter* start, GtkTextIter* end, gpointer user_data) { if(!check) { check = gtk_text_buffer_create_mark(buffer, NULL, start, FALSE); } else { GtkTextIter iter; gtk_text_buffer_get_iter_at_mark(buffer, &iter, check); if(gtk_text_iter_get_offset(&iter) < gtk_text_iter_get_offset(start)) gtk_text_buffer_move_mark(buffer, check, start); } } } void Gobby::EditCommands::on_undo() { g_assert(m_current_view != NULL); gulong i_ = g_signal_connect_after(m_current_view->get_text_buffer(), "insert-text", G_CALLBACK(recaret_i), NULL); gulong e_ = g_signal_connect_after(m_current_view->get_text_buffer(), "delete-range", G_CALLBACK(recaret_e), NULL); inf_adopted_session_undo( INF_ADOPTED_SESSION(m_current_view->get_session()), INF_ADOPTED_USER(m_current_view->get_active_user()), m_current_view->get_undo_grouping().get_undo_size() ); g_signal_handler_disconnect(m_current_view->get_text_buffer(), i_); g_signal_handler_disconnect(m_current_view->get_text_buffer(), e_); if(check) { GtkTextIter check_iter; gtk_text_buffer_get_iter_at_mark(GTK_TEXT_BUFFER(m_current_view->get_text_buffer()), &check_iter, check); gtk_text_buffer_select_range(GTK_TEXT_BUFFER(m_current_view->get_text_buffer()), &check_iter, &check_iter); gtk_text_buffer_delete_mark(GTK_TEXT_BUFFER(m_current_view->get_text_buffer()), check); check = NULL; } m_current_view->scroll_to_cursor_position(0.0); } void Gobby::EditCommands::on_redo() { g_assert(m_current_view != NULL); gulong i_ = g_signal_connect_after(m_current_view->get_text_buffer(), "insert-text", G_CALLBACK(recaret_i), NULL); gulong e_ = g_signal_connect_after(m_current_view->get_text_buffer(), "delete-range", G_CALLBACK(recaret_e), NULL); inf_adopted_session_redo( INF_ADOPTED_SESSION(m_current_view->get_session()), INF_ADOPTED_USER(m_current_view->get_active_user()), m_current_view->get_undo_grouping().get_redo_size() ); g_signal_handler_disconnect(m_current_view->get_text_buffer(), i_); g_signal_handler_disconnect(m_current_view->get_text_buffer(), e_); if(check) { GtkTextIter check_iter; gtk_text_buffer_get_iter_at_mark(GTK_TEXT_BUFFER(m_current_view->get_text_buffer()), &check_iter, check); gtk_text_buffer_select_range(GTK_TEXT_BUFFER(m_current_view->get_text_buffer()), &check_iter, &check_iter); gtk_text_buffer_delete_mark(GTK_TEXT_BUFFER(m_current_view->get_text_buffer()), check); check = NULL; } m_current_view->scroll_to_cursor_position(0.0); } void Gobby::EditCommands::on_cut() { g_assert(m_current_view != NULL); g_assert(m_current_view->get_active_user() != NULL); gtk_text_buffer_cut_clipboard( GTK_TEXT_BUFFER(m_current_view->get_text_buffer()), gtk_clipboard_get(GDK_SELECTION_CLIPBOARD), TRUE); m_current_view->scroll_to_cursor_position(0.0); } void Gobby::EditCommands::on_copy() { g_assert(m_current_view != NULL); gtk_text_buffer_copy_clipboard( GTK_TEXT_BUFFER(m_current_view->get_text_buffer()), gtk_clipboard_get(GDK_SELECTION_CLIPBOARD)); } void Gobby::EditCommands::on_paste() { g_assert(m_current_view != NULL); g_assert(m_current_view->get_active_user() != NULL); gtk_text_buffer_paste_clipboard( GTK_TEXT_BUFFER(m_current_view->get_text_buffer()), gtk_clipboard_get(GDK_SELECTION_CLIPBOARD), NULL, TRUE); m_current_view->scroll_to_cursor_position(0.0); } void Gobby::EditCommands::on_find() { ensure_find_dialog(); m_find_dialog->set_search_only(true); m_find_dialog->present(); } void Gobby::EditCommands::on_find_next() { g_assert(m_find_dialog.get() != NULL); m_find_dialog->find_next(); } void Gobby::EditCommands::on_find_prev() { g_assert(m_find_dialog.get() != NULL); m_find_dialog->find_previous(); } void Gobby::EditCommands::on_find_replace() { ensure_find_dialog(); m_find_dialog->set_search_only(false); m_find_dialog->present(); } void Gobby::EditCommands::on_goto_line() { if(!m_goto_dialog.get()) m_goto_dialog.reset(new GotoDialog(m_parent, m_folder)); m_goto_dialog->present(); } void Gobby::EditCommands::on_preferences() { if(!m_preferences_dialog.get()) { m_preferences_dialog.reset( new PreferencesDialog(m_parent, m_preferences)); } m_preferences_dialog->present(); } void Gobby::EditCommands::ensure_find_dialog() { if(!m_find_dialog.get()) { m_find_dialog.reset(new FindDialog(m_parent, m_folder, m_status_bar)); m_find_dialog->signal_find_text_changed().connect( sigc::mem_fun( *this, &EditCommands::on_find_text_changed)); } } gobby-0.4.94/code/commands/Makefile.in0000644000175000017500000005400011543672413014420 00000000000000# 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@ subdir = code/commands DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = $(top_builddir)/code/features.hpp CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = LIBRARIES = $(noinst_LIBRARIES) AR = ar ARFLAGS = cru AM_V_AR = $(am__v_AR_$(V)) am__v_AR_ = $(am__v_AR_$(AM_DEFAULT_VERBOSITY)) am__v_AR_0 = @echo " AR " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ libgobby_commands_a_AR = $(AR) $(ARFLAGS) libgobby_commands_a_LIBADD = am_libgobby_commands_a_OBJECTS = auth-commands.$(OBJEXT) \ autosave-commands.$(OBJEXT) browser-commands.$(OBJEXT) \ browser-context-commands.$(OBJEXT) edit-commands.$(OBJEXT) \ file-commands.$(OBJEXT) folder-commands.$(OBJEXT) \ help-commands.$(OBJEXT) subscription-commands.$(OBJEXT) \ synchronization-commands.$(OBJEXT) \ user-join-commands.$(OBJEXT) view-commands.$(OBJEXT) libgobby_commands_a_OBJECTS = $(am_libgobby_commands_a_OBJECTS) DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/code depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) AM_V_CXX = $(am__v_CXX_$(V)) am__v_CXX_ = $(am__v_CXX_$(AM_DEFAULT_VERBOSITY)) am__v_CXX_0 = @echo " CXX " $@; CXXLD = $(CXX) CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \ -o $@ AM_V_CXXLD = $(am__v_CXXLD_$(V)) am__v_CXXLD_ = $(am__v_CXXLD_$(AM_DEFAULT_VERBOSITY)) am__v_CXXLD_0 = @echo " CXXLD " $@; AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; SOURCES = $(libgobby_commands_a_SOURCES) DIST_SOURCES = $(libgobby_commands_a_SOURCES) RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ install-dvi-recursive install-exec-recursive \ install-html-recursive install-info-recursive \ install-pdf-recursive install-ps-recursive install-recursive \ installcheck-recursive installdirs-recursive pdf-recursive \ ps-recursive uninstall-recursive HEADERS = $(noinst_HEADERS) RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ distdir ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" ACLOCAL = @ACLOCAL@ ALL_LINGUAS = @ALL_LINGUAS@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@ DOC_USER_FORMATS = @DOC_USER_FORMATS@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GMOFILES = @GMOFILES@ GMSGFMT = @GMSGFMT@ GREP = @GREP@ HELP_DIR = @HELP_DIR@ 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@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MKINSTALLDIRS = @MKINSTALLDIRS@ MSGFMT = @MSGFMT@ MSGFMT_OPTS = @MSGFMT_OPTS@ MSGMERGE = @MSGMERGE@ OBJEXT = @OBJEXT@ OMF_DIR = @OMF_DIR@ 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@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ WINDRES = @WINDRES@ 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_CXX = @ac_ct_CXX@ 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@ gobby_CFLAGS = @gobby_CFLAGS@ gobby_LIBS = @gobby_LIBS@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infinote_CFLAGS = @infinote_CFLAGS@ infinote_LIBS = @infinote_LIBS@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ 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@ unique_CFLAGS = @unique_CFLAGS@ unique_LIBS = @unique_LIBS@ SUBDIRS = file-tasks noinst_LIBRARIES = libgobby-commands.a libgobby_commands_a_SOURCES = \ auth-commands.cpp \ autosave-commands.cpp \ browser-commands.cpp \ browser-context-commands.cpp \ edit-commands.cpp \ file-commands.cpp \ folder-commands.cpp \ help-commands.cpp \ subscription-commands.cpp \ synchronization-commands.cpp \ user-join-commands.cpp \ view-commands.cpp noinst_HEADERS = \ auth-commands.hpp \ autosave-commands.hpp \ browser-commands.hpp \ browser-context-commands.hpp \ edit-commands.hpp \ file-commands.hpp \ folder-commands.hpp \ help-commands.hpp \ subscription-commands.hpp \ synchronization-commands.hpp \ user-join-commands.hpp \ view-commands.hpp appicondir = $(datadir)/pixmaps pixmapdir = $(datadir)/pixmaps/gobby-0.5 AM_CPPFLAGS = $(gobby_CFLAGS) $(unique_CFLAGS) $(infinote_CFLAGS) \ -I$(top_srcdir)/code all: all-recursive .SUFFIXES: .SUFFIXES: .cpp .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(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) --gnu code/commands/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu code/commands/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: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstLIBRARIES: -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) libgobby-commands.a: $(libgobby_commands_a_OBJECTS) $(libgobby_commands_a_DEPENDENCIES) $(AM_V_at)-rm -f libgobby-commands.a $(AM_V_AR)$(libgobby_commands_a_AR) libgobby-commands.a $(libgobby_commands_a_OBJECTS) $(libgobby_commands_a_LIBADD) $(AM_V_at)$(RANLIB) libgobby-commands.a mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/auth-commands.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/autosave-commands.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/browser-commands.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/browser-context-commands.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/edit-commands.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/file-commands.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/folder-commands.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/help-commands.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/subscription-commands.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/synchronization-commands.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/user-join-commands.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/view-commands.Po@am__quote@ .cpp.o: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $< .cpp.obj: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. # To change the values of `make' variables: instead of editing Makefiles, # (1) if the variable is set in `config.status', edit `config.status' # (which will cause the Makefiles to be regenerated when you run `make'); # (2) otherwise, pass the desired values on the `make' command line. $(RECURSIVE_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ list='$(SUBDIRS)'; for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" $(RECURSIVE_CLEAN_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ rev=''; for subdir in $$list; do \ if test "$$subdir" = "."; then :; else \ rev="$$subdir $$rev"; \ fi; \ done; \ rev="$$rev ."; \ target=`echo $@ | sed s/-recursive//`; \ for subdir in $$rev; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags 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 @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: check-recursive all-am: Makefile $(LIBRARIES) $(HEADERS) installdirs: installdirs-recursive installdirs-am: install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive 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-recursive clean-am: clean-generic clean-noinstLIBRARIES mostlyclean-am distclean: distclean-recursive -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: .MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \ install-am install-strip tags-recursive .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ all all-am check check-am clean clean-generic \ clean-noinstLIBRARIES ctags ctags-recursive distclean \ distclean-compile distclean-generic distclean-tags 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-ps install-ps-am install-strip \ installcheck installcheck-am installdirs installdirs-am \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-compile mostlyclean-generic pdf pdf-am ps ps-am \ tags tags-recursive uninstall uninstall-am # 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: gobby-0.4.94/code/commands/file-commands.hpp0000644000175000017500000000735411531722663015614 00000000000000/* Gobby - GTK-based collaborative text editor * Copyright (C) 2008 Armin Burgmeier * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ // TODO: Someone else should do task management #ifndef _GOBBY_FILE_COMMANDS_HPP_ #define _GOBBY_FILE_COMMANDS_HPP_ #include "operations/operations.hpp" #include "dialogs/document-location-dialog.hpp" #include "dialogs/connection-dialog.hpp" #include "core/header.hpp" #include "core/browser.hpp" #include "core/statusbar.hpp" #include "core/filechooser.hpp" #include #include namespace Gobby { class FileCommands: public sigc::trackable { public: FileCommands(Gtk::Window& parent, Header& header, Browser& browser, Folder& folder, StatusBar& status_bar, FileChooser& file_chooser, Operations& operations, const DocumentInfoStorage& info_storage, Preferences& preferences); ~FileCommands(); class Task: public sigc::trackable { public: typedef sigc::signal SignalFinished; Task(FileCommands& file_commands); virtual ~Task() = 0; virtual void run() = 0; void finish(); Gtk::Window& get_parent(); Folder& get_folder(); StatusBar& get_status_bar(); FileChooser& get_file_chooser(); Operations& get_operations(); const DocumentInfoStorage& get_document_info_storage(); Preferences& get_preferences(); DocumentLocationDialog& get_document_location_dialog(); SignalFinished signal_finished() const { return m_signal_finished; } protected: FileCommands& m_file_commands; SignalFinished m_signal_finished; }; void set_task(Task* task); protected: static void on_row_inserted_static(GtkTreeModel* model, GtkTreePath* path, GtkTreeIter* iter, gpointer user_data) { static_cast(user_data)->on_row_inserted(); } static void on_row_deleted_static(GtkTreeModel* model, GtkTreePath* path, gpointer user_data) { static_cast(user_data)->on_row_deleted(); } void on_document_changed(SessionView* view); void on_row_inserted(); void on_row_deleted(); void on_task_finished(); void on_new(); void on_open(); void on_open_location(); void on_save(); void on_save_as(); void on_save_all(); void on_export_html(); void on_connect(); void on_close(); void on_quit(); void on_connect_response(int response_id); void update_sensitivity(); Gtk::Window& m_parent; Header& m_header; Browser& m_browser; Folder& m_folder; StatusBar& m_status_bar; FileChooser& m_file_chooser; Operations& m_operations; const DocumentInfoStorage& m_document_info_storage; Preferences& m_preferences; // Note: Order is important to get deinitialization right: Task may // access the location dialog in its destructor, so make sure the task // is freed before the location dialog. std::auto_ptr m_location_dialog; std::auto_ptr m_task; std::auto_ptr m_connection_dialog; gulong m_row_inserted_handler; gulong m_row_deleted_handler; }; } #endif // _GOBBY_FILE_COMMANDS_HPP_gobby-0.4.94/code/commands/auth-commands.cpp0000644000175000017500000002143111531722663015621 00000000000000/* Gobby - GTK-based collaborative text editor * Copyright (C) 2008-2011 Armin Burgmeier * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "commands/auth-commands.hpp" #include "util/i18n.hpp" #include #include #include namespace { void show_error(const GError* error, Gobby::StatusBar& statusbar, InfXmlConnection* connection) { gchar* remote; g_object_get(connection, "remote-hostname", &remote, NULL); Glib::ustring short_message(Glib::ustring::compose( "Authentication failed for \"%1\"", remote)); g_free(remote); if(error->domain == inf_authentication_detail_error_quark()) { statusbar.add_error_message( short_message, inf_authentication_detail_strerror( InfAuthenticationDetailError( error->code))); } else { statusbar.add_error_message( short_message, error->message); } } } Gobby::AuthCommands::AuthCommands(Gtk::Window& parent, Browser& browser, StatusBar& statusbar, const Preferences& preferences): m_parent(parent), m_browser(browser), m_statusbar(statusbar), m_preferences(preferences) { GError* error = NULL; m_sasl_context = inf_sasl_context_new(&error); if(!m_sasl_context) { std::string error_message = std::string("SASL initialization error: ") + error->message; g_error_free(error); throw std::runtime_error(error_message); } inf_sasl_context_set_callback( m_sasl_context, &AuthCommands::sasl_callback_static, this); m_browser.set_sasl_context(m_sasl_context, "ANONYMOUS PLAIN"); g_signal_connect( G_OBJECT(m_browser.get_store()), "set-browser", G_CALLBACK(&AuthCommands::set_browser_callback_static), this); } Gobby::AuthCommands::~AuthCommands() { m_browser.set_sasl_context(NULL, NULL); inf_sasl_context_unref(m_sasl_context); for(RetryMap::iterator iter = m_retries.begin(); iter != m_retries.end(); ++iter) { g_signal_handler_disconnect(iter->first, iter->second.handle); } } void Gobby::AuthCommands::sasl_callback(InfSaslContextSession* session, InfXmppConnection* xmpp, Gsasl_property prop) { Glib::ustring username = m_preferences.user.name; switch(prop) { case GSASL_ANONYMOUS_TOKEN: inf_sasl_context_session_set_property( session, GSASL_ANONYMOUS_TOKEN, username.c_str()); inf_sasl_context_session_continue(session, GSASL_OK); break; case GSASL_AUTHID: inf_sasl_context_session_set_property( session, GSASL_AUTHID, username.c_str()); inf_sasl_context_session_continue(session, GSASL_OK); break; case GSASL_PASSWORD: { RetryMap::iterator i = m_retries.find(xmpp); if(i == m_retries.end()) i = insert_retry_info(xmpp); RetryInfo& info(i->second); if(!info.last_password.empty()) { inf_sasl_context_session_set_property( session, GSASL_PASSWORD, info.last_password.c_str()); inf_sasl_context_session_continue(session, GSASL_OK); } else { // Query user for password g_assert(info.password_dialog == NULL); gchar* remote_id; g_object_get(G_OBJECT(xmpp), "remote-hostname", &remote_id, NULL); Glib::ustring remote_id_(remote_id); g_free(remote_id); info.password_dialog = new PasswordDialog( m_parent, remote_id_, info.retries); info.password_dialog->add_button( Gtk::Stock::CANCEL, Gtk::RESPONSE_CANCEL); info.password_dialog->add_button( Gtk::Stock::OK, Gtk::RESPONSE_ACCEPT); Gtk::Dialog& dialog = *info.password_dialog; dialog.signal_response().connect(sigc::bind( sigc::mem_fun( *this, &AuthCommands::on_response), session, xmpp)); info.password_dialog->present(); } } break; default: inf_sasl_context_session_continue(session, GSASL_NO_CALLBACK); break; } } void Gobby::AuthCommands::on_response(int response_id, InfSaslContextSession* session, InfXmppConnection* xmpp) { RetryMap::iterator i = m_retries.find(xmpp); g_assert(i != m_retries.end()); RetryInfo& info(i->second); if(response_id == Gtk::RESPONSE_ACCEPT) info.last_password = info.password_dialog->get_password(); else info.last_password = ""; delete info.password_dialog; info.password_dialog = NULL; ++info.retries; if(info.last_password.empty()) { inf_sasl_context_session_continue(session, GSASL_NO_PASSWORD); } else { inf_sasl_context_session_set_property( session, GSASL_PASSWORD, info.last_password.c_str()); inf_sasl_context_session_continue(session, GSASL_OK); } } void Gobby::AuthCommands::set_browser_callback(InfcBrowser* browser) { g_signal_connect( G_OBJECT(browser), "error", G_CALLBACK(browser_error_callback_static), this); } void Gobby::AuthCommands::browser_error_callback(InfcBrowser* browser, GError* error) { // The Browser already displays errors inline, but we want // auth-related error messages to show up in the status bar. InfXmlConnection* connection = infc_browser_get_connection(browser); g_assert(INF_IS_XMPP_CONNECTION(connection)); InfXmppConnection* xmpp = INF_XMPP_CONNECTION(connection); RetryMap::iterator iter = m_retries.find(xmpp); if(iter == m_retries.end()) iter = insert_retry_info(xmpp); Glib::ustring& last_password(iter->second.last_password); Glib::ustring old_password; old_password.swap(last_password); if(error->domain == g_quark_from_static_string("INF_XMPP_CONNECTION_AUTH_ERROR")) { // Authentication failed for some reason, maybe because the // server aborted authentication. If we were querying a // password then close the dialog now. delete iter->second.password_dialog; iter->second.password_dialog = NULL; const GError* sasl_error = inf_xmpp_connection_get_sasl_error(xmpp); if(sasl_error != NULL && sasl_error->domain == inf_authentication_detail_error_quark()) { handle_error_detail(xmpp, sasl_error, old_password, last_password); } else if(sasl_error != NULL) { show_error(sasl_error, m_statusbar, connection); } else { show_error(error, m_statusbar, connection); } } else if(error->domain == inf_gsasl_error_quark()) { show_error(error, m_statusbar, connection); } } void Gobby::AuthCommands::handle_error_detail(InfXmppConnection* xmpp, const GError* detail_error, Glib::ustring& old_password, Glib::ustring& last_password) { GError* error = NULL; switch(detail_error->code) { case INF_AUTHENTICATION_DETAIL_ERROR_AUTHENTICATION_FAILED: inf_xmpp_connection_retry_sasl_authentication(xmpp, &error); break; case INF_AUTHENTICATION_DETAIL_ERROR_TRY_AGAIN: old_password.swap(last_password); inf_xmpp_connection_retry_sasl_authentication(xmpp, &error); break; default: show_error(detail_error, m_statusbar, INF_XML_CONNECTION(xmpp)); break; } if(error) { show_error(error, m_statusbar, INF_XML_CONNECTION(xmpp)); g_error_free(error); } } Gobby::AuthCommands::RetryMap::iterator Gobby::AuthCommands::insert_retry_info(InfXmppConnection* xmpp) { RetryMap::iterator iter = m_retries.insert( std::make_pair(xmpp, RetryInfo())).first; iter->second.retries = 0; iter->second.handle = g_signal_connect( G_OBJECT(xmpp), "notify::status", G_CALLBACK(on_notify_status_static), this); iter->second.password_dialog = NULL; return iter; } void Gobby::AuthCommands::on_notify_status(InfXmppConnection* connection) { InfXmlConnectionStatus status; g_object_get(G_OBJECT(connection), "status", &status, NULL); if(status != INF_XML_CONNECTION_OPENING) { RetryMap::iterator iter = m_retries.find(connection); g_signal_handler_disconnect(connection, iter->second.handle); delete iter->second.password_dialog; m_retries.erase(iter); } } gobby-0.4.94/code/commands/subscription-commands.hpp0000644000175000017500000001016011531722663017406 00000000000000/* Gobby - GTK-based collaborative text editor * Copyright (C) 2008-2011 Armin Burgmeier * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GOBBY_SUBSCRIPTION_COMMANDS_HPP_ #define _GOBBY_SUBSCRIPTION_COMMANDS_HPP_ #include "core/browser.hpp" #include "core/folder.hpp" #include "core/sessionview.hpp" #include "core/documentinfostorage.hpp" #include #include namespace Gobby { class SubscriptionCommands: public sigc::trackable { public: typedef sigc::signal SignalSubscribeSession; typedef sigc::signal SignalUnsubscribeSession; SubscriptionCommands(Browser& browser, Folder& text_folder, Folder& chat_folder, DocumentInfoStorage& strg); ~SubscriptionCommands(); // Emitted whenever a session is subscribed to, both for text and // chat sessions. This also provides access to the InfcSessionProxy // of the subscription to allow others (especially user-join-commands // to make a user join). SignalSubscribeSession signal_subscribe_session() const { return m_signal_subscribe_session; } SignalUnsubscribeSession signal_unsubscribe_session() const { return m_signal_unsubscribe_session; } protected: static void on_set_browser_static(InfGtkBrowserModel* model, GtkTreePath* path, GtkTreeIter* iter, InfcBrowser* browser, gpointer user_data) { static_cast(user_data)->on_set_browser( model, iter, browser); } static void on_subscribe_session_static(InfcBrowser* browser, InfcBrowserIter* iter, InfcSessionProxy* proxy, gpointer user_data) { static_cast(user_data)-> on_subscribe_session(browser, iter, proxy); } static void on_finished_static(InfcNodeRequest* request, const InfcBrowserIter* iter, gpointer user_data) { static_cast(user_data)->on_finished( request); } static void on_failed_static(InfcRequest* request, const GError* error, gpointer user_data) { static_cast(user_data)->on_failed( INFC_NODE_REQUEST(request), error); } void on_set_browser(InfGtkBrowserModel* model, GtkTreeIter* iter, InfcBrowser* browser); void on_finished(InfcNodeRequest* request); void on_failed(InfcNodeRequest* request, const GError* error); void on_subscribe_session(InfcBrowser* browser, InfcBrowserIter* iter, InfcSessionProxy* proxy); void on_close(InfSession* session); void on_notify_connection(InfcSessionProxy* proxy); Browser& m_browser; Folder& m_text_folder; Folder& m_chat_folder; DocumentInfoStorage& m_info_storage; gulong m_set_browser_handler; class BrowserInfo; typedef std::map BrowserMap; BrowserMap m_browser_map; class SessionInfo; typedef std::map SessionMap; SessionMap m_session_map; SignalSubscribeSession m_signal_subscribe_session; SignalUnsubscribeSession m_signal_unsubscribe_session; }; } #endif // _GOBBY_SUBSCRIPTION_COMMANDS_HPP_ gobby-0.4.94/code/commands/browser-context-commands.cpp0000644000175000017500000002473111531722663020033 00000000000000/* Gobby - GTK-based collaborative text editor * Copyright (C) 2008-2011 Armin Burgmeier * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "commands/browser-context-commands.hpp" #include "operations/operation-open-multiple.hpp" #include "util/i18n.hpp" #include #include #include #include #include // TODO: Use file tasks for the commands, once we made them public Gobby::BrowserContextCommands::BrowserContextCommands(Gtk::Window& parent, Browser& browser, FileChooser& chooser, Operations& operations, const Preferences& prf): m_parent(parent), m_browser(browser), m_file_chooser(chooser), m_operations(operations), m_preferences(prf), m_popup_menu(NULL) { m_populate_popup_handler = g_signal_connect( m_browser.get_view(), "populate-popup", G_CALLBACK(on_populate_popup_static), this); } Gobby::BrowserContextCommands::~BrowserContextCommands() { g_signal_handler_disconnect(m_browser.get_view(), m_populate_popup_handler); } void Gobby::BrowserContextCommands::on_node_removed() { g_assert(m_popup_menu != NULL); // This calls deactivate, causing the watch to be removed. m_popup_menu->popdown(); } void Gobby::BrowserContextCommands::on_menu_deactivate() { m_watch.reset(NULL); } void Gobby::BrowserContextCommands::on_populate_popup(Gtk::Menu* menu) { // TODO: Can this happen? Should we close the old popup here? g_assert(m_popup_menu == NULL); // Cancel previous attempts m_watch.reset(NULL); m_entry_dialog.reset(NULL); m_file_dialog.reset(NULL); InfcBrowser* browser; InfcBrowserIter iter; if(m_browser.get_selected(&browser, &iter) && infc_browser_get_status(browser) == INFC_BROWSER_CONNECTED) { InfcBrowserIter dummy_iter = iter; bool is_subdirectory = infc_browser_iter_is_subdirectory(browser, &iter); bool is_toplevel = !infc_browser_iter_get_parent(browser, &dummy_iter); // Watch the node, and close the popup menu when the node // it refers to is removed. m_watch.reset(new NodeWatch(browser, &iter)); m_watch->signal_node_removed().connect(sigc::mem_fun( *this, &BrowserContextCommands::on_node_removed)); menu->signal_deactivate().connect(sigc::mem_fun( *this, &BrowserContextCommands::on_menu_deactivate)); // Add "Disconnect" menu option if the connection // item has been clicked at if(is_toplevel) { Gtk::ImageMenuItem* disconnect_item = Gtk::manage( new Gtk::ImageMenuItem(_("_Disconnect from Server"), true)); disconnect_item->set_image(*Gtk::manage(new Gtk::Image( Gtk::Stock::DISCONNECT, Gtk::ICON_SIZE_MENU))); disconnect_item->signal_activate().connect(sigc::bind( sigc::mem_fun(*this, &BrowserContextCommands::on_disconnect), browser)); disconnect_item->show(); menu->append(*disconnect_item); // Separator Gtk::SeparatorMenuItem* sep_item = Gtk::manage(new Gtk::SeparatorMenuItem); sep_item->show(); menu->append(*sep_item); } // Create Document Gtk::ImageMenuItem* new_document_item = Gtk::manage( new Gtk::ImageMenuItem(_("Create Do_cument..."), true)); new_document_item->set_image(*Gtk::manage(new Gtk::Image( Gtk::Stock::NEW, Gtk::ICON_SIZE_MENU))); new_document_item->signal_activate().connect(sigc::bind( sigc::mem_fun(*this, &BrowserContextCommands::on_new), browser, iter, false)); new_document_item->set_sensitive(is_subdirectory); new_document_item->show(); menu->append(*new_document_item); // Create Directory // Check whether we have the folder-new icon, fall back to // Stock::DIRECTORY otherwise Glib::RefPtr screen = menu->get_screen(); Glib::RefPtr icon_theme( Gtk::IconTheme::get_for_screen(screen)); Gtk::Image* new_directory_image = Gtk::manage(new Gtk::Image); if(icon_theme->lookup_icon("folder-new", Gtk::ICON_SIZE_MENU, Gtk::ICON_LOOKUP_USE_BUILTIN)) { new_directory_image->set_from_icon_name( "folder-new", Gtk::ICON_SIZE_MENU); } else { new_directory_image->set( Gtk::Stock::DIRECTORY, Gtk::ICON_SIZE_MENU); } Gtk::ImageMenuItem* new_directory_item = Gtk::manage( new Gtk::ImageMenuItem(_("Create Di_rectory..."), true)); new_directory_item->set_image(*new_directory_image); new_directory_item->signal_activate().connect(sigc::bind( sigc::mem_fun(*this, &BrowserContextCommands::on_new), browser, iter, true)); new_directory_item->set_sensitive(is_subdirectory); new_directory_item->show(); menu->append(*new_directory_item); // Open Document Gtk::ImageMenuItem* open_document_item = Gtk::manage( new Gtk::ImageMenuItem(_("_Open Document..."), true)); open_document_item->set_image(*Gtk::manage(new Gtk::Image( Gtk::Stock::OPEN, Gtk::ICON_SIZE_MENU))); open_document_item->signal_activate().connect(sigc::bind( sigc::mem_fun(*this, &BrowserContextCommands::on_open), browser, iter)); open_document_item->set_sensitive(is_subdirectory); open_document_item->show(); menu->append(*open_document_item); // Separator Gtk::SeparatorMenuItem* sep_item = Gtk::manage(new Gtk::SeparatorMenuItem); sep_item->show(); menu->append(*sep_item); // Delete Gtk::ImageMenuItem* delete_item = Gtk::manage( new Gtk::ImageMenuItem(_("D_elete"), true)); delete_item->set_image(*Gtk::manage(new Gtk::Image( Gtk::Stock::DELETE, Gtk::ICON_SIZE_MENU))); delete_item->signal_activate().connect(sigc::bind( sigc::mem_fun(*this, &BrowserContextCommands::on_delete), browser, iter)); delete_item->set_sensitive(!is_toplevel); delete_item->show(); menu->append(*delete_item); m_popup_menu = menu; menu->signal_selection_done().connect( sigc::mem_fun( *this, &BrowserContextCommands::on_popdown)); } } void Gobby::BrowserContextCommands::on_popdown() { m_popup_menu = NULL; m_watch.reset(NULL); } void Gobby::BrowserContextCommands::on_disconnect(InfcBrowser* browser) { InfXmlConnection* connection = infc_browser_get_connection(browser); InfXmlConnectionStatus status; g_object_get(G_OBJECT(connection), "status", &status, NULL); if(status != INF_XML_CONNECTION_CLOSED && status != INF_XML_CONNECTION_CLOSING) { inf_xml_connection_close(connection); } } void Gobby::BrowserContextCommands::on_new(InfcBrowser* browser, InfcBrowserIter iter, bool directory) { m_watch.reset(new NodeWatch(browser, &iter)); m_watch->signal_node_removed().connect(sigc::mem_fun( *this, &BrowserContextCommands::on_new_node_removed)); m_entry_dialog.reset( new EntryDialog( m_parent, directory ? _("Choose a name for the directory") : _("Choose a name for the document"), directory ? _("_Directory Name:") : _("_Document Name:"))); m_entry_dialog->add_button(Gtk::Stock::CANCEL, Gtk::RESPONSE_CANCEL); m_entry_dialog->add_button(_("C_reate"), Gtk::RESPONSE_ACCEPT) ->set_image(*Gtk::manage(new Gtk::Image( Gtk::Stock::NEW, Gtk::ICON_SIZE_BUTTON))); m_entry_dialog->set_text(directory ? _("New Directory") : _("New Document")); m_entry_dialog->signal_response().connect(sigc::bind( sigc::mem_fun(*this, &BrowserContextCommands::on_new_response), browser, iter, directory)); m_entry_dialog->present(); } void Gobby::BrowserContextCommands::on_open(InfcBrowser* browser, InfcBrowserIter iter) { m_watch.reset(new NodeWatch(browser, &iter)); m_watch->signal_node_removed().connect(sigc::mem_fun( *this, &BrowserContextCommands::on_open_node_removed)); m_file_dialog.reset(new FileChooser::Dialog( m_file_chooser, m_parent, _("Choose a text file to open"), Gtk::FILE_CHOOSER_ACTION_OPEN)); m_file_dialog->signal_response().connect(sigc::bind( sigc::mem_fun(*this, &BrowserContextCommands::on_open_response), browser, iter)); m_file_dialog->set_select_multiple(true); m_file_dialog->present(); } void Gobby::BrowserContextCommands::on_delete(InfcBrowser* browser, InfcBrowserIter iter) { m_operations.delete_node(browser, &iter); } void Gobby::BrowserContextCommands::on_new_node_removed() { m_watch.reset(NULL); m_entry_dialog.reset(NULL); } void Gobby::BrowserContextCommands::on_new_response(int response_id, InfcBrowser* browser, InfcBrowserIter iter, bool directory) { if(response_id == Gtk::RESPONSE_ACCEPT) { if(directory) { // TODO: Select the newly created directory in tree m_operations.create_directory( browser, &iter, m_entry_dialog->get_text()); } else { m_operations.create_document( browser, &iter, m_entry_dialog->get_text()); } } m_watch.reset(NULL); m_entry_dialog.reset(NULL); } void Gobby::BrowserContextCommands::on_open_node_removed() { m_watch.reset(NULL); m_file_dialog.reset(NULL); } void Gobby::BrowserContextCommands::on_open_response(int response_id, InfcBrowser* browser, InfcBrowserIter iter) { if(response_id == Gtk::RESPONSE_ACCEPT) { Glib::SListHandle uris = m_file_dialog->get_uris(); OperationOpenMultiple* operation = m_operations.create_documents(browser, &iter, m_preferences, uris.size()); for(Glib::SListHandle::iterator i = uris.begin(); i != uris.end(); ++i) { Glib::RefPtr file = Gio::File::create_for_uri(*i); operation->add_uri(*i, NULL, NULL); } } m_watch.reset(NULL); m_file_dialog.reset(NULL); } gobby-0.4.94/code/commands/synchronization-commands.hpp0000644000175000017500000000355611531722663020136 00000000000000/* Gobby - GTK-based collaborative text editor * Copyright (C) 2008-2011 Armin Burgmeier * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GOBBY_SYNCHRONIZATION_COMMANDS_HPP_ #define _GOBBY_SYNCHRONIZATION_COMMANDS_HPP_ #include #include "commands/subscription-commands.hpp" namespace Gobby { class SynchronizationCommands: public sigc::trackable { public: SynchronizationCommands(SubscriptionCommands& subscription_commands); ~SynchronizationCommands(); protected: class SyncInfo; void on_subscribe_session(InfcSessionProxy* proxy, Folder& folder, SessionView& view); void on_unsubscribe_session(InfcSessionProxy* proxy, Folder& folder, SessionView& view); void on_synchronization_failed(InfSession* session, InfXmlConnection* connection, const GError* error); void on_synchronization_complete(InfSession* session, InfXmlConnection* connection); typedef std::map SyncMap; SyncMap m_sync_map; }; } #endif // _GOBBY_SYNCHRONIZATION_COMMANDS_HPP_ gobby-0.4.94/code/commands/user-join-commands.hpp0000644000175000017500000000317511531722663016605 00000000000000/* Gobby - GTK-based collaborative text editor * Copyright (C) 2008-2011 Armin Burgmeier * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GOBBY_USER_JOIN_COMMANDS_HPP_ #define _GOBBY_USER_JOIN_COMMANDS_HPP_ #include "commands/subscription-commands.hpp" #include "core/preferences.hpp" #include namespace Gobby { class UserJoinCommands: public sigc::trackable { public: UserJoinCommands(SubscriptionCommands& subscription_commands, const Preferences& preferences); ~UserJoinCommands(); protected: void on_subscribe_session(InfcSessionProxy* proxy, Folder& folder, SessionView& view); void on_unsubscribe_session(InfcSessionProxy* proxy, Folder& folder, SessionView& view); const Preferences& m_preferences; class UserJoinInfo; typedef std::map UserJoinMap; UserJoinMap m_user_join_map; }; } #endif // _GOBBY_USER_JOIN_COMMANDS_HPP_ gobby-0.4.94/code/commands/help-commands.cpp0000644000175000017500000001205011531722663015605 00000000000000/* Gobby - GTK-based collaborative text editor * Copyright (C) 2008-2011 Armin Burgmeier * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "commands/help-commands.hpp" #include "util/i18n.hpp" #include "util/gtk-compat.hpp" #include #include namespace { void url_hook(Gtk::AboutDialog& dialog, const Glib::ustring& link) { // TODO: Set correct timestamp here, using // GdkAppLaunchContext? g_app_info_launch_default_for_uri(link.c_str(), NULL, NULL); } void email_hook(Gtk::AboutDialog& dialog, const Glib::ustring& link) { // TODO: Set correct timestamp here, using // GdkAppLaunchContext? g_app_info_launch_default_for_uri( ("mailto:" + link).c_str(), NULL, NULL); } } Gobby::HelpCommands::HelpCommands(Gtk::Window& parent, Header& header, const IconManager& icon_manager): m_parent(parent), m_header(header), m_icon_manager(icon_manager) { #ifndef USE_GTKMM3 Gtk::AboutDialog::set_url_hook(sigc::ptr_fun(url_hook)); Gtk::AboutDialog::set_email_hook(sigc::ptr_fun(email_hook)); #endif header.action_help_contents->signal_activate().connect( sigc::mem_fun(*this, &HelpCommands::on_contents)); header.action_help_about->signal_activate().connect( sigc::mem_fun(*this, &HelpCommands::on_about)); } void Gobby::HelpCommands::on_contents() { GError* error = NULL; gtk_show_uri(m_parent.get_screen()->gobj(), "ghelp:gobby", GDK_CURRENT_TIME, &error); if(error == NULL) return; // Help browser could not be invoked, show an error message to the user. Gtk::MessageDialog dlg(m_parent, _("There was an error displaying help."), false, Gtk::MESSAGE_ERROR, Gtk::BUTTONS_OK, true); dlg.set_secondary_text(error->message); dlg.run(); g_error_free(error); } void Gobby::HelpCommands::on_about() { if(m_about_dialog.get() == NULL) { m_about_dialog.reset(new Gtk::AboutDialog); m_about_dialog->set_transient_for(m_parent); std::vector artists; artists.push_back("Benjamin Herr "); artists.push_back("Thomas Glatt "); std::vector authors; authors.push_back("Armin Burgmeier "); authors.push_back("Philipp Kern "); authors.push_back(""); authors.push_back(_("Contributors:")); authors.push_back("\tBenjamin Herr "); authors.push_back("\tBen Levitt "); authors.push_back("\tGabríel A. Pétursson "); std::vector translators; translators.push_back(_("British English:")); translators.push_back("\tGabríel A. Pétursson "); translators.push_back(_("German:")); translators.push_back("\tMichael Frey "); Glib::ustring transl = ""; for(std::vector::iterator i = translators.begin(); i != translators.end(); ++i) { if(i != translators.begin()) transl += "\n"; transl += *i; } m_about_dialog->set_artists(artists); m_about_dialog->set_authors(authors); m_about_dialog->set_translator_credits(transl); m_about_dialog->set_copyright( "Copyright © 2008-2011 Armin Burgmeier"); m_about_dialog->set_license(_( "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.\n\n" "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.\n\n" "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")); m_about_dialog->set_logo_icon_name("gobby-0.5"); m_about_dialog->set_program_name("Gobby"); m_about_dialog->set_version(PACKAGE_VERSION); m_about_dialog->set_website("http://gobby.0x539.de/"); m_about_dialog->set_wrap_license(true); m_about_dialog->signal_response().connect( sigc::mem_fun( *this, &HelpCommands::on_about_response)); } m_about_dialog->present(); } void Gobby::HelpCommands::on_about_response(int id) { m_about_dialog.reset(NULL); } gobby-0.4.94/code/commands/help-commands.hpp0000644000175000017500000000271711531722663015623 00000000000000/* Gobby - GTK-based collaborative text editor * Copyright (C) 2008-2011 Armin Burgmeier * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GOBBY_HELP_COMMANDS_HPP_ #define _GOBBY_HELP_COMMANDS_HPP_ #include "core/header.hpp" #include "core/iconmanager.hpp" #include #include #include #include namespace Gobby { class HelpCommands: public sigc::trackable { public: HelpCommands(Gtk::Window& parent, Header& header, const IconManager& icon_manager); protected: void on_contents(); void on_about(); void on_about_response(int response_id); Gtk::Window& m_parent; Header& m_header; const IconManager& m_icon_manager; std::auto_ptr m_about_dialog; }; } #endif // _GOBBY_HELP_COMMANDS_HPP_ gobby-0.4.94/code/commands/edit-commands.hpp0000644000175000017500000000764511531722663015625 00000000000000/* Gobby - GTK-based collaborative text editor * Copyright (C) 2008-2011 Armin Burgmeier * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GOBBY_EDIT_COMMANDS_HPP_ #define _GOBBY_EDIT_COMMANDS_HPP_ #include "dialogs/find-dialog.hpp" #include "dialogs/goto-dialog.hpp" #include "dialogs/preferences-dialog.hpp" #include "core/header.hpp" #include "core/folder.hpp" #include "core/statusbar.hpp" #include #include #include namespace Gobby { class EditCommands: public sigc::trackable { public: EditCommands(Gtk::Window& parent, Header& header, Folder& folder, StatusBar& status_bar, Preferences& preferences); ~EditCommands(); protected: void on_document_removed(SessionView& view); void on_document_changed(SessionView* view); static void on_can_undo_changed_static(InfAdoptedAlgorithm* algorithm, InfAdoptedUser* user, gboolean can_undo, gpointer user_data) { static_cast(user_data)->on_can_undo_changed( user, can_undo); } static void on_can_redo_changed_static(InfAdoptedAlgorithm* algorithm, InfAdoptedUser* user, gboolean can_redo, gpointer user_data) { static_cast(user_data)->on_can_redo_changed( user, can_redo); } static void on_sync_complete_static(InfSession* session, InfXmlConnection* connection, gpointer user_data) { static_cast(user_data)->on_sync_complete(); } static void on_mark_set_static(GtkTextBuffer* buffer, GtkTextIter* iter, GtkTextMark* mark, gpointer user_data) { static_cast(user_data)->on_mark_set(); } static void on_changed_static(GtkTextBuffer* buffer, gpointer user_data) { static_cast(user_data)->on_changed(); } void on_sync_complete(); void on_active_user_changed(InfUser* active_user); void on_mark_set(); void on_changed(); void on_can_undo_changed(InfAdoptedUser* user, bool can_undo); void on_can_redo_changed(InfAdoptedUser* user, bool can_redo); void on_find_text_changed(); void on_undo(); void on_redo(); void on_cut(); void on_copy(); void on_paste(); void on_find(); void on_find_next(); void on_find_prev(); void on_find_replace(); void on_goto_line(); void on_preferences(); Gtk::Window& m_parent; Header& m_header; Folder& m_folder; StatusBar& m_status_bar; Preferences& m_preferences; std::auto_ptr m_find_dialog; std::auto_ptr m_goto_dialog; std::auto_ptr m_preferences_dialog; TextSessionView* m_current_view; // Only valid when m_current_document is nonzero: sigc::connection m_active_user_changed_connection; gulong m_can_undo_changed_handler; gulong m_can_redo_changed_handler; gulong m_synchronization_complete_handler; gulong m_mark_set_handler; gulong m_changed_handler; private: void ensure_find_dialog(); }; } #endif // _GOBBY_EDIT_COMMANDS_HPP_ gobby-0.4.94/code/commands/autosave-commands.cpp0000644000175000017500000002161411531722663016512 00000000000000/* Gobby - GTK-based collaborative text editor * Copyright (C) 2008-2011 Armin Burgmeier * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "commands/autosave-commands.hpp" #include "operations/operation-save.hpp" #include "core/sessionuserview.hpp" #include class Gobby::AutosaveCommands::Info { public: Info(AutosaveCommands& commands, TextSessionView& view): m_commands(commands), m_view(view), m_save_op(NULL) { GtkSourceBuffer* buffer = m_view.get_text_buffer(); m_modified_changed_handler = g_signal_connect_after( G_OBJECT(buffer), "modified-changed", G_CALLBACK(on_modified_changed_static), this); // We can't get this correct, so we assume the document was // synchronized to disk at the current time. If it has been // modified, we schedule a first autosave. m_sync_time = std::time(NULL); Operations& operations = m_commands.m_operations; OperationSave* save_op = operations.get_save_operation_for_document(view); if(save_op != NULL) begin_save_operation(save_op); else if(gtk_text_buffer_get_modified(GTK_TEXT_BUFFER(buffer))) schedule(); } ~Info() { GtkSourceBuffer* buffer = m_view.get_text_buffer(); g_signal_handler_disconnect(G_OBJECT(buffer), m_modified_changed_handler); m_timeout_handler.disconnect(); } // Called by AutosaveCommands when the timeout interval has changed. // Just reschedule the timeout. void reschedule() { if(m_timeout_handler.connected()) { m_timeout_handler.disconnect(); schedule(); } } // Called by AutosaveCommands void begin_save_operation(OperationSave* save_op) { g_assert(m_save_op == NULL); // The document is already being saved, so we don't // need to autosave anymore. Reschedule autosave when save // operation finished. if(m_timeout_handler.connected()) m_timeout_handler.disconnect(); m_save_op = save_op; m_save_op->signal_finished().connect( sigc::mem_fun( *this, &Info::on_save_operation_finished)); } protected: void on_modified_changed() { if(m_save_op == NULL) { GtkTextBuffer* buffer = GTK_TEXT_BUFFER(m_view.get_text_buffer()); if(!gtk_text_buffer_get_modified(buffer)) m_timeout_handler.disconnect(); else { // Until now the document on disk is in sync // with the in-memory buffer. Now the document // has changed, so schedule an autosave. m_sync_time = std::time(NULL); schedule(); } } } void schedule() { g_assert(!m_timeout_handler.connected()); g_assert(m_save_op == NULL); // Don't schedule a timeout in case the document has no entry // in the document info storage. This means we don't have an // uri yet where to save the document. However, we // automatically retry when the document is assigned an URI, // since the modification flag will change with this anyway. const std::string& key = m_view.get_info_storage_key(); const DocumentInfoStorage::Info* info = m_commands.m_info_storage.get_info(key); if(!info || info->uri.empty()) return; guint elapsed_seconds = std::time(NULL) - m_sync_time; guint autosave_interval = 60 * m_commands.m_preferences.editor.autosave_interval; if(elapsed_seconds > autosave_interval) { on_timeout(); } else { m_timeout_handler = Glib::signal_timeout().connect_seconds( sigc::mem_fun( *this, &Info::on_timeout), autosave_interval - elapsed_seconds); } } void on_save_operation_finished(bool success) { GtkTextBuffer* buffer = GTK_TEXT_BUFFER(m_view.get_text_buffer()); if(success) m_sync_time = m_save_op->get_start_time(); m_save_op = NULL; // Schedule the next save operation in case the buffer has // been modified since the save operation was started. if(gtk_text_buffer_get_modified(buffer)) schedule(); } bool on_timeout() { const std::string& key = m_view.get_info_storage_key(); const DocumentInfoStorage::Info* info = m_commands.m_info_storage.get_info(key); // Might have been removed from info in the meanwhile, so // don't assert here. if(info != NULL) { m_commands.m_operations.save_document( m_view, m_commands.m_folder, info->uri, info->encoding, info->eol_style); g_assert(m_save_op != NULL); // Set sync time to operation's start time even though // we don't know yet whether the operation will fail, // because otherwise we would try to save the // document the whole time. This way, we simply retry // when the timeout triggers again. m_sync_time = m_save_op->get_start_time(); } return false; } private: static void on_modified_changed_static(GtkTextBuffer* buffer, gpointer user_data) { static_cast(user_data)->on_modified_changed(); } AutosaveCommands& m_commands; TextSessionView& m_view; gulong m_modified_changed_handler; sigc::connection m_timeout_handler; OperationSave* m_save_op; std::time_t m_sync_time; }; Gobby::AutosaveCommands::AutosaveCommands(Folder& folder, Operations& operations, const DocumentInfoStorage& storage, const Preferences& preferences): m_folder(folder), m_operations(operations), m_info_storage(storage), m_preferences(preferences) { m_folder.signal_document_added().connect( sigc::mem_fun(*this, &AutosaveCommands::on_document_added)); m_folder.signal_document_removed().connect( sigc::mem_fun(*this, &AutosaveCommands::on_document_removed)); m_operations.signal_begin_save_operation().connect( sigc::mem_fun( *this, &AutosaveCommands::on_begin_save_operation)); m_preferences.editor.autosave_enabled.signal_changed().connect( sigc::mem_fun( *this, &AutosaveCommands::on_autosave_enabled_changed)); m_preferences.editor.autosave_interval.signal_changed().connect( sigc::mem_fun( *this, &AutosaveCommands::on_autosave_interval_changed)); // Create autosave infos for initial documents on_autosave_enabled_changed(); } Gobby::AutosaveCommands::~AutosaveCommands() { for(InfoMap::iterator iter = m_info_map.begin(); iter != m_info_map.end(); ++ iter) { delete iter->second; } } void Gobby::AutosaveCommands::on_document_added(SessionView& view) { if(m_preferences.editor.autosave_enabled) { // We can only save text views: TextSessionView* text_view = dynamic_cast(&view); if(text_view) { g_assert(m_info_map.find(text_view) == m_info_map.end()); m_info_map[text_view] = new Info(*this, *text_view); } } } void Gobby::AutosaveCommands::on_document_removed(SessionView& view) { if(m_preferences.editor.autosave_enabled) { TextSessionView* text_view = dynamic_cast(&view); if(text_view) { InfoMap::iterator iter = m_info_map.find(text_view); g_assert(iter != m_info_map.end()); delete iter->second; m_info_map.erase(iter); } } } void Gobby::AutosaveCommands::on_begin_save_operation( OperationSave* operation) { TextSessionView* view = operation->get_view(); // Save operation just started, document must be present g_assert(view != NULL); if(m_preferences.editor.autosave_enabled) { InfoMap::iterator iter = m_info_map.find(view); g_assert(iter != m_info_map.end()); iter->second->begin_save_operation(operation); } } void Gobby::AutosaveCommands::on_autosave_enabled_changed() { if(m_preferences.editor.autosave_enabled) { for(unsigned int i = 0; i < static_cast(m_folder.get_n_pages()); ++i) { // TODO: Add convenience API to folder, so that we // don't need to know here that it actually contains // SessionUserViews. SessionUserView* userview = static_cast( m_folder.get_nth_page(i)); SessionView& view = userview->get_session_view(); TextSessionView* text_view = dynamic_cast(&view); if(text_view) { m_info_map[text_view] = new Info(*this, *text_view); } } } else { for(InfoMap::iterator iter = m_info_map.begin(); iter != m_info_map.end(); ++ iter) { delete iter->second; } m_info_map.clear(); } } void Gobby::AutosaveCommands::on_autosave_interval_changed() { // Propagate to infos for(InfoMap::iterator iter = m_info_map.begin(); iter != m_info_map.end(); ++ iter) { return iter->second->reschedule(); } } gobby-0.4.94/code/commands/browser-context-commands.hpp0000644000175000017500000000536711531722663020044 00000000000000/* Gobby - GTK-based collaborative text editor * Copyright (C) 2008-2011 Armin Burgmeier * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GOBBY_BROWSER_CONTEXT_COMMANDS_HPP_ #define _GOBBY_BROWSER_CONTEXT_COMMANDS_HPP_ #include "operations/operations.hpp" #include "dialogs/entry-dialog.hpp" #include "core/nodewatch.hpp" #include "core/browser.hpp" #include "core/filechooser.hpp" #include namespace Gobby { class BrowserContextCommands: public sigc::trackable { public: BrowserContextCommands(Gtk::Window& parent, Browser& browser, FileChooser& chooser, Operations& operations, const Preferences& prf); ~BrowserContextCommands(); protected: static void on_populate_popup_static(InfGtkBrowserView* view, GtkMenu* menu, gpointer user_data) { static_cast(user_data)-> on_populate_popup(Glib::wrap(menu)); } void on_node_removed(); void on_menu_deactivate(); void on_populate_popup(Gtk::Menu* menu); void on_popdown(); // Context commands void on_disconnect(InfcBrowser* browser); void on_new(InfcBrowser* browser, InfcBrowserIter iter, bool directory); void on_open(InfcBrowser* browser, InfcBrowserIter iter); void on_delete(InfcBrowser* browser, InfcBrowserIter iter); // on_new handlers void on_new_node_removed(); void on_new_response(int response_id, InfcBrowser* browser, InfcBrowserIter iter, bool directory); // on_open handlers void on_open_node_removed(); void on_open_response(int response_id, InfcBrowser* browser, InfcBrowserIter iter); Gtk::Window& m_parent; Browser& m_browser; FileChooser& m_file_chooser; Operations& m_operations; const Preferences& m_preferences; // Browser item for which Gtk::Menu* m_popup_menu; std::auto_ptr m_watch; std::auto_ptr m_entry_dialog; std::auto_ptr m_file_dialog; gulong m_populate_popup_handler; }; } #endif // _GOBBY_BROWSER_CONTEXT_COMMANDS_HPP_ gobby-0.4.94/code/commands/file-commands.cpp0000644000175000017500000002074711531722663015610 00000000000000/* Gobby - GTK-based collaborative text editor * Copyright (C) 2008 Armin Burgmeier * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "commands/file-commands.hpp" #include "commands/file-tasks/task-new.hpp" #include "commands/file-tasks/task-open-file.hpp" #include "commands/file-tasks/task-open-location.hpp" #include "commands/file-tasks/task-save.hpp" #include "commands/file-tasks/task-save-all.hpp" #include "commands/file-tasks/task-export-html.hpp" #include Gobby::FileCommands::Task::Task(FileCommands& file_commands): m_file_commands(file_commands) { } Gobby::FileCommands::Task::~Task() { } void Gobby::FileCommands::Task::finish() { // Note this could delete this: m_signal_finished.emit(); } Gtk::Window& Gobby::FileCommands::Task::get_parent() { return m_file_commands.m_parent; } Gobby::Folder& Gobby::FileCommands::Task::get_folder() { return m_file_commands.m_folder; } Gobby::StatusBar& Gobby::FileCommands::Task::get_status_bar() { return m_file_commands.m_status_bar; } Gobby::FileChooser& Gobby::FileCommands::Task::get_file_chooser() { return m_file_commands.m_file_chooser; } Gobby::Operations& Gobby::FileCommands::Task::get_operations() { return m_file_commands.m_operations; } const Gobby::DocumentInfoStorage& Gobby::FileCommands::Task::get_document_info_storage() { return m_file_commands.m_document_info_storage; } Gobby::Preferences& Gobby::FileCommands::Task::get_preferences() { return m_file_commands.m_preferences; } Gobby::DocumentLocationDialog& Gobby::FileCommands::Task::get_document_location_dialog() { if(m_file_commands.m_location_dialog.get() == NULL) { m_file_commands.m_location_dialog.reset( new DocumentLocationDialog( m_file_commands.m_parent, INF_GTK_BROWSER_MODEL( m_file_commands.m_browser. get_store()))); } return *m_file_commands.m_location_dialog; } Gobby::FileCommands::FileCommands(Gtk::Window& parent, Header& header, Browser& browser, Folder& folder, StatusBar& status_bar, FileChooser& file_chooser, Operations& operations, const DocumentInfoStorage& info_storage, Preferences& preferences): m_parent(parent), m_header(header), m_browser(browser), m_folder(folder), m_status_bar(status_bar), m_file_chooser(file_chooser), m_operations(operations), m_document_info_storage(info_storage), m_preferences(preferences) { header.action_file_new->signal_activate().connect( sigc::mem_fun(*this, &FileCommands::on_new)); header.action_file_open->signal_activate().connect( sigc::mem_fun(*this, &FileCommands::on_open)); header.action_file_open_location->signal_activate().connect( sigc::mem_fun(*this, &FileCommands::on_open_location)); header.action_file_save->signal_activate().connect( sigc::mem_fun(*this, &FileCommands::on_save)); header.action_file_save_as->signal_activate().connect( sigc::mem_fun(*this, &FileCommands::on_save_as)); header.action_file_save_all->signal_activate().connect( sigc::mem_fun(*this, &FileCommands::on_save_all)); header.action_file_export_html->signal_activate().connect( sigc::mem_fun(*this, &FileCommands::on_export_html)); header.action_file_connect->signal_activate().connect( sigc::mem_fun(*this, &FileCommands::on_connect)); header.action_file_close->signal_activate().connect( sigc::mem_fun(*this, &FileCommands::on_close)); header.action_file_quit->signal_activate().connect( sigc::mem_fun(*this, &FileCommands::on_quit)); folder.signal_document_changed().connect( sigc::mem_fun(*this, &FileCommands::on_document_changed)); InfGtkBrowserModelSort* store = browser.get_store(); m_row_inserted_handler = g_signal_connect(G_OBJECT(store), "row-inserted", G_CALLBACK(on_row_inserted_static), this); m_row_deleted_handler = g_signal_connect(G_OBJECT(store), "row-deleted", G_CALLBACK(on_row_deleted_static), this); update_sensitivity(); } Gobby::FileCommands::~FileCommands() { InfGtkBrowserModelSort* store = m_browser.get_store(); g_signal_handler_disconnect(G_OBJECT(store), m_row_inserted_handler); g_signal_handler_disconnect(G_OBJECT(store), m_row_deleted_handler); } void Gobby::FileCommands::set_task(Task* task) { task->signal_finished().connect(sigc::mem_fun( *this, &FileCommands::on_task_finished)); m_task.reset(task); task->run(); } void Gobby::FileCommands::on_document_changed(SessionView* view) { update_sensitivity(); } void Gobby::FileCommands::on_row_inserted() { update_sensitivity(); } void Gobby::FileCommands::on_row_deleted() { update_sensitivity(); } void Gobby::FileCommands::on_task_finished() { m_task.reset(NULL); } void Gobby::FileCommands::on_new() { set_task(new TaskNew(*this)); } void Gobby::FileCommands::on_open() { set_task(new TaskOpenFile(*this)); } void Gobby::FileCommands::on_open_location() { set_task(new TaskOpenLocation(*this)); } void Gobby::FileCommands::on_save() { SessionView* view = m_folder.get_current_document(); TextSessionView* text_view = dynamic_cast(view); g_assert(text_view != NULL); const DocumentInfoStorage::Info* info = m_document_info_storage.get_info( text_view->get_info_storage_key()); if(info != NULL && !info->uri.empty()) { m_operations.save_document( *text_view, m_folder, info->uri, info->encoding, info->eol_style); } else { on_save_as(); } } void Gobby::FileCommands::on_save_as() { SessionView* view = m_folder.get_current_document(); TextSessionView* text_view = dynamic_cast(view); g_assert(text_view != NULL); set_task(new TaskSave(*this, *text_view)); } void Gobby::FileCommands::on_save_all() { set_task(new TaskSaveAll(*this)); } void Gobby::FileCommands::on_export_html() { SessionView* view = m_folder.get_current_document(); TextSessionView* text_view = dynamic_cast(view); g_assert(text_view != NULL); set_task(new TaskExportHtml(*this, *text_view)); } void Gobby::FileCommands::on_connect() { if(m_connection_dialog.get() == NULL) { m_connection_dialog.reset(new ConnectionDialog(m_parent)); m_connection_dialog->signal_response().connect( sigc::mem_fun(*this, &FileCommands::on_connect_response)); m_connection_dialog->add_button(Gtk::Stock::CANCEL, Gtk::RESPONSE_CANCEL); m_connection_dialog->add_button(Gtk::Stock::CONNECT, Gtk::RESPONSE_ACCEPT); } m_connection_dialog->present(); } void Gobby::FileCommands::on_close() { SessionView* view = m_folder.get_current_document(); g_assert(view != NULL); m_folder.remove_document(*view); } void Gobby::FileCommands::on_quit() { m_parent.hide(); } void Gobby::FileCommands::on_connect_response(int response_id) { if(response_id == Gtk::RESPONSE_ACCEPT) { const Glib::ustring& host = m_connection_dialog->get_host_name(); if(!host.empty()) m_browser.connect_to_host(host); } m_connection_dialog->hide(); } void Gobby::FileCommands::update_sensitivity() { GtkTreeIter dummy_iter; bool create_sensitivity = gtk_tree_model_get_iter_first( GTK_TREE_MODEL(m_browser.get_store()), &dummy_iter); SessionView* view = m_folder.get_current_document(); gboolean view_sensitivity = view != NULL; // We can only save text documents currently gboolean text_sensitivity = dynamic_cast(view) != NULL; m_header.action_file_new->set_sensitive(create_sensitivity); m_header.action_file_open->set_sensitive(create_sensitivity); m_header.action_file_open_location->set_sensitive(create_sensitivity); m_header.action_file_save->set_sensitive(text_sensitivity); m_header.action_file_save_as->set_sensitive(text_sensitivity); m_header.action_file_save_all->set_sensitive(text_sensitivity); m_header.action_file_export_html->set_sensitive(text_sensitivity); m_header.action_file_close->set_sensitive(view_sensitivity); } gobby-0.4.94/code/commands/view-commands.hpp0000644000175000017500000000602611531722663015642 00000000000000/* Gobby - GTK-based collaborative text editor * Copyright (C) 2008-2011 Armin Burgmeier * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GOBBY_VIEW_COMMANDS_HPP_ #define _GOBBY_VIEW_COMMANDS_HPP_ #include "core/header.hpp" #include "core/folder.hpp" #include "core/closableframe.hpp" #include namespace Gobby { class ViewCommands: public sigc::trackable { public: ViewCommands(Header& header, Folder& text_folder, ClosableFrame& chat_frame, Folder& chat_folder, Preferences& preferences); ~ViewCommands(); protected: void on_text_document_changed(SessionView* view); void on_chat_document_added(SessionView& view); void on_chat_document_removed(SessionView& view); void on_chat_document_changed(SessionView* view); void on_chat_show(); void on_chat_hide(); void on_hide_user_colors(); void on_menu_toolbar_toggled(); void on_menu_statusbar_toggled(); void on_menu_browser_toggled(); void on_menu_chat_toggled(); void on_menu_document_userlist_toggled(); void on_menu_chat_userlist_toggled(); void on_pref_toolbar_changed(); void on_pref_statusbar_changed(); void on_pref_browser_changed(); void on_pref_chat_changed(); void on_pref_document_userlist_changed(); void on_pref_chat_userlist_changed(); void on_menu_language_changed( const Glib::RefPtr& action); void on_doc_language_changed(GtkSourceLanguage* language); Header& m_header; Folder& m_text_folder; ClosableFrame& m_chat_frame; Folder& m_chat_folder; Preferences& m_preferences; TextSessionView* m_current_view; sigc::connection m_menu_language_changed_connection; sigc::connection m_document_language_changed_connection; sigc::connection m_menu_view_toolbar_connection; sigc::connection m_menu_view_statusbar_connection; sigc::connection m_menu_view_browser_connection; sigc::connection m_menu_view_chat_connection; sigc::connection m_menu_view_document_userlist_connection; sigc::connection m_menu_view_chat_userlist_connection; sigc::connection m_pref_view_statusbar_connection; sigc::connection m_pref_view_toolbar_connection; sigc::connection m_pref_view_browser_connection; sigc::connection m_pref_view_chat_connection; sigc::connection m_pref_view_document_userlist_connection; sigc::connection m_pref_view_chat_userlist_connection; private: void ensure_find_dialog(); }; } #endif // _GOBBY_VIEW_COMMANDS_HPP_ gobby-0.4.94/code/commands/autosave-commands.hpp0000644000175000017500000000343011531722663016513 00000000000000/* Gobby - GTK-based collaborative text editor * Copyright (C) 2008-2011 Armin Burgmeier * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GOBBY_AUTOSAVE_COMMANDS_HPP_ #define _GOBBY_AUTOSAVE_COMMANDS_HPP_ #include #include "operations/operations.hpp" #include "core/folder.hpp" #include "core/documentinfostorage.hpp" #include "core/preferences.hpp" namespace Gobby { class AutosaveCommands: public sigc::trackable { public: AutosaveCommands(Folder& folder, Operations& operations, const DocumentInfoStorage& storage, const Preferences& preferences); ~AutosaveCommands(); protected: void on_document_added(SessionView& view); void on_document_removed(SessionView& view); void on_begin_save_operation(OperationSave* operation); void on_autosave_enabled_changed(); void on_autosave_interval_changed(); Folder& m_folder; Operations& m_operations; const DocumentInfoStorage& m_info_storage; const Preferences& m_preferences; class Info; typedef std::map InfoMap; InfoMap m_info_map; }; } #endif // _GOBBY_AUTOSAVE_COMMANDS_HPP_ gobby-0.4.94/code/commands/subscription-commands.cpp0000644000175000017500000002052711543642522017407 00000000000000/* Gobby - GTK-based collaborative text editor * Copyright (C) 2008-2011 Armin Burgmeier * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "commands/subscription-commands.hpp" #include "util/i18n.hpp" class Gobby::SubscriptionCommands::BrowserInfo { public: BrowserInfo(SubscriptionCommands& commands, InfcBrowser* browser): m_browser(browser) { g_object_ref(m_browser); m_subscribe_session_handler = g_signal_connect( G_OBJECT(browser), "subscribe-session", G_CALLBACK(&on_subscribe_session_static), &commands); } ~BrowserInfo() { g_signal_handler_disconnect(G_OBJECT(m_browser), m_subscribe_session_handler); g_object_unref(m_browser); } private: InfcBrowser* m_browser; gulong m_subscribe_session_handler; }; class Gobby::SubscriptionCommands::SessionInfo { public: SessionInfo(SubscriptionCommands& commands, Folder& folder, InfcSessionProxy* proxy): m_folder(folder), m_proxy(proxy) { g_object_ref(proxy); InfSession* session = infc_session_proxy_get_session(proxy); m_close_handler = g_signal_connect( G_OBJECT(session), "close", G_CALLBACK(on_close_static), &commands); // TODO: Rather use notify::subscription-group on session? // Then we wouldn't even need proxy here. TextTabLabel does // the same. m_notify_connection_handler = g_signal_connect( G_OBJECT(proxy), "notify::connection", G_CALLBACK(on_notify_connection_static), &commands); } ~SessionInfo() { InfSession* session = infc_session_proxy_get_session(m_proxy); g_signal_handler_disconnect(G_OBJECT(session), m_close_handler); g_signal_handler_disconnect(G_OBJECT(m_proxy), m_notify_connection_handler); g_object_unref(m_proxy); } Folder& get_folder() { return m_folder; } InfcSessionProxy* get_proxy() { return m_proxy; } private: static void on_close_static(InfSession* session, gpointer user_data) { static_cast(user_data)-> on_close(session); } static void on_notify_connection_static(InfcSessionProxy* proxy, GParamSpec* pspec, gpointer user_data) { static_cast(user_data)-> on_notify_connection(proxy); } Folder& m_folder; InfcSessionProxy* m_proxy; gulong m_notify_connection_handler; gulong m_close_handler; }; Gobby::SubscriptionCommands::SubscriptionCommands(Browser& browser, Folder& text_folder, Folder& chat_folder, DocumentInfoStorage& strg): m_browser(browser), m_text_folder(text_folder), m_chat_folder(chat_folder), m_info_storage(strg) { InfGtkBrowserModel* model = INF_GTK_BROWSER_MODEL(browser.get_store()); m_set_browser_handler = g_signal_connect(G_OBJECT(model), "set-browser", G_CALLBACK(&on_set_browser_static), this); } Gobby::SubscriptionCommands::~SubscriptionCommands() { for(BrowserMap::iterator iter = m_browser_map.begin(); iter != m_browser_map.end(); ++ iter) { delete iter->second; } for(SessionMap::iterator iter = m_session_map.begin(); iter != m_session_map.end(); ++iter) { delete iter->second; } g_signal_handler_disconnect( INF_GTK_BROWSER_MODEL(m_browser.get_store()), m_set_browser_handler); } void Gobby::SubscriptionCommands::on_set_browser(InfGtkBrowserModel* model, GtkTreeIter* iter, InfcBrowser* browser) { InfcBrowser* old_browser; gtk_tree_model_get( GTK_TREE_MODEL(model), iter, INF_GTK_BROWSER_MODEL_COL_BROWSER, &old_browser, -1); if(old_browser != NULL) { BrowserMap::iterator iter = m_browser_map.find(old_browser); g_assert(iter != m_browser_map.end()); delete iter->second; m_browser_map.erase(iter); g_object_unref(old_browser); } if(browser != NULL) { g_assert(m_browser_map.find(browser) == m_browser_map.end()); m_browser_map[browser] = new BrowserInfo(*this, browser); } } void Gobby::SubscriptionCommands::on_subscribe_session(InfcBrowser* browser, InfcBrowserIter* iter, InfcSessionProxy* prxy) { gchar* hostname; g_object_get(G_OBJECT(infc_browser_get_connection(browser)), "remote-hostname", &hostname, NULL); InfSession* session = infc_session_proxy_get_session(prxy); TextSessionView* text_view = NULL;; Folder* folder; SessionView* view; if(iter != NULL) { gchar* path = infc_browser_iter_get_path(browser, iter); text_view = &m_text_folder.add_text_session( INF_TEXT_SESSION(session), infc_browser_iter_get_name(browser, iter), path, hostname, m_info_storage.get_key(browser, iter)); folder = &m_text_folder; view = text_view; g_free(path); } else { view = &m_chat_folder.add_chat_session( INF_CHAT_SESSION(session), hostname, "", hostname); folder = &m_chat_folder; } g_free(hostname); m_signal_subscribe_session.emit(prxy, *folder, *view); // For now we always highlight the newly created session... // TODO: If the user issued other browserview events in the meanwhile, // then don't select the item, and if the user did issue other folder // events, then don't switch to the document in the folder. folder->switch_to_document(*view); if(text_view) gtk_widget_grab_focus(GTK_WIDGET(text_view->get_text_view())); if(iter) m_browser.set_selected(browser, iter); g_assert(m_session_map.find(session) == m_session_map.end()); m_session_map[session] = new SessionInfo(*this, *folder, prxy); } void Gobby::SubscriptionCommands::on_close(InfSession* session) { SessionMap::iterator iter = m_session_map.find(session); g_assert(iter != m_session_map.end()); Folder& folder = iter->second->get_folder(); SessionView* view = folder.lookup_document(session); g_assert(view != NULL); InfcSessionProxy* proxy = iter->second->get_proxy(); g_object_ref(proxy); delete iter->second; m_session_map.erase(iter); m_signal_unsubscribe_session.emit(proxy, folder, *view); g_object_unref(proxy); } void Gobby::SubscriptionCommands::on_notify_connection(InfcSessionProxy* prxy) { InfSession* session = infc_session_proxy_get_session(prxy); SessionMap::iterator iter = m_session_map.find(session); g_assert(iter != m_session_map.end()); if(infc_session_proxy_get_connection(prxy) == NULL) { InfSession* session = infc_session_proxy_get_session(prxy); Folder& folder = iter->second->get_folder(); SessionView* view = folder.lookup_document(session); g_assert(view != NULL); TextSessionView* text_view = dynamic_cast(view); ChatSessionView* chat_view = dynamic_cast(view); if(text_view) { /* If the session is in SYNCHRONIZING state then the * session is closed due to a synchronization error. * In that case synchronization-command.cpp will set * a more meaningful error message. */ if(inf_session_get_status(session) == INF_SESSION_RUNNING) { view->set_info(_( "The connection to the publisher of " "this document has been lost. " "Further changes to the document " "could not be synchronized to others " "anymore, therefore the document " "cannot be edited anymore.\n\n" "Please note also that it is " "possible that not all of your " "latest changes have reached the " "publisher before the connection was " "lost."), true); } text_view->set_active_user(NULL); } else if(chat_view) { chat_view->set_active_user(NULL); } m_signal_unsubscribe_session.emit(prxy, folder, *view); } } gobby-0.4.94/code/commands/Makefile.am0000644000175000017500000000164111531722663014412 00000000000000SUBDIRS = file-tasks noinst_LIBRARIES = libgobby-commands.a libgobby_commands_a_SOURCES = \ auth-commands.cpp \ autosave-commands.cpp \ browser-commands.cpp \ browser-context-commands.cpp \ edit-commands.cpp \ file-commands.cpp \ folder-commands.cpp \ help-commands.cpp \ subscription-commands.cpp \ synchronization-commands.cpp \ user-join-commands.cpp \ view-commands.cpp noinst_HEADERS = \ auth-commands.hpp \ autosave-commands.hpp \ browser-commands.hpp \ browser-context-commands.hpp \ edit-commands.hpp \ file-commands.hpp \ folder-commands.hpp \ help-commands.hpp \ subscription-commands.hpp \ synchronization-commands.hpp \ user-join-commands.hpp \ view-commands.hpp appicondir = $(datadir)/pixmaps pixmapdir = $(datadir)/pixmaps/gobby-0.5 AM_CPPFLAGS = $(gobby_CFLAGS) $(unique_CFLAGS) $(infinote_CFLAGS) \ -I$(top_srcdir)/code gobby-0.4.94/code/commands/folder-commands.cpp0000644000175000017500000002036611531722663016141 00000000000000/* Gobby - GTK-based collaborative text editor * Copyright (C) 2008-2011 Armin Burgmeier * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "commands/folder-commands.hpp" #include "core/sessionuserview.hpp" #include // TODO: Make this work with non-text documents also... maybe split & // share a base class... or better: Move active user stuff to SessionView // base. All SessionView's should be modifyable by the user, and if there are // document types gobby only supports in a read-only kind of way the active // user can just be NULL all the time. class Gobby::FolderCommands::DocInfo: public sigc::trackable { public: static const unsigned int ACTIVATION_DELAY = 1000; DocInfo(SessionView& view): m_view(view), m_active_user(NULL), m_active(false) { m_view.signal_active_user_changed().connect( sigc::mem_fun( *this, &DocInfo::on_active_user_changed)); on_active_user_changed(view.get_active_user()); } virtual ~DocInfo() { if(m_active_user != NULL) { g_signal_handler_disconnect(G_OBJECT(m_active_user), m_notify_status_handle); } } virtual void deactivate() { m_active = false; if(m_active_user) deactivate_user(); } virtual void activate() { m_active = true; if(m_active_user) activate_user(); } virtual void flush() {} protected: void activate_user() { g_assert(!m_timeout_connection.connected()); g_assert(m_active_user != NULL); g_assert(inf_user_get_status(m_active_user) == INF_USER_INACTIVE); m_timeout_connection = Glib::signal_timeout().connect( sigc::mem_fun(*this, &DocInfo::on_activation_timeout), ACTIVATION_DELAY); } void deactivate_user() { g_assert(m_active_user != NULL); switch(inf_user_get_status(m_active_user)) { case INF_USER_INACTIVE: g_assert(m_timeout_connection.connected()); m_timeout_connection.disconnect(); break; case INF_USER_ACTIVE: /* Flush pending requests, so user is not set active * again later. TODO: Maybe this should become a * virtual function in InfSession actually. */ flush(); inf_session_set_user_status( INF_SESSION(m_view.get_session()), m_active_user, INF_USER_INACTIVE); break; case INF_USER_UNAVAILABLE: // It can happen that the user is already unavailable // here, for example when we have lost the connection // to the server, so this is not an error. // If the user was active before we lost the // connection then cancel the activation timeout if(m_timeout_connection.connected()) m_timeout_connection.disconnect(); // TODO: Shouldn't local users stay available on // connection loss? We probably need to fix this // in infinote. break; } } static void on_user_notify_status_static(InfUser* user, GParamSpec* pspec, gpointer user_data) { static_cast(user_data)->on_user_notify_status(user); } void on_active_user_changed(InfUser* user) { if(m_active_user != NULL) { if(m_active) deactivate_user(); g_signal_handler_disconnect(G_OBJECT(m_active_user), m_notify_status_handle); } m_active_user = user; if(user != NULL) { InfUserStatus user_status = inf_user_get_status(INF_USER(user)); g_assert(user_status != INF_USER_UNAVAILABLE); m_notify_status_handle = g_signal_connect( G_OBJECT(user), "notify::status", G_CALLBACK(&on_user_notify_status_static), this ); if( (user_status == INF_USER_ACTIVE && !m_active)) { deactivate_user(); } else if(user_status == INF_USER_INACTIVE && m_active) { activate_user(); } } } void on_user_notify_status(InfUser* user) { // User cannot be activated when we are not active g_assert(m_active || inf_user_get_status(user) != INF_USER_ACTIVE); if(inf_user_get_status(user) == INF_USER_ACTIVE && m_active) { // The user did something (therefore becoming active), // so we do not need to explictely activate the user. g_assert(m_timeout_connection.connected()); m_timeout_connection.disconnect(); } } bool on_activation_timeout() { // The user activated this document, but did not something for // a while, so explicitely set the user active g_assert(m_active); g_assert(m_active_user != NULL); g_assert(inf_user_get_status(m_active_user) == INF_USER_INACTIVE); inf_session_set_user_status( INF_SESSION(m_view.get_session()), m_active_user, INF_USER_ACTIVE); return false; } SessionView& m_view; InfUser* m_active_user; bool m_active; sigc::connection m_timeout_connection; gulong m_notify_status_handle; }; class Gobby::FolderCommands::TextDocInfo: public Gobby::FolderCommands::DocInfo { public: TextDocInfo(TextSessionView& view): DocInfo(view) {} virtual void activate() { DocInfo::activate(); InfTextGtkBuffer* buffer = INF_TEXT_GTK_BUFFER( inf_session_get_buffer(m_view.get_session())); inf_text_gtk_buffer_set_wake_on_cursor_movement( buffer, TRUE); } virtual void deactivate() { DocInfo::deactivate(); InfTextGtkBuffer* buffer = INF_TEXT_GTK_BUFFER( inf_session_get_buffer(m_view.get_session())); inf_text_gtk_buffer_set_wake_on_cursor_movement( buffer, FALSE); } virtual void flush() { DocInfo::flush(); g_assert(m_active_user != NULL); inf_text_session_flush_requests_for_user( INF_TEXT_SESSION(m_view.get_session()), INF_TEXT_USER(m_active_user)); } }; Gobby::FolderCommands::FolderCommands(Folder& folder): m_folder(folder), m_current_view(NULL) { m_folder.signal_document_added().connect( sigc::mem_fun(*this, &FolderCommands::on_document_added)); m_folder.signal_document_removed().connect( sigc::mem_fun(*this, &FolderCommands::on_document_removed)); m_folder.signal_document_changed().connect( sigc::mem_fun(*this, &FolderCommands::on_document_changed)); const unsigned int n_pages = static_cast(m_folder.get_n_pages()); for(unsigned int i = 0; i < n_pages; ++i) { // TODO: Convenience API in Folder to retrieve SessionView, // so that we don't need to know about SessionUserView here. SessionUserView* user_view = static_cast( m_folder.get_nth_page(i)); SessionView& view = user_view->get_session_view(); on_document_added(view); } on_document_changed(m_folder.get_current_document()); } Gobby::FolderCommands::~FolderCommands() { for(DocumentMap::iterator iter = m_doc_map.begin(); iter != m_doc_map.end(); ++ iter) { delete iter->second; } } void Gobby::FolderCommands::on_document_added(SessionView& view) { DocInfo* info; { TextSessionView* text_view = dynamic_cast(&view); if(text_view) info = new TextDocInfo(*text_view); else info = new DocInfo(view); } m_doc_map[&view] = info; } void Gobby::FolderCommands::on_document_removed(SessionView& view) { DocumentMap::iterator iter = m_doc_map.find(&view); g_assert(iter != m_doc_map.end()); delete iter->second; m_doc_map.erase(iter); // TODO: Isn't this called by Folder already? Would need to // call changed first and then removed of course. We could // then assert here. if(&view == m_current_view) m_current_view = NULL; } void Gobby::FolderCommands::on_document_changed(SessionView* view) { if(m_current_view != NULL) { DocumentMap::iterator iter = m_doc_map.find(m_current_view); g_assert(iter != m_doc_map.end()); iter->second->deactivate(); } m_current_view = view; if(m_current_view != NULL) { DocumentMap::iterator iter = m_doc_map.find(m_current_view); g_assert(iter != m_doc_map.end()); iter->second->activate(); } } gobby-0.4.94/code/commands/synchronization-commands.cpp0000644000175000017500000001745611531722663020135 00000000000000/* Gobby - GTK-based collaborative text editor * Copyright (C) 2008-2011 Armin Burgmeier * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "commands/synchronization-commands.hpp" #include "util/i18n.hpp" namespace { inline const gchar* _(const gchar* msgid) { return Gobby::_(msgid); } void set_progress_text(Gobby::SessionView& view, gdouble percentage) { view.set_info( Glib::ustring::compose( _("Synchronization in progress... %1%%"), static_cast(percentage * 100)), false); } void set_error_text(Gobby::SessionView& view, const Glib::ustring& initial_text) { Glib::ustring type_text; // Document cannot be used if an error happened // during synchronization. type_text = _("This document cannot be used."); const Glib::ustring info_text = _("If you have an idea what could have caused the " "problem, then you may attempt to solve it and " "try again (after having closed this document). " "Otherwise it is most likely a bug in the " "software. In that case, please file a bug report " "at http://gobby.0x539.de/trac/newticket and " "provide as much information as you can, including " "what you did when the problem occurred and how to " "reproduce the problem (if possible) so that we " "can fix the problem in a later version. " "Thank you."); view.set_info( Glib::ustring::compose( _("Synchronization failed: %1"), initial_text) + "\n\n" + type_text + "\n\n" + info_text, true); } } class Gobby::SynchronizationCommands::SyncInfo { public: SyncInfo(SynchronizationCommands& sync_commands, SessionView& view); ~SyncInfo(); SessionView& get_session_view() { return m_view; } private: static void on_synchronization_failed_static(InfSession* session, InfXmlConnection* conn, const GError* error, gpointer user_data) { static_cast(user_data)-> on_synchronization_failed(session, conn, error); } static void on_synchronization_complete_static(InfSession* session, InfXmlConnection* conn, gpointer user_data) { static_cast(user_data)-> on_synchronization_complete(session, conn); } static void on_synchronization_progress_static(InfSession* session, InfXmlConnection* conn, gdouble percentage, gpointer user_data) { static_cast(user_data)-> on_synchronization_progress(conn, percentage); } void on_synchronization_progress(InfXmlConnection* conn, gdouble percentage); SessionView& m_view; gulong m_synchronization_complete_handler; gulong m_synchronization_failed_handler; gulong m_synchronization_progress_handler; }; Gobby::SynchronizationCommands::SyncInfo:: SyncInfo(SynchronizationCommands& commands, SessionView& view): m_view(view) { InfSession* session = m_view.get_session(); m_synchronization_complete_handler = g_signal_connect( G_OBJECT(session), "synchronization-complete", G_CALLBACK(on_synchronization_complete_static), &commands); m_synchronization_failed_handler = g_signal_connect( G_OBJECT(session), "synchronization-failed", G_CALLBACK(on_synchronization_failed_static), &commands); m_synchronization_progress_handler = g_signal_connect( G_OBJECT(session), "synchronization-progress", G_CALLBACK(on_synchronization_progress_static), this); } Gobby::SynchronizationCommands::SyncInfo::~SyncInfo() { InfSession* session = m_view.get_session(); g_signal_handler_disconnect(G_OBJECT(session), m_synchronization_complete_handler); g_signal_handler_disconnect(G_OBJECT(session), m_synchronization_failed_handler); g_signal_handler_disconnect(G_OBJECT(session), m_synchronization_progress_handler); } void Gobby::SynchronizationCommands::SyncInfo:: on_synchronization_progress(InfXmlConnection* conn, gdouble percentage) { set_progress_text(m_view, percentage); } Gobby::SynchronizationCommands:: SynchronizationCommands(SubscriptionCommands& subscription_commands) { subscription_commands.signal_subscribe_session().connect( sigc::mem_fun( *this, &SynchronizationCommands::on_subscribe_session)); subscription_commands.signal_unsubscribe_session().connect( sigc::mem_fun( *this, &SynchronizationCommands::on_unsubscribe_session)); } Gobby::SynchronizationCommands::~SynchronizationCommands() { for(SyncMap::iterator iter = m_sync_map.begin(); iter != m_sync_map.end(); ++iter) { delete iter->second; } } void Gobby::SynchronizationCommands::on_subscribe_session(InfcSessionProxy* prxy, Folder& folder, SessionView& view) { InfSession* session = view.get_session(); if(inf_session_get_status(session) == INF_SESSION_SYNCHRONIZING) { InfXmlConnection* connection; g_object_get(G_OBJECT(session), "sync-connection", &connection, NULL); gdouble percentage = inf_session_get_synchronization_progress( session, connection); g_object_unref(connection); g_assert(m_sync_map.find(session) == m_sync_map.end()); m_sync_map[session] = new SyncInfo(*this, view); set_progress_text(view, percentage); } } void Gobby::SynchronizationCommands::on_unsubscribe_session(InfcSessionProxy* prxy, Folder& folder, SessionView& view) { InfSession* session = view.get_session(); SyncMap::iterator iter = m_sync_map.find(session); if(iter != m_sync_map.end()) { delete iter->second; m_sync_map.erase(iter); } } void Gobby::SynchronizationCommands:: on_synchronization_failed(InfSession* session, InfXmlConnection* c, const GError* error) { SyncMap::iterator iter = m_sync_map.find(session); g_assert(iter != m_sync_map.end()); set_error_text(iter->second->get_session_view(), error->message); // The document will be of no use anyway, so consider it as not // being modified. InfBuffer* buffer = inf_session_get_buffer(session); inf_buffer_set_modified(buffer, FALSE); delete iter->second; m_sync_map.erase(iter); } void Gobby::SynchronizationCommands:: on_synchronization_complete(InfSession* session, InfXmlConnection* c) { SyncMap::iterator iter = m_sync_map.find(session); g_assert(iter != m_sync_map.end()); // TODO: Actually we should always set the modified flag, except the // document is either empty, or known in the document info storage // and the version on disk is the same as the one we got // synchronized. We could store a hash and modification time in the // documentinfo storage for this. InfBuffer* buffer = inf_session_get_buffer(session); inf_buffer_set_modified(buffer, FALSE); delete iter->second; m_sync_map.erase(iter); } gobby-0.4.94/code/commands/browser-commands.cpp0000644000175000017500000002113511531722663016344 00000000000000/* Gobby - GTK-based collaborative text editor * Copyright (C) 2008-2011 Armin Burgmeier * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "commands/browser-commands.hpp" #include "util/i18n.hpp" class Gobby::BrowserCommands::BrowserInfo { public: BrowserInfo(BrowserCommands& commands, InfcBrowser* browser); ~BrowserInfo(); InfcBrowser* get_browser() { return m_browser; } private: static void on_notify_status_static(GObject* object, GParamSpec* pspec, gpointer user_data) { static_cast(user_data)->on_notify_status( INFC_BROWSER(object)); } InfcBrowser* m_browser; gulong m_notify_status_handler; }; class Gobby::BrowserCommands::RequestInfo { public: RequestInfo(BrowserCommands& commands, InfcBrowser* browser, InfcBrowserIter* iter, InfcNodeRequest* request, StatusBar& status_bar); ~RequestInfo(); private: static void on_failed_static(InfcNodeRequest* request, const GError* error, gpointer user_data) { static_cast(user_data)-> on_failed(request, error); } static void on_finished_static(InfcNodeRequest* request, InfcBrowserIter* iter, gpointer user_data) { static_cast(user_data)-> on_finished(request); } InfcNodeRequest* m_request; StatusBar& m_status_bar; StatusBar::MessageHandle m_handle; gulong m_failed_handler; gulong m_finished_handler; }; Gobby::BrowserCommands::BrowserInfo::BrowserInfo(BrowserCommands& cmds, InfcBrowser* browser): m_browser(browser) { m_notify_status_handler = g_signal_connect( m_browser, "notify::status", G_CALLBACK(on_notify_status_static), &cmds); g_object_ref(browser); } Gobby::BrowserCommands::BrowserInfo::~BrowserInfo() { g_signal_handler_disconnect(m_browser, m_notify_status_handler); g_object_unref(m_browser); } Gobby::BrowserCommands::RequestInfo::RequestInfo(BrowserCommands& commands, InfcBrowser* browser, InfcBrowserIter* iter, InfcNodeRequest* request, StatusBar& status_bar): m_request(request), m_status_bar(status_bar) { g_object_ref(request); if(iter) { m_handle = m_status_bar.add_info_message( Glib::ustring::compose( _("Subscribing to %1..."), Glib::ustring( infc_browser_iter_get_name( browser, iter)))); } else { InfXmlConnection* connection = infc_browser_get_connection(browser); gchar* remote_hostname; g_object_get(G_OBJECT(connection), "remote-id", &remote_hostname, NULL); m_handle = m_status_bar.add_info_message( Glib::ustring::compose( _("Subscribing to chat on %1..."), remote_hostname)); g_free(remote_hostname); } m_failed_handler = g_signal_connect(request, "failed", G_CALLBACK(on_failed_static), &commands); m_finished_handler = g_signal_connect(request, "finished", G_CALLBACK(on_finished_static), &commands); } Gobby::BrowserCommands::RequestInfo::~RequestInfo() { m_status_bar.remove_message(m_handle); g_signal_handler_disconnect(m_request, m_failed_handler); g_signal_handler_disconnect(m_request, m_finished_handler); g_object_unref(m_request); } Gobby::BrowserCommands::BrowserCommands(Browser& browser, Folder& folder, StatusBar& status_bar): m_browser(browser), m_folder(folder), m_status_bar(status_bar) { m_browser.signal_activate().connect( sigc::mem_fun(*this, &BrowserCommands::on_activate)); m_set_browser_handler = g_signal_connect( browser.get_store(), "set-browser", G_CALLBACK(on_set_browser_static), this); } Gobby::BrowserCommands::~BrowserCommands() { for(RequestMap::iterator iter = m_request_map.begin(); iter != m_request_map.end(); ++ iter) { delete iter->second; } for(BrowserMap::iterator iter = m_browser_map.begin(); iter != m_browser_map.end(); ++iter) { delete iter->second; } g_signal_handler_disconnect(m_browser.get_store(), m_set_browser_handler); } void Gobby::BrowserCommands::on_set_browser(InfGtkBrowserModel* model, GtkTreeIter* iter, InfcBrowser* browser) { InfcBrowser* old_browser; gtk_tree_model_get( GTK_TREE_MODEL(model), iter, INF_GTK_BROWSER_MODEL_COL_BROWSER, &old_browser, -1); if(old_browser != NULL) { // Find by browser in case old_browser has it's connection // reset. BrowserMap::iterator iter = m_browser_map.find(old_browser); g_assert(iter != m_browser_map.end()); delete iter->second; m_browser_map.erase(iter); g_object_unref(old_browser); } if(browser != NULL) { g_assert(m_browser_map.find(browser) == m_browser_map.end()); m_browser_map[browser] = new BrowserInfo(*this, browser); if(infc_browser_get_status(browser) == INFC_BROWSER_CONNECTED) if(!infc_browser_get_chat_session(browser)) subscribe_chat(browser); } } void Gobby::BrowserCommands::on_notify_status(InfcBrowser* browser) { InfXmlConnection* connection; InfXmlConnectionStatus status; switch(infc_browser_get_status(browser)) { case INFC_BROWSER_DISCONNECTED: // Close connection if browser got disconnected. This for // example happens when the server does not send an initial // welcome message. connection = infc_browser_get_connection(browser); g_object_get(G_OBJECT(connection), "status", &status, NULL); if(status != INF_XML_CONNECTION_CLOSED && status != INF_XML_CONNECTION_CLOSING) { inf_xml_connection_close(connection); } break; case INFC_BROWSER_CONNECTING: break; case INFC_BROWSER_CONNECTED: if(!infc_browser_get_chat_session(browser)) subscribe_chat(browser); break; default: g_assert_not_reached(); break; } } void Gobby::BrowserCommands::subscribe_chat(InfcBrowser* browser) { InfcNodeRequest* request = infc_browser_subscribe_chat(browser); g_assert(m_request_map.find(request) == m_request_map.end()); m_request_map[request] = new RequestInfo(*this, browser, NULL, request, m_status_bar); } void Gobby::BrowserCommands::on_activate(InfcBrowser* browser, InfcBrowserIter* iter) { InfcSessionProxy* proxy = infc_browser_iter_get_session(browser, iter); if(proxy != NULL) { InfSession* session = infc_session_proxy_get_session(proxy); SessionView* view = m_folder.lookup_document(session); if(view != NULL) { m_folder.switch_to_document(*view); } else { // This should not happen: We insert every document // we subscribe to directly into the folder. g_assert_not_reached(); } } else { InfcNodeRequest* request = infc_browser_iter_get_subscribe_request(browser, iter); // If there is already a request don't re-request if(request == NULL) { request = infc_browser_iter_subscribe_session(browser, iter); g_assert(m_request_map.find(request) == m_request_map.end()); m_request_map[request] = new RequestInfo(*this, browser, iter, request, m_status_bar); } } } void Gobby::BrowserCommands::on_finished(InfcNodeRequest* request) { RequestMap::iterator iter = m_request_map.find(request); g_assert(iter != m_request_map.end()); delete iter->second; m_request_map.erase(iter); } void Gobby::BrowserCommands::on_failed(InfcNodeRequest* request, const GError* error) { RequestMap::iterator iter = m_request_map.find(request); g_assert(iter != m_request_map.end()); delete iter->second; m_request_map.erase(iter); m_status_bar.add_error_message( _("Subscription failed"), error->message); } gobby-0.4.94/code/commands/file-tasks/0000755000175000017500000000000011543672436014503 500000000000000gobby-0.4.94/code/commands/file-tasks/task-new.hpp0000644000175000017500000000223611531722663016663 00000000000000/* Gobby - GTK-based collaborative text editor * Copyright (C) 2008-2011 Armin Burgmeier * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GOBBY_FILE_TASK_NEW_HPP_ #define _GOBBY_FILE_TASK_NEW_HPP_ #include "commands/file-commands.hpp" namespace Gobby { class TaskNew: public FileCommands::Task { public: TaskNew(FileCommands& file_commands); virtual ~TaskNew(); virtual void run(); protected: void on_response(int response_id); }; } // namespcae Gobby #endif // _GOBBY_FILE_TASK_NEW_HPP_ gobby-0.4.94/code/commands/file-tasks/task-export-html.hpp0000644000175000017500000000250211531722663020351 00000000000000/* Gobby - GTK-based collaborative text editor * Copyright (C) 2008-2011 Armin Burgmeier * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GOBBY_FILE_TASK_EXPORT_HTML_HPP_ #define _GOBBY_FILE_TASK_EXPORT_HTML_HPP_ #include "commands/file-commands.hpp" namespace Gobby { class TaskExportHtml: public FileCommands::Task { private: FileChooser::Dialog m_file_dialog; TextSessionView* m_view; bool m_running; public: TaskExportHtml(FileCommands& file_commands, TextSessionView& view); virtual void run(); void on_response(int response_id); void on_document_removed(SessionView& view); }; } // namespace Gobby #endif // _GOBBY_FILE_TASK_EXPORT_HTML_HPP_ gobby-0.4.94/code/commands/file-tasks/Makefile.in0000644000175000017500000003767611543672413016506 00000000000000# 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@ subdir = code/commands/file-tasks DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = $(top_builddir)/code/features.hpp CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = LIBRARIES = $(noinst_LIBRARIES) AR = ar ARFLAGS = cru AM_V_AR = $(am__v_AR_$(V)) am__v_AR_ = $(am__v_AR_$(AM_DEFAULT_VERBOSITY)) am__v_AR_0 = @echo " AR " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ libgobby_file_tasks_a_AR = $(AR) $(ARFLAGS) libgobby_file_tasks_a_LIBADD = am_libgobby_file_tasks_a_OBJECTS = task-export-html.$(OBJEXT) \ task-new.$(OBJEXT) task-open.$(OBJEXT) \ task-open-file.$(OBJEXT) task-open-location.$(OBJEXT) \ task-open-multiple.$(OBJEXT) task-save.$(OBJEXT) \ task-save-all.$(OBJEXT) libgobby_file_tasks_a_OBJECTS = $(am_libgobby_file_tasks_a_OBJECTS) DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/code depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) AM_V_CXX = $(am__v_CXX_$(V)) am__v_CXX_ = $(am__v_CXX_$(AM_DEFAULT_VERBOSITY)) am__v_CXX_0 = @echo " CXX " $@; CXXLD = $(CXX) CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \ -o $@ AM_V_CXXLD = $(am__v_CXXLD_$(V)) am__v_CXXLD_ = $(am__v_CXXLD_$(AM_DEFAULT_VERBOSITY)) am__v_CXXLD_0 = @echo " CXXLD " $@; AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; SOURCES = $(libgobby_file_tasks_a_SOURCES) DIST_SOURCES = $(libgobby_file_tasks_a_SOURCES) HEADERS = $(noinst_HEADERS) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALL_LINGUAS = @ALL_LINGUAS@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@ DOC_USER_FORMATS = @DOC_USER_FORMATS@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GMOFILES = @GMOFILES@ GMSGFMT = @GMSGFMT@ GREP = @GREP@ HELP_DIR = @HELP_DIR@ 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@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MKINSTALLDIRS = @MKINSTALLDIRS@ MSGFMT = @MSGFMT@ MSGFMT_OPTS = @MSGFMT_OPTS@ MSGMERGE = @MSGMERGE@ OBJEXT = @OBJEXT@ OMF_DIR = @OMF_DIR@ 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@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ WINDRES = @WINDRES@ 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_CXX = @ac_ct_CXX@ 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@ gobby_CFLAGS = @gobby_CFLAGS@ gobby_LIBS = @gobby_LIBS@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infinote_CFLAGS = @infinote_CFLAGS@ infinote_LIBS = @infinote_LIBS@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ 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@ unique_CFLAGS = @unique_CFLAGS@ unique_LIBS = @unique_LIBS@ noinst_LIBRARIES = libgobby-file-tasks.a libgobby_file_tasks_a_SOURCES = \ task-export-html.cpp \ task-new.cpp \ task-open.cpp \ task-open-file.cpp \ task-open-location.cpp \ task-open-multiple.cpp \ task-save.cpp \ task-save-all.cpp noinst_HEADERS = \ task-export-html.hpp \ task-new.hpp \ task-open.hpp \ task-open-file.hpp \ task-open-location.hpp \ task-open-multiple.hpp \ task-save.hpp \ task-save-all.hpp appicondir = $(datadir)/pixmaps pixmapdir = $(datadir)/pixmaps/gobby-0.5 AM_CPPFLAGS = $(gobby_CFLAGS) $(unique_CFLAGS) $(infinote_CFLAGS) \ -I$(top_srcdir)/code all: all-am .SUFFIXES: .SUFFIXES: .cpp .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(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) --gnu code/commands/file-tasks/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu code/commands/file-tasks/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: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstLIBRARIES: -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) libgobby-file-tasks.a: $(libgobby_file_tasks_a_OBJECTS) $(libgobby_file_tasks_a_DEPENDENCIES) $(AM_V_at)-rm -f libgobby-file-tasks.a $(AM_V_AR)$(libgobby_file_tasks_a_AR) libgobby-file-tasks.a $(libgobby_file_tasks_a_OBJECTS) $(libgobby_file_tasks_a_LIBADD) $(AM_V_at)$(RANLIB) libgobby-file-tasks.a mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/task-export-html.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/task-new.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/task-open-file.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/task-open-location.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/task-open-multiple.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/task-open.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/task-save-all.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/task-save.Po@am__quote@ .cpp.o: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $< .cpp.obj: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags 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 $(LIBRARIES) $(HEADERS) installdirs: 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-noinstLIBRARIES mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: 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 -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-noinstLIBRARIES ctags distclean distclean-compile \ distclean-generic distclean-tags 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-ps install-ps-am install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \ uninstall-am # 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: gobby-0.4.94/code/commands/file-tasks/task-open-file.hpp0000644000175000017500000000260611531722663017751 00000000000000/* Gobby - GTK-based collaborative text editor * Copyright (C) 2008-2011 Armin Burgmeier * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GOBBY_FILE_TASK_OPEN_FILE_HPP_ #define _GOBBY_FILE_TASK_OPEN_FILE_HPP_ #include "commands/file-commands.hpp" #include "commands/file-tasks/task-open.hpp" #include "commands/file-tasks/task-open-multiple.hpp" namespace Gobby { class TaskOpenFile: public FileCommands::Task { public: TaskOpenFile(FileCommands& file_commands); virtual void run(); private: void on_file_response(int response_id); FileChooser::Dialog m_file_dialog; std::auto_ptr m_open_task; std::auto_ptr m_open_taskm; }; } // namespace Gobby #endif // _GOBBY_FILE_TASK_OPEN_FILE_HPP_ gobby-0.4.94/code/commands/file-tasks/task-open-location.cpp0000644000175000017500000000340511531722663020633 00000000000000/* Gobby - GTK-based collaborative text editor * Copyright (C) 2008-2011 Armin Burgmeier * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "commands/file-tasks/task-open-location.hpp" #include Gobby::TaskOpenLocation::TaskOpenLocation(FileCommands& file_commands): Task(file_commands), m_location_dialog(get_parent()) { } void Gobby::TaskOpenLocation::run() { m_location_dialog.signal_response().connect( sigc::mem_fun( *this, &TaskOpenLocation::on_response)); m_location_dialog.add_button(Gtk::Stock::CLOSE, Gtk::RESPONSE_CLOSE); m_location_dialog.add_button(Gtk::Stock::OPEN, Gtk::RESPONSE_ACCEPT); m_location_dialog.present(); } void Gobby::TaskOpenLocation::on_response(int response_id) { if(response_id == Gtk::RESPONSE_ACCEPT) { std::string uri = m_location_dialog.get_uri(); Glib::RefPtr file = Gio::File::create_for_uri(uri); m_location_dialog.hide(); m_open_task.reset(new TaskOpen(m_file_commands, file)); m_open_task->signal_finished().connect( sigc::mem_fun(*this, &TaskOpenLocation::finish)); m_open_task->run(); } else { finish(); } } gobby-0.4.94/code/commands/file-tasks/task-open.cpp0000644000175000017500000000554411531722663017033 00000000000000/* Gobby - GTK-based collaborative text editor * Copyright (C) 2008-2011 Armin Burgmeier * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "commands/file-tasks/task-open.hpp" #include "util/i18n.hpp" Gobby::TaskOpen::TaskOpen(FileCommands& file_commands, const Glib::RefPtr& file): Task(file_commands), m_file(file) { } Gobby::TaskOpen::~TaskOpen() { if(m_handle != get_status_bar().invalid_handle()) get_status_bar().remove_message(m_handle); get_document_location_dialog().hide(); } void Gobby::TaskOpen::run() { try { // TODO: Show DocumentLocationDialog with a // default name as long as the query is // running. m_file->query_info_async( sigc::mem_fun(*this, &TaskOpen::on_query_info), G_FILE_ATTRIBUTE_STANDARD_DISPLAY_NAME); m_handle = get_status_bar().add_info_message( Glib::ustring::compose( _("Querying \"%1\"..."), m_file->get_uri())); } catch(const Gio::Error& ex) { error(ex.what()); } } void Gobby::TaskOpen::on_query_info( const Glib::RefPtr& result) { get_status_bar().remove_message(m_handle); m_handle = get_status_bar().invalid_handle(); DocumentLocationDialog& dialog = get_document_location_dialog(); dialog.signal_response().connect(sigc::mem_fun( *this, &TaskOpen::on_location_response)); try { Glib::RefPtr info = m_file->query_info_finish(result); dialog.set_document_name(info->get_display_name()); dialog.set_single_document_mode(); dialog.present(); } catch(const Gio::Error& ex) { error(ex.what()); } } void Gobby::TaskOpen::on_location_response(int response_id) { if(response_id == Gtk::RESPONSE_ACCEPT) { DocumentLocationDialog& dialog = get_document_location_dialog(); InfcBrowserIter iter; InfcBrowser* browser = dialog.get_selected_directory(&iter); g_assert(browser != NULL); get_operations().create_document( browser, &iter, dialog.get_document_name(), get_preferences(), m_file->get_uri(), NULL); } finish(); } void Gobby::TaskOpen::error(const Glib::ustring& message) { get_status_bar().add_error_message( Glib::ustring::compose( _("Failed to open document \"%1\""), m_file->get_uri()), message); finish(); } gobby-0.4.94/code/commands/file-tasks/task-save.hpp0000644000175000017500000000244111531722663017026 00000000000000/* Gobby - GTK-based collaborative text editor * Copyright (C) 2008-2011 Armin Burgmeier * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GOBBY_FILE_TASK_SAVE_HPP_ #define _GOBBY_FILE_TASK_SAVE_HPP_ #include "commands/file-commands.hpp" namespace Gobby { class TaskSave: public FileCommands::Task { private: FileChooser::Dialog m_file_dialog; TextSessionView* m_view; bool m_running; public: TaskSave(FileCommands& file_commands, TextSessionView& view); virtual void run(); void on_response(int response_id); void on_document_removed(SessionView& view); }; } // namespace Gobby #endif // _GOBBY_FILE_TASK_SAVE_HPP_ gobby-0.4.94/code/commands/file-tasks/task-open-location.hpp0000644000175000017500000000253711531722663020645 00000000000000/* Gobby - GTK-based collaborative text editor * Copyright (C) 2008-2011 Armin Burgmeier * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GOBBY_FILE_TASK_OPEN_LOCATION_HPP_ #define _GOBBY_FILE_TASK_OPEN_LOCATION_HPP_ #include "commands/file-commands.hpp" #include "commands/file-tasks/task-open.hpp" #include "dialogs/open-location-dialog.hpp" namespace Gobby { class TaskOpenLocation: public FileCommands::Task { public: TaskOpenLocation(FileCommands& file_commands); virtual void run(); private: void on_response(int response_id); OpenLocationDialog m_location_dialog; std::auto_ptr m_open_task; }; } // namespace Gobby #endif // _GOBBY_FILE_TASK_OPEN_LOCATION_HPP_ gobby-0.4.94/code/commands/file-tasks/task-save-all.hpp0000644000175000017500000000260611531722663017577 00000000000000/* Gobby - GTK-based collaborative text editor * Copyright (C) 2008-2011 Armin Burgmeier * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GOBBY_FILE_TASK_SAVE_ALL_HPP_ #define _GOBBY_FILE_TASK_SAVE_ALL_HPP_ #include "commands/file-commands.hpp" #include "commands/file-tasks/task-save.hpp" namespace Gobby { class TaskSaveAll: public Gobby::FileCommands::Task { public: TaskSaveAll(FileCommands& file_commands); virtual void run(); private: void on_document_removed(SessionView& view); void on_finished(); void process_current(); std::list m_views; std::list::iterator m_current; std::auto_ptr m_task; }; } // namespace Gobby #endif // _GOBBY_FILE_TASK_SAVE_ALL_HPP_ gobby-0.4.94/code/commands/file-tasks/task-export-html.cpp0000644000175000017500000000425011531722663020346 00000000000000/* Gobby - GTK-based collaborative text editor * Copyright (C) 2008-2011 Armin Burgmeier * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ // TODO: Merge with TaskSave, or share code in a common base class #include "commands/file-tasks/task-export-html.hpp" #include "util/i18n.hpp" Gobby::TaskExportHtml::TaskExportHtml(FileCommands& file_commands, TextSessionView& view): Task(file_commands), m_file_dialog(get_file_chooser(), get_parent(), Glib::ustring::compose( _("Choose a location to export document \"%1\" to"), view.get_title()), Gtk::FILE_CHOOSER_ACTION_SAVE), m_view(&view), m_running(false) { get_folder().signal_document_removed().connect( sigc::mem_fun(*this, &TaskExportHtml::on_document_removed)); } void Gobby::TaskExportHtml::run() { // m_document will be set to NULL if it has been removed before run // was called. if(!m_view) { finish(); return; } m_running = true; m_file_dialog.signal_response().connect(sigc::mem_fun( *this, &TaskExportHtml::on_response)); m_file_dialog.set_current_name(m_view->get_title() + ".xhtml"); m_file_dialog.present(); } void Gobby::TaskExportHtml::on_response(int response_id) { if(response_id == Gtk::RESPONSE_ACCEPT) { get_operations().export_html( *m_view, m_file_dialog.get_uri()); } finish(); } void Gobby::TaskExportHtml::on_document_removed(SessionView& view) { // The document we are about to save was removed. if(m_view == &view) { if(m_running) finish(); else m_view = NULL; } } gobby-0.4.94/code/commands/file-tasks/Makefile.am0000644000175000017500000000114011531722663016446 00000000000000noinst_LIBRARIES = libgobby-file-tasks.a libgobby_file_tasks_a_SOURCES = \ task-export-html.cpp \ task-new.cpp \ task-open.cpp \ task-open-file.cpp \ task-open-location.cpp \ task-open-multiple.cpp \ task-save.cpp \ task-save-all.cpp noinst_HEADERS = \ task-export-html.hpp \ task-new.hpp \ task-open.hpp \ task-open-file.hpp \ task-open-location.hpp \ task-open-multiple.hpp \ task-save.hpp \ task-save-all.hpp appicondir = $(datadir)/pixmaps pixmapdir = $(datadir)/pixmaps/gobby-0.5 AM_CPPFLAGS = $(gobby_CFLAGS) $(unique_CFLAGS) $(infinote_CFLAGS) \ -I$(top_srcdir)/code gobby-0.4.94/code/commands/file-tasks/task-open-multiple.hpp0000644000175000017500000000305411531722663020663 00000000000000/* Gobby - GTK-based collaborative text editor * Copyright (C) 2008-2011 Armin Burgmeier * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GOBBY_FILE_TASK_OPEN_MULTIPLE_HPP_ #define _GOBBY_FILE_TASK_OPEN_MULTIPLE_HPP_ #include "commands/file-commands.hpp" #include #include namespace Gobby { class TaskOpenMultiple: public FileCommands::Task { public: TaskOpenMultiple(FileCommands& file_commands); virtual ~TaskOpenMultiple(); virtual void run(); void add_file(const Glib::ustring& uri); private: void on_location_response(int response_id); struct FileInfo { FileInfo(const Glib::RefPtr& f, const Glib::ustring& n) : file(f), name(n) {} Glib::RefPtr file; Glib::ustring name; }; typedef std::vector uri_list; uri_list m_uris; }; } // namespace Gobby #endif // _GOBBY_FILE_TASK_OPEN_MULTIPLE_HPP_ gobby-0.4.94/code/commands/file-tasks/task-open-multiple.cpp0000644000175000017500000000401411531722663020653 00000000000000/* Gobby - GTK-based collaborative text editor * Copyright (C) 2008-2011 Armin Burgmeier * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "commands/file-tasks/task-open-multiple.hpp" #include "operations/operation-open-multiple.hpp" Gobby::TaskOpenMultiple::TaskOpenMultiple(FileCommands& file_commands): Task(file_commands) { } Gobby::TaskOpenMultiple::~TaskOpenMultiple() { get_document_location_dialog().hide(); } void Gobby::TaskOpenMultiple::run() { DocumentLocationDialog& dialog = get_document_location_dialog(); dialog.signal_response().connect(sigc::mem_fun( *this, &TaskOpenMultiple::on_location_response)); dialog.set_multiple_document_mode(); dialog.present(); } void Gobby::TaskOpenMultiple::add_file(const Glib::ustring& uri) { m_uris.push_back(uri); } void Gobby::TaskOpenMultiple::on_location_response(int response_id) { if(response_id == Gtk::RESPONSE_ACCEPT) { DocumentLocationDialog& dialog = get_document_location_dialog(); InfcBrowserIter iter; InfcBrowser* browser = dialog.get_selected_directory(&iter); g_assert(browser != NULL); OperationOpenMultiple* operation = get_operations().create_documents( browser, &iter, get_preferences(), m_uris.size()); for(uri_list::const_iterator iter = m_uris.begin(); iter != m_uris.end(); ++iter) { operation->add_uri(*iter, NULL, NULL); } } finish(); } gobby-0.4.94/code/commands/file-tasks/task-open-file.cpp0000644000175000017500000000422711531722663017745 00000000000000/* Gobby - GTK-based collaborative text editor * Copyright (C) 2008-2011 Armin Burgmeier * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "commands/file-tasks/task-open-file.hpp" #include "util/i18n.hpp" Gobby::TaskOpenFile::TaskOpenFile(FileCommands& file_commands): Task(file_commands), m_file_dialog(get_file_chooser(), get_parent(), _("Choose a text file to open"), Gtk::FILE_CHOOSER_ACTION_OPEN) { m_file_dialog.set_select_multiple(true); } void Gobby::TaskOpenFile::run() { m_file_dialog.signal_response().connect(sigc::mem_fun( *this, &TaskOpenFile::on_file_response)); m_file_dialog.present(); } void Gobby::TaskOpenFile::on_file_response(int response_id) { if(response_id == Gtk::RESPONSE_ACCEPT) { m_file_dialog.hide(); Glib::SListHandle uris = m_file_dialog.get_uris(); g_assert(uris.size() >= 1); if (uris.size() == 1) { Glib::RefPtr file = Gio::File::create_for_uri(*uris.begin()); m_open_task.reset(new TaskOpen(m_file_commands, file)); m_open_task->signal_finished().connect( sigc::mem_fun(*this, &TaskOpenFile::finish)); m_open_task->run(); } else { TaskOpenMultiple *task = new TaskOpenMultiple(m_file_commands); for(Glib::SListHandle::iterator i = uris.begin(); i != uris.end(); ++i) task->add_file(*i); m_open_taskm.reset(task); m_open_taskm->signal_finished().connect( sigc::mem_fun(*this, &TaskOpenFile::finish)); m_open_taskm->run(); } } else { finish(); } } gobby-0.4.94/code/commands/file-tasks/task-save-all.cpp0000644000175000017500000000526011531722663017571 00000000000000/* Gobby - GTK-based collaborative text editor * Copyright (C) 2008-2011 Armin Burgmeier * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ // TODO: This should not be a task because the asynchronous IO operations // should not be interrupted by tasks like "save as". // The should-not-abort part should be an operation. #include "commands/file-tasks/task-save-all.hpp" Gobby::TaskSaveAll::TaskSaveAll(FileCommands& file_commands): Task(file_commands) { } void Gobby::TaskSaveAll::run() { const unsigned int n_pages = get_folder().get_n_pages(); for(unsigned int i = 0; i < n_pages; ++i) { SessionView& view = get_folder().get_document(i); TextSessionView* text_view = dynamic_cast(&view); if(text_view) m_views.push_back(text_view); } get_folder().signal_document_removed().connect( sigc::mem_fun(*this, &TaskSaveAll::on_document_removed)); m_current = m_views.begin(); process_current(); } void Gobby::TaskSaveAll::on_document_removed(SessionView& view) { std::list::iterator iter = std::find( m_views.begin(), m_views.end(), &view); if(iter == m_current) { m_current = m_views.erase(m_current); // Go on with next process_current(); } if(iter != m_views.end()) m_views.erase(iter); } void Gobby::TaskSaveAll::on_finished() { m_current = m_views.erase(m_current); process_current(); } void Gobby::TaskSaveAll::process_current() { m_task.reset(NULL); if(m_current == m_views.end()) { finish(); } else { TextSessionView& view = **m_current; const DocumentInfoStorage::Info* info = get_document_info_storage().get_info( view.get_info_storage_key()); if(info != NULL && !info->uri.empty()) { get_operations().save_document( view, get_folder(), info->uri, info->encoding, info->eol_style); m_current = m_views.erase(m_current); process_current(); } else { m_task.reset(new TaskSave(m_file_commands, view)); m_task->signal_finished().connect(sigc::mem_fun( *this, &TaskSaveAll::on_finished)); m_task->run(); } } } gobby-0.4.94/code/commands/file-tasks/task-new.cpp0000644000175000017500000000331111531722663016651 00000000000000/* Gobby - GTK-based collaborative text editor * Copyright (C) 2008-2011 Armin Burgmeier * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "commands/file-tasks/task-new.hpp" #include "util/i18n.hpp" Gobby::TaskNew::TaskNew(FileCommands& file_commands): Task(file_commands) { } Gobby::TaskNew::~TaskNew() { get_document_location_dialog().hide(); } void Gobby::TaskNew::run() { DocumentLocationDialog& dialog = get_document_location_dialog(); dialog.signal_response().connect( sigc::mem_fun(*this, &TaskNew::on_response)); dialog.set_document_name(_("New Document")); dialog.set_single_document_mode(); dialog.present(); } void Gobby::TaskNew::on_response(int response_id) { if(response_id == Gtk::RESPONSE_ACCEPT) { DocumentLocationDialog& dialog = get_document_location_dialog(); InfcBrowserIter iter; InfcBrowser* browser = dialog.get_selected_directory(&iter); g_assert(browser != NULL); get_operations().create_document(browser, &iter, dialog.get_document_name()); } finish(); } gobby-0.4.94/code/commands/file-tasks/task-open.hpp0000644000175000017500000000265011531722663017033 00000000000000/* Gobby - GTK-based collaborative text editor * Copyright (C) 2008-2011 Armin Burgmeier * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GOBBY_FILE_TASK_OPEN_HPP_ #define _GOBBY_FILE_TASK_OPEN_HPP_ #include "commands/file-commands.hpp" #include namespace Gobby { class TaskOpen: public FileCommands::Task { public: TaskOpen(FileCommands& file_commands, const Glib::RefPtr& file); virtual ~TaskOpen(); virtual void run(); private: void on_query_info(const Glib::RefPtr& result); void on_location_response(int response_id); void error(const Glib::ustring& message); StatusBar::MessageHandle m_handle; Glib::RefPtr m_file; }; } // namespace Gobby #endif // _GOBBY_FILE_TASK_OPEN_HPP_ gobby-0.4.94/code/commands/file-tasks/task-save.cpp0000644000175000017500000000507311531722663017025 00000000000000/* Gobby - GTK-based collaborative text editor * Copyright (C) 2008-2011 Armin Burgmeier * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "commands/file-tasks/task-save.hpp" #include "util/i18n.hpp" Gobby::TaskSave::TaskSave(FileCommands& file_commands, TextSessionView& view): Task(file_commands), m_file_dialog(get_file_chooser(), get_parent(), Glib::ustring::compose( _("Choose a location to save document \"%1\" to"), view.get_title()), Gtk::FILE_CHOOSER_ACTION_SAVE), m_view(&view), m_running(false) { get_folder().signal_document_removed().connect( sigc::mem_fun( *this, &TaskSave::on_document_removed)); } void Gobby::TaskSave::run() { // m_view will be set to NULL if it has been removed before run // was called. if(!m_view) { finish(); return; } m_running = true; m_file_dialog.signal_response().connect(sigc::mem_fun( *this, &TaskSave::on_response)); const DocumentInfoStorage::Info* info = get_document_info_storage().get_info( m_view->get_info_storage_key()); if(info != NULL && !info->uri.empty()) m_file_dialog.set_uri(info->uri); else m_file_dialog.set_current_name(m_view->get_title()); m_file_dialog.present(); } void Gobby::TaskSave::on_response(int response_id) { if(response_id == Gtk::RESPONSE_ACCEPT) { const std::string& info_storage_key = m_view->get_info_storage_key(); const DocumentInfoStorage::Info* info = get_document_info_storage().get_info( info_storage_key); // TODO: Get encoding from file dialog // TODO: Default to CRLF on Windows get_operations().save_document( *m_view, get_folder(), m_file_dialog.get_uri(), info ? info->encoding : "UTF-8", info ? info->eol_style : DocumentInfoStorage::EOL_LF); } finish(); } void Gobby::TaskSave::on_document_removed(SessionView& view) { // The document we are about to save was removed. if(m_view == &view) { if(m_running) finish(); else m_view = NULL; } } gobby-0.4.94/code/commands/folder-commands.hpp0000644000175000017500000000263211531722663016142 00000000000000/* Gobby - GTK-based collaborative text editor * Copyright (C) 2008-2011 Armin Burgmeier * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GOBBY_FOLDER_COMMANDS_HPP_ #define _GOBBY_FOLDER_COMMANDS_HPP_ #include "core/folder.hpp" #include namespace Gobby { class FolderCommands: public sigc::trackable { public: FolderCommands(Folder& folder); ~FolderCommands(); protected: void on_document_added(SessionView& view); void on_document_removed(SessionView& view); void on_document_changed(SessionView* view); Folder& m_folder; SessionView* m_current_view; class DocInfo; typedef std::map DocumentMap; DocumentMap m_doc_map; class TextDocInfo; }; } #endif // _GOBBY_FOLDER_COMMANDS_HPP_ gobby-0.4.94/code/commands/auth-commands.hpp0000644000175000017500000000734311531722663015634 00000000000000/* Gobby - GTK-based collaborative text editor * Copyright (C) 2008-2011 Armin Burgmeier * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GOBBY_AUTH_COMMANDS_HPP_ #define _GOBBY_AUTH_COMMANDS_HPP_ #include "dialogs/password-dialog.hpp" #include "core/browser.hpp" #include "core/statusbar.hpp" #include "core/preferences.hpp" #include #include namespace Gobby { class AuthCommands: public sigc::trackable { public: AuthCommands(Gtk::Window& parent, Browser& browser, StatusBar& statusbar, const Preferences& preferences); ~AuthCommands(); protected: static void sasl_callback_static(InfSaslContextSession* session, Gsasl_property prop, gpointer session_data, gpointer user_data) { AuthCommands* auth = static_cast(user_data); auth->sasl_callback( session, INF_XMPP_CONNECTION(session_data), prop); } static void set_browser_callback_static(InfGtkBrowserModel*, GtkTreePath*, GtkTreeIter*, InfcBrowser* browser, gpointer user_data) { AuthCommands* auth = static_cast(user_data); auth->set_browser_callback(browser); } static void on_notify_status_static(GObject* connection_obj, GParamSpec*, gpointer user_data) { AuthCommands* auth = static_cast(user_data); auth->on_notify_status(INF_XMPP_CONNECTION(connection_obj)); } static void browser_error_callback_static(InfcBrowser* browser, gpointer error_ptr, gpointer user_data) { AuthCommands* auth = static_cast(user_data); GError* error = static_cast(error_ptr); auth->browser_error_callback(browser, error); } void sasl_callback(InfSaslContextSession* session, InfXmppConnection* xmpp, Gsasl_property prop); void set_browser_callback(InfcBrowser* browser); void browser_error_callback(InfcBrowser* browser, GError* error); void handle_error_detail(InfXmppConnection* xmpp, const GError* detail_error, Glib::ustring& old_password, Glib::ustring& last_password); struct RetryInfo { unsigned int retries; Glib::ustring last_password; gulong handle; PasswordDialog* password_dialog; }; typedef std::map RetryMap; RetryMap::iterator insert_retry_info(InfXmppConnection* xmpp); void on_notify_status(InfXmppConnection* connection); void on_response(int response_id, InfSaslContextSession* session, InfXmppConnection* xmpp); Gtk::Window& m_parent; Browser& m_browser; StatusBar& m_statusbar; const Preferences& m_preferences; InfSaslContext* m_sasl_context; RetryMap m_retries; }; } #endif // _GOBBY_AUTH_COMMANDS_HPP_ gobby-0.4.94/code/commands/view-commands.cpp0000644000175000017500000002655411531722663015645 00000000000000/* Gobby - GTK-based collaborative text editor * Copyright (C) 2008-2011 Armin Burgmeier * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "commands/view-commands.hpp" #include "util/i18n.hpp" #include "util/gtk-compat.hpp" #include Gobby::ViewCommands::ViewCommands(Header& header, Folder& text_folder, ClosableFrame& chat_frame, Folder& chat_folder, Preferences& preferences): m_header(header), m_text_folder(text_folder), m_chat_frame(chat_frame), m_chat_folder(chat_folder), m_preferences(preferences), m_current_view(NULL) { m_header.action_view_hide_user_colors->signal_activate().connect( sigc::mem_fun(*this, &ViewCommands::on_hide_user_colors)); m_menu_view_toolbar_connection = m_header.action_view_toolbar->signal_toggled().connect( sigc::mem_fun( *this, &ViewCommands::on_menu_toolbar_toggled)); m_menu_view_statusbar_connection = m_header.action_view_statusbar->signal_toggled().connect( sigc::mem_fun( *this, &ViewCommands::on_menu_statusbar_toggled)); m_menu_view_browser_connection = m_header.action_view_browser->signal_toggled().connect( sigc::mem_fun( *this, &ViewCommands::on_menu_browser_toggled)); m_menu_view_chat_connection = m_header.action_view_chat->signal_toggled().connect( sigc::mem_fun( *this, &ViewCommands::on_menu_chat_toggled)); m_menu_view_document_userlist_connection = m_header.action_view_document_userlist-> signal_toggled().connect(sigc::mem_fun( *this, &ViewCommands:: on_menu_document_userlist_toggled)); m_menu_view_chat_userlist_connection = m_header.action_view_chat_userlist->signal_toggled().connect( sigc::mem_fun( *this, &ViewCommands:: on_menu_chat_userlist_toggled)); // Shortcut: Preferences::Appearance& appearance = preferences.appearance; m_pref_view_toolbar_connection = appearance.show_toolbar.signal_changed().connect( sigc::mem_fun( *this, &ViewCommands::on_pref_toolbar_changed)); m_pref_view_statusbar_connection = appearance.show_statusbar.signal_changed().connect( sigc::mem_fun( *this, &ViewCommands::on_pref_statusbar_changed)); m_pref_view_browser_connection = appearance.show_browser.signal_changed().connect( sigc::mem_fun( *this, &ViewCommands::on_pref_browser_changed)); m_pref_view_chat_connection = appearance.show_chat.signal_changed().connect( sigc::mem_fun( *this, &ViewCommands::on_pref_chat_changed)); m_pref_view_document_userlist_connection = appearance.show_document_userlist.signal_changed().connect( sigc::mem_fun( *this, &ViewCommands:: on_pref_document_userlist_changed)); m_pref_view_chat_userlist_connection = appearance.show_chat_userlist.signal_changed().connect( sigc::mem_fun( *this, &ViewCommands:: on_pref_chat_userlist_changed)); m_text_folder.signal_document_changed().connect( sigc::mem_fun( *this, &ViewCommands::on_text_document_changed)); m_chat_folder.signal_document_added().connect( sigc::mem_fun( *this, &ViewCommands::on_chat_document_added)); m_chat_folder.signal_document_removed().connect( sigc::mem_fun( *this, &ViewCommands::on_chat_document_removed)); m_chat_folder.signal_document_changed().connect( sigc::mem_fun( *this, &ViewCommands::on_chat_document_changed)); m_menu_language_changed_connection = m_header.action_view_highlight_none->signal_changed().connect( sigc::mem_fun( *this, &ViewCommands::on_menu_language_changed)); m_chat_frame.signal_show().connect( sigc::mem_fun(*this, &ViewCommands::on_chat_show)); m_chat_frame.signal_hide().connect( sigc::mem_fun(*this, &ViewCommands::on_chat_hide)); // Chat View by default not sensitive, becomes sensitive if a server // connection is made. m_header.action_view_chat->set_sensitive(false); m_chat_frame.set_allow_visible(false); // Setup initial sensitivity: on_text_document_changed(m_text_folder.get_current_document()); on_chat_document_changed(m_chat_folder.get_current_document()); } Gobby::ViewCommands::~ViewCommands() { // Disconnect handlers from current document: on_text_document_changed(NULL); on_chat_document_changed(NULL); } void Gobby::ViewCommands::on_text_document_changed(SessionView* view) { if(m_current_view != NULL) m_document_language_changed_connection.disconnect(); m_current_view = dynamic_cast(view); if(m_current_view != NULL) { m_header.action_view_hide_user_colors->set_sensitive(true); m_header.action_view_highlight_mode->set_sensitive(true); m_header.action_view_document_userlist->set_sensitive(true); m_document_language_changed_connection = m_current_view->signal_language_changed().connect( sigc::mem_fun( *this, &ViewCommands:: on_doc_language_changed)); } else { m_header.action_view_hide_user_colors->set_sensitive(false); m_menu_language_changed_connection.block(); m_header.action_view_highlight_mode->set_sensitive(false); m_header.action_view_highlight_none->set_active(true); m_menu_language_changed_connection.unblock(); m_header.action_view_document_userlist->set_sensitive(false); } on_doc_language_changed( m_current_view ? m_current_view->get_language() : NULL); } void Gobby::ViewCommands::on_chat_document_added(SessionView& view) { // Allow the chat frame to be visible if the option allows it m_chat_frame.set_allow_visible(true); m_header.action_view_chat->set_sensitive(true); } void Gobby::ViewCommands::on_chat_document_removed(SessionView& view) { if(m_chat_folder.get_n_pages() == 1) { // This is the last document, and it is about to be removed. m_header.action_view_chat->set_sensitive(false); // Hide the chat frame independent of the option m_chat_frame.set_allow_visible(false); } } void Gobby::ViewCommands::on_chat_document_changed(SessionView* view) { if(view != NULL) { if(GtkCompat::is_visible(m_chat_frame)) { m_header.action_view_chat_userlist->set_sensitive( true); } } else { m_header.action_view_chat_userlist->set_sensitive(false); } } void Gobby::ViewCommands::on_chat_show() { SessionView* view = m_chat_folder.get_current_document(); if(view != NULL) m_header.action_view_chat_userlist->set_sensitive(true); } void Gobby::ViewCommands::on_chat_hide() { m_header.action_view_chat_userlist->set_sensitive(false); } void Gobby::ViewCommands::on_hide_user_colors() { SessionView* view = m_text_folder.get_current_document(); TextSessionView* text_view = dynamic_cast(view); g_assert(text_view != NULL); InfSession* session = INF_SESSION(text_view->get_session()); GtkTextBuffer* textbuffer = GTK_TEXT_BUFFER(text_view->get_text_buffer()); InfBuffer* buffer = inf_session_get_buffer(session); InfTextGtkBuffer* infbuffer = INF_TEXT_GTK_BUFFER(buffer); GtkTextIter start, end; gtk_text_buffer_get_start_iter(textbuffer, &start); gtk_text_buffer_get_end_iter(textbuffer, &end); inf_text_gtk_buffer_show_user_colors(infbuffer, FALSE, &start, &end); } void Gobby::ViewCommands::on_menu_toolbar_toggled() { m_pref_view_toolbar_connection.block(); m_preferences.appearance.show_toolbar = m_header.action_view_toolbar->get_active(); m_pref_view_toolbar_connection.unblock(); } void Gobby::ViewCommands::on_menu_statusbar_toggled() { m_pref_view_statusbar_connection.block(); m_preferences.appearance.show_statusbar = m_header.action_view_statusbar->get_active(); m_pref_view_statusbar_connection.unblock(); } void Gobby::ViewCommands::on_menu_browser_toggled() { m_pref_view_browser_connection.block(); m_preferences.appearance.show_browser = m_header.action_view_browser->get_active(); m_pref_view_browser_connection.unblock(); } void Gobby::ViewCommands::on_menu_chat_toggled() { m_pref_view_chat_connection.block(); m_preferences.appearance.show_chat = m_header.action_view_chat->get_active(); m_pref_view_chat_connection.unblock(); } void Gobby::ViewCommands::on_menu_document_userlist_toggled() { m_pref_view_document_userlist_connection.block(); m_preferences.appearance.show_document_userlist = m_header.action_view_document_userlist->get_active(); m_pref_view_document_userlist_connection.unblock(); } void Gobby::ViewCommands::on_menu_chat_userlist_toggled() { m_pref_view_chat_userlist_connection.block(); m_preferences.appearance.show_chat_userlist = m_header.action_view_chat_userlist->get_active(); m_pref_view_chat_userlist_connection.unblock(); } void Gobby::ViewCommands::on_pref_toolbar_changed() { m_menu_view_toolbar_connection.block(); m_header.action_view_toolbar->set_active( m_preferences.appearance.show_toolbar); m_menu_view_toolbar_connection.unblock(); } void Gobby::ViewCommands::on_pref_statusbar_changed() { m_menu_view_statusbar_connection.block(); m_header.action_view_statusbar->set_active( m_preferences.appearance.show_statusbar); m_menu_view_statusbar_connection.unblock(); } void Gobby::ViewCommands::on_pref_browser_changed() { m_menu_view_browser_connection.block(); m_header.action_view_browser->set_active( m_preferences.appearance.show_browser); m_menu_view_browser_connection.unblock(); } void Gobby::ViewCommands::on_pref_chat_changed() { m_menu_view_chat_connection.block(); m_header.action_view_chat->set_active( m_preferences.appearance.show_chat); m_menu_view_chat_connection.unblock(); } void Gobby::ViewCommands::on_pref_document_userlist_changed() { m_menu_view_document_userlist_connection.block(); m_header.action_view_document_userlist->set_active( m_preferences.appearance.show_document_userlist); m_menu_view_document_userlist_connection.unblock(); } void Gobby::ViewCommands::on_pref_chat_userlist_changed() { m_menu_view_chat_userlist_connection.block(); m_header.action_view_chat_userlist->set_active( m_preferences.appearance.show_chat_userlist); m_menu_view_chat_userlist_connection.unblock(); } void Gobby::ViewCommands::on_menu_language_changed( const Glib::RefPtr& action) { Glib::RefPtr language_action = Glib::RefPtr::cast_static(action); g_assert(m_current_view != NULL); m_document_language_changed_connection.block(); m_current_view->set_language(language_action->get_language()); m_document_language_changed_connection.unblock(); } void Gobby::ViewCommands::on_doc_language_changed(GtkSourceLanguage* language) { // Select the language of document: const Glib::RefPtr action = (language != NULL) ? m_header.lookup_language_action( m_current_view->get_language()) : m_header.action_view_highlight_none; m_menu_language_changed_connection.block(); // lookup_language_action guarantees not to return NULL: action->set_active(true); m_menu_language_changed_connection.unblock(); } gobby-0.4.94/code/commands/user-join-commands.cpp0000644000175000017500000002755311531722663016606 00000000000000/* Gobby - GTK-based collaborative text editor * Copyright (C) 2008-2011 Armin Burgmeier * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "commands/user-join-commands.hpp" #include "util/i18n.hpp" #include namespace { inline const gchar* _(const gchar* msgid) { return Gobby::_(msgid); } void set_error_text(Gobby::SessionView& view, const Glib::ustring& initial_text) { using namespace Gobby; Glib::ustring type_text; // TODO: Adjust this for chat sessions type_text = _("You can still watch others editing " "the document, but you cannot edit " "it yourself."); const Glib::ustring info_text = _("If you have an idea what could have caused the " "problem, then you may attempt to solve it and " "try again (after having closed this document). " "Otherwise it is most likely a bug in the " "software. In that case, please file a bug report " "at http://gobby.0x539.de/trac/newticket and " "provide as much information as you can, including " "what you did when the problem occurred and how to " "reproduce the problem (if possible) so that we " "can fix the problem in a later version. " "Thank you."); view.set_info( Glib::ustring::compose( _("User Join failed: %1"), initial_text) + "\n\n" + type_text + "\n\n" + info_text, true); } void retr_local_user_func(InfUser* user, gpointer user_data) { (*static_cast(user_data)) = user; } } class Gobby::UserJoinCommands::UserJoinInfo { public: UserJoinInfo(UserJoinCommands& commands, InfcSessionProxy* proxy, Folder& folder, SessionView& view); ~UserJoinInfo(); private: static void on_synchronization_complete_static(InfSession* session, InfXmlConnection* conn, gpointer user_data) { static_cast(user_data)-> on_synchronization_complete(); } static void on_user_join_failed_static(InfcUserRequest* request, const GError* error, gpointer user_data) { static_cast(user_data)-> on_user_join_failed(error); } static void on_user_join_finished_static(InfcUserRequest* request, InfUser* user, gpointer user_data) { static_cast(user_data)-> on_user_join_finished(user); } void on_synchronization_complete(); void on_user_join_failed(const GError* error); void on_user_join_finished(InfUser* user); void attempt_user_join(); void user_join_complete(InfUser* user); void finish(); void add_text_user_properties(std::vector& params, TextSessionView& view); UserJoinCommands& m_commands; InfcSessionProxy* m_proxy; Folder& m_folder; SessionView& m_view; InfcUserRequest* m_request; gulong m_synchronization_complete_handler; gulong m_user_join_failed_handler; gulong m_user_join_finished_handler; guint m_retry_index; }; Gobby::UserJoinCommands::UserJoinInfo::UserJoinInfo(UserJoinCommands& cmds, InfcSessionProxy* proxy, Folder& folder, SessionView& view): m_commands(cmds), m_proxy(proxy), m_folder(folder), m_view(view), m_request(NULL), m_synchronization_complete_handler(0), m_user_join_failed_handler(0), m_user_join_finished_handler(0), m_retry_index(1) { g_object_ref(m_proxy); InfSession* session = infc_session_proxy_get_session(proxy); if(inf_session_get_status(session) == INF_SESSION_SYNCHRONIZING) { // If not yet synchronization wait for synchronization until // attempting userjoin m_synchronization_complete_handler = g_signal_connect_after( G_OBJECT(session), "synchronization-complete", G_CALLBACK(on_synchronization_complete_static), this); } else { // Delay this call to make sure we don't call finish() // right inside the constructor. Glib::signal_idle().connect( sigc::bind_return(sigc::mem_fun( *this, &UserJoinInfo::attempt_user_join), false)); } } Gobby::UserJoinCommands::UserJoinInfo::~UserJoinInfo() { if(m_synchronization_complete_handler) { InfSession* session = infc_session_proxy_get_session(m_proxy); g_signal_handler_disconnect( session, m_synchronization_complete_handler); } if(m_request) { g_signal_handler_disconnect(m_request, m_user_join_failed_handler); g_signal_handler_disconnect(m_request, m_user_join_finished_handler); g_object_unref(m_request); } g_object_unref(m_proxy); } void Gobby::UserJoinCommands::UserJoinInfo::on_synchronization_complete() { // Disconnect signal handler, so that we don't get notified when // syncing this document in running state to another location // or server. InfSession* session = infc_session_proxy_get_session(m_proxy); g_signal_handler_disconnect(session, m_synchronization_complete_handler); m_synchronization_complete_handler = 0; // Attempt user join after synchronization attempt_user_join(); } void Gobby::UserJoinCommands::UserJoinInfo:: on_user_join_failed(const GError* error) { if(error->domain == inf_user_error_quark() && error->code == INF_USER_ERROR_NAME_IN_USE) { // If name is in use retry with alternative user name ++m_retry_index; attempt_user_join(); } else { set_error_text(m_view, error->message); finish(); } } void Gobby::UserJoinCommands::UserJoinInfo:: on_user_join_finished(InfUser* user) { user_join_complete(user); } void Gobby::UserJoinCommands::UserJoinInfo::attempt_user_join() { const Preferences& preferences = m_commands.m_preferences; // Check if there is already a local user, for example for a // synced-in document. InfSession* session = infc_session_proxy_get_session(m_proxy); InfUserTable* user_table = inf_session_get_user_table(session); InfUser* user = NULL; inf_user_table_foreach_local_user(user_table, retr_local_user_func, &user); if(user != NULL) { user_join_complete(user); } else { std::vector params; const GParameter name_param = { "name", { 0 } }; params.push_back(name_param); const GParameter status_param = { "status", { 0 } }; params.push_back(status_param); g_value_init(¶ms[0].value, G_TYPE_STRING); g_value_init(¶ms[1].value, INF_TYPE_USER_STATUS); const Glib::ustring& pref_name = preferences.user.name; if(m_retry_index > 1) { gchar* name = g_strdup_printf( "%s %u", pref_name.c_str(), m_retry_index); g_value_take_string(¶ms[0].value, name); } else { g_value_set_static_string( ¶ms[0].value, pref_name.c_str()); } if(m_folder.get_current_document() == &m_view) g_value_set_enum(¶ms[1].value, INF_USER_ACTIVE); else g_value_set_enum(¶ms[1].value, INF_USER_INACTIVE); // Extra properties for text session: TextSessionView* text_view = dynamic_cast(&m_view); if(text_view) add_text_user_properties(params, *text_view); GError* error = NULL; m_request = infc_session_proxy_join_user( m_proxy, ¶ms[0], params.size(), &error); for(unsigned int i = 0; i < params.size(); ++i) g_value_unset(¶ms[i].value); if(m_request == NULL) { set_error_text(m_view, error->message); g_error_free(error); } else { g_object_ref(m_request); m_view.set_info( _("User Join in progress..."), false); m_user_join_failed_handler = g_signal_connect( m_request, "failed", G_CALLBACK(on_user_join_failed_static), this); m_user_join_finished_handler = g_signal_connect( m_request, "finished", G_CALLBACK(on_user_join_finished_static), this); } } } void Gobby::UserJoinCommands::UserJoinInfo::user_join_complete(InfUser* user) { // TODO: Notify the user about alternative user name if s/he uses any m_view.unset_info(); // TODO: set_active_user should maybe go to SessionView base: TextSessionView* text_view = dynamic_cast(&m_view); if(text_view) text_view->set_active_user(INF_TEXT_USER(user)); ChatSessionView* chat_view = dynamic_cast(&m_view); if(chat_view) chat_view->set_active_user(user); finish(); } void Gobby::UserJoinCommands::UserJoinInfo::finish() { UserJoinCommands::UserJoinMap::iterator iter = m_commands.m_user_join_map.find(m_proxy); g_assert(iter != m_commands.m_user_join_map.end()); m_commands.m_user_join_map.erase(iter); delete this; } void Gobby::UserJoinCommands::UserJoinInfo:: add_text_user_properties(std::vector& params, TextSessionView& view) { InfTextSession* session = view.get_session(); GParameter hue_param = { "hue", { 0 } }; g_value_init(&hue_param.value, G_TYPE_DOUBLE); g_value_set_double(&hue_param.value, m_commands.m_preferences.user.hue); params.push_back(hue_param); GParameter vector_param = { "vector", { 0 } }; g_value_init(&vector_param.value, INF_ADOPTED_TYPE_STATE_VECTOR); g_value_take_boxed(&vector_param.value, inf_adopted_state_vector_copy( inf_adopted_algorithm_get_current( inf_adopted_session_get_algorithm( INF_ADOPTED_SESSION(session))))); params.push_back(vector_param); GParameter caret_param = { "caret-position", { 0 } }; g_value_init(&caret_param.value, G_TYPE_UINT); GtkTextBuffer* buffer = GTK_TEXT_BUFFER(view.get_text_buffer()); GtkTextMark* mark = gtk_text_buffer_get_insert(buffer); GtkTextIter caret_iter; gtk_text_buffer_get_iter_at_mark(buffer, &caret_iter, mark); g_value_set_uint(&caret_param.value, gtk_text_iter_get_offset(&caret_iter)); params.push_back(caret_param); } Gobby::UserJoinCommands:: UserJoinCommands(SubscriptionCommands& subscription_commands, const Preferences& preferences): m_preferences(preferences) { subscription_commands.signal_subscribe_session().connect( sigc::mem_fun( *this, &UserJoinCommands::on_subscribe_session)); subscription_commands.signal_unsubscribe_session().connect( sigc::mem_fun( *this, &UserJoinCommands::on_unsubscribe_session)); } Gobby::UserJoinCommands::~UserJoinCommands() { for(UserJoinMap::iterator iter = m_user_join_map.begin(); iter != m_user_join_map.end(); ++iter) { delete iter->second; } } void Gobby::UserJoinCommands::on_subscribe_session(InfcSessionProxy* proxy, Folder& folder, SessionView& view) { g_assert(m_user_join_map.find(proxy) == m_user_join_map.end()); m_user_join_map[proxy] = new UserJoinInfo(*this, proxy, folder, view); } void Gobby::UserJoinCommands::on_unsubscribe_session(InfcSessionProxy* proxy, Folder& folder, SessionView& view) { UserJoinMap::iterator iter = m_user_join_map.find(proxy); // If the user join was successful the session is no longer in // our map, so don't assert here. if(iter != m_user_join_map.end()) { delete iter->second; m_user_join_map.erase(iter); } } gobby-0.4.94/code/features.hpp.in0000644000175000017500000000460411543672407013516 00000000000000/* code/features.hpp.in. Generated from configure.ac by autoheader. */ /* always defined to indicate that i18n is enabled */ #undef ENABLE_NLS /* gettext domain */ #undef GETTEXT_PACKAGE /* Define the location where the catalogs will be installed */ #undef GOBBY_LOCALEDIR /* Define to 1 if you have the `bind_textdomain_codeset' function. */ #undef HAVE_BIND_TEXTDOMAIN_CODESET /* Define to 1 if you have the `dcgettext' function. */ #undef HAVE_DCGETTEXT /* Define if the GNU gettext() function is already present or preinstalled. */ #undef HAVE_GETTEXT /* Define to 1 if you have the header file. */ #undef HAVE_INTTYPES_H /* Define if your file defines LC_MESSAGES. */ #undef HAVE_LC_MESSAGES /* Define to 1 if you have the header file. */ #undef HAVE_LOCALE_H /* Define to 1 if you have the header file. */ #undef HAVE_MEMORY_H /* Define to 1 if you have the header file. */ #undef HAVE_STDINT_H /* Define to 1 if you have the header file. */ #undef HAVE_STDLIB_H /* Define to 1 if you have the header file. */ #undef HAVE_STRINGS_H /* Define to 1 if you have the header file. */ #undef HAVE_STRING_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_STAT_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_TYPES_H /* Define to 1 if you have the header file. */ #undef HAVE_UNISTD_H /* Define to 1 if your C compiler doesn't accept -c and -o together. */ #undef NO_MINUS_C_MINUS_O /* Name of package */ #undef PACKAGE /* Define to the address where bug reports for this package should be sent. */ #undef PACKAGE_BUGREPORT /* Define to the full name of this package. */ #undef PACKAGE_NAME /* Define to the full name and version of this package. */ #undef PACKAGE_STRING /* Define to the one symbol short name of this package. */ #undef PACKAGE_TARNAME /* Define to the home page for this package. */ #undef PACKAGE_URL /* Define to the version of this package. */ #undef PACKAGE_VERSION /* Define whether we are running on Mac OS X. */ #undef PLATFORM_OSX /* Define whether we are running on Mac OS X with the quartz GDK target */ #undef PLATFORM_OSX_NATIVE /* Define to 1 if you have the ANSI C header files. */ #undef STDC_HEADERS /* Version number of package */ #undef VERSION /* Whether support for unique is enabled */ #undef WITH_UNIQUE gobby-0.4.94/m4/0000755000175000017500000000000011543672435010245 500000000000000gobby-0.4.94/m4/Makefile.in0000644000175000017500000002425211543672415012235 00000000000000# 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@ subdir = m4 DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = $(top_builddir)/code/features.hpp 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 = DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALL_LINGUAS = @ALL_LINGUAS@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@ DOC_USER_FORMATS = @DOC_USER_FORMATS@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GMOFILES = @GMOFILES@ GMSGFMT = @GMSGFMT@ GREP = @GREP@ HELP_DIR = @HELP_DIR@ 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@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MKINSTALLDIRS = @MKINSTALLDIRS@ MSGFMT = @MSGFMT@ MSGFMT_OPTS = @MSGFMT_OPTS@ MSGMERGE = @MSGMERGE@ OBJEXT = @OBJEXT@ OMF_DIR = @OMF_DIR@ 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@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ WINDRES = @WINDRES@ 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_CXX = @ac_ct_CXX@ 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@ gobby_CFLAGS = @gobby_CFLAGS@ gobby_LIBS = @gobby_LIBS@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infinote_CFLAGS = @infinote_CFLAGS@ infinote_LIBS = @infinote_LIBS@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ 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@ unique_CFLAGS = @unique_CFLAGS@ unique_LIBS = @unique_LIBS@ m4macros = \ ac_pkg_check_gtkmm.m4 EXTRA_DIST = $(m4macros) all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(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) --gnu m4/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu m4/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: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): 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 installdirs: 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 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-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 pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic distclean \ distclean-generic 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-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-generic pdf pdf-am ps ps-am uninstall uninstall-am # 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: gobby-0.4.94/m4/ac_pkg_check_gtkmm.m40000644000175000017500000000033011517044575014202 00000000000000AC_DEFUN(PKG_CHECK_GTKMM, [ GTKMM_VER=0 PKG_CHECK_MODULES(GTKMM, gtkmm-2.4 >= 2.8.0, [ GTKMM_VER=28 ], [ PKG_CHECK_MODULES(GTKMM, gtkmm-2.4 >= 2.6.0) GTKMM_VER=26 ]) AC_SUBST(GTKMM_VER) ]) gobby-0.4.94/m4/Makefile.am0000644000175000017500000000007711517044575012224 00000000000000m4macros = \ ac_pkg_check_gtkmm.m4 EXTRA_DIST = $(m4macros) gobby-0.4.94/INSTALL0000644000175000017500000003633211424242734010676 00000000000000Installation Instructions ************************* Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. This file is offered as-is, without warranty of any kind. Basic Installation ================== Briefly, the shell commands `./configure; make; make install' should configure, build, and install this package. The following more-detailed instructions are generic; see the `README' file for instructions specific to this package. Some packages provide this `INSTALL' file but do not implement all of the features documented below. The lack of an optional feature in a given package is not necessarily a bug. More recommendations for GNU packages can be found in *note Makefile Conventions: (standards)Makefile Conventions. The `configure' shell script attempts to guess correct values for various system-dependent variables used during compilation. It uses those values to create a `Makefile' in each directory of the package. It may also create one or more `.h' files containing system-dependent definitions. Finally, it creates a shell script `config.status' that you can run in the future to recreate the current configuration, and a file `config.log' containing compiler output (useful mainly for debugging `configure'). It can also use an optional file (typically called `config.cache' and enabled with `--cache-file=config.cache' or simply `-C') that saves the results of its tests to speed up reconfiguring. Caching is disabled by default to prevent problems with accidental use of stale cache files. If you need to do unusual things to compile the package, please try to figure out how `configure' could check whether to do them, and mail diffs or instructions to the address given in the `README' so they can be considered for the next release. If you are using the cache, and at some point `config.cache' contains results you don't want to keep, you may remove or edit it. The file `configure.ac' (or `configure.in') is used to create `configure' by a program called `autoconf'. You need `configure.ac' if you want to change it or regenerate `configure' using a newer version of `autoconf'. The simplest way to compile this package is: 1. `cd' to the directory containing the package's source code and type `./configure' to configure the package for your system. Running `configure' might take a while. While running, it prints some messages telling which features it is checking for. 2. Type `make' to compile the package. 3. Optionally, type `make check' to run any self-tests that come with the package, generally using the just-built uninstalled binaries. 4. Type `make install' to install the programs and any data files and documentation. When installing into a prefix owned by root, it is recommended that the package be configured and built as a regular user, and only the `make install' phase executed with root privileges. 5. Optionally, type `make installcheck' to repeat any self-tests, but this time using the binaries in their final installed location. This target does not install anything. Running this target as a regular user, particularly if the prior `make install' required root privileges, verifies that the installation completed correctly. 6. You can remove the program binaries and object files from the source code directory by typing `make clean'. To also remove the files that `configure' created (so you can compile the package for a different kind of computer), type `make distclean'. There is also a `make maintainer-clean' target, but that is intended mainly for the package's developers. If you use it, you may have to get all sorts of other programs in order to regenerate files that came with the distribution. 7. Often, you can also type `make uninstall' to remove the installed files again. In practice, not all packages have tested that uninstallation works correctly, even though it is required by the GNU Coding Standards. 8. Some packages, particularly those that use Automake, provide `make distcheck', which can by used by developers to test that all other targets like `make install' and `make uninstall' work correctly. This target is generally not run by end users. Compilers and Options ===================== Some systems require unusual options for compilation or linking that the `configure' script does not know about. Run `./configure --help' for details on some of the pertinent environment variables. You can give `configure' initial values for configuration parameters by setting variables in the command line or in the environment. Here is an example: ./configure CC=c99 CFLAGS=-g LIBS=-lposix *Note Defining Variables::, for more details. Compiling For Multiple Architectures ==================================== You can compile the package for more than one kind of computer at the same time, by placing the object files for each architecture in their own directory. To do this, you can use GNU `make'. `cd' to the directory where you want the object files and executables to go and run the `configure' script. `configure' automatically checks for the source code in the directory that `configure' is in and in `..'. This is known as a "VPATH" build. With a non-GNU `make', it is safer to compile the package for one architecture at a time in the source code directory. After you have installed the package for one architecture, use `make distclean' before reconfiguring for another architecture. On MacOS X 10.5 and later systems, you can create libraries and executables that work on multiple system types--known as "fat" or "universal" binaries--by specifying multiple `-arch' options to the compiler but only a single `-arch' option to the preprocessor. Like this: ./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ CPP="gcc -E" CXXCPP="g++ -E" This is not guaranteed to produce working output in all cases, you may have to build one architecture at a time and combine the results using the `lipo' tool if you have problems. Installation Names ================== By default, `make install' installs the package's commands under `/usr/local/bin', include files under `/usr/local/include', etc. You can specify an installation prefix other than `/usr/local' by giving `configure' the option `--prefix=PREFIX', where PREFIX must be an absolute file name. You can specify separate installation prefixes for architecture-specific files and architecture-independent files. If you pass the option `--exec-prefix=PREFIX' to `configure', the package uses PREFIX as the prefix for installing programs and libraries. Documentation and other data files still use the regular prefix. In addition, if you use an unusual directory layout you can give options like `--bindir=DIR' to specify different values for particular kinds of files. Run `configure --help' for a list of the directories you can set and what kinds of files go in them. In general, the default for these options is expressed in terms of `${prefix}', so that specifying just `--prefix' will affect all of the other directory specifications that were not explicitly provided. The most portable way to affect installation locations is to pass the correct locations to `configure'; however, many packages provide one or both of the following shortcuts of passing variable assignments to the `make install' command line to change installation locations without having to reconfigure or recompile. The first method involves providing an override variable for each affected directory. For example, `make install prefix=/alternate/directory' will choose an alternate location for all directory configuration variables that were expressed in terms of `${prefix}'. Any directories that were specified during `configure', but not in terms of `${prefix}', must each be overridden at install time for the entire installation to be relocated. The approach of makefile variable overrides for each directory variable is required by the GNU Coding Standards, and ideally causes no recompilation. However, some platforms have known limitations with the semantics of shared libraries that end up requiring recompilation when using this method, particularly noticeable in packages that use GNU Libtool. The second method involves providing the `DESTDIR' variable. For example, `make install DESTDIR=/alternate/directory' will prepend `/alternate/directory' before all installation names. The approach of `DESTDIR' overrides is not required by the GNU Coding Standards, and does not work on platforms that have drive letters. On the other hand, it does better at avoiding recompilation issues, and works well even when some directory options were not specified in terms of `${prefix}' at `configure' time. Optional Features ================= If the package supports it, you can cause programs to be installed with an extra prefix or suffix on their names by giving `configure' the option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. Some packages pay attention to `--enable-FEATURE' options to `configure', where FEATURE indicates an optional part of the package. They may also pay attention to `--with-PACKAGE' options, where PACKAGE is something like `gnu-as' or `x' (for the X Window System). The `README' should mention any `--enable-' and `--with-' options that the package recognizes. For packages that use the X Window System, `configure' can usually find the X include and library files automatically, but if it doesn't, you can use the `configure' options `--x-includes=DIR' and `--x-libraries=DIR' to specify their locations. Some packages offer the ability to configure how verbose the execution of `make' will be. For these packages, running `./configure --enable-silent-rules' sets the default to minimal output, which can be overridden with `make V=1'; while running `./configure --disable-silent-rules' sets the default to verbose, which can be overridden with `make V=0'. Particular systems ================== On HP-UX, the default C compiler is not ANSI C compatible. If GNU CC is not installed, it is recommended to use the following options in order to use an ANSI C compiler: ./configure CC="cc -Ae -D_XOPEN_SOURCE=500" and if that doesn't work, install pre-built binaries of GCC for HP-UX. On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot parse its `' header file. The option `-nodtk' can be used as a workaround. If GNU CC is not installed, it is therefore recommended to try ./configure CC="cc" and if that doesn't work, try ./configure CC="cc -nodtk" On Solaris, don't put `/usr/ucb' early in your `PATH'. This directory contains several dysfunctional programs; working variants of these programs are available in `/usr/bin'. So, if you need `/usr/ucb' in your `PATH', put it _after_ `/usr/bin'. On Haiku, software installed for all users goes in `/boot/common', not `/usr/local'. It is recommended to use the following options: ./configure --prefix=/boot/common Specifying the System Type ========================== There may be some features `configure' cannot figure out automatically, but needs to determine by the type of machine the package will run on. Usually, assuming the package is built to be run on the _same_ architectures, `configure' can figure that out, but if it prints a message saying it cannot guess the machine type, give it the `--build=TYPE' option. TYPE can either be a short name for the system type, such as `sun4', or a canonical name which has the form: CPU-COMPANY-SYSTEM where SYSTEM can have one of these forms: OS KERNEL-OS See the file `config.sub' for the possible values of each field. If `config.sub' isn't included in this package, then this package doesn't need to know the machine type. If you are _building_ compiler tools for cross-compiling, you should use the option `--target=TYPE' to select the type of system they will produce code for. If you want to _use_ a cross compiler, that generates code for a platform different from the build platform, you should specify the "host" platform (i.e., that on which the generated programs will eventually be run) with `--host=TYPE'. Sharing Defaults ================ If you want to set default values for `configure' scripts to share, you can create a site shell script called `config.site' that gives default values for variables like `CC', `cache_file', and `prefix'. `configure' looks for `PREFIX/share/config.site' if it exists, then `PREFIX/etc/config.site' if it exists. Or, you can set the `CONFIG_SITE' environment variable to the location of the site script. A warning: not all `configure' scripts look for a site script. Defining Variables ================== Variables not defined in a site shell script can be set in the environment passed to `configure'. However, some packages may run configure again during the build, and the customized values of these variables may be lost. In order to avoid this problem, you should set them in the `configure' command line, using `VAR=value'. For example: ./configure CC=/usr/local2/bin/gcc causes the specified `gcc' to be used as the C compiler (unless it is overridden in the site shell script). Unfortunately, this technique does not work for `CONFIG_SHELL' due to an Autoconf bug. Until the bug is fixed you can use this workaround: CONFIG_SHELL=/bin/bash /bin/bash ./configure CONFIG_SHELL=/bin/bash `configure' Invocation ====================== `configure' recognizes the following options to control how it operates. `--help' `-h' Print a summary of all of the options to `configure', and exit. `--help=short' `--help=recursive' Print a summary of the options unique to this package's `configure', and exit. The `short' variant lists options used only in the top level, while the `recursive' variant lists options also present in any nested packages. `--version' `-V' Print the version of Autoconf used to generate the `configure' script, and exit. `--cache-file=FILE' Enable the cache: use and save the results of the tests in FILE, traditionally `config.cache'. FILE defaults to `/dev/null' to disable caching. `--config-cache' `-C' Alias for `--cache-file=config.cache'. `--quiet' `--silent' `-q' Do not print messages saying which checks are being made. To suppress all normal output, redirect it to `/dev/null' (any error messages will still be shown). `--srcdir=DIR' Look for the package's source code in directory DIR. Usually `configure' can determine that directory automatically. `--prefix=DIR' Use DIR as the installation prefix. *note Installation Names:: for more details, including other options available for fine-tuning the installation locations. `--no-create' `-n' Run the configure checks, but stop before creating any output files. `configure' also accepts some other, not widely useful, options. Run `configure --help' for more details. gobby-0.4.94/gobby-0.5.desktop.in0000644000175000017500000000043711531722663013247 00000000000000[Desktop Entry] _Name=Gobby _GenericName=Collaborative Editor _X-GNOME-FullName=Gobby Collaborative Editor (0.5) _Comment=Edit text files collaboratively Exec=gobby-0.5 Terminal=false Type=Application Icon=gobby-0.5 Categories=TextEditor;Network; StartupNotify=true MimeType=text/plain; gobby-0.4.94/COPYING0000644000175000017500000004311011517044575010676 00000000000000 GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) year name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Library General Public License instead of this License.