Moving to use ContextMenu
This commit is contained in:
@@ -24,7 +24,6 @@ def daemon_threaded_wrapper(fn):
|
||||
|
||||
|
||||
|
||||
|
||||
# NOTE: Just reminding myself we can add to builtins two different ways...
|
||||
# __builtins__.update({"event_system": Builtins()})
|
||||
builtins.app_name = "SolarFM"
|
||||
|
@@ -22,7 +22,7 @@ if __name__ == "__main__":
|
||||
""" Set process title, get arguments, and create GTK main thread. """
|
||||
|
||||
try:
|
||||
setproctitle('SolarFM')
|
||||
setproctitle(f"{app_name}")
|
||||
faulthandler.enable() # For better debug info
|
||||
|
||||
parser = argparse.ArgumentParser()
|
||||
|
@@ -4,6 +4,8 @@ from dataclasses import dataclass
|
||||
|
||||
# Lib imports
|
||||
import gi
|
||||
gi.require_version('Gtk', '3.0')
|
||||
from gi.repository import Gtk
|
||||
from gi.repository import GLib
|
||||
|
||||
# Application imports
|
||||
@@ -100,6 +102,89 @@ class Controller_Data:
|
||||
if settings.is_debug():
|
||||
self.window.set_interactive_debugging(True)
|
||||
|
||||
self.build_context_menu()
|
||||
|
||||
|
||||
def build_context_menu(self) -> None:
|
||||
main_menu = Gtk.Menu()
|
||||
open_menu = Gtk.Menu()
|
||||
filea_menu = Gtk.Menu()
|
||||
plugins_menu = Gtk.Menu()
|
||||
open_a = Gtk.MenuItem("Open Actions")
|
||||
file_a = Gtk.MenuItem("File Actions")
|
||||
plugins = Gtk.MenuItem("Plugins")
|
||||
|
||||
self._appen_menu_items(main_menu, [open_a, file_a, plugins])
|
||||
|
||||
open = Gtk.ImageMenuItem("Open")
|
||||
open.set_name("open")
|
||||
open.set_image( Gtk.Image(stock=Gtk.STOCK_OPEN) )
|
||||
open.set_always_show_image(True)
|
||||
open.connect("activate", self.do_action_from_menu_controls)
|
||||
|
||||
open_with = Gtk.ImageMenuItem("Open With")
|
||||
open_with.set_name("open_with")
|
||||
open_with.set_image( Gtk.Image(stock=Gtk.STOCK_OPEN) )
|
||||
open_with.set_always_show_image(True)
|
||||
open_with.connect("activate", self.do_action_from_menu_controls)
|
||||
|
||||
execute = Gtk.ImageMenuItem("Execute")
|
||||
execute.set_name("execute")
|
||||
execute.set_image( Gtk.Image(stock=Gtk.STOCK_EXECUTE) )
|
||||
execute.set_always_show_image(True)
|
||||
execute.connect("activate", self.do_action_from_menu_controls)
|
||||
|
||||
execute_term = Gtk.ImageMenuItem("Execute in Terminal")
|
||||
execute_term.set_name("execute_in_terminal")
|
||||
execute_term.set_image( Gtk.Image(stock=Gtk.STOCK_EXECUTE) )
|
||||
execute_term.set_always_show_image(True)
|
||||
execute_term.connect("activate", self.do_action_from_menu_controls)
|
||||
|
||||
self._appen_menu_items(open_menu, [open, open_with, execute, execute_term])
|
||||
|
||||
new = Gtk.ImageMenuItem("New")
|
||||
new.set_name("create")
|
||||
new.set_image( Gtk.Image(stock=Gtk.STOCK_ADD) )
|
||||
new.set_always_show_image(True)
|
||||
new.connect("activate", self.do_action_from_menu_controls)
|
||||
|
||||
rename = Gtk.ImageMenuItem("Rename")
|
||||
rename.set_name("rename")
|
||||
rename.set_image( Gtk.Image(stock=Gtk.STOCK_EDIT) )
|
||||
rename.set_always_show_image(True)
|
||||
rename.connect("activate", self.do_action_from_menu_controls)
|
||||
|
||||
cut = Gtk.ImageMenuItem("Cut")
|
||||
cut.set_name("cut")
|
||||
cut.set_image( Gtk.Image(stock=Gtk.STOCK_CUT) )
|
||||
cut.set_always_show_image(True)
|
||||
cut.connect("activate", self.do_action_from_menu_controls)
|
||||
|
||||
copy = Gtk.ImageMenuItem("Copy")
|
||||
copy.set_name("copy")
|
||||
copy.set_image( Gtk.Image(stock=Gtk.STOCK_COPY) )
|
||||
copy.set_always_show_image(True)
|
||||
copy.connect("activate", self.do_action_from_menu_controls)
|
||||
|
||||
paste = Gtk.ImageMenuItem("Paste")
|
||||
paste.set_name("paste")
|
||||
paste.set_image( Gtk.Image(stock=Gtk.STOCK_PASTE) )
|
||||
paste.set_always_show_image(True)
|
||||
paste.connect("activate", self.do_action_from_menu_controls)
|
||||
|
||||
self._appen_menu_items(filea_menu, [new, rename, cut, copy, paste])
|
||||
open_a.set_submenu(open_menu)
|
||||
file_a.set_submenu(filea_menu)
|
||||
plugins.set_submenu(plugins_menu)
|
||||
|
||||
main_menu.attach_to_widget(self.window, None)
|
||||
main_menu.show_all()
|
||||
self.builder.expose_object("context_menu", main_menu)
|
||||
self.builder.expose_object("context_menu_plugins", plugins_menu)
|
||||
|
||||
def _appen_menu_items(self, menu, items):
|
||||
for item in items:
|
||||
menu.append(item)
|
||||
|
||||
def get_current_state(self) -> State:
|
||||
'''
|
||||
|
@@ -83,10 +83,10 @@ class ShowHideMixin:
|
||||
self.builder.get_object("plugin_controls").hide()
|
||||
|
||||
def show_context_menu(self, widget=None, eve=None):
|
||||
self.builder.get_object("context_menu_popup").run()
|
||||
self.builder.get_object("context_menu").popup_at_pointer(None)
|
||||
|
||||
def hide_context_menu(self, widget=None, eve=None):
|
||||
self.builder.get_object("context_menu_popup").hide()
|
||||
self.builder.get_object("context_menu").popdown()
|
||||
|
||||
def show_new_file_menu(self, widget=None, eve=None):
|
||||
if widget:
|
||||
|
@@ -56,7 +56,8 @@ class ManifestProcessor:
|
||||
if requests["ui_target"] in [
|
||||
"none", "other", "main_Window", "main_menu_bar",
|
||||
"main_menu_bttn_box_bar", "path_menu_bar", "plugin_control_list",
|
||||
"context_menu", "window_1", "window_2", "window_3", "window_4"
|
||||
"context_menu", "context_menu_plugins", "window_1",
|
||||
"window_2", "window_3", "window_4"
|
||||
]:
|
||||
if requests["ui_target"] == "other":
|
||||
if "ui_target_id" in keys:
|
||||
|
Reference in New Issue
Block a user