Create and modify enemies function.
This commit is contained in:
@@ -57,6 +57,7 @@ class Death:
|
|||||||
self.enemy = arg.get('enemy')
|
self.enemy = arg.get('enemy')
|
||||||
self.episode = arg.get('episode')
|
self.episode = arg.get('episode')
|
||||||
self.penalties = arg.get('penalties')
|
self.penalties = arg.get('penalties')
|
||||||
|
self.time = arg.get('time')
|
||||||
|
|
||||||
|
|
||||||
class Penalty:
|
class Penalty:
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ This module contains UI functions for displaying different dialogs
|
|||||||
import datetime
|
import datetime
|
||||||
from gi.repository import Gtk
|
from gi.repository import Gtk
|
||||||
from common import models
|
from common import models
|
||||||
from dsst_gtk3 import gtk_ui
|
from dsst_gtk3 import gtk_ui, util
|
||||||
|
|
||||||
|
|
||||||
def enter_string_dialog(builder: Gtk.Builder, title: str, value=None) -> str:
|
def enter_string_dialog(builder: Gtk.Builder, title: str, value=None) -> str:
|
||||||
@@ -97,49 +97,68 @@ def edit_episode(app: 'gtk_ui.GtkUi', season_id: int, episode: 'models.Episode'=
|
|||||||
return episode
|
return episode
|
||||||
|
|
||||||
|
|
||||||
def show_edit_death_dialog(builder: Gtk.Builder, episode_id: int, death):
|
def edit_death(app: 'gtk_ui.GtkUi', death: 'models.Death'=None):
|
||||||
pass
|
"""Show a dialog to create or edit death events for an episode
|
||||||
# """Show a dialog for editing or creating death events.
|
:param app: Main Gtk application
|
||||||
# :param builder: A Gtk.Builder object
|
:param death: (Optional) Existing death object to edit
|
||||||
# :param episode_id: ID to witch the death event belongs to
|
:return: Death object or None if dialog was canceled
|
||||||
# :param death: (Optional) Death event witch should be edited
|
"""
|
||||||
# :return: Gtk.ResponseType of the dialog
|
if not death:
|
||||||
# """
|
death = models.Death()
|
||||||
# dialog = builder.get_object("edit_death_dialog") # type: Gtk.Dialog
|
death.episode = app.get_selected_episode_id()
|
||||||
# dialog.set_transient_for(builder.get_object("main_window"))
|
death.info = ""
|
||||||
# with sql.db.atomic():
|
death.penalties = []
|
||||||
# if death:
|
death.time = datetime.time(0, 0)
|
||||||
# index = util.get_index_of_combo_model(builder.get_object('edit_death_enemy_combo'), 0, death.enemy.id)
|
hour_spin = app.ui.get_object('death_hour_spin')
|
||||||
# builder.get_object('edit_death_enemy_combo').set_active(index)
|
min_spin = app.ui.get_object('death_min_spin')
|
||||||
#
|
# Set time of death
|
||||||
# # TODO Default drink should be set in config
|
hour_spin.set_value(death.time.hour)
|
||||||
# default_drink = sql.Drink.get().name
|
min_spin.set_value(death.time.minute)
|
||||||
# store = builder.get_object('player_penalties_store')
|
# Set Enemy
|
||||||
# store.clear()
|
if death.enemy:
|
||||||
# for player in builder.get_object('episode_players_store'):
|
index = util.get_index_of_combo_model(app.ui.get_object('edit_death_enemy_combo'), 0, death.enemy.id)
|
||||||
# store.append([None, player[1], default_drink, player[0]])
|
app.ui.get_object('edit_death_enemy_combo').set_active(index)
|
||||||
#
|
# Set player
|
||||||
# # Run the dialog
|
if death.player:
|
||||||
# result = dialog.run()
|
index = util.get_index_of_combo_model(app.ui.get_object('edit_death_player_combo'), 0, death.player.id)
|
||||||
# dialog.hide()
|
app.ui.get_object('edit_death_player_combo').set_active(index)
|
||||||
# if result != Gtk.ResponseType.OK:
|
# Set shot size
|
||||||
# sql.db.rollback()
|
if death.penalties:
|
||||||
# return result
|
app.ui.get_object('edit_death_size_spin').set_value(death.penalties[0].size)
|
||||||
#
|
# Set info comment
|
||||||
# # Collect info from widgets and save to database
|
app.ui.get_object('edit_death_comment_entry').set_text(death.info)
|
||||||
# player_id = util.get_combo_value(builder.get_object('edit_death_player_combo'), 0)
|
# Set penalties
|
||||||
# enemy_id = util.get_combo_value(builder.get_object('edit_death_enemy_combo'), 3)
|
default_drink = app.drinks.data[0].name
|
||||||
# comment = builder.get_object('edit_death_comment_entry').get_text()
|
store = app.ui.get_object('player_penalties_store')
|
||||||
# if not death:
|
store.clear()
|
||||||
# death = sql.Death.create(episode=episode_id, player=player_id, enemy=enemy_id, info=comment)
|
if death.penalties:
|
||||||
#
|
for penalty in death.penalties:
|
||||||
# store = builder.get_object('player_penalties_store')
|
store.append([penalty.id, penalty.player.name, penalty.drink.name, penalty.player.id])
|
||||||
# size = builder.get_object('edit_death_size_spin').get_value()
|
else:
|
||||||
# for entry in store:
|
for player in app.ui.get_object('episode_players_store'):
|
||||||
# drink_id = sql.Drink.get(sql.Drink.name == entry[2])
|
store.append([None, player[1], default_drink, player[0]])
|
||||||
# sql.Penalty.create(size=size, player=entry[3], death=death.id, drink=drink_id)
|
|
||||||
#
|
# Run the dialog
|
||||||
# return result
|
dialog = app.ui.get_object("edit_death_dialog") # type: Gtk.Dialog
|
||||||
|
result = dialog.run()
|
||||||
|
dialog.hide()
|
||||||
|
if result != Gtk.ResponseType.OK:
|
||||||
|
return None
|
||||||
|
|
||||||
|
# Parse the inputs
|
||||||
|
death.time = datetime.time(hour_spin.get_value(), min_spin.set_value)
|
||||||
|
death.enemy = util.get_combo_value(app.ui.get_object('edit_death_enemy_combo'), 3)
|
||||||
|
death.player = util.get_combo_value(app.ui.get_object('edit_death_player_combo'), 0)
|
||||||
|
death.info = app.ui.get_object('edit_death_comment_entry').get_text()
|
||||||
|
store = app.ui.get_object('player_penalties_store')
|
||||||
|
size = app.ui.get_object('edit_death_size_spin').get_value()
|
||||||
|
death.penalties.clear()
|
||||||
|
for entry in store:
|
||||||
|
drink_id = [drink.id for drink in app.drinks.data if drink.name == entry[2]][0]
|
||||||
|
penalty = models.Penalty({'id': entry[0], 'size': size, 'drink': drink_id, 'player': entry[3]})
|
||||||
|
death.penalties.append(penalty)
|
||||||
|
|
||||||
|
return death
|
||||||
|
|
||||||
|
|
||||||
def show_edit_victory_dialog(builder: Gtk.Builder, episode_id: int, victory):
|
def show_edit_victory_dialog(builder: Gtk.Builder, episode_id: int, victory):
|
||||||
|
|||||||
@@ -40,35 +40,32 @@ class GtkUi:
|
|||||||
self.meta = {'connection': '{}:{}'.format(config.get('host'), config.get('port'))}
|
self.meta = {'connection': '{}:{}'.format(config.get('host'), config.get('port'))}
|
||||||
# Load base data and seasons
|
# Load base data and seasons
|
||||||
self.load_server_meta()
|
self.load_server_meta()
|
||||||
self.reload()
|
self.full_reload()
|
||||||
self.update_status_bar_meta()
|
self.update_status_bar_meta()
|
||||||
|
|
||||||
def load_server_meta(self):
|
def load_server_meta(self):
|
||||||
self.meta['database'] = self.data_client.send_request('load_db_meta')
|
self.meta['database'] = self.data_client.send_request('load_db_meta')
|
||||||
|
|
||||||
def reload(self):
|
def full_reload(self):
|
||||||
with util.network_operation(self):
|
with util.network_operation(self):
|
||||||
refresh_base = False
|
self.players.data = self.data_client.send_request('load_players')
|
||||||
if not self.players.valid:
|
self.drinks.data = self.data_client.send_request('load_drinks')
|
||||||
self.players.data = self.data_client.send_request('load_players')
|
self.seasons.data = self.data_client.send_request('load_seasons')
|
||||||
refresh_base = True
|
season_id = self.get_selected_season_id()
|
||||||
if not self.drinks.valid:
|
if season_id:
|
||||||
self.drinks.data = self.data_client.send_request('load_drinks')
|
self.episodes.data = self.data_client.send_request('load_episodes', season_id)
|
||||||
refresh_base= True
|
self.season_stats.data = self.data_client.send_request('load_season_stats', season_id)
|
||||||
if not self.seasons.valid:
|
cur_season = [s for s in self.seasons.data if s.id == season_id][0]
|
||||||
self.seasons.data = self.data_client.send_request('load_seasons')
|
self.enemies.data = cur_season.enemies
|
||||||
refresh_base = True
|
reload.rebuild_view_data(self)
|
||||||
if refresh_base:
|
|
||||||
reload.reload_base_data(self.ui, self)
|
|
||||||
|
|
||||||
if not self.episodes.valid:
|
def reload(self):
|
||||||
with util.network_operation(self):
|
pass
|
||||||
season_id = self.get_selected_season_id()
|
|
||||||
if season_id:
|
def update_enemy(self, enemy: 'models.Enemy'):
|
||||||
self.episodes.data = self.data_client.send_request('load_episodes', season_id)
|
with util.network_operation(self):
|
||||||
self.season_stats.data = self.data_client.send_request('load_season_stats', season_id)
|
self.data_client.send_request('update_enemy', enemy)
|
||||||
reload.reload_episodes(self.ui, self)
|
self.full_reload()
|
||||||
reload.reload_season_stats(self)
|
|
||||||
|
|
||||||
def update_season(self, season: 'models.Season'):
|
def update_season(self, season: 'models.Season'):
|
||||||
with util.network_operation(self):
|
with util.network_operation(self):
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
from dsst_gtk3 import dialogs
|
from dsst_gtk3 import dialogs, gtk_ui
|
||||||
|
|
||||||
|
|
||||||
class BaseDataHandlers:
|
class BaseDataHandlers:
|
||||||
@@ -6,48 +6,42 @@ class BaseDataHandlers:
|
|||||||
def __init__(self, app: 'gtk_ui.GtkUi'):
|
def __init__(self, app: 'gtk_ui.GtkUi'):
|
||||||
self.app = app
|
self.app = app
|
||||||
|
|
||||||
def do_manage_players(self, *_):
|
|
||||||
dialogs.run_management_dialog(self.app.ui, 'manage_players_dialog')
|
|
||||||
|
|
||||||
def do_add_player(self, entry):
|
def do_add_player(self, entry):
|
||||||
if entry.get_text():
|
if entry.get_text():
|
||||||
# sql.Player.create(name=entry.get_text())
|
# sql.Player.create(name=entry.get_text())
|
||||||
entry.set_text('')
|
entry.set_text('')
|
||||||
self.app.reload()
|
self.app.full_reload()
|
||||||
|
|
||||||
def do_manage_enemies(self, *_):
|
|
||||||
dialogs.run_management_dialog(self.app.ui, 'manage_enemies_dialog')
|
|
||||||
|
|
||||||
def on_player_name_edited(self, _, index, value):
|
def on_player_name_edited(self, _, index, value):
|
||||||
row = self.app.ui.get_object('all_players_store')[index]
|
row = self.app.ui.get_object('all_players_store')[index]
|
||||||
# sql.Player.update(name=value)\
|
# sql.Player.update(name=value)\
|
||||||
# .where(sql.Player.id == row[0])\
|
# .where(sql.Player.id == row[0])\
|
||||||
# .execute()
|
# .execute()
|
||||||
self.app.reload()
|
self.app.full_reload()
|
||||||
|
|
||||||
def on_player_hex_edited(self, _, index, value):
|
def on_player_hex_edited(self, _, index, value):
|
||||||
row = self.app.ui.get_object('all_players_store')[index]
|
row = self.app.ui.get_object('all_players_store')[index]
|
||||||
# sql.Player.update(hex_id=value)\
|
# sql.Player.update(hex_id=value)\
|
||||||
# .where(sql.Player.id == row[0])\
|
# .where(sql.Player.id == row[0])\
|
||||||
# .execute()
|
# .execute()
|
||||||
self.app.reload()
|
self.app.full_reload()
|
||||||
|
|
||||||
def do_add_drink(self, entry):
|
def do_add_drink(self, entry):
|
||||||
if entry.get_text():
|
if entry.get_text():
|
||||||
sql.Drink.create(name=entry.get_text(), vol=0)
|
sql.Drink.create(name=entry.get_text(), vol=0)
|
||||||
entry.set_text('')
|
entry.set_text('')
|
||||||
self.app.reload()
|
self.app.full_reload()
|
||||||
|
|
||||||
def on_drink_name_edited(self, _, index, value):
|
def on_drink_name_edited(self, _, index, value):
|
||||||
row = self.app.ui.get_object('drink_store')[index]
|
row = self.app.ui.get_object('drink_store')[index]
|
||||||
# sql.Drink.update(name=value)\
|
# sql.Drink.update(name=value)\
|
||||||
# .where(sql.Drink.id == row[0])\
|
# .where(sql.Drink.id == row[0])\
|
||||||
# .execute()
|
# .execute()
|
||||||
self.app.reload()
|
self.app.full_reload()
|
||||||
|
|
||||||
def on_drink_vol_edited(self, _, index, value):
|
def on_drink_vol_edited(self, _, index, value):
|
||||||
row = self.app.ui.get_object('drink_store')[index]
|
row = self.app.ui.get_object('drink_store')[index]
|
||||||
# sql.Drink.update(vol=value) \
|
# sql.Drink.update(vol=value) \
|
||||||
# .where(sql.Drink.id == row[0]) \
|
# .where(sql.Drink.id == row[0]) \
|
||||||
# .execute()
|
# .execute()
|
||||||
self.app.reload()
|
self.app.full_reload()
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
from gi.repository import Gtk
|
from gi.repository import Gtk
|
||||||
from dsst_gtk3 import dialogs
|
from dsst_gtk3 import dialogs, gtk_ui
|
||||||
|
|
||||||
|
|
||||||
class DeathHandlers:
|
class DeathHandlers:
|
||||||
@@ -11,9 +11,10 @@ class DeathHandlers:
|
|||||||
ep_id = self.app.get_selected_episode_id()
|
ep_id = self.app.get_selected_episode_id()
|
||||||
if not ep_id:
|
if not ep_id:
|
||||||
return
|
return
|
||||||
result = dialogs.show_edit_death_dialog(self.app.ui, ep_id)
|
result = dialogs.edit_death(self.app)
|
||||||
if result == Gtk.ResponseType.OK:
|
if result == Gtk.ResponseType.OK:
|
||||||
self.app.reload()
|
self.app.episodes.valid = False
|
||||||
|
self.app.full_reload()
|
||||||
|
|
||||||
def on_penalty_drink_changed(self, _, path, text):
|
def on_penalty_drink_changed(self, _, path, text):
|
||||||
self.app.ui.get_object('player_penalties_store')[path][2] = text
|
self.app.ui.get_object('player_penalties_store')[path][2] = text
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
import datetime
|
import datetime
|
||||||
|
|
||||||
from dsst_gtk3 import dialogs, util, gtk_ui
|
from dsst_gtk3 import dialogs, util, gtk_ui, reload
|
||||||
|
from common import models
|
||||||
from gi.repository import Gtk
|
from gi.repository import Gtk
|
||||||
|
|
||||||
|
|
||||||
@@ -29,10 +30,28 @@ class DialogHandlers:
|
|||||||
def do_add_enemy(self, entry):
|
def do_add_enemy(self, entry):
|
||||||
if entry.get_text():
|
if entry.get_text():
|
||||||
store = self.app.ui.get_object('enemy_season_store')
|
store = self.app.ui.get_object('enemy_season_store')
|
||||||
# enemy = sql.Enemy.create(name=entry.get_text(), season=self.app.get_selected_season_id())
|
enemy = models.Enemy()
|
||||||
# store.append([enemy.name, False, 0, enemy.id])
|
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('')
|
entry.set_text('')
|
||||||
|
|
||||||
|
self.app.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.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.update_enemy(enemy)
|
||||||
|
|
||||||
def do_show_date_picker(self, entry: 'Gtk.Entry', *_):
|
def do_show_date_picker(self, entry: 'Gtk.Entry', *_):
|
||||||
dialog = self.app.ui.get_object('date_picker_dialog')
|
dialog = self.app.ui.get_object('date_picker_dialog')
|
||||||
result = dialog.run()
|
result = dialog.run()
|
||||||
|
|||||||
@@ -10,12 +10,12 @@ class SeasonHandlers:
|
|||||||
season = dialogs.edit_season(self.app.ui)
|
season = dialogs.edit_season(self.app.ui)
|
||||||
if season:
|
if season:
|
||||||
self.app.update_season(season)
|
self.app.update_season(season)
|
||||||
self.app.reload()
|
self.app.full_reload()
|
||||||
|
|
||||||
def do_season_selected(self, *_):
|
def do_season_selected(self, *_):
|
||||||
self.app.episodes.valid = False
|
self.app.episodes.valid = False
|
||||||
self.app.season_stats.valid = False
|
self.app.season_stats.valid = False
|
||||||
self.app.reload()
|
self.app.full_reload()
|
||||||
|
|
||||||
def do_add_episode(self, *_):
|
def do_add_episode(self, *_):
|
||||||
season_id = self.app.get_selected_season_id()
|
season_id = self.app.get_selected_season_id()
|
||||||
@@ -24,7 +24,7 @@ class SeasonHandlers:
|
|||||||
ep = dialogs.edit_episode(self.app, season_id)
|
ep = dialogs.edit_episode(self.app, season_id)
|
||||||
if ep:
|
if ep:
|
||||||
self.app.update_episode(ep)
|
self.app.update_episode(ep)
|
||||||
self.app.reload()
|
self.app.full_reload()
|
||||||
|
|
||||||
def on_selected_episode_changed(self, *_):
|
def on_selected_episode_changed(self, *_):
|
||||||
reload.reload_episode_stats(self.app)
|
reload.reload_episode_stats(self.app)
|
||||||
|
|||||||
@@ -13,4 +13,4 @@ class VictoryHandlers:
|
|||||||
return
|
return
|
||||||
result = dialogs.show_edit_victory_dialog(self.app.ui, ep_id)
|
result = dialogs.show_edit_victory_dialog(self.app.ui, ep_id)
|
||||||
if result == Gtk.ResponseType.OK:
|
if result == Gtk.ResponseType.OK:
|
||||||
self.app.reload()
|
self.app.full_reload()
|
||||||
|
|||||||
@@ -3,37 +3,38 @@ from gi.repository import Gtk
|
|||||||
from dsst_gtk3 import util, gtk_ui
|
from dsst_gtk3 import util, gtk_ui
|
||||||
|
|
||||||
|
|
||||||
def reload_base_data(builder: Gtk.Builder, app: 'gtk_ui.GtkUi',):
|
def reload_base_data(app: 'gtk_ui.GtkUi',):
|
||||||
"""Reload function for all base data witch is not dependant on a selected season or episode
|
"""Reload function for all base data witch is not dependant on a selected season or episode
|
||||||
:param app: GtkUi instance
|
:param app: GtkUi instance
|
||||||
:param builder: Gtk.Builder with loaded UI
|
:param builder: Gtk.Builder with loaded UI
|
||||||
"""
|
"""
|
||||||
# Rebuild all players store
|
# Rebuild all players store
|
||||||
builder.get_object('all_players_store').clear()
|
app.ui.get_object('all_players_store').clear()
|
||||||
for player in app.players.data:
|
for player in app.players.data:
|
||||||
builder.get_object('all_players_store').append([player.id, player.name, player.hex_id])
|
app.ui.get_object('all_players_store').append([player.id, player.name, player.hex_id])
|
||||||
# Rebuild drink store
|
# Rebuild drink store
|
||||||
builder.get_object('drink_store').clear()
|
app.ui.get_object('drink_store').clear()
|
||||||
for drink in app.drinks.data:
|
for drink in app.drinks.data:
|
||||||
builder.get_object('drink_store').append([drink.id, drink.name, '{:.2f}%'.format(drink.vol)])
|
app.ui.get_object('drink_store').append([drink.id, drink.name, '{:.2f}%'.format(drink.vol)])
|
||||||
# Rebuild seasons store
|
# Rebuild seasons store
|
||||||
combo = builder.get_object('season_combo_box') # type: Gtk.ComboBox
|
combo = app.ui.get_object('season_combo_box') # type: Gtk.ComboBox
|
||||||
active = combo.get_active()
|
active = combo.get_active()
|
||||||
with util.block_handler(combo, app.handlers.do_season_selected):
|
with util.block_handler(combo, app.handlers.do_season_selected):
|
||||||
store = builder.get_object('seasons_store')
|
store = app.ui.get_object('seasons_store')
|
||||||
store.clear()
|
store.clear()
|
||||||
for season in app.seasons.data:
|
for season in app.seasons.data:
|
||||||
store.append([season.id, season.game_name])
|
store.append([season.id, season.game_name])
|
||||||
combo.set_active(active)
|
combo.set_active(active)
|
||||||
|
|
||||||
|
|
||||||
def reload_episodes(builder: Gtk.Builder, app: 'gtk_ui.GtkUi'):
|
def reload_episodes(app: 'gtk_ui.GtkUi'):
|
||||||
"""Reload all data that is dependant on a selected season
|
"""Reload all data that is dependant on a selected season
|
||||||
:param app: GtkUi instance
|
:param app: GtkUi instance
|
||||||
:param builder: Gtk.Builder with loaded UI
|
:param builder: Gtk.Builder with loaded UI
|
||||||
"""
|
"""
|
||||||
# Rebuild episodes store
|
# Rebuild episodes store
|
||||||
selection = builder.get_object('episodes_tree_view').get_selection()
|
if not app.get_selected_season_id(): return
|
||||||
|
selection = app.ui.get_object('episodes_tree_view').get_selection()
|
||||||
with util.block_handler(selection, app.handlers.on_selected_episode_changed):
|
with util.block_handler(selection, app.handlers.on_selected_episode_changed):
|
||||||
model, selected_paths = selection.get_selected_rows()
|
model, selected_paths = selection.get_selected_rows()
|
||||||
model.clear()
|
model.clear()
|
||||||
@@ -47,6 +48,7 @@ def reload_season_stats(app: 'gtk_ui.GtkUi'):
|
|||||||
"""Load statistic data for selected season
|
"""Load statistic data for selected season
|
||||||
:param app: GtkUi instance
|
:param app: GtkUi instance
|
||||||
"""
|
"""
|
||||||
|
if not app.season_stats.valid: return
|
||||||
season_stats = app.season_stats.data
|
season_stats = app.season_stats.data
|
||||||
# Load player kill/death data
|
# Load player kill/death data
|
||||||
store = app.ui.get_object('player_season_store')
|
store = app.ui.get_object('player_season_store')
|
||||||
@@ -57,15 +59,17 @@ def reload_season_stats(app: 'gtk_ui.GtkUi'):
|
|||||||
# Load enemy stats for season
|
# Load enemy stats for season
|
||||||
store = app.ui.get_object('enemy_season_store')
|
store = app.ui.get_object('enemy_season_store')
|
||||||
store.clear()
|
store.clear()
|
||||||
for enemy_name, deaths, defeated, boss in season_stats.enemies:
|
for enemy_id, enemy_name, deaths, defeated, boss in season_stats.enemies:
|
||||||
store.append([enemy_name, defeated, deaths, boss])
|
store.append([enemy_name, defeated, deaths, boss, enemy_id])
|
||||||
|
|
||||||
|
|
||||||
def reload_episode_stats(app: 'gtk_ui.GtkUi'):
|
def reload_episode_stats(app: 'gtk_ui.GtkUi'):
|
||||||
"""Reload all data that is dependant on a selected episode
|
"""Reload all data that is dependant on a selected episode
|
||||||
:param app: app: GtkUi instance
|
:param app: app: GtkUi instance
|
||||||
"""
|
"""
|
||||||
episode = [ep for ep in app.episodes.data if ep.id == app.get_selected_episode_id()][0]
|
ep_id = app.get_selected_episode_id()
|
||||||
|
if not app.episodes.valid or not ep_id: return
|
||||||
|
episode = [ep for ep in app.episodes.data if ep.id == ep_id][0]
|
||||||
store = app.ui.get_object('episode_players_store')
|
store = app.ui.get_object('episode_players_store')
|
||||||
store.clear()
|
store.clear()
|
||||||
for player in episode.players:
|
for player in episode.players:
|
||||||
@@ -106,4 +110,12 @@ def reload_episode_stats(app: 'gtk_ui.GtkUi'):
|
|||||||
def fill_list_store(store: Gtk.ListStore, models: list):
|
def fill_list_store(store: Gtk.ListStore, models: list):
|
||||||
store.clear()
|
store.clear()
|
||||||
for model in models:
|
for model in models:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
def rebuild_view_data(app: 'gtk_ui.GtkUi'):
|
||||||
|
reload_base_data(app)
|
||||||
|
reload_episodes(app)
|
||||||
|
reload_episode_stats(app)
|
||||||
|
reload_season_stats(app)
|
||||||
|
|
||||||
|
|||||||
@@ -32,6 +32,8 @@
|
|||||||
<column type="gint"/>
|
<column type="gint"/>
|
||||||
<!-- column-name optional -->
|
<!-- column-name optional -->
|
||||||
<column type="gboolean"/>
|
<column type="gboolean"/>
|
||||||
|
<!-- column-name enemy_id -->
|
||||||
|
<column type="gint"/>
|
||||||
</columns>
|
</columns>
|
||||||
</object>
|
</object>
|
||||||
<object class="GtkAdjustment" id="ep_number_ajustment">
|
<object class="GtkAdjustment" id="ep_number_ajustment">
|
||||||
@@ -283,6 +285,16 @@
|
|||||||
<column type="gchararray"/>
|
<column type="gchararray"/>
|
||||||
</columns>
|
</columns>
|
||||||
</object>
|
</object>
|
||||||
|
<object class="GtkAdjustment" id="hour_adjustment">
|
||||||
|
<property name="upper">24</property>
|
||||||
|
<property name="step_increment">1</property>
|
||||||
|
<property name="page_increment">1</property>
|
||||||
|
</object>
|
||||||
|
<object class="GtkAdjustment" id="minute_adjustment">
|
||||||
|
<property name="upper">60</property>
|
||||||
|
<property name="step_increment">1</property>
|
||||||
|
<property name="page_increment">1</property>
|
||||||
|
</object>
|
||||||
<object class="GtkListStore" id="player_penalties_store">
|
<object class="GtkListStore" id="player_penalties_store">
|
||||||
<columns>
|
<columns>
|
||||||
<!-- column-name penalty_id -->
|
<!-- column-name penalty_id -->
|
||||||
@@ -1586,292 +1598,6 @@
|
|||||||
<placeholder/>
|
<placeholder/>
|
||||||
</child>
|
</child>
|
||||||
</object>
|
</object>
|
||||||
<object class="GtkDialog" id="edit_death_dialog">
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<property name="title" translatable="yes">Edit Death Event</property>
|
|
||||||
<property name="resizable">False</property>
|
|
||||||
<property name="modal">True</property>
|
|
||||||
<property name="type_hint">dialog</property>
|
|
||||||
<property name="deletable">False</property>
|
|
||||||
<property name="transient_for">main_window</property>
|
|
||||||
<child internal-child="vbox">
|
|
||||||
<object class="GtkBox">
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<property name="orientation">vertical</property>
|
|
||||||
<property name="spacing">4</property>
|
|
||||||
<child internal-child="action_area">
|
|
||||||
<object class="GtkButtonBox">
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<property name="layout_style">end</property>
|
|
||||||
<child>
|
|
||||||
<object class="GtkButton" id="okButtonRename4">
|
|
||||||
<property name="label">gtk-ok</property>
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">True</property>
|
|
||||||
<property name="receives_default">True</property>
|
|
||||||
<property name="use_stock">True</property>
|
|
||||||
</object>
|
|
||||||
<packing>
|
|
||||||
<property name="expand">True</property>
|
|
||||||
<property name="fill">True</property>
|
|
||||||
<property name="position">0</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkButton" id="cancelButtonRename4">
|
|
||||||
<property name="label">gtk-cancel</property>
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">True</property>
|
|
||||||
<property name="receives_default">True</property>
|
|
||||||
<property name="use_stock">True</property>
|
|
||||||
</object>
|
|
||||||
<packing>
|
|
||||||
<property name="expand">True</property>
|
|
||||||
<property name="fill">True</property>
|
|
||||||
<property name="position">1</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
</object>
|
|
||||||
<packing>
|
|
||||||
<property name="expand">False</property>
|
|
||||||
<property name="fill">False</property>
|
|
||||||
<property name="position">0</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkBox">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<property name="orientation">vertical</property>
|
|
||||||
<property name="spacing">5</property>
|
|
||||||
<child>
|
|
||||||
<object class="GtkBox">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<property name="spacing">5</property>
|
|
||||||
<child>
|
|
||||||
<object class="GtkLabel">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<property name="margin_top">5</property>
|
|
||||||
<property name="margin_bottom">5</property>
|
|
||||||
<property name="label" translatable="yes">Enemy</property>
|
|
||||||
</object>
|
|
||||||
<packing>
|
|
||||||
<property name="expand">False</property>
|
|
||||||
<property name="fill">True</property>
|
|
||||||
<property name="position">0</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkComboBox" id="edit_death_enemy_combo">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<property name="model">enemy_season_store</property>
|
|
||||||
<child>
|
|
||||||
<object class="GtkCellRendererText"/>
|
|
||||||
<attributes>
|
|
||||||
<attribute name="text">0</attribute>
|
|
||||||
</attributes>
|
|
||||||
</child>
|
|
||||||
</object>
|
|
||||||
<packing>
|
|
||||||
<property name="expand">True</property>
|
|
||||||
<property name="fill">True</property>
|
|
||||||
<property name="pack_type">end</property>
|
|
||||||
<property name="position">1</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
</object>
|
|
||||||
<packing>
|
|
||||||
<property name="expand">False</property>
|
|
||||||
<property name="fill">True</property>
|
|
||||||
<property name="position">0</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkBox">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<child>
|
|
||||||
<object class="GtkLabel">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<property name="margin_left">5</property>
|
|
||||||
<property name="margin_right">5</property>
|
|
||||||
<property name="margin_top">5</property>
|
|
||||||
<property name="margin_bottom">5</property>
|
|
||||||
<property name="label" translatable="yes">Player</property>
|
|
||||||
</object>
|
|
||||||
<packing>
|
|
||||||
<property name="expand">False</property>
|
|
||||||
<property name="fill">True</property>
|
|
||||||
<property name="position">0</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkComboBox" id="edit_death_player_combo">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<property name="model">episode_players_store</property>
|
|
||||||
<child>
|
|
||||||
<object class="GtkCellRendererText"/>
|
|
||||||
<attributes>
|
|
||||||
<attribute name="text">1</attribute>
|
|
||||||
</attributes>
|
|
||||||
</child>
|
|
||||||
</object>
|
|
||||||
<packing>
|
|
||||||
<property name="expand">True</property>
|
|
||||||
<property name="fill">True</property>
|
|
||||||
<property name="pack_type">end</property>
|
|
||||||
<property name="position">1</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
</object>
|
|
||||||
<packing>
|
|
||||||
<property name="expand">False</property>
|
|
||||||
<property name="fill">True</property>
|
|
||||||
<property name="position">1</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkBox">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<child>
|
|
||||||
<object class="GtkLabel">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<property name="margin_left">5</property>
|
|
||||||
<property name="margin_right">5</property>
|
|
||||||
<property name="margin_top">5</property>
|
|
||||||
<property name="margin_bottom">5</property>
|
|
||||||
<property name="label" translatable="yes">Drink Size</property>
|
|
||||||
</object>
|
|
||||||
<packing>
|
|
||||||
<property name="expand">False</property>
|
|
||||||
<property name="fill">True</property>
|
|
||||||
<property name="position">0</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkSpinButton" id="edit_death_size_spin">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">True</property>
|
|
||||||
</object>
|
|
||||||
<packing>
|
|
||||||
<property name="expand">False</property>
|
|
||||||
<property name="fill">True</property>
|
|
||||||
<property name="pack_type">end</property>
|
|
||||||
<property name="position">1</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
</object>
|
|
||||||
<packing>
|
|
||||||
<property name="expand">False</property>
|
|
||||||
<property name="fill">True</property>
|
|
||||||
<property name="position">2</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkBox">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<child>
|
|
||||||
<object class="GtkLabel">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<property name="label" translatable="yes">Comment</property>
|
|
||||||
</object>
|
|
||||||
<packing>
|
|
||||||
<property name="expand">False</property>
|
|
||||||
<property name="fill">True</property>
|
|
||||||
<property name="position">0</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkEntry" id="edit_death_comment_entry">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">True</property>
|
|
||||||
</object>
|
|
||||||
<packing>
|
|
||||||
<property name="expand">True</property>
|
|
||||||
<property name="fill">True</property>
|
|
||||||
<property name="pack_type">end</property>
|
|
||||||
<property name="position">1</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
</object>
|
|
||||||
<packing>
|
|
||||||
<property name="expand">False</property>
|
|
||||||
<property name="fill">True</property>
|
|
||||||
<property name="position">3</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkTreeView" id="edit_death_penalties_tree_view">
|
|
||||||
<property name="height_request">100</property>
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">True</property>
|
|
||||||
<property name="vexpand">True</property>
|
|
||||||
<property name="model">player_penalties_store</property>
|
|
||||||
<property name="search_column">0</property>
|
|
||||||
<child internal-child="selection">
|
|
||||||
<object class="GtkTreeSelection"/>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkTreeViewColumn">
|
|
||||||
<property name="title" translatable="yes">Player</property>
|
|
||||||
<child>
|
|
||||||
<object class="GtkCellRendererText"/>
|
|
||||||
<attributes>
|
|
||||||
<attribute name="text">1</attribute>
|
|
||||||
</attributes>
|
|
||||||
</child>
|
|
||||||
</object>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkTreeViewColumn">
|
|
||||||
<property name="title" translatable="yes">Penalty</property>
|
|
||||||
<child>
|
|
||||||
<object class="GtkCellRendererCombo" id="penalty_view_drink_renderer">
|
|
||||||
<property name="editable">True</property>
|
|
||||||
<property name="has_entry">False</property>
|
|
||||||
<property name="model">drink_store</property>
|
|
||||||
<property name="text_column">1</property>
|
|
||||||
<signal name="edited" handler="on_penalty_drink_changed" swapped="no"/>
|
|
||||||
</object>
|
|
||||||
<attributes>
|
|
||||||
<attribute name="text">2</attribute>
|
|
||||||
</attributes>
|
|
||||||
</child>
|
|
||||||
</object>
|
|
||||||
</child>
|
|
||||||
</object>
|
|
||||||
<packing>
|
|
||||||
<property name="expand">True</property>
|
|
||||||
<property name="fill">True</property>
|
|
||||||
<property name="position">4</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
</object>
|
|
||||||
<packing>
|
|
||||||
<property name="expand">True</property>
|
|
||||||
<property name="fill">True</property>
|
|
||||||
<property name="position">1</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
</object>
|
|
||||||
</child>
|
|
||||||
<action-widgets>
|
|
||||||
<action-widget response="-5">okButtonRename4</action-widget>
|
|
||||||
<action-widget response="-6">cancelButtonRename4</action-widget>
|
|
||||||
</action-widgets>
|
|
||||||
<child>
|
|
||||||
<placeholder/>
|
|
||||||
</child>
|
|
||||||
</object>
|
|
||||||
<object class="GtkDialog" id="edit_episode_dialog">
|
<object class="GtkDialog" id="edit_episode_dialog">
|
||||||
<property name="can_focus">False</property>
|
<property name="can_focus">False</property>
|
||||||
<property name="title" translatable="yes">Edit Episode</property>
|
<property name="title" translatable="yes">Edit Episode</property>
|
||||||
@@ -2649,6 +2375,20 @@
|
|||||||
<property name="position">1</property>
|
<property name="position">1</property>
|
||||||
</packing>
|
</packing>
|
||||||
</child>
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkCheckButton" id="enemy_optional_ckeck">
|
||||||
|
<property name="label" translatable="yes">Optional</property>
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">True</property>
|
||||||
|
<property name="receives_default">False</property>
|
||||||
|
<property name="draw_indicator">True</property>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">False</property>
|
||||||
|
<property name="fill">True</property>
|
||||||
|
<property name="position">2</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
</object>
|
</object>
|
||||||
<packing>
|
<packing>
|
||||||
<property name="expand">False</property>
|
<property name="expand">False</property>
|
||||||
@@ -2689,14 +2429,31 @@
|
|||||||
<child>
|
<child>
|
||||||
<object class="GtkTreeViewColumn">
|
<object class="GtkTreeViewColumn">
|
||||||
<property name="title" translatable="yes">Name</property>
|
<property name="title" translatable="yes">Name</property>
|
||||||
|
<property name="expand">True</property>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkCellRendererText"/>
|
<object class="GtkCellRendererText">
|
||||||
|
<property name="editable">True</property>
|
||||||
|
<signal name="edited" handler="on_enemy_name_edited" swapped="no"/>
|
||||||
|
</object>
|
||||||
<attributes>
|
<attributes>
|
||||||
<attribute name="text">0</attribute>
|
<attribute name="text">0</attribute>
|
||||||
</attributes>
|
</attributes>
|
||||||
</child>
|
</child>
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkTreeViewColumn">
|
||||||
|
<property name="title" translatable="yes">Boss</property>
|
||||||
|
<child>
|
||||||
|
<object class="GtkCellRendererToggle">
|
||||||
|
<signal name="toggled" handler="on_enemy_optional_edited" swapped="no"/>
|
||||||
|
</object>
|
||||||
|
<attributes>
|
||||||
|
<attribute name="active">3</attribute>
|
||||||
|
</attributes>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
</object>
|
</object>
|
||||||
@@ -2891,4 +2648,382 @@
|
|||||||
<placeholder/>
|
<placeholder/>
|
||||||
</child>
|
</child>
|
||||||
</object>
|
</object>
|
||||||
|
<object class="GtkAdjustment" id="shot_size_adjustment">
|
||||||
|
<property name="upper">100</property>
|
||||||
|
<property name="value">0.20000000000000001</property>
|
||||||
|
<property name="step_increment">0.20000000000000001</property>
|
||||||
|
</object>
|
||||||
|
<object class="GtkDialog" id="edit_death_dialog">
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="title" translatable="yes">Edit Death Event</property>
|
||||||
|
<property name="resizable">False</property>
|
||||||
|
<property name="modal">True</property>
|
||||||
|
<property name="type_hint">dialog</property>
|
||||||
|
<property name="deletable">False</property>
|
||||||
|
<property name="transient_for">main_window</property>
|
||||||
|
<child internal-child="vbox">
|
||||||
|
<object class="GtkBox">
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="orientation">vertical</property>
|
||||||
|
<property name="spacing">4</property>
|
||||||
|
<child internal-child="action_area">
|
||||||
|
<object class="GtkButtonBox">
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="layout_style">end</property>
|
||||||
|
<child>
|
||||||
|
<object class="GtkButton" id="okButtonRename4">
|
||||||
|
<property name="label">gtk-ok</property>
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">True</property>
|
||||||
|
<property name="receives_default">True</property>
|
||||||
|
<property name="use_stock">True</property>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">True</property>
|
||||||
|
<property name="fill">True</property>
|
||||||
|
<property name="position">0</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkButton" id="cancelButtonRename4">
|
||||||
|
<property name="label">gtk-cancel</property>
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">True</property>
|
||||||
|
<property name="receives_default">True</property>
|
||||||
|
<property name="use_stock">True</property>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">True</property>
|
||||||
|
<property name="fill">True</property>
|
||||||
|
<property name="position">1</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">False</property>
|
||||||
|
<property name="fill">False</property>
|
||||||
|
<property name="position">0</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkBox">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="orientation">vertical</property>
|
||||||
|
<property name="spacing">5</property>
|
||||||
|
<child>
|
||||||
|
<object class="GtkBox">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="spacing">5</property>
|
||||||
|
<child>
|
||||||
|
<object class="GtkLabel">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="margin_top">5</property>
|
||||||
|
<property name="margin_bottom">5</property>
|
||||||
|
<property name="label" translatable="yes">Time</property>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">False</property>
|
||||||
|
<property name="fill">True</property>
|
||||||
|
<property name="position">0</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkBox">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<child>
|
||||||
|
<object class="GtkSpinButton" id="death_hour_spin">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">True</property>
|
||||||
|
<property name="max_length">2</property>
|
||||||
|
<property name="input_purpose">number</property>
|
||||||
|
<property name="adjustment">hour_adjustment</property>
|
||||||
|
<property name="numeric">True</property>
|
||||||
|
<property name="update_policy">if-valid</property>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">False</property>
|
||||||
|
<property name="fill">True</property>
|
||||||
|
<property name="position">0</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkLabel">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="label" translatable="yes">:</property>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">False</property>
|
||||||
|
<property name="fill">True</property>
|
||||||
|
<property name="position">1</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkSpinButton" id="death_min_spin">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">True</property>
|
||||||
|
<property name="max_length">2</property>
|
||||||
|
<property name="input_purpose">number</property>
|
||||||
|
<property name="adjustment">minute_adjustment</property>
|
||||||
|
<property name="numeric">True</property>
|
||||||
|
<property name="update_policy">if-valid</property>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">False</property>
|
||||||
|
<property name="fill">True</property>
|
||||||
|
<property name="position">2</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">True</property>
|
||||||
|
<property name="fill">True</property>
|
||||||
|
<property name="pack_type">end</property>
|
||||||
|
<property name="position">1</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">False</property>
|
||||||
|
<property name="fill">True</property>
|
||||||
|
<property name="position">0</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkBox">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="spacing">5</property>
|
||||||
|
<child>
|
||||||
|
<object class="GtkLabel">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="margin_top">5</property>
|
||||||
|
<property name="margin_bottom">5</property>
|
||||||
|
<property name="label" translatable="yes">Enemy</property>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">False</property>
|
||||||
|
<property name="fill">True</property>
|
||||||
|
<property name="position">0</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkComboBox" id="edit_death_enemy_combo">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="model">enemy_season_store</property>
|
||||||
|
<child>
|
||||||
|
<object class="GtkCellRendererText"/>
|
||||||
|
<attributes>
|
||||||
|
<attribute name="text">0</attribute>
|
||||||
|
</attributes>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">True</property>
|
||||||
|
<property name="fill">True</property>
|
||||||
|
<property name="pack_type">end</property>
|
||||||
|
<property name="position">1</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">False</property>
|
||||||
|
<property name="fill">True</property>
|
||||||
|
<property name="position">1</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkBox">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<child>
|
||||||
|
<object class="GtkLabel">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="margin_left">5</property>
|
||||||
|
<property name="margin_right">5</property>
|
||||||
|
<property name="margin_top">5</property>
|
||||||
|
<property name="margin_bottom">5</property>
|
||||||
|
<property name="label" translatable="yes">Player</property>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">False</property>
|
||||||
|
<property name="fill">True</property>
|
||||||
|
<property name="position">0</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkComboBox" id="edit_death_player_combo">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="model">episode_players_store</property>
|
||||||
|
<child>
|
||||||
|
<object class="GtkCellRendererText"/>
|
||||||
|
<attributes>
|
||||||
|
<attribute name="text">1</attribute>
|
||||||
|
</attributes>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">True</property>
|
||||||
|
<property name="fill">True</property>
|
||||||
|
<property name="pack_type">end</property>
|
||||||
|
<property name="position">1</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">False</property>
|
||||||
|
<property name="fill">True</property>
|
||||||
|
<property name="position">2</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkBox">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<child>
|
||||||
|
<object class="GtkLabel">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="margin_left">5</property>
|
||||||
|
<property name="margin_right">5</property>
|
||||||
|
<property name="margin_top">5</property>
|
||||||
|
<property name="margin_bottom">5</property>
|
||||||
|
<property name="label" translatable="yes">Drink Size</property>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">False</property>
|
||||||
|
<property name="fill">True</property>
|
||||||
|
<property name="position">0</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkSpinButton" id="edit_death_size_spin">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">True</property>
|
||||||
|
<property name="adjustment">shot_size_adjustment</property>
|
||||||
|
<property name="digits">1</property>
|
||||||
|
<property name="numeric">True</property>
|
||||||
|
<property name="update_policy">if-valid</property>
|
||||||
|
<property name="value">0.20000000000000001</property>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">False</property>
|
||||||
|
<property name="fill">True</property>
|
||||||
|
<property name="pack_type">end</property>
|
||||||
|
<property name="position">1</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">False</property>
|
||||||
|
<property name="fill">True</property>
|
||||||
|
<property name="position">3</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkBox">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<child>
|
||||||
|
<object class="GtkLabel">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="label" translatable="yes">Comment</property>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">False</property>
|
||||||
|
<property name="fill">True</property>
|
||||||
|
<property name="position">0</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkEntry" id="edit_death_comment_entry">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">True</property>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">True</property>
|
||||||
|
<property name="fill">True</property>
|
||||||
|
<property name="pack_type">end</property>
|
||||||
|
<property name="position">1</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">False</property>
|
||||||
|
<property name="fill">True</property>
|
||||||
|
<property name="position">4</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkTreeView" id="edit_death_penalties_tree_view">
|
||||||
|
<property name="height_request">100</property>
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">True</property>
|
||||||
|
<property name="vexpand">True</property>
|
||||||
|
<property name="model">player_penalties_store</property>
|
||||||
|
<property name="search_column">0</property>
|
||||||
|
<child internal-child="selection">
|
||||||
|
<object class="GtkTreeSelection"/>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkTreeViewColumn">
|
||||||
|
<property name="title" translatable="yes">Player</property>
|
||||||
|
<child>
|
||||||
|
<object class="GtkCellRendererText"/>
|
||||||
|
<attributes>
|
||||||
|
<attribute name="text">1</attribute>
|
||||||
|
</attributes>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkTreeViewColumn">
|
||||||
|
<property name="title" translatable="yes">Penalty</property>
|
||||||
|
<child>
|
||||||
|
<object class="GtkCellRendererCombo" id="penalty_view_drink_renderer">
|
||||||
|
<property name="editable">True</property>
|
||||||
|
<property name="has_entry">False</property>
|
||||||
|
<property name="model">drink_store</property>
|
||||||
|
<property name="text_column">1</property>
|
||||||
|
<signal name="edited" handler="on_penalty_drink_changed" swapped="no"/>
|
||||||
|
</object>
|
||||||
|
<attributes>
|
||||||
|
<attribute name="text">2</attribute>
|
||||||
|
</attributes>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">True</property>
|
||||||
|
<property name="fill">True</property>
|
||||||
|
<property name="position">5</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">True</property>
|
||||||
|
<property name="fill">True</property>
|
||||||
|
<property name="position">1</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
<action-widgets>
|
||||||
|
<action-widget response="-5">okButtonRename4</action-widget>
|
||||||
|
<action-widget response="-6">cancelButtonRename4</action-widget>
|
||||||
|
</action-widgets>
|
||||||
|
<child>
|
||||||
|
<placeholder/>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
</interface>
|
</interface>
|
||||||
|
|||||||
@@ -26,6 +26,10 @@ class ReadFunctions:
|
|||||||
def load_players(*_):
|
def load_players(*_):
|
||||||
return [mapping.db_to_player(player) for player in sql.Player.select()]
|
return [mapping.db_to_player(player) for player in sql.Player.select()]
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def load_enemies(season_id, *_):
|
||||||
|
pass
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def load_drinks(*_):
|
def load_drinks(*_):
|
||||||
return [mapping.db_to_drink(drink) for drink in sql.Drink.select()]
|
return [mapping.db_to_drink(drink) for drink in sql.Drink.select()]
|
||||||
@@ -39,7 +43,8 @@ class ReadFunctions:
|
|||||||
sql_func.get_player_victories_for_season(season_id, player.id),
|
sql_func.get_player_victories_for_season(season_id, player.id),
|
||||||
sql_func.get_player_deaths_for_season(season_id, player.id))
|
sql_func.get_player_deaths_for_season(season_id, player.id))
|
||||||
for player in players]
|
for player in players]
|
||||||
model.enemies = [(enemy.name,
|
model.enemies = [(enemy.id,
|
||||||
|
enemy.name,
|
||||||
sql_func.enemy_attempts(enemy.id),
|
sql_func.enemy_attempts(enemy.id),
|
||||||
sql.Victory.select().where(sql.Victory.enemy == enemy.id).exists(),
|
sql.Victory.select().where(sql.Victory.enemy == enemy.id).exists(),
|
||||||
enemy.boss)
|
enemy.boss)
|
||||||
|
|||||||
@@ -7,6 +7,15 @@ class WriteFunctions:
|
|||||||
def create_season(season: 'models.Season'):
|
def create_season(season: 'models.Season'):
|
||||||
return 'Season created.'
|
return 'Season created.'
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def update_enemy(enemy: 'models.Enemy'):
|
||||||
|
(sql.Enemy
|
||||||
|
.insert(id=enemy.id, boss=enemy.boss, name=enemy.name, season=enemy.season)
|
||||||
|
.on_conflict(update={sql.Enemy.name: enemy.name,
|
||||||
|
sql.Enemy.boss: enemy.boss,
|
||||||
|
sql.Enemy.season: enemy.season})
|
||||||
|
.execute())
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def update_season(season: 'models.Season', *_):
|
def update_season(season: 'models.Season', *_):
|
||||||
(sql.Season
|
(sql.Season
|
||||||
|
|||||||
Reference in New Issue
Block a user