From d443a3c2509889533ca812c163056bace396b586 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rg=20Frings-F=C3=BCrst?= <debian@jff.email>
Date: Wed, 14 Jun 2023 20:35:58 +0200
Subject: New upstream version 0.32.1

---
 data/ui/collection.ui                      | 227 ++++++++++
 data/ui/direct.ui                          | 200 ++++++++
 data/ui/direct_context.ui                  |  28 ++
 data/ui/event.ui                           | 597 ++++++++++++++++++++++++
 data/ui/events_directory.ui                | 191 ++++++++
 data/ui/faces.ui                           | 474 +++++++++++++++++++
 data/ui/fullscreen.ui                      |   5 +
 data/ui/import.ui                          | 219 +++++++++
 data/ui/import_queue.ui                    |  89 ++++
 data/ui/login_welcome_pane_widget.ui       |  57 +++
 data/ui/manifest_widget.ui                 |  31 ++
 data/ui/media.ui                           | 427 +++++++++++++++++
 data/ui/message_pane.ui                    |  47 ++
 data/ui/multitextentrydialog.ui            |  91 ++++
 data/ui/offline.ui                         | 249 ++++++++++
 data/ui/photo.ui                           | 415 +++++++++++++++++
 data/ui/photo_context.ui                   | 147 ++++++
 data/ui/preferences_dialog.ui              | 705 +++++++++++++++++++++++++++++
 data/ui/printing_widget.ui                 | 339 ++++++++++++++
 data/ui/progress_pane_widget.ui            |  27 ++
 data/ui/saved_search_dialog.ui             | 243 ++++++++++
 data/ui/savedsearch.ui                     |  19 +
 data/ui/search_bar.ui                      |  55 +++
 data/ui/search_sidebar_context.ui          |  12 +
 data/ui/set_background_dialog.ui           | 114 +++++
 data/ui/set_background_slideshow_dialog.ui | 177 ++++++++
 data/ui/sidebar_default_context.ui         |  16 +
 data/ui/slideshow_settings.ui              | 274 +++++++++++
 data/ui/static_message_pane_widget.ui      |  40 ++
 data/ui/tag_sidebar_context.ui             |  11 +
 data/ui/tags.ui                            | 465 +++++++++++++++++++
 data/ui/textentrydialog.ui                 | 104 +++++
 data/ui/trash.ui                           | 322 +++++++++++++
 33 files changed, 6417 insertions(+)
 create mode 100644 data/ui/collection.ui
 create mode 100644 data/ui/direct.ui
 create mode 100644 data/ui/direct_context.ui
 create mode 100644 data/ui/event.ui
 create mode 100644 data/ui/events_directory.ui
 create mode 100644 data/ui/faces.ui
 create mode 100644 data/ui/fullscreen.ui
 create mode 100644 data/ui/import.ui
 create mode 100644 data/ui/import_queue.ui
 create mode 100644 data/ui/login_welcome_pane_widget.ui
 create mode 100644 data/ui/manifest_widget.ui
 create mode 100644 data/ui/media.ui
 create mode 100644 data/ui/message_pane.ui
 create mode 100644 data/ui/multitextentrydialog.ui
 create mode 100644 data/ui/offline.ui
 create mode 100644 data/ui/photo.ui
 create mode 100644 data/ui/photo_context.ui
 create mode 100644 data/ui/preferences_dialog.ui
 create mode 100644 data/ui/printing_widget.ui
 create mode 100644 data/ui/progress_pane_widget.ui
 create mode 100644 data/ui/saved_search_dialog.ui
 create mode 100644 data/ui/savedsearch.ui
 create mode 100644 data/ui/search_bar.ui
 create mode 100644 data/ui/search_sidebar_context.ui
 create mode 100644 data/ui/set_background_dialog.ui
 create mode 100644 data/ui/set_background_slideshow_dialog.ui
 create mode 100644 data/ui/sidebar_default_context.ui
 create mode 100644 data/ui/slideshow_settings.ui
 create mode 100644 data/ui/static_message_pane_widget.ui
 create mode 100644 data/ui/tag_sidebar_context.ui
 create mode 100644 data/ui/tags.ui
 create mode 100644 data/ui/textentrydialog.ui
 create mode 100644 data/ui/trash.ui

(limited to 'data/ui')

