68 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			68 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
#!/usr/bin/env python3
 | 
						|
import wx
 | 
						|
 | 
						|
from deemix.ui.SettingsDialog import SettingsDialog
 | 
						|
from deemix.utils.misc import getIDFromLink, getTypeFromLink
 | 
						|
from deemix.app.downloader import download_track, download_album, download_playlist
 | 
						|
from deemix.app.settings import initSettings
 | 
						|
 | 
						|
menuIDs = {
 | 
						|
	"SETTINGS": 1
 | 
						|
}
 | 
						|
 | 
						|
class MainFrame(wx.Frame):
 | 
						|
	def __init__(self, *args, **kwargs):
 | 
						|
		super().__init__(parent=None, title='deemix')
 | 
						|
		panel = wx.Panel(self)
 | 
						|
 | 
						|
		self.settings = initSettings()
 | 
						|
 | 
						|
		# 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
 | 
						|
		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)
 | 
						|
		search_sizer.Add(my_btn, 0, wx.ALL, 5)
 | 
						|
		panel.SetSizer(main_sizer)
 | 
						|
		self.Show()
 | 
						|
 | 
						|
	def download_track(self, event):
 | 
						|
		value = self.text_ctrl.GetValue()
 | 
						|
		if not value:
 | 
						|
			print("You didn't enter anything!")
 | 
						|
			return None
 | 
						|
		type = getTypeFromLink(value)
 | 
						|
		id = getIDFromLink(value, type)
 | 
						|
		print(type, id)
 | 
						|
		if type == "track":
 | 
						|
			download_track(id, self.settings)
 | 
						|
		elif type == "album":
 | 
						|
			download_album(id, self.settings)
 | 
						|
		elif type == "playlist":
 | 
						|
			download_playlist(id, self.settings)
 | 
						|
		self.text_ctrl.SetValue("")
 | 
						|
 | 
						|
	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()
 |