Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
eclipse
GitHub Repository: eclipse/sumo
Path: blob/main/src/utils/foxtools/MFXTextFieldIcon.h
193700 views
1
/****************************************************************************/
2
// Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.dev/sumo
3
// Copyright (C) 2006-2026 German Aerospace Center (DLR) and others.
4
// This program and the accompanying materials are made available under the
5
// terms of the Eclipse Public License 2.0 which is available at
6
// https://www.eclipse.org/legal/epl-2.0/
7
// This Source Code may also be made available under the following Secondary
8
// Licenses when the conditions for such availability set forth in the Eclipse
9
// Public License 2.0 are satisfied: GNU General Public License, version 2
10
// or later which is available at
11
// https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html
12
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-or-later
13
/****************************************************************************/
14
/// @file MFXTextFieldIcon.h
15
/// @author Pablo Alvarez Lopez
16
/// @date Aug 2023
17
///
18
//
19
/****************************************************************************/
20
#pragma once
21
#include <config.h>
22
23
#include "fxheader.h"
24
25
#include <utils/gui/images/GUIIconSubSys.h>
26
27
// ===========================================================================
28
// class declaration
29
// ===========================================================================
30
31
class MFXStaticToolTip;
32
33
// ===========================================================================
34
// class definitions
35
// ===========================================================================
36
37
class MFXTextFieldIcon : public FXFrame {
38
/// @brief FOX declaration
39
FXDECLARE(MFXTextFieldIcon)
40
41
public:
42
/// @brief Construct text field wide enough to display ncols columns
43
MFXTextFieldIcon(FXComposite* p, MFXStaticToolTip* staticToolTip, GUIIcon icon, FXObject* tgt,
44
FXSelector sel, FXuint opts, FXint x = 0, FXint y = 0, FXint w = 0, FXint h = 0,
45
FXint pl = DEFAULT_PAD, FXint pr = DEFAULT_PAD, FXint pt = DEFAULT_PAD, FXint pb = DEFAULT_PAD);
46
47
/// @brief Destructor
48
virtual ~MFXTextFieldIcon();
49
50
/// @brief Create server-side resources
51
virtual void create();
52
53
/// @brief Perform layout
54
virtual void layout();
55
56
/// @brief Enable text field
57
virtual void enable();
58
59
/// @brief Disable text field
60
virtual void disable();
61
62
/// @brief Return default width
63
virtual FXint getDefaultWidth();
64
65
/// @brief Return default height
66
virtual FXint getDefaultHeight();
67
68
/// @brief Yes, text field may receive focus
69
virtual bool canFocus() const;
70
71
/// @brief Move the focus to this window
72
virtual void setFocus();
73
74
/// @brief Remove the focus from this window
75
virtual void killFocus();
76
77
/// @brief Set editable mode
78
void setEditable(FXbool edit = TRUE);
79
80
/// @brief Return TRUE if text field may be edited
81
FXbool isEditable() const;
82
83
/// @brief Set overstrike mode
84
void setOverstrike(FXbool over = TRUE);
85
86
/// @brief Return TRUE if overstrike mode in effect
87
FXbool isOverstrike() const;
88
89
/// @brief Set cursor position
90
void setCursorPos(FXint pos);
91
92
/// @brief Return cursor position
93
FXint getCursorPos() const;
94
95
/// @brief Change anchor position
96
void setAnchorPos(FXint pos);
97
98
/// @brief Return anchor position
99
FXint getAnchorPos() const;
100
101
/// @brief Change the text and move cursor to end
102
void setText(const FXString& text, FXbool notify = FALSE);
103
104
/// @brief Change the icon
105
void setIcon(FXIcon* ic);
106
107
/// @brief Get the text for this label
108
FXString getText() const;
109
110
/// @brief Set the text font
111
void setFont(FXFont* fnt);
112
113
/// @brief Get the text font
114
FXFont* getFont() const;
115
116
/// @brief Change text color
117
void setTextColor(FXColor clr);
118
119
/// @brief Return text color
120
FXColor getTextColor() const;
121
122
/// @brief Change selected background color
123
void setSelBackColor(FXColor clr);
124
125
/// @brief Return selected background color
126
FXColor getSelBackColor() const {
127
return mySelectedBackgroundColor;
128
}
129
130
/// @brief Change selected text color
131
void setSelTextColor(FXColor clr);
132
133
/// @brief Return selected text color
134
FXColor getSelTextColor() const;
135
136
/// @brief Changes the cursor color
137
void setCursorColor(FXColor clr);
138
139
/// @brief Return the cursor color
140
FXColor getCursorColor() const;
141
142
/// @brief Change the default width of the text field
143
void setNumColumns(FXint cols);
144
145
/// @brief Return number of columns
146
FXint getNumColumns() const;
147
148
/// @brief Change text justification mode
149
void setJustify(FXuint mode);
150
151
/// @brief Return text justification mode
152
FXuint getJustify() const;
153
154
/// @brief Change word delimiters
155
void setDelimiters(const FXchar* delims = FXTextField::textDelimiters);
156
157
/// @brief Return word delimiters
158
const FXchar* getDelimiters() const;
159
160
/// @brief Set the status line help text for this label
161
void setHelpText(const FXString& text);
162
163
/// @brief Get the status line help text for this label
164
const FXString& getHelpText() const;
165
166
/// @brief Set the tool tip message for this text field
167
void setTipText(const FXString& text);
168
169
/// @brief Get the tool tip message for this text field
170
const FXString& getTipText() const;
171
172
/// @brief Change text style
173
void setTextStyle(FXuint style);
174
175
/// @brief Return text style
176
FXuint getTextStyle() const;
177
178
/// @brief Select all text
179
FXbool selectAll();
180
181
/// @brief Select len characters starting at given position pos
182
FXbool setSelection(FXint pos, FXint len);
183
184
/// @brief Extend the selection from the anchor to the given position
185
FXbool extendSelection(FXint pos);
186
187
/// @brief Unselect the text
188
FXbool killSelection();
189
190
/// @brief Return TRUE if position pos is selected
191
FXbool isPosSelected(FXint pos) const;
192
193
/// @brief Return TRUE if position is fully visible
194
FXbool isPosVisible(FXint pos) const;
195
196
/// @brief Scroll text to make the given position visible
197
void makePositionVisible(FXint pos);
198
199
/// @brief set toolTip
200
void setToolTipText(const FXString& toolTip);
201
202
/// @brief fox callbacks
203
/// @{
204
205
long onEnter(FXObject*, FXSelector, void*);
206
long onLeave(FXObject*, FXSelector, void*);
207
long onPaint(FXObject*, FXSelector, void*);
208
long onUpdate(FXObject*, FXSelector, void*);
209
long onKeyPress(FXObject*, FXSelector, void*);
210
long onKeyRelease(FXObject*, FXSelector, void*);
211
long onLeftBtnPress(FXObject*, FXSelector, void*);
212
long onLeftBtnRelease(FXObject*, FXSelector, void*);
213
long onMiddleBtnPress(FXObject*, FXSelector, void*);
214
long onMiddleBtnRelease(FXObject*, FXSelector, void*);
215
long onVerify(FXObject*, FXSelector, void*);
216
long onMotion(FXObject*, FXSelector, void*);
217
long onSelectionLost(FXObject*, FXSelector, void*);
218
long onSelectionGained(FXObject*, FXSelector, void*);
219
long onSelectionRequest(FXObject*, FXSelector, void* ptr);
220
long onClipboardLost(FXObject*, FXSelector, void*);
221
long onClipboardGained(FXObject*, FXSelector, void*);
222
long onClipboardRequest(FXObject*, FXSelector, void*);
223
long onFocusSelf(FXObject*, FXSelector, void*);
224
long onFocusIn(FXObject*, FXSelector, void*);
225
long onFocusOut(FXObject*, FXSelector, void*);
226
long onBlink(FXObject*, FXSelector, void*);
227
long onAutoScroll(FXObject*, FXSelector, void*);
228
long onCmdSetValue(FXObject*, FXSelector, void*);
229
long onCmdSetIntValue(FXObject*, FXSelector, void*);
230
long onCmdSetRealValue(FXObject*, FXSelector, void*);
231
long onCmdSetStringValue(FXObject*, FXSelector, void*);
232
long onCmdGetIntValue(FXObject*, FXSelector, void*);
233
long onCmdGetRealValue(FXObject*, FXSelector, void*);
234
long onCmdGetStringValue(FXObject*, FXSelector, void*);
235
long onCmdCursorHome(FXObject*, FXSelector, void*);
236
long onCmdCursorEnd(FXObject*, FXSelector, void*);
237
long onCmdCursorRight(FXObject*, FXSelector, void*);
238
long onCmdCursorLeft(FXObject*, FXSelector, void*);
239
long onCmdCursorWordLeft(FXObject*, FXSelector, void*);
240
long onCmdCursorWordRight(FXObject*, FXSelector, void*);
241
long onCmdCursorWordStart(FXObject*, FXSelector, void*);
242
long onCmdCursorWordEnd(FXObject*, FXSelector, void*);
243
long onCmdMark(FXObject*, FXSelector, void*);
244
long onCmdExtend(FXObject*, FXSelector, void*);
245
long onCmdSelectAll(FXObject*, FXSelector, void*);
246
long onCmdDeselectAll(FXObject*, FXSelector, void*);
247
long onCmdCutSel(FXObject*, FXSelector, void*);
248
long onCmdCopySel(FXObject*, FXSelector, void*);
249
long onCmdPasteSel(FXObject*, FXSelector, void*);
250
long onCmdPasteMiddle(FXObject*, FXSelector, void*);
251
long onCmdDeleteSel(FXObject*, FXSelector, void*);
252
long onCmdDeleteAll(FXObject*, FXSelector, void*);
253
long onCmdOverstString(FXObject*, FXSelector, void*);
254
long onCmdInsertString(FXObject*, FXSelector, void*);
255
long onCmdBackspace(FXObject*, FXSelector, void*);
256
long onCmdDelete(FXObject*, FXSelector, void*);
257
long onCmdToggleEditable(FXObject*, FXSelector, void*);
258
long onUpdToggleEditable(FXObject*, FXSelector, void*);
259
long onCmdToggleOverstrike(FXObject*, FXSelector, void*);
260
long onUpdToggleOverstrike(FXObject*, FXSelector, void*);
261
long onUpdHaveSelection(FXObject*, FXSelector, void*);
262
long onUpdSelectAll(FXObject*, FXSelector, void*);
263
long onCmdSetHelp(FXObject*, FXSelector, void*);
264
long onCmdGetHelp(FXObject*, FXSelector, void*);
265
long onCmdSetTip(FXObject*, FXSelector, void*);
266
long onCmdGetTip(FXObject*, FXSelector, void*);
267
long onQueryHelp(FXObject*, FXSelector, void*);
268
long onQueryTip(FXObject*, FXSelector, void*);
269
270
/// @}
271
272
protected:
273
/// @brief Edited text
274
FXString contents;
275
276
/// @brief Set of text delimiter
277
const FXchar* myTextDelimiter = FXTextField::textDelimiters;
278
279
/// @brief Text font
280
FXFont* myFont;
281
282
/// @brief Text color
283
FXColor myTextColor = 0;
284
285
/// @brief Selected background color
286
FXColor mySelectedBackgroundColor = 0;
287
288
/// @brief Selected text color
289
FXColor mySelectedTextColor = 0;
290
291
/// @brief Color of the Cursor
292
FXColor myCursorColor = 0;
293
294
/// @brief Cursor position
295
FXint myCursorPosition = 0;
296
297
/// @brief Anchor position
298
FXint myAnchorPosition = 0;
299
300
/// @brief Number of myVisibleColumns visible
301
FXint myVisibleColumns = 0;
302
303
/// @brief Shift amount
304
FXint myShiftAmount = 0;
305
306
/// @brief Clipped text
307
FXString myClippedText;
308
309
/// @brief Help string
310
FXString myHelpText;
311
312
/// @brief Tooltip
313
FXString myTooltipText;
314
315
/// @brief myIcon
316
FXIcon* myIcon = nullptr;
317
318
/// @brief static tooltip
319
MFXStaticToolTip* myStaticToolTip = nullptr;
320
321
/// @brief toolTip text (if set, tooltip will be always show)
322
FXString myToolTipText;
323
324
/// @brief FOX need this
325
MFXTextFieldIcon();
326
327
/// @brief index
328
FXint index(FXint x) const;
329
330
/// @brief coordinates
331
FXint coord(FXint i) const;
332
333
/// @brief draw myCursorPosition
334
void drawCursor(FXuint state);
335
336
/// @brief draw text range
337
void drawTextRange(FXDCWindow& dc, FXint fm, FXint to);
338
339
/// @brief draw text fragment
340
void drawTextFragment(FXDCWindow& dc, FXint x, FXint y, FXint fm, FXint to);
341
342
/// @brief draw password text fragment
343
void drawPWDTextFragment(FXDCWindow& dc, FXint x, FXint y, FXint fm, FXint to);
344
345
/// @brief right word
346
FXint rightWord(FXint pos) const;
347
348
/// @brief left word
349
FXint leftWord(FXint pos) const;
350
351
/// @brief word start
352
FXint wordStart(FXint pos) const;
353
354
/// @brief word end
355
FXint wordEnd(FXint pos) const;
356
357
private:
358
/// @brief invalidate copy constructor
359
MFXTextFieldIcon(const MFXTextFieldIcon&) = delete;
360
361
/// @brief invalidate assigment constructor
362
MFXTextFieldIcon& operator=(const MFXTextFieldIcon&) = delete;
363
};
364
365