def __init__(self, parent, wxId, id, style=0): self.style = style if style == List.STYLE_CHECKBOX: # Listbox with checkable items. base.Widget.__init__(self, wx.CheckListBox(parent, wxId)) elif style == List.STYLE_COLUMNS: base.Widget.__init__(self, wx.ListCtrl(parent, wxId, style=wx.LC_REPORT)) #wx.SIMPLE_BORDER))) wx.EVT_LEFT_DOWN(self.getWxWidget(), self.onLeftUp) wx.EVT_LIST_ITEM_SELECTED(parent, wxId, self.onItemSelected) wx.EVT_LIST_ITEM_DESELECTED(parent, wxId, self.onItemDeselected) wx.EVT_LIST_COL_CLICK(parent, wxId, self.onColumnClick) else: # Normal listbox. if style == List.STYLE_MULTIPLE: styleFlags = wx.LB_EXTENDED elif style == List.STYLE_SINGLE: styleFlags = wx.LB_SINGLE base.Widget.__init__(self, wx.ListBox(parent, wxId, style=styleFlags)) # Will be used when sending notifications. self.widgetId = id self.expandingColumnIndex = -1 self.items = [] self.columns = [] wx.EVT_SIZE(self.getWxWidget(), self.onSize)
def __init__(self, parent): wx.Dialog.__init__(self, parent, armid.TRACEABILITY_ID, 'Traceability Relations', style=wx.DEFAULT_DIALOG_STYLE | wx.MAXIMIZE_BOX | wx.THICK_FRAME | wx.RESIZE_BORDER, size=(700, 500)) b = Borg() self.dbProxy = b.dbProxy mainSizer = wx.BoxSizer(wx.VERTICAL) tcBox = wx.StaticBox(self, -1, 'Environment') comboSizer = wx.StaticBoxSizer(tcBox, wx.HORIZONTAL) environments = self.dbProxy.getDimensionNames('environment') self.environmentCtrl = wx.ComboBox( self, armid.TRACEABILITY_COMBOENVIRONMENT_ID, "", choices=environments, size=wx.DefaultSize, style=wx.CB_READONLY) mainSizer.Add(comboSizer, 0, wx.EXPAND) comboSizer.Add(self.environmentCtrl, 1, wx.EXPAND) self.traceList = wx.ListCtrl(self, armid.TRACEABILITY_LISTTRACES_ID, style=wx.LC_REPORT) self.traceList.InsertColumn(0, 'From') self.traceList.InsertColumn(1, 'Name') self.traceList.InsertColumn(2, 'From') self.traceList.InsertColumn(3, 'Name') self.traceList.SetColumnWidth(0, 150) self.traceList.SetColumnWidth(1, 150) self.traceList.SetColumnWidth(2, 150) self.traceList.SetColumnWidth(3, 150) mainSizer.Add(self.traceList, 1, wx.EXPAND) buttonSizer = wx.BoxSizer(wx.HORIZONTAL) mainSizer.Add(buttonSizer, 0, wx.EXPAND) deleteButton = wx.Button(self, armid.TRACEABILITY_BUTTONDELETE_ID, "Delete") buttonSizer.Add(deleteButton) closeButton = wx.Button(self, wx.ID_CLOSE, "Close") buttonSizer.Add(closeButton) self.SetSizer(mainSizer) self.selectedIdx = -1 wx.EVT_LIST_ITEM_SELECTED(self, armid.TRACEABILITY_LISTTRACES_ID, self.onItemSelected) wx.EVT_LIST_ITEM_DESELECTED(self, armid.TRACEABILITY_LISTTRACES_ID, self.onItemDeselected) wx.EVT_COMBOBOX(self, armid.TRACEABILITY_COMBOENVIRONMENT_ID, self.onEnvironmentChange) wx.EVT_BUTTON(self, armid.TRACEABILITY_BUTTONDELETE_ID, self.onDelete) wx.EVT_BUTTON(self, wx.ID_CLOSE, self.onClose)
def __init__(self, parent, evt_focus, evt_select, config): self.config = config self.selected = set() self.evt_select = evt_select wx.ListCtrl.__init__(self, parent, wx.ID_ANY, style=wx.LC_REPORT) wx.EVT_LIST_COL_CLICK(self, -1, self.evt_col_click) wx.EVT_LIST_ITEM_FOCUSED(self, -1, evt_focus) wx.EVT_LIST_ITEM_SELECTED(self, -1, self.evt_item_selected) wx.EVT_LIST_ITEM_DESELECTED(self, -1, self.evt_item_deselected)
def __init__(self, parent, pref): wx.Dialog.__init__(self, parent, -1, tr('Lua Interpreter Setup')) self.parent = parent self.pref = pref box = wx.BoxSizer(wx.VERTICAL) self.list = wx.ListCtrl(self, -1, style=wx.LC_REPORT | wx.LC_SINGLE_SEL | wx.LC_EDIT_LABELS) self.list.InsertColumn(0, tr("Description")) self.list.InsertColumn(1, tr("Interpreter path")) self.list.SetColumnWidth(0, 150) self.list.SetColumnWidth(1, 330) for i, item in enumerate(pref.lua_interpreter): description, path = item self.list.InsertStringItem(i, description) self.list.SetStringItem(i, 1, path) box.Add(self.list, 1, wx.EXPAND | wx.ALL, 5) box2 = wx.BoxSizer(wx.HORIZONTAL) self.ID_ADD = wx.NewId() self.ID_REMOVE = wx.NewId() self.ID_MODIFY = wx.NewId() self.btnAdd = wx.Button(self, self.ID_ADD, tr("Add")) box2.Add(self.btnAdd, 0, 0, 5) self.btnModify = wx.Button(self, self.ID_MODIFY, tr("Modify")) box2.Add(self.btnModify, 0, 0, 5) self.btnRemove = wx.Button(self, self.ID_REMOVE, tr("Remove")) box2.Add(self.btnRemove, 0, 0, 5) self.btnOK = wx.Button(self, wx.ID_OK, tr("OK")) self.btnOK.SetDefault() box2.Add(self.btnOK, 0, 0, 5) self.btnCancel = wx.Button(self, wx.ID_CANCEL, tr("Cancel")) box2.Add(self.btnCancel, 0, 0, 5) box.Add(box2, 0, wx.ALIGN_CENTER | wx.ALL, 5) wx.EVT_BUTTON(self.btnAdd, self.ID_ADD, self.OnAdd) wx.EVT_BUTTON(self.btnModify, self.ID_MODIFY, self.OnModify) wx.EVT_BUTTON(self.btnRemove, self.ID_REMOVE, self.OnRemove) wx.EVT_BUTTON(self.btnOK, wx.ID_OK, self.OnOK) wx.EVT_LIST_ITEM_SELECTED(self.list, self.list.GetId(), self.OnItemSelected) wx.EVT_LIST_ITEM_DESELECTED(self.list, self.list.GetId(), self.OnItemDeselected) self.OnItemDeselected(None) self.SetSizer(box) self.SetAutoLayout(True)
def __build(self): # # Construct the GUI. # # self.sizer is the overall hsizer # self.list is the list control widget living in self.sizer # bsizer is the vsizer that holds the buttons. # # We invoke _buildButtons to fill in the button sizer; to be # provided by our subclass. # # We also invoke _configList to configure the list control. # # If a subclass wishes to add somethign below the list control, it # can define _buildExtra(parent, sizer), where parent is the # parent panel for any extra widgets, and sizer is the overall # vsizer to which the extra-builder should add its widgets. # self.topsizer = wx.BoxSizer(wx.VERTICAL) self.sizer = wx.BoxSizer(wx.HORIZONTAL) self.list = wx.ListCtrl(self, -1, style=wx.LC_REPORT | wx.LC_SINGLE_SEL | wx.LC_VRULES) self.sizer.Add(self.list, 1, wx.EXPAND) wx.EVT_LIST_ITEM_SELECTED(self.list, self.list.GetId(), self.OnListItemSelected) wx.EVT_LIST_ITEM_DESELECTED(self.list, self.list.GetId(), self.OnListItemDeselected) wx.EVT_LIST_ITEM_ACTIVATED(self.list, self.list.GetId(), self.OnListItemActivated) bsizer = wx.BoxSizer(wx.VERTICAL) self.sizer.Add(bsizer, 0, wx.EXPAND) self._buildButtons(bsizer) self.topsizer.Add(self.sizer, 1, wx.EXPAND) self._buildExtra(self, self.topsizer) self._initList() self.SetSizer(self.topsizer) self.SetAutoLayout(1) self.Fit()
def __init__(self, parent, image_size=(16, 16), **traits): """ Creates a new table viewer. 'parent' is the toolkit-specific control that is the table's parent. 'image_size' is a tuple in the form (int width, int height) that specifies the size of the images (if any) displayed in the table. """ # Base-class constructor. super(TableViewer, self).__init__(**traits) # Create the toolkit-specific control. self.control = table = _Table(parent, image_size, self) # Get our actual id. wxid = table.GetId() # Table events. wx.EVT_LIST_ITEM_SELECTED(table, wxid, self._on_item_selected) wx.EVT_LIST_ITEM_ACTIVATED(table, wxid, self._on_item_activated) wx.EVT_LIST_BEGIN_DRAG(table, wxid, self._on_list_begin_drag) wx.EVT_LIST_BEGIN_RDRAG(table, wxid, self._on_list_begin_rdrag) wx.EVT_LIST_BEGIN_LABEL_EDIT( table, wxid, self._on_list_begin_label_edit ) wx.EVT_LIST_END_LABEL_EDIT( table, wxid, self._on_list_end_label_edit ) # fixme: Bug[732104] indicates that this event does not get fired # in a virtual list control (it *does* get fired in a regular list # control 8^(). wx.EVT_LIST_ITEM_DESELECTED(table, wxid, self._on_item_deselected) # Create the widget! self._create_widget(parent) # We use a dynamic handler instead of a static handler here, as we # don't want to react if the input is set in the constructor. self.on_trait_change(self._on_input_changed, 'input') return
def __init__(self,parent,dimensionName,dimensions,actionVerb,dialogSize=wx.DefaultSize): wx.Dialog.__init__(self,parent,DIMNAME_ID,actionVerb + ' ' + dimensionName,style=wx.DEFAULT_DIALOG_STYLE|wx.MAXIMIZE_BOX|wx.THICK_FRAME|wx.RESIZE_BORDER,size=dialogSize) mainSizer = wx.BoxSizer(wx.VERTICAL) if (dimensionName == 'usecase_contribution'): self.theDimensionName = 'usecase' elif (dimensionName == 'persona_implied_process'): self.theDimensionName = 'Implied Process' elif (dimensionName != 'reference'): self.theDimensionName = dimensionName else: self.theDimensionName = 'persona' if (dimensionName == 'persona_implied_process'): dimIconFile = 'code.png' else: dimIconFile = self.theDimensionName + '.png' self.theSelectedDimensions = [] self.theDimensions = dimensions self.dimList = wx.ListBox(self,DIMNAME_LISTDIM_ID,choices=dimensions,style=wx.LB_MULTIPLE) mainSizer.Add(self.dimList,1,wx.EXPAND) buttonSizer = wx.BoxSizer(wx.HORIZONTAL) mainSizer.Add(buttonSizer,0,wx.CENTER) actionButton = wx.Button(self,DIMNAME_BUTTONACTION_ID,actionVerb) if len(self.theDimensions) == 0: actionButton.Disable() buttonSizer.Add(actionButton) cancelButton = wx.Button(self,wx.ID_CANCEL,"Cancel") buttonSizer.Add(cancelButton) self.SetSizer(mainSizer) wx.EVT_LIST_ITEM_SELECTED(self.dimList,DIMNAME_LISTDIM_ID,self.onItemSelected) wx.EVT_LIST_ITEM_DESELECTED(self.dimList,DIMNAME_LISTDIM_ID,self.onItemDeselected) wx.EVT_BUTTON(self,DIMNAME_BUTTONACTION_ID,self.onAdd) b = Borg() dimIcon = wx.Icon(b.iconDir + '/' + dimIconFile,wx.BITMAP_TYPE_PNG) self.SetIcon(dimIcon)
def dispose(self): """ Disposes of the contents of an editor. """ # Remove all of the wx event handlers: control = self.control parent = control.GetParent() id = control.GetId() wx.EVT_LIST_BEGIN_DRAG(parent, id, None) wx.EVT_LIST_BEGIN_LABEL_EDIT(parent, id, None) wx.EVT_LIST_END_LABEL_EDIT(parent, id, None) wx.EVT_LIST_ITEM_SELECTED(parent, id, None) wx.EVT_LIST_ITEM_DESELECTED(parent, id, None) wx.EVT_LIST_KEY_DOWN(parent, id, None) wx.EVT_LIST_ITEM_ACTIVATED(parent, id, None) wx.EVT_LIST_COL_END_DRAG(parent, id, None) wx.EVT_LIST_COL_RIGHT_CLICK(parent, id, None) wx.EVT_LIST_COL_CLICK(parent, id, None) wx.EVT_LEFT_DOWN(control, None) wx.EVT_LEFT_DCLICK(control, None) wx.EVT_RIGHT_DOWN(control, None) wx.EVT_RIGHT_DCLICK(control, None) wx.EVT_MOTION(control, None) wx.EVT_SIZE(control, None) self.context_object.on_trait_change( self.update_editor, self.extended_name + '_items', remove=True) if self.factory.auto_update: self.context_object.on_trait_change( self.refresh_editor, self.extended_name + '.-', remove=True) self.on_trait_change(self._refresh, 'adapter.+update', remove=True) self.on_trait_change(self._rebuild_all, 'adapter.columns', remove=True) super(TabularEditor, self).dispose()
def __init__(self, parent, aFileName = None): wx.Panel.__init__(self, parent, -1, style=wx.WANTS_CHARS) # our actual list tID = wx.NewId() self.list = gmXdtListCtrl( self, tID, style=wx.LC_REPORT | wx.SUNKEN_BORDER | wx.LC_VRULES )#|wx.LC_HRULES) self.list.InsertColumn(0, _("XDT field")) self.list.InsertColumn(1, _("XDT field content")) self.filename = aFileName # set up events wx.EVT_SIZE(self, self.OnSize) wx.EVT_LIST_ITEM_SELECTED(self, tID, self.OnItemSelected) wx.EVT_LIST_ITEM_DESELECTED(self, tID, self.OnItemDeselected) wx.EVT_LIST_ITEM_ACTIVATED(self, tID, self.OnItemActivated) wx.EVT_LIST_DELETE_ITEM(self, tID, self.OnItemDelete) wx.EVT_LIST_COL_CLICK(self, tID, self.OnColClick) wx.EVT_LIST_COL_RIGHT_CLICK(self, tID, self.OnColRightClick) # wx.EVT_LIST_COL_BEGIN_DRAG(self, tID, self.OnColBeginDrag) # wx.EVT_LIST_COL_DRAGGING(self, tID, self.OnColDragging) # wx.EVT_LIST_COL_END_DRAG(self, tID, self.OnColEndDrag) wx.EVT_LEFT_DCLICK(self.list, self.OnDoubleClick) wx.EVT_RIGHT_DOWN(self.list, self.OnRightDown) if wx.Platform == '__WXMSW__': wx.EVT_COMMAND_RIGHT_CLICK(self.list, tID, self.OnRightClick) elif wx.Platform == '__WXGTK__': wx.EVT_RIGHT_UP(self.list, self.OnRightClick)
def __init__(self, mw, parent, id=-1): wx.Panel.__init__(self, parent, id) self.mw=mw vbs=wx.BoxSizer(wx.VERTICAL) # General bs=wx.StaticBoxSizer(wx.StaticBox(self, -1, "General"), wx.HORIZONTAL) bs.Add(wx.StaticText(self, -1, "Fingerprint"), 0, wx.ALL|wx.ALIGN_CENTRE_VERTICAL, 5) self.fingerprint=wx.TextCtrl(self, -1, "a", style=wx.TE_READONLY, size=(300,-1)) bs.Add(self.fingerprint, 0, wx.EXPAND|wx.ALL|wx.ALIGN_CENTRE_VERTICAL, 5) bs.Add(wx.StaticText(self, -1, ""), 0, wx.ALL, 5) # spacer bs.Add(wx.StaticText(self, -1, "Port"), 0, wx.ALL|wx.ALIGN_CENTRE_VERTICAL, 5) self.porttext=wx.StaticText(self, -1, "<No Port>") bs.Add(self.porttext, 0, wx.ALL|wx.ALIGN_CENTRE_VERTICAL, 5) vbs.Add(bs, 0, wx.EXPAND|wx.ALL, 5) # authorization bs=wx.StaticBoxSizer(wx.StaticBox(self, -1, "Authorization"), wx.VERTICAL) hbs=wx.BoxSizer(wx.HORIZONTAL) butadd=wx.Button(self, wx.NewId(), "Add ...") hbs.Add(butadd, 0, wx.ALL|wx.ALIGN_CENTRE_VERTICAL, 5) hbs.Add(wx.StaticText(self, -1, ""), 0, wx.ALL, 5) # spacer self.butedit=wx.Button(self, wx.NewId(), "Edit ...") self.butedit.Enable(False) hbs.Add(self.butedit, 0, wx.ALL|wx.ALIGN_CENTRE_VERTICAL, 5) hbs.Add(wx.StaticText(self, -1, ""), 0, wx.ALL, 5) # spacer self.butdelete=wx.Button(self, wx.NewId(), "Delete") self.butdelete.Enable(False) hbs.Add(self.butdelete, 0, wx.ALL|wx.ALIGN_CENTRE_VERTICAL, 5) bs.Add(hbs, 0, wx.EXPAND|wx.ALL, 5) wx.EVT_BUTTON(self, butadd.GetId(), self.OnAddAuth) wx.EVT_BUTTON(self, self.butedit.GetId(), self.OnEditAuth) wx.EVT_BUTTON(self, self.butdelete.GetId(), self.OnDeleteAuth) # and the authorization listview self.authlist=wx.ListCtrl(self, wx.NewId(), style=wx.LC_REPORT|wx.LC_SINGLE_SEL) self.authlist.InsertColumn(0, "User") self.authlist.InsertColumn(1, "Allowed Addresses") self.authlist.InsertColumn(2, "Expires") self.authlist.SetColumnWidth(0, 300) self.authlist.SetColumnWidth(1, 300) self.authlist.SetColumnWidth(2, 100) bs.Add(self.authlist, 1, wx.EXPAND|wx.ALL, 5) vbs.Add(bs, 1, wx.EXPAND|wx.ALL, 5) self.itemDataMap={} wx.lib.mixins.listctrl.ColumnSorterMixin.__init__(self,3) wx.EVT_LIST_ITEM_ACTIVATED(self.authlist, self.authlist.GetId(), self.OnEditAuth) wx.EVT_LIST_ITEM_SELECTED(self.authlist, self.authlist.GetId(), self.OnAuthListItemFondled) wx.EVT_LIST_ITEM_DESELECTED(self.authlist, self.authlist.GetId(), self.OnAuthListItemFondled) wx.EVT_LIST_ITEM_FOCUSED(self.authlist, self.authlist.GetId(), self.OnAuthListItemFondled) # devices bs=wx.StaticBoxSizer(wx.StaticBox(self, -1, "Devices"), wx.VERTICAL) buttoggle=wx.Button(self, wx.NewId(), "Toggle Allowed") bs.Add(buttoggle, 0, wx.ALL, 5) self.devicelist=wx.ListCtrl(self, wx.NewId(), style=wx.LC_REPORT|wx.LC_SINGLE_SEL) self.devicelist.InsertColumn(0, "Allowed") self.devicelist.InsertColumn(1, "Name") self.devicelist.InsertColumn(2, "Available") self.devicelist.InsertColumn(3, "Description") self.devicelist.SetColumnWidth(0, 100) self.devicelist.SetColumnWidth(1, 300) self.devicelist.SetColumnWidth(2, 100) self.devicelist.SetColumnWidth(3, 300) bs.Add(self.devicelist, 1, wx.EXPAND|wx.ALL, 5) vbs.Add(bs, 1, wx.EXPAND|wx.ALL, 5) self.setupauthorization() self.SortListItems() self.SetSizer(vbs) self.SetAutoLayout(True)
def init(self, parent): """ Finishes initializing the editor by creating the underlying toolkit widget. """ factory = self.factory # Set up the adapter to use: self.adapter = factory.adapter # Determine the style to use for the list control: style = wx.LC_REPORT | wx.LC_VIRTUAL | wx.BORDER_NONE if factory.editable_labels: style |= wx.LC_EDIT_LABELS if factory.horizontal_lines: style |= wx.LC_HRULES if factory.vertical_lines: style |= wx.LC_VRULES if not factory.multi_select: style |= wx.LC_SINGLE_SEL if not factory.show_titles: style |= wx.LC_NO_HEADER # Create the list control and link it back to us: self.control = control = wxListCtrl( parent, -1, style=style, can_edit=factory.editable, edit_labels=factory.editable_labels) control._editor = self # Create the list control column: #fixme: what do we do here? #control.InsertColumn( 0, '' ) # Set up the list control's event handlers: id = control.GetId() wx.EVT_LIST_BEGIN_DRAG(parent, id, self._begin_drag) wx.EVT_LIST_BEGIN_LABEL_EDIT(parent, id, self._begin_label_edit) wx.EVT_LIST_END_LABEL_EDIT(parent, id, self._end_label_edit) wx.EVT_LIST_ITEM_SELECTED(parent, id, self._item_selected) wx.EVT_LIST_ITEM_DESELECTED(parent, id, self._item_selected) wx.EVT_LIST_KEY_DOWN(parent, id, self._key_down) wx.EVT_LIST_ITEM_ACTIVATED(parent, id, self._item_activated) wx.EVT_LIST_COL_END_DRAG(parent, id, self._size_modified) wx.EVT_LIST_COL_RIGHT_CLICK(parent, id, self._column_right_clicked) wx.EVT_LIST_COL_CLICK(parent, id, self._column_clicked) wx.EVT_LEFT_DOWN(control, self._left_down) wx.EVT_LEFT_DCLICK(control, self._left_dclick) wx.EVT_RIGHT_DOWN(control, self._right_down) wx.EVT_RIGHT_DCLICK(control, self._right_dclick) wx.EVT_MOTION(control, self._motion) wx.EVT_SIZE(control, self._size_modified) # Set up the drag and drop target: if PythonDropTarget is not None: control.SetDropTarget(PythonDropTarget(self)) # Set up the selection listener (if necessary): if factory.multi_select: self.sync_value(factory.selected, 'multi_selected', 'both', is_list=True) self.sync_value(factory.selected_row, 'multi_selected_rows', 'both', is_list=True) else: self.sync_value(factory.selected, 'selected', 'both') self.sync_value(factory.selected_row, 'selected_row', 'both') # Synchronize other interesting traits as necessary: self.sync_value(factory.update, 'update', 'from') self.sync_value(factory.activated, 'activated', 'to') self.sync_value(factory.activated_row, 'activated_row', 'to') self.sync_value(factory.clicked, 'clicked', 'to') self.sync_value(factory.dclicked, 'dclicked', 'to') self.sync_value(factory.right_clicked, 'right_clicked', 'to') self.sync_value(factory.right_dclicked, 'right_dclicked', 'to') self.sync_value(factory.column_clicked, 'column_clicked', 'to') # Make sure we listen for 'items' changes as well as complete list # replacements: try: self.context_object.on_trait_change(self.update_editor, self.extended_name + '_items', dispatch='ui') except: pass # If the user has requested automatic update, attempt to set up the # appropriate listeners: if factory.auto_update: self.context_object.on_trait_change(self.refresh_editor, self.extended_name + '.-', dispatch='ui') # Create the mapping from user supplied images to wx.ImageList indices: for image_resource in factory.images: self._add_image(image_resource) # Refresh the editor whenever the adapter changes: self.on_trait_change(self._refresh, 'adapter.+update', dispatch='ui') # Rebuild the editor columns and headers whenever the adapter's # 'columns' changes: self.on_trait_change(self._rebuild_all, 'adapter.columns', dispatch='ui') # Make sure the tabular view gets initialized: self._rebuild() # Set the list control's tooltip: self.set_tooltip()
def __init__(self, parent, settings, selectedFile=None): super(BackupManagerDialog, self).__init__(parent, wx.ID_ANY, style=wx.DEFAULT_DIALOG_STYLE | wx.RESIZE_BORDER) container = wx.Panel(self) self.__files = wx.ListCtrl(container, wx.ID_ANY, style=wx.LC_REPORT | wx.LC_SINGLE_SEL) self.__files.InsertColumn(0, _('File')) self.__files.InsertColumn(1, _('Full path')) self.__backups = wx.ListCtrl(container, wx.ID_ANY, style=wx.LC_REPORT | wx.LC_SINGLE_SEL) self.__backups.InsertColumn(0, _('Date')) self.__backups.Enable(False) self.__btnRestore = wx.Button(container, wx.ID_ANY, _('Restore')) self.__btnRestore.Enable(False) self.__filename = selectedFile self.__selection = (None, None) vsz = wx.BoxSizer(wx.VERTICAL) hsz = wx.BoxSizer(wx.HORIZONTAL) hsz.Add(self.__files, 1, wx.EXPAND | wx.ALL, 3) hsz.Add(self.__backups, 1, wx.EXPAND | wx.ALL, 3) hsz.Add(self.__btnRestore, 0, wx.ALIGN_TOP | wx.ALL, 3) vsz.Add(hsz, 1, wx.EXPAND) container.SetSizer(vsz) vsz = wx.BoxSizer(wx.VERTICAL) vsz.Add(container, 1, wx.EXPAND) btn = wx.Button(self, wx.ID_ANY, _('Close')) vsz.Add(btn, 0, wx.ALL | wx.ALIGN_RIGHT, 3) self.SetSizer(vsz) self.__manifest = BackupManifest(settings) self.__filenames = self.__manifest.listFiles() selection = None for filename in self.__filenames: item = self.__files.InsertStringItem(self.__files.GetItemCount(), os.path.split(filename)[-1]) self.__files.SetStringItem(item, 1, filename) if filename == selectedFile: selection = item self.SetSize(wx.Size(600, 400)) self.CentreOnParent() wx.EVT_BUTTON(btn, wx.ID_ANY, self.DoClose) wx.EVT_LIST_ITEM_SELECTED(self.__files, wx.ID_ANY, self._OnSelectFile) wx.EVT_LIST_ITEM_DESELECTED(self.__files, wx.ID_ANY, self._OnDeselectFile) wx.EVT_LIST_ITEM_SELECTED(self.__backups, wx.ID_ANY, self._OnSelectBackup) wx.EVT_LIST_ITEM_DESELECTED(self.__backups, wx.ID_ANY, self._OnDeselectBackup) wx.EVT_BUTTON(self.__btnRestore, wx.ID_ANY, self._OnRestore) if selection is not None: self.__files.SetItemState( selection, wx.LIST_STATE_FOCUSED | wx.LIST_STATE_SELECTED, wx.LIST_STATE_FOCUSED | wx.LIST_STATE_SELECTED) self.__files.SetColumnWidth(0, -1) self.__files.SetColumnWidth(1, -1)
def init(self, parent): """ Finishes initializing the editor by creating the underlying toolkit widget. """ factory = self.factory # Set up the adapter to use: self.adapter = factory.adapter self.sync_value(factory.adapter_name, 'adapter', 'from') # Determine the style to use for the list control: style = wx.LC_REPORT | wx.LC_VIRTUAL if factory.editable: style |= wx.LC_EDIT_LABELS if factory.horizontal_lines: style |= wx.LC_HRULES if not factory.multi_select: style |= wx.LC_SINGLE_SEL if (factory.title == '') and (factory.title_name == ''): style |= wx.LC_NO_HEADER # Create the list control and link it back to us: self.control = control = wxListCtrl(parent, -1, style=style) control._editor = self # Create the list control column: control.InsertColumn(0, '') # Set up the list control's event handlers: id = control.GetId() wx.EVT_LIST_BEGIN_DRAG(parent, id, self._begin_drag) wx.EVT_LIST_BEGIN_LABEL_EDIT(parent, id, self._begin_label_edit) wx.EVT_LIST_END_LABEL_EDIT(parent, id, self._end_label_edit) wx.EVT_LIST_ITEM_SELECTED(parent, id, self._item_selected) wx.EVT_LIST_ITEM_DESELECTED(parent, id, self._item_selected) wx.EVT_LIST_ITEM_RIGHT_CLICK(parent, id, self._right_clicked) wx.EVT_LIST_ITEM_ACTIVATED(parent, id, self._item_activated) wx.EVT_SIZE(control, self._size_modified) # Handle key events: wx.EVT_CHAR(control, self._key_pressed) # Handle mouse events: if 'edit' in factory.operations: wx.EVT_LEFT_DOWN(control, self._left_down) # Set up the drag and drop target: if PythonDropTarget is not None: control.SetDropTarget(PythonDropTarget(self)) # Initialize the editor title: self.title = factory.title self.sync_value(factory.title_name, 'title', 'from') # Set up the selection listener (if necessary): if factory.multi_select: self.sync_value(factory.selected, 'multi_selected', 'both', is_list=True) self.sync_value(factory.selected_index, 'multi_selected_indices', 'both', is_list=True) else: self.sync_value(factory.selected, 'selected', 'both') self.sync_value(factory.selected_index, 'selected_index', 'both') # Synchronize other interesting traits as necessary: self.sync_value(factory.activated, 'activated', 'to') self.sync_value(factory.activated_index, 'activated_index', 'to') self.sync_value(factory.right_clicked, 'right_clicked', 'to') self.sync_value(factory.right_clicked_index, 'right_clicked_index', 'to') # Make sure we listen for 'items' changes as well as complete list # replacements: self.context_object.on_trait_change(self.update_editor, self.extended_name + '_items', dispatch='ui') # Create the mapping from user supplied images to wx.ImageList indices: for image_resource in factory.images: self._add_image(image_resource) # Refresh the editor whenever the adapter changes: self.on_trait_change(self._refresh, 'adapter.+update', dispatch='ui') # Set the list control's tooltip: self.set_tooltip()
def buildControls(self, idList, columnList, getterFn, dimName, envName=''): winSizer = wx.BoxSizer(wx.VERTICAL) mainSizer = wx.BoxSizer(wx.HORIZONTAL) idList = idList self.listId = idList[LIST_POS] addId = idList[ADD_POS] deleteId = idList[DELETE_POS] importId = -1 exportId = -1 if (len(idList) > 3): importId = idList[IMPORT_POS] exportId = idList[EXPORT_POS] orientation = wx.VERTICAL if (dimName == 'document_reference'): tcBox = wx.StaticBox(self, -1, 'Document') comboSizer = wx.StaticBoxSizer(tcBox, wx.VERTICAL) docs = [''] docs += self.dbProxy.getDimensionNames('external_document') self.docCtrl = wx.ComboBox( self, DOCUMENTREFERENCES_COMBOEXTERNALDOCUMENT_ID, "", choices=docs, size=wx.DefaultSize, style=wx.CB_READONLY) winSizer.Add(comboSizer, 0, wx.EXPAND) comboSizer.Add(self.docCtrl, 1, wx.EXPAND) elif (dimName == 'asset_value'): tcBox = wx.StaticBox(self, -1, 'Environment') comboSizer = wx.StaticBoxSizer(tcBox, wx.VERTICAL) environments = self.dbProxy.getDimensionNames('environment') self.environmentCtrl = wx.ComboBox(self, VALUETYPES_COMBOENVIRONMENT_ID, "", choices=environments, size=wx.DefaultSize, style=wx.CB_READONLY) winSizer.Add(comboSizer, 0, wx.EXPAND) comboSizer.Add(self.environmentCtrl, 1, wx.EXPAND) winSizer.Add(mainSizer, 1, wx.EXPAND) if (dimName == 'trace'): mainSizer.Add( self.buildTraceListCtrl(self, self.listId, columnList, self.traces), 1, wx.EXPAND) elif (dimName == 'behavioural_characteristic'): mainSizer.Add( buildBehaviouralCharacteristicListCtrl( self, self.listId, columnList, getterFn, self.theName, self.theBehaviouralVariable), 1, wx.EXPAND) else: mainSizer.Add( self.buildListCtrl(self.listId, columnList, getterFn, dimName, envName), 1, wx.EXPAND) if (importId != -1): mainSizer.Add( self.buildAddDeleteCloseIEButtonSizer(self, addId, deleteId, importId, exportId, orientation)) else: mainSizer.Add( self.buildAddDeleteCloseButtonSizer(addId, deleteId, orientation)) self.SetSizer(winSizer) wx.EVT_LIST_ITEM_SELECTED(self, self.listId, self.onItemSelected) wx.EVT_LIST_ITEM_DESELECTED(self, self.listId, self.onItemDeselected) wx.EVT_LIST_ITEM_ACTIVATED(self, self.listId, self.onUpdate) wx.EVT_BUTTON(self, addId, self.onAdd) wx.EVT_BUTTON(self, deleteId, self.onDelete) wx.EVT_BUTTON(self, wx.ID_CLOSE, self.onClose)
def __init__(self, parent, ID, title, messenger, exitCallback): wx.Frame.__init__(self, parent, ID, title) self._messenger = messenger self.exitCallback = exitCallback DISCONNECT = 100 EXIT = 101 # Create a menu bar # TRANSLATORS: this is a menu bar entry fileMenu = wx.Menu(_("File")) # TRANSLATORS: this is a menu bar entry fileMenu.Append(DISCONNECT, _("Disconnect"), _("Disconnect from server")) fileMenu.Append(EXIT, _("Exit%(hotkey)s") % {"hotkey": "\tCTRL+Q"}, _("Exit London Law")) menuBar = wx.MenuBar() # TRANSLATORS: this is a menu bar entry menuBar.Append(fileMenu, _("File")) self.SetMenuBar(menuBar) self.status = self.CreateStatusBar() # stick everything in a panel mainPanel = wx.Panel(self, -1) self.list = AutoListCtrl( mainPanel, -1, # TRANSLATORS: these are column labels for the window where the user chooses a game ( _("Game Room"), # TRANSLATORS: these are column labels for the window where the user chooses a game _("Status"), # TRANSLATORS: these are column labels for the window where the user chooses a game _("Game Type"), # TRANSLATORS: these are column labels for the window where the user chooses a game _("Players")), (_("(no games currently available)"), "", "", "")) self.list.SetColumnWidth(1, 140) self.list.SetColumnWidth(2, 140) mainSizer = wx.BoxSizer(wx.VERTICAL) mainSizer.Add(self.list, 1, wx.ALIGN_CENTRE | wx.EXPAND | wx.ALL, 5) self.selectButton = wx.Button(mainPanel, -1, _("Join Game")) self.selectButton.Disable() self.createButton = wx.Button(mainPanel, -1, _("New Game")) buttonSizer = wx.BoxSizer(wx.HORIZONTAL) buttonSizer.Add((1, 1), 1, wx.EXPAND) buttonSizer.Add(self.createButton, 0, wx.ALIGN_CENTRE | wx.RIGHT | wx.BOTTOM | wx.ALL, 5) buttonSizer.Add(self.selectButton, 0, wx.ALIGN_CENTRE | wx.RIGHT | wx.BOTTOM | wx.ALL, 5) mainSizer.Add(buttonSizer, 0, wx.EXPAND, 0) mainPanel.SetSizer(mainSizer) mainSizer.Fit(mainPanel) wx.EVT_CLOSE(self, self.menuExit) wx.EVT_MENU(self, EXIT, self.menuExit) wx.EVT_MENU(self, DISCONNECT, self.menuDisconnect) wx.EVT_LIST_ITEM_SELECTED(self, self.list.GetId(), self.enableSelectButton) wx.EVT_LIST_ITEM_DESELECTED(self, self.list.GetId(), self.disableSelectButton) wx.EVT_BUTTON(self, self.selectButton.GetId(), self.joinGame) wx.EVT_BUTTON(self, self.createButton.GetId(), self.createGame)
def __init__(self, parent, dimensionName): wx.Dialog.__init__(self, parent, DIRECTORYDIALOG_ID, 'Import ' + dimensionName, style=wx.DEFAULT_DIALOG_STYLE | wx.MAXIMIZE_BOX | wx.THICK_FRAME | wx.RESIZE_BORDER, size=(600, 400)) b = Borg() self.dbProxy = b.dbProxy mainSizer = wx.BoxSizer(wx.VERTICAL) self.theSelectedIdx = -1 self.theDimensionName = dimensionName self.entries = [] self.typedEntries = [] if (self.theDimensionName == 'vulnerability'): self.entries = self.dbProxy.getVulnerabilityDirectory() elif (self.theDimensionName == 'threat'): self.entries = self.dbProxy.getThreatDirectory() self.typeDictionary = {} for entry in self.entries: entryType = entry[3] if entryType not in self.typeDictionary: self.typeDictionary[entryType] = [] self.typeDictionary[entryType].append(entry) typeBox = wx.StaticBox(parent, -1, 'Type') comboSizer = wx.StaticBoxSizer(typeBox, wx.HORIZONTAL) mainSizer.Add(comboSizer, 0, wx.EXPAND) typeNames = self.typeDictionary.keys() typeNames.sort() typeNames = [''] + typeNames self.typeCtrl = wx.ComboBox(self, DIRECTORYDIALOG_COMBOTYPE_ID, "", choices=typeNames, size=wx.DefaultSize, style=wx.CB_READONLY) comboSizer.Add(self.typeCtrl, 1, wx.EXPAND) self.entryList = wx.ListCtrl(self, DIRECTORYDIALOG_LISTENTRIES_ID, style=wx.LC_REPORT) self.entryList.InsertColumn(0, 'Label') self.entryList.InsertColumn(1, 'Name') self.entryList.SetColumnWidth(0, 200) self.entryList.SetColumnWidth(1, 500) for idx, dirEntry in enumerate(self.entries): self.entryList.InsertStringItem(idx, dirEntry[0]) self.entryList.SetStringItem(idx, 1, dirEntry[1]) mainSizer.Add(self.entryList, 1, wx.EXPAND) self.typedEntries = self.entries buttonSizer = wx.BoxSizer(wx.HORIZONTAL) mainSizer.Add(buttonSizer, 0, wx.CENTER) importButton = wx.Button(self, DIRECTORYDIALOG_BUTTONIMPORT_ID, 'Import') buttonSizer.Add(importButton) cancelButton = wx.Button(self, wx.ID_CANCEL, "Cancel") buttonSizer.Add(cancelButton) self.SetSizer(mainSizer) wx.EVT_LIST_ITEM_SELECTED(self.entryList, DIRECTORYDIALOG_LISTENTRIES_ID, self.onItemSelected) wx.EVT_LIST_ITEM_DESELECTED(self.entryList, DIRECTORYDIALOG_LISTENTRIES_ID, self.onItemDeselected) wx.EVT_LIST_ITEM_ACTIVATED(self.entryList, DIRECTORYDIALOG_LISTENTRIES_ID, self.onItemActivated) wx.EVT_COMBOBOX(self.typeCtrl, DIRECTORYDIALOG_COMBOTYPE_ID, self.onTypeSelected) wx.EVT_BUTTON(self, DIRECTORYDIALOG_BUTTONIMPORT_ID, self.onImport) dimIconFile = dimensionName + '.png' dimIcon = wx.Icon(b.iconDir + '/' + dimIconFile, wx.BITMAP_TYPE_PNG) self.SetIcon(dimIcon)