Author: peter
Date: 2007-01-09 15:25:38 +0000 (Tue, 09 Jan 2007)
New Revision: 24332

Modified:
   squeeze/trunk/libsqueeze/archive-support-gnu-tar.c
   squeeze/trunk/libsqueeze/archive-support-zip.c
   squeeze/trunk/libsqueeze/archive.c
   squeeze/trunk/libsqueeze/archive.h
   squeeze/trunk/src/button_drag_box.c
   squeeze/trunk/src/button_drag_box.h
   squeeze/trunk/src/main_window.c
   squeeze/trunk/src/preferences_dialog.c
   squeeze/trunk/src/preferences_dialog.h
Log:
button_drag_box really has use now


Modified: squeeze/trunk/libsqueeze/archive-support-gnu-tar.c
===================================================================
--- squeeze/trunk/libsqueeze/archive-support-gnu-tar.c  2007-01-09 13:10:40 UTC 
(rev 24331)
+++ squeeze/trunk/libsqueeze/archive-support-gnu-tar.c  2007-01-09 15:25:38 UTC 
(rev 24332)
@@ -473,23 +473,23 @@
        {
                i = LSQ_ARCHIVE_PROP_USER;
                if(LSQ_ARCHIVE_SUPPORT_GNU_TAR(archive->support)->_view_rights) 
{
-                       lsq_archive_set_property_type(archive, i, 
G_TYPE_STRING, _("Permissions"));
+                       lsq_archive_set_entry_property_type(archive, i, 
G_TYPE_STRING, _("Permissions"));
                        i++;
                }
                if(LSQ_ARCHIVE_SUPPORT_GNU_TAR(archive->support)->_view_owner) {
-                       lsq_archive_set_property_type(archive, i, 
G_TYPE_STRING,_("Owner/Group"));
+                       lsq_archive_set_entry_property_type(archive, i, 
G_TYPE_STRING,_("Owner/Group"));
                        i++;
                }
                if(LSQ_ARCHIVE_SUPPORT_GNU_TAR(archive->support)->_view_size) {
-                       lsq_archive_set_property_type(archive, i, 
G_TYPE_UINT64, _("Size"));
+                       lsq_archive_set_entry_property_type(archive, i, 
G_TYPE_UINT64, _("Size"));
                        i++;
                }
                if(LSQ_ARCHIVE_SUPPORT_GNU_TAR(archive->support)->_view_date) {
-                       lsq_archive_set_property_type(archive, i, 
G_TYPE_STRING, _("Date"));
+                       lsq_archive_set_entry_property_type(archive, i, 
G_TYPE_STRING, _("Date"));
                        i++;
                }
                if(LSQ_ARCHIVE_SUPPORT_GNU_TAR(archive->support)->_view_time) {
-                       lsq_archive_set_property_type(archive, i, 
G_TYPE_STRING, _("Time"));
+                       lsq_archive_set_entry_property_type(archive, i, 
G_TYPE_STRING, _("Time"));
                        i++;
                }
                
if(!g_strcasecmp(thunar_vfs_mime_info_get_name(archive->mime_info), 
"application/x-tzo"))

Modified: squeeze/trunk/libsqueeze/archive-support-zip.c
===================================================================
--- squeeze/trunk/libsqueeze/archive-support-zip.c      2007-01-09 13:10:40 UTC 
(rev 24331)
+++ squeeze/trunk/libsqueeze/archive-support-zip.c      2007-01-09 15:25:38 UTC 
(rev 24332)
@@ -311,31 +311,31 @@
        {
                i = LSQ_ARCHIVE_PROP_USER;
                if(LSQ_ARCHIVE_SUPPORT_ZIP(archive->support)->_view_length) {
-                       lsq_archive_set_property_type(archive, i, 
G_TYPE_UINT64, _("Size"));
+                       lsq_archive_set_entry_property_type(archive, i, 
G_TYPE_UINT64, _("Size"));
                        i++;
                }
                if(LSQ_ARCHIVE_SUPPORT_ZIP(archive->support)->_view_method) {
-                       lsq_archive_set_property_type(archive, i, 
G_TYPE_STRING,_("Method"));
+                       lsq_archive_set_entry_property_type(archive, i, 
G_TYPE_STRING,_("Method"));
                        i++;
                }
                if(LSQ_ARCHIVE_SUPPORT_ZIP(archive->support)->_view_size) {
-                       lsq_archive_set_property_type(archive, i, 
G_TYPE_UINT64, _("Compressed Size"));
+                       lsq_archive_set_entry_property_type(archive, i, 
G_TYPE_UINT64, _("Compressed Size"));
                        i++;
                }
                if(LSQ_ARCHIVE_SUPPORT_ZIP(archive->support)->_view_ratio) {
-                       lsq_archive_set_property_type(archive, i, 
G_TYPE_STRING, _("Ratio"));
+                       lsq_archive_set_entry_property_type(archive, i, 
G_TYPE_STRING, _("Ratio"));
                        i++;
                }
                if(LSQ_ARCHIVE_SUPPORT_ZIP(archive->support)->_view_date) {
-                       lsq_archive_set_property_type(archive, i, 
G_TYPE_STRING, _("Date"));
+                       lsq_archive_set_entry_property_type(archive, i, 
G_TYPE_STRING, _("Date"));
                        i++;
                }
                if(LSQ_ARCHIVE_SUPPORT_ZIP(archive->support)->_view_time) {
-                       lsq_archive_set_property_type(archive, i, 
G_TYPE_STRING, _("Time"));
+                       lsq_archive_set_entry_property_type(archive, i, 
G_TYPE_STRING, _("Time"));
                        i++;
                }
                if(LSQ_ARCHIVE_SUPPORT_ZIP(archive->support)->_view_crc_32) {
-                       lsq_archive_set_property_type(archive, i, 
G_TYPE_STRING, _("Checksum"));
+                       lsq_archive_set_entry_property_type(archive, i, 
G_TYPE_STRING, _("Checksum"));
                        i++;
                }
                gchar *command = g_strconcat("unzip -lv -qq " , archive->path, 
NULL);

Modified: squeeze/trunk/libsqueeze/archive.c
===================================================================
--- squeeze/trunk/libsqueeze/archive.c  2007-01-09 13:10:40 UTC (rev 24331)
+++ squeeze/trunk/libsqueeze/archive.c  2007-01-09 15:25:38 UTC (rev 24332)
@@ -450,11 +450,11 @@
 
 /*
  * void
- * lsq_archive_set_property_type(LSQArchive *archive, guint i, GType *, const 
gchar *)
+ * lsq_archive_set_entry_property_type(LSQArchive *archive, guint i, GType *, 
const gchar *)
  *
  */
 void
-lsq_archive_set_property_type(LSQArchive *archive, guint i, GType type, const 
gchar *name)
+lsq_archive_set_entry_property_type(LSQArchive *archive, guint i, GType type, 
const gchar *name)
 {
 
 #ifdef DEBUG
@@ -472,11 +472,11 @@
 
 /*
  * void
- * lsq_archive_set_property_typesv(LSQArchive *archive, GType *)
+ * lsq_archive_set_entry_property_typesv(LSQArchive *archive, GType *)
  *
  */
 void
-lsq_archive_set_property_typesv(LSQArchive *archive, GType *types, const gchar 
**names)
+lsq_archive_set_entry_property_typesv(LSQArchive *archive, GType *types, const 
gchar **names)
 {
        guint size = 0;
        GType *type_iter = types;
@@ -503,6 +503,16 @@
        }
 }
 
+void
+lsq_archive_clear_entry_property_types(LSQArchive *archive)
+{
+       g_free(archive->entry_property_types);
+       g_free(archive->entry_property_names);
+       archive->entry_property_types = NULL;
+       archive->entry_property_names = NULL;
+       archive->entry_n_property = 0;
+}
+
 guint
 lsq_archive_n_property(LSQArchive *archive)
 {

Modified: squeeze/trunk/libsqueeze/archive.h
===================================================================
--- squeeze/trunk/libsqueeze/archive.h  2007-01-09 13:10:40 UTC (rev 24331)
+++ squeeze/trunk/libsqueeze/archive.h  2007-01-09 15:25:38 UTC (rev 24332)
@@ -136,8 +136,9 @@
 LSQArchiveIter     *lsq_archive_get_iter(LSQArchive *, const gchar *);
 GType               lsq_archive_get_entry_property_type(LSQArchive *, guint);
 const gchar        *lsq_archive_get_entry_property_name(LSQArchive *, guint);
-void                lsq_archive_set_property_type(LSQArchive *, guint, GType, 
const gchar *);
-void                lsq_archive_set_property_typesv(LSQArchive *, GType *, 
const gchar **);
+void                lsq_archive_clear_entry_property_types(LSQArchive *);
+void                lsq_archive_set_entry_property_type(LSQArchive *, guint, 
GType, const gchar *);
+void                lsq_archive_set_entry_property_typesv(LSQArchive *, GType 
*, const gchar **);
 guint               lsq_archive_n_property(LSQArchive *);
 
 G_END_DECLS

Modified: squeeze/trunk/src/button_drag_box.c
===================================================================
--- squeeze/trunk/src/button_drag_box.c 2007-01-09 13:10:40 UTC (rev 24331)
+++ squeeze/trunk/src/button_drag_box.c 2007-01-09 15:25:38 UTC (rev 24332)
@@ -26,10 +26,17 @@
 #include "button_drag_box.h"
 
 #define SQ_INDICATOR_SIZE 9
+#define SQ_BUTTON_USER_DATA "sq-user-data"
+#define SQ_DRAG_TARGET_ID "_SQ_BUTTON_DRAG_BOX"
 
 static GdkPixbuf*
 sq_create_icon_from_widget(GtkWidget *widget);
 
+static void
+sq_create_indicator(SQButtonDragBox *box, gint x, gint y, gint width, gint 
height);
+static void
+sq_delete_indicator(SQButtonDragBox *box);
+
 static gboolean
 cb_signal_blocker(GtkWidget *widget, gpointer user_data);
 
@@ -71,7 +78,7 @@
        box->visible_box = gtk_hbox_new(FALSE, 0);
        box->hidden_box = gtk_hbox_new(FALSE, 0);
 
-       box->entry.target = "_SQ_BUTTON_DRAG_BOX";
+       box->entry.target = SQ_DRAG_TARGET_ID;
        box->entry.flags = GTK_TARGET_SAME_APP;
        box->entry.info = 2;
 
@@ -109,10 +116,12 @@
 }
 
 void
-sq_button_drag_box_add_fixed_button(SQButtonDragBox *box, const gchar *label)
+sq_button_drag_box_add_fixed_button(SQButtonDragBox *box, const gchar *label, 
gpointer user_data)
 {
        GtkWidget *button = gtk_button_new_with_label(label);
 
+       g_object_set_data(G_OBJECT(button), SQ_BUTTON_USER_DATA, user_data);
+
        gtk_box_pack_start(GTK_BOX(box->visible_box), button, FALSE, FALSE, 0);
 
        g_signal_connect(G_OBJECT(button), "button_press_event", 
G_CALLBACK(cb_signal_blocker), NULL);
@@ -121,10 +130,12 @@
 }
 
 void
-sq_button_drag_box_add_button(SQButtonDragBox *box, const gchar *label, 
gboolean visible)
+sq_button_drag_box_add_button(SQButtonDragBox *box, const gchar *label, 
gboolean visible, gpointer user_data)
 {
        GtkWidget *button = gtk_button_new_with_label(label);
 
+       g_object_set_data(G_OBJECT(button), SQ_BUTTON_USER_DATA, user_data);
+
        
gtk_box_pack_start(visible?GTK_BOX(box->visible_box):GTK_BOX(box->hidden_box), 
button, FALSE, FALSE, 0);
 
        gtk_drag_source_set(button, GDK_BUTTON1_MASK, &box->entry, 1, 
GDK_ACTION_MOVE);
@@ -142,6 +153,48 @@
        box->locked_buttons = buttons;
 }
 
+GSList *
+sq_button_drag_box_get_visible(SQButtonDragBox *box)
+{
+       GList *iter, *children = iter = 
gtk_container_get_children(GTK_CONTAINER(box->visible_box));
+       GSList *list = NULL;
+
+       while(iter)
+       {
+               if(GTK_WIDGET_VISIBLE(iter->data))
+               {
+                       list = g_slist_append(list, 
g_object_get_data(G_OBJECT(iter->data), SQ_BUTTON_USER_DATA));
+               }
+
+               iter = g_list_next(iter);
+       }
+
+       g_list_free(children);
+
+       return list;
+}
+
+GSList *
+sq_button_drag_box_get_hidden(SQButtonDragBox *box)
+{
+       GList *iter, *children = iter = 
gtk_container_get_children(GTK_CONTAINER(box->hidden_box));
+       GSList *list = NULL;
+
+       while(iter)
+       {
+               if(GTK_WIDGET_VISIBLE(iter->data))
+               {
+                       list = g_slist_append(list, 
g_object_get_data(G_OBJECT(iter->data), SQ_BUTTON_USER_DATA));
+               }
+
+               iter = g_list_next(iter);
+       }
+
+       g_list_free(children);
+
+       return list;
+}
+
 static GdkPixbuf*
 sq_create_icon_from_widget(GtkWidget *widget)
 {
@@ -165,6 +218,8 @@
                NULL, NULL, NULL, FALSE
        };
 
+       sq_delete_indicator(box);
+
        box->indicator = 
gdk_window_new(gtk_widget_get_parent_window(box->visible_box), &attributes, 
attr_mask);
        gdk_window_set_user_data(box->indicator, box->visible_box);
 
@@ -215,7 +270,7 @@
 cb_sq_button_data_get(GtkWidget *widget, GdkDragContext *context, 
GtkSelectionData *data, guint info, guint time, gpointer user_data)
 {
        gtk_widget_hide(widget);
-       gtk_selection_data_set(data, gdk_atom_intern("_SQ_BUTTON_DRAG_BOX", 
FALSE), 8, NULL, 0);
+       gtk_selection_data_set(data, gdk_atom_intern(SQ_DRAG_TARGET_ID, FALSE), 
8, NULL, 0);
 }
 
 static void

Modified: squeeze/trunk/src/button_drag_box.h
===================================================================
--- squeeze/trunk/src/button_drag_box.h 2007-01-09 13:10:40 UTC (rev 24331)
+++ squeeze/trunk/src/button_drag_box.h 2007-01-09 15:25:38 UTC (rev 24332)
@@ -63,8 +63,11 @@
 GtkWidget *sq_button_drag_box_new();
 
 void       sq_button_drag_box_lock_buttons(SQButtonDragBox *box, guint 
buttons);
-void       sq_button_drag_box_add_fixed_button(SQButtonDragBox *box, const 
gchar *label);
-void       sq_button_drag_box_add_button(SQButtonDragBox *box, const gchar 
*label, gboolean visible);
+void       sq_button_drag_box_add_fixed_button(SQButtonDragBox *box, const 
gchar *label, gpointer user_data);
+void       sq_button_drag_box_add_button(SQButtonDragBox *box, const gchar 
*label, gboolean visible, gpointer user_data);
 
+GSList    *sq_button_drag_box_get_visible(SQButtonDragBox *box);
+GSList    *sq_button_drag_box_get_hidden(SQButtonDragBox *box);
+
 G_END_DECLS
 #endif /* __SQRCHIVER_BUTTON_DRAG_BOX_H__*/

Modified: squeeze/trunk/src/main_window.c
===================================================================
--- squeeze/trunk/src/main_window.c     2007-01-09 13:10:40 UTC (rev 24331)
+++ squeeze/trunk/src/main_window.c     2007-01-09 15:25:38 UTC (rev 24332)
@@ -41,6 +41,7 @@
 #include "settings.h"
 #include "archive_store.h"
 #include "navigation_bar.h"
+#include "button_drag_box.h"
 
 #ifdef ENABLE_PATHBAR
 #include "path_bar.h"
@@ -773,6 +774,44 @@
 
        gtk_dialog_run(GTK_DIALOG(dialog));
 
+       GSList *iter = SQ_PREFERENCES_DIALOG(dialog)->support.support_list;
+       SQButtonDragBox *box;
+       LSQArchiveSupport *support;
+       GSList *buttons, *button_iter;
+       
+       while(iter)
+       {
+               support = ((SQSupportTuple*)iter->data)->support;
+               box = SQ_BUTTON_DRAG_BOX(((SQSupportTuple*)iter->data)->box);
+
+               buttons = button_iter = sq_button_drag_box_get_visible(box);
+
+               while(button_iter)
+               {
+                       g_object_set(G_OBJECT(support), (const 
gchar*)button_iter->data, TRUE, NULL);
+
+                       button_iter = g_slist_next(button_iter);
+               }
+               g_slist_free(buttons);
+
+               buttons = button_iter = sq_button_drag_box_get_hidden(box);
+
+               while(button_iter)
+               {
+                       g_object_set(G_OBJECT(support), (const 
gchar*)button_iter->data, FALSE, NULL);
+
+                       button_iter = g_slist_next(button_iter);
+               }
+               g_slist_free(buttons);
+
+               g_free(iter->data);
+
+               iter = g_slist_next(iter);
+       }
+       
+       g_slist_free(SQ_PREFERENCES_DIALOG(dialog)->support.support_list);
+       SQ_PREFERENCES_DIALOG(dialog)->support.support_list = NULL;
+
        gtk_widget_destroy(dialog);
 }
 

Modified: squeeze/trunk/src/preferences_dialog.c
===================================================================
--- squeeze/trunk/src/preferences_dialog.c      2007-01-09 13:10:40 UTC (rev 
24331)
+++ squeeze/trunk/src/preferences_dialog.c      2007-01-09 15:25:38 UTC (rev 
24332)
@@ -23,8 +23,8 @@
 #include <libsqueeze/libsqueeze.h>
 #include <gdk-pixbuf/gdk-pixbuf.h>
 
+#include "button_drag_box.h"
 #include "preferences_dialog.h"
-#include "button_drag_box.h"
 
 static void
 sq_preferences_dialog_class_init(SQPreferencesDialogClass *archive_class);
@@ -39,7 +39,7 @@
 sq_preferences_dialog_create_support_page(SQPreferencesDialog *dialog);
 
 static GtkWidget *
-sq_preferences_dialog_create_support_object_page(LSQArchiveSupport *support);
+sq_preferences_dialog_create_support_object_page(SQSupportTuple *tuple);
 
 GType
 sq_preferences_dialog_get_type ()
@@ -185,19 +185,25 @@
        gtk_notebook_set_show_tabs(GTK_NOTEBOOK(dialog->support.notebook), 
FALSE);
        gtk_notebook_set_show_border(GTK_NOTEBOOK(dialog->support.notebook), 
FALSE);
 
+       dialog->support.support_list = NULL;
+
        GSList *sup_iter, *support_list = sup_iter = 
lsq_get_registered_support_list();
 
        GtkTreeIter iter;
        LSQArchiveSupport *support;
+       SQSupportTuple *tuple;
 
        while(sup_iter)
        {
-               support = LSQ_ARCHIVE_SUPPORT(sup_iter->data);
+               tuple = g_new(SQSupportTuple, 1);
+               tuple->support = support = LSQ_ARCHIVE_SUPPORT(sup_iter->data);
                gtk_list_store_append(GTK_LIST_STORE(store), &iter);
                gtk_list_store_set(GTK_LIST_STORE(store), &iter, 1, 
lsq_archive_support_get_id(support), -1);
                sup_iter = g_slist_next(sup_iter);
 
-               
gtk_notebook_append_page(GTK_NOTEBOOK(dialog->support.notebook), 
sq_preferences_dialog_create_support_object_page(support), NULL);
+               
gtk_notebook_append_page(GTK_NOTEBOOK(dialog->support.notebook), 
sq_preferences_dialog_create_support_object_page(tuple), NULL);
+
+               dialog->support.support_list = 
g_slist_prepend(dialog->support.support_list, tuple);
        }
 
        g_slist_free(support_list);
@@ -217,26 +223,27 @@
 }
 
 static GtkWidget *
