Example #1
0
def run(mode):
    selected = None
    if mode == 'b':
        selected = Application.getInstance().getMainFrame().getBrowser(
        ).getActiveTree().getSelectedNode().getUserObject()
    if mode == 'd':
        selected = Application.getInstance().getProject().getActiveDiagram(
        ).getSelected().get(0).getElement()
    if not isinstance(selected, Class):
        gl.log("You must select a block!!!")
        return

    try:
        SessionManager.getInstance().createSession("generalize")
        choice = JOptionPane.showConfirmDialog(
            None,
            "If you undo specializations you may lose default values on blocks since they'll be deleted, continue?",
            "Continue?", JOptionPane.YES_NO_OPTION)
        if choice == JOptionPane.YES_OPTION:
            undo(selected)

        SessionManager.getInstance().closeSession()
    except:
        SessionManager.getInstance().cancelSession()
        exceptionType, exceptionValue, exceptionTraceback = sys.exc_info()
        messages = traceback.format_exception(exceptionType, exceptionValue,
                                              exceptionTraceback)
        for message in messages:
            gl.log(message)
def replaceString(s):
	replaced = s
	results = slotre.findall(replaced)
	for result in results:
		instance = project.getElementByID(result)
		if instance is not None:
			id = Converters.getElementToIdConverter().apply(instance)
			replaced = replaced.replace(result, id)
			Application.getInstance().getGUILog().log('[INFO] replacing ' + result + ' with ' + id)
	return replaced
Example #3
0
def getSelectedElementsInBrowser(complain):
    elements = []
    tree = Application.getInstance().getMainFrame().getBrowser().getActiveTree(
    )
    if tree == None:
        gl.log("No active tree!")
        return elements
    if debug: logInfo("tree", tree)
    nodes = tree.getSelectedNodes()
    if debug: logInfo("nodes", nodes)
    if nodes != None and len(nodes) > 0:
        for selectedNode in nodes:
            if selectedNode != None:
                if debug: logInfo("selected node", selectedNode)
                selected = selectedNode.getUserObject()
                if selected != None:
                    elements.append(selected)
                    if debug: logInfo("selected", selected)
                elif complain:
                    gl.log("selected = None")
            elif complain:
                gl.log("selectedNode = None")
    elif complain:
        gl.log("No selected nodes!")
    return elements
Example #4
0
def getSelectedElementsInDiagram():
    project = Application.getInstance().getProject()
    diagram = None
    selectedList = None
    if project != None: diagram = project.getActiveDiagram()
    if diagram != None: selectedList = diagram.getSelected()
    if selectedList != None: selectedElements = [ x.getElement() for x in selectedList ] 
    return selectedElements
Example #5
0
def run(s):
	#get the user's selection - the element that should be top level and contain (recursively) all other systems/behaviors you wish to reason about.
	selectedNode1 = Application.getInstance().getMainFrame().getBrowser().getActiveTree().getSelectedNodes()[0]
	#gl.log(str(dir(selectedNode1)))
	firstSelected = selectedNode1.getUserObject()
	#gl.log(str(dir(firstSelected)))
	gl.log( "selected name = " + firstSelected.name )
	gl.log( "selected id = " + str(firstSelected.getID()) )
Example #6
0
def getSelectedElementsInDiagram():
    project = Application.getInstance().getProject()
    diagram = None
    selectedList = None
    if project != None: diagram = project.getActiveDiagram()
    if diagram != None: selectedList = diagram.getSelected()
    if selectedList != None:
        selectedElements = [x.getElement() for x in selectedList]
    return selectedElements
Example #7
0
def run(s):
    #get the user's selection - the element that should be top level and contain (recursively) all other systems/behaviors you wish to reason about.
    selectedNode1 = Application.getInstance().getMainFrame().getBrowser(
    ).getActiveTree().getSelectedNodes()[0]
    #gl.log(str(dir(selectedNode1)))
    firstSelected = selectedNode1.getUserObject()
    #gl.log(str(dir(firstSelected)))
    gl.log("selected name = " + firstSelected.name)
    gl.log("selected id = " + str(firstSelected.getID()))
