diff options
Diffstat (limited to 'bitbake/lib/bb/ui/crumbs/hobwidget.py')
-rw-r--r-- | bitbake/lib/bb/ui/crumbs/hobwidget.py | 168 |
1 files changed, 55 insertions, 113 deletions
diff --git a/bitbake/lib/bb/ui/crumbs/hobwidget.py b/bitbake/lib/bb/ui/crumbs/hobwidget.py index 890151ddd4..141c4efb1b 100644 --- a/bitbake/lib/bb/ui/crumbs/hobwidget.py +++ b/bitbake/lib/bb/ui/crumbs/hobwidget.py | |||
@@ -423,104 +423,6 @@ class HobWidget: | |||
423 | return hbox, layer_store | 423 | return hbox, layer_store |
424 | 424 | ||
425 | @classmethod | 425 | @classmethod |
426 | def _toggle_single_cb(cls, cell, select_path, treeview, toggle_column): | ||
427 | model = treeview.get_model() | ||
428 | if not model: | ||
429 | return | ||
430 | iter = model.get_iter_first() | ||
431 | while iter: | ||
432 | path = model.get_path(iter) | ||
433 | model[path][toggle_column] = False | ||
434 | iter = model.iter_next(iter) | ||
435 | |||
436 | model[select_path][toggle_column] = True | ||
437 | |||
438 | @classmethod | ||
439 | def gen_imgtv_widget(cls, col0_width, col1_width): | ||
440 | vbox = gtk.VBox(False, 10) | ||
441 | |||
442 | imgsel_tv = gtk.TreeView() | ||
443 | imgsel_tv.set_rules_hint(True) | ||
444 | imgsel_tv.set_headers_visible(False) | ||
445 | tree_selection = imgsel_tv.get_selection() | ||
446 | tree_selection.set_mode(gtk.SELECTION_SINGLE) | ||
447 | |||
448 | col0= gtk.TreeViewColumn('Image name') | ||
449 | cell0 = gtk.CellRendererText() | ||
450 | cell0.set_padding(5,2) | ||
451 | col0.pack_start(cell0, True) | ||
452 | col0.set_attributes(cell0, text=0) | ||
453 | col0.set_max_width(col0_width) | ||
454 | col0.set_min_width(col0_width) | ||
455 | imgsel_tv.append_column(col0) | ||
456 | |||
457 | col1= gtk.TreeViewColumn('Select') | ||
458 | cell1 = gtk.CellRendererToggle() | ||
459 | cell1.set_padding(5,2) | ||
460 | cell1.connect("toggled", cls._toggle_single_cb, imgsel_tv, 1) | ||
461 | col1.pack_start(cell1, True) | ||
462 | col1.set_attributes(cell1, active=1) | ||
463 | col1.set_max_width(col1_width) | ||
464 | col1.set_min_width(col1_width) | ||
465 | imgsel_tv.append_column(col1) | ||
466 | |||
467 | scroll = gtk.ScrolledWindow() | ||
468 | scroll.set_policy(gtk.POLICY_NEVER, gtk.POLICY_AUTOMATIC) | ||
469 | scroll.set_shadow_type(gtk.SHADOW_IN) | ||
470 | scroll.add(imgsel_tv) | ||
471 | |||
472 | vbox.pack_start(scroll, expand=True, fill=True) | ||
473 | |||
474 | return vbox, imgsel_tv | ||
475 | |||
476 | @classmethod | ||
477 | def gen_images_widget(cls, col0_width, col1_width, col2_width): | ||
478 | vbox = gtk.VBox(False, 10) | ||
479 | |||
480 | imgsel_tv = gtk.TreeView() | ||
481 | imgsel_tv.set_rules_hint(True) | ||
482 | imgsel_tv.set_headers_visible(False) | ||
483 | tree_selection = imgsel_tv.get_selection() | ||
484 | tree_selection.set_mode(gtk.SELECTION_SINGLE) | ||
485 | |||
486 | col0= gtk.TreeViewColumn('Image name') | ||
487 | cell0 = gtk.CellRendererText() | ||
488 | cell0.set_padding(5,2) | ||
489 | col0.pack_start(cell0, True) | ||
490 | col0.set_attributes(cell0, text=0) | ||
491 | col0.set_max_width(col0_width) | ||
492 | col0.set_min_width(col0_width) | ||
493 | imgsel_tv.append_column(col0) | ||
494 | |||
495 | col1= gtk.TreeViewColumn('Image size') | ||
496 | cell1 = gtk.CellRendererText() | ||
497 | cell1.set_padding(5,2) | ||
498 | col1.pack_start(cell1, True) | ||
499 | col1.set_attributes(cell1, text=1) | ||
500 | col1.set_max_width(col1_width) | ||
501 | col1.set_min_width(col1_width) | ||
502 | imgsel_tv.append_column(col1) | ||
503 | |||
504 | col2= gtk.TreeViewColumn('Select') | ||
505 | cell2 = gtk.CellRendererToggle() | ||
506 | cell2.set_padding(5,2) | ||
507 | cell2.connect("toggled", cls._toggle_single_cb, imgsel_tv, 2) | ||
508 | col2.pack_start(cell2, True) | ||
509 | col2.set_attributes(cell2, active=2) | ||
510 | col2.set_max_width(col2_width) | ||
511 | col2.set_min_width(col2_width) | ||
512 | imgsel_tv.append_column(col2) | ||
513 | |||
514 | scroll = gtk.ScrolledWindow() | ||
515 | scroll.set_policy(gtk.POLICY_NEVER, gtk.POLICY_AUTOMATIC) | ||
516 | scroll.set_shadow_type(gtk.SHADOW_IN) | ||
517 | scroll.add(imgsel_tv) | ||
518 | |||
519 | vbox.pack_start(scroll, expand=True, fill=True) | ||
520 | |||
521 | return vbox, imgsel_tv | ||
522 | |||
523 | @classmethod | ||
524 | def _on_add_item_clicked(cls, button, model): | 426 | def _on_add_item_clicked(cls, button, model): |
525 | new_item = ["##KEY##", "##VALUE##"] | 427 | new_item = ["##KEY##", "##VALUE##"] |
526 | 428 | ||
@@ -617,34 +519,59 @@ class HobViewTable (gtk.VBox): | |||
617 | """ | 519 | """ |
618 | A VBox to contain the table for different recipe views and package view | 520 | A VBox to contain the table for different recipe views and package view |
619 | """ | 521 | """ |
620 | def __init__(self, columns, reset_clicked_cb=None, toggled_cb=None): | 522 | __gsignals__ = { |
523 | "toggled" : (gobject.SIGNAL_RUN_LAST, | ||
524 | gobject.TYPE_NONE, | ||
525 | (gobject.TYPE_PYOBJECT, | ||
526 | gobject.TYPE_STRING, | ||
527 | gobject.TYPE_INT, | ||
528 | gobject.TYPE_PYOBJECT,)), | ||
529 | "changed" : (gobject.SIGNAL_RUN_LAST, | ||
530 | gobject.TYPE_NONE, | ||
531 | (gobject.TYPE_PYOBJECT, | ||
532 | gobject.TYPE_PYOBJECT,)), | ||
533 | } | ||
534 | |||
535 | def __init__(self, columns): | ||
621 | gtk.VBox.__init__(self, False, 6) | 536 | gtk.VBox.__init__(self, False, 6) |
622 | self.table_tree = gtk.TreeView() | 537 | self.table_tree = gtk.TreeView() |
623 | self.table_tree.set_headers_visible(True) | 538 | self.table_tree.set_headers_visible(True) |
624 | self.table_tree.set_headers_clickable(True) | 539 | self.table_tree.set_headers_clickable(True) |
625 | self.table_tree.set_enable_search(True) | 540 | self.table_tree.set_enable_search(True) |
626 | self.table_tree.set_search_column(0) | 541 | self.table_tree.set_rules_hint(True) |
627 | self.table_tree.get_selection().set_mode(gtk.SELECTION_SINGLE) | 542 | self.table_tree.get_selection().set_mode(gtk.SELECTION_SINGLE) |
543 | self.table_tree.get_selection().connect("changed", self.selection_changed_cb, self.table_tree) | ||
628 | 544 | ||
629 | for i in range(len(columns)): | 545 | for i in range(len(columns)): |
630 | col = gtk.TreeViewColumn(columns[i]['col_name']) | 546 | col = gtk.TreeViewColumn(columns[i]['col_name']) |
631 | col.set_clickable(True) | 547 | col.set_clickable(True) |
632 | col.set_resizable(True) | 548 | col.set_resizable(True) |
633 | col.set_sort_column_id(columns[i]['col_id']) | 549 | col.set_sort_column_id(columns[i]['col_id']) |
634 | col.set_min_width(columns[i]['col_min']) | 550 | if 'col_min' in columns[i].keys(): |
635 | col.set_max_width(columns[i]['col_max']) | 551 | col.set_min_width(columns[i]['col_min']) |
552 | if 'col_max' in columns[i].keys(): | ||
553 | col.set_max_width(columns[i]['col_max']) | ||
636 | self.table_tree.append_column(col) | 554 | self.table_tree.append_column(col) |
637 | 555 | ||
638 | if columns[i]['col_style'] == 'toggle': | 556 | if (not 'col_style' in columns[i].keys()) or columns[i]['col_style'] == 'text': |
557 | cell = gtk.CellRendererText() | ||
558 | col.pack_start(cell, True) | ||
559 | col.set_attributes(cell, text=columns[i]['col_id']) | ||
560 | elif columns[i]['col_style'] == 'check toggle': | ||
639 | cell = gtk.CellRendererToggle() | 561 | cell = gtk.CellRendererToggle() |
640 | cell.set_property('activatable', True) | 562 | cell.set_property('activatable', True) |
641 | cell.connect("toggled", toggled_cb, self.table_tree) | 563 | cell.connect("toggled", self.toggled_cb, i, self.table_tree) |
564 | self.toggle_id = i | ||
565 | col.pack_end(cell, True) | ||
566 | col.set_attributes(cell, active=columns[i]['col_id']) | ||
567 | elif columns[i]['col_style'] == 'radio toggle': | ||
568 | cell = gtk.CellRendererToggle() | ||
569 | cell.set_property('activatable', True) | ||
570 | cell.set_radio(True) | ||
571 | cell.connect("toggled", self.toggled_cb, i, self.table_tree) | ||
572 | self.toggle_id = i | ||
642 | col.pack_end(cell, True) | 573 | col.pack_end(cell, True) |
643 | col.set_attributes(cell, active=columns[i]['col_id']) | 574 | col.set_attributes(cell, active=columns[i]['col_id']) |
644 | elif columns[i]['col_style'] == 'text': | ||
645 | cell = gtk.CellRendererText() | ||
646 | col.pack_start(cell, True) | ||
647 | col.set_attributes(cell, text=columns[i]['col_id']) | ||
648 | 575 | ||
649 | scroll = gtk.ScrolledWindow() | 576 | scroll = gtk.ScrolledWindow() |
650 | scroll.set_policy(gtk.POLICY_NEVER, gtk.POLICY_ALWAYS) | 577 | scroll.set_policy(gtk.POLICY_NEVER, gtk.POLICY_ALWAYS) |
@@ -652,12 +579,27 @@ class HobViewTable (gtk.VBox): | |||
652 | scroll.add(self.table_tree) | 579 | scroll.add(self.table_tree) |
653 | self.pack_start(scroll, True, True, 0) | 580 | self.pack_start(scroll, True, True, 0) |
654 | 581 | ||
655 | hbox = gtk.HBox(False, 5) | 582 | def set_model(self, tree_model): |
656 | button = gtk.Button("Reset") | 583 | self.table_tree.set_model(tree_model) |
657 | button.connect('clicked', reset_clicked_cb) | 584 | |
658 | hbox.pack_end(button, False, False, 0) | 585 | def set_search_entry(self, search_column_id, entry): |
586 | self.table_tree.set_search_column(search_column_id) | ||
587 | self.table_tree.set_search_entry(entry) | ||
588 | |||
589 | def toggle_default(self): | ||
590 | model = self.table_tree.get_model() | ||
591 | if not model: | ||
592 | return | ||
593 | iter = model.get_iter_first() | ||
594 | if iter: | ||
595 | rowpath = model.get_path(iter) | ||
596 | model[rowpath][self.toggle_id] = True | ||
597 | |||
598 | def toggled_cb(self, cell, path, columnid, tree): | ||
599 | self.emit("toggled", cell, path, columnid, tree) | ||
659 | 600 | ||
660 | self.pack_start(hbox, False, False, 0) | 601 | def selection_changed_cb(self, selection, tree): |
602 | self.emit("changed", selection, tree) | ||
661 | 603 | ||
662 | class HobViewBar (gtk.EventBox): | 604 | class HobViewBar (gtk.EventBox): |
663 | """ | 605 | """ |