From 13e6e4ab1290cda9426eaedfeda70f7491b6b083 Mon Sep 17 00:00:00 2001 From: Perberos Date: Sun, 6 Nov 2011 17:13:49 -0300 Subject: initial --- caja/Makefile | 612 +++++++++++++++++++++++++++++++++++++++++ caja/Makefile.am | 27 ++ caja/Makefile.in | 612 +++++++++++++++++++++++++++++++++++++++++ caja/caja-open-terminal.c | 664 +++++++++++++++++++++++++++++++++++++++++++++ caja/caja-open-terminal.h | 55 ++++ caja/eel-mate-extensions.c | 200 ++++++++++++++ caja/eel-mate-extensions.h | 40 +++ caja/open-terminal.c | 64 +++++ 8 files changed, 2274 insertions(+) create mode 100644 caja/Makefile create mode 100644 caja/Makefile.am create mode 100644 caja/Makefile.in create mode 100644 caja/caja-open-terminal.c create mode 100644 caja/caja-open-terminal.h create mode 100644 caja/eel-mate-extensions.c create mode 100644 caja/eel-mate-extensions.h create mode 100644 caja/open-terminal.c (limited to 'caja') diff --git a/caja/Makefile b/caja/Makefile new file mode 100644 index 0000000..cddf549 --- /dev/null +++ b/caja/Makefile @@ -0,0 +1,612 @@ +# Makefile.in generated by automake 1.11.1 from Makefile.am. +# caja/Makefile. Generated from Makefile.in by configure. + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + + + +pkgdatadir = $(datadir)/mate-terminal +pkgincludedir = $(includedir)/mate-terminal +pkglibdir = $(libdir)/mate-terminal +pkglibexecdir = $(libexecdir)/mate-terminal +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 = x86_64-unknown-linux-gnu +host_triplet = x86_64-unknown-linux-gnu +subdir = caja +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)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +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)$(caja_extensiondir)" +LTLIBRARIES = $(caja_extension_LTLIBRARIES) +libcaja_open_terminal_la_DEPENDENCIES = +am_libcaja_open_terminal_la_OBJECTS = eel-mate-extensions.lo \ + caja-open-terminal.lo open-terminal.lo +libcaja_open_terminal_la_OBJECTS = \ + $(am_libcaja_open_terminal_la_OBJECTS) +AM_V_lt = $(am__v_lt_$(V)) +am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) +am__v_lt_0 = --silent +libcaja_open_terminal_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ + $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ + $(AM_CFLAGS) $(CFLAGS) $(libcaja_open_terminal_la_LDFLAGS) \ + $(LDFLAGS) -o $@ +DEFAULT_INCLUDES = -I. -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_$(V)) +am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) +am__v_CC_0 = @echo " CC " $@; +AM_V_at = $(am__v_at_$(V)) +am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) +am__v_at_0 = @ +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_$(V)) +am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) +am__v_CCLD_0 = @echo " CCLD " $@; +AM_V_GEN = $(am__v_GEN_$(V)) +am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) +am__v_GEN_0 = @echo " GEN " $@; +SOURCES = $(libcaja_open_terminal_la_SOURCES) +DIST_SOURCES = $(libcaja_open_terminal_la_SOURCES) +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = ${SHELL} /home/perberos/Documentos/gnu-linux/mate/repositorio/mate-terminal/missing --run aclocal-1.11 +ACLOCAL_AMFLAGS = ${ACLOCAL_FLAGS} +ALL_LINGUAS = +AMTAR = ${SHELL} /home/perberos/Documentos/gnu-linux/mate/repositorio/mate-terminal/missing --run tar +AM_DEFAULT_VERBOSITY = 1 +AR = ar +AUTOCONF = ${SHELL} /home/perberos/Documentos/gnu-linux/mate/repositorio/mate-terminal/missing --run autoconf +AUTOHEADER = ${SHELL} /home/perberos/Documentos/gnu-linux/mate/repositorio/mate-terminal/missing --run autoheader +AUTOMAKE = ${SHELL} /home/perberos/Documentos/gnu-linux/mate/repositorio/mate-terminal/missing --run automake-1.11 +AWK = gawk +CATALOGS = +CATOBJEXT = .gmo +CC = gcc +CCDEPMODE = depmode=gcc3 +CFLAGS = -s -Os -mtune=native -march=native +CPP = gcc -E +CPPFLAGS = +CYGPATH_W = echo +DATADIRNAME = share +DEFS = -DHAVE_CONFIG_H +DEPDIR = .deps +DISTCHECK_CONFIGURE_FLAGS = --disable-scrollkeeper +DLLTOOL = false +DOC_USER_FORMATS = +DSYMUTIL = +DUMPBIN = +ECHO_C = +ECHO_N = -n +ECHO_T = +EGREP = /bin/grep -E +EXEEXT = +FGREP = /bin/grep -F +GETTEXT_PACKAGE = mate-terminal +GLIB_GENMARSHAL = glib-genmarshal +GLIB_MKENUMS = glib-mkenums +GMOFILES = +GMSGFMT = /usr/bin/msgfmt +GREP = /bin/grep +GTK_BUILDER_CONVERT = /usr/bin/gtk-builder-convert +HELP_DIR = ${datadir}/mate/help +INSTALL = /bin/install -c +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_PROGRAM = ${INSTALL} +INSTALL_SCRIPT = ${INSTALL} +INSTALL_STRIP_PROGRAM = $(install_sh) -c -s +INSTOBJEXT = .mo +INTLLIBS = +INTLTOOL_EXTRACT = /usr/bin/intltool-extract +INTLTOOL_MERGE = /usr/bin/intltool-merge +INTLTOOL_PERL = /usr/bin/perl +INTLTOOL_UPDATE = /usr/bin/intltool-update +LD = /usr/bin/ld -m elf_x86_64 +LDFLAGS = +LIBOBJS = +LIBS = +LIBTOOL = $(SHELL) $(top_builddir)/libtool +LIPO = +LN_S = ln -s +LTLIBOBJS = +MAINT = +MAKEINFO = ${SHELL} /home/perberos/Documentos/gnu-linux/mate/repositorio/mate-terminal/missing --run makeinfo +MANIFEST_TOOL = : +MATECONFTOOL = /usr/bin/mateconftool-2 +MATECONF_SCHEMA_CONFIG_SOURCE = xml:merged:/etc/mateconf/mateconf.xml.defaults +MATECONF_SCHEMA_FILE_DIR = $(sysconfdir)/mateconf/schemas +MKDIR_P = /bin/mkdir -p +MKINSTALLDIRS = ./mkinstalldirs +MSGFMT = /usr/bin/msgfmt +MSGFMT_OPTS = -c +MSGMERGE = /usr/bin/msgmerge +NM = /usr/bin/nm -B +NMEDIT = +OBJDUMP = objdump +OBJEXT = o +OMF_DIR = ${datadir}/omf +OTOOL = +OTOOL64 = +PACKAGE = mate-terminal +PACKAGE_BUGREPORT = http://bugzilla.mate.org/enter_bug.cgi?product=mate-terminal +PACKAGE_NAME = MATE Terminal +PACKAGE_STRING = MATE Terminal 2.32.0 +PACKAGE_TARNAME = mate-terminal +PACKAGE_URL = +PACKAGE_VERSION = 2.32.0 +PATH_SEPARATOR = : +PKG_CONFIG = /usr/bin/pkg-config +PKG_CONFIG_LIBDIR = +PKG_CONFIG_PATH = +POFILES = +POSUB = po +PO_IN_DATADIR_FALSE = +PO_IN_DATADIR_TRUE = +RANLIB = ranlib +SED = /bin/sed +SET_MAKE = +SHELL = /bin/sh +SMCLIENT_CFLAGS = +SMCLIENT_LIBS = -lSM -lICE +STRIP = strip +TERMINAL_API_VERSION = 0 +TERMINAL_MAJOR_VERSION = 2 +TERMINAL_MICRO_VERSION = 0 +TERMINAL_MINOR_VERSION = 32 +TERM_CFLAGS = -pthread -DMATECORBA2=1 -I/usr/include/vte-0.0 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/pango-1.0 -I/usr/include/gtk-2.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/lib/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng14 -I/usr/include/mateconf/2 -I/usr/include/matecorba-2.0 +TERM_LIBS = -pthread -lvte -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgio-2.0 -lpangoft2-1.0 -lpangocairo-1.0 -lgdk_pixbuf-2.0 -lpng14 -lm -lcairo -lpango-1.0 -lfreetype -lfontconfig -lgobject-2.0 -lgmodule-2.0 -lgthread-2.0 -lrt -lmateconf-2 -lglib-2.0 -lX11 +USE_NLS = yes +VERSION = 2.32.0 +WARN_CFLAGS = -Wall -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-sign-compare +XGETTEXT = /usr/bin/xgettext +abs_builddir = /home/perberos/Documentos/gnu-linux/mate/repositorio/mate-terminal/caja +abs_srcdir = /home/perberos/Documentos/gnu-linux/mate/repositorio/mate-terminal/caja +abs_top_builddir = /home/perberos/Documentos/gnu-linux/mate/repositorio/mate-terminal +abs_top_srcdir = /home/perberos/Documentos/gnu-linux/mate/repositorio/mate-terminal +ac_ct_AR = ar +ac_ct_CC = gcc +ac_ct_DUMPBIN = +am__include = include +am__leading_dot = . +am__quote = +am__tar = ${AMTAR} chof - "$$tardir" +am__untar = ${AMTAR} xf - +bindir = ${exec_prefix}/bin +build = x86_64-unknown-linux-gnu +build_alias = +build_cpu = x86_64 +build_os = linux-gnu +build_vendor = unknown +builddir = . +datadir = ${datarootdir} +datarootdir = ${prefix}/share +docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} +dvidir = ${docdir} +exec_prefix = ${prefix} +host = x86_64-unknown-linux-gnu +host_alias = +host_cpu = x86_64 +host_os = linux-gnu +host_vendor = unknown +htmldir = ${docdir} +includedir = ${prefix}/include +infodir = ${datarootdir}/info +install_sh = ${SHELL} /home/perberos/Documentos/gnu-linux/mate/repositorio/mate-terminal/install-sh +libdir = ${exec_prefix}/lib +libexecdir = ${exec_prefix}/libexec +localedir = ${datarootdir}/locale +localstatedir = /var +mandir = ${datarootdir}/man +mkdir_p = /bin/mkdir -p +oldincludedir = /usr/include +pdfdir = ${docdir} +prefix = /usr +program_transform_name = s,x,x, +psdir = ${docdir} +sbindir = ${exec_prefix}/sbin +sharedstatedir = ${prefix}/com +srcdir = . +sysconfdir = /etc +target_alias = +top_build_prefix = ../ +top_builddir = .. +top_srcdir = .. +INCLUDES = \ + -DG_LOG_DOMAIN=\"Caja-Open-Terminal\" \ + -DDATADIR=\"$(datadir)\" \ + -DMATELOCALEDIR=\""$(datadir)/locale"\" \ + -I$(top_srcdir) \ + -I$(top_builddir) \ + $(WARN_CFLAGS) \ + -Werror \ + $(DISABLE_DEPRECATED_CFLAGS) \ + $(CAJA_CFLAGS) \ + $(MATECONF_CFLAGS) \ + $(MATEDESKTOP_CFLAGS) + +caja_extensiondir = $(CAJA_EXTENSION_DIR) +caja_extension_LTLIBRARIES = libcaja-open-terminal.la +libcaja_open_terminal_la_SOURCES = \ + eel-mate-extensions.c \ + eel-mate-extensions.h \ + caja-open-terminal.h \ + caja-open-terminal.c \ + caja-open-terminal.h \ + open-terminal.c + +libcaja_open_terminal_la_LDFLAGS = -module -avoid-version +libcaja_open_terminal_la_LIBADD = $(CAJA_LIBS) $(MATECONF_LIBS) $(MATEDESKTOP_LIBS) +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: $(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) --foreign caja/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign caja/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): +install-caja_extensionLTLIBRARIES: $(caja_extension_LTLIBRARIES) + @$(NORMAL_INSTALL) + test -z "$(caja_extensiondir)" || $(MKDIR_P) "$(DESTDIR)$(caja_extensiondir)" + @list='$(caja_extension_LTLIBRARIES)'; test -n "$(caja_extensiondir)" || list=; \ + list2=; for p in $$list; do \ + if test -f $$p; then \ + list2="$$list2 $$p"; \ + else :; fi; \ + done; \ + test -z "$$list2" || { \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(caja_extensiondir)'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(caja_extensiondir)"; \ + } + +uninstall-caja_extensionLTLIBRARIES: + @$(NORMAL_UNINSTALL) + @list='$(caja_extension_LTLIBRARIES)'; test -n "$(caja_extensiondir)" || list=; \ + for p in $$list; do \ + $(am__strip_dir) \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(caja_extensiondir)/$$f'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(caja_extensiondir)/$$f"; \ + done + +clean-caja_extensionLTLIBRARIES: + -test -z "$(caja_extension_LTLIBRARIES)" || rm -f $(caja_extension_LTLIBRARIES) + @list='$(caja_extension_LTLIBRARIES)'; for p in $$list; do \ + dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ + test "$$dir" != "$$p" || dir=.; \ + echo "rm -f \"$${dir}/so_locations\""; \ + rm -f "$${dir}/so_locations"; \ + done +libcaja-open-terminal.la: $(libcaja_open_terminal_la_OBJECTS) $(libcaja_open_terminal_la_DEPENDENCIES) + $(AM_V_CCLD)$(libcaja_open_terminal_la_LINK) -rpath $(caja_extensiondir) $(libcaja_open_terminal_la_OBJECTS) $(libcaja_open_terminal_la_LIBADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +include ./$(DEPDIR)/caja-open-terminal.Plo +include ./$(DEPDIR)/eel-mate-extensions.Plo +include ./$(DEPDIR)/open-terminal.Plo + +.c.o: + $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# $(AM_V_CC) \ +# source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(COMPILE) -c $< + +.c.obj: + $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# $(AM_V_CC) \ +# source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: + $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +# $(AM_V_CC) \ +# source='$<' object='$@' libtool=yes \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +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 $(LTLIBRARIES) +installdirs: + for dir in "$(DESTDIR)$(caja_extensiondir)"; 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-caja_extensionLTLIBRARIES clean-generic clean-libtool \ + 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-caja_extensionLTLIBRARIES + +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 \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-caja_extensionLTLIBRARIES + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS all all-am check check-am clean \ + clean-caja_extensionLTLIBRARIES clean-generic clean-libtool \ + ctags distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am \ + install-caja_extensionLTLIBRARIES 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 \ + mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \ + uninstall-am uninstall-caja_extensionLTLIBRARIES + + +# 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: diff --git a/caja/Makefile.am b/caja/Makefile.am new file mode 100644 index 0000000..1e6b8be --- /dev/null +++ b/caja/Makefile.am @@ -0,0 +1,27 @@ +INCLUDES = \ + -DG_LOG_DOMAIN=\"Caja-Open-Terminal\" \ + -DDATADIR=\"$(datadir)\" \ + -DMATELOCALEDIR=\""$(datadir)/locale"\" \ + -I$(top_srcdir) \ + -I$(top_builddir) \ + $(WARN_CFLAGS) \ + -Werror \ + $(DISABLE_DEPRECATED_CFLAGS) \ + $(CAJA_CFLAGS) \ + $(MATECONF_CFLAGS) \ + $(MATEDESKTOP_CFLAGS) + +caja_extensiondir=$(CAJA_EXTENSION_DIR) + +caja_extension_LTLIBRARIES=libcaja-open-terminal.la + +libcaja_open_terminal_la_SOURCES = \ + eel-mate-extensions.c \ + eel-mate-extensions.h \ + caja-open-terminal.h \ + caja-open-terminal.c \ + caja-open-terminal.h \ + open-terminal.c + +libcaja_open_terminal_la_LDFLAGS = -module -avoid-version +libcaja_open_terminal_la_LIBADD = $(CAJA_LIBS) $(MATECONF_LIBS) $(MATEDESKTOP_LIBS) diff --git a/caja/Makefile.in b/caja/Makefile.in new file mode 100644 index 0000000..9b3b107 --- /dev/null +++ b/caja/Makefile.in @@ -0,0 +1,612 @@ +# 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 = caja +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)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +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)$(caja_extensiondir)" +LTLIBRARIES = $(caja_extension_LTLIBRARIES) +libcaja_open_terminal_la_DEPENDENCIES = +am_libcaja_open_terminal_la_OBJECTS = eel-mate-extensions.lo \ + caja-open-terminal.lo open-terminal.lo +libcaja_open_terminal_la_OBJECTS = \ + $(am_libcaja_open_terminal_la_OBJECTS) +AM_V_lt = $(am__v_lt_$(V)) +am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) +am__v_lt_0 = --silent +libcaja_open_terminal_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ + $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ + $(AM_CFLAGS) $(CFLAGS) $(libcaja_open_terminal_la_LDFLAGS) \ + $(LDFLAGS) -o $@ +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_$(V)) +am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) +am__v_CC_0 = @echo " CC " $@; +AM_V_at = $(am__v_at_$(V)) +am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) +am__v_at_0 = @ +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_$(V)) +am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) +am__v_CCLD_0 = @echo " CCLD " $@; +AM_V_GEN = $(am__v_GEN_$(V)) +am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) +am__v_GEN_0 = @echo " GEN " $@; +SOURCES = $(libcaja_open_terminal_la_SOURCES) +DIST_SOURCES = $(libcaja_open_terminal_la_SOURCES) +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@ +ALL_LINGUAS = @ALL_LINGUAS@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CATALOGS = @CATALOGS@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIRNAME = @DATADIRNAME@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@ +DLLTOOL = @DLLTOOL@ +DOC_USER_FORMATS = @DOC_USER_FORMATS@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ +GLIB_GENMARSHAL = @GLIB_GENMARSHAL@ +GLIB_MKENUMS = @GLIB_MKENUMS@ +GMOFILES = @GMOFILES@ +GMSGFMT = @GMSGFMT@ +GREP = @GREP@ +GTK_BUILDER_CONVERT = @GTK_BUILDER_CONVERT@ +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@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MATECONFTOOL = @MATECONFTOOL@ +MATECONF_SCHEMA_CONFIG_SOURCE = @MATECONF_SCHEMA_CONFIG_SOURCE@ +MATECONF_SCHEMA_FILE_DIR = @MATECONF_SCHEMA_FILE_DIR@ +MKDIR_P = @MKDIR_P@ +MKINSTALLDIRS = @MKINSTALLDIRS@ +MSGFMT = @MSGFMT@ +MSGFMT_OPTS = @MSGFMT_OPTS@ +MSGMERGE = @MSGMERGE@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OMF_DIR = @OMF_DIR@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +POFILES = @POFILES@ +POSUB = @POSUB@ +PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ +PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SMCLIENT_CFLAGS = @SMCLIENT_CFLAGS@ +SMCLIENT_LIBS = @SMCLIENT_LIBS@ +STRIP = @STRIP@ +TERMINAL_API_VERSION = @TERMINAL_API_VERSION@ +TERMINAL_MAJOR_VERSION = @TERMINAL_MAJOR_VERSION@ +TERMINAL_MICRO_VERSION = @TERMINAL_MICRO_VERSION@ +TERMINAL_MINOR_VERSION = @TERMINAL_MINOR_VERSION@ +TERM_CFLAGS = @TERM_CFLAGS@ +TERM_LIBS = @TERM_LIBS@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +WARN_CFLAGS = @WARN_CFLAGS@ +XGETTEXT = @XGETTEXT@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +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@ +INCLUDES = \ + -DG_LOG_DOMAIN=\"Caja-Open-Terminal\" \ + -DDATADIR=\"$(datadir)\" \ + -DMATELOCALEDIR=\""$(datadir)/locale"\" \ + -I$(top_srcdir) \ + -I$(top_builddir) \ + $(WARN_CFLAGS) \ + -Werror \ + $(DISABLE_DEPRECATED_CFLAGS) \ + $(CAJA_CFLAGS) \ + $(MATECONF_CFLAGS) \ + $(MATEDESKTOP_CFLAGS) + +caja_extensiondir = $(CAJA_EXTENSION_DIR) +caja_extension_LTLIBRARIES = libcaja-open-terminal.la +libcaja_open_terminal_la_SOURCES = \ + eel-mate-extensions.c \ + eel-mate-extensions.h \ + caja-open-terminal.h \ + caja-open-terminal.c \ + caja-open-terminal.h \ + open-terminal.c + +libcaja_open_terminal_la_LDFLAGS = -module -avoid-version +libcaja_open_terminal_la_LIBADD = $(CAJA_LIBS) $(MATECONF_LIBS) $(MATEDESKTOP_LIBS) +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .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) --foreign caja/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign caja/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-caja_extensionLTLIBRARIES: $(caja_extension_LTLIBRARIES) + @$(NORMAL_INSTALL) + test -z "$(caja_extensiondir)" || $(MKDIR_P) "$(DESTDIR)$(caja_extensiondir)" + @list='$(caja_extension_LTLIBRARIES)'; test -n "$(caja_extensiondir)" || list=; \ + list2=; for p in $$list; do \ + if test -f $$p; then \ + list2="$$list2 $$p"; \ + else :; fi; \ + done; \ + test -z "$$list2" || { \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(caja_extensiondir)'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(caja_extensiondir)"; \ + } + +uninstall-caja_extensionLTLIBRARIES: + @$(NORMAL_UNINSTALL) + @list='$(caja_extension_LTLIBRARIES)'; test -n "$(caja_extensiondir)" || list=; \ + for p in $$list; do \ + $(am__strip_dir) \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(caja_extensiondir)/$$f'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(caja_extensiondir)/$$f"; \ + done + +clean-caja_extensionLTLIBRARIES: + -test -z "$(caja_extension_LTLIBRARIES)" || rm -f $(caja_extension_LTLIBRARIES) + @list='$(caja_extension_LTLIBRARIES)'; for p in $$list; do \ + dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ + test "$$dir" != "$$p" || dir=.; \ + echo "rm -f \"$${dir}/so_locations\""; \ + rm -f "$${dir}/so_locations"; \ + done +libcaja-open-terminal.la: $(libcaja_open_terminal_la_OBJECTS) $(libcaja_open_terminal_la_DEPENDENCIES) + $(AM_V_CCLD)$(libcaja_open_terminal_la_LINK) -rpath $(caja_extensiondir) $(libcaja_open_terminal_la_OBJECTS) $(libcaja_open_terminal_la_LIBADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/caja-open-terminal.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eel-mate-extensions.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/open-terminal.Plo@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +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 $(LTLIBRARIES) +installdirs: + for dir in "$(DESTDIR)$(caja_extensiondir)"; 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-caja_extensionLTLIBRARIES clean-generic clean-libtool \ + 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-caja_extensionLTLIBRARIES + +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 \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-caja_extensionLTLIBRARIES + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS all all-am check check-am clean \ + clean-caja_extensionLTLIBRARIES clean-generic clean-libtool \ + ctags distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am \ + install-caja_extensionLTLIBRARIES 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 \ + mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \ + uninstall-am uninstall-caja_extensionLTLIBRARIES + + +# 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: diff --git a/caja/caja-open-terminal.c b/caja/caja-open-terminal.c new file mode 100644 index 0000000..378270a --- /dev/null +++ b/caja/caja-open-terminal.c @@ -0,0 +1,664 @@ +/* + * caja-open-terminal.c + * + * Copyright (C) 2004, 2005 Free Software Foundation, Inc. + * + * This library 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 library 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 + * Library General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this library; if not, write to the Free + * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + * + * Author: Christian Neumair + * + */ + +#ifdef HAVE_CONFIG_H + #include /* for GETTEXT_PACKAGE */ +#endif + +#include "caja-open-terminal.h" +#include "eel-mate-extensions.h" + +#include + +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include /* for atoi */ +#include /* for strcmp */ +#include /* for chdir */ +#include + +static void caja_open_terminal_instance_init (CajaOpenTerminal *cvs); +static void caja_open_terminal_class_init (CajaOpenTerminalClass *class); + +static GType terminal_type = 0; + +typedef enum { + /* local files. Always open "conventionally", i.e. cd and spawn. */ + FILE_INFO_LOCAL, + FILE_INFO_DESKTOP, + /* SFTP: Shell terminals are opened "remote" (i.e. with ssh client), + * commands are executed like *_OTHER */ + FILE_INFO_SFTP, + /* OTHER: Terminals and commands are opened by mapping the URI back + * to ~/.gvfs, i.e. to the GVFS FUSE bridge + */ + FILE_INFO_OTHER +} TerminalFileInfo; + +static TerminalFileInfo +get_terminal_file_info (const char *uri) +{ + TerminalFileInfo ret; + char *uri_scheme; + + uri_scheme = g_uri_parse_scheme (uri); + + if (uri_scheme == NULL) { + ret = FILE_INFO_OTHER; + } else if (strcmp (uri_scheme, "file") == 0) { + ret = FILE_INFO_LOCAL; + } else if (strcmp (uri_scheme, "x-caja-desktop") == 0) { + ret = FILE_INFO_DESKTOP; + } else if (strcmp (uri_scheme, "sftp") == 0 || + strcmp (uri_scheme, "ssh") == 0) { + ret = FILE_INFO_SFTP; + } else { + ret = FILE_INFO_OTHER; + } + + g_free (uri_scheme); + + return ret; +} + +static MateConfClient *mateconf_client = NULL; + +static inline gboolean +desktop_opens_home_dir (void) +{ + return mateconf_client_get_bool (mateconf_client, + "/apps/caja-open-terminal/desktop_opens_home_dir", + NULL); +} + +static inline gboolean +display_mc_item (void) +{ + return mateconf_client_get_bool (mateconf_client, + "/apps/caja-open-terminal/display_mc_item", + NULL); +} + +static inline gboolean +desktop_is_home_dir () +{ + return mateconf_client_get_bool (mateconf_client, + "/apps/caja/preferences/desktop_is_home_dir", + NULL); +} + +/* a very simple URI parsing routine from Launchpad #333462, until GLib supports URI parsing (MATE #489862) */ +#define SFTP_PREFIX "sftp://" +static void +parse_sftp_uri (GFile *file, + char **user, + char **host, + unsigned int *port, + char **path) +{ + char *tmp, *save; + char *uri; + + uri = g_file_get_uri (file); + g_assert (uri != NULL); + save = uri; + + *path = NULL; + *user = NULL; + *host = NULL; + *port = 0; + + /* skip intial 'sftp:// prefix */ + g_assert (!strncmp (uri, SFTP_PREFIX, strlen (SFTP_PREFIX))); + uri += strlen (SFTP_PREFIX); + + /* cut out the path */ + tmp = strchr (uri, '/'); + if (tmp != NULL) { + *path = g_uri_unescape_string (tmp, "/"); + *tmp = '\0'; + } + + /* read the username - it ends with @ */ + tmp = strchr (uri, '@'); + if (tmp != NULL) { + *tmp++ = '\0'; + + *user = strdup (uri); + if (strchr (*user, ':') != NULL) { + /* chop the password */ + *(strchr (*user, ':')) = '\0'; + } + + uri = tmp; + } + + /* now read the port, starts with : */ + tmp = strchr (uri, ':'); + if (tmp != NULL) { + *tmp++ = '\0'; + *port = atoi (tmp); /*FIXME: getservbyname*/ + } + + /* what is left is the host */ + *host = strdup (uri); + g_free (save); +} + +static char * +get_remote_ssh_command (const char *uri, + const char *command_to_run) +{ + GFile *file; + + char *host_name, *path, *user_name; + char *command, *user_host, *unescaped_path; + char *quoted_path; + char *remote_command; + char *quoted_remote_command; + char *port_str; + guint host_port; + + g_assert (uri != NULL); + + file = g_file_new_for_uri (uri); + parse_sftp_uri (file, &user_name, &host_name, &host_port, &path); + g_object_unref (file); + + /* FIXME to we have to consider the remote file encoding? */ + unescaped_path = g_uri_unescape_string (path, NULL); + quoted_path = g_shell_quote (unescaped_path); + + port_str = NULL; + if (host_port != 0) { + port_str = g_strdup_printf (" -p %d", host_port); + } else { + port_str = g_strdup (""); + } + + if (user_name != NULL) { + user_host = g_strdup_printf ("%s@%s", user_name, host_name); + } else { + user_host = g_strdup (host_name); + } + + if (command_to_run != NULL) { + remote_command = g_strdup_printf ("cd %s && exec %s", quoted_path, command_to_run); + } else { + remote_command = g_strdup_printf ("cd %s && exec $SHELL -l", quoted_path); + } + + quoted_remote_command = g_shell_quote (remote_command); + + command = g_strdup_printf ("ssh %s%s -t %s", user_host, port_str, quoted_remote_command); + + g_free (user_name); + g_free (user_host); + g_free (host_name); + g_free (port_str); + + g_free (path); + g_free (unescaped_path); + g_free (quoted_path); + + g_free (remote_command); + g_free (quoted_remote_command); + + return command; +} + +static inline char * +get_gvfs_path_for_uri (const char *uri) +{ + GFile *file; + char *path; + + file = g_file_new_for_uri (uri); + path = g_file_get_path (file); + g_object_unref (file); + + return path; +} + +static char * +get_terminal_command_for_file_info (cajaFileInfo *file_info, + const char *command_to_run, + gboolean remote_terminal) +{ + char *uri, *path, *quoted_path; + char *command; + + uri = caja_file_info_get_activation_uri (file_info); + + path = NULL; + command = NULL; + + switch (get_terminal_file_info (uri)) { + case FILE_INFO_LOCAL: + if (uri != NULL) { + path = g_filename_from_uri (uri, NULL, NULL); + } + break; + + case FILE_INFO_DESKTOP: + if (desktop_is_home_dir () || desktop_opens_home_dir ()) { + path = g_strdup (g_get_home_dir ()); + } else { + path = g_strdup (g_get_user_special_dir (G_USER_DIRECTORY_DESKTOP)); + } + break; + + case FILE_INFO_SFTP: + if (remote_terminal && uri != NULL) { + command = get_remote_ssh_command (uri, command_to_run); + break; + } + + /* fall through */ + case FILE_INFO_OTHER: + if (uri != NULL) { + /* map back remote URI to local path */ + path = get_gvfs_path_for_uri (uri); + } + break; + + default: + g_assert_not_reached (); + } + + if (command == NULL && path != NULL) { + quoted_path = g_shell_quote (path); + + if (command_to_run != NULL) { + command = g_strdup_printf ("cd %s && exec %s", quoted_path, command_to_run); + } else { + command = g_strdup_printf ("cd %s && exec $SHELL -l", quoted_path); + } + + g_free (quoted_path); + } + + g_free (path); + g_free (uri); + + return command; +} + + +static void +open_terminal (cajaMenuItem *item, + cajaFileInfo *file_info) +{ + char *terminal_command, *command_to_run; + GdkScreen *screen; + gboolean remote_terminal; + + screen = g_object_get_data (G_OBJECT (item), "CajaOpenTerminal::screen"); + command_to_run = g_object_get_data (G_OBJECT (item), "CajaOpenTerminal::command-to-run"); + remote_terminal = GPOINTER_TO_UINT (g_object_get_data (G_OBJECT (item), "CajaOpenTerminal::remote-terminal")); + + terminal_command = get_terminal_command_for_file_info (file_info, command_to_run, remote_terminal); + if (terminal_command != NULL) { + _not_eel_mate_open_terminal_on_screen (terminal_command, screen); + } + g_free (terminal_command); +} + +static void +open_terminal_callback (cajaMenuItem *item, + cajaFileInfo *file_info) +{ + open_terminal (item, file_info); +} + +static cajaMenuItem * +open_terminal_menu_item_new (cajaFileInfo *file_info, + TerminalFileInfo terminal_file_info, + GdkScreen *screen, + const char *command_to_run, + gboolean remote_terminal, + gboolean is_file_item) +{ + cajaMenuItem *ret; + char *action_name; + const char *name; + const char *tooltip; + + if (command_to_run == NULL) { + switch (terminal_file_info) { + case FILE_INFO_SFTP: + if (remote_terminal) { + name = _("Open in _Remote Terminal"); + } else { + name = _("Open in _Local Terminal"); + } + + if (is_file_item) { + tooltip = _("Open the currently selected folder in a terminal"); + } else { + tooltip = _("Open the currently open folder in a terminal"); + } + break; + + case FILE_INFO_LOCAL: + case FILE_INFO_OTHER: + name = _("Open in T_erminal"); + + if (is_file_item) { + tooltip = _("Open the currently selected folder in a terminal"); + } else { + tooltip = _("Open the currently open folder in a terminal"); + } + break; + + case FILE_INFO_DESKTOP: + if (desktop_opens_home_dir ()) { + name = _("Open T_erminal"); + tooltip = _("Open a terminal"); + } else { + name = _("Open in T_erminal"); + tooltip = _("Open the currently open folder in a terminal"); + } + break; + + default: + g_assert_not_reached (); + } + } else if (!strcmp (command_to_run, "mc")) { + switch (terminal_file_info) { + case FILE_INFO_LOCAL: + case FILE_INFO_SFTP: + case FILE_INFO_OTHER: + name = _("Open in _Midnight Commander"); + if (is_file_item) { + tooltip = _("Open the currently selected folder in the terminal file manager Midnight Commander"); + } else { + tooltip = _("Open the currently open folder in the terminal file manager Midnight Commander"); + } + break; + + case FILE_INFO_DESKTOP: + if (desktop_opens_home_dir ()) { + name = _("Open _Midnight Commander"); + tooltip = _("Open the terminal file manager Midnight Commander"); + } else { + name = _("Open in _Midnight Commander"); + tooltip = _("Open the currently open folder in the terminal file manager Midnight Commander"); + } + break; + + default: + g_assert_not_reached (); + } + } else { + g_assert_not_reached (); + } + + if (command_to_run != NULL) { + action_name = g_strdup_printf (remote_terminal ? + "CajaOpenTerminal::open_remote_terminal_%s" : + "CajaOpenTerminal::open_terminal_%s", + command_to_run); + } else { + action_name = g_strdup (remote_terminal ? + "CajaOpenTerminal::open_remote_terminal" : + "CajaOpenTerminal::open_terminal"); + } + ret = caja_menu_item_new (action_name, name, tooltip, "utilities-terminal"); + g_free (action_name); + + g_object_set_data (G_OBJECT (ret), + "CajaOpenTerminal::screen", + screen); + g_object_set_data_full (G_OBJECT (ret), "CajaOpenTerminal::command-to-run", + g_strdup (command_to_run), + (GDestroyNotify) g_free); + g_object_set_data (G_OBJECT (ret), "CajaOpenTerminal::remote-terminal", + GUINT_TO_POINTER (remote_terminal)); + + + g_object_set_data_full (G_OBJECT (ret), "file-info", + g_object_ref (file_info), + (GDestroyNotify) g_object_unref); + + + g_signal_connect (ret, "activate", + G_CALLBACK (open_terminal_callback), + file_info); + + + return ret; +} + +static gboolean +terminal_locked_down (void) +{ + return mateconf_client_get_bool (mateconf_client, + "/desktop/mate/lockdown/disable_command_line", + NULL); +} + +/* used to determine for remote URIs whether GVFS is capable of mapping them to ~/.gvfs */ +static gboolean +uri_has_local_path (const char *uri) +{ + GFile *file; + char *path; + gboolean ret; + + file = g_file_new_for_uri (uri); + path = g_file_get_path (file); + + ret = (path != NULL); + + g_free (path); + g_object_unref (file); + + return ret; +} + +static GList * +caja_open_terminal_get_background_items (cajaMenuProvider *provider, + GtkWidget *window, + cajaFileInfo *file_info) +{ + gchar *uri; + GList *items; + cajaMenuItem *item; + TerminalFileInfo terminal_file_info; + + if (terminal_locked_down ()) { + return NULL; + } + + items = NULL; + + uri = caja_file_info_get_activation_uri (file_info); + terminal_file_info = get_terminal_file_info (uri); + + if (terminal_file_info == FILE_INFO_SFTP || + terminal_file_info == FILE_INFO_DESKTOP || + uri_has_local_path (uri)) { + /* local locations or SSH */ + item = open_terminal_menu_item_new (file_info, terminal_file_info, gtk_widget_get_screen (window), + NULL, terminal_file_info == FILE_INFO_SFTP, FALSE); + items = g_list_append (items, item); + } + + if ((terminal_file_info == FILE_INFO_SFTP || + terminal_file_info == FILE_INFO_OTHER) && + uri_has_local_path (uri)) { + /* remote locations that offer local back-mapping */ + item = open_terminal_menu_item_new (file_info, terminal_file_info, gtk_widget_get_screen (window), + NULL, FALSE, FALSE); + items = g_list_append (items, item); + } + + if (display_mc_item () && + g_find_program_in_path ("mc") && + ((terminal_file_info == FILE_INFO_DESKTOP && + (desktop_is_home_dir () || desktop_opens_home_dir ())) || + uri_has_local_path (uri))) { + item = open_terminal_menu_item_new (file_info, terminal_file_info, gtk_widget_get_screen (window), "mc", FALSE, FALSE); + items = g_list_append (items, item); + } + + g_free (uri); + + return items; +} + +GList * +caja_open_terminal_get_file_items (cajaMenuProvider *provider, + GtkWidget *window, + GList *files) +{ + gchar *uri; + GList *items; + cajaMenuItem *item; + TerminalFileInfo terminal_file_info; + + if (terminal_locked_down ()) { + return NULL; + } + + if (g_list_length (files) != 1 || + (!caja_file_info_is_directory (files->data) && + caja_file_info_get_file_type (files->data) != G_FILE_TYPE_SHORTCUT && + caja_file_info_get_file_type (files->data) != G_FILE_TYPE_MOUNTABLE)) { + return NULL; + } + + items = NULL; + + uri = caja_file_info_get_activation_uri (files->data); + terminal_file_info = get_terminal_file_info (uri); + + switch (terminal_file_info) { + case FILE_INFO_LOCAL: + case FILE_INFO_SFTP: + case FILE_INFO_OTHER: + if (terminal_file_info == FILE_INFO_SFTP || uri_has_local_path (uri)) { + item = open_terminal_menu_item_new (files->data, terminal_file_info, gtk_widget_get_screen (window), + NULL, terminal_file_info == FILE_INFO_SFTP, TRUE); + items = g_list_append (items, item); + } + + if (terminal_file_info == FILE_INFO_SFTP && + uri_has_local_path (uri)) { + item = open_terminal_menu_item_new (files->data, terminal_file_info, gtk_widget_get_screen (window), NULL, FALSE, TRUE); + items = g_list_append (items, item); + } + + if (display_mc_item () && + g_find_program_in_path ("mc") && + uri_has_local_path (uri)) { + item = open_terminal_menu_item_new (files->data, terminal_file_info, gtk_widget_get_screen (window), "mc", TRUE, FALSE); + items = g_list_append (items, item); + } + break; + + case FILE_INFO_DESKTOP: + break; + + default: + g_assert_not_reached (); + } + + g_free (uri); + + return items; +} + +static void +caja_open_terminal_menu_provider_iface_init (cajaMenuProviderIface *iface) +{ + iface->get_background_items = caja_open_terminal_get_background_items; + iface->get_file_items = caja_open_terminal_get_file_items; +} + +static void +caja_open_terminal_instance_init (CajaOpenTerminal *cvs) +{ +} + +static void +caja_open_terminal_class_init (CajaOpenTerminalClass *class) +{ + g_assert (mateconf_client == NULL); + mateconf_client = mateconf_client_get_default (); +} + +static void +caja_open_terminal_class_finalize (CajaOpenTerminalClass *class) +{ + g_assert (mateconf_client != NULL); + g_object_unref (mateconf_client); + mateconf_client = NULL; +} + +GType +caja_open_terminal_get_type (void) +{ + return terminal_type; +} + +void +caja_open_terminal_register_type (GTypeModule *module) +{ + static const GTypeInfo info = { + sizeof (CajaOpenTerminalClass), + (GBaseInitFunc) NULL, + (GBaseFinalizeFunc) NULL, + (GClassInitFunc) caja_open_terminal_class_init, + (GClassFinalizeFunc) caja_open_terminal_class_finalize, + NULL, + sizeof (CajaOpenTerminal), + 0, + (GInstanceInitFunc) caja_open_terminal_instance_init, + }; + + static const GInterfaceInfo menu_provider_iface_info = { + (GInterfaceInitFunc) caja_open_terminal_menu_provider_iface_init, + NULL, + NULL + }; + + terminal_type = g_type_module_register_type (module, + G_TYPE_OBJECT, + "CajaOpenTerminal", + &info, 0); + + g_type_module_add_interface (module, + terminal_type, + caja_TYPE_MENU_PROVIDER, + &menu_provider_iface_info); +} diff --git a/caja/caja-open-terminal.h b/caja/caja-open-terminal.h new file mode 100644 index 0000000..7132f43 --- /dev/null +++ b/caja/caja-open-terminal.h @@ -0,0 +1,55 @@ +/* + * caja-open-terminal.h + * + * Copyright (C) 2004, 2005 Free Software Foundation, Inc. + * + * This library 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 library 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 + * Library General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this library; if not, write to the Free + * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + * + * Author: Christian Neumair + * + */ + +#ifndef CAJA_OPEN_TERMINAL_H +#define CAJA_OPEN_TERMINAL_H + +#include + +G_BEGIN_DECLS + +/* Declarations for the open terminal extension object. This object will be + * instantiated by caja. It implements the GInterfaces + * exported by libcaja. */ + + +#define CAJA_TYPE_OPEN_TERMINAL (caja_open_terminal_get_type ()) +#define CAJA_OPEN_TERMINAL(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), CAJA_TYPE_OPEN_TERMINAL, CajaOpenTerminal)) +#define CAJA_IS_OPEN_TERMINAL(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), CAJA_TYPE_OPEN_TERMINAL)) +typedef struct _CajaOpenTerminal CajaOpenTerminal; +typedef struct _CajaOpenTerminalClass CajaOpenTerminalClass; + +struct _CajaOpenTerminal { + GObject parent_slot; +}; + +struct _CajaOpenTerminalClass { + GObjectClass parent_slot; +}; + +GType caja_open_terminal_get_type (void); +void caja_open_terminal_register_type (GTypeModule *module); + +G_END_DECLS + +#endif diff --git a/caja/eel-mate-extensions.c b/caja/eel-mate-extensions.c new file mode 100644 index 0000000..b15377d --- /dev/null +++ b/caja/eel-mate-extensions.c @@ -0,0 +1,200 @@ +/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */ + +/* eel-mate-extensions.c - implementation of new functions that operate on + mate classes. Perhaps some of these should be + rolled into mate someday. + + Copyright (C) 1999, 2000, 2001 Eazel, Inc. + + The Mate Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + The Mate Library 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the Mate Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. + + Authors: Darin Adler +*/ + +#include + +#define MATE_DESKTOP_USE_UNSTABLE_API + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/* Return a command string containing the path to a terminal on this system. */ + +static char * +try_terminal_command (const char *program, + const char *args) +{ + char *program_in_path, *quoted, *result; + + if (program == NULL) { + return NULL; + } + + program_in_path = g_find_program_in_path (program); + if (program_in_path == NULL) { + return NULL; + } + + quoted = g_shell_quote (program_in_path); + if (args == NULL || args[0] == '\0') { + return quoted; + } + result = g_strconcat (quoted, " ", args, NULL); + g_free (quoted); + return result; +} + +static char * +try_terminal_command_argv (int argc, + char **argv) +{ + GString *string; + int i; + char *quoted, *result; + + if (argc == 0) { + return NULL; + } + + if (argc == 1) { + return try_terminal_command (argv[0], NULL); + } + + string = g_string_new (argv[1]); + for (i = 2; i < argc; i++) { + quoted = g_shell_quote (argv[i]); + g_string_append_c (string, ' '); + g_string_append (string, quoted); + g_free (quoted); + } + result = try_terminal_command (argv[0], string->str); + g_string_free (string, TRUE); + + return result; +} + +static char * +get_terminal_command_prefix (gboolean for_command) +{ + int argc; + char **argv; + char *command; + guint i; + static const char *const commands[][3] = { + { "comando", "-x", "" }, + { "terminal", "-x", "" }, + { "lxterminal", "-x", "" }, + { "vte", "-x", "" }, + { "mate-terminal", "-x", "" }, + { "dtterm", "-e", "-ls" }, + { "nxterm", "-e", "-ls" }, + { "color-xterm", "-e", "-ls" }, + { "rxvt", "-e", "-ls" }, + { "xterm", "-e", "-ls" }, + }; + + /* Try the terminal from preferences. Use without any + * arguments if we are just doing a standalone terminal. + */ + argc = 0; + argv = g_new0 (char *, 1); + mate_desktop_prepend_terminal_to_vector (&argc, &argv); + + command = NULL; + if (argc != 0) { + if (for_command) { + command = try_terminal_command_argv (argc, argv); + } else { + /* Strip off the arguments in a lame attempt + * to make it be an interactive shell. + */ + command = try_terminal_command (argv[0], NULL); + } + } + + while (argc != 0) { + g_free (argv[--argc]); + } + g_free (argv); + + if (command != NULL) { + return command; + } + + /* Try well-known terminal applications in same order that gmc did. */ + for (i = 0; i < G_N_ELEMENTS (commands); i++) { + command = try_terminal_command (commands[i][0], + commands[i][for_command ? 1 : 2]); + if (command != NULL) { + break; + } + } + + return command; +} + +char * +_not_eel_mate_make_terminal_command (const char *command) +{ + char *prefix, *quoted, *terminal_command; + + if (command == NULL) { + return get_terminal_command_prefix (FALSE); + } + prefix = get_terminal_command_prefix (TRUE); + quoted = g_shell_quote (command); + terminal_command = g_strconcat (prefix, " /bin/sh -c ", quoted, NULL); + g_free (prefix); + g_free (quoted); + return terminal_command; +} + +void +_not_eel_mate_open_terminal_on_screen (const char *command, + GdkScreen *screen) +{ + char *command_line; + + if (screen == NULL) { + screen = gdk_screen_get_default (); + } + + command_line = _not_eel_mate_make_terminal_command (command); + if (command_line == NULL) { + g_message ("Could not start a terminal"); + return; + } + gdk_spawn_command_line_on_screen (screen, command_line, NULL); + g_free (command_line); +} + +void +_not_eel_mate_open_terminal (const char *command) +{ + _not_eel_mate_open_terminal_on_screen (command, NULL); +} diff --git a/caja/eel-mate-extensions.h b/caja/eel-mate-extensions.h new file mode 100644 index 0000000..70eb714 --- /dev/null +++ b/caja/eel-mate-extensions.h @@ -0,0 +1,40 @@ +/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */ + +/* eel-mate-extensions.h - interface for new functions that operate on + mate classes. Perhaps some of these should be + rolled into mate someday. + + Copyright (C) 1999, 2000, 2001 Eazel, Inc. + + The Mate Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + The Mate Library 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the Mate Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. + + Authors: Darin Adler +*/ + +#ifndef _NOT_EEL_MATE_EXTENSIONS_H +#define _NOT_EEL_MATE_EXTENSIONS_H + +#include + +/* Return a command string containing the path to a terminal on this system. */ +char * _not_eel_mate_make_terminal_command (const char *command); + +/* Open up a new terminal, optionally passing in a command to execute */ +void _not_eel_mate_open_terminal (const char *command); +void _not_eel_mate_open_terminal_on_screen (const char *command, + GdkScreen *screen); + +#endif /* _NOT_EEL_MATE_EXTENSIONS_H */ diff --git a/caja/open-terminal.c b/caja/open-terminal.c new file mode 100644 index 0000000..17fcaa1 --- /dev/null +++ b/caja/open-terminal.c @@ -0,0 +1,64 @@ +/* + * open-terminal.c + * + * Copyright (C) 2004, 2005 Free Software Foundation, Inc. + * + * This library 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 library 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 + * Library General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this library; if not, write to the Free + * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + * + * Author: Christian Neumair + * + */ + +#ifdef HAVE_CONFIG_H + #include +#endif + +#include "caja-open-terminal.h" + +#include +#include + +static GType type_list[1]; + +void +caja_module_initialize (GTypeModule *module) +{ + g_print ("Initializing caja-open-terminal extension\n"); + + caja_open_terminal_register_type (module); + type_list[0] = CAJA_TYPE_OPEN_TERMINAL; + + bindtextdomain (GETTEXT_PACKAGE, MATELOCALEDIR); + bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8"); + + mateconf_client_add_dir(mateconf_client_get_default(), + "/desktop/mate/lockdown", + 0, + NULL); +} + +void +caja_module_shutdown (void) +{ + g_print ("Shutting down caja-open-terminal extension\n"); +} + +void +caja_module_list_types (const GType **types, + int *num_types) +{ + *types = type_list; + *num_types = G_N_ELEMENTS (type_list); +} -- cgit v1.2.1