def __init__(self, prefs, datapath): """Initialises with default colors and an empty adjuster list. :param prefs: Prefs dict for saving settings. :param datapath: Base path for saving palettes and masks. """ super(ColorManager, self).__init__() # Defaults self._color = None #: Currently edited color, a UIColor object self._hist = [] #: List of previous colors, most recent last self._palette = None #: Current working palette self._adjusters = weakref.WeakSet() #: The set of registered adjusters #: Cursor for pickers # FIXME: Use Gdk.Cursor.new_for_display() self._picker_cursor = Gdk.Cursor.new(Gdk.CursorType.CROSSHAIR) self._datapath = datapath #: Base path for saving palettes and masks self._hue_distorts = None #: Hue-remapping table for color wheels self._prefs = prefs #: Shared preferences dictionary # Build the history. Last item is most recent. hist_hex = list(prefs.get(PREFS_KEY_COLOR_HISTORY, [])) hist_hex = self._DEFAULT_HIST + hist_hex self._hist = [RGBColor.new_from_hex_str(s) for s in hist_hex] self._trim_hist() # Restore current color, or use the most recent color. col_hex = prefs.get(PREFS_KEY_CURRENT_COLOR, None) if col_hex is None: col_hex = hist_hex[-1] self._color = RGBColor.new_from_hex_str(col_hex) # Initialize angle distort table wheel_type = prefs.get(PREFS_KEY_WHEEL_TYPE, self._DEFAULT_WHEEL_TYPE) distorts_table = self._HUE_DISTORTION_TABLES[wheel_type] self._hue_distorts = distorts_table # Initialize working palette palette_dict = prefs.get(PREFS_PALETTE_DICT_KEY, None) if palette_dict is not None: palette = Palette.new_from_simple_dict(palette_dict) else: datapath = self.get_data_path() palettes_dir = os.path.join(datapath, DATAPATH_PALETTES_SUBDIR) default = os.path.join(palettes_dir, DEFAULT_PALETTE_FILE) palette = Palette(filename=default) self._palette = palette # Capture updates to the working palette palette.info_changed += self._palette_changed_cb palette.match_changed += self._palette_changed_cb palette.sequence_changed += self._palette_changed_cb palette.color_changed += self._palette_changed_cb
def __save_clicked(self, button): pal = Palette() mask = self.editor.get_mask() for i, shape in enumerate(mask): for j, col in enumerate(shape): col_name = "mask#%d primary#%d" % (i, j) # NOT localised pal.append(col, col_name) preview = HCYMaskPreview() preview.set_size_request(128, 128) target_mgr = self.target.get_color_manager() prefs_ro = deepcopy(target_mgr.get_prefs()) datapath = target_mgr.get_data_path() mgr = ColorManager(prefs=prefs_ro, datapath=datapath) preview.set_color_manager(mgr) preview.set_managed_color(self.editor.get_managed_color()) palette_save_via_dialog(pal, title=_("Save mask as a Gimp palette"), parent=self, preview=preview)