Ejemplo n.º 1
0
 def extract_bitmap(self, filepath):
     ext = '.tiff' if self.bitmap.mode == uc2const.IMAGE_CMYK else '.png'
     path, file_ext = os.path.splitext(filepath)
     filepath = path + ext if not file_ext == ext else filepath
     fileptr = fsutils.get_fileptr(filepath, True)
     self.bitmap.save(fileptr, format=self._get_saver_fmt(self.bitmap))
     fileptr.close()
     if self.alpha:
         fileptr = fsutils.get_fileptr(path + '_alphachannel.png', True)
         self.bitmap.save(fileptr, format=PNG_FMT)
         fileptr.close()
Ejemplo n.º 2
0
 def apply_action(self):
     if not self.picture:
         return
     doc_file = 'image'
     doc_file = os.path.join(self.config.save_dir, doc_file)
     doc_file = dialogs.get_save_file_name(self.app.mw,
                                           doc_file,
                                           _('Save image as...'),
                                           file_types=[uc2const.PNG],
                                           path_only=True)
     if doc_file:
         try:
             fileptr = fsutils.get_fileptr(doc_file, True)
             fileptr.write(self.picture.getvalue())
             fileptr.close()
         except Exception:
             first = _('Cannot save image:')
             msg = "%s\n'%s'." % (first, doc_file) + '\n'
             msg += _('Please check file name and write permissions')
             dialogs.error_dialog(self.app.mw, self.app.appdata.app_name,
                                  msg)
             return
         self.config.save_dir = str(os.path.dirname(doc_file))
         self.save_config()
         events.emit(events.APP_STATUS, _('Image is successfully saved'))
Ejemplo n.º 3
0
def check_png(path):
    fileptr = get_fileptr(path)
    mstr = fileptr.read(len(PNG_ID))
    fileptr.close()
    if mstr == PNG_ID:
        return True
    return False
Ejemplo n.º 4
0
 def save_resource(self, res, filename):
     try:
         with fsutils.get_fileptr(filename, writable=True) as fileptr:
             fileptr.write(res)
             fileptr.close()
     except Exception:
         pass
Ejemplo n.º 5
0
def png_saver(sk2_doc,
              filename=None,
              fileptr=None,
              translate=True,
              cnf=None,
              **kw):
    cnf = merge_cnf(cnf, kw)
    if filename and not fileptr:
        fileptr = get_fileptr(filename, True)
    page = sk2_doc.methods.get_page()
    w, h = page.page_format[1]
    trafo = (1.0, 0, 0, -1.0, w / 2.0, h / 2.0)

    canvas_matrix = cairo.Matrix(*trafo)
    surface = cairo.ImageSurface(cairo.FORMAT_ARGB32, int(w), int(h))
    ctx = cairo.Context(surface)
    ctx.set_matrix(canvas_matrix)

    rend = CairoRenderer(sk2_doc.cms)
    antialias_flag = True
    if 'antialiasing' in cnf.keys():
        if not cnf['antialiasing'] in ('True', '1'):
            antialias_flag = False
    rend.antialias_flag = antialias_flag
    layers = sk2_doc.methods.get_visible_layers(page)

    for item in layers:
        if not item.properties[3] and antialias_flag:
            rend.antialias_flag = False
        rend.render(ctx, item.childs)
        if not item.properties[3] and antialias_flag:
            rend.antialias_flag = True

    surface.write_to_png(fileptr)
    fileptr.close()
Ejemplo n.º 6
0
    def load(self, presenter, path=None, fileptr=None):
        self.presenter = presenter
        self.model = presenter.model
        self.config = self.presenter.config
        if path:
            self.filepath = path
            self.file_size = os.path.getsize(get_sys_path(path))
            self.fileptr = get_fileptr(path)
        elif fileptr:
            self.fileptr = fileptr
            self.fileptr.seek(0, 2)
            self.file_size = self.fileptr.tell()
            self.fileptr.seek(0)
        else:
            msg = _('There is no file for reading')
            raise IOError(errno.ENODATA, msg, '')

        try:
            self.init_load()
        except Exception:
            LOG.error('Error loading file content')
            raise

        self.fileptr.close()
        self.position = 0
        return self.model
