Improve macOS menu bar
This commit is contained in:
@@ -59,8 +59,15 @@ class DetailsDialog(Adw.Dialog):
|
|||||||
|
|
||||||
cover_changed: bool = False
|
cover_changed: bool = False
|
||||||
|
|
||||||
|
is_open = False
|
||||||
|
|
||||||
def __init__(self, game: Optional[Game] = None, **kwargs: Any):
|
def __init__(self, game: Optional[Game] = None, **kwargs: Any):
|
||||||
super().__init__(**kwargs)
|
super().__init__(**kwargs)
|
||||||
|
|
||||||
|
# Make it so only one dialog can be open at a time
|
||||||
|
self.__class__.is_open = True
|
||||||
|
self.connect("closed", lambda *_: self.set_is_open(False))
|
||||||
|
|
||||||
self.game: Game = game
|
self.game: Game = game
|
||||||
self.game_cover: GameCover = GameCover({self.cover})
|
self.game_cover: GameCover = GameCover({self.cover})
|
||||||
|
|
||||||
@@ -325,3 +332,6 @@ class DetailsDialog(Adw.Dialog):
|
|||||||
|
|
||||||
def choose_cover(self, *_args: Any) -> None:
|
def choose_cover(self, *_args: Any) -> None:
|
||||||
self.image_file_dialog.open(self.get_root(), None, self.set_cover)
|
self.image_file_dialog.open(self.get_root(), None, self.set_cover)
|
||||||
|
|
||||||
|
def set_is_open(self, is_open: bool) -> None:
|
||||||
|
self.__class__.is_open = is_open
|
||||||
|
|||||||
@@ -69,12 +69,32 @@ if sys.platform == "darwin":
|
|||||||
def applicationDidFinishLaunching_(self, *_args: Any) -> None:
|
def applicationDidFinishLaunching_(self, *_args: Any) -> None:
|
||||||
main_menu = NSApp.mainMenu()
|
main_menu = NSApp.mainMenu()
|
||||||
|
|
||||||
|
add_game_menu_item = NSMenuItem.alloc().initWithTitle_action_keyEquivalent_(
|
||||||
|
"Add Game", "add:", "n"
|
||||||
|
)
|
||||||
|
|
||||||
|
import_menu_item = NSMenuItem.alloc().initWithTitle_action_keyEquivalent_(
|
||||||
|
"Import", "import:", "i"
|
||||||
|
)
|
||||||
|
|
||||||
|
file_menu = NSMenu.alloc().init()
|
||||||
|
file_menu.addItem_(add_game_menu_item)
|
||||||
|
file_menu.addItem_(import_menu_item)
|
||||||
|
|
||||||
|
file_menu_item = NSMenuItem.alloc().initWithTitle_action_keyEquivalent_(
|
||||||
|
"File", None, ""
|
||||||
|
)
|
||||||
|
file_menu_item.setSubmenu_(file_menu)
|
||||||
|
main_menu.addItem_(file_menu_item)
|
||||||
|
|
||||||
show_hidden_menu_item = (
|
show_hidden_menu_item = (
|
||||||
NSMenuItem.alloc().initWithTitle_action_keyEquivalent_(
|
NSMenuItem.alloc().initWithTitle_action_keyEquivalent_(
|
||||||
"Show Hidden", "hidden:", "h"
|
"Show Hidden", "hidden:", "h"
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
windows_menu = NSMenu.alloc().init()
|
||||||
|
|
||||||
view_menu = NSMenu.alloc().init()
|
view_menu = NSMenu.alloc().init()
|
||||||
view_menu.addItem_(show_hidden_menu_item)
|
view_menu.addItem_(show_hidden_menu_item)
|
||||||
|
|
||||||
@@ -111,11 +131,23 @@ if sys.platform == "darwin":
|
|||||||
|
|
||||||
NSApp.setHelpMenu_(help_menu)
|
NSApp.setHelpMenu_(help_menu)
|
||||||
|
|
||||||
|
def add_(self, *_args: Any) -> None:
|
||||||
|
if (not shared.win) or (not (app := shared.win.get_application())):
|
||||||
|
return
|
||||||
|
|
||||||
|
app.lookup_action("add_game").activate()
|
||||||
|
|
||||||
|
def import_(self, *_args: Any) -> None:
|
||||||
|
if (not shared.win) or (not (app := shared.win.get_application())):
|
||||||
|
return
|
||||||
|
|
||||||
|
app.lookup_action("import").activate()
|
||||||
|
|
||||||
def hidden_(self, *_args: Any) -> None:
|
def hidden_(self, *_args: Any) -> None:
|
||||||
if not shared.win:
|
if not shared.win:
|
||||||
return
|
return
|
||||||
|
|
||||||
shared.win.on_show_hidden_action()
|
shared.win.lookup_action("show_hidden").activate()
|
||||||
|
|
||||||
def shortcuts_(self, *_args: Any) -> None:
|
def shortcuts_(self, *_args: Any) -> None:
|
||||||
if (not shared.win) or (not (overlay := shared.win.get_help_overlay())):
|
if (not shared.win) or (not (overlay := shared.win.get_help_overlay())):
|
||||||
@@ -360,7 +392,7 @@ class CartridgesApplication(Adw.Application):
|
|||||||
_parameter: Any = None,
|
_parameter: Any = None,
|
||||||
page_name: Optional[str] = None,
|
page_name: Optional[str] = None,
|
||||||
expander_row: Optional[str] = None,
|
expander_row: Optional[str] = None,
|
||||||
) -> CartridgesWindow:
|
) -> Optional[CartridgesPreferences]:
|
||||||
if CartridgesPreferences.is_open:
|
if CartridgesPreferences.is_open:
|
||||||
return
|
return
|
||||||
|
|
||||||
@@ -383,6 +415,9 @@ class CartridgesApplication(Adw.Application):
|
|||||||
DetailsDialog(shared.win.active_game).present(shared.win)
|
DetailsDialog(shared.win.active_game).present(shared.win)
|
||||||
|
|
||||||
def on_add_game_action(self, *_args: Any) -> None:
|
def on_add_game_action(self, *_args: Any) -> None:
|
||||||
|
if DetailsDialog.is_open:
|
||||||
|
return
|
||||||
|
|
||||||
DetailsDialog().present(shared.win)
|
DetailsDialog().present(shared.win)
|
||||||
|
|
||||||
def on_import_action(self, *_args: Any) -> None:
|
def on_import_action(self, *_args: Any) -> None:
|
||||||
|
|||||||
Reference in New Issue
Block a user