コード例 #1
0
ファイル: ipg.py プロジェクト: rupak0577/ginga
    def new_viewer(self, name=None, settings=None):
        if not name:
            self.count += 1
            name = 'v%d' % self.count

        if settings is None:
            settings = self.preferences.createCategory('ipg_viewer')
            settings.load(onError='silent')
            settings.addDefaults(autocut_method='zscale')

        # instantiate bindings loaded with users preferences
        bclass = IPyNbImageView.bindingsClass
        bindprefs = self.preferences.createCategory('bindings')
        bd = bclass(self.logger, settings=bindprefs)

        # create a ginga basic object for user interaction
        fi = IPyNbImageView(self.logger,
                            settings=settings,
                            render='widget',
                            bindings=bd)
        fi.enable_draw(False)
        fi.set_callback('drag-drop', self.drop_file, name)
        fi.set_bg(0.2, 0.2, 0.2)
        fi.ui_setActive(True)

        # expose the fits viewer to the shared namespace
        self.kapp.namespace[name] = fi

        # enable various interactive operations
        bd = fi.get_bindings()
        bd.enable_all(True)

        # get the ginga Qt widget
        w = fi.get_widget()
        w.resize(512, 512)

        # pack it into a qt window with a couple other buttons
        vw = QtGui.QWidget()
        vbox = QtGui.QVBoxLayout()
        vbox.setContentsMargins(QtCore.QMargins(2, 2, 2, 2))
        vbox.setSpacing(1)
        vbox.addWidget(w, stretch=1)

        # for simple WCS readout
        self.readout = Readout(-1, 16)
        readout = self.readout.get_widget()
        fi.set_callback('none-move', self.motion, self.readout)
        vbox.addWidget(readout, stretch=0, alignment=QtCore.Qt.AlignCenter)

        hbox = QtGui.QHBoxLayout()
        hbox.setContentsMargins(QtCore.QMargins(4, 2, 4, 2))

        wopen = QtGui.QPushButton("Open File")

        def _open_file(name):
            return lambda: self.open_file(name)

        wopen.clicked.connect(_open_file(name))
        wquit = QtGui.QPushButton("Close")

        def _close(name):
            return lambda: self.close_viewer(name)

        wquit.clicked.connect(_close(name))

        hbox.addStretch(1)
        for w in (wopen, wquit):
            hbox.addWidget(w, stretch=0)

        hw = QtGui.QWidget()
        hw.setLayout(hbox)
        vbox.addWidget(hw, stretch=0)

        vw.setLayout(vbox)
        vw.resize(524, 540)
        vw.setWindowTitle("Ginga: %s" % name)
        self.viewers[name] = vw
        vw.showNormal()
        vw.raise_()
        vw.activateWindow()