diff --git a/README.md b/README.md index 1bddfc5..21b1e12 100644 --- a/README.md +++ b/README.md @@ -10,14 +10,15 @@ A nut obsessed saber-toothed client for pnut.io ## TODO -- [ ] Compose window +- [x] Compose window +- [x] Menu (about, refresh, logout) +- [x] Keyboard shortcuts - [ ] Avatars - [ ] Post actions (reply, bookmark, repost, quote, copy, delete) +- [ ] Loading indicator - [ ] Load newer posts - [ ] Load older posts -- [ ] Keyboard shortcuts - [ ] Render post media -- [ ] Menu (about, refresh, logout, quit) - [ ] Settings page - [ ] App icon and package metadata - [ ] Post media / upload files diff --git a/src/main.py b/src/main.py index 70246d6..27ca0f5 100644 --- a/src/main.py +++ b/src/main.py @@ -57,6 +57,32 @@ class Application(Gtk.Application): except GLib.Error: pass + action = Gio.SimpleAction.new('newpost', None) + action.connect('activate', self.on_new_post) + self.add_action(action) + self.set_accels_for_action('app.newpost',["n"]) + + action = Gio.SimpleAction.new('refresh', None) + action.connect('activate', self.on_refresh) + self.add_action(action) + self.set_accels_for_action('app.refresh',["r"]) + + action = Gio.SimpleAction.new('preferences', None) + action.connect('activate', self.on_preferences) + self.add_action(action) + self.set_accels_for_action('app.preferences',[","]) + + action = Gio.SimpleAction.new('about', None) + action.connect('activate', self.on_about) + self.add_action(action) + + action = Gio.SimpleAction.new('quit', None) + action.connect('activate', self.on_quit) + self.add_action(action) + self.set_accels_for_action('app.quit',["q"]) + + self.builder = Gtk.Builder.new_from_resource("/dev/thrrgilag/squeak/menu.ui") + def do_activate(self): self.win = self.props.active_window if not self.win: @@ -133,21 +159,35 @@ class Application(Gtk.Application): new_post_button.connect('clicked', self.on_new_post) self.header.pack_start(new_post_button) - reload_button = Gtk.Button.new_from_icon_name('view-refresh-symbolic', 1) - reload_button.connect('clicked', self.emit_refresh) - self.header.pack_start(reload_button) + menu = self.builder.get_object("app-menu") + menu_button = Gtk.Button.new_from_icon_name('open-menu-symbolic', 1) + menu_button.connect('clicked', self.on_main_popover) + self.main_popover = Gtk.Popover.new_from_model(menu_button, menu) + self.header.pack_end(menu_button) self.header.show_all() self.stack.show_all() - def emit_refresh(self, button): + def on_new_post(self, widget, param=None): + compose = ComposeWindow() + compose.set_transient_for(self.win) + + def on_main_popover(self, button): + self.main_popover.popup() + + def on_refresh(self, action, param): timeline = self.stack.get_visible_child() timeline.emit('refresh') - def on_new_post(self, button): - compose = ComposeWindow() - compose.set_transient_for(self.win) + def on_preferences(self, action, param): + pass + + def on_about(self, action, param): + pass + + def on_quit(self, action, param): + self.quit() def main(version): logging.basicConfig(level=logging.DEBUG) diff --git a/src/meson.build b/src/meson.build index 860f7f5..377fee2 100644 --- a/src/meson.build +++ b/src/meson.build @@ -2,12 +2,12 @@ pkgdatadir = join_paths(get_option('prefix'), get_option('datadir'), meson.proje moduledir = join_paths(pkgdatadir, 'squeak') gnome = import('gnome') -#gnome.compile_resources('squeak', -# 'squeak.gresource.xml', -# gresource_bundle: true, -# install: true, -# install_dir: pkgdatadir, -#) +gnome.compile_resources('squeak', + 'squeak.gresource.xml', + gresource_bundle: true, + install: true, + install_dir: pkgdatadir, +) python = import('python') diff --git a/src/squeak.in b/src/squeak.in index 1c31cc6..5cd528c 100755 --- a/src/squeak.in +++ b/src/squeak.in @@ -34,8 +34,8 @@ if __name__ == '__main__': import gi from gi.repository import Gio - #resource = Gio.Resource.load(os.path.join(pkgdatadir, 'squeak.gresource')) - #resource._register() + resource = Gio.Resource.load(os.path.join(pkgdatadir, 'squeak.gresource')) + resource._register() from squeak import main sys.exit(main.main(VERSION)) diff --git a/src/widgets.py b/src/widgets.py index 9ae40d9..6ba6a52 100644 --- a/src/widgets.py +++ b/src/widgets.py @@ -23,7 +23,7 @@ import logging gi.require_version('Gdk', '3.0') gi.require_version('Gtk', '3.0') -from gi.repository import GObject, Gdk, Gtk, Gio, GLib +from gi.repository import GObject, Gdk, Gtk gi.require_version('Handy', '1') from gi.repository import Handy