| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- /*
- * Copyright (c) 2012-2026 Daniele Bartolini et al.
- * SPDX-License-Identifier: GPL-3.0-or-later
- */
- namespace Crown
- {
- public class SelectResourceDialog : Gtk.Window
- {
- public string _resource_type;
- public Gtk.EventControllerKey _controller_key;
- public ResourceChooser _chooser;
- public Gtk.HeaderBar _header_bar;
- public signal void resource_selected(string type, string name);
- public SelectResourceDialog(string resource_type, ProjectStore project_store, Gtk.Window? parent)
- {
- _resource_type = resource_type;
- this.set_icon_name(CROWN_EDITOR_ICON_NAME);
- if (parent != null) {
- this.set_transient_for(parent);
- this.set_modal(true);
- }
- this.delete_event.connect(on_close);
- _controller_key = new Gtk.EventControllerKey(this);
- _controller_key.set_propagation_phase(Gtk.PropagationPhase.CAPTURE);
- _controller_key.key_pressed.connect((keyval) => {
- if (keyval == Gdk.Key.Escape) {
- this.close();
- return Gdk.EVENT_STOP;
- }
- return Gdk.EVENT_PROPAGATE;
- });
- _header_bar = new Gtk.HeaderBar();
- _header_bar.title = "Select a %s".printf(resource_type);
- _header_bar.show_close_button = true;
- this.set_titlebar(_header_bar);
- _chooser = new ResourceChooser(null, project_store);
- _chooser.set_type_filter(on_resource_chooser_filter);
- _chooser.resource_selected.connect(on_resource_chooser_resource_selected);
- this.add(_chooser);
- }
- public bool on_close()
- {
- this.hide();
- return Gdk.EVENT_STOP;
- }
- public bool on_resource_chooser_filter(string type, string name)
- {
- return _resource_type == type;
- }
- public void on_resource_chooser_resource_selected(string type, string name)
- {
- resource_selected(type, name);
- }
- }
- } /* namespace Crown */
|