kov changed gksu/trunk/ChangeLog, gksu/trunk/Makefile.am,
gksu/trunk/aclocal.m4, gksu/trunk/config.h.in,
gksu/trunk/configure.ac, gksu/trunk/nautilus-gksu/,
gksu/trunk/nautilus-gksu/Makefile.am,
gksu/trunk/nautilus-gksu/libnautilus-gksu.c,
gksu/trunk/po/POTFILES.in
Gustavo Noronha
kov at costa.debian.org
Sun Jul 9 22:52:12 UTC 2006
- Previous message: kov changed libgksu/trunk/libgksu/libgksu.h
- Next message: kov changed gksu/trunk/po/ca.po, gksu/trunk/po/cs.po,
gksu/trunk/po/da.po, gksu/trunk/po/de.po, gksu/trunk/po/es.po,
gksu/trunk/po/fr.po, gksu/trunk/po/gksu.pot,
gksu/trunk/po/hu.po, gksu/trunk/po/it.po, gksu/trunk/po/nb.po,
gksu/trunk/po/nl.po, gksu/trunk/po/pl.po, gksu/trunk/po/pt.po,
gksu/trunk/po/pt_BR.po, gksu/trunk/po/ro.po,
gksu/trunk/po/ru.po, gksu/trunk/po/sk.po, gksu/trunk/po/xh.po
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Mensagem de log:
add the initial implementation of the nautilus module
-----
Modified: gksu/trunk/ChangeLog
===================================================================
--- gksu/trunk/ChangeLog 2006-07-08 01:05:25 UTC (rev 642)
+++ gksu/trunk/ChangeLog 2006-07-09 22:52:06 UTC (rev 643)
@@ -1,3 +1,9 @@
+2006-07-09 Gustavo Noronha Silva <kov at debian.org>
+
+ * nautilus-gksu:
+ - wrote an initial nautilus module to provide a 'open as administrator'
+ menu item for stuff in nautilus
+
2006-07-03 Gustavo Noronha Silva <kov at debian.org>
* gksu/gksu.c:
Modified: gksu/trunk/Makefile.am
===================================================================
--- gksu/trunk/Makefile.am 2006-07-08 01:05:25 UTC (rev 642)
+++ gksu/trunk/Makefile.am 2006-07-09 22:52:06 UTC (rev 643)
@@ -1,6 +1,12 @@
DISTCLEANFILES = *~
-SUBDIRS = po man gksu
+if ENABLE_NAUTILUS_EXTENSION
+NAUTILUS_EXTENSION_DIR = nautilus-gksu
+else
+NAUTILUS_EXTENSION_DIR =
+endif
+
+SUBDIRS = po man gksu $(NAUTILUS_EXTENSION_DIR)
DIST_SUBDIRS = $(SUBDIRS)
icondir = $(datadir)/pixmaps
Modified: gksu/trunk/aclocal.m4
===================================================================
--- gksu/trunk/aclocal.m4 2006-07-08 01:05:25 UTC (rev 642)
+++ gksu/trunk/aclocal.m4 2006-07-09 22:52:06 UTC (rev 643)
@@ -452,7 +452,7 @@
dnl IT_PROG_INTLTOOL([MINIMUM-VERSION], [no-xml])
-# serial 2 IT_PROG_INTLTOOL
+# serial 35 IT_PROG_INTLTOOL
AC_DEFUN([IT_PROG_INTLTOOL],
[AC_PREREQ([2.50])dnl
@@ -467,9 +467,9 @@
if test -n "$1"; then
AC_MSG_CHECKING(for intltool >= $1)
- INTLTOOL_REQUIRED_VERSION_AS_INT=`echo $1 | awk -F. '{ print $ 1 * 100 + $ 2; }'`
+ INTLTOOL_REQUIRED_VERSION_AS_INT=`echo $1 | awk -F. '{ print $ 1 * 1000 + $ 2 * 100 + $ 3; }'`
INTLTOOL_APPLIED_VERSION=`awk -F\" '/\\$VERSION / { print $ 2; }' ${ac_aux_dir}/intltool-update.in`
- [INTLTOOL_APPLIED_VERSION_AS_INT=`awk -F\" '/\\$VERSION / { split($ 2, VERSION, "."); print VERSION[1] * 100 + VERSION[2];}' ${ac_aux_dir}/intltool-update.in`
+ [INTLTOOL_APPLIED_VERSION_AS_INT=`awk -F\" '/\\$VERSION / { split($ 2, VERSION, "."); print VERSION[1] * 1000 + VERSION[2] * 100 + VERSION[3];}' ${ac_aux_dir}/intltool-update.in`
]
AC_MSG_RESULT([$INTLTOOL_APPLIED_VERSION found])
test "$INTLTOOL_APPLIED_VERSION_AS_INT" -ge "$INTLTOOL_REQUIRED_VERSION_AS_INT" ||
@@ -540,6 +540,9 @@
AC_PATH_PROG(INTLTOOL_MSGMERGE, msgmerge, msgmerge)
AC_PATH_PROG(INTLTOOL_XGETTEXT, xgettext, xgettext)
+# Substitute ALL_LINGUAS so we can use it in po/Makefile
+AC_SUBST(ALL_LINGUAS)
+
IT_PO_SUBDIR([po])
dnl The following is very similar to
Modified: gksu/trunk/config.h.in
===================================================================
--- gksu/trunk/config.h.in 2006-07-08 01:05:25 UTC (rev 642)
+++ gksu/trunk/config.h.in 2006-07-09 22:52:06 UTC (rev 643)
@@ -3,6 +3,9 @@
/* always defined to indicate that i18n is enabled */
#undef ENABLE_NLS
+/* gettext domain */
+#undef GETTEXT_PACKAGE
+
/* Define to 1 if you have the `bind_textdomain_codeset' function. */
#undef HAVE_BIND_TEXTDOMAIN_CODESET
Modified: gksu/trunk/configure.ac
===================================================================
--- gksu/trunk/configure.ac 2006-07-08 01:05:25 UTC (rev 642)
+++ gksu/trunk/configure.ac 2006-07-09 22:52:06 UTC (rev 643)
@@ -12,7 +12,7 @@
AC_DEFINE(PACKAGE, AC_PACKAGE_NAME, [package name])
AC_DEFINE(VERSION, AC_PACKAGE_VERSION, [package version])
-GETTEXT_PACKAGE=AC_PACKAGE_NAME
+AC_DEFINE([GETTEXT_PACKAGE], ["gksu"], [gettext domain])
AC_SUBST(GETTEXT_PACKAGE)
# Checks for programs.
@@ -61,10 +61,18 @@
AM_CONDITIONAL(GTK_DOC_USE_LIBTOOL, test x$use_libtool = xyes)
# end of gtk-doc check
+AC_ARG_ENABLE(nautilus-extension, [ --enable-nautilus-extension Build the nautilus extensions module [default=yes]], enable_nautilus_extension="$enableval", enable_nautilus_extension=yes)
+AM_CONDITIONAL(ENABLE_NAUTILUS_EXTENSION, test x$enable_nautilus_extension = xyes)
+
+if test x$enable_nautilus_extension = xyes; then
+ PKG_CHECK_MODULES(NAUTILUS, [libgksu2 >= 1.9.2, libnautilus-extension])
+fi
+
AC_CONFIG_FILES([
Makefile
po/Makefile.in
man/Makefile
gksu/Makefile
+ nautilus-gksu/Makefile
])
AC_OUTPUT
Added: gksu/trunk/nautilus-gksu/Makefile.am
===================================================================
--- gksu/trunk/nautilus-gksu/Makefile.am 2006-07-08 01:05:25 UTC (rev 642)
+++ gksu/trunk/nautilus-gksu/Makefile.am 2006-07-09 22:52:06 UTC (rev 643)
@@ -0,0 +1,9 @@
+AM_CFLAGS = -g -O2 -Wall
+INCLUDES = ${NAUTILUS_CFLAGS}
+AM_CPPFLAGS = -DLOCALEDIR=\"$(datadir)/locale\" -DDATA_DIR=\"$(datadir)\" -DPREFIX=\"$(prefix)\"
+
+nautilus_extensiondir=$(libdir)/nautilus/extensions-1.0
+nautilus_extension_LTLIBRARIES = libnautilus-gksu.la
+libnautilus_gksu_la_SOURCES = libnautilus-gksu.c
+libnautilus_gksu_la_LDFLAGS = LDFLAGS = -module -avoid-version -no-undefined
+libnautilus_gksu_la_LIBADD = $(NAUTILUS_LIBS)
Added: gksu/trunk/nautilus-gksu/libnautilus-gksu.c
===================================================================
--- gksu/trunk/nautilus-gksu/libnautilus-gksu.c 2006-07-08 01:05:25 UTC (rev 642)
+++ gksu/trunk/nautilus-gksu/libnautilus-gksu.c 2006-07-09 22:52:06 UTC (rev 643)
@@ -0,0 +1,210 @@
+#include <stdlib.h>
+#include <sys/types.h>
+#include <sys/wait.h>
+#include <string.h>
+#include <pthread.h>
+
+#include <gtk/gtk.h>
+#include <libgnomevfs/gnome-vfs-mime-handlers.h>
+#include <libnautilus-extension/nautilus-extension-types.h>
+#include <libnautilus-extension/nautilus-menu-provider.h>
+
+#include "../config.h"
+
+#include <libintl.h>
+#define _(x) dgettext (GETTEXT_PACKAGE, x)
+
+#define GKSU_TYPE_CONTEXT_MENU (gksu_context_menu_get_type ())
+#define GKSU_CONTEXT_MENU(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GKSU_TYPE_CONTEXT_MENU))
+
+typedef struct {
+ GObject parent;
+} GksuContextMenu;
+
+typedef struct {
+ GObjectClass parent_class;
+} GksuContextMenuClass;
+
+static GType gksucm_type = 0;
+static GObjectClass *parent_class = NULL;
+
+static void
+gksu_context_menu_init (GksuContextMenu *self);
+static void
+gksu_context_menu_class_init (GksuContextMenuClass *class);
+static void
+menu_provider_iface_init (NautilusMenuProviderIface *iface);
+
+static GList*
+gksu_context_menu_get_file_items (NautilusMenuProvider *provider,
+ GtkWidget *window,
+ GList *files);
+static void
+gksu_context_menu_activate (NautilusMenuItem *item,
+ NautilusFileInfo *file);
+
+static GType
+gksu_context_menu_get_type (void)
+{
+ return gksucm_type;
+}
+
+static void
+gksu_context_menu_register_type (GTypeModule *module)
+{
+ static const GTypeInfo info = {
+ sizeof (GksuContextMenuClass),
+ (GBaseInitFunc) NULL,
+ (GBaseFinalizeFunc) NULL,
+ (GClassInitFunc) gksu_context_menu_class_init,
+ NULL,
+ NULL,
+ sizeof (GksuContextMenu),
+ 0,
+ (GInstanceInitFunc) gksu_context_menu_init
+ };
+ static const GInterfaceInfo menu_provider_iface_info = {
+ (GInterfaceInitFunc)menu_provider_iface_init,
+ NULL,
+ NULL
+ };
+
+ gksucm_type = g_type_module_register_type (module,
+ G_TYPE_OBJECT,
+ "GksuContextMenu",
+ &info, 0);
+ g_type_module_add_interface (module,
+ gksucm_type,
+ NAUTILUS_TYPE_MENU_PROVIDER,
+ &menu_provider_iface_info);
+}
+
+static void
+gksu_context_menu_class_init (GksuContextMenuClass *class)
+{
+ parent_class = g_type_class_peek_parent (class);
+}
+
+static void menu_provider_iface_init (NautilusMenuProviderIface *iface)
+{
+ iface->get_file_items = gksu_context_menu_get_file_items;
+}
+
+static void
+gksu_context_menu_init (GksuContextMenu *self)
+{
+}
+
+static GList *
+gksu_context_menu_get_file_items (NautilusMenuProvider *provider,
+ GtkWidget *window,
+ GList *files)
+{
+ GList *items = NULL;
+ NautilusFileInfo *file;
+ NautilusMenuItem *item;
+
+ /* only add a menu item if a single file is selected */
+ if (files == NULL || files->next != NULL)
+ return NULL;
+
+ file = files->data;
+
+ if (nautilus_file_info_is_directory (file))
+ return NULL;
+
+ /* create the context menu item */
+ item = nautilus_menu_item_new ("Gksu::open_as_root",
+ _("Open as administrator"),
+ _("Opens the file with administrator privileges"),
+ NULL);
+ g_signal_connect_object (item, "activate",
+ G_CALLBACK (gksu_context_menu_activate),
+ file, 0);
+ items = g_list_prepend (items, item);
+
+ return items;
+}
+
+static void*
+start_gksu_thread (void *data)
+{
+ GPid pid;
+ gchar **argv = (gchar**) g_malloc (sizeof (gchar*) * 3);
+ gchar *full_cmd = (gchar*) data;
+
+ argv[0] = g_strdup ("gksu");
+ argv[1] = full_cmd;
+ argv[2] = NULL;
+
+ g_printerr ("sgt: full_cmd: %s\n", full_cmd);
+ g_spawn_async (NULL, argv, NULL, G_SPAWN_SEARCH_PATH, NULL, NULL,
+ &pid, NULL);
+
+ g_free (argv[0]);
+ g_free (full_cmd);
+ g_free (argv);
+
+ return NULL;
+}
+
+static void
+gksu_context_menu_activate (NautilusMenuItem *item,
+ NautilusFileInfo *file)
+{
+ GnomeVFSMimeApplication *vfsapp = NULL;
+ gchar *uri = NULL;
+ gchar *mime_type = NULL;
+ gchar *cmd = NULL;
+ gchar *full_cmd = NULL;
+ gchar *tmp = NULL;
+
+ uri = nautilus_file_info_get_uri (file);
+ mime_type = nautilus_file_info_get_mime_type (file);
+
+ vfsapp = gnome_vfs_mime_get_default_application_for_uri (uri, mime_type);
+ g_free (mime_type);
+
+ cmd = g_strdup (gnome_vfs_mime_application_get_exec (vfsapp));
+
+ /*
+ * FIXME: remove any FreeDesktop substitution variable for now; we
+ * need to process them!
+ */
+ tmp = strstr (cmd, "%");
+ *tmp = '\0';
+
+ full_cmd = g_strdup_printf ("%s '%s'", cmd, uri);
+ g_printerr ("full_cmd: %s\n", full_cmd);
+
+ {
+ pthread_t new_thread;
+ pthread_create (&new_thread, NULL, start_gksu_thread, (void*)full_cmd);
+ }
+
+ gnome_vfs_mime_application_free (vfsapp);
+ g_free (uri);
+}
+
+/* --- extension interface --- */
+void
+nautilus_module_initialize (GTypeModule *module)
+{
+ gksu_context_menu_register_type (module);
+}
+
+void
+nautilus_module_shutdown (void)
+{
+}
+
+void
+nautilus_module_list_types (const GType **types,
+ int *num_types)
+{
+ static GType type_list[1];
+
+ type_list[0] = GKSU_TYPE_CONTEXT_MENU;
+ *types = type_list;
+ *num_types = G_N_ELEMENTS (type_list);
+}
Modified: gksu/trunk/po/POTFILES.in
===================================================================
--- gksu/trunk/po/POTFILES.in 2006-07-08 01:05:25 UTC (rev 642)
+++ gksu/trunk/po/POTFILES.in 2006-07-09 22:52:06 UTC (rev 643)
@@ -1,2 +1,3 @@
gksu/gksu.c
gksu.desktop.in
+nautilus-gksu/libnautilus-gksu.c
- Previous message: kov changed libgksu/trunk/libgksu/libgksu.h
- Next message: kov changed gksu/trunk/po/ca.po, gksu/trunk/po/cs.po,
gksu/trunk/po/da.po, gksu/trunk/po/de.po, gksu/trunk/po/es.po,
gksu/trunk/po/fr.po, gksu/trunk/po/gksu.pot,
gksu/trunk/po/hu.po, gksu/trunk/po/it.po, gksu/trunk/po/nb.po,
gksu/trunk/po/nl.po, gksu/trunk/po/pl.po, gksu/trunk/po/pt.po,
gksu/trunk/po/pt_BR.po, gksu/trunk/po/ro.po,
gksu/trunk/po/ru.po, gksu/trunk/po/sk.po, gksu/trunk/po/xh.po
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the gksu-commits
mailing list