fltkhs-0.8.0.0: c-src/Fl_CallbackC.h
#ifndef __FL_CALLBACK_C__
#define __FL_CALLBACK_C__
#ifdef __cplusplus
#include "Fl_ExportMacros.h"
#include "Fl_Types.h"
#include "DerivedText_Editor.h"
#include <FL/Fl.H>
#include "FL/Fl_Window.H"
#include <FL/Fl_Widget.H>
#include <FL/Fl_Menu_Item.H>
#include <FL/Fl_Menu_.H>
#include <FL/Fl_Sys_Menu_Bar.H>
#include <FL/Fl_Text_Buffer.H>
#include <FL/Fl_Text_Editor.H>
#include <FL/Fl_File_Chooser.H>
#include <stdio.h>
/**
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;
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:
fl_Key_Func* c_key_func;
Fl_Text_Editor::Key_Func* cpp_key_func;
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);
static int function_pointers_to_free(fl_Widget_Virtual_Funcs* fs, fl_DoNotCall** res);
static int function_pointers_to_free(fl_Table_Virtual_Funcs* fs, fl_DoNotCall** res);
static int function_pointers_to_free(fl_Window_Virtual_Funcs* fs, fl_DoNotCall** res);
static int function_pointers_to_free(fl_Browser_Virtual_Funcs* fs, fl_DoNotCall** res);
static int function_pointers_to_free(fl_Image_Virtual_Funcs* fs, fl_DoNotCall** res);
static int function_pointers_to_free(fl_Valuator_Virtual_Funcs* fs, fl_DoNotCall** res);
static int function_pointers_to_free(fl_Widget_Virtual_Funcs* wfs,fl_Tab_Virtual_Funcs* fs, fl_DoNotCall** res);
static int function_pointers_to_free(fl_Widget_Virtual_Funcs* wfs, fl_Color_Chooser_Virtual_Funcs* cfs, fl_DoNotCall** res);
static Function_Pointers_To_Free* gather_function_pointers(int total_fps, int num_fps, fl_DoNotCall* fps, ...);
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);
fl_Callback* inner_callback() { return this->callback; }
static fl_Callback* get_callback(Fl_Menu_Item* m);
static fl_Callback* get_callback(Fl_Widget* w);
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__ */