You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

89 lines
2.5KB

  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. #ifndef CodeEditor_h
  28. # define CodeEditor_h
  29. //
  30. // Include necessary headers...
  31. //
  32. # include <stdio.h>
  33. # include <stdlib.h>
  34. # include <string.h>
  35. # include <ctype.h>
  36. # include <FL/Fl.H>
  37. # include <FL/Fl_Text_Buffer.H>
  38. # include <FL/Fl_Text_Editor.H>
  39. class CodeEditor : public Fl_Text_Editor {
  40. static Fl_Text_Display::Style_Table_Entry styletable[];
  41. static const char * const code_keywords[];
  42. static const char * const code_types[];
  43. // 'compare_keywords()' - Compare two keywords...
  44. static int compare_keywords(const void *a, const void *b);
  45. // 'style_parse()' - Parse text and produce style data.
  46. static void style_parse(const char *text, char *style, int length);
  47. // 'style_unfinished_cb()' - Update unfinished styles.
  48. static void style_unfinished_cb(int, void*);
  49. // 'style_update()' - Update the style buffer...
  50. static void style_update(int pos, int nInserted, int nDeleted,
  51. int /*nRestyled*/, const char * /*deletedText*/,
  52. void *cbArg);
  53. static int auto_indent(int, CodeEditor* e);
  54. public:
  55. CodeEditor(int X, int Y, int W, int H, const char *L=0);
  56. ~CodeEditor();
  57. int top_line() { return get_absolute_top_line_number(); }
  58. };
  59. class CodeViewer : public CodeEditor {
  60. public:
  61. CodeViewer(int X, int Y, int W, int H, const char *L=0);
  62. protected:
  63. int handle(int ev) { return Fl_Text_Display::handle(ev); }
  64. };
  65. #endif // !CodeEditor_h
  66. //
  67. // End of "$Id: CodeEditor.h 7903 2010-11-28 21:06:39Z matt $".
  68. //