#!/usr/bin/env python3 import uno import unohelper from com.sun.star.io import IOException, XOutputStream from .easymain import Paths, create_instance # UNO Enum class MessageBoxType(): """Class for import enum `See Api MessageBoxType `_ """ from com.sun.star.awt.MessageBoxType \ import MESSAGEBOX, INFOBOX, WARNINGBOX, ERRORBOX, QUERYBOX class LineStyle(): from com.sun.star.drawing.LineStyle import NONE, SOLID, DASH class FillStyle(): from com.sun.star.drawing.FillStyle import NONE, SOLID, GRADIENT, HATCH, BITMAP class BitmapMode(): from com.sun.star.drawing.BitmapMode import REPEAT, STRETCH, NO_REPEAT class CellContentType(): from com.sun.star.table.CellContentType import EMPTY, VALUE, TEXT, FORMULA class IOStream(object): """Classe for input/output stream""" class OutputStream(unohelper.Base, XOutputStream): def __init__(self): self._buffer = b'' self.closed = 0 @property def buffer(self): return self._buffer def closeOutput(self): self.closed = 1 def writeBytes(self, seq): if seq.value: self._buffer = seq.value def flush(self): pass @classmethod def buffer(cls): return io.BytesIO() @classmethod def input(cls, buffer): service = 'com.sun.star.io.SequenceInputStream' stream = create_instance(service, True) stream.initialize((uno.ByteSequence(buffer.getvalue()),)) return stream @classmethod def output(cls): return cls.OutputStream() @classmethod def to_bin(cls, stream): buffer = cls.OutputStream() _, data = stream.readBytes(buffer, stream.available()) return data.value def get_input_stream(data): stream = create_instance('com.sun.star.io.SequenceInputStream', True) stream.initialize((data,)) return stream class BaseObjectProperties(): def __init__(self, obj): self._obj = obj def __enter__(self): return self def __exit__(self, exc_type, exc_value, traceback): pass def __contains__(self, item): return hasattr(self.obj, item) def __setattr__(self, name, value): if name == '_obj': super().__setattr__(name, value) else: if name in self: if name == 'FillBitmapURL': value = Paths.to_url(value) setattr(self.obj, name, value) else: object.__setattr__(self, name, value) def __getattr__(self, name): return self.obj.getPropertyValue(name) @property def obj(self): return self._obj