use super::grid;
use super::pack;
use super::widget;
use super::wish;
#[derive(Clone, Debug, PartialEq)]
pub struct TkCombobox {
pub id: String,
}
pub fn make_combobox(parent: &impl widget::TkWidget, values: &[&str]) -> TkCombobox {
let id = wish::next_wid(parent.id());
let mut values_str = String::new();
for value in values {
values_str.push('{');
values_str.push_str(value);
values_str.push('}');
values_str.push(' ');
}
let msg = format!("ttk::combobox {} -values {{{}}}", id, values_str);
wish::tell_wish(&msg);
TkCombobox { id }
}
impl widget::TkWidget for TkCombobox {
fn id(&self) -> &str {
&self.id
}
}
impl grid::TkGridLayout for TkCombobox {}
impl pack::TkPackLayout for TkCombobox {}
impl TkCombobox {
pub fn height(&self, value: u64) {
let msg = format!("{} configure -height {{{}}}", self.id, value);
wish::tell_wish(&msg);
}
pub fn justify(&self, value: widget::Justify) {
widget::configure(&self.id, "justify", &value.to_string());
}
pub fn state(&self, value: widget::State) {
widget::configure(&self.id, "state", &value.to_string());
}
pub fn value(&self, value: &str) {
let msg = format!("puts [{} set {{{}}}] ; flush stdout", self.id, value);
wish::tell_wish(&msg);
}
pub fn value_get(&self) -> String {
let msg = format!("puts [{} get] ; flush stdout", self.id);
wish::ask_wish(&msg)
}
pub fn width(&self, value: u64) {
let msg = format!("{} configure -width {{{}}}", self.id, value);
wish::tell_wish(&msg);
}
}