diff --git a/src/gnome-cmd-data.cc b/src/gnome-cmd-data.cc index c169889..3a27d50 100644 --- a/src/gnome-cmd-data.cc +++ b/src/gnome-cmd-data.cc @@ -1289,6 +1289,7 @@ GnomeCmdData::GnomeCmdData(): search_defaults(selections) concombo_visibility = TRUE; cmdline_visibility = TRUE; buttonbar_visibility = TRUE; + mainmenu_visibility = TRUE; dev_icon_size = 16; memset(fs_col_width, 0, sizeof(fs_col_width)); @@ -1523,6 +1524,7 @@ void GnomeCmdData::load() concombo_visibility = gnome_cmd_data_get_bool ("/options/con_list_visibility", TRUE); cmdline_visibility = gnome_cmd_data_get_bool ("/options/cmdline_visibility", TRUE); buttonbar_visibility = gnome_cmd_data_get_bool ("/programs/buttonbar_visibility", TRUE); + mainmenu_visibility = gnome_cmd_data_get_bool ("/programs/mainmenu_visibility", TRUE); if (gui_update_rate < MIN_GUI_UPDATE_RATE) gui_update_rate = MIN_GUI_UPDATE_RATE; @@ -1961,6 +1963,7 @@ void GnomeCmdData::save() gnome_cmd_data_set_bool ("/options/con_list_visibility", concombo_visibility); gnome_cmd_data_set_bool ("/options/cmdline_visibility", cmdline_visibility); gnome_cmd_data_set_bool ("/programs/buttonbar_visibility", buttonbar_visibility); + gnome_cmd_data_set_bool ("/programs/mainmenu_visibility", mainmenu_visibility); if (priv->symlink_prefix && *priv->symlink_prefix && strcmp(priv->symlink_prefix, _("link to %s"))!=0) gnome_cmd_data_set_string ("/options/symlink_prefix", priv->symlink_prefix); diff --git a/src/gnome-cmd-data.h b/src/gnome-cmd-data.h index 25f9aac..5c4e5e5 100644 --- a/src/gnome-cmd-data.h +++ b/src/gnome-cmd-data.h @@ -447,6 +447,7 @@ struct GnomeCmdData gboolean concombo_visibility; gboolean cmdline_visibility; gboolean buttonbar_visibility; + gboolean mainmenu_visibility; guint dev_icon_size; guint fs_col_width[GnomeCmdFileList::NUM_COLUMNS]; diff --git a/src/gnome-cmd-dir-indicator.cc b/src/gnome-cmd-dir-indicator.cc index 281cc7f..7694ffa 100644 --- a/src/gnome-cmd-dir-indicator.cc +++ b/src/gnome-cmd-dir-indicator.cc @@ -118,6 +118,22 @@ static gboolean on_dir_indicator_clicked (GnomeCmdDirIndicator *indicator, GdkEv g_free (chTo); return TRUE; } + else if (event->button==3) + { + const gchar *labelText = gtk_label_get_text (GTK_LABEL (indicator->priv->label)); + gchar *chTo = g_strdup (labelText); + gint x = (gint) event->x; + + for (gint i=0; i < indicator->priv->numPositions; ++i) + if (x < indicator->priv->slashPixelPosition[i]) + { + chTo[indicator->priv->slashCharPosition[i]] = 0; + gtk_clipboard_set_text (gtk_clipboard_get (GDK_SELECTION_CLIPBOARD), chTo, indicator->priv->slashCharPosition[i]); + break; + } + g_free (chTo); + return TRUE; + } return FALSE; } diff --git a/src/gnome-cmd-main-win.cc b/src/gnome-cmd-main-win.cc index 20a5049..33c60e2 100644 --- a/src/gnome-cmd-main-win.cc +++ b/src/gnome-cmd-main-win.cc @@ -771,7 +771,8 @@ static void init (GnomeCmdMainWin *mw) mw->priv->menubar = gnome_cmd_main_menu_new (); g_object_ref (mw->priv->menubar); g_object_set_data_full (*mw, "vbox", mw->priv->menubar, g_object_unref); - gtk_widget_show (mw->priv->menubar); + if(gnome_cmd_data.mainmenu_visibility) + gtk_widget_show (mw->priv->menubar); gtk_box_pack_start (GTK_BOX (mw->priv->vbox), mw->priv->menubar, FALSE, TRUE, 0); gtk_box_pack_start (GTK_BOX (mw->priv->vbox), create_separator (FALSE), FALSE, TRUE, 0); @@ -1289,6 +1290,19 @@ void GnomeCmdMainWin::update_list_orientation() } +void GnomeCmdMainWin::update_mainmenu_visibility() +{ + if (gnome_cmd_data.mainmenu_visibility) + { + gtk_widget_show (priv->menubar); + } + else + { + gtk_widget_hide (priv->menubar); + } +} + + void GnomeCmdMainWin::add_plugin_menu(PluginData *data) { gnome_cmd_main_menu_add_plugin_menu (GNOME_CMD_MAIN_MENU (priv->menubar), data); diff --git a/src/gnome-cmd-main-win.h b/src/gnome-cmd-main-win.h index 6dc2594..bf2c93e 100644 --- a/src/gnome-cmd-main-win.h +++ b/src/gnome-cmd-main-win.h @@ -95,6 +95,7 @@ struct GnomeCmdMainWin void update_cmdline_visibility(); void update_buttonbar_visibility(); void update_list_orientation(); + void update_mainmenu_visibility(); void add_plugin_menu(PluginData *data); diff --git a/src/gnome-cmd-user-actions.cc b/src/gnome-cmd-user-actions.cc index 55406cf..851faa9 100644 --- a/src/gnome-cmd-user-actions.cc +++ b/src/gnome-cmd-user-actions.cc @@ -229,6 +229,8 @@ static UserActionData user_actions_data[] = { {view_terminal, "view.terminal", N_("Show terminal")}, #endif {view_up, "view.up", N_("Up one directory")}, + + {view_main_menu, "view.main.menu", N_("Display main menu")}, }; @@ -1572,6 +1574,13 @@ void view_up (GtkMenuItem *menuitem, gpointer not_used) fs->goto_directory(".."); } +void view_main_menu (GtkMenuItem *menuitem, gpointer not_used) +{ + if (!GTK_WIDGET_REALIZED (main_win)) return; + + gnome_cmd_data.mainmenu_visibility = !gnome_cmd_data.mainmenu_visibility; + main_win->update_mainmenu_visibility(); +} void view_first (GtkMenuItem *menuitem, gpointer not_used) { diff --git a/src/gnome-cmd-user-actions.h b/src/gnome-cmd-user-actions.h index 4ff5383..b6090ad 100644 --- a/src/gnome-cmd-user-actions.h +++ b/src/gnome-cmd-user-actions.h @@ -311,6 +311,7 @@ GNOME_CMD_USER_ACTION(view_next_tab); GNOME_CMD_USER_ACTION(view_in_new_tab); GNOME_CMD_USER_ACTION(view_in_inactive_tab); GNOME_CMD_USER_ACTION(view_toggle_tab_lock); +GNOME_CMD_USER_ACTION(view_main_menu); /************** Bookmarks Menu **************/ GNOME_CMD_USER_ACTION(bookmarks_add_current);