Skip to content

Commit

Permalink
Improve dirty indicator handling (#80)
Browse files Browse the repository at this point in the history
  • Loading branch information
davidbrochart authored Feb 25, 2024
1 parent f1a5dd7 commit bd35c2d
Showing 1 changed file with 12 additions and 8 deletions.
20 changes: 12 additions & 8 deletions plugins/jpterm/txl_jpterm/main_area.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ def __init__(self):
self.mounted = []
self.shown = None
self.tabs = None
self.widgets = {}
self.widget_to_tab = {}
self.title = 0

def show(self, widget: Widget, title: Optional[str] = None):
Expand All @@ -31,11 +31,11 @@ def show(self, widget: Widget, title: Optional[str] = None):
else:
self.tabs.add_tab(tab)
self.tabs.active = tab.id
self.widgets[tab] = widget
self.widget_to_tab[widget] = (tab, False)
self.mounted.append(widget)
self.mount(widget)
else:
tab = list(self.widgets.keys())[list(self.widgets.values()).index(widget)]
tab, dirty = self.widget_to_tab[widget]
self.tabs.active = tab.id

def get_label(self) -> str:
Expand All @@ -50,20 +50,24 @@ def set_dirty(self, widget: Widget) -> None:
if widget not in self.mounted:
return

tab = list(self.widgets.keys())[list(self.widgets.values()).index(widget)]
if not tab.label_text.startswith("+ "):
tab, dirty = self.widget_to_tab[widget]
if not dirty:
self.widget_to_tab[widget] = (tab, True)
tab.label = "+ " + tab.label_text

def clear_dirty(self, widget: Widget) -> None:
if widget not in self.mounted:
return

tab = list(self.widgets.keys())[list(self.widgets.values()).index(widget)]
if tab.label_text.startswith("+ "):
tab, dirty = self.widget_to_tab[widget]
if dirty:
self.widget_to_tab[widget] = (tab, False)
tab.label = tab.label_text[2:]

def on_tabs_tab_activated(self, event: Tabs.TabActivated) -> None:
widget = self.widgets[event.tab]
widgets = list(self.widget_to_tab.keys())
tabs = [tab for tab, dirty in self.widget_to_tab.values()]
widget = widgets[tabs.index(event.tab)]
if self.shown is not None:
self.shown.display = False
self.shown = widget
Expand Down

0 comments on commit bd35c2d

Please sign in to comment.