Author: stephan
Date: 2007-04-02 11:09:43 +0000 (Mon, 02 Apr 2007)
New Revision: 25361

Modified:
   squeeze/trunk/libsqueeze/command-builder-compr.c
   squeeze/trunk/libsqueeze/command-builder-gnu-tar.c
   squeeze/trunk/libsqueeze/command-builder-rar.c
   squeeze/trunk/libsqueeze/command-builder-zip.c
   squeeze/trunk/libsqueeze/libsqueeze.c
   squeeze/trunk/libsqueeze/libsqueeze.h
   squeeze/trunk/src/new_dialog.c
   squeeze/trunk/src/new_dialog.h
Log:
Fix bug #2774



Modified: squeeze/trunk/libsqueeze/command-builder-compr.c
===================================================================
--- squeeze/trunk/libsqueeze/command-builder-compr.c    2007-04-02 10:39:06 UTC 
(rev 25360)
+++ squeeze/trunk/libsqueeze/command-builder-compr.c    2007-04-02 11:09:43 UTC 
(rev 25361)
@@ -105,10 +105,26 @@
        command_builder->build_refresh = 
lsq_command_builder_compr_build_refresh;
 
        command_builder->mime_types = g_new0(gchar *, 5);
-       command_builder->mime_types[0] = "application/x-gzip";
-       command_builder->mime_types[1] = "application/x-bzip";
-       command_builder->mime_types[2] = "application/x-lzop";
-       command_builder->mime_types[3] = "application/x-compress";
+       gint i = 0;
+       if(g_find_program_in_path("compress"))
+       {
+               command_builder->mime_types[i] = "application/x-compress";
+               i++;
+       }
+       if(g_find_program_in_path("gzip"))
+       {
+               command_builder->mime_types[i] = "application/x-gzip";
+               i++;
+       }
+       if(g_find_program_in_path("bzip2"))
+       {
+               command_builder->mime_types[i] = "application/x-bzip";
+               i++;
+       }
+       if(g_find_program_in_path("lzop"))
+       {
+               command_builder->mime_types[i] = "application/x-lzop";
+       }
 }
 
 /**

Modified: squeeze/trunk/libsqueeze/command-builder-gnu-tar.c
===================================================================
--- squeeze/trunk/libsqueeze/command-builder-gnu-tar.c  2007-04-02 10:39:06 UTC 
(rev 25360)
+++ squeeze/trunk/libsqueeze/command-builder-gnu-tar.c  2007-04-02 11:09:43 UTC 
(rev 25361)
@@ -105,11 +105,30 @@
        command_builder->build_refresh = 
lsq_command_builder_gnu_tar_build_refresh;
 
        command_builder->mime_types = g_new0(gchar *, 6);
-       command_builder->mime_types[0] = "application/x-tar";
-       command_builder->mime_types[1] = "application/x-tarz";
-       command_builder->mime_types[2] = "application/x-compressed-tar";
-       command_builder->mime_types[3] = "application/x-bzip-compressed-tar";
-       command_builder->mime_types[4] = "application/x-tzo";
+       if(g_find_program_in_path("tar"))
+       {
+               command_builder->mime_types[0] = "application/x-tar";
+               int i = 1;
+               if(g_find_program_in_path("compress"))
+               {
+                       command_builder->mime_types[i] = "application/x-tarz";
+                       i++;
+               }
+               if(g_find_program_in_path("gzip"))
+               {
+                       command_builder->mime_types[i] = 
"application/x-compressed-tar";
+                       i++;
+               }
+               if(g_find_program_in_path("bzip2"))
+               {
+                       command_builder->mime_types[i] = 
"application/x-bzip-compressed-tar";
+                       i++;
+               }
+               if(g_find_program_in_path("lzop"))
+               {
+                       command_builder->mime_types[i] = "application/x-tzo";
+               }
+       }
 
        lsq_builder_settings_set_property_types(command_builder->settings, 
                                                _("Rights"), /* rights*/

