use std::{path::Path, sync::Arc}; use adw::{Application, ApplicationWindow, HeaderBar, SplitButton}; use gtk::{ glib::Sender, traits::{ BoxExt, ButtonExt, DialogExt, FileChooserExt, GridExt, GtkApplicationExt, GtkWindowExt, RangeExt, ScaleExt, ToggleButtonExt, WidgetExt, }, ActionBar, AspectFrame, Box, Button, FileChooserAction, FileChooserDialog, FileFilter, Grid, Image, Orientation, PositionType, ResponseType, Scale, Separator, ToggleButton, }; use crate::{ constants::{ MARGIN_LEFT, MARGIN_RIGHT_SCALE_ADDITIONAL, MARGIN_TOP, SCALE_STEP, TOGGLE_NEIGHBOURS_TEXT, TOGGLE_NEIGHBOURS_TEXT_TOGGLED, }, state::{Message, State, UIMessage}, AnnotationImage, MARGIN_BOTTOM, }; #[derive(Debug, Clone, Builder)] pub struct ImageUI { pub window: Arc, pub application_vertical_widget: Arc, pub individual: Arc, pub center: Arc, pub neighbours: [Arc; 8], pub focus_scale: Arc, pub focus_neighbours_grid: Arc, pub focus_neighbours_aspect_frame: Arc, pub neighbour_toggle_button: ToggleButton, pub open_button: Arc, pub back_button: Arc