1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- using Adw;
- using Gtk;
- namespace Publicate {
- public class FileChooserPopover : Popover {
- private ViewerWindow toplevel;
- private FileExplorer explorer;
- public signal void asset_selected(Ppub.Asset asset);
- public FileChooserPopover(ViewerWindow window) {
- toplevel = window;
- var box = new Box(Orientation.VERTICAL, 8);
- explorer = new FileExplorer();
- explorer.height_request = 200;
- explorer.asset_selected.connect(selected);
- box.append(explorer);
- child = box;
- }
- public void set_assets(Invercargill.Enumerable<Ppub.Asset> files) {
- explorer.set_assets(files);
- }
- public void set_selected_item(string name) {
- explorer.set_selected_item(name);
- }
- private void selected(Ppub.Asset asset) {
- popdown();
- asset_selected(asset);
- }
- }
- public class FileChooserRow : ActionRow {
- public signal void asset_selected(Ppub.Asset asset);
- private ViewerWindow toplevel;
- private FileChooserPopover popover;
- public string selected_asset {get; set;}
- public FileChooserRow(ViewerWindow window) {
- toplevel = window;
- subtitle = "Not selected";
- popover = new FileChooserPopover(window);
- popover.asset_selected.connect(selected);
- add_suffix(popover);
- var button = new Button.from_icon_name("document-open-symbolic");
- button.clicked.connect(() => popover.popup());
- button.margin_bottom = 8;
- button.margin_top = 8;
- button.add_css_class("flat");
- add_suffix(button);
- activatable_widget = button;
- activatable = true;
- }
- public void set_assets(Invercargill.Enumerable<Ppub.Asset> files) {
- popover.set_assets(files);
- }
- private void selected(Ppub.Asset asset) {
- selected_asset = name;
- subtitle = asset.name;
- asset_selected(asset);
- }
- public void set_selected_item(string name) {
- subtitle = name;
- popover.set_selected_item(name);
- selected_asset = name;
- }
- }
- }
|