// vlib/ui module header 

module ui

const ( 
	KEY_DELETE = 117 
	KEY_ESCAPE = 53 
	KEY_BACK = 51 
	KEY_ENTER = 36 
	KEY_SHIFT = 56 
	KEY_DOWN = 125 
	KEY_UP = 126 
	KEY_SUPER = 1 
)

const ( 
	DEFAULT_FONT_SIZE = 12 
)

const ( 
	ALIGN_RIGHT = 4 
	ALIGN_LEFT = 1 
)

struct Widget { 
	mut : 
	w int 
	h int 
	x int 
	y int 
	parent * Window 
	object voidptr 
	desc string 
	
}

type onclickfn fn ( wnd voidptr ) 


type onscrollfn fn ( wnd voidptr , dx , dy f64 ) 


type onmovefn fn ( wnd voidptr , x , y int ) 


type oncharfn fn ( wnd voidptr , code u32 , mods int ) 


type onkeydownfn fn ( wnd voidptr , c byte , mods , code int ) 


type onkeydown2fn fn ( wnd voidptr , key int , code int , action , mods int ) 


struct Window { 
	mut : 
	widget Widget 
	title string 
	mx int 
	my int 
	ns * NS 
	ptr voidptr 
	col_mode_x int 
	col_mode_y int 
	onclick_cb onclickfn 
	onscroll_cb onscrollfn 
	onmove_cb onmovefn 
	onchar_cb oncharfn 
	onkeydown_cb onkeydown2fn 
	
}

type drawfn fn ( ctx voidptr ) 


struct WinCfg { 
	width int 
	on_resize voidptr 
	ptr voidptr 
	height int 
	title string 
	draw_fn drawfn 
	borderless bool 
	resizable int 
	is_opengl int 
	is_modal int 
	is_browser bool 
	always_on_top int 
	url string 
	parent_wnd * Window 
	no_quit_menu bool 
	retina bool 
	
}

struct KeyEvent { 
	charr string 
	mods int 
	
}

struct CheckBox { 
	widget Widget 
	text string 
	
}

struct Size { 
	width int 
	height int 
	
}

type mydrawfn fn ( ) 


type onmousedownfn fn ( wnd voidptr , x , y int ) 


type rmbfn fn ( wnd voidptr , x , y int ) 


type onmouseupfn fn ( wnd voidptr , x , y int ) 


struct MyView { 
	uiwnd * Window 
	repo voidptr 
	mydraw mydrawfn 
	onclick_cb onclickfn 
	onmove_cb onmovefn 
	onmousedown_cb onmousedownfn 
	rmb_cb rmbfn 
	onmouseup_cb onmouseupfn 
	onscroll_cb onscrollfn 
	onkeydown_cb onkeydownfn 
	
}

struct NS { 
	w voidptr 
	view * MyView 
	nsgl voidptr 
	
}

struct Button { 
	pub : 
	widget Widget 
	text string 
	
}

struct ImageButton { 
	widget Widget 
	image int 
	
}

type ButtonClickFn fn ( btn * Button , ptr voidptr ) 


struct Menu { 
	cobj voidptr 
	parent_window * Window 
	
}

struct TextBox { 
	pub : 
	widget Widget 
	mut : 
	max_len int 
	is_multi bool 
	draw_border bool 
	placeholder string 
	
}

struct C . NSRect { 
}

struct C . NSColor { 
}



fn new_window (config WinCfg) * Window 
fn new_checkbox (text string, checked, enabled bool, parent mut Window) CheckBox 
fn (w mut Window) swap_buffers () 
fn (w mut Window) make_context_current () 
fn (wnd mut Window) refresh_rect (x, y, w, h int) 
fn (w mut Window) refresh () 
fn get_clipboard_text () string 
fn set_clipboard_text (s string) 
fn (w mut Window) set_draw_fn (mydraw voidptr) 
fn (w mut Window) set_title (title string) 
fn (w mut Window) set_size (width, height int) 
fn (widget mut Widget) set_width (width int) 
fn (widget mut Widget) set_pos (x, y int) 
fn (widget mut Widget) set_height (height int) 
fn (widget mut Widget) set_x (x int) 
fn (widget mut Widget) update_pos () 
fn (widget mut Widget) set_size (w, h int) 
fn init_v_ui () 
fn wait_events () 
fn post_empty_event () 
fn delete_all_cookies () 
fn open_url (u string) 

fn (w mut Window) onclick (cb voidptr) 
fn (w mut Window) onmousedown (cb voidptr) 
fn (w mut Window) onrmb (cb voidptr) 
fn (w mut Window) onmouseup (cb voidptr) 
fn (w mut Window) onkeydown (cb voidptr) 
fn (w mut Window) onmove (cb voidptr) 
fn (w mut Window) onscroll (cb voidptr) 
fn file_type_icon (typ string) gx . Image 
fn file_icon (path string) gx . Image 
fn notify (title, s string) 



fn (t TextBox) text () string 
fn (t mut TextBox) set_placeholder (val string) 
fn (t mut TextBox) focus () 
fn (t mut TextBox) unfocus () 
fn new_button (text string, parent * Window, onclick ButtonClickFn) Button 
fn draw_text (x, y int, text string, cfg gx . TextCfg) 
fn draw_text_def (x, y int, s string) 
fn draw_image (x, y, w, h int, img gx . Image) 
fn new_textbox (parent * Window, is_multi bool) TextBox 

fn reg_key_vid () 

fn draw_empty_rect (x, y, w, h int, color gx . Color) 
fn draw_rect (x, y, w, h int, color gx . Color) 
fn draw_circle (x, y, d int, color gx . Color) 
fn draw_line (x, y, x2, y2 int, color gx . Color) 
fn create_image (file string) gx . Image 
fn text_width (text string) int