deemix-py/deemix/ui/MainFrame.py

62 lines
1.7 KiB
Python
Raw Normal View History

2020-02-17 16:46:18 +01:00
#!/usr/bin/env python3
import wx
2020-02-19 19:03:21 +01:00
from deemix.ui.SettingsDialog import SettingsDialog
2020-02-17 16:46:18 +01:00
from deemix.app.functions import downloadTrack, getIDFromLink, getTypeFromLink
2020-02-19 19:03:21 +01:00
menuIDs = {
"SETTINGS": 1
}
2020-02-17 16:46:18 +01:00
class MainFrame(wx.Frame):
2020-02-19 19:03:21 +01:00
def __init__(self, *args, **kwargs):
2020-02-17 16:46:18 +01:00
super().__init__(parent=None, title='deemix')
panel = wx.Panel(self)
2020-02-19 19:03:21 +01:00
self.settings = {}
# Menubar
menubar = wx.MenuBar()
fileMenu = wx.Menu()
settingsItem = fileMenu.Append(menuIDs['SETTINGS'], 'Settings', 'Edit Settings')
fileMenu.AppendSeparator()
quitItem = fileMenu.Append(wx.ID_EXIT, 'Quit', 'Quit application')
menubar.Append(fileMenu, '&File')
self.SetMenuBar(menubar)
self.Bind(wx.EVT_MENU, self.close_app, quitItem)
self.Bind(wx.EVT_MENU, self.open_settings, settingsItem)
# Main app
2020-02-17 16:46:18 +01:00
main_sizer = wx.BoxSizer(wx.VERTICAL)
search_sizer = wx.BoxSizer(wx.HORIZONTAL)
main_sizer.Add(search_sizer, 0, wx.EXPAND, 5)
self.text_ctrl = wx.TextCtrl(panel)
search_sizer.Add(self.text_ctrl, 1, wx.ALL, 5)
my_btn = wx.Button(panel, label='Download')
my_btn.Bind(wx.EVT_BUTTON, self.download_track)
2020-02-17 16:46:18 +01:00
search_sizer.Add(my_btn, 0, wx.ALL, 5)
panel.SetSizer(main_sizer)
self.Show()
def download_track(self, event):
2020-02-17 16:46:18 +01:00
value = self.text_ctrl.GetValue()
if not value:
print("You didn't enter anything!")
return None
type = getTypeFromLink(value)
id = getIDFromLink(value, type)
2020-02-17 16:46:18 +01:00
print(type, id)
if type == "track":
downloadTrack(id, 9)
2020-02-17 16:46:18 +01:00
self.text_ctrl.SetValue("")
2020-02-19 19:03:21 +01:00
def close_app(self, event):
self.Close()
def open_settings(self, event):
settings_dialog = SettingsDialog(self.settings, self)
res = settings_dialog.ShowModal()
if res == wx.ID_OK:
self.settings = settings_dialog.GetSettings()
settings_dialog.Destroy()