Ejemplo n.º 7
0
    def save(self, filename=None):
        if self.filename and filename is None:
            filename = self.filename
        if len(self.__dict__) == 0 or filename is None:
            return

        try:
            fileobj = fsutils.get_fileptr(filename, True)
        except Exception:
            return

        defaults = SerializedConfig.__dict__
        items = self.__dict__.items()
        items.sort()
        for key, value in items:
            if key in defaults and defaults[key] == value:
                continue
            if key in ['filename', 'app']:
                continue
            try:
                line = fsutils.get_sys_path('%s = %s\n' %
                                            (key, value.__repr__()))
            except Exception as e:
                LOG.error('ERROR>>> %s', e)
                continue
            fileobj.write(line)
        fileobj.close()
Ejemplo n.º 8
0
 def save_history(self):
     fp = fsutils.get_fileptr(self.history_file, True)
     for item in self.history:
         state, path, timestamp = str(item[0]), item[1], str(item[2])
         fp.write('%s\t%s\t%s\n' % (state, path, timestamp))
     fp.close()
     events.emit(events.HISTORY_CHANGED)
Ejemplo n.º 9
0
def png_saver(sk2_doc,
              filename=None,
              fileptr=None,
              translate=True,
              cnf=None,
              **kw):
    cnf = merge_cnf(cnf, kw)
    if filename and not fileptr:
        fileptr = get_fileptr(filename, True)
    page = sk2_doc.methods.get_page()
    scale = abs(float(cnf.get('scale', 1.0))) or 1.0
    w, h = [scale * item for item in page.page_format[1]]
    trafo = (scale, 0, 0, -scale, w / 2.0, h / 2.0)

    canvas_matrix = cairo.Matrix(*trafo)
    surface = cairo.ImageSurface(cairo.FORMAT_ARGB32, int(w), int(h))
    ctx = cairo.Context(surface)
    ctx.set_matrix(canvas_matrix)

    antialias_flag = not cnf.get('antialiasing') in (False, 0)
    layers = sk2_doc.methods.get_visible_layers(page)
    rend = CairoRenderer(sk2_doc.cms)

    for item in layers:
        rend.antialias_flag = not any(
            [not item.properties[3], not antialias_flag])
        rend.render(ctx, item.childs)

    surface.write_to_png(fileptr)
    fileptr.close()
Ejemplo n.º 10
0
def check_cdr(path):
    fileptr = get_fileptr(path)
    header = fileptr.read(12)
    fileptr.close()
    if not header[:4] == cdr_const.RIFF_ID:
        return False
    if header[8:] in cdr_const.CDR_VERSIONS:
        return True
    else:
        return False
Ejemplo n.º 11
0
    def __init__(self, app, cfgdir='~'):
        # --- Init paths
        path = fsutils.expanduser(os.path.join(cfgdir, '.config', 'sk1-wx'))
        self.app_config_dir = path

        UCData.__init__(self, app, check=False)
        self.check_config_dirs()

        self.app_palette_dir = os.path.join(path, 'palettes')
        self.plugin_dir = os.path.join(path, 'sk1_custom_plugins')
        self.app_temp_dir = os.path.join(path, 'temp')

        # --- Check config directories
        paths = (self.app_palette_dir, self.plugin_dir, self.app_temp_dir)
        [fsutils.makedirs(item) for item in paths if not fsutils.exists(item)]

        plugin_dir_init = os.path.join(self.plugin_dir, '__init__.py')
        if not fsutils.exists(plugin_dir_init):
            fsutils.get_fileptr(plugin_dir_init, True).close()
Ejemplo n.º 12
0
def check_dst(path):
    file_size = os.path.getsize(path)
    fileptr = get_fileptr(path)

    if file_size > 3:
        string = fileptr.read(3)
    else:
        string = fileptr.read()

    fileptr.close()
    return string.startswith('LA:')
Ejemplo n.º 13
0
def check_pes(path):
    file_size = os.path.getsize(path)
    fileptr = get_fileptr(path)

    if file_size > 4:
        string = fileptr.read(4)
    else:
        string = fileptr.read()

    fileptr.close()
    return string in (PES_SIGNATURE, PEC_SIGNATURE)
