64 lines
2.0 KiB
Python
64 lines
2.0 KiB
Python
import gi
|
|
gi.require_version('Gtk', '3.0')
|
|
from gi.repository import Gtk
|
|
from dsst_sql import sql
|
|
|
|
|
|
def enter_string_dialog(builder: Gtk.Builder, title: str, value=None) -> str:
|
|
""" Simple modal dialog for entering a string value
|
|
:param builder: GtkBuilder with loaded dialogs.glade file
|
|
:param title: Dialog title
|
|
:param value: Pre set value for dialog
|
|
:return:
|
|
"""
|
|
dialog = builder.get_object("nameEnterDialog") # type: Gtk.Dialog
|
|
dialog.set_transient_for(builder.get_object("main_window"))
|
|
dialog.set_title(title)
|
|
entry = builder.get_object("nameEnterEntry")
|
|
if value:
|
|
entry.set_text(value)
|
|
entry.grab_focus()
|
|
|
|
result = dialog.run()
|
|
dialog.hide()
|
|
|
|
if result == Gtk.ResponseType.OK:
|
|
return entry.get_text()
|
|
else:
|
|
return value
|
|
|
|
|
|
def show_episode_dialog(builder: Gtk.Builder, title: str, episode: sql.Episode=None):
|
|
dialog = builder.get_object("edit_episode_dialog") # type: Gtk.Dialog
|
|
dialog.set_transient_for(builder.get_object("main_window"))
|
|
dialog.set_title(title)
|
|
if episode:
|
|
builder.get_object("episode_no_spin_button").set_value(episode.number)
|
|
ep_players = sql.Player.select().join(sql.EpisodePlayer).join(sql.Episode).get()
|
|
|
|
result = dialog.run()
|
|
dialog.hide()
|
|
|
|
if result == Gtk.ResponseType.OK:
|
|
player_ids = [row[0] for row in builder.get_object('episode_players_store')]
|
|
query = sql.EpisodePlayer\
|
|
.delete()\
|
|
.wher(sql.EpisodePlayer.episode == episode.id)\
|
|
.where(sql.EpisodePlayer.player.not_in(player_ids))
|
|
#query = sql.EpisodePlayer.get_or_create(episode=episode.id, player=pl)
|
|
|
|
return episode
|
|
else:
|
|
return None
|
|
|
|
|
|
def show_manage_players_dialog(builder: Gtk.Builder, title: str):
|
|
dialog = builder.get_object("manage_players_dialog") # type: Gtk.Dialog
|
|
dialog.set_transient_for(builder.get_object("main_window"))
|
|
dialog.set_title(title)
|
|
|
|
result = dialog.run()
|
|
dialog.hide()
|
|
|
|
if result == Gtk.ResponseType.OK:
|
|
pass |