use std::path::PathBuf;
use crate::{entity::Entity, environment::ThemeMode, layout::cache::GeoChanged};
use vizia_input::{Code, Key, MouseButton};
use vizia_style::CursorIcon;
use vizia_window::{WindowPosition, WindowSize};
#[derive(Debug, Clone)]
pub enum DropData {
File(PathBuf),
Id(Entity),
}
impl From<Entity> for DropData {
fn from(value: Entity) -> Self {
DropData::Id(value)
}
}
impl From<PathBuf> for DropData {
fn from(value: PathBuf) -> Self {
DropData::File(value)
}
}
#[derive(Debug, Clone)]
pub enum WindowEvent {
WindowClose,
WindowMoved(WindowPosition),
Drop(DropData),
MouseDoubleClick(MouseButton),
MouseTripleClick(MouseButton),
MouseDown(MouseButton),
MouseUp(MouseButton),
Press {
mouse: bool,
},
PressDown {
mouse: bool,
},
MouseMove(f32, f32),
MouseScroll(f32, f32),
MouseOver,
MouseOut,
MouseEnter,
MouseLeave,
FocusIn,
FocusOut,
FocusVisibility(bool),
WindowFocused(bool),
CharInput(char),
ImeActivate(bool),
ImeCommit(String),
ImePreedit(String, Option<(usize, usize)>),
SetImeCursorArea((u32, u32), (u32, u32)),
KeyDown(Code, Option<Key>),
KeyUp(Code, Option<Key>),
ThemeChanged(ThemeMode),
SetCursor(CursorIcon),
GrabCursor(bool),
SetCursorPosition(u32, u32),
SetTitle(String),
SetSize(WindowSize),
SetPosition(WindowPosition),
SetMaxSize(Option<WindowSize>),
SetMinSize(Option<WindowSize>),
SetResizable(bool),
SetMinimized(bool),
SetMaximized(bool),
SetVisible(bool),
SetDecorations(bool),
SetAlwaysOnTop(bool),
MouseCaptureEvent,
MouseCaptureOutEvent,
GeometryChanged(GeoChanged),
Redraw,
Restyle,
Relayout,
FocusNext,
FocusPrev,
Debug(String),
ActionRequest(accesskit::ActionRequest),
ReloadStyles,
SetEnabled(bool),
DragWindow,
Destroyed,
}