[gnome-commander] tabs: restore saved tabs at startup



commit 5ec2a00e540f0ba041843deb6ac8f3dbaa1335d4
Author: Piotr Eljasiak <epiotr src gnome org>
Date:   Mon Aug 9 21:58:52 2010 +0200

    tabs: restore saved tabs at startup

 src/gnome-cmd-file-selector.cc |    2 -
 src/gnome-cmd-main-win.cc      |   49 ++++++++++++++++++++++------------------
 src/main.cc                    |    6 +++++
 3 files changed, 33 insertions(+), 24 deletions(-)
---
diff --git a/src/gnome-cmd-file-selector.cc b/src/gnome-cmd-file-selector.cc
index 12214e6..b93b0d3 100644
--- a/src/gnome-cmd-file-selector.cc
+++ b/src/gnome-cmd-file-selector.cc
@@ -713,9 +713,7 @@ static void init (GnomeCmdFileSelector *fs)
     fs->con_hbox = create_hbox (*fs, FALSE, 2);
 
     // create the notebook and the first tab
-    FileSelectorID id = main_win->fs(fs);
     fs->notebook = new GnomeCmdNotebook;
-    fs->new_tab(NULL, gnome_cmd_data.get_sort_col(id), gnome_cmd_data.get_sort_direction(id));
 
     // create the connection combo
     fs->con_combo = new GnomeCmdCombo(2, 1);