Modified: squeeze/trunk/libsqueeze/command-builder-rar.c
===================================================================
--- squeeze/trunk/libsqueeze/command-builder-rar.c      2007-04-02 10:39:06 UTC 
(rev 25360)
+++ squeeze/trunk/libsqueeze/command-builder-rar.c      2007-04-02 11:09:43 UTC 
(rev 25361)
@@ -105,13 +105,23 @@
 {
        LSQCommandBuilder *command_builder = 
LSQ_COMMAND_BUILDER(command_builder_rar);
 
-       command_builder->build_add = lsq_command_builder_rar_build_add;
-       command_builder->build_extract = lsq_command_builder_rar_build_extract;
-       command_builder->build_remove = lsq_command_builder_rar_build_remove;
-       command_builder->build_refresh = lsq_command_builder_rar_build_refresh;
+       gchar *rar_path = g_find_program_in_path("rar");
+       gchar *unrar_path = g_find_program_in_path("unrar");
 
+       if(rar_path)
+       {
+               command_builder->build_add = lsq_command_builder_rar_build_add;
+               command_builder->build_remove = 
lsq_command_builder_rar_build_remove;
+       }
+       if(unrar_path)
+       {
+               command_builder->build_extract = 
lsq_command_builder_rar_build_extract;
+               command_builder->build_refresh = 
lsq_command_builder_rar_build_refresh;
+       }
+
        command_builder->mime_types = g_new0(gchar *, 2);
-       command_builder->mime_types[0] = "application/x-rar";
+       if(rar_path || unrar_path)
+               command_builder->mime_types[0] = "application/x-rar";
 
        lsq_builder_settings_set_property_types(command_builder->settings, 
                                                _("Compressed"), /* length */
@@ -133,6 +143,8 @@
                                                _("Version"), /* version*/
                                                G_TYPE_STRING,
                                           NULL);
+       g_free(rar_path);
+       g_free(unrar_path);
 }
 
 /**

Modified: squeeze/trunk/libsqueeze/command-builder-zip.c
===================================================================
--- squeeze/trunk/libsqueeze/command-builder-zip.c      2007-04-02 10:39:06 UTC 
(rev 25360)
+++ squeeze/trunk/libsqueeze/command-builder-zip.c      2007-04-02 11:09:43 UTC 
(rev 25361)
@@ -100,7 +100,8 @@
        command_builder->build_refresh = lsq_command_builder_zip_build_refresh;
 
        command_builder->mime_types = g_new0(gchar *, 2);
-       command_builder->mime_types[0] = "application/zip";
+       if(g_find_program_in_path("zip") && g_find_program_in_path("unzip"))
+               command_builder->mime_types[0] = "application/zip";
 
        lsq_builder_settings_set_property_types(command_builder->settings, 
                                                _("Compressed"), /* length */

Modified: squeeze/trunk/libsqueeze/libsqueeze.c
===================================================================
--- squeeze/trunk/libsqueeze/libsqueeze.c       2007-04-02 10:39:06 UTC (rev 
25360)
+++ squeeze/trunk/libsqueeze/libsqueeze.c       2007-04-02 11:09:43 UTC (rev 
25361)
@@ -137,9 +137,23 @@
 }
 
 GSList *
-lsq_get_supported_mime_types()
+lsq_get_supported_mime_types(LSQSupportTypes types)
 {
-       return g_slist_copy(lsq_mime_info_list);
+       GSList *m_types = g_slist_copy(lsq_mime_info_list);
+       if(types &= LSQ_SUPPORT_ADD)
+       {
+               GSList *_types = m_types;
+               while(_types)
+               {
+                       LSQArchiveMime *mime = _types->data;
+                       LSQCommandBuilder *builder = 
mime->command_builders->data;
+                       if(!builder->build_add)
+                               m_types = g_slist_remove(m_types, mime);
+                       _types = g_slist_next(_types);
+               }
+       }
+       
+       return m_types;
 }
 
 static gint