Example #8
0
def setup():
    '''
    I use this to store anything handy I want to use. 
    This script is pretty simple so far so it's very small...
    '''
    global gl
    gl = Application.getInstance().getGUILog()
    gl.clearLog()

    return True
Example #9
0
    def __init__(self):
        gl.log("Initializing the Magic Draw Animator!")
        #project is used to find element by ID
        #SEM is key to getting symbols (usages on diagram) from elements
        self.project = Application.getInstance().getProjectsManager().getActiveProject()
        self.SEM = self.project.getSymbolElementMap()

        self.knownComponents = {} #{componentID,symbol}
        self.defaults = {} #{sym: (fill color, line color)}
        self.activeDiagrams = [] #probably don't need the active diagram tracker either but maybe later.
        self.paintEvents={} #keeps track of ActionListener thing for each symbol
Example #10
0
	def actionPerformed(self, event):
		filename = pluginDescriptor.getPluginDirectory().getAbsolutePath()+os.sep+self.getName()+".py"
		try:
			execfile( filename )
		except :
			gl = Application.getInstance().getGUILog()
			exceptionType, exceptionValue, exceptionTraceback = sys.exc_info()
			gl.log("*** EXCEPTION:")
			messages=traceback.format_exception(exceptionType, exceptionValue, exceptionTraceback)
			for message in messages:
				gl.log(message)
Example #11
0
 def actionPerformed(self, event):
     gl = Application.getInstance().getGUILog()
     try:
         #gl.log("blah")
         mod = __import__(self.getName().replace(" ", "_"))
         reload(mod)
         mod.run(self.s)
     except:
         exceptionType, exceptionValue, exceptionTraceback = sys.exc_info()
         gl.log("*** EXCEPTION:")
         messages=traceback.format_exception(exceptionType, exceptionValue, exceptionTraceback)
         for message in messages:
             gl.log(message)
Example #12
0
    def __init__(self):
        gl.log("Initializing the Magic Draw Animator!")
        # project is used to find element by ID
        # SEM is key to getting symbols (usages on diagram) from elements
        self.project = Application.getInstance().getProjectsManager().getActiveProject()
        self.SEM = self.project.getSymbolElementMap()

        self.knownComponents = {}  # {componentID,symbol}
        self.defaults = {}  # {sym: (fill color, line color)}
        self.activeDiagrams = []  # probably don't need the active diagram tracker either but maybe later.
        self.paintEvents = {}  # keeps track of the PaintEvent thing for each symbol
        self.currentPaintEvents = []  # the collection of events to be painted together
        self.currentDiagram = None  # to avoid potential overhead of opening an already open diagram.
Example #13
0
def run(x):
    gl.clearLog()
    project = Application.getInstance().getProjectsManager().getActiveProject()
    SEM = project.getSymbolElementMap()
    
    possibilities = None
    id = JOptionPane.showInputDialog(
                                    None,
                                    "Element ID",
                                    "Find Element",
                                    JOptionPane.PLAIN_MESSAGE,
                                    None,
                                    possibilities,
                                    None)

    if id and len(id)>0:
        id = id.strip()
        id = id.lstrip("sig")
        gl.log("looking for %s" % id)
        try: element = project.getElementByID(id)
        except:
            MPUtils.handleException("Can't find an element matching this ID.")
            return
        if not element: 
            gl.log("Can't find element matching this ID.")
            return
        gl.log("Found Element with ID = " + str(id) + ": ")
        try: gl.log("    Name: %s" % element.name)
        except: 
            try: gl.log("    HumanName: %s" % element.humanName)
            except: pass
        gl.log("    Type: %s" % element.humanType)
        try: symbols = SEM.getAllPresentationElements(element)
        except:
            MPUtils.handleException("Can't find symbols matching this ID.")
            return
        if symbols:
                if len(symbols)>1:
                    for s in symbols:
                        if s: gl.log("MULTIPLE SYMBOLS!! " + str(s) + " in diagram " + str(s.getDiagramPresentationElement()))
                        else: gl.log("MULTIPLE SYMBOLS!! " + str(s) )
                    gl.log("choosing first symbol")
                if len(symbols)>0:
                    sym = symbols[0]
                    if sym:
                        diagram = sym.getDiagramPresentationElement()
                        diagram.open()
                        sym.setSelected(True)  
                    else: gl.log("wtf?") 
        else: gl.log("No symbols found for componentId=" + str(id))
    else: gl.log("barrrf")
    def __init__(self, namespace={}):
        """
            Create a MagicDraw Jython Console.
            namespace is an optional and should be a dictionary or Map
        """

        # populate with the application and current project
        namespace['app'] = Application.getInstance()
        # TODO: probably need to listen for this changing, huh?
        namespace['proj'] = namespace['app'].getProject()
        # TODO: probably need to listen for this changing, huh?
        namespace['model'] = namespace['proj'].getModel()

        Console.__init__(self, namespace)