Ejemplo n.º 14
0
def check_plt(path):
    file_size = os.path.getsize(path)
    fileptr = get_fileptr(path)

    if file_size > 20:
        string = fileptr.read(20)
    else:
        string = fileptr.read()

    fileptr.close()
    return string.startswith('IN;')
Ejemplo n.º 15
0
 def load_logs(self, log_path):
     if not os.path.lexists(log_path):
         return
     fileptr = get_fileptr(log_path)
     self.logs = []
     while True:
         line = fileptr.readline()
         if not line:
             break
         self.logs.append(line)
     self.parse_logs()
     self.change_title(log_path)
Ejemplo n.º 16
0
def check_fig(path):
    file_size = os.path.getsize(path)
    fileptr = get_fileptr(path)
    magic = '#FIG 3'

    if file_size > len(magic):
        string = fileptr.read(len(magic))
    else:
        string = fileptr.read()

    fileptr.close()
    return string.startswith(magic)
Ejemplo n.º 17
0
def check_xml_(path):
    fileptr = get_fileptr(path)
    ret = False
    i = 0
    while i < 20:
        line = fileptr.readline()
        if not line.find('<?xml ') == -1:
            ret = True
            break
        i += 1
    fileptr.close()
    return ret
Ejemplo n.º 18
0
def check_scribus_pal(path):
    fileptr = get_fileptr(path)
    ret = False
    i = 0
    while i < 20:
        line = fileptr.readline()
        if not line.find(SP_TAG) == -1:
            ret = True
            break
        i += 1
    fileptr.close()
    return ret
Ejemplo n.º 19
0
def check_corel_pal(path):
    fileptr = get_fileptr(path, binary=False)
    ret = False
    i = 0
    while i < 20:
        line = fileptr.readline()
        if not line.find('<palette') == -1:
            ret = True
            break
        i += 1
    fileptr.close()
    return ret
Ejemplo n.º 20
0
def check_svg(path):
    tag = None
    fileptr = get_fileptr(path)
    try:
        for event, el in cElementTree.iterparse(fileptr, ('start', )):
            tag = el.tag
            break
    except cElementTree.ParseError:
        pass
    finally:
        fileptr.close()
    return tag == '{http://www.w3.org/2000/svg}svg' or tag == 'svg'
Ejemplo n.º 21
0
def check_wmf(path):
    fileptr = get_fileptr(path)
    sign = fileptr.read(len(WMF_SIGNATURE))
    fileptr.seek(0)
    metatype = fileptr.read(2)
    fileptr.read(2)
    metaver = fileptr.read(2)
    fileptr.close()
    if sign == WMF_SIGNATURE:
        return True
    if metatype in METAFILETYPES and metaver in METAVERSIONS:
        return True
    return False
Ejemplo n.º 22
0
def check_plt(path):
    file_size = os.path.getsize(path)
    fileptr = get_fileptr(path)

    if file_size > 200:
        string = fileptr.read(200)
    else:
        string = fileptr.read()

    fileptr.close()
    if len(string.split("IN;")) > 1 and len(string.split(";")) > 2:
        if len(string.split(";PD")) > 1:
            return True
    return False
Ejemplo n.º 23
0
 def load_pattern(self):
     img_file = self.app.import_pattern(self.dlg)
     if img_file:
         fobj = fsutils.get_fileptr(img_file)
         pattern, flag = libimg.read_pattern(fobj.read())
         pattern_type = sk2const.PATTERN_TRUECOLOR
         if flag:
             pattern_type = sk2const.PATTERN_IMG
             if flag == 'EPS':
                 pattern_type = sk2const.PATTERN_EPS
         self.pattern_def[0] = pattern_type
         self.pattern_def[1] = pattern
         if self.callback:
             self.callback(self.get_pattern_def())
Ejemplo n.º 24
0
def check_soc(path):
    fileptr = get_fileptr(path, binary=False)
    ret = False
    i = 0
    while i < 20:
        line = fileptr.readline()
        if not line.find(SOC_PAL_TAG) == -1:
            ret = True
            break
        if not line.find(SOC_PAL_OO_TAG) == -1:
            ret = True
            break
        i += 1
    fileptr.close()
    return ret
