class SolidFill(FillTab): name = _('Solid Fill') active_panel = None panels = {} new_color = None callback = None use_rule = True def activate(self, fill_style, use_rule=True, onmodechange=None): if onmodechange: self.callback = onmodechange self.use_rule = use_rule FillTab.activate(self, fill_style) if not fill_style: mode = EMPTY_MODE self.rule_keeper.set_mode(sk2_const.FILL_EVENODD) else: self.rule_keeper.set_mode(fill_style[0]) if fill_style[1] in [sk2_const.FILL_GRADIENT, sk2_const.FILL_PATTERN]: mode = CMYK_MODE else: mode = SOLID_MODE_MAP[fill_style[2][0]] self.solid_keeper.set_mode(mode) self.on_mode_change(mode) def build(self): self.panels = {} panel = wal.HPanel(self) self.solid_keeper = wal.HToggleKeeper(panel, SOLID_MODES, SOLID_MODE_ICONS, SOLID_MODE_NAMES, self.on_mode_change) panel.pack(self.solid_keeper) panel.pack(wal.HPanel(panel), fill=True, expand=True) self.rule_keeper = FillRuleKeeper(panel) panel.pack(self.rule_keeper) if not self.use_rule: self.rule_keeper.set_visible(False) self.pack(panel, fill=True, padding_all=5) self.pack(wal.HLine(self), fill=True) for item in SOLID_MODES: self.panels[item] = SOLID_MODE_CLASSES[item](self, self.app) self.panels[item].hide() def on_mode_change(self, mode): if self.active_panel: self.new_color = self.active_panel.get_color() self.remove(self.active_panel) self.active_panel.hide() self.active_panel = self.panels[mode] self.pack(self.active_panel, fill=True, expand=True, padding_all=5) self.active_panel.activate(self.cms, self.orig_fill, self.new_color) self.rule_keeper.set_enable(not mode == EMPTY_MODE) if self.callback: self.callback() def get_result(self): clr = self.active_panel.get_color() if clr: return [self.rule_keeper.get_mode(), sk2_const.FILL_SOLID, clr] else: return []
class SolidFill(FillTab): name = _('Solid Fill') active_panel = None panels = {} new_color = None callback = None use_rule = True solid_keeper = None rule_keeper = None def activate(self, fill_style, use_rule=True, onmodechange=None): if onmodechange: self.callback = onmodechange self.use_rule = use_rule FillTab.activate(self, fill_style) if not fill_style: mode = EMPTY_MODE self.rule_keeper.set_mode(sk2const.FILL_EVENODD) else: self.rule_keeper.set_mode(fill_style[0]) if fill_style[1] in [ sk2const.FILL_GRADIENT, sk2const.FILL_PATTERN ]: mode = CMYK_MODE else: mode = SOLID_MODE_MAP[fill_style[2][0]] self.solid_keeper.set_mode(mode) self.on_mode_change(mode) def build(self): self.panels = {} panel = wal.HPanel(self) self.solid_keeper = wal.HToggleKeeper(panel, SOLID_MODES, SOLID_MODE_ICONS, SOLID_MODE_NAMES, self.on_mode_change) panel.pack(self.solid_keeper) panel.pack(wal.HPanel(panel), fill=True, expand=True) self.rule_keeper = FillRuleKeeper(panel) panel.pack(self.rule_keeper) if not self.use_rule: self.rule_keeper.set_visible(False) self.pack(panel, fill=True, padding_all=5) self.pack(wal.HLine(self), fill=True) for item in SOLID_MODES: self.panels[item] = SOLID_MODE_CLASSES[item](self, self.app) if wal.IS_MSW: self.pack(self.panels[item], fill=True, expand=True, padding_all=5) self.layout() self.panels[item].hide() self.remove(self.panels[item]) else: self.panels[item].hide() def on_mode_change(self, mode): if self.active_panel: self.new_color = self.active_panel.get_color() self.active_panel.hide() self.remove(self.active_panel) self.active_panel = self.panels[mode] self.pack(self.active_panel, fill=True, expand=True, padding_all=5) self.active_panel.show() self.active_panel.activate(self.cms, self.orig_fill, self.new_color) self.rule_keeper.set_enable(not mode == EMPTY_MODE) if self.callback: self.callback() def get_result(self): clr = self.active_panel.get_color() if clr: return [self.rule_keeper.get_mode(), sk2const.FILL_SOLID, clr] else: return []