#ifndef __FL_CALLBACK_C__ #define __FL_CALLBACK_C__ #ifdef __cplusplus #include "Fl_ExportMacros.h" #include "Fl_Types.h" #include "DerivedText_Editor.h" #include #include "FL/Fl_Window.H" #include #include #include #include #include #include #include #include /** Pass a C callback function to an Fl_Window */ class C_to_Fl_Callback { private: fl_Callback* callback; fl_Text_Buffer_Callback* text_buffer_callback; fl_Key_Func* c_key_func; Fl_Text_Editor::Key_Func* cpp_key_func; void* user_data; void runCallback(Fl_Widget* w); void runCallback(); int runCallback(int key, DerivedText_Editor* editor); void runCallback(Fl_File_Chooser* chooser); static void intercept(Fl_Widget* w, void* self) { ((C_to_Fl_Callback*)self)->runCallback(w); } static void intercept(Fl_Text_Buffer* self) { ((C_to_Fl_Callback*)self)->runCallback(); } static void intercept(Fl_File_Chooser* c, void* self){ ((C_to_Fl_Callback*)self)->runCallback(c); } // implementation needs DerivedText_Editor so it is separated public: static int intercept(int key, DerivedText_Editor* editor){ C_to_Fl_Callback* context = editor->get_curr_callback_context(); if (!context) context = editor->get_default_callback_context(); return context->runCallback(key,editor); }; static int intercept(int key, fl_Text_Editor editor); C_to_Fl_Callback(Fl_Widget* invoker, fl_Callback* callback, void* user_data); C_to_Fl_Callback(Fl_Widget* invoker, fl_Callback* callback); C_to_Fl_Callback(fl_Callback* callback); C_to_Fl_Callback(fl_Callback* callback, void* user_data); C_to_Fl_Callback(fl_Text_Buffer_Callback* callback, void* invoker); C_to_Fl_Callback(fl_Key_Func* key_func); C_to_Fl_Callback(Fl_Text_Editor::Key_Func* stored_key_func); C_to_Fl_Callback(Fl_File_Chooser* chooser, void* user_data); C_to_Fl_Callback(Fl_File_Chooser* chooser); void* get_user_data(); void set_callback(Fl_Menu_Item* item); void set_callback(Fl_Text_Buffer* b); void set_user_data(void* user_data); void set_callback(Fl_File_Chooser* b); int menu_insert(Fl_Menu_Item* item, int index, char* name, int shortcut, int flags = 0); int menu_insert(Fl_Menu_* menu_, int index, char* name, int shortcut, int flags = 0); int menu_insert(Fl_Menu_* menu_, int index, char* name, char* shortcut, int flags = 0); int menu_insert(Fl_Sys_Menu_Bar* menu_, int index, char* name, int shortcut, int flags = 0); int menu_insert(Fl_Sys_Menu_Bar* menu_, int index, char* name, char* shortcut, int flags = 0); int menu_add(Fl_Menu_Item* item, char* name, int shortcut, int flags = 0); int menu_add(Fl_Menu_Item* item, char* name, char* shortcut, int flags = 0); int menu_add(Fl_Menu_* menu,char* name, char* shortcut, int flags = 0); int menu_add(Fl_Menu_* menu,char* name, int shortcut, int flags = 0); int menu_add(Fl_Sys_Menu_Bar* menu,char* name, char* shortcut, int flags = 0); int menu_add(Fl_Sys_Menu_Bar* menu,char* name, int shortcut, int flags = 0); }; #endif #endif /* __FL_CALLBACK_C__ */