当前位置: 首页>>代码示例>>Python>>正文


Python DimensionListCtrl.DimensionListCtrl类代码示例

本文整理汇总了Python中DimensionListCtrl.DimensionListCtrl的典型用法代码示例。如果您正苦于以下问题:Python DimensionListCtrl类的具体用法?Python DimensionListCtrl怎么用?Python DimensionListCtrl使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。


在下文中一共展示了DimensionListCtrl类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。

示例1: __init__

 def __init__(self,parent,winId,dp):
   DimensionListCtrl.__init__(self,parent,winId,wx.DefaultSize,'Environment','environment',dp,'Context of use',wx.LC_REPORT | wx.LC_SINGLE_SEL)
   b = Borg()
   self.dbProxy = b.dbProxy
   self.theInheritedEnvironment = ''
   self.theDimMenu.Append(ENVLIST_MENUNEWENVIRONMENT_ID,'New Environment')
   self.theDimMenu.Append(ENVLIST_MENUINHERITENVIRONMENT_ID,'Inherit Environment')
   wx.EVT_MENU(self.theDimMenu,ENVLIST_MENUNEWENVIRONMENT_ID,self.onNewEnvironment)
   wx.EVT_MENU(self.theDimMenu,ENVLIST_MENUINHERITENVIRONMENT_ID,self.onInheritEnvironment)
开发者ID:AntonP1337,项目名称:cairis,代码行数:9,代码来源:EnvironmentListCtrl.py

示例2: __init__

  def __init__(self,parent,dp):
    wx.Panel.__init__(self,parent,THREAT_PANELENVIRONMENT_ID)
    self.dbProxy = dp
    self.theThreatId = None
    self.theEnvironmentDictionary = {}
    self.theSelectedIdx = -1

    mainSizer = wx.BoxSizer(wx.HORIZONTAL)
    environmentBox = wx.StaticBox(self)
    environmentListSizer = wx.StaticBoxSizer(environmentBox,wx.HORIZONTAL)
    mainSizer.Add(environmentListSizer,0,wx.EXPAND)
    self.environmentList = EnvironmentListCtrl(self,THREATENVIRONMENT_LISTENVIRONMENTS_ID,self.dbProxy)
    environmentListSizer.Add(self.environmentList,1,wx.EXPAND)

    environmentDimSizer = wx.BoxSizer(wx.VERTICAL)
    mainSizer.Add(environmentDimSizer,1,wx.EXPAND)

    lhoodBox = wx.StaticBox(self)
    lhoodSizer = wx.StaticBoxSizer(lhoodBox,wx.HORIZONTAL)
    environmentDimSizer.Add(lhoodSizer,0,wx.EXPAND)
    lhoodSizer.Add(wx.StaticText(self,-1,'Likelihood'))
    lhoodList = ['Incredible','Improbable','Remote','Occasional','Probable','Frequent']
    self.lhoodCtrl = wx.ComboBox(self,THREATENVIRONMENT_COMBOLIKELIHOOD_ID,choices=lhoodList,size=wx.DefaultSize,style=wx.CB_READONLY)
    lhoodSizer.Add(self.lhoodCtrl,1,wx.EXPAND) 

    aaSizer = wx.BoxSizer(wx.HORIZONTAL)
    environmentDimSizer.Add(aaSizer,1,wx.EXPAND)
    self.attackerList = DimensionListCtrl(self,THREATENVIRONMENT_LISTATTACKERS_ID,wx.DefaultSize,'Attacker','attacker',self.dbProxy)
    attackerBox = wx.StaticBox(self)
    attackerSizer = wx.StaticBoxSizer(attackerBox,wx.HORIZONTAL)
    attackerSizer.Add(self.attackerList,1,wx.EXPAND)
    aaSizer.Add(attackerSizer,1,wx.EXPAND)

    self.assetList = DimensionListCtrl(self,THREATENVIRONMENT_LISTASSETS_ID,wx.DefaultSize,'Asset','asset',self.dbProxy)
    assetBox = wx.StaticBox(self)
    assetSizer = wx.StaticBoxSizer(assetBox,wx.HORIZONTAL)
    assetSizer.Add(self.assetList,1,wx.EXPAND)
    aaSizer.Add(assetSizer,1,wx.EXPAND)

    propertiesBox = wx.StaticBox(self)
    propertiesSizer = wx.StaticBoxSizer(propertiesBox,wx.HORIZONTAL)
    environmentDimSizer.Add(propertiesSizer,1,wx.EXPAND)
    values = self.dbProxy.getDimensionNames('threat_value')
    valueLookup = ValueDictionary(values)
    self.propertiesList = PropertiesListCtrl(self,THREATENVIRONMENT_LISTPROPERTIES_ID,valueLookup)
    propertiesSizer.Add(self.propertiesList,1,wx.EXPAND)
    self.SetSizer(mainSizer)
    self.environmentList.Bind(wx.EVT_LIST_INSERT_ITEM,self.OnAddEnvironment)
    self.environmentList.Bind(wx.EVT_LIST_DELETE_ITEM,self.OnDeleteEnvironment)
开发者ID:InvalidToken,项目名称:CAIRIS,代码行数:49,代码来源:ThreatEnvironmentPanel.py

示例3: onDeleteDimension

  def onDeleteDimension(self,evt):
    idx = self.GetFocusedItem()
    roleToGo = set([self.GetItemText(idx)])
    DimensionListCtrl.onDeleteDimension(self,evt)
    if (self.GetItemCount() > 0):
      noOfPersonas = self.thePersonaList.GetItemCount()
      if (noOfPersonas > 0):
        keysToGo = set([])
        for x in range(noOfPersonas):
           personaTask = (self.thePersonaList.GetItem(x,0)).GetText()
           personaName = (self.thePersonaList.GetItem(x,1)).GetText()
           personaObjt = self.dbProxy.dimensionObject(personaName,'persona')
           if (len( set.difference(set(personaObjt.roles(self.theCurrentEnvironment,'')),roleToGo)) == 0): 
             keysToGo.add((personaTask,personaName)) 

        for ttg,ptg in keysToGo:
          for x in range(noOfPersonas):
            if ((ttg == (self.thePersonaList.GetItem(x,0)).GetText()) and (ptg == (self.thePersonaList.GetItem(x,1)).GetText())):
              self.thePersonaList.DeleteItem(x)
    else:
      self.thePersonaList.DeleteAllItems()  
