packages feed

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__ */