1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
|
/* Starshatter: The Open Source Project
Copyright (c) 2021-2024, Starshatter: The Open Source Project Contributors
Copyright (c) 2011-2012, Starshatter OpenSource Distribution Contributors
Copyright (c) 1997-2006, Destroyer Studios LLC.
AUTHOR: John DiCamillo
OVERVIEW
========
EditBox ActiveWindow class
*/
#ifndef EditBox_h
#define EditBox_h
#include "Types.h"
#include "ScrollWindow.h"
// +--------------------------------------------------------------------+
class EditBox : public ScrollWindow
{
public:
static const char* TYPENAME() { return "EditBox"; }
enum ALIGN { EDIT_ALIGN_LEFT = DT_LEFT,
EDIT_ALIGN_CENTER = DT_CENTER,
EDIT_ALIGN_RIGHT = DT_RIGHT
};
EditBox(ActiveWindow* p, int ax, int ay, int aw, int ah, DWORD aid);
EditBox(Screen* s, int ax, int ay, int aw, int ah, DWORD aid);
virtual ~EditBox();
// Operations:
virtual void DrawContent(const Rect& ctrl_rect);
virtual void DrawTabbedText();
// Event Target Interface:
virtual void SetFocus();
virtual void KillFocus();
virtual int OnMouseMove(int x, int y);
virtual int OnLButtonDown(int x, int y);
virtual int OnLButtonUp(int x, int y);
virtual int OnClick();
virtual int OnKeyDown(int vk, int flags);
// ScrollWindow Interface:
virtual bool CanScroll(int direction, int nlines=1);
virtual void Scroll(int direction, int nlines=1);
virtual void ScrollTo(int index);
virtual int GetPageCount();
virtual int GetPageSize();
Color GetSelectedColor();
void SetSelectedColor(Color c);
int GetSelStart() { return sel_start; }
int GetSelLength() { return sel_length; }
Text GetSelText();
void SetSelStart(int n);
void SetSelLength(int n);
char GetPasswordChar() { return pass_char; }
void SetPasswordChar(char c) { pass_char = c; }
protected:
void Insert(char c);
void Insert(const char* s);
void Delete();
void Backspace();
int CaretFromPoint(int x, int y) const;
void EnsureCaretVisible();
int sel_start;
int sel_length;
int h_offset;
int caret_x;
int caret_y;
char pass_char;
Color selected_color;
};
#endif // EditBox_h
|