diff --git a/src/gnome-cmd-main-win.cc b/src/gnome-cmd-main-win.cc
index b542c23..0ad3ec7 100644
--- a/src/gnome-cmd-main-win.cc
+++ b/src/gnome-cmd-main-win.cc
@@ -703,22 +703,12 @@ static gboolean on_window_state_event (GtkWidget *mw, GdkEventWindowState *event
 
 static void destroy (GtkObject *object)
 {
-    GnomeCmdCon *con_home = get_home_con ();
-
     if (main_win && main_win->priv && main_win->priv->key_snooper_id)
     {
         gtk_key_snooper_remove (main_win->priv->key_snooper_id);
         main_win->priv->key_snooper_id = 0;
     }
 
-    GnomeCmdDir *dir = main_win->fs(LEFT)->get_directory();
-    if (con_home == gnome_cmd_dir_get_connection (dir))
-        gnome_cmd_data_set_start_dir (LEFT, gnome_cmd_file_get_path (GNOME_CMD_FILE (dir)));
-
-    dir = main_win->fs(RIGHT)->get_directory();
-    if (con_home == gnome_cmd_dir_get_connection (dir))
-        gnome_cmd_data_set_start_dir (RIGHT, gnome_cmd_file_get_path (GNOME_CMD_FILE (dir)));
-
     if (main_win->advrename_dlg)
         gtk_widget_destroy (*main_win->advrename_dlg);
 
@@ -824,23 +814,38 @@ static void init (GnomeCmdMainWin *mw)
     g_signal_connect (mw->fs(LEFT), "dir-changed", G_CALLBACK (on_fs_dir_change), mw);
     g_signal_connect (mw->fs(RIGHT), "dir-changed", G_CALLBACK (on_fs_dir_change), mw);
 
-    g_signal_connect (mw->fs(LEFT)->file_list(), "resize-column", G_CALLBACK (on_fs_list_resize_column), mw->fs(RIGHT)->file_list());
-    g_signal_connect (mw->fs(RIGHT)->file_list(), "resize-column", G_CALLBACK (on_fs_list_resize_column), mw->fs(LEFT)->file_list());
-    g_signal_connect (mw->fs(LEFT)->file_list(), "button-press-event", G_CALLBACK (on_left_fs_select), mw);
-    g_signal_connect (mw->fs(RIGHT)->file_list(), "button-press-event", G_CALLBACK (on_right_fs_select), mw);
+    mw->fs(LEFT)->update_connections();
+    mw->fs(RIGHT)->update_connections();
+
+    GnomeCmdCon *home = get_home_con ();
+
+    if (gnome_cmd_data.tabs[LEFT].empty())
+        gnome_cmd_data.tabs[LEFT].push_back(make_triple(string(g_get_home_dir ()), GnomeCmdFileList::COLUMN_NAME, GTK_SORT_ASCENDING));
+
+    for (vector<GnomeCmdData::Tab>::const_iterator i=gnome_cmd_data.tabs[LEFT].begin(); i!=gnome_cmd_data.tabs[LEFT].end(); ++i)
+    {
+        GnomeCmdDir *dir = gnome_cmd_dir_new (home, gnome_cmd_con_create_path (home, i->first.c_str()));
+        mw->fs(LEFT)->new_tab(dir, i->second, i->third);
+    }
+
+    if (gnome_cmd_data.tabs[RIGHT].empty())
+        gnome_cmd_data.tabs[RIGHT].push_back(make_triple(string(g_get_home_dir ()), GnomeCmdFileList::COLUMN_NAME, GTK_SORT_ASCENDING));
+
+    for (vector<GnomeCmdData::Tab>::const_iterator i=gnome_cmd_data.tabs[RIGHT].begin(); i!=gnome_cmd_data.tabs[RIGHT].end(); ++i)
+    {
+        GnomeCmdDir *dir = gnome_cmd_dir_new (home, gnome_cmd_con_create_path (home, i->first.c_str()));
+        mw->fs(RIGHT)->new_tab(dir, i->second, i->third);
+    }
+
     g_signal_connect (mw, "size-allocate", G_CALLBACK (on_size_allocate), mw);
     g_signal_connect (mw, "delete-event", G_CALLBACK (on_delete_event), mw);
     g_signal_connect (mw->priv->paned, "button-press-event", G_CALLBACK (on_slide_button_press), mw);
     g_signal_connect (mw, "window-state-event", G_CALLBACK (on_window_state_event), NULL);
 
-    mw->fs(LEFT)->update_connections();
-    mw->fs(RIGHT)->update_connections();
-
-    mw->fs(LEFT)->set_connection(get_home_con ());
-    mw->fs(RIGHT)->set_connection(get_home_con ());
-
-    mw->fs(LEFT)->goto_directory(start_dir_left ? start_dir_left : gnome_cmd_data_get_start_dir (LEFT));
-    mw->fs(RIGHT)->goto_directory(start_dir_right ? start_dir_right : gnome_cmd_data_get_start_dir (RIGHT));
+    g_signal_connect (mw->fs(LEFT)->file_list(), "resize-column", G_CALLBACK (on_fs_list_resize_column), mw->fs(RIGHT)->file_list());
+    g_signal_connect (mw->fs(RIGHT)->file_list(), "resize-column", G_CALLBACK (on_fs_list_resize_column), mw->fs(LEFT)->file_list());
+    g_signal_connect (mw->fs(LEFT)->file_list(), "button-press-event", G_CALLBACK (on_left_fs_select), mw);
+    g_signal_connect (mw->fs(RIGHT)->file_list(), "button-press-event", G_CALLBACK (on_right_fs_select), mw);
 
     gtk_window_add_accel_group (*mw, mw->priv->accel_group);
     mw->focus_file_lists();
diff --git a/src/main.cc b/src/main.cc
index 486723b..82adeb4 100644
--- a/src/main.cc
+++ b/src/main.cc
@@ -153,6 +153,12 @@ int main (int argc, char *argv[])
         unique_app_send_message (app, UNIQUE_ACTIVATE, NULL);
     else
     {
+        if (start_dir_left)
+            gnome_cmd_data.tabs[LEFT].push_back(make_triple(string(start_dir_left),GnomeCmdFileList::COLUMN_NAME,GTK_SORT_ASCENDING));
+
+        if (start_dir_right)
+            gnome_cmd_data.tabs[RIGHT].push_back(make_triple(string(start_dir_right),GnomeCmdFileList::COLUMN_NAME,GTK_SORT_ASCENDING));
+
         gcmd_user_actions.set_defaults();
         ls_colors_init ();
         gnome_cmd_data.load_more();



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]