MDB/ui.py

92 lines
3.8 KiB
Python

import PySimpleGUI as sg
import mdb
class Add:
def __init__(self):
#defines the Layout and generates a window
layout_adder = [
[sg.Text('Artist')],
[sg.InputText(key='ARTIST')],
[sg.Text('Title')],
[sg.InputText(key='TITLE')],
[sg.Text('Album')],
[sg.InputText(key='ALBUM')],
[sg.Text('Length')],
[sg.InputText(key='LENGTH')],
[sg.Text('Dance')],
[sg.InputText(key='DANCE')],
[sg.Text('Comment')],
[sg.InputText(key='COMMENT')],
[sg.Button('Add'), sg.Button('Cancel')] ]
self.add_module = sg.Window('Adding Module', layout_adder, use_custom_titlebar=True)
self.helper = mdb.Helper()
def run(self):
while(True):
event, values = self.add_module.read()
if event == 'Add':
song = values['TITLE']
artist = values['ARTIST']
album = values['ALBUM']
length = values['LENGTH']
dance = values['DANCE']
comment = values['COMMENT']
#self.helper.write_song(song=song, artist=artist, album=album, duration=length, dance=dance, comment=comment)
self.helper.write_song_json(song=song, artist=artist, album=album, duration=length, dance=dance, comment=comment)
if event == 'Cancel' or event == sg.WIN_CLOSED:
self.add_module.close()
break
class Look:
def __init__(self):
data = [["", "", "", "", "", ""]]
layout_look = [
[sg.Input(tooltip="Your info here", key='SEARCH'),
sg.Button(tooltip="Press to Search", button_text='Search'),
sg.Button(tooltip="close search window", button_text='Cancel')],
[sg.Table(
headings=["Artist", "Title", "Album", "Duration", "Dance", "Comment"],
values=data,
background_color='white',
alternating_row_color='lightblue',
text_color='black',
auto_size_columns=True,
justification='left',
num_rows=min(25, 25),
key='Table'
)
]]
self.look_module = sg.Window('Searching Module', layout_look, use_custom_titlebar=True)
self.helper = mdb.Helper()
return
def run(self):
while(True):
event, values = self.look_module.read()
if event == 'Search':
given = values['SEARCH']
data = self.helper.get_songs_dict_beautified("long", "list", *given)
print(data)
if not data:
sg.popup_error(f'There was no match found for "{given}"')
else:
self.look_module['Table'].update(values=data)
if event == 'Cancel' or event == sg.WIN_CLOSED:
self.look_module.close()
break
class Main:
def __init__(self):
layout_main = [
[sg.Button(tooltip="Open Add window", button_text='Add Music', p = (50,50)),
sg.Button(tooltip="Open Search window",button_text='Search for music', p = (50,50))]
]
self.main_module = sg.Window('MDB', layout_main, use_custom_titlebar=True)
def run(self):
while (True):
event, values = self.main_module.read()
if event == 'Add Music':
new_window = Add()
new_window.run()
if event == 'Search for music':
new_window = Look()
new_window.run()
if event == sg.WIN_CLOSED:
self.main_module.close()
break