开发者ID:InvalidToken,项目名称:CAIRIS,代码行数:21,代码来源:CountermeasureRoleListCtrl.py

示例4: __init__

  def __init__(self,parent,dp):
    wx.Panel.__init__(self,parent,ROLE_PANELENVIRONMENT_ID)
    self.dbProxy = dp
    self.theEnvironmentDictionary = {}
    self.theSelectedIdx = -1

    mainSizer = wx.BoxSizer(wx.HORIZONTAL)
    environmentBox = wx.StaticBox(self)
    environmentListSizer = wx.StaticBoxSizer(environmentBox,wx.HORIZONTAL)
    mainSizer.Add(environmentListSizer,0,wx.EXPAND)
    self.environmentList = DimensionListCtrl(self,ROLE_LISTENVIRONMENTS_ID,wx.DefaultSize,'Environment','environment',self.dbProxy,listStyle=wx.LC_REPORT | wx.LC_SINGLE_SEL)
    environmentListSizer.Add(self.environmentList,1,wx.EXPAND)

    environmentDimSizer = wx.BoxSizer(wx.VERTICAL)
    mainSizer.Add(environmentDimSizer,1,wx.EXPAND)

    rSizer = wx.BoxSizer(wx.HORIZONTAL)
    environmentDimSizer.Add(rSizer,1,wx.EXPAND)
    self.responseList = DimensionCostListCtrl(self,ROLE_LISTRESPONSES_ID,'Response')
    responseBox = wx.StaticBox(self)
    responseSizer = wx.StaticBoxSizer(responseBox,wx.HORIZONTAL)
    responseSizer.Add(self.responseList,1,wx.EXPAND)
    rSizer.Add(responseSizer,1,wx.EXPAND)

    cSizer = wx.BoxSizer(wx.HORIZONTAL)
    environmentDimSizer.Add(cSizer,1,wx.EXPAND)
    self.cmList = DimensionListCtrl(self,ROLE_LISTCOUNTERMEASURES_ID,wx.DefaultSize,'Countermeasure','countermeasure',self.dbProxy,listStyle = wx.LC_REPORT | wx.LC_SINGLE_SEL)
    cmBox = wx.StaticBox(self)
    cmSizer = wx.StaticBoxSizer(cmBox,wx.HORIZONTAL)
    cmSizer.Add(self.cmList,1,wx.EXPAND)
    cSizer.Add(cmSizer,1,wx.EXPAND)

    self.SetSizer(mainSizer)
    self.environmentList.Unbind(wx.EVT_RIGHT_DOWN)
    self.responseList.Unbind(wx.EVT_RIGHT_DOWN)
    self.cmList.Unbind(wx.EVT_RIGHT_DOWN)
开发者ID:InvalidToken,项目名称:CAIRIS,代码行数:36,代码来源:RoleEnvironmentPanel.py

示例5: __init__

  def __init__(self,parent,dp):
    wx.Panel.__init__(self,parent,armid.ATTACKER_PANELENVIRONMENT_ID)
    self.dbProxy = dp
    self.theAttackerId = None
    self.theEnvironmentDictionary = {}
    self.theSelectedIdx = -1

    mainSizer = wx.BoxSizer(wx.HORIZONTAL)
    environmentBox = wx.StaticBox(self)
    environmentListSizer = wx.StaticBoxSizer(environmentBox,wx.HORIZONTAL)
    mainSizer.Add(environmentListSizer,0,wx.EXPAND)
    self.environmentList = EnvironmentListCtrl(self,armid.ATTACKERENVIRONMENT_LISTENVIRONMENTS_ID,self.dbProxy)
    environmentListSizer.Add(self.environmentList,1,wx.EXPAND)
    environmentDimSizer = wx.BoxSizer(wx.VERTICAL)
    mainSizer.Add(environmentDimSizer,1,wx.EXPAND)
    rmSizer = wx.BoxSizer(wx.HORIZONTAL)
    environmentDimSizer.Add(rmSizer,1,wx.EXPAND)
    self.roleList = DimensionListCtrl(self,armid.ATTACKERENVIRONMENT_LISTROLES_ID,wx.DefaultSize,'Role','role',self.dbProxy)
    roleBox = wx.StaticBox(self)
    roleSizer = wx.StaticBoxSizer(roleBox,wx.HORIZONTAL)
    roleSizer.Add(self.roleList,1,wx.EXPAND)
    rmSizer.Add(roleSizer,1,wx.EXPAND)

    self.motiveList = DimensionListCtrl(self,armid.ATTACKERENVIRONMENT_LISTMOTIVES_ID,wx.DefaultSize,'Motive','motivation',self.dbProxy)
    motiveBox = wx.StaticBox(self)
    motiveSizer = wx.StaticBoxSizer(motiveBox,wx.HORIZONTAL)
    motiveSizer.Add(self.motiveList,1,wx.EXPAND)
    rmSizer.Add(motiveSizer,1,wx.EXPAND)
    capBox = wx.StaticBox(self)
    capSizer = wx.StaticBoxSizer(capBox,wx.HORIZONTAL)
    environmentDimSizer.Add(capSizer,1,wx.EXPAND)
    self.capabilitiesList = CapabilitiesListCtrl(self,armid.ATTACKERENVIRONMENT_LISTCAPABILITIES_ID,self.dbProxy)
    capSizer.Add(self.capabilitiesList,1,wx.EXPAND)
    self.SetSizer(mainSizer)
    self.environmentList.Bind(wx.EVT_LIST_INSERT_ITEM,self.OnAddEnvironment)
    self.environmentList.Bind(wx.EVT_LIST_DELETE_ITEM,self.OnDeleteEnvironment)
开发者ID:RachelLar,项目名称:CAIRIS-web,代码行数:36,代码来源:AttackerEnvironmentPanel.py

