1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84
use std::path::PathBuf;
use crate::{
events::ErasedEventData,
impl_event,
};
impl_event! [
FileData;
/// The `filedrop` event fires when the user drops a file over the element.
///
/// Event Data: [`FileData`](crate::events::FileData)
///
/// ### Example
///
/// ```rust, no_run
/// # use freya::prelude::*;
/// fn app() -> Element {
/// rsx!(
/// rect {
/// width: "100%",
/// height: "100%",
/// background: "black",
/// onfiledrop: |e| println!("File dropped: {e:?}")
/// }
/// )
/// }
/// ```
onfiledrop
/// The `onglobalfilehover` event fires when the user hovers a file over the window.
///
/// Event Data: [`FileData`](crate::events::FileData)
///
/// ### Example
///
/// ```rust, no_run
/// # use freya::prelude::*;
/// fn app() -> Element {
/// rsx!(
/// rect {
/// width: "100%",
/// height: "100%",
/// background: "black",
/// onglobalfilehover: |e| println!("File hover: {e:?}")
/// }
/// )
/// }
/// ```
onglobalfilehover
/// The `onglobalfilehovercancelled` event fires when the user cancels the hovering of a file over the window. It's the opposite of [`onglobalfilehover`](crate::events::onglobalfilehover()).
///
/// Event Data: [`FileData`](crate::events::FileData)
///
/// ### Example
///
/// ```rust, no_run
/// # use freya::prelude::*;
/// fn app() -> Element {
/// rsx!(
/// rect {
/// width: "100%",
/// height: "100%",
/// background: "black",
/// onglobalfilehovercancelled: |e| println!("File hover cancelled: {e:?}")
/// }
/// )
/// }
/// ```
onglobalfilehovercancelled
];
/// Data of a File event.
#[derive(Debug, Clone, PartialEq)]
pub struct FileData {
pub file_path: Option<PathBuf>,
}
impl From<&ErasedEventData> for FileData {
fn from(val: &ErasedEventData) -> Self {
val.downcast::<FileData>().cloned().unwrap()
}
}