summaryrefslogtreecommitdiff
path: root/src/library/LibraryWindow.vala
diff options
context:
space:
mode:
Diffstat (limited to 'src/library/LibraryWindow.vala')
-rw-r--r--src/library/LibraryWindow.vala91
1 files changed, 58 insertions, 33 deletions
diff --git a/src/library/LibraryWindow.vala b/src/library/LibraryWindow.vala
index 7f5100a..b9acb22 100644
--- a/src/library/LibraryWindow.vala
+++ b/src/library/LibraryWindow.vala
@@ -6,6 +6,7 @@
public class LibraryWindow : AppWindow {
public const int SIDEBAR_MIN_WIDTH = 120;
+ public const int EXTENDED_INFO_MIN_WIDTH = 360;
public static int PAGE_MIN_WIDTH {
get {
@@ -45,7 +46,11 @@ public class LibraryWindow : AppWindow {
CAMERAS,
SAVED_SEARCH,
EVENTS,
+ IMPORT_ROLL,
FOLDERS,
+#if ENABLE_FACES
+ FACES,
+#endif
TAGS
}
@@ -110,9 +115,13 @@ public class LibraryWindow : AppWindow {
private Library.Branch library_branch = new Library.Branch();
private Tags.Branch tags_branch = new Tags.Branch();
private Folders.Branch folders_branch = new Folders.Branch();
+#if ENABLE_FACES
+ private Faces.Branch faces_branch = new Faces.Branch();
+#endif
private Events.Branch events_branch = new Events.Branch();
private Camera.Branch camera_branch = new Camera.Branch();
private Searches.Branch saved_search_branch = new Searches.Branch();
+ private ImportRoll.Branch import_roll_branch = new ImportRoll.Branch();
private bool page_switching_enabled = true;
private Gee.HashMap<Page, Sidebar.Entry> page_map = new Gee.HashMap<Page, Sidebar.Entry>();
@@ -136,7 +145,8 @@ public class LibraryWindow : AppWindow {
private bool background_progress_displayed = false;
private BasicProperties basic_properties = new BasicProperties();
- private ExtendedPropertiesWindow extended_properties;
+ private ExtendedProperties extended_properties = new ExtendedProperties();
+ private Gtk.Revealer extended_properties_revealer = new Gtk.Revealer();
private Gtk.Stack stack = new Gtk.Stack();
private Gtk.Box layout = new Gtk.Box(Gtk.Orientation.VERTICAL, 0);
@@ -164,14 +174,14 @@ public class LibraryWindow : AppWindow {
sidebar_tree.graft(library_branch, SidebarRootPosition.LIBRARY);
sidebar_tree.graft(tags_branch, SidebarRootPosition.TAGS);
sidebar_tree.graft(folders_branch, SidebarRootPosition.FOLDERS);
+#if ENABLE_FACES
+ sidebar_tree.graft(faces_branch, SidebarRootPosition.FACES);
+#endif
+
sidebar_tree.graft(events_branch, SidebarRootPosition.EVENTS);
sidebar_tree.graft(camera_branch, SidebarRootPosition.CAMERAS);
sidebar_tree.graft(saved_search_branch, SidebarRootPosition.SAVED_SEARCH);
-
- // create and connect extended properties window
- extended_properties = new ExtendedPropertiesWindow(this);
- extended_properties.hide.connect(hide_extended_properties);
- extended_properties.show.connect(show_extended_properties);
+ sidebar_tree.graft(import_roll_branch, SidebarRootPosition.IMPORT_ROLL);
properties_scheduler = new OneShotScheduler("LibraryWindow properties",
on_update_properties_now);
@@ -228,9 +238,6 @@ public class LibraryWindow : AppWindow {
unsubscribe_from_basic_information(get_current_page());
- extended_properties.hide.disconnect(hide_extended_properties);
- extended_properties.show.disconnect(show_extended_properties);
-
foreach (MediaSourceCollection media_sources in MediaCollectionRegistry.get_instance().get_all()) {
media_sources.trashcan_contents_altered.disconnect(on_trashcan_contents_altered);
media_sources.items_altered.disconnect(on_media_altered);
@@ -404,7 +411,17 @@ public class LibraryWindow : AppWindow {
else
debug("No search entry found for rename");
}
-
+
+#if ENABLE_FACES
+ public void rename_face_in_sidebar(Face face) {
+ Faces.SidebarEntry? entry = faces_branch.get_entry_for_face(face);
+ if (entry != null)
+ sidebar_tree.rename_entry_in_place(entry);
+ else
+ assert_not_reached();
+ }
+#endif
+
protected override void on_quit() {
Config.Facade.get_instance().set_library_window_state(maximized, dimensions);
@@ -687,12 +704,11 @@ public class LibraryWindow : AppWindow {
if (display) {
extended_properties.update_properties(get_current_page());
- extended_properties.show_all();
- } else {
- extended_properties.hide();
}
+ extended_properties_revealer.set_reveal_child(display);
action.set_state (value);
+ Config.Facade.get_instance().set_display_extended_properties(display);
}
private void on_display_searchbar(GLib.SimpleAction action, Variant? value) {
@@ -750,22 +766,6 @@ public class LibraryWindow : AppWindow {
return Config.Facade.get_instance ().get_display_toolbar ();
}
- private void show_extended_properties() {
- sync_extended_properties(true);
- }
-
- private void hide_extended_properties() {
- sync_extended_properties(false);
- }
-
- private void sync_extended_properties(bool show) {
- var action = this.lookup_action ("CommonDisplayExtendedProperties");
- action.change_state (show);
-
- // sync the setting so it will persist
- Config.Facade.get_instance().set_display_extended_properties(show);
- }
-
public void enqueue_batch_import(BatchImport batch_import, bool allow_user_cancel) {
library_branch.import_queue_entry.enqueue_and_schedule(batch_import, allow_user_cancel);
}
@@ -810,9 +810,9 @@ public class LibraryWindow : AppWindow {
private Gdk.DragAction get_drag_action() {
Gdk.ModifierType mask;
-
- get_window().get_device_position(Gdk.Display.get_default().get_device_manager()
- .get_client_pointer(), null, null, out mask);
+
+ var seat = Gdk.Display.get_default().get_default_seat();
+ get_window().get_device_position(seat.get_pointer(), null, null, out mask);
bool ctrl = (mask & Gdk.ModifierType.CONTROL_MASK) != 0;
bool alt = (mask & Gdk.ModifierType.MOD1_MASK) != 0;
@@ -1186,7 +1186,9 @@ public class LibraryWindow : AppWindow {
right_vbox = new Gtk.Box(Gtk.Orientation.VERTICAL, 0);
right_vbox.pack_start(search_toolbar, false, false, 0);
- right_vbox.pack_start(stack, true, true, 0);
+ var stack_box = new Gtk.Box(Gtk.Orientation.HORIZONTAL, 0);
+ stack_box.pack_start(stack, true, true, 0);
+ right_vbox.pack_start(stack_box, true, true, 0);
right_vbox.add (toolbar_revealer);
client_paned = new Gtk.Paned(Gtk.Orientation.HORIZONTAL);
@@ -1196,6 +1198,29 @@ public class LibraryWindow : AppWindow {
client_paned.set_position(Config.Facade.get_instance().get_sidebar_position());
// TODO: Calc according to layout's size, to give sidebar a maximum width
stack.set_size_request(PAGE_MIN_WIDTH, -1);
+ var scrolled = new Gtk.ScrolledWindow(null, null);
+ scrolled.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC);
+ scrolled.add(extended_properties);
+ extended_properties_revealer.add(scrolled);
+ extended_properties_revealer.set_transition_type(Gtk.RevealerTransitionType.SLIDE_LEFT);
+ extended_properties_revealer.halign = Gtk.Align.END;
+ extended_properties_revealer.valign = Gtk.Align.FILL;
+
+ extended_properties.vexpand = true;
+ extended_properties.set_margin_top (9);
+ extended_properties.set_margin_bottom (9);
+ extended_properties.set_margin_start (9);
+ extended_properties.set_margin_end (9);
+ scrolled.set_size_request(EXTENDED_INFO_MIN_WIDTH, -1);
+
+ stack_box.pack_end(extended_properties_revealer, false, false, 0);
+ extended_properties_revealer.halign = Gtk.Align.END;
+ extended_properties_revealer.hexpand = false;
+ if (Config.Facade.get_instance().get_display_extended_properties()) {
+ extended_properties_revealer.set_reveal_child(true);
+ } else {
+ extended_properties_revealer.set_reveal_child(false);
+ }
layout.pack_end(client_paned, true, true, 0);