Exemplo n.º 1
0
    def set_imagepanel(self,
                       name=None,
                       cmap='gray',
                       scale='zscale',
                       contrast=0.1):
        """set up the Image Panel"""
        hmin = 150
        wmin = 400
        #set up the control panel
        self.imagpanel = QtGui.QWidget()

        #hmin=wmin*self.naxis2/self.naxis1
        #print self.naxis1, self.naxis2, wmin, hmin

        # Add FITS display widget with mouse interaction and overplotting
        self.imdisplay = ImageDisplay()
        #self.imdisplay.setMinimumWidth(wmin)

        # Set colormap
        self.imdisplay.setColormap(cmap)

        # Set scale mode for dynamic range
        imarr = self.struct[int(self.pid[self.id])].data
        self.imdisplay.scale = scale
        self.imdisplay.contrast = contrast
        self.imdisplay.aspect = 'auto'
        self.imdisplay.loadImage(imarr)
        #self.imdisplay.drawImage()
        hmin = self.imdisplay.width() * self.naxis2 / self.naxis1
        self.imdisplay.setMaximumHeight(hmin)
        self.imdisplay.setMinimumHeight(hmin)

        #add the rectangles
        self.add_mark(self.tx[self.id],
                      self.ty[self.id],
                      'target',
                      color='b',
                      lw=2)
        self.add_mark(self.cx[self.id],
                      self.cy[self.id],
                      'comparison',
                      color='g',
                      lw=2)
        self.imdisplay.redraw_canvas()
        self.imdisplay.axes.set_xticklabels([])
        self.imdisplay.axes.set_yticklabels([])

        self.imdisplay.connectMatplotlibMouseMotion()
        self.imdisplay.mpl_connect('button_press_event', self.onButtonPress)
        self.imdisplay.mpl_connect('key_press_event', self.onKeyPress)

        # Add navigation toolbars for each widget to enable zooming
        self.imagtoolbar = NavigationToolbar2QT(self.imdisplay, self)

        # Set up the layout
        imagLayout = QtGui.QVBoxLayout(self.imagpanel)
        #imagLayout.addWidget(self.imdisplay)
        imagLayout.addWidget(MplCanvas())
        imagLayout.addWidget(self.imagtoolbar)
Exemplo n.º 2
0
    def __init__(self,
                 imlist,
                 number,
                 config,
                 target_line_color='g',
                 comparison_line_color='g',
                 target_line_width=2,
                 comparison_line_width=2,
                 distance=5,
                 cmap='gray',
                 scale='zscale',
                 contrast=1.0):
        """Default constructor."""

        # Setup widget
        QtGui.QMainWindow.__init__(self)

        # Set main widget
        self.main = QtGui.QWidget(self)

        # Set window title
        self.setWindowTitle("Slotpreview")

        # Add FITS display widget with mouse interaction and overplotting
        self.imdisplay = ImageDisplay()
        self.imdisplay.setMinimumHeight(150)
        self.imdisplay.setMinimumWidth(400)

        # Set colormap
        self.imdisplay.setColormap(cmap)

        # Set scale mode for dynamic range
        self.imdisplay.scale = scale
        self.imdisplay.contrast = contrast

        # Add navigation toolbars for each widget to enable zooming
        self.toolbar = NavigationToolbar2QT(self.imdisplay, self)

        # Add configuration widget and connect it to the display widget
        self.conf = PhotometryConfigWidget(imdisplay=self.imdisplay,
                                           imlist=imlist,
                                           number=number,
                                           config=config)

        # Set default linewidth and color
        self.conf.setSearchDistance(distance)
        self.conf.setMarkerType('square')
        self.conf.setLineColor('target', target_line_color)
        self.conf.setLineColor('comparison', comparison_line_color)
        self.conf.setLineWidth('target', target_line_width)
        self.conf.setLineWidth('comparison', comparison_line_width)

        # Layout the widgets
        l = QtGui.QVBoxLayout(self.main)
        l.addWidget(self.imdisplay)
        l.addWidget(self.toolbar)
        l.addWidget(self.conf)

        # Set focus to main widget
        self.main.setFocus()

        # Set the main widget as the central widget
        self.setCentralWidget(self.main)

        # Destroy widget on close
        self.setAttribute(QtCore.Qt.WA_DeleteOnClose)

        # Close when config dialog is closed
        self.connect(self.conf, QtCore.SIGNAL('destroyed()'), self,
                     QtCore.SLOT('close()'))
