diff --git a/data/io.elementary.code.gschema.xml b/data/io.elementary.code.gschema.xml index 185986686..0cfce65a0 100644 --- a/data/io.elementary.code.gschema.xml +++ b/data/io.elementary.code.gschema.xml @@ -58,6 +58,11 @@ Terminal visibility Whether or not the terminal pane is visible + + true + Sort open projects + Keep the open projects in alphabetical order + '' Last opened path diff --git a/src/FolderManager/FileView.vala b/src/FolderManager/FileView.vala index 31c858e96..1c1fa7276 100644 --- a/src/FolderManager/FileView.vala +++ b/src/FolderManager/FileView.vala @@ -83,6 +83,10 @@ public class Scratch.FolderManager.FileView : Code.Widgets.SourceList, Code.Pane toplevel_action_group = get_action_group (MainWindow.ACTION_GROUP); assert_nonnull (toplevel_action_group); }); + + Scratch.saved_state.changed["order-folders"].connect (() => { + order_folders (); + }); } private void action_close_folder (SimpleAction action, GLib.Variant? parameter) { @@ -158,6 +162,10 @@ public class Scratch.FolderManager.FileView : Code.Widgets.SourceList, Code.Pane } public void order_folders () { + if (!Scratch.saved_state.get_boolean ("order-folders")) { + return; + } + var list = new Gee.ArrayList (); foreach (var child in root.children) { @@ -587,6 +595,8 @@ public class Scratch.FolderManager.FileView : Code.Widgets.SourceList, Code.Pane }); yield; + + order_folders (); } private bool is_open (File folder) { diff --git a/src/MainWindow.vala b/src/MainWindow.vala index 3a4d3260b..1e09bc066 100644 --- a/src/MainWindow.vala +++ b/src/MainWindow.vala @@ -78,7 +78,6 @@ namespace Scratch { public const string ACTION_OPEN_FOLDER = "action-open-folder"; public const string ACTION_OPEN_PROJECT = "action-open-project"; public const string ACTION_COLLAPSE_ALL_FOLDERS = "action-collapse-all-folders"; - public const string ACTION_ORDER_FOLDERS = "action-order-folders"; public const string ACTION_GO_TO = "action-go-to"; public const string ACTION_SORT_LINES = "action-sort-lines"; public const string ACTION_NEW_TAB = "action-new-tab"; @@ -142,7 +141,6 @@ namespace Scratch { { ACTION_OPEN_FOLDER, action_open_folder, "s" }, { ACTION_OPEN_PROJECT, action_open_project }, { ACTION_COLLAPSE_ALL_FOLDERS, action_collapse_all_folders }, - { ACTION_ORDER_FOLDERS, action_order_folders }, { ACTION_PREFERENCES, action_preferences }, { ACTION_REVERT, action_revert }, { ACTION_SAVE, action_save }, @@ -1121,10 +1119,6 @@ namespace Scratch { folder_manager_view.collapse_all (); } - private void action_order_folders () { - folder_manager_view.order_folders (); - } - private void action_save () { var doc = get_current_document (); /* may return null */ if (doc != null) { diff --git a/src/Widgets/Sidebar.vala b/src/Widgets/Sidebar.vala index 2f95327ea..0b6a7ef47 100644 --- a/src/Widgets/Sidebar.vala +++ b/src/Widgets/Sidebar.vala @@ -22,6 +22,8 @@ public class Code.Sidebar : Gtk.Grid { URI_LIST } + public const string SIDEBAR_ACTION_GROUP = "sidebar"; + public const string SIDEBAR_ACTION_PREFIX = SIDEBAR_ACTION_GROUP + "."; public Gtk.Stack stack { get; private set; } public Code.ChooseProjectButton choose_project_button { get; private set; } public Hdy.HeaderBar headerbar { get; private set; } @@ -80,8 +82,15 @@ public class Code.Sidebar : Gtk.Grid { var collapse_all_menu_item = new GLib.MenuItem (_("Collapse All"), Scratch.MainWindow.ACTION_PREFIX + Scratch.MainWindow.ACTION_COLLAPSE_ALL_FOLDERS); - var order_projects_menu_item = new GLib.MenuItem (_("Alphabetize"), Scratch.MainWindow.ACTION_PREFIX - + Scratch.MainWindow.ACTION_ORDER_FOLDERS); + var action_group = new SimpleActionGroup (); + var sort_action = Scratch.saved_state.create_action ("order-folders"); + action_group.add_action (sort_action); + insert_action_group (SIDEBAR_ACTION_GROUP, action_group); + + var order_projects_menu_item = new GLib.MenuItem ( + _("Keep Sorted"), + SIDEBAR_ACTION_PREFIX + sort_action.name + ); var project_menu = new GLib.Menu (); project_menu.append_item (collapse_all_menu_item);