support a controller being shown more than once
This commit is contained in:
parent
51113aaea9
commit
9aea579027
|
@ -105,3 +105,19 @@ class BaseController(ABC):
|
|||
self.loop.set_alarm_in(
|
||||
delay,
|
||||
lambda *args: self._run_iterator(it, delay/1.1))
|
||||
|
||||
|
||||
class RepeatedController(BaseController):
|
||||
|
||||
def __init__(self, orig, index):
|
||||
self.orig = orig
|
||||
self.index = index
|
||||
|
||||
def register_signals(self):
|
||||
pass
|
||||
|
||||
def default(self):
|
||||
self.orig.default(self.index)
|
||||
|
||||
def cancel(self):
|
||||
self.orig.cancel()
|
||||
|
|
|
@ -26,6 +26,7 @@ import tty
|
|||
import urwid
|
||||
import yaml
|
||||
|
||||
from subiquitycore.controller import RepeatedController
|
||||
from subiquitycore.signals import Signal
|
||||
from subiquitycore.prober import Prober, ProberException
|
||||
|
||||
|
@ -291,6 +292,8 @@ class Application:
|
|||
if opts.screens:
|
||||
self.controllers = [c for c in self.controllers
|
||||
if c in opts.screens]
|
||||
else:
|
||||
self.controllers = self.controllers[:]
|
||||
ui.progress_completion = len(self.controllers)
|
||||
self.common['controllers'] = dict.fromkeys(self.controllers)
|
||||
self.controller_index = -1
|
||||
|
@ -475,10 +478,21 @@ class Application:
|
|||
self.run_scripts(self.common['opts'].scripts)
|
||||
controllers_mod = __import__('%s.controllers' % self.project,
|
||||
None, None, [''])
|
||||
for k in self.controllers:
|
||||
log.debug("Importing controller: {}".format(k))
|
||||
klass = getattr(controllers_mod, k+"Controller")
|
||||
self.common['controllers'][k] = klass(self.common)
|
||||
for i, k in enumerate(self.controllers):
|
||||
if self.common['controllers'][k] is None:
|
||||
log.debug("Importing controller: {}".format(k))
|
||||
klass = getattr(controllers_mod, k+"Controller")
|
||||
self.common['controllers'][k] = klass(self.common)
|
||||
else:
|
||||
count = 1
|
||||
for k2 in self.controllers[:i]:
|
||||
if k2 == k or k2.startswith(k + '-'):
|
||||
count += 1
|
||||
orig = self.common['controllers'][k]
|
||||
k += '-' + str(count)
|
||||
self.controllers[i] = k
|
||||
self.common['controllers'][k] = RepeatedController(
|
||||
orig, count)
|
||||
log.debug("*** %s", self.common['controllers'])
|
||||
|
||||
initial_controller_index = 0
|
||||
|
|
Loading…
Reference in New Issue