Пример #1
0
    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)
Пример #2
0
    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)
Пример #3
0
 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)
Пример #4
0
    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()
Пример #6
0
    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
Пример #7
0
  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)
Пример #8
0
    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()
Пример #9
0
	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)
Пример #10
0
    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)
Пример #11
0
    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()
Пример #12
0
    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)
Пример #13
0
    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()
Пример #14
0
    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)
Пример #16
0
    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)