def build_gui(self, container): canvas = CanvasTypes.DrawingCanvas() canvas.enable_draw(False) #canvas.set_callback('button-press', self.btndown) canvas.set_callback('motion', self.cursormotion) #canvas.set_callback('button-release', self.update) canvas.add_callback('key-press', self.window_key_press) canvas.add_callback('key-release', self.window_key_release) self.canvas = canvas vbox = QtHelp.VBox() sp = QtGui.QSizePolicy(QtGui.QSizePolicy.MinimumExpanding, QtGui.QSizePolicy.Fixed) vbox.setSizePolicy(sp) fr = QtHelp.Frame("IRAF") captions = [ ("Control", 'hbox'), ("Channel", 'label'), ] w, b = QtHelp.build_info(captions) self.w = b self.w.mode_d = {} btn = QtGui.QRadioButton("Ginga") btn.toggled.connect(lambda w: self.switchMode('ginga')) self.w.mode_d['ginga'] = btn self.w.control.layout().addWidget(btn, stretch=0, alignment=QtCore.Qt.AlignLeft) btn = QtGui.QRadioButton("IRAF") btn.toggled.connect(lambda w: self.switchMode('iraf')) self.w.mode_d['iraf'] = btn self.w.control.layout().addWidget(btn, stretch=0, alignment=QtCore.Qt.AlignLeft) fr.layout().addWidget(w, stretch=1, alignment=QtCore.Qt.AlignLeft) vbox.addWidget(fr, stretch=0, alignment=QtCore.Qt.AlignTop) fr = QtHelp.Frame("Frame/Channel") lbl = QtGui.QLabel("") self.w.frch = lbl fr.layout().addWidget(lbl, stretch=1, alignment=QtCore.Qt.AlignLeft) vbox.addWidget(fr, stretch=0, alignment=QtCore.Qt.AlignTop) container.addWidget(vbox, stretch=0, alignment=QtCore.Qt.AlignTop)
def __init__(self, text='', group=None): super(RadioButton, self).__init__() self.widget = QtGui.QRadioButton(text) self.widget.toggled.connect(self._cb_redirect) self.enable_callback('activated')
def build_gui(self, container, future=None): vbox1 = QtHelp.VBox() msgFont = self.fv.getFont("sansFont", 14) tw = QtGui.QLabel() tw.setFont(msgFont) tw.setWordWrap(True) self.tw = tw fr = QtHelp.Frame("Instructions") fr.addWidget(tw, stretch=1, alignment=QtCore.Qt.AlignTop) vbox1.addWidget(fr, stretch=0, alignment=QtCore.Qt.AlignTop) nb = QtHelp.TabWidget() nb.setTabPosition(QtGui.QTabWidget.South) nb.setUsesScrollButtons(True) self.w.nb = nb #vbox1.addWidget(nb, stretch=1, alignment=QtCore.Qt.AlignTop) vbox1.addWidget(nb, stretch=1) vbox0 = QtHelp.VBox() hbox = QtHelp.HBox() hbox.setSpacing(4) vbox0.addWidget(hbox, stretch=1, alignment=QtCore.Qt.AlignTop) vbox = QtHelp.VBox() fr = QtHelp.Frame(" Image Server ") fr.addWidget(vbox, stretch=1, alignment=QtCore.Qt.AlignTop) hbox.addWidget(fr, stretch=0, alignment=QtCore.Qt.AlignLeft) captions = (('Server', 'xlabel'), ('@Server', 'combobox'), ('Use DSS channel', 'checkbutton'), ('Get Image', 'button')) w, b = QtHelp.build_info(captions) self.w.update(b) self.w.get_image.clicked.connect(self.getimage_cb) self.w.use_dss_channel.setChecked(self.use_dss_channel) self.w.use_dss_channel.stateChanged.connect(self.use_dss_channel_cb) vbox.addWidget(w, stretch=0, alignment=QtCore.Qt.AlignTop) self.w.img_params = QtHelp.StackedWidget() vbox.addWidget(self.w.img_params, stretch=1, alignment=QtCore.Qt.AlignTop) combobox = self.w.server index = 0 self.image_server_options = self.fv.imgsrv.getServerNames(kind='image') for name in self.image_server_options: combobox.addItem(name) index += 1 index = 0 combobox.setCurrentIndex(index) combobox.activated.connect(self.setup_params_image) if len(self.image_server_options) > 0: self.setup_params_image(index, redo=False) vbox = QtHelp.VBox() fr = QtHelp.Frame(" Catalog Server ") fr.addWidget(vbox, stretch=1, alignment=QtCore.Qt.AlignTop) hbox.addWidget(fr, stretch=0, alignment=QtCore.Qt.AlignLeft) captions = (('Server', 'xlabel'), ('@Server', 'combobox'), ('Limit stars to area', 'checkbutton'), ('Search', 'button')) w, self.w2 = QtHelp.build_info(captions) self.w2.search.clicked.connect(self.getcatalog_cb) self.w2.limit_stars_to_area.setChecked(self.limit_stars_to_area) self.w2.limit_stars_to_area.stateChanged.connect(self.limit_area_cb) vbox.addWidget(w, stretch=0, alignment=QtCore.Qt.AlignTop) self.w2.cat_params = QtHelp.StackedWidget() vbox.addWidget(self.w2.cat_params, stretch=1, alignment=QtCore.Qt.AlignTop) combobox = self.w2.server index = 0 self.catalog_server_options = self.fv.imgsrv.getServerNames(kind='catalog') for name in self.catalog_server_options: combobox.addItem(name) index += 1 index = 0 combobox.setCurrentIndex(index) combobox.activated.connect(self.setup_params_catalog) if len(self.catalog_server_options) > 0: self.setup_params_catalog(index, redo=False) btns = QtHelp.HBox() btns.setSpacing(5) btn = QtGui.QRadioButton("Rectangle") if self.drawtype == 'rectangle': btn.setChecked(True) btn.toggled.connect(lambda tf: self.set_drawtype_cb(tf, 'rectangle')) btns.addWidget(btn, stretch=0, alignment=QtCore.Qt.AlignLeft) btn = QtGui.QRadioButton("Circle") if self.drawtype == 'circle': btn.setChecked(True) btn.toggled.connect(lambda tf: self.set_drawtype_cb(tf, 'circle')) btns.addWidget(btn, stretch=0, alignment=QtCore.Qt.AlignLeft) btn = QtGui.QPushButton("Entire image") btn.clicked.connect(self.setfromimage) btns.addWidget(btn, stretch=0, alignment=QtCore.Qt.AlignLeft) vbox0.addWidget(btns, stretch=0, alignment=QtCore.Qt.AlignTop) self.w.params = vbox0 sw = QtGui.QScrollArea() sw.setWidgetResizable(True) sw.setWidget(vbox0) nb.addTab(sw, "Params") vbox = QtHelp.VBox() self.table = CatalogListing(self.logger, vbox) hbox = QtHelp.HBox() adj = QtGui.QScrollBar(QtCore.Qt.Horizontal) adj.setRange(0, 1000) adj.setSingleStep(1) adj.setPageStep(10) #adj.setMaximum(1000) adj.setValue(0) #adj.resize(200, -1) adj.setTracking(True) adj.setToolTip("Choose subset of stars plotted") self.w.plotgrp = adj adj.valueChanged.connect(self.plot_pct_cb) hbox.addWidget(adj, stretch=1) sb = QtGui.QSpinBox() sb.setRange(10, self.plot_max) sb.setValue(self.plot_limit) sb.setSingleStep(10) adj.setPageStep(100) sb.setWrapping(False) self.w.plotnum = sb sb.setToolTip("Adjust size of subset of stars plotted") sb.valueChanged.connect(self.plot_limit_cb) hbox.addWidget(sb, stretch=0) vbox.addWidget(hbox, stretch=0) self.w.listing = vbox nb.addTab(vbox, "Listing") btns = QtHelp.HBox() btns.setSpacing(3) #btns.set_child_size(15, -1) self.w.buttons = btns btn = QtGui.QPushButton("Close") btn.clicked.connect(self.close) btns.addWidget(btn, stretch=0, alignment=QtCore.Qt.AlignLeft) if future: btn = QtGui.QPushButton('Ok') btn.clicked.connect(lambda w: self.ok()) btns.addWidget(btn, stretch=0, alignment=QtCore.Qt.AlignLeft) btn = QtGui.QPushButton('Cancel') btn.clicked.connect(lambda w: self.cancel()) btns.addWidget(btn, stretch=0, alignment=QtCore.Qt.AlignLeft) vbox1.addWidget(btns, stretch=0) cw = container.get_widget() cw.addWidget(vbox1, stretch=1)
def __init__(self, logger): super(FitsViewer, self).__init__() self.logger = logger self.drawcolors = colors.get_colors() self.dc = get_canvas_types() fi = CanvasView(logger, render='widget') fi.enable_autocuts('on') fi.set_autocut_params('zscale') fi.enable_autozoom('on') fi.set_zoom_algorithm('rate') fi.set_zoomrate(1.4) #fi.show_pan_mark(True) #fi.enable_draw(False) fi.add_callback('drag-drop', self.drop_file_cb) fi.add_callback('cursor-changed', self.cursor_cb) fi.set_bg(0.2, 0.2, 0.2) fi.ui_set_active(True) self.fitsimage = fi bd = fi.get_bindings() bd.enable_all(True) # canvas that we will draw on canvas = self.dc.DrawingCanvas() canvas.enable_draw(True) canvas.enable_edit(True) canvas.set_drawtype('rectangle', color='lightblue') canvas.set_surface(fi) self.canvas = canvas # add canvas to view #fi.add(canvas) private_canvas = fi.get_canvas() private_canvas.add(canvas) canvas.register_for_cursor_drawing(fi) canvas.add_callback('draw-event', self.draw_cb) canvas.set_draw_mode('draw') canvas.ui_set_active(True) self.drawtypes = canvas.get_drawtypes() self.drawtypes.sort() # add a color bar #fi.show_color_bar(True) fi.show_focus_indicator(True) # add little mode indicator that shows keyboard modal states fi.show_mode_indicator(True, corner='ur') w = fi.get_widget() w.resize(512, 512) vbox = QtGui.QVBoxLayout() vbox.setContentsMargins(QtCore.QMargins(2, 2, 2, 2)) vbox.setSpacing(1) vbox.addWidget(w, stretch=1) self.readout = QtGui.QLabel("") vbox.addWidget(self.readout, stretch=0, alignment=QtCore.Qt.AlignCenter) hbox = QtGui.QHBoxLayout() hbox.setContentsMargins(QtCore.QMargins(4, 2, 4, 2)) wdrawtype = QtGui.QComboBox() for name in self.drawtypes: wdrawtype.addItem(name) index = self.drawtypes.index('rectangle') wdrawtype.setCurrentIndex(index) wdrawtype.activated.connect(self.set_drawparams) self.wdrawtype = wdrawtype wdrawcolor = QtGui.QComboBox() for name in self.drawcolors: wdrawcolor.addItem(name) index = self.drawcolors.index('lightblue') wdrawcolor.setCurrentIndex(index) wdrawcolor.activated.connect(self.set_drawparams) self.wdrawcolor = wdrawcolor wfill = QtGui.QCheckBox("Fill") wfill.stateChanged.connect(self.set_drawparams) self.wfill = wfill walpha = QtGui.QDoubleSpinBox() walpha.setRange(0.0, 1.0) walpha.setSingleStep(0.1) walpha.setValue(1.0) walpha.valueChanged.connect(self.set_drawparams) self.walpha = walpha wclear = QtGui.QPushButton("Clear Canvas") wclear.clicked.connect(self.clear_canvas) wopen = QtGui.QPushButton("Open File") wopen.clicked.connect(self.open_file) wquit = QtGui.QPushButton("Quit") wquit.clicked.connect(self.quit) hbox.addStretch(1) for w in (wopen, wdrawtype, wdrawcolor, wfill, QtGui.QLabel('Alpha:'), walpha, wclear, wquit): hbox.addWidget(w, stretch=0) hw = QtGui.QWidget() hw.setLayout(hbox) vbox.addWidget(hw, stretch=0) mode = self.canvas.get_draw_mode() hbox = QtGui.QHBoxLayout() hbox.setContentsMargins(QtCore.QMargins(4, 2, 4, 2)) btn1 = QtGui.QRadioButton("Draw") btn1.setChecked(mode == 'draw') btn1.toggled.connect(lambda val: self.set_mode_cb('draw', val)) btn1.setToolTip("Choose this to draw on the canvas") hbox.addWidget(btn1) btn2 = QtGui.QRadioButton("Edit") btn2.setChecked(mode == 'edit') btn2.toggled.connect(lambda val: self.set_mode_cb('edit', val)) btn2.setToolTip("Choose this to edit things on the canvas") hbox.addWidget(btn2) btn3 = QtGui.QRadioButton("Pick") btn3.setChecked(mode == 'pick') btn3.toggled.connect(lambda val: self.set_mode_cb('pick', val)) btn3.setToolTip("Choose this to pick things on the canvas") hbox.addWidget(btn3) hbox.addWidget(QtGui.QLabel(''), stretch=1) hw = QtGui.QWidget() hw.setLayout(hbox) vbox.addWidget(hw, stretch=0) vw = QtGui.QWidget() self.setCentralWidget(vw) vw.setLayout(vbox)