use {
super::*,
crate::{
command::*,
display::{
Areas,
Screen,
},
skin::PanelSkin,
},
};
/// short lived wrapping of a few things which are needed for the handling
/// of a command in a panel and won't be modified during the operation.
pub struct CmdContext<'c> {
pub cmd: &'c Command,
pub app: &'c AppCmdContext<'c>,
pub panel: PanelCmdContext<'c>,
}
/// the part of the immutable command execution context which comes from the app
pub struct AppCmdContext<'c> {
pub panel_skin: &'c PanelSkin, // needed for example by print_tree verbs
pub preview_panel: Option<PanelId>, // id of the app's preview panel
pub stage_panel: Option<PanelId>, // id of the app's stage panel
pub screen: Screen,
pub con: &'c AppContext,
}
/// the part of the command execution context which comes from the panel
/// in which the command is executed.
pub struct PanelCmdContext<'c> {
pub areas: &'c Areas,
pub purpose: PanelPurpose,
}