Example #15
0
    def __init__(self):
        gl.log("Initializing the Magic Draw Animator!")
        #project is used to find element by ID
        #SEM is key to getting symbols (usages on diagram) from elements
        self.project = Application.getInstance().getProjectsManager(
        ).getActiveProject()
        self.SEM = self.project.getSymbolElementMap()

        self.knownComponents = {}  #{componentID,symbol}
        self.defaults = {}  #{sym: (fill color, line color)}
        self.activeDiagrams = [
        ]  #probably don't need the active diagram tracker either but maybe later.
        self.paintEvents = {
        }  #keeps track of ActionListener thing for each symbol
Example #16
0
 def actionPerformed(self, event):
     filename = pluginDescriptor.getPluginDirectory().getAbsolutePath(
     ) + os.sep + self.getName() + ".py"
     try:
         execfile(filename)
     except:
         gl = Application.getInstance().getGUILog()
         exceptionType, exceptionValue, exceptionTraceback = sys.exc_info()
         gl.log("*** EXCEPTION:")
         messages = traceback.format_exception(exceptionType,
                                               exceptionValue,
                                               exceptionTraceback)
         for message in messages:
             gl.log(message)
Example #17
0
def setup():
	#initialize the guiLog
	gl = Application.getInstance().getGUILog()
	#gl.clearLog()
	gl.log("===============================================================================")
	debug = True
	logDebug = False
	
	EU.setDebug(debug)
	EU.setLogDebug(logDebug)
	
	global debug
	global logDebug
	global gl
	
	#get a copy of the project - useful for getting the elements factory, various other things like that.
	project = Application.getInstance().getProjectsManager().getActiveProject()
	global project
	TVM = StereotypesHelper.getStereotype(project,"TimeVaryingMap")
	global TVM

	#declare any stereotype elements here, for convenience.	
	return True
Example #18
0
 def __init__(self):
     self.events = []
     self.timeScale = float(3.0)  #animation sped up by this factor
     ts = JOptionPane.showInputDialog(None,
                                      "Increase speed by factor of...",
                                      "Set Timescale",
                                      JOptionPane.PLAIN_MESSAGE, None, None,
                                      "3.0")
     try:
         if ts and float(ts): self.timeScale = float(ts)
     except:
         pass
     gl.log("using timescale: %s" % str(self.timeScale))
     self.frame = None
     if usingDialogs:
         self.frame = Application.getInstance().getMainFrame()
Example #19
0
def collectElementsByStereotypes(source, filters):
    """
    get all owned elements of model element (diagram or package) with given stereotypes (including derived)
    if source is diagram, gives all model elements on that diagram (not presentation elements)
    params:
        a model element (can be diagram or Package)
        list of stereotype elements
    returns:
        list of elements that fits stereotypes, or empty list"""
    alls = []
    if isinstance(source, Diagram):
        project = Application.getInstance().getProject()
        alls.extend(project.getDiagram(source).getUsedModelElements(False))
    else:
        _collectRecursiveOwnedElements(source, alls)
    return filterElementsByStereotypes(alls, filters)
