use std::fmt::{Debug, Formatter, Result};
use get_size::GetSize;
use r3bl_rs_utils_core::{ch, ChUnit};
use serde::*;
use crate::*;
#[derive(Clone, PartialEq, Serialize, Deserialize, GetSize)]
pub struct DialogBuffer {
pub editor_buffer: EditorBuffer,
pub title: String,
pub maybe_results: Option<Vec<String>>,
}
impl DialogBuffer {
pub fn get_results_count(&self) -> ChUnit {
if let Some(ref it) = self.maybe_results {
ch!(it.len())
} else {
ch!(0)
}
}
}
impl DialogBuffer {
pub fn new_empty() -> Self {
DialogBuffer {
editor_buffer: EditorBuffer::new_empty(Some(DEFAULT_SYN_HI_FILE_EXT)),
title: Default::default(),
maybe_results: None,
}
}
}
impl Debug for DialogBuffer {
fn fmt(&self, f: &mut Formatter<'_>) -> Result {
let maybe_results: &dyn Debug = format_option!(&self.maybe_results);
write! { f,
"\nDialogBuffer [ \n\
├ title: {} \n\
├ maybe_results: {:?} \n\
└ editor_buffer: {} \n\
]",
self.title,
maybe_results,
self.editor_buffer.get_as_string()
}
}
}