示例6: __init__

  def __init__(self,parent,dp):
    wx.Panel.__init__(self,parent,MITIGATE_PANELENVIRONMENT_ID)
    self.theResponsePanel = parent
    self.dbProxy = dp
    self.theEnvironmentDictionary = {}
    self.theSelectedIdx = -1

    mainSizer = wx.BoxSizer(wx.HORIZONTAL)
    environmentBox = wx.StaticBox(self)
    environmentListSizer = wx.StaticBoxSizer(environmentBox,wx.HORIZONTAL)
    mainSizer.Add(environmentListSizer,0,wx.EXPAND)
    self.environmentList = RiskEnvironmentListCtrl(self,MITIGATE_LISTENVIRONMENTS_ID,self.dbProxy)
    environmentListSizer.Add(self.environmentList,1,wx.EXPAND)
    environmentDimSizer = wx.BoxSizer(wx.VERTICAL)
    mainSizer.Add(environmentDimSizer,1,wx.EXPAND)

    typeBox = wx.StaticBox(self,-1,'Type')
    typeBoxSizer = wx.StaticBoxSizer(typeBox,wx.HORIZONTAL)
    environmentDimSizer.Add(typeBoxSizer,0,wx.EXPAND)
    self.typeCombo = wx.ComboBox(self,MITIGATE_COMBOTYPE_ID,"",choices=['Deter','Prevent','Detect','React'],style=wx.CB_READONLY)
    typeBoxSizer.Add(self.typeCombo,1,wx.EXPAND)
   
    pointBox = wx.StaticBox(self,-1,'Detection Point')
    pointBoxSizer = wx.StaticBoxSizer(pointBox,wx.HORIZONTAL)
    environmentDimSizer.Add(pointBoxSizer,0,wx.EXPAND)
    self.pointCombo = wx.ComboBox(self,MITIGATE_COMBODETECTIONPOINT_ID,"",choices=['Before','At','After'],style=wx.CB_READONLY)
    pointBoxSizer.Add(self.pointCombo,1,wx.EXPAND)


    dmBox = wx.StaticBox(self,-1,)
    dmBoxSizer = wx.StaticBoxSizer(dmBox,wx.HORIZONTAL)
    environmentDimSizer.Add(dmBoxSizer,1,wx.EXPAND)
    self.dmList = DimensionListCtrl(self,MITIGATE_LISTDETMECH_ID,wx.DefaultSize,'Detection Mechanism','detection_mechanism',self.dbProxy,listStyle=wx.LC_REPORT)
    dmBoxSizer.Add(self.dmList,1,wx.EXPAND)

    self.typeCombo.Disable()
    self.pointCombo.Disable() 
    self.dmList.Disable()
    
    self.SetSizer(mainSizer)
    self.typeCombo.Bind(wx.EVT_COMBOBOX,self.onTypeChange)
    self.environmentList.Bind(wx.EVT_LIST_INSERT_ITEM,self.OnAddEnvironment)
    self.environmentList.Bind(wx.EVT_LIST_DELETE_ITEM,self.OnDeleteEnvironment)
    self.environmentList.Bind(wx.EVT_LIST_ITEM_SELECTED,self.OnEnvironmentSelected)
    self.environmentList.Bind(wx.EVT_LIST_ITEM_DESELECTED,self.OnEnvironmentDeselected)
开发者ID:InvalidToken,项目名称:CAIRIS,代码行数:45,代码来源:MitigateEnvironmentPanel.py

示例7: __init__

  def __init__(self,parent,dp):
    wx.Panel.__init__(self,parent,armid.VULNERABILITY_PANELENVIRONMENT_ID)
    self.dbProxy = dp
    self.theVulId = None
    self.theEnvironmentDictionary = {}
    self.theSelectedIdx = -1

    mainSizer = wx.BoxSizer(wx.HORIZONTAL)
    environmentBox = wx.StaticBox(self)
    environmentListSizer = wx.StaticBoxSizer(environmentBox,wx.HORIZONTAL)
    mainSizer.Add(environmentListSizer,0,wx.EXPAND)
    self.environmentList = EnvironmentListCtrl(self,armid.VULNERABILITYENVIRONMENT_LISTENVIRONMENTS_ID,self.dbProxy)
    environmentListSizer.Add(self.environmentList,1,wx.EXPAND)

    environmentDimSizer = wx.BoxSizer(wx.VERTICAL)
    mainSizer.Add(environmentDimSizer,1,wx.EXPAND)

    sevBox = wx.StaticBox(self)
    sevSizer = wx.StaticBoxSizer(sevBox,wx.HORIZONTAL)
    environmentDimSizer.Add(sevSizer,0,wx.EXPAND)
    sevSizer.Add(wx.StaticText(self,-1,'Severity'))
    sevList = ['Negligible','Marginal','Critical','Catastrophic']
    self.sevCtrl = wx.ComboBox(self,armid.VULNERABILITYENVIRONMENT_COMBOSEVERITY_ID,choices=sevList,size=wx.DefaultSize,style=wx.CB_READONLY)
    sevSizer.Add(self.sevCtrl,1,wx.EXPAND) 

    aSizer = wx.BoxSizer(wx.HORIZONTAL)
    environmentDimSizer.Add(aSizer,1,wx.EXPAND)
    self.assetList = DimensionListCtrl(self,armid.VULNERABILITYENVIRONMENT_LISTASSETS_ID,wx.DefaultSize,'Asset','asset',self.dbProxy)
    assetBox = wx.StaticBox(self)
    assetSizer = wx.StaticBoxSizer(assetBox,wx.HORIZONTAL)
    assetSizer.Add(self.assetList,1,wx.EXPAND)
    aSizer.Add(assetSizer,1,wx.EXPAND)

    self.SetSizer(mainSizer)
    self.environmentList.Bind(wx.EVT_LIST_INSERT_ITEM,self.OnAddEnvironment)
    self.environmentList.Bind(wx.EVT_LIST_DELETE_ITEM,self.OnDeleteEnvironment)
开发者ID:RachelLar,项目名称:CAIRIS-web,代码行数:36,代码来源:VulnerabilityEnvironmentPanel.py