Example #20
0
    def __init__(self):
        gl.log("Initializing the Magic Draw Animator!")
        #project is used to find element by ID
        #SEM is key to getting symbols (usages on diagram) from elements
        self.project = Application.getInstance().getProjectsManager(
        ).getActiveProject()
        self.SEM = self.project.getSymbolElementMap()

        self.knownComponents = {}  #{componentID,symbol}
        self.defaults = {}  #{sym: (fill color, line color)}
        self.activeDiagrams = [
        ]  #probably don't need the active diagram tracker either but maybe later.
        self.paintEvents = {
        }  #keeps track of the PaintEvent thing for each symbol
        self.currentPaintEvents = [
        ]  #the collection of events to be painted together
        self.currentDiagram = None  #to avoid potential overhead of opening an already open diagram.
Example #21
0
def run(mode):
    if mode == 'b':
        selected = Application.getInstance().getMainFrame().getBrowser(
        ).getActiveTree().getSelectedNode().getUserObject()
    try:
        SessionManager.getInstance().createSession("syncProfile")
        deprecateStereotypes(selected)
        SessionManager.getInstance().closeSession()
    except:
        if SessionManager.getInstance().isSessionCreated():
            SessionManager.getInstance().cancelSession()
        exceptionType, exceptionValue, exceptionTraceback = sys.exc_info()
        gl.log("*** EXCEPTION:")
        messages = traceback.format_exception(exceptionType, exceptionValue,
                                              exceptionTraceback)
        for message in messages:
            gl.log(message)
Example #22
0
 def __init__(self):
     self.events = []
     self.timeScale = float(3.0) #animation sped up by this factor
     ts = JOptionPane.showInputDialog(
                                         None,
                                         "Increase speed by factor of...",
                                         "Set Timescale",
                                         JOptionPane.PLAIN_MESSAGE,
                                         None,
                                         None,
                                         "3.0")
     try: 
         if ts and float(ts): self.timeScale = float(ts)
     except: pass
     gl.log("using timescale: %s" % str(self.timeScale))
     self.frame = None
     if usingDialogs:
         self.frame = Application.getInstance().getMainFrame();
Example #23
0
def run(mode):
    if mode == 'b':
        selected = Application.getInstance().getMainFrame().getBrowser().getActiveTree().getSelectedNode().getUserObject()
    try:
        SessionManager.getInstance().createSession("syncProfile")
        A = getPackages(selected)
        D = validateLocation(A[0], A[1], A[2], A[3], A[4], A[5], A[6], A[7], A[8])
        B = validateBaseClass(A[0], A[1], A[2], A[3], A[4], A[5], A[6], A[7], A[8])
        C = validateStereotypes(A[0], A[1], A[2], A[3], A[4], A[5], A[6], A[7], A[8])
        E = elementClassifierValidation(A[0], A[1], A[2], A[3], A[4], A[5], A[6], A[7], A[8])
        F = stereotypeClassifierValidation(A[0], A[1], A[2], A[3], A[4], A[5], A[6], A[7], A[8])
        G = nameMismatch(A[0], A[1], A[2], A[3], A[4], A[5], A[6], A[7], A[8])
        H = multipleStereotypes(A[0], A[1], A[2], A[3], A[4], A[5], A[6], A[7], A[8])
        validationSummary(D[0], D[1], D[2], D[3], C[0], C[1],B[0], B[1], B[2], B[3], E[0], F[0], G[0], H[0])
        SessionManager.getInstance().closeSession()
    except:
        if SessionManager.getInstance().isSessionCreated():
            SessionManager.getInstance().cancelSession()
        exceptionType, exceptionValue, exceptionTraceback = sys.exc_info()
        gl.log("*** EXCEPTION:")
        messages=traceback.format_exception(exceptionType, exceptionValue, exceptionTraceback)
        for message in messages:
            gl.log(message)
Example #24
0
def getSelectedElementsInBrowser(complain):
    elements = []
    tree = Application.getInstance().getMainFrame().getBrowser().getActiveTree()
    if tree == None:
        gl.log("No active tree!")
        return elements
    if debug: logInfo("tree", tree)
    nodes = tree.getSelectedNodes()
    if debug: logInfo("nodes", nodes)
    if nodes != None and len(nodes) > 0:
        for selectedNode in nodes:
            if selectedNode != None:
                if debug: logInfo("selected node", selectedNode)
                selected = selectedNode.getUserObject()
                if selected != None:
                    elements.append(selected)
                    if debug: logInfo("selected", selected)
                elif complain:
                    gl.log("selected = None")
            elif complain:
                gl.log("selectedNode = None")
    elif complain:
        gl.log("No selected nodes!")
    return elements
