diff --git a/.gitignore b/.gitignore
index 9300151..8be02eb 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,26 +1,8 @@
-build/lib.linux-x86_64-2.7
*.pyc
__pycache__/
build/
-_build/
-debian/uberwriter/DEBIAN
-debian/uberwriter/opt
-debian/uberwriter/usr
-flatpak/*
-!flatpak/uberwriter.json
-!flatpak/de.wolfvollprecht.UberWriter.*
-!flatpak/flatpak_texlive.json
-!flatpak/texlive_install.sh
-!flatpak/python3-enchant.json
-!flatpak/python3-packages.json
-*.py~
-data/ui/shortcut_handlers
-*.ui~
+*.*~
.vscode/
.idea/
-*.glade~
-dist/uberwriter-2.0b0-py3.7.egg
builddir/*
-dist/
-uberwriter.egg-info
-build-aux/flatpak/.flatpak-builder/*
\ No newline at end of file
+build-aux/*
\ No newline at end of file
diff --git a/data/uberwriter.gresource.xml b/data/uberwriter.gresource.xml
index ea9446b..c85d3be 100644
--- a/data/uberwriter.gresource.xml
+++ b/data/uberwriter.gresource.xml
@@ -9,6 +9,7 @@
ui/Recents.ui
ui/Shortcuts.ui
ui/Window.ui
+ ui/Headerbar.ui
About.ui
diff --git a/data/ui/Headerbar.ui b/data/ui/Headerbar.ui
new file mode 100644
index 0000000..61e4843
--- /dev/null
+++ b/data/ui/Headerbar.ui
@@ -0,0 +1,132 @@
+
+
+
+
+
+
+
+
diff --git a/data/ui/Recents.ui b/data/ui/Recents.ui
index 06bc23a..a7b237c 100644
--- a/data/ui/Recents.ui
+++ b/data/ui/Recents.ui
@@ -17,7 +17,10 @@
True
False
start
- 6
+ 6
+ 6
+ 6
+ 6
recent_md_filter
20
False
diff --git a/data/ui/Window.ui b/data/ui/Window.ui
index 5d17ee0..16fd925 100644
--- a/data/ui/Window.ui
+++ b/data/ui/Window.ui
@@ -414,7 +414,6 @@
diff --git a/uberwriter/headerbars.py b/uberwriter/headerbars.py
index a70af47..19991ae 100644
--- a/uberwriter/headerbars.py
+++ b/uberwriter/headerbars.py
@@ -31,9 +31,17 @@ class MainHeaderbar: #pylint: disable=too-few-public-methods
"""
def __init__(self, app):
- self.hb = Gtk.HeaderBar().new() #pylint: disable=C0103
- self.hb.props.show_close_button = True
- self.hb.get_style_context().add_class("titlebar")
+
+ builder = Gtk.Builder()
+ builder.add_from_resource(
+ "/de/wolfvollprecht/UberWriter/ui/Headerbar.ui")
+
+ self.hb = builder.get_object("Headerbar")
+
+ self.menu_button = builder.get_object("menu_button")
+ self.recents_button = builder.get_object("recents_button")
+
+ add_menus(self, app)
self.hb_revealer = Gtk.Revealer(name='titlebar-revealer')
self.hb_revealer.add(self.hb)
@@ -47,9 +55,6 @@ class MainHeaderbar: #pylint: disable=too-few-public-methods
self.hb_container.add(self.hb_revealer)
self.hb_container.show()
- self.btns = main_buttons(app)
- pack_main_buttons(self.hb, self.btns)
-
self.hb.show_all()
@@ -81,35 +86,35 @@ class FullscreenHeaderbar:
"""Sets up and manages the fullscreen headerbar and his events
"""
- def __init__(self, builder, app):
- self.events = builder.get_object("FullscreenEventbox")
- self.revealer = builder.get_object(
- "FullscreenHbPlaceholder")
- self.revealer.show()
- self.revealer.set_reveal_child(False)
+ def __init__(self, fs_builder, app):
- self.hb = builder.get_object("FullscreenHeaderbar") #pylint: disable=C0103
- self.hb.get_style_context().add_class("titlebar")
- self.hb.show()
- self.events.hide()
-
- self.btns = main_buttons(app)
-
- fs_btn_exit = Gtk.Button().new_from_icon_name("view-restore-symbolic",
- Gtk.IconSize.BUTTON)
- fs_btn_exit.set_tooltip_text(_("Exit Fullscreen"))
- fs_btn_exit.set_action_name("app.fullscreen")
-
- pack_main_buttons(self.hb, self.btns, fs_btn_exit)
+ builder = Gtk.Builder()
+ builder.add_from_resource(
+ "/de/wolfvollprecht/UberWriter/ui/Headerbar.ui")
+ self.hb = builder.get_object("Headerbar")
+ self.hb.set_show_close_button(False)
self.hb.show_all()
+ self.menu_button = builder.get_object("menu_button")
+ self.recents_button = builder.get_object("recents_button")
+
+ self.exit_fs_button = builder.get_object("exit_fs_button")
+ self.exit_fs_button.set_visible(True)
+
+ add_menus(self, app)
+
+ self.events = fs_builder.get_object("FullscreenEventbox")
+ self.revealer = fs_builder.get_object(
+ "FullscreenHbPlaceholder")
+ self.revealer.add(self.hb)
+
# this is a little tricky
# we show hb when the cursor enters an area of 1 px at the top of the window
# as the hb is shown the height of the eventbox grows to accomodate it
self.events.connect('enter_notify_event', self.show_fs_hb)
self.events.connect('leave_notify_event', self.hide_fs_hb)
- self.btns.menu.get_popover().connect('closed', self.hide_fs_hb)
+ self.menu_button.get_popover().connect('closed', self.hide_fs_hb)
def show_fs_hb(self, _widget, _data=None):
"""show headerbar of the fullscreen mode
@@ -119,34 +124,24 @@ class FullscreenHeaderbar:
def hide_fs_hb(self, _widget, _data=None):
"""hide headerbar of the fullscreen mode
"""
- if self.btns.menu.get_active():
+ if self.menu_button.get_active():
pass
else:
self.revealer.set_reveal_child(False)
-def main_buttons(app):
- """constructor for the headerbar buttons
+def add_menus(headerbar, app):
- Returns:
- [NamedTupple] -- tupple of Gtk.Buttons
- """
-
- Button = namedtuple("Button", "new open_recent save search menu")
- btn = Button(Gtk.Button().new_with_label(_("New")),
- Gtk.Box().new(0, 0),
- Gtk.Button().new_with_label(_("Save")),
- Gtk.Button().new_from_icon_name("system-search-symbolic",
- Gtk.IconSize.BUTTON),
- Gtk.MenuButton().new())
+ # Add menu model to the menu button
builder_window_menu = Gtk.Builder()
builder_window_menu.add_from_resource(
"/de/wolfvollprecht/UberWriter/ui/Menu.ui")
model = builder_window_menu.get_object("Menu")
- open_button = Gtk.Button().new_with_label(_("Open"))
- open_button.set_action_name("app.open")
+ headerbar.menu_button.set_menu_model(model)
+
+ # Add recents menu to the open recents button
recents_builder = Gtk.Builder()
recents_builder.add_from_resource(
@@ -159,44 +154,5 @@ def main_buttons(app):
recents_wd = recents_builder.get_object("recent_md_widget")
recents_wd.connect('item-activated', app.on_open_recent)
- recents_button = Gtk.MenuButton().new()
- recents_button.set_image(Gtk.Image.new_from_icon_name("pan-down-symbolic",
- Gtk.IconSize.BUTTON))
- recents_button.set_tooltip_text(_("Open Recent"))
- recents_button.set_popover(recents)
-
- btn.open_recent.get_style_context().add_class("linked")
- btn.open_recent.pack_start(open_button, False, False, 0)
- btn.open_recent.pack_end(recents_button, False, False, 0)
-
- btn.search.set_tooltip_text(_("Find"))
- btn.menu.set_tooltip_text(_("Menu"))
- btn.menu.set_image(Gtk.Image.new_from_icon_name("open-menu-symbolic",
- Gtk.IconSize.BUTTON))
- btn.menu.set_use_popover(True)
- btn.menu.set_menu_model(model)
- btn.new.set_action_name("app.new")
- btn.save.set_action_name("app.save")
- btn.search.set_action_name("app.search")
-
- return btn
-
-
-def pack_main_buttons(headerbar, btn, btn_exit=None):
- """Pack the given buttons in the given headerbar
-
- Arguments:
- headerbar {Gtk.HeaderBar} -- The headerbar where to put the buttons
- btn {Tupple of Gtk.Buttons} -- The buttons to pack
-
- Keyword Arguments:
- btn_exit {Gtk.Button} -- Optional exit fullscreen button (default: {None})
- """
-
- headerbar.pack_start(btn.new)
- headerbar.pack_start(btn.open_recent)
- if btn_exit:
- headerbar.pack_end(btn_exit)
- headerbar.pack_end(btn.menu)
- headerbar.pack_end(btn.search)
- headerbar.pack_end(btn.save)
+ headerbar.recents_button.set_popover(recents)
+ headerbar.recents_button.set_sensitive(True)