class MisuseCaseDialog(wx.Dialog): def __init__(self,parent,isCreate = False): wx.Dialog.__init__(self,parent,MISUSECASE_ID,'Create Misuse Case',style=wx.DEFAULT_DIALOG_STYLE|wx.MAXIMIZE_BOX|wx.THICK_FRAME|wx.RESIZE_BORDER,size=(700,800)) b = Borg() self.dbProxy = b.dbProxy self.theMisuseCaseId = -1 self.theName = '' self.theRisk = '' self.theEnvironmentProperties = [] self.panel = 0 self.buildControls(isCreate) self.theCommitVerb = 'Create' def buildControls(self,isCreate): mainSizer = wx.BoxSizer(wx.VERTICAL) self.panel = MisuseCasePanel(self,self.dbProxy) self.panel.buildControls(isCreate) mainSizer.Add(self.panel,1,wx.EXPAND) self.SetSizer(mainSizer) wx.EVT_BUTTON(self,MISUSECASE_BUTTONCOMMIT_ID,self.onCommit) def load(self,mc): mc.theThreatName,mc.theVulnerabilityName = self.dbProxy.misuseCaseRiskComponents(mc.name()) self.loadMisuseCase(mc) def loadMisuseCase(self,mc): self.theMisuseCaseId = mc.id() self.panel.loadMisuseCase(mc) self.theCommitVerb = 'Edit' self.SetTitle('Edit Misuse Case') def loadRiskComponents(self,riskName,threatName,vulnerabilityName): self.panel.loadRiskComponents(riskName,threatName,vulnerabilityName) def onCommit(self,evt): nameCtrl = self.FindWindowById(MISUSECASE_TEXTNAME_ID) riskCtrl = self.FindWindowById(MISUSECASE_TEXTRISK_ID) environmentCtrl = self.FindWindowById(MISUSECASE_PANELENVIRONMENT_ID) self.theName = nameCtrl.GetValue() self.theRisk = riskCtrl.GetValue() self.theEnvironmentProperties = environmentCtrl.environmentProperties() commitLabel = self.theCommitVerb + ' Misuse Case' for environmentProperties in self.theEnvironmentProperties: if len(environmentProperties.narrative()) == 0: errorTxt = 'No narrative defined in environment ' + environmentProperties.name() dlg = wx.MessageDialog(self,errorTxt,commitLabel,wx.OK) dlg.ShowModal() dlg.Destroy() return self.EndModal(MISUSECASE_BUTTONCOMMIT_ID) def parameters(self): parameters = MisuseCaseParameters(self.theName,self.theEnvironmentProperties,self.theRisk) parameters.setId(self.theMisuseCaseId) return parameters
class MisuseCaseDialog(wx.Dialog): def __init__(self, parent, isCreate=False): wx.Dialog.__init__(self, parent, armid.MISUSECASE_ID, 'Create Misuse Case', style=wx.DEFAULT_DIALOG_STYLE | wx.MAXIMIZE_BOX | wx.THICK_FRAME | wx.RESIZE_BORDER, size=(700, 800)) b = Borg() self.dbProxy = b.dbProxy self.theMisuseCaseId = -1 self.theName = '' self.theRisk = '' self.theEnvironmentProperties = [] self.panel = 0 self.buildControls(isCreate) self.theCommitVerb = 'Create' def buildControls(self, isCreate): mainSizer = wx.BoxSizer(wx.VERTICAL) self.panel = MisuseCasePanel(self, self.dbProxy) self.panel.buildControls(isCreate) mainSizer.Add(self.panel, 1, wx.EXPAND) self.SetSizer(mainSizer) wx.EVT_BUTTON(self, armid.MISUSECASE_BUTTONCOMMIT_ID, self.onCommit) def load(self, mc): mc.theThreatName, mc.theVulnerabilityName = self.dbProxy.misuseCaseRiskComponents( mc.name()) self.loadMisuseCase(mc) def loadMisuseCase(self, mc): self.theMisuseCaseId = mc.id() self.panel.loadMisuseCase(mc) self.theCommitVerb = 'Edit' self.SetTitle('Edit Misuse Case') def loadRiskComponents(self, riskName, threatName, vulnerabilityName): self.panel.loadRiskComponents(riskName, threatName, vulnerabilityName) def onCommit(self, evt): nameCtrl = self.FindWindowById(armid.MISUSECASE_TEXTNAME_ID) riskCtrl = self.FindWindowById(armid.MISUSECASE_TEXTRISK_ID) environmentCtrl = self.FindWindowById( armid.MISUSECASE_PANELENVIRONMENT_ID) self.theName = nameCtrl.GetValue() self.theRisk = riskCtrl.GetValue() self.theEnvironmentProperties = environmentCtrl.environmentProperties() commitLabel = self.theCommitVerb + ' Misuse Case' for environmentProperties in self.theEnvironmentProperties: if len(environmentProperties.narrative()) == 0: errorTxt = 'No narrative defined in environment ' + environmentProperties.name( ) dlg = wx.MessageDialog(self, errorTxt, commitLabel, wx.OK) dlg.ShowModal() dlg.Destroy() return self.EndModal(armid.MISUSECASE_BUTTONCOMMIT_ID) def parameters(self): parameters = MisuseCaseParameters(self.theName, self.theEnvironmentProperties, self.theRisk) parameters.setId(self.theMisuseCaseId) return parameters