Skip to content

Commit

Permalink
Move ApplicationDelegate to separate module
Browse files Browse the repository at this point in the history
  • Loading branch information
kra-mo committed Jul 10, 2024
1 parent 0673024 commit b3a65c3
Show file tree
Hide file tree
Showing 3 changed files with 123 additions and 93 deletions.
120 changes: 120 additions & 0 deletions cartridges/application_delegate.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,120 @@
# application_delegate.py
#
# Copyright 2024 kramo
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
#
# SPDX-License-Identifier: GPL-3.0-or-later

"""A set of methods that manage your app’s life cycle and its interaction
with common system services."""

from typing import Any

from AppKit import NSApp, NSApplication, NSMenu, NSMenuItem # type: ignore
from Foundation import NSObject # type: ignore
from gi.repository import Gio # type: ignore
from showtime import shared


class ApplicationDelegate(NSObject): # type: ignore
"""A set of methods that manage your app’s life cycle and its interaction
with common system services."""

def applicationDidFinishLaunching_(self, *_args: Any) -> None:
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 = NSMenuItem.alloc().initWithTitle_action_keyEquivalent_(
"Show Hidden", "hidden:", "h"
)

windows_menu = NSMenu.alloc().init()

view_menu = NSMenu.alloc().init()
view_menu.addItem_(show_hidden_menu_item)

view_menu_item = NSMenuItem.alloc().initWithTitle_action_keyEquivalent_(
"View", None, ""
)
view_menu_item.setSubmenu_(view_menu)
main_menu.addItem_(view_menu_item)

windows_menu = NSMenu.alloc().init()

windows_menu_item = NSMenuItem.alloc().initWithTitle_action_keyEquivalent_(
"Window", None, ""
)
windows_menu_item.setSubmenu_(windows_menu)
main_menu.addItem_(windows_menu_item)

NSApp.setWindowsMenu_(windows_menu)

keyboard_shortcuts_menu_item = (
NSMenuItem.alloc().initWithTitle_action_keyEquivalent_(
"Keyboard Shortcuts", "shortcuts:", "?"
)
)

help_menu = NSMenu.alloc().init()
help_menu.addItem_(keyboard_shortcuts_menu_item)

help_menu_item = NSMenuItem.alloc().initWithTitle_action_keyEquivalent_(
"Help", None, ""
)
help_menu_item.setSubmenu_(help_menu)
main_menu.addItem_(help_menu_item)

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:
if not shared.win:
return

shared.win.lookup_action("show_hidden").activate()

def shortcuts_(self, *_args: Any) -> None:
if (not shared.win) or (not (overlay := shared.win.get_help_overlay())):
return

overlay.present()
95 changes: 2 additions & 93 deletions cartridges/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -58,102 +58,11 @@
from cartridges.utils.run_executable import run_executable
from cartridges.window import CartridgesWindow


if sys.platform == "darwin":
from AppKit import NSApp, NSApplication, NSMenu, NSMenuItem # type: ignore

from Foundation import NSObject # type: ignore
from AppKit import NSApp # type: ignore
from PyObjCTools import AppHelper

class ApplicationDelegate(NSObject): # type: ignore
def applicationDidFinishLaunching_(self, *_args: Any) -> None:
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 = (
NSMenuItem.alloc().initWithTitle_action_keyEquivalent_(
"Show Hidden", "hidden:", "h"
)
)

windows_menu = NSMenu.alloc().init()

view_menu = NSMenu.alloc().init()
view_menu.addItem_(show_hidden_menu_item)

view_menu_item = NSMenuItem.alloc().initWithTitle_action_keyEquivalent_(
"View", None, ""
)
view_menu_item.setSubmenu_(view_menu)
main_menu.addItem_(view_menu_item)

windows_menu = NSMenu.alloc().init()

windows_menu_item = NSMenuItem.alloc().initWithTitle_action_keyEquivalent_(
"Window", None, ""
)
windows_menu_item.setSubmenu_(windows_menu)
main_menu.addItem_(windows_menu_item)

NSApp.setWindowsMenu_(windows_menu)

keyboard_shortcuts_menu_item = (
NSMenuItem.alloc().initWithTitle_action_keyEquivalent_(
"Keyboard Shortcuts", "shortcuts:", "?"
)
)

help_menu = NSMenu.alloc().init()
help_menu.addItem_(keyboard_shortcuts_menu_item)

help_menu_item = NSMenuItem.alloc().initWithTitle_action_keyEquivalent_(
"Help", None, ""
)
help_menu_item.setSubmenu_(help_menu)
main_menu.addItem_(help_menu_item)

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:
if not shared.win:
return

shared.win.lookup_action("show_hidden").activate()

def shortcuts_(self, *_args: Any) -> None:
if (not shared.win) or (not (overlay := shared.win.get_help_overlay())):
return

overlay.present()
from cartridges.application_delegate import ApplicationDelegate


class CartridgesApplication(Adw.Application):
Expand Down
1 change: 1 addition & 0 deletions cartridges/meson.build
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ install_subdir('logging', install_dir: moduledir)
install_subdir('errors', install_dir: moduledir)
install_data(
[
'application_delegate.py',
'main.py',
'window.py',
'preferences.py',
Expand Down

0 comments on commit b3a65c3

Please sign in to comment.