Source code for ooodev.adapter.awt.uno_control_radio_button_model_partial
from __future__ import annotations
import contextlib
from typing import Any, cast, TYPE_CHECKING
from ooo.dyn.text.font_emphasis import FontEmphasisEnum
from ooo.dyn.text.font_relief import FontReliefEnum
from ooo.dyn.style.vertical_alignment import VerticalAlignment
from ooo.dyn.awt.image_position import ImagePositionEnum
from ooo.dyn.awt.visual_effect import VisualEffectEnum
from ooodev.utils import info as mInfo
from ooodev.events.events import Events
from ooodev.utils.kind.align_kind import AlignKind
from ooodev.utils.kind.state_kind import StateKind
from ooodev.utils.color import Color
from ooodev.adapter.awt.uno_control_model_partial import UnoControlModelPartial
from ooodev.adapter.awt.font_descriptor_struct_comp import FontDescriptorStructComp
if TYPE_CHECKING:
from com.sun.star.awt import UnoControlRadioButtonModel # Service
from com.sun.star.awt import FontDescriptor # struct
from com.sun.star.graphic import XGraphic
from ooodev.events.args.key_val_args import KeyValArgs
[docs]class UnoControlRadioButtonModelPartial(UnoControlModelPartial):
"""Partial class for UnoControlRadioButtonModel."""
[docs] def __init__(self, component: UnoControlRadioButtonModel):
"""
Constructor
Args:
component (Any): Component that implements ``com.sun.star.awt.UnoControlRadioButtonModel`` service.
"""
# pylint: disable=unused-argument
self.__component = component
UnoControlModelPartial.__init__(self, component=component)
self.__event_provider = Events(self)
self.__props = {}
def on_comp_struct_changed(src: Any, event_args: KeyValArgs) -> None:
prop_name = str(event_args.event_data["prop_name"])
if hasattr(self.__component, prop_name):
setattr(self.__component, prop_name, event_args.source.component)
self.__fn_on_comp_struct_changed = on_comp_struct_changed
self.__event_provider.subscribe_event(
"com_sun_star_awt_FontDescriptor_changed", self.__fn_on_comp_struct_changed
)
[docs] def set_font_descriptor(self, font_descriptor: FontDescriptor | FontDescriptorStructComp) -> None:
"""
Sets the font descriptor of the control.
Args:
font_descriptor (FontDescriptor, FontDescriptorStructComp): UNO Struct - Font descriptor to set.
Note:
The ``font_descriptor`` property can also be used to set the font descriptor.
Hint:
- ``FontDescriptor`` can be imported from ``ooo.dyn.awt.font_descriptor``.
"""
self.font_descriptor = font_descriptor
# region Properties
@property
def font_descriptor(self) -> FontDescriptorStructComp:
"""
Gets/Sets the Font Descriptor.
Setting value can be done with a ``FontDescriptor`` or ``FontDescriptorStructComp`` object.
Returns:
~ooodev.adapter.awt.font_descriptor_struct_comp.FontDescriptorStructComp: Font Descriptor
Hint:
- ``FontDescriptor`` can be imported from ``ooo.dyn.awt.font_descriptor``.
"""
key = "FontDescriptor"
prop = self.__props.get(key, None)
if prop is None:
prop = FontDescriptorStructComp(self.__component.FontDescriptor, key, self.__event_provider)
self.__props[key] = prop
return cast(FontDescriptorStructComp, prop)
@font_descriptor.setter
def font_descriptor(self, value: FontDescriptor | FontDescriptorStructComp) -> None:
key = "FontDescriptor"
if mInfo.Info.is_instance(value, FontDescriptorStructComp):
self.__component.FontDescriptor = value.copy()
else:
self.__component.FontDescriptor = cast("FontDescriptor", value)
if key in self.__props:
del self.__props[key]
@property
def align(self) -> AlignKind | None:
"""
Get/Sets the horizontal alignment of the text in the control.
**optional**
Hint:
- ``AlignKind`` can be imported from ``ooodev.utils.kind.align_kind``.
"""
with contextlib.suppress(AttributeError):
return AlignKind(self.__component.Align)
return None
@align.setter
def align(self, value: AlignKind | int) -> None:
kind = AlignKind(int(value))
with contextlib.suppress(AttributeError):
self.__component.Align = kind.value
@property
def background_color(self) -> Color | None:
"""
Gets/Set the background color of the control.
**optional**
Returns:
~ooodev.utils.color.Color | None: Color or None if not set.
"""
with contextlib.suppress(AttributeError):
return Color(self.__component.BackgroundColor)
return None
@background_color.setter
def background_color(self, value: Color) -> None:
with contextlib.suppress(AttributeError):
self.__component.BackgroundColor = value # type: ignore
@property
def enabled(self) -> bool:
"""
Gets/Sets whether the control is enabled or disabled.
"""
return self.__component.Enabled
@enabled.setter
def enabled(self, value: bool) -> None:
self.__component.Enabled = value
@property
def font_emphasis_mark(self) -> FontEmphasisEnum:
"""
Gets/Sets the ``FontEmphasis`` value of the text in the control.
Note:
Value can be set with ``FontEmphasisEnum`` or ``int``.
Hint:
- ``FontEmphasisEnum`` can be imported from ``ooo.dyn.text.font_emphasis``.
"""
return FontEmphasisEnum(self.__component.FontEmphasisMark)
@font_emphasis_mark.setter
def font_emphasis_mark(self, value: int | FontEmphasisEnum) -> None:
self.__component.FontEmphasisMark = int(value)
@property
def font_relief(self) -> FontReliefEnum:
"""
Gets/Sets ``FontRelief`` value of the text in the control.
Note:
Value can be set with ``FontReliefEnum`` or ``int``.
Hint:
- ``FontReliefEnum`` can be imported from ``ooo.dyn.text.font_relief``.
"""
return FontReliefEnum(self.__component.FontRelief)
@font_relief.setter
def font_relief(self, value: int | FontReliefEnum) -> None:
self.__component.FontRelief = int(value)
@property
def graphic(self) -> XGraphic | None:
"""
specifies a graphic to be displayed at the button
If this property is present, it interacts with the ``image_url`` in the following way:
- If ``image_url`` is set, ``graphic`` will be reset to an object as loaded from the given image URL, or None if ``image_url`` does not point to a valid image file.
- If ``graphic`` is set, ``image_url`` will be reset to an empty string.
**optional**
"""
with contextlib.suppress(AttributeError):
return self.__component.Graphic
return None
@graphic.setter
def graphic(self, value: XGraphic) -> None:
with contextlib.suppress(AttributeError):
self.__component.Graphic = value
@property
def help_text(self) -> str:
"""
Get/Sets the help text of the control.
"""
return self.__component.HelpText
@help_text.setter
def help_text(self, value: str) -> None:
self.__component.HelpText = value
@property
def help_url(self) -> str:
"""
Gets/Sets the help URL of the control.
"""
return self.__component.HelpURL
@help_url.setter
def help_url(self, value: str) -> None:
self.__component.HelpURL = value
@property
def image_position(self) -> ImagePositionEnum | None:
"""
Gets/Sets the position of the image, if any, relative to the text, if any
Valid values of this property are specified with image_position.
If this property is present, it supersedes the ImageAlign property - setting one of both properties sets the other one to the best possible match.
**optional**
Note:
Value can be set with ``ImagePositionEnum`` or ``int``.
Hint:
- ``ImagePositionEnum`` can be imported from ``ooo.dyn.awt.image_position``
"""
with contextlib.suppress(AttributeError):
return ImagePositionEnum(self.__component.ImagePosition)
return None
@image_position.setter
def image_position(self, value: int | ImagePositionEnum) -> None:
with contextlib.suppress(AttributeError):
self.__component.ImagePosition = int(value)
@property
def image_url(self) -> str | None:
"""
Gets/Sets a URL to an image to use for the button.
**optional**
"""
with contextlib.suppress(AttributeError):
return self.__component.ImageURL
return None
@image_url.setter
def image_url(self, value: str) -> None:
with contextlib.suppress(AttributeError):
self.__component.ImageURL = value
@property
def label(self) -> str:
"""
Gets/Sets the label of the control.
"""
return self.__component.Label
@label.setter
def label(self, value: str) -> None:
self.__component.Label = value
@property
def multi_line(self) -> bool | None:
"""
Gets/Sets that the text may be displayed on more than one line.
**optional**
"""
with contextlib.suppress(AttributeError):
return self.__component.MultiLine
return None
@multi_line.setter
def multi_line(self, value: bool) -> None:
with contextlib.suppress(AttributeError):
self.__component.MultiLine = value
@property
def printable(self) -> bool:
"""
Gets/Sets that the control will be printed with the document.
"""
return self.__component.Printable
@printable.setter
def printable(self, value: bool) -> None:
self.__component.Printable = value
@property
def state(self) -> StateKind:
"""
Gets/Sets the state of the control.
If Toggle property is set to ``True``, the pressed state is enabled and its pressed state can be obtained with this property.
Note:
Value can be set with ``StateKind`` or ``int``.
Hint:
- ``StateKind`` can be imported from ``ooodev.utils.kind.state_kind``
"""
return StateKind(self.__component.State)
@state.setter
def state(self, value: int | StateKind) -> None:
self.__component.State = int(value)
@property
def tabstop(self) -> bool:
"""
Gets/Sets that the control can be reached with the TAB key.
"""
return self.__component.Tabstop
@tabstop.setter
def tabstop(self, value: bool) -> None:
self.__component.Tabstop = value
@property
def text_color(self) -> Color:
"""
Gets/Sets the text color of the control.
Returns:
~ooodev.utils.color.Color: Color
"""
return Color(self.__component.TextColor)
@text_color.setter
def text_color(self, value: Color) -> None:
self.__component.TextColor = value # type: ignore
@property
def text_line_color(self) -> Color:
"""
Gets/Sets the text line color of the control.
Returns:
~ooodev.utils.color.Color: Color
"""
return Color(self.__component.TextLineColor)
@text_line_color.setter
def text_line_color(self, value: Color) -> None:
self.__component.TextLineColor = value # type: ignore
@property
def vertical_align(self) -> VerticalAlignment | None:
"""
Gets/Sets the vertical alignment of the text in the control.
**optional**
Hint:
- ``VerticalAlignment`` can be imported from ``ooo.dyn.style.vertical_alignment``
"""
with contextlib.suppress(AttributeError):
return self.__component.VerticalAlign # type: ignore
return None
@vertical_align.setter
def vertical_align(self, value: VerticalAlignment) -> None:
with contextlib.suppress(AttributeError):
self.__component.VerticalAlign = value # type: ignore
@property
def visual_effect(self) -> VisualEffectEnum | None:
"""
specifies a visual effect to apply to the check box control
Possible values for this property are VisualEffect.FLAT and VisualEffect.LOOK3D.
**optional**
Note:
Value can be set with ``VisualEffectEnum`` or ``int``.
Hint:
- ``VisualEffectEnum`` can be imported from ``ooo.dyn.awt.visual_effect``
"""
with contextlib.suppress(AttributeError):
return VisualEffectEnum(self.__component.VisualEffect)
return None
@visual_effect.setter
def visual_effect(self, value: int | VisualEffectEnum) -> None:
with contextlib.suppress(AttributeError):
self.__component.VisualEffect = int(value)
@property
def writing_mode(self) -> int | None:
"""
Denotes the writing mode used in the control, as specified in the ``com.sun.star.text.WritingMode2`` constants group.
Only LR_TB (``0``) and RL_TB (``1``) are supported at the moment.
**optional**
"""
with contextlib.suppress(AttributeError):
return self.__component.WritingMode
return None
@writing_mode.setter
def writing_mode(self, value: int) -> None:
with contextlib.suppress(AttributeError):
self.__component.WritingMode = value
# endregion Properties