示例8: __init__

  def __init__(self,parent,dp):
    wx.Panel.__init__(self,parent,ENVIRONMENT_PANELENVIRONMENTPROPERTIES_ID)
    self.theEnvironmentPanel= parent

    mainSizer = wx.BoxSizer(wx.VERTICAL)

    environmentBox = wx.StaticBox(self,-1,)
    environmentFrameSizer = wx.StaticBoxSizer(environmentBox,wx.VERTICAL)
    mainSizer.Add(environmentFrameSizer,1,wx.EXPAND)
    self.environmentList = DimensionListCtrl(self,ENVIRONMENT_LISTENVIRONMENTS_ID,wx.DefaultSize,'Environment','environment',dp,'Adding one or more environments indicates that this is a composite environment')
    environmentFrameSizer.Add(self.environmentList,1,wx.EXPAND)

    propertiesBox = wx.StaticBox(self,-1,'Duplication properties')
    propertiesFrameSizer = wx.StaticBoxSizer(propertiesBox,wx.VERTICAL)
    mainSizer.Add(propertiesFrameSizer,1,wx.EXPAND)
    propertiesSizer = wx.FlexGridSizer(rows = 2, cols = 3)
    propertiesFrameSizer.Add(propertiesSizer,1,wx.EXPAND)
    propertiesSizer.Add(wx.StaticText(self,-1,'Override'))
    self.overrideRadio = wx.RadioButton(self,ENVIRONMENT_RADIOOVERRIDE_ID,style=wx.RB_GROUP)
    self.overrideRadio.SetToolTip(wx.ToolTip('If an artifact exists in multiple environments, choose the artifact\'s value for the overriding environment.'))
    propertiesSizer.Add(self.overrideRadio)
    self.overrideCombo = wx.ComboBox(self,ENVIRONMENT_COMBOOVERRIDE_ID,'',choices=[],style=wx.CB_READONLY | wx.CB_DROPDOWN)
    propertiesSizer.Add(self.overrideCombo,0,wx.EXPAND)
    propertiesSizer.Add(wx.StaticText(self,-1,'Maximise'))
    self.maxRadio = wx.RadioButton(self,ENVIRONMENT_RADIOMAXIMISE_ID)
    self.maxRadio.SetToolTip(wx.ToolTip('If an artifact exists in multiple environments, choose the artifact\'s maximal values.'))
    propertiesSizer.Add(self.maxRadio)
    propertiesSizer.AddGrowableCol(2)
    self.SetSizer(mainSizer)
    self.environmentList.Bind(wx.EVT_LIST_INSERT_ITEM,self.onEnvironmentAdded)
    self.environmentList.Bind(wx.EVT_LIST_DELETE_ITEM,self.onEnvironmentDeleted)
    self.overrideRadio.Bind(wx.EVT_RADIOBUTTON,self.onOverrideClick)
    self.maxRadio.Bind(wx.EVT_RADIOBUTTON,self.onMaximiseClick)
    self.overrideRadio.Disable()
    self.overrideCombo.Disable()
    self.maxRadio.Disable()
开发者ID:InvalidToken,项目名称:CAIRIS,代码行数:36,代码来源:EnvironmentPropertiesPanel.py

示例9: ThreatEnvironmentPanel

class ThreatEnvironmentPanel(wx.Panel):
  def __init__(self,parent,dp):
    wx.Panel.__init__(self,parent,THREAT_PANELENVIRONMENT_ID)
    self.dbProxy = dp
    self.theThreatId = None
    self.theEnvironmentDictionary = {}
    self.theSelectedIdx = -1

    mainSizer = wx.BoxSizer(wx.HORIZONTAL)
    environmentBox = wx.StaticBox(self)
    environmentListSizer = wx.StaticBoxSizer(environmentBox,wx.HORIZONTAL)
    mainSizer.Add(environmentListSizer,0,wx.EXPAND)
    self.environmentList = EnvironmentListCtrl(self,THREATENVIRONMENT_LISTENVIRONMENTS_ID,self.dbProxy)
    environmentListSizer.Add(self.environmentList,1,wx.EXPAND)

    environmentDimSizer = wx.BoxSizer(wx.VERTICAL)
    mainSizer.Add(environmentDimSizer,1,wx.EXPAND)

    lhoodBox = wx.StaticBox(self)
    lhoodSizer = wx.StaticBoxSizer(lhoodBox,wx.HORIZONTAL)
    environmentDimSizer.Add(lhoodSizer,0,wx.EXPAND)
    lhoodSizer.Add(wx.StaticText(self,-1,'Likelihood'))
    lhoodList = ['Incredible','Improbable','Remote','Occasional','Probable','Frequent']
    self.lhoodCtrl = wx.ComboBox(self,THREATENVIRONMENT_COMBOLIKELIHOOD_ID,choices=lhoodList,size=wx.DefaultSize,style=wx.CB_READONLY)
    lhoodSizer.Add(self.lhoodCtrl,1,wx.EXPAND) 

    aaSizer = wx.BoxSizer(wx.HORIZONTAL)
    environmentDimSizer.Add(aaSizer,1,wx.EXPAND)
    self.attackerList = DimensionListCtrl(self,THREATENVIRONMENT_LISTATTACKERS_ID,wx.DefaultSize,'Attacker','attacker',self.dbProxy)
    attackerBox = wx.StaticBox(self)
    attackerSizer = wx.StaticBoxSizer(attackerBox,wx.HORIZONTAL)
    attackerSizer.Add(self.attackerList,1,wx.EXPAND)
    aaSizer.Add(attackerSizer,1,wx.EXPAND)

    self.assetList = DimensionListCtrl(self,THREATENVIRONMENT_LISTASSETS_ID,wx.DefaultSize,'Asset','asset',self.dbProxy)
    assetBox = wx.StaticBox(self)
    assetSizer = wx.StaticBoxSizer(assetBox,wx.HORIZONTAL)
    assetSizer.Add(self.assetList,1,wx.EXPAND)
    aaSizer.Add(assetSizer,1,wx.EXPAND)

    propertiesBox = wx.StaticBox(self)
    propertiesSizer = wx.StaticBoxSizer(propertiesBox,wx.HORIZONTAL)
    environmentDimSizer.Add(propertiesSizer,1,wx.EXPAND)
    values = self.dbProxy.getDimensionNames('threat_value')
    valueLookup = ValueDictionary(values)
    self.propertiesList = PropertiesListCtrl(self,THREATENVIRONMENT_LISTPROPERTIES_ID,valueLookup)
    propertiesSizer.Add(self.propertiesList,1,wx.EXPAND)
    self.SetSizer(mainSizer)
    self.environmentList.Bind(wx.EVT_LIST_INSERT_ITEM,self.OnAddEnvironment)
    self.environmentList.Bind(wx.EVT_LIST_DELETE_ITEM,self.OnDeleteEnvironment)


  def loadControls(self,threat):
    self.environmentList.Unbind(wx.EVT_LIST_ITEM_SELECTED)
    self.environmentList.Unbind(wx.EVT_LIST_ITEM_DESELECTED)
    self.theThreatId = threat.id()
# We load the environment name control before anything else.  Weird stuff happens if we don't do this.  Don't ask me why!!!
    environmentNames = []
    if (len(threat.environmentProperties()) > 0):
      for cp in threat.environmentProperties():
        environmentNames.append(cp.name())
      self.environmentList.load(environmentNames)
      for cp in threat.environmentProperties():
        environmentName = cp.name()
        self.theEnvironmentDictionary[environmentName] = cp
      environmentName = environmentNames[0]
      p = self.theEnvironmentDictionary[environmentName]
      self.lhoodCtrl.SetStringSelection(p.likelihood())
      self.attackerList.setEnvironment(environmentName)
      self.attackerList.load(p.attackers()) 
      self.assetList.setEnvironment(environmentName)
      self.assetList.load(p.assets()) 
      self.propertiesList.setEnvironment(environmentName)
      self.propertiesList.load(p.properties(),p.rationale())
      self.environmentList.Select(0)

    self.environmentList.Bind(wx.EVT_LIST_ITEM_SELECTED,self.OnEnvironmentSelected)
    self.environmentList.Bind(wx.EVT_LIST_ITEM_DESELECTED,self.OnEnvironmentDeselected)
    self.theSelectedIdx = 0

  def OnEnvironmentSelected(self,evt):
    self.theSelectedIdx = evt.GetIndex()
    environmentName = self.environmentList.GetItemText(self.theSelectedIdx)
    p = self.theEnvironmentDictionary[environmentName]
    self.lhoodCtrl.SetStringSelection(p.likelihood())
    self.attackerList.setEnvironment(environmentName)
    self.attackerList.load(p.attackers()) 
    self.assetList.setEnvironment(environmentName)
    self.assetList.load(p.assets()) 
    self.propertiesList.setEnvironment(environmentName)
    self.propertiesList.load(p.properties(),p.rationale())

  def OnEnvironmentDeselected(self,evt):
    self.theSelectedIdx = evt.GetIndex()
    environmentName = self.environmentList.GetItemText(self.theSelectedIdx)
    syProperties,pRationale = self.propertiesList.properties()
    self.theEnvironmentDictionary[environmentName] = ThreatEnvironmentProperties(environmentName,self.lhoodCtrl.GetValue(),self.assetList.dimensions(),self.attackerList.dimensions(),syProperties,pRationale)
    self.lhoodCtrl.SetValue('')
    self.attackerList.setEnvironment('')
    self.attackerList.DeleteAllItems() 
#.........这里部分代码省略.........
开发者ID:InvalidToken,项目名称:CAIRIS,代码行数:101,代码来源:ThreatEnvironmentPanel.py

示例10: MitigateEnvironmentPanel

class MitigateEnvironmentPanel(wx.Panel):
  def __init__(self,parent,dp):
    wx.Panel.__init__(self,parent,MITIGATE_PANELENVIRONMENT_ID)
    self.theResponsePanel = parent
    self.dbProxy = dp
    self.theEnvironmentDictionary = {}
    self.theSelectedIdx = -1

    mainSizer = wx.BoxSizer(wx.HORIZONTAL)
    environmentBox = wx.StaticBox(self)
    environmentListSizer = wx.StaticBoxSizer(environmentBox,wx.HORIZONTAL)
    mainSizer.Add(environmentListSizer,0,wx.EXPAND)
    self.environmentList = RiskEnvironmentListCtrl(self,MITIGATE_LISTENVIRONMENTS_ID,self.dbProxy)
    environmentListSizer.Add(self.environmentList,1,wx.EXPAND)
    environmentDimSizer = wx.BoxSizer(wx.VERTICAL)
    mainSizer.Add(environmentDimSizer,1,wx.EXPAND)

    typeBox = wx.StaticBox(self,-1,'Type')
    typeBoxSizer = wx.StaticBoxSizer(typeBox,wx.HORIZONTAL)
    environmentDimSizer.Add(typeBoxSizer,0,wx.EXPAND)
    self.typeCombo = wx.ComboBox(self,MITIGATE_COMBOTYPE_ID,"",choices=['Deter','Prevent','Detect','React'],style=wx.CB_READONLY)
    typeBoxSizer.Add(self.typeCombo,1,wx.EXPAND)
   
    pointBox = wx.StaticBox(self,-1,'Detection Point')
    pointBoxSizer = wx.StaticBoxSizer(pointBox,wx.HORIZONTAL)
    environmentDimSizer.Add(pointBoxSizer,0,wx.EXPAND)
    self.pointCombo = wx.ComboBox(self,MITIGATE_COMBODETECTIONPOINT_ID,"",choices=['Before','At','After'],style=wx.CB_READONLY)
    pointBoxSizer.Add(self.pointCombo,1,wx.EXPAND)


    dmBox = wx.StaticBox(self,-1,)
    dmBoxSizer = wx.StaticBoxSizer(dmBox,wx.HORIZONTAL)
    environmentDimSizer.Add(dmBoxSizer,1,wx.EXPAND)
    self.dmList = DimensionListCtrl(self,MITIGATE_LISTDETMECH_ID,wx.DefaultSize,'Detection Mechanism','detection_mechanism',self.dbProxy,listStyle=wx.LC_REPORT)
    dmBoxSizer.Add(self.dmList,1,wx.EXPAND)

    self.typeCombo.Disable()
    self.pointCombo.Disable() 
    self.dmList.Disable()
    
    self.SetSizer(mainSizer)
    self.typeCombo.Bind(wx.EVT_COMBOBOX,self.onTypeChange)
    self.environmentList.Bind(wx.EVT_LIST_INSERT_ITEM,self.OnAddEnvironment)
    self.environmentList.Bind(wx.EVT_LIST_DELETE_ITEM,self.OnDeleteEnvironment)
    self.environmentList.Bind(wx.EVT_LIST_ITEM_SELECTED,self.OnEnvironmentSelected)
    self.environmentList.Bind(wx.EVT_LIST_ITEM_DESELECTED,self.OnEnvironmentDeselected)

  def onTypeChange(self,evt):
    self.activateTypeCtrls()
    mitType = self.typeCombo.GetValue()
    riskCombo = self.theResponsePanel.FindWindowById(RESPONSE_COMBORISK_ID)
    riskName = riskCombo.GetValue()
    if (riskName != ''):
      riskNameCtrl = self.theResponsePanel.FindWindowById(RESPONSE_TEXTNAME_ID)
      riskNameLabel = mitType + ' ' + riskName
      riskNameCtrl.SetValue(riskNameLabel)

  def activateTypeCtrls(self):
    mitType = self.typeCombo.GetValue()
    if ((mitType == 'Deter') or (mitType == 'Prevent')):
      self.pointCombo.SetValue('')
      self.pointCombo.Disable() 
      self.dmList.DeleteAllItems()
      self.dmList.Disable()
    elif (mitType == 'Detect'):
      self.pointCombo.Enable() 
      self.dmList.Disable()
    elif (mitType == 'React'):
      self.pointCombo.Disable() 
      self.dmList.Enable()
  
  def loadControls(self,accept):
    self.environmentList.Unbind(wx.EVT_LIST_ITEM_SELECTED)
    self.environmentList.Unbind(wx.EVT_LIST_ITEM_DESELECTED)
    environmentNames = []
    for cp in accept.environmentProperties():
      environmentNames.append(cp.name())
    self.environmentList.load(environmentNames)

    for cp in accept.environmentProperties():
      environmentName = cp.name()
      self.theEnvironmentDictionary[environmentName] = cp
      environmentNames.append(environmentName) 
    environmentName = environmentNames[0]
    p = self.theEnvironmentDictionary[environmentName]
    
    self.typeCombo.SetStringSelection(p.type())
    self.pointCombo.SetStringSelection(p.detectionPoint())
    self.dmList.setEnvironment(environmentName)
    self.dmList.load(p.detectionMechanisms())

    self.environmentList.Select(0)

    self.activateTypeCtrls()
    self.environmentList.Bind(wx.EVT_LIST_ITEM_SELECTED,self.OnEnvironmentSelected)
    self.environmentList.Bind(wx.EVT_LIST_ITEM_DESELECTED,self.OnEnvironmentDeselected)
    self.theSelectedIdx = 0

  def OnEnvironmentSelected(self,evt):
    self.theSelectedIdx = evt.GetIndex()
#.........这里部分代码省略.........
开发者ID:InvalidToken,项目名称:CAIRIS,代码行数:101,代码来源:MitigateEnvironmentPanel.py

示例11: VulnerabilityEnvironmentPanel

class VulnerabilityEnvironmentPanel(wx.Panel):
  def __init__(self,parent,dp):
    wx.Panel.__init__(self,parent,armid.VULNERABILITY_PANELENVIRONMENT_ID)
    self.dbProxy = dp
    self.theVulId = None
    self.theEnvironmentDictionary = {}
    self.theSelectedIdx = -1

    mainSizer = wx.BoxSizer(wx.HORIZONTAL)
    environmentBox = wx.StaticBox(self)
    environmentListSizer = wx.StaticBoxSizer(environmentBox,wx.HORIZONTAL)
    mainSizer.Add(environmentListSizer,0,wx.EXPAND)
    self.environmentList = EnvironmentListCtrl(self,armid.VULNERABILITYENVIRONMENT_LISTENVIRONMENTS_ID,self.dbProxy)
    environmentListSizer.Add(self.environmentList,1,wx.EXPAND)

    environmentDimSizer = wx.BoxSizer(wx.VERTICAL)
    mainSizer.Add(environmentDimSizer,1,wx.EXPAND)

    sevBox = wx.StaticBox(self)
    sevSizer = wx.StaticBoxSizer(sevBox,wx.HORIZONTAL)
    environmentDimSizer.Add(sevSizer,0,wx.EXPAND)
    sevSizer.Add(wx.StaticText(self,-1,'Severity'))
    sevList = ['Negligible','Marginal','Critical','Catastrophic']
    self.sevCtrl = wx.ComboBox(self,armid.VULNERABILITYENVIRONMENT_COMBOSEVERITY_ID,choices=sevList,size=wx.DefaultSize,style=wx.CB_READONLY)
    sevSizer.Add(self.sevCtrl,1,wx.EXPAND) 

    aSizer = wx.BoxSizer(wx.HORIZONTAL)
    environmentDimSizer.Add(aSizer,1,wx.EXPAND)
    self.assetList = DimensionListCtrl(self,armid.VULNERABILITYENVIRONMENT_LISTASSETS_ID,wx.DefaultSize,'Asset','asset',self.dbProxy)
    assetBox = wx.StaticBox(self)
    assetSizer = wx.StaticBoxSizer(assetBox,wx.HORIZONTAL)
    assetSizer.Add(self.assetList,1,wx.EXPAND)
    aSizer.Add(assetSizer,1,wx.EXPAND)

    self.SetSizer(mainSizer)
    self.environmentList.Bind(wx.EVT_LIST_INSERT_ITEM,self.OnAddEnvironment)
    self.environmentList.Bind(wx.EVT_LIST_DELETE_ITEM,self.OnDeleteEnvironment)


  def loadControls(self,vulnerability):
    self.environmentList.Unbind(wx.EVT_LIST_ITEM_SELECTED)
    self.environmentList.Unbind(wx.EVT_LIST_ITEM_DESELECTED)
    self.theVulId = vulnerability.id()
