[file-roller] Revert "Remove nautilus extension"



commit 366a5147bd097a877d85295a36fb062213355a36
Author: Carlos Soriano <csoriano gnome org>
Date:   Wed Mar 1 20:49:53 2017 +0100

    Revert "Remove nautilus extension"
    
    This reverts commit da09ee41ca7c9b63082cf2a35ae19701c34adca7.
    
    Some of the main compressed archive formats are not still supported by
    libarchive, for example, RAR5.
    
    This is a major issue for the Nautilus builtin compression handling, so
    for now, and until libarchive adds support for RAR5, let's enable the
    nautilus extension of file-roller for the "Extract here" menu item.
    
    See https://github.com/libarchive/libarchive/issues/373 for libarchive
    support of RAR5.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=772765

 Makefile.am                    |    7 +
 README                         |    1 +
 configure.ac                   |   27 +++
 nautilus/Makefile.am           |   23 ++
 nautilus/fileroller-module.c   |   56 +++++
 nautilus/nautilus-fileroller.c |  447 ++++++++++++++++++++++++++++++++++++++++
 nautilus/nautilus-fileroller.h |   51 +++++
 po/POTFILES.in                 |    3 +
 8 files changed, 615 insertions(+), 0 deletions(-)
---
diff --git a/Makefile.am b/Makefile.am
index a9acd51..0a21675 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1,9 +1,16 @@
 ACLOCAL_AMFLAGS=-I m4 ${ACLOCAL_FLAGS}
 
+if ENABLE_NAUTILUS_ACTIONS
+NAUTILUS = nautilus
+else
+NAUTILUS =
+endif
+
 SUBDIRS =              \
        data            \
        src             \
        help            \
+       $(NAUTILUS)     \
        po
 
 distcleancheck_listfiles = find . -type f -print | grep -v 'omf\.out'
diff --git a/README b/README
index 2b55dc9..1ce5348 100644
--- a/README
+++ b/README
@@ -70,6 +70,7 @@
        * libgnome >= 2.6.0
        * libgnomeui >= 2.6.0
         * libglade >= 2.4.0
+        * libnautilus-extension >= 2.22.2 (optional)
 
 * Install
 
diff --git a/configure.ac b/configure.ac
index 586ebcd..b096b60 100644
--- a/configure.ac
+++ b/configure.ac
@@ -23,6 +23,7 @@ AC_PATH_PROG(GLIB_COMPILE_RESOURCES, glib-compile-resources)
 GLIB_REQUIRED=2.36.0
 GIO_REQUIRED=2.36.0
 GTK_REQUIRED=3.13.2
+NAUTILUS_REQUIRED=2.22.2
 JSON_GLIB_REQUIRED=0.14.0
 LIBNOTIFY_REQUIRED=0.4.3
 LIBARCHIVE_REQUIRED=3.0.0
@@ -97,6 +98,30 @@ AC_SUBST(FR_LIBS)
 
 dnl ******************************
 dnl