diff --git a/data/ui/collection.ui b/data/ui/collection.ui
new file mode 100644
index 0000000..c12c407
--- /dev/null
+++ b/data/ui/collection.ui
@@ -0,0 +1,227 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.20.0 -->
+<interface domain="shotwell">
+  <requires lib="gtk+" version="3.18"/>
+  <menu id="CollectionContextMenu">
+    <section>
+      <item>
+        <attribute name="label" translatable="yes">_Enhance</attribute>
+        <attribute name="accel">&lt;Primary&gt;e</attribute>
+        <attribute name="action">win.Enhance</attribute>
+      </item>
+      <item>
+        <attribute name="label" translatable="yes">Re_vert to Original</attribute>
+        <attribute name="action">win.Revert</attribute>
+      </item>
+    </section>
+    <section>
+      <item>
+        <attribute name="label" translatable="yes">Add _Tags…</attribute>
+        <attribute name="accel">&lt;Primary&gt;t</attribute>
+        <attribute name="action">win.AddTags</attribute>
+      </item>
+      <item>
+        <attribute name="label" translatable="yes">Modif_y Tags…</attribute>
+        <attribute name="accel">&lt;Primary&gt;m</attribute>
+        <attribute name="action">win.ModifyTags</attribute>
+      </item>
+      <attribute name="id">ContextTagsPlaceholder</attribute>
+    </section>
+    <section>
+      <attribute name="id">ContextFacesPlaceholder</attribute>
+      <item>
+        <attribute name="label" translatable="yes">Toggle _Flag</attribute>
+        <attribute name="accel">&lt;Primary&gt;g</attribute>
+        <attribute name="action">win.Flag</attribute>
+      </item>
+    </section>
+    <submenu>
+      <attribute name="label" translatable="yes">_Set Rating</attribute>
+      <section>
+        <item>
+          <attribute name="label" translatable="no">★★★★★</attribute>
+          <attribute name="action">win.RateFive</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="no">★★★★</attribute>
+          <attribute name="action">win.RateFour</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="no">★★★</attribute>
+          <attribute name="action">win.RateThree</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="no">★★</attribute>
+          <attribute name="action">win.RateTwo</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="no">★</attribute>
+          <attribute name="action">win.RateOne</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">_Unrated</attribute>
+          <attribute name="action">win.RateUnrated</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">_Rejected</attribute>
+          <attribute name="action">win.RateRejected</attribute>
+        </item>
+      </section>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">_Increase</attribute>
+          <attribute name="action">win.IncreaseRating</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">_Decrease</attribute>
+          <attribute name="action">win.DecreaseRating</attribute>
+        </item>
+      </section>
+    </submenu>
+    <submenu>
+      <attribute name="label" translatable="yes">_Developer</attribute>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">Shotwell</attribute>
+          <attribute name="action">win.RawDeveloper</attribute>
+          <attribute name="target">Shotwell</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">Camera</attribute>
+          <attribute name="action">win.RawDeveloper</attribute>
+          <attribute name="target">Camera</attribute>
+        </item>
+      </section>
+    </submenu>
+    <section>
+      <item>
+        <attribute name="label" translatable="yes">Edit _Title…</attribute>
+        <attribute name="action">win.EditTitle</attribute>
+        <attribute name="accel">F2</attribute>
+      </item>
+      <item>
+        <attribute name="label" translatable="yes">Edit _Comment…</attribute>
+        <attribute name="action">win.EditComment</attribute>
+        <attribute name="accel">F3</attribute>
+      </item>
+      <item>
+        <attribute name="label" translatable="yes">Open With E_xternal Editor</attribute>
+        <attribute name="accel">&lt;Primary&gt;Return</attribute>
+        <attribute name="action">win.ExternalEdit</attribute>
+      </item>
+      <item>
+        <attribute name="label" translatable="yes">Open With RA_W Editor</attribute>
+        <attribute name="action">win.ExternalEditRAW</attribute>
+      </item>
+    </section>
+    <section>
+      <item>
+        <attribute name="label" translatable="yes">View Eve_nt for Photo</attribute>
+        <attribute name="action">win.CommonJumpToEvent</attribute>
+      </item>
+      <item>
+        <attribute name="label" translatable="yes">Show in File Mana_ger</attribute>
+        <attribute name="accel">&lt;Primary&gt;&lt;Shift&gt;m</attribute>
+        <attribute name="action">win.CommonJumpToFile</attribute>
+      </item>
+      <item>
+        <attribute name="label" translatable="yes">Send _To…</attribute>
+        <attribute name="action">win.SendTo</attribute>
+      </item>
+    </section>
+    <section>
+      <item>
+        <attribute name="label" translatable="yes">_Move to Trash</attribute>
+        <attribute name="accel">Delete</attribute>
+        <attribute name="action">win.MoveToTrash</attribute>
+      </item>
+    </section>
+  </menu>
+  <object class="GtkToolbar" id="CollectionToolbar">
+    <property name="visible">True</property>
+    <property name="can_focus">False</property>
+    <property name="toolbar_style">both-horiz</property>
+    <child>
+      <object class="GtkToolButton" id="ToolRotate">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="tooltip_text" translatable="yes">Rotate the photos right (press Ctrl to rotate left)</property>
+        <property name="is_important">True</property>
+        <property name="action_name">win.RotateClockwise</property>
+        <property name="label" translatable="yes">Rotate</property>
+        <property name="use_underline">True</property>
+        <property name="icon_name">object-rotate-right-symbolic</property>
+      </object>
+      <packing>
+        <property name="expand">False</property>
+        <property name="homogeneous">True</property>
+      </packing>
+    </child>
+    <child>
+      <object class="GtkToolButton" id="ToolEnhance">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="tooltip_text" translatable="yes">Automatically improve the photo’s appearance</property>
+        <property name="is_important">True</property>
+        <property name="action_name">win.Enhance</property>
+        <property name="label" translatable="yes">Enhance</property>
+        <property name="use_underline">True</property>
+        <property name="icon_name">image-auto-adjust-symbolic</property>
+      </object>
+      <packing>
+        <property name="expand">False</property>
+        <property name="homogeneous">True</property>
+      </packing>
+    </child>
+    <child>
+      <object class="GtkSeparatorToolItem">
+        <property name="can_focus">False</property>
+      </object>
+      <packing>
+        <property name="expand">False</property>
+        <property name="homogeneous">False</property>
+      </packing>
+    </child>
+    <child>
+      <object class="GtkToolButton" id="ToolPublish">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="tooltip_text" translatable="yes">Publish to various websites</property>
+        <property name="is_important">True</property>
+        <property name="action_name">win.Publish</property>
+        <property name="label" translatable="yes">Publish</property>
+        <property name="use_underline">True</property>
+        <property name="icon_name">send-to-symbolic</property>
+      </object>
+      <packing>
+        <property name="expand">False</property>
+        <property name="homogeneous">True</property>
+      </packing>
+    </child>
+    <child>
+      <object class="GtkSeparatorToolItem">
+        <property name="can_focus">False</property>
+      </object>
+      <packing>
+        <property name="expand">False</property>
+        <property name="homogeneous">False</property>
+      </packing>
+    </child>
+    <child>
+      <object class="GtkToggleToolButton" id="ToolFind">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="tooltip_text" translatable="yes">Find an image by typing text that appears in its name or tags</property>
+        <property name="is_important">True</property>
+        <property name="action_name">win.CommonDisplaySearchbar</property>
+        <property name="label" translatable="yes">Find</property>
+        <property name="use_underline">True</property>
+        <property name="icon_name">edit-find-symbolic</property>
+      </object>
+      <packing>
+        <property name="expand">False</property>
+        <property name="homogeneous">True</property>
+      </packing>
+    </child>
+  </object>
+</interface>
diff --git a/data/ui/direct.ui b/data/ui/direct.ui
new file mode 100644
index 0000000..8407ec5
--- /dev/null
+++ b/data/ui/direct.ui
@@ -0,0 +1,200 @@
+<?xml version="1.0"?>
+<interface domain="shotwell">
+  <menu id="MenuBar">
+    <submenu>
+      <attribute name="label" translatable="yes">_File</attribute>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">_Save</attribute>
+          <attribute name="accel">&lt;Primary&gt;s</attribute>
+          <attribute name="action">win.Save</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">Save _As…</attribute>
+          <attribute name="accel">&lt;Primary&gt;&lt;Shift&gt;s</attribute>
+          <attribute name="action">win.SaveAs</attribute>
+        </item>
+      </section>
+      <section>
+      <attribute name="id">PrintPlaceholder</attribute>
+      </section>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">Send _To…</attribute>
+          <attribute name="action">win.SendTo</attribute>
+        </item>
+      <attribute name="id">SetBackgroundPlaceholder</attribute>
+      </section>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">Show in File Mana_ger</attribute>
+          <attribute name="accel">&lt;Primary&gt;&lt;Shift&gt;q</attribute>
+          <attribute name="action">win.CommonJumpToFile</attribute>
+        </item>
+      </section>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">_Quit</attribute>
+          <attribute name="accel">&lt;Primary&gt;q</attribute>
+          <attribute name="action">win.CommonQuit</attribute>
+        </item>
+      </section>
+    </submenu>
+    <submenu>
+      <attribute name="label" translatable="yes">_Edit</attribute>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">_Undo</attribute>
+          <attribute name="accel">&lt;Primary&gt;z</attribute>
+          <attribute name="action">win.CommonUndo</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">_Redo</attribute>
+          <attribute name="accel">&lt;Primary&gt;&lt;Shift&gt;z</attribute>
+          <attribute name="action">win.CommonRedo</attribute>
+        </item>
+      </section>
+    </submenu>
+    <submenu>
+      <attribute name="label" translatable="yes">_View</attribute>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">Fulls_creen</attribute>
+          <attribute name="accel">F11</attribute>
+          <attribute name="action">win.CommonFullscreen</attribute>
+        </item>
+      </section>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">Zoom _In</attribute>
+          <attribute name="accel">&lt;Primary&gt;plus</attribute>
+          <attribute name="action">win.IncreaseSize</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">Zoom _Out</attribute>
+          <attribute name="accel">&lt;Primary&gt;minus</attribute>
+          <attribute name="action">win.DecreaseSize</attribute>
+        </item>
+      </section>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">Fit to _Page</attribute>
+          <attribute name="accel">&lt;Primary&gt;0</attribute>
+          <attribute name="action">win.ZoomFit</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">Zoom _100%</attribute>
+          <attribute name="accel">&lt;Primary&gt;1</attribute>
+          <attribute name="action">win.Zoom100</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">Zoom _200%</attribute>
+          <attribute name="accel">&lt;Primary&gt;2</attribute>
+          <attribute name="action">win.Zoom200</attribute>
+        </item>
+      </section>
+    </submenu>
+    <submenu>
+      <attribute name="label" translatable="yes">_Photo</attribute>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">_Previous Photo</attribute>
+          <attribute name="action">win.PrevPhoto</attribute>
+          <attribute name="accel">Left</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">_Next Photo</attribute>
+          <attribute name="action">win.NextPhoto</attribute>
+          <attribute name="accel">Right</attribute>
+        </item>
+      </section>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">Rotate _Right</attribute>
+          <attribute name="accel">&lt;Primary&gt;r</attribute>
+          <attribute name="action">win.RotateClockwise</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">Rotate _Left</attribute>
+          <attribute name="accel">&lt;Primary&gt;&lt;Shift&gt;r</attribute>
+          <attribute name="action">win.RotateCounterclockwise</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">Flip Hori_zontally</attribute>
+          <attribute name="action">win.FlipHorizontally</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">Flip Verti_cally</attribute>
+          <attribute name="action">win.FlipVertically</attribute>
+        </item>
+      </section>
+      <section>
+        <submenu>
+          <attribute name="label" translatable="yes">T_ools</attribute>
+          <section>
+            <item>
+              <attribute name="label" translatable="yes">_Enhance</attribute>
+              <attribute name="accel">&lt;Primary&gt;e</attribute>
+              <attribute name="action">win.Enhance</attribute>
+            </item>
+            <item>
+              <attribute name="label" translatable="yes">_Crop</attribute>
+              <attribute name="accel">&lt;Primary&gt;o</attribute>
+              <attribute name="action">win.Crop</attribute>
+            </item>
+            <item>
+              <attribute name="label" translatable="yes">_Straighten</attribute>
+              <attribute name="accel">&lt;Primary&gt;a</attribute>
+              <attribute name="action">win.Straighten</attribute>
+            </item>
+            <item>
+              <attribute name="label" translatable="yes">_Red-eye</attribute>
+              <attribute name="accel">&lt;Primary&gt;y</attribute>
+              <attribute name="action">win.RedEye</attribute>
+            </item>
+            <item>
+              <attribute name="label" translatable="yes">_Adjust</attribute>
+              <attribute name="accel">&lt;Primary&gt;d</attribute>
+              <attribute name="action">win.Adjust</attribute>
+            </item>
+          </section>
+        </submenu>
+        <item>
+          <attribute name="label" translatable="yes">Re_vert to Original</attribute>
+          <attribute name="action">win.Revert</attribute>
+        </item>
+      </section>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">_Adjust Date and Time…</attribute>
+          <attribute name="accel">F4</attribute>
+          <attribute name="action">win.AdjustDateTime</attribute>
+        </item>
+      </section>
+    </submenu>
+    <submenu>
+      <attribute name="label" translatable="yes">_Help</attribute>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">_Help</attribute>
+          <attribute name="accel">F1</attribute>
+          <attribute name="action">win.CommonHelpContents</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">_Frequently Asked Questions</attribute>
+          <attribute name="action">win.CommonHelpFAQ</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">_Report a Problem…</attribute>
+          <attribute name="action">win.CommonHelpReportProblem</attribute>
+        </item>
+      </section>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">_About</attribute>
+          <attribute name="action">win.CommonAbout</attribute>
+        </item>
+      </section>
+    </submenu>
+  </menu>
+</interface>
diff --git a/data/ui/direct_context.ui b/data/ui/direct_context.ui
new file mode 100644
index 0000000..852fe93
--- /dev/null
+++ b/data/ui/direct_context.ui
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.20.0 -->
+<interface domain="shotwell">
+  <menu id="DirectContextMenu">
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">_Enhance</attribute>
+          <attribute name="accel">&lt;Primary&gt;e</attribute>
+          <attribute name="action">win.Enhance</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">Re_vert to Original</attribute>
+          <attribute name="action">win.Revert</attribute>
+        </item>
+      </section>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">Show in File Mana_ger</attribute>
+          <attribute name="accel">&lt;Primary&gt;&lt;Shift&gt;m</attribute>
+          <attribute name="action">win.CommonJumpToFile</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">Send _To…</attribute>
+          <attribute name="action">win.SendTo</attribute>
+        </item>
+      </section>
+  </menu>
+</interface>
diff --git a/data/ui/event.ui b/data/ui/event.ui
new file mode 100644
index 0000000..9579f96
--- /dev/null
+++ b/data/ui/event.ui
@@ -0,0 +1,597 @@
+<?xml version="1.0"?>
+<interface domain="shotwell">
+  <menu id="MenuBar">
+    <submenu>
+      <attribute name="label" translatable="yes">_File</attribute>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">_Import From Folder…</attribute>
+          <attribute name="accel">&lt;Primary&gt;i</attribute>
+          <attribute name="action">win.CommonFileImport</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">Import From _Application…</attribute>
+          <attribute name="action">win.ExternalLibraryImport</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">_Export…</attribute>
+          <attribute name="accel">&lt;Primary&gt;&lt;Shift&gt;e</attribute>
+          <attribute name="action">win.Export</attribute>
+        </item>
+      </section>
+      <section>
+        <attribute name="id">FileExtrasPlaceholder</attribute>
+      </section>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">Show in File Mana_ger</attribute>
+          <attribute name="accel">&lt;Primary&gt;&lt;Shift&gt;m</attribute>
+          <attribute name="action">win.CommonJumpToFile</attribute>
+        </item>
+      </section>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">Empty T_rash</attribute>
+          <attribute name="action">win.CommonEmptyTrash</attribute>
+        </item>
+      </section>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">_Quit</attribute>
+          <attribute name="accel">&lt;Primary&gt;q</attribute>
+          <attribute name="action">win.CommonQuit</attribute>
+        </item>
+      </section>
+    </submenu>
+    <submenu>
+      <attribute name="label" translatable="yes">_Edit</attribute>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">_Undo</attribute>
+          <attribute name="accel">&lt;Primary&gt;z</attribute>
+          <attribute name="action">win.CommonUndo</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">_Redo</attribute>
+          <attribute name="accel">&lt;Primary&gt;&lt;Shift&gt;z</attribute>
+          <attribute name="action">win.CommonRedo</attribute>
+        </item>
+      </section>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">_Find</attribute>
+          <attribute name="action">win.CommonFind</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">Ne_w Saved Search…</attribute>
+          <attribute name="accel">&lt;Primary&gt;s</attribute>
+          <attribute name="action">win.CommonNewSearch</attribute>
+        </item>
+      </section>
+      <section>
+        <attribute name="id">EditExtrasPlaceholder</attribute>
+        <item>
+          <attribute name="label" translatable="yes">R_emove From Library</attribute>
+          <attribute name="accel">&lt;Shift&gt;Delete</attribute>
+          <attribute name="action">win.RemoveFromLibrary</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">_Move to Trash</attribute>
+          <attribute name="accel">Delete</attribute>
+          <attribute name="action">win.MoveToTrash</attribute>
+        </item>
+      </section>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">Select _All</attribute>
+          <attribute name="accel">&lt;Primary&gt;a</attribute>
+          <attribute name="action">win.CommonSelectAll</attribute>
+        </item>
+      </section>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">_Preferences</attribute>
+          <attribute name="action">win.CommonPreferences</attribute>
+        </item>
+      </section>
+    </submenu>
+    <submenu>
+      <attribute name="label" translatable="yes">_View</attribute>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">_Basic Information</attribute>
+          <attribute name="accel">&lt;Primary&gt;&lt;Shift&gt;i</attribute>
+          <attribute name="action">win.CommonDisplayBasicProperties</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">E_xtended Information</attribute>
+          <attribute name="accel">&lt;Primary&gt;&lt;Shift&gt;x</attribute>
+          <attribute name="action">win.CommonDisplayExtendedProperties</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">_Search Bar</attribute>
+          <attribute name="accel">F8</attribute>
+          <attribute name="action">win.CommonDisplaySearchbar</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">S_idebar</attribute>
+          <attribute name="accel">F9</attribute>
+          <attribute name="action">win.CommonDisplaySidebar</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">T_oolbar</attribute>
+          <attribute name="accel">&lt;Primary&gt;F9</attribute>
+          <attribute name="action">win.CommonDisplayToolbar</attribute>
+        </item>
+      </section>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">_Titles</attribute>
+          <attribute name="accel">&lt;Primary&gt;&lt;Shift&gt;t</attribute>
+          <attribute name="action">win.ViewTitle</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">_Comments</attribute>
+          <attribute name="accel">&lt;Primary&gt;&lt;Shift&gt;c</attribute>
+          <attribute name="action">win.ViewComment</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">Ta_gs</attribute>
+          <attribute name="accel">&lt;Primary&gt;&lt;Shift&gt;g</attribute>
+          <attribute name="action">win.ViewTags</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">_Ratings</attribute>
+          <attribute name="accel">&lt;Primary&gt;&lt;Shift&gt;n</attribute>
+          <attribute name="action">win.ViewRatings</attribute>
+        </item>
+      </section>
+      <section>
+        <submenu>
+          <attribute name="label" translatable="yes">_Filter Photos</attribute>
+          <section>
+            <item>
+              <attribute name="label" translatable="no">★★★★★</attribute>
+              <attribute name="action">win.display.rating</attribute>
+              <attribute name="target">7</attribute>
+              <attribute name="accel">&lt;Primary&gt;5</attribute>
+            </item>
+            <item>
+              <attribute name="label" translatable="no">★★★★</attribute>
+              <attribute name="action">win.display.rating</attribute>
+              <attribute name="target">6</attribute>
+              <attribute name="accel">&lt;Primary&gt;4</attribute>
+            </item>
+            <item>
+              <attribute name="label" translatable="no">★★★</attribute>
+              <attribute name="action">win.display.rating</attribute>
+              <attribute name="target">5</attribute>
+              <attribute name="accel">&lt;Primary&gt;3</attribute>
+            </item>
+            <item>
+              <attribute name="label" translatable="no">★★</attribute>
+              <attribute name="action">win.display.rating</attribute>
+              <attribute name="target">4</attribute>
+              <attribute name="accel">&lt;Primary&gt;2</attribute>
+            </item>
+            <item>
+              <attribute name="label" translatable="no">★</attribute>
+              <attribute name="action">win.display.rating</attribute>
+              <attribute name="target">3</attribute>
+              <attribute name="accel">&lt;Primary&gt;1</attribute>
+            </item>
+            <item>
+              <attribute name="label" translatable="yes">_All Photos</attribute>
+              <attribute name="action">win.display.rating</attribute>
+              <attribute name="target">2</attribute>
+              <attribute name="accel">&lt;Primary&gt;0</attribute>
+            </item>
+            <item>
+              <attribute name="label" translatable="yes">All + _Rejected</attribute>
+              <attribute name="action">win.display.rating</attribute>
+              <attribute name="target">1</attribute>
+              <attribute name="accel">&lt;Primary&gt;9</attribute>
+            </item>
+            <item>
+              <attribute name="label" translatable="yes">Rejected _Only</attribute>
+              <attribute name="action">win.display.rating</attribute>
+              <attribute name="target">8</attribute>
+              <attribute name="accel">&lt;Primary&gt;8</attribute>
+            </item>
+          </section>
+        </submenu>
+      </section>
+      <section>
+        <submenu>
+          <attribute name="label" translatable="yes">Sort _Photos</attribute>
+          <section>
+            <item>
+              <attribute name="label" translatable="yes">By _Title</attribute>
+              <attribute name="action">win.SortBy</attribute>
+              <attribute name="target">1</attribute>
+            </item>
+            <item>
+              <attribute name="label" translatable="yes">By _Filename</attribute>
+              <attribute name="action">win.SortBy</attribute>
+              <attribute name="target">4</attribute>
+            </item>
+            <item>
+              <attribute name="label" translatable="yes">By Exposure _Date</attribute>
+              <attribute name="action">win.SortBy</attribute>
+              <attribute name="target">2</attribute>
+            </item>
+            <item>
+              <attribute name="label" translatable="yes">By _Rating</attribute>
+              <attribute name="action">win.SortBy</attribute>
+              <attribute name="target">3</attribute>
+            </item>
+          </section>
+          <section>
+            <item>
+              <attribute name="label" translatable="yes">_Ascending</attribute>
+              <attribute name="action">win.Sort</attribute>
+              <attribute name="target">ascending</attribute>
+            </item>
+            <item>
+              <attribute name="label" translatable="yes">D_escending</attribute>
+              <attribute name="action">win.Sort</attribute>
+              <attribute name="target">descending</attribute>
+            </item>
+          </section>
+        </submenu>
+        <submenu>
+          <attribute name="label" translatable="yes">Sort _Events</attribute>
+          <section>
+            <item>
+              <attribute name="label" translatable="yes">_Ascending</attribute>
+              <attribute name="action">win.CommonSortEvents</attribute>
+              <attribute name="target">ascending</attribute>
+            </item>
+            <item>
+              <attribute name="label" translatable="yes">_Descending</attribute>
+              <attribute name="action">win.CommonSortEvents</attribute>
+              <attribute name="target">descending</attribute>
+            </item>
+          </section>
+        </submenu>
+      </section>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">Zoom _In</attribute>
+          <attribute name="accel">&lt;Primary&gt;plus</attribute>
+          <attribute name="action">win.IncreaseSize</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">Zoom _Out</attribute>
+          <attribute name="accel">&lt;Primary&gt;minus</attribute>
+          <attribute name="action">win.DecreaseSize</attribute>
+        </item>
+      </section>
+      <section>
+      <attribute name="id">ViewExtrasFullscreenSlideshowPlaceholder</attribute>
+      </section>
+    </submenu>
+    <submenu>
+      <attribute name="label" translatable="yes">_Photos</attribute>
+      <section>
+      <attribute name="id">PhotosExtrasEditsPlaceholder</attribute>
+      </section>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">Toggle _Flag</attribute>
+          <attribute name="accel">&lt;Primary&gt;g</attribute>
+          <attribute name="action">win.Flag</attribute>
+        </item>
+        <submenu>
+          <attribute name="label" translatable="yes">_Set Rating</attribute>
+          <section>
+            <item>
+              <attribute name="label" translatable="no">★★★★★</attribute>
+              <attribute name="accel">5</attribute>
+              <attribute name="action">win.RateFive</attribute>
+            </item>
+            <item>
+              <attribute name="label" translatable="no">★★★★</attribute>
+              <attribute name="accel">4</attribute>
+              <attribute name="action">win.RateFour</attribute>
+            </item>
+            <item>
+              <attribute name="label" translatable="no">★★★</attribute>
+              <attribute name="accel">3</attribute>
+              <attribute name="action">win.RateThree</attribute>
+            </item>
+            <item>
+              <attribute name="label" translatable="no">★★</attribute>
+              <attribute name="accel">2</attribute>
+              <attribute name="action">win.RateTwo</attribute>
+            </item>
+            <item>
+              <attribute name="label" translatable="no">★</attribute>
+              <attribute name="accel">1</attribute>
+              <attribute name="action">win.RateOne</attribute>
+            </item>
+            <item>
+              <attribute name="label" translatable="yes">_Unrated</attribute>
+              <attribute name="accel">0</attribute>
+              <attribute name="action">win.RateUnrated</attribute>
+            </item>
+            <item>
+              <attribute name="label" translatable="yes">_Rejected</attribute>
+              <attribute name="accel">9</attribute>
+              <attribute name="action">win.RateRejected</attribute>
+            </item>
+          </section>
+          <section>
+            <item>
+              <attribute name="label" translatable="yes">_Increase</attribute>
+              <attribute name="accel">greater</attribute>
+              <attribute name="action">win.IncreaseRating</attribute>
+            </item>
+            <item>
+              <attribute name="label" translatable="yes">_Decrease</attribute>
+              <attribute name="accel">less</attribute>
+              <attribute name="action">win.DecreaseRating</attribute>
+            </item>
+          </section>
+        </submenu>
+      </section>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">Edit _Title…</attribute>
+          <attribute name="action">win.EditTitle</attribute>
+        <attribute name="accel">F2</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">Edit _Comment…</attribute>
+          <attribute name="action">win.EditComment</attribute>
+          <attribute name="accel">F3</attribute>
+        </item>
+      <attribute name="id">PhotosExtrasDateTimePlaceholder</attribute>
+      </section>
+      <section>
+        <submenu>
+          <attribute name="label" translatable="yes">_Developer</attribute>
+          <section>
+            <item>
+              <attribute name="label" translatable="yes">Shotwell</attribute>
+              <attribute name="action">win.RawDeveloper</attribute>
+              <attribute name="target">Shotwell</attribute>
+            </item>
+            <item>
+              <attribute name="label" translatable="yes">Camera</attribute>
+              <attribute name="action">win.RawDeveloper</attribute>
+              <attribute name="target">Camera</attribute>
+            </item>
+          </section>
+        </submenu>
+      </section>
+      <section>
+      <attribute name="id">PhotosExtrasExternalsPlaceholder</attribute>
+      </section>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">Make _Key Photo for Event</attribute>
+          <attribute name="action">win.MakePrimary</attribute>
+        </item>
+      </section>
+    </submenu>
+    <submenu>
+      <attribute name="label" translatable="yes">Even_ts</attribute>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">_New Event</attribute>
+          <attribute name="accel">&lt;Primary&gt;n</attribute>
+          <attribute name="action">win.NewEvent</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">View Eve_nt for Photo</attribute>
+          <attribute name="action">win.CommonJumpToEvent</attribute>
+        </item>
+      </section>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">Re_name Event…</attribute>
+          <attribute name="accel">F2</attribute>
+          <attribute name="action">win.Rename</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">Edit _Comment…</attribute>
+          <attribute name="action">win.EditEventComment</attribute>
+        </item>
+      </section>
+    </submenu>
+    <submenu>
+      <attribute name="label" translatable="yes">Ta_gs</attribute>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">Add _Tags…</attribute>
+          <attribute name="accel">&lt;Primary&gt;t</attribute>
+          <attribute name="action">win.AddTags</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">Modif_y Tags…</attribute>
+          <attribute name="accel">&lt;Primary&gt;m</attribute>
+          <attribute name="action">win.ModifyTags</attribute>
+        </item>
+      </section>
+    </submenu>
+    <!-- Faces menu goes here FacesMenuPlaceholder -->
+    <submenu>
+      <attribute name="label" translatable="yes">_Help</attribute>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">_Help</attribute>
+          <attribute name="accel">F1</attribute>
+          <attribute name="action">win.CommonHelpContents</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">_Frequently Asked Questions</attribute>
+          <attribute name="action">win.CommonHelpFAQ</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">_Report a Problem…</attribute>
+          <attribute name="action">win.CommonHelpReportProblem</attribute>
+        </item>
+      </section>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">_About</attribute>
+          <attribute name="action">win.CommonAbout</attribute>
+        </item>
+      </section>
+    </submenu>
+  </menu>
+  <menu id="CollectionContextMenu">
+    <section>
+      <item>
+        <attribute name="label" translatable="yes">_Enhance</attribute>
+        <attribute name="accel">&lt;Primary&gt;e</attribute>
+        <attribute name="action">win.Enhance</attribute>
+      </item>
+      <item>
+        <attribute name="label" translatable="yes">Re_vert to Original</attribute>
+        <attribute name="action">win.Revert</attribute>
+      </item>
+    </section>
+    <section>
+      <item>
+        <attribute name="label" translatable="yes">Add _Tags…</attribute>
+        <attribute name="accel">&lt;Primary&gt;t</attribute>
+        <attribute name="action">win.AddTags</attribute>
+      </item>
+      <item>
+        <attribute name="label" translatable="yes">Modif_y Tags…</attribute>
+        <attribute name="accel">&lt;Primary&gt;m</attribute>
+        <attribute name="action">win.ModifyTags</attribute>
+      </item>
+      <attribute name="id">ContextTagsPlaceholder</attribute>
+    </section>
+    <section>
+      <attribute name="id">ContextFacesPlaceholder</attribute>
+      <item>
+        <attribute name="label" translatable="yes">Toggle _Flag</attribute>
+        <attribute name="accel">&lt;Primary&gt;g</attribute>
+        <attribute name="action">win.Flag</attribute>
+      </item>
+    </section>
+    <submenu>
+      <attribute name="label" translatable="yes">_Set Rating</attribute>
+      <section>
+        <item>
+          <attribute name="label" translatable="no">★★★★★</attribute>
+          <attribute name="action">win.RateFive</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="no">★★★★</attribute>
+          <attribute name="action">win.RateFour</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="no">★★★</attribute>
+          <attribute name="action">win.RateThree</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="no">★★</attribute>
+          <attribute name="action">win.RateTwo</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="no">★</attribute>
+          <attribute name="action">win.RateOne</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">_Unrated</attribute>
+          <attribute name="action">win.RateUnrated</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">_Rejected</attribute>
+          <attribute name="action">win.RateRejected</attribute>
+        </item>
+      </section>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">_Increase</attribute>
+          <attribute name="action">win.IncreaseRating</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">_Decrease</attribute>
+          <attribute name="action">win.DecreaseRating</attribute>
+        </item>
+      </section>
+    </submenu>
+    <submenu>
+      <attribute name="label" translatable="yes">_Developer</attribute>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">Shotwell</attribute>
+          <attribute name="action">win.RawDeveloper</attribute>
+          <attribute name="target">Shotwell</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">Camera</attribute>
+          <attribute name="action">win.RawDeveloper</attribute>
+          <attribute name="target">Camera</attribute>
+        </item>
+      </section>
+    </submenu>
+    <section>
+      <item>
+        <attribute name="label" translatable="yes">Edit _Title…</attribute>
+        <attribute name="action">win.EditTitle</attribute>
+        <attribute name="accel">F2</attribute>
+      </item>
+      <item>
+        <attribute name="label" translatable="yes">Edit _Comment…</attribute>
+        <attribute name="action">win.EditComment</attribute>
+        <attribute name="accel">F3</attribute>
+      </item>
+      <item>
+        <attribute name="label" translatable="yes">Open With E_xternal Editor</attribute>
+        <attribute name="accel">&lt;Primary&gt;Return</attribute>
+        <attribute name="action">win.ExternalEdit</attribute>
+      </item>
+      <item>
+        <attribute name="label" translatable="yes">Open With RA_W Editor</attribute>
+        <attribute name="action">win.ExternalEditRAW</attribute>
+      </item>
+    </section>
+    <section>
+      <item>
+        <attribute name="label" translatable="yes">View Eve_nt for Photo</attribute>
+        <attribute name="action">win.CommonJumpToEvent</attribute>
+      </item>
+      <item>
+        <attribute name="label" translatable="yes">Show in File Mana_ger</attribute>
+        <attribute name="accel">&lt;Primary&gt;&lt;Shift&gt;m</attribute>
+        <attribute name="action">win.CommonJumpToFile</attribute>
+      </item>
+      <item>
+        <attribute name="label" translatable="yes">Send _To…</attribute>
+        <attribute name="action">win.SendTo</attribute>
+      </item>
+    </section>
+    <section>
+      <item>
+        <attribute name="label" translatable="yes">_Move to Trash</attribute>
+        <attribute name="accel">Delete</attribute>
+        <attribute name="action">win.MoveToTrash</attribute>
+      </item>
+    </section>
+    <section>
+      <item>
+        <attribute name="label" translatable="yes">Make _Key Photo for Event</attribute>
+        <attribute name="action">win.MakePrimary</attribute>
+      </item>
+    </section>
+  </menu>
+  <menu id="EventContextMenu">
+    <section>
+        <item>
+          <attribute name="label" translatable="yes">Re_name Event…</attribute>
+          <attribute name="action">win.Rename</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">Edit Event _Comment…</attribute>
+          <attribute name="action">win.EditEventComment</attribute>
+        </item>
+    </section>
+  </menu>
+</interface>
diff --git a/data/ui/events_directory.ui b/data/ui/events_directory.ui
new file mode 100644
index 0000000..6d0e939
--- /dev/null
+++ b/data/ui/events_directory.ui
@@ -0,0 +1,191 @@
+<?xml version="1.0"?>
+<interface domain="shotwell">
+  <menu id="MenuBar">
+    <submenu>
+      <attribute name="label" translatable="yes">_File</attribute>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">_Import From Folder…</attribute>
+          <attribute name="accel">&lt;Primary&gt;i</attribute>
+          <attribute name="action">win.CommonFileImport</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">Import From _Application…</attribute>
+          <attribute name="action">win.ExternalLibraryImport</attribute>
+        </item>
+      </section>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">Empty T_rash</attribute>
+          <attribute name="action">win.CommonEmptyTrash</attribute>
+        </item>
+      </section>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">_Quit</attribute>
+          <attribute name="accel">&lt;Primary&gt;q</attribute>
+          <attribute name="action">win.CommonQuit</attribute>
+        </item>
+      </section>
+    </submenu>
+    <submenu>
+      <attribute name="label" translatable="yes">_Edit</attribute>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">_Undo</attribute>
+          <attribute name="accel">&lt;Primary&gt;z</attribute>
+          <attribute name="action">win.CommonUndo</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">_Redo</attribute>
+          <attribute name="accel">&lt;Primary&gt;&lt;Shift&gt;z</attribute>
+          <attribute name="action">win.CommonRedo</attribute>
+        </item>
+      </section>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">_Find</attribute>
+          <attribute name="action">win.CommonFind</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">Ne_w Saved Search…</attribute>
+          <attribute name="accel">&lt;Primary&gt;s</attribute>
+          <attribute name="action">win.CommonNewSearch</attribute>
+        </item>
+      </section>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">Select _All</attribute>
+          <attribute name="accel">&lt;Primary&gt;a</attribute>
+          <attribute name="action">win.CommonSelectAll</attribute>
+        </item>
+      </section>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">_Preferences</attribute>
+          <attribute name="action">win.CommonPreferences</attribute>
+        </item>
+      </section>
+    </submenu>
+    <submenu>
+      <attribute name="label" translatable="yes">_View</attribute>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">_Basic Information</attribute>
+          <attribute name="accel">&lt;Primary&gt;&lt;Shift&gt;i</attribute>
+          <attribute name="action">win.CommonDisplayBasicProperties</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">E_xtended Information</attribute>
+          <attribute name="accel">&lt;Primary&gt;&lt;Shift&gt;x</attribute>
+          <attribute name="action">win.CommonDisplayExtendedProperties</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">_Search Bar</attribute>
+          <attribute name="accel">F8</attribute>
+          <attribute name="action">win.CommonDisplaySearchbar</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">S_idebar</attribute>
+          <attribute name="accel">F9</attribute>
+          <attribute name="action">win.CommonDisplaySidebar</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">T_oolbar</attribute>
+          <attribute name="accel">&lt;Primary&gt;F9</attribute>
+          <attribute name="action">win.CommonDisplayToolbar</attribute>
+        </item>
+      </section>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">_Comments</attribute>
+          <attribute name="accel">&lt;Primary&gt;&lt;Shift&gt;c</attribute>
+          <attribute name="action">win.ViewComment</attribute>
+        </item>
+      </section>
+      <section>
+        <submenu>
+          <attribute name="label" translatable="yes">Sort _Events</attribute>
+          <section>
+            <item>
+              <attribute name="label" translatable="yes">_Ascending</attribute>
+              <attribute name="action">win.CommonSortEvents</attribute>
+              <attribute name="target">ascending</attribute>
+            </item>
+            <item>
+              <attribute name="label" translatable="yes">D_escending</attribute>
+              <attribute name="action">win.CommonSortEvents</attribute>
+              <attribute name="target">descending</attribute>
+            </item>
+          </section>
+        </submenu>
+      </section>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">Fulls_creen</attribute>
+          <attribute name="accel">F11</attribute>
+          <attribute name="action">win.CommonFullscreen</attribute>
+        </item>
+      </section>
+    </submenu>
+    <submenu>
+      <attribute name="label" translatable="yes">Even_ts</attribute>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">_Merge Events</attribute>
+          <attribute name="action">win.Merge</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">Re_name Event…</attribute>
+          <attribute name="accel">F2</attribute>
+          <attribute name="action">win.Rename</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">Edit _Comment…</attribute>
+          <attribute name="action">win.EditComment</attribute>
+        </item>
+      </section>
+    </submenu>
+    <submenu>
+      <attribute name="label" translatable="yes">_Help</attribute>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">_Help</attribute>
+          <attribute name="accel">F1</attribute>
+          <attribute name="action">win.CommonHelpContents</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">_Frequently Asked Questions</attribute>
+          <attribute name="action">win.CommonHelpFAQ</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">_Report a Problem…</attribute>
+          <attribute name="action">win.CommonHelpReportProblem</attribute>
+        </item>
+      </section>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">_About</attribute>
+          <attribute name="action">win.CommonAbout</attribute>
+        </item>
+      </section>
+    </submenu>
+  </menu>
+  <menu id="EventsDirectoryContextMenu">
+    <section>
+      <item>
+        <attribute name="label" translatable="yes">_Merge Events</attribute>
+        <attribute name="action">win.Merge</attribute>
+      </item>
+      <item>
+        <attribute name="label" translatable="yes">Re_name Event…</attribute>
+        <attribute name="accel">F2</attribute>
+        <attribute name="action">win.Rename</attribute>
+      </item>
+      <item>
+        <attribute name="label" translatable="yes">Edit _Comment…</attribute>
+        <attribute name="action">win.EditComment</attribute>
+      </item>
+    </section>
+  </menu>
+</interface>
diff --git a/data/ui/faces.ui b/data/ui/faces.ui
new file mode 100644
index 0000000..bcf7236
--- /dev/null
+++ b/data/ui/faces.ui
@@ -0,0 +1,474 @@
+<?xml version="1.0"?>
+<interface domain="shotwell">
+  <menu id="MenuBar">
+    <submenu>
+      <attribute name="label" translatable="yes">_File</attribute>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">_Import From Folder…</attribute>
+          <attribute name="accel">&lt;Primary&gt;i</attribute>
+          <attribute name="action">win.CommonFileImport</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">Import From _Application…</attribute>
+          <attribute name="action">win.ExternalLibraryImport</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">_Export…</attribute>
+          <attribute name="accel">&lt;Primary&gt;&lt;Shift&gt;e</attribute>
+          <attribute name="action">win.Export</attribute>
+        </item>
+      </section>
+      <section>
+        <attribute name="id">FileExtrasPlaceholder</attribute>
+      </section>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">Show in File Mana_ger</attribute>
+          <attribute name="accel">&lt;Primary&gt;&lt;Shift&gt;m</attribute>
+          <attribute name="action">win.CommonJumpToFile</attribute>
+        </item>
+      </section>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">Empty T_rash</attribute>
+          <attribute name="action">win.CommonEmptyTrash</attribute>
+        </item>
+      </section>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">_Quit</attribute>
+          <attribute name="accel">&lt;Primary&gt;q</attribute>
+          <attribute name="action">win.CommonQuit</attribute>
+        </item>
+      </section>
+    </submenu>
+    <submenu>
+      <attribute name="label" translatable="yes">_Edit</attribute>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">_Undo</attribute>
+          <attribute name="accel">&lt;Primary&gt;z</attribute>
+          <attribute name="action">win.CommonUndo</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">_Redo</attribute>
+          <attribute name="accel">&lt;Primary&gt;&lt;Shift&gt;z</attribute>
+          <attribute name="action">win.CommonRedo</attribute>
+        </item>
+      </section>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">_Find</attribute>
+          <attribute name="action">win.CommonFind</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">Ne_w Saved Search…</attribute>
+          <attribute name="accel">&lt;Primary&gt;s</attribute>
+          <attribute name="action">win.CommonNewSearch</attribute>
+        </item>
+      </section>
+      <section>
+        <attribute name="id">EditExtrasPlaceholder</attribute>
+        <item>
+          <attribute name="label" translatable="yes">R_emove From Library</attribute>
+          <attribute name="accel">&lt;Shift&gt;Delete</attribute>
+          <attribute name="action">win.RemoveFromLibrary</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">_Move to Trash</attribute>
+          <attribute name="accel">Delete</attribute>
+          <attribute name="action">win.MoveToTrash</attribute>
+        </item>
+      </section>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">Select _All</attribute>
+          <attribute name="accel">&lt;Primary&gt;a</attribute>
+          <attribute name="action">win.CommonSelectAll</attribute>
+        </item>
+      </section>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">_Preferences</attribute>
+          <attribute name="action">win.CommonPreferences</attribute>
+        </item>
+      </section>
+    </submenu>
+    <submenu>
+      <attribute name="label" translatable="yes">_View</attribute>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">_Basic Information</attribute>
+          <attribute name="accel">&lt;Primary&gt;&lt;Shift&gt;i</attribute>
+          <attribute name="action">win.CommonDisplayBasicProperties</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">E_xtended Information</attribute>
+          <attribute name="accel">&lt;Primary&gt;&lt;Shift&gt;x</attribute>
+          <attribute name="action">win.CommonDisplayExtendedProperties</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">_Search Bar</attribute>
+          <attribute name="accel">F8</attribute>
+          <attribute name="action">win.CommonDisplaySearchbar</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">S_idebar</attribute>
+          <attribute name="accel">F9</attribute>
+          <attribute name="action">win.CommonDisplaySidebar</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">T_oolbar</attribute>
+          <attribute name="accel">&lt;Primary&gt;F9</attribute>
+          <attribute name="action">win.CommonDisplayToolbar</attribute>
+        </item>
+      </section>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">_Titles</attribute>
+          <attribute name="accel">&lt;Primary&gt;&lt;Shift&gt;t</attribute>
+          <attribute name="action">win.ViewTitle</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">_Comments</attribute>
+          <attribute name="accel">&lt;Primary&gt;&lt;Shift&gt;c</attribute>
+          <attribute name="action">win.ViewComment</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">Ta_gs</attribute>
+          <attribute name="accel">&lt;Primary&gt;&lt;Shift&gt;g</attribute>
+          <attribute name="action">win.ViewTags</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">_Ratings</attribute>
+          <attribute name="accel">&lt;Primary&gt;&lt;Shift&gt;n</attribute>
+          <attribute name="action">win.ViewRatings</attribute>
+        </item>
+      </section>
+      <section>
+        <submenu>
+          <attribute name="label" translatable="yes">_Filter Photos</attribute>
+          <section>
+            <item>
+              <attribute name="label" translatable="no">★★★★★</attribute>
+              <attribute name="action">win.display.rating</attribute>
+              <attribute name="target">7</attribute>
+              <attribute name="accel">&lt;Primary&gt;5</attribute>
+            </item>
+            <item>
+              <attribute name="label" translatable="no">★★★★</attribute>
+              <attribute name="action">win.display.rating</attribute>
+              <attribute name="target">6</attribute>
+              <attribute name="accel">&lt;Primary&gt;4</attribute>
+            </item>
+            <item>
+              <attribute name="label" translatable="no">★★★</attribute>
+              <attribute name="action">win.display.rating</attribute>
+              <attribute name="target">5</attribute>
+              <attribute name="accel">&lt;Primary&gt;3</attribute>
+            </item>
+            <item>
+              <attribute name="label" translatable="no">★★</attribute>
+              <attribute name="action">win.display.rating</attribute>
+              <attribute name="target">4</attribute>
+              <attribute name="accel">&lt;Primary&gt;2</attribute>
+            </item>
+            <item>
+              <attribute name="label" translatable="no">★</attribute>
+              <attribute name="action">win.display.rating</attribute>
+              <attribute name="target">3</attribute>
+              <attribute name="accel">&lt;Primary&gt;1</attribute>
+            </item>
+            <item>
+              <attribute name="label" translatable="yes">_All Photos</attribute>
+              <attribute name="action">win.display.rating</attribute>
+              <attribute name="target">2</attribute>
+              <attribute name="accel">&lt;Primary&gt;0</attribute>
+            </item>
+            <item>
+              <attribute name="label" translatable="yes">All + _Rejected</attribute>
+              <attribute name="action">win.display.rating</attribute>
+              <attribute name="target">1</attribute>
+              <attribute name="accel">&lt;Primary&gt;9</attribute>
+            </item>
+            <item>
+              <attribute name="label" translatable="yes">Rejected _Only</attribute>
+              <attribute name="action">win.display.rating</attribute>
+              <attribute name="target">8</attribute>
+              <attribute name="accel">&lt;Primary&gt;8</attribute>
+            </item>
+          </section>
+        </submenu>
+      </section>
+      <section>
+        <submenu>
+          <attribute name="label" translatable="yes">Sort _Photos</attribute>
+          <section>
+            <item>
+              <attribute name="label" translatable="yes">By _Title</attribute>
+              <attribute name="action">win.SortBy</attribute>
+              <attribute name="target">1</attribute>
+            </item>
+            <item>
+              <attribute name="label" translatable="yes">By _Filename</attribute>
+              <attribute name="action">win.SortBy</attribute>
+              <attribute name="target">4</attribute>
+            </item>
+            <item>
+              <attribute name="label" translatable="yes">By Exposure _Date</attribute>
+              <attribute name="action">win.SortBy</attribute>
+              <attribute name="target">2</attribute>
+            </item>
+            <item>
+              <attribute name="label" translatable="yes">By _Rating</attribute>
+              <attribute name="action">win.SortBy</attribute>
+              <attribute name="target">3</attribute>
+            </item>
+          </section>
+          <section>
+            <item>
+              <attribute name="label" translatable="yes">_Ascending</attribute>
+              <attribute name="action">win.Sort</attribute>
+              <attribute name="target">ascending</attribute>
+            </item>
+            <item>
+              <attribute name="label" translatable="yes">D_escending</attribute>
+              <attribute name="action">win.Sort</attribute>
+              <attribute name="target">descending</attribute>
+            </item>
+          </section>
+        </submenu>
+        <submenu>
+          <attribute name="label" translatable="yes">Sort _Events</attribute>
+          <section>
+            <item>
+              <attribute name="label" translatable="yes">_Ascending</attribute>
+              <attribute name="action">win.CommonSortEvents</attribute>
+              <attribute name="target">ascending</attribute>
+            </item>
+            <item>
+              <attribute name="label" translatable="yes">_Descending</attribute>
+              <attribute name="action">win.CommonSortEvents</attribute>
+              <attribute name="target">descending</attribute>
+            </item>
+          </section>
+        </submenu>
+      </section>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">Zoom _In</attribute>
+          <attribute name="accel">&lt;Primary&gt;plus</attribute>
+          <attribute name="action">win.IncreaseSize</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">Zoom _Out</attribute>
+          <attribute name="accel">&lt;Primary&gt;minus</attribute>
+          <attribute name="action">win.DecreaseSize</attribute>
+        </item>
+      </section>
+      <section>
+      <attribute name="id">ViewExtrasFullscreenSlideshowPlaceholder</attribute>
+      </section>
+    </submenu>
+    <submenu>
+      <attribute name="label" translatable="yes">_Photos</attribute>
+      <section>
+      <attribute name="id">PhotosExtrasEditsPlaceholder</attribute>
+      </section>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">Toggle _Flag</attribute>
+          <attribute name="accel">&lt;Primary&gt;g</attribute>
+          <attribute name="action">win.Flag</attribute>
+        </item>
+        <submenu>
+          <attribute name="label" translatable="yes">_Set Rating</attribute>
+          <section>
+            <item>
+              <attribute name="label" translatable="no">★★★★★</attribute>
+              <attribute name="accel">5</attribute>
+              <attribute name="action">win.RateFive</attribute>
+            </item>
+            <item>
+              <attribute name="label" translatable="no">★★★★</attribute>
+              <attribute name="accel">4</attribute>
+              <attribute name="action">win.RateFour</attribute>
+            </item>
+            <item>
+              <attribute name="label" translatable="no">★★★</attribute>
+              <attribute name="accel">3</attribute>
+              <attribute name="action">win.RateThree</attribute>
+            </item>
+            <item>
+              <attribute name="label" translatable="no">★★</attribute>
+              <attribute name="accel">2</attribute>
+              <attribute name="action">win.RateTwo</attribute>
+            </item>
+            <item>
+              <attribute name="label" translatable="no">★</attribute>
+              <attribute name="accel">1</attribute>
+              <attribute name="action">win.RateOne</attribute>
+            </item>
+            <item>
+              <attribute name="label" translatable="yes">_Unrated</attribute>
+              <attribute name="accel">0</attribute>
+              <attribute name="action">win.RateUnrated</attribute>
+            </item>
+            <item>
+              <attribute name="label" translatable="yes">_Rejected</attribute>
+              <attribute name="accel">9</attribute>
+              <attribute name="action">win.RateRejected</attribute>
+            </item>
+          </section>
+          <section>
+            <item>
+              <attribute name="label" translatable="yes">_Increase</attribute>
+              <attribute name="accel">greater</attribute>
+              <attribute name="action">win.IncreaseRating</attribute>
+            </item>
+            <item>
+              <attribute name="label" translatable="yes">_Decrease</attribute>
+              <attribute name="accel">less</attribute>
+              <attribute name="action">win.DecreaseRating</attribute>
+            </item>
+          </section>
+        </submenu>
+      </section>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">Edit _Title…</attribute>
+          <attribute name="action">win.EditTitle</attribute>
+          <attribute name="accel">F2</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">Edit _Comment…</attribute>
+          <attribute name="action">win.EditComment</attribute>
+          <attribute name="accel">F3</attribute>
+        </item>
+      <attribute name="id">PhotosExtrasDateTimePlaceholder</attribute>
+      </section>
+      <section>
+        <submenu>
+          <attribute name="label" translatable="yes">_Developer</attribute>
+          <section>
+            <item>
+              <attribute name="label" translatable="yes">Shotwell</attribute>
+              <attribute name="action">win.RawDeveloper</attribute>
+              <attribute name="target">Shotwell</attribute>
+            </item>
+            <item>
+              <attribute name="label" translatable="yes">Camera</attribute>
+              <attribute name="action">win.RawDeveloper</attribute>
+              <attribute name="target">Camera</attribute>
+            </item>
+          </section>
+        </submenu>
+      </section>
+      <section>
+      <attribute name="id">PhotosExtrasExternalsPlaceholder</attribute>
+      </section>
+    </submenu>
+    <submenu>
+      <attribute name="label" translatable="yes">Even_ts</attribute>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">_New Event</attribute>
+          <attribute name="accel">&lt;Primary&gt;n</attribute>
+          <attribute name="action">win.NewEvent</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">View Eve_nt for Photo</attribute>
+          <attribute name="action">win.CommonJumpToEvent</attribute>
+        </item>
+      </section>
+    </submenu>
+    <submenu>
+      <attribute name="label" translatable="yes">Ta_gs</attribute>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">Add _Tags…</attribute>
+          <attribute name="accel">&lt;Primary&gt;t</attribute>
+          <attribute name="action">win.AddTags</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">Modif_y Tags…</attribute>
+          <attribute name="accel">&lt;Primary&gt;m</attribute>
+          <attribute name="action">win.ModifyTags</attribute>
+        </item>
+      </section>
+    </submenu>
+    <!-- Faces menu goes here FacesMenuPlaceholder -->
+    <submenu>
+    <attribute name="label" translatable="yes">Faces</attribute>
+    <section>
+    <attribute name="id">FacesMenuPlaceholder</attribute>
+	<!--
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">_RemoveFaceFromPhotos</attribute>
+          <attribute name="accel">&lt;Primary&gt;r</attribute>
+          <attribute name="action">RemoveFaceFromPhotos</attribute>
+        </item>
+      </section>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">R_enameFace</attribute>
+          <attribute name="accel">&lt;Primary&gt;e</attribute>
+          <attribute name="action">RenameFace</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">Dele_teFace</attribute>
+          <attribute name="accel">&lt;Primary&gt;t</attribute>
+          <attribute name="action">DeleteFace</attribute>
+        </item>
+      </section>
+	-->
+    </section>
+    </submenu>
+    <submenu>
+      <attribute name="label" translatable="yes">_Help</attribute>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">_Help</attribute>
+          <attribute name="accel">F1</attribute>
+          <attribute name="action">win.CommonHelpContents</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">_Frequently Asked Questions</attribute>
+          <attribute name="action">win.CommonHelpFAQ</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">_Report a Problem…</attribute>
+          <attribute name="action">win.CommonHelpReportProblem</attribute>
+        </item>
+      </section>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">_About</attribute>
+          <attribute name="action">win.CommonAbout</attribute>
+        </item>
+      </section>
+    </submenu>
+  </menu>
+  <menu id="CollectionFacesPlaceholder">
+    <section>
+      <item>
+        <attribute name="label">ContextRemoveFaceFromPhotos</attribute>
+        <attribute name="action">win.RemoveFaceFromPhotos</attribute>
+      </item>
+    </section>
+  </menu>
+  <menu id="FacesContextMenu">
+    <section>
+      <item>
+        <attribute name="label" translatable="yes">Rename…</attribute>
+        <attribute name="action">win.RenameFaceSidebar</attribute>
+      </item>
+      <item>
+        <attribute name="label" translatable="yes">Delete</attribute>
+        <attribute name="action">win.DeleteFaceSidebar</attribute>
+      </item>
+    </section>
+  </menu>
+</interface>
diff --git a/data/ui/fullscreen.ui b/data/ui/fullscreen.ui
new file mode 100644
index 0000000..8aade55
--- /dev/null
+++ b/data/ui/fullscreen.ui
@@ -0,0 +1,5 @@
+<ui>
+
+    <accelerator name="LeaveFullscreen" action="LeaveFullscreen" />
+
+</ui>
diff --git a/data/ui/import.ui b/data/ui/import.ui
new file mode 100644
index 0000000..6f13e31
--- /dev/null
+++ b/data/ui/import.ui
@@ -0,0 +1,219 @@
+<?xml version="1.0"?>
+<interface domain="shotwell">
+  <menu id="MenuBar">
+    <submenu>
+      <attribute name="label" translatable="yes">_File</attribute>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">_Import From Folder…</attribute>
+          <attribute name="accel">&lt;Primary&gt;i</attribute>
+          <attribute name="action">win.CommonFileImport</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">Import _Selected</attribute>
+          <attribute name="action">win.ImportSelected</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">Import _All</attribute>
+          <attribute name="action">win.ImportAll</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">Import From _Application…</attribute>
+          <attribute name="action">win.ExternalLibraryImport</attribute>
+        </item>
+      </section>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">Empty T_rash</attribute>
+          <attribute name="action">win.CommonEmptyTrash</attribute>
+        </item>
+      </section>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">_Quit</attribute>
+          <attribute name="accel">&lt;Primary&gt;q</attribute>
+          <attribute name="action">win.CommonQuit</attribute>
+        </item>
+      </section>
+    </submenu>
+    <submenu>
+      <attribute name="label" translatable="yes">_Edit</attribute>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">_Undo</attribute>
+          <attribute name="accel">&lt;Primary&gt;z</attribute>
+          <attribute name="action">win.CommonUndo</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">_Redo</attribute>
+          <attribute name="accel">&lt;Primary&gt;&lt;Shift&gt;z</attribute>
+          <attribute name="action">win.CommonRedo</attribute>
+        </item>
+      </section>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">_Find</attribute>
+          <attribute name="action">win.CommonFind</attribute>
+        </item>
+      </section>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">Select _All</attribute>
+          <attribute name="accel">&lt;Primary&gt;a</attribute>
+          <attribute name="action">win.CommonSelectAll</attribute>
+        </item>
+      </section>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">_Preferences</attribute>
+          <attribute name="action">win.CommonPreferences</attribute>
+        </item>
+      </section>
+    </submenu>
+    <submenu>
+      <attribute name="label" translatable="yes">_View</attribute>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">_Basic Information</attribute>
+          <attribute name="accel">&lt;Primary&gt;&lt;Shift&gt;i</attribute>
+          <attribute name="action">win.CommonDisplayBasicProperties</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">E_xtended Information</attribute>
+          <attribute name="accel">&lt;Primary&gt;&lt;Shift&gt;x</attribute>
+          <attribute name="action">win.CommonDisplayExtendedProperties</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">_Search Bar</attribute>
+          <attribute name="accel">F8</attribute>
+          <attribute name="action">win.CommonDisplaySearchbar</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">S_idebar</attribute>
+          <attribute name="accel">F9</attribute>
+          <attribute name="action">win.CommonDisplaySidebar</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">T_oolbar</attribute>
+          <attribute name="accel">&lt;Primary&gt;F9</attribute>
+          <attribute name="action">win.CommonDisplayToolbar</attribute>
+        </item>
+      </section>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">_Titles</attribute>
+          <attribute name="accel">&lt;Primary&gt;&lt;Shift&gt;t</attribute>
+          <attribute name="action">win.ViewTitle</attribute>
+        </item>
+      </section>
+      <section>
+        <submenu>
+          <attribute name="label" translatable="yes">_Filter Photos</attribute>
+          <section>
+            <item>
+              <attribute name="label" translatable="no">★★★★★</attribute>
+              <attribute name="action">win.display.rating</attribute>
+              <attribute name="target">7</attribute>
+              <attribute name="accel">&lt;Primary&gt;5</attribute>
+            </item>
+            <item>
+              <attribute name="label" translatable="no">★★★★</attribute>
+              <attribute name="action">win.display.rating</attribute>
+              <attribute name="target">6</attribute>
+              <attribute name="accel">&lt;Primary&gt;4</attribute>
+            </item>
+            <item>
+              <attribute name="label" translatable="no">★★★</attribute>
+              <attribute name="action">win.display.rating</attribute>
+              <attribute name="target">5</attribute>
+              <attribute name="accel">&lt;Primary&gt;3</attribute>
+            </item>
+            <item>
+              <attribute name="label" translatable="no">★★</attribute>
+              <attribute name="action">win.display.rating</attribute>
+              <attribute name="target">4</attribute>
+              <attribute name="accel">&lt;Primary&gt;2</attribute>
+            </item>
+            <item>
+              <attribute name="label" translatable="no">★</attribute>
+              <attribute name="action">win.display.rating</attribute>
+              <attribute name="target">3</attribute>
+              <attribute name="accel">&lt;Primary&gt;1</attribute>
+            </item>
+            <item>
+              <attribute name="label" translatable="yes">_All Photos</attribute>
+              <attribute name="action">win.display.rating</attribute>
+              <attribute name="target">2</attribute>
+              <attribute name="accel">&lt;Primary&gt;0</attribute>
+            </item>
+            <item>
+              <attribute name="label" translatable="yes">All + _Rejected</attribute>
+              <attribute name="action">win.display.rating</attribute>
+              <attribute name="target">1</attribute>
+              <attribute name="accel">&lt;Primary&gt;9</attribute>
+            </item>
+            <item>
+              <attribute name="label" translatable="yes">Rejected _Only</attribute>
+              <attribute name="action">win.display.rating</attribute>
+              <attribute name="target">8</attribute>
+              <attribute name="accel">&lt;Primary&gt;8</attribute>
+            </item>
+          </section>
+        </submenu>
+      </section>
+      <section>
+        <submenu>
+          <attribute name="label" translatable="yes">Sort _Events</attribute>
+          <section>
+            <item>
+              <attribute name="label" translatable="yes">_Ascending</attribute>
+              <attribute name="action">win.CommonSortEvents</attribute>
+              <attribute name="target">ascending</attribute>
+            </item>
+            <item>
+              <attribute name="label" translatable="yes">_Descending</attribute>
+              <attribute name="action">win.CommonSortEvents</attribute>
+              <attribute name="target">descending</attribute>
+            </item>
+          </section>
+        </submenu>
+      </section>
+    </submenu>
+    <submenu>
+      <attribute name="label" translatable="yes">_Help</attribute>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">_Help</attribute>
+          <attribute name="accel">F1</attribute>
+          <attribute name="action">win.CommonHelpContents</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">_Frequently Asked Questions</attribute>
+          <attribute name="action">win.CommonHelpFAQ</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">_Report a Problem…</attribute>
+          <attribute name="action">win.CommonHelpReportProblem</attribute>
+        </item>
+      </section>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">_About</attribute>
+          <attribute name="action">win.CommonAbout</attribute>
+        </item>
+      </section>
+    </submenu>
+  </menu>
+  <menu id="ImportContextMenu">
+    <section>
+      <item>
+        <attribute name="label" translatable="yes">Import _Selected</attribute>
+        <attribute name="action">win.ImportSelected</attribute>
+      </item>
+      <item>
+        <attribute name="label" translatable="yes">Import _All</attribute>
+        <attribute name="action">win.ImportAll</attribute>
+      </item>
+    </section>
+  </menu>
+</interface>
diff --git a/data/ui/import_queue.ui b/data/ui/import_queue.ui
new file mode 100644
index 0000000..1f67fc3
--- /dev/null
+++ b/data/ui/import_queue.ui
@@ -0,0 +1,89 @@
+<?xml version="1.0"?>
+<interface domain="shotwell">
+  <menu id="MenuBar">
+    <submenu>
+      <attribute name="label" translatable="yes">_File</attribute>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">_Stop Import</attribute>
+          <attribute name="action">win.Stop</attribute>
+        </item>
+      </section>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">_Import From Folder…</attribute>
+          <attribute name="accel">&lt;Primary&gt;i</attribute>
+          <attribute name="action">win.CommonFileImport</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">Import From _Application…</attribute>
+          <attribute name="action">win.ExternalLibraryImport</attribute>
+        </item>
+      </section>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">Empty T_rash</attribute>
+          <attribute name="action">win.CommonEmptyTrash</attribute>
+        </item>
+      </section>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">_Quit</attribute>
+          <attribute name="accel">&lt;Primary&gt;q</attribute>
+          <attribute name="action">win.CommonQuit</attribute>
+        </item>
+      </section>
+    </submenu>
+    <submenu>
+      <attribute name="label" translatable="yes">_View</attribute>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">_Basic Information</attribute>
+          <attribute name="accel">&lt;Primary&gt;&lt;Shift&gt;i</attribute>
+          <attribute name="action">win.CommonDisplayBasicProperties</attribute>
+        </item>
+      </section>
+      <section>
+        <submenu>
+          <attribute name="label" translatable="yes">Sort _Events</attribute>
+          <section>
+            <item>
+              <attribute name="label" translatable="yes">_Ascending</attribute>
+              <attribute name="action">win.CommonSortEvents</attribute>
+              <attribute name="target">ascending</attribute>
+            </item>
+            <item>
+              <attribute name="label" translatable="yes">D_escending</attribute>
+              <attribute name="action">win.CommonSortEvents</attribute>
+              <attribute name="target">descending</attribute>
+            </item>
+          </section>
+        </submenu>
+      </section>
+    </submenu>
+    <submenu>
+      <attribute name="label" translatable="yes">_Help</attribute>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">_Help</attribute>
+          <attribute name="accel">F1</attribute>
+          <attribute name="action">win.CommonHelpContents</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">_Frequently Asked Questions</attribute>
+          <attribute name="action">win.CommonHelpFAQ</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">_Report a Problem…</attribute>
+          <attribute name="action">win.CommonHelpReportProblem</attribute>
+        </item>
+      </section>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">_About</attribute>
+          <attribute name="action">win.CommonAbout</attribute>
+        </item>
+      </section>
+    </submenu>
+  </menu>
+</interface>
diff --git a/data/ui/login_welcome_pane_widget.ui b/data/ui/login_welcome_pane_widget.ui
new file mode 100644
index 0000000..82698f4
--- /dev/null
+++ b/data/ui/login_welcome_pane_widget.ui
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.22.0 -->
+<interface domain="shotwell">
+  <requires lib="gtk+" version="3.18"/>
+  <template class="PublishingUILoginWelcomePane" parent="GtkBox">
+    <property name="visible">True</property>
+    <property name="can_focus">False</property>
+    <property name="margin_start">18</property>
+    <property name="margin_end">18</property>
+    <property name="margin_top">18</property>
+    <property name="margin_bottom">18</property>
+    <property name="orientation">vertical</property>
+    <child type="center">
+      <object class="GtkLabel" id="not_logged_in_label">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="label" comments="This is a placeholder string and may be ignored.">This is populated from within the code;
+changes made here will not display.</property>
+        <property name="wrap">True</property>
+        <property name="max_width_chars">70</property>
+      </object>
+      <packing>
+        <property name="expand">False</property>
+        <property name="fill">True</property>
+        <property name="position">2</property>
+      </packing>
+    </child>
+    <child>
+      <object class="GtkButtonBox">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="layout_style">spread</property>
+        <child>
+          <object class="GtkButton" id="login_button">
+            <property name="label" translatable="yes">_Log in</property>
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="receives_default">True</property>
+            <property name="use_underline">True</property>
+            <property name="image_position">top</property>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+      </object>
+      <packing>
+        <property name="expand">False</property>
+        <property name="fill">True</property>
+        <property name="pack_type">end</property>
+        <property name="position">1</property>
+      </packing>
+    </child>
+  </template>
+</interface>
diff --git a/data/ui/manifest_widget.ui b/data/ui/manifest_widget.ui
new file mode 100644
index 0000000..e71d498
--- /dev/null
+++ b/data/ui/manifest_widget.ui
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.40.0 -->
+<interface domain="shotwell">
+  <requires lib="gtk+" version="3.18"/>
+  <template class="PluginsManifestWidgetMediator" parent="GtkBox">
+    <property name="visible">True</property>
+    <property name="can-focus">False</property>
+    <property name="orientation">vertical</property>
+    <property name="spacing">12</property>
+    <child>
+      <object class="GtkScrolledWindow" id="list_bin">
+        <property name="visible">True</property>
+        <property name="can-focus">True</property>
+        <property name="hexpand">True</property>
+        <property name="vexpand">True</property>
+        <property name="hscrollbar-policy">never</property>
+        <child>
+          <placeholder/>
+        </child>
+      </object>
+      <packing>
+        <property name="expand">False</property>
+        <property name="fill">True</property>
+        <property name="position">0</property>
+      </packing>
+    </child>
+    <child>
+      <placeholder/>
+    </child>
+  </template>
+</interface>
diff --git a/data/ui/media.ui b/data/ui/media.ui
new file mode 100644
index 0000000..22a6b83
--- /dev/null
+++ b/data/ui/media.ui
@@ -0,0 +1,427 @@
+<?xml version="1.0"?>
+<interface domain="shotwell">
+  <menu id="MenuBar">
+    <submenu>
+      <attribute name="label" translatable="yes">_File</attribute>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">_Import From Folder…</attribute>
+          <attribute name="accel">&lt;Primary&gt;i</attribute>
+          <attribute name="action">win.CommonFileImport</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">Import From _Application…</attribute>
+          <attribute name="action">win.ExternalLibraryImport</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">_Export…</attribute>
+          <attribute name="accel">&lt;Primary&gt;&lt;Shift&gt;e</attribute>
+          <attribute name="action">win.Export</attribute>
+        </item>
+      </section>
+      <section>
+        <attribute name="id">FileExtrasPlaceholder</attribute>
+      </section>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">Show in File Mana_ger</attribute>
+          <attribute name="accel">&lt;Primary&gt;&lt;Shift&gt;m</attribute>
+          <attribute name="action">win.CommonJumpToFile</attribute>
+        </item>
+      </section>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">Empty T_rash</attribute>
+          <attribute name="action">win.CommonEmptyTrash</attribute>
+        </item>
+      </section>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">_Quit</attribute>
+          <attribute name="accel">&lt;Primary&gt;q</attribute>
+          <attribute name="action">win.CommonQuit</attribute>
+        </item>
+      </section>
+    </submenu>
+    <submenu>
+      <attribute name="label" translatable="yes">_Edit</attribute>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">_Undo</attribute>
+          <attribute name="accel">&lt;Primary&gt;z</attribute>
+          <attribute name="action">win.CommonUndo</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">_Redo</attribute>
+          <attribute name="accel">&lt;Primary&gt;&lt;Shift&gt;z</attribute>
+          <attribute name="action">win.CommonRedo</attribute>
+        </item>
+      </section>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">_Find</attribute>
+          <attribute name="action">win.CommonFind</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">Ne_w Saved Search…</attribute>
+          <attribute name="accel">&lt;Primary&gt;s</attribute>
+          <attribute name="action">win.CommonNewSearch</attribute>
+        </item>
+      </section>
+      <section>
+        <attribute name="id">EditExtrasPlaceholder</attribute>
+        <item>
+          <attribute name="label" translatable="yes">R_emove From Library</attribute>
+          <attribute name="accel">&lt;Shift&gt;Delete</attribute>
+          <attribute name="action">win.RemoveFromLibrary</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">_Move to Trash</attribute>
+          <attribute name="accel">Delete</attribute>
+          <attribute name="action">win.MoveToTrash</attribute>
+        </item>
+      </section>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">Select _All</attribute>
+          <attribute name="accel">&lt;Primary&gt;a</attribute>
+          <attribute name="action">win.CommonSelectAll</attribute>
+        </item>
+      </section>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">_Preferences</attribute>
+          <attribute name="action">win.CommonPreferences</attribute>
+        </item>
+      </section>
+    </submenu>
+    <submenu>
+      <attribute name="label" translatable="yes">_View</attribute>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">_Basic Information</attribute>
+          <attribute name="accel">&lt;Primary&gt;&lt;Shift&gt;i</attribute>
+          <attribute name="action">win.CommonDisplayBasicProperties</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">E_xtended Information</attribute>
+          <attribute name="accel">&lt;Primary&gt;&lt;Shift&gt;x</attribute>
+          <attribute name="action">win.CommonDisplayExtendedProperties</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">_Search Bar</attribute>
+          <attribute name="accel">F8</attribute>
+          <attribute name="action">win.CommonDisplaySearchbar</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">S_idebar</attribute>
+          <attribute name="accel">F9</attribute>
+          <attribute name="action">win.CommonDisplaySidebar</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">T_oolbar</attribute>
+          <attribute name="accel">&lt;Primary&gt;F9</attribute>
+          <attribute name="action">win.CommonDisplayToolbar</attribute>
+        </item>
+      </section>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">_Titles</attribute>
+          <attribute name="accel">&lt;Primary&gt;&lt;Shift&gt;t</attribute>
+          <attribute name="action">win.ViewTitle</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">_Comments</attribute>
+          <attribute name="accel">&lt;Primary&gt;&lt;Shift&gt;c</attribute>
+          <attribute name="action">win.ViewComment</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">Ta_gs</attribute>
+          <attribute name="accel">&lt;Primary&gt;&lt;Shift&gt;g</attribute>
+          <attribute name="action">win.ViewTags</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">_Ratings</attribute>
+          <attribute name="accel">&lt;Primary&gt;&lt;Shift&gt;n</attribute>
+          <attribute name="action">win.ViewRatings</attribute>
+        </item>
+      </section>
+      <section>
+        <submenu>
+          <attribute name="label" translatable="yes">_Filter Photos</attribute>
+          <section>
+            <item>
+              <attribute name="label" translatable="no">★★★★★</attribute>
+              <attribute name="action">win.display.rating</attribute>
+              <attribute name="target">7</attribute>
+              <attribute name="accel">&lt;Primary&gt;5</attribute>
+            </item>
+            <item>
+              <attribute name="label" translatable="no">★★★★</attribute>
+              <attribute name="action">win.display.rating</attribute>
+              <attribute name="target">6</attribute>
+              <attribute name="accel">&lt;Primary&gt;4</attribute>
+            </item>
+            <item>
+              <attribute name="label" translatable="no">★★★</attribute>
+              <attribute name="action">win.display.rating</attribute>
+              <attribute name="target">5</attribute>
+              <attribute name="accel">&lt;Primary&gt;3</attribute>
+            </item>
+            <item>
+              <attribute name="label" translatable="no">★★</attribute>
+              <attribute name="action">win.display.rating</attribute>
+              <attribute name="target">4</attribute>
+              <attribute name="accel">&lt;Primary&gt;2</attribute>
+            </item>
+            <item>
+              <attribute name="label" translatable="no">★</attribute>
+              <attribute name="action">win.display.rating</attribute>
+              <attribute name="target">3</attribute>
+              <attribute name="accel">&lt;Primary&gt;1</attribute>
+            </item>
+            <item>
+              <attribute name="label" translatable="yes">_All Photos</attribute>
+              <attribute name="action">win.display.rating</attribute>
+              <attribute name="target">2</attribute>
+              <attribute name="accel">&lt;Primary&gt;0</attribute>
+            </item>
+            <item>
+              <attribute name="label" translatable="yes">All + _Rejected</attribute>
+              <attribute name="action">win.display.rating</attribute>
+              <attribute name="target">1</attribute>
+              <attribute name="accel">&lt;Primary&gt;9</attribute>
+            </item>
+            <item>
+              <attribute name="label" translatable="yes">Rejected _Only</attribute>
+              <attribute name="action">win.display.rating</attribute>
+              <attribute name="target">8</attribute>
+              <attribute name="accel">&lt;Primary&gt;8</attribute>
+            </item>
+          </section>
+        </submenu>
+      </section>
+      <section>
+        <submenu>
+          <attribute name="label" translatable="yes">Sort _Photos</attribute>
+          <section>
+            <item>
+              <attribute name="label" translatable="yes">By _Title</attribute>
+              <attribute name="action">win.SortBy</attribute>
+              <attribute name="target">1</attribute>
+            </item>
+            <item>
+              <attribute name="label" translatable="yes">By _Filename</attribute>
+              <attribute name="action">win.SortBy</attribute>
+              <attribute name="target">4</attribute>
+            </item>
+            <item>
+              <attribute name="label" translatable="yes">By Exposure _Date</attribute>
+              <attribute name="action">win.SortBy</attribute>
+              <attribute name="target">2</attribute>
+            </item>
+            <item>
+              <attribute name="label" translatable="yes">By _Rating</attribute>
+              <attribute name="action">win.SortBy</attribute>
+              <attribute name="target">3</attribute>
+            </item>
+          </section>
+          <section>
+            <item>
+              <attribute name="label" translatable="yes">_Ascending</attribute>
+              <attribute name="action">win.Sort</attribute>
+              <attribute name="target">ascending</attribute>
+            </item>
+            <item>
+              <attribute name="label" translatable="yes">D_escending</attribute>
+              <attribute name="action">win.Sort</attribute>
+              <attribute name="target">descending</attribute>
+            </item>
+          </section>
+        </submenu>
+        <submenu>
+          <attribute name="label" translatable="yes">Sort _Events</attribute>
+          <section>
+            <item>
+              <attribute name="label" translatable="yes">_Ascending</attribute>
+              <attribute name="action">win.CommonSortEvents</attribute>
+              <attribute name="target">ascending</attribute>
+            </item>
+            <item>
+              <attribute name="label" translatable="yes">_Descending</attribute>
+              <attribute name="action">win.CommonSortEvents</attribute>
+              <attribute name="target">descending</attribute>
+            </item>
+          </section>
+        </submenu>
+      </section>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">Zoom _In</attribute>
+          <attribute name="accel">&lt;Primary&gt;plus</attribute>
+          <attribute name="action">win.IncreaseSize</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">Zoom _Out</attribute>
+          <attribute name="accel">&lt;Primary&gt;minus</attribute>
+          <attribute name="action">win.DecreaseSize</attribute>
+        </item>
+      </section>
+      <section>
+      <attribute name="id">ViewExtrasFullscreenSlideshowPlaceholder</attribute>
+      </section>
+    </submenu>
+    <submenu>
+      <attribute name="label" translatable="yes">_Photos</attribute>
+      <section>
+      <attribute name="id">PhotosExtrasEditsPlaceholder</attribute>
+      </section>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">Toggle _Flag</attribute>
+          <attribute name="accel">&lt;Primary&gt;g</attribute>
+          <attribute name="action">win.Flag</attribute>
+        </item>
+        <submenu>
+          <attribute name="label" translatable="yes">_Set Rating</attribute>
+          <section>
+            <item>
+              <attribute name="label" translatable="no">★★★★★</attribute>
+              <attribute name="accel">5</attribute>
+              <attribute name="action">win.RateFive</attribute>
+            </item>
+            <item>
+              <attribute name="label" translatable="no">★★★★</attribute>
+              <attribute name="accel">4</attribute>
+              <attribute name="action">win.RateFour</attribute>
+            </item>
+            <item>
+              <attribute name="label" translatable="no">★★★</attribute>
+              <attribute name="accel">3</attribute>
+              <attribute name="action">win.RateThree</attribute>
+            </item>
+            <item>
+              <attribute name="label" translatable="no">★★</attribute>
+              <attribute name="accel">2</attribute>
+              <attribute name="action">win.RateTwo</attribute>
+            </item>
+            <item>
+              <attribute name="label" translatable="no">★</attribute>
+              <attribute name="accel">1</attribute>
+              <attribute name="action">win.RateOne</attribute>
+            </item>
+            <item>
+              <attribute name="label" translatable="yes">_Unrated</attribute>
+              <attribute name="accel">0</attribute>
+              <attribute name="action">win.RateUnrated</attribute>
+            </item>
+            <item>
+              <attribute name="label" translatable="yes">_Rejected</attribute>
+              <attribute name="accel">9</attribute>
+              <attribute name="action">win.RateRejected</attribute>
+            </item>
+          </section>
+          <section>
+            <item>
+              <attribute name="label" translatable="yes">_Increase</attribute>
+              <attribute name="accel">greater</attribute>
+              <attribute name="action">win.IncreaseRating</attribute>
+            </item>
+            <item>
+              <attribute name="label" translatable="yes">_Decrease</attribute>
+              <attribute name="accel">less</attribute>
+              <attribute name="action">win.DecreaseRating</attribute>
+            </item>
+          </section>
+        </submenu>
+      </section>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">Edit _Title…</attribute>
+          <attribute name="action">win.EditTitle</attribute>
+          <attribute name="accel">F2</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">Edit _Comment…</attribute>
+          <attribute name="action">win.EditComment</attribute>
+          <attribute name="accel">F3</attribute>
+        </item>
+      <attribute name="id">PhotosExtrasDateTimePlaceholder</attribute>
+      </section>
+      <section>
+        <submenu>
+          <attribute name="label" translatable="yes">_Developer</attribute>
+          <section>
+            <item>
+              <attribute name="label" translatable="yes">Shotwell</attribute>
+              <attribute name="action">win.RawDeveloper</attribute>
+              <attribute name="target">Shotwell</attribute>
+            </item>
+            <item>
+              <attribute name="label" translatable="yes">Camera</attribute>
+              <attribute name="action">win.RawDeveloper</attribute>
+              <attribute name="target">Camera</attribute>
+            </item>
+          </section>
+        </submenu>
+      </section>
+      <section>
+      <attribute name="id">PhotosExtrasExternalsPlaceholder</attribute>
+      </section>
+    </submenu>
+    <submenu>
+      <attribute name="label" translatable="yes">Even_ts</attribute>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">_New Event</attribute>
+          <attribute name="accel">&lt;Primary&gt;n</attribute>
+          <attribute name="action">win.NewEvent</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">View Eve_nt for Photo</attribute>
+          <attribute name="action">win.CommonJumpToEvent</attribute>
+        </item>
+      </section>
+    </submenu>
+    <submenu>
+      <attribute name="label" translatable="yes">Ta_gs</attribute>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">Add _Tags…</attribute>
+          <attribute name="accel">&lt;Primary&gt;t</attribute>
+          <attribute name="action">win.AddTags</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">Modif_y Tags…</attribute>
+          <attribute name="accel">&lt;Primary&gt;m</attribute>
+          <attribute name="action">win.ModifyTags</attribute>
+        </item>
+      </section>
+    </submenu>
+    <!-- Faces menu goes here FacesMenuPlaceholder -->
+    <submenu>
+      <attribute name="label" translatable="yes">_Help</attribute>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">_Help</attribute>
+          <attribute name="accel">F1</attribute>
+          <attribute name="action">win.CommonHelpContents</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">_Frequently Asked Questions</attribute>
+          <attribute name="action">win.CommonHelpFAQ</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">_Report a Problem…</attribute>
+          <attribute name="action">win.CommonHelpReportProblem</attribute>
+        </item>
+      </section>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">_About</attribute>
+          <attribute name="action">win.CommonAbout</attribute>
+        </item>
+      </section>
+    </submenu>
+  </menu>
+</interface>
diff --git a/data/ui/message_pane.ui b/data/ui/message_pane.ui
new file mode 100644
index 0000000..165a01f
--- /dev/null
+++ b/data/ui/message_pane.ui
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.22.1 -->
+<interface>
+  <requires lib="gtk+" version="3.22"/>
+  <template class="PageMessagePane" parent="GtkBox">
+    <property name="visible">True</property>
+    <property name="can_focus">False</property>
+    <property name="valign">center</property>
+    <property name="margin_top">12</property>
+    <property name="margin_bottom">12</property>
+    <property name="orientation">vertical</property>
+    <child>
+      <object class="GtkImage" id="icon_image">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="halign">center</property>
+        <property name="margin_bottom">12</property>
+        <property name="pixel_size">128</property>
+        <property name="icon_name">image-x-generic-symbolic</property>
+        <property name="icon_size">0</property>
+      </object>
+      <packing>
+        <property name="expand">False</property>
+        <property name="fill">False</property>
+        <property name="position">0</property>
+      </packing>
+    </child>
+    <child>
+      <object class="GtkLabel" id="label">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="label" translatable="no">label</property>
+        <attributes>
+          <attribute name="scale" value="1.3999999999999999"/>
+        </attributes>
+      </object>
+      <packing>
+        <property name="expand">False</property>
+        <property name="fill">True</property>
+        <property name="position">1</property>
+      </packing>
+    </child>
+    <style>
+      <class name="dim-label"/>
+    </style>
+  </template>
+</interface>
diff --git a/data/ui/multitextentrydialog.ui b/data/ui/multitextentrydialog.ui
new file mode 100644
index 0000000..6477129
--- /dev/null
+++ b/data/ui/multitextentrydialog.ui
@@ -0,0 +1,91 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.20.0 -->
+<interface domain="shotwell">
+  <requires lib="gtk+" version="3.18"/>
+  <object class="GtkTextBuffer" id="textbuffer1"/>
+  <template class="MultiTextEntryDialog" parent="GtkDialog">
+    <property name="can_focus">False</property>
+    <property name="default_width">500</property>
+    <property name="default_height">300</property>
+    <property name="type_hint">normal</property>
+    <child internal-child="vbox">
+      <object class="GtkBox" id="dialog-vbox4">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="hexpand">True</property>
+        <property name="vexpand">True</property>
+        <property name="orientation">vertical</property>
+        <property name="spacing">6</property>
+        <child internal-child="action_area">
+          <object class="GtkButtonBox">
+            <property name="can_focus">False</property>
+            <property name="layout_style">end</property>
+            <child>
+              <object class="GtkButton" id="cancel_button">
+                <property name="label" translatable="yes">_Cancel</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="can_default">True</property>
+                <property name="receives_default">True</property>
+                <property name="use_underline">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkButton" id="ok_button">
+                <property name="label" translatable="yes">_OK</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="can_default">True</property>
+                <property name="has_default">True</property>
+                <property name="receives_default">True</property>
+                <property name="use_underline">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">False</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkScrolledWindow" id="scrolledwindow1">
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="shadow_type">in</property>
+            <child>
+              <object class="GtkTextView" id="entry">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="hexpand">True</property>
+                <property name="vexpand">True</property>
+                <property name="wrap_mode">word</property>
+                <property name="buffer">textbuffer1</property>
+                <property name="accepts_tab">False</property>
+              </object>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+    <action-widgets>
+      <action-widget response="-6">cancel_button</action-widget>
+      <action-widget response="-5">ok_button</action-widget>
+    </action-widgets>
+  </template>
+</interface>
diff --git a/data/ui/offline.ui b/data/ui/offline.ui
new file mode 100644
index 0000000..3daefca
--- /dev/null
+++ b/data/ui/offline.ui
@@ -0,0 +1,249 @@
+<?xml version="1.0"?>
+<interface domain="shotwell">
+  <menu id="MenuBar">
+    <submenu>
+      <attribute name="label" translatable="yes">_File</attribute>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">_Import From Folder…</attribute>
+          <attribute name="accel">&lt;Primary&gt;i</attribute>
+          <attribute name="action">win.CommonFileImport</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">Import From _Application…</attribute>
+          <attribute name="action">win.ExternalLibraryImport</attribute>
+        </item>
+      </section>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">Empty T_rash</attribute>
+          <attribute name="action">win.CommonEmptyTrash</attribute>
+        </item>
+      </section>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">_Quit</attribute>
+          <attribute name="accel">&lt;Primary&gt;q</attribute>
+          <attribute name="action">win.CommonQuit</attribute>
+        </item>
+      </section>
+    </submenu>
+    <submenu>
+      <attribute name="label" translatable="yes">_Edit</attribute>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">_Undo</attribute>
+          <attribute name="accel">&lt;Primary&gt;z</attribute>
+          <attribute name="action">win.CommonUndo</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">_Redo</attribute>
+          <attribute name="accel">&lt;Primary&gt;&lt;Shift&gt;z</attribute>
+          <attribute name="action">win.CommonRedo</attribute>
+        </item>
+      </section>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">_Find</attribute>
+          <attribute name="action">win.CommonFind</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">Ne_w Saved Search…</attribute>
+          <attribute name="accel">&lt;Primary&gt;s</attribute>
+          <attribute name="action">win.CommonNewSearch</attribute>
+        </item>
+      </section>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">R_emove From Library</attribute>
+          <attribute name="accel">Delete</attribute>
+          <attribute name="action">win.RemoveFromLibrary</attribute>
+        </item>
+      </section>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">Select _All</attribute>
+          <attribute name="accel">&lt;Primary&gt;a</attribute>
+          <attribute name="action">win.CommonSelectAll</attribute>
+        </item>
+      </section>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">_Preferences</attribute>
+          <attribute name="action">win.CommonPreferences</attribute>
+        </item>
+      </section>
+    </submenu>
+    <submenu>
+      <attribute name="label" translatable="yes">_View</attribute>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">_Basic Information</attribute>
+          <attribute name="accel">&lt;Primary&gt;&lt;Shift&gt;i</attribute>
+          <attribute name="action">win.CommonDisplayBasicProperties</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">E_xtended Information</attribute>
+          <attribute name="accel">&lt;Primary&gt;&lt;Shift&gt;x</attribute>
+          <attribute name="action">win.CommonDisplayExtendedProperties</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">_Search Bar</attribute>
+          <attribute name="accel">F8</attribute>
+          <attribute name="action">win.CommonDisplaySearchbar</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">S_idebar</attribute>
+          <attribute name="accel">F9</attribute>
+          <attribute name="action">win.CommonDisplaySidebar</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">T_oolbar</attribute>
+          <attribute name="accel">&lt;Primary&gt;F9</attribute>
+          <attribute name="action">win.CommonDisplayToolbar</attribute>
+        </item>
+      </section>
+      <section>
+        <submenu>
+          <attribute name="label" translatable="yes">_Filter Photos</attribute>
+          <section>
+            <item>
+              <attribute name="label" translatable="no">★★★★★</attribute>
+              <attribute name="action">win.display.rating</attribute>
+              <attribute name="target">7</attribute>
+              <attribute name="accel">&lt;Primary&gt;5</attribute>
+            </item>
+            <item>
+              <attribute name="label" translatable="no">★★★★</attribute>
+              <attribute name="action">win.display.rating</attribute>
+              <attribute name="target">6</attribute>
+              <attribute name="accel">&lt;Primary&gt;4</attribute>
+            </item>
+            <item>
+              <attribute name="label" translatable="no">★★★</attribute>
+              <attribute name="action">win.display.rating</attribute>
+              <attribute name="target">5</attribute>
+              <attribute name="accel">&lt;Primary&gt;3</attribute>
+            </item>
+            <item>
+              <attribute name="label" translatable="no">★★</attribute>
+              <attribute name="action">win.display.rating</attribute>
+              <attribute name="target">4</attribute>
+              <attribute name="accel">&lt;Primary&gt;2</attribute>
+            </item>
+            <item>
+              <attribute name="label" translatable="no">★</attribute>
+              <attribute name="action">win.display.rating</attribute>
+              <attribute name="target">3</attribute>
+              <attribute name="accel">&lt;Primary&gt;1</attribute>
+            </item>
+            <item>
+              <attribute name="label" translatable="yes">_All Photos</attribute>
+              <attribute name="action">win.display.rating</attribute>
+              <attribute name="target">2</attribute>
+              <attribute name="accel">&lt;Primary&gt;0</attribute>
+            </item>
+            <item>
+              <attribute name="label" translatable="yes">All + _Rejected</attribute>
+              <attribute name="action">win.display.rating</attribute>
+              <attribute name="target">1</attribute>
+              <attribute name="accel">&lt;Primary&gt;9</attribute>
+            </item>
+            <item>
+              <attribute name="label" translatable="yes">Rejected _Only</attribute>
+              <attribute name="action">win.display.rating</attribute>
+              <attribute name="target">8</attribute>
+              <attribute name="accel">&lt;Primary&gt;8</attribute>
+            </item>
+          </section>
+        </submenu>
+      </section>
+      <section>
+        <submenu>
+          <attribute name="label" translatable="yes">Sort _Events</attribute>
+          <section>
+            <item>
+              <attribute name="label" translatable="yes">_Ascending</attribute>
+              <attribute name="action">win.CommonSortEvents</attribute>
+              <attribute name="target">ascending</attribute>
+            </item>
+            <item>
+              <attribute name="label" translatable="yes">D_escending</attribute>
+              <attribute name="action">win.CommonSortEvents</attribute>
+              <attribute name="target">descending</attribute>
+            </item>
+          </section>
+        </submenu>
+      </section>
+    </submenu>
+    <submenu>
+      <attribute name="label" translatable="yes">_Help</attribute>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">_Help</attribute>
+          <attribute name="accel">F1</attribute>
+          <attribute name="action">win.CommonHelpContents</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">_Frequently Asked Questions</attribute>
+          <attribute name="action">win.CommonHelpFAQ</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">_Report a Problem…</attribute>
+          <attribute name="action">win.CommonHelpReportProblem</attribute>
+        </item>
+      </section>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">_About</attribute>
+          <attribute name="action">win.CommonAbout</attribute>
+        </item>
+      </section>
+    </submenu>
+  </menu>
+  <menu id="OfflineContextMenu">
+    <section>
+      <item>
+        <attribute name="label" translatable="yes">R_emove From Library</attribute>
+        <attribute name="accel">Delete</attribute>
+        <attribute name="action">win.RemoveFromLibrary</attribute>
+      </item>
+    </section>
+  </menu>
+  <object class="GtkToolbar" id="OfflineToolbar">
+    <property name="visible">True</property>
+    <property name="can_focus">False</property>
+    <property name="toolbar_style">both-horiz</property>
+    <child>
+      <object class="GtkToolButton" id="ToolRemoveFromLibrary">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="tooltip_text" translatable="yes">Remove the selected photos from the library</property>
+        <property name="is_important">True</property>
+        <property name="action_name">win.RemoveFromLibrary</property>
+        <property name="label" translatable="yes">R_emove From Library</property>
+        <property name="use_underline">True</property>
+      </object>
+      <packing>
+        <property name="expand">False</property>
+        <property name="homogeneous">True</property>
+      </packing>
+    </child>
+    <child>
+      <object class="GtkToolButton" id="ToolFind">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="tooltip_text" translatable="yes">Find an image by typing text that appears in its name or tags</property>
+        <property name="is_important">True</property>
+        <property name="action_name">win.CommonDisplaySearchbar</property>
+        <property name="label" translatable="yes">Find</property>
+        <property name="use_underline">True</property>
+        <property name="icon_name">edit-find-symbolic</property>
+      </object>
+      <packing>
+        <property name="expand">False</property>
+        <property name="homogeneous">True</property>
+      </packing>
+    </child>
+  </object>
+</interface>
diff --git a/data/ui/photo.ui b/data/ui/photo.ui
new file mode 100644
index 0000000..78a2fb5
--- /dev/null
+++ b/data/ui/photo.ui
@@ -0,0 +1,415 @@
+<?xml version="1.0"?>
+<interface domain="shotwell">
+  <menu id="MenuBar">
+    <submenu>
+      <attribute name="label" translatable="yes">_File</attribute>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">_Import From Folder…</attribute>
+          <attribute name="accel">&lt;Primary&gt;i</attribute>
+          <attribute name="action">win.CommonFileImport</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">Import From _Application…</attribute>
+          <attribute name="action">win.ExternalLibraryImport</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">_Export…</attribute>
+          <attribute name="accel">&lt;Primary&gt;&lt;Shift&gt;e</attribute>
+          <attribute name="action">win.Export</attribute>
+        </item>
+      </section>
+      <section>
+      <attribute name="id">PrintPlaceholder</attribute>
+      </section>
+      <section>
+        <attribute name="id">PublishPlaceholder</attribute>
+      </section>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">Send _To…</attribute>
+          <attribute name="action">win.SendTo</attribute>
+        </item>
+        <attribute name="id">SetBackgroundPlaceholder</attribute>
+      </section>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">Show in File Mana_ger</attribute>
+          <attribute name="accel">&lt;Primary&gt;&lt;Shift&gt;m</attribute>
+          <attribute name="action">win.CommonJumpToFile</attribute>
+        </item>
+      </section>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">Empty T_rash</attribute>
+          <attribute name="action">win.CommonEmptyTrash</attribute>
+        </item>
+      </section>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">_Quit</attribute>
+          <attribute name="accel">&lt;Primary&gt;q</attribute>
+          <attribute name="action">win.CommonQuit</attribute>
+        </item>
+      </section>
+    </submenu>
+    <submenu>
+      <attribute name="label" translatable="yes">_Edit</attribute>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">_Undo</attribute>
+          <attribute name="accel">&lt;Primary&gt;z</attribute>
+          <attribute name="action">win.CommonUndo</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">_Redo</attribute>
+          <attribute name="accel">&lt;Primary&gt;&lt;Shift&gt;z</attribute>
+          <attribute name="action">win.CommonRedo</attribute>
+        </item>
+      </section>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">Ne_w Saved Search…</attribute>
+          <attribute name="accel">&lt;Primary&gt;s</attribute>
+          <attribute name="action">win.CommonNewSearch</attribute>
+        </item>
+      </section>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">R_emove From Library</attribute>
+          <attribute name="accel">&lt;Shift&gt;Delete</attribute>
+          <attribute name="action">win.RemoveFromLibrary</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">_Move to Trash</attribute>
+          <attribute name="accel">Delete</attribute>
+          <attribute name="action">win.MoveToTrash</attribute>
+        </item>
+      </section>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">_Preferences</attribute>
+          <attribute name="action">win.CommonPreferences</attribute>
+        </item>
+      </section>
+    </submenu>
+    <submenu>
+      <attribute name="label" translatable="yes">_View</attribute>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">_Basic Information</attribute>
+          <attribute name="accel">&lt;Primary&gt;&lt;Shift&gt;i</attribute>
+          <attribute name="action">win.CommonDisplayBasicProperties</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">E_xtended Information</attribute>
+          <attribute name="accel">&lt;Primary&gt;&lt;Shift&gt;x</attribute>
+          <attribute name="action">win.CommonDisplayExtendedProperties</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">S_idebar</attribute>
+          <attribute name="accel">F9</attribute>
+          <attribute name="action">win.CommonDisplaySidebar</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">T_oolbar</attribute>
+          <attribute name="accel">&lt;Primary&gt;F9</attribute>
+          <attribute name="action">win.CommonDisplayToolbar</attribute>
+        </item>
+      </section>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">_Ratings</attribute>
+          <attribute name="accel">&lt;Primary&gt;&lt;Shift&gt;n</attribute>
+          <attribute name="action">win.ViewRatings</attribute>
+        </item>
+      </section>
+      <section>
+        <submenu>
+          <attribute name="label" translatable="yes">Sort _Events</attribute>
+          <section>
+            <item>
+              <attribute name="label" translatable="yes">_Ascending</attribute>
+              <attribute name="action">win.CommonSortEvents</attribute>
+              <attribute name="target">ascending</attribute>
+            </item>
+            <item>
+              <attribute name="label" translatable="yes">_Descending</attribute>
+              <attribute name="action">win.CommonSortEvents</attribute>
+              <attribute name="target">descending</attribute>
+            </item>
+          </section>
+        </submenu>
+      </section>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">Zoom _In</attribute>
+          <attribute name="accel">&lt;Primary&gt;plus</attribute>
+          <attribute name="action">win.IncreaseSize</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">Zoom _Out</attribute>
+          <attribute name="accel">&lt;Primary&gt;minus</attribute>
+          <attribute name="action">win.DecreaseSize</attribute>
+        </item>
+      </section>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">Fit to _Page</attribute>
+          <attribute name="accel">&lt;Primary&gt;0</attribute>
+          <attribute name="action">win.ZoomFit</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">Zoom _100%</attribute>
+          <attribute name="accel">&lt;Primary&gt;1</attribute>
+          <attribute name="action">win.Zoom100</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">Zoom _200%</attribute>
+          <attribute name="accel">&lt;Primary&gt;2</attribute>
+          <attribute name="action">win.Zoom200</attribute>
+        </item>
+      </section>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">Fulls_creen</attribute>
+          <attribute name="accel">F11</attribute>
+          <attribute name="action">win.CommonFullscreen</attribute>
+        </item>
+      </section>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">S_lideshow</attribute>
+          <attribute name="accel">F5</attribute>
+          <attribute name="action">win.Slideshow</attribute>
+        </item>
+      </section>
+    </submenu>
+    <submenu>
+      <attribute name="label" translatable="yes">_Photo</attribute>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">_Previous Photo</attribute>
+          <attribute name="action">win.PrevPhoto</attribute>
+          <attribute name="accel">Left</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">_Next Photo</attribute>
+          <attribute name="accel">Right</attribute>
+          <attribute name="action">win.NextPhoto</attribute>
+        </item>
+      </section>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">Rotate _Right</attribute>
+          <attribute name="accel">&lt;Primary&gt;r</attribute>
+          <attribute name="action">win.RotateClockwise</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">Rotate _Left</attribute>
+          <attribute name="accel">&lt;Primary&gt;&lt;Shift&gt;r</attribute>
+          <attribute name="action">win.RotateCounterclockwise</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">Flip Hori_zontally</attribute>
+          <attribute name="action">win.FlipHorizontally</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">Flip Verti_cally</attribute>
+          <attribute name="action">win.FlipVertically</attribute>
+        </item>
+      </section>
+      <section>
+        <submenu>
+          <attribute name="label" translatable="yes">T_ools</attribute>
+          <section>
+            <item>
+              <attribute name="label" translatable="yes">_Enhance</attribute>
+              <attribute name="accel">&lt;Primary&gt;e</attribute>
+              <attribute name="action">win.Enhance</attribute>
+            </item>
+            <item>
+              <attribute name="label" translatable="yes">_Crop</attribute>
+              <attribute name="accel">&lt;Primary&gt;o</attribute>
+              <attribute name="action">win.Crop</attribute>
+            </item>
+            <item>
+              <attribute name="label" translatable="yes">_Straighten</attribute>
+              <attribute name="accel">&lt;Primary&gt;a</attribute>
+              <attribute name="action">win.Straighten</attribute>
+            </item>
+            <item>
+              <attribute name="label" translatable="yes">_Red-eye</attribute>
+              <attribute name="accel">&lt;Primary&gt;y</attribute>
+              <attribute name="action">win.RedEye</attribute>
+            </item>
+            <item>
+              <attribute name="label" translatable="yes">_Adjust</attribute>
+              <attribute name="accel">&lt;Primary&gt;d</attribute>
+              <attribute name="action">win.Adjust</attribute>
+            </item>
+          </section>
+        </submenu>
+        <item>
+          <attribute name="label" translatable="yes">Re_vert to Original</attribute>
+          <attribute name="action">win.Revert</attribute>
+        </item>
+      </section>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">_Copy Color Adjustments</attribute>
+          <attribute name="accel">&lt;Primary&gt;&lt;Shift&gt;c</attribute>
+          <attribute name="action">win.CopyColorAdjustments</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">_Paste Color Adjustments</attribute>
+          <attribute name="accel">&lt;Primary&gt;&lt;Shift&gt;v</attribute>
+          <attribute name="action">win.PasteColorAdjustments</attribute>
+        </item>
+      </section>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">Toggle _Flag</attribute>
+          <attribute name="accel">&lt;Primary&gt;g</attribute>
+          <attribute name="action">win.Flag</attribute>
+        </item>
+        <submenu>
+          <attribute name="label" translatable="yes">_Set Rating</attribute>
+          <section>
+            <item>
+              <attribute name="label" translatable="no">★★★★★</attribute>
+              <attribute name="accel">5</attribute>
+              <attribute name="action">win.RateFive</attribute>
+            </item>
+            <item>
+              <attribute name="label" translatable="no">★★★★</attribute>
+              <attribute name="accel">4</attribute>
+              <attribute name="action">win.RateFour</attribute>
+            </item>
+            <item>
+              <attribute name="label" translatable="no">★★★</attribute>
+              <attribute name="accel">3</attribute>
+              <attribute name="action">win.RateThree</attribute>
+            </item>
+            <item>
+              <attribute name="label" translatable="no">★★</attribute>
+              <attribute name="accel">2</attribute>
+              <attribute name="action">win.RateTwo</attribute>
+            </item>
+            <item>
+              <attribute name="label" translatable="no">★</attribute>
+              <attribute name="accel">1</attribute>
+              <attribute name="action">win.RateOne</attribute>
+            </item>
+            <item>
+              <attribute name="label" translatable="yes">_Unrated</attribute>
+              <attribute name="accel">0</attribute>
+              <attribute name="action">win.RateUnrated</attribute>
+            </item>
+            <item>
+              <attribute name="label" translatable="yes">_Rejected</attribute>
+              <attribute name="accel">9</attribute>
+              <attribute name="action">win.RateRejected</attribute>
+            </item>
+          </section>
+          <section>
+            <item>
+              <attribute name="label" translatable="yes">_Increase</attribute>
+              <attribute name="accel">greater</attribute>
+              <attribute name="action">win.IncreaseRating</attribute>
+            </item>
+            <item>
+              <attribute name="label" translatable="yes">_Decrease</attribute>
+              <attribute name="accel">less</attribute>
+              <attribute name="action">win.DecreaseRating</attribute>
+            </item>
+          </section>
+        </submenu>
+      </section>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">Edit _Title…</attribute>
+          <attribute name="action">win.EditTitle</attribute>
+          <attribute name="accel">F2</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">Edit _Comment…</attribute>
+          <attribute name="action">win.EditComment</attribute>
+          <attribute name="accel">F3</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">_Adjust Date and Time…</attribute>
+          <attribute name="accel">F4</attribute>
+          <attribute name="action">win.AdjustDateTime</attribute>
+        </item>
+      </section>
+      <section>
+        <submenu>
+          <attribute name="label" translatable="yes">_Developer</attribute>
+          <section>
+            <item>
+              <attribute name="label" translatable="yes">Shotwell</attribute>
+              <attribute name="action">win.RawDeveloper</attribute>
+              <attribute name="target">Shotwell</attribute>
+            </item>
+            <item>
+              <attribute name="label" translatable="yes">Camera</attribute>
+              <attribute name="action">win.RawDeveloper</attribute>
+              <attribute name="target">Camera</attribute>
+            </item>
+          </section>
+        </submenu>
+      </section>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">Open With E_xternal Editor</attribute>
+          <attribute name="accel">&lt;Primary&gt;Return</attribute>
+          <attribute name="action">win.ExternalEdit</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">Open With RA_W Editor</attribute>
+          <attribute name="action">win.ExternalEditRAW</attribute>
+        </item>
+      </section>
+    </submenu>
+    <submenu>
+      <attribute name="label" translatable="yes">Ta_gs</attribute>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">Add _Tags…</attribute>
+          <attribute name="accel">&lt;Primary&gt;t</attribute>
+          <attribute name="action">win.AddTags</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">Modif_y Tags…</attribute>
+          <attribute name="accel">&lt;Primary&gt;m</attribute>
+          <attribute name="action">win.ModifyTags</attribute>
+        </item>
+      </section>
+    </submenu>
+    <submenu>
+      <attribute name="label" translatable="yes">_Help</attribute>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">_Help</attribute>
+          <attribute name="accel">F1</attribute>
+          <attribute name="action">win.CommonHelpContents</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">_Frequently Asked Questions</attribute>
+          <attribute name="action">win.CommonHelpFAQ</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">_Report a Problem…</attribute>
+          <attribute name="action">win.CommonHelpReportProblem</attribute>
+        </item>
+      </section>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">_About</attribute>
+          <attribute name="action">win.CommonAbout</attribute>
+        </item>
+      </section>
+    </submenu>
+  </menu>
+</interface>
diff --git a/data/ui/photo_context.ui b/data/ui/photo_context.ui
new file mode 100644
index 0000000..00019b8
--- /dev/null
+++ b/data/ui/photo_context.ui
@@ -0,0 +1,147 @@
+<?xml version="1.0"?>
+<interface domain="shotwell">
+  <menu id="PhotoContextMenu">
+    <section>
+      <item>
+        <attribute name="label" translatable="yes">_Enhance</attribute>
+        <attribute name="accel">&lt;Primary&gt;e</attribute>
+        <attribute name="action">win.Enhance</attribute>
+      </item>
+      <item>
+        <attribute name="label" translatable="yes">Re_vert to Original</attribute>
+        <attribute name="action">win.Revert</attribute>
+      </item>
+    </section>
+    <section>
+      <item>
+        <attribute name="label" translatable="yes">_Add Tags…</attribute>
+        <attribute name="accel">&lt;Primary&gt;t</attribute>
+        <attribute name="action">win.AddTags</attribute>
+      </item>
+      <item>
+        <attribute name="label" translatable="yes">Modif_y Tags…</attribute>
+        <attribute name="accel">&lt;Primary&gt;m</attribute>
+        <attribute name="action">win.ModifyTags</attribute>
+      </item>
+      <attribute name="id">ContextTagsPlaceholder</attribute>
+    </section>
+    <section>
+      <item>
+        <attribute name="label" translatable="yes">Toggle _Flag</attribute>
+        <attribute name="accel">&lt;Primary&gt;g</attribute>
+        <attribute name="action">win.Flag</attribute>
+      </item>
+      <submenu>
+        <attribute name="label" translatable="yes">_Set Rating</attribute>
+        <section>
+          <item>
+            <attribute name="label" translatable="no">★★★★★</attribute>
+            <attribute name="accel">5</attribute>
+            <attribute name="action">win.RateFive</attribute>
+          </item>
+          <item>
+            <attribute name="label" translatable="no">★★★★</attribute>
+            <attribute name="accel">4</attribute>
+            <attribute name="action">win.RateFour</attribute>
+          </item>
+          <item>
+            <attribute name="label" translatable="no">★★★</attribute>
+            <attribute name="accel">3</attribute>
+            <attribute name="action">win.RateThree</attribute>
+          </item>
+          <item>
+            <attribute name="label" translatable="no">★★</attribute>
+            <attribute name="accel">2</attribute>
+            <attribute name="action">win.RateTwo</attribute>
+          </item>
+          <item>
+            <attribute name="label" translatable="no">★</attribute>
+            <attribute name="accel">1</attribute>
+            <attribute name="action">win.RateOne</attribute>
+          </item>
+          <item>
+            <attribute name="label" translatable="yes">_Unrated</attribute>
+            <attribute name="accel">0</attribute>
+            <attribute name="action">win.RateUnrated</attribute>
+          </item>
+          <item>
+            <attribute name="label" translatable="yes">_Rejected</attribute>
+            <attribute name="accel">9</attribute>
+            <attribute name="action">win.RateRejected</attribute>
+          </item>
+        </section>
+        <section>
+          <item>
+            <attribute name="label" translatable="yes">_Increase</attribute>
+            <attribute name="accel">greater</attribute>
+            <attribute name="action">win.IncreaseRating</attribute>
+          </item>
+          <item>
+            <attribute name="label" translatable="yes">_Decrease</attribute>
+            <attribute name="accel">less</attribute>
+            <attribute name="action">win.DecreaseRating</attribute>
+          </item>
+        </section>
+      </submenu>
+
+      <submenu>
+        <attribute name="label" translatable="yes">_Developer</attribute>
+        <section>
+          <item>
+            <attribute name="label" translatable="yes">Shotwell</attribute>
+            <attribute name="action">win.RawDeveloper</attribute>
+            <attribute name="target">Shotwell</attribute>
+          </item>
+          <item>
+            <attribute name="label" translatable="yes">Camera</attribute>
+            <attribute name="action">win.RawDeveloper</attribute>
+            <attribute name="target">Camera</attribute>
+          </item>
+        </section>
+      </submenu>
+    </section>
+    <section>
+      <item>
+        <attribute name="label" translatable="yes">Edit _Title…</attribute>
+        <attribute name="action">win.EditTitle</attribute>
+        <attribute name="accel">F2</attribute>
+      </item>
+      <item>
+        <attribute name="label" translatable="yes">Edit _Comment…</attribute>
+        <attribute name="action">win.EditComment</attribute>
+        <attribute name="accel">F3</attribute>
+      </item>
+      <item>
+        <attribute name="label" translatable="yes">Open With E_xternal Editor</attribute>
+        <attribute name="accel">&lt;Primary&gt;Return</attribute>
+        <attribute name="action">win.ExternalEdit</attribute>
+      </item>
+      <item>
+        <attribute name="label" translatable="yes">Open With RA_W Editor</attribute>
+        <attribute name="action">win.ExternalEditRAW</attribute>
+      </item>
+    </section>
+    <section>
+      <item>
+        <attribute name="label" translatable="yes">View Eve_nt for Photo</attribute>
+        <attribute name="action">win.CommonJumpToEvent</attribute>
+      </item>
+      <item>
+        <attribute name="label" translatable="yes">Show in File Mana_ger</attribute>
+        <attribute name="accel">&lt;Primary&gt;&lt;Shift&gt;m</attribute>
+        <attribute name="action">win.CommonJumpToFile</attribute>
+      </item>
+      <item>
+        <attribute name="label" translatable="yes">Send T_o…</attribute>
+        <attribute name="action">win.SendTo</attribute>
+      </item>
+    </section>
+    <section>
+      <item>
+        <attribute name="label" translatable="yes">_Move to Trash</attribute>
+        <attribute name="accel">Delete</attribute>
+        <attribute name="action">win.MoveToTrash</attribute>
+      </item>
+    </section>
+  </menu>
+</interface>
diff --git a/data/ui/preferences_dialog.ui b/data/ui/preferences_dialog.ui
new file mode 100644
index 0000000..0699008
--- /dev/null
+++ b/data/ui/preferences_dialog.ui
@@ -0,0 +1,705 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.40.0 -->
+<interface domain="shotwell">
+  <requires lib="gtk+" version="3.18"/>
+  <template class="PreferencesDialog" parent="GtkDialog">
+    <property name="can-focus">False</property>
+    <property name="destroy-with-parent">True</property>
+    <property name="type-hint">dialog</property>
+    <property name="skip-taskbar-hint">True</property>
+    <child internal-child="vbox">
+      <object class="GtkBox" id="dialog-vbox3">
+        <property name="visible">True</property>
+        <property name="can-focus">False</property>
+        <property name="orientation">vertical</property>
+        <child internal-child="action_area">
+          <object class="GtkButtonBox">
+            <property name="can-focus">False</property>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">False</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkBox">
+            <property name="visible">True</property>
+            <property name="can-focus">False</property>
+            <child>
+              <object class="GtkStackSidebar">
+                <property name="visible">True</property>
+                <property name="can-focus">False</property>
+                <property name="stack">preferences_stack</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkSeparator">
+                <property name="visible">True</property>
+                <property name="can-focus">False</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkStack" id="preferences_stack">
+                <property name="visible">True</property>
+                <property name="can-focus">False</property>
+                <property name="margin-start">64</property>
+                <property name="margin-end">64</property>
+                <property name="margin-top">32</property>
+                <property name="margin-bottom">32</property>
+                <property name="transition-type">slide-up</property>
+                <child>
+                  <!-- n-columns=3 n-rows=15 -->
+                  <object class="GtkGrid" id="table1">
+                    <property name="visible">True</property>
+                    <property name="can-focus">False</property>
+                    <property name="margin-start">64</property>
+                    <property name="margin-end">64</property>
+                    <property name="hexpand">True</property>
+                    <property name="vexpand">True</property>
+                    <property name="border-width">6</property>
+                    <property name="row-spacing">4</property>
+                    <property name="column-spacing">8</property>
+                    <child>
+                      <object class="GtkFileChooserButton" id="library_dir_button">
+                        <property name="visible">True</property>
+                        <property name="can-focus">False</property>
+                        <property name="action">select-folder</property>
+                      </object>
+                      <packing>
+                        <property name="left-attach">1</property>
+                        <property name="top-attach">4</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkComboBoxText" id="default_raw_developer_combo">
+                        <property name="visible">True</property>
+                        <property name="can-focus">False</property>
+                      </object>
+                      <packing>
+                        <property name="left-attach">1</property>
+                        <property name="top-attach">14</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkLabel" id="library location">
+                        <property name="visible">True</property>
+                        <property name="can-focus">False</property>
+                        <property name="halign">start</property>
+                        <property name="margin-top">14</property>
+                        <property name="margin-bottom">3</property>
+                        <property name="hexpand">True</property>
+                        <property name="label" translatable="yes">Library Location</property>
+                        <attributes>
+                          <attribute name="weight" value="bold"/>
+                        </attributes>
+                      </object>
+                      <packing>
+                        <property name="left-attach">0</property>
+                        <property name="top-attach">3</property>
+                        <property name="width">2</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkLabel" id="label4">
+                        <property name="visible">True</property>
+                        <property name="can-focus">False</property>
+                        <property name="halign">start</property>
+                        <property name="label" translatable="yes">_Import photos to:</property>
+                        <property name="use-underline">True</property>
+                        <property name="mnemonic-widget">library_dir_button</property>
+                      </object>
+                      <packing>
+                        <property name="left-attach">0</property>
+                        <property name="top-attach">4</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkCheckButton" id="autoimport">
+                        <property name="label" translatable="yes">_Watch library directory for new files</property>
+                        <property name="visible">True</property>
+                        <property name="can-focus">True</property>
+                        <property name="receives-default">False</property>
+                        <property name="halign">start</property>
+                        <property name="use-underline">True</property>
+                        <property name="draw-indicator">True</property>
+                      </object>
+                      <packing>
+                        <property name="left-attach">0</property>
+                        <property name="top-attach">5</property>
+                        <property name="width">2</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkLabel" id="importing">
+                        <property name="visible">True</property>
+                        <property name="can-focus">False</property>
+                        <property name="halign">start</property>
+                        <property name="margin-top">14</property>
+                        <property name="margin-bottom">3</property>
+                        <property name="hexpand">True</property>
+                        <property name="label" translatable="yes">Importing</property>
+                        <attributes>
+                          <attribute name="weight" value="bold"/>
+                        </attributes>
+                      </object>
+                      <packing>
+                        <property name="left-attach">0</property>
+                        <property name="top-attach">6</property>
+                        <property name="width">2</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkLabel" id="dir_structure_label">
+                        <property name="visible">True</property>
+                        <property name="can-focus">False</property>
+                        <property name="halign">start</property>
+                        <property name="label" translatable="yes">_Directory structure:</property>
+                        <property name="use-underline">True</property>
+                        <property name="mnemonic-widget">dir_pattern_combo</property>
+                      </object>
+                      <packing>
+                        <property name="left-attach">0</property>
+                        <property name="top-attach">7</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkLabel" id="dir_pattern_example">
+                        <property name="visible">True</property>
+                        <property name="can-focus">False</property>
+                        <property name="halign">start</property>
+                        <property name="label" translatable="yes">Example:</property>
+                      </object>
+                      <packing>
+                        <property name="left-attach">0</property>
+                        <property name="top-attach">9</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkCheckButton" id="lowercase">
+                        <property name="label" translatable="yes">R_ename imported files to lowercase</property>
+                        <property name="visible">True</property>
+                        <property name="can-focus">True</property>
+                        <property name="receives-default">False</property>
+                        <property name="halign">start</property>
+                        <property name="use-underline">True</property>
+                        <property name="draw-indicator">True</property>
+                      </object>
+                      <packing>
+                        <property name="left-attach">0</property>
+                        <property name="top-attach">10</property>
+                        <property name="width">2</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkLabel" id="label10">
+                        <property name="visible">True</property>
+                        <property name="can-focus">False</property>
+                        <property name="halign">start</property>
+                        <property name="margin-top">14</property>
+                        <property name="margin-bottom">3</property>
+                        <property name="label" translatable="yes">Metadata</property>
+                        <attributes>
+                          <attribute name="weight" value="bold"/>
+                        </attributes>
+                      </object>
+                      <packing>
+                        <property name="left-attach">0</property>
+                        <property name="top-attach">11</property>
+                        <property name="width">2</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkCheckButton" id="write_metadata">
+                        <property name="label" translatable="yes">Write tags, titles, and other _metadata to photo files</property>
+                        <property name="visible">True</property>
+                        <property name="can-focus">True</property>
+                        <property name="receives-default">False</property>
+                        <property name="halign">start</property>
+                        <property name="use-underline">True</property>
+                        <property name="draw-indicator">True</property>
+                      </object>
+                      <packing>
+                        <property name="left-attach">0</property>
+                        <property name="top-attach">12</property>
+                        <property name="width">2</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkLabel" id="label3">
+                        <property name="visible">True</property>
+                        <property name="can-focus">False</property>
+                        <property name="halign">start</property>
+                        <property name="margin-top">14</property>
+                        <property name="margin-bottom">3</property>
+                        <property name="label" translatable="yes">RAW Developer</property>
+                        <attributes>
+                          <attribute name="weight" value="bold"/>
+                        </attributes>
+                      </object>
+                      <packing>
+                        <property name="left-attach">0</property>
+                        <property name="top-attach">13</property>
+                        <property name="width">2</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkLabel" id="label6">
+                        <property name="visible">True</property>
+                        <property name="can-focus">False</property>
+                        <property name="halign">start</property>
+                        <property name="label" translatable="yes">De_fault:</property>
+                        <property name="use-underline">True</property>
+                        <property name="mnemonic-widget">default_raw_developer_combo</property>
+                      </object>
+                      <packing>
+                        <property name="left-attach">0</property>
+                        <property name="top-attach">14</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkComboBoxText" id="dir_pattern_combo">
+                        <property name="visible">True</property>
+                        <property name="can-focus">False</property>
+                      </object>
+                      <packing>
+                        <property name="left-attach">1</property>
+                        <property name="top-attach">7</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkEntry" id="dir_pattern_entry">
+                        <property name="visible">True</property>
+                        <property name="can-focus">True</property>
+                        <property name="invisible-char">•</property>
+                        <property name="primary-icon-activatable">False</property>
+                        <property name="secondary-icon-activatable">False</property>
+                      </object>
+                      <packing>
+                        <property name="left-attach">1</property>
+                        <property name="top-attach">8</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkLabel" id="dynamic example">
+                        <property name="visible">True</property>
+                        <property name="can-focus">False</property>
+                        <property name="halign">start</property>
+                        <property name="hexpand">True</property>
+                      </object>
+                      <packing>
+                        <property name="left-attach">1</property>
+                        <property name="top-attach">9</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkBox" id="hbox1">
+                        <property name="visible">True</property>
+                        <property name="can-focus">False</property>
+                        <child>
+                          <object class="GtkLabel" id="patern">
+                            <property name="visible">True</property>
+                            <property name="can-focus">False</property>
+                            <property name="halign">start</property>
+                            <property name="label" translatable="yes">_Pattern:</property>
+                            <property name="use-underline">True</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">True</property>
+                            <property name="position">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkLabel" id="pattern_help">
+                            <property name="visible">True</property>
+                            <property name="can-focus">False</property>
+                            <attributes>
+                              <attribute name="underline" value="True"/>
+                            </attributes>
+                          </object>
+                          <packing>
+                            <property name="expand">True</property>
+                            <property name="fill">True</property>
+                            <property name="position">1</property>
+                          </packing>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="left-attach">0</property>
+                        <property name="top-attach">8</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkBox">
+                        <property name="visible">True</property>
+                        <property name="can-focus">False</property>
+                        <property name="orientation">vertical</property>
+                        <child>
+                          <object class="GtkRadioButton" id="transparent_checker_radio">
+                            <property name="label" translatable="yes">Checkered</property>
+                            <property name="visible">True</property>
+                            <property name="can-focus">True</property>
+                            <property name="receives-default">False</property>
+                            <property name="halign">start</property>
+                            <property name="draw-indicator">True</property>
+                            <property name="group">transparent_solid_radio</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">True</property>
+                            <property name="position">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkBox" id="box1">
+                            <property name="visible">True</property>
+                            <property name="can-focus">False</property>
+                            <child>
+                              <object class="GtkRadioButton" id="transparent_solid_radio">
+                                <property name="label" translatable="yes">Solid color</property>
+                                <property name="visible">True</property>
+                                <property name="can-focus">True</property>
+                                <property name="receives-default">False</property>
+                                <property name="halign">start</property>
+                                <property name="active">True</property>
+                                <property name="draw-indicator">True</property>
+                              </object>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="fill">True</property>
+                                <property name="position">0</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkColorButton" id="transparent_solid_color">
+                                <property name="visible">True</property>
+                                <property name="can-focus">True</property>
+                                <property name="receives-default">True</property>
+                              </object>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="fill">True</property>
+                                <property name="pack-type">end</property>
+                                <property name="position">1</property>
+                              </packing>
+                            </child>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">True</property>
+                            <property name="position">1</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkRadioButton" id="transparent_none_radio">
+                            <property name="label" translatable="yes">None</property>
+                            <property name="visible">True</property>
+                            <property name="can-focus">True</property>
+                            <property name="receives-default">False</property>
+                            <property name="halign">start</property>
+                            <property name="draw-indicator">True</property>
+                            <property name="group">transparent_solid_radio</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">True</property>
+                            <property name="position">2</property>
+                          </packing>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="left-attach">1</property>
+                        <property name="top-attach">2</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkLabel">
+                        <property name="visible">True</property>
+                        <property name="can-focus">False</property>
+                        <property name="tooltip-text" translatable="yes">When viewing images that are transparent, they will be drawn against this background.</property>
+                        <property name="halign">start</property>
+                        <property name="valign">start</property>
+                        <property name="label" translatable="yes">Transparent Background:</property>
+                      </object>
+                      <packing>
+                        <property name="left-attach">0</property>
+                        <property name="top-attach">2</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkLabel">
+                        <property name="visible">True</property>
+                        <property name="can-focus">False</property>
+                        <property name="halign">start</property>
+                        <property name="label" translatable="yes">Use dark theme</property>
+                      </object>
+                      <packing>
+                        <property name="left-attach">0</property>
+                        <property name="top-attach">1</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkSwitch" id="switch_dark">
+                        <property name="visible">True</property>
+                        <property name="can-focus">True</property>
+                        <property name="halign">start</property>
+                      </object>
+                      <packing>
+                        <property name="left-attach">1</property>
+                        <property name="top-attach">1</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkLabel" id="label5">
+                        <property name="visible">True</property>
+                        <property name="can-focus">False</property>
+                        <property name="halign">start</property>
+                        <property name="margin-bottom">3</property>
+                        <property name="hexpand">True</property>
+                        <property name="label" translatable="yes">Display</property>
+                        <attributes>
+                          <attribute name="weight" value="bold"/>
+                        </attributes>
+                      </object>
+                      <packing>
+                        <property name="left-attach">0</property>
+                        <property name="top-attach">0</property>
+                        <property name="width">2</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <placeholder/>
+                    </child>
+                    <child>
+                      <placeholder/>
+                    </child>
+                    <child>
+                      <placeholder/>
+                    </child>
+                    <child>
+                      <placeholder/>
+                    </child>
+                    <child>
+                      <placeholder/>
+                    </child>
+                    <child>
+                      <placeholder/>
+                    </child>
+                    <child>
+                      <placeholder/>
+                    </child>
+                    <child>
+                      <placeholder/>
+                    </child>
+                    <child>
+                      <placeholder/>
+                    </child>
+                    <child>
+                      <placeholder/>
+                    </child>
+                    <child>
+                      <placeholder/>
+                    </child>
+                    <child>
+                      <placeholder/>
+                    </child>
+                    <child>
+                      <placeholder/>
+                    </child>
+                    <child>
+                      <placeholder/>
+                    </child>
+                    <child>
+                      <placeholder/>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="name">library_stack</property>
+                    <property name="title" translatable="yes">Library</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkListBox">
+                    <property name="visible">True</property>
+                    <property name="can-focus">False</property>
+                    <property name="valign">start</property>
+                    <child>
+                      <object class="GtkListBoxRow">
+                        <property name="visible">True</property>
+                        <property name="can-focus">True</property>
+                        <property name="margin-start">6</property>
+                        <property name="margin-end">6</property>
+                        <property name="margin-top">6</property>
+                        <property name="margin-bottom">6</property>
+                        <child>
+                          <object class="GtkBox">
+                            <property name="visible">True</property>
+                            <property name="can-focus">False</property>
+                            <child>
+                              <object class="GtkLabel">
+                                <property name="visible">True</property>
+                                <property name="can-focus">False</property>
+                                <property name="label" translatable="yes">Photos</property>
+                              </object>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="fill">True</property>
+                                <property name="position">0</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkComboBox" id="photo_editor_combo">
+                                <property name="visible">True</property>
+                                <property name="can-focus">False</property>
+                                <style>
+                                  <class name="flat"/>
+                                </style>
+                              </object>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="fill">False</property>
+                                <property name="pack-type">end</property>
+                                <property name="position">1</property>
+                              </packing>
+                            </child>
+                          </object>
+                        </child>
+                      </object>
+                    </child>
+                    <child>
+                      <object class="GtkListBoxRow">
+                        <property name="visible">True</property>
+                        <property name="can-focus">True</property>
+                        <property name="margin-start">6</property>
+                        <property name="margin-end">6</property>
+                        <property name="margin-top">6</property>
+                        <property name="margin-bottom">6</property>
+                        <child>
+                          <object class="GtkBox">
+                            <property name="visible">True</property>
+                            <property name="can-focus">False</property>
+                            <child>
+                              <object class="GtkLabel">
+                                <property name="visible">True</property>
+                                <property name="can-focus">False</property>
+                                <property name="label" translatable="yes">RAW</property>
+                              </object>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="fill">True</property>
+                                <property name="position">0</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkComboBox" id="raw_editor_combo">
+                                <property name="visible">True</property>
+                                <property name="can-focus">False</property>
+                                <style>
+                                  <class name="flat"/>
+                                </style>
+                              </object>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="fill">True</property>
+                                <property name="pack-type">end</property>
+                                <property name="position">1</property>
+                              </packing>
+                            </child>
+                          </object>
+                        </child>
+                      </object>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="name">external_editors</property>
+                    <property name="title" translatable="yes">External Editors</property>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkBox">
+                    <property name="visible">True</property>
+                    <property name="can-focus">False</property>
+                    <property name="orientation">vertical</property>
+                    <child>
+                      <placeholder/>
+                    </child>
+                    <child>
+                      <placeholder/>
+                    </child>
+                    <child>
+                      <placeholder/>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="name">plugins</property>
+                    <property name="title" translatable="yes">Plugins</property>
+                    <property name="position">2</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkBox">
+                    <property name="visible">True</property>
+                    <property name="can-focus">False</property>
+                    <property name="orientation">vertical</property>
+                    <child>
+                      <placeholder/>
+                    </child>
+                    <child>
+                      <placeholder/>
+                    </child>
+                    <child>
+                      <placeholder/>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="name">profiles</property>
+                    <property name="title" translatable="yes">Profiles</property>
+                    <property name="position">3</property>
+                  </packing>
+                </child>
+              </object>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">2</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+    <child type="titlebar">
+      <object class="GtkHeaderBar" id="headerbar">
+        <property name="visible">True</property>
+        <property name="can-focus">False</property>
+        <property name="title" translatable="yes">Shotwell Preferences</property>
+        <property name="show-close-button">True</property>
+      </object>
+    </child>
+  </template>
+  <object class="GtkSizeGroup">
+    <property name="mode">vertical</property>
+    <widgets>
+      <widget name="transparent_checker_radio"/>
+      <widget name="box1"/>
+      <widget name="transparent_none_radio"/>
+    </widgets>
+  </object>
+</interface>
diff --git a/data/ui/printing_widget.ui b/data/ui/printing_widget.ui
new file mode 100644
index 0000000..86f215d
--- /dev/null
+++ b/data/ui/printing_widget.ui
@@ -0,0 +1,339 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.20.0 -->
+<interface domain="shotwell">
+  <requires lib="gtk+" version="3.18"/>
+  <template class="CustomPrintTab" parent="GtkBox">
+    <property name="visible">True</property>
+    <property name="can_focus">False</property>
+    <property name="margin_left">12</property>
+    <property name="margin_right">12</property>
+    <property name="margin_top">12</property>
+    <property name="margin_bottom">12</property>
+    <property name="orientation">vertical</property>
+    <child>
+      <object class="GtkLabel" id="lbl_PrintedImageSize">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="halign">start</property>
+        <property name="label" translatable="yes">&lt;b&gt;Printed Image Size&lt;/b&gt;</property>
+        <property name="use_markup">True</property>
+      </object>
+      <packing>
+        <property name="expand">False</property>
+        <property name="fill">True</property>
+        <property name="position">0</property>
+      </packing>
+    </child>
+    <child>
+      <object class="GtkGrid" id="box2">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="margin_left">12</property>
+        <property name="margin_top">2</property>
+        <property name="row_spacing">6</property>
+        <property name="column_spacing">6</property>
+        <property name="row_homogeneous">True</property>
+        <child>
+          <object class="GtkRadioButton" id="standard_size_radio">
+            <property name="label" translatable="yes">Use a _standard size:</property>
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="receives_default">False</property>
+            <property name="halign">start</property>
+            <property name="use_underline">True</property>
+            <property name="active">True</property>
+            <property name="draw_indicator">True</property>
+            <property name="group">custom_size_radio</property>
+          </object>
+          <packing>
+            <property name="left_attach">0</property>
+            <property name="top_attach">0</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkComboBoxText" id="standard_sizes_combo">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+          </object>
+          <packing>
+            <property name="left_attach">1</property>
+            <property name="top_attach">0</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkRadioButton" id="custom_size_radio">
+            <property name="label" translatable="yes">Use a c_ustom size:</property>
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="receives_default">False</property>
+            <property name="halign">start</property>
+            <property name="use_underline">True</property>
+            <property name="active">True</property>
+            <property name="draw_indicator">True</property>
+          </object>
+          <packing>
+            <property name="left_attach">0</property>
+            <property name="top_attach">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkBox" id="box4">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="spacing">4</property>
+            <child>
+              <object class="GtkEntry" id="custom_width_entry">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="invisible_char">●</property>
+                <property name="width_chars">10</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkLabel" id="lbl_MultSymbol">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label">×</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkEntry" id="custom_height_entry">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="invisible_char">●</property>
+                <property name="width_chars">10</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">True</property>
+                <property name="position">2</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkComboBoxText" id="units_combo">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="active">0</property>
+                <items>
+                  <item translatable="yes" comments="Abbrevation for &quot;inch&quot;">in.</item>
+                  <item translatable="yes" comments="Abbrevation for &quot;centimeters&quot;">cm</item>
+                </items>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">True</property>
+                <property name="position">3</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="left_attach">1</property>
+            <property name="top_attach">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkCheckButton" id="aspect_ratio_check">
+            <property name="label" translatable="yes">_Match photo aspect ratio</property>
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="receives_default">False</property>
+            <property name="halign">start</property>
+            <property name="use_underline">True</property>
+            <property name="draw_indicator">True</property>
+          </object>
+          <packing>
+            <property name="left_attach">1</property>
+            <property name="top_attach">2</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkRadioButton" id="image_per_page_radio">
+            <property name="label" translatable="yes">_Autosize:</property>
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="receives_default">False</property>
+            <property name="halign">start</property>
+            <property name="use_underline">True</property>
+            <property name="active">True</property>
+            <property name="draw_indicator">True</property>
+            <property name="group">custom_size_radio</property>
+          </object>
+          <packing>
+            <property name="left_attach">0</property>
+            <property name="top_attach">3</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkComboBoxText" id="image_per_page_combo">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+          </object>
+          <packing>
+            <property name="left_attach">1</property>
+            <property name="top_attach">3</property>
+          </packing>
+        </child>
+        <child>
+          <placeholder/>
+        </child>
+      </object>
+      <packing>
+        <property name="expand">False</property>
+        <property name="fill">True</property>
+        <property name="padding">6</property>
+        <property name="position">1</property>
+      </packing>
+    </child>
+    <child>
+      <object class="GtkLabel" id="lbl_Titles">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="halign">start</property>
+        <property name="label" translatable="yes">&lt;b&gt;Titles&lt;/b&gt;</property>
+        <property name="use_markup">True</property>
+      </object>
+      <packing>
+        <property name="expand">False</property>
+        <property name="fill">True</property>
+        <property name="position">2</property>
+      </packing>
+    </child>
+    <child>
+      <object class="GtkBox" id="box6">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="margin_left">12</property>
+        <property name="margin_top">2</property>
+        <child>
+          <object class="GtkCheckButton" id="title_print_check">
+            <property name="label" translatable="yes">Print image _title</property>
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="receives_default">False</property>
+            <property name="halign">start</property>
+            <property name="use_underline">True</property>
+            <property name="draw_indicator">True</property>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkFontButton" id="title_print_font">
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="receives_default">True</property>
+            <property name="margin_left">49</property>
+            <property name="font">Sans 12</property>
+            <property name="preview_text"/>
+            <property name="show_preview_entry">False</property>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+      </object>
+      <packing>
+        <property name="expand">False</property>
+        <property name="fill">True</property>
+        <property name="position">3</property>
+      </packing>
+    </child>
+    <child>
+      <object class="GtkLabel" id="lbl_PixelResolution">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="halign">start</property>
+        <property name="margin_top">12</property>
+        <property name="label" translatable="yes">&lt;b&gt;Pixel Resolution&lt;/b&gt;</property>
+        <property name="use_markup">True</property>
+      </object>
+      <packing>
+        <property name="expand">False</property>
+        <property name="fill">True</property>
+        <property name="position">4</property>
+      </packing>
+    </child>
+    <child>
+      <object class="GtkBox" id="box7">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="margin_left">12</property>
+        <property name="margin_top">2</property>
+        <child>
+          <object class="GtkLabel" id="lbl_OutputPhotoAt">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="halign">start</property>
+            <property name="label" translatable="yes">_Output photo at:</property>
+            <property name="use_underline">True</property>
+            <property name="mnemonic_widget">ppi_entry</property>
+            <property name="ellipsize">start</property>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkBox" id="box8">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="margin_left">65</property>
+            <child>
+              <object class="GtkEntry" id="ppi_entry">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="margin_right">8</property>
+                <property name="invisible_char">●</property>
+                <property name="width_chars">13</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkLabel" id="lbl_PixelsPerInch">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" translatable="yes">pixels per inch</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+      </object>
+      <packing>
+        <property name="expand">False</property>
+        <property name="fill">True</property>
+        <property name="position">5</property>
+      </packing>
+    </child>
+  </template>
+</interface>
diff --git a/data/ui/progress_pane_widget.ui b/data/ui/progress_pane_widget.ui
new file mode 100644
index 0000000..239de60
--- /dev/null
+++ b/data/ui/progress_pane_widget.ui
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.22.0 -->
+<interface>
+  <requires lib="gtk+" version="3.22"/>
+  <template class="PublishingUIProgressPane" parent="GtkBox">
+    <property name="visible">True</property>
+    <property name="can_focus">False</property>
+    <property name="orientation">vertical</property>
+    <child>
+      <object class="GtkProgressBar" id="progress_bar">
+        <property name="height_request">64</property>
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="margin_start">32</property>
+        <property name="margin_end">32</property>
+        <property name="margin_top">108</property>
+        <property name="show_text">True</property>
+      </object>
+      <packing>
+        <property name="expand">False</property>
+        <property name="fill">True</property>
+        <property name="padding">32</property>
+        <property name="position">1</property>
+      </packing>
+    </child>
+  </template>
+</interface>
diff --git a/data/ui/saved_search_dialog.ui b/data/ui/saved_search_dialog.ui
new file mode 100644
index 0000000..f56fd17
--- /dev/null
+++ b/data/ui/saved_search_dialog.ui
@@ -0,0 +1,243 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.22.0 -->
+<interface domain="shotwell">
+  <requires lib="gtk+" version="3.18"/>
+  <template class="SavedSearchDialog" parent="GtkDialog">
+    <property name="can_focus">False</property>
+    <property name="border_width">0</property>
+    <property name="title" translatable="yes">Search</property>
+    <property name="resizable">False</property>
+    <property name="modal">True</property>
+    <property name="destroy_with_parent">True</property>
+    <property name="type_hint">dialog</property>
+    <child internal-child="vbox">
+      <object class="GtkBox">
+        <property name="can_focus">False</property>
+        <property name="orientation">vertical</property>
+        <property name="spacing">2</property>
+        <child internal-child="action_area">
+          <object class="GtkButtonBox">
+            <property name="can_focus">False</property>
+            <property name="margin_right">18</property>
+            <property name="margin_bottom">12</property>
+            <property name="layout_style">end</property>
+            <child>
+              <object class="GtkButton" id="button1">
+                <property name="label" translatable="yes">Cancel</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+              </object>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkButton" id="button2">
+                <property name="label" translatable="yes">OK</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="can_default">True</property>
+                <property name="has_default">True</property>
+                <property name="receives_default">True</property>
+              </object>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">False</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkBox" id="criteria">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="border_width">18</property>
+            <property name="orientation">vertical</property>
+            <child>
+              <object class="GtkBox" id="hbox3">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="margin_bottom">18</property>
+                <property name="hexpand">True</property>
+                <property name="vexpand">True</property>
+                <property name="spacing">12</property>
+                <child>
+                  <object class="GtkLabel" id="Name of search:">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="label" translatable="yes">_Name of search:</property>
+                    <property name="use_underline">True</property>
+                    <property name="mnemonic_widget">search_title</property>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">True</property>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkEntry" id="search_title">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="invisible_char">•</property>
+                    <property name="activates_default">True</property>
+                    <property name="width_chars">20</property>
+                    <property name="primary_icon_activatable">False</property>
+                    <property name="secondary_icon_activatable">False</property>
+                  </object>
+                  <packing>
+                    <property name="expand">True</property>
+                    <property name="fill">True</property>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkBox" id="hbox2">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="margin_bottom">6</property>
+                <property name="hexpand">True</property>
+                <property name="vexpand">True</property>
+                <property name="spacing">12</property>
+                <child>
+                  <object class="GtkLabel" id="Match">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="label" translatable="yes">_Match</property>
+                    <property name="use_underline">True</property>
+                    <property name="justify">right</property>
+                    <property name="mnemonic_widget">operator</property>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">True</property>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkComboBoxText" id="operator">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="active">0</property>
+                    <items>
+                      <item translatable="yes">any</item>
+                      <item translatable="yes">all</item>
+                      <item translatable="yes">none</item>
+                    </items>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">False</property>
+                    <property name="padding">1</property>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkLabel" id="of the following:">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="label" translatable="yes">of the following:</property>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">True</property>
+                    <property name="position">2</property>
+                  </packing>
+                </child>
+                <child>
+                  <placeholder/>
+                </child>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkScrolledWindow" id="scrolled">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="hscrollbar_policy">never</property>
+                <property name="shadow_type">in</property>
+                <property name="min_content_height">176</property>
+                <child>
+                  <object class="GtkViewport">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <child>
+                      <object class="GtkListBox" id="row_listbox">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <child>
+                          <object class="GtkListBoxRow">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="valign">center</property>
+                            <child>
+                              <object class="GtkButton" id="add_criteria">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="receives_default">True</property>
+                                <property name="valign">start</property>
+                                <property name="relief">none</property>
+                                <child>
+                                  <object class="GtkImage">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">False</property>
+                                    <property name="icon_name">list-add-symbolic</property>
+                                    <property name="icon_size">1</property>
+                                  </object>
+                                </child>
+                                <style>
+                                  <class name="image-button"/>
+                                </style>
+                              </object>
+                            </child>
+                          </object>
+                        </child>
+                      </object>
+                    </child>
+                  </object>
+                </child>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">True</property>
+                <property name="position">2</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+    <action-widgets>
+      <action-widget response="-6">button1</action-widget>
+      <action-widget response="-5">button2</action-widget>
+    </action-widgets>
+    <child type="titlebar">
+      <placeholder/>
+    </child>
+  </template>
+</interface>
diff --git a/data/ui/savedsearch.ui b/data/ui/savedsearch.ui
new file mode 100644
index 0000000..3cdd640
--- /dev/null
+++ b/data/ui/savedsearch.ui
@@ -0,0 +1,19 @@
+<?xml version="1.0"?>
+<interface domain="shotwell">
+  <menu id="SearchContextMenu">
+    <section>
+      <item>
+        <attribute name="label" translatable="yes">Re_name…</attribute>
+        <attribute name="action">win.RenameSearch</attribute>
+      </item>
+      <item>
+        <attribute name="label" translatable="yes">_Edit…</attribute>
+        <attribute name="action">win.EditSearch</attribute>
+      </item>
+      <item>
+        <attribute name="label" translatable="yes">_Delete</attribute>
+        <attribute name="action">win.DeleteSearch</attribute>
+      </item>
+    </section>
+  </menu>
+</interface>
diff --git a/data/ui/search_bar.ui b/data/ui/search_bar.ui
new file mode 100644
index 0000000..9d56962
--- /dev/null
+++ b/data/ui/search_bar.ui
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<interface domain="shotwell">
+  <menu id='popup-menu'>
+    <section>
+      <item>
+        <attribute name="label" translatable="yes">Rejected _Only</attribute>
+        <attribute name="action">win.display.rating</attribute>
+        <attribute name="target">8</attribute>
+        <attribute name="accel">&lt;Primary&gt;8</attribute>
+      </item>
+      <item>
+        <attribute name="label" translatable="yes">All + _Rejected</attribute>
+        <attribute name="action">win.display.rating</attribute>
+        <attribute name="target">1</attribute>
+        <attribute name="accel">&lt;Primary&gt;9</attribute>
+      </item>
+      <item>
+        <attribute name="label" translatable="yes">_All Photos</attribute>
+        <attribute name="action">win.display.rating</attribute>
+        <attribute name="target">2</attribute>
+        <attribute name="accel">&lt;Primary&gt;0</attribute>
+      </item>
+      <item>
+        <attribute name="label" translatable="no">★</attribute>
+        <attribute name="action">win.display.rating</attribute>
+        <attribute name="target">3</attribute>
+        <attribute name="accel">&lt;Primary&gt;1</attribute>
+      </item>
+      <item>
+        <attribute name="label" translatable="no">★★</attribute>
+        <attribute name="action">win.display.rating</attribute>
+        <attribute name="target">4</attribute>
+        <attribute name="accel">&lt;Primary&gt;2</attribute>
+      </item>
+      <item>
+        <attribute name="label" translatable="no">★★★</attribute>
+        <attribute name="action">win.display.rating</attribute>
+        <attribute name="target">5</attribute>
+        <attribute name="accel">&lt;Primary&gt;3</attribute>
+      </item>
+      <item>
+        <attribute name="label" translatable="no">★★★★</attribute>
+        <attribute name="action">win.display.rating</attribute>
+        <attribute name="target">6</attribute>
+        <attribute name="accel">&lt;Primary&gt;4</attribute>
+      </item>
+      <item>
+        <attribute name="label" translatable="no">★★★★★</attribute>
+        <attribute name="action">win.display.rating</attribute>
+        <attribute name="target">7</attribute>
+        <attribute name="accel">&lt;Primary&gt;5</attribute>
+      </item>
+    </section>
+  </menu>
+</interface>
diff --git a/data/ui/search_sidebar_context.ui b/data/ui/search_sidebar_context.ui
new file mode 100644
index 0000000..a925800
--- /dev/null
+++ b/data/ui/search_sidebar_context.ui
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<interface domain="shotwell">
+  <menu id='popup-menu'>
+    <section>
+      <item>
+        <attribute name="label" translatable="yes">Ne_w Saved Search…</attribute>
+        <attribute name="action">win.CommonNewSearch</attribute>
+        <attribute name="accel">&lt;Primary&gt;s</attribute>
+      </item>
+    </section>
+  </menu>
+</interface>
diff --git a/data/ui/set_background_dialog.ui b/data/ui/set_background_dialog.ui
new file mode 100644
index 0000000..d00125e
--- /dev/null
+++ b/data/ui/set_background_dialog.ui
@@ -0,0 +1,114 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.20.0 -->
+<interface domain="shotwell">
+  <requires lib="gtk+" version="3.18"/>
+  <template class="SetBackgroundPhotoDialog" parent="GtkDialog">
+    <property name="width_request">400</property>
+    <property name="can_focus">False</property>
+    <property name="border_width">5</property>
+    <property name="title" translatable="yes">Set as Desktop Background</property>
+    <property name="type_hint">normal</property>
+    <property name="skip_taskbar_hint">True</property>
+    <child internal-child="vbox">
+      <object class="GtkBox" id="dialog-vbox2">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="orientation">vertical</property>
+        <property name="spacing">6</property>
+        <child internal-child="action_area">
+          <object class="GtkButtonBox" id="dialog-action_area2">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="layout_style">end</property>
+            <child>
+              <object class="GtkButton" id="cancel_button">
+                <property name="label">_Cancel</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="can_default">True</property>
+                <property name="receives_default">True</property>
+                <property name="use_underline">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkButton" id="ok_button">
+                <property name="label">_OK</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="can_default">True</property>
+                <property name="has_default">True</property>
+                <property name="receives_default">True</property>
+                <property name="use_underline">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="pack_type">end</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkBox" id="hbox2">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="orientation">vertical</property>
+            <child>
+              <object class="GtkCheckButton" id="desktop_background_checkbox">
+                <property name="label" translatable="yes">Use for Desktop</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">False</property>
+                <property name="halign">start</property>
+                <property name="active">True</property>
+                <property name="draw_indicator">True</property>
+                <signal name="toggled" handler="on_checkbox_clicked" swapped="no"/>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkCheckButton" id="screensaver_checkbox">
+                <property name="label" translatable="yes">Use for Lock Screen</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">False</property>
+                <property name="halign">start</property>
+                <property name="draw_indicator">True</property>
+                <signal name="toggled" handler="on_checkbox_clicked" swapped="no"/>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">3</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+    <action-widgets>
+      <action-widget response="-6">cancel_button</action-widget>
+      <action-widget response="-5">ok_button</action-widget>
+    </action-widgets>
+  </template>
+</interface>
diff --git a/data/ui/set_background_slideshow_dialog.ui b/data/ui/set_background_slideshow_dialog.ui
new file mode 100644
index 0000000..93c3a99
--- /dev/null
+++ b/data/ui/set_background_slideshow_dialog.ui
@@ -0,0 +1,177 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.20.0 -->
+<interface domain="shotwell">
+  <requires lib="gtk+" version="3.18"/>
+  <object class="GtkAdjustment" id="adjustment1">
+    <property name="upper">100</property>
+    <property name="value">50</property>
+    <property name="step_increment">10</property>
+    <property name="page_increment">10</property>
+    <property name="page_size">10</property>
+  </object>
+  <template class="SetBackgroundSlideshowDialog" parent="GtkDialog">
+    <property name="width_request">400</property>
+    <property name="can_focus">False</property>
+    <property name="border_width">5</property>
+    <property name="title" translatable="yes">Set as Desktop Slideshow</property>
+    <property name="type_hint">normal</property>
+    <property name="skip_taskbar_hint">True</property>
+    <child internal-child="vbox">
+      <object class="GtkBox" id="dialog-vbox2">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="orientation">vertical</property>
+        <property name="spacing">6</property>
+        <child internal-child="action_area">
+          <object class="GtkButtonBox" id="dialog-action_area2">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="layout_style">end</property>
+            <child>
+              <object class="GtkButton" id="cancel_button">
+                <property name="label">_Cancel</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="can_default">True</property>
+                <property name="receives_default">True</property>
+                <property name="use_underline">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkButton" id="ok_button">
+                <property name="label">_OK</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="can_default">True</property>
+                <property name="has_default">True</property>
+                <property name="receives_default">True</property>
+                <property name="has_tooltip">True</property>
+                <property name="tooltip_text" translatable="yes">Generate desktop background slideshow</property>
+                <property name="use_underline">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="pack_type">end</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkBox" id="hbox1">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="spacing">5</property>
+            <child>
+              <object class="GtkLabel" id="label1">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" translatable="yes">Show each photo for</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkLabel" id="delay_value_label">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" translatable="yes">period of time</property>
+                <attributes>
+                  <attribute name="weight" value="bold"/>
+                </attributes>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkScale" id="delay_scale">
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="tooltip_text" translatable="yes">How long each photo is shown on the desktop background</property>
+            <property name="adjustment">adjustment1</property>
+            <property name="draw_value">False</property>
+            <signal name="value-changed" handler="on_delay_scale_value_changed" swapped="no"/>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">2</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkBox" id="hbox2">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="orientation">vertical</property>
+            <child>
+              <object class="GtkCheckButton" id="desktop_background_checkbox">
+                <property name="label" translatable="yes">Use for Desktop</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">False</property>
+                <property name="halign">start</property>
+                <property name="active">True</property>
+                <property name="draw_indicator">True</property>
+                <signal name="toggled" handler="on_checkbox_clicked" swapped="no"/>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkCheckButton" id="screensaver_checkbox">
+                <property name="label" translatable="yes">Use for Lock Screen</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">False</property>
+                <property name="halign">start</property>
+                <property name="draw_indicator">True</property>
+                <signal name="toggled" handler="on_checkbox_clicked" swapped="no"/>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">3</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+    <action-widgets>
+      <action-widget response="-6">cancel_button</action-widget>
+      <action-widget response="-5">ok_button</action-widget>
+    </action-widgets>
+  </template>
+</interface>
diff --git a/data/ui/sidebar_default_context.ui b/data/ui/sidebar_default_context.ui
new file mode 100644
index 0000000..1bb0b33
--- /dev/null
+++ b/data/ui/sidebar_default_context.ui
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<interface domain="shotwell">
+  <menu id='popup-menu'>
+    <section>
+      <item>
+        <attribute name="label" translatable="yes">Ne_w Saved Search…</attribute>
+        <attribute name="action">sidebar.search.new</attribute>
+        <attribute name="accel">&lt;Primary&gt;s</attribute>
+      </item>
+      <item>
+        <attribute name="label" translatable="yes">New _Tag…</attribute>
+        <attribute name="action">sidebar.tag.new</attribute>
+      </item>
+    </section>
+  </menu>
+</interface>
diff --git a/data/ui/slideshow_settings.ui b/data/ui/slideshow_settings.ui
new file mode 100644
index 0000000..1abfa39
--- /dev/null
+++ b/data/ui/slideshow_settings.ui
@@ -0,0 +1,274 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.22.1 -->
+<interface>
+  <requires lib="gtk+" version="3.20"/>
+  <object class="GtkAdjustment" id="delay_adjustment">
+    <property name="lower">1</property>
+    <property name="upper">30</property>
+    <property name="value">3</property>
+    <property name="step_increment">1</property>
+    <property name="page_increment">1</property>
+  </object>
+  <object class="GtkAdjustment" id="transition_effect_adjustment">
+    <property name="lower">0.10000000000000001</property>
+    <property name="upper">1</property>
+    <property name="value">0.29999999999999999</property>
+    <property name="step_increment">0.10000000000000001</property>
+    <property name="page_increment">1</property>
+  </object>
+  <template class="SlideshowPageSettingsDialog" parent="GtkDialog">
+    <property name="can_focus">False</property>
+    <property name="title" translatable="yes">Settings</property>
+    <property name="modal">True</property>
+    <property name="type_hint">dialog</property>
+    <child>
+      <placeholder/>
+    </child>
+    <child internal-child="vbox">
+      <object class="GtkBox">
+        <property name="can_focus">False</property>
+        <property name="orientation">vertical</property>
+        <property name="spacing">2</property>
+        <child internal-child="action_area">
+          <object class="GtkButtonBox">
+            <property name="can_focus">False</property>
+            <property name="layout_style">end</property>
+            <child>
+              <object class="GtkButton" id="button1">
+                <property name="label" translatable="yes">_Cancel</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <property name="use_underline">True</property>
+              </object>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkButton" id="button2">
+                <property name="label" translatable="yes">_OK</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="can_default">True</property>
+                <property name="has_default">True</property>
+                <property name="receives_default">True</property>
+                <property name="use_underline">True</property>
+                <style>
+                  <class name="default-action"/>
+                </style>
+              </object>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">False</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkBox" id="slideshow_settings_pane">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="orientation">vertical</property>
+            <child>
+              <object class="GtkBox" id="dialog-vbox7">
+                <property name="can_focus">False</property>
+                <property name="margin_left">8</property>
+                <property name="margin_right">8</property>
+                <property name="spacing">2</property>
+                <child>
+                  <object class="GtkGrid" id="grid3">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="row_spacing">4</property>
+                    <property name="column_spacing">4</property>
+                    <child>
+                      <object class="GtkLabel" id="delay_label">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="halign">end</property>
+                        <property name="label" translatable="yes">_Duration:</property>
+                        <property name="tooltip-text" translatable="yes">The time (in seconds) to show each photo</property>
+                        <property name="use_underline">True</property>
+                        <property name="mnemonic_widget">delay_hscale</property>
+                      </object>
+                      <packing>
+                        <property name="left_attach">0</property>
+                        <property name="top_attach">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkLabel" id="transition_effect_label">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="halign">end</property>
+                        <property name="label" translatable="yes">_Transition effect:</property>
+                        <property name="use_underline">True</property>
+                        <property name="mnemonic_widget">transition_effect_selector</property>
+                      </object>
+                      <packing>
+                        <property name="left_attach">0</property>
+                        <property name="top_attach">1</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkLabel" id="transition_delay_label">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="halign">end</property>
+                        <property name="label" translatable="yes">Transition d_uration:</property>
+                        <property name="tooltip-text" translatable="yes">The time (in seconds) to show each transition between photos</property>
+                        <property name="use_underline">True</property>
+                      </object>
+                      <packing>
+                        <property name="left_attach">0</property>
+                        <property name="top_attach">2</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkCheckButton" id="show_title_button">
+                        <property name="label" translatable="yes">Show t_itle</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">False</property>
+                        <property name="halign">start</property>
+                        <property name="use_underline">True</property>
+                        <property name="draw_indicator">True</property>
+                      </object>
+                      <packing>
+                        <property name="left_attach">0</property>
+                        <property name="top_attach">3</property>
+                        <property name="width">4</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkComboBoxText" id="transition_effect_selector">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                      </object>
+                      <packing>
+                        <property name="left_attach">1</property>
+                        <property name="top_attach">1</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkScale" id="delay_hscale">
+                        <property name="width_request">150</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="adjustment">delay_adjustment</property>
+                        <property name="fill_level">300</property>
+                        <property name="draw_value">False</property>
+                      </object>
+                      <packing>
+                        <property name="left_attach">1</property>
+                        <property name="top_attach">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkScale" id="transition_effect_hscale">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="adjustment">transition_effect_adjustment</property>
+                        <property name="fill_level">3</property>
+                        <property name="draw_value">False</property>
+                      </object>
+                      <packing>
+                        <property name="left_attach">1</property>
+                        <property name="top_attach">2</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkSpinButton" id="delay_entry">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="invisible_char">●</property>
+                        <property name="adjustment">delay_adjustment</property>
+                        <property name="numeric">True</property>
+                      </object>
+                      <packing>
+                        <property name="left_attach">2</property>
+                        <property name="top_attach">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkSpinButton" id="transition_effect_entry">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="invisible_char">●</property>
+                        <property name="activates_default">True</property>
+                        <property name="adjustment">transition_effect_adjustment</property>
+                        <property name="digits">1</property>
+                        <property name="numeric">True</property>
+                      </object>
+                      <packing>
+                        <property name="left_attach">2</property>
+                        <property name="top_attach">2</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkLabel" id="seconds_label_3">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="label" translatable="yes">seconds</property>
+                      </object>
+                      <packing>
+                        <property name="left_attach">3</property>
+                        <property name="top_attach">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkLabel" id="seconds_label_4">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="label" translatable="yes">seconds</property>
+                      </object>
+                      <packing>
+                        <property name="left_attach">3</property>
+                        <property name="top_attach">2</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <placeholder/>
+                    </child>
+                    <child>
+                      <placeholder/>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">True</property>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">True</property>
+                <property name="padding">4</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+    <action-widgets>
+      <action-widget response="-6">button1</action-widget>
+      <action-widget response="-5">button2</action-widget>
+    </action-widgets>
+  </template>
+</interface>
diff --git a/data/ui/static_message_pane_widget.ui b/data/ui/static_message_pane_widget.ui
new file mode 100644
index 0000000..8b57f3d
--- /dev/null
+++ b/data/ui/static_message_pane_widget.ui
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.40.0 -->
+<interface>
+  <requires lib="gtk+" version="3.22"/>
+  <template class="PublishingUIStaticMessagePane" parent="GtkBox">
+    <property name="visible">True</property>
+    <property name="can-focus">False</property>
+    <property name="orientation">vertical</property>
+    <child>
+      <object class="GtkLabel" id="static_msg_label">
+        <property name="visible">True</property>
+        <property name="can-focus">False</property>
+        <property name="margin-start">16</property>
+        <property name="margin-end">16</property>
+        <property name="margin-top">97</property>
+        <property name="margin-bottom">24</property>
+        <property name="label" comments="This is a placeholder string and may be ignored.">This is populated from within the code;
+changes made here will not display.</property>
+        <property name="wrap">True</property>
+        <property name="max-width-chars">70</property>
+      </object>
+      <packing>
+        <property name="expand">False</property>
+        <property name="fill">True</property>
+        <property name="position">0</property>
+      </packing>
+    </child>
+    <child>
+      <object class="GtkSpinner" id="spinner">
+        <property name="visible">True</property>
+        <property name="can-focus">False</property>
+      </object>
+      <packing>
+        <property name="expand">True</property>
+        <property name="fill">True</property>
+        <property name="position">1</property>
+      </packing>
+    </child>
+  </template>
+</interface>
diff --git a/data/ui/tag_sidebar_context.ui b/data/ui/tag_sidebar_context.ui
new file mode 100644
index 0000000..b810c28
--- /dev/null
+++ b/data/ui/tag_sidebar_context.ui
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<interface domain="shotwell">
+  <menu id='popup-menu'>
+    <section>
+      <item>
+        <attribute name="label" translatable="yes">New _Tag…</attribute>
+        <attribute name="action">sidebar.tag.new</attribute>
+      </item>
+    </section>
+  </menu>
+</interface>
diff --git a/data/ui/tags.ui b/data/ui/tags.ui
new file mode 100644
index 0000000..03378ae
--- /dev/null
+++ b/data/ui/tags.ui
@@ -0,0 +1,465 @@
+<?xml version="1.0"?>
+<interface domain="shotwell">
+  <menu id="MenuBar">
+    <submenu>
+      <attribute name="label" translatable="yes">_File</attribute>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">_Import From Folder…</attribute>
+          <attribute name="accel">&lt;Primary&gt;i</attribute>
+          <attribute name="action">win.CommonFileImport</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">Import From _Application…</attribute>
+          <attribute name="action">win.ExternalLibraryImport</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">_Export…</attribute>
+          <attribute name="accel">&lt;Primary&gt;&lt;Shift&gt;e</attribute>
+          <attribute name="action">win.Export</attribute>
+        </item>
+      </section>
+      <section>
+        <attribute name="id">FileExtrasPlaceholder</attribute>
+      </section>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">Show in File Mana_ger</attribute>
+          <attribute name="accel">&lt;Primary&gt;&lt;Shift&gt;m</attribute>
+          <attribute name="action">win.CommonJumpToFile</attribute>
+        </item>
+      </section>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">Empty T_rash</attribute>
+          <attribute name="action">win.CommonEmptyTrash</attribute>
+        </item>
+      </section>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">_Quit</attribute>
+          <attribute name="accel">&lt;Primary&gt;q</attribute>
+          <attribute name="action">win.CommonQuit</attribute>
+        </item>
+      </section>
+    </submenu>
+    <submenu>
+      <attribute name="label" translatable="yes">_Edit</attribute>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">_Undo</attribute>
+          <attribute name="accel">&lt;Primary&gt;z</attribute>
+          <attribute name="action">win.CommonUndo</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">_Redo</attribute>
+          <attribute name="accel">&lt;Primary&gt;&lt;Shift&gt;z</attribute>
+          <attribute name="action">win.CommonRedo</attribute>
+        </item>
+      </section>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">_Find</attribute>
+          <attribute name="action">win.CommonFind</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">Ne_w Saved Search…</attribute>
+          <attribute name="accel">&lt;Primary&gt;s</attribute>
+          <attribute name="action">win.CommonNewSearch</attribute>
+        </item>
+      </section>
+      <section>
+        <attribute name="id">EditExtrasPlaceholder</attribute>
+        <item>
+          <attribute name="label" translatable="yes">R_emove From Library</attribute>
+          <attribute name="accel">&lt;Shift&gt;Delete</attribute>
+          <attribute name="action">win.RemoveFromLibrary</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">_Move to Trash</attribute>
+          <attribute name="accel">Delete</attribute>
+          <attribute name="action">win.MoveToTrash</attribute>
+        </item>
+      </section>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">Select _All</attribute>
+          <attribute name="accel">&lt;Primary&gt;a</attribute>
+          <attribute name="action">win.CommonSelectAll</attribute>
+        </item>
+      </section>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">_Preferences</attribute>
+          <attribute name="action">win.CommonPreferences</attribute>
+        </item>
+      </section>
+    </submenu>
+    <submenu>
+      <attribute name="label" translatable="yes">_View</attribute>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">_Basic Information</attribute>
+          <attribute name="accel">&lt;Primary&gt;&lt;Shift&gt;i</attribute>
+          <attribute name="action">win.CommonDisplayBasicProperties</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">E_xtended Information</attribute>
+          <attribute name="accel">&lt;Primary&gt;&lt;Shift&gt;x</attribute>
+          <attribute name="action">win.CommonDisplayExtendedProperties</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">_Search Bar</attribute>
+          <attribute name="accel">F8</attribute>
+          <attribute name="action">win.CommonDisplaySearchbar</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">S_idebar</attribute>
+          <attribute name="accel">F9</attribute>
+          <attribute name="action">win.CommonDisplaySidebar</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">T_oolbar</attribute>
+          <attribute name="accel">&lt;Primary&gt;F9</attribute>
+          <attribute name="action">win.CommonDisplayToolbar</attribute>
+        </item>
+      </section>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">_Titles</attribute>
+          <attribute name="accel">&lt;Primary&gt;&lt;Shift&gt;t</attribute>
+          <attribute name="action">win.ViewTitle</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">_Comments</attribute>
+          <attribute name="accel">&lt;Primary&gt;&lt;Shift&gt;c</attribute>
+          <attribute name="action">win.ViewComment</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">Ta_gs</attribute>
+          <attribute name="accel">&lt;Primary&gt;&lt;Shift&gt;g</attribute>
+          <attribute name="action">win.ViewTags</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">_Ratings</attribute>
+          <attribute name="accel">&lt;Primary&gt;&lt;Shift&gt;n</attribute>
+          <attribute name="action">win.ViewRatings</attribute>
+        </item>
+      </section>
+      <section>
+        <submenu>
+          <attribute name="label" translatable="yes">_Filter Photos</attribute>
+          <section>
+            <item>
+              <attribute name="label" translatable="no">★★★★★</attribute>
+              <attribute name="action">win.display.rating</attribute>
+              <attribute name="target">7</attribute>
+              <attribute name="accel">&lt;Primary&gt;5</attribute>
+            </item>
+            <item>
+              <attribute name="label" translatable="no">★★★★</attribute>
+              <attribute name="action">win.display.rating</attribute>
+              <attribute name="target">6</attribute>
+              <attribute name="accel">&lt;Primary&gt;4</attribute>
+            </item>
+            <item>
+              <attribute name="label" translatable="no">★★★</attribute>
+              <attribute name="action">win.display.rating</attribute>
+              <attribute name="target">5</attribute>
+              <attribute name="accel">&lt;Primary&gt;3</attribute>
+            </item>
+            <item>
+              <attribute name="label" translatable="no">★★</attribute>
+              <attribute name="action">win.display.rating</attribute>
+              <attribute name="target">4</attribute>
+              <attribute name="accel">&lt;Primary&gt;2</attribute>
+            </item>
+            <item>
+              <attribute name="label" translatable="no">★</attribute>
+              <attribute name="action">win.display.rating</attribute>
+              <attribute name="target">3</attribute>
+              <attribute name="accel">&lt;Primary&gt;1</attribute>
+            </item>
+            <item>
+              <attribute name="label" translatable="yes">_All Photos</attribute>
+              <attribute name="action">win.display.rating</attribute>
+              <attribute name="target">2</attribute>
+              <attribute name="accel">&lt;Primary&gt;0</attribute>
+            </item>
+            <item>
+              <attribute name="label" translatable="yes">All + _Rejected</attribute>
+              <attribute name="action">win.display.rating</attribute>
+              <attribute name="target">1</attribute>
+              <attribute name="accel">&lt;Primary&gt;9</attribute>
+            </item>
+            <item>
+              <attribute name="label" translatable="yes">Rejected _Only</attribute>
+              <attribute name="action">win.display.rating</attribute>
+              <attribute name="target">8</attribute>
+              <attribute name="accel">&lt;Primary&gt;8</attribute>
+            </item>
+          </section>
+        </submenu>
+      </section>
+      <section>
+        <submenu>
+          <attribute name="label" translatable="yes">Sort _Photos</attribute>
+          <section>
+            <item>
+              <attribute name="label" translatable="yes">By _Title</attribute>
+              <attribute name="action">win.SortBy</attribute>
+              <attribute name="target">1</attribute>
+            </item>
+            <item>
+              <attribute name="label" translatable="yes">By _Filename</attribute>
+              <attribute name="action">win.SortBy</attribute>
+              <attribute name="target">4</attribute>
+            </item>
+            <item>
+              <attribute name="label" translatable="yes">By Exposure _Date</attribute>
+              <attribute name="action">win.SortBy</attribute>
+              <attribute name="target">2</attribute>
+            </item>
+            <item>
+              <attribute name="label" translatable="yes">By _Rating</attribute>
+              <attribute name="action">win.SortBy</attribute>
+              <attribute name="target">3</attribute>
+            </item>
+          </section>
+          <section>
+            <item>
+              <attribute name="label" translatable="yes">_Ascending</attribute>
+              <attribute name="action">win.Sort</attribute>
+              <attribute name="target">ascending</attribute>
+            </item>
+            <item>
+              <attribute name="label" translatable="yes">D_escending</attribute>
+              <attribute name="action">win.Sort</attribute>
+              <attribute name="target">descending</attribute>
+            </item>
+          </section>
+        </submenu>
+        <submenu>
+          <attribute name="label" translatable="yes">Sort _Events</attribute>
+          <section>
+            <item>
+              <attribute name="label" translatable="yes">_Ascending</attribute>
+              <attribute name="action">win.CommonSortEvents</attribute>
+              <attribute name="target">ascending</attribute>
+            </item>
+            <item>
+              <attribute name="label" translatable="yes">_Descending</attribute>
+              <attribute name="action">win.CommonSortEvents</attribute>
+              <attribute name="target">descending</attribute>
+            </item>
+          </section>
+        </submenu>
+      </section>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">Zoom _In</attribute>
+          <attribute name="accel">&lt;Primary&gt;plus</attribute>
+          <attribute name="action">win.IncreaseSize</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">Zoom _Out</attribute>
+          <attribute name="accel">&lt;Primary&gt;minus</attribute>
+          <attribute name="action">win.DecreaseSize</attribute>
+        </item>
+      </section>
+      <section>
+      <attribute name="id">ViewExtrasFullscreenSlideshowPlaceholder</attribute>
+      </section>
+    </submenu>
+    <submenu>
+      <attribute name="label" translatable="yes">_Photos</attribute>
+      <section>
+      <attribute name="id">PhotosExtrasEditsPlaceholder</attribute>
+      </section>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">Toggle _Flag</attribute>
+          <attribute name="accel">&lt;Primary&gt;g</attribute>
+          <attribute name="action">win.Flag</attribute>
+        </item>
+        <submenu>
+          <attribute name="label" translatable="yes">_Set Rating</attribute>
+          <section>
+            <item>
+              <attribute name="label" translatable="no">★★★★★</attribute>
+              <attribute name="accel">5</attribute>
+              <attribute name="action">win.RateFive</attribute>
+            </item>
+            <item>
+              <attribute name="label" translatable="no">★★★★</attribute>
+              <attribute name="accel">4</attribute>
+              <attribute name="action">win.RateFour</attribute>
+            </item>
+            <item>
+              <attribute name="label" translatable="no">★★★</attribute>
+              <attribute name="accel">3</attribute>
+              <attribute name="action">win.RateThree</attribute>
+            </item>
+            <item>
+              <attribute name="label" translatable="no">★★</attribute>
+              <attribute name="accel">2</attribute>
+              <attribute name="action">win.RateTwo</attribute>
+            </item>
+            <item>
+              <attribute name="label" translatable="no">★</attribute>
+              <attribute name="accel">1</attribute>
+              <attribute name="action">win.RateOne</attribute>
+            </item>
+            <item>
+              <attribute name="label" translatable="yes">_Unrated</attribute>
+              <attribute name="accel">0</attribute>
+              <attribute name="action">win.RateUnrated</attribute>
+            </item>
+            <item>
+              <attribute name="label" translatable="yes">_Rejected</attribute>
+              <attribute name="accel">9</attribute>
+              <attribute name="action">win.RateRejected</attribute>
+            </item>
+          </section>
+          <section>
+            <item>
+              <attribute name="label" translatable="yes">_Increase</attribute>
+              <attribute name="accel">greater</attribute>
+              <attribute name="action">win.IncreaseRating</attribute>
+            </item>
+            <item>
+              <attribute name="label" translatable="yes">_Decrease</attribute>
+              <attribute name="accel">less</attribute>
+              <attribute name="action">win.DecreaseRating</attribute>
+            </item>
+          </section>
+        </submenu>
+      </section>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">Edit _Title…</attribute>
+          <attribute name="action">win.EditTitle</attribute>
+          <attribute name="accel">F2</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">Edit _Comment…</attribute>
+          <attribute name="action">win.EditComment</attribute>
+          <attribute name="accel">F3</attribute>
+        </item>
+      <attribute name="id">PhotosExtrasDateTimePlaceholder</attribute>
+      </section>
+      <section>
+        <submenu>
+          <attribute name="label" translatable="yes">_Developer</attribute>
+          <section>
+            <item>
+              <attribute name="label" translatable="yes">Shotwell</attribute>
+              <attribute name="action">win.RawDeveloper</attribute>
+              <attribute name="target">Shotwell</attribute>
+            </item>
+            <item>
+              <attribute name="label" translatable="yes">Camera</attribute>
+              <attribute name="action">win.RawDeveloper</attribute>
+              <attribute name="target">Camera</attribute>
+            </item>
+          </section>
+        </submenu>
+      </section>
+      <section>
+      <attribute name="id">PhotosExtrasExternalsPlaceholder</attribute>
+      </section>
+    </submenu>
+    <submenu>
+      <attribute name="label" translatable="yes">Even_ts</attribute>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">_New Event</attribute>
+          <attribute name="accel">&lt;Primary&gt;n</attribute>
+          <attribute name="action">win.NewEvent</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">View Eve_nt for Photo</attribute>
+          <attribute name="action">win.CommonJumpToEvent</attribute>
+        </item>
+      </section>
+    </submenu>
+    <submenu>
+      <attribute name="label" translatable="yes">Ta_gs</attribute>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">Add _Tags…</attribute>
+          <attribute name="accel">&lt;Primary&gt;t</attribute>
+          <attribute name="action">win.AddTags</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">Modif_y Tags…</attribute>
+          <attribute name="accel">&lt;Primary&gt;m</attribute>
+          <attribute name="action">win.ModifyTags</attribute>
+        </item>
+      </section>
+      <section>
+        <item>
+          <attribute name="id">RemoveTagFromPhotos</attribute>
+          <attribute name="label" translatable="yes"></attribute>
+          <attribute name="action">win.RemoveTagFromPhotos</attribute>
+        </item>
+      </section>
+      <section>
+        <item>
+          <attribute name="id">RenameTag</attribute>
+          <attribute name="label" translatable="yes"></attribute>
+          <attribute name="action">win.RenameTag</attribute>
+        </item>
+        <item>
+          <attribute name="id">DeleteTag</attribute>
+          <attribute name="label" translatable="yes"></attribute>
+          <attribute name="action">win.DeleteTag</attribute>
+        </item>
+      </section>
+    </submenu>
+    <!-- Faces menu goes here FacesMenuPlaceholder -->
+    <submenu>
+      <attribute name="label" translatable="yes">_Help</attribute>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">_Help</attribute>
+          <attribute name="accel">F1</attribute>
+          <attribute name="action">win.CommonHelpContents</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">_Frequently Asked Questions</attribute>
+          <attribute name="action">win.CommonHelpFAQ</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">_Report a Problem…</attribute>
+          <attribute name="action">win.CommonHelpReportProblem</attribute>
+        </item>
+      </section>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">_About</attribute>
+          <attribute name="action">win.CommonAbout</attribute>
+        </item>
+      </section>
+    </submenu>
+  </menu>
+
+  <menu id="TagsContextMenu">
+    <section>
+      <item>
+        <attribute name="label" translatable="yes">_New</attribute>
+        <attribute name="action">win.NewChildTagSidebar</attribute>
+      </item>
+    </section>
+    <section>
+      <item>
+        <attribute name="label" translatable="yes">_Rename…</attribute>
+        <attribute name="action">win.RenameTag</attribute>
+      </item>
+      <item>
+        <attribute name="label" translatable="yes">_Delete</attribute>
+        <attribute name="action">win.DeleteTag</attribute>
+      </item>
+    </section>
+  </menu>
+</interface>
diff --git a/data/ui/textentrydialog.ui b/data/ui/textentrydialog.ui
new file mode 100644
index 0000000..6a2dc78
--- /dev/null
+++ b/data/ui/textentrydialog.ui
@@ -0,0 +1,104 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.20.0 -->
+<interface domain="shotwell">
+  <requires lib="gtk+" version="3.18"/>
+  <template class="TextEntryDialog" parent="GtkDialog">
+    <property name="can_focus">False</property>
+    <property name="type_hint">dialog</property>
+    <child internal-child="vbox">
+      <object class="GtkBox">
+        <property name="can_focus">False</property>
+        <property name="orientation">vertical</property>
+        <property name="spacing">2</property>
+        <child internal-child="action_area">
+          <object class="GtkButtonBox">
+            <property name="can_focus">False</property>
+            <property name="layout_style">end</property>
+            <child>
+              <object class="GtkButton" id="button1">
+                <property name="label" translatable="yes">_Cancel</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <property name="use_underline">True</property>
+              </object>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkButton" id="button2">
+                <property name="label" translatable="yes">_Save</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="can_default">True</property>
+                <property name="has_default">True</property>
+                <property name="receives_default">True</property>
+                <property name="use_underline">True</property>
+              </object>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">False</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkBox" id="dialog-vbox2">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="border_width">3</property>
+            <property name="orientation">vertical</property>
+            <property name="spacing">3</property>
+            <child>
+              <object class="GtkLabel" id="label">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="halign">start</property>
+                <property name="label" translatable="yes">label</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkEntry" id="entry">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="invisible_char">●</property>
+                <property name="activates_default">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+            <child>
+              <placeholder/>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+    <action-widgets>
+      <action-widget response="-6">button1</action-widget>
+      <action-widget response="-5">button2</action-widget>
+    </action-widgets>
+  </template>
+</interface>
diff --git a/data/ui/trash.ui b/data/ui/trash.ui
new file mode 100644
index 0000000..1dc188d
--- /dev/null
+++ b/data/ui/trash.ui
@@ -0,0 +1,322 @@
+<?xml version="1.0"?>
+<interface domain="shotwell">
+  <menu id="MenuBar">
+    <submenu>
+      <attribute name="label" translatable="yes">_File</attribute>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">_Import From Folder…</attribute>
+          <attribute name="accel">&lt;Primary&gt;i</attribute>
+          <attribute name="action">win.CommonFileImport</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">Import From _Application…</attribute>
+          <attribute name="action">win.ExternalLibraryImport</attribute>
+        </item>
+      </section>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">Show in File Mana_ger</attribute>
+          <attribute name="accel">&lt;Primary&gt;&lt;Shift&gt;m</attribute>
+          <attribute name="action">win.CommonJumpToFile</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">Empty T_rash</attribute>
+          <attribute name="action">win.CommonEmptyTrash</attribute>
+        </item>
+      </section>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">_Quit</attribute>
+          <attribute name="accel">&lt;Primary&gt;q</attribute>
+          <attribute name="action">win.CommonQuit</attribute>
+        </item>
+      </section>
+    </submenu>
+    <submenu>
+      <attribute name="label" translatable="yes">_Edit</attribute>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">_Undo</attribute>
+          <attribute name="accel">&lt;Primary&gt;z</attribute>
+          <attribute name="action">win.CommonUndo</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">_Redo</attribute>
+          <attribute name="accel">&lt;Primary&gt;&lt;Shift&gt;z</attribute>
+          <attribute name="action">win.CommonRedo</attribute>
+        </item>
+      </section>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">_Find</attribute>
+          <attribute name="action">win.CommonFind</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">Ne_w Saved Search…</attribute>
+          <attribute name="accel">&lt;Primary&gt;s</attribute>
+          <attribute name="action">win.CommonNewSearch</attribute>
+        </item>
+      </section>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">_Delete</attribute>
+          <attribute name="accel">Delete</attribute>
+          <attribute name="action">win.Delete</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">_Restore</attribute>
+          <attribute name="action">win.Restore</attribute>
+        </item>
+      </section>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">Select _All</attribute>
+          <attribute name="accel">&lt;Primary&gt;a</attribute>
+          <attribute name="action">win.CommonSelectAll</attribute>
+        </item>
+      </section>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">_Preferences</attribute>
+          <attribute name="action">win.CommonPreferences</attribute>
+        </item>
+      </section>
+    </submenu>
+    <submenu>
+      <attribute name="label" translatable="yes">_View</attribute>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">_Basic Information</attribute>
+          <attribute name="accel">&lt;Primary&gt;&lt;Shift&gt;i</attribute>
+          <attribute name="action">win.CommonDisplayBasicProperties</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">E_xtended Information</attribute>
+          <attribute name="accel">&lt;Primary&gt;&lt;Shift&gt;x</attribute>
+          <attribute name="action">win.CommonDisplayExtendedProperties</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">_Search Bar</attribute>
+          <attribute name="accel">F8</attribute>
+          <attribute name="action">win.CommonDisplaySearchbar</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">S_idebar</attribute>
+          <attribute name="accel">F9</attribute>
+          <attribute name="action">win.CommonDisplaySidebar</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">T_oolbar</attribute>
+          <attribute name="accel">&lt;Primary&gt;F9</attribute>
+          <attribute name="action">win.CommonDisplayToolbar</attribute>
+        </item>
+      </section>
+      <section>
+        <submenu>
+          <attribute name="label" translatable="yes">_Filter Photos</attribute>
+          <section>
+            <item>
+              <attribute name="label" translatable="no">★★★★★</attribute>
+              <attribute name="action">win.display.rating</attribute>
+              <attribute name="target">7</attribute>
+              <attribute name="accel">&lt;Primary&gt;5</attribute>
+            </item>
+            <item>
+              <attribute name="label" translatable="no">★★★★</attribute>
+              <attribute name="action">win.display.rating</attribute>
+              <attribute name="target">6</attribute>
+              <attribute name="accel">&lt;Primary&gt;4</attribute>
+            </item>
+            <item>
+              <attribute name="label" translatable="no">★★★</attribute>
+              <attribute name="action">win.display.rating</attribute>
+              <attribute name="target">5</attribute>
+              <attribute name="accel">&lt;Primary&gt;3</attribute>
+            </item>
+            <item>
+              <attribute name="label" translatable="no">★★</attribute>
+              <attribute name="action">win.display.rating</attribute>
+              <attribute name="target">4</attribute>
+              <attribute name="accel">&lt;Primary&gt;2</attribute>
+            </item>
+            <item>
+              <attribute name="label" translatable="no">★</attribute>
+              <attribute name="action">win.display.rating</attribute>
+              <attribute name="target">3</attribute>
+              <attribute name="accel">&lt;Primary&gt;1</attribute>
+            </item>
+            <item>
+              <attribute name="label" translatable="yes">_All Photos</attribute>
+              <attribute name="action">win.display.rating</attribute>
+              <attribute name="target">2</attribute>
+              <attribute name="accel">&lt;Primary&gt;0</attribute>
+            </item>
+            <item>
+              <attribute name="label" translatable="yes">All + _Rejected</attribute>
+              <attribute name="action">win.display.rating</attribute>
+              <attribute name="target">1</attribute>
+              <attribute name="accel">&lt;Primary&gt;9</attribute>
+            </item>
+            <item>
+              <attribute name="label" translatable="yes">Rejected _Only</attribute>
+              <attribute name="action">win.display.rating</attribute>
+              <attribute name="target">8</attribute>
+              <attribute name="accel">&lt;Primary&gt;8</attribute>
+            </item>
+          </section>
+        </submenu>
+      </section>
+      <section>
+        <submenu>
+          <attribute name="label" translatable="yes">Sort _Events</attribute>
+          <section>
+            <item>
+              <attribute name="label" translatable="yes">_Ascending</attribute>
+              <attribute name="action">win.CommonSortEvents</attribute>
+              <attribute name="target">ascending</attribute>
+            </item>
+            <item>
+              <attribute name="label" translatable="yes">D_escending</attribute>
+              <attribute name="action">win.CommonSortEvents</attribute>
+              <attribute name="target">descending</attribute>
+            </item>
+          </section>
+        </submenu>
+      </section>
+    </submenu>
+    <submenu>
+      <attribute name="label" translatable="yes">_Help</attribute>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">_Help</attribute>
+          <attribute name="accel">F1</attribute>
+          <attribute name="action">win.CommonHelpContents</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">_Frequently Asked Questions</attribute>
+          <attribute name="action">win.CommonHelpFAQ</attribute>
+        </item>
+        <item>
+          <attribute name="label" translatable="yes">_Report a Problem…</attribute>
+          <attribute name="action">win.CommonHelpReportProblem</attribute>
+        </item>
+      </section>
+      <section>
+        <item>
+          <attribute name="label" translatable="yes">_About</attribute>
+          <attribute name="action">win.CommonAbout</attribute>
+        </item>
+      </section>
+    </submenu>
+  </menu>
+  <menu id="TrashContextMenu">
+    <section>
+      <item>
+        <attribute name="label" translatable="yes">_Delete</attribute>
+        <attribute name="accel">Delete</attribute>
+        <attribute name="action">win.Delete</attribute>
+      </item>
+      <item>
+        <attribute name="label" translatable="yes">_Restore</attribute>
+        <attribute name="action">win.Restore</attribute>
+      </item>
+    </section>
+    <section>
+      <item>
+        <attribute name="label" translatable="yes">Show in File Mana_ger</attribute>
+        <attribute name="accel">&lt;Primary&gt;&lt;Shift&gt;m</attribute>
+        <attribute name="action">win.CommonJumpToFile</attribute>
+      </item>
+    </section>
+    <section>
+      <item>
+        <attribute name="label" translatable="yes">Empty T_rash</attribute>
+        <attribute name="action">win.CommonEmptyTrash</attribute>
+      </item>
+    </section>
+  </menu>
+  <menu id="TrashPageMenu">
+    <section>
+      <item>
+        <attribute name="label" translatable="yes">Empty T_rash</attribute>
+        <attribute name="action">win.CommonEmptyTrash</attribute>
+      </item>
+    </section>
+  </menu>
+  <object class="GtkToolbar" id="TrashToolbar">
+    <property name="visible">True</property>
+    <property name="can_focus">False</property>
+    <property name="toolbar_style">both-horiz</property>
+    <child>
+      <object class="GtkToolButton" id="ToolDelete">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="tooltip_text" translatable="yes">Remove the selected photos from the trash</property>
+        <property name="is_important">True</property>
+        <property name="action_name">win.Delete</property>
+        <property name="label" translatable="yes">_Delete</property>
+        <property name="use_underline">True</property>
+      </object>
+      <packing>
+        <property name="expand">False</property>
+        <property name="homogeneous">True</property>
+      </packing>
+    </child>
+    <child>
+      <object class="GtkToolButton" id="ToolRestore">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="tooltip_text" translatable="yes">Move the selected photos back into the library</property>
+        <property name="is_important">True</property>
+        <property name="action_name">win.Restore</property>
+        <property name="label" translatable="yes">_Restore</property>
+        <property name="use_underline">True</property>
+      </object>
+      <packing>
+        <property name="expand">False</property>
+        <property name="homogeneous">True</property>
+      </packing>
+    </child>
+    <child>
+      <object class="GtkToolButton" id="ToolEmptyTrash">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="tooltip_text" translatable="yes">Delete all photos in the trash</property>
+        <property name="is_important">True</property>
+        <property name="action_name">win.CommonEmptyTrash</property>
+        <property name="label" translatable="yes">Empty Trash</property>
+        <property name="use_underline">True</property>
+      </object>
+      <packing>
+        <property name="expand">False</property>
+        <property name="homogeneous">True</property>
+      </packing>
+    </child>
+    <child>
+      <object class="GtkSeparatorToolItem">
+        <property name="can_focus">False</property>
+      </object>
+      <packing>
+        <property name="expand">False</property>
+        <property name="homogeneous">False</property>
+      </packing>
+    </child>
+    <child>
+      <object class="GtkToolButton" id="ToolFind">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="tooltip_text" translatable="yes">Find an image by typing text that appears in its name or tags</property>
+        <property name="is_important">True</property>
+        <property name="action_name">win.CommonDisplaySearchbar</property>
+        <property name="label" translatable="yes">Find</property>
+        <property name="use_underline">True</property>
+        <property name="icon_name">edit-find-symbolic</property>
+      </object>
+      <packing>
+        <property name="expand">False</property>
+        <property name="homogeneous">True</property>
+      </packing>
+    </child>
+  </object>
+</interface>
-- 
cgit v1.2.3