use nappgui_sys::{
webview_OnFocus, webview_back, webview_create, webview_forward, webview_navigate, webview_size,
};
use crate::util::macros::callback;
pub struct WebView {
pub(crate) inner: *mut nappgui_sys::WebView,
}
impl WebView {
pub(crate) fn new(ptr: *mut nappgui_sys::WebView) -> Self {
if ptr.is_null() {
panic!("ptr is null");
}
Self { inner: ptr }
}
pub fn create() -> Self {
let webview = unsafe { webview_create() };
Self::new(webview)
}
callback! {
pub on_focus(WebView) => webview_OnFocus;
}
pub fn size(&self, width: f32, height: f32) {
let size = nappgui_sys::S2Df { width, height };
unsafe { webview_size(self.inner, size) }
}
pub fn navigate(&self, url: &str) {
let url = std::ffi::CString::new(url).unwrap();
unsafe { webview_navigate(self.inner, url.as_ptr()) }
}
pub fn back(&self) {
unsafe { webview_back(self.inner) }
}
pub fn forward(&self) {
unsafe { webview_forward(self.inner) }
}
}