Modified: squeeze/trunk/libsqueeze/libsqueeze.h
===================================================================
--- squeeze/trunk/libsqueeze/libsqueeze.h       2007-04-02 10:39:06 UTC (rev 
25360)
+++ squeeze/trunk/libsqueeze/libsqueeze.h       2007-04-02 11:09:43 UTC (rev 
25361)
@@ -24,6 +24,14 @@
 
 G_BEGIN_DECLS
 
+typedef enum
+{
+       LSQ_SUPPORT_ADD = 1,
+       LSQ_SUPPORT_REMOVE = 2,
+       LSQ_SUPPORT_REFRESH = 3,
+       LSQ_SUPPORT_EXTRACT = 4
+} LSQSupportTypes;
+
 /*
  * void
  * lsq_init()
@@ -73,7 +81,7 @@
 lsq_close_archive( LSQArchive *archive );
 
 GSList *
-lsq_get_supported_mime_types();
+lsq_get_supported_mime_types(LSQSupportTypes);
 
 gboolean
 lsq_is_supported(const gchar *filename);

Modified: squeeze/trunk/src/new_dialog.c
===================================================================
--- squeeze/trunk/src/new_dialog.c      2007-04-02 10:39:06 UTC (rev 25360)
+++ squeeze/trunk/src/new_dialog.c      2007-04-02 11:09:43 UTC (rev 25361)
@@ -73,7 +73,8 @@
 
        gtk_widget_show_all(hbox);
 
-       GSList *_supported_mime_types = lsq_get_supported_mime_types();
+       dialog->supported_mime_types = 
lsq_get_supported_mime_types(LSQ_SUPPORT_ADD);
+       GSList *_supported_mime_types = dialog->supported_mime_types;
 
        dialog->file_filter = gtk_file_filter_new();
        gtk_file_filter_set_name(dialog->file_filter, _("Archives"));
@@ -85,7 +86,7 @@
                gtk_file_filter_add_mime_type(dialog->file_filter,
                        lsq_archive_mime_get_name((LSQArchiveMime 
*)(_supported_mime_types->data)));
                if(!strcmp(lsq_archive_mime_get_name((LSQArchiveMime 
*)_supported_mime_types->data), "application/x-compressed-tar"))
-                       
gtk_combo_box_set_active(GTK_COMBO_BOX(dialog->archive_types_combo), 
g_slist_index(lsq_get_supported_mime_types(), _supported_mime_types->data));
+                       
gtk_combo_box_set_active(GTK_COMBO_BOX(dialog->archive_types_combo), 
g_slist_index(dialog->supported_mime_types, _supported_mime_types->data));
                _supported_mime_types = g_slist_next(_supported_mime_types);
        }
 
@@ -127,7 +128,7 @@
        {
                g_free(base);
                gint i;
-               GSList *_supported_mime_types = lsq_get_supported_mime_types();
+               GSList *_supported_mime_types = dialog->supported_mime_types;
                for(i = 0; i < 
gtk_combo_box_get_active(GTK_COMBO_BOX(dialog->archive_types_combo)); i++)
                {
                        _supported_mime_types = 
g_slist_next(_supported_mime_types);

Modified: squeeze/trunk/src/new_dialog.h
===================================================================
--- squeeze/trunk/src/new_dialog.h      2007-04-02 10:39:06 UTC (rev 25360)
+++ squeeze/trunk/src/new_dialog.h      2007-04-02 11:09:43 UTC (rev 25361)
@@ -45,6 +45,7 @@
        GtkFileChooserDialog parent;
        GtkWidget *archive_types_combo;
        GtkFileFilter *file_filter; /* HACK -- should just be set inside the 
constructor */
+       GSList *supported_mime_types;
 };
 
 typedef struct _SQNewArchiveDialogClass SQNewArchiveDialogClass;

_______________________________________________
Xfce4-commits mailing list
Xfce4-commits@xfce.org
http://foo-projects.org/mailman/listinfo/xfce4-commits

Reply via email to