Author: peter
Date: 2007-01-08 23:56:44 +0000 (Mon, 08 Jan 2007)
New Revision: 24326

Modified:
   squeeze/trunk/libsqueeze/archive-support.c
   squeeze/trunk/libsqueeze/archive-support.h
   squeeze/trunk/src/button_drag_box.c
   squeeze/trunk/src/button_drag_box.h
   squeeze/trunk/src/preferences_dialog.c
Log:
button drag is generate dynamicly


Modified: squeeze/trunk/libsqueeze/archive-support.c
===================================================================
--- squeeze/trunk/libsqueeze/archive-support.c  2007-01-08 22:22:18 UTC (rev 
24325)
+++ squeeze/trunk/libsqueeze/archive-support.c  2007-01-08 23:56:44 UTC (rev 
24326)
@@ -102,6 +102,15 @@
 /*
  *
  */
+const gchar *
+lsq_archive_support_get_id(LSQArchiveSupport *support)
+{
+       return support->id;
+}
+
+/*
+ *
+ */
 void
 lsq_archive_support_add_mime(LSQArchiveSupport *support, gchar *mime)
 {
@@ -125,6 +134,15 @@
 /*
  *
  */
+GSList *
+lsq_get_registered_support_list()
+{
+       return g_slist_copy(lsq_archive_support_list);
+}
+
+/*
+ *
+ */
 gboolean
 lsq_register_support(LSQArchiveSupport *support)
 { 

Modified: squeeze/trunk/libsqueeze/archive-support.h
===================================================================
--- squeeze/trunk/libsqueeze/archive-support.h  2007-01-08 22:22:18 UTC (rev 
24325)
+++ squeeze/trunk/libsqueeze/archive-support.h  2007-01-08 23:56:44 UTC (rev 
24326)
@@ -94,10 +94,12 @@
 void                 lsq_archive_support_add_mime(LSQArchiveSupport *support, 
gchar *mime);
 gboolean             lsq_archive_support_mime_supported(LSQArchiveSupport 
*,const gchar *mime);
 
+GSList *             lsq_get_registered_support_list();
 gboolean             lsq_register_support(LSQArchiveSupport *);
 LSQArchiveSupport *  lsq_get_support_for_mime(ThunarVfsMimeInfo *mime_info);
 LSQArchiveSupport *  lsq_get_support_for_mime_from_slist(GSList *list, const 
gchar *mime);
 
+const gchar *        lsq_archive_support_get_id(LSQArchiveSupport *support);
 gint                 lsq_archive_support_lookup_mime(gconstpointer 
support_mime, gconstpointer mime);
 gint                 lsq_archive_support_lookup_support(gconstpointer support, 
gconstpointer mime);
 

Modified: squeeze/trunk/src/button_drag_box.c
===================================================================
--- squeeze/trunk/src/button_drag_box.c 2007-01-08 22:22:18 UTC (rev 24325)
+++ squeeze/trunk/src/button_drag_box.c 2007-01-08 23:56:44 UTC (rev 24326)
@@ -27,15 +27,6 @@
 
 #define SQ_INDICATOR_SIZE 9
 
-static void
-sq_button_drag_box_lock_buttons(SQButtonDragBox *box, guint buttons);
-
-static void
-sq_button_drag_box_add_fixed_button(SQButtonDragBox *box, const gchar *label);
-
-static void
-sq_button_drag_box_add_button(SQButtonDragBox *box, const gchar *label, 
gboolean visible);
-
 static GdkPixbuf*
 sq_create_icon_from_widget(GtkWidget *widget);
 
@@ -114,17 +105,10 @@
 
        box = g_object_new(SQ_TYPE_BUTTON_DRAG_BOX, NULL);
 
-       sq_button_drag_box_add_fixed_button(SQ_BUTTON_DRAG_BOX(box), 
_("Filename"));
-
-       sq_button_drag_box_add_button(SQ_BUTTON_DRAG_BOX(box), "Size", TRUE);
-       sq_button_drag_box_add_button(SQ_BUTTON_DRAG_BOX(box), "Time", TRUE);
-
-       sq_button_drag_box_lock_buttons(SQ_BUTTON_DRAG_BOX(box), 1);
-
        return box;
 }
 
-static void
+void
 sq_button_drag_box_add_fixed_button(SQButtonDragBox *box, const gchar *label)
 {
        GtkWidget *button = gtk_button_new_with_label(label);
@@ -136,7 +120,7 @@
        g_signal_connect(G_OBJECT(button), "focus", 
G_CALLBACK(cb_signal_blocker), NULL);
 }
 
-static void
+void
 sq_button_drag_box_add_button(SQButtonDragBox *box, const gchar *label, 
gboolean visible)
 {
        GtkWidget *button = gtk_button_new_with_label(label);
@@ -152,7 +136,7 @@
        g_signal_connect(G_OBJECT(button), "focus", 
G_CALLBACK(cb_signal_blocker), NULL);
 }
 
-static void
+void
 sq_button_drag_box_lock_buttons(SQButtonDragBox *box, guint buttons)
 {
        box->locked_buttons = buttons;

Modified: squeeze/trunk/src/button_drag_box.h
===================================================================
--- squeeze/trunk/src/button_drag_box.h 2007-01-08 22:22:18 UTC (rev 24325)
+++ squeeze/trunk/src/button_drag_box.h 2007-01-08 23:56:44 UTC (rev 24326)
@@ -62,5 +62,9 @@
 GType      sq_button_drag_box_get_type();
 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);
+
 G_END_DECLS
 #endif /* __SQRCHIVER_BUTTON_DRAG_BOX_H__*/

Modified: squeeze/trunk/src/preferences_dialog.c
===================================================================
--- squeeze/trunk/src/preferences_dialog.c      2007-01-08 22:22:18 UTC (rev 
24325)
+++ squeeze/trunk/src/preferences_dialog.c      2007-01-08 23:56:44 UTC (rev 
24326)
@@ -33,10 +33,13 @@
 sq_preferences_dialog_init(SQPreferencesDialog *archive);
 
 static void
-cb_sq_preferences_dialog_item_activated(GtkWidget *widget, GtkTreePath *path, 
gpointer user_data);
+cb_sq_preferences_dialog_item_changed(GtkWidget *widget, gpointer user_data);
 
+inline static void
+sq_preferences_dialog_create_support_page(SQPreferencesDialog *dialog);
+
 static GtkWidget *
-sq_preferences_dialog_create_page(LSQArchiveSupport *support);
+sq_preferences_dialog_create_support_object_page(LSQArchiveSupport *support);
 
 GType
 sq_preferences_dialog_get_type ()
@@ -75,7 +78,6 @@
        GtkWidget *box;
        GtkWidget *label;
        GtkWidget *frame;
-       GtkWidget *iconview;
        dialog->notebook = gtk_notebook_new();
 
        box = gtk_vbox_new(FALSE, 0);
@@ -121,7 +123,38 @@
        gtk_container_add(GTK_CONTAINER(frame), nav_vbox);
        gtk_container_set_border_width(GTK_CONTAINER(nav_vbox), 0);
 
+       sq_preferences_dialog_create_support_page(dialog);
+
        box = gtk_hbox_new(FALSE, 0);
+       label = gtk_label_new_with_mnemonic(_("_Behaviour"));
+       gtk_notebook_append_page(GTK_NOTEBOOK(dialog->notebook), box, label);
+
+       gtk_container_add(GTK_CONTAINER(GTK_DIALOG(dialog)->vbox), 
dialog->notebook);
+       gtk_widget_show_all(dialog->notebook);
+       gtk_dialog_add_buttons(GTK_DIALOG(dialog), 
+                       GTK_STOCK_CLOSE, GTK_RESPONSE_OK,
+                       NULL);
+       gtk_dialog_set_default_response(GTK_DIALOG(dialog), GTK_RESPONSE_OK);
+}
+
+GtkWidget *
+sq_preferences_dialog_new()
+{
+       GtkWidget *dialog;
+
+       dialog = g_object_new(sq_preferences_dialog_get_type(),
+                       "title", _("Preferences"),
+                       NULL);
+
+       return dialog;
+}
+
+inline static void
+sq_preferences_dialog_create_support_page(SQPreferencesDialog *dialog)
+{
+       GtkWidget *iconview;
+       GtkWidget *label;
+       GtkWidget *box = gtk_hbox_new(FALSE, 0);
        label = gtk_label_new_with_mnemonic(_("_Archivers"));
        gtk_notebook_append_page(GTK_NOTEBOOK(dialog->notebook), box, label);
 
@@ -129,7 +162,7 @@
        GtkCellRenderer *render = gtk_cell_renderer_pixbuf_new();
 
        iconview = gtk_icon_view_new_with_model(store);
-       g_signal_connect(G_OBJECT(iconview), "item-activated", 
(GCallback)cb_sq_preferences_dialog_item_activated, dialog);
+       g_signal_connect(G_OBJECT(iconview), "selection-changed", 
(GCallback)cb_sq_preferences_dialog_item_changed, dialog);
 
        GtkWidget *scroll = gtk_scrolled_window_new(NULL, NULL);
        gtk_widget_set_size_request(scroll, 84, 84);
@@ -141,59 +174,50 @@
        gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(scroll), 
GTK_SHADOW_IN);
 
        render = gtk_cell_renderer_text_new();
