def __init__(self, parent, manager): wx.Panel.__init__(self, parent) cmdrui.ControllerHandler.__init__(self) sizer = wx.BoxSizer(wx.VERTICAL) self.textCtrl = wx.TextCtrl(self, \ style = wx.TE_PROCESS_ENTER | wx.TE_PROCESS_TAB) sizer.Add(self.textCtrl, 0, wx.EXPAND) self.listBox = wx.ListBox(self, style=wx.LB_SINGLE) sizer.Add(self.listBox, 1, wx.EXPAND) if 0: self.logWnd = wx.TextCtrl(self, size=(0, 150), style=wx.TE_MULTILINE) wx.Log_SetActiveTarget(wx.LogTextCtrl(self.logWnd)) sizer.Add(self.logWnd, 1, wx.EXPAND) font = self.textCtrl.GetFont() font.SetPointSize(14) self.textCtrl.SetFont(font) self.listBox.SetFont(font) self.SetSizer(sizer) sizer.SetSizeHints(self)
def initUI(self): # Create empty connection object self.vpn = vpnConnection() # Begin background thread thread = threading.Thread(target=self.bgThread) thread.setDaemon(True) thread.start() # Create toolbar toolbar = wx.ToolBar(self, style=wx.TB_VERTICAL) tbConn = toolbar.AddTool(wx.ID_OPEN, '', wx.Bitmap(self.path + '/lib/connect.png'), shortHelp='Connect') tbDisc = toolbar.AddTool(wx.ID_CLOSE, '', wx.Bitmap(self.path + '/lib/disconnect.png'), shortHelp='Disconnect') tbClear = toolbar.AddTool(wx.ID_CLEAR, '', wx.Bitmap(self.path + '/lib/clear.png'), shortHelp='Clear Log') tbExit = toolbar.AddTool(wx.ID_EXIT, '', wx.Bitmap(self.path + '/lib/exit.png'), shortHelp='Exit') toolbar.Realize() self.log = wx.TextCtrl(self, style = wx.TE_MULTILINE | wx.TE_READONLY) wx.Log.SetActiveTarget(wx.LogTextCtrl(self.log)) sizer = wx.BoxSizer(wx.HORIZONTAL) sizer.Add(toolbar, 0, wx.EXPAND) sizer.Add(self.log, 1, wx.EXPAND) self.SetAutoLayout(True) self.Bind(wx.EVT_TOOL, self.onConnect, tbConn) self.Bind(wx.EVT_TOOL, self.onDisconnect, tbDisc) self.Bind(wx.EVT_TOOL, self.onClear, tbClear) self.Bind(wx.EVT_TOOL, self.onQuit, tbExit) self.SetSizer(sizer) self.SetSize((500,400)) self.SetTitle('OpenConnect SSL VPN Client') self.Centre() self.Show()
def MakeLogWindow(self, container): log = wx.TextCtrl(container, -1, style=wx.TE_MULTILINE | wx.TE_READONLY | wx.HSCROLL) wx.Log_SetActiveTarget(wx.LogTextCtrl(log)) wx.LogMessage('window handle: %s' % self.GetHandle()) return log
def _create_log_view(self): self._log = wx.TextCtrl(self.main_panel, -1, style=wx.TE_MULTILINE | wx.TE_READONLY | wx.HSCROLL) wx.Log_SetActiveTarget(wx.LogTextCtrl(self._log)) pass
def __createLogWin(self, evt=None): # to bypass wx.Log if self._logWin: self._logWin.Destroy() self._logWin = wx.Frame(None) self._logWin.Bind(wx.EVT_CLOSE, self.__createLogWin) wx.Log.SetActiveTarget(wx.LogTextCtrl(wx.TextCtrl(self._logWin, style=wx.TE_MULTILINE)))
def OnInit(self): try: self.SetAppName('nsqrCommander') global appDataFolder appDataFolder = '../data/' cmdr.Manager.commandsFolder = './cmdr/commands/' sys.stdout = MsgRedirector() sys.stderr = ErrorRedirector() ui.logWindow = wx.Frame(None, -1, 'pepper - Log Window') ui.logWindow.Bind(wx.EVT_CLOSE, self.__onClosingLogWindow) logWnd = wx.TextCtrl(ui.logWindow, size=(0, 150), style=wx.TE_MULTILINE) wx.Log_SetActiveTarget(wx.LogTextCtrl(logWnd)) ui.logWindow.SetSize((600, 400)) ui.logWindow.Show() print 'log window is activated' self.__tbIcon = wx.TaskBarIcon() iconFile = appDataFolder + 'app_icon.ico' icon = wx.Icon(iconFile, wx.BITMAP_TYPE_ICO) if not self.__tbIcon.SetIcon(icon, 'nsqrCommander'): print 'Could not set icon.' self.Bind(wx.EVT_TASKBAR_LEFT_UP, self.__onEvtTaskbarLeftUp) self.__frame = SimplePanelFrame() self.__frame.Hide() except: self.__frame = wx.Frame(None, -1, 'FAILED!') logWnd = wx.TextCtrl(self.__frame, size=(0, 150), style=wx.TE_MULTILINE) wx.Log_SetActiveTarget(wx.LogTextCtrl(logWnd)) #nsqrPy.printException() self.__frame.Show() if self.__frame: self.SetTopWindow(self.__frame) return True
def __init__(self, parent): wx.Panel.__init__(self, parent=parent, id=wx.ID_ANY) self.log = wx.TextCtrl(self, style=wx.TE_MULTILINE | wx.TE_READONLY) wx.Log.SetActiveTarget(wx.LogTextCtrl(self.log)) sizer = wx.BoxSizer() sizer.Add(self.log, 1, wx.EXPAND | wx.ALL, 0) self.SetSizer(sizer)
def init_splitter_windows(self): self._splitter_top = wx.SplitterWindow(self, style=wx.SP_3D) self._splitter_top.SetMinimumPaneSize(1) self._splitter_leftmiddle = wx.SplitterWindow(self._splitter_top, style=wx.SP_3D) self._splitter_leftmiddle.SetMinimumPaneSize(1) self._splitter_left = wx.SplitterWindow(self._splitter_leftmiddle, style=wx.SP_3D) self._splitter_left.SetMinimumPaneSize(1) self.g.track_tree = TrackTree(parent=self._splitter_left, g=self.g) self.g.track_edit = TrackEdit(parent=self._splitter_left, g=self.g) self._splitter_left.SplitHorizontally(self.g.track_tree, self.g.track_edit) self._splitter_left.SetSashPosition(self.GetSize().height * 3 // 5, True) self._splitter_middle = wx.SplitterWindow(self._splitter_leftmiddle, style=wx.SP_3D) self._splitter_middle.SetMinimumPaneSize(1) self.g.map_canvas = MapCanvas(parent=self._splitter_middle, g=self.g) self.g.track_chart = TrackChart(parent=self._splitter_middle, g=self.g) self._splitter_middle.SplitHorizontally(self.g.map_canvas, self.g.track_chart) self._splitter_middle.SetSashPosition(self.GetSize().height * 3 // 4, True) self._splitter_leftmiddle.SplitVertically(self._splitter_left, self._splitter_middle) self._splitter_leftmiddle.SetSashPosition( self.GetSize().width * 1 // 9, True) self._splitter_right = wx.SplitterWindow(self._splitter_top, style=wx.SP_3D) self._splitter_right.SetMinimumPaneSize(1) self.g.track_details = wx.TextCtrl(self._splitter_right, style=wx.TE_MULTILINE | wx.TE_READONLY | wx.HSCROLL) self.g.logger = wx.TextCtrl(self._splitter_right, style=wx.TE_MULTILINE | wx.TE_READONLY | wx.HSCROLL) wx.Log.SetActiveTarget(wx.LogTextCtrl(self.g.logger)) self._splitter_right.SplitHorizontally(self.g.track_details, self.g.logger) self._splitter_right.SetSashPosition(self.GetSize().height * 3 // 5, True) self._splitter_top.SplitVertically(self._splitter_leftmiddle, self._splitter_right) self._splitter_top.SetSashPosition(self.GetSize().width * 7 // 8, True) self.g.track_tree.Enable(True) self.g.track_edit.Enable(False)
def configureRightPanel(self, panel): noteBook = wx.Notebook(panel, -1, style=wx.NB_TOP) panelSizer = wx.BoxSizer(wx.VERTICAL) rulePanel = wx.Panel(noteBook, -1) rulePanel.SetBackgroundColour(wx.SystemSettings.GetColour(wx.SYS_COLOUR_FRAMEBK)) logPanel = wx.Panel(noteBook, -1) staticBox = wx.StaticBox(rulePanel, -1, u"") stacticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL) btnBoxSizer = wx.BoxSizer(wx.HORIZONTAL) #addBtn = wx.Button(rulePanel, -1, label=u"增加") delBtn = wx.Button(rulePanel, -1, label=u"删除") modBtn = wx.Button(rulePanel, -1, label=u"修改") #btnBoxSizer.Add(addBtn, 0, wx.ALL, 2) btnBoxSizer.Add(delBtn, 0, wx.ALL, 2) btnBoxSizer.Add(modBtn, 0, wx.ALL, 2) self.ruleGrid = RuleGrid.RuleGrid(rulePanel, self.onCheckBoxSelected) stacticBoxSizer.Add(btnBoxSizer, 0, wx.ALL | wx.CENTER, 0) stacticBoxSizer.Add(self.ruleGrid, 1, wx.ALL | wx.CENTER, 5) rulePanel.SetSizer(stacticBoxSizer) #addBtn.Bind(wx.EVT_BUTTON, self.clickAddBtn) delBtn.Bind(wx.EVT_BUTTON, self.clickDelBtn) modBtn.Bind(wx.EVT_BUTTON, self.clickModifyBtn) logTextCtrl = wx.TextCtrl(logPanel, -1, style=(wx.BORDER_NONE | wx.MULTIPLE | wx.TE_READONLY | wx.TE_AUTO_URL)) logBoxSizer = wx.BoxSizer(wx.VERTICAL) logBoxSizer.AddSizer(logTextCtrl, 1, wx.EXPAND) logPanel.SetSizer(logBoxSizer) logTarget = wx.LogTextCtrl(logTextCtrl) logTarget.SetTimestamp("%Y-%m-%d %H:%M:%S") wx.Log.SetActiveTarget(logTarget) noteBook.AddPage(rulePanel, u"现有规则", select=True) noteBook.AddPage(logPanel, u"日志") panelSizer.Add(noteBook, 1, wx.ALL | wx.EXPAND) panel.SetSizer(panelSizer) pass
def __init__(self, parent): pyResManDialogBase.__init__(self, parent) readernames = pyResManReader.getReaderList() self._readernameComboBox.InsertItems(readernames, 0) self._readernameComboBox.Select(0) self.__controller = pyResManController(self) self.__logger = wx.LogTextCtrl(self._logTextCtrl) self._claTextCtrl.SetValue('00') self._insTextCtrl.SetValue('A4') self._p1TextCtrl.SetValue('04') self._p2TextCtrl.SetValue('00') self._leTextCtrl.SetValue('00') self._scriptListCtrl.InsertColumn(0, 'Index', width=50) self._scriptListCtrl.InsertColumn(1, 'Command', width=200) self._scriptListCtrl.InsertColumn(2, 'Response', width=300) self._scriptListCtrl.InsertColumn(3, 'TimeSpent', width=100) self._scriptListCtrl.InsertColumn(4, 'DateTime', width=120) self._keyDataListCtrl.InsertColumn(0, 'index', width=50) self._keyDataListCtrl.InsertColumn(1, 'KVN', width=100) self._keyDataListCtrl.InsertColumn(2, 'key index', width=100) self._keyDataListCtrl.InsertColumn(3, 'key type', width=100) self._keyDataListCtrl.InsertColumn(4, 'key length', width=100) self._apduListCtrl.InsertColumn(0, 'Index', width=50) self._apduListCtrl.InsertColumn(1, 'Command', width=200) self._apduListCtrl.InsertColumn(2, 'Response', width=300) self._apduListCtrl.InsertColumn(3, 'TimeSpent', width=100) self._apduListCtrl.InsertColumn(4, 'DateTime', width=120) defaultKeyValue = '404142434445464748494A4B4C4D4E4F' self._key1TextCtrl.SetValue(defaultKeyValue) self._key2TextCtrl.SetValue(defaultKeyValue) self._key3TextCtrl.SetValue(defaultKeyValue) self._oldKVNTextCtrl.SetValue('00') self._newKVNTextCtrl.SetValue('01') self._apduListCtrl.Bind(wx.EVT_CONTEXT_MENU, self._apduListCtrlOnContextMenu) self._scriptListCtrl.Bind(wx.EVT_CONTEXT_MENU, self._scriptListCtrlOnContextMenu)
def __init__(self): wx.Frame.__init__(self, None, wx.ID_ANY, title="Maria's Card maker") sizer1 = wx.BoxSizer(wx.VERTICAL) sizer1.Add(wx.StaticText(self, wx.ID_ANY, "Excel file:"), 0, wx.ALIGN_CENTER_VERTICAL|wx.ALL, 3) self.__file_name_ctrl = wx.TextCtrl(self, -1, size=(500, -1)) sizer1.Add(self.__file_name_ctrl, 0, wx.ALIGN_CENTER_VERTICAL|wx.EXPAND|wx.ALL, 3) self.__new_cards = wx.CheckBox(self, wx.ID_ANY, "Create only new cards") sizer1.Add(self.__new_cards, 0, wx.ALL, 3) sizer2 = wx.BoxSizer(wx.HORIZONTAL) button = wx.Button(self, -1, "Open") button.Bind(wx.EVT_BUTTON, self.__on_chose_file) sizer2.Add(button, 0, wx.ALL, 3) sizer2.AddStretchSpacer(1) button = wx.Button(self, wx.ID_ANY, "Run") button.Bind(wx.EVT_BUTTON, self.__on_run) sizer2.Add(button, 0, wx.ALL, 3) sizer1.Add(sizer2, 0, wx.EXPAND) # add logger style = wx.TE_MULTILINE | wx.TE_READONLY | wx.TE_WORDWRAP logger = wx.TextCtrl(self, size=(500, 300),style=style) sizer1.Add(logger, 1, wx.ALL|wx.EXPAND, 3) logger = wx.LogTextCtrl(logger) wx.Log.SetActiveTarget(logger) sizer = wx.BoxSizer(wx.HORIZONTAL) sizer.Add(sizer1, 1, wx.EXPAND) zangoose = Path(__file__).parents[0] / "Zangoose.png" print("Opening image: ", str(zangoose)) image = wx.Image(str(zangoose), wx.BITMAP_TYPE_ANY) image = image.Scale(418 // 4, 457 // 4, quality=wx.IMAGE_QUALITY_HIGH) image = wx.StaticBitmap(self, -1, wx.Bitmap(image)) sizer.Add(image, 0, wx.ALL, 3) self.SetSizer(sizer) self.Fit() wx.LogMessage("Ready when you are! Select an Excel file")
def __init__(self, *args, **kw): """Initialize the gui here""" super().__init__(*args, **kw) # Startup Settings self.active_queue = [] self.genre_pristine = True self.project = Project() self.default_save_path = ivonet.DEFAULT_SAVE_PATH wx.ArtProvider.Push(IvoNetArtProvider()) self.SetSize((1500, 1200)) self.SetMinSize((1024, 768)) self.current_size = self.GetSize() self.is_resizing = False self.__make_toolbar() self.SetMenuBar(MenuBar(self)) self.CreateStatusBar() self.SetStatusText(ivonet.TXT_COPYRIGHT) self.status_timer = wx.Timer(self) self.Bind(wx.EVT_TIMER, self.on_clear_status, self.status_timer) vs_main = wx.BoxSizer(wx.VERTICAL) self.main_panel = wx.Panel(self, wx.ID_ANY) vs_main.Add(self.main_panel, 3, wx.EXPAND, 0) vs_main_panel = wx.BoxSizer(wx.VERTICAL) hs_main_panel = wx.BoxSizer(wx.HORIZONTAL) vs_main_panel.Add(hs_main_panel, 4, wx.EXPAND, 0) self.m4b_panel = wx.Panel(self.main_panel, wx.ID_ANY) hs_main_panel.Add(self.m4b_panel, 1, wx.EXPAND, 0) vs_m4b_panel = wx.BoxSizer(wx.VERTICAL) hs_m4b_panel = wx.BoxSizer(wx.HORIZONTAL) vs_m4b_panel.Add(hs_m4b_panel, 1, wx.EXPAND, 0) self.metadata_panel = wx.Panel(self.m4b_panel, wx.ID_ANY, style=wx.BORDER_SIMPLE | wx.TAB_TRAVERSAL) hs_m4b_panel.Add(self.metadata_panel, 2, wx.ALL | wx.EXPAND, 0) hs_metadata_panel = wx.BoxSizer(wx.HORIZONTAL) fgs_metadata_panel = wx.FlexGridSizer(3, 1, 4, 0) hs_metadata_panel.Add(fgs_metadata_panel, 1, wx.ALL | wx.EXPAND, 2) fgs_mp3_metadata = wx.FlexGridSizer(6, 2, 4, 11) fgs_metadata_panel.Add(fgs_mp3_metadata, 1, wx.ALL | wx.EXPAND, 0) # MP3 Tags lbl_title = wx.StaticText(self.metadata_panel, wx.ID_ANY, "Title") fgs_mp3_metadata.Add(lbl_title, 1, 0, 0) self.tc_title = wx.TextCtrl(self.metadata_panel, wx.ID_ANY, "") self.tc_title.SetToolTip("Title of the book") fgs_mp3_metadata.Add(self.tc_title, 1, wx.EXPAND, 0) lbl_artist = wx.StaticText(self.metadata_panel, wx.ID_ANY, "Artist") fgs_mp3_metadata.Add(lbl_artist, 0, wx.EXPAND, 0) self.tc_artist = wx.TextCtrl(self.metadata_panel, wx.ID_ANY, "") self.tc_artist.SetToolTip("The author or album artist") fgs_mp3_metadata.Add(self.tc_artist, 0, wx.EXPAND, 0) lbl_grouping = wx.StaticText(self.metadata_panel, wx.ID_ANY, "Grouping") fgs_mp3_metadata.Add(lbl_grouping, 1, 0, 0) self.tc_grouping = wx.TextCtrl(self.metadata_panel, wx.ID_ANY, "") self.tc_grouping.SetToolTip("Grouping e.g. series") fgs_mp3_metadata.Add(self.tc_grouping, 0, wx.EXPAND, 0) lbl_genre = wx.StaticText(self.metadata_panel, wx.ID_ANY, "Genre") fgs_mp3_metadata.Add(lbl_genre, 0, 0, 0) self.cb_genre = wx.ComboBox(self.metadata_panel, wx.ID_ANY, choices=GENRES, style=wx.CB_DROPDOWN | wx.TE_PROCESS_ENTER | wx.CB_READONLY) self.cb_genre.SetToolTip("Select your genre") self.cb_genre.SetSelection(0) fgs_mp3_metadata.Add(self.cb_genre, 0, wx.ALL | wx.EXPAND | wx.FIXED_MINSIZE, 0) label_1 = wx.StaticText(self.metadata_panel, wx.ID_ANY, "Chapter text") fgs_mp3_metadata.Add(label_1, 0, 0, 0) self.tc_chapter_text = wx.TextCtrl(self.metadata_panel, wx.ID_ANY, "Chapter") self.tc_chapter_text.SetToolTip("Text to use fore chapterisation") fgs_mp3_metadata.Add(self.tc_chapter_text, 0, wx.EXPAND, 0) lbl_chapterisation = wx.StaticText(self.metadata_panel, wx.ID_ANY, "Chapters") fgs_mp3_metadata.Add(lbl_chapterisation, 1, 0, 0) self.cb_chapterisation = wx.ComboBox(self.metadata_panel, wx.ID_ANY, choices=CHAPTER_LIST, style=wx.CB_DROPDOWN | wx.CB_READONLY | wx.CB_SIMPLE) self.cb_chapterisation.SetToolTip( "Choose which chapterisation method is prefered") self.cb_chapterisation.SetSelection(0) fgs_mp3_metadata.Add(self.cb_chapterisation, 0, wx.EXPAND, 0) vs_track_year_comment = wx.BoxSizer(wx.VERTICAL) fgs_metadata_panel.Add(vs_track_year_comment, 1, wx.EXPAND, 0) hs_track_year = wx.BoxSizer(wx.HORIZONTAL) vs_track_year_comment.Add(hs_track_year, 0, wx.ALL | wx.EXPAND, 0) lbl_disc = wx.StaticText(self.metadata_panel, wx.ID_ANY, "Disc") hs_track_year.Add(lbl_disc, 0, 0, 0) hs_track_year.Add((60, 20), 0, 0, 0) self.sc_disc = wx.SpinCtrl(self.metadata_panel, wx.ID_ANY, "1", min=1, max=100) self.sc_disc.SetToolTip("which disk?") hs_track_year.Add(self.sc_disc, 0, 0, 0) label_8 = wx.StaticText(self.metadata_panel, wx.ID_ANY, "of") hs_track_year.Add(label_8, 0, wx.ALIGN_CENTER_VERTICAL, 0) self.sc_disk_total = wx.SpinCtrl(self.metadata_panel, wx.ID_ANY, "1", min=1, max=100) self.sc_disk_total.SetToolTip("Total number of discs for this book") hs_track_year.Add(self.sc_disk_total, 0, 0, 0) hs_track_year.Add((32, 20), 0, 0, 0) lbl_year = wx.StaticText(self.metadata_panel, wx.ID_ANY, "Year") hs_track_year.Add(lbl_year, 0, wx.ALIGN_CENTER_VERTICAL, 0) self.tc_year = wx.TextCtrl(self.metadata_panel, wx.ID_ANY, "") self.tc_year.Bind(wx.EVT_CHAR, handle_numeric_keypress) self.tc_year.SetToolTip("Publication year") hs_track_year.Add(self.tc_year, 1, wx.EXPAND, 0) vs_comment = wx.BoxSizer(wx.VERTICAL) vs_track_year_comment.Add(vs_comment, 0, wx.EXPAND, 0) vs_comment_1 = wx.BoxSizer(wx.VERTICAL) vs_comment.Add(vs_comment_1, 2, wx.ALL | wx.EXPAND, 0) lbl_comment = wx.StaticText(self.metadata_panel, wx.ID_ANY, "Comment") vs_comment_1.Add(lbl_comment, 0, wx.LEFT, 0) self.tc_comment = wx.TextCtrl(self.metadata_panel, wx.ID_ANY, "", style=wx.TE_MULTILINE) self.tc_comment.SetToolTip("Add your comments here.") vs_comment_1.Add(self.tc_comment, 2, wx.EXPAND, 0) cover_art_wrapper_sizer_v = wx.BoxSizer(wx.VERTICAL) fgs_metadata_panel.Add(cover_art_wrapper_sizer_v, 1, wx.ALL | wx.EXPAND, 0) # Cover Art section lbl_cover_art = wx.StaticText(self.metadata_panel, wx.ID_ANY, "Cover art") cover_art_wrapper_sizer_v.Add(lbl_cover_art, 0, 0, 0) self.cover_art_panel = wx.Panel(self.metadata_panel, wx.ID_ANY) self.cover_art_panel.SetToolTip("Drag and drop Cover Art here") cover_art_wrapper_sizer_v.Add(self.cover_art_panel, 1, wx.EXPAND, 1) cover_art_sizer_h = wx.BoxSizer(wx.HORIZONTAL) self.cover_art = wx.StaticBitmap(self.cover_art_panel) self.cover_art.SetBitmap(yoda.GetBitmap()) self.SetToolTip("Drag and drop Cover Art here. Double click to reset.") self.cover_art.SetDropTarget(CoverArtDropTarget(self)) self.cover_art.Bind(wx.EVT_LEFT_DCLICK, self.on_reset_cover_art) cover_art_sizer_h.Add(self.cover_art, 1, wx.EXPAND, 0) # MP3 Drag n Drop section self.lc_mp3 = wx.adv.EditableListBox( self, wx.ID_ANY, "Drag and Drop mp3 files below...", style=wx.adv.EL_ALLOW_DELETE) self.lc_mp3.SetToolTip("Drag and Drop MP3 files here") self.lc_mp3.SetDropTarget(MP3DropTarget(self)) self.lc_mp3.SetToolTip("Drag and Drop MP3 files here") self.lc_mp3.del_button = self.lc_mp3.GetDelButton() self.lc_mp3.GetListCtrl().Bind(wx.EVT_LEFT_DCLICK, self.on_tracks_empty) self.lc_mp3.GetListCtrl().Bind(wx.EVT_LIST_ITEM_RIGHT_CLICK, self.on_selected_right_click) hs_m4b_panel.Add(self.lc_mp3, 5, wx.ALL | wx.EXPAND, 0) self.log_panel = wx.Panel(self.main_panel, wx.ID_ANY) vs_main_panel.Add(self.log_panel, 1, wx.EXPAND, 0) log_sizer_v = wx.BoxSizer(wx.VERTICAL) log_sizer_h = wx.BoxSizer(wx.HORIZONTAL) log_sizer_v.Add(log_sizer_h, 1, wx.EXPAND, 0) self.tc_log = wx.TextCtrl(self.log_panel, wx.ID_ANY, "", style=wx.TE_MULTILINE | wx.TE_LEFT | wx.TE_READONLY | wx.HSCROLL) self.tc_log.SetFont( wx.Font(12, wx.FONTFAMILY_TELETYPE, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, 0, "Courier New")) wx.Log.SetActiveTarget(wx.LogTextCtrl(self.tc_log)) log_sizer_h.Add(self.tc_log, 1, wx.EXPAND, 0) # Queue Part self.queue_window = wx.ScrolledWindow(self.main_panel, wx.ID_ANY, style=wx.BORDER_RAISED | wx.TAB_TRAVERSAL | wx.HT_WINDOW_VERT_SCROLLBAR) self.queue_window.SetScrollRate(10, 10) vs_main_panel.Add(self.queue_window, 1, wx.EXPAND, 0) self.queue_sizer_v = wx.BoxSizer(wx.VERTICAL) self.queue_window.SetSizer(self.queue_sizer_v) self.log_panel.SetSizer(log_sizer_v) self.cover_art_panel.SetSizer(cover_art_sizer_h) fgs_mp3_metadata.AddGrowableCol(1) fgs_metadata_panel.AddGrowableRow(2) fgs_metadata_panel.AddGrowableCol(0) self.metadata_panel.SetSizer(hs_metadata_panel) self.m4b_panel.SetSizer(vs_m4b_panel) self.main_panel.SetSizer(vs_main_panel) self.SetSizer(vs_main) vs_main.SetSizeHints(self) self.load_settings() self.Layout() self.update_timer = wx.Timer(self) self.Bind(wx.EVT_TIMER, self.on_update_ui) self.update_timer.Start(750) self.Bind(wx.EVT_TEXT, self.on_title, self.tc_title) self.Bind(wx.EVT_TEXT, self.on_artist, self.tc_artist) self.Bind(wx.EVT_TEXT, self.on_grouping, self.tc_grouping) self.Bind(wx.EVT_COMBOBOX, self.on_genre, self.cb_genre) self.Bind(wx.EVT_TEXT, self.on_chapter_text, self.tc_chapter_text) self.Bind(wx.EVT_COMBOBOX, self.on_chapter_method, self.cb_chapterisation) self.Bind(wx.EVT_SPINCTRL, self.on_disc, self.sc_disc) self.Bind(wx.EVT_SPINCTRL, self.on_disc, self.sc_disk_total) self.Bind(wx.EVT_TEXT, self.on_year, self.tc_year) self.Bind(wx.EVT_TEXT, self.on_comment, self.tc_comment) self.Bind(wx.EVT_TEXT_MAXLEN, self.on_log_empty, self.tc_log) self.tc_log.Bind(wx.EVT_LEFT_DCLICK, self.on_log_empty) self.Bind(wx.EVT_SIZING, self.on_resizing) self.Bind(wx.EVT_IDLE, self.on_idle) self.Bind(EVT_PROJECT_HISTORY, self.on_project_history) self.Bind(EVT_PROCESS_CLEAN, self.on_clean_queue_item) self.Bind(EVT_PROCESS_CANCELLED, self.on_process_cancelled) self.Bind(EVT_UPDATE_CHECK, self.update_check) self.init()
def __init__(self, *args, **kw): """Initialize the gui here""" super().__init__(*args, **kw) # Startup Settings self.activation_bytes = None self.active_queue = [] self.genre_pristine = True self.project = Project() self.default_save_path = ivonet.DEFAULT_SAVE_PATH wx.ArtProvider.Push(IvoNetArtProvider()) self.SetSize((1024, 768)) self.SetMinSize((1024, 768)) self.current_size = self.GetSize() self.__make_toolbar() self.SetMenuBar(MenuBar(self)) self.CreateStatusBar() self.SetStatusText(ivonet.TXT_COPYRIGHT) self.status_timer = wx.Timer(self) self.Bind(wx.EVT_TIMER, self.on_clear_status, self.status_timer) vs_main = wx.BoxSizer(wx.VERTICAL) self.main_panel = wx.Panel(self, wx.ID_ANY) vs_main.Add(self.main_panel, 1, wx.EXPAND, 0) vs_main_panel = wx.BoxSizer(wx.VERTICAL) hs_main_panel = wx.BoxSizer(wx.HORIZONTAL) vs_main_panel.Add(hs_main_panel, 1, wx.EXPAND, 0) self.m4b_panel = wx.Panel(self.main_panel, wx.ID_ANY) hs_main_panel.Add(self.m4b_panel, 1, wx.EXPAND, 0) vs_m4b_panel = wx.BoxSizer(wx.VERTICAL) hs_m4b_panel = wx.BoxSizer(wx.HORIZONTAL) vs_m4b_panel.Add(hs_m4b_panel, 1, wx.EXPAND, 0) self.lc_audiofiles = wx.adv.EditableListBox(self, wx.ID_ANY, "Drag and Drop aax files below...", style=wx.adv.EL_ALLOW_DELETE) self.lc_audiofiles.SetDropTarget(MP3DropTarget(self)) self.lc_audiofiles.SetToolTip("Drag and Drop AAX files here") self.lc_audiofiles.del_button = self.lc_audiofiles.GetDelButton() self.lc_audiofiles.GetListCtrl().Bind(wx.EVT_LEFT_DCLICK, self.on_tracks_empty) hs_m4b_panel.Add(self.lc_audiofiles, 3, wx.ALL | wx.EXPAND, 0) self.log_panel = wx.Panel(self.main_panel, wx.ID_ANY) vs_main_panel.Add(self.log_panel, 1, wx.EXPAND, 0) log_sizer_v = wx.BoxSizer(wx.VERTICAL) log_sizer_h = wx.BoxSizer(wx.HORIZONTAL) log_sizer_v.Add(log_sizer_h, 1, wx.EXPAND, 0) self.tc_log = wx.TextCtrl(self.log_panel, wx.ID_ANY, "", style=wx.TE_MULTILINE | wx.TE_LEFT | wx.TE_READONLY | wx.HSCROLL) self.tc_log.SetFont( wx.Font(12, wx.FONTFAMILY_TELETYPE, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, 0, "Courier New")) wx.Log.SetActiveTarget(wx.LogTextCtrl(self.tc_log)) log_sizer_h.Add(self.tc_log, 1, wx.EXPAND, 0) # Queue Part self.queue_window = wx.ScrolledWindow(self.main_panel, wx.ID_ANY, style=wx.BORDER_RAISED | wx.TAB_TRAVERSAL | wx.HT_WINDOW_VERT_SCROLLBAR) self.queue_window.SetScrollRate(10, 10) vs_main_panel.Add(self.queue_window, 1, wx.EXPAND, 0) self.queue_sizer_v = wx.BoxSizer(wx.VERTICAL) self.queue_window.SetSizer(self.queue_sizer_v) self.log_panel.SetSizer(log_sizer_v) self.m4b_panel.SetSizer(vs_m4b_panel) self.main_panel.SetSizer(vs_main_panel) self.SetSizer(vs_main) vs_main.SetSizeHints(self) self.load_settings() self.Layout() self.update_timer = wx.Timer(self) self.Bind(wx.EVT_TIMER, self.on_update_ui) self.update_timer.Start(750) self.Bind(wx.EVT_TEXT_MAXLEN, self.on_log_empty, self.tc_log) self.tc_log.Bind(wx.EVT_LEFT_DCLICK, self.on_log_empty) self.Bind(EVT_PROCESS_CLEAN, self.on_clean_queue_item) self.Bind(EVT_PROCESS_CANCELLED, self.on_process_cancelled) self.init()
def __init__(self, parent, id, title): # 只有一个关闭按钮,不能改变大小 wx.Frame.__init__(self, parent, id, title, pos=(70, 80), size=(1260, 570), style=wx.SYSTEM_MENU | wx.CAPTION | wx.CLOSE_BOX) # style=wx.FULLSCREEN_NOSTATUSBAR | wx.DEFAULT_FRAME_STYLE) # 窗口的角标 self.SetIcon(wx.Icon("src\\gui_view\\studio.ico", wx.BITMAP_TYPE_ICO)) # self.SetIcon(wx.Icon("gui_view\\studio.ico", wx.TaskBarIcon)) self.event_ctrl = EventController(self) # 主界面 main_vbox = wx.BoxSizer(wx.VERTICAL) vbox1_phone_info = wx.BoxSizer(wx.VERTICAL) vbox2_apk_info = wx.BoxSizer(wx.VERTICAL) vbox3_button = wx.BoxSizer(wx.VERTICAL) grid_button = wx.GridSizer(3, 6, 5, 5) # window的上半部分:vbox2(lc_device_info) self.lc_device_info = wx.ListCtrl(self, -1, style=wx.LC_REPORT | wx.BORDER_SUNKEN) self.lc_device_info.InsertColumn(0, '品 牌'.decode('utf8'), wx.LIST_FORMAT_RIGHT, width= 78) self.lc_device_info.InsertColumn(1, '型 号'.decode('utf8'), wx.LIST_FORMAT_CENTER, width=85) self.lc_device_info.InsertColumn(2, '系统版本'.decode('utf8'), wx.LIST_FORMAT_CENTER, width=78) self.lc_device_info.InsertColumn(3, '运行内存'.decode('utf8'), wx.LIST_FORMAT_CENTER, width=78) self.lc_device_info.InsertColumn(4, '像素密度'.decode('utf8'), wx.LIST_FORMAT_CENTER, width=78) self.lc_device_info.InsertColumn(5, '分辨率'.decode('utf8'), wx.LIST_FORMAT_CENTER, width=100) self.lc_device_info.InsertColumn(6, 'IP'.decode('utf8'), wx.LIST_FORMAT_CENTER, width=120) self.lc_device_info.InsertColumn(7, 'ID'.decode('utf8'), wx.LIST_FORMAT_CENTER, width=120) vbox1_phone_info.Add(self.lc_device_info, 1, wx.EXPAND | wx.ALL, 3) self.event_ctrl.refresh_device_info() # 设置右键菜单 menuBar = wx.MenuBar() self.SetMenuBar(menuBar) self.popupmenu = wx.Menu() for text in "dump print".split(): item = self.popupmenu.Append(-1, text) self.Bind(wx.EVT_MENU, self.event_ctrl.on_popup_item_selected, item) self.lc_device_info.Bind(wx.EVT_CONTEXT_MENU, self.event_ctrl.show_popUp) # 中间部分显示apk文件目录 self.lc_apk_info = wx.ListCtrl(self, -1, style=wx.LC_LIST | wx.LC_SORT_ASCENDING) vbox2_apk_info.Add(self.lc_apk_info, 1, wx.EXPAND | wx.ALL, 4) self.event_ctrl.refresh_apk_info() # 最下面部分显示按钮 panl = wx.Panel(self, -1, style=wx.SIMPLE_BORDER) vbox3_button.Add(panl, 1, wx.EXPAND | wx.ALL, 3) grid_button.AddMany([ (wx.Button(panl, 10, '刷新列表'.decode('utf8'), size=(80,35)) , 0, wx.ALIGN_CENTER), (wx.Button(panl, 11, '清空列表'.decode('utf8'), size=(80,35)), 0,wx.ALIGN_CENTER), (wx.Button(panl, 12, '移除本地'.decode('utf8'), size=(80,35)), 0,wx.ALIGN_CENTER), (wx.Button(panl, 13, '录制视频'.decode('utf8'), size=(80,35)), 0,wx.ALIGN_CENTER), (wx.Button(panl, 14, '截取屏幕'.decode('utf8'), size=(80,35)), 0,wx.ALIGN_CENTER), (wx.Button(panl, 15, '重启设备'.decode('utf8'), size=(80,35)), 0,wx.ALIGN_CENTER), (wx.Button(panl, 16, '单个安装'.decode('utf8'), size=(80,35)), 0,wx.ALIGN_CENTER), (wx.Button(panl, 17, '全部安装'.decode('utf8'), size=(80,35)), 0,wx.ALIGN_CENTER), (wx.Button(panl, 18, '覆盖安装'.decode('utf8'), size=(80,35)), 0,wx.ALIGN_CENTER), (wx.Button(panl, 19, '清除数据'.decode('utf8'), size=(80,35)), 0,wx.ALIGN_CENTER), (wx.Button(panl, 20, '发送文本'.decode('utf8'), size=(80,35)), 0,wx.ALIGN_CENTER), (wx.Button(panl, 21, '杀死进程'.decode('utf8'), size=(80,35)), 0,wx.ALIGN_CENTER), (wx.Button(panl, 22, '崩溃日志'.decode('utf8'), size=(80,35)), 0,wx.ALIGN_CENTER), (wx.Button(panl, 23, '当前包名'.decode('utf8'), size=(80,35)), 0,wx.ALIGN_CENTER), (wx.Button(panl, 24, '当前活动'.decode('utf8'), size=(80,35)), 0,wx.ALIGN_CENTER), (wx.Button(panl, 25, '应用权限'.decode('utf8'), size=(80,35)), 0,wx.ALIGN_CENTER), (wx.Button(panl, 26, '性能消耗'.decode('utf8'), size=(80,35)), 0,wx.ALIGN_CENTER), (wx.Button(panl, 27, 'kill 5037'.decode('utf8'),size=(80,35)), 0,wx.ALIGN_CENTER), ]) panl.SetSizer(grid_button) # 为各个btn设置事件监听 self.Bind(wx.EVT_BUTTON, self.event_ctrl.do_refresh, id=10) # self.Bind(wx.EVT_BUTTON, self.event_ctrl.do_download, id=12) self.Bind(wx.EVT_BUTTON, self.event_ctrl.do_screenrecord_event, id=13) self.Bind(wx.EVT_BUTTON, self.event_ctrl.do_Clear, id=11) self.Bind(wx.EVT_BUTTON, self.event_ctrl.remove_local_file, id=12) self.Bind(wx.EVT_BUTTON, self.event_ctrl.do_capture_window, id=14) self.Bind(wx.EVT_BUTTON, self.event_ctrl.do_reboot, id=15) self.Bind(wx.EVT_BUTTON, self.event_ctrl.do_install, id=16) self.Bind(wx.EVT_BUTTON, self.event_ctrl.do_install_all, id=17) self.Bind(wx.EVT_BUTTON, self.event_ctrl.do_cover_install, id=18) self.Bind(wx.EVT_BUTTON, self.event_ctrl.do_clear_data, id=19) self.Bind(wx.EVT_BUTTON, self.event_ctrl.do_input_text, id=20) self.Bind(wx.EVT_BUTTON, self.event_ctrl.do_kill_process_event, id=21) self.Bind(wx.EVT_BUTTON, self.event_ctrl.get_app_crash_log,id=22) self.Bind(wx.EVT_BUTTON, self.event_ctrl.get_current_app_package_name, id=23) self.Bind(wx.EVT_BUTTON, self.event_ctrl.get_current_app_activity, id=24) self.Bind(wx.EVT_BUTTON, self.event_ctrl.get_app_permission_event, id=25) self.Bind(wx.EVT_BUTTON, self.event_ctrl.get_app_cpu_mem_thread, id=26) self.Bind(wx.EVT_BUTTON, self.event_ctrl.reset_service_port, id=27) # 将vbox2和hbox1添加到w_vbox中 main_vbox.Add(vbox1_phone_info, 1, wx.EXPAND) main_vbox.Add(vbox2_apk_info, 1, wx.EXPAND) main_vbox.Add(vbox3_button, 1, wx.EXPAND) # 添加一个boss容器,log容器,boss容纳主界面 boss_vbox = wx.BoxSizer(wx.HORIZONTAL) log_vbox = wx.BoxSizer(wx.VERTICAL) self.log_text_ctrl = wx.TextCtrl(self, id=28, style=wx.TE_MULTILINE, size=(500, 570)) self.Bind(wx.EVT_BUTTON, self.event_ctrl.do_Clear, id=28) log_vbox.Add(self.log_text_ctrl, 1, wx.EXPAND | wx.ALL, 3) # 将整个gui的日志进行重定向到指定控件里 wx.Log.SetActiveTarget(wx.LogTextCtrl(self.log_text_ctrl)) boss_vbox.Add(main_vbox) boss_vbox.Add(log_vbox) self.SetSizer(boss_vbox)
def __init__(self, *args, **kwds): # begin wxGlade: frmRipper.__init__ kwds["style"] = wx.DEFAULT_FRAME_STYLE wx.Frame.__init__(self, *args, **kwds) self.lblTempPath = wx.StaticText(self, -1, "Working path:", style=wx.ALIGN_RIGHT) self.txtTempPath = wx.TextCtrl(self, -1, "/tmp") self.cmdTempPath = wx.Button(self, ID_CHOOSETMPPATH, "...", style=wx.BU_LEFT) self.lblOutPath = wx.StaticText(self, -1, "Final output path:", style=wx.ALIGN_RIGHT) self.txtOutPath = wx.TextCtrl(self, -1, "") self.cmdOutPath = wx.Button(self, ID_CHOOSEOUTPATH, "...", style=wx.BU_LEFT) self.chkEject = wx.CheckBox(self, -1, "Eject CD when done") self.lblCoverArt = wx.StaticText(self, -1, "Cover Art (APPLICATION blocks):") self.bmpCoverArt = wx.StaticBitmap(self, -1, wx.EmptyBitmap(120, 120), style=wx.SIMPLE_BORDER) self.lblCoverArtFilename = wx.StaticText(self, -1, "None Selected") self.lblMimeType = wx.StaticText(self, -1, "application/unknown") self.lblCoverArtSize = wx.StaticText(self, -1, "0 bytes") self.cmdCoverArt = wx.Button(self, ID_CHOOSECOVERART, "...", style=wx.BU_LEFT) self.cmdDetectCD = wx.ToggleButton(self, ID_DETECTCD, "Detect CD") self.cmdRip = wx.ToggleButton(self, ID_RIP, "Rip") #self.cmdWebBrowser = wx.Button(self, ID_WEBBROWSER, "Look Up") self.cmdClose = wx.Button(self, ID_CLOSE, "Close") self.lblTags = wx.StaticText(self, -1, "Tags (VORBIS_COMMENT block):") self.txtTags = wx.TextCtrl(self, -1, "", style=wx.TE_MULTILINE) self.lblMessages = wx.StaticText(self, -1, "Messages:") self.txtMessages = wx.TextCtrl(self, -1, "", style=wx.TE_MULTILINE) self.lblProgress = wx.StaticText(self, -1, "Idle") self.__set_properties() self.__do_layout() # end wxGlade wx.Log.SetActiveTarget(wx.LogTextCtrl(self.txtMessages)) wx.EVT_BUTTON(self, ID_CHOOSECOVERART, self.OnChooseCoverArt) wx.EVT_BUTTON(self, ID_CHOOSETMPPATH, self.OnChooseTmpPath) wx.EVT_BUTTON(self, ID_CHOOSEOUTPATH, self.OnChooseOutPath) wx.EVT_TOGGLEBUTTON(self, ID_DETECTCD, self.OnDetectCD) wx.EVT_TOGGLEBUTTON(self, ID_RIP, self.OnRip) wx.EVT_BUTTON(self, ID_CLOSE, self.OnClose) wx.EVT_BUTTON(self, ID_WEBBROWSER, self.OnWebBrowser) self.timer = wx.Timer(self, ID_TIMER) wx.EVT_TIMER(self, ID_TIMER, self.OnIdle) #wx.EVT_IDLE(self, self.OnIdle) self.coverart = None self.workdir = None self.cancelled = False self.cddevice = None self.txtTags.SetValue("Click Detect CD to fill in tag information\n" \ "automatically using the MusicBrainz database.\n\n" \ "Click Rip to start ripping. You may still edit\n" \ "tags and select cover art after ripping has\n" \ "started.") self.setUIState(STATE_IDLE) self.CheckBinaries()
def __init__(self, parent): super().__init__(parent, -1, style=wx.TE_MULTILINE | wx.TE_READONLY | wx.HSCROLL, size=(-1, 200)) wx.Log.SetActiveTarget(wx.LogTextCtrl(self))