[shotwell/wip/phako/configure-sidebar: 248/254] wip3



commit 8004b801dacbe249ffd76a24d2a623559aac33e1
Author: Jens Georg <mail jensge org>
Date:   Wed Jul 11 13:15:57 2018 +0200

    wip3

 data/ui/preferences_dialog_list_row.ui |  2 +-
 src/Resources.vala                     | 15 ++++++++++++++-
 src/camera/CameraBranch.vala           |  6 ++++--
 src/events/EventsBranch.vala           |  4 +++-
 src/folders/FoldersBranch.vala         |  5 +++--
 src/import-roll/ImportRollBranch.vala  |  6 ++++--
 src/library/LibraryBranch.vala         |  5 ++++-
 src/searches/SearchesBranch.vala       |  5 +++--
 src/sidebar/Branch.vala                | 18 ++++++++++++++----
 src/sidebar/Tree.vala                  |  2 +-
 src/sidebar/common.vala                |  4 ++--
 src/tags/TagsBranch.vala               |  4 +++-
 12 files changed, 56 insertions(+), 20 deletions(-)
---
diff --git a/data/ui/preferences_dialog_list_row.ui b/data/ui/preferences_dialog_list_row.ui
index db3fc047..82769298 100644
--- a/data/ui/preferences_dialog_list_row.ui
+++ b/data/ui/preferences_dialog_list_row.ui
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!-- Generated with glade 3.22.0 -->
 <interface>
-  <requires lib="gtk+" version="3.20"/>
+  <requires lib="gtk+" version="3.18"/>
   <template class="SidebarPreferencesListRow" parent="GtkListBoxRow">
     <property name="visible">True</property>
     <property name="can_focus">True</property>
diff --git a/src/Resources.vala b/src/Resources.vala
index d9b3f043..2a3a4285 100644
--- a/src/Resources.vala
+++ b/src/Resources.vala
@@ -1183,7 +1183,20 @@ along with Shotwell; if not, write to the Free Software Foundation, Inc.,
 
 
     public static string map_subtree_name(string name) {
-        return name;
+        switch (name) {
+            case Events.Branch.HANDLE:  return _("Events");
+            case Camera.Branch.HANDLE:  return _("Cameras");
+#if ENABLE_FACES
+            case Faces.Branch.HANDLE:   return _("Faces");
+#endif
+            case Folders.Branch.HANDLE: return _("Folders");
+            case ImportRoll.Branch.HANDLE: return _("Imports");
+            case Library.Branch.HANDLE: return _("Library");
+            case Searches.Branch.HANDLE: return _("Saved Searches");
+            case Tags.Branch.HANDLE : return _("Tags");
+            default:
+                return name;
+        }
     }
 }
 
