Moving to use ContextMenu

This commit is contained in:
2022-10-25 23:27:21 -05:00
parent efa42a301c
commit 9697e8ca16
16 changed files with 154 additions and 466 deletions

View File

@@ -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"

View File

@@ -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()

View File

@@ -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:
'''

View File

@@ -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:

View File

@@ -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: