diff options
Diffstat (limited to 'bitbake/lib/bb/ui/crumbs/imagedetailspage.py')
-rwxr-xr-x | bitbake/lib/bb/ui/crumbs/imagedetailspage.py | 72 |
1 files changed, 54 insertions, 18 deletions
diff --git a/bitbake/lib/bb/ui/crumbs/imagedetailspage.py b/bitbake/lib/bb/ui/crumbs/imagedetailspage.py index 352e9489fd..32d4854166 100755 --- a/bitbake/lib/bb/ui/crumbs/imagedetailspage.py +++ b/bitbake/lib/bb/ui/crumbs/imagedetailspage.py | |||
@@ -303,7 +303,7 @@ class ImageDetailsPage (HobPage): | |||
303 | i = i + 1 | 303 | i = i + 1 |
304 | self.num_toggled += is_toggled | 304 | self.num_toggled += is_toggled |
305 | 305 | ||
306 | is_runnable = self.create_bottom_buttons(self.buttonlist, self.toggled_image) | 306 | self.is_runnable = self.create_bottom_buttons(self.buttonlist, self.toggled_image) |
307 | 307 | ||
308 | # Generated image files info | 308 | # Generated image files info |
309 | varlist = ["Name: ", "Files created: ", "Directory: "] | 309 | varlist = ["Name: ", "Files created: ", "Directory: "] |
@@ -324,10 +324,23 @@ class ImageDetailsPage (HobPage): | |||
324 | self.image_detail = self.DetailBox(varlist=varlist, vallist=vallist, button=view_files_button, button2=open_log_button) | 324 | self.image_detail = self.DetailBox(varlist=varlist, vallist=vallist, button=view_files_button, button2=open_log_button) |
325 | self.box_group_area.pack_start(self.image_detail, expand=False, fill=True) | 325 | self.box_group_area.pack_start(self.image_detail, expand=False, fill=True) |
326 | 326 | ||
327 | # The default script path to run the image (runqemu) | ||
328 | self.run_script_path = os.path.join(self.builder.parameters.core_base, "scripts/runqemu") | ||
329 | self.run_script_detail = None | ||
330 | varlist = ["Run script: "] | ||
331 | vallist = [] | ||
332 | vallist.append(self.run_script_path) | ||
333 | |||
334 | change_run_script_button = HobAltButton("Change") | ||
335 | change_run_script_button.connect("clicked", self.change_run_script_cb) | ||
336 | change_run_script_button.set_tooltip_text("Change run script") | ||
337 | self.run_script_detail = self.DetailBox(varlist=varlist, vallist=vallist, button=change_run_script_button) | ||
338 | self.box_group_area.pack_start(self.run_script_detail, expand=False, fill=True) | ||
339 | |||
327 | # The default kernel box for the qemu images | 340 | # The default kernel box for the qemu images |
328 | self.sel_kernel = "" | 341 | self.sel_kernel = "" |
329 | self.kernel_detail = None | 342 | self.kernel_detail = None |
330 | if 'qemu' in image_name: | 343 | if self.test_mach_runnable(image_name): |
331 | self.sel_kernel = self.get_kernel_file_name() | 344 | self.sel_kernel = self.get_kernel_file_name() |
332 | 345 | ||
333 | # varlist = ["Kernel: "] | 346 | # varlist = ["Kernel: "] |
@@ -401,8 +414,10 @@ class ImageDetailsPage (HobPage): | |||
401 | self.box_group_area.pack_start(self.details_bottom_buttons, expand=False, fill=False) | 414 | self.box_group_area.pack_start(self.details_bottom_buttons, expand=False, fill=False) |
402 | 415 | ||
403 | self.show_all() | 416 | self.show_all() |
404 | if self.kernel_detail and (not is_runnable): | 417 | if self.kernel_detail and (not self.is_runnable): |
405 | self.kernel_detail.hide() | 418 | self.kernel_detail.hide() |
419 | if self.run_script_detail and self.is_runnable: | ||
420 | self.run_script_detail.hide() | ||
406 | self.image_saved = False | 421 | self.image_saved = False |
407 | 422 | ||
408 | def view_files_clicked_cb(self, button, image_addr): | 423 | def view_files_clicked_cb(self, button, image_addr): |
@@ -484,7 +499,9 @@ class ImageDetailsPage (HobPage): | |||
484 | if (action_attr == 'run' and primary_action == "Run image") \ | 499 | if (action_attr == 'run' and primary_action == "Run image") \ |
485 | or (action_attr == 'deploy' and primary_action == "Deploy image"): | 500 | or (action_attr == 'deploy' and primary_action == "Deploy image"): |
486 | action_images.append(fileitem) | 501 | action_images.append(fileitem) |
487 | 502 | if (len(action_images) == 0 and primary_action == "Run image"): | |
503 | # if there are no qemu runnable images, let the user choose any of the existing images for custom run | ||
504 | action_images = self.image_store | ||
488 | # pack the corresponding 'runnable' or 'deploy' radio_buttons, if there has no more than one file. | 505 | # pack the corresponding 'runnable' or 'deploy' radio_buttons, if there has no more than one file. |
489 | # assume that there does not both have 'deploy' and 'runnable' files in the same building result | 506 | # assume that there does not both have 'deploy' and 'runnable' files in the same building result |
490 | # in possible as design. | 507 | # in possible as design. |
@@ -499,7 +516,9 @@ class ImageDetailsPage (HobPage): | |||
499 | for fileitem in action_images: | 516 | for fileitem in action_images: |
500 | sel_btn = gtk.RadioButton(sel_parent_btn, fileitem['type']) | 517 | sel_btn = gtk.RadioButton(sel_parent_btn, fileitem['type']) |
501 | sel_parent_btn = sel_btn if not sel_parent_btn else sel_parent_btn | 518 | sel_parent_btn = sel_btn if not sel_parent_btn else sel_parent_btn |
502 | sel_btn.set_active(fileitem['is_toggled']) | 519 | if curr_row == 0: |
520 | sel_btn.set_active(True) | ||
521 | self.toggled_image = fileitem['name'] | ||
503 | sel_btn.connect('toggled', self.table_selected_cb, fileitem) | 522 | sel_btn.connect('toggled', self.table_selected_cb, fileitem) |
504 | if curr_row < 10: | 523 | if curr_row < 10: |
505 | table.attach(sel_btn, 0, 4, curr_row, curr_row + 1, xpadding=24) | 524 | table.attach(sel_btn, 0, 4, curr_row, curr_row + 1, xpadding=24) |
@@ -523,13 +542,15 @@ class ImageDetailsPage (HobPage): | |||
523 | 542 | ||
524 | if response != gtk.RESPONSE_YES: | 543 | if response != gtk.RESPONSE_YES: |
525 | return | 544 | return |
526 | 545 | # perform the primary action on the image selected by the user | |
527 | for fileitem in self.image_store: | 546 | for fileitem in self.image_store: |
528 | if fileitem['is_toggled']: | 547 | if fileitem['name'] == self.toggled_image: |
529 | if fileitem['action_attr'] == 'run': | 548 | if (fileitem['action_attr'] == 'run' and primary_action == "Run image"): |
530 | self.builder.runqemu_image(fileitem['name'], self.sel_kernel) | 549 | self.builder.runqemu_image(fileitem['name'], self.sel_kernel) |
531 | elif fileitem['action_attr'] == 'deploy': | 550 | elif (fileitem['action_attr'] == 'deploy' and primary_action == "Deploy image"): |
532 | self.builder.deploy_image(fileitem['name']) | 551 | self.builder.deploy_image(fileitem['name']) |
552 | elif (primary_action == "Run image"): | ||
553 | self.builder.run_custom_image(fileitem['name'], self.run_script_path) | ||
533 | 554 | ||
534 | def table_selected_cb(self, tbutton, image): | 555 | def table_selected_cb(self, tbutton, image): |
535 | image['is_toggled'] = tbutton.get_active() | 556 | image['is_toggled'] = tbutton.get_active() |
@@ -541,9 +562,14 @@ class ImageDetailsPage (HobPage): | |||
541 | if kernel_path and self.kernel_detail: | 562 | if kernel_path and self.kernel_detail: |
542 | import os.path | 563 | import os.path |
543 | self.sel_kernel = os.path.basename(kernel_path) | 564 | self.sel_kernel = os.path.basename(kernel_path) |
544 | markup = self.kernel_detail.format_line("Kernel: ", self.sel_kernel) | 565 | self.kernel_detail.update_line_widgets("Kernel: ", self.sel_kernel); |
545 | label = ((self.kernel_detail.get_children()[0]).get_children()[0]).get_children()[0] | 566 | |
546 | label.set_markup(markup) | 567 | def change_run_script_cb(self, widget): |
568 | self.run_script_path = self.builder.show_load_run_script_dialog() | ||
569 | if self.run_script_path and self.run_script_detail: | ||
570 | import os.path | ||
571 | self.sel_run_script = os.path.basename(self.run_script_path) | ||
572 | self.run_script_detail.update_line_widgets("Run script: ", self.run_script_path) | ||
547 | 573 | ||
548 | def create_bottom_buttons(self, buttonlist, image_name): | 574 | def create_bottom_buttons(self, buttonlist, image_name): |
549 | # Create the buttons at the bottom | 575 | # Create the buttons at the bottom |
@@ -566,26 +592,33 @@ class ImageDetailsPage (HobPage): | |||
566 | packed = True | 592 | packed = True |
567 | 593 | ||
568 | name = "Run image" | 594 | name = "Run image" |
569 | if name in buttonlist and self.test_type_runnable(image_name) and self.test_mach_runnable(image_name): | 595 | if name in buttonlist: |
596 | name = "Run qemu image" | ||
597 | is_runnable = True | ||
598 | if not (self.test_type_runnable(image_name) and self.test_mach_runnable(image_name)): | ||
599 | name = "Run custom image" | ||
600 | is_runnable = False | ||
570 | if created == True: | 601 | if created == True: |
571 | # separator | 602 | # separator |
572 | #label = gtk.Label(" or ") | 603 | #label = gtk.Label(" or ") |
573 | #self.details_bottom_buttons.pack_end(label, expand=False, fill=False) | 604 | #self.details_bottom_buttons.pack_end(label, expand=False, fill=False) |
574 | 605 | ||
575 | # create button "Run image" | 606 | # create button "Run image" |
576 | run_button = HobAltButton("Run image") | 607 | run_button = HobAltButton(name) |
577 | else: | 608 | else: |
578 | # create button "Run image" as the primary button | 609 | # create button "Run image" as the primary button |
579 | run_button = HobButton("Run image") | 610 | run_button = HobButton(name) |
580 | #run_button.set_size_request(205, 49) | 611 | #run_button.set_size_request(205, 49) |
581 | run_button.set_flags(gtk.CAN_DEFAULT) | 612 | run_button.set_flags(gtk.CAN_DEFAULT) |
582 | packed = True | 613 | packed = True |
583 | run_button.set_tooltip_text("Start up an image with qemu emulator") | 614 | if is_runnable: |
615 | run_button.set_tooltip_text("Start up an image with qemu emulator") | ||
616 | else: | ||
617 | run_button.set_tooltip_text("Start up an image with custom simulator") | ||
584 | button_id = run_button.connect("clicked", self.run_button_clicked_cb) | 618 | button_id = run_button.connect("clicked", self.run_button_clicked_cb) |
585 | self.button_ids[button_id] = run_button | 619 | self.button_ids[button_id] = run_button |
586 | self.details_bottom_buttons.pack_end(run_button, expand=False, fill=False) | 620 | self.details_bottom_buttons.pack_end(run_button, expand=False, fill=False) |
587 | created = True | 621 | created = True |
588 | is_runnable = True | ||
589 | 622 | ||
590 | name = "Save image recipe" | 623 | name = "Save image recipe" |
591 | if name in buttonlist and self.builder.recipe_model.is_custom_image(): | 624 | if name in buttonlist and self.builder.recipe_model.is_custom_image(): |
@@ -628,7 +661,10 @@ class ImageDetailsPage (HobPage): | |||
628 | self.show_builded_images_dialog(None, "Run image") | 661 | self.show_builded_images_dialog(None, "Run image") |
629 | self.set_sensitive(True) | 662 | self.set_sensitive(True) |
630 | else: | 663 | else: |
631 | self.builder.runqemu_image(self.toggled_image, self.sel_kernel) | 664 | if self.is_runnable: |
665 | self.builder.runqemu_image(self.toggled_image, self.sel_kernel) | ||
666 | else: | ||
667 | self.builder.run_custom_image(self.toggled_image, self.run_script_path) | ||
632 | 668 | ||
633 | def save_button_clicked_cb(self, button): | 669 | def save_button_clicked_cb(self, button): |
634 | topdir = self.builder.get_topdir() | 670 | topdir = self.builder.get_topdir() |