[modules] remove setting widgets via "self.widgets(new list)"

use self.add_widget() for all modules
This commit is contained in:
tobi-wan-kenobi 2020-05-09 10:57:44 +02:00
parent 85ac953111
commit 99e3571eee
17 changed files with 52 additions and 121 deletions

View file

@ -12,7 +12,6 @@ import os
import pygit2
import core.module
import core.widget
import util.cli
@ -28,15 +27,13 @@ class Module(core.module.Module):
def update(self):
state = {}
new_widgets = []
self.clear_widgets()
try:
directory = util.cli.execute("xcwd").strip()
directory = self.__get_git_root(directory)
repo = pygit2.Repository(directory)
new_widgets.append(
core.widget.Widget(name="git.main", full_text=repo.head.shorthand)
)
self.add_widget(name="git.main", full_text=repo.head.shorthand)
for filepath, flags in repo.status().items():
if (
@ -56,14 +53,12 @@ class Module(core.module.Module):
state["modified"] = True
self.__error = False
if "new" in state:
new_widgets.append(core.widget.Widget(name="git.new"))
self.add_widget(name="git.new")
if "modified" in state:
new_widgets.append(core.widget.Widget(name="git.modified"))
self.add_widget(name="git.modified")
if "deleted" in state:
new_widgets.append(core.widget.Widget(name="git.deleted"))
self.add_widget(name="git.deleted")
self.widgets().clear()
self.widget(new_widgets)
except Exception as e:
self.__error = True

View file

@ -16,7 +16,6 @@ import shutil
import netifaces
import subprocess
import core.widget
import core.module
import core.decorators
import util.cli
@ -87,14 +86,12 @@ class Module(core.module.Module):
return retval
def _update_widgets(self, widgets):
self.clear_widgets()
interfaces = [
i for i in netifaces.interfaces() if not i.startswith(self._exclude)
]
interfaces.extend([i for i in netifaces.interfaces() if i in self._include])
for widget in widgets:
widget.set("visited", False)
for intf in interfaces:
addr = []
state = "down"
@ -112,8 +109,7 @@ class Module(core.module.Module):
widget = self.widget(intf)
if not widget:
widget = core.widget.Widget(name=intf, module=self)
widgets.append(widget)
widget = self.add_widget(name=intf)
# join/split is used to get rid of multiple whitespaces (in case SSID is not available, for instance
widget.full_text(
" ".join(
@ -127,11 +123,6 @@ class Module(core.module.Module):
)
widget.set("intf", intf)
widget.set("state", state)
widget.set("visited", True)
for widget in widgets:
if widget.get("visited") is False:
widgets.remove(widget)
def get_ssid(self, intf):
if self._iswlan(intf) and self.iwgetid:

View file

@ -21,7 +21,6 @@ import re
import sys
import core.module
import core.widget
import core.input
import core.decorators
@ -52,7 +51,7 @@ class Module(core.module.Module):
self._needs_update = True
def update(self):
new_widgets = []
self.clear_widgets()
if self._autoupdate == False and self._needs_update == False:
return
@ -67,22 +66,18 @@ class Module(core.module.Module):
widget = self.widget(display)
if not widget:
widget = core.widget.Widget(
full_text=display, name=display, module=self
widget = self.add_widget(
full_text=display, name=display
)
core.input.register(widget, button=1, cmd=self._toggle)
core.input.register(widget, button=3, cmd=self._toggle)
new_widgets.append(widget)
widget.set("state", "on" if m else "off")
widget.set("pos", int(m.group(1)) if m else sys.maxsize)
self.widgets(new_widgets)
if self._autoupdate == False:
widget = core.widget.Widget(full_text="", module=self)
widget = self.add_widget(full_text="")
widget.set("state", "refresh")
core.input.register(widget, button=1, cmd=self._refresh)
self.widgets().append(widget)
def state(self, widget):
return widget.get("state", "off")