コード例 #1
0
 def loadStack(self):
     if self._stackImageData is not None:
         #clear with a small stack
         stack = DataObject.DataObject()
         stack.data = numpy.zeros((100,100,100), numpy.float32)
         self.setStack(stack)
     if self.stackSelector  is None:
         self.stackSelector = StackSelector.StackSelector(self)
     stack = self.stackSelector.getStack()
     if type(stack) == type([]):
         #aifira like, two stacks
         self.setStack(stack[0])
         self._slave = None
         slave = QStackWidget(master=False, rgbwidget=self.rgbWidget)
         slave.setStack(stack[1])
         self.setSlave(slave)
     else:
         self.setStack(stack)
コード例 #2
0
    def loadSlaveStack(self):
        if self._slave is not None:
            actionList = ['Load Slave', 'Show Slave', 'Delete Slave']
            menu = qt.QMenu(self)
            for action in actionList:
                text = QString(action)
                menu.addAction(text)
            a = menu.exec_(qt.QCursor.pos())
            if a is None:
                return None
            if qt.safe_str(a.text()).startswith("Load"):
                self._slave = None
            elif qt.safe_str(a.text()).startswith("Show"):
                self._slave.show()
                self._slave.raise_()
                return
            else:
                self._slave = None
                return
        if self.stackSelector  is None:
            self.stackSelector = StackSelector.StackSelector(self)

        try:
            stack = self.stackSelector.getStack()
        except:
            txt = "%s" % sys.exc_info()[1]
            if txt.startswith("Incomplete selection"):
                return
            msg = qt.QMessageBox(self)
            msg.setWindowTitle("Error loading slave stack")
            msg.setIcon(qt.QMessageBox.Critical)
            msg.setText("%s: %s" % (sys.exc_info()[0], sys.exc_info()[1]))
            msg.exec_()
            return
        if stack is None:
            return
        if type(stack) == type([]):
            stack = stack[0]

        slave = QStackWidget(rgbwidget=self.rgbWidget,
                                  master=False)
        slave.setStack(stack)
        self.setSlave(slave)
コード例 #3
0
ファイル: QStackWidget.py プロジェクト: Aidan-zhang/pymca
    def loadSlaveStack(self):
        if self._slave is not None:
            actionList = [
                'Load Slave', 'Show Slave', 'Merge Slave', 'Delete Slave'
            ]
            menu = qt.QMenu(self)
            for action in actionList:
                text = QString(action)
                menu.addAction(text)
            a = menu.exec_(qt.QCursor.pos())
            if a is None:
                return None
            if qt.safe_str(a.text()).startswith("Load"):
                self._closeSlave()
            elif qt.safe_str(a.text()).startswith("Show"):
                self._slave.show()
                self._slave.raise_()
                return
            elif qt.safe_str(a.text()).startswith("Merge"):
                masterStackDataObject = self.getStackDataObject()
                try:
                    # Use views to ensure no casting is done in case of different dtype to save memory.
                    # This is risky when the original stack is unsigned integers (overflow).
                    masterStackDataObject.data[:] = masterStackDataObject.data[:] + self._slave.getStackData(
                    )
                except:
                    msg = qt.QMessageBox(self)
                    msg.setIcon(qt.QMessageBox.Critical)
                    msg.setWindowTitle("Stack Summing Error")
                    msg.setText(
                        "An error has occurred while summing the master and slave stacks"
                    )
                    msg.setInformativeText(qt.safe_str(sys.exc_info()[1]))
                    msg.setDetailedText(traceback.format_exc())
                    msg.exec_()
                self._closeSlave()
                self.setStack(masterStackDataObject)
                return
            else:
                self._closeSlave()
                return
        if self.stackSelector is None:
            self.stackSelector = StackSelector.StackSelector(self)

        try:
            stack = self.stackSelector.getStack()
        except:
            txt = "%s" % sys.exc_info()[1]
            if txt.startswith("Incomplete selection"):
                return
            msg = qt.QMessageBox(self)
            msg.setWindowTitle("Error loading slave stack")
            msg.setIcon(qt.QMessageBox.Critical)
            msg.setText("%s: %s" % (sys.exc_info()[0], sys.exc_info()[1]))
            msg.exec_()
            return
        if stack is None:
            return
        if type(stack) == type([]):
            stack = stack[0]

        slave = QStackWidget(rgbwidget=self.rgbWidget, master=False)
        slave.setStack(stack)
        self.setSlave(slave)
コード例 #4
0
ファイル: QStackWidget.py プロジェクト: Aidan-zhang/pymca
             "A file pattern needs at least a set of begin and end indices")
 app = qt.QApplication([])
 if sys.platform not in ["win32", "darwin"]:
     # some themes of Ubuntu 16.04 give black tool tips on black background
     app.setStyleSheet(
         "QToolTip { color: #000000; background-color: #fff0cd; border: 1px solid black; }"
     )
 if backend is not None:
     # set the default backend
     try:
         from PyMca5.PyMcaGraph.Plot import Plot
         Plot.defaultBackend = backend
     except:
         print("WARNING: Cannot set backend to %s" % backend)
 widget = QStackWidget()
 w = StackSelector.StackSelector(widget)
 if filepattern is not None:
     #ignore the args even if present
     stack = w.getStackFromPattern(filepattern,
                                   begin,
                                   end,
                                   increment=increment,
                                   imagestack=imagestack)
 else:
     stack = w.getStack(args, imagestack=imagestack)
 if (type(stack) == type([])) or (isinstance(stack, list)):
     #aifira like, two stacks
     widget.setStack(stack[0])
     if len(stack) > 1:
         if stack[1] is not None:
             slave = QStackWidget(master=False, rgbwidget=widget.rgbWidget)