예제 #1
0
    def __init__(self, *args):
        BlissWidget.__init__(self, *args)

        actions = []

        self.__zoomList = QubZoomListAction(
            place="toolbar",
            zoomValList=[0.1, 0.25, 0.5, 1, 1.5, 2, 2.5, 3, 3.5, 4],
            show=1,
            group="zoom",
        )
        actions.append(self.__zoomList)

        self.__zoomFitOrFill = QubZoomAction(place="toolbar",
                                             keepROI=True,
                                             group="zoom")
        self.__zoomFitOrFill.setList(self.__zoomList)
        self.__zoomList.setActionZoomMode(self.__zoomFitOrFill)
        actions.append(self.__zoomFitOrFill)

        zoomAction = QubZoomRectangle(
            label="Zoom Crop",
            place="toolbar",
            show=1,
            group="zoom",
            activate_click_drag=True,
            drawingObjectLayer=2**31,
            unactiveActionWhenDub=True,
        )
        qt.QObject.connect(zoomAction, qt.PYSIGNAL("RectangleSelected"),
                           self.__rectangleZoomChanged)
        actions.append(zoomAction)

        ####### CHANGE FOREGROUND COLOR #######
        fcoloraction = QubForegroundColorAction(name="color", group="image")
        actions.append(fcoloraction)

        ####### MEASURE #######
        measureAction = QubOpenDialogAction(
            parent=self,
            name="measure",
            iconName="measure",
            label="Measure",
            group="Tools",
        )
        measureAction.setConnectCallBack(self._measure_dialog_new)
        actions.append(measureAction)

        self.__mainView = QubMosaicView(self, actions=actions)

        layout = qt.QHBoxLayout(self)
        layout.addWidget(self.__mainView)

        ####### SLOT #######
        self.defineSlot("getView", ())
예제 #2
0
    def __init__(self, *args):
        BlissWidget.__init__(self, *args)

        actions = []

        self.__zoomList = QubZoomListAction(
            place="toolbar",
            zoomValList=[0.1, 0.25, 0.5, 1, 1.5, 2, 2.5, 3, 3.5, 4],
            show=1,
            group="zoom",
        )
        actions.append(self.__zoomList)

        self.__zoomFitOrFill = QubZoomAction(
            place="toolbar", keepROI=True, group="zoom"
        )
        self.__zoomFitOrFill.setList(self.__zoomList)
        self.__zoomList.setActionZoomMode(self.__zoomFitOrFill)
        actions.append(self.__zoomFitOrFill)

        zoomAction = QubZoomRectangle(
            label="Zoom Crop",
            place="toolbar",
            show=1,
            group="zoom",
            activate_click_drag=True,
            drawingObjectLayer=2 ** 31,
            unactiveActionWhenDub=True,
        )
        qt.QObject.connect(
            zoomAction, qt.PYSIGNAL("RectangleSelected"), self.__rectangleZoomChanged
        )
        actions.append(zoomAction)

        ####### CHANGE FOREGROUND COLOR #######
        fcoloraction = QubForegroundColorAction(name="color", group="image")
        actions.append(fcoloraction)

        ####### MEASURE #######
        measureAction = QubOpenDialogAction(
            parent=self,
            name="measure",
            iconName="measure",
            label="Measure",
            group="Tools",
        )
        measureAction.setConnectCallBack(self._measure_dialog_new)
        actions.append(measureAction)

        self.__mainView = QubMosaicView(self, actions=actions)

        layout = qt.QHBoxLayout(self)
        layout.addWidget(self.__mainView)

        ####### SLOT #######
        self.defineSlot("getView", ())
예제 #3
0
class CameraMosaicBrick(BlissWidget) :
    def __init__(self,*args) :
        BlissWidget.__init__(self,*args)

        actions = []

        self.__zoomList = QubZoomListAction(place = "toolbar",
                                   zoomValList = [0.1,.25,.5,1,1.5,2,2.5,3,3.5,4],
                                   show = 1,group = "zoom")
        actions.append(self.__zoomList)

        self.__zoomFitOrFill = QubZoomAction(place = "toolbar",keepROI = True,group = "zoom")
        self.__zoomFitOrFill.setList(self.__zoomList)
        self.__zoomList.setActionZoomMode(self.__zoomFitOrFill)
        actions.append(self.__zoomFitOrFill)
        
        zoomAction = QubZoomRectangle(label='Zoom Crop',place="toolbar", show=1, group="zoom",
                                      activate_click_drag = True,drawingObjectLayer = 2 ** 31,
                                      unactiveActionWhenDub = True)
        qt.QObject.connect(zoomAction,qt.PYSIGNAL('RectangleSelected'),self.__rectangleZoomChanged)
        actions.append(zoomAction)

               ####### CHANGE FOREGROUND COLOR #######
        fcoloraction = QubForegroundColorAction(name="color", group="image")
        actions.append(fcoloraction)

                        ####### MEASURE #######
        measureAction = QubOpenDialogAction(parent=self,name='measure',iconName='measure',label='Measure',group="Tools")
        measureAction.setConnectCallBack(self._measure_dialog_new)
        actions.append(measureAction)
        
        self.__mainView = QubMosaicView(self,actions = actions)

        layout = qt.QHBoxLayout(self)
        layout.addWidget(self.__mainView)

                         ####### SLOT #######
        self.defineSlot('getView',())
                    
    def getView(self,key) :
        try:
            key['drawing'] = self.__mainView.view()
            key['view'] = self.__mainView
        except:
            pass

    def __rectangleZoomChanged(self,drawingMgr) :
        self.__zoomFitOrFill.setState(False)
        rect = drawingMgr.rect()
        canvas = self.__mainView.view()

        matrix = canvas.matrix()

        vp = canvas.viewport()
        viewWidth,viewHeight = vp.width(),vp.height()
        zoomX = float(viewWidth) / rect.width()
        zoomY = float(viewHeight) / rect.height()
        zoom = max(zoomX,zoomY)

        newMatrix = qt.QWMatrix(zoom,0,0,zoom,matrix.dx(),matrix.dy())
        rect = newMatrix.map(rect)
        zoom = min(zoom,20)
        canvas.setZoom(zoom,zoom)
        canvas.setContentsPos(rect.x(),rect.y())
        self.__zoomList.writeStrValue("%d%%" % (zoom * 100))

    def _measure_dialog_new(self,openDialogAction,aQubImage) :
        try :
            self.__measureDialog = QubMeasureListDialog(self,
                                                        canvas=aQubImage.canvas(),
                                                        matrix=aQubImage.matrix(),
                                                        eventMgr=aQubImage,
                                                        drawingObjectLayer = 2 ** 31)
            self.__measureDialog.connect(aQubImage, qt.PYSIGNAL("ForegroundColorChanged"),
                                         self.__measureDialog.setDefaultColor)
            openDialogAction.setDialog(self.__measureDialog)
        except:
            import traceback
            traceback.print_exc()
예제 #4
0
class CameraMosaicBrick(BlissWidget):
    def __init__(self, *args):
        BlissWidget.__init__(self, *args)

        actions = []

        self.__zoomList = QubZoomListAction(
            place="toolbar", zoomValList=[0.1, 0.25, 0.5, 1, 1.5, 2, 2.5, 3, 3.5, 4], show=1, group="zoom"
        )
        actions.append(self.__zoomList)

        self.__zoomFitOrFill = QubZoomAction(place="toolbar", keepROI=True, group="zoom")
        self.__zoomFitOrFill.setList(self.__zoomList)
        self.__zoomList.setActionZoomMode(self.__zoomFitOrFill)
        actions.append(self.__zoomFitOrFill)

        zoomAction = QubZoomRectangle(
            label="Zoom Crop",
            place="toolbar",
            show=1,
            group="zoom",
            activate_click_drag=True,
            drawingObjectLayer=2 ** 31,
            unactiveActionWhenDub=True,
        )
        qt.QObject.connect(zoomAction, qt.PYSIGNAL("RectangleSelected"), self.__rectangleZoomChanged)
        actions.append(zoomAction)

        ####### CHANGE FOREGROUND COLOR #######
        fcoloraction = QubForegroundColorAction(name="color", group="image")
        actions.append(fcoloraction)

        ####### MEASURE #######
        measureAction = QubOpenDialogAction(
            parent=self, name="measure", iconName="measure", label="Measure", group="Tools"
        )
        measureAction.setConnectCallBack(self._measure_dialog_new)
        actions.append(measureAction)

        self.__mainView = QubMosaicView(self, actions=actions)

        layout = qt.QHBoxLayout(self)
        layout.addWidget(self.__mainView)

        ####### SLOT #######
        self.defineSlot("getView", ())

    def getView(self, key):
        try:
            key["drawing"] = self.__mainView.view()
            key["view"] = self.__mainView
        except:
            pass

    def __rectangleZoomChanged(self, drawingMgr):
        self.__zoomFitOrFill.setState(False)
        rect = drawingMgr.rect()
        canvas = self.__mainView.view()

        matrix = canvas.matrix()

        vp = canvas.viewport()
        viewWidth, viewHeight = vp.width(), vp.height()
        zoomX = float(viewWidth) / rect.width()
        zoomY = float(viewHeight) / rect.height()
        zoom = max(zoomX, zoomY)

        newMatrix = qt.QWMatrix(zoom, 0, 0, zoom, matrix.dx(), matrix.dy())
        rect = newMatrix.map(rect)
        zoom = min(zoom, 20)
        canvas.setZoom(zoom, zoom)
        canvas.setContentsPos(rect.x(), rect.y())
        self.__zoomList.writeStrValue("%d%%" % (zoom * 100))

    def _measure_dialog_new(self, openDialogAction, aQubImage):
        try:
            self.__measureDialog = QubMeasureListDialog(
                self,
                canvas=aQubImage.canvas(),
                matrix=aQubImage.matrix(),
                eventMgr=aQubImage,
                drawingObjectLayer=2 ** 31,
            )
            self.__measureDialog.connect(
                aQubImage, qt.PYSIGNAL("ForegroundColorChanged"), self.__measureDialog.setDefaultColor
            )
            openDialogAction.setDialog(self.__measureDialog)
        except:
            import traceback

            traceback.print_exc()