+       g_object_set(G_OBJECT(render), "ellipsize", PANGO_ELLIPSIZE_END, 
"ellipsize-set", TRUE, NULL);
        gtk_icon_view_set_item_width(GTK_ICON_VIEW(iconview), 48);
-       gtk_icon_view_set_orientation(GTK_ICON_VIEW(iconview), 
GTK_ORIENTATION_VERTICAL);
+       /* gtk_icon_view_set_orientation(GTK_ICON_VIEW(iconview), 
GTK_ORIENTATION_HORIZONTAL); */
+       gtk_icon_view_set_columns(GTK_ICON_VIEW(iconview), 1);
        gtk_icon_view_set_pixbuf_column(GTK_ICON_VIEW(iconview), 0);
        gtk_icon_view_set_text_column(GTK_ICON_VIEW(iconview), 1);
 
-       /* TODO: auto gen this here */
+       dialog->support.notebook = gtk_notebook_new();
+       gtk_notebook_set_show_tabs(GTK_NOTEBOOK(dialog->support.notebook), 
FALSE);
+       gtk_notebook_set_show_border(GTK_NOTEBOOK(dialog->support.notebook), 
FALSE);
 
+       GSList *sup_iter, *support_list = sup_iter = 
lsq_get_registered_support_list();
+
        GtkTreeIter iter;