Ejemplo n.º 25
0
 def read_history(self):
     if fsutils.isfile(self.history_file):
         fp = fsutils.get_fileptr(self.history_file)
         lines = [line.strip(' \n\r') for line in fp.readlines()]
         for line in lines:
             items = line.split('\t')
             if len(items) == 3:
                 status = int(items[0])
                 path = items[1]
                 try:
                     path = path.decode('utf-8')
                 except Exception:
                     path = path.decode(sys.getfilesystemencoding())
                 finally:
                     path = path.encode('utf-8')
                 timestamp = int(items[2])
                 self.history.append([status, path, timestamp])
         fp.close()
Ejemplo n.º 26
0
    def save(self, presenter, path=None, fileptr=None):
        self.presenter = presenter
        self.config = self.presenter.config
        self.model = presenter.model
        if path:
            self.fileptr = get_fileptr(path, True)
        elif fileptr:
            self.fileptr = fileptr
        else:
            msg = _('There is no file for writting')
            raise IOError(errno.ENODATA, msg, '')

        self.presenter.update()
        try:
            self.do_save()
        except Exception as e:
            LOG.error('Error saving file content %s', e)
            raise
        self.fileptr.close()
        self.fileptr = None
Ejemplo n.º 27
0
def check_sk2(path):
    ret = False
    fileptr = get_fileptr(path)
    ln = fileptr.readline()
    if ln[:len(SK2DOC_ID)] == SK2DOC_ID:
        if int(ln[len(SK2DOC_ID):]) <= int(SK2VER):
            ret = True
        else:
            fileptr.close()
            raise RuntimeError(_('Newer version of SK2 format is found!'))
    else:
        ln2 = fileptr.readline()
        if ln2[:len(SK2XML_ID)] == SK2XML_ID:
            if int(ln2[len(SK2XML_ID):]) <= int(SK2VER):
                ret = True
            else:
                fileptr.close()
                raise RuntimeError(_('Newer version of SK2 format is found!'))
    fileptr.close()
    return ret
Ejemplo n.º 28
0
 def load(self, filename=None):
     self.filename = filename
     if fsutils.lexists(filename):
         content_handler = XMLPrefReader(pref=self)
         error_handler = ErrorHandler()
         entity_resolver = EntityResolver()
         dtd_handler = DTDHandler()
         try:
             input_file = get_fileptr(filename)
             input_source = InputSource()
             input_source.setByteStream(input_file)
             xml_reader = xml.sax.make_parser()
             xml_reader.setContentHandler(content_handler)
             xml_reader.setErrorHandler(error_handler)
             xml_reader.setEntityResolver(entity_resolver)
             xml_reader.setDTDHandler(dtd_handler)
             xml_reader.parse(input_source)
             input_file.close()
         except Exception as e:
             LOG.error('Cannot read preferences from %s %s', filename, e)
Ejemplo n.º 29
0
 def load_logs(self, log_path):
     if not os.path.lexists(log_path):
         return
     fileptr = get_fileptr(log_path)
     self.entry.clear()
     self.entry.set_monospace(self.zoom)
     while True:
         line = fileptr.readline()
         if not line:
             break
         color = COLOR_MAP.get(line[:9].strip(), None)
         if not color:
             for item in COLOR_MAP:
                 if item in line:
                     color = COLOR_MAP[item]
                     break
         color = color or DARK
         self.entry.set_text_colors(color)
         self.entry.append(line)
     self.change_title(log_path)
Ejemplo n.º 30
0
    def load(self, filename=None):
        self.filename = filename
        if os.path.lexists(filename):
            try:
                fileobj = get_fileptr(filename)
            except Exception:
                return

            while True:
                line = fileobj.readline()
                if line.startswith('<?xml') or not line:
                    break
                if line.startswith('#'):
                    continue
                line = path_system('self.%s' % line)
                try:
                    code = compile(line, '<string>', 'exec')
                    exec code
                except Exception as e:
                    LOG.error('ERROR>>> %s\n%s', line, e)
            fileobj.close()