# We load the environment name control before anything else.  Weird stuff happens if we don't do this.  Don't ask me why!!!
    environmentNames = []
    if (len(vulnerability.environmentProperties()) > 0):
      for cp in vulnerability.environmentProperties():
        environmentNames.append(cp.name())
      self.environmentList.load(environmentNames)
      for cp in vulnerability.environmentProperties():
        environmentName = cp.name()
        self.theEnvironmentDictionary[environmentName] = cp
      environmentName = environmentNames[0]
      p = self.theEnvironmentDictionary[environmentName]
      self.sevCtrl.SetStringSelection(p.severity())
      self.assetList.setEnvironment(environmentName)
      self.assetList.load(p.assets()) 
      self.environmentList.Select(0)

    self.environmentList.Bind(wx.EVT_LIST_ITEM_SELECTED,self.OnEnvironmentSelected)
    self.environmentList.Bind(wx.EVT_LIST_ITEM_DESELECTED,self.OnEnvironmentDeselected)
    self.theSelectedIdx = 0

  def OnEnvironmentSelected(self,evt):
    self.theSelectedIdx = evt.GetIndex()
    environmentName = self.environmentList.GetItemText(self.theSelectedIdx)
    p = self.theEnvironmentDictionary[environmentName]
    self.sevCtrl.SetStringSelection(p.severity())
    self.assetList.setEnvironment(environmentName)
    self.assetList.load(p.assets()) 
      
  

  def OnEnvironmentDeselected(self,evt):
    self.theSelectedIdx = evt.GetIndex()
    environmentName = self.environmentList.GetItemText(self.theSelectedIdx)
    self.theEnvironmentDictionary[environmentName] = VulnerabilityEnvironmentProperties(environmentName,self.sevCtrl.GetValue(),self.assetList.dimensions())
    self.sevCtrl.SetValue('')
    self.assetList.setEnvironment('')
    self.assetList.DeleteAllItems() 
    self.theSelectedIdx = -1

  def OnAddEnvironment(self,evt):
    self.theSelectedIdx = evt.GetIndex()
    environmentName = self.environmentList.GetItemText(self.theSelectedIdx)
    self.theEnvironmentDictionary[environmentName] = VulnerabilityEnvironmentProperties(environmentName,'',[])
    self.environmentList.Select(self.theSelectedIdx)
    self.assetList.setEnvironment(environmentName)
    inheritedEnv = self.environmentList.inheritedEnvironment()
    if (inheritedEnv != '' and self.theVulId != None):
      p = self.dbProxy.inheritedVulnerabilityProperties(self.theVulId,inheritedEnv)
      self.theEnvironmentDictionary[environmentName] = p
      self.sevCtrl.SetStringSelection(p.severity())
      self.assetList.setEnvironment(environmentName)
      self.assetList.load(p.assets()) 

  def OnDeleteEnvironment(self,evt):
    selectedIdx = evt.GetIndex()
    environmentName = self.environmentList.GetItemText(selectedIdx)
    del self.theEnvironmentDictionary[environmentName]
#.........这里部分代码省略.........
开发者ID:RachelLar,项目名称:CAIRIS-web,代码行数:101,代码来源:VulnerabilityEnvironmentPanel.py

示例12: EnvironmentPropertiesPanel

class EnvironmentPropertiesPanel(wx.Panel):
  def __init__(self,parent,dp):
    wx.Panel.__init__(self,parent,ENVIRONMENT_PANELENVIRONMENTPROPERTIES_ID)
    self.theEnvironmentPanel= parent

    mainSizer = wx.BoxSizer(wx.VERTICAL)

    environmentBox = wx.StaticBox(self,-1,)
    environmentFrameSizer = wx.StaticBoxSizer(environmentBox,wx.VERTICAL)
    mainSizer.Add(environmentFrameSizer,1,wx.EXPAND)
    self.environmentList = DimensionListCtrl(self,ENVIRONMENT_LISTENVIRONMENTS_ID,wx.DefaultSize,'Environment','environment',dp,'Adding one or more environments indicates that this is a composite environment')
    environmentFrameSizer.Add(self.environmentList,1,wx.EXPAND)

    propertiesBox = wx.StaticBox(self,-1,'Duplication properties')
    propertiesFrameSizer = wx.StaticBoxSizer(propertiesBox,wx.VERTICAL)
    mainSizer.Add(propertiesFrameSizer,1,wx.EXPAND)
    propertiesSizer = wx.FlexGridSizer(rows = 2, cols = 3)
    propertiesFrameSizer.Add(propertiesSizer,1,wx.EXPAND)
    propertiesSizer.Add(wx.StaticText(self,-1,'Override'))
    self.overrideRadio = wx.RadioButton(self,ENVIRONMENT_RADIOOVERRIDE_ID,style=wx.RB_GROUP)
    self.overrideRadio.SetToolTip(wx.ToolTip('If an artifact exists in multiple environments, choose the artifact\'s value for the overriding environment.'))
    propertiesSizer.Add(self.overrideRadio)
    self.overrideCombo = wx.ComboBox(self,ENVIRONMENT_COMBOOVERRIDE_ID,'',choices=[],style=wx.CB_READONLY | wx.CB_DROPDOWN)
    propertiesSizer.Add(self.overrideCombo,0,wx.EXPAND)
    propertiesSizer.Add(wx.StaticText(self,-1,'Maximise'))
    self.maxRadio = wx.RadioButton(self,ENVIRONMENT_RADIOMAXIMISE_ID)
    self.maxRadio.SetToolTip(wx.ToolTip('If an artifact exists in multiple environments, choose the artifact\'s maximal values.'))
    propertiesSizer.Add(self.maxRadio)
    propertiesSizer.AddGrowableCol(2)
    self.SetSizer(mainSizer)
    self.environmentList.Bind(wx.EVT_LIST_INSERT_ITEM,self.onEnvironmentAdded)
    self.environmentList.Bind(wx.EVT_LIST_DELETE_ITEM,self.onEnvironmentDeleted)
    self.overrideRadio.Bind(wx.EVT_RADIOBUTTON,self.onOverrideClick)
    self.maxRadio.Bind(wx.EVT_RADIOBUTTON,self.onMaximiseClick)
    self.overrideRadio.Disable()
    self.overrideCombo.Disable()
    self.maxRadio.Disable()

  def load(self,environment):
    environments = environment.environments()
    if (len(environments) > 0):
      self.environmentList.load(environments)
      if (environment.duplicateProperty() == 'Maximise'):
        self.maxRadio.Enable()
        self.maxRadio.SetValue(True)
        self.overrideCombo.Disable()
      else:
        self.overrideRadio.Enable()
        self.overrideCombo.Enable()
        self.overrideRadio.SetValue(True)
        self.overrideCombo.SetStringSelection(environment.overridingEnvironment())

  def onOverrideClick(self,evt):
    if (self.overrideRadio.GetValue() == True):
      self.overrideCombo.Enable()
    else: 
      self.overrideCombo.Disable()

  def onMaximiseClick(self,evt):
    if (self.maxRadio.GetValue() == True):
      self.overrideCombo.Disable()
    else: 
      self.overrideCombo.Enable()

  def onEnvironmentAdded(self,evt):
    currentEnvironmentSelection = ''
    if (self.overrideCombo.GetCount() > 0):
      currentEnvironmentSelection =  self.overrideCombo.GetStringSelection() 
    newItem = self.environmentList.GetItemText(evt.GetIndex())
    if (self.overrideCombo.FindString(newItem) == wx.NOT_FOUND):
      self.overrideCombo.Append(newItem)
    if (len(currentEnvironmentSelection) > 0):
      self.overrideCombo.SetStringSelection(currentEnvironmentSelection)
    self.overrideRadio.Enable()
    self.overrideCombo.Enable()
    self.maxRadio.Enable()
    evt.Skip()

  def onEnvironmentDeleted(self,evt):
    currentEnvironmentSelection = ''
    if (self.overrideCombo.GetCount() > 0):
      currentEnvironmentSelection =  self.overrideCombo.GetStringSelection() 
    deletedItem = self.environmentList.GetItemText(evt.GetIndex())
    self.overrideCombo.Delete(self.overrideCombo.FindString(deletedItem))

    environmentCount = self.overrideCombo.GetCount()
    if ((deletedItem == currentEnvironmentSelection) or (environmentCount == 0)):
      self.overrideCombo.SetValue('')
    else:
      self.overrideCombo.SetStringSelection(currentEnvironmentSelection)

    if (environmentCount == 0):
      self.overrideRadio.Disable()
      self.overrideCombo.Disable()
      self.maxRadio.Disable()
    evt.Skip()


  def environments(self):
    return self.environmentList.dimensions()