-       gtk_list_store_append(GTK_LIST_STORE(store), &iter);
-       gtk_list_store_set(GTK_LIST_STORE(store), &iter, 1, "zip", -1);
-       gtk_list_store_append(GTK_LIST_STORE(store), &iter);
-       gtk_list_store_set(GTK_LIST_STORE(store), &iter, 1, "tar", -1);
-       gtk_list_store_append(GTK_LIST_STORE(store), &iter);
-       gtk_list_store_set(GTK_LIST_STORE(store), &iter, 1, "ehmm", -1);
+       LSQArchiveSupport *support;
 
-       gtk_widget_show(iconview);
+       while(sup_iter)
+       {
+               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);
 
-       dialog->support.notebook = gtk_notebook_new();
-       gtk_notebook_set_show_tabs(GTK_NOTEBOOK(dialog->support.notebook), 
FALSE);
-       gtk_notebook_set_show_border(GTK_NOTEBOOK(dialog->support.notebook), 
FALSE);
+               
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_page(NULL), NULL);
+       g_slist_free(support_list);
 
-       gtk_box_pack_start(GTK_BOX(box), scroll, FALSE, FALSE, 0);
-       gtk_box_pack_start(GTK_BOX(box), dialog->support.notebook, TRUE, TRUE, 
0);
-       gtk_widget_show_all(box);
+       GtkTreePath *path = gtk_tree_path_new_from_indices(0, -1);
 
-       box = gtk_hbox_new(FALSE, 0);
-       label = gtk_label_new_with_mnemonic(_("_Behaviour"));
-       gtk_notebook_append_page(GTK_NOTEBOOK(dialog->notebook), box, label);
+       gtk_icon_view_set_cursor(GTK_ICON_VIEW(iconview), path, NULL, FALSE);
+       gtk_icon_view_select_path(GTK_ICON_VIEW(iconview), path);
 
-       gtk_container_add(GTK_CONTAINER(GTK_DIALOG(dialog)->vbox), 
dialog->notebook);
-       gtk_widget_show_all(dialog->notebook);
-       gtk_dialog_add_buttons(GTK_DIALOG(dialog), 
-                       GTK_STOCK_CLOSE, GTK_RESPONSE_OK,
-                       NULL);
-       gtk_dialog_set_default_response(GTK_DIALOG(dialog), GTK_RESPONSE_OK);
-}
+       gtk_tree_path_free(path);
 
-GtkWidget *
-sq_preferences_dialog_new()
-{
-       GtkWidget *dialog;
+       gtk_widget_show(iconview);
 
-       dialog = g_object_new(sq_preferences_dialog_get_type(),
-                       "title", _("Preferences"),
-                       NULL);
-
-       return dialog;
+       gtk_box_pack_start(GTK_BOX(box), scroll, FALSE, FALSE, 0);
+       gtk_box_pack_start(GTK_BOX(box), dialog->support.notebook, TRUE, TRUE, 
0);
+       gtk_widget_show_all(box);
 }
 
 static GtkWidget *
-sq_preferences_dialog_create_page(LSQArchiveSupport *support)
+sq_preferences_dialog_create_support_object_page(LSQArchiveSupport *support)
 {
        GtkWidget *vbox = gtk_vbox_new(FALSE, 0);
 
@@ -201,13 +225,33 @@
 
        gtk_box_pack_start(GTK_BOX(vbox), button_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);
+
+       GSList *iter, *view_props = iter = 
lsq_archive_support_list_properties(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);
+               iter = g_slist_next(iter);
+       }
+
+       g_slist_free(view_props);
+
        return vbox;
 }
 
 static void
-cb_sq_preferences_dialog_item_activated(GtkWidget *widget, GtkTreePath *path, 
gpointer user_data)
+cb_sq_preferences_dialog_item_changed(GtkWidget *widget, gpointer user_data)
 {
        SQPreferencesDialog *dialog = SQ_PREFERENCES_DIALOG(user_data);
+       GtkTreePath *path;
+       gtk_icon_view_get_cursor(GTK_ICON_VIEW(widget), &path, NULL);
        gtk_notebook_set_current_page(GTK_NOTEBOOK(dialog->support.notebook), 
gtk_tree_path_get_indices(path)[0]);
+       gtk_tree_path_free(path);
 }
 

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

Reply via email to