class SKP_Presenter(TextModelPresenter): cid = uc2const.SKP config = None doc_file = '' resources = None cms = None def __init__(self, appdata, cnf=None, filepath=None): cnf = cnf or {} self.config = SKP_Config() config_file = os.path.join(appdata.app_config_dir, self.config.filename) self.config.load(config_file) self.config.update(cnf) self.appdata = appdata self.cms = self.appdata.app.default_cms self.loader = SKP_Loader() self.saver = SKP_Saver() self.new() if filepath: self.load(filepath) def new(self): self.model = SK1Palette() self.update() def update(self, action=False): TextModelPresenter.update(self, action) def translate_from_sk2(self, sk2_doc): pass def translate_to_sk2(self, sk2_doc): pass
class SKP_Presenter(TextModelPresenter): cid = uc2const.SKP config = None doc_file = '' resources = None cms = None def __init__(self, appdata, cnf=None, filepath=None): cnf = cnf or {} self.config = SKP_Config() config_file = os.path.join(appdata.app_config_dir, self.config.filename) self.config.load(config_file) self.config.update(cnf) self.appdata = appdata self.cms = self.appdata.app.default_cms self.loader = SKP_Loader() self.saver = SKP_Saver() if filepath is None: self.new() else: self.load(filepath) def new(self): self.model = SK1Palette() self.update() def update(self, action=False): TextModelPresenter.update(self, action) def translate_from_sk2(self, sk2_doc): doc_name = sk2_doc.doc_file.split('.')[0] if not doc_name: doc_name = 'Untitled' self.model.name = doc_name + ' palette' self.model.comments = 'The palette is extracted from "' self.model.comments += doc_name + '" document' self.model.source = 'Custom' self._extract_color(sk2_doc.model) def _extract_color(self, obj): if obj.cid > sk2_model.PRIMITIVE_CLASS: fill = obj.style[0] if fill and fill[1] == sk2const.FILL_SOLID: if fill[2] not in self.model.colors: self.model.colors.append(deepcopy(fill[2])) for child in obj.childs: self._extract_color(child) def translate_to_sk2(self, sk2_doc): ncells = len(self.model.colors) if not ncells: return cellsize = self.config.large_cell if ncells > self.config.short_palette_size: cellsize = self.config.small_cell if self.model.columns < 2: columns = int(self.config.palette_width / cellsize) else: columns = self.model.columns rows = 1.0 * ncells / columns if rows > int(rows): rows = int(rows) + 1 else: rows = int(rows) ext = uc2const.FORMAT_EXTENSION[uc2const.SK2][0] sk2_doc.doc_file = self.model.name + "." + ext sk2_doc.methods.set_doc_origin(sk2const.DOC_ORIGIN_LU) sk2_doc.methods.set_doc_units(uc2const.UNIT_PX) page = sk2_doc.methods.get_page() orient = uc2const.PORTRAIT w = columns * cellsize + 1 h = rows * cellsize + 1 if w > h: orient = uc2const.LANDSCAPE sk2_doc.methods.set_page_format(page, ['Custom', (w, h), orient]) sk2_doc.methods.set_default_page_format(['Custom', (w, h), orient]) grid_layer = sk2_doc.methods.get_grid_layer() grid_layer.grid = [0, 0, uc2const.px_to_pt, uc2const.px_to_pt] grid_layer.properties = [1, 0, 0] layer = sk2_doc.methods.get_layer(page) cfg = sk2_doc.config x_orign = -(w / 2.0) + 0.5 - cellsize y = h / 2.0 - 0.5 stroke = deepcopy(cfg.default_stroke) stroke[1] = 1.0 index = 0 for row in range(rows): y -= cellsize x = x_orign for column in range(columns): x += cellsize trafo = [cellsize, 0, 0, cellsize, x, y] color = deepcopy(self.model.colors[index]) fill = [sk2const.FILL_EVENODD, sk2const.FILL_SOLID, color] style = [fill, deepcopy(stroke), [], []] layer.childs.append( sk2_model.Rectangle(cfg, layer, trafo=trafo, style=style)) index += 1 if index == ncells: break sk2_doc.update()
class SKP_Presenter(TextModelPresenter): cid = uc2const.SKP config = None doc_file = '' resources = None cms = None def __init__(self, appdata, cnf={}, filepath=None): self.config = SKP_Config() config_file = os.path.join(appdata.app_config_dir, self.config.filename) self.config.load(config_file) self.config.update(cnf) self.appdata = appdata self.cms = self.appdata.app.default_cms self.loader = SKP_Loader() self.saver = SKP_Saver() if filepath is None: self.new() else: self.load(filepath) def new(self): self.model = SK1Palette() self.update() def update(self, action=False): TextModelPresenter.update(self, action) def translate_from_sk2(self, sk2_doc): doc_name = sk2_doc.doc_file.split('.')[0] if not doc_name: doc_name = 'Untitled' self.model.name = doc_name + ' palette' self.model.comments = 'The palette is extracted from "' self.model.comments += doc_name + '" document' self.model.source = 'Custom' self._extract_color(sk2_doc.model) def _extract_color(self, obj): if obj.cid > sk2_model.PRIMITIVE_CLASS: fill = obj.style[0] if fill and fill[1] == sk2_const.FILL_SOLID: if fill[2] not in self.model.colors: self.model.colors.append(deepcopy(fill[2])) for child in obj.childs: self._extract_color(child) def translate_to_sk2(self, sk2_doc): ncells = len(self.model.colors) if not ncells: return cellsize = self.config.large_cell if ncells > self.config.short_palette_size: cellsize = self.config.small_cell if self.model.columns < 2: columns = int(self.config.palette_width / cellsize) else: columns = self.model.columns rows = 1.0 * ncells / columns if rows > int(rows): rows = int(rows) + 1 else: rows = int(rows) ext = uc2const.FORMAT_EXTENSION[uc2const.SK2][0] sk2_doc.doc_file = self.model.name + "." + ext sk2_doc.methods.set_doc_origin(sk2_const.DOC_ORIGIN_LU) sk2_doc.methods.set_doc_units(uc2const.UNIT_PX) page = sk2_doc.methods.get_page() orient = uc2const.PORTRAIT w = columns * cellsize + 1 h = rows * cellsize + 1 if w > h:orient = uc2const.LANDSCAPE sk2_doc.methods.set_page_format(page, ['Custom', (w, h), orient]) sk2_doc.methods.set_default_page_format(['Custom', (w, h), orient]) grid_layer = sk2_doc.methods.get_grid_layer() grid_layer.grid = [0, 0, uc2const.px_to_pt, uc2const.px_to_pt] grid_layer.properties = [1, 0, 0] layer = sk2_doc.methods.get_layer(page) cfg = sk2_doc.config x = x_orign = -(w / 2.0) + 0.5 - cellsize y = h / 2.0 - 0.5 stroke = deepcopy(cfg.default_stroke) stroke[1] = 1.0 index = 0 for row in range(rows): y -= cellsize x = x_orign for column in range(columns): x += cellsize trafo = [cellsize, 0, 0, cellsize, x, y] color = deepcopy(self.model.colors[index]) fill = [sk2_const.FILL_EVENODD, sk2_const.FILL_SOLID, color] style = [fill, deepcopy(stroke), [], []] layer.childs.append(sk2_model.Rectangle(cfg, layer, trafo=trafo, style=style)) index += 1 if index == ncells: break sk2_doc.update()