Draw Modify Spacing
The ooodev.format.draw.modify.indent_space.Spacing
, class is used to modify the values seen in Fig. 900 of a style.
Setting the Spacing
from __future__ import annotations
import uno
from ooodev.draw import Draw, DrawDoc, ZoomKind
from ooodev.format.draw.modify import FamilyGraphics, DrawStyleFamilyKind
from ooodev.format.draw.modify.indent_space import Spacing
from ooodev.loader.lo import Lo
def main() -> int:
with Lo.Loader(connector=Lo.ConnectSocket()):
doc = DrawDoc(Draw.create_draw_doc())
doc.set_visible()
Lo.delay(700)
doc.zoom(ZoomKind.ZOOM_75_PERCENT)
slide = doc.get_slide()
width = 100
height = 50
x = 10
y = 10
rect = slide.draw_rectangle(x=x, y=y, width=width, height=height)
rect.set_string("Hello World!")
style = Spacing(
above=5,
below=5.5,
style_name=FamilyGraphics.DEFAULT_DRAWING_STYLE,
style_family=DrawStyleFamilyKind.GRAPHICS,
)
doc.apply_styles(style)
Lo.delay(1_000)
doc.close_doc()
return 0
if __name__ == "__main__":
raise SystemExit(main())
Running the above code will produce the following results in the Draw dialog.
Note
The style_no_space
for the Spacing
class constructor argument is suppose to set the styles ParaContextMargin
property.
The ParaContextMargin
is suppose to be part of the com.sun.star.style.ParagraphProperties
service;
However, for some reason it is missing for Draw styles. Setting this style_no_space
argument will result
in a print warning message in verbose mode. It is better to not set this argument.
It is left in just in case it starts working in the future.
There is a option in the Indent and Spacing dialog Do not add space between paragraphs of the same style
as seen in Fig. 900.
It seems to work, but it is not clear how it is implemented. It is not clear if it is a style property.
Getting spacing from a style
# ... other code
f_style = Spacing.from_style(
doc=doc.component,
style_name=style.prop_style_name,
style_family=style.prop_style_family_name
)
assert f_style is not None
assert f_style.prop_style_name == str(FamilyGraphics.DEFAULT_DRAWING_STYLE)