Source code for ooodev.form.partial.form_partial
"""Partial Class for Form Component. Not intended to be used directly."""
# region Imports
from __future__ import annotations
from typing import Any, cast, Iterable, TYPE_CHECKING
import datetime
from com.sun.star.form import XForms
from com.sun.star.container import XChild
from com.sun.star.awt import XControl
from com.sun.star.awt import XControlModel
from com.sun.star.drawing import XDrawPage
from ooo.dyn.text.text_content_anchor_type import TextContentAnchorType
from ooodev.exceptions import ex as mEx
from ooodev.form import forms as mForms
from ooodev.proto.component_proto import ComponentT
from ooodev.utils import info as mInfo
from ooodev.loader import lo as mLo
from ooodev.utils.context.lo_context import LoContext
from ooodev.utils.kind.border_kind import BorderKind
from ooodev.utils.kind.date_format_kind import DateFormatKind
from ooodev.utils.kind.orientation_kind import OrientationKind
from ooodev.utils.kind.state_kind import StateKind
from ooodev.utils.kind.time_format_kind import TimeFormatKind
from ooodev.utils.kind.tri_state_kind import TriStateKind
from ooodev.form.controls.form_ctl_button import FormCtlButton
from ooodev.form.controls.form_ctl_check_box import FormCtlCheckBox
from ooodev.form.controls.form_ctl_combo_box import FormCtlComboBox
from ooodev.form.controls.form_ctl_currency_field import FormCtlCurrencyField
from ooodev.form.controls.form_ctl_date_field import FormCtlDateField
from ooodev.form.controls.form_ctl_file import FormCtlFile
from ooodev.form.controls.form_ctl_formatted_field import FormCtlFormattedField
from ooodev.form.controls.form_ctl_grid import FormCtlGrid
from ooodev.form.controls.form_ctl_group_box import FormCtlGroupBox
from ooodev.form.controls.form_ctl_image_button import FormCtlImageButton
from ooodev.form.controls.form_ctl_fixed_text import FormCtlFixedText
from ooodev.form.controls.form_ctl_hidden import FormCtlHidden
from ooodev.form.controls.form_ctl_list_box import FormCtlListBox
from ooodev.form.controls.form_ctl_navigation_tool_bar import FormCtlNavigationToolBar
from ooodev.form.controls.form_ctl_numeric_field import FormCtlNumericField
from ooodev.form.controls.form_ctl_pattern_field import FormCtlPatternField
from ooodev.form.controls.form_ctl_radio_button import FormCtlRadioButton
from ooodev.form.controls.form_ctl_rich_text import FormCtlRichText
from ooodev.form.controls.form_ctl_scroll_bar import FormCtlScrollBar
from ooodev.form.controls.form_ctl_spin_button import FormCtlSpinButton
from ooodev.form.controls.form_ctl_submit_button import FormCtlSubmitButton
from ooodev.form.controls.form_ctl_text_field import FormCtlTextField
from ooodev.form.controls.form_ctl_time_field import FormCtlTimeField
from ooodev.form.controls.database.form_ctl_db_check_box import FormCtlDbCheckBox
from ooodev.form.controls.database.form_ctl_db_combo_box import FormCtlDbComboBox
from ooodev.form.controls.database.form_ctl_db_currency_field import FormCtlDbCurrencyField
from ooodev.form.controls.database.form_ctl_db_date_field import FormCtlDbDateField
from ooodev.form.controls.database.form_ctl_db_formatted_field import FormCtlDbFormattedField
from ooodev.form.controls.database.form_ctl_db_list_box import FormCtlDbListBox
from ooodev.form.controls.database.form_ctl_db_numeric_field import FormCtlDbNumericField
from ooodev.form.controls.database.form_ctl_db_pattern_field import FormCtlDbPatternField
from ooodev.form.controls.database.form_ctl_db_radio_button import FormCtlDbRadioButton
from ooodev.form.controls.database.form_ctl_db_text_field import FormCtlDbTextField
from ooodev.form.controls.database.form_ctl_db_time_field import FormCtlDbTimeField
if TYPE_CHECKING:
from com.sun.star.form.component import Form
from com.sun.star.lang import XComponent
from com.sun.star.drawing import XShape
from ooodev.form.controls.form_ctl_base import FormCtlBase
from ooodev.loader.inst.lo_inst import LoInst
from ooodev.units.unit_obj import UnitT
from ooodev.proto.style_obj import StyleT
from ooodev.utils.type_var import PathOrStr
# endregion Imports
[docs]class FormPartial:
"""
Method for adding controls and other form elements to a form.
"""
[docs] def __init__(
self, owner: ComponentT, draw_page: XDrawPage, component: Form, lo_inst: LoInst | None = None
) -> None:
"""
Constructor
Args:
owner (ComponentT): Class that owns this component.
draw_page (XDrawPage): Draw Page
component (Form): Form component
"""
if lo_inst is None:
self.__lo_inst = mLo.Lo.current_lo
else:
self.__lo_inst = lo_inst
assert mInfo.Info.support_service(
component, "com.sun.star.form.component.Form"
), "component must support com.sun.star.form.component.Form service"
self.__owner = owner
self.__component = component
self.__draw_page = draw_page
with LoContext(self.__lo_inst):
forms = mLo.Lo.qi(XForms, component.getParent(), True)
self.__doc = cast("XComponent", mLo.Lo.qi(XChild, forms, True).getParent())
# region Insert Control Methods
[docs] def insert_control_button(
self,
*,
x: int | UnitT,
y: int | UnitT,
width: int | UnitT,
height: int | UnitT = 6,
label: str = "",
anchor_type: TextContentAnchorType = TextContentAnchorType.AT_PARAGRAPH,
name: str = "",
styles: Iterable[StyleT] | None = None,
) -> FormCtlButton:
"""
Inserts a button control.
By Default the button has tab stop and does focus on click.
Args:
doc (XComponent): Component
x (int | UnitT): X Coordinate
y (int | UnitT): Y Coordinate
width (int, UnitT, optional): Button Width.
height (int, UnitT, optional): Button Height. Defaults to ``6`` mm.
label (str, optional): Button label (text).
anchor_type (TextContentAnchorType, optional): Control Anchor Type. Defaults to ``TextContentAnchorType.AT_PARAGRAPH``
name (str, optional): Name of control. Must be a unique name. If empty, a unique name is generated.
parent_form (XNameContainer, optional): Parent form in which to add control.
styles (Iterable[StyleT], optional): One or more styles to apply to the control shape.
Returns:
FormCtlButton: Button Control
"""
# when control is created, it will automatically get the same lo instance as LoContext.
with LoContext(self.__lo_inst):
result = mForms.Forms.insert_control_button(
doc=self.__doc,
draw_page=self.__draw_page,
x=x,
y=y,
width=width,
height=height,
label=label,
anchor_type=anchor_type,
name=name,
parent_form=self.__component,
styles=styles,
)
return result
[docs] def insert_control_check_box(
self,
*,
x: int | UnitT,
y: int | UnitT,
width: int | UnitT,
height: int | UnitT = 6,
label: str = "",
tri_state: bool = True,
state: TriStateKind = TriStateKind.NOT_CHECKED,
border: BorderKind = BorderKind.BORDER_3D,
anchor_type: TextContentAnchorType = TextContentAnchorType.AT_PARAGRAPH,
name: str = "",
styles: Iterable[StyleT] | None = None,
) -> FormCtlCheckBox:
"""
Inserts a check box control into the form.
Args:
x (int | UnitT): X Coordinate
y (int | UnitT): Y Coordinate
width (int | UnitT): Width
height (int, UnitT, optional): Height. Defaults to ``6`` mm.
label (str, optional): Label (text) to assign to checkbox.
tri_state (TriStateKind, optional): Specifies that the control may have the state "don't know". Defaults to ``True``.
state (TriStateKind, optional): Specifies the state of the control.Defaults to ``TriStateKind.CHECKED``.
border (BorderKind, optional): Border option. Defaults to ``BorderKind.BORDER_3D``.
anchor_type (TextContentAnchorType, optional): Control Anchor Type. Defaults to ``TextContentAnchorType.AT_PARAGRAPH``
name (str, optional): Name of control. Must be a unique name. If empty, a unique name is generated.
styles (Iterable[StyleT], optional): One or more styles to apply to the control shape.
Returns:
FormCtlCheckBox: Checkbox Control
Hint:
- ``BorderKind`` can be imported from ``ooodev.utils.kind.border_kind``.
- ``TriStateKind`` can be imported from ``ooodev.utils.kind.tri_state_kind``.
"""
# when control is created, it will automatically get the same lo instance as LoContext.
with LoContext(self.__lo_inst):
result = mForms.Forms.insert_control_check_box(
doc=self.__doc,
draw_page=self.__draw_page,
x=x,
y=y,
width=width,
height=height,
label=label,
tri_state=tri_state,
state=state,
border=border,
anchor_type=anchor_type,
name=name,
parent_form=self.__component,
styles=styles,
)
return result
[docs] def insert_control_combo_box(
self,
*,
x: int | UnitT,
y: int | UnitT,
width: int | UnitT,
height: int | UnitT = 6,
entries: Iterable[str] | None = None,
max_text_len: int = 0,
drop_down: bool = True,
read_only: bool = False,
border: BorderKind = BorderKind.BORDER_3D,
anchor_type: TextContentAnchorType = TextContentAnchorType.AT_PARAGRAPH,
name: str = "",
styles: Iterable[StyleT] | None = None,
) -> FormCtlComboBox:
"""
Inserts a ComboBox control into the form.
Args:
x (int | UnitT): X Coordinate
y (int | UnitT): Y Coordinate
width (int | UnitT): Width
height (int, UnitT, optional): Height. Defaults to ``6`` mm.
entries (Iterable[str], optional): Combo box entries
tri_state (TriStateKind, optional): Specifies that the control may have the state "don't know". Defaults to ``True``.
state (TriStateKind, optional): Specifies the state of the control.Defaults to ``TriStateKind.CHECKED``.
max_text_len (int, optional): Specifies the maximum character count, There's no limitation, if set to 0. Defaults to ``0``.
drop_down (bool, optional): Specifies if the control has a drop down button. Defaults to ``True``.
read_only (bool, optional): Specifies that the content of the control cannot be modified by the user. Defaults to ``False``.
border (BorderKind, optional): Border option. Defaults to ``BorderKind.BORDER_3D``.
anchor_type (TextContentAnchorType, optional): Control Anchor Type. Defaults to ``TextContentAnchorType.AT_PARAGRAPH``
name (str, optional): Name of control. Must be a unique name. If empty, a unique name is generated.
styles (Iterable[StyleT], optional): One or more styles to apply to the control shape.
Returns:
FormCtlComboBox: ComboBox Control
Hint:
- ``BorderKind`` can be imported from ``ooodev.utils.kind.border_kind``.
"""
# when control is created, it will automatically get the same lo instance as LoContext.
with LoContext(self.__lo_inst):
result = mForms.Forms.insert_control_combo_box(
doc=self.__doc,
draw_page=self.__draw_page,
x=x,
y=y,
width=width,
height=height,
entries=entries,
max_text_len=max_text_len,
drop_down=drop_down,
read_only=read_only,
border=border,
anchor_type=anchor_type,
name=name,
parent_form=self.__component,
styles=styles,
)
return result
[docs] def insert_control_currency_field(
self,
*,
x: int | UnitT,
y: int | UnitT,
width: int | UnitT,
height: int | UnitT = 6,
min_value: float = -1000000.0,
max_value: float = 1000000.0,
spin_button: bool = False,
increment: int = 1,
accuracy: int = 2,
border: BorderKind = BorderKind.BORDER_3D,
anchor_type: TextContentAnchorType = TextContentAnchorType.AT_PARAGRAPH,
name: str = "",
styles: Iterable[StyleT] | None = None,
) -> FormCtlCurrencyField:
"""
Inserts a currency field control into the form.
Args:
x (int | UnitT): X Coordinate
y (int | UnitT): Y Coordinate
width (int | UnitT): Width
height (int, UnitT, optional): Height. Defaults to ``6`` mm.
min_value (float, optional): Specifies the smallest value that can be entered in the control. Defaults to ``-1000000.0``.
max_value (float, optional): Specifies the largest value that can be entered in the control. Defaults to ``1000000.0``.
spin_button (bool, optional): When ``True``, a spin button is present. Defaults to ``False``.
increment (int, optional): The step when the spin button is pressed. Defaults to ``1``.
accuracy (int, optional): Specifies the decimal accuracy. Default is ``2`` decimal digits
border (BorderKind, optional): Border option. Defaults to ``BorderKind.BORDER_3D``.
anchor_type (TextContentAnchorType, optional): Control Anchor Type. Defaults to ``TextContentAnchorType.AT_PARAGRAPH``
name (str, optional): Name of control. Must be a unique name. If empty, a unique name is generated.
styles (Iterable[StyleT], optional): One or more styles to apply to the control shape.
Returns:
FormCtlCurrencyField: Currency Field Control
Hint:
- ``BorderKind`` can be imported from ``ooodev.utils.kind.border_kind``.
"""
# when control is created, it will automatically get the same lo instance as LoContext.
with LoContext(self.__lo_inst):
result = mForms.Forms.insert_control_currency_field(
doc=self.__doc,
draw_page=self.__draw_page,
x=x,
y=y,
width=width,
height=height,
min_value=min_value,
max_value=max_value,
spin_button=spin_button,
increment=increment,
accuracy=accuracy,
border=border,
anchor_type=anchor_type,
name=name,
parent_form=self.__component,
styles=styles,
)
return result
[docs] def insert_control_date_field(
self,
*,
x: int | UnitT,
y: int | UnitT,
width: int | UnitT,
height: int | UnitT = 6,
min_date: datetime.datetime = datetime.datetime(1900, 1, 1, 0, 0, 0, 0),
max_date: datetime.datetime = datetime.datetime(2200, 12, 31, 0, 0, 0, 0),
drop_down: bool = True,
date_format: DateFormatKind = DateFormatKind.SYSTEM_SHORT,
border: BorderKind = BorderKind.BORDER_3D,
anchor_type: TextContentAnchorType = TextContentAnchorType.AT_PARAGRAPH,
name: str = "",
styles: Iterable[StyleT] | None = None,
) -> FormCtlDateField:
"""
Inserts a Date field control into the form.
Args:
x (int | UnitT): X Coordinate
y (int | UnitT): Y Coordinate
width (int | UnitT): Width
height (int, UnitT, optional): Height. Defaults to ``6`` mm.
date_value (datetime.datetime | None, optional): Specifics control datetime. Defaults to ``None``.
min_date (datetime.datetime, optional): Specifics control min datetime. Defaults to ``datetime(1900, 1, 1, 0, 0, 0, 0)``.
max_date (datetime.datetime, optional): Specifics control Min datetime. Defaults to ``datetime(2200, 12, 31, 0, 0, 0, 0)``.
drop_down (bool, optional): Specifies if the control is a dropdown. Defaults to ``True``.
date_format (DateFormatKind, optional): Date format. Defaults to ``DateFormatKind.SYSTEM_SHORT``.
border (BorderKind, optional): Border option. Defaults to ``BorderKind.BORDER_3D``.
anchor_type (TextContentAnchorType, optional): Control Anchor Type. Defaults to ``TextContentAnchorType.AT_PARAGRAPH``
name (str, optional): Name of control. Must be a unique name. If empty, a unique name is generated.
styles (Iterable[StyleT], optional): One or more styles to apply to the control shape.
Returns:
FormCtlDateField: Date Field Control
Hint:
- ``BorderKind`` can be imported from ``ooodev.utils.kind.border_kind``.
- ``DateFormatKind`` can be imported from ``ooodev.utils.kind.date_format_kind``.
"""
# when control is created, it will automatically get the same lo instance as LoContext.
with LoContext(self.__lo_inst):
results = mForms.Forms.insert_control_date_field(
doc=self.__doc,
draw_page=self.__draw_page,
x=x,
y=y,
width=width,
height=height,
min_date=min_date,
max_date=max_date,
drop_down=drop_down,
date_format=date_format,
border=border,
anchor_type=anchor_type,
name=name,
parent_form=self.__component,
styles=styles,
)
return results
[docs] def insert_control_file(
self,
*,
x: int | UnitT,
y: int | UnitT,
width: int | UnitT,
height: int | UnitT = 6,
anchor_type: TextContentAnchorType = TextContentAnchorType.AT_PARAGRAPH,
name: str = "",
styles: Iterable[StyleT] | None = None,
) -> FormCtlFile:
"""
Inserts a file control.
Args:
x (int | UnitT): X Coordinate
y (int | UnitT): Y Coordinate
width (int, UnitT, optional): Width.
height (int, UnitT, optional): Height. Defaults to ``6`` mm.
anchor_type (TextContentAnchorType, optional): Control Anchor Type. Defaults to ``TextContentAnchorType.AT_PARAGRAPH``
name (str, optional): Name of control. Must be a unique name. If empty, a unique name is generated.
styles (Iterable[StyleT], optional): One or more styles to apply to the control shape.
Returns:
FormCtlFile: File Control
"""
# when control is created, it will automatically get the same lo instance as LoContext.
with LoContext(self.__lo_inst):
results = mForms.Forms.insert_control_file(
doc=self.__doc,
draw_page=self.__draw_page,
x=x,
y=y,
width=width,
height=height,
anchor_type=anchor_type,
name=name,
parent_form=self.__component,
styles=styles,
)
return results
[docs] def insert_control_formatted_field(
self,
*,
x: int | UnitT,
y: int | UnitT,
width: int | UnitT,
height: int | UnitT = 6,
min_value: float = -1000000.0,
max_value: float = 1000000.0,
spin_button: bool = False,
border: BorderKind = BorderKind.BORDER_3D,
anchor_type: TextContentAnchorType = TextContentAnchorType.AT_PARAGRAPH,
name: str = "",
styles: Iterable[StyleT] | None = None,
) -> FormCtlFormattedField:
"""
Inserts a currency field control into the form.
Args:
x (int | UnitT): X Coordinate
y (int | UnitT): Y Coordinate
width (int | UnitT): Width
height (int, UnitT, optional): Height. Defaults to ``6`` mm.
min_value (float, optional): Specifies the smallest value that can be entered in the control. Defaults to ``-1000000.0``.
max_value (float, optional): Specifies the largest value that can be entered in the control. Defaults to ``1000000.0``.
spin_button (bool, optional): When ``True``, a spin button is present. Defaults to ``False``.
border (BorderKind, optional): Border option. Defaults to ``BorderKind.BORDER_3D``.
anchor_type (TextContentAnchorType, optional): Control Anchor Type. Defaults to ``TextContentAnchorType.AT_PARAGRAPH``
name (str, optional): Name of control. Must be a unique name. If empty, a unique name is generated.
styles (Iterable[StyleT], optional): One or more styles to apply to the control shape.
Returns:
FormCtlFormattedField: Currency Field Control.
Hint:
- ``BorderKind`` can be imported from ``ooodev.utils.kind.border_kind``.
"""
# when control is created, it will automatically get the same lo instance as LoContext.
with LoContext(self.__lo_inst):
results = mForms.Forms.insert_control_formatted_field(
doc=self.__doc,
draw_page=self.__draw_page,
x=x,
y=y,
width=width,
height=height,
min_value=min_value,
max_value=max_value,
spin_button=spin_button,
border=border,
anchor_type=anchor_type,
name=name,
parent_form=self.__component,
styles=styles,
)
return results
[docs] def insert_control_group_box(
self,
*,
x: int | UnitT,
y: int | UnitT,
width: int | UnitT,
height: int | UnitT,
label: str = "",
anchor_type: TextContentAnchorType = TextContentAnchorType.AT_PARAGRAPH,
name: str = "",
styles: Iterable[StyleT] | None = None,
) -> FormCtlGroupBox:
"""
Inserts a Groupbox control into the form.
Args:
x (int | UnitT): X Coordinate
y (int | UnitT): Y Coordinate
width (int | UnitT): Width
height (int, UnitT): Height.
label (str, optional): Groupbox label.
anchor_type (TextContentAnchorType, optional): Control Anchor Type. Defaults to ``TextContentAnchorType.AT_PARAGRAPH``
name (str, optional): Name of control. Must be a unique name. If empty, a unique name is generated.
styles (Iterable[StyleT], optional): One or more styles to apply to the control shape.
Returns:
FormCtlGroupBox: Groupbox Control
"""
# when control is created, it will automatically get the same lo instance as LoContext.
with LoContext(self.__lo_inst):
results = mForms.Forms.insert_control_group_box(
doc=self.__doc,
draw_page=self.__draw_page,
x=x,
y=y,
width=width,
height=height,
label=label,
anchor_type=anchor_type,
name=name,
parent_form=self.__component,
styles=styles,
)
return results
[docs] def insert_control_grid(
self,
*,
x: int | UnitT,
y: int | UnitT,
width: int | UnitT,
height: int | UnitT,
label: str = "",
anchor_type: TextContentAnchorType = TextContentAnchorType.AT_PARAGRAPH,
name: str = "",
styles: Iterable[StyleT] | None = None,
) -> FormCtlGrid:
"""
Inserts a Grid control.
Args:
x (int | UnitT): X Coordinate
y (int | UnitT): Y Coordinate
width (int | UnitT): Width
height (int, UnitT): Height.
label (str, optional): Grid label.
anchor_type (TextContentAnchorType, optional): Control Anchor Type. Defaults to ``TextContentAnchorType.AT_PARAGRAPH``
name (str, optional): Name of control. Must be a unique name. If empty, a unique name is generated.
styles (Iterable[StyleT], optional): One or more styles to apply to the control shape.
Returns:
FormCtlGrid: Grid Control
"""
# when control is created, it will automatically get the same lo instance as LoContext.
with LoContext(self.__lo_inst):
results = mForms.Forms.insert_control_grid(
doc=self.__doc,
draw_page=self.__draw_page,
x=x,
y=y,
width=width,
height=height,
label=label,
anchor_type=anchor_type,
name=name,
parent_form=self.__component,
styles=styles,
)
return results
[docs] def insert_control_image_button(
self,
*,
x: int | UnitT,
y: int | UnitT,
width: int | UnitT,
height: int | UnitT,
image_url: PathOrStr = "",
border: BorderKind = BorderKind.BORDER_3D,
anchor_type: TextContentAnchorType = TextContentAnchorType.AT_PARAGRAPH,
name: str = "",
styles: Iterable[StyleT] | None = None,
) -> FormCtlImageButton:
"""
Inserts an Image Button control into the form.
Args:
x (int | UnitT): X Coordinate.
y (int | UnitT): Y Coordinate.
width (int | UnitT): Width.
height (int, UnitT): Height.
image_url (PathOrStr, optional): Image URL. When setting the value it can be a string or a Path object.
If a string is passed it can be a URL or a path to a file.
Value such as ``file:///path/to/image.png`` and ``/path/to/image.png`` are valid.
Relative paths are supported.
border (BorderKind, optional): Border option. Defaults to ``BorderKind.BORDER_3D``.
anchor_type (TextContentAnchorType, optional): Control Anchor Type. Defaults to ``TextContentAnchorType.AT_PARAGRAPH``
name (str, optional): Name of control. Must be a unique name. If empty, a unique name is generated.
styles (Iterable[StyleT], optional): One or more styles to apply to the control shape.
Returns:
FormCtlImageButton: Image Button Control.
Hint:
- ``BorderKind`` can be imported from ``ooodev.utils.kind.border_kind``.
"""
# when control is created, it will automatically get the same lo instance as LoContext.
with LoContext(self.__lo_inst):
results = mForms.Forms.insert_control_image_button(
doc=self.__doc,
draw_page=self.__draw_page,
x=x,
y=y,
width=width,
height=height,
image_url=image_url,
border=border,
anchor_type=anchor_type,
name=name,
parent_form=self.__component,
styles=styles,
)
return results
[docs] def insert_control_label(
self,
*,
x: int | UnitT,
y: int | UnitT,
width: int | UnitT,
label: str,
height: int | UnitT = 6,
anchor_type: TextContentAnchorType = TextContentAnchorType.AT_PARAGRAPH,
name: str = "",
styles: Iterable[StyleT] | None = None,
) -> FormCtlFixedText:
"""
Inserts a Label control.
Args:
x (int | UnitT): X Coordinate.
y (int | UnitT): Y Coordinate.
width (int, UnitT, optional): Width.
label (str): Contents of label.
height (int, UnitT, optional): Height. Defaults to ``6`` mm.
anchor_type (TextContentAnchorType, optional): Control Anchor Type. Defaults to ``TextContentAnchorType.AT_PARAGRAPH``
name (str, optional): Name of control. Must be a unique name. If empty, a unique name is generated.
styles (Iterable[StyleT], optional): One or more styles to apply to the control shape.
Returns:
FormCtlFixedText: Label Control.
"""
# when control is created, it will automatically get the same lo instance as LoContext.
with LoContext(self.__lo_inst):
results = mForms.Forms.insert_control_label(
doc=self.__doc,
draw_page=self.__draw_page,
x=x,
y=y,
width=width,
label=label,
height=height,
anchor_type=anchor_type,
name=name,
parent_form=self.__component,
styles=styles,
)
return results
[docs] def insert_control_list_box(
self,
*,
x: int | UnitT,
y: int | UnitT,
width: int | UnitT,
height: int | UnitT,
entries: Iterable[str] | None = None,
drop_down: bool = True,
read_only: bool = False,
line_count: int = 5,
multi_select: bool = False,
border: BorderKind = BorderKind.BORDER_3D,
anchor_type: TextContentAnchorType = TextContentAnchorType.AT_PARAGRAPH,
name: str = "",
styles: Iterable[StyleT] | None = None,
) -> FormCtlListBox:
"""
Inserts a ListBox control into the form.
Args:
x (int | UnitT): X Coordinate.
y (int | UnitT): Y Coordinate.
width (int | UnitT): Width.
height (int, UnitT): Height.
entries (Iterable[str], optional): Combo box entries
drop_down (bool, optional): Specifies if the control has a drop down button. Defaults to ``True``.
read_only (bool, optional): Specifies that the content of the control cannot be modified by the user. Defaults to ``False``.
line_count (int, optional): Specifies the number of lines to display. Defaults to ``5``.
multi_select (int, optional): Specifies if multiple entries can be selected. Defaults to ``False``.
border (BorderKind, optional): Border option. Defaults to ``BorderKind.BORDER_3D``.
anchor_type (TextContentAnchorType, optional): Control Anchor Type. Defaults to ``TextContentAnchorType.AT_PARAGRAPH``
name (str, optional): Name of control. Must be a unique name. If empty, a unique name is generated.
styles (Iterable[StyleT], optional): One or more styles to apply to the control shape.
Returns:
FormCtlListBox: ListBox Control.
Hint:
- ``BorderKind`` can be imported from ``ooodev.utils.kind.border_kind``.
"""
# when control is created, it will automatically get the same lo instance as LoContext.
with LoContext(self.__lo_inst):
results = mForms.Forms.insert_control_list_box(
doc=self.__doc,
draw_page=self.__draw_page,
x=x,
y=y,
width=width,
height=height,
entries=entries,
drop_down=drop_down,
read_only=read_only,
line_count=line_count,
multi_select=multi_select,
border=border,
anchor_type=anchor_type,
name=name,
parent_form=self.__component,
styles=styles,
)
return results
[docs] def insert_control_numeric_field(
self,
*,
x: int | UnitT,
y: int | UnitT,
width: int | UnitT,
height: int | UnitT = 6,
min_value: float = -1000000.0,
max_value: float = 1000000.0,
spin_button: bool = False,
increment: int = 1,
accuracy: int = 2,
border: BorderKind = BorderKind.BORDER_3D,
anchor_type: TextContentAnchorType = TextContentAnchorType.AT_PARAGRAPH,
name: str = "",
styles: Iterable[StyleT] | None = None,
) -> FormCtlNumericField:
"""
Inserts a Numeric field control into the form.
Args:
x (int | UnitT): X Coordinate.
y (int | UnitT): Y Coordinate.
width (int | UnitT): Width.
height (int, UnitT, optional): Height. Defaults to ``6`` mm.
min_value (float, optional): Specifies the smallest value that can be entered in the control. Defaults to ``-1000000.0``.
max_value (float, optional): Specifies the largest value that can be entered in the control. Defaults to ``1000000.0``.
spin_button (bool, optional): When ``True``, a spin button is present. Defaults to ``False``.
increment (int, optional): The step when the spin button is pressed. Defaults to ``1``.
accuracy (int, optional): Specifies the decimal accuracy. Default is ``2`` decimal digits
border (BorderKind, optional): Border option. Defaults to ``BorderKind.BORDER_3D``.
anchor_type (TextContentAnchorType, optional): Control Anchor Type. Defaults to ``TextContentAnchorType.AT_PARAGRAPH``
name (str, optional): Name of control. Must be a unique name. If empty, a unique name is generated.
styles (Iterable[StyleT], optional): One or more styles to apply to the control shape.
Returns:
FormCtlNumericField: Numeric Field Control.
Hint:
- ``BorderKind`` can be imported from ``ooodev.utils.kind.border_kind``.
"""
# when control is created, it will automatically get the same lo instance as LoContext.
with LoContext(self.__lo_inst):
results = mForms.Forms.insert_control_numeric_field(
doc=self.__doc,
draw_page=self.__draw_page,
x=x,
y=y,
width=width,
height=height,
min_value=min_value,
max_value=max_value,
spin_button=spin_button,
increment=increment,
accuracy=accuracy,
border=border,
anchor_type=anchor_type,
name=name,
parent_form=self.__component,
styles=styles,
)
return results
[docs] def insert_control_pattern_field(
self,
*,
x: int | UnitT,
y: int | UnitT,
width: int | UnitT,
height: int | UnitT = 6,
edit_mask: str = "",
literal_mask: str = "",
border: BorderKind = BorderKind.BORDER_3D,
anchor_type: TextContentAnchorType = TextContentAnchorType.AT_PARAGRAPH,
name: str = "",
styles: Iterable[StyleT] | None = None,
) -> FormCtlPatternField:
"""
Inserts a Pattern field control into the form.
Args:
x (int | UnitT): X Coordinate.
y (int | UnitT): Y Coordinate.
width (int | UnitT): Width.
height (int, UnitT, optional): Height. Defaults to ``6`` mm.
edit_mask (str, optional): Specifies a character code that determines what the user may enter. Defaults to ``""``.
literal_mask (str, optional): Specifies the initial values that are displayed in the pattern field. Defaults to ``""``.
border (BorderKind, optional): Border option. Defaults to ``BorderKind.BORDER_3D``.
anchor_type (TextContentAnchorType, optional): Control Anchor Type. Defaults to ``TextContentAnchorType.AT_PARAGRAPH``
name (str, optional): Name of control. Must be a unique name. If empty, a unique name is generated.
styles (Iterable[StyleT], optional): One or more styles to apply to the control shape.
Returns:
FormCtlPatternField: Pattern Field Control.
Hint:
- ``BorderKind`` can be imported from ``ooodev.utils.kind.border_kind``.
"""
# when control is created, it will automatically get the same lo instance as LoContext.
with LoContext(self.__lo_inst):
results = mForms.Forms.insert_control_pattern_field(
doc=self.__doc,
draw_page=self.__draw_page,
x=x,
y=y,
width=width,
height=height,
edit_mask=edit_mask,
literal_mask=literal_mask,
border=border,
anchor_type=anchor_type,
name=name,
parent_form=self.__component,
styles=styles,
)
return results
[docs] def insert_control_radio_button(
self,
*,
x: int | UnitT,
y: int | UnitT,
width: int | UnitT,
height: int | UnitT = 6,
label: str = "",
state: StateKind = StateKind.NOT_CHECKED,
multiline: bool = False,
border: BorderKind = BorderKind.NONE,
anchor_type: TextContentAnchorType = TextContentAnchorType.AT_PARAGRAPH,
name: str = "",
styles: Iterable[StyleT] | None = None,
) -> FormCtlRadioButton:
"""
Inserts a radio button control into the form.
Args:
x (int | UnitT): X Coordinate.
y (int | UnitT): Y Coordinate.
width (int | UnitT): Width.
height (int, UnitT, optional): Height. Defaults to ``6`` mm.
label (str, optional): Label (text) of control.
anchor_type (TextContentAnchorType | None, optional): _description_. Defaults to None.
state (StateKind, optional): Specifies the state of the control.Defaults to ``StateKind.NOT_CHECKED``.
multiline (bool, optional): Specifies if the control can display multiple lines of text. Defaults to ``False``.
border (BorderKind, optional): Border option. Defaults to ``BorderKind.NONE``.
anchor_type (TextContentAnchorType, optional): Control Anchor Type. Defaults to ``TextContentAnchorType.AT_PARAGRAPH``
name (str, optional): Name of control. Must be a unique name. If empty, a unique name is generated.
styles (Iterable[StyleT], optional): One or more styles to apply to the control shape.
Returns:
FormCtlRadioButton: Radio Button Control.
Hint:
- ``BorderKind`` can be imported from ``ooodev.utils.kind.border_kind``.
- ``StateKind`` can be imported from ``ooodev.utils.kind.state_kind``.
"""
# when control is created, it will automatically get the same lo instance as LoContext.
with LoContext(self.__lo_inst):
results = mForms.Forms.insert_control_radio_button(
doc=self.__doc,
draw_page=self.__draw_page,
x=x,
y=y,
width=width,
height=height,
label=label,
state=state,
multiline=multiline,
border=border,
anchor_type=anchor_type,
name=name,
parent_form=self.__component,
styles=styles,
)
return results
[docs] def insert_control_rich_text(
self,
*,
x: int | UnitT,
y: int | UnitT,
width: int | UnitT,
height: int | UnitT,
border: BorderKind = BorderKind.BORDER_3D,
anchor_type: TextContentAnchorType = TextContentAnchorType.AT_PARAGRAPH,
name: str = "",
styles: Iterable[StyleT] | None = None,
) -> FormCtlRichText:
"""
Inserts a Rich Text control.
Args:
x (int | UnitT): X Coordinate.
y (int | UnitT): Y Coordinate.
width (int, UnitT, optional): Width.
height (int, UnitT, optional): Height.
border (BorderKind, optional): Border option. Defaults to ``BorderKind.BORDER_3D``.
anchor_type (TextContentAnchorType, optional): Control Anchor Type. Defaults to ``TextContentAnchorType.AT_PARAGRAPH``
name (str, optional): Name of control. Must be a unique name. If empty, a unique name is generated.
styles (Iterable[StyleT], optional): One or more styles to apply to the control shape.
Returns:
FormCtlRichText: Rich Text Control.
Hint:
- ``BorderKind`` can be imported from ``ooodev.utils.kind.border_kind``.
"""
# when control is created, it will automatically get the same lo instance as LoContext.
with LoContext(self.__lo_inst):
results = mForms.Forms.insert_control_rich_text(
doc=self.__doc,
draw_page=self.__draw_page,
x=x,
y=y,
width=width,
height=height,
border=border,
anchor_type=anchor_type,
name=name,
parent_form=self.__component,
styles=styles,
)
return results
[docs] def insert_control_scroll_bar(
self,
*,
x: int | UnitT,
y: int | UnitT,
width: int | UnitT,
height: int | UnitT = 6,
min_value: int = 0,
max_value: int = 100,
orientation: OrientationKind = OrientationKind.HORIZONTAL,
border: BorderKind = BorderKind.BORDER_3D,
anchor_type: TextContentAnchorType = TextContentAnchorType.AT_PARAGRAPH,
name: str = "",
styles: Iterable[StyleT] | None = None,
) -> FormCtlScrollBar:
"""
Inserts a Scrollbar control.
Args:
x (int | UnitT): X Coordinate.
y (int | UnitT): Y Coordinate.
width (int, UnitT, optional): Width.
height (int, UnitT, optional): Height. Defaults to ``6`` mm.
min_value (float, optional): Specifies the smallest value that can be entered in the control. Defaults to ``0``.
max_value (float, optional): Specifies the largest value that can be entered in the control. Defaults to ``100``.
orientation (OrientationKind, optional): Orientation. Defaults to ``OrientationKind.HORIZONTAL``.
border (BorderKind, optional): Border option. Defaults to ``BorderKind.BORDER_3D``.
anchor_type (TextContentAnchorType, optional): Control Anchor Type. Defaults to ``TextContentAnchorType.AT_PARAGRAPH``
name (str, optional): Name of control. Must be a unique name. If empty, a unique name is generated.
styles (Iterable[StyleT], optional): One or more styles to apply to the control shape.
Returns:
FormCtlScrollBar: Scrollbar Control.
Hint:
- ``BorderKind`` can be imported from ``ooodev.utils.kind.border_kind``.
- ``OrientationKind`` can be imported from ``ooodev.utils.kind.orientation_kind``.
"""
# when control is created, it will automatically get the same lo instance as LoContext.
with LoContext(self.__lo_inst):
results = mForms.Forms.insert_control_scroll_bar(
doc=self.__doc,
draw_page=self.__draw_page,
x=x,
y=y,
width=width,
height=height,
min_value=min_value,
max_value=max_value,
orientation=orientation,
border=border,
anchor_type=anchor_type,
name=name,
parent_form=self.__component,
styles=styles,
)
return results
[docs] def insert_control_spin_button(
self,
*,
x: int | UnitT,
y: int | UnitT,
width: int | UnitT,
height: int | UnitT = 6,
value: int = 0,
min_value: int = -1000000,
max_value: int = 1000000,
increment: int = 1,
border: BorderKind = BorderKind.BORDER_3D,
anchor_type: TextContentAnchorType = TextContentAnchorType.AT_PARAGRAPH,
name: str = "",
styles: Iterable[StyleT] | None = None,
) -> FormCtlSpinButton:
"""
Inserts a Spin Button control into the form.
Args:
x (int | UnitT): X Coordinate.
y (int | UnitT): Y Coordinate.
width (int | UnitT): Width.
height (int, UnitT, optional): Height. Defaults to ``6`` mm.
value (int, optional): Specifies the initial value of the control. Defaults to ``0``.
min_value (float, optional): Specifies the smallest value that can be entered in the control. Defaults to ``-1000000.0``.
max_value (float, optional): Specifies the largest value that can be entered in the control. Defaults to ``1000000.0``.
increment (int, optional): The step when the spin button is pressed. Defaults to ``1``.
border (BorderKind, optional): Border option. Defaults to ``BorderKind.BORDER_3D``.
anchor_type (TextContentAnchorType, optional): Control Anchor Type. Defaults to ``TextContentAnchorType.AT_PARAGRAPH``
name (str, optional): Name of control. Must be a unique name. If empty, a unique name is generated.
styles (Iterable[StyleT], optional): One or more styles to apply to the control shape.
Returns:
FormCtlSpinButton: Spin Button Control.
Hint:
- ``BorderKind`` can be imported from ``ooodev.utils.kind.border_kind``.
"""
# when control is created, it will automatically get the same lo instance as LoContext.
with LoContext(self.__lo_inst):
results = mForms.Forms.insert_control_spin_button(
doc=self.__doc,
draw_page=self.__draw_page,
x=x,
y=y,
width=width,
value=value,
height=height,
min_value=min_value,
max_value=max_value,
increment=increment,
border=border,
anchor_type=anchor_type,
name=name,
parent_form=self.__component,
styles=styles,
)
return results
[docs] def insert_control_submit_button(
self,
*,
x: int | UnitT,
y: int | UnitT,
width: int | UnitT,
height: int | UnitT = 6,
anchor_type: TextContentAnchorType = TextContentAnchorType.AT_PARAGRAPH,
name: str = "",
styles: Iterable[StyleT] | None = None,
) -> FormCtlSubmitButton:
"""
Inserts a submit button control.
Args:
x (int | UnitT): X Coordinate.
y (int | UnitT): Y Coordinate.
width (int, UnitT, optional): Width.
height (int, UnitT, optional): Height. Defaults to ``6`` mm.
anchor_type (TextContentAnchorType, optional): Control Anchor Type. Defaults to ``TextContentAnchorType.AT_PARAGRAPH``
name (str, optional): Name of control. Must be a unique name. If empty, a unique name is generated.
styles (Iterable[StyleT], optional): One or more styles to apply to the control shape.
Returns:
FormCtlSubmitButton: Submit Button Control.
"""
# when control is created, it will automatically get the same lo instance as LoContext.
with LoContext(self.__lo_inst):
results = mForms.Forms.insert_control_submit_button(
doc=self.__doc,
draw_page=self.__draw_page,
x=x,
y=y,
width=width,
height=height,
anchor_type=anchor_type,
name=name,
parent_form=self.__component,
styles=styles,
)
return results
[docs] def insert_control_text_field(
self,
*,
x: int | UnitT,
y: int | UnitT,
width: int | UnitT,
height: int | UnitT,
text: str = "",
echo_char: str = "",
border: BorderKind = BorderKind.NONE,
anchor_type: TextContentAnchorType = TextContentAnchorType.AT_PARAGRAPH,
name: str = "",
styles: Iterable[StyleT] | None = None,
) -> FormCtlTextField:
"""
Inserts a Text field control.
Args:
x (int | UnitT): X Coordinate.
y (int | UnitT): Y Coordinate.
width (int, UnitT, optional): Width.
height (int, UnitT, optional): Height.
text (str, optional): Text value.
echo_char (str, optional): Character used for masking. Must be a single character.
border (BorderKind, optional): Border option. Defaults to ``BorderKind.NONE``.
anchor_type (TextContentAnchorType, optional): Control Anchor Type. Defaults to ``TextContentAnchorType.AT_PARAGRAPH``
name (str, optional): Name of control. Must be a unique name. If empty, a unique name is generated.
styles (Iterable[StyleT], optional): One or more styles to apply to the control shape.
Returns:
FormCtlTextField: Text Field Control.
Hint:
- ``BorderKind`` can be imported from ``ooodev.utils.kind.border_kind``.
"""
# when control is created, it will automatically get the same lo instance as LoContext.
with LoContext(self.__lo_inst):
results = mForms.Forms.insert_control_text_field(
doc=self.__doc,
draw_page=self.__draw_page,
x=x,
y=y,
width=width,
text=text,
height=height,
echo_char=echo_char,
border=border,
anchor_type=anchor_type,
name=name,
parent_form=self.__component,
styles=styles,
)
return results
[docs] def insert_control_time_field(
self,
*,
x: int | UnitT,
y: int | UnitT,
width: int | UnitT,
height: int | UnitT = 6,
time_value: datetime.time | None = None,
min_time: datetime.time = datetime.time(0, 0, 0, 0),
max_time: datetime.time = datetime.time(23, 59, 59, 999_999),
time_format: TimeFormatKind = TimeFormatKind.SHORT_24H,
spin_button: bool = True,
border: BorderKind = BorderKind.BORDER_3D,
anchor_type: TextContentAnchorType = TextContentAnchorType.AT_PARAGRAPH,
name: str = "",
styles: Iterable[StyleT] | None = None,
) -> FormCtlTimeField:
"""
Inserts a Time field control into the form.
Args:
x (int | UnitT): X Coordinate.
y (int | UnitT): Y Coordinate.
width (int | UnitT): Width.
height (int, UnitT, optional): Height. Defaults to ``6`` mm.
time_value (datetime.time | None, optional): Specifics the control time. Defaults to ``None``.
min_time (datetime.time, optional): Specifics control min time. Defaults to ``time(0, 0, 0, 0)``.
max_time (datetime.time, optional): Specifics control min time. Defaults to a ``time(23, 59, 59, 999_999)``.
drop_down (bool, optional): Specifies if the control is a dropdown. Defaults to ``True``.
time_format (TimeFormatKind, optional): Date format. Defaults to ``TimeFormatKind.SHORT_24H``.
pin_button (bool, optional): When ``True``, a spin button is present. Defaults to ``True``.
border (BorderKind, optional): Border option. Defaults to ``BorderKind.BORDER_3D``.
anchor_type (TextContentAnchorType, optional): Control Anchor Type. Defaults to ``TextContentAnchorType.AT_PARAGRAPH``
name (str, optional): Name of control. Must be a unique name. If empty, a unique name is generated.
styles (Iterable[StyleT], optional): One or more styles to apply to the control shape.
Returns:
FormCtlTimeField: Time Field Control.
Hint:
- ``BorderKind`` can be imported from ``ooodev.utils.kind.border_kind``.
- ``TimeFormatKind`` can be imported from ``ooodev.utils.kind.time_format_kind``.
"""
# when control is created, it will automatically get the same lo instance as LoContext.
with LoContext(self.__lo_inst):
results = mForms.Forms.insert_control_time_field(
doc=self.__doc,
draw_page=self.__draw_page,
x=x,
y=y,
width=width,
height=height,
time_value=time_value,
min_time=min_time,
max_time=max_time,
time_format=time_format,
spin_button=spin_button,
border=border,
anchor_type=anchor_type,
name=name,
parent_form=self.__component,
styles=styles,
)
return results
[docs] def insert_db_control_check_box(
self,
*,
x: int | UnitT,
y: int | UnitT,
width: int | UnitT,
height: int | UnitT = 6,
tri_state: bool = True,
state: TriStateKind = TriStateKind.CHECKED,
border: BorderKind = BorderKind.BORDER_3D,
anchor_type: TextContentAnchorType = TextContentAnchorType.AT_PARAGRAPH,
name: str = "",
styles: Iterable[StyleT] | None = None,
) -> FormCtlDbCheckBox:
"""
Inserts a database check box control into the form.
Args:
x (int | UnitT): X Coordinate.
y (int | UnitT): Y Coordinate.
width (int | UnitT): Width.
height (int, UnitT, optional): Height. Defaults to ``6`` mm.
anchor_type (TextContentAnchorType | None, optional): _description_. Defaults to None.
tri_state (TriStateKind, optional): Specifies that the control may have the state "don't know". Defaults to ``True``.
state (TriStateKind, optional): Specifies the state of the control.Defaults to ``TriStateKind.CHECKED``.
border (BorderKind, optional): Border option. Defaults to ``BorderKind.BORDER_3D``.
anchor_type (TextContentAnchorType, optional): Control Anchor Type. Defaults to ``TextContentAnchorType.AT_PARAGRAPH``
name (str, optional): Name of control. Must be a unique name. If empty, a unique name is generated.
styles (Iterable[StyleT], optional): One or more styles to apply to the control shape.
Returns:
FormCtlDbCheckBox: Database Checkbox Control.
"""
# when control is created, it will automatically get the same lo instance as LoContext.
with LoContext(self.__lo_inst):
results = mForms.Forms.insert_db_control_check_box(
doc=self.__doc,
draw_page=self.__draw_page,
x=x,
y=y,
width=width,
height=height,
tri_state=tri_state,
state=state,
border=border,
anchor_type=anchor_type,
name=name,
parent_form=self.__component,
styles=styles,
)
return results
[docs] def insert_db_control_combo_box(
self,
*,
x: int | UnitT,
y: int | UnitT,
width: int | UnitT,
height: int | UnitT = 6,
entries: Iterable[str] | None = None,
max_text_len: int = 0,
drop_down: bool = True,
read_only: bool = False,
border: BorderKind = BorderKind.BORDER_3D,
anchor_type: TextContentAnchorType = TextContentAnchorType.AT_PARAGRAPH,
name: str = "",
styles: Iterable[StyleT] | None = None,
) -> FormCtlDbComboBox:
"""
Inserts a Database ComboBox control into the form.
Args:
x (int | UnitT): X Coordinate.
y (int | UnitT): Y Coordinate.
width (int | UnitT): Width.
height (int, UnitT, optional): Height. Defaults to ``6`` mm.
entries (Iterable[str], optional): Combo box entries
tri_state (TriStateKind, optional): Specifies that the control may have the state "don't know". Defaults to ``True``.
state (TriStateKind, optional): Specifies the state of the control.Defaults to ``TriStateKind.CHECKED``.
max_text_len (int, optional): Specifies the maximum character count, There's no limitation, if set to 0. Defaults to ``0``.
drop_down (bool, optional): Specifies if the control has a drop down button. Defaults to ``True``.
read_only (bool, optional): Specifies that the content of the control cannot be modified by the user. Defaults to ``False``.
border (BorderKind, optional): Border option. Defaults to ``BorderKind.BORDER_3D``.
anchor_type (TextContentAnchorType, optional): Control Anchor Type. Defaults to ``TextContentAnchorType.AT_PARAGRAPH``
name (str, optional): Name of control. Must be a unique name. If empty, a unique name is generated.
styles (Iterable[StyleT], optional): One or more styles to apply to the control shape.
Returns:
FormCtlDbComboBox: Database ComboBox Control.
"""
# when control is created, it will automatically get the same lo instance as LoContext.
with LoContext(self.__lo_inst):
results = mForms.Forms.insert_db_control_combo_box(
doc=self.__doc,
draw_page=self.__draw_page,
x=x,
y=y,
width=width,
entries=entries,
height=height,
max_text_len=max_text_len,
drop_down=drop_down,
read_only=read_only,
border=border,
anchor_type=anchor_type,
name=name,
parent_form=self.__component,
styles=styles,
)
return results
[docs] def insert_db_control_currency_field(
self,
*,
x: int | UnitT,
y: int | UnitT,
width: int | UnitT,
height: int | UnitT = 6,
min_value: float = -1000000.0,
max_value: float = 1000000.0,
spin_button: bool = False,
increment: int = 1,
accuracy: int = 2,
border: BorderKind = BorderKind.BORDER_3D,
anchor_type: TextContentAnchorType = TextContentAnchorType.AT_PARAGRAPH,
name: str = "",
styles: Iterable[StyleT] | None = None,
) -> FormCtlDbCurrencyField:
"""
Inserts a database currency field control into the form.
Args:
x (int | UnitT): X Coordinate.
y (int | UnitT): Y Coordinate.
width (int | UnitT): Width.
height (int, UnitT, optional): Height. Defaults to ``6`` mm.
min_value (float, optional): Specifies the smallest value that can be entered in the control. Defaults to ``-1000000.0``.
max_value (float, optional): Specifies the largest value that can be entered in the control. Defaults to ``1000000.0``.
spin_button (bool, optional): When ``True``, a spin button is present. Defaults to ``False``.
increment (int, optional): The step when the spin button is pressed. Defaults to ``1``.
accuracy (int, optional): Specifies the decimal accuracy. Default is ``2`` decimal digits
border (BorderKind, optional): Border option. Defaults to ``BorderKind.BORDER_3D``.
anchor_type (TextContentAnchorType, optional): Control Anchor Type. Defaults to ``TextContentAnchorType.AT_PARAGRAPH``
name (str, optional): Name of control. Must be a unique name. If empty, a unique name is generated.
styles (Iterable[StyleT], optional): One or more styles to apply to the control shape.
Returns:
FormCtlDbCurrencyField: Database Currency Field Control.
"""
# when control is created, it will automatically get the same lo instance as LoContext.
with LoContext(self.__lo_inst):
results = mForms.Forms.insert_db_control_currency_field(
doc=self.__doc,
draw_page=self.__draw_page,
x=x,
y=y,
width=width,
height=height,
min_value=min_value,
max_value=max_value,
spin_button=spin_button,
increment=increment,
accuracy=accuracy,
border=border,
anchor_type=anchor_type,
name=name,
parent_form=self.__component,
styles=styles,
)
return results
[docs] def insert_db_control_date_field(
self,
*,
x: int | UnitT,
y: int | UnitT,
width: int | UnitT,
height: int | UnitT = 6,
min_date: datetime.datetime = datetime.datetime(1900, 1, 1, 0, 0, 0, 0),
max_date: datetime.datetime = datetime.datetime(2200, 12, 31, 0, 0, 0, 0),
drop_down: bool = True,
date_format: DateFormatKind = DateFormatKind.SYSTEM_SHORT,
border: BorderKind = BorderKind.BORDER_3D,
anchor_type: TextContentAnchorType = TextContentAnchorType.AT_PARAGRAPH,
name: str = "",
styles: Iterable[StyleT] | None = None,
) -> FormCtlDbDateField:
"""
Inserts a Database Date field control into the form.
Args:
x (int | UnitT): X Coordinate.
y (int | UnitT): Y Coordinate.
width (int | UnitT): Width.
height (int, UnitT, optional): Height. Defaults to ``6`` mm.
date_value (datetime.datetime | None, optional): Specifics control datetime. Defaults to ``None``.
min_date (datetime.datetime, optional): Specifics control min datetime. Defaults to ``datetime(1900, 1, 1, 0, 0, 0, 0)``.
max_date (datetime.datetime, optional): Specifics control Min datetime. Defaults to ``datetime(2200, 12, 31, 0, 0, 0, 0)``.
drop_down (bool, optional): Specifies if the control is a dropdown. Defaults to ``True``.
date_format (DateFormatKind, optional): Date format. Defaults to ``DateFormatKind.SYSTEM_SHORT``.
border (BorderKind, optional): Border option. Defaults to ``BorderKind.BORDER_3D``.
anchor_type (TextContentAnchorType, optional): Control Anchor Type. Defaults to ``TextContentAnchorType.AT_PARAGRAPH``
name (str, optional): Name of control. Must be a unique name. If empty, a unique name is generated.
styles (Iterable[StyleT], optional): One or more styles to apply to the control shape.
Returns:
FormCtlDbDateField: Database Date Field Control.
"""
# when control is created, it will automatically get the same lo instance as LoContext.
with LoContext(self.__lo_inst):
results = mForms.Forms.insert_db_control_date_field(
doc=self.__doc,
draw_page=self.__draw_page,
x=x,
y=y,
width=width,
height=height,
min_date=min_date,
max_date=max_date,
drop_down=drop_down,
date_format=date_format,
border=border,
anchor_type=anchor_type,
name=name,
parent_form=self.__component,
styles=styles,
)
return results
[docs] def insert_db_control_formatted_field(
self,
*,
x: int | UnitT,
y: int | UnitT,
width: int | UnitT,
height: int | UnitT = 6,
min_value: float = -1000000.0,
max_value: float = 1000000.0,
spin_button: bool = False,
border: BorderKind = BorderKind.BORDER_3D,
anchor_type: TextContentAnchorType = TextContentAnchorType.AT_PARAGRAPH,
name: str = "",
styles: Iterable[StyleT] | None = None,
) -> FormCtlDbFormattedField:
"""
Inserts a Database currency field control into the form.
Args:
x (int | UnitT): X Coordinate.
y (int | UnitT): Y Coordinate.
width (int | UnitT): Width.
height (int, UnitT, optional): Height. Defaults to ``6`` mm.
min_value (float, optional): Specifies the smallest value that can be entered in the control. Defaults to ``-1000000.0``.
max_value (float, optional): Specifies the largest value that can be entered in the control. Defaults to ``1000000.0``.
spin_button (bool, optional): When ``True``, a spin button is present. Defaults to ``False``.
border (BorderKind, optional): Border option. Defaults to ``BorderKind.BORDER_3D``.
anchor_type (TextContentAnchorType, optional): Control Anchor Type. Defaults to ``TextContentAnchorType.AT_PARAGRAPH``
name (str, optional): Name of control. Must be a unique name. If empty, a unique name is generated.
styles (Iterable[StyleT], optional): One or more styles to apply to the control shape.
Returns:
FormCtlDbFormattedField: Database Currency Field Control.
"""
# when control is created, it will automatically get the same lo instance as LoContext.
with LoContext(self.__lo_inst):
results = mForms.Forms.insert_db_control_formatted_field(
doc=self.__doc,
draw_page=self.__draw_page,
x=x,
y=y,
width=width,
height=height,
min_value=min_value,
max_value=max_value,
spin_button=spin_button,
border=border,
anchor_type=anchor_type,
name=name,
parent_form=self.__component,
styles=styles,
)
return results
[docs] def insert_db_control_list_box(
self,
*,
x: int | UnitT,
y: int | UnitT,
width: int | UnitT,
height: int | UnitT,
entries: Iterable[str] | None = None,
drop_down: bool = True,
read_only: bool = False,
line_count: int = 5,
multi_select: bool = False,
border: BorderKind = BorderKind.BORDER_3D,
anchor_type: TextContentAnchorType = TextContentAnchorType.AT_PARAGRAPH,
name: str = "",
styles: Iterable[StyleT] | None = None,
) -> FormCtlDbListBox:
"""
Inserts a Database ListBox control into the form.
Args:
x (int | UnitT): X Coordinate.
y (int | UnitT): Y Coordinate.
width (int | UnitT): Width.
height (int, UnitT): Height.
entries (Iterable[str], optional): Combo box entries
drop_down (bool, optional): Specifies if the control has a drop down button. Defaults to ``True``.
read_only (bool, optional): Specifies that the content of the control cannot be modified by the user. Defaults to ``False``.
line_count (int, optional): Specifies the number of lines to display. Defaults to ``5``.
multi_select (int, optional): Specifies if multiple entries can be selected. Defaults to ``False``.
border (BorderKind, optional): Border option. Defaults to ``BorderKind.BORDER_3D``.
anchor_type (TextContentAnchorType, optional): Control Anchor Type. Defaults to ``TextContentAnchorType.AT_PARAGRAPH``
name (str, optional): Name of control. Must be a unique name. If empty, a unique name is generated.
styles (Iterable[StyleT], optional): One or more styles to apply to the control shape.
Returns:
FormCtlDbListBox: Database ListBox Control.
"""
# when control is created, it will automatically get the same lo instance as LoContext.
with LoContext(self.__lo_inst):
results = mForms.Forms.insert_db_control_list_box(
doc=self.__doc,
draw_page=self.__draw_page,
x=x,
y=y,
width=width,
entries=entries,
height=height,
drop_down=drop_down,
read_only=read_only,
line_count=line_count,
multi_select=multi_select,
border=border,
anchor_type=anchor_type,
name=name,
parent_form=self.__component,
styles=styles,
)
return results
[docs] def insert_db_control_numeric_field(
self,
*,
x: int | UnitT,
y: int | UnitT,
width: int | UnitT,
height: int | UnitT = 6,
min_value: float = -1000000.0,
max_value: float = 1000000.0,
spin_button: bool = False,
increment: int = 1,
accuracy: int = 2,
border: BorderKind = BorderKind.BORDER_3D,
anchor_type: TextContentAnchorType = TextContentAnchorType.AT_PARAGRAPH,
name: str = "",
styles: Iterable[StyleT] | None = None,
) -> FormCtlDbNumericField:
"""
Inserts a Database Numeric field control into the form.
Args:
x (int | UnitT): X Coordinate.
y (int | UnitT): Y Coordinate.
width (int | UnitT): Width.
height (int, UnitT, optional): Height. Defaults to ``6`` mm.
min_value (float, optional): Specifies the smallest value that can be entered in the control. Defaults to ``-1000000.0``.
max_value (float, optional): Specifies the largest value that can be entered in the control. Defaults to ``1000000.0``.
spin_button (bool, optional): When ``True``, a spin button is present. Defaults to ``False``.
increment (int, optional): The step when the spin button is pressed. Defaults to ``1``.
accuracy (int, optional): Specifies the decimal accuracy. Default is ``2`` decimal digits
border (BorderKind, optional): Border option. Defaults to ``BorderKind.BORDER_3D``.
anchor_type (TextContentAnchorType, optional): Control Anchor Type. Defaults to ``TextContentAnchorType.AT_PARAGRAPH``
name (str, optional): Name of control. Must be a unique name. If empty, a unique name is generated.
styles (Iterable[StyleT], optional): One or more styles to apply to the control shape.
Returns:
FormCtlDbNumericField: Database Numeric Field Control.
"""
# when control is created, it will automatically get the same lo instance as LoContext.
with LoContext(self.__lo_inst):
results = mForms.Forms.insert_db_control_numeric_field(
doc=self.__doc,
draw_page=self.__draw_page,
x=x,
y=y,
width=width,
height=height,
min_value=min_value,
max_value=max_value,
spin_button=spin_button,
increment=increment,
accuracy=accuracy,
border=border,
anchor_type=anchor_type,
name=name,
parent_form=self.__component,
styles=styles,
)
return results
[docs] def insert_db_control_pattern_field(
self,
*,
x: int | UnitT,
y: int | UnitT,
width: int | UnitT,
height: int | UnitT = 6,
edit_mask: str = "",
literal_mask: str = "",
border: BorderKind = BorderKind.BORDER_3D,
anchor_type: TextContentAnchorType = TextContentAnchorType.AT_PARAGRAPH,
name: str = "",
styles: Iterable[StyleT] | None = None,
) -> FormCtlDbPatternField:
"""
Inserts a Database Pattern field control into the form.
Args:
x (int | UnitT): X Coordinate.
y (int | UnitT): Y Coordinate.
width (int | UnitT): Width.
height (int, UnitT, optional): Height. Defaults to ``6`` mm.
edit_mask (str, optional): Specifies a character code that determines what the user may enter. Defaults to ``""``.
literal_mask (str, optional): Specifies the initial values that are displayed in the pattern field. Defaults to ``""``.
border (BorderKind, optional): Border option. Defaults to ``BorderKind.BORDER_3D``.
anchor_type (TextContentAnchorType, optional): Control Anchor Type. Defaults to ``TextContentAnchorType.AT_PARAGRAPH``
name (str, optional): Name of control. Must be a unique name. If empty, a unique name is generated.
styles (Iterable[StyleT], optional): One or more styles to apply to the control shape.
Returns:
FormCtlDbPatternField: Database Pattern Field Control.
"""
# when control is created, it will automatically get the same lo instance as LoContext.
with LoContext(self.__lo_inst):
results = mForms.Forms.insert_db_control_pattern_field(
doc=self.__doc,
draw_page=self.__draw_page,
x=x,
y=y,
width=width,
height=height,
edit_mask=edit_mask,
literal_mask=literal_mask,
border=border,
anchor_type=anchor_type,
name=name,
parent_form=self.__component,
styles=styles,
)
return results
[docs] def insert_db_control_radio_button(
self,
*,
x: int | UnitT,
y: int | UnitT,
width: int | UnitT,
height: int | UnitT = 6,
state: StateKind = StateKind.NOT_CHECKED,
multiline: bool = False,
border: BorderKind = BorderKind.NONE,
anchor_type: TextContentAnchorType = TextContentAnchorType.AT_PARAGRAPH,
name: str = "",
styles: Iterable[StyleT] | None = None,
) -> FormCtlDbRadioButton:
"""
Inserts a Database radio button control into the form.
Args:
x (int | UnitT): X Coordinate.
y (int | UnitT): Y Coordinate.
width (int | UnitT): Width.
height (int, UnitT, optional): Height. Defaults to ``6`` mm.
anchor_type (TextContentAnchorType | None, optional): _description_. Defaults to None.
tri_state (StateKind, optional): Specifies that the control may have the state "don't know". Defaults to ``True``.
state (TriStateKind, optional): Specifies the state of the control.Defaults to ``StateKind.NOT_CHECKED``.
multiline (bool, optional): Specifies if the control can display multiple lines of text. Defaults to ``False``.
border (BorderKind, optional): Border option. Defaults to ``BorderKind.NONE``.
anchor_type (TextContentAnchorType, optional): Control Anchor Type. Defaults to ``TextContentAnchorType.AT_PARAGRAPH``
name (str, optional): Name of control. Must be a unique name. If empty, a unique name is generated.
styles (Iterable[StyleT], optional): One or more styles to apply to the control shape.
Returns:
FormCtlDbRadioButton: Database Radio Button Control.
"""
# when control is created, it will automatically get the same lo instance as LoContext.
with LoContext(self.__lo_inst):
results = mForms.Forms.insert_db_control_radio_button(
doc=self.__doc,
draw_page=self.__draw_page,
x=x,
y=y,
width=width,
height=height,
state=state,
multiline=multiline,
border=border,
anchor_type=anchor_type,
name=name,
parent_form=self.__component,
styles=styles,
)
return results
[docs] def insert_db_control_text_field(
self,
*,
x: int | UnitT,
y: int | UnitT,
width: int | UnitT,
height: int | UnitT,
text: str = "",
echo_char: str = "",
border: BorderKind = BorderKind.NONE,
anchor_type: TextContentAnchorType = TextContentAnchorType.AT_PARAGRAPH,
name: str = "",
styles: Iterable[StyleT] | None = None,
) -> FormCtlDbTextField:
"""
Inserts a Database Text field control.
Args:
x (int | UnitT): X Coordinate.
y (int | UnitT): Y Coordinate.
width (int, UnitT, optional): Width.
height (int, UnitT, optional): Height.
text (str, optional): Text value.
echo_char (str, optional): Character used for masking. Must be a single character.
border (BorderKind, optional): Border option. Defaults to ``BorderKind.NONE``.
anchor_type (TextContentAnchorType, optional): Control Anchor Type. Defaults to ``TextContentAnchorType.AT_PARAGRAPH``
name (str, optional): Name of control. Must be a unique name. If empty, a unique name is generated.
styles (Iterable[StyleT], optional): One or more styles to apply to the control shape.
Returns:
FormCtlDbTextField: Database Text Field Control.
"""
# when control is created, it will automatically get the same lo instance as LoContext.
with LoContext(self.__lo_inst):
results = mForms.Forms.insert_db_control_text_field(
doc=self.__doc,
draw_page=self.__draw_page,
x=x,
y=y,
width=width,
text=text,
height=height,
echo_char=echo_char,
border=border,
anchor_type=anchor_type,
name=name,
parent_form=self.__component,
styles=styles,
)
return results
[docs] def insert_db_control_time_field(
self,
*,
x: int | UnitT,
y: int | UnitT,
width: int | UnitT,
height: int | UnitT = 6,
time_value: datetime.time | None = None,
min_time: datetime.time = datetime.time(0, 0, 0, 0),
max_time: datetime.time = datetime.time(23, 59, 59, 999_999),
time_format: TimeFormatKind = TimeFormatKind.SHORT_24H,
spin_button: bool = True,
border: BorderKind = BorderKind.BORDER_3D,
anchor_type: TextContentAnchorType = TextContentAnchorType.AT_PARAGRAPH,
name: str = "",
styles: Iterable[StyleT] | None = None,
) -> FormCtlDbTimeField:
"""
Inserts a Database Time field control into the form.
Args:
x (int | UnitT): X Coordinate.
y (int | UnitT): Y Coordinate.
width (int | UnitT): Width.
height (int, UnitT, optional): Height. Defaults to ``6`` mm.
time_value (datetime.time | None, optional): Specifics the control time. Defaults to ``None``.
min_time (datetime.time, optional): Specifics control min time. Defaults to ``time(0, 0, 0, 0)``.
max_time (datetime.time, optional): Specifics control min time. Defaults to a ``time(23, 59, 59, 999_999)``.
drop_down (bool, optional): Specifies if the control is a dropdown. Defaults to ``True``.
time_format (TimeFormatKind, optional): Date format. Defaults to ``TimeFormatKind.SHORT_24H``.
pin_button (bool, optional): When ``True``, a spin button is present. Defaults to ``True``.
border (BorderKind, optional): Border option. Defaults to ``BorderKind.BORDER_3D``.
anchor_type (TextContentAnchorType, optional): Control Anchor Type. Defaults to ``TextContentAnchorType.AT_PARAGRAPH``
name (str, optional): Name of control. Must be a unique name. If empty, a unique name is generated.
styles (Iterable[StyleT], optional): One or more styles to apply to the control shape.
Returns:
FormCtlTimeField: Database Time Field Control.
"""
# when control is created, it will automatically get the same lo instance as LoContext.
with LoContext(self.__lo_inst):
results = mForms.Forms.insert_db_control_time_field(
doc=self.__doc,
draw_page=self.__draw_page,
x=x,
y=y,
width=width,
height=height,
time_value=time_value,
min_time=min_time,
max_time=max_time,
time_format=time_format,
spin_button=spin_button,
border=border,
anchor_type=anchor_type,
name=name,
parent_form=self.__component,
styles=styles,
)
return results
# endregion Insert Control Methods
# region Other Form Methods
[docs] def bind_form_to_sql(self, src_name: str, cmd: str) -> None:
"""
Bind the form to the database in the ``src_name`` URL, and send a SQL cmd
Args:
src_name (str): Source Name URL
cmd (str): Command
Returns:
None:
"""
with LoContext(self.__lo_inst):
mForms.Forms.bind_form_to_sql(self.__component, src_name, cmd)
[docs] def bind_form_to_table(self, src_name: str, tbl_name: str) -> None:
"""
Bind the form to the database in the src_name URL
Args:
src_name (str): Source Name URL
tbl_name (str): Table Name
Returns:
None:
"""
with LoContext(self.__lo_inst):
mForms.Forms.bind_form_to_table(self.__component, src_name, tbl_name)
[docs] def get_control(self, ctl_model: XControlModel) -> XControl:
"""
Gets the control from the specified control model.
Args:
ctl_model (XControlModel): Control Model
Raises:
Exception: If unable to get control
Returns:
XControl: Control
"""
with LoContext(self.__lo_inst):
results = mForms.Forms.get_control(self.__doc, ctl_model)
return results
[docs] def get_control_model(self, ctl_name: str) -> XControlModel:
"""
Gets Control Model by Name
Args:
ctl_name (str): Name of control
Raises:
MissingNameError: If control not found
Returns:
XControlModel | None: Control Model if found; Otherwise, None
"""
if self.__component.hasByName(ctl_name):
with LoContext(self.__lo_inst):
result = mForms.Forms.get_control_model(self.__doc, ctl_name)
if result is None:
raise mEx.MissingNameError(f"Control '{ctl_name}' not found")
return result
else:
raise mEx.MissingNameError(f"Control '{ctl_name}' not found")
[docs] def get_control_index(self, ctl: FormCtlBase | XControlModel) -> int:
"""
Get the index of the control within the form.
Args:
ctl (FormCtlBase, XControlModel): Control object.
Returns:
int: Control Index within the form or ``-1`` if not found.
.. versionadded:: 0.38.0
"""
return mForms.Forms.get_control_index(self.__component, ctl)
[docs] def find_shape_for_control(self, ctl: FormCtlBase | XControlModel) -> XShape | None:
"""
Find the shape for a control.
Args:
control (FormCtlBase | XControlModel): control to find shape for.
Returns:
XShape | None: Shape for the control or ``None`` if not found.
.. versionadded:: 0.38.0
"""
return mForms.Forms.find_shape_for_control(self.__draw_page, ctl)
# endregion Other Form Methods