192 lines
4.0 KiB
Python
192 lines
4.0 KiB
Python
#!/usr/bin/env python3
|
|
|
|
from com.sun.star.awt import Size, Point
|
|
from .easymain import BaseObject, set_properties
|
|
|
|
|
|
class LOShapes(object):
|
|
_type = 'ShapeCollection'
|
|
|
|
def __init__(self, obj):
|
|
self._obj = obj
|
|
|
|
def __len__(self):
|
|
return self.obj.Count
|
|
|
|
def __enter__(self):
|
|
return self
|
|
|
|
def __exit__(self, exc_type, exc_value, traceback):
|
|
pass
|
|
|
|
def __iter__(self):
|
|
self._index = 0
|
|
return self
|
|
|
|
def __next__(self):
|
|
try:
|
|
s = self.obj[self._index]
|
|
shape = LOShape(s)
|
|
except IndexError:
|
|
raise StopIteration
|
|
|
|
self._index += 1
|
|
return shape
|
|
|
|
def __str__(self):
|
|
return 'Shapes'
|
|
|
|
@property
|
|
def obj(self):
|
|
return self._obj
|
|
|
|
|
|
class LOShape(BaseObject):
|
|
IMAGE = 'com.sun.star.drawing.GraphicObjectShape'
|
|
|
|
def __init__(self, obj):
|
|
self._obj = obj
|
|
|
|
def __str__(self):
|
|
return f'Shape: {self.name}'
|
|
|
|
@property
|
|
def obj(self):
|
|
return self._obj
|
|
|
|
@property
|
|
def properties(self):
|
|
# ~ properties = self.obj.PropertySetInfo.Properties
|
|
# ~ data = {p.Name: getattr(self.obj, p.Name) for p in properties}
|
|
data = self.obj.PropertySetInfo.Properties
|
|
keys = [p.Name for p in data]
|
|
values = self.obj.getPropertyValues(keys)
|
|
data = dict(zip(keys, values))
|
|
return data
|
|
@properties.setter
|
|
def properties(self, values):
|
|
set_properties(self.obj, values)
|
|
|
|
@property
|
|
def shape_type(self):
|
|
return self.obj.ShapeType
|
|
|
|
@property
|
|
def name(self):
|
|
return self.obj.Name
|
|
@name.setter
|
|
def name(self, value):
|
|
self.obj.Name = value
|
|
|
|
@property
|
|
def is_image(self):
|
|
return self.shape_type == self.IMAGE
|
|
|
|
@property
|
|
def is_shape(self):
|
|
return self.shape_type != self.IMAGE
|
|
|
|
@property
|
|
def size(self):
|
|
s = self.obj.Size
|
|
return s
|
|
@size.setter
|
|
def size(self, value):
|
|
self.obj.Size = value
|
|
|
|
@property
|
|
def width(self):
|
|
s = self.obj.Size
|
|
return s.Width
|
|
@width.setter
|
|
def width(self, value):
|
|
s = self.size
|
|
s.Width = value
|
|
self.size = s
|
|
|
|
@property
|
|
def height(self):
|
|
s = self.obj.Size
|
|
return s.Height
|
|
@height.setter
|
|
def height(self, value):
|
|
s = self.size
|
|
s.Height = value
|
|
self.size = s
|
|
|
|
@property
|
|
def position(self):
|
|
return self.obj.Position
|
|
@property
|
|
def x(self):
|
|
return self.position.X
|
|
@x.setter
|
|
def x(self, value):
|
|
self.obj.Position = Point(value, self.y)
|
|
|
|
@property
|
|
def y(self):
|
|
return self.position.Y
|
|
@y.setter
|
|
def y(self, value):
|
|
self.obj.Position = Point(self.x, value)
|
|
|
|
@property
|
|
def possize(self):
|
|
data = {
|
|
'Width': self.size.Width,
|
|
'Height': self.size.Height,
|
|
'X': self.position.X,
|
|
'Y': self.position.Y,
|
|
}
|
|
return data
|
|
@possize.setter
|
|
def possize(self, value):
|
|
self.obj.Size = Size(value['Width'], value['Height'])
|
|
self.obj.Position = Point(value['X'], value['Y'])
|
|
|
|
@property
|
|
def string(self):
|
|
return self.obj.String
|
|
@string.setter
|
|
def string(self, value):
|
|
self.obj.String = value
|
|
|
|
@property
|
|
def title(self):
|
|
return self.obj.Title
|
|
@title.setter
|
|
def title(self, value):
|
|
self.obj.Title = value
|
|
|
|
@property
|
|
def description(self):
|
|
return self.obj.Description
|
|
@description.setter
|
|
def description(self, value):
|
|
self.obj.Description = value
|
|
|
|
@property
|
|
def in_background(self):
|
|
return self.obj.LayerID
|
|
@in_background.setter
|
|
def in_background(self, value):
|
|
self.obj.LayerID = value
|
|
|
|
@property
|
|
def layerid(self):
|
|
return self.obj.LayerID
|
|
@layerid.setter
|
|
def layerid(self, value):
|
|
self.obj.LayerID = value
|
|
|
|
@property
|
|
def is_range(self):
|
|
return False
|
|
|
|
@property
|
|
def is_cell(self):
|
|
return False
|
|
|
|
|