diff --git a/data/media/css/gtk/base.css b/data/media/css/gtk/base.css
index 01671f3..543da99 100644
--- a/data/media/css/gtk/base.css
+++ b/data/media/css/gtk/base.css
@@ -172,4 +172,8 @@
.quick-preview-popup label {
color: @theme_fg_color;
+}
+
+.plain-listview {
+ background-color: @fg-color;
}
\ No newline at end of file
diff --git a/data/uberwriter.gresource.xml b/data/uberwriter.gresource.xml
index 62f1d65..c875ef3 100644
--- a/data/uberwriter.gresource.xml
+++ b/data/uberwriter.gresource.xml
@@ -14,6 +14,7 @@
ui/Shortcuts.ui
ui/Window.ui
ui/Headerbar.ui
+ ui/PreviewLayoutSwitcherItem.ui
About.ui
diff --git a/data/ui/Headerbar.ui b/data/ui/Headerbar.ui
index 0e8cc2b..3dafcb2 100644
--- a/data/ui/Headerbar.ui
+++ b/data/ui/Headerbar.ui
@@ -2,6 +2,45 @@
+
True
False
@@ -13,8 +52,8 @@
True
False
- 6
- 18
+ 12
+ 12
12
12
vertical
@@ -119,174 +158,18 @@
True
False
- 6
- 6
- 6
+ 12
6
+ False
0
- in
+ none
-
+
True
False
-
-
- True
- False
-
-
- True
- False
- 10
-
-
- True
- False
- 32
- preview-layout-full-width-symbolic
-
-
- False
- True
- 0
-
-
-
-
- True
- False
- start
- 6
- Full-Width
-
-
- True
- True
- 1
-
-
-
-
-
-
-
-
- True
- False
-
-
- True
- False
- 10
-
-
- True
- False
- 32
- preview-layout-half-width-symbolic
-
-
- False
- True
- 0
-
-
-
-
- True
- False
- start
- 6
- Half-Width
-
-
- True
- True
- 1
-
-
-
-
-
-
-
-
- True
- True
-
-
- True
- False
- 10
-
-
- True
- False
- 32
- preview-layout-half-height-symbolic
-
-
- False
- True
- 0
-
-
-
-
- True
- False
- start
- Half-Height
-
-
- True
- True
- 1
-
-
-
-
-
-
-
-
- True
- True
-
-
- True
- False
- 10
-
-
- True
- False
- 32
- preview-layout-windowed-symbolic
-
-
- False
- True
- 0
-
-
-
-
- True
- False
- start
- Windowed
-
-
- True
- True
- 1
-
-
-
-
-
-
+
@@ -300,13 +183,9 @@
-
- Sync views
+
True
- True
- False
- 4
- True
+ False
False
@@ -314,6 +193,46 @@
1
+
+
+ True
+ False
+ 6
+ 6
+ 10
+ 12
+ 10
+
+
+ True
+ True
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ False
+ 6
+ Sync views
+
+
+ False
+ True
+ 1
+
+
+
+
+ False
+ True
+ 2
+
+
@@ -467,12 +386,13 @@
False
2
-
+
True
True
True
app.preview
preview_icon
+ True
False
diff --git a/data/ui/PreviewLayoutSwitcherItem.ui b/data/ui/PreviewLayoutSwitcherItem.ui
new file mode 100644
index 0000000..62a62a6
--- /dev/null
+++ b/data/ui/PreviewLayoutSwitcherItem.ui
@@ -0,0 +1,48 @@
+
+
+
+
+
+ True
+ True
+ app.preview_mode
+
+
+ True
+ False
+ 4
+ 4
+ 10
+ 10
+ 10
+
+
+ True
+ False
+ 16
+ preview-layout-full-width-symbolic
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ False
+ start
+ 6
+ Full-Width
+
+
+ True
+ True
+ 1
+
+
+
+
+
+
diff --git a/uberwriter/headerbars.py b/uberwriter/headerbars.py
index 102b44a..ca4af5f 100644
--- a/uberwriter/headerbars.py
+++ b/uberwriter/headerbars.py
@@ -18,31 +18,97 @@
import gi
+from gettext import gettext as _
+
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk, GLib
from uberwriter.helpers import get_descendant
+from uberwriter.settings import Settings
class BaseHeaderbar:
"""Base class for all headerbars
"""
+ # preview modes
+ FULL_WIDTH = 0
+ HALF_WIDTH = 1
+ HALF_HEIGHT = 2
+ WINDOWED = 3
+
def __init__(self, app):
+ self.settings = Settings.new()
+
self.builder = Gtk.Builder()
self.builder.add_from_resource(
"/de/wolfvollprecht/UberWriter/ui/Headerbar.ui")
- self.hb = self.builder.get_object("Headerbar")
- self.hb_revealer = self.builder.get_object("titlebar_revealer")
+ self.hb = self.builder.get_object(
+ "Headerbar")
+ self.hb_revealer = self.builder.get_object(
+ "titlebar_revealer")
- self.preview_toggle_revealer = self.builder.get_object("preview_switch_revealer")
+ self.preview_toggle_revealer = self.builder.get_object(
+ "preview_switch_revealer")
+ self.preview_switcher_icon = self.builder.get_object(
+ "preview_switch_toggle_icon")
+
+ self.__populate_layout_switcher_menu()
+ self.update_preview_layout_icon()
self.menu_button = self.builder.get_object("menu_button")
self.recents_button = self.builder.get_object("recents_button")
- def set_preview_layout_icon(self, icon):
+ def update_preview_layout_icon(self):
+ mode = self.settings.get_enum("preview-mode")
+ self.preview_switcher_icon.set_from_icon_name(
+ self.__get_icon_for_preview_mode(mode), 4)
- self.preview_switcher_icon = self.builder.get_object("preview_switch_toggle_icon")
+ def __populate_layout_switcher_menu(self):
+ preview_menu = self.builder.get_object("preview_switch_options")
+ modes = self.settings.props.settings_schema.get_key("preview-mode").get_range()[1]
+
+ for i, mode in enumerate(modes):
+ item_builder = Gtk.Builder()
+ item_builder.add_from_resource(
+ "/de/wolfvollprecht/UberWriter/ui/PreviewLayoutSwitcherItem.ui")
+ menu_item = item_builder.get_object("switcherItem")
+
+ menu_item.label = item_builder.get_object("label")
+ menu_item.label.set_text(self.__get_text_for_preview_mode(i))
+
+ menu_item.icon = item_builder.get_object("icon")
+ menu_item.icon.set_from_icon_name(self.__get_icon_for_preview_mode(i), 16)
+
+ menu_item.set_action_name("app.preview_mode")
+ menu_item.set_action_target_value(GLib.Variant.new_string(mode))
+
+ menu_item.show_all()
+ preview_menu.insert(menu_item, -1)
+
+ def __get_text_for_preview_mode(self, mode):
+ if mode == self.FULL_WIDTH:
+ return _("Full-Width")
+ elif mode == self.HALF_WIDTH:
+ return _("Half-Width")
+ elif mode == self.HALF_HEIGHT:
+ return _("Half-Height")
+ elif mode == self.WINDOWED:
+ return _("Windowed")
+ else:
+ raise ValueError("Unknown preview mode {}".format(mode))
+
+ def __get_icon_for_preview_mode(self, mode):
+ if mode == self.FULL_WIDTH:
+ return "preview-layout-full-width-symbolic"
+ elif mode == self.HALF_WIDTH:
+ return "preview-layout-half-width-symbolic"
+ elif mode == self.HALF_HEIGHT:
+ return "preview-layout-half-height-symbolic"
+ elif mode == self.WINDOWED:
+ return "preview-layout-windowed-symbolic"
+ else:
+ raise ValueError("Unknown preview mode {}".format(mode))
class MainHeaderbar(BaseHeaderbar): # pylint: disable=too-few-public-methods
diff --git a/uberwriter/main_window.py b/uberwriter/main_window.py
index 6db1653..81edfbd 100644
--- a/uberwriter/main_window.py
+++ b/uberwriter/main_window.py
@@ -450,6 +450,7 @@ class MainWindow(StyledWindow):
def update_preview_mode(self):
self.preview_handler.update_preview_mode()
+ self.headerbar.update_preview_layout_icon()
def menu_toggle_sidebar(self, _widget=None):
"""WIP