def cmd_lscm(self): """lscm List the possible color maps that can be loaded. """ from ginga import cmap self.log("\n".join(cmap.get_names()))
def set_cmap_cb(self, w): """This callback is invoked when the user selects a new color map from the preferences pane.""" index = w.get_active() name = cmap.get_names()[index] self.set_cmap_byname(name) self.t_.set(color_map=name)
def __init__(self, fv, fitsimage): # superclass defines some variables for us, like logger super(Preferences, self).__init__(fv, fitsimage) self.chname = self.fv.get_channelName(self.fitsimage) self.cmap_names = cmap.get_names() self.imap_names = imap.get_names() self.zoomalg_names = ('step', 'rate') self.autocuts_cache = {} self.gui_up = False self.calg_names = ColorDist.get_dist_names() self.autozoom_options = self.fitsimage.get_autozoom_options() self.autocut_options = self.fitsimage.get_autocuts_options() self.autocut_methods = self.fitsimage.get_autocut_methods() self.autocenter_options = self.fitsimage.get_autocenter_options() self.pancoord_options = ('data', 'wcs') self.t_ = self.fitsimage.get_settings() self.t_.getSetting('autocuts').add_callback('set', self.autocuts_changed_ext_cb) self.t_.getSetting('autozoom').add_callback('set', self.autozoom_changed_ext_cb) self.t_.getSetting('autocenter').add_callback('set', self.autocenter_changed_ext_cb) for key in ['pan']: self.t_.getSetting(key).add_callback('set', self.pan_changed_ext_cb) for key in ['scale']: self.t_.getSetting(key).add_callback('set', self.scale_changed_ext_cb) self.t_.getSetting('zoom_algorithm').add_callback('set', self.set_zoomalg_ext_cb) self.t_.getSetting('zoom_rate').add_callback('set', self.set_zoomrate_ext_cb) for key in ['scale_x_base', 'scale_y_base']: self.t_.getSetting(key).add_callback('set', self.scalebase_changed_ext_cb) self.t_.getSetting('rot_deg').add_callback('set', self.set_rotate_ext_cb) for name in ('flip_x', 'flip_y', 'swap_xy'): self.t_.getSetting(name).add_callback('set', self.set_transform_ext_cb) ## for name in ('autocut_method', 'autocut_params'): ## self.t_.getSetting(name).add_callback('set', self.set_autocuts_ext_cb) ## for key in ['color_algorithm', 'color_hashsize', 'color_map', ## 'intensity_map']: ## self.t_.getSetting(key).add_callback('set', self.cmap_changed_ext_cb) self.t_.setdefault('wcs_coords', 'icrs') self.t_.setdefault('wcs_display', 'sexagesimal') # buffer len (number of images in memory) self.t_.addDefaults(numImages=4) self.t_.getSetting('numImages').add_callback('set', self.set_buflen_ext_cb) self.icc_profiles = list(io_rgb.get_profiles()) self.icc_profiles.insert(0, None) self.icc_intents = io_rgb.get_intents()
def start(self): if len(self.cm_names) == 0: self.cm_names = list(cmap.get_names()) self.c_view.onscreen_message("building color maps...") self.fv.update_pending() self.rebuild_cmaps() self.c_view.onscreen_message(None) self.c_view.set_image(self.r_image)
def menu_actions(self): acts = [] for label in ginga_cmap.get_names(): cmap = ginga_cmap.get_cmap(label) a = ColormapAction(label, cmap, self.viewer) a.triggered.connect(nonpartial(self.viewer.client.set_cmap, cmap)) acts.append(a) return acts
def get_color_maps(self): """Get the list of named color maps. Parameters ---------- None Returns ------- `names`: list A list of all named colormaps installed """ return cmap.get_names()
def __init__(self, fv, fitsimage): # superclass defines some variables for us, like logger super(Preferences, self).__init__(fv, fitsimage) self.chname = self.fv.get_channelName(self.fitsimage) self.cmap_names = cmap.get_names() self.imap_names = imap.get_names() self.zoomalg_names = ('step', 'rate') self.autocuts_cache = {} self.gui_up = False self.calg_names = ColorDist.get_dist_names() self.autozoom_options = self.fitsimage.get_autozoom_options() self.autocut_options = self.fitsimage.get_autocuts_options() self.autocut_methods = self.fitsimage.get_autocut_methods() self.t_ = self.fitsimage.get_settings() self.t_.getSetting('autocuts').add_callback('set', self.autocuts_changed_ext_cb) self.t_.getSetting('autozoom').add_callback('set', self.autozoom_changed_ext_cb) for key in ['pan']: self.t_.getSetting(key).add_callback('set', self.pan_changed_ext_cb) for key in ['scale']: self.t_.getSetting(key).add_callback('set', self.scale_changed_ext_cb) self.t_.getSetting('zoom_algorithm').add_callback('set', self.set_zoomalg_ext_cb) self.t_.getSetting('zoom_rate').add_callback('set', self.set_zoomrate_ext_cb) for key in ['scale_x_base', 'scale_y_base']: self.t_.getSetting(key).add_callback('set', self.scalebase_changed_ext_cb) self.t_.getSetting('rot_deg').add_callback('set', self.set_rotate_ext_cb) for name in ('flip_x', 'flip_y', 'swap_xy'): self.t_.getSetting(name).add_callback('set', self.set_transform_ext_cb) for name in ('autocut_method', 'autocut_params'): self.t_.getSetting(name).add_callback('set', self.set_autocuts_ext_cb) ## for key in ['color_algorithm', 'color_hashsize', 'color_map', ## 'intensity_map']: ## self.t_.getSetting(key).add_callback('set', self.cmap_changed_ext_cb) self.t_.setdefault('wcs_coords', 'icrs') self.t_.setdefault('wcs_display', 'sexagesimal')
def __init__(self, fv, fitsimage): # superclass defines some variables for us, like logger super(Preferences, self).__init__(fv, fitsimage) self.w.tooltips = self.fv.w.tooltips self.chname = self.fv.get_channelName(self.fitsimage) self.cmap_names = cmap.get_names() self.imap_names = imap.get_names() self.zoomalg_names = ('step', 'rate') self.gui_up = False rgbmap = fitsimage.get_rgbmap() self.calg_names = rgbmap.get_hash_algorithms() self.calg_names.sort() self.autozoom_options = self.fitsimage.get_autozoom_options() self.autocut_options = self.fitsimage.get_autocuts_options() self.autocut_methods = self.fitsimage.get_autocut_methods() self.t_ = fitsimage.get_settings() self.t_.getSetting('autocuts').add_callback('set', self.autocuts_changed_cb) self.t_.getSetting('autozoom').add_callback('set', self.autozoom_changed_cb) for key in ['scale']: self.t_.getSetting(key).add_callback('set', self.scale_changed_ext_cb) for key in ['pan']: self.t_.getSetting(key).add_callback('set', self.pan_changed_ext_cb) self.t_.getSetting('zoom_algorithm').add_callback('set', self.set_zoomalg_ext_cb) self.t_.getSetting('zoom_rate').add_callback('set', self.set_zoomrate_ext_cb) for key in ['scale_x_base', 'scale_y_base']: self.t_.getSetting(key).add_callback('set', self.scalebase_changed_ext_cb) self.t_.getSetting('rot_deg').add_callback('set', self.set_rotate_ext_cb) for name in ('flip_x', 'flip_y', 'swap_xy'): self.t_.getSetting(name).add_callback('set', self.set_transform_ext_cb) for name in ('autocuts', 'autocut_method', 'autocut_hist_pct', 'autocut_bins'): self.t_.getSetting(name).add_callback('set', self.set_autocuts_ext_cb) self.t_.setdefault('wcs_coords', 'icrs') self.t_.setdefault('wcs_display', 'sexagesimal')
def __init__(self, logger, container): super(CatalogListing, self).__init__() self.logger = logger self.tag = None self.cmap_names = cmap.get_names() self.imap_names = imap.get_names() self.magcmap = 'stairs8' self.magimap = 'ramp' self.mag_field = 'mag' self.mag_max = 25.0 self.mag_min = 0.0 self.color_default = 'skyblue' # keys: are name, ra, dec, mag, flag, b_r, preference, priority, dst # TODO: automate this generation self.columns = [ ('Name', 'name'), ('RA', 'ra'), ('DEC', 'dec'), ('Mag', 'mag'), ('Preference', 'preference'), ('Priority', 'priority'), ('Description', 'description'), ('Index', 'index'), ] self.catalog = None self.cursor = 0 self.color_selected = 'skyblue' self.selection_mode = 'single' self.selected = [] self.moving_cursor = False self.btn = Bunch.Bunch() self.cmap = cmap.get_cmap(self.magcmap) self.imap = imap.get_imap('ramp') self.cbar_ht = 32 self.operation_table = [] self._select_flag = False self._build_gui(container)
def __init__(self, fv, fitsimage): # superclass defines some variables for us, like logger super(Preferences, self).__init__(fv, fitsimage) self.w.tooltips = self.fv.w.tooltips self.chname = self.fv.get_channelName(self.fitsimage) self.cmap_names = cmap.get_names() self.imap_names = imap.get_names() self.zoomalg_names = ('step', 'rate') self.gui_up = False rgbmap = fitsimage.get_rgbmap() self.calg_names = rgbmap.get_hash_algorithms() self.calg_names.sort() self.autozoom_options = self.fitsimage.get_autozoom_options() self.autocut_options = self.fitsimage.get_autocuts_options() self.autocut_methods = self.fitsimage.get_autocut_methods() self.fitsimage.add_callback('autocuts', self.autocuts_changed_cb) self.fitsimage.add_callback('autozoom', self.autozoom_changed_cb) self.fitsimage.add_callback('pan-set', self.pan_changed_ext_cb) self.fitsimage.add_callback('zoom-set', self.scale_changed_ext_cb) self.t_ = self.fitsimage.get_settings() self.t_.getSetting('zoom_algorithm').add_callback( 'set', self.set_zoomalg_ext_cb) self.t_.getSetting('zoom_rate').add_callback('set', self.set_zoomrate_ext_cb) for key in ['scale_x_base', 'scale_y_base']: self.t_.getSetting(key).add_callback('set', self.scalebase_changed_ext_cb) self.t_.getSetting('rot_deg').add_callback('set', self.set_rotate_ext_cb) for name in ('flip_x', 'flip_y', 'swap_xy'): self.t_.getSetting(name).add_callback('set', self.set_transform_ext_cb) for name in ('autocuts', 'autocut_method', 'autocut_hist_pct', 'autocut_bins'): self.t_.getSetting(name).add_callback('set', self.set_autocuts_ext_cb)
def __init__(self, logger, container): super(CatalogListing, self).__init__() self.logger = logger self.tag = None self.cmap_names = cmap.get_names() self.imap_names = imap.get_names() self.magcmap = 'stairs8' self.magimap = 'ramp' self.mag_field = 'mag' self.mag_max = 25.0 self.mag_min = 0.0 self.color_default = 'skyblue' # keys: are name, ra, dec, mag, flag, b_r, preference, priority, dst # TODO: automate this generation self.columns = [('Name', 'name'), ('RA', 'ra'), ('DEC', 'dec'), ('Mag', 'mag'), ('Preference', 'preference'), ('Priority', 'priority'), ('Description', 'description'), ('Index', 'index'), ] self.catalog = None self.cursor = 0 self.color_selected = 'skyblue' self.selection_mode = 'single' self.selected = [] self.moving_cursor = False self.btn = Bunch.Bunch() self.cmap = cmap.get_cmap(self.magcmap) self.imap = imap.get_imap('ramp') self.cbar_ht = 32 self.operation_table = [] self._select_flag = False self._build_gui(container)
def _colormap_mode(parent, on_trigger): # actions for each colormap acts = [] # for label, cmap in config.colormaps: for label in ginga_cmap.get_names(): cmap = ginga_cmap.get_cmap(label) a = ColormapAction(label, cmap, parent) a.triggered.connect(nonpartial(on_trigger, cmap)) acts.append(a) # Toolbar button tb = QtWidgets.QToolButton() tb.setWhatsThis("Set color scale") tb.setToolTip("Set color scale") icon = get_icon('glue_rainbow') tb.setIcon(icon) tb.setPopupMode(QtWidgets.QToolButton.InstantPopup) tb.addActions(acts) return tb
def _colormap_mode(parent, on_trigger): # actions for each colormap acts = [] # for label, cmap in config.colormaps: for label in ginga_cmap.get_names(): cmap = ginga_cmap.get_cmap(label) a = ColormapAction(label, cmap, parent) a.triggered.connect(nonpartial(on_trigger, cmap)) acts.append(a) # Toolbar button tb = QToolButton() tb.setWhatsThis("Set color scale") tb.setToolTip("Set color scale") icon = get_icon('glue_rainbow') tb.setIcon(icon) tb.setPopupMode(QToolButton.InstantPopup) tb.addActions(acts) return tb
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) fi.set_callback('none-move', self.motion) fi.set_bg(0.2, 0.2, 0.2) fi.ui_setActive(True) self.fitsimage = fi # 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') # add color bar rgbmap = fi.get_rgbmap() rgbmap.set_hash_size(256) cbar = ColorBar.ColorBar(self.logger, rgbmap=rgbmap, link=True) cbar.resize(-1, 15) #cbar.show() self.colorbar = cbar layout.addWidget(cbar, stretch=0) settings = fi.get_settings() settings.getSetting('cuts').add_callback('set', self.change_range_cb, fi, self.colorbar) # 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() # scrw = QtGui.QScrollArea() # scrw.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAsNeeded) # scrw.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAsNeeded) # scrw.setWidgetResizable(True) # layout.addWidget(scrw, stretch=1) # scrw.setWidget(self.canvas) 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 __init__(self, fv, fitsimage): # superclass defines some variables for us, like logger super(Preferences, self).__init__(fv, fitsimage) self.cmap_names = cmap.get_names() self.imap_names = imap.get_names() self.zoomalg_names = ('step', 'rate') self.autocuts_cache = {} self.gui_up = False self.calg_names = ColorDist.get_dist_names() self.autozoom_options = self.fitsimage.get_autozoom_options() self.autocut_options = self.fitsimage.get_autocuts_options() self.autocut_methods = self.fitsimage.get_autocut_methods() self.autocenter_options = self.fitsimage.get_autocenter_options() self.pancoord_options = ('data', 'wcs') self.sort_options = ('loadtime', 'alpha') self.t_ = self.fitsimage.get_settings() self.t_.get_setting('autocuts').add_callback( 'set', self.autocuts_changed_ext_cb) self.t_.get_setting('autozoom').add_callback( 'set', self.autozoom_changed_ext_cb) self.t_.get_setting('autocenter').add_callback( 'set', self.autocenter_changed_ext_cb) for key in ['pan']: self.t_.get_setting(key).add_callback('set', self.pan_changed_ext_cb) for key in ['scale']: self.t_.get_setting(key).add_callback('set', self.scale_changed_ext_cb) self.t_.get_setting('zoom_algorithm').add_callback( 'set', self.set_zoomalg_ext_cb) self.t_.get_setting('zoom_rate').add_callback('set', self.set_zoomrate_ext_cb) for key in ['scale_x_base', 'scale_y_base']: self.t_.get_setting(key).add_callback( 'set', self.scalebase_changed_ext_cb) self.t_.get_setting('rot_deg').add_callback('set', self.set_rotate_ext_cb) for name in ('flip_x', 'flip_y', 'swap_xy'): self.t_.get_setting(name).add_callback('set', self.set_transform_ext_cb) ## for name in ('autocut_method', 'autocut_params'): ## self.t_.get_setting(name).add_callback('set', self.set_autocuts_ext_cb) ## for key in ['color_algorithm', 'color_hashsize', 'color_map', ## 'intensity_map']: ## self.t_.get_setting(key).add_callback('set', self.cmap_changed_ext_cb) self.t_.setdefault('wcs_coords', 'icrs') self.t_.setdefault('wcs_display', 'sexagesimal') # buffer len (number of images in memory) self.t_.add_defaults(numImages=4) self.t_.get_setting('numImages').add_callback('set', self.set_buflen_ext_cb) # preload images self.t_.add_defaults(preload_images=False) self.icc_profiles = list(rgb_cms.get_profiles()) self.icc_profiles.insert(0, None) self.icc_intents = rgb_cms.get_intents()
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 colormap_options(self): """List of colormap names.""" from ginga import cmap return cmap.get_names()
def _define_cmaps(self): """Setup the default color maps which are available.""" # get ginga color maps self._cmap_colors = cmap.get_names()