summaryrefslogtreecommitdiffstats
path: root/bitbake/lib/bb/ui
diff options
context:
space:
mode:
Diffstat (limited to 'bitbake/lib/bb/ui')
-rwxr-xr-xbitbake/lib/bb/ui/crumbs/builddetailspage.py16
-rwxr-xr-xbitbake/lib/bb/ui/crumbs/builder.py158
-rw-r--r--bitbake/lib/bb/ui/crumbs/hobeventhandler.py1
-rw-r--r--bitbake/lib/bb/ui/crumbs/template.py24
4 files changed, 127 insertions, 72 deletions
diff --git a/bitbake/lib/bb/ui/crumbs/builddetailspage.py b/bitbake/lib/bb/ui/crumbs/builddetailspage.py
index 23aaacd891..6d8b509e86 100755
--- a/bitbake/lib/bb/ui/crumbs/builddetailspage.py
+++ b/bitbake/lib/bb/ui/crumbs/builddetailspage.py
@@ -81,16 +81,16 @@ class BuildConfigurationTreeView(gtk.TreeView):
81 # renew the tree model after get the configuration messages 81 # renew the tree model after get the configuration messages
82 self.set_model(listmodel) 82 self.set_model(listmodel)
83 83
84 def show(self, src_config_info): 84 def show(self, src_config_info, src_params):
85 vars = [] 85 vars = []
86 vars.append(self.set_vars("BB version:", src_config_info.bb_version)) 86 vars.append(self.set_vars("BB version:", src_params.bb_version))
87 vars.append(self.set_vars("Target arch:", src_config_info.target_arch)) 87 vars.append(self.set_vars("Target arch:", src_params.target_arch))
88 vars.append(self.set_vars("Target OS:", src_config_info.target_os)) 88 vars.append(self.set_vars("Target OS:", src_params.target_os))
89 vars.append(self.set_vars("Machine:", src_config_info.curr_mach)) 89 vars.append(self.set_vars("Machine:", src_config_info.curr_mach))
90 vars.append(self.set_vars("Distro:", src_config_info.curr_distro)) 90 vars.append(self.set_vars("Distro:", src_config_info.curr_distro))
91 vars.append(self.set_vars("Distro version:", src_config_info.distro_version)) 91 vars.append(self.set_vars("Distro version:", src_params.distro_version))
92 vars.append(self.set_vars("SDK machine:", src_config_info.curr_sdk_machine)) 92 vars.append(self.set_vars("SDK machine:", src_config_info.curr_sdk_machine))
93 vars.append(self.set_vars("Tune feature:", src_config_info.tune_pkgarch)) 93 vars.append(self.set_vars("Tune features:", src_params.tune_pkgarch))
94 vars.append(self.set_vars("Layers:", src_config_info.layers)) 94 vars.append(self.set_vars("Layers:", src_config_info.layers))
95 95
96 for path in src_config_info.layers: 96 for path in src_config_info.layers:
@@ -248,5 +248,5 @@ class BuildDetailsPage (HobPage):
248 if (v_adj.upper <= v_adj.page_size) or (v_adj.value == v_adj.upper - v_adj.page_size): 248 if (v_adj.upper <= v_adj.page_size) or (v_adj.value == v_adj.upper - v_adj.page_size):
249 treeview.scroll_to_cell(path) 249 treeview.scroll_to_cell(path)
250 250
251 def show_configurations(self, configurations): 251 def show_configurations(self, configurations, params):
252 self.config_tv.show(configurations) 252 self.config_tv.show(configurations, params)
diff --git a/bitbake/lib/bb/ui/crumbs/builder.py b/bitbake/lib/bb/ui/crumbs/builder.py
index de9685dd26..5dd2b13a50 100755
--- a/bitbake/lib/bb/ui/crumbs/builder.py
+++ b/bitbake/lib/bb/ui/crumbs/builder.py
@@ -42,28 +42,23 @@ import bb.ui.crumbs.utils
42class Configuration: 42class Configuration:
43 '''Represents the data structure of configuration.''' 43 '''Represents the data structure of configuration.'''
44 44
45 def __init__(self, params): 45 def __init__(self):
46 # Settings
47 self.curr_mach = "" 46 self.curr_mach = ""
48 self.curr_distro = params["distro"] 47 # settings
49 self.dldir = params["dldir"] 48 self.curr_distro = ""
50 self.sstatedir = params["sstatedir"] 49 self.dldir = self.sstatedir = self.sstatemirror = ""
51 self.sstatemirror = params["sstatemirror"] 50 self.pmake = self.bbthread = 0
52 self.pmake = int(params["pmake"].split()[1]) 51 self.curr_package_format = ""
53 self.bbthread = params["bbthread"] 52 self.image_rootfs_size = self.image_extra_size = 0
54 self.curr_package_format = " ".join(params["pclass"].split("package_")).strip() 53 self.image_overhead_factor = 1
55 self.image_rootfs_size = params["image_rootfs_size"] 54 self.incompat_license = ""
56 self.image_extra_size = params["image_extra_size"] 55 self.curr_sdk_machine = ""
57 self.image_overhead_factor = params['image_overhead_factor'] 56 self.conf_version = self.lconf_version = ""
58 self.incompat_license = params["incompat_license"]
59 self.curr_sdk_machine = params["sdk_machine"]
60 self.conf_version = params["conf_version"]
61 self.lconf_version = params["lconf_version"]
62 self.extra_setting = {} 57 self.extra_setting = {}
63 self.toolchain_build = False 58 self.toolchain_build = False
64 self.image_fstypes = params["image_fstypes"] 59 self.image_fstypes = ""
65 # bblayers.conf 60 # bblayers.conf
66 self.layers = params["layer"].split() 61 self.layers = []
67 # image/recipes/packages 62 # image/recipes/packages
68 self.selected_image = None 63 self.selected_image = None
69 self.selected_recipes = [] 64 self.selected_recipes = []
@@ -71,19 +66,15 @@ class Configuration:
71 66
72 self.user_selected_packages = [] 67 self.user_selected_packages = []
73 68
74 self.default_task = params["default_task"] 69 self.default_task = "build"
75 70
76 # proxy settings 71 # proxy settings
77 self.all_proxy = params["all_proxy"] 72 self.all_proxy = self.http_proxy = self.ftp_proxy = self.https_proxy = ""
78 self.http_proxy = params["http_proxy"] 73 self.git_proxy_host = self.git_proxy_port = ""
79 self.ftp_proxy = params["ftp_proxy"] 74 self.cvs_proxy_host = self.cvs_proxy_port = ""
80 self.https_proxy = params["https_proxy"]
81 self.git_proxy_host = params["git_proxy_host"]
82 self.git_proxy_port = params["git_proxy_port"]
83 self.cvs_proxy_host = params["cvs_proxy_host"]
84 self.cvs_proxy_port = params["cvs_proxy_port"]
85 75
86 def update(self, params): 76 def update(self, params):
77 # settings
87 self.curr_distro = params["distro"] 78 self.curr_distro = params["distro"]
88 self.dldir = params["dldir"] 79 self.dldir = params["dldir"]
89 self.sstatedir = params["sstatedir"] 80 self.sstatedir = params["sstatedir"]
@@ -99,16 +90,21 @@ class Configuration:
99 self.conf_version = params["conf_version"] 90 self.conf_version = params["conf_version"]
100 self.lconf_version = params["lconf_version"] 91 self.lconf_version = params["lconf_version"]
101 self.image_fstypes = params["image_fstypes"] 92 self.image_fstypes = params["image_fstypes"]
102 self.tune_arch = params["tune_arch"] 93 # self.extra_setting/self.toolchain_build
103 self.bb_version = params["bb_version"]
104 self.target_arch = params["target_arch"]
105 self.target_os = params["target_os"]
106 self.distro_version = params["distro_version"]
107 self.tune_pkgarch = params["tune_pkgarch"]
108 # bblayers.conf 94 # bblayers.conf
109 self.layers = params["layer"].split() 95 self.layers = params["layer"].split()
110 self.default_task = params["default_task"] 96 self.default_task = params["default_task"]
111 97
98 # proxy settings
99 self.all_proxy = params["all_proxy"]
100 self.http_proxy = params["http_proxy"]
101 self.ftp_proxy = params["ftp_proxy"]
102 self.https_proxy = params["https_proxy"]
103 self.git_proxy_host = params["git_proxy_host"]
104 self.git_proxy_port = params["git_proxy_port"]
105 self.cvs_proxy_host = params["cvs_proxy_host"]
106 self.cvs_proxy_port = params["cvs_proxy_port"]
107
112 def load(self, template): 108 def load(self, template):
113 self.curr_mach = template.getVar("MACHINE") 109 self.curr_mach = template.getVar("MACHINE")
114 self.curr_package_format = " ".join(template.getVar("PACKAGE_CLASSES").split("package_")).strip() 110 self.curr_package_format = " ".join(template.getVar("PACKAGE_CLASSES").split("package_")).strip()
@@ -156,11 +152,12 @@ class Configuration:
156 self.cvs_proxy_host = template.getVar("CVS_PROXY_HOST") 152 self.cvs_proxy_host = template.getVar("CVS_PROXY_HOST")
157 self.cvs_proxy_port = template.getVar("CVS_PROXY_PORT") 153 self.cvs_proxy_port = template.getVar("CVS_PROXY_PORT")
158 154
159 def save(self, template): 155 def save(self, template, defaults=False):
160 # bblayers.conf 156 # bblayers.conf
161 template.setVar("BBLAYERS", " ".join(self.layers)) 157 template.setVar("BBLAYERS", " ".join(self.layers))
162 # local.conf 158 # local.conf
163 template.setVar("MACHINE", self.curr_mach) 159 if not defaults:
160 template.setVar("MACHINE", self.curr_mach)
164 template.setVar("DISTRO", self.curr_distro) 161 template.setVar("DISTRO", self.curr_distro)
165 template.setVar("DL_DIR", self.dldir) 162 template.setVar("DL_DIR", self.dldir)
166 template.setVar("SSTATE_DIR", self.sstatedir) 163 template.setVar("SSTATE_DIR", self.sstatedir)
@@ -177,10 +174,11 @@ class Configuration:
177 template.setVar("EXTRA_SETTING", self.extra_setting) 174 template.setVar("EXTRA_SETTING", self.extra_setting)
178 template.setVar("TOOLCHAIN_BUILD", self.toolchain_build) 175 template.setVar("TOOLCHAIN_BUILD", self.toolchain_build)
179 template.setVar("IMAGE_FSTYPES", self.image_fstypes) 176 template.setVar("IMAGE_FSTYPES", self.image_fstypes)
180 # image/recipes/packages 177 if not defaults:
181 template.setVar("__SELECTED_IMAGE__", self.selected_image) 178 # image/recipes/packages
182 template.setVar("DEPENDS", self.selected_recipes) 179 template.setVar("__SELECTED_IMAGE__", self.selected_image)
183 template.setVar("IMAGE_INSTALL", self.user_selected_packages) 180 template.setVar("DEPENDS", self.selected_recipes)
181 template.setVar("IMAGE_INSTALL", self.user_selected_packages)
184 # proxy 182 # proxy
185 template.setVar("all_proxy", self.all_proxy) 183 template.setVar("all_proxy", self.all_proxy)
186 template.setVar("http_proxy", self.http_proxy) 184 template.setVar("http_proxy", self.http_proxy)
@@ -194,23 +192,47 @@ class Configuration:
194class Parameters: 192class Parameters:
195 '''Represents other variables like available machines, etc.''' 193 '''Represents other variables like available machines, etc.'''
196 194
197 def __init__(self, params): 195 def __init__(self):
198 # Variables 196 # Variables
197 self.max_threads = 65535
198 self.core_base = ""
199 self.image_addr = ""
200 self.image_types = []
201 self.runnable_image_types = []
202 self.runnable_machine_patterns = []
203 self.deployable_image_types = []
204 self.tmpdir = ""
205
199 self.all_machines = [] 206 self.all_machines = []
200 self.all_package_formats = [] 207 self.all_package_formats = []
201 self.all_distros = [] 208 self.all_distros = []
202 self.all_sdk_machines = [] 209 self.all_sdk_machines = []
203 self.max_threads = params["max_threads"]
204 self.all_layers = [] 210 self.all_layers = []
205 self.core_base = params["core_base"]
206 self.image_names = [] 211 self.image_names = []
212 self.enable_proxy = False
213
214 # for build log to show
215 self.bb_version = ""
216 self.target_arch = ""
217 self.target_os = ""
218 self.distro_version = ""
219 self.tune_pkgarch = ""
220
221 def update(self, params):
222 self.max_threads = params["max_threads"]
223 self.core_base = params["core_base"]
207 self.image_addr = params["image_addr"] 224 self.image_addr = params["image_addr"]
208 self.image_types = params["image_types"].split() 225 self.image_types = params["image_types"].split()
209 self.runnable_image_types = params["runnable_image_types"].split() 226 self.runnable_image_types = params["runnable_image_types"].split()
210 self.runnable_machine_patterns = params["runnable_machine_patterns"].split() 227 self.runnable_machine_patterns = params["runnable_machine_patterns"].split()
211 self.deployable_image_types = params["deployable_image_types"].split() 228 self.deployable_image_types = params["deployable_image_types"].split()
212 self.tmpdir = params["tmpdir"] 229 self.tmpdir = params["tmpdir"]
213 self.enable_proxy = False 230 # for build log to show
231 self.bb_version = params["bb_version"]
232 self.target_arch = params["target_arch"]
233 self.target_os = params["target_os"]
234 self.distro_version = params["distro_version"]
235 self.tune_pkgarch = params["tune_pkgarch"]
214 236
215def hob_conf_filter(fn, data): 237def hob_conf_filter(fn, data):
216 if fn.endswith("/local.conf"): 238 if fn.endswith("/local.conf"):
@@ -287,6 +309,10 @@ class Builder(gtk.Window):
287 309
288 self.template = None 310 self.template = None
289 311
312 # configuration and parameters
313 self.configuration = Configuration()
314 self.parameters = Parameters()
315
290 # build step 316 # build step
291 self.current_step = None 317 self.current_step = None
292 self.previous_step = None 318 self.previous_step = None
@@ -365,9 +391,10 @@ class Builder(gtk.Window):
365 391
366 def initiate_new_build_async(self): 392 def initiate_new_build_async(self):
367 self.switch_page(self.MACHINE_SELECTION) 393 self.switch_page(self.MACHINE_SELECTION)
368 self.handler.init_cooker() 394 if self.load_template(TemplateMgr.convert_to_template_pathfilename("default", ".hob/")) == None:
369 self.handler.set_extra_inherit("image_types") 395 self.handler.init_cooker()
370 self.handler.parse_config() 396 self.handler.set_extra_inherit("image_types")
397 self.handler.parse_config()
371 398
372 def update_config_async(self): 399 def update_config_async(self):
373 self.switch_page(self.MACHINE_SELECTION) 400 self.switch_page(self.MACHINE_SELECTION)
@@ -432,20 +459,25 @@ class Builder(gtk.Window):
432 self.handler.cancel_parse() 459 self.handler.cancel_parse()
433 460
434 def load_template(self, path): 461 def load_template(self, path):
462 if not os.path.isfile(path):
463 return None
464
435 self.template = TemplateMgr() 465 self.template = TemplateMgr()
436 self.template.load(path) 466 self.template.load(path)
437 self.configuration.load(self.template) 467 self.configuration.load(self.template)
438 468
469 self.template.destroy()
470 self.template = None
471
439 for layer in self.configuration.layers: 472 for layer in self.configuration.layers:
440 if not os.path.exists(layer+'/conf/layer.conf'): 473 if not os.path.exists(layer+'/conf/layer.conf'):
441 return False 474 return False
442 475
476 self.save_defaults() # remember layers and settings
443 self.update_config_async() 477 self.update_config_async()
478 return True
444 479
445 self.template.destroy() 480 def save_template(self, path, defaults=False):
446 self.template = None
447
448 def save_template(self, path):
449 if path.rfind("/") == -1: 481 if path.rfind("/") == -1:
450 filename = "default" 482 filename = "default"
451 path = "." 483 path = "."
@@ -455,12 +487,17 @@ class Builder(gtk.Window):
455 487
456 self.template = TemplateMgr() 488 self.template = TemplateMgr()
457 self.template.open(filename, path) 489 self.template.open(filename, path)
458 self.configuration.save(self.template) 490 self.configuration.save(self.template, defaults)
459 491
460 self.template.save() 492 self.template.save()
461 self.template.destroy() 493 self.template.destroy()
462 self.template = None 494 self.template = None
463 495
496 def save_defaults(self):
497 if not os.path.exists(".hob/"):
498 os.mkdir(".hob/")
499 self.save_template(".hob/default", True)
500
464 def switch_page(self, next_step): 501 def switch_page(self, next_step):
465 # Main Workflow (Business Logic) 502 # Main Workflow (Business Logic)
466 self.nb.set_current_page(self.__step2page__[next_step]) 503 self.nb.set_current_page(self.__step2page__[next_step])
@@ -544,6 +581,11 @@ class Builder(gtk.Window):
544 left = self.package_model.set_selected_packages(selected_packages) 581 left = self.package_model.set_selected_packages(selected_packages)
545 self.configuration.selected_packages += left 582 self.configuration.selected_packages += left
546 583
584 def update_configuration_parameters(self, params):
585 if params:
586 self.configuration.update(params)
587 self.parameters.update(params)
588
547 # Callback Functions 589 # Callback Functions
548 def handler_config_updated_cb(self, handler, which, values): 590 def handler_config_updated_cb(self, handler, which, values):
549 if which == "distro": 591 if which == "distro":
@@ -560,19 +602,15 @@ class Builder(gtk.Window):
560 def handler_command_succeeded_cb(self, handler, initcmd): 602 def handler_command_succeeded_cb(self, handler, initcmd):
561 if initcmd == self.handler.PARSE_CONFIG: 603 if initcmd == self.handler.PARSE_CONFIG:
562 # settings 604 # settings
563 params = self.get_parameters_sync() 605 self.update_configuration_parameters(self.get_parameters_sync())
564 self.configuration = Configuration(params)
565 self.parameters = Parameters(params)
566 self.generate_configuration_async() 606 self.generate_configuration_async()
567 elif initcmd == self.handler.GENERATE_CONFIGURATION: 607 elif initcmd == self.handler.GENERATE_CONFIGURATION:
568 params = self.get_parameters_sync() 608 self.update_configuration_parameters(self.get_parameters_sync())
569 self.configuration.update(params)
570 self.image_configuration_page.switch_machine_combo() 609 self.image_configuration_page.switch_machine_combo()
571 elif initcmd in [self.handler.GENERATE_RECIPES, 610 elif initcmd in [self.handler.GENERATE_RECIPES,
572 self.handler.GENERATE_PACKAGES, 611 self.handler.GENERATE_PACKAGES,
573 self.handler.GENERATE_IMAGE]: 612 self.handler.GENERATE_IMAGE]:
574 params = self.get_parameters_sync() 613 self.update_configuration_parameters(self.get_parameters_sync())
575 self.configuration.update(params)
576 self.request_package_info_async() 614 self.request_package_info_async()
577 elif initcmd == self.handler.POPULATE_PACKAGEINFO: 615 elif initcmd == self.handler.POPULATE_PACKAGEINFO:
578 if self.current_step == self.RCPPKGINFO_POPULATING: 616 if self.current_step == self.RCPPKGINFO_POPULATING:
@@ -691,7 +729,7 @@ class Builder(gtk.Window):
691 elif self.current_step == self.PACKAGE_GENERATING: 729 elif self.current_step == self.PACKAGE_GENERATING:
692 fraction = 0 730 fraction = 0
693 self.build_details_page.update_progress_bar("Build Started: ", fraction) 731 self.build_details_page.update_progress_bar("Build Started: ", fraction)
694 self.build_details_page.show_configurations(self.configuration) 732 self.build_details_page.show_configurations(self.configuration, self.parameters)
695 733
696 def build_succeeded(self): 734 def build_succeeded(self):
697 if self.current_step == self.FAST_IMAGE_GENERATING: 735 if self.current_step == self.FAST_IMAGE_GENERATING:
@@ -857,6 +895,7 @@ class Builder(gtk.Window):
857 response = dialog.run() 895 response = dialog.run()
858 if response == gtk.RESPONSE_YES: 896 if response == gtk.RESPONSE_YES:
859 self.configuration.layers = dialog.layers 897 self.configuration.layers = dialog.layers
898 self.save_defaults() # remember layers
860 # DO refresh layers 899 # DO refresh layers
861 if dialog.layers_changed: 900 if dialog.layers_changed:
862 self.update_config_async() 901 self.update_config_async()
@@ -943,6 +982,7 @@ class Builder(gtk.Window):
943 if response == gtk.RESPONSE_YES: 982 if response == gtk.RESPONSE_YES:
944 self.parameters.enable_proxy = dialog.enable_proxy 983 self.parameters.enable_proxy = dialog.enable_proxy
945 self.configuration = dialog.configuration 984 self.configuration = dialog.configuration
985 self.save_defaults() # remember settings
946 settings_changed = dialog.settings_changed 986 settings_changed = dialog.settings_changed
947 dialog.destroy() 987 dialog.destroy()
948 return response == gtk.RESPONSE_YES, settings_changed 988 return response == gtk.RESPONSE_YES, settings_changed
diff --git a/bitbake/lib/bb/ui/crumbs/hobeventhandler.py b/bitbake/lib/bb/ui/crumbs/hobeventhandler.py
index 17d3fe4a05..7a3cc6b3f9 100644
--- a/bitbake/lib/bb/ui/crumbs/hobeventhandler.py
+++ b/bitbake/lib/bb/ui/crumbs/hobeventhandler.py
@@ -495,7 +495,6 @@ class HobHandler(gobject.GObject):
495 params["target_arch"] = self.server.runCommand(["getVariable", "TARGET_ARCH"]) or "" 495 params["target_arch"] = self.server.runCommand(["getVariable", "TARGET_ARCH"]) or ""
496 params["tune_pkgarch"] = self.server.runCommand(["getVariable", "TUNE_PKGARCH"]) or "" 496 params["tune_pkgarch"] = self.server.runCommand(["getVariable", "TUNE_PKGARCH"]) or ""
497 params["bb_version"] = self.server.runCommand(["getVariable", "BB_MIN_VERSION"]) or "" 497 params["bb_version"] = self.server.runCommand(["getVariable", "BB_MIN_VERSION"]) or ""
498 params["tune_arch"] = self.server.runCommand(["getVariable", "TUNE_ARCH"]) or ""
499 498
500 params["default_task"] = self.server.runCommand(["getVariable", "BB_DEFAULT_TASK"]) or "build" 499 params["default_task"] = self.server.runCommand(["getVariable", "BB_DEFAULT_TASK"]) or "build"
501 500
diff --git a/bitbake/lib/bb/ui/crumbs/template.py b/bitbake/lib/bb/ui/crumbs/template.py
index 5679c18f76..cbed2708de 100644
--- a/bitbake/lib/bb/ui/crumbs/template.py
+++ b/bitbake/lib/bb/ui/crumbs/template.py
@@ -136,11 +136,27 @@ class TemplateMgr(gobject.GObject):
136 self.local_conf = None 136 self.local_conf = None
137 self.image_bb = None 137 self.image_bb = None
138 138
139 @classmethod
140 def convert_to_template_pathfilename(cls, filename, path):
141 return "%s/%s%s%s" % (path, "template-", filename, ".hob")
142
143 @classmethod
144 def convert_to_bblayers_pathfilename(cls, filename, path):
145 return "%s/%s%s%s" % (path, "bblayers-", filename, ".conf")
146
147 @classmethod
148 def convert_to_local_pathfilename(cls, filename, path):
149 return "%s/%s%s%s" % (path, "local-", filename, ".conf")
150
151 @classmethod
152 def convert_to_image_pathfilename(cls, filename, path):
153 return "%s/%s%s%s" % (path, "hob-image-", filename, ".bb")
154
139 def open(self, filename, path): 155 def open(self, filename, path):
140 self.template_hob = HobTemplateFile("%s/%s%s%s" % (path, "template-", filename, ".hob")) 156 self.template_hob = HobTemplateFile(TemplateMgr.convert_to_template_pathfilename(filename, path))
141 self.bblayers_conf = ConfigFile("%s/%s%s%s" % (path, "bblayers-", filename, ".conf")) 157 self.bblayers_conf = ConfigFile(TemplateMgr.convert_to_bblayers_pathfilename(filename, path))
142 self.local_conf = ConfigFile("%s/%s%s%s" % (path, "local-", filename, ".conf")) 158 self.local_conf = ConfigFile(TemplateMgr.convert_to_local_pathfilename(filename, path))
143 self.image_bb = RecipeFile("%s/%s%s%s" % (path, "hob-image-", filename, ".bb")) 159 self.image_bb = RecipeFile(TemplateMgr.convert_to_image_pathfilename(filename, path))
144 160
145 def setVar(self, var, val): 161 def setVar(self, var, val):
146 if var in TemplateMgr.__gLocalVars__: 162 if var in TemplateMgr.__gLocalVars__: