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 FieldsPickerDialog(wx.Dialog): """ Present to user all fields available from the input file(s) selected in previous step that may be selected for hashing. Allow user to select desired fields/columns. """ def __init__(self, parent, fieldsavailable): wx.Dialog.__init__(self, parent) self.fields2hash = [] MainFrame.fields2hash = [] choices = fieldsavailable.replace('\n', ',') choices = choices.replace('"', '') choices = choices.rstrip(',') choices = choices.split(',') choices = set(choices) choices = list(choices) sizer = wx.BoxSizer(wx.VERTICAL) self.ip = ItemsPicker(self, -1, choices, 'Available Columns:', 'Selected Columns:', IP_SORT_CHOICES | IP_SORT_SELECTED) self.ip.Bind(EVT_IP_SELECTION_CHANGED, self.onselectionchange) self.ip.SetMinSize((-1, 150)) sizer.Add(self.ip, 0, wx.ALL, 10) b = wx.Button(self, -1, "Click after finishing column selection(s)", style=wx.NO_BORDER) b.SetToolTip( 'The information in the lists above should represent column names. If not, then your input data is not ' 'in the correct format. The selected sheet should contain the column names in the first row.' ) b.Bind(wx.EVT_BUTTON, self.onfinished) sizer.Add(b, 0, wx.ALL | wx.CENTER, 5) self.SetSizer(sizer) self.Fit() def onfinished(self, e): """ Once user clicks 'finished' button create list of fields to be hashed. :param e: Event :return: Fields to be hashed: fields2hash """ if len(self.fields2hash) != 0: MainFrame.fields2hash = self.fields2hash.split(',') self.Close() def onselectionchange(self, e): """ Logic for identifying and selecting fields to be hashed. :param e: Event :return: Internal list of fields selected. """ self.items = ",".join(e.GetItems()) self.fields2hash = self.items
def __init__(self, parent, results, views_names): wx.Panel.__init__(self, parent, -1, size=(300, 200)) self.parent = parent self.error_name = True self.error_result = True self.views_names = views_names # self.I = I self.bmp_alert = wx.StaticBitmap(self) self.bmp_alert.SetBitmap(execute_bit.GetBitmap()) font_description = wx.SystemSettings_GetFont(wx.SYS_SYSTEM_FONT) font_description.SetPointSize(9) self.label_alert = wx.StaticText(self) self.label_alert.SetFont(font_description) self.label_alert.SetLabel(L('VIEW_ALERT_NAME')) label_name = wx.StaticText(self, label=L('VIEW_NAME')) self.name = wx.TextCtrl(self) label_results = wx.StaticText(self, label=L('VIEW_ALERT_RESULTS')) static_result = wx.StaticLine(self, -1) ip = ItemsPicker(self, -1, results, L('VIEW_OPTION_RESULTS'), L('VIEW_RESULTS_SELECTED'), ipStyle=IP_SORT_CHOICES | IP_SORT_SELECTED | IP_REMOVE_FROM_CHOICES) ip._source.SetMinSize((50, 100)) parent.ip = ip # Create the sizers topSizer = wx.BoxSizer(wx.VERTICAL) alert_sizer = wx.BoxSizer(wx.HORIZONTAL) alert_sizer.Add(self.bmp_alert, flag=wx.ALIGN_LEFT) alert_sizer.Add(self.label_alert, flag=wx.ALIGN_LEFT) name_sizer = wx.BoxSizer(wx.HORIZONTAL) name_sizer.Add(label_name, 0) name_sizer.Add(self.name, 1, wx.EXPAND) result_sizer = wx.BoxSizer(wx.VERTICAL) result_sizer.Add(label_results, 0, wx.ALIGN_CENTER) result_sizer.Add(static_result, 0, wx.ALIGN_CENTER | wx.EXPAND) topSizer.Add(alert_sizer, 0, wx.EXPAND) topSizer.Add(name_sizer, 0, wx.EXPAND) topSizer.Add(result_sizer, 0, wx.ALIGN_CENTER | wx.TOP, 15) topSizer.Add(ip, 1, wx.EXPAND) self.SetSizer(topSizer) self.name.SetFocus() self.name.Bind(wx.EVT_KEY_UP, self.on_key_up) ip.Bind(EVT_IP_SELECTION_CHANGED, self.on_selected) self._disable()
class ItemsPickerFilterDialog(wx.Dialog): def __init__(self, parent, names): wx.Dialog.__init__(self, parent, -1, L('BUTTON_ORDER_AND_FILTER')) self.parent = parent self.names = names sizer = wx.BoxSizer(wx.VERTICAL) self.ip = ItemsPicker(self, -1, names, L('PICKER_EXISTING'), L('PICKER_FILTERED'), ipStyle=0) self.ip.Bind(EVT_IP_SELECTION_CHANGED, self.on_selection_change) self.ip._source.SetMinSize((-1, 150)) sizer.Add(self.ip, 1, wx.ALL, 10) sizer_button = wx.BoxSizer(wx.HORIZONTAL) cancel = wx.Button(self, label=L('NEW_PROJECT_CANCEL')) cancel.Bind(wx.EVT_BUTTON, self.on_cancel) self.create = wx.Button(self, label=L('NOW_SHOW')) self.create.Bind(wx.EVT_BUTTON, self.on_ok) self.create.Disable() sizer_button.Add(cancel) sizer_button.Add(self.create) sizer.Add(sizer_button, 0, wx.ALL, 10) self.SetSizer(sizer) self.itemCount = 3 self.Fit() self.ShowModal() def on_selection_change(self, e): if len(e.GetItems()) < 2: self.create.Disable() return self.item_ordered = e.GetItems() self.create.Enable() def on_ok(self, e): self.parent.pre_kdraw_order(self.item_ordered) self.Close() def on_cancel(self, e): self.Close()
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
class BlockSorted(wx.Dialog): def __init__(self, parent, _names): wx.Dialog.__init__(self, parent, size=(400, 300), title='Ordenar Bloques') self.parent = parent self.names = _names self.init_ui() # ------ Definiciones iniciales ----- self.Centre(wx.BOTH) self.CenterOnScreen() self.ShowModal() def init_ui(self): sizer = wx.BoxSizer(wx.VERTICAL) # titulo title_sizer = wx.BoxSizer(wx.VERTICAL) title = wx.StaticText(self, label='Ordenando Bloques') title_line = wx.StaticLine(self) title_sizer.Add(title, 0, wx.CENTER | wx.TOP, 10) title_sizer.Add(title_line, 0, wx.EXPAND | wx.RIGHT | wx.LEFT, 5) self.i_picker = ItemsPicker(self, -1, self.names, 'Orden actual', 'Nuevo Orden') # buttons confirmar, cancelar sizer_button = wx.BoxSizer(wx.HORIZONTAL) sizer_cancel = wx.BoxSizer() self.cancel = wx.Button(self, -1, 'Cancelar') self.cancel.SetDefault() sizer_cancel.Add(self.cancel) sizer_apply = wx.BoxSizer() self.apply = wx.Button(self, -1, 'Aplicar') sizer_apply.Add(self.apply, 0, wx.ALIGN_RIGHT) self.apply.Disable() sizer_button.Add(sizer_cancel, 0, wx.ALL, 5) sizer_button.Add(sizer_apply, 0, wx.ALL, 5) sizer.Add(title_sizer, 0, wx.EXPAND | wx.BOTTOM, 10) sizer.Add(self.i_picker, 1, wx.EXPAND | wx.ALL, 5) sizer.Add(sizer_button, 0, wx.EXPAND | wx.LEFT, 100) self.i_picker.Bind(EVT_IP_SELECTION_CHANGED, self.check_up) self.Bind(wx.EVT_BUTTON, self.on_button_apply, self.apply) self.Bind(wx.EVT_BUTTON, self.on_button_cancel, self.cancel) self.Bind(wx.EVT_CHAR, self.on_key_escape) self.SetSizer(sizer) def check_up(self, event): if len(self.names) != len(self.i_picker.GetSelections()): self.apply.Disable() self.cancel.SetDefault() return None _names = [str(i) for i in self.i_picker.GetSelections()] if self.names == _names: self.apply.Disable() self.cancel.SetDefault() return None self.apply.Enable() self.apply.SetDefault() def on_button_cancel(self, event): self.Close() def on_button_apply(self, event): order = [str(i) for i in self.i_picker.GetSelections()] new_order = [] for name in self.names: new_order.append(order.index(name)) self.parent.sort_blocks(new_order) self.Close() def on_key_escape(self, event): if event.GetKeyCode() == wx.WXK_ESCAPE: self.Close()