use crate::language::controls::{Appearance, DragMode, MousePointer, OLEDragMode, OLEDropMode};
use crate::VB6Color;
use image::DynamicImage;
use serde::Serialize;
#[derive(Debug, PartialEq, Clone)]
pub struct DirListBoxProperties<'a> {
pub appearance: Appearance,
pub back_color: VB6Color,
pub causes_validation: bool,
pub drag_icon: Option<DynamicImage>,
pub drag_mode: DragMode,
pub enabled: bool,
pub fore_color: VB6Color,
pub height: i32,
pub help_context_id: i32,
pub left: i32,
pub mouse_icon: Option<DynamicImage>,
pub mouse_pointer: MousePointer,
pub ole_drag_mode: OLEDragMode,
pub ole_drop_mode: OLEDropMode,
pub tab_index: i32,
pub tab_stop: bool,
pub tool_tip_text: &'a str,
pub top: i32,
pub visible: bool,
pub whats_this_help_id: i32,
pub width: i32,
}
impl Default for DirListBoxProperties<'_> {
fn default() -> Self {
DirListBoxProperties {
appearance: Appearance::ThreeD,
back_color: VB6Color::System { index: 5 },
causes_validation: true,
drag_icon: None,
drag_mode: DragMode::Manual,
enabled: true,
fore_color: VB6Color::System { index: 8 },
height: 3195,
help_context_id: 0,
left: 720,
mouse_icon: None,
mouse_pointer: MousePointer::Default,
ole_drag_mode: OLEDragMode::Manual,
ole_drop_mode: OLEDropMode::None,
tab_index: 0,
tab_stop: true,
tool_tip_text: "",
top: 720,
visible: true,
whats_this_help_id: 0,
width: 975,
}
}
}
impl Serialize for DirListBoxProperties<'_> {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: serde::Serializer,
{
use serde::ser::SerializeStruct;
let mut s = serializer.serialize_struct("DirListBoxProperties", 20)?;
s.serialize_field("appearance", &self.appearance)?;
s.serialize_field("back_color", &self.back_color)?;
s.serialize_field("causes_validation", &self.causes_validation)?;
let option_text = self.drag_icon.as_ref().map(|_| "Some(DynamicImage)");
s.serialize_field("drag_icon", &option_text)?;
s.serialize_field("drag_mode", &self.drag_mode)?;
s.serialize_field("enabled", &self.enabled)?;
s.serialize_field("fore_color", &self.fore_color)?;
s.serialize_field("height", &self.height)?;
s.serialize_field("help_context_id", &self.help_context_id)?;
s.serialize_field("left", &self.left)?;
let option_text = self.mouse_icon.as_ref().map(|_| "Some(DynamicImage)");
s.serialize_field("mouse_icon", &option_text)?;
s.serialize_field("mouse_pointer", &self.mouse_pointer)?;
s.serialize_field("ole_drag_mode", &self.ole_drag_mode)?;
s.serialize_field("ole_drop_mode", &self.ole_drop_mode)?;
s.serialize_field("tab_index", &self.tab_index)?;
s.serialize_field("tab_stop", &self.tab_stop)?;
s.serialize_field("tool_tip_text", &self.tool_tip_text)?;
s.serialize_field("top", &self.top)?;
s.serialize_field("visible", &self.visible)?;
s.serialize_field("whats_this_help_id", &self.whats_this_help_id)?;
s.serialize_field("width", &self.width)?;
s.end()
}
}