Pioneer
GuiTextEntry.h
Go to the documentation of this file.
1 // Copyright © 2008-2021 Pioneer Developers. See AUTHORS.txt for details
2 // Licensed under the terms of the GPL v3. See licenses/GPL-3.txt
3 
4 #ifndef _GUITEXTENTRY_H
5 #define _GUITEXTENTRY_H
6 
7 #include "GuiWidget.h"
8 #include <string>
9 
10 namespace Text {
11  class TextureFont;
12 }
13 
14 namespace Gui {
15  class TextEntry : public Widget {
16  public:
17  enum NewlineMode {
21  };
22 
23  TextEntry();
24  virtual ~TextEntry();
25  virtual void GetSizeRequested(float size[2]);
26  virtual void Draw();
27  virtual bool OnMouseDown(MouseButtonEvent *e);
28  void SetText(const std::string &text);
29  std::string GetText() const { return m_text; }
30  void SetCursorPos(int pos) { m_cursPos = Clamp(pos, 0, signed(m_text.size())); }
31  int GetCursorPos() const { return m_cursPos; };
32  virtual bool OnKeyDown(const SDL_Keysym *);
33  virtual void OnTextInput(Uint32 unicode);
34  virtual void Show()
35  {
36  GrabFocus();
37  Widget::Show();
38  }
39  virtual void GrabFocus();
40  void Unfocus();
41  NewlineMode GetNewlineMode() const { return m_newlineMode; }
42  void SetNewlineMode(NewlineMode mode) { m_newlineMode = mode; }
43 
44  sigc::signal<void, const SDL_Keysym *> onKeyPress;
45  sigc::signal<void> onValueChanged;
46 
47  private:
48  void OnRawMouseDown(MouseButtonEvent *e);
49 
50  std::string m_text;
51  int m_cursPos;
52  int m_scroll;
54  NewlineMode m_newlineMode;
55  int m_newlineCount;
56 
57  bool m_justFocused;
58  sigc::connection m_clickout;
59 
60  Graphics::Drawables::Lines m_cursorLines;
61  Graphics::Drawables::Lines m_outlines;
62  std::unique_ptr<Graphics::Drawables::Rect> m_background;
64  };
65 } // namespace Gui
66 
67 #endif /* _GUITEXTENTRY_H */
Definition: Drawables.h:79
Definition: GuiTextEntry.h:15
virtual void GetSizeRequested(float size[2])
Definition: GuiTextEntry.cpp:158
virtual void Draw()
Definition: GuiTextEntry.cpp:207
void SetNewlineMode(NewlineMode mode)
Definition: GuiTextEntry.h:42
void SetText(const std::string &text)
Definition: GuiTextEntry.cpp:26
virtual void Show()
Definition: GuiTextEntry.h:34
void Unfocus()
Definition: GuiTextEntry.cpp:198
TextEntry()
Definition: GuiTextEntry.cpp:11
NewlineMode
Definition: GuiTextEntry.h:17
@ AcceptNewline
Definition: GuiTextEntry.h:19
@ IgnoreNewline
Definition: GuiTextEntry.h:18
@ AcceptCtrlNewline
Definition: GuiTextEntry.h:20
virtual ~TextEntry()
Definition: GuiTextEntry.cpp:21
void SetCursorPos(int pos)
Definition: GuiTextEntry.h:30
sigc::signal< void > onValueChanged
Definition: GuiTextEntry.h:45
int GetCursorPos() const
Definition: GuiTextEntry.h:31
virtual bool OnKeyDown(const SDL_Keysym *)
Definition: GuiTextEntry.cpp:40
virtual void OnTextInput(Uint32 unicode)
Definition: GuiTextEntry.cpp:143
virtual void GrabFocus()
Definition: GuiTextEntry.cpp:184
NewlineMode GetNewlineMode() const
Definition: GuiTextEntry.h:41
virtual bool OnMouseDown(MouseButtonEvent *e)
Definition: GuiTextEntry.cpp:163
sigc::signal< void, const SDL_Keysym * > onKeyPress
Definition: GuiTextEntry.h:44
std::string GetText() const
Definition: GuiTextEntry.h:29
Definition: GuiWidget.h:14
virtual void Show()
Definition: GuiWidget.h:44
const T & Clamp(const T &x, const T &min, const T &max)
Definition: libs.h:69
Definition: Gui.cpp:10
Definition: GuiLabel.h:12
Definition: GuiEvents.h:8