Exemplo n.º 3
0
    def __init__(self,
                 imarr,
                 y1=None,
                 y2=None,
                 nrows=1,
                 nsteps=100,
                 hmin=150,
                 wmin=400,
                 name=None,
                 cmap='Gray',
                 scale='zscale',
                 contrast=0.1,
                 parent=None):
        super(imageWidget, self).__init__(parent)

        self.y1 = y1
        self.y2 = y2
        self.x1 = 0
        self.x2 = len(imarr[0])
        self.nrows = nrows
        self.nsteps = nsteps

        # Add FITS display widget with mouse interaction and overplotting
        self.imdisplay = ImageDisplay()
        self.imdisplay.setMinimumHeight(hmin)
        self.imdisplay.setMinimumWidth(wmin)

        # Set colormap
        self.imdisplay.setColormap(cmap)

        # Set scale mode for dynamic range
        self.imdisplay.scale = scale
        self.imdisplay.contrast = contrast
        self.imdisplay.aspect = 'auto'
        self.imdisplay.loadImage(imarr)
        self.imdisplay.drawImage()
        self.y1line, = self.imdisplay.axes.plot([self.x1, self.x2],
                                                [self.y1, self.y1],
                                                ls='-',
                                                color='#00FF00')
        self.y2line, = self.imdisplay.axes.plot([self.x1, self.x2],
                                                [self.y2, self.y2],
                                                ls='-',
                                                color='#00FF00')

        # Add navigation toolbars for each widget to enable zooming
        self.toolbar = NavigationToolbar2QTAgg(self.imdisplay, self)

        # set up the information panel
        self.infopanel = QtGui.QWidget()

        # add the name of the file
        self.NameLabel = QtGui.QLabel("Filename:")
        self.NameLabel.setFrameStyle(QtGui.QFrame.Panel | QtGui.QFrame.Raised)
        self.NameValueLabel = QtGui.QLabel("%s" % name)
        self.NameValueLabel.setFrameStyle(QtGui.QFrame.Panel
                                          | QtGui.QFrame.Sunken)

        # add the rows that are extracted
        self.y1Label = QtGui.QLabel("Y1:")
        self.y1Label.setFrameStyle(QtGui.QFrame.Panel | QtGui.QFrame.Raised)
        self.y1ValueEdit = QtGui.QLineEdit("%6i" % self.y1)
        self.y2Label = QtGui.QLabel("Y2:")
        self.y2Label.setFrameStyle(QtGui.QFrame.Panel | QtGui.QFrame.Raised)
        self.y2ValueEdit = QtGui.QLineEdit("%6i" % self.y2)
        self.updateButton = QtGui.QPushButton("Update")
        self.updateButton.clicked.connect(self.updatesection)

        # add the update for automatically updating it
        self.nrLabel = QtGui.QLabel("nrows:")
        self.nrLabel.setFrameStyle(QtGui.QFrame.Panel | QtGui.QFrame.Raised)
        self.nrValueEdit = QtGui.QLineEdit("%5i" % self.nrows)
        self.nsLabel = QtGui.QLabel("nsteps:")
        self.nsLabel.setFrameStyle(QtGui.QFrame.Panel | QtGui.QFrame.Raised)
        self.nsValueEdit = QtGui.QLineEdit("%6i" % self.nsteps)
        self.nextButton = QtGui.QPushButton("Next")
        self.nextButton.clicked.connect(self.nextsection)

        # set up the info panel layout
        infoLayout = QtGui.QGridLayout(self.infopanel)
        infoLayout.addWidget(self.NameLabel, 0, 0, 1, 1)
        infoLayout.addWidget(self.NameValueLabel, 0, 1, 1, 5)
        infoLayout.addWidget(self.y1Label, 1, 0, 1, 1)
        infoLayout.addWidget(self.y1ValueEdit, 1, 1, 1, 1)
        infoLayout.addWidget(self.y2Label, 1, 2, 1, 1)
        infoLayout.addWidget(self.y2ValueEdit, 1, 3, 1, 1)
        infoLayout.addWidget(self.updateButton, 1, 4, 1, 1)
        infoLayout.addWidget(self.nrLabel, 2, 0, 1, 1)
        infoLayout.addWidget(self.nrValueEdit, 2, 1, 1, 1)
        infoLayout.addWidget(self.nsLabel, 2, 2, 1, 1)
        infoLayout.addWidget(self.nsValueEdit, 2, 3, 1, 1)
        infoLayout.addWidget(self.nextButton, 2, 4, 1, 1)

        # Set up the layout
        mainLayout = QtGui.QVBoxLayout()
        mainLayout.addWidget(self.imdisplay)
        mainLayout.addWidget(self.toolbar)
        mainLayout.addWidget(self.infopanel)
        self.setLayout(mainLayout)