70 lines
2.7 KiB
Python
70 lines
2.7 KiB
Python
import datetime
|
|
|
|
from dsst_gtk3 import dialogs, util, gtk_ui, reload
|
|
from common import models
|
|
from gi.repository import Gtk
|
|
|
|
|
|
class DialogHandlers:
|
|
""" Callback handlers for signals emitted from dialogs of the main window"""
|
|
def __init__(self, app: 'gtk_ui.GtkUi'):
|
|
self.app = app
|
|
|
|
@staticmethod
|
|
def do_run_manage_dialog(dialog: 'Gtk.Dialog'):
|
|
dialog.run()
|
|
dialog.hide()
|
|
|
|
def do_add_player_to_episode(self, combo):
|
|
""" Signal Handler for Add Player to Episode Button in Manage Episode Dialog
|
|
:param combo: Combo box with all the available players
|
|
"""
|
|
player_id = util.get_combo_value(combo, 0)
|
|
if player_id:
|
|
self.app.ui.get_object('add_player_combo_box').set_active(-1)
|
|
player = self.app.get_by_id(self.app.players, player_id)
|
|
store = self.app.ui.get_object('episode_players_store')
|
|
if not any(row[0] == player_id for row in store):
|
|
store.append([player_id, player.name, player.hex_id])
|
|
|
|
def do_add_enemy(self, entry):
|
|
if entry.get_text():
|
|
enemy = models.Enemy()
|
|
enemy.name = entry.get_text()
|
|
enemy.season = self.app.get_selected_season_id()
|
|
enemy.boss = not self.app.ui.get_object('enemy_optional_ckeck').get_active()
|
|
self.app.ui.get_object('enemy_optional_ckeck').set_active(False)
|
|
entry.set_text('')
|
|
|
|
self.app.data_client.update_enemy(enemy)
|
|
|
|
def on_enemy_name_edited(self, _, index, value):
|
|
row = self.app.ui.get_object('enemy_season_store')[index]
|
|
enemy = [enemy for enemy in self.app.enemies.data if enemy.id == row[4]][0]
|
|
enemy.name = value
|
|
self.app.data_client.update_enemy(enemy)
|
|
|
|
def on_enemy_optional_edited(self, renderer, index):
|
|
new_optional_value = not renderer.get_active()
|
|
row = self.app.ui.get_object('enemy_season_store')[index]
|
|
enemy = [enemy for enemy in self.app.enemies.data if enemy.id == row[4]][0]
|
|
enemy.boss = new_optional_value
|
|
self.app.data_client.update_enemy(enemy)
|
|
|
|
def do_show_date_picker(self, entry: 'Gtk.Entry', *_):
|
|
dialog = self.app.ui.get_object('date_picker_dialog')
|
|
result = dialog.run()
|
|
dialog.hide()
|
|
if result == Gtk.ResponseType.OK:
|
|
date = self.app.ui.get_object('date_picker_calendar').get_date()
|
|
date_string = '{}-{:02d}-{:02d}'.format(date.year, date.month +1, date.day)
|
|
entry.set_text(date_string)
|
|
|
|
@staticmethod
|
|
def do_set_today(cal: 'Gtk.Calendar'):
|
|
"""Set date of a Gtk Calendar to today
|
|
:param cal: Gtk.Calendar
|
|
"""
|
|
cal.select_month = datetime.date.today().month
|
|
cal.select_day = datetime.date.today().day
|