+dnl nautilus actions
+dnl
+AC_ARG_ENABLE([nautilus_actions],
+             [AS_HELP_STRING([--disable-nautilus-actions],
+                             [do not build the nautilus context menu actions])],,
+             [enable_nautilus_actions=yes])
+
+if test x"$enable_nautilus_actions" != x"no" ; then
+       PKG_CHECK_MODULES(NAUTILUS,                                     \
+                                         [libnautilus-extension >= $NAUTILUS_REQUIRED  \
+                                          glib-2.0                                     \
+                                          gio-2.0],
+                                         [enable_nautilus_actions=yes],
+                                         [enable_nautilus_actions=no])
+       NAUTILUS_EXTENSION_DIR=`$PKG_CONFIG --variable=extensiondir libnautilus-extension`
+fi
+
+AC_SUBST(NAUTILUS_CFLAGS)
+AC_SUBST(NAUTILUS_LIBS)
+AC_SUBST(NAUTILUS_EXTENSION_DIR)
+AM_CONDITIONAL(ENABLE_NAUTILUS_ACTIONS, test x"$enable_nautilus_actions" != x"no")
+
+dnl ******************************
+dnl
 dnl json-glib-1.0
 dnl
 PKG_CHECK_MODULES(JSON_GLIB,
@@ -278,6 +303,7 @@ AC_CONFIG_FILES([Makefile
                 src/commands/Makefile
                 src/sh/Makefile
                 src/ui/Makefile
+                nautilus/Makefile
                 help/Makefile
                 po/Makefile.in])
 AC_OUTPUT
@@ -293,6 +319,7 @@ Configuration:
        Disable deprecated code : ${disable_deprecated}
        Run in place            : ${enable_run_in_place}
        Internal mkdtemp        : ${mkdtemp_missing}
+       Nautilus module         : ${enable_nautilus_actions}
        PackageKit support      : ${enable_packagekit}
        Use libmagic            : ${enable_magic}
        JSON support            : ${enable_json_glib}
diff --git a/nautilus/Makefile.am b/nautilus/Makefile.am
new file mode 100644
index 0000000..55bb742
--- /dev/null
+++ b/nautilus/Makefile.am
@@ -0,0 +1,23 @@
+AM_CPPFLAGS =                                          \
+       -DLOCALEDIR=\"$(localedir)\"                    \
+       -I$(top_srcdir)                                 \
+       -I$(top_builddir)                               \
+       $(DISABLE_DEPRECATED)                           \
+       $(NAUTILUS_CFLAGS)                              \
+       $(FR_CFLAGS)                                    \
+       $(JSON_GLIB_CFLAGS)                             \
+       $(LIBNOTIFY_CFLAGS)
+
+nautilus_extensiondir=$(NAUTILUS_EXTENSION_DIR)
+
+nautilus_extension_LTLIBRARIES=libnautilus-fileroller.la
+
+libnautilus_fileroller_la_SOURCES =     \
+       nautilus-fileroller.c           \
+       nautilus-fileroller.h           \
+       fileroller-module.c
+
+libnautilus_fileroller_la_LDFLAGS = -module -avoid-version -no-undefined
+libnautilus_fileroller_la_LIBADD  = $(NAUTILUS_LIBS)
+
+-include $(top_srcdir)/git.mk
diff --git a/nautilus/fileroller-module.c b/nautilus/fileroller-module.c
new file mode 100644
index 0000000..4a45750
--- /dev/null
+++ b/nautilus/fileroller-module.c
@@ -0,0 +1,56 @@
+/*
+ *  File-Roller
+ *
+ *  Copyright (C) 2004 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: Paolo Bacchilega <paobac cvs gnome org>
+ *
+ */
+
+#include <config.h>
+#include <libnautilus-extension/nautilus-extension-types.h>
+#include <libnautilus-extension/nautilus-column-provider.h>
+#include <glib/gi18n-lib.h>
+#include "nautilus-fileroller.h"
+
+
+void
+nautilus_module_initialize (GTypeModule*module)
+{
+       nautilus_fr_register_type (module);
+
+       bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR);
+       bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
+}
+
+
+void
+nautilus_module_shutdown (void)
+{
+}
+
+
+void
+nautilus_module_list_types (const GType **types,
+                           int          *num_types)
+{
+       static GType type_list[1];
+
+       type_list[0] = NAUTILUS_TYPE_FR;
+       *types = type_list;
+       *num_types = 1;
+}
diff --git a/nautilus/nautilus-fileroller.c b/nautilus/nautilus-fileroller.c
new file mode 100644
index 0000000..285c83d
--- /dev/null
+++ b/nautilus/nautilus-fileroller.c
@@ -0,0 +1,447 @@
+/*
+ *  File-Roller
+ *
+ *  Copyright (C) 2004 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: Paolo Bacchilega <paobac cvs gnome org>
+ *
+ */
+
+#include <config.h>
+#include <string.h>
+#include <glib/gi18n.h>
+#include <gio/gio.h>
+#include <libnautilus-extension/nautilus-extension-types.h>
+#include <libnautilus-extension/nautilus-file-info.h>
+#include <libnautilus-extension/nautilus-menu-provider.h>
+#include "nautilus-fileroller.h"
+
+
+static GObjectClass *parent_class;
+
+
+static void
+extract_to_callback (NautilusMenuItem *item,
+                    gpointer          user_data)
+{
+       GList            *files;
+       NautilusFileInfo *file;
+       char             *uri, *default_dir;
+       GString          *cmd;
+
+       files = g_object_get_data (G_OBJECT (item), "files");
+       file = files->data;
+
+       uri = nautilus_file_info_get_uri (file);
+       default_dir = nautilus_file_info_get_parent_uri (file);
+
+       cmd = g_string_new ("file-roller");
+       g_string_append_printf (cmd,
+                               " --default-dir=%s --extract %s",
+                               g_shell_quote (default_dir),
+                               g_shell_quote (uri));
+
+#ifdef DEBUG
+       g_print ("EXEC: %s\n", cmd->str);
+#endif
+
+       g_spawn_command_line_async (cmd->str, NULL);
+
+       g_string_free (cmd, TRUE);
+       g_free (default_dir);
+       g_free (uri);
+}
+
+
+static void
+extract_here_callback (NautilusMenuItem *item,
+                      gpointer          user_data)
+{
+       GList            *files, *scan;
+       NautilusFileInfo *file;
+       char             *dir;
+       GString          *cmd;
+
+       files = g_object_get_data (G_OBJECT (item), "files");
+       file = files->data;
+
+       dir = nautilus_file_info_get_parent_uri (file);
+
+       cmd = g_string_new ("file-roller");
+       g_string_append_printf (cmd," --extract-here --notify");
+
+       g_free (dir);
+
+       for (scan = files; scan; scan = scan->next) {
+               NautilusFileInfo *file = scan->data;
+               char             *uri;
+
+               uri = nautilus_file_info_get_uri (file);
+               g_string_append_printf (cmd, " %s", g_shell_quote (uri));
+               g_free (uri);
+       }
+
+       g_spawn_command_line_async (cmd->str, NULL);
+
+#ifdef DEBUG
+       g_print ("EXEC: %s\n", cmd->str);
+#endif
+
+       g_string_free (cmd, TRUE);
+}
+
+
+static void
+add_callback (NautilusMenuItem *item,
+             gpointer          user_data)
+{
+       GList            *files, *scan;
+       NautilusFileInfo *file;
+       char             *uri, *dir;
+       GString          *cmd;
+
+       files = g_object_get_data (G_OBJECT (item), "files");
+       file = files->data;
+
+       uri = nautilus_file_info_get_uri (file);
+       dir = g_path_get_dirname (uri);
+
+       cmd = g_string_new ("file-roller");
+       g_string_append (cmd, " --notify");
+       g_string_append_printf (cmd," --default-dir=%s", g_shell_quote (dir));
+       g_string_append (cmd," --add");
+
+       g_free (dir);
+       g_free (uri);
+
+       for (scan = files; scan; scan = scan->next) {
+               NautilusFileInfo *file = scan->data;
+
+               uri = nautilus_file_info_get_uri (file);
+               g_string_append_printf (cmd, " %s", g_shell_quote (uri));
+               g_free (uri);
+       }
+
+       g_spawn_command_line_async (cmd->str, NULL);
+
+       g_string_free (cmd, TRUE);
+}
+
+
+static struct {
+       char     *mime_type;
+       gboolean  is_compressed;
+} archive_mime_types[] = {
+               { "application/x-7z-compressed", TRUE },
+               { "application/x-7z-compressed-tar", TRUE },
+               { "application/x-ace", TRUE },
+               { "application/x-alz", TRUE },
+               { "application/x-ar", TRUE },
+               { "application/x-arj", TRUE },
+               { "application/x-bzip", TRUE },
+               { "application/x-bzip-compressed-tar", TRUE },
+               { "application/x-bzip1", TRUE },
+               { "application/x-bzip1-compressed-tar", TRUE },
+               { "application/vnd.ms-cab-compressed", TRUE },
+               { "application/x-cbr", TRUE },
+               { "application/x-cbz", TRUE },
+               { "application/x-cd-image", FALSE },
+               { "application/x-compress", TRUE },
+               { "application/x-compressed-tar", TRUE },
+               { "application/x-cpio", TRUE },
+               { "application/x-deb", TRUE },
+               { "application/vnd.debian.binary-package", TRUE },
+               { "application/x-ear", TRUE },
+               { "application/x-ms-dos-executable", FALSE },
+               { "application/x-gtar", FALSE },
+               { "application/x-gzip", TRUE },
+               { "application/x-gzpostscript", TRUE },
+               { "application/x-java-archive", TRUE },
+               { "application/x-lha", TRUE },
+               { "application/x-lhz", TRUE },
+               { "application/x-lzip", TRUE },
+               { "application/x-lzip-compressed-tar", TRUE },
+               { "application/x-lzma", TRUE },
+               { "application/x-lzma-compressed-tar", TRUE },
+               { "application/x-lzop", TRUE },
+               { "application/x-lzop-compressed-tar", TRUE },
+               { "application/x-ms-wim", TRUE },
+               { "application/x-rar", TRUE },
+               { "application/x-rar-compressed", TRUE },
+               { "application/x-rpm", TRUE },
+               { "application/x-rzip", TRUE },
+               { "application/x-tar", FALSE },
+               { "application/x-tarz", TRUE },
+               { "application/x-stuffit", TRUE },
+               { "application/x-war", TRUE },
+               { "application/x-xz", TRUE },
+               { "application/x-xz-compressed-tar", TRUE },
+               { "application/x-zip", TRUE },
+               { "application/x-zip-compressed", TRUE },
+               { "application/x-zoo", TRUE },
+               { "application/zip", TRUE },
+               { "multipart/x-zip", TRUE },
+               { NULL, FALSE }
+};
+
+
+typedef struct {
+      gboolean is_archive;
+      gboolean is_derived_archive;
+      gboolean is_compressed_archive;
+} FileMimeInfo;
+
+
+static FileMimeInfo
+get_file_mime_info (NautilusFileInfo *file)
+{
+       FileMimeInfo file_mime_info;
+       int          i;
+
+       file_mime_info.is_archive = FALSE;
+       file_mime_info.is_derived_archive = FALSE;
+       file_mime_info.is_compressed_archive = FALSE;
+
+       for (i = 0; archive_mime_types[i].mime_type != NULL; i++)
+               if (nautilus_file_info_is_mime_type (file, archive_mime_types[i].mime_type)) {
+                       char *mime_type;
+                       char *content_type_mime_file;
+                       char *content_type_mime_compare;
+
+                       mime_type = nautilus_file_info_get_mime_type (file);
+
+                       content_type_mime_file = g_content_type_from_mime_type (mime_type);
+                       content_type_mime_compare = g_content_type_from_mime_type 
(archive_mime_types[i].mime_type);
+
+                       file_mime_info.is_archive = TRUE;
+                       file_mime_info.is_compressed_archive = archive_mime_types[i].is_compressed;
+                       if ((content_type_mime_file != NULL) && (content_type_mime_compare != NULL))
+                               file_mime_info.is_derived_archive = ! g_content_type_equals 
(content_type_mime_file, content_type_mime_compare);
+
+                       g_free (mime_type);
+                       g_free (content_type_mime_file);
+                       g_free (content_type_mime_compare);
+
+                       return file_mime_info;
+               }
+
+       return file_mime_info;
+}
+
+
+static gboolean
+unsupported_scheme (NautilusFileInfo *file)
+{
+       gboolean  result = FALSE;
+       GFile    *location;
+       char     *scheme;
+
+       location = nautilus_file_info_get_location (file);
+       scheme = g_file_get_uri_scheme (location);
+
+       if (scheme != NULL) {
+               const char *unsupported[] = { "trash", "computer", "x-nautilus-desktop", NULL };
+               int         i;
+
+               for (i = 0; unsupported[i] != NULL; i++)
+                       if (strcmp (scheme, unsupported[i]) == 0)
+                               result = TRUE;
+       }
+
+       g_free (scheme);
+       g_object_unref (location);
+
+       return result;
+}
+
+
+static GList *
+nautilus_fr_get_file_items (NautilusMenuProvider *provider,
+                           GtkWidget            *window,
+                           GList                *files)
+{
+       GList    *items = NULL;
+       GList    *scan;
+       gboolean  can_write = TRUE;
+       gboolean  one_item;
+       gboolean  one_archive = FALSE;
+       gboolean  one_derived_archive = FALSE;
+       gboolean  one_compressed_archive = FALSE;
+       gboolean  all_archives = TRUE;
+       gboolean  all_archives_derived = TRUE;
+       gboolean  all_archives_compressed = TRUE;
+
+       if (files == NULL)
+               return NULL;
+
+       for (scan = files; scan; scan = scan->next) {
+               NautilusFileInfo *file = scan->data;
+               FileMimeInfo      file_mime_info;
+
+               if (unsupported_scheme (file))
+                       return NULL;
+
+               file_mime_info = get_file_mime_info (file);
+
+               if (all_archives && ! file_mime_info.is_archive)
+                       all_archives = FALSE;
+
+               if (all_archives_compressed && file_mime_info.is_archive && ! 
file_mime_info.is_compressed_archive)
+                       all_archives_compressed = FALSE;
+
+               if (all_archives_derived && file_mime_info.is_archive && ! file_mime_info.is_derived_archive)
+                       all_archives_derived = FALSE;
+
+               if (can_write) {
+                       NautilusFileInfo *parent;
+
+                       parent = nautilus_file_info_get_parent_info (file);
+                       can_write = nautilus_file_info_can_write (parent);
+                       g_object_unref (parent);
+               }
+       }
+
+       /**/
+
+       one_item = (files != NULL) && (files->next == NULL);
+       one_archive = one_item && all_archives;
+       one_derived_archive = one_archive && all_archives_derived;
+       one_compressed_archive = one_archive && all_archives_compressed;
+
+       if (all_archives && can_write) {
+               NautilusMenuItem *item;
+
+               item = nautilus_menu_item_new ("NautilusFr::extract_here",
+                                              g_dgettext ("file-roller", "Extract Here"),
+                                              /* Translators: the current position is the current folder */
+                                              g_dgettext ("file-roller", "Extract the selected archive to 
the current position"),
+                                              "drive-harddisk");
+               g_signal_connect (item,
+                                 "activate",
+                                 G_CALLBACK (extract_here_callback),
+                                 provider);
+               g_object_set_data_full (G_OBJECT (item),
+                                       "files",
+                                       nautilus_file_info_list_copy (files),
+                                       (GDestroyNotify) nautilus_file_info_list_free);
+
+               items = g_list_append (items, item);
+       }
+       else if (all_archives && ! can_write) {
+               NautilusMenuItem *item;
+
+               item = nautilus_menu_item_new ("NautilusFr::extract_to",
+                                              g_dgettext ("file-roller", "Extract To..."),
+                                              g_dgettext ("file-roller", "Extract the selected archive"),
+                                              "drive-harddisk");
+               g_signal_connect (item,
+                                 "activate",
+                                 G_CALLBACK (extract_to_callback),
+                                 provider);
+               g_object_set_data_full (G_OBJECT (item),
+                                       "files",
+                                       nautilus_file_info_list_copy (files),
+                                       (GDestroyNotify) nautilus_file_info_list_free);
+
+               items = g_list_append (items, item);
+
+       }
+
+       if (! one_compressed_archive || one_derived_archive) {
+               NautilusMenuItem *item;
+
+               item = nautilus_menu_item_new ("NautilusFr::add",
+                                              g_dgettext ("file-roller", "Compress..."),
+                                              g_dgettext ("file-roller", "Create a compressed archive with 
the selected objects"),
+                                              "gnome-mime-application-x-archive");
+               g_signal_connect (item,
+                                 "activate",
+                                 G_CALLBACK (add_callback),
+                                 provider);
+               g_object_set_data_full (G_OBJECT (item),
+                                       "files",
+                                       nautilus_file_info_list_copy (files),
+                                       (GDestroyNotify) nautilus_file_info_list_free);
+
+               items = g_list_append (items, item);
+       }
+
+       return items;
+}
+
+
+static void
+nautilus_fr_menu_provider_iface_init (NautilusMenuProviderIface *iface)
+{
+       iface->get_file_items = nautilus_fr_get_file_items;
+}
+
+
+static void
+nautilus_fr_instance_init (NautilusFr *fr)
+{
+}
+
+
+static void
+nautilus_fr_class_init (NautilusFrClass *class)
+{
+       parent_class = g_type_class_peek_parent (class);
+}
+
+
+static GType fr_type = 0;
+
+
+GType
+nautilus_fr_get_type (void)
+{
+       return fr_type;
+}
+
+
+void
+nautilus_fr_register_type (GTypeModule *module)
+{
+       static const GTypeInfo info = {
+               sizeof (NautilusFrClass),
+               (GBaseInitFunc) NULL,
+               (GBaseFinalizeFunc) NULL,
+               (GClassInitFunc) nautilus_fr_class_init,
+               NULL,
+               NULL,
+               sizeof (NautilusFr),
+               0,
+               (GInstanceInitFunc) nautilus_fr_instance_init,
+       };
+
+       static const GInterfaceInfo menu_provider_iface_info = {
+               (GInterfaceInitFunc) nautilus_fr_menu_provider_iface_init,
+               NULL,
+               NULL
+       };
+
+       fr_type = g_type_module_register_type (module,
+                                              G_TYPE_OBJECT,
+                                              "NautilusFileRoller",
+                                              &info, 0);
+
+       g_type_module_add_interface (module,
+                                    fr_type,
+                                    NAUTILUS_TYPE_MENU_PROVIDER,
+                                    &menu_provider_iface_info);
+}
diff --git a/nautilus/nautilus-fileroller.h b/nautilus/nautilus-fileroller.h
new file mode 100644
index 0000000..df2ccb5
--- /dev/null
+++ b/nautilus/nautilus-fileroller.h
@@ -0,0 +1,51 @@
+/*
+ *  File-Roller
+ * 
+ *  Copyright (C) 2004 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: Paolo Bacchilega <paobac cvs gnome org>
+ * 
+ */
+
+#ifndef NAUTILUS_FILEROLLER_H
+#define NAUTILUS_FILEROLLER_H
+
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+
+#define NAUTILUS_TYPE_FR  (nautilus_fr_get_type ())
+#define NAUTILUS_FR(o)    (G_TYPE_CHECK_INSTANCE_CAST ((o), NAUTILUS_TYPE_FR, NautilusFr))
+#define NAUTILUS_IS_FR(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), NAUTILUS_TYPE_FR))
+
+typedef struct _NautilusFr      NautilusFr;
+typedef struct _NautilusFrClass NautilusFrClass;
+
+struct _NautilusFr {
+       GObject __parent;
+};
+
+struct _NautilusFrClass {
+       GObjectClass __parent;
+};
+
+GType nautilus_fr_get_type      (void);
+void  nautilus_fr_register_type (GTypeModule *module);
+
+G_END_DECLS
+
+#endif /* NAUTILUS_FILEROLLER_H */
diff --git a/po/POTFILES.in b/po/POTFILES.in
index f09b6a8..03282a8 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -7,6 +7,9 @@
 data/org.gnome.FileRoller.appdata.xml.in
 data/org.gnome.FileRoller.desktop.in.in
 [type: gettext/gsettings]data/org.gnome.FileRoller.gschema.xml
+nautilus/fileroller-module.c
+nautilus/nautilus-fileroller.c
+nautilus/nautilus-fileroller.h
 src/commands/rpm2cpio.c
 src/dlg-add.c
 src/dlg-add.h


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]