Hi,
The current implementation of sidebars has several problems:
- Keywords bar needs more entries, like Title or Copyright
- Advanced exif is too wide
- Exif and Keywords together are too wide
- some possible new entries does not fit anywhere in the existing
sidebars (for example Histogram), adding new sidebars would cause more
problems with multiple sidebars together
- Sort manager is OK, even in combination with another sidebar
Proposal:
- Combine Exif and Keywords into one sidebar, which will be typically longer
than main window, with a scrollbar and expanders. Any additional entries
(Histogram) will go there too.
- Advanced exif will be in a separate window
- Sort manager will stay unchanged
- Edit/Properties will be dropped
The attached patch is a proof of concept that adds more entries with expanders
to the Keywords bar.
Any opinions?
Vladimir
Index: src/bar_info.c
===================================================================
--- src/bar_info.c (revision 1385)
+++ src/bar_info.c (working copy)
@@ -810,10 +810,13 @@
{
BarInfoData *bd;
GtkWidget *box;
+ GtkWidget *expander;
GtkWidget *hbox;
+ GtkWidget *xbox;
GtkWidget *table;
GtkWidget *scrolled;
GtkTextBuffer *buffer;
+ GtkTextView *view;
GtkWidget *label;
GtkWidget *tbar;
GtkListStore *store;
@@ -861,19 +864,115 @@
bd->label_file_time = NULL;
}
- table = gtk_table_new(3, 1, TRUE);
- gtk_table_set_row_spacings(GTK_TABLE(table), PREF_PAD_GAP);
- gtk_box_pack_start(GTK_BOX(bd->group_box), table, TRUE, TRUE, 0);
+// table = gtk_table_new(3, 1, TRUE);
+// gtk_table_set_row_spacings(GTK_TABLE(table), PREF_PAD_GAP);
+// gtk_box_pack_start(GTK_BOX(bd->group_box), table, TRUE, TRUE, 0);
+// gtk_widget_show(table);
+
+ scrolled = gtk_scrolled_window_new(NULL, NULL);
+ gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolled),
+ GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
+ gtk_box_pack_start(GTK_BOX(bd->group_box), scrolled, TRUE, TRUE, 0);
+ gtk_widget_show(scrolled);
+
+
+ xbox = gtk_vbox_new(FALSE, 0);
+ gtk_scrolled_window_add_with_viewport(scrolled, xbox);
+ gtk_viewport_set_shadow_type(gtk_bin_get_child(scrolled), GTK_SHADOW_NONE);
+ gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(scrolled), GTK_SHADOW_NONE);
+ gtk_widget_show(xbox);
+
+ /* borrowed from info.c */
+ expander = gtk_expander_new ("General Info");
+ gtk_box_pack_start(xbox, expander, FALSE, TRUE, 0);
+ gtk_widget_show(expander);
+
+ label = gtk_expander_get_label_widget(expander);
+ gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5);
+ pref_label_bold(label, TRUE, FALSE);
+
+ table = pref_table_new(NULL, 2, 11, FALSE, FALSE);
+ gtk_container_set_border_width(GTK_CONTAINER(table), PREF_PAD_BORDER);
+
+ table_add_line(table, 0, 0, _("File date:"), NULL);
+ table_add_line(table, 0, 1, _("File size:"), NULL);
+
+ table_add_line(table, 0, 2, _("Dimensions:"), NULL);
+ table_add_line(table, 0, 3, _("Transparent:"), NULL);
+ table_add_line(table, 0, 4, _("Image size:"), NULL);
+
+ table_add_line(table, 0, 5, _("Compress ratio:"), NULL);
+ table_add_line(table, 0, 6, _("File type:"), NULL);
+
+ table_add_line(table, 0, 7, _("Owner:"), NULL);
+ table_add_line(table, 0, 8, _("Group:"), NULL);
+ table_add_line(table, 0, 9, "", NULL);
+
+ gtk_container_add (GTK_CONTAINER (expander), table);
gtk_widget_show(table);
+ /* comment entry */
+ expander = gtk_expander_new ("Comment");
+// box = gtk_vbox_new(FALSE, 0);
+// gtk_table_attach(GTK_TABLE(table), expander, 0, 1, 2, 3,
+// GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
+ gtk_box_pack_start(xbox, expander, FALSE, TRUE, 0);
+ gtk_widget_show(expander);
+
+ label = gtk_expander_get_label_widget(expander);
+ gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5);
+ pref_label_bold(label, TRUE, FALSE);
+
+ scrolled = gtk_scrolled_window_new(NULL, NULL);
+ gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(scrolled), GTK_SHADOW_IN);
+ gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolled),
+ GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
+ gtk_container_add (GTK_CONTAINER (expander), scrolled);
+ gtk_widget_show(scrolled);
+
+ bd->comment_view = gtk_text_view_new();
+ gtk_container_add(GTK_CONTAINER(scrolled), bd->comment_view);
+ gtk_widget_show(bd->comment_view);
+
+ buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(bd->comment_view));
+ g_signal_connect(G_OBJECT(buffer), "changed",
+ G_CALLBACK(bar_info_changed), bd);
+
+
+ /* comment entry */
+ expander = gtk_expander_new ("Copyright");
+ gtk_box_pack_start(xbox, expander, FALSE, TRUE, 0);
+ gtk_widget_show(expander);
+
+ label = gtk_expander_get_label_widget(expander);
+ gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5);
+ pref_label_bold(label, TRUE, FALSE);
+
+ scrolled = gtk_scrolled_window_new(NULL, NULL);
+ gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(scrolled), GTK_SHADOW_IN);
+ gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolled),
+ GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
+// gtk_box_pack_start(GTK_BOX(box), scrolled, TRUE, TRUE, 0);
+ gtk_container_add (GTK_CONTAINER (expander), scrolled);
+ gtk_widget_show(scrolled);
+
+ view = gtk_text_view_new();
+ gtk_container_add(GTK_CONTAINER(scrolled), view);
+ gtk_widget_show(view);
+
/* keyword entry */
+ expander = gtk_expander_new ("Keywords");
+// gtk_table_attach(GTK_TABLE(table), expander, 0, 1, 0, 2,
+// GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
+ gtk_box_pack_start(xbox, expander, FALSE, TRUE, 0);
+ gtk_widget_show(expander);
+
box = gtk_vbox_new(FALSE, 0);
- gtk_table_attach(GTK_TABLE(table), box, 0, 1, 0, 2,
- GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
+ gtk_container_add (GTK_CONTAINER (expander), box);
gtk_widget_show(box);
- label = pref_label_new(box, _("Keywords:"));
+ label = gtk_expander_get_label_widget(expander);
gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5);
pref_label_bold(label, TRUE, FALSE);
@@ -887,6 +986,7 @@
gtk_widget_show(scrolled);
bd->keyword_view = gtk_text_view_new();
+ gtk_widget_set_size_request(scrolled, -1, 500);
gtk_container_add(GTK_CONTAINER(scrolled), bd->keyword_view);
gtk_widget_show(bd->keyword_view);
@@ -951,32 +1051,6 @@
gtk_container_add(GTK_CONTAINER(scrolled), bd->keyword_treeview);
gtk_widget_show(bd->keyword_treeview);
- /* comment entry */
-
- box = gtk_vbox_new(FALSE, 0);
- gtk_table_attach(GTK_TABLE(table), box, 0, 1, 2, 3,
- GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
- gtk_widget_show(box);
-
- label = pref_label_new(box, _("Comment:"));
- gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5);
- pref_label_bold(label, TRUE, FALSE);
-
- scrolled = gtk_scrolled_window_new(NULL, NULL);
- gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(scrolled), GTK_SHADOW_IN);
- gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolled),
- GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
- gtk_box_pack_start(GTK_BOX(box), scrolled, TRUE, TRUE, 0);
- gtk_widget_show(scrolled);
-
- bd->comment_view = gtk_text_view_new();
- gtk_container_add(GTK_CONTAINER(scrolled), bd->comment_view);
- gtk_widget_show(bd->comment_view);
-
- buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(bd->comment_view));
- g_signal_connect(G_OBJECT(buffer), "changed",
- G_CALLBACK(bar_info_changed), bd);
-
/* toolbar */
tbar = pref_toolbar_new(bd->group_box, GTK_TOOLBAR_ICONS);
------------------------------------------------------------------------------
Create and Deploy Rich Internet Apps outside the browser with Adobe(R)AIR(TM)
software. With Adobe AIR, Ajax developers can use existing skills and code to
build responsive, highly engaging applications that combine the power of local
resources and data with the reach of the web. Download the Adobe AIR SDK and
Ajax docs to start building applications today-http://p.sf.net/sfu/adobe-com
_______________________________________________
Geeqie-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/geeqie-devel