recents menu refactoring

webkit2png
Manuel Genovés 2018-11-03 13:35:47 +01:00
parent 540671186e
commit fcab2687f1
4 changed files with 42 additions and 34 deletions

31
data/ui/Recents.ui 100644
View File

@ -0,0 +1,31 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.22.1 -->
<interface>
<requires lib="gtk+" version="3.20"/>
<object class="GtkRecentFilter" id="recent_md_filter">
<mime-types>
<mime-type>text/x-markdown</mime-type>
</mime-types>
</object>
<object class="GtkPopoverMenu" id="recent_md_popover">
<property name="can_focus">False</property>
<property name="hexpand">False</property>
<child>
<object class="GtkRecentChooserWidget" id="recent_md_widget">
<property name="width_request">200</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="valign">start</property>
<property name="filter">recent_md_filter</property>
<property name="limit">20</property>
<property name="show_icons">False</property>
<property name="show_not_found">False</property>
<property name="sort_type">mru</property>
</object>
<packing>
<property name="submenu">main</property>
<property name="position">1</property>
</packing>
</child>
</object>
</interface>

View File

@ -986,43 +986,13 @@ class UberwriterWindow(Gtk.ApplicationWindow):
def open_recent(self, _widget, data=None):
"""open the given recent document
"""
print("open")
if data:
if self.check_change() == Gtk.ResponseType.CANCEL:
return
self.load_file(data)
def generate_recent_files_menu(self):
"""Generate a menu of recent opened .md files
Returns:
GtkMenu -- the menu of recent items
"""
# Recent file filter
self.recent_manager = Gtk.RecentManager.get_default()
self.recent_files_menu = Gtk.RecentChooserMenu.new_for_manager(
self.recent_manager)
self.recent_files_menu.set_sort_type(Gtk.RecentSortType.MRU)
recent_filter = Gtk.RecentFilter.new()
recent_filter.add_mime_type('text/x-markdown')
self.recent_files_menu.set_filter(recent_filter)
menu = Gtk.Menu.new()
for entry in self.recent_files_menu.get_items():
if entry.exists():
item = Gtk.MenuItem.new_with_label(entry.get_display_name())
item.connect('activate', self.open_recent, entry.get_uri())
menu.append(item)
item.show()
menu.show()
return menu
# menu.attach_to_widget(widget)
# parent_menu.show()
def poll_for_motion(self):
"""check if the user has moved the cursor to show the headerbar

View File

@ -21,6 +21,7 @@ from gettext import gettext as _
from gi.repository import Gtk
from uberwriter_lib.helpers import get_builder
from uberwriter_lib.AppWindow import Application as app
class MainHeaderbar: #pylint: disable=too-few-public-methods
"""Sets up the main application headerbar
@ -104,8 +105,13 @@ def buttons():
Returns:
[NamedTupple] -- tupple of Gtk.Buttons
"""
builder_window_menu = get_builder('Menu')
model = builder_window_menu.get_object("Menu")
recents_builder = get_builder('Recents')
recents = recents_builder.get_object("recent_md_popover")
recents_wd = recents_builder.get_object("recent_md_widget")
recents_wd.connect('item-activated', app.on_open_recent)
Button = namedtuple("Button", "new open recent save search menu")
btn = Button(Gtk.Button().new_with_label(_("New")),
@ -119,6 +125,7 @@ def buttons():
btn.recent.set_image(Gtk.Image.new_from_icon_name("go-down-symbolic",
Gtk.IconSize.BUTTON))
btn.recent.set_tooltip_text(_("Open Recent"))
btn.recent.set_popover(recents)
btn.search.set_tooltip_text(_("Search and replace"))
btn.menu.set_tooltip_text(_("Menu"))
btn.menu.set_image(Gtk.Image.new_from_icon_name("open-menu-symbolic",
@ -127,7 +134,6 @@ def buttons():
btn.menu.set_menu_model(model)
btn.new.set_action_name("app.new")
btn.open.set_action_name("app.open")
btn.recent.set_action_name("app.open_recent")
btn.save.set_action_name("app.save")
btn.search.set_action_name("app.search")

View File

@ -230,8 +230,9 @@ class Application(Gtk.Application):
def on_open(self, _action, _value):
self.window.open_document()
def on_open_recent(self, action, value):
pass
def on_open_recent(self):
print(self)
#self.window.load_file(self.get_current_uri())
def on_example(self, _action, _value):
self.window.open_uberwriter_markdown()