Partly reorganize stuff
This is just a commit so I can start integrating the config system over the next few commits without polluting config system changes with RoomWidget changes. The RoomWidget is going to be properly cleaned up once the config system is actually in place.
This commit is contained in:
parent
a39dad7946
commit
ae1bbc63e7
1 changed files with 28 additions and 17 deletions
|
|
@ -173,6 +173,7 @@ class RoomWidget(urwid.WidgetWrap):
|
||||||
|
|
||||||
self._mode: str
|
self._mode: str
|
||||||
self._requesting_logs = False
|
self._requesting_logs = False
|
||||||
|
self._hit_top_of_supply = False
|
||||||
|
|
||||||
self._room = yaboli.Room(roomname)
|
self._room = yaboli.Room(roomname)
|
||||||
self._room.register_event("snapshot", self.on_snapshot)
|
self._room.register_event("snapshot", self.on_snapshot)
|
||||||
|
|
@ -211,6 +212,14 @@ class RoomWidget(urwid.WidgetWrap):
|
||||||
super().__init__(self._connecting)
|
super().__init__(self._connecting)
|
||||||
self.switch_connecting()
|
self.switch_connecting()
|
||||||
|
|
||||||
|
# Creating the various parts of the layout.
|
||||||
|
#
|
||||||
|
# This is put into separate methods because the individual elements have a
|
||||||
|
# lot of parameters which are (to be) read from some sort of config system.
|
||||||
|
# Putting all of these into __init__() would be a mess.
|
||||||
|
#
|
||||||
|
# These functions use (or rather: will use) self._conf.
|
||||||
|
|
||||||
def _create_euph_renderer(self) -> EuphRenderer:
|
def _create_euph_renderer(self) -> EuphRenderer:
|
||||||
return EuphRenderer("")
|
return EuphRenderer("")
|
||||||
|
|
||||||
|
|
@ -255,7 +264,7 @@ class RoomWidget(urwid.WidgetWrap):
|
||||||
def _create_edit_nick_widget(self) -> Any:
|
def _create_edit_nick_widget(self) -> Any:
|
||||||
return EditWidget("Choose a nick: ", "@")
|
return EditWidget("Choose a nick: ", "@")
|
||||||
|
|
||||||
# Start up the connection and room
|
## Room life cycle
|
||||||
|
|
||||||
@synchronous
|
@synchronous
|
||||||
async def connect(self) -> None:
|
async def connect(self) -> None:
|
||||||
|
|
@ -268,11 +277,11 @@ class RoomWidget(urwid.WidgetWrap):
|
||||||
|
|
||||||
@synchronous
|
@synchronous
|
||||||
async def disconnect(self) -> None:
|
async def disconnect(self) -> None:
|
||||||
self._room.disconnect()
|
await self._room.disconnect()
|
||||||
|
# TODO attach this to the room's disconnect event instead
|
||||||
|
urwid.emit_signal(self, "close")
|
||||||
|
|
||||||
# NEW, BETTER ORGANIZED ROOM WIDGET
|
## UI mode and mode switching
|
||||||
|
|
||||||
# UI mode and mode switching
|
|
||||||
|
|
||||||
CONNECTING = "connecting"
|
CONNECTING = "connecting"
|
||||||
CONNECTION_FAILED = "connection_failed"
|
CONNECTION_FAILED = "connection_failed"
|
||||||
|
|
@ -360,7 +369,7 @@ class RoomWidget(urwid.WidgetWrap):
|
||||||
self._tree.invalidate(msg.message_id)
|
self._tree.invalidate(msg.message_id)
|
||||||
self.update_tree()
|
self.update_tree()
|
||||||
|
|
||||||
# Reacting to urwid stuff
|
## Reacting to urwid stuff
|
||||||
|
|
||||||
def render(self, size: Tuple[int, int], focus: bool) -> None:
|
def render(self, size: Tuple[int, int], focus: bool) -> None:
|
||||||
canvas = super().render(size, focus)
|
canvas = super().render(size, focus)
|
||||||
|
|
@ -385,6 +394,8 @@ class RoomWidget(urwid.WidgetWrap):
|
||||||
elif key == "r":
|
elif key == "r":
|
||||||
self._tree.invalidate_all()
|
self._tree.invalidate_all()
|
||||||
self._tree_widget._invalidate()
|
self._tree_widget._invalidate()
|
||||||
|
elif key == "q":
|
||||||
|
self.disconnect()
|
||||||
else:
|
else:
|
||||||
return super().keypress(size, key)
|
return super().keypress(size, key)
|
||||||
|
|
||||||
|
|
@ -419,6 +430,17 @@ class RoomWidget(urwid.WidgetWrap):
|
||||||
|
|
||||||
## Euph stuff
|
## Euph stuff
|
||||||
|
|
||||||
|
# Reacting to euph events
|
||||||
|
|
||||||
|
async def on_snapshot(self, messages: List[yaboli.Message]):
|
||||||
|
for message in messages:
|
||||||
|
self.receive_message(message)
|
||||||
|
self.update_tree()
|
||||||
|
|
||||||
|
async def on_send(self, message: yaboli.Message):
|
||||||
|
self.receive_message(message)
|
||||||
|
self.update_tree()
|
||||||
|
|
||||||
# Euph actions
|
# Euph actions
|
||||||
|
|
||||||
@synchronous
|
@synchronous
|
||||||
|
|
@ -443,15 +465,4 @@ class RoomWidget(urwid.WidgetWrap):
|
||||||
self.receive_message(message)
|
self.receive_message(message)
|
||||||
self.update_tree()
|
self.update_tree()
|
||||||
|
|
||||||
# Reacting to euph events
|
|
||||||
|
|
||||||
async def on_snapshot(self, messages: List[yaboli.Message]):
|
|
||||||
for message in messages:
|
|
||||||
self.receive_message(message)
|
|
||||||
self.update_tree()
|
|
||||||
|
|
||||||
async def on_send(self, message: yaboli.Message):
|
|
||||||
self.receive_message(message)
|
|
||||||
self.update_tree()
|
|
||||||
|
|
||||||
urwid.register_signal(RoomWidget, ["close"])
|
urwid.register_signal(RoomWidget, ["close"])
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue