Keep the json data around
Will be needed for the next commit
This commit is contained in:
parent
ae2dec22da
commit
8fecc5f55b
|
@ -62,29 +62,30 @@ class ErigoGui(object):
|
|||
def __init__ (self, json_file=None, json_string=None, verbose=False):
|
||||
self._verbose = verbose
|
||||
self._widgets = {} # key: widget_name data: widget_instance
|
||||
self._data = None # parsed json data
|
||||
|
||||
if json_file is not None:
|
||||
self._print('\n### Generating gui from file: %s' % json_file)
|
||||
data = json.load(open(json_file))
|
||||
self._data = json.load(open(json_file))
|
||||
elif json_string is not None:
|
||||
self._print('\n### Generating gui from string')
|
||||
data = json.loads(json_string)
|
||||
self._data = json.loads(json_string)
|
||||
else:
|
||||
raise RuntimeError('One of "file" or "json_string" is mandatory')
|
||||
|
||||
for w_name in data['Settings']['start_points']:
|
||||
_widget_generate(self, data, w_name)
|
||||
for w_name in self._data['Settings']['start_points']:
|
||||
_widget_generate(self, w_name)
|
||||
|
||||
def _print(self, msg):
|
||||
if self._verbose:
|
||||
print(msg)
|
||||
|
||||
|
||||
def _widget_generate(self, data, name):
|
||||
def _widget_generate(self, name):
|
||||
self._print('\n### Generating widget: %s' % name)
|
||||
|
||||
# get the widget class object from the correct module
|
||||
w_data = data['Widgets'][name]
|
||||
w_data = self._data['Widgets'][name]
|
||||
eo_klass_name = w_data['Desc']['class']
|
||||
module_name, klass_name = KLASSES[eo_klass_name]
|
||||
mod = importlib.import_module(module_name)
|
||||
|
@ -139,17 +140,17 @@ def _widget_generate(self, data, name):
|
|||
# generate (and pack) children widgets
|
||||
if eo_klass_name == 'Elm_Win':
|
||||
for c_name in w_data.get('Contains', []):
|
||||
child = _widget_generate(self, data, c_name)
|
||||
child = _widget_generate(self, c_name)
|
||||
w.resize_object_add(child)
|
||||
|
||||
elif eo_klass_name == 'Elm_Box':
|
||||
for c_name in w_data.get('Contains', []):
|
||||
child = _widget_generate(self, data, c_name)
|
||||
child = _widget_generate(self, c_name)
|
||||
w.pack_end(child)
|
||||
|
||||
elif eo_klass_name == 'Elm_Table':
|
||||
for c_name, (x, y, cspan, rspan) in w_data.get('Contains', {}).items():
|
||||
child = _widget_generate(self, data, c_name)
|
||||
child = _widget_generate(self, c_name)
|
||||
w.pack(child, x, y, rspan, cspan)
|
||||
|
||||
|
||||
|
@ -167,7 +168,7 @@ def _widget_generate(self, data, name):
|
|||
|
||||
elif cb_data[0] == 'Invoke':
|
||||
cb_alias = cb_data[1]
|
||||
cb_name = data['Resources']['Eo_Callbacks'][cb_alias]
|
||||
cb_name = self._data['Resources']['Eo_Callbacks'][cb_alias]
|
||||
self._print('event %s (Invoke) %s => %s' % \
|
||||
(event_name, cb_alias, cb_name))
|
||||
w._callback_add(str(event_name), getattr(self, cb_name))
|
||||
|
|
Loading…
Reference in New Issue