예제 #1
0
    def add_taskbar(self, bnch):
        lblname = bnch.lblname
        lbl = QtGui.QLabel(lblname)
        lbl.setAlignment(QtCore.Qt.AlignHCenter)
        lbl.setToolTip("Right click for menu")
        lbl.setSizePolicy(QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Minimum)
        lbl.setFrameStyle(QtGui.QFrame.Box | QtGui.QFrame.Raised)
        self.hbox.addWidget(lbl, stretch=0, alignment=QtCore.Qt.AlignLeft)

        lbl.setContextMenuPolicy(QtCore.Qt.CustomContextMenu)

        lname = bnch.pInfo.name.lower()
        menu = QtGui.QMenu()
        item = QtGui.QAction("Focus", menu)
        item.triggered.connect(lambda: self.set_focus(lname))
        menu.addAction(item)
        item = QtGui.QAction("Unfocus", menu)
        item.triggered.connect(lambda: self.clear_focus(lname))
        menu.addAction(item)
        item = QtGui.QAction("Stop", menu)
        item.triggered.connect(lambda: self.deactivate(lname))
        menu.addAction(item)

        def on_context_menu(point):
            menu.exec_(lbl.mapToGlobal(point))

        lbl.customContextMenuRequested.connect(on_context_menu)
        # better than making a whole new subclass just to get a label to
        # respond to a mouse click
        lbl.mousePressEvent = lambda event: self.set_focus_cb(event, lname)

        bnch.setvals(widget=lbl, label=lbl, menu=menu)
예제 #2
0
    def build_toplevel(self, layout):
        # Create root window and add delete/destroy callbacks
        root = QtHelp.TopLevel()
        root.setApp(self)
        root.resize(self.default_width, self.default_height)
        root.setWindowTitle("Ginga")
        #root.set_border_width(2)

        self.w.root = root
        self.w.fscreen = None

        self.ds = QtHelp.Desktop()

        # create main frame
        vbox = QtGui.QVBoxLayout()
        vbox.setContentsMargins(2, 2, 2, 2)
        vbox.setSpacing(2)
        root.setLayout(vbox)
        self.w.mframe = vbox

        self.add_menus()

        self.w.mvbox = self.ds.make_desktop(layout, widgetDict=self.w)
        #self.w.mvbox.show_all()
        self.w.mframe.addWidget(self.w.mvbox, stretch=1)

        # Create main (center) FITS image pane
        self.w.vbox = self.w['main'].layout()
        self.w.vbox.setSpacing(0)
        # self.w.mnb = self.ds.make_ws(name='main', group=1, wstype='mdi').nb
        # self.w.mnb.subWindowActivated.connect(self.page_switch_mdi_cb)
        self.w.mnb = self.ds.make_ws(name='main', group=1).nb
        self.w.mnb.currentChanged.connect(self.page_switch_cb)
        self.w.vbox.addWidget(self.w.mnb, stretch=1)

        # bottom buttons
        plw = QtGui.QWidget()
        hbox = QtGui.QHBoxLayout()
        hbox.setContentsMargins(0, 0, 0, 0)
        hbox.setSpacing(2)
        plw.setLayout(hbox)

        cbox1 = QtHelp.ComboBox()
        self.w.channel = cbox1
        cbox1.setToolTip("Select a channel")
        cbox1.activated.connect(self.channel_select_cb)
        hbox.addWidget(cbox1, stretch=0)

        opmenu = QtGui.QMenu()
        self.w.operation = opmenu
        btn = QtGui.QPushButton("Operation")
        btn.clicked.connect(self.invoke_op_cb)
        btn.setToolTip("Invoke operation")
        self.w.opbtn = btn
        hbox.addWidget(btn, stretch=0)

        w = QtGui.QWidget()
        self.w.optray = QtGui.QHBoxLayout()
        self.w.optray.setContentsMargins(0, 0, 0, 0)
        self.w.optray.setSpacing(2)
        w.setLayout(self.w.optray)
        hbox.addWidget(w, stretch=1, alignment=QtCore.Qt.AlignLeft)

        self.w.vbox.addWidget(plw, stretch=0)

        # Add colormap bar
        cbar = self.build_colorbar()
        cbar.show()
        self.w.vbox.addWidget(cbar, stretch=0)

        self.add_dialogs()
        self.add_statusbar()

        self.w.root.show()
예제 #3
0
    def build_toplevel(self):

        self.font = self.getFont('fixedFont', 12)
        self.font11 = self.getFont('fixedFont', 11)
        self.font14 = self.getFont('fixedFont', 14)
        self.font18 = self.getFont('fixedFont', 18)

        self.w.tooltips = None
        QtGui.QToolTip.setFont(self.font11)

        self.ds = QtHelp.Desktop()
        self.ds.make_desktop(self.layout, widgetDict=self.w)
        # TEMP: FIX ME!
        self.gpmon.ds = self.ds

        for root in self.ds.toplevels:
            # add delete/destroy callbacks
            ## root.connect(root, QtCore.SIGNAL('closeEvent()'),
            ##              self.quit)
            #root.setApp(self)
            root.setWindowTitle("Ginga")
        self.ds.add_callback('all-closed', self.quit)

        self.w.root = root
        self.w.fscreen = None

        menuholder = self.w['menu']
        self.w.menubar = self.add_menus(menuholder)

        # Create main (center) FITS image pane
        self.w.vbox = self.w['main'].layout()
        self.w.vbox.setSpacing(0)
        #self.w.mnb = self.ds.make_ws(name='main', group=1, wstype='grid').nb
        ## self.w.mnb.subWindowActivated.connect(self.page_switch_mdi_cb)
        #self.w.mnb = self.ds.make_ws(name='main', group=1).nb
        self.w.mnb = self.w['channels']
        self.w.mnb.currentChanged.connect(self.page_switch_cb)

        # readout
        if self.settings.get('shareReadout', True):
            self.readout = self.build_readout()
            self.add_callback('field-info', self.readout_cb, self.readout,
                              None)
            rw = self.readout.get_widget()
            self.w.vbox.addWidget(rw, stretch=0)

        # bottom buttons
        plw = QtGui.QWidget()
        hbox = QtGui.QHBoxLayout()
        hbox.setContentsMargins(0, 0, 0, 0)
        hbox.setSpacing(2)
        plw.setLayout(hbox)

        cbox1 = QtHelp.ComboBox()
        self.w.channel = cbox1
        cbox1.setToolTip("Select a channel")
        cbox1.activated.connect(self.channel_select_cb)
        hbox.addWidget(cbox1, stretch=0)

        opmenu = QtGui.QMenu()
        self.w.operation = opmenu
        btn = QtGui.QPushButton("Operation")
        btn.clicked.connect(self.invoke_op_cb)
        btn.setToolTip("Invoke operation")
        self.w.opbtn = btn
        hbox.addWidget(btn, stretch=0)

        w = QtGui.QWidget()
        self.w.optray = QtGui.QHBoxLayout()
        self.w.optray.setContentsMargins(0, 0, 0, 0)
        self.w.optray.setSpacing(2)
        w.setLayout(self.w.optray)
        hbox.addWidget(w, stretch=1, alignment=QtCore.Qt.AlignLeft)

        self.w.vbox.addWidget(plw, stretch=0)

        # Add colormap bar
        cbar = self.build_colorbar()
        self.w.vbox.addWidget(cbar, stretch=0)

        self.add_dialogs()
        statusholder = self.w['status']
        self.add_statusbar(statusholder)

        self.w.root.show()