4
def __init__(self, typ):
9
return ",".join((str(self.typ), str(self.fold)))
11
class AntennaFoldState(object):
12
def __init__(self, nodecanvas, workermanager):
15
self._init_widget = {}
16
self._nodecanvas = weakref.ref(nodecanvas)
17
self._workermanager = weakref.ref(workermanager)
18
self._pAntennaFoldState = self._AntennaFoldStateClass(self)
21
def create_worker(self, workerid, antennas, guiparams):
23
for a, typ in antennas:
24
antenna = Antenna(typ)
27
foldable = p.get("foldable", True)
29
antenna.foldable = False
32
fold = p.get("fold", False)
35
if not len(state): state = None
36
self.states[workerid] = state
38
def remove_worker(self, workerid):
39
state = self.states.pop(workerid)
40
self._init_form.pop(workerid, None)
41
self._init_widget.pop(workerid, None)
42
self._sync.pop(workerid, None)
44
self._pAntennaFoldState.remove_worker(workerid)
46
def rename_worker(self, workerid, newid):
47
state = self.states.pop(workerid)
48
self.states[newid] = state
49
for d in self._init_form, self._init_widget, self._sync:
50
if workerid not in d: continue
53
self._pAntennaFoldState.rename_worker(workerid, newid)
55
def init_form(self, workerid, form):
56
if workerid in self._init_form: return
57
self._init_form[workerid] = True
58
self._pAntennaFoldState.init_form(workerid, form)
60
def init_widget(self, workerid, widget, controller):
61
if workerid in self._init_widget: return
62
self._init_widget[workerid] = True
63
self._pAntennaFoldState.init_widget(workerid, widget, controller)
64
state = self.states[workerid]
65
if state is None: return
69
self._pAntennaFoldState.p_fold(workerid, a)
71
self._pAntennaFoldState.p_expand(workerid, a)
73
def gui_sets_value(self, workerid, member, value):
74
variable = self._nodecanvas().get_antenna_connected_variable(workerid, member)
75
self._workermanager()._update_variable(variable, value)
77
def fold(self, workerid, member):
78
antenna = self.states[workerid][member]
79
assert not antenna.fold
80
if not antenna.foldable: return
82
folded, value = self._nodecanvas().fold_antenna_connection(workerid, member, antenna.typ, onload=False)
86
if workerid in self._init_widget:
87
self._pAntennaFoldState.p_fold(workerid, member)
88
self._pAntennaFoldState.p_set_value(workerid, member, value)
90
def gui_folds(self, workerid, member):
91
self.fold(workerid, member)
93
def gui_expands(self, workerid, member):
94
self.expand(workerid, member)
96
def expand(self, workerid, member):
97
antenna = self.states[workerid][member]
98
if not antenna.fold: return
100
self._nodecanvas().expand_antenna_connection(workerid, member)
101
if workerid in self._init_widget:
102
self._pAntennaFoldState.p_expand(workerid, member)
105
return self._pAntennaFoldState
107
def sync(self, workerid, onload):
109
Synchronizes all folded variables
110
If a folded antenna has a connection:
111
Retrieve the variable and update the parameter GUI
113
Create a new variable based on the parameter GUI
115
state = self.states[workerid]
116
if state is None: return
117
assert workerid not in self._sync, workerid
118
assert workerid not in self._init_widget, workerid
119
self._sync[workerid] = True
122
if not onload and not antenna.fold: continue
123
folded, value = self._nodecanvas().fold_antenna_connection(
124
workerid,a, antenna.typ, onload
130
self._pAntennaFoldState.p_set_value(workerid, a, value)
b'\\ No newline at end of file'