Beispiel #1
0
    def buildListCtrl(parent, winId, columnNames, objtFn, dimName, envName=''):
        listCtrl = 0
        if (dimName == 'response'):
            listCtrl = ResponseListCtrl(parent, winId)
        elif (dimName == 'countermeasure'):
            listCtrl = CountermeasureListCtrl(parent, winId)
        elif (dimName == 'securitypattern'):
            listCtrl = SecurityPatternListCtrl(parent, winId)
        elif (dimName == 'template_asset'):
            listCtrl = TemplateAssetListCtrl(parent, winId)
        elif (dimName == 'scenario'):
            listCtrl = TraceableList(parent, winId, 'scenario')
        elif (dimName == 'asset'):
            listCtrl = TraceableList(parent, winId, 'asset')
        elif (dimName == 'goal'):
            listCtrl = TraceableList(parent, winId, 'goal')
        elif (dimName == 'obstacle'):
            listCtrl = TraceableList(parent, winId, 'obstacle')
        elif (dimName == 'task'):
            listCtrl = TraceableList(parent, winId, 'task')
        elif (dimName == 'document_reference'):
            listCtrl = ReferencedCharacteristicsListCtrl(
                parent, winId, 'document_reference')
        elif (dimName == 'concept_reference'):
            listCtrl = ReferencedCharacteristicsListCtrl(
                parent, winId, 'concept_reference')
        elif (dimName == 'usecase'):
            listCtrl = UseCaseListCtrl(parent, winId)
        elif (dimName == 'component_view'):
            listCtrl = ComponentViewListCtrl(parent, winId)
        else:
            listCtrl = ObjectListCtrl(parent, winId)

        for idx, columnName in enumerate(columnNames):
            listCtrl.InsertColumn(idx, columnName)

        valueTypes = set([
            'asset_value', 'threat_value', 'risk_class',
            'countermeasure_value', 'capability', 'motivation', 'asset_type',
            'threat_type', 'vulnerability_type', 'severity', 'likelihood',
            'access_right', 'protocol', 'privilege', 'surface_type'
        ])
        if (dimName in valueTypes):
            if envName == '':
                parent.objts = objtFn(dimName)
            else:
                parent.objts = objtFn(dimName, envName)
            newParentObjts = {}
            listRow = 0
            for objt in parent.objts:
                parent.addObjectRow(listCtrl, listRow, objt)
                newParentObjts[objt.name()] = objt
                listRow += 1
            parent.objts = newParentObjts
        else:
            parent.objts = objtFn()

            listRow = 0
            keyNames = parent.objts.keys()
            keyNames.sort()
            for keyName in keyNames:
                objt = parent.objts[keyName]
                parent.addObjectRow(listCtrl, listRow, objt)
                listRow += 1

        for idx, columnNames in enumerate(columnNames):
            listCtrl.SetColumnWidth(idx, 125)
        return listCtrl