-sq_preferences_dialog_create_support_object_page(LSQArchiveSupport *support)
+sq_preferences_dialog_create_support_object_page(SQSupportTuple *tuple)
 {
        GtkWidget *vbox = gtk_vbox_new(FALSE, 0);
 
-       GtkWidget *button_box = sq_button_drag_box_new();
+       tuple->box = sq_button_drag_box_new();
+       SQButtonDragBox *button_box = SQ_BUTTON_DRAG_BOX(tuple->box);
 
-       gtk_box_pack_start(GTK_BOX(vbox), button_box, FALSE, FALSE, 0);
+       gtk_box_pack_start(GTK_BOX(vbox), tuple->box, FALSE, FALSE, 0);
 
-       sq_button_drag_box_add_fixed_button(SQ_BUTTON_DRAG_BOX(button_box), 
_("Filename"));
-       sq_button_drag_box_lock_buttons(SQ_BUTTON_DRAG_BOX(button_box), 1);
+       sq_button_drag_box_add_fixed_button(button_box, _("Filename"), NULL);
+       sq_button_drag_box_lock_buttons(button_box, 1);
 
-       GSList *iter, *view_props = iter = 
lsq_archive_support_list_properties(support, "view");
+       GSList *iter, *view_props = iter = 
lsq_archive_support_list_properties(tuple->support, "view");
        GParamSpec *spec;
        gboolean visible;
 
        while(iter)
        {
                spec = G_PARAM_SPEC(iter->data);
-               g_object_get(G_OBJECT(support), g_param_spec_get_name(spec), 
&visible, NULL);
-               sq_button_drag_box_add_button(SQ_BUTTON_DRAG_BOX(button_box), 
g_param_spec_get_nick(spec), visible);
+               g_object_get(G_OBJECT(tuple->support), 
g_param_spec_get_name(spec), &visible, NULL);
+               sq_button_drag_box_add_button(button_box, 
g_param_spec_get_nick(spec), visible, (gpointer)g_param_spec_get_name(spec));
                iter = g_slist_next(iter);
        }
 

Modified: squeeze/trunk/src/preferences_dialog.h
===================================================================
--- squeeze/trunk/src/preferences_dialog.h      2007-01-09 13:10:40 UTC (rev 
24331)
+++ squeeze/trunk/src/preferences_dialog.h      2007-01-09 15:25:38 UTC (rev 
24332)
@@ -38,6 +38,12 @@
                G_TYPE_CHECK_CLASS_TYPE ((class),        \
                        sq_preferences_dialog_get_type()))
 
+typedef struct
+{
+       LSQArchiveSupport *support;
+       GtkWidget *box;
+} SQSupportTuple;
+
 typedef struct _SQPreferencesDialog SQPreferencesDialog;
 
 struct _SQPreferencesDialog
@@ -56,6 +62,7 @@
        } general;
        struct {
                GtkWidget *notebook;
+               GSList *support_list;
        } support;
 };
 
@@ -66,6 +73,7 @@
        GtkDialogClass parent;
 };
 
+GType      sq_preferences_dialog_get_type ();
 GtkWidget *sq_preferences_dialog_new();
 
 G_END_DECLS

_______________________________________________
Xfce4-commits mailing list
[email protected]
http://foo-projects.org/mailman/listinfo/xfce4-commits

Reply via email to