summaryrefslogtreecommitdiff
path: root/body/c_fl_text_editor.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'body/c_fl_text_editor.cpp')
-rw-r--r--body/c_fl_text_editor.cpp398
1 files changed, 398 insertions, 0 deletions
diff --git a/body/c_fl_text_editor.cpp b/body/c_fl_text_editor.cpp
new file mode 100644
index 0000000..6138cb2
--- /dev/null
+++ b/body/c_fl_text_editor.cpp
@@ -0,0 +1,398 @@
+
+
+// Programmed by Jedidiah Barber
+// Released into the public domain
+
+
+#include <FL/Fl_Text_Editor.H>
+#include "c_fl_text_editor.h"
+
+
+
+
+// Exports from Ada
+
+extern "C" void widget_draw_hook(void * ud);
+extern "C" int widget_handle_hook(void * ud, int e);
+
+
+
+
+// Non-friend protected access
+
+class Friend_Text_Editor : Fl_Text_Editor {
+public:
+ using Fl_Text_Editor::handle_key;
+ using Fl_Text_Editor::maybe_do_callback;
+};
+
+
+
+
+// Attaching all relevant hooks and friends
+
+class My_Text_Editor : public Fl_Text_Editor {
+public:
+ using Fl_Text_Editor::Fl_Text_Editor;
+
+ friend void fl_text_editor_draw(TEXTEDITOR te);
+ friend int fl_text_editor_handle(TEXTEDITOR te, int e);
+
+ void draw();
+ int handle(int e);
+};
+
+void My_Text_Editor::draw() {
+ widget_draw_hook(this->user_data());
+}
+
+int My_Text_Editor::handle(int e) {
+ return widget_handle_hook(this->user_data(), e);
+}
+
+
+
+
+// Flattened C API
+
+TEXTEDITOR new_fl_text_editor(int x, int y, int w, int h, char* label) {
+ My_Text_Editor *te = new My_Text_Editor(x, y, w, h, label);
+ return te;
+}
+
+void free_fl_text_editor(TEXTEDITOR te) {
+ delete static_cast<My_Text_Editor*>(te);
+}
+
+
+
+
+void fl_text_editor_default(TEXTEDITOR te, int k) {
+ Fl_Text_Editor::kf_default(k, static_cast<Fl_Text_Editor*>(te));
+}
+
+
+
+
+void fl_text_editor_undo(TEXTEDITOR te) {
+ Fl_Text_Editor::kf_undo(0, static_cast<Fl_Text_Editor*>(te));
+}
+
+void fl_text_editor_cut(TEXTEDITOR te) {
+ Fl_Text_Editor::kf_cut(0, static_cast<Fl_Text_Editor*>(te));
+}
+
+void fl_text_editor_copy(TEXTEDITOR te) {
+ Fl_Text_Editor::kf_copy(0, static_cast<Fl_Text_Editor*>(te));
+}
+
+void fl_text_editor_paste(TEXTEDITOR te) {
+ Fl_Text_Editor::kf_paste(0, static_cast<Fl_Text_Editor*>(te));
+}
+
+void fl_text_editor_delete(TEXTEDITOR te) {
+ Fl_Text_Editor::kf_delete(0, static_cast<Fl_Text_Editor*>(te));
+}
+
+void fl_text_editor_select_all(TEXTEDITOR te) {
+ Fl_Text_Editor::kf_select_all(0, static_cast<Fl_Text_Editor*>(te));
+}
+
+
+
+
+void fl_text_editor_backspace(TEXTEDITOR te) {
+ Fl_Text_Editor::kf_backspace(0, static_cast<Fl_Text_Editor*>(te));
+}
+
+void fl_text_editor_insert(TEXTEDITOR te) {
+ Fl_Text_Editor::kf_insert(0, static_cast<Fl_Text_Editor*>(te));
+}
+
+void fl_text_editor_enter(TEXTEDITOR te) {
+ Fl_Text_Editor::kf_enter(0, static_cast<Fl_Text_Editor*>(te));
+}
+
+void fl_text_editor_ignore(TEXTEDITOR te) {
+ Fl_Text_Editor::kf_ignore(0, static_cast<Fl_Text_Editor*>(te));
+}
+
+
+
+
+void fl_text_editor_home(TEXTEDITOR te) {
+ Fl_Text_Editor::kf_home(0, static_cast<Fl_Text_Editor*>(te));
+}
+
+void fl_text_editor_end(TEXTEDITOR te) {
+ Fl_Text_Editor::kf_end(0, static_cast<Fl_Text_Editor*>(te));
+}
+
+void fl_text_editor_page_down(TEXTEDITOR te) {
+ Fl_Text_Editor::kf_page_down(0, static_cast<Fl_Text_Editor*>(te));
+}
+
+void fl_text_editor_page_up(TEXTEDITOR te) {
+ Fl_Text_Editor::kf_page_up(0, static_cast<Fl_Text_Editor*>(te));
+}
+
+void fl_text_editor_down(TEXTEDITOR te) {
+ Fl_Text_Editor::kf_down(0, static_cast<Fl_Text_Editor*>(te));
+}
+
+void fl_text_editor_left(TEXTEDITOR te) {
+ Fl_Text_Editor::kf_left(0, static_cast<Fl_Text_Editor*>(te));
+}
+
+void fl_text_editor_right(TEXTEDITOR te) {
+ Fl_Text_Editor::kf_right(0, static_cast<Fl_Text_Editor*>(te));
+}
+
+void fl_text_editor_up(TEXTEDITOR te) {
+ Fl_Text_Editor::kf_up(0, static_cast<Fl_Text_Editor*>(te));
+}
+
+
+
+
+void fl_text_editor_shift_home(TEXTEDITOR te) {
+ Fl_Text_Editor::kf_shift_move(FL_Home, static_cast<Fl_Text_Editor*>(te));
+}
+
+void fl_text_editor_shift_end(TEXTEDITOR te) {
+ Fl_Text_Editor::kf_shift_move(FL_End, static_cast<Fl_Text_Editor*>(te));
+}
+
+void fl_text_editor_shift_page_down(TEXTEDITOR te) {
+ Fl_Text_Editor::kf_shift_move(FL_Page_Down, static_cast<Fl_Text_Editor*>(te));
+}
+
+void fl_text_editor_shift_page_up(TEXTEDITOR te) {
+ Fl_Text_Editor::kf_shift_move(FL_Page_Up, static_cast<Fl_Text_Editor*>(te));
+}
+
+void fl_text_editor_shift_down(TEXTEDITOR te) {
+ Fl_Text_Editor::kf_shift_move(FL_Down, static_cast<Fl_Text_Editor*>(te));
+}
+
+void fl_text_editor_shift_left(TEXTEDITOR te) {
+ Fl_Text_Editor::kf_shift_move(FL_Left, static_cast<Fl_Text_Editor*>(te));
+}
+
+void fl_text_editor_shift_right(TEXTEDITOR te) {
+ Fl_Text_Editor::kf_shift_move(FL_Right, static_cast<Fl_Text_Editor*>(te));
+}
+
+void fl_text_editor_shift_up(TEXTEDITOR te) {
+ Fl_Text_Editor::kf_shift_move(FL_Up, static_cast<Fl_Text_Editor*>(te));
+}
+
+
+
+
+void fl_text_editor_ctrl_home(TEXTEDITOR te) {
+ Fl_Text_Editor::kf_ctrl_move(FL_Home, static_cast<Fl_Text_Editor*>(te));
+}
+
+void fl_text_editor_ctrl_end(TEXTEDITOR te) {
+ Fl_Text_Editor::kf_ctrl_move(FL_End, static_cast<Fl_Text_Editor*>(te));
+}
+
+void fl_text_editor_ctrl_page_down(TEXTEDITOR te) {
+ Fl_Text_Editor::kf_ctrl_move(FL_Page_Down, static_cast<Fl_Text_Editor*>(te));
+}
+
+void fl_text_editor_ctrl_page_up(TEXTEDITOR te) {
+ Fl_Text_Editor::kf_ctrl_move(FL_Page_Up, static_cast<Fl_Text_Editor*>(te));
+}
+
+void fl_text_editor_ctrl_down(TEXTEDITOR te) {
+ Fl_Text_Editor::kf_ctrl_move(FL_Down, static_cast<Fl_Text_Editor*>(te));
+}
+
+void fl_text_editor_ctrl_left(TEXTEDITOR te) {
+ Fl_Text_Editor::kf_ctrl_move(FL_Left, static_cast<Fl_Text_Editor*>(te));
+}
+
+void fl_text_editor_ctrl_right(TEXTEDITOR te) {
+ Fl_Text_Editor::kf_ctrl_move(FL_Right, static_cast<Fl_Text_Editor*>(te));
+}
+
+void fl_text_editor_ctrl_up(TEXTEDITOR te) {
+ Fl_Text_Editor::kf_ctrl_move(FL_Up, static_cast<Fl_Text_Editor*>(te));
+}
+
+
+
+
+void fl_text_editor_ctrl_shift_home(TEXTEDITOR te) {
+ Fl_Text_Editor::kf_c_s_move(FL_Home, static_cast<Fl_Text_Editor*>(te));
+}
+
+void fl_text_editor_ctrl_shift_end(TEXTEDITOR te) {
+ Fl_Text_Editor::kf_c_s_move(FL_End, static_cast<Fl_Text_Editor*>(te));
+}
+
+void fl_text_editor_ctrl_shift_page_down(TEXTEDITOR te) {
+ Fl_Text_Editor::kf_c_s_move(FL_Page_Down, static_cast<Fl_Text_Editor*>(te));
+}
+
+void fl_text_editor_ctrl_shift_page_up(TEXTEDITOR te) {
+ Fl_Text_Editor::kf_c_s_move(FL_Page_Up, static_cast<Fl_Text_Editor*>(te));
+}
+
+void fl_text_editor_ctrl_shift_down(TEXTEDITOR te) {
+ Fl_Text_Editor::kf_c_s_move(FL_Down, static_cast<Fl_Text_Editor*>(te));
+}
+
+void fl_text_editor_ctrl_shift_left(TEXTEDITOR te) {
+ Fl_Text_Editor::kf_c_s_move(FL_Left, static_cast<Fl_Text_Editor*>(te));
+}
+
+void fl_text_editor_ctrl_shift_right(TEXTEDITOR te) {
+ Fl_Text_Editor::kf_c_s_move(FL_Right, static_cast<Fl_Text_Editor*>(te));
+}
+
+void fl_text_editor_ctrl_shift_up(TEXTEDITOR te) {
+ Fl_Text_Editor::kf_c_s_move(FL_Up, static_cast<Fl_Text_Editor*>(te));
+}
+
+
+
+
+void fl_text_editor_meta_home(TEXTEDITOR te) {
+ Fl_Text_Editor::kf_meta_move(FL_Home, static_cast<Fl_Text_Editor*>(te));
+}
+
+void fl_text_editor_meta_end(TEXTEDITOR te) {
+ Fl_Text_Editor::kf_meta_move(FL_End, static_cast<Fl_Text_Editor*>(te));
+}
+
+void fl_text_editor_meta_page_down(TEXTEDITOR te) {
+ Fl_Text_Editor::kf_meta_move(FL_Page_Down, static_cast<Fl_Text_Editor*>(te));
+}
+
+void fl_text_editor_meta_page_up(TEXTEDITOR te) {
+ Fl_Text_Editor::kf_meta_move(FL_Page_Up, static_cast<Fl_Text_Editor*>(te));
+}
+
+void fl_text_editor_meta_down(TEXTEDITOR te) {
+ Fl_Text_Editor::kf_meta_move(FL_Down, static_cast<Fl_Text_Editor*>(te));
+}
+
+void fl_text_editor_meta_left(TEXTEDITOR te) {
+ Fl_Text_Editor::kf_meta_move(FL_Left, static_cast<Fl_Text_Editor*>(te));
+}
+
+void fl_text_editor_meta_right(TEXTEDITOR te) {
+ Fl_Text_Editor::kf_meta_move(FL_Right, static_cast<Fl_Text_Editor*>(te));
+}
+
+void fl_text_editor_meta_up(TEXTEDITOR te) {
+ Fl_Text_Editor::kf_meta_move(FL_Up, static_cast<Fl_Text_Editor*>(te));
+}
+
+
+
+
+void fl_text_editor_meta_shift_home(TEXTEDITOR te) {
+ Fl_Text_Editor::kf_m_s_move(FL_Home, static_cast<Fl_Text_Editor*>(te));
+}
+
+void fl_text_editor_meta_shift_end(TEXTEDITOR te) {
+ Fl_Text_Editor::kf_m_s_move(FL_End, static_cast<Fl_Text_Editor*>(te));
+}
+
+void fl_text_editor_meta_shift_page_down(TEXTEDITOR te) {
+ Fl_Text_Editor::kf_m_s_move(FL_Page_Down, static_cast<Fl_Text_Editor*>(te));
+}
+
+void fl_text_editor_meta_shift_page_up(TEXTEDITOR te) {
+ Fl_Text_Editor::kf_m_s_move(FL_Page_Up, static_cast<Fl_Text_Editor*>(te));
+}
+
+void fl_text_editor_meta_shift_down(TEXTEDITOR te) {
+ Fl_Text_Editor::kf_m_s_move(FL_Down, static_cast<Fl_Text_Editor*>(te));
+}
+
+void fl_text_editor_meta_shift_left(TEXTEDITOR te) {
+ Fl_Text_Editor::kf_m_s_move(FL_Left, static_cast<Fl_Text_Editor*>(te));
+}
+
+void fl_text_editor_meta_shift_right(TEXTEDITOR te) {
+ Fl_Text_Editor::kf_m_s_move(FL_Right, static_cast<Fl_Text_Editor*>(te));
+}
+
+void fl_text_editor_meta_shift_up(TEXTEDITOR te) {
+ Fl_Text_Editor::kf_m_s_move(FL_Up, static_cast<Fl_Text_Editor*>(te));
+}
+
+
+
+
+void fl_text_editor_add_key_binding(TEXTEDITOR te, int k, int s, void * f) {
+ static_cast<Fl_Text_Editor*>(te)->add_key_binding
+ (k, s, reinterpret_cast<Fl_Text_Editor::Key_Func>(f));
+}
+
+void fl_text_editor_remove_all_key_bindings(TEXTEDITOR te) {
+ static_cast<Fl_Text_Editor*>(te)->remove_all_key_bindings();
+}
+
+void fl_text_editor_set_default_key_function(TEXTEDITOR te, void * f) {
+ static_cast<Fl_Text_Editor*>(te)->default_key_function
+ (reinterpret_cast<Fl_Text_Editor::Key_Func>(f));
+}
+
+
+
+
+int fl_text_editor_get_insert_mode(TEXTEDITOR te) {
+ return static_cast<Fl_Text_Editor*>(te)->insert_mode();
+}
+
+void fl_text_editor_set_insert_mode(TEXTEDITOR te, int i) {
+ static_cast<Fl_Text_Editor*>(te)->insert_mode(i);
+}
+
+
+
+
+int fl_text_editor_get_tab_nav(TEXTEDITOR te) {
+#if FLTK_ABI_VERSION >= 10304
+ return static_cast<Fl_Text_Editor*>(te)->tab_nav();
+#else
+ (void)(te);
+ return 0;
+#endif
+}
+
+void fl_text_editor_set_tab_nav(TEXTEDITOR te, int t) {
+#if FLTK_ABI_VERSION >= 10304
+ static_cast<Fl_Text_Editor*>(te)->tab_nav(t);
+#else
+ (void)(te);
+ (void)(t);
+#endif
+}
+
+
+
+
+void fl_text_editor_draw(TEXTEDITOR te) {
+ static_cast<My_Text_Editor*>(te)->Fl_Text_Editor::draw();
+}
+
+int fl_text_editor_handle(TEXTEDITOR te, int e) {
+ return static_cast<My_Text_Editor*>(te)->Fl_Text_Editor::handle(e);
+}
+
+int fl_text_editor_handle_key(TEXTEDITOR te) {
+ return (static_cast<Fl_Text_Editor*>(te)->*(&Friend_Text_Editor::handle_key))();
+}
+
+void fl_text_editor_maybe_do_callback(TEXTEDITOR te) {
+ (static_cast<Fl_Text_Editor*>(te)->*(&Friend_Text_Editor::maybe_do_callback))();
+}
+
+