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 __init__(self, logger): super(FitsViewer, self).__init__() self.logger = logger menubar = self.menuBar() # create a File pulldown menu, and add it to the menu bar filemenu = menubar.addMenu("File") item = QtGui.QAction("Open File", menubar) item.triggered.connect(self.open_file) filemenu.addAction(item) sep = QtGui.QAction(menubar) sep.setSeparator(True) filemenu.addAction(sep) item = QtGui.QAction("Quit", menubar) item.triggered.connect(self.close) filemenu.addAction(item) # Add matplotlib color maps to our built in ones cmap.add_matplotlib_cmaps() self.cmaps = cmap.get_names() self.imaps = imap.get_names() wd, ht = 500, 500 # Create a Ginga widget fi = ImageViewCanvas(logger, render='widget') fi.enable_autocuts('on') fi.set_autocut_params('zscale') fi.enable_autozoom('on') fi.enable_draw(False) fi.set_callback('drag-drop', self.drop_file_cb) fi.set_callback('cursor-changed', self.cursor_cb) fi.set_bg(0.2, 0.2, 0.2) fi.ui_set_active(True) self.fitsimage = fi fi.show_color_bar(True) # enable various key and mouse controlled actions bd = fi.get_bindings() bd.enable_all(True) self.cp_tag = 'compass' # pack widget into layout gingaw = fi.get_widget() gingaw.resize(wd, ht) vbox1 = QtGui.QWidget() layout = QtGui.QVBoxLayout() layout.addWidget(gingaw, stretch=1) self.cm = cmap.get_cmap('gray') self.im = imap.get_imap('ramp') # color map selection widget wcmap = QtGui.QComboBox() for name in self.cmaps: wcmap.addItem(name) index = self.cmaps.index('gray') wcmap.setCurrentIndex(index) wcmap.activated.connect(self.set_cmap_cb) self.wcmap = wcmap # intensity map selection widget wimap = QtGui.QComboBox() for name in self.imaps: wimap.addItem(name) index = self.imaps.index('ramp') wimap.setCurrentIndex(index) wimap.activated.connect(self.set_cmap_cb) self.wimap = wimap #wopen = QtGui.QPushButton("Open File") #wopen.clicked.connect(self.open_file) # add buttons to layout hbox = QtGui.QHBoxLayout() hbox.setContentsMargins(QtCore.QMargins(4, 2, 4, 2)) hbox.addStretch(1) for w in (wcmap, wimap): hbox.addWidget(w, stretch=0) hw = QtGui.QWidget() hw.setLayout(hbox) layout.addWidget(hw, stretch=0) vbox1.setLayout(layout) # Create a matplotlib Figure #self.fig = matplotlib.figure.Figure(figsize=(wd, ht)) self.fig = matplotlib.figure.Figure() self.canvas = FigureCanvas(self.fig) vbox2 = QtGui.QWidget() layout = QtGui.QVBoxLayout() layout.addWidget(self.canvas, stretch=1) # Add matplotlib buttons hbox = QtGui.QHBoxLayout() hbox.setContentsMargins(QtCore.QMargins(4, 2, 4, 2)) wgetimg = QtGui.QPushButton("Get Data") wgetimg.clicked.connect(self.get_image) wgetrgb = QtGui.QPushButton("Get RGB") wgetrgb.clicked.connect(self.get_rgb_image) #wquit = QtGui.QPushButton("Quit") #wquit.clicked.connect(self.close) hbox.addStretch(1) for w in (wgetimg, wgetrgb): hbox.addWidget(w, stretch=0) hw = QtGui.QWidget() hw.setLayout(hbox) layout.addWidget(hw, stretch=0) vbox2.setLayout(layout) vbox = QtGui.QVBoxLayout() vbox.setContentsMargins(QtCore.QMargins(2, 2, 2, 2)) vbox.setSpacing(1) w = QtGui.QWidget() layout = QtGui.QHBoxLayout() layout.addWidget(vbox1, stretch=1.0) layout.addWidget(vbox2, stretch=1.0) w.setLayout(layout) vbox.addWidget(w, stretch=1) self.readout = QtGui.QLabel("") vbox.addWidget(self.readout, stretch=0, alignment=QtCore.Qt.AlignCenter) vw = QtGui.QWidget() vw.setLayout(vbox) self.setCentralWidget(vw)
def add_operation(self, title): opmenu = self.w.operation item = QtGui.QAction(title, opmenu) item.triggered.connect(lambda: self.start_operation_cb(title)) opmenu.addAction(item) self.operations.append(title)
def add_menus(self): menubar = QtGui.QMenuBar() self.w.mframe.addWidget(menubar, stretch=0) # create a File pulldown menu, and add it to the menu bar filemenu = menubar.addMenu("File") item = QtGui.QAction("Load Image", menubar) item.triggered.connect(self.gui_load_file) filemenu.addAction(item) item = QtGui.QAction("Save image as PNG", menubar) item.triggered.connect( lambda: self.save_file('/tmp/fitsimage.png', 'png')) filemenu.addAction(item) sep = QtGui.QAction(menubar) sep.setSeparator(True) filemenu.addAction(sep) item = QtGui.QAction("Quit", menubar) item.triggered.connect(self.windowClose) filemenu.addAction(item) # create a Channel pulldown menu, and add it to the menu bar chmenu = menubar.addMenu("Channel") item = QtGui.QAction("Add Channel", menubar) item.triggered.connect(self.gui_add_channel) chmenu.addAction(item) item = QtGui.QAction("Delete Channel", menubar) item.triggered.connect(self.gui_delete_channel) chmenu.addAction(item) # create a Window pulldown menu, and add it to the menu bar winmenu = menubar.addMenu("Window") item = QtGui.QAction("New Workspace", menubar) item.triggered.connect(self.gui_add_ws) winmenu.addAction(item) # # create a Option pulldown menu, and add it to the menu bar # optionmenu = menubar.addMenu("Option") # # create a Workspace pulldown menu, and add it to the menu bar # wsmenu = menubar.addMenu("Workspace") # item = QtGui.QAction("Panes as Tabs", menubar) # item.triggered.connect(self.tabstoggle_cb) # item.setCheckable(True) # # TODO: check the state of the workspace first # item.setChecked(True) # wsmenu.addAction(item) # item = QtGui.QAction("Tile Panes", menubar) # item.triggered.connect(self.tile_panes_cb) # wsmenu.addAction(item) # item = QtGui.QAction("Cascade Panes", menubar) # item.triggered.connect(self.cascade_panes_cb) # wsmenu.addAction(item) # create a Help pulldown menu, and add it to the menu bar helpmenu = menubar.addMenu("Help") item = QtGui.QAction("About", menubar) item.triggered.connect(self.banner) helpmenu.addAction(item)
def add_plugin_menu(self, name): item = QtGui.QAction("Start %s" % (name), self.w.menubar) item.triggered.connect(lambda: self.start_global_plugin(name)) self.w.menu_plug.addAction(item)
def add_menus(self, holder): menubar = QtGui.QMenuBar() # NOTE: Special hack for Mac OS X, otherwise the menus # do not get added to the global OS X menu macos_ver = platform.mac_ver()[0] if len(macos_ver) > 0: self.w['top'].layout().addWidget(menubar, stretch=0) else: holder.layout().addWidget(menubar, stretch=1) # create a File pulldown menu, and add it to the menu bar filemenu = menubar.addMenu("File") item = QtGui.QAction("Load Image", menubar) item.triggered.connect(self.gui_load_file) filemenu.addAction(item) sep = QtGui.QAction(menubar) sep.setSeparator(True) filemenu.addAction(sep) item = QtGui.QAction("Quit", menubar) item.triggered.connect(self.windowClose) filemenu.addAction(item) # create a Channel pulldown menu, and add it to the menu bar chmenu = menubar.addMenu("Channel") item = QtGui.QAction("Add Channel", menubar) item.triggered.connect(self.gui_add_channel) chmenu.addAction(item) item = QtGui.QAction("Add Channels", menubar) item.triggered.connect(self.gui_add_channels) chmenu.addAction(item) item = QtGui.QAction("Delete Channel", menubar) item.triggered.connect(self.gui_delete_channel) chmenu.addAction(item) # create a Window pulldown menu, and add it to the menu bar winmenu = menubar.addMenu("Workspace") item = QtGui.QAction("Add Workspace", menubar) item.triggered.connect(self.gui_add_ws) winmenu.addAction(item) # # create a Option pulldown menu, and add it to the menu bar # optionmenu = menubar.addMenu("Option") ## # create a Workspace pulldown menu, and add it to the menu bar ## wsmenu = menubar.addMenu("Workspace") ## item = QtGui.QAction("Panes as Tabs", menubar) ## item.triggered.connect(self.tabstoggle_cb) ## item.setCheckable(True) ## # TODO: check the state of the workspace first ## item.setChecked(True) ## wsmenu.addAction(item) ## item = QtGui.QAction("Tile Panes", menubar) ## item.triggered.connect(self.tile_panes_cb) ## wsmenu.addAction(item) ## item = QtGui.QAction("Cascade Panes", menubar) ## item.triggered.connect(self.cascade_panes_cb) ## wsmenu.addAction(item) # create a Plugins pulldown menu, and add it to the menu bar plugmenu = menubar.addMenu("Plugins") self.w.menu_plug = plugmenu # create a Help pulldown menu, and add it to the menu bar helpmenu = menubar.addMenu("Help") item = QtGui.QAction("About", menubar) item.triggered.connect(lambda: self.banner(raiseTab=True)) helpmenu.addAction(item) item = QtGui.QAction("Documentation", menubar) item.triggered.connect(lambda: self.help()) helpmenu.addAction(item) return menubar