diff --git a/src/camera/CameraBranch.vala b/src/camera/CameraBranch.vala
index 052f0933..21c1e595 100644
--- a/src/camera/CameraBranch.vala
+++ b/src/camera/CameraBranch.vala
@@ -10,8 +10,10 @@ public class Camera.Branch : Sidebar.Branch {
     private Gee.HashMap<DiscoveredCamera, Camera.SidebarEntry> camera_map = new Gee.HashMap<
         DiscoveredCamera, Camera.SidebarEntry>();
     
+    internal const string HANDLE = "cameras";
+
     public Branch() {
-        base (new Camera.Header(),
+        base (new Camera.Header(), Branch.HANDLE,
             Sidebar.Branch.Options.HIDE_IF_EMPTY | Sidebar.Branch.Options.AUTO_OPEN_ON_NEW_CHILD,
             camera_comparator);
         
@@ -82,7 +84,7 @@ public class Camera.Branch : Sidebar.Branch {
 
 public class Camera.Header : Sidebar.Header {
     public Header() {
-        base (_("Cameras"), _("List of all discovered camera devices"));
+        base (Resources.map_subtree_name(Branch.HANDLE), _("List of all discovered camera devices"));
     }
 }
 
diff --git a/src/events/EventsBranch.vala b/src/events/EventsBranch.vala
index 097a6640..f6a381e3 100644
--- a/src/events/EventsBranch.vala
+++ b/src/events/EventsBranch.vala
@@ -20,9 +20,11 @@ public class Events.Branch : Sidebar.Branch {
     private Events.UndatedDirectoryEntry undated_entry = new Events.UndatedDirectoryEntry();
     private Events.NoEventEntry no_event_entry = new Events.NoEventEntry();
     private Events.MasterDirectoryEntry all_events_entry = new Events.MasterDirectoryEntry();
+    internal const string HANDLE = "events";
     
     public Branch() {
-        base (new Sidebar.Header(_("Events"), _("Browse through your events")),
+        base (new Sidebar.Header(Resources.map_subtree_name(Branch.HANDLE), _("Browse through your events")),
+            Branch.HANDLE,
             Sidebar.Branch.Options.STARTUP_EXPAND_TO_FIRST_CHILD,
             event_year_comparator);
         
diff --git a/src/folders/FoldersBranch.vala b/src/folders/FoldersBranch.vala
index 5de7082e..2ffd254c 100644
--- a/src/folders/FoldersBranch.vala
+++ b/src/folders/FoldersBranch.vala
@@ -8,9 +8,10 @@ public class Folders.Branch : Sidebar.Branch {
     private Gee.HashMap<File, Folders.SidebarEntry> entries =
         new Gee.HashMap<File, Folders.SidebarEntry>(file_hash, file_equal);
     private File home_dir;
+    internal const string HANDLE = "folders";
     
     public class Branch() {
-        base (new Folders.Root(),
+        base (new Folders.Root(), Branch.HANDLE,
               Sidebar.Branch.Options.STARTUP_OPEN_GROUPING
               | Sidebar.Branch.Options.HIDE_IF_EMPTY,
               comparator);
@@ -141,7 +142,7 @@ public class Folders.Branch : Sidebar.Branch {
 
 private class Folders.Root : Sidebar.Header {
     public Root() {
-        base (_("Folders"), _("Browse the library’s folder structure"));
+        base (Resources.map_subtree_name(Branch.HANDLE), _("Browse the library’s folder structure"));
     }
 }
 
diff --git a/src/import-roll/ImportRollBranch.vala b/src/import-roll/ImportRollBranch.vala
index 0c582ac8..15844d37 100644
--- a/src/import-roll/ImportRollBranch.vala
+++ b/src/import-roll/ImportRollBranch.vala
@@ -1,8 +1,10 @@
 public class ImportRoll.Branch : Sidebar.Branch {
     private Gee.HashMap<int64?, ImportRoll.SidebarEntry> entries;
 
+    internal const string HANDLE = "import-roll";
+
     public class Branch() {
-        base (new ImportRoll.Root(),
+        base (new ImportRoll.Root(), Branch.HANDLE,
               Sidebar.Branch.Options.HIDE_IF_EMPTY,
               ImportRoll.Branch.comparator);
 
@@ -39,6 +41,6 @@ public class ImportRoll.Branch : Sidebar.Branch {
 
 private class ImportRoll.Root : Sidebar.Header {
     public Root() {
-        base (_("Imports"), _("Browse the library’s import history"));
+        base (Resources.map_subtree_name(Branch.HANDLE), _("Browse the library’s import history"));
     }
 }
diff --git a/src/library/LibraryBranch.vala b/src/library/LibraryBranch.vala
index 622162e3..55a50a40 100644
--- a/src/library/LibraryBranch.vala
+++ b/src/library/LibraryBranch.vala
@@ -14,6 +14,8 @@ public class Library.Branch : Sidebar.Branch {
     public Library.OfflineSidebarEntry offline_entry { get; private set; }
     public Library.TrashSidebarEntry trash_entry { get; private set; }
     
+    internal const string HANDLE = "library";
+
     // This lists the order of the library items in the sidebar. To re-order, simply move
     // the item in this list to a new position. These numbers should *not* persist anywhere
     // outside the app.
@@ -27,7 +29,8 @@ public class Library.Branch : Sidebar.Branch {
     }
     
     public Branch() {
-        base(new Sidebar.Header(_("Library"), _("Organize and browse your photos")),
+        base(new Sidebar.Header(Resources.map_subtree_name(Branch.HANDLE), _("Organize and browse your 
photos")),
+            Branch.HANDLE,
             Sidebar.Branch.Options.STARTUP_OPEN_GROUPING, comparator);
 
         photos_entry = new Library.PhotosEntry();
diff --git a/src/searches/SearchesBranch.vala b/src/searches/SearchesBranch.vala
index 22a38e26..b0ef3510 100644
--- a/src/searches/SearchesBranch.vala
+++ b/src/searches/SearchesBranch.vala
@@ -7,9 +7,10 @@
 public class Searches.Branch : Sidebar.Branch {
     private Gee.HashMap<SavedSearch, Searches.SidebarEntry> entry_map = 
         new Gee.HashMap<SavedSearch, Searches.SidebarEntry>();
+    internal const string HANDLE = "saved-searches";
     
     public Branch() {
-        base (new Searches.Header(),
+        base (new Searches.Header(), Branch.HANDLE,
             Sidebar.Branch.Options.HIDE_IF_EMPTY
                 | Sidebar.Branch.Options.AUTO_OPEN_ON_NEW_CHILD
                 | Sidebar.Branch.Options.STARTUP_EXPAND_TO_FIRST_CHILD,
@@ -65,7 +66,7 @@ public class Searches.Header : Sidebar.Header, Sidebar.Contextable {
     private Gtk.Menu? context_menu = null;
     
     public Header() {
-        base (_("Saved Searches"), _("Organize your saved searches"));
+        base (Resources.map_subtree_name(Branch.HANDLE), _("Organize your saved searches"));
         setup_context_menu();
     }
 
diff --git a/src/sidebar/Branch.vala b/src/sidebar/Branch.vala
index bba8cc45..ae6104ba 100644
--- a/src/sidebar/Branch.vala
+++ b/src/sidebar/Branch.vala
@@ -190,6 +190,7 @@ public class Sidebar.Branch : Object {
     private bool shown = true;
     private CompareFunc<Sidebar.Entry> default_comparator;
     private Gee.HashMap<Sidebar.Entry, Node> map = new Gee.HashMap<Sidebar.Entry, Node>();
+    private string handle;
     
     public signal void entry_added(Sidebar.Entry entry);
     
@@ -203,16 +204,17 @@ public class Sidebar.Branch : Object {
     
     public signal void show_branch(bool show);
     
-    public Branch(Sidebar.Entry root, Options options, CompareFunc<Sidebar.Entry> default_comparator,
+    public Branch(Sidebar.Entry root, string handle, Options options, CompareFunc<Sidebar.Entry> 
default_comparator,
         CompareFunc<Sidebar.Entry>? root_comparator = null) {
         this.default_comparator = default_comparator;
         this.root = new Node(root, null,
             (root_comparator != null) ? root_comparator : default_comparator);
         this.options = options;
+        this.handle = handle;
         
         map.set(root, this.root);
         
-        if (options.is_hide_if_empty())
+        if (options.is_hide_if_empty() || is_disabled_in_config())
             set_show_branch(false);
     }
     
@@ -223,8 +225,12 @@ public class Sidebar.Branch : Object {
     public void set_show_branch(bool shown) {
         if (this.shown == shown)
             return;
-        
-        this.shown = shown;
+
+        if (is_disabled_in_config())
+            this.shown = false;
+        else
+            this.shown = shown;
+
         show_branch(shown);
     }
     
@@ -430,5 +436,9 @@ public class Sidebar.Branch : Object {
     private void children_reordered_callback(Node node) {
         children_reordered(node.entry);
     }
+
+    private bool is_disabled_in_config() {
+        return !(this.handle in Config.Facade.get_instance().get_sidebar_content());
+    }
 }
 
diff --git a/src/sidebar/Tree.vala b/src/sidebar/Tree.vala
index 0750d778..46b5945c 100644
--- a/src/sidebar/Tree.vala
+++ b/src/sidebar/Tree.vala
@@ -705,7 +705,7 @@ public class Sidebar.Tree : Gtk.TreeView {
     
     private void on_branch_children_reordered(Sidebar.Branch branch, Sidebar.Entry entry) {
         Gee.List<Sidebar.Entry>? children = branch.get_children(entry);
-        if (children == null)
+        if (children == null || branch.get_show_branch() == false)
             return;
         
         // This works by moving the entries to the bottom of the tree's list in the order they
diff --git a/src/sidebar/common.vala b/src/sidebar/common.vala
index ebdba518..b12ac54f 100644
--- a/src/sidebar/common.vala
+++ b/src/sidebar/common.vala
@@ -98,8 +98,8 @@ public abstract class Sidebar.SimplePageEntry : Object, Sidebar.Entry, Sidebar.S
 
 // A simple Sidebar.Branch where the root node is the branch in entirety.
 public class Sidebar.RootOnlyBranch : Sidebar.Branch {
-    public RootOnlyBranch(Sidebar.Entry root) {
-        base (root, Sidebar.Branch.Options.NONE, null_comparator);
+    public RootOnlyBranch(Sidebar.Entry root, string handle) {
+        base (root, handle, Sidebar.Branch.Options.NONE, null_comparator);
     }
     
     private static int null_comparator(Sidebar.Entry a, Sidebar.Entry b) {
diff --git a/src/tags/TagsBranch.vala b/src/tags/TagsBranch.vala
index e11ea5d5..3f8c5f3c 100644
--- a/src/tags/TagsBranch.vala
+++ b/src/tags/TagsBranch.vala
@@ -6,9 +6,11 @@
 
 public class Tags.Branch : Sidebar.Branch {
     private Gee.HashMap<Tag, Tags.SidebarEntry> entry_map = new Gee.HashMap<Tag, Tags.SidebarEntry>();
+    internal const string HANDLE = "tags";
     
     public Branch() {
         base (new Tags.Header(),
+            Branch.HANDLE,
             Sidebar.Branch.Options.HIDE_IF_EMPTY
                 | Sidebar.Branch.Options.AUTO_OPEN_ON_NEW_CHILD
                 | Sidebar.Branch.Options.STARTUP_OPEN_GROUPING,
@@ -128,7 +130,7 @@ public class Tags.Header : Sidebar.Header, Sidebar.InternalDropTargetEntry,
     private Gtk.Menu? context_menu = null;
     
     public Header() {
-        base (_("Tags"), _("Organize and browse your photo’s tags"));
+        base (Resources.map_subtree_name(Branch.HANDLE), _("Organize and browse your photo’s tags"));
         setup_context_menu();
     }
 


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