1// This file is part of SmallBASIC
2//
3// Copyright(C) 2001-2019 Chris Warren-Smith.
4//
5// This program is distributed under the terms of the GPL v2.0 or later
6// Download the GNU Public License (GPL) from www.gnu.org
7//
8
9#ifndef BASIC_EDITOR_H
10#define BASIC_EDITOR_H
11
12#include <FL/Fl_Text_Editor.H>
13#include "ui/strlib.h"
14#include <limits.h>
15
16bool isvar(int c);
17
18struct StatusBar {
19 virtual ~StatusBar() {}
20 virtual void setRowCol(int row, int col) = 0;
21};
22
23struct BasicEditor : public Fl_Text_Editor {
24 BasicEditor(int x, int y, int w, int h, StatusBar *status);
25 virtual ~BasicEditor();
26
27 bool findText(const char *find, bool forward, bool updatePos);
28 int handle(int e);
29 unsigned getIndent(char *indent, int len, int pos);
30 void draw();
31 int getFontSize();
32 Fl_Font getFont();
33 void getKeywords(strlib::List<strlib::String *> &keywords);
34 void getRowCol(int *row, int *col);
35 void getSelEndRowCol(int *row, int *col);
36 void getSelStartRowCol(int *row, int *col);
37 char *getSelection(Fl_Rect *rc);
38 void gotoLine(int line);
39 void handleTab();
40 void setFont(Fl_Font font);
41 void setFontSize(int size);
42 void showFindText(const char *text);
43 void showMatchingBrace();
44 void showRowCol();
45 void styleChanged();
46 void styleParse(const char *text, char *style, int length);
47 int hor_offset() { return mHorizOffset; }
48 int maxSize() { return mMaxsize; }
49 int top_line() { return mTopLineNum; }
50
51 bool _readonly;
52 int _indentLevel;
53 int _matchingBrace;
54 Fl_Text_Buffer *_stylebuf;
55 Fl_Text_Buffer *_textbuf;
56 char _search[PATH_MAX];
57 StatusBar *_status;
58};
59
60#endif
61