Create very basic message tree widget structure

Also, fix some cheuph structuring problems
This commit is contained in:
Joscha 2019-05-25 13:44:28 +00:00
parent 7e2c802364
commit 66a67f3f28
5 changed files with 52 additions and 8 deletions

View file

@ -7,10 +7,10 @@ from .config import *
from .exceptions import *
from .markup import *
from .message import *
from .message_cache import *
from .message_editor_widget import *
from .message_supply import *
from .message_tree_widget import *
from .rendered_message_cache import *
from .user_list_widget import *
__all__: List[str] = []
@ -22,8 +22,8 @@ __all__ += config.__all__
__all__ += exceptions.__all__
__all__ += markup.__all__
__all__ += message.__all__
__all__ += message_cache.__all__
__all__ += message_editor_widget.__all__
__all__ += message_supply.__all__
__all__ += message_tree_widget.__all__
__all__ += rendered_message_cache.__all__
__all__ += user_list_widget.__all__

View file

@ -1,4 +1,4 @@
__all__ = ["AttributedLinesWidget", "ALWidget"]
__all__ = ["AttributedLinesWidget"]
class AttributedLinesWidget:
@ -12,5 +12,3 @@ class AttributedLinesWidget:
"""
pass
ALWidget = AttributedLinesWidget

View file

@ -1,4 +1,9 @@
__all__ = ["Message", "RenderedMessage"]
from typing import Hashable
__all__ = ["Id", "Message", "RenderedMessage"]
Id = Hashable
class Message:

View file

@ -1,7 +1,17 @@
from typing import Optional, Set
import urwid
import yaboli
from .attributed_lines_widget import AttributedLinesWidget
from .message import Id
from .message_supply import MessageSupply
from .rendered_message_cache import RenderedMessageCache
__all__ = ["MessageTreeWidget"]
class MessageTreeWidget:
class MessageTreeWidget(urwid.WidgetWrap):
"""
This widget displays an ElementSupply, including user interface like a
cursor or folding markers. It usually is part of a RoomWidget. It also
@ -24,4 +34,35 @@ class MessageTreeWidget:
finishes editing it.
"""
pass
ROOM_IS_EMPTY = "<no messages>"
def __init__(self,
room: yaboli.Room,
supply: MessageSupply,
) -> None:
self.room = room
self.supply = supply
self.rendered = RenderedMessageCache()
self.lines = AttributedLinesWidget()
self.placeholder = urwid.Filler(urwid.Text(self.ROOM_IS_EMPTY,
align=urwid.CENTER))
# If the anchor is None, but the cursor isn't, the cursor is used as
# the anchor.
self.cursor: Optional[Id] = None
self.anchor: Optional[Id] = None
self.anchor_offset = 0
self.folds: Set[Id] = set()
super().__init__(self.placeholder)
def invalidate_message(self, message_id: Id) -> None:
pass
def invalidate_all_messages(self) -> None:
pass
def redraw(self) -> None:
pass