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)
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()
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()