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