Add create episode function.

This commit is contained in:
luxick
2018-03-12 20:09:04 +01:00
parent 7034321889
commit 437f418f49
7 changed files with 1172 additions and 1157 deletions

View File

@@ -4,6 +4,7 @@ This module contains UI functions for displaying different dialogs
import datetime
from gi.repository import Gtk
from common import models
from dsst_gtk3 import gtk_ui
def enter_string_dialog(builder: Gtk.Builder, title: str, value=None) -> str:
@@ -56,78 +57,44 @@ def edit_season(builder: 'Gtk.Builder', season: 'models.Season'=None):
return season
def show_episode_dialog(builder: Gtk.Builder, title: str, season_id: int, episode):
""" Shows a dialog to edit an episode
:param builder: GtkBuilder with loaded 'dialogs.glade'
:param title: Title of the dialog window
:param season_id: Season to witch the episode should be added
:param episode: (Optional) Existing episode to edit
:return True if changes where saved False if discarded
def edit_episode(app: 'gtk_ui.GtkUi', season_id: int, episode: 'models.Episode'=None):
"""Show an dialog to create or edit episodes
:param app: Reference to main UI application
:param season_id: Is of the season in which the episode appears
:param episode: Existing episode object to edit
:return: Edited episode object, or None if the process was canceled
"""
pass
# # Set up the dialog
# dialog = builder.get_object("edit_episode_dialog") # type: Gtk.Dialog
# dialog.set_transient_for(builder.get_object("main_window"))
# dialog.set_title(title)
# with sql.db.atomic():
# if not episode:
# nxt_number = len(sql.Season.get_by_id(season_id).episodes) + 1
# episode = sql.Episode.create(seq_number=nxt_number, number=nxt_number, date=datetime.today(),
# season=season_id)
# # Set episode number
# builder.get_object("episode_no_spin_button").set_value(episode.number)
# # Set episode date
# builder.get_object('episode_calendar').select_month(episode.date.month, episode.date.year)
# builder.get_object('episode_calendar').select_day(episode.date.day)
# # Set participants for the episode
# builder.get_object('episode_players_store').clear()
# for player in episode.players:
# builder.get_object('episode_players_store').append([player.id, player.name, player.hex_id])
#
# result = dialog.run()
# dialog.hide()
#
# if result != Gtk.ResponseType.OK:
# sql.db.rollback()
# return False
#
# # Save all changes to Database
# player_ids = [row[0] for row in builder.get_object('episode_players_store')]
# # Insert new Players
# episode.players = sql.Player.select().where(sql.Player.id << player_ids)
# # Update Date of the Episode
# cal_value = builder.get_object('episode_calendar').get_date()
# selected_date = datetime(*cal_value).date()
# episode.date = selected_date,
# episode.number = int(builder.get_object("episode_no_spin_button").get_value())
# episode.name = builder.get_object("episode_name_entry").get_text()
# episode.save()
# return True
if not episode:
episode = models.Episode()
episode.date = datetime.datetime.today()
episode.number = 1
episode.name = ''
episode.players = []
app.ui.get_object('episode_name_entry').set_text(episode.name)
app.ui.get_object('episode_no_spin_button').set_value(episode.number)
app.ui.get_object('episode_calendar').select_month(episode.date.month, episode.date.year)
app.ui.get_object('episode_calendar').select_day(episode.date.day)
app.ui.get_object('episode_players_store').clear()
for player in episode.players:
app.ui.get_object('episode_players_store').append([player.id, player.name, player.hex_id])
def show_manage_players_dialog(builder: Gtk.Builder, title: str):
"""Show a dialog for managing player base data.
:param builder: Gtk.Builder object
:param title: Title for the dialog
"""
dialog = builder.get_object("manage_players_dialog") # type: Gtk.Dialog
dialog.set_transient_for(builder.get_object("main_window"))
dialog.run()
dialog = app.ui.get_object('edit_episode_dialog') # type: Gtk.Dialog
result = dialog.run()
dialog.hide()
if result != Gtk.ResponseType.OK:
return None
def show_manage_enemies_dialog(builder: Gtk.Builder, season_id: int):
dialog = builder.get_object("manage_enemies_dialog") # type: Gtk.Dialog
dialog.set_transient_for(builder.get_object("main_window"))
dialog.run()
dialog.hide()
def show_manage_drinks_dialog(builder: Gtk.Builder):
dialog = builder.get_object("manage_drinks_dialog") # type: Gtk.Dialog
dialog.set_transient_for(builder.get_object("main_window"))
dialog.run()
dialog.hide()
episode.name = app.ui.get_object('episode_name_entry').get_text()
episode.number = app.ui.get_object('episode_no_spin_button').get_value()
cal_value = app.ui.get_object('episode_calendar').get_date()
selected_date = datetime.datetime(*cal_value).date()
episode.date = selected_date
player_ids = [row[0] for row in app.ui.get_object('episode_players_store')]
episode.players = [app.get_by_id(app.players, player_id) for player_id in player_ids]
episode.season = season_id
return episode
def show_edit_death_dialog(builder: Gtk.Builder, episode_id: int, death):