implementation module Gtk.Internal import StdEnv import StdMaybe import StdDebug import System._Pointer import code from "clean_gtk_support." g_free :: !Pointer !.a -> .a g_free p env = code { ccall g_free "p:V:A" } g_object_unref :: !Pointer !.a -> .a g_object_unref p env = code { ccall g_object_unref "p:V:A" } g_signal_connect :: !Int !Pointer !String !Int !.a -> .a g_signal_connect type widget signal id env = connect type widget (packString signal) id env where connect :: !Int !Pointer !String !Int !.a -> .a connect _ _ _ _ _ = code { ccall clean_g_signal_connect "IpsI:V:A" } gtk_box_new :: !Bool !Int !.a -> (!Pointer, !.a) gtk_box_new vertical spacing env = code { ccall gtk_box_new "II:p:A" } gtk_box_pack_start :: !Pointer !Pointer !Bool !Bool !Int !.a -> .a gtk_box_pack_start box child expand fill spacing env = code { ccall gtk_box_pack_start "ppIII:V:A" } gtk_box_pack_end :: !Pointer !Pointer !Bool !Bool !Int !.a -> .a gtk_box_pack_end box child expand fill spacing env = code { ccall gtk_box_pack_end "ppIII:V:A" } gtk_container_add :: !Pointer !Pointer !.a -> .a gtk_container_add container widget env = code { ccall gtk_container_add "pp:V:A" } gtk_css_provider_new :: !.a -> (!Pointer, !.a) gtk_css_provider_new env = code { ccall gtk_css_provider_new ":p:A" } // TODO: this relies on a deprecated return value; we should connect to the // parsing-error signal instead. gtk_css_provider_load_from_path :: !Pointer !String !Pointer !.a -> (!Bool, !.a) gtk_css_provider_load_from_path provider path error env = load provider (packString path) error env where load :: !Pointer !String !Pointer !.a -> (!Bool, !.a) load _ _ _ _ = code { ccall gtk_css_provider_load_from_path "psp:I:A" } gtk_dialog_run :: !Pointer !.a -> (!Int, !.a) gtk_dialog_run dialog env = code { ccall gtk_dialog_run "p:I:A" } gtk_dialog_set_default_response :: !Pointer !Int !.a -> .a gtk_dialog_set_default_response dialog response env = code { ccall gtk_dialog_set_default_response "pI:V:A" } gtk_file_chooser_add_filter :: !Pointer !Pointer !.a -> .a gtk_file_chooser_add_filter chooser filter env = code { ccall gtk_file_chooser_add_filter "pp:V:A" } gtk_file_chooser_dialog_new :: !(Maybe String) !Pointer !Int ![(String,Int)] !.a -> (!Pointer, !.a) gtk_file_chooser_dialog_new (Just title) parent action [(button,response)] env = new (packString title) parent action (packString button) response 0 env where new :: !String !Pointer !Int !String !Int !Pointer !.a -> (!Pointer, !.a) new _ _ _ _ _ _ _ = code { ccall gtk_file_chooser_dialog_new "spIsIp:p:A" } gtk_file_chooser_dialog_new (Just title) parent action [(b1,r1),(b2,r2)] env = new (packString title) parent action (packString b1) r1 (packString b2) r2 0 env where new :: !String !Pointer !Int !String !Int !String !Int !Pointer !.a -> (!Pointer, !.a) new _ _ _ _ _ _ _ _ _ = code { ccall gtk_file_chooser_dialog_new "spIsIsIp:p:A" } gtk_file_chooser_dialog_new Nothing parent action [(button,response)] env = new 0 parent action (packString button) response 0 env where new :: !Pointer !Pointer !Int !String !Int !Pointer !.a -> (!Pointer, !.a) new _ _ _ _ _ _ _ = code { ccall gtk_file_chooser_dialog_new "ppIsIp:p:A" } gtk_file_chooser_dialog_new Nothing parent action [(b1,r1),(b2,r2)] env = new 0 parent action (packString b1) r1 (packString b2) r2 0 env where new :: !Pointer !Pointer !Int !String !Int !String !Int !Pointer !.a -> (!Pointer, !.a) new _ _ _ _ _ _ _ _ _ = code { ccall gtk_file_chooser_dialog_new "ppIsIsIp:p:A" } gtk_file_chooser_dialog_new _ _ _ buttons env = trace_n ("gtk_file_chooser_dialog_new: "+++toString (length buttons)+++" buttons not supported") (0, env) gtk_file_chooser_get_filename :: !Pointer !.a -> (!Maybe String, !.a) gtk_file_chooser_get_filename chooser env # (filename,env) = get chooser env | filename == 0 = (Nothing, env) # (filename_string,filename) = readP derefString filename # env = g_free filename env = (Just filename_string, env) where get :: !Pointer !.a -> (!Pointer, !.a) get _ _ = code { ccall gtk_file_chooser_get_filename "p:p:A" } gtk_file_filter_new :: !.a -> (!Pointer, !.a) gtk_file_filter_new env = code { ccall gtk_file_filter_new ":p:A" } gtk_file_filter_add_pattern :: !Pointer !String !.a -> .a gtk_file_filter_add_pattern filter pattern env = add filter (packString pattern) env where add :: !Pointer !String !.a -> .a add _ _ _ = code { ccall gtk_file_filter_add_pattern "ps:V:A" } gtk_frame_new :: !(Maybe String) !.a -> (!Pointer, !.a) gtk_frame_new Nothing env = new 0 env where new :: !Int !.a -> (!Pointer, !.a) new _ _ = code { ccall gtk_frame_new "p:p:A" } gtk_frame_new (Just label) env = new label env where new :: !String !.a -> (!Pointer, !.a) new _ _ = code { ccall gtk_frame_new "s:p:A" } gtk_frame_set_label_align :: !Pointer !Real !Real !.a -> .a gtk_frame_set_label_align frame xalign yalign env = code { ccall gtk_frame_set_label_align "prr:V:A" } gtk_init :: !.a -> .a gtk_init env = init 0 0 env where init :: !Pointer !Pointer !.a -> .a init argc argv env = code { ccall gtk_init "pp:V:A" } gtk_main_iteration :: !.a -> (!Bool, !.a) gtk_main_iteration env = code { ccall gtk_main_iteration "G:I:A" } gtk_main_quit :: !.a -> .a gtk_main_quit env = code { ccall gtk_main_quit ":V:A" } gtk_menu_bar_new :: !.a -> (!Pointer, !.a) gtk_menu_bar_new env = code { ccall gtk_menu_bar_new ":p:A" } gtk_menu_item_new :: !.a -> (!Pointer, !.a) gtk_menu_item_new env = code { ccall gtk_menu_item_new ":p:A" } gtk_menu_item_set_label :: !Pointer !String !.a -> .a gtk_menu_item_set_label item label env = set item (packString label) env where set :: !Pointer !String !.a -> .a set _ _ _ = code { ccall gtk_menu_item_set_label "ps:V:A" } gtk_menu_item_set_use_underline :: !Pointer !Bool !.a -> .a gtk_menu_item_set_use_underline item setting env = code { ccall gtk_menu_item_set_use_underline "pI:V:A" } gtk_menu_item_set_submenu :: !Pointer !Pointer !.a -> .a gtk_menu_item_set_submenu item menu env = code { ccall gtk_menu_item_set_submenu "pp:V:A" } gtk_menu_new :: !.a -> (!Pointer, !.a) gtk_menu_new env = code { ccall gtk_menu_new ":p:A" } gtk_menu_shell_append :: !Pointer !Pointer !.a -> .a gtk_menu_shell_append shell item env = code { ccall gtk_menu_shell_append "pp:V:A" } gtk_paned_new :: !Bool !.a -> (!Pointer, !.a) gtk_paned_new vertical env = code { ccall gtk_paned_new "I:p:A" } gtk_paned_pack1 :: !Pointer !Pointer !Bool !Bool !.a -> .a gtk_paned_pack1 paned child resize shrink env = code { ccall gtk_paned_pack1 "ppII:V:A" } gtk_paned_pack2 :: !Pointer !Pointer !Bool !Bool !.a -> .a gtk_paned_pack2 paned child resize shrink env = code { ccall gtk_paned_pack2 "ppII:V:A" } gtk_paned_set_wide_handle :: !Pointer !Bool !.a -> .a gtk_paned_set_wide_handle paned setting env = code { ccall gtk_paned_set_wide_handle "pI:V:A" } gtk_scrolled_window_new :: !Pointer !Pointer !.a -> (!Pointer, !.a) gtk_scrolled_window_new hadjust vadjust env = code { ccall gtk_scrolled_window_new "pp:p:A" } gtk_style_context_add_class :: !Pointer !String !.a -> .a gtk_style_context_add_class context cls env = add context (packString cls) env where add :: !Pointer !String !.a -> .a add _ _ _ = code { ccall gtk_style_context_add_class "ps:V:A" } gtk_style_context_add_provider :: !Pointer !Pointer !Int !.a -> .a gtk_style_context_add_provider context provider priority env = code { ccall gtk_style_context_add_provider "ppI:V:A" } gtk_style_context_add_provider_for_screen :: !Pointer !Pointer !Int !.a -> .a gtk_style_context_add_provider_for_screen context provider priority env = code { ccall gtk_style_context_add_provider_for_screen "ppI:V:A" } gtk_style_context_remove_class :: !Pointer !String !.a -> .a gtk_style_context_remove_class context cls env = remove context (packString cls) env where remove :: !Pointer !String !.a -> .a remove _ _ _ = code { ccall gtk_style_context_remove_class "ps:V:A" } gtk_text_buffer_insert_at_cursor :: !Pointer !String !Int !.a -> .a gtk_text_buffer_insert_at_cursor buffer string len env = code { ccall gtk_text_buffer_insert_at_cursor "psI:V:A" } gtk_text_buffer_set_text :: !Pointer !String !Int !.a -> .a gtk_text_buffer_set_text buffer string len env = code { ccall gtk_text_buffer_set_text "psI:V:A" } gtk_text_view_new :: !.a -> (!Pointer, !.a) gtk_text_view_new env = code { ccall gtk_text_view_new ":p:A" } gtk_text_view_get_buffer :: !Pointer -> Pointer gtk_text_view_get_buffer text_view = code { ccall gtk_text_view_get_buffer "p:p" } gtk_text_view_set_editable :: !Pointer !Bool !.a -> .a gtk_text_view_set_editable text_view setting env = code { ccall gtk_text_view_set_editable "pI:V:A" } gtk_widget_destroy :: !Pointer !.a -> .a gtk_widget_destroy widget env = code { ccall gtk_widget_destroy "p:V:A" } gtk_widget_get_screen :: !Pointer !.a -> (!Pointer, !.a) gtk_widget_get_screen widget env = code { ccall gtk_widget_get_screen "p:p:A" } gtk_widget_get_style_context :: !Pointer !.a -> (!Pointer, !.a) gtk_widget_get_style_context widget env = code { ccall gtk_widget_get_style_context "p:p:A" } gtk_widget_set_margin_bottom :: !Pointer !Int !.a -> .a gtk_widget_set_margin_bottom widget padding env = code { ccall gtk_widget_set_margin_bottom "pI:V:A" } gtk_widget_set_margin_left :: !Pointer !Int !.a -> .a gtk_widget_set_margin_left widget padding env = code { ccall gtk_widget_set_margin_left "pI:V:A" } gtk_widget_set_margin_right :: !Pointer !Int !.a -> .a gtk_widget_set_margin_right widget padding env = code { ccall gtk_widget_set_margin_right "pI:V:A" } gtk_widget_set_margin_top :: !Pointer !Int !.a -> .a gtk_widget_set_margin_top widget padding env = code { ccall gtk_widget_set_margin_top "pI:V:A" } gtk_widget_set_size_request :: !Pointer !Int !Int !.a -> .a gtk_widget_set_size_request widget hsize vsize env = code { ccall gtk_widget_set_size_request "pII:V:A" } gtk_widget_show :: !Pointer !.a -> .a gtk_widget_show widget env = code { ccall gtk_widget_show "p:V:A" } gtk_window_new :: !Bool !.a -> (!Pointer, !.a) gtk_window_new is_popup env = code { ccall gtk_window_new "I:p:A" } gtk_window_set_title :: !Pointer !String !.a -> .a gtk_window_set_title window title env = set window (packString title) env where set :: !Pointer !String !.a -> .a set _ _ _ = code { ccall gtk_window_set_title "ps:V:A" }