#.........这里部分代码省略.........
开发者ID:InvalidToken,项目名称:CAIRIS,代码行数:101,代码来源:EnvironmentPropertiesPanel.py

示例13: RoleEnvironmentPanel

class RoleEnvironmentPanel(wx.Panel):
  def __init__(self,parent,dp):
    wx.Panel.__init__(self,parent,ROLE_PANELENVIRONMENT_ID)
    self.dbProxy = dp
    self.theEnvironmentDictionary = {}
    self.theSelectedIdx = -1

    mainSizer = wx.BoxSizer(wx.HORIZONTAL)
    environmentBox = wx.StaticBox(self)
    environmentListSizer = wx.StaticBoxSizer(environmentBox,wx.HORIZONTAL)
    mainSizer.Add(environmentListSizer,0,wx.EXPAND)
    self.environmentList = DimensionListCtrl(self,ROLE_LISTENVIRONMENTS_ID,wx.DefaultSize,'Environment','environment',self.dbProxy,listStyle=wx.LC_REPORT | wx.LC_SINGLE_SEL)
    environmentListSizer.Add(self.environmentList,1,wx.EXPAND)

    environmentDimSizer = wx.BoxSizer(wx.VERTICAL)
    mainSizer.Add(environmentDimSizer,1,wx.EXPAND)

    rSizer = wx.BoxSizer(wx.HORIZONTAL)
    environmentDimSizer.Add(rSizer,1,wx.EXPAND)
    self.responseList = DimensionCostListCtrl(self,ROLE_LISTRESPONSES_ID,'Response')
    responseBox = wx.StaticBox(self)
    responseSizer = wx.StaticBoxSizer(responseBox,wx.HORIZONTAL)
    responseSizer.Add(self.responseList,1,wx.EXPAND)
    rSizer.Add(responseSizer,1,wx.EXPAND)

    cSizer = wx.BoxSizer(wx.HORIZONTAL)
    environmentDimSizer.Add(cSizer,1,wx.EXPAND)
    self.cmList = DimensionListCtrl(self,ROLE_LISTCOUNTERMEASURES_ID,wx.DefaultSize,'Countermeasure','countermeasure',self.dbProxy,listStyle = wx.LC_REPORT | wx.LC_SINGLE_SEL)
    cmBox = wx.StaticBox(self)
    cmSizer = wx.StaticBoxSizer(cmBox,wx.HORIZONTAL)
    cmSizer.Add(self.cmList,1,wx.EXPAND)
    cSizer.Add(cmSizer,1,wx.EXPAND)

    self.SetSizer(mainSizer)
    self.environmentList.Unbind(wx.EVT_RIGHT_DOWN)
    self.responseList.Unbind(wx.EVT_RIGHT_DOWN)
    self.cmList.Unbind(wx.EVT_RIGHT_DOWN)
    
  def loadControls(self,role):
    self.environmentList.Unbind(wx.EVT_LIST_ITEM_SELECTED)
    self.environmentList.Unbind(wx.EVT_LIST_ITEM_DESELECTED)

# We load the environment name control before anything else.  Weird stuff happens if we don't do this.  Don't ask me why!!!
    environmentNames = []
    for cp in role.environmentProperties():
      environmentNames.append(cp.name())
    self.environmentList.load(environmentNames)

    for cp in role.environmentProperties():
      environmentName = cp.name()
      self.theEnvironmentDictionary[environmentName] = cp

    if (len(environmentNames) > 0):
      environmentName = environmentNames[0]
      p = self.theEnvironmentDictionary[environmentName]
      self.responseList.load(p.responses()) 
      self.cmList.load(p.countermeasures()) 
      self.environmentList.Select(0)
    self.environmentList.Bind(wx.EVT_LIST_ITEM_SELECTED,self.OnEnvironmentSelected)
    self.environmentList.Bind(wx.EVT_LIST_ITEM_DESELECTED,self.OnEnvironmentDeselected)
    self.theSelectedIdx = 0

  def OnEnvironmentSelected(self,evt):
    self.theSelectedIdx = evt.GetIndex()
    environmentName = self.environmentList.GetItemText(self.theSelectedIdx)
    p = self.theEnvironmentDictionary[environmentName]
    self.responseList.load(p.responses()) 
    self.cmList.load(p.countermeasures())
      
  def OnEnvironmentDeselected(self,evt):
    self.responseList.DeleteAllItems() 
    self.cmList.DeleteAllItems() 
    self.theSelectedIdx = -1
开发者ID:InvalidToken,项目名称:CAIRIS,代码行数:73,代码来源:RoleEnvironmentPanel.py

示例14: setEnvironment

 def setEnvironment(self,environmentName):
   DimensionListCtrl.setEnvironment(self,environmentName)
开发者ID:InvalidToken,项目名称:CAIRIS,代码行数:2,代码来源:CountermeasureRoleListCtrl.py

示例15: __init__

 def __init__(self,parent,dp,personaList):
   DimensionListCtrl.__init__(self,parent,COUNTERMEASURE_LISTROLES_ID,wx.DefaultSize,'Role','role',dp,listStyle=wx.LC_REPORT | wx.LC_SINGLE_SEL)
   self.thePersonaList = personaList
开发者ID:InvalidToken,项目名称:CAIRIS,代码行数:3,代码来源:CountermeasureRoleListCtrl.py


注:本文中的DimensionListCtrl.DimensionListCtrl类示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。