1 // 2 // "$Id: CodeEditor.h 7903 2010-11-28 21:06:39Z matt $" 3 // 4 // Code editor widget for the Fast Light Tool Kit (FLTK). 5 // 6 // Copyright 1998-2010 by Bill Spitzak and others. 7 // 8 // This library is free software; you can redistribute it and/or 9 // modify it under the terms of the GNU Library General Public 10 // License as published by the Free Software Foundation; either 11 // version 2 of the License, or (at your option) any later version. 12 // 13 // This library is distributed in the hope that it will be useful, 14 // but WITHOUT ANY WARRANTY; without even the implied warranty of 15 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 16 // Library General Public License for more details. 17 // 18 // You should have received a copy of the GNU Library General Public 19 // License along with this library; if not, write to the Free Software 20 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 21 // USA. 22 // 23 // Please report all bugs and problems on the following page: 24 // 25 // http://www.fltk.org/str.php 26 // 27 28 #ifndef CodeEditor_h 29 # define CodeEditor_h 30 31 // 32 // Include necessary headers... 33 // 34 35 # include <stdio.h> 36 # include <stdlib.h> 37 # include <string.h> 38 # include <ctype.h> 39 # include <FL/Fl.H> 40 # include <FL/Fl_Text_Buffer.H> 41 # include <FL/Fl_Text_Editor.H> 42 43 44 class CodeEditor : public Fl_Text_Editor { 45 static Fl_Text_Display::Style_Table_Entry styletable[]; 46 static const char * const code_keywords[]; 47 static const char * const code_types[]; 48 49 50 // 'compare_keywords()' - Compare two keywords... 51 static int compare_keywords(const void *a, const void *b); 52 53 // 'style_parse()' - Parse text and produce style data. 54 static void style_parse(const char *text, char *style, int length); 55 56 // 'style_unfinished_cb()' - Update unfinished styles. 57 static void style_unfinished_cb(int, void*); 58 59 // 'style_update()' - Update the style buffer... 60 static void style_update(int pos, int nInserted, int nDeleted, 61 int /*nRestyled*/, const char * /*deletedText*/, 62 void *cbArg); 63 64 static int auto_indent(int, CodeEditor* e); 65 66 public: 67 68 CodeEditor(int X, int Y, int W, int H, const char *L=0); 69 ~CodeEditor(); top_line()70 int top_line() { return get_absolute_top_line_number(); } 71 }; 72 73 class CodeViewer : public CodeEditor { 74 75 public: 76 77 CodeViewer(int X, int Y, int W, int H, const char *L=0); 78 79 protected: 80 handle(int ev)81 int handle(int ev) { return Fl_Text_Display::handle(ev); } 82 }; 83 84 #endif // !CodeEditor_h 85 86 // 87 // End of "$Id: CodeEditor.h 7903 2010-11-28 21:06:39Z matt $". 88 // 89