class ItemsPickerDialog(wx.Dialog): def __init__(self,parent, style, log): wx.Dialog.__init__(self,parent) self.log = log sizer = wx.BoxSizer(wx.VERTICAL) b = wx.Button(self, -1, "Add Item") b.Bind(wx.EVT_BUTTON, self.OnAdd) sizer.Add(b, 0, wx.ALL, 5) self.ip = ItemsPicker(self,-1, ['ThisIsItem3','ThisIsItem2','ThisIsItem1'], 'Stuff:', 'Selected stuff:',ipStyle = style) self.ip.Bind(EVT_IP_SELECTION_CHANGED, self.OnSelectionChange) self.ip._source.SetMinSize((-1,150)) self.ip.bAdd.SetBitmap(_bp_btn2.GetBitmap(), dir=wx.RIGHT) self.ip.bAdd.SetLabel('Add') self.ip.bRemove.SetBitmap(_bp_btn1.GetBitmap(), dir=wx.LEFT) self.ip.bRemove.SetLabel('Remove') sizer.Add(self.ip, 0, wx.ALL, 10) self.SetSizer(sizer) self.itemCount = 3 self.Fit() def OnAdd(self,e): items = self.ip.GetItems() self.itemCount += 1 newItem = "item%d" % self.itemCount self.ip.SetItems(items + [newItem]) def OnSelectionChange(self, e): self.log.write("EVT_IP_SELECTION_CHANGED %s\n" % \ ",".join(e.GetItems()))
class ItemsPickerDialog(wx.Dialog): def __init__(self, parent: wx.Window, available: List[str], chosen: List[str], ipStyle): super().__init__(parent=parent, title="Project membership", style=wx.DEFAULT_DIALOG_STYLE | wx.RESIZE_BORDER) sizer = wx.BoxSizer(wx.VERTICAL) self.ip = ItemsPicker(self, choices=available, label='Available projects', selectedLabel='Member of project:', ipStyle=ipStyle) self.ip.SetSelections(chosen) #self.ip.Bind(EVT_IP_SELECTION_CHANGED, self.OnSelectionChange) self.ip._source.SetMinSize((-1, 150)) sizer.Add(self.ip, 0, wx.ALL, 10) bsizer = self.CreateStdDialogButtonSizer(wx.OK | wx.CANCEL) sizer.Add(bsizer, flag=wx.EXPAND | wx.ALL, border=5) self.SetSizerAndFit(sizer) def GetSelections(self): return self.ip.GetSelections() def GetItems(self): return self.ip.GetItems()
class ItemsPickerDialog(wx.Dialog): def __init__(self,parent, style, log): wx.Dialog.__init__(self,parent) self.log = log sizer = wx.BoxSizer(wx.VERTICAL) b = wx.Button(self, -1, "Add Item") b.Bind(wx.EVT_BUTTON, self.OnAdd) sizer.Add(b, 0, wx.ALL, 5) self.ip = ItemsPicker(self,-1, ['ThisIsItem3','ThisIsItem2','ThisIsItem1'], 'Stuff:', 'Selected stuff:',ipStyle = style) self.ip.Bind(EVT_IP_SELECTION_CHANGED, self.OnSelectionChange) self.ip._source.SetMinSize((-1,150)) # Customize the buttons for this example. if 'wxMac' not in wx.PlatformInfo: # NOTE: wx.Button on OSX does not modify the button size when adding a # bitmap after the fact like this, and these bitmaps are a little too # large and look funny in OSX, so we won't do this customization there. self.ip.bAdd.SetBitmap(_bp_btn2.GetBitmap(), dir=wx.RIGHT) self.ip.bAdd.SetLabel('Add') self.ip.bRemove.SetBitmap(_bp_btn1.GetBitmap(), dir=wx.LEFT) self.ip.bRemove.SetLabel('Remove') sizer.Add(self.ip, 0, wx.ALL, 10) self.SetSizer(sizer) self.itemCount = 3 self.Fit() def OnAdd(self,e): items = self.ip.GetItems() self.itemCount += 1 newItem = "item%d" % self.itemCount self.ip.SetItems(items + [newItem]) def OnSelectionChange(self, e): self.log.write("EVT_IP_SELECTION_CHANGED %s\n" % \ ",".join(e.GetItems()))
class ItemsPickerDialog(wx.Dialog): def __init__(self, parent, style, log): wx.Dialog.__init__(self, parent, title='Pick some items...', style=wx.DEFAULT_DIALOG_STYLE | wx.RESIZE_BORDER) self.log = log sizer = wx.BoxSizer(wx.VERTICAL) b = wx.Button(self, -1, "Add Item") b.Bind(wx.EVT_BUTTON, self.OnAdd) sizer.Add(b, 0, wx.ALL, 5) self.ip = ItemsPicker(self, -1, choices=['ThisIsItem3', 'ThisIsItem6', 'ThisIsItem2', 'ThisIsItem5', 'ThisIsItem1', 'ThisIsItem4'], label='Stuff:', selectedLabel='Selected stuff:', ipStyle=style) self.ip.Bind(EVT_IP_SELECTION_CHANGED, self.OnSelectionChange) self.ip._source.SetMinSize((-1, 150)) bmp2 = wx.Bitmap(gBmpDir + os.sep + "bp_btn2.png", wx.BITMAP_TYPE_PNG) self.ip.bAdd.SetBitmap(bmp2, dir=wx.RIGHT) self.ip.bAdd.SetLabel('Add') bmp1 = wx.Bitmap(gBmpDir + os.sep + "bp_btn1.png", wx.BITMAP_TYPE_PNG) self.ip.bRemove.SetBitmap(bmp1, dir=wx.LEFT) self.ip.bRemove.SetLabel('Remove') sizer.Add(self.ip, 1, wx.EXPAND | wx.ALL, 10) self.SetSizer(sizer) self.itemCount = 3 self.Fit() self.SetMinSize(self.GetSize()) def OnAdd(self, event): items = self.ip.GetItems() self.itemCount += 1 newItem = "item%d" % self.itemCount self.ip.SetItems(items + [newItem]) def OnSelectionChange(self, event): self.log.WriteText("EVT_IP_SELECTION_CHANGED %s\n" % \ ",".join(event.GetItems()))
class BackupRollBackUI(wx.Panel): def __init__(self, parent, style=IP_REMOVE_FROM_CHOICES): wx.Panel.__init__(self, parent, style=style) self.backupList = GL.backup_list self.radioList = [u'当前用户最近备份列表', u'载入当前用户备份列表', u'载入全局备份列表'] self.backupRadio = wx.RadioBox(self, -1, "", (-1, -1), wx.DefaultSize, self.radioList, 3, wx.RA_SPECIFY_COLS | wx.NO_BORDER) #BtnRollBack = wx.Button(self,label=u"锟斤拷原",size=(80,50),id=GL.Publishing) self.BakRollText = ItemsPicker(self, -1, self.backupList, u"备份列表", u'确认还原文件:', ipStyle=style) self.BakRollText.add_button_label = u'添加=》' self.BakRollText.remove_button_label = u'《=移除' hsizer = wx.BoxSizer(wx.HORIZONTAL) vsizer = wx.BoxSizer(wx.VERTICAL) self.BakRollText._source.SetMinSize((-1, 150)) self.BakRollText._dest.SetMinSize((-1, 150)) vsizer.Add(self.backupRadio, 0, wx.ALL, 0) vsizer.Add(self.BakRollText, 1, wx.ALL | wx.EXPAND, 0) hsizer.Add(vsizer, 1, wx.ALL | wx.EXPAND, 10) self.SetSizerAndFit(hsizer) self.itemCount = 3 self.Bind(wx.EVT_RADIOBOX, self.OnLoadBackupList, self.backupRadio) self.BakRollText.Bind(EVT_IP_SELECTION_CHANGED, self.OnSelectionChange) def OnLoadBackupList(self, event): if event.GetInt() == 0: self.BakRollText._source.SetItems([]) self.BakRollText._source.SetItems(GL.backup_list) #self.BakRollText._dest.SetItems(GL.backup_list) #print self.BakRollText._dest.GetItems() elif event.GetInt() == 1: self.BakRollText._source.SetItems([]) import codecs #data = self.GetUserLogList('f:\\backup\\Glogs\\global_backup.log') #print data #self.FileContentList = [] self.FileContentList = self.GetUserLogList( GL.global_backup_logfile, isFilter=True) #with codecs.open('f:\\backup\\Glogs\\global_backup.log','r',"utf8") as FileObj: # [self.FileContentList.append(line) for line in FileObj] #print self.FileContentList self.BakRollText._source.SetItems(self.FileContentList) #self.BakRollText._source.SetBackgroundColour('#FF0000') #print "load log2" elif event.GetInt() == 2: self.BakRollText._source.SetItems([]) self.FileContentList = self.GetUserLogList( GL.global_backup_logfile, isFilter=False) self.BakRollText._source.SetItems(self.FileContentList) else: self.BakRollText._source.SetItems([]) def GetUserLogList(self, filelog, isFilter): if not os.path.exists(filelog): msg = u"读取全局日志文件出错." LoadLog.LogMsg(GL.logger_sysLog.error, msg) wx.MessageBox(msg, u"错误", style=wx.OK | wx.ICON_ERROR) FileContentList = [] return FileContentList FileContentList = [] with open(filelog, 'r') as f: if isFilter is True: bad = 0 import codecs, re goodline = re.compile(ur'#+?.*\[%s\].*#$' % GL.SvnUser) badline = re.compile(ur'#+?.*\[((?!%s).)*#$' % GL.SvnUser) for line in f: line = unicode(line, "utf8") if goodline.search(line) is not None: #print line bad = 1 FileContentList.append(line.strip()) continue if bad and badline.search(line) is None: #print line FileContentList.append(line.strip()) continue else: bad = 0 else: [FileContentList.append(unicode(line, "utf8")) for line in f] return FileContentList def OnAdd(self, e): items = self.BakRollText.GetItems() self.itemCount += 1 newItem = "item%d" % self.itemCount self.BakRollText.SetItems(items + [newItem]) #def OnSelectionChange(self, e): # self.log.write("EVT_IP_SELECTION_CHANGED %s\n" % \ # ",".join(e.GetItems())) def OnSelectionChange(self, e): #self.log.write("EVT_IP_SELECTION_CHANGED %s\n" % ",".join(e.GetItems())) pass