summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xbitbake/lib/bb/ui/crumbs/imagedetailspage.py72
1 files changed, 46 insertions, 26 deletions
diff --git a/bitbake/lib/bb/ui/crumbs/imagedetailspage.py b/bitbake/lib/bb/ui/crumbs/imagedetailspage.py
index 276281d8a8..7d06124048 100755
--- a/bitbake/lib/bb/ui/crumbs/imagedetailspage.py
+++ b/bitbake/lib/bb/ui/crumbs/imagedetailspage.py
@@ -176,14 +176,30 @@ class ImageDetailsPage (HobPage):
176 build_result = self.DetailBox(varlist=varlist, vallist=vallist, icon=icon, color=color) 176 build_result = self.DetailBox(varlist=varlist, vallist=vallist, icon=icon, color=color)
177 self.box_group_area.pack_start(build_result, expand=False, fill=False) 177 self.box_group_area.pack_start(build_result, expand=False, fill=False)
178 178
179 # create the buttons at the bottom first because the buttons are used in apply_button_per_image()
180 if build_succeeded:
181 buttonlist = ["Build new image", "Save as template", "Run image", "Deploy image"]
182 else: # get to this page from "My images"
183 buttonlist = ["Build new image", "Run image", "Deploy image"]
184 details_bottom_buttons = self.create_bottom_buttons(buttonlist)
185
179 # Name 186 # Name
180 self.image_store.clear() 187 self.image_store.clear()
188 default_toggled = False
189 default_image_size = 0
181 for image_name in image_names: 190 for image_name in image_names:
182 image_size = self._size_to_string(os.stat(os.path.join(image_addr, image_name)).st_size) 191 image_size = self._size_to_string(os.stat(os.path.join(image_addr, image_name)).st_size)
183 self.image_store.set(self.image_store.append(), 0, image_name, 1, image_size, 2, False) 192 if not default_toggled:
193 default_toggled = (self.test_type_runnable(image_name) and self.test_mach_runnable(image_name)) \
194 or self.test_deployable(image_name)
195 self.image_store.set(self.image_store.append(), 0, image_name, 1, image_size, 2, default_toggled)
196 if default_toggled:
197 default_image_size = image_size
198 self.apply_buttons_per_image(image_name)
199 else:
200 self.image_store.set(self.image_store.append(), 0, image_name, 1, image_size, 2, False)
184 image_table = HobViewTable(self.__columns__) 201 image_table = HobViewTable(self.__columns__)
185 image_table.set_model(self.image_store) 202 image_table.set_model(self.image_store)
186 image_size = self._size_to_string(os.stat(os.path.join(image_addr, image_names[0])).st_size)
187 image_table.connect("toggled", self.toggled_cb) 203 image_table.connect("toggled", self.toggled_cb)
188 view_files_button = HobAltButton("View files") 204 view_files_button = HobAltButton("View files")
189 view_files_button.connect("clicked", self.view_files_clicked_cb, image_addr) 205 view_files_button.connect("clicked", self.view_files_clicked_cb, image_addr)
@@ -222,7 +238,7 @@ class ImageDetailsPage (HobPage):
222 varlist = ["Packages included: ", "Total image size: "] 238 varlist = ["Packages included: ", "Total image size: "]
223 vallist = [] 239 vallist = []
224 vallist.append(pkg_num) 240 vallist.append(pkg_num)
225 vallist.append(image_size) 241 vallist.append(default_image_size)
226 if build_succeeded: 242 if build_succeeded:
227 edit_packages_button = HobAltButton("Edit packages") 243 edit_packages_button = HobAltButton("Edit packages")
228 edit_packages_button.connect("clicked", self.edit_packages_button_clicked_cb) 244 edit_packages_button.connect("clicked", self.edit_packages_button_clicked_cb)
@@ -231,11 +247,7 @@ class ImageDetailsPage (HobPage):
231 self.package_detail = self.DetailBox(varlist=varlist, vallist=vallist, button=edit_packages_button) 247 self.package_detail = self.DetailBox(varlist=varlist, vallist=vallist, button=edit_packages_button)
232 self.box_group_area.pack_start(self.package_detail, expand=False, fill=False) 248 self.box_group_area.pack_start(self.package_detail, expand=False, fill=False)
233 249
234 if build_succeeded: 250 # pack the buttons at the bottom, at this time they are already created.
235 buttonlist = ["Build new image", "Save as template", "Run image", "Deploy image"]
236 else: # get to this page from "My images"
237 buttonlist = ["Build new image", "Run image", "Deploy image"]
238 details_bottom_buttons = self.create_bottom_buttons(buttonlist)
239 self.box_group_area.pack_end(details_bottom_buttons, expand=False, fill=False) 251 self.box_group_area.pack_end(details_bottom_buttons, expand=False, fill=False)
240 252
241 self.show_all() 253 self.show_all()
@@ -246,41 +258,49 @@ class ImageDetailsPage (HobPage):
246 def refresh_package_detail_box(self, image_size): 258 def refresh_package_detail_box(self, image_size):
247 self.package_detail.update_line_widgets("Total image size: ", image_size) 259 self.package_detail.update_line_widgets("Total image size: ", image_size)
248 260
249 def toggled_cb(self, table, cell, path, columnid, tree): 261 def test_type_runnable(self, image_name):
250 model = tree.get_model()
251 if not model:
252 return
253 iter = model.get_iter_first()
254 while iter:
255 rowpath = model.get_path(iter)
256 model[rowpath][columnid] = False
257 iter = model.iter_next(iter)
258
259 model[path][columnid] = True
260 self.refresh_package_detail_box(model[path][1])
261
262 type_runnable = False 262 type_runnable = False
263 mach_runnable = False
264 image_name = model[path][0]
265 for t in self.builder.parameters.runnable_image_types: 263 for t in self.builder.parameters.runnable_image_types:
266 if image_name.endswith(t): 264 if image_name.endswith(t):
267 type_runnable = True 265 type_runnable = True
268 break 266 break
267 return type_runnable
269 268
269 def test_mach_runnable(self, image_name):
270 mach_runnable = False
270 for t in self.builder.parameters.runnable_machine_patterns: 271 for t in self.builder.parameters.runnable_machine_patterns:
271 if t in image_name: 272 if t in image_name:
272 mach_runnable = True 273 mach_runnable = True
273 break 274 break
275 return mach_runnable
274 276
275 self.run_button.set_sensitive(type_runnable and mach_runnable) 277 def test_deployable(self, image_name):
276
277 deployable = False 278 deployable = False
278 for t in self.builder.parameters.deployable_image_types: 279 for t in self.builder.parameters.deployable_image_types:
279 if image_name.endswith(t): 280 if image_name.endswith(t):
280 deployable = True 281 deployable = True
281 break 282 break
283 return deployable
282 284
283 self.deploy_button.set_sensitive(deployable) 285 def apply_buttons_per_image(self, image_name):
286 self.run_button.set_sensitive(self.test_type_runnable(image_name) and self.test_mach_runnable(image_name))
287 self.deploy_button.set_sensitive(self.test_deployable(image_name))
288
289 def toggled_cb(self, table, cell, path, columnid, tree):
290 model = tree.get_model()
291 if not model:
292 return
293 iter = model.get_iter_first()
294 while iter:
295 rowpath = model.get_path(iter)
296 model[rowpath][columnid] = False
297 iter = model.iter_next(iter)
298
299 model[path][columnid] = True
300 self.refresh_package_detail_box(model[path][1])
301
302 image_name = model[path][0]
303 self.apply_buttons_per_image(image_name)
284 304
285 def create_bottom_buttons(self, buttonlist): 305 def create_bottom_buttons(self, buttonlist):
286 # Create the buttons at the bottom 306 # Create the buttons at the bottom