LicenceChooser.vala 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. using Adw;
  2. using Gtk;
  3. namespace Publicate {
  4. public class LicenceChooser : Popover {
  5. private ViewerWindow toplevel;
  6. private ListBox licence_list;
  7. public signal void licence_selected(Licences.Licence licence);
  8. public LicenceChooser(ViewerWindow window) {
  9. toplevel = window;
  10. var box = new Box(Orientation.VERTICAL, 8);
  11. licence_list = new ListBox();
  12. licence_list.row_activated.connect((row) => {
  13. var item = (LicenceItem)row;
  14. selected(item.licence);
  15. });
  16. box.append(licence_list);
  17. child = box;
  18. foreach (var licence in Licences.get_available_licences()) {
  19. var item = new LicenceItem (licence);
  20. licence_list.append (item);
  21. }
  22. }
  23. private void selected(Licences.Licence licence) {
  24. popdown();
  25. licence_selected(licence);
  26. }
  27. }
  28. public class LicenceItem : ActionRow {
  29. public Licences.Licence licence {get; private set;}
  30. public LicenceItem(Licences.Licence licence) {
  31. this.licence = licence;
  32. activatable = true;
  33. selectable = false;
  34. title = licence.name;
  35. }
  36. }
  37. }