def __init__(self, logger=None, rgbmap=None, settings=None, bindmap=None, bindings=None): ImageViewZoom.__init__(self, logger=logger, rgbmap=rgbmap, settings=settings, bindmap=bindmap, bindings=bindings) CompoundMixin.__init__(self) CanvasMixin.__init__(self) DrawingMixin.__init__(self) # we are both a viewer and a canvas self.set_canvas(self, private_canvas=self) self._mi = ModeIndicator(self)
def __init__(self, logger=None, settings=None, rgbmap=None, bindmap=None, bindings=None): ImageViewZoom.__init__(self, logger=logger, settings=settings, rgbmap=rgbmap, bindmap=bindmap, bindings=bindings) # Needed for UIMixin to propagate events correctly self.objects = [self.private_canvas] self._mi = ModeIndicator(self)
def __init__(self, logger): self.logger = logger self.drawcolors = colors.get_colors() self.dc = get_canvas_types() from ginga.gw import Widgets, Viewers self.app = Widgets.Application(logger=logger) #self.app.add_callback('shutdown', self.quit) self.top = self.app.make_window("Ginga example2") self.top.add_callback('close', self.closed) vbox = Widgets.VBox() vbox.set_border_width(2) vbox.set_spacing(1) hbox = Widgets.HBox() hbox.set_border_width(2) hbox.set_spacing(4) v1 = Viewers.CanvasView(logger) v1.enable_autocuts('on') v1.set_autocut_params('zscale') v1.enable_autozoom('on') v1.set_zoom_algorithm('rate') v1.set_zoomrate(1.4) v1.show_pan_mark(True) v1.set_callback('drag-drop', self.drop_file) v1.set_callback('none-move', self.motion) v1.set_bg(0.2, 0.2, 0.2) v1.ui_setActive(True) v1.set_name('tweedledee') self.viewer1 = v1 self._mi1 = ModeIndicator(v1) bd = v1.get_bindings() bd.enable_all(True) # shared canvas between the two viewers canvas = self.dc.DrawingCanvas() canvas.enable_draw(True) canvas.enable_edit(True) canvas.set_drawtype('rectangle', color='lightblue') self.canvas = canvas # Tell viewer1 to use this canvas v1.set_canvas(canvas) self.drawtypes = canvas.get_drawtypes() self.drawtypes.sort() v1.set_desired_size(300, 300) iw = Viewers.GingaViewerWidget(viewer=v1) hbox.add_widget(iw, stretch=1) # Add a second viewer viewing the same canvas v2 = Viewers.CanvasView(logger) v2.enable_autocuts('on') v2.set_autocut_params('zscale') v2.enable_autozoom('on') v2.set_zoom_algorithm('rate') v2.set_zoomrate(1.4) v2.show_pan_mark(True) v2.set_callback('drag-drop', self.drop_file) v2.set_callback('none-move', self.motion) v2.set_bg(0.2, 0.2, 0.2) v2.ui_setActive(True) v1.set_name('tweedledum') self.viewer2 = v2 self._mi2 = ModeIndicator(v2) # Tell viewer2 to use this same canvas v2.set_canvas(canvas) bd = v2.get_bindings() bd.enable_all(True) v2.set_desired_size(300, 300) iw = Viewers.GingaViewerWidget(viewer=v2) hbox.add_widget(iw, stretch=1) vbox.add_widget(hbox, stretch=1) self.readout = Widgets.Label("") vbox.add_widget(self.readout, stretch=0) hbox = Widgets.HBox() hbox.set_border_width(2) wdrawtype = Widgets.ComboBox() for name in self.drawtypes: wdrawtype.append_text(name) index = self.drawtypes.index('rectangle') wdrawtype.set_index(index) wdrawtype.add_callback('activated', lambda w, idx: self.set_drawparams()) self.wdrawtype = wdrawtype wdrawcolor = Widgets.ComboBox() for name in self.drawcolors: wdrawcolor.append_text(name) index = self.drawcolors.index('lightblue') wdrawcolor.set_index(index) wdrawcolor.add_callback('activated', lambda w, idx: self.set_drawparams()) self.wdrawcolor = wdrawcolor wfill = Widgets.CheckBox("Fill") wfill.add_callback('activated', lambda w, tf: self.set_drawparams()) self.wfill = wfill walpha = Widgets.SpinBox(dtype=float) walpha.set_limits(0.0, 1.0, incr_value=0.1) walpha.set_value(1.0) walpha.set_decimals(2) walpha.add_callback('value-changed', lambda w, val: self.set_drawparams()) self.walpha = walpha wclear = Widgets.Button("Clear Canvas") wclear.add_callback('activated', lambda w: self.clear_canvas()) wopen = Widgets.Button("Open File") wopen.add_callback('activated', lambda w: self.open_file()) wquit = Widgets.Button("Quit") wquit.add_callback('activated', lambda w: self.quit()) hbox.add_widget(Widgets.Label(''), stretch=1) for w in (wopen, wdrawtype, wdrawcolor, wfill, Widgets.Label('Alpha:'), walpha, wclear, wquit): hbox.add_widget(w, stretch=0) vbox.add_widget(hbox, stretch=0) self.top.set_widget(vbox)