use nappgui_sys::{
guicontrol_button, guicontrol_combo, guicontrol_edit, guicontrol_get_tag, guicontrol_imageview,
guicontrol_label, guicontrol_listbox, guicontrol_panel, guicontrol_popup, guicontrol_progress,
guicontrol_slider, guicontrol_splitview, guicontrol_tableview, guicontrol_tag,
guicontrol_textview, guicontrol_updown, guicontrol_view, guicontrol_webview,
};
use super::*;
pub struct Control {
pub(crate) inner: *mut nappgui_sys::GuiControl,
}
impl Control {
pub(crate) fn new(ptr: *mut nappgui_sys::GuiControl) -> Self {
if ptr.is_null() {
panic!("ptr is null");
}
Self { inner: ptr }
}
pub fn label(&self) -> Option<Label> {
let label = unsafe { guicontrol_label(self.inner) };
if label.is_null() {
None
} else {
Some(Label::new(label))
}
}
pub fn button(&self) -> Option<Button> {
let button = unsafe { guicontrol_button(self.inner) };
if button.is_null() {
None
} else {
Some(Button::new(button))
}
}
pub fn popup(&self) -> Option<PopUp> {
let popup = unsafe { guicontrol_popup(self.inner) };
if popup.is_null() {
None
} else {
Some(PopUp::new(popup))
}
}
pub fn edit(&self) -> Option<Edit> {
let edit = unsafe { guicontrol_edit(self.inner) };
if edit.is_null() {
None
} else {
Some(Edit::new(edit))
}
}
pub fn combo(&self) -> Option<Combo> {
let combo = unsafe { guicontrol_combo(self.inner) };
if combo.is_null() {
None
} else {
Some(Combo::new(combo))
}
}
pub fn listbox(&self) -> Option<ListBox> {
let listbox = unsafe { guicontrol_listbox(self.inner) };
if listbox.is_null() {
None
} else {
Some(ListBox::new(listbox))
}
}
pub fn updown(&self) -> Option<UpDown> {
let updown = unsafe { guicontrol_updown(self.inner) };
if updown.is_null() {
None
} else {
Some(UpDown::new(updown))
}
}
pub fn slider(&self) -> Option<Slider> {
let slider = unsafe { guicontrol_slider(self.inner) };
if slider.is_null() {
None
} else {
Some(Slider::new(slider))
}
}
pub fn progress(&self) -> Option<Progress> {
let progress = unsafe { guicontrol_progress(self.inner) };
if progress.is_null() {
None
} else {
Some(Progress::new(progress))
}
}
pub fn view(&self) -> Option<View> {
let view = unsafe { guicontrol_view(self.inner) };
if view.is_null() {
None
} else {
Some(View::new(view))
}
}
pub fn textview(&self) -> Option<TextView> {
let textview = unsafe { guicontrol_textview(self.inner) };
if textview.is_null() {
None
} else {
Some(TextView::new(textview))
}
}
pub fn webview(&self) -> Option<WebView> {
let webview = unsafe { guicontrol_webview(self.inner) };
if webview.is_null() {
None
} else {
Some(WebView::new(webview))
}
}
pub fn imageview(&self) -> Option<ImageView> {
let imageview = unsafe { guicontrol_imageview(self.inner) };
if imageview.is_null() {
None
} else {
Some(ImageView::new(imageview))
}
}
pub fn tableview(&self) -> Option<TableView> {
let tableview = unsafe { guicontrol_tableview(self.inner) };
if tableview.is_null() {
None
} else {
Some(TableView::new(tableview))
}
}
pub fn splitview(&self) -> Option<SplitView> {
let splitview = unsafe { guicontrol_splitview(self.inner) };
if splitview.is_null() {
None
} else {
Some(SplitView::new(splitview))
}
}
pub fn panel(&self) -> Option<Panel> {
let panel = unsafe { guicontrol_panel(self.inner) };
if panel.is_null() {
None
} else {
Some(Panel::new(panel))
}
}
pub fn tag(&self, tag: u32) {
unsafe { guicontrol_tag(self.inner, tag) };
}
pub fn get_tag(&self) -> u32 {
unsafe { guicontrol_get_tag(self.inner) }
}
}