Example #25
0
from gov.nasa.jpl.mbee import DocGen3Profile
from gov.nasa.jpl.mgss.mbee.docgen.docbook import DBParagraph
from gov.nasa.jpl.mgss.mbee.docgen.docbook import DBSection

import messaging

from com.nomagic.magicdraw.core import Application
from com.nomagic.magicdraw.core import Project
from com.nomagic.uml2.ext.jmi.helpers import StereotypesHelper
from com.nomagic.uml2.ext.jmi.helpers import ModelHelper

targets = scriptInput['DocGenTargets']

output = []

thisProject = Application.getInstance().getProject()

INSPIREReqS = StereotypesHelper.getStereotype(thisProject, "INSPIRE.Requirement")

for t in targets:

    messaging.DBG(t.getName())
    
    idSlot = StereotypesHelper.getSlot(t, INSPIREReqS, "Id", False)
    coreText = ''
    for myVal in idSlot.getValue():
        coreText = myVal.getValue()

    output.append(DBParagraph(coreText + ' ' + t.getName()))

    textSlot = StereotypesHelper.getSlot(t, INSPIREReqS, "Text", False)
Example #26
0
#this is where the actual animator class lives
import MagicDrawAnimatorUtils2
reload (MagicDrawAnimatorUtils2)
import MPUtils
reload (MPUtils)

import os
from os.path import expanduser
homeDir = expanduser("~")
#homeDir = '/home/bclement'
gitDir = homeDir + os.sep + 'git'
projectPath = gitDir + os.sep + 'bae'
filepath = projectPath + os.sep + 'simulationSnapshot.example.txt'

global gl
gl = Application.getInstance().getGUILog()
        
def setup():
    '''
    I use this to store anything handy I want to use. 
    This script is pretty simple so far so it's very small...
    '''
    global gl
    gl = Application.getInstance().getGUILog()
    gl.clearLog()

    return True

