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