Files
hamster-tools/hamstertools/app.py
2025-08-07 12:03:02 +01:00

62 lines
1.5 KiB
Python

from textual.app import App
from hamstertools import clockify
from .db import db
from .screens.hamster import HamsterScreen
from .screens.kimai import KimaiScreen
from .screens.clockify.projects import ClockifyProjectScreen
class HamsterToolsApp(App):
CSS_PATH = "app.tcss"
BINDINGS = [
("h", "switch_mode('hamster')", "Hamster"),
("q", "quit", "Quit"),
]
def __init__(self, kimai_api=None, clockify_api=None):
self.add_mode("hamster", HamsterScreen())
if kimai_api is not None:
self.kimai_api = kimai_api
self.add_mode("kimai", KimaiScreen())
if clockify_api is not None:
self.clockify_api = clockify_api
self.add_mode("clockify", ClockifyProjectScreen())
super().__init__()
def on_mount(self) -> None:
self.switch_mode("hamster")
async def action_quit(self) -> None:
db.close()
self.exit()
class HamsterToolsAppKimai(HamsterToolsApp):
BINDINGS = HamsterToolsApp.BINDINGS + [
("k", "switch_mode('kimai')", "Kimai"),
]
def __init__(self, kimai_api):
self.kimai_api = kimai_api
self.add_mode("kimai", KimaiScreen())
super().__init__()
class HamsterToolsAppClockify(HamsterToolsApp):
BINDINGS = HamsterToolsApp.BINDINGS + [
("c", "switch_mode('clockify_projects')", "Clockify"),
]
def __init__(self, clockify_api):
self.clockify_api = clockify_api
self.add_mode("clockify_projects", ClockifyProjectScreen())
super().__init__()