def run(x):
    '''
    Do whatever can be done in normal MD thread here. 
Example #27
0
def run(s):
	starttime = time.time()
	if not setup(): return
	gl.log("Last Exporter Modification Date: March 4, 2013")
	#get the user's selection - the element that should be top level and contain (recursively) all other systems/behaviors you wish to reason about.
	firstSelected = Application.getInstance().getMainFrame().getBrowser().getActiveTree().getSelectedNodes()[0].getUserObject()
	gl.log(str(time.time()) + "You have selected " + firstSelected.name + " as the highest level element in your system.")
	global firstSelected
	
	#make sure the user picked a class... 
	if not isinstance(firstSelected,Class):
		gl.log("***ERROR: you must select some kind of class as your top level element.")
		return
	
	systemBehavior = firstSelected.classifierBehavior
	try: gl.log(systemBehavior.name)
	except: 
		gl.log("***ERROR: your top level system doesn't have a classifier behavior!")
		return

	inspected = []
	classifiersToInspect = [firstSelected]
	toInspect = [firstSelected]
	classesToTranslate = []
	constructorArgs = {}
	global data
	global inspected
	global toInspect
	global classifiersToInspect
	global constructorArgs
	
	#collect and inspect everybody based on top classifier!
	count = 0
	while len(classifiersToInspect)>0:
		if count > 50:
			gl.log("***LOOP LIMIT REACHED!")
			return
		thing = classifiersToInspect.pop(0)
		classesToTranslate.append(inspect(thing))
		count += 1
	inspecttime = time.time()
	gl.log("finished inspecting - time: %s" % str(inspecttime-starttime))
	
	#write everything out
	log_dir = getLogDirectory()
	os.chdir(log_dir)
	log_file_name = "Scenario_XML_" + str(EU.formatCurrentTime()) + ".xml"
	log_file = EW.makeLog(firstSelected,classesToTranslate,log_file_name)
	latestDir = getLatestDirectory()
	ffile = "Demo_Scenario_Latest.xml"
	gl.log("time to write scenario: %s" % str(time.time()-inspecttime))
	generatedXmlFileName = getFileName(latestDir,ffile)
	if generatedXmlFileName:
		shutil.copyfile(log_file_name, generatedXmlFileName)
		gl.log("copied file from " + os.getcwd() + " copied " + log_file_name + " to " + generatedXmlFileName )
	
	#gl.log("\nERRORS:")
	#for thing in classesToTranslate:
	#	if len(thing.errors.keys())>0:
	#		gl.log("errors in %s" % thing.name)
	#		gl.log("	%s" % str(thing.errors))
			
	gl.log("\nThe log file for this execution is located at: " + str(os.getcwd()) )
	gl.log("The log file: %s" % str(generatedXmlFileName) )
	gl.log("time to do everything: %s" % str(time.time()-starttime))
	return generatedXmlFileName
Example #28
0
from com.nomagic.magicdraw.core import Application
from com.nomagic.magicdraw.core import Project
import re
import os
import sys
import traceback
import time
import xmlrpclib

import xml.parsers.expat
xml.parsers.expat._xerces_parser = "com.sun.org.apache.xerces.internal.parsers.SAXParser"

#######################################
##set up project / script parameters
#######################################
gl = Application.getInstance().getGUILog()
project = Application.getInstance().getProjectsManager().getActiveProject()

#ah=ActHi(project)
#ah.highlight("Activity1","A1","on")
#ah.highlight("Activity1","A2","on")
#ah.highlight("Activity1","A2","off")
#ah.clearAll()


XMLRPC_PORT = 8150
# Main test code
try:
    gl.log("Starting XML-RPC client, project %s..." % project)
    ##
    ## This also serves as an example of client's interaction with the
Example #29
0
from com.nomagic.magicdraw.openapi.uml import ModelElementsManager
from com.nomagic.magicdraw.uml import ClassTypes
from com.nomagic.magicdraw.uml import ElementFinder
from com.nomagic.magicdraw.actions import *
from com.nomagic.magicdraw.actions import MDActionsCategory

import os, csv, sys, traceback, re, time, shutil

from com.nomagic.uml2.ext.magicdraw.actions.mdbasicactions import OpaqueAction
from com.nomagic.uml2.ext.magicdraw.actions.mdbasicactions import Pin
from javax.swing import JOptionPane

import ExporterUtils as EU
reload(EU)

gl = Application.getInstance().getGUILog()
global gl
project = Application.getInstance().getProjectsManager().getActiveProject()
global project
TVM = StereotypesHelper.getStereotype(project,"TimeVaryingMap")
PF = StereotypesHelper.getStereotype(project,"Profile")
ASMIP = StereotypesHelper.getStereotype(project,"AddToStructuralFeatureMapInPlace")
GSM = StereotypesHelper.getStereotype(project, "GetStructuralFeatureMap")
MSMIP = StereotypesHelper.getStereotype(project, "MultiplyStructuralFeatureMapInPlace")
SSMAT = StereotypesHelper.getStereotype(project, "SampleStructuralFeatureMapAtTime")
USM = StereotypesHelper.getStereotype(project, "UpdateStructuralFeatureMap")

global TVM

class ClassifierClass(object):
	def __init__(self,system,cs,firstSelected):
    beforeName = element.getName()
    afterName = replaceString(beforeName)
    if (afterName == beforeName):
        return False
    element.setName(afterName)
    return True


def replaceString(s):
    replaced = s
    results = slotre.findall(replaced)
    for result in results:
        instance = project.getElementByID(result)
        if instance is not None:
            id = Converters.getElementToIdConverter().apply(instance)
            replaced = replaced.replace(result, id)
            Application.getInstance().getGUILog().log('[INFO] replacing ' +
                                                      result + ' with ' + id)
    return replaced


project = Application.getInstance().getProject()
if (SessionManager.getInstance().isSessionCreated(project)):
    SessionManager.getInstance().cancelSession(project)
SessionManager.getInstance().createSession(
    project, 'Fixing twc server ids in cfs to local ids')
replaceElementsRecursively(project.getModel())
SessionManager.getInstance().closeSession(project)
Application.getInstance().getGUILog().log(
    '[INFO] Fixed cross-reference(s) in ' + str(replacementCount) +
    ' element(s).')
Example #31
0
from com.nomagic.uml2.ext.jmi.helpers import StereotypesHelper as halp
from com.nomagic.magicdraw.core import Application

app = Application.getInstance()
proj = app.getProject()
mod = proj.getModel()
sysml = halp.getProfile(proj, "SysML Profile")
req = halp.getStereotype(proj, "Requirement")

Example #32
0
from com.nomagic.uml2.ext.magicdraw.classes.mdkernel import *
from com.nomagic.uml2.ext.magicdraw.classes.mddependencies import *
from com.nomagic.uml2.ext.magicdraw.classes.mdinterfaces import *
from com.nomagic.uml2.ext.magicdraw.actions.mdbasicactions import *
from com.nomagic.uml2.ext.magicdraw.activities.mdbasicactivities import *
from com.nomagic.uml2.ext.magicdraw.activities.mdintermediateactivities import *
from com.nomagic.uml2.ext.magicdraw.auxiliaryconstructs.mdinformationflows import *
from com.nomagic.uml2.ext.magicdraw.compositestructures.mdports import *
from com.nomagic.uml2.ext.magicdraw.commonbehaviors.mdsimpletime import *
from com.nomagic.uml2.ext.magicdraw.interactions.mdbasicinteractions import Interaction
from com.nomagic.uml2.ext.magicdraw.classes.mdpowertypes import GeneralizationSet
from com.nomagic.uml2.ext.magicdraw.commonbehaviors.mdcommunications import Reception, Signal
from com.nomagic.uml2.ext.magicdraw.activities.mdfundamentalactivities import Activity
from com.nomagic.uml2.ext.jmi.helpers import CoreHelper

gl = Application.getInstance().getGUILog()
project = Application.getInstance().getProject()
ef = project.getElementsFactory()
mem = ModelElementsManager.getInstance()
sysmlProf=StereotypesHelper.getProfile(project,"SysML")
sysmlSt=StereotypesHelper.getStereotypesByProfile(sysmlProf)
datapack=project.getModel()
noApply = {}

def validateLocation(modelPackage, validateOnly, ignorePack):
	sterPlace =[]
	custPlace =[]
	if validateOnly!=True: gl.log('[FIXES]: for Package, Stereotypes, and Customization Locations')
###Find profile package
	profilePackage = profilePackCheck(modelPackage)
	if not profilePackage: return ['No Profile Package']
Example #33
0
from gov.nasa.jpl.mgss.mbee.docgen.table import EditableTable
from gov.nasa.jpl.mgss.mbee.docgen.table import PropertyEnum
from gov.nasa.jpl.mgss.mbee.docgen.docbook import DBParagraph
from com.nomagic.uml2.ext.magicdraw.classes.mdkernel import *
from gov.nasa.jpl.mbee.lib import Utils
from com.nomagic.uml2.ext.jmi.helpers import StereotypesHelper
from com.nomagic.magicdraw.core import Application 

proj = Application.getInstance().getProject()
targets = scriptInput['DocGenTargets']

model = []                          #this is for the editable table body
headers = ['Document', 'Doc ID']    #this is for the editable table header
editable = [True, True]             #this is whether the table cells are editable
prop = [PropertyEnum.NAME, PropertyEnum.VALUE]       #this is what should be edited for each cell
stereotype = StereotypesHelper.getStereotype(proj, "Product", "Document Profile") #this is needed to get the slots

for t in targets:
    for doc in t.getOwnedElement():
        if StereotypesHelper.hasStereotype(doc, stereotype):
            #in this case, we want to edit the name and the JPL Document ID slot (stereotype tag) value
            #editing values can also apply to property default values - substitute the property element in
            model.append([doc, StereotypesHelper.getSlot(doc, stereotype, "JPL Document ID", False, False)])
    
# the None arguments can be replace with 2d lists if you want to specify 'editable' and 'prop' for each cell
table = EditableTable("Documents and Their ID", model, headers, None, None, None)
table.setEditableCol(editable)  #specify editability by column
table.setWhatToShowCol(prop)    #specify what property to edit by column
table.prepareTable()

# if you have a simple table that should render the same in docgen as the popup table,