diff src/layout_util.c @ 1309:55ea4962887a

config file format changed to XML save and restore all layout windows save and restore sidebar configuration
author nadvornik
date Sun, 22 Feb 2009 15:35:37 +0000
parents 48e064b37ba6
children cd7204a18f14
line wrap: on
line diff
--- a/src/layout_util.c	Sun Feb 22 13:29:49 2009 +0000
+++ b/src/layout_util.c	Sun Feb 22 15:35:37 2009 +0000
@@ -97,7 +97,7 @@
 			return TRUE;
 			}
 		}
-	if (lw->vd && lw->dir_view_type == DIRVIEW_TREE && GTK_WIDGET_HAS_FOCUS(lw->vd->view) &&
+	if (lw->vd && lw->options.dir_view_type == DIRVIEW_TREE && GTK_WIDGET_HAS_FOCUS(lw->vd->view) &&
 	    !layout_key_match(event->keyval) &&
 	    gtk_widget_event(lw->vd->view, (GdkEvent *)event))
 		{
@@ -194,7 +194,7 @@
 
 	layout_exit_fullscreen(lw);
 
-	nw = layout_new(NULL, FALSE, FALSE);
+	nw = layout_new(NULL, NULL);
 	layout_sort_set(nw, options->file_sort.method, options->file_sort.ascending);
 	layout_set_fd(nw, lw->dir_fd);
 }
@@ -569,7 +569,7 @@
 	LayoutWindow *lw = data;
 	
 	layout_exit_fullscreen(lw);
-	layout_views_set(lw, lw->dir_view_type, (gtk_radio_action_get_current_value(action) == 1) ? FILEVIEW_ICON : FILEVIEW_LIST);
+	layout_views_set(lw, lw->options.dir_view_type, (gtk_radio_action_get_current_value(action) == 1) ? FILEVIEW_ICON : FILEVIEW_LIST);
 }
 
 static void layout_menu_view_dir_as_cb(GtkRadioAction *action, GtkRadioAction *current, gpointer data)
@@ -641,7 +641,7 @@
 	
 	layout_exit_fullscreen(lw);
 
-	if (lw->tools_float == gtk_toggle_action_get_active(action)) return;
+	if (lw->options.tools_float == gtk_toggle_action_get_active(action)) return;
 	layout_tools_float_toggle(lw);
 }
 
@@ -659,7 +659,7 @@
 
 	layout_exit_fullscreen(lw);
 
-	if (lw->toolbar_hidden == gtk_toggle_action_get_active(action)) return;
+	if (lw->options.toolbar_hidden == gtk_toggle_action_get_active(action)) return;
 	layout_toolbar_toggle(lw);
 }
 
@@ -669,7 +669,7 @@
 
 	layout_exit_fullscreen(lw);
 
-	if (lw->bar_enabled == gtk_toggle_action_get_active(action)) return;
+	if (lw->options.panels.info.enabled == gtk_toggle_action_get_active(action)) return;
 	layout_bar_toggle(lw);
 }
 
@@ -688,7 +688,7 @@
 
 	layout_exit_fullscreen(lw);
 
-	if (lw->bar_sort_enabled == gtk_toggle_action_get_active(action)) return;
+	if (lw->options.panels.sort.enabled == gtk_toggle_action_get_active(action)) return;
 	layout_bar_sort_toggle(lw);
 }
 
@@ -1853,25 +1853,25 @@
 	if (!lw->action_group) return;
 
 	action = gtk_action_group_get_action(lw->action_group, "FolderTree");
-	radio_action_set_current_value(GTK_RADIO_ACTION(action), lw->dir_view_type);
+	radio_action_set_current_value(GTK_RADIO_ACTION(action), lw->options.dir_view_type);
 
 	action = gtk_action_group_get_action(lw->action_group, "ViewIcons");
 	gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(action), lw->file_view_type);
 
 	action = gtk_action_group_get_action(lw->action_group, "FloatTools");
