Ejemplo n.º 1
0
    def setup(self):

        #
        # test list
        #

        self.testList = ctk.ctkCollapsibleButton(self.parent)
        self.testList.setLayout(qt.QVBoxLayout())
        self.testList.setText("Self Tests")
        self.layout.addWidget(self.testList)
        self.testList.collapsed = False

        self.runAll = qt.QPushButton("Run All")
        self.testList.layout().addWidget(self.runAll)
        self.runAll.connect('clicked()', self.onRunAll)

        self.testButtons = {}
        self.testMapper = qt.QSignalMapper()
        self.testMapper.connect('mapped(const QString&)', self.onRun)
        testKeys = slicer.selfTests.keys()
        testKeys.sort()
        for test in testKeys:
            self.testButtons[test] = qt.QPushButton(test)
            self.testButtons[test].setToolTip(slicer.selfTests[test].__doc__)
            self.testList.layout().addWidget(self.testButtons[test])
            self.testMapper.setMapping(self.testButtons[test], test)
            self.testButtons[test].connect('clicked()', self.testMapper,
                                           'map()')

        # Add spacer to layout
        self.layout.addStretch(1)
Ejemplo n.º 2
0
    def __init__(self, parent=None, optionsFrame=None):
        self.effects = []
        self.effectButtons = {}
        self.effectMapper = qt.QSignalMapper()
        self.effectMapper.connect('mapped(const QString&)', self.selectEffect)
        self.editUtil = EditUtil.EditUtil()
        self.undoRedo = EditUtil.UndoRedo()
        self.undoRedo.stateChangedCallback = self.updateUndoRedoButtons

        # check for extensions - if none have been registered, just create the empty dictionary
        try:
            slicer.modules.editorExtensions
        except AttributeError:
            slicer.modules.editorExtensions = {}

        # register the builtin extensions
        self.editorBuiltins = {}
        self.editorBuiltins["PaintEffect"] = EditorLib.PaintEffect
        self.editorBuiltins["DrawEffect"] = EditorLib.DrawEffect
        self.editorBuiltins["ThresholdEffect"] = EditorLib.ThresholdEffect
        self.editorBuiltins["RectangleEffect"] = EditorLib.RectangleEffect
        self.editorBuiltins[
            "LevelTracingEffect"] = EditorLib.LevelTracingEffect
        self.editorBuiltins["MakeModelEffect"] = EditorLib.MakeModelEffect
        self.editorBuiltins["ErodeEffect"] = EditorLib.ErodeEffect
        self.editorBuiltins["DilateEffect"] = EditorLib.DilateEffect
        self.editorBuiltins["ChangeLabelEffect"] = EditorLib.ChangeLabelEffect
        self.editorBuiltins[
            "RemoveIslandsEffect"] = EditorLib.RemoveIslandsEffect
        self.editorBuiltins[
            "IdentifyIslandsEffect"] = EditorLib.IdentifyIslandsEffect
        self.editorBuiltins["SaveIslandEffect"] = EditorLib.SaveIslandEffect
        self.editorBuiltins[
            "ChangeIslandEffect"] = EditorLib.ChangeIslandEffect
        self.editorBuiltins["GrowCutEffect"] = EditorLib.GrowCutEffect

        if not parent:
            self.parent = qt.QFrame()
            self.parent.setLayout(qt.QVBoxLayout())
            self.create()
            self.parent.show()
        else:
            self.parent = parent
            self.create()

        # frame that holds widgets specific for each effect
        if not optionsFrame:
            self.optionsFrame = qt.QFrame(self.parent)
        else:
            self.optionsFrame = optionsFrame

        # state variables for selected effect in the box
        # - currentOption is an instance of an option GUI
        # - currentTools is a list of EffectTool instances
        self.currentOption = None
        self.currentTools = []
Ejemplo n.º 3
0
 def connectReviewButtons(self):
     """ Map the region buttons clicked() signals to the function """
     self.buttonMapper = qt.QSignalMapper()
     self.buttonMapper.connect('mapped(const QString&)',
                               self.logic.selectRegion)
     self.buttonMapper.connect('mapped(const QString&)', self.enableRadios)
     for image in self.images + self.regions:
         pushButton = self.imageQAWidget.findChild('QPushButton', image)
         self.buttonMapper.setMapping(pushButton, image)
         pushButton.connect('clicked()', self.buttonMapper, 'map()')
Ejemplo n.º 4
0
    def __init__(self,
                 parent=0,
                 optionsFrame=None,
                 embedded=False,
                 suppliedEffects=[]):
        self.effects = []
        self.effectButtons = {}
        self.effectMapper = qt.QSignalMapper()
        self.effectMapper.connect('mapped(const QString&)', self.selectEffect)
        self.editUtil = EditUtil.EditUtil()

        # check for extensions - if none have been registered, just create the empty dictionary
        try:
            slicer.modules.editorExtensions
        except AttributeError:
            slicer.modules.editorExtensions = {}

        # embedded boolean specifies whether or not this edit box is to be embedded
        # into another moduleWidget
        # - if it is, all effect buttons will be displayed in a single row
        self.embedded = embedded

        # save the list of supplied effects that the caller wants to use
        # (should be a subset of EditBox.availableMouseTools + EditBox.availableOperations)
        self.suppliedEffects = suppliedEffects

        if parent == 0:
            self.parent = qt.QFrame()
            self.parent.setLayout(qt.QVBoxLayout())
            self.create()
            self.parent.show()
        else:
            self.parent = parent
            self.create()

        # frame that holds widgets specific for each effect
        if not optionsFrame:
            self.optionsFrame = qt.QFrame(self.parent)
        else:
            self.optionsFrame = optionsFrame

        # state variables for selected effect in the box
        # - currentOption is an instance of an option GUI
        # - currentTools is a list of EffectTool instances
        self.currentOption = None
        self.currentTools = []
Ejemplo n.º 5
0
    def __init__(self, parent=None, optionsFrame=None):
        self.effects = []
        self.effectButtons = {}
        self.effectCursors = {}
        self.effectMapper = qt.QSignalMapper()
        self.effectMapper.connect('mapped(const QString&)', self.selectEffect)
        self.editUtil = EditUtil.EditUtil()
        self.undoRedo = EditUtil.UndoRedo()
        self.undoRedo.stateChangedCallback = self.updateUndoRedoButtons
        self.toggleShortcut = None

        # check for extensions - if none have been registered, just create the empty dictionary
        try:
            slicer.modules.editorExtensions
        except AttributeError:
            slicer.modules.editorExtensions = {}

        # register the builtin extensions
        self.editorBuiltins = {}
        self.editorBuiltins["PaintEffect"] = EditorLib.PaintEffect
        self.editorBuiltins["DrawEffect"] = EditorLib.DrawEffect
        self.editorBuiltins["ThresholdEffect"] = EditorLib.ThresholdEffect
        self.editorBuiltins["RectangleEffect"] = EditorLib.RectangleEffect
        self.editorBuiltins[
            "LevelTracingEffect"] = EditorLib.LevelTracingEffect
        self.editorBuiltins["MakeModelEffect"] = EditorLib.MakeModelEffect
        self.editorBuiltins["ErodeEffect"] = EditorLib.ErodeEffect
        self.editorBuiltins["DilateEffect"] = EditorLib.DilateEffect
        self.editorBuiltins["ChangeLabelEffect"] = EditorLib.ChangeLabelEffect
        self.editorBuiltins[
            "RemoveIslandsEffect"] = EditorLib.RemoveIslandsEffect
        self.editorBuiltins[
            "IdentifyIslandsEffect"] = EditorLib.IdentifyIslandsEffect
        self.editorBuiltins["SaveIslandEffect"] = EditorLib.SaveIslandEffect
        self.editorBuiltins[
            "ChangeIslandEffect"] = EditorLib.ChangeIslandEffect
        self.editorBuiltins["GrowCutEffect"] = EditorLib.GrowCutEffect
        self.editorBuiltins[
            "WatershedFromMarkerEffect"] = EditorLib.WatershedFromMarkerEffect
        self.editorBuiltins[
            "FastMarchingEffect"] = EditorLib.FastMarchingEffect
        self.editorBuiltins["WandEffect"] = EditorLib.WandEffect

        if not parent:
            self.parent = qt.QFrame()
            self.parent.setLayout(qt.QVBoxLayout())
            self.create()
            self.parent.show()
        else:
            self.parent = parent
            self.create()

        # frame that holds widgets specific for each effect
        if not optionsFrame:
            self.optionsFrame = qt.QFrame(self.parent)
            self.optionsFrame.objectName = 'OptionsFrame'
        else:
            self.optionsFrame = optionsFrame

        # state variables for selected effect in the box
        # - currentOption is an instance of an option GUI
        # - currentTools is a list of EffectTool instances
        self.currentOption = None
        self.currentTools = []

        # listen for changes in the Interaction Mode
        appLogic = slicer.app.applicationLogic()
        interactionNode = appLogic.GetInteractionNode()
        self.interactionNodeTag = interactionNode.AddObserver(
            interactionNode.InteractionModeChangedEvent,
            self.onInteractionModeChanged)