import functools
import json
from typing import Optional
from .. import constants
from ..enums import NoteColor
from .message_base import MessageBase
# Note: Sticky note is basically just text and a background color, so we don't
# really do much when saving it.
class StickyNote(MessageBase):
"""
A sticky note.
"""
def getJson(self) -> str:
return json.dumps({
'subject': self.subject,
'date': self.date.__format__(self.datetimeFormat) if self.date else None,
'body': self.body,
'height': self.noteHeight,
'width': self.noteWidth,
'color': None if self.noteColor is None else self.noteColor.name.lower(),
})
@property
def headerFormatProperties(self) -> constants.HEADER_FORMAT_TYPE:
return None
@functools.cached_property
def noteColor(self) -> Optional[NoteColor]:
"""
The color of the sticky note.
"""
return self.getNamedAs('8B00', constants.ps.PSETID_NOTE, NoteColor)
@functools.cached_property
def noteHeight(self) -> Optional[int]:
"""
The height of the note window, in pixels.
"""
return self.getNamedProp('8B03', constants.ps.PSETID_NOTE)
@functools.cached_property
def noteWidth(self) -> Optional[int]:
"""
The width of the note window, in pixels.
"""
return self.getNamedProp('8B02', constants.ps.PSETID_NOTE)
@functools.cached_property
def noteX(self) -> Optional[int]:
"""
The distance, in pixels, from the left edge of the screen that a user
interface displays the note.
"""
return self.getNamedProp('8B02', constants.ps.PSETID_NOTE)
@functools.cached_property
def noteY(self) -> Optional[int]:
"""
The distance, in pixels, from the top edge of the screen that a user
interafce displays the note.
"""
return self.getNamedProp('8B02', constants.ps.PSETID_NOTE)