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
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
|
/*
* Copyright 2006-2015, Haiku, Inc. All rights reserved.
* Distributed under the terms of the MIT License.
*/
#ifndef _TEXT_CONTROL_H
#define _TEXT_CONTROL_H
#include <Control.h>
#include <TextView.h>
class BLayoutItem;
namespace BPrivate {
class _BTextInput_;
}
class BTextControl : public BControl {
public:
BTextControl(BRect frame, const char* name,
const char* label, const char* initialText,
BMessage* message,
uint32 resizeMask = B_FOLLOW_LEFT_TOP,
uint32 flags = B_WILL_DRAW | B_NAVIGABLE);
BTextControl(const char* name,
const char* label, const char* initialText,
BMessage* message,
uint32 flags = B_WILL_DRAW | B_NAVIGABLE);
BTextControl(const char* label,
const char* initialText,
BMessage* message);
virtual ~BTextControl();
BTextControl(BMessage* archive);
static BArchivable* Instantiate(BMessage* archive);
virtual status_t Archive(BMessage* archive,
bool deep = true) const;
virtual void SetText(const char* text);
const char* Text() const;
int32 TextLength() const;
void MarkAsInvalid(bool invalid);
virtual void SetValue(int32 value);
virtual status_t Invoke(BMessage* message = NULL);
BTextView* TextView() const;
virtual void SetModificationMessage(BMessage* message);
BMessage* ModificationMessage() const;
virtual void SetAlignment(alignment label, alignment text);
void GetAlignment(alignment* _label,
alignment* _text) const;
virtual void SetDivider(float position);
float Divider() const;
virtual void Draw(BRect updateRect);
virtual void MouseDown(BPoint where);
virtual void AttachedToWindow();
virtual void MakeFocus(bool focus = true);
virtual void SetEnabled(bool enable);
virtual void FrameMoved(BPoint newPosition);
virtual void FrameResized(float newWidth, float newHeight);
virtual void WindowActivated(bool active);
virtual void GetPreferredSize(float* _width,
float* _height);
virtual void ResizeToPreferred();
virtual void MessageReceived(BMessage* message);
virtual BHandler* ResolveSpecifier(BMessage* message,
int32 index, BMessage* specifier,
int32 what, const char* property);
virtual void MouseUp(BPoint where);
virtual void MouseMoved(BPoint where, uint32 transit,
const BMessage* dragMessage);
virtual void DetachedFromWindow();
virtual void AllAttached();
virtual void AllDetached();
virtual status_t GetSupportedSuites(BMessage* data);
virtual void SetFlags(uint32 flags);
virtual BSize MinSize();
virtual BSize MaxSize();
virtual BSize PreferredSize();
virtual BAlignment LayoutAlignment();
BLayoutItem* CreateLabelLayoutItem();
BLayoutItem* CreateTextViewLayoutItem();
protected:
virtual status_t AllArchived(BMessage* into) const;
virtual status_t AllUnarchived(const BMessage* from);
virtual void LayoutInvalidated(bool descendants);
virtual void DoLayout();
virtual status_t SetIcon(const BBitmap* icon, uint32 flags = 0);
private:
// FBC padding and forbidden methods
virtual status_t Perform(perform_code d, void* arg);
virtual void _ReservedTextControl1();
virtual void _ReservedTextControl2();
virtual void _ReservedTextControl3();
virtual void _ReservedTextControl4();
BTextControl& operator=(const BTextControl& other);
private:
class LabelLayoutItem;
class TextViewLayoutItem;
struct LayoutData;
friend class _BTextInput_;
friend class LabelLayoutItem;
friend class TextViewLayoutItem;
void _CommitValue();
void _UpdateTextViewColors(bool enable);
void _InitData(const char* label,
const BMessage* archive = NULL);
void _InitText(const char* initialText,
const BMessage* archive = NULL);
void _ValidateLayout();
void _LayoutTextView();
void _UpdateFrame();
void _ValidateLayoutData();
private:
BPrivate::_BTextInput_* fText;
BMessage* fModificationMessage;
alignment fLabelAlign;
float fDivider;
LayoutData* fLayoutData;
uint32 fLook;
uint32 _reserved[8];
};
#endif // _TEXT_CONTROL_H
|