-	gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(action), lw->tools_float);
+	gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(action), lw->options.tools_float);
 
 	action = gtk_action_group_get_action(lw->action_group, "SBar");
-	gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(action), lw->bar_enabled);
+	gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(action), lw->options.panels.info.enabled);
 
 	action = gtk_action_group_get_action(lw->action_group, "SBarSort");
-	gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(action), lw->bar_sort_enabled);
+	gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(action), lw->options.panels.sort.enabled);
 
 	action = gtk_action_group_get_action(lw->action_group, "HideToolbar");
-	gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(action), lw->toolbar_hidden);
+	gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(action), lw->options.toolbar_hidden);
 
 	action = gtk_action_group_get_action(lw->action_group, "ShowMarks");
-	gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(action), lw->marks_enabled);
+	gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(action), lw->options.show_marks);
 
 	action = gtk_action_group_get_action(lw->action_group, "SlideShow");
 	gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(action), layout_image_slideshow_active(lw));
@@ -1888,10 +1888,10 @@
 	if (!lw->action_group) return;
 
 	action = gtk_action_group_get_action(lw->action_group, "Thumbnails");
-	gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(action), lw->thumbs_enabled);
+	gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(action), lw->options.show_thumbnails);
 	g_object_set(action, "sensitive", (lw->file_view_type == FILEVIEW_LIST), NULL);
 
-	gtk_toggle_tool_button_set_active(GTK_TOGGLE_TOOL_BUTTON(lw->thumb_button), lw->thumbs_enabled);
+	gtk_toggle_tool_button_set_active(GTK_TOGGLE_TOOL_BUTTON(lw->thumb_button), lw->options.show_thumbnails);
 	gtk_widget_set_sensitive(lw->thumb_button, (lw->file_view_type == FILEVIEW_LIST));
 }
 
@@ -1950,7 +1950,7 @@
 	if (lw->utility_box)
 		{
 		/* destroyed from within itself */
-		lw->bar_enabled = FALSE;
+		lw->options.panels.info.enabled = FALSE;
 		layout_util_sync_views(lw);
 		}
 }
@@ -1968,68 +1968,86 @@
 
 	if (!lw->bar) return;
 	
-	options->panels.info.width = lw->bar_width = allocation->width;
+	lw->options.panels.info.width = allocation->width;
 }
 
-static void layout_bar_new(LayoutWindow *lw)
+void layout_bar_new(LayoutWindow *lw, gboolean populate)
 {
 	if (!lw->utility_box) return;
 
-	lw->bar = bar_new(lw->utility_box);
-	bar_set_selection_func(lw->bar, layout_bar_list_cb, lw);
-	g_signal_connect(G_OBJECT(lw->bar), "destroy",
-			 G_CALLBACK(layout_bar_destroyed), lw);
-	g_signal_connect(G_OBJECT(lw->bar), "size_allocate",
-			 G_CALLBACK(layout_bar_sized), lw);
+	if (!lw->bar)
+		{
+		lw->bar = bar_new(lw->utility_box);
+
+		if (populate)
+			{
+			bar_populate_default(lw->bar);
+			}
 
-	options->panels.info.enabled = lw->bar_enabled = TRUE;
-	gtk_widget_set_size_request(lw->bar, lw->bar_width, -1);
+		bar_set_selection_func(lw->bar, layout_bar_list_cb, lw);
+		g_signal_connect(G_OBJECT(lw->bar), "destroy",
+				 G_CALLBACK(layout_bar_destroyed), lw);
+		g_signal_connect(G_OBJECT(lw->bar), "size_allocate",
+				 G_CALLBACK(layout_bar_sized), lw);
 
-	gtk_box_pack_start(GTK_BOX(lw->utility_box), lw->bar, FALSE, FALSE, 0);
-	
+
+		gtk_box_pack_start(GTK_BOX(lw->utility_box), lw->bar, FALSE, FALSE, 0);
+		}
+
+	lw->options.panels.info.enabled  = TRUE;
+	gtk_widget_set_size_request(lw->bar, lw->options.panels.info.width, -1);
 	bar_set_fd(lw->bar, layout_image_get_fd(lw));
 	gtk_widget_show(lw->bar);
 }
 
-static void layout_bar_close(LayoutWindow *lw)
+void layout_bar_close(LayoutWindow *lw)
 {
 	if (lw->bar)
 		{
 		bar_close(lw->bar);
 		lw->bar = NULL;
 		}
-	options->panels.info.enabled = lw->bar_enabled = FALSE;
+	lw->options.panels.info.enabled = FALSE;
+}
+
+static void layout_bar_hide(LayoutWindow *lw)
+{
+	if (lw->bar)
+		{
+		gtk_widget_hide(lw->bar);
+		}
+	lw->options.panels.info.enabled = FALSE;
 }
 
 void layout_bar_toggle(LayoutWindow *lw)
 {
-	if (lw->bar_enabled)
+	if (lw->options.panels.info.enabled)
 		{
-		layout_bar_close(lw);
+		layout_bar_hide(lw);
 		}
 	else
 		{
-		layout_bar_new(lw);
+		layout_bar_new(lw, TRUE);
 		}
 }
 
 static void layout_bar_new_image(LayoutWindow *lw)
 {
-	if (!lw->bar || !lw->bar_enabled) return;
+	if (!lw->bar || !lw->options.panels.info.enabled) return;
 
 	bar_set_fd(lw->bar, layout_image_get_fd(lw));
 }
 
 static void layout_bar_new_selection(LayoutWindow *lw, gint count)
 {
-	if (!lw->bar || !lw->bar_enabled) return;
+	if (!lw->bar || !lw->options.panels.info.enabled) return;
 
 //	bar_info_selection(lw->bar_info, count - 1);
 }
 
 static void layout_bar_maint_renamed(LayoutWindow *lw)
 {
-	if (!lw->bar || !lw->bar_enabled) return;
+	if (!lw->bar || !lw->options.panels.info.enabled) return;
 
 //	bar_maint_renamed(lw->bar_info, layout_image_get_fd(lw));
 }
@@ -2043,7 +2061,7 @@
 	if (lw->utility_box)
 		{
 		/* destroyed from within itself */
-		lw->bar_sort_enabled = FALSE;
+		lw->options.panels.sort.enabled = FALSE;
 
 		layout_util_sync_views(lw);
 		}
@@ -2056,7 +2074,7 @@
 	lw->bar_sort = bar_sort_new(lw);
 	g_signal_connect(G_OBJECT(lw->bar_sort), "destroy",
 			 G_CALLBACK(layout_bar_sort_destroyed), lw);
-	options->panels.sort.enabled = lw->bar_sort_enabled = TRUE;
+	lw->options.panels.sort.enabled = TRUE;
 
 	gtk_box_pack_end(GTK_BOX(lw->utility_box), lw->bar_sort, FALSE, FALSE, 0);
 	gtk_widget_show(lw->bar_sort);
@@ -2069,12 +2087,12 @@
 		bar_sort_close(lw->bar_sort);
 		lw->bar_sort = NULL;
 		}
-	options->panels.sort.enabled = lw->bar_sort_enabled = FALSE;
+	lw->options.panels.sort.enabled = FALSE;
 }
 
 void layout_bar_sort_toggle(LayoutWindow *lw)
 {
-	if (lw->bar_sort_enabled)
+	if (lw->options.panels.sort.enabled)
 		{
 		layout_bar_sort_close(lw);
 		}
@@ -2106,14 +2124,14 @@
 	gtk_box_pack_start(GTK_BOX(lw->utility_box), image, TRUE, TRUE, 0);
 	gtk_widget_show(image);
 
-	if (lw->bar_sort_enabled)
+	if (lw->options.panels.sort.enabled)
 		{
 		layout_bar_sort_new(lw);
 		}
 
-	if (lw->bar_enabled)
+	if (lw->options.panels.info.enabled)
 		{
-		layout_bar_new(lw);
+		layout_bar_new(lw, TRUE);
 		}
 
 	return lw->utility_box;