import glob import wx import wx.adv import os from time import sleep from multiprocessing import Process, Pipe from sys import platform TRAY_TOOLTIP = 'IP Pigeon' TRAY_ICON = 'icon.png' """if platform == "linux" or platform == "linux2": # linux elif platform == "darwin": # OS X elif platform == "win32": # Windows... """ displaydata = None settings = None class ServerPanel(wx.Panel): def __init__(self, parent): super().__init__(parent) main_sizer = wx.BoxSizer(wx.VERTICAL) self.row_obj_dict = {} self.list_ctrl = wx.ListCtrl( self, size=(-1, 100), style=wx.LC_REPORT | wx.BORDER_SUNKEN ) self.list_ctrl.InsertColumn(0, 'Server name', width=140) self.list_ctrl.InsertColumn(1, 'Port number', width=140) self.list_ctrl.InsertColumn(2, 'Status', width=200) main_sizer.Add(self.list_ctrl, 0, wx.ALL | wx.EXPAND, 5) start_button = wx.Button(self, label='Start') start_button.Bind(wx.EVT_BUTTON, self.on_edit) stop_button = wx.Button(self, label='Stop') stop_button.Bind(wx.EVT_BUTTON, self.on_edit) main_sizer.Add(start_button, 0, wx.ALL | 100, 5) main_sizer.Add(stop_button, 0, wx.ALL | 100, 5) self.SetSizer(main_sizer) def on_edit(self, event): print('in on_edit') def update_mp3_listing(self, folder_path): print(folder_path) class ServerFrame(wx.Frame): def __init__(self): super().__init__(parent=None, title='Server Dashboard') self.panel = ServerPanel(self) self.Show() ### Taskbar Icon def create_menu_item(menu, label, func): item = wx.MenuItem(menu, -1, label) menu.Bind(wx.EVT_MENU, func, id=item.GetId()) menu.Append(item) return item class TaskBarIcon(wx.adv.TaskBarIcon): def __init__(self, frame): self.frame = frame super(TaskBarIcon, self).__init__() self.set_icon(TRAY_ICON) self.Bind(wx.adv.EVT_TASKBAR_LEFT_DOWN, self.on_left_down) def CreatePopupMenu(self): menu = wx.Menu() create_menu_item(menu, 'Control Panel', self.on_open) menu.AppendSeparator() create_menu_item(menu, 'Exit', self.on_exit) return menu def set_icon(self, path): icon = wx.Icon(path) self.SetIcon(icon, TRAY_TOOLTIP) def on_left_down(self, event): print ('Tray icon was left-clicked.') def on_open(self, event): foreground() #self.close_popup() def on_exit(self, event): wx.CallAfter(self.Destroy) self.close_popup() def close_popup(self): self.frame.Close() class TaskbarApp(wx.App): def OnInit(self): frame=wx.Frame(None) self.SetTopWindow(frame) TaskBarIcon(frame) return True class FullApp(wx.App): def OnInit(self): fullframe=ServerFrame() return True def background(): app = TaskbarApp(False) #with Manager() as manager: app.MainLoop() #displaydata = manager.list() #settings = manager.list() #rawdata = manager.list() #logdata = manager.list() #uploaddata = manager.list() #downloaddata = manager.list() def open_fg(outputdata, uisettings): app = FullApp(False) app.MainLoop() def foreground(): # Open the foreground in a separate process so that UI acts independently of the taskbar icon p = Process(target=open_fg, args=(displaydata, settings)) p.start() #p.join() print("Launched foreground") if __name__ == '__main__': background()