|
fltk 1.3.0rc3
About: FLTK (Fast Light Tool Kit) is a cross-platform C++ GUI toolkit for UNIX/Linux (X11), Microsoft Windows, and MacOS X. Release candidate.
SfR Fresh Dox: fltk-1.3.0rc3-source.tar.gz ("inofficial" and yet experimental doxygen-generated source code documentation) ![]() |
00001 // 00002 // "$Id: CodeEditor.h 7903 2010-11-28 21:06:39Z matt $" 00003 // 00004 // Code editor widget for the Fast Light Tool Kit (FLTK). 00005 // 00006 // Copyright 1998-2010 by Bill Spitzak and others. 00007 // 00008 // This library is free software; you can redistribute it and/or 00009 // modify it under the terms of the GNU Library General Public 00010 // License as published by the Free Software Foundation; either 00011 // version 2 of the License, or (at your option) any later version. 00012 // 00013 // This library is distributed in the hope that it will be useful, 00014 // but WITHOUT ANY WARRANTY; without even the implied warranty of 00015 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00016 // Library General Public License for more details. 00017 // 00018 // You should have received a copy of the GNU Library General Public 00019 // License along with this library; if not, write to the Free Software 00020 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 00021 // USA. 00022 // 00023 // Please report all bugs and problems on the following page: 00024 // 00025 // http://www.fltk.org/str.php 00026 // 00027 00028 #ifndef CodeEditor_h 00029 # define CodeEditor_h 00030 00031 // 00032 // Include necessary headers... 00033 // 00034 00035 # include <stdio.h> 00036 # include <stdlib.h> 00037 # include <string.h> 00038 # include <ctype.h> 00039 # include <FL/Fl.H> 00040 # include <FL/Fl_Text_Buffer.H> 00041 # include <FL/Fl_Text_Editor.H> 00042 00043 00044 class CodeEditor : public Fl_Text_Editor { 00045 static Fl_Text_Display::Style_Table_Entry styletable[]; 00046 static const char * const code_keywords[]; 00047 static const char * const code_types[]; 00048 00049 00050 // 'compare_keywords()' - Compare two keywords... 00051 static int compare_keywords(const void *a, const void *b); 00052 00053 // 'style_parse()' - Parse text and produce style data. 00054 static void style_parse(const char *text, char *style, int length); 00055 00056 // 'style_unfinished_cb()' - Update unfinished styles. 00057 static void style_unfinished_cb(int, void*); 00058 00059 // 'style_update()' - Update the style buffer... 00060 static void style_update(int pos, int nInserted, int nDeleted, 00061 int /*nRestyled*/, const char * /*deletedText*/, 00062 void *cbArg); 00063 00064 static int auto_indent(int, CodeEditor* e); 00065 00066 public: 00067 00068 CodeEditor(int X, int Y, int W, int H, const char *L=0); 00069 ~CodeEditor(); 00070 int top_line() { return get_absolute_top_line_number(); } 00071 }; 00072 00073 class CodeViewer : public CodeEditor { 00074 00075 public: 00076 00077 CodeViewer(int X, int Y, int W, int H, const char *L=0); 00078 00079 protected: 00080 00081 int handle(int ev) { return Fl_Text_Display::handle(ev); } 00082 }; 00083 00084 #endif // !CodeEditor_h 00085 00086 // 00087 // End of "$Id: CodeEditor.h 7903 2010-11-28 21:06:39Z matt $". 00088 //