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 @@ + + False + + + True + False + + + True + True + True + + + + + + False + True + 0 + + + + + True + True + True + + + + + + False + True + 1 + + + + + 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