ui/curses: highlight changed and added items

This commit is contained in:
rr-
2019-01-14 16:10:26 +01:00
parent 5f34a85c80
commit 555f386b24
9 changed files with 50 additions and 3 deletions
@@ -16,7 +16,7 @@ class EquipmentWindow(Focusable, WindowWrapper):
)
self._player = player
self._player.equipment.connect("change", self.sync_equipment_change)
self._player.equipment.connect("change", self._sync_equipment_change)
self.sync()
@@ -24,7 +24,9 @@ class EquipmentWindow(Focusable, WindowWrapper):
super().stop()
self._data_table.stop()
self._player.equipment.disconnect("change", self.sync_equipment_change)
self._player.equipment.disconnect(
"change", self._sync_equipment_change
)
def sync(self) -> None:
self._data_table.clear()
@@ -33,12 +35,14 @@ class EquipmentWindow(Focusable, WindowWrapper):
equipment_type.value.ljust(15),
self._player.equipment[equipment_type] or "",
)
self._data_table.select(None)
self._render()
def sync_equipment_change(
def _sync_equipment_change(
self, equipment_type: EquipmentType, item_name: T.Optional[str]
) -> None:
self._data_table.set(equipment_type.value, item_name or "")
self._data_table.select(equipment_type.value)
self._render()
def _render(self) -> None:
@@ -78,6 +78,7 @@ class InventoryWindow(Focusable, DataTableProgressBarWindow):
def _sync_gold(self) -> None:
self._data_table.set("Gold", str(self._player.inventory.gold))
self._data_table.select("Gold")
self._render_data_table()
def _sync_items(self) -> None:
@@ -86,18 +87,22 @@ class InventoryWindow(Focusable, DataTableProgressBarWindow):
for item in self._player.inventory:
self._data_table.add(item.name, str(item.quantity))
self._data_table.scroll_to_item(0)
self._data_table.select(None)
self._render_data_table()
def _sync_item_add(self, item: InventoryItem) -> None:
self._data_table.add(item.name, str(item.quantity))
self._data_table.select(item.name)
self._render_data_table()
def _sync_item_del(self, item: InventoryItem) -> None:
self._data_table.delete(item.name)
self._data_table.select(None)
self._render_data_table()
def _sync_item_change(self, item: InventoryItem) -> None:
self._data_table.set(item.name, str(item.quantity))
self._data_table.select(item.name)
self._render_data_table()
def _on_new_task(self) -> None:
@@ -60,6 +60,7 @@ class PlotWindow(Focusable, ListBoxProgressBarWindow):
if prev is not None:
self._list_box.set(-1, "[X] " + prev[4:])
self._list_box.add("[ ] " + act_name(act_number))
self._list_box.select(-1)
self._render_list_box()
def _sync_position(self) -> None:
@@ -48,6 +48,7 @@ class QuestBookWindow(Focusable, ListBoxProgressBarWindow):
self._list_box.clear()
for quest_name in self._player.quest_book.quests[-self.cutoff :]:
self._sync_quest_add(quest_name)
self._list_box.select(-1)
self._render_list_box()
def _sync_quest_add(self, quest_name: str) -> None:
@@ -56,6 +57,7 @@ class QuestBookWindow(Focusable, ListBoxProgressBarWindow):
if prev is not None:
self._list_box.set(-1, "[X] " + prev[4:])
self._list_box.add("[ ] " + quest_name)
self._list_box.select(-1)
self._render_list_box()
def _sync_position(self) -> None:
@@ -41,14 +41,17 @@ class SpellBookWindow(Focusable, WindowWrapper):
self._data_table.clear()
for spell in self._player.spell_book:
self._data_table.add(spell.name, to_roman(spell.level))
self._data_table.select(None)
self._render()
def _sync_spell_add(self, spell: Spell) -> None:
self._data_table.add(spell.name, to_roman(spell.level))
self._data_table.select(spell.name)
self._render()
def _sync_spell_change(self, spell: Spell) -> None:
self._data_table.set(spell.name, to_roman(spell.level))
self._data_table.select(spell.name)
self._render()
def _render(self) -> None: