|
FifeGUI 0.3.0
A C++ GUI library designed for games.
|
#include <textfield.hpp>
Public Member Functions | |
| void | adjustHeight () |
| void | adjustSize () override |
| void | draw (Graphics *graphics) override |
| unsigned int | getCaretPosition () const |
| virtual std::string | getText () const |
| bool | isEditable () const |
| void | keyPressed (KeyEvent &keyEvent) override |
| void | mouseDragged (MouseEvent &mouseEvent) override |
| void | mousePressed (MouseEvent &mouseEvent) override |
| TextField & | operator= (TextField &&)=delete |
| TextField & | operator= (TextField const &)=delete |
| void | resizeToContent (bool recursion=true) override |
| void | setCaretPosition (unsigned int position) |
| void | setEditable (bool editable) |
| virtual void | setText (std::string const &text) |
| TextField (std::string const &text) | |
| TextField (TextField &&)=delete | |
| TextField (TextField const &)=delete | |
| void | textInput (TextInputEvent &event) override |
| Public Member Functions inherited from fcn::Widget | |
| virtual void | _draw (Graphics *graphics) |
| virtual FocusHandler * | _getFocusHandler () |
| virtual std::list< FocusListener * > const & | _getFocusListeners () |
| virtual FocusHandler * | _getInternalFocusHandler () |
| virtual std::list< KeyListener * > const & | _getKeyListeners () |
| virtual std::list< MouseListener * > const & | _getMouseListeners () |
| virtual void | _logic () |
| virtual void | _setFocusHandler (FocusHandler *focusHandler) |
| virtual void | _setParent (Widget *parent) |
| void | adaptLayout () |
| virtual void | adaptLayout (bool top) |
| void | addActionListener (ActionListener *actionListener) |
| void | addDeathListener (DeathListener *deathListener) |
| void | addDropTargetListener (DropTargetListener *listener) |
| void | addFocusListener (FocusListener *focusListener) |
| void | addKeyListener (KeyListener *keyListener) |
| void | addMouseListener (MouseListener *mouseListener) |
| void | addWidgetListener (WidgetListener *widgetListener) |
| bool | captureMouse () |
| bool | contains (int x, int y) const |
| virtual void | drawBorder (Graphics *graphics) |
| void | drawBorder (Graphics *graphics, unsigned int sides) const |
| virtual void | drawOutline (Graphics *graphics) |
| virtual void | drawSelectionFrame (Graphics *graphics) |
| void | expandContent () |
| virtual void | expandContent (bool recursion) |
| virtual void | focusNext () |
| virtual void | focusPrevious () |
| virtual void | fontChanged () |
| virtual void | getAbsolutePosition (int &x, int &y) const |
| std::string const & | getActionEventId () const |
| Color const & | getBackgroundColor () const |
| Color const & | getBaseColor () const |
| Color const & | getBorderColor () const |
| unsigned int | getBorderSides () const |
| unsigned int | getBorderSize () const |
| unsigned int | getBorderStyle () const |
| virtual Rectangle | getChildrenArea () |
| unsigned int | getChildrenCount () const |
| Rectangle const & | getDimension () const |
| Size const & | getFixedSize () const |
| Font * | getFont () const |
| Color const & | getForegroundColor () const |
| int | getHeight () const |
| std::string const & | getId () const |
| void | getLastPosition (int &x, int &y) const |
| int | getMarginBottom () const |
| int | getMarginLeft () const |
| int | getMarginRight () const |
| int | getMarginTop () const |
| Size const & | getMaxSize () const |
| Size const & | getMinSize () const |
| Color const & | getOutlineColor () const |
| unsigned int | getOutlineSize () const |
| unsigned int | getPaddingBottom () const |
| unsigned int | getPaddingLeft () const |
| unsigned int | getPaddingRight () const |
| unsigned int | getPaddingTop () const |
| virtual Widget * | getParent () const |
| Color const & | getSelectionColor () const |
| SelectionMode | getSelectionMode () const |
| virtual Widget * | getTop () const |
| unsigned int | getVisibleChildrenCount () const |
| Widget * | getWidgetAt (int x, int y) |
| virtual Widget * | getWidgetAt (int x, int y, Widget *exclude) |
| std::list< Widget * > | getWidgetsIn (Rectangle const &area) |
| virtual std::list< Widget * > | getWidgetsIn (Rectangle const &area, Widget *ignore) |
| int | getWidth () const |
| int | getX () const |
| int | getY () const |
| bool | hasMouseCapture () const |
| bool | isDescendantOf (Widget const *ancestor) const noexcept |
| bool | isEnabled () const |
| bool | isFixedSize () const |
| bool | isFocusable () const |
| virtual bool | isFocused () const |
| bool | isHorizontalExpand () const |
| bool | isInsideActiveMouseModal () const noexcept |
| bool | isLastPositionSet () const |
| virtual bool | isLayouted () |
| virtual bool | isModalFocusable () const |
| virtual bool | isModalFocused () const |
| virtual bool | isModalMouseInputFocusable () const |
| bool | isMouseInside (MouseEvent const &mouseEvent) const |
| bool | isSetVisible () const |
| bool | isTabInEnabled () const |
| bool | isTabOutEnabled () const |
| virtual bool | isUnderMouseModal () const |
| bool | isVerticalExpand () const |
| bool | isVisible () const |
| virtual void | logic () |
| virtual void | moveToBottom (Widget *widget) |
| virtual void | moveToTop (Widget *widget) |
| virtual void | onFocusChanged () |
| virtual void | onFocusGained () |
| virtual void | onFocusLost () |
| Widget & | operator= (Widget &&)=delete |
| Widget & | operator= (Widget const &)=delete |
| void | releaseMouse () |
| void | removeActionListener (ActionListener *actionListener) |
| void | removeDeathListener (DeathListener *deathListener) |
| void | removeDropTargetListener (DropTargetListener *listener) |
| void | removeFocusListener (FocusListener *focusListener) |
| void | removeKeyListener (KeyListener *keyListener) |
| void | removeMouseListener (MouseListener *mouseListener) |
| void | removeWidgetListener (WidgetListener *widgetListener) |
| virtual void | requestFocus () |
| virtual void | requestMoveToBottom () |
| virtual void | requestMoveToTop () |
| void | setActionEventId (std::string const &actionEventId) |
| virtual void | setBackgroundColor (Color const &color) |
| virtual void | setBaseColor (Color const &color) |
| void | setBorderBottom (unsigned int size, unsigned int style) |
| virtual void | setBorderColor (Color const &color) |
| void | setBorderSides (unsigned int sides) |
| void | setBorderSize (unsigned int size) |
| void | setBorderStyle (unsigned int style) |
| void | setBorderTop (unsigned int size, unsigned int style) |
| virtual void | setDimension (Rectangle const &dimension) |
| void | setEnabled (bool enabled) |
| void | setFixedSize (Size const &size) |
| void | setFocusable (bool focusable) |
| virtual void | setFocused (bool focused) |
| virtual void | setFont (Font *font) |
| virtual void | setForegroundColor (Color const &color) |
| virtual void | setHeight (int height) |
| void | setHorizontalExpand (bool expand) |
| void | setId (std::string const &id) |
| void | setInternalFocusHandler (FocusHandler *internalFocusHandler) |
| void | setLastPosition (int x, int y) |
| void | setMargin (int margin) |
| void | setMarginBottom (int margin) |
| void | setMarginLeft (int margin) |
| void | setMarginRight (int margin) |
| void | setMarginTop (int margin) |
| void | setMaxSize (Size const &size) |
| void | setMinSize (Size const &size) |
| virtual void | setOutlineColor (Color const &color) |
| void | setOutlineSize (unsigned int size) |
| void | setPadding (unsigned int padding) |
| void | setPaddingBottom (unsigned int padding) |
| void | setPaddingLeft (unsigned int padding) |
| void | setPaddingRight (unsigned int padding) |
| void | setPaddingTop (unsigned int padding) |
| void | setPosition (int x, int y) |
| virtual void | setSelectionColor (Color const &color) |
| virtual void | setSelectionMode (SelectionMode mode) |
| virtual void | setSize (int width, int height) |
| void | setTabInEnabled (bool enabled) |
| void | setTabOutEnabled (bool enabled) |
| void | setVerticalExpand (bool expand) |
| void | setVisible (bool visible) |
| virtual void | setWidth (int width) |
| void | setX (int x) |
| void | setY (int y) |
| virtual void | showPart (Rectangle rectangle) |
| virtual void | showWidgetPart (Widget *widget, Rectangle area) |
| Widget () | |
| Widget (Widget &&)=delete | |
| Widget (Widget const &)=delete | |
| Public Member Functions inherited from fcn::MouseListener | |
| virtual void | mouseClicked (MouseEvent &mouseEvent) |
| virtual void | mouseEntered (MouseEvent &mouseEvent) |
| virtual void | mouseExited (MouseEvent &mouseEvent) |
| MouseListener (MouseListener &&)=default | |
| MouseListener (MouseListener const &)=default | |
| virtual void | mouseMoved (MouseEvent &mouseEvent) |
| virtual void | mouseReleased (MouseEvent &mouseEvent) |
| virtual void | mouseWheelMovedDown (MouseEvent &mouseEvent) |
| virtual void | mouseWheelMovedLeft (MouseEvent &mouseEvent) |
| virtual void | mouseWheelMovedRight (MouseEvent &mouseEvent) |
| virtual void | mouseWheelMovedUp (MouseEvent &mouseEvent) |
| MouseListener & | operator= (MouseListener &&)=default |
| MouseListener & | operator= (MouseListener const &)=default |
| Public Member Functions inherited from fcn::KeyListener | |
| KeyListener (KeyListener &&)=default | |
| KeyListener (KeyListener const &)=default | |
| virtual void | keyReleased (KeyEvent &keyEvent) |
| KeyListener & | operator= (KeyListener &&)=default |
| KeyListener & | operator= (KeyListener const &)=default |
Protected Member Functions | |
| void | adjustSizeImpl () |
| virtual void | drawCaret (Graphics *graphics, int x) |
| void | fixScroll () |
| Protected Member Functions inherited from fcn::Widget | |
| void | add (Widget *widget) |
| void | calculateSize () |
| void | distributeActionEvent () |
| void | distributeAncestorHiddenEvent (Widget *ancestor) |
| void | distributeAncestorMovedEvent (Widget *ancestor) |
| void | distributeAncestorShownEvent (Widget *ancestor) |
| void | distributeDragDrop (DragEvent &event) |
| bool | distributeDragEnter (DragEvent &event) |
| void | distributeDragHover (DragEvent &event) |
| void | distributeDragLeave (DragEvent &event) |
| void | distributeHiddenEvent () |
| void | distributeMovedEvent () |
| void | distributeResizedEvent () |
| void | distributeShownEvent () |
| virtual Widget * | findWidgetById (std::string const &id) |
| std::list< Widget * > const & | getChildren () const |
| virtual void | remove (Widget *widget) |
| virtual void | removeAllChildren () |
| void | resizeToChildren () |
| Protected Member Functions inherited from fcn::MouseListener | |
| MouseListener ()=default | |
| Protected Member Functions inherited from fcn::KeyListener | |
| KeyListener ()=default | |
Protected Attributes | |
| bool | mEditable {true} |
| UTF8StringEditor * | mStringEditor |
| Text * | mText |
| int | mXScroll {0} |
| Protected Attributes inherited from fcn::Widget | |
| std::string | mActionEventId |
| std::list< ActionListener * > | mActionListeners |
| Color | mBackgroundColor {0xf9fafb} |
| Color | mBaseColor {0xe5e7eb} |
| Color | mBorderColor {0xd1d5db} |
| unsigned int | mBorderSides {BORDER_ALL} |
| unsigned int | mBorderSize {0} |
| unsigned int | mBorderStyle {BORDER_STYLE_FLAT} |
| std::list< Widget * > | mChildren |
| Font * | mCurrentFont {nullptr} |
| std::list< DeathListener * > | mDeathListeners |
| Rectangle | mDimension |
| std::list< DropTargetListener * > | mDropTargetListeners |
| bool | mEnabled {true} |
| Size | mFixedSize {-1, -1} |
| bool | mFixedSizeUsed {false} |
| bool | mFocusable {false} |
| bool | mFocused {false} |
| FocusHandler * | mFocusHandler {nullptr} |
| std::list< FocusListener * > | mFocusListeners |
| Color | mForegroundColor {0x1f2933} |
| bool | mHExpand {false} |
| std::string | mId |
| FocusHandler * | mInternalFocusHandler {nullptr} |
| std::list< KeyListener * > | mKeyListeners |
| int | mLastX {0} |
| int | mLastY {0} |
| int | mMarginBottom {0} |
| int | mMarginLeft {0} |
| int | mMarginRight {0} |
| int | mMarginTop {0} |
| Size | mMaxSize {std::numeric_limits<int>::max(), std::numeric_limits<int>::max()} |
| Size | mMinSize {0, 0} |
| std::list< MouseListener * > | mMouseListeners |
| Rectangle | mOffsetRect |
| Color | mOutlineColor {0x9ca3af} |
| unsigned int | mOutlineSize {0} |
| unsigned int | mPaddingBottom {0} |
| unsigned int | mPaddingLeft {0} |
| unsigned int | mPaddingRight {0} |
| unsigned int | mPaddingTop {0} |
| Widget * | mParent {nullptr} |
| Color | mSelectionColor {0x3b82f6} |
| SelectionMode | mSelectionMode {SelectionMode::None} |
| bool | mTabIn {true} |
| bool | mTabOut {true} |
| bool | mVExpand {false} |
| bool | mVisible {true} |
| std::list< WidgetListener * > | mWidgetListeners |
Additional Inherited Members | |
| Public Types inherited from fcn::Widget | |
| enum | BorderSide : uint8_t { BORDER_NONE = 0 , BORDER_LEFT = 1 << 0 , BORDER_TOP = 1 << 1 , BORDER_RIGHT = 1 << 2 , BORDER_BOTTOM = 1 << 3 , BORDER_ALL = BORDER_LEFT | BORDER_TOP | BORDER_RIGHT | BORDER_BOTTOM } |
| enum | BorderStyle : uint8_t { BORDER_STYLE_BEVEL = 0 , BORDER_STYLE_FLAT = 1 } |
| enum class | SelectionMode : uint8_t { None = 0 , Border = 1 , Background = 2 } |
| Static Public Member Functions inherited from fcn::Widget | |
| static DeathListener * | _getGuiDeathListener () |
| static VisibilityEventHandler * | _getVisibilityEventHandler () |
| static void | _setGuiDeathListener (DeathListener *deathListener) |
| static void | _setVisibilityEventHandler (VisibilityEventHandler *visibilityEventHandler) |
| static Widget * | getMouseCapture () |
| static void | resetGlobalFont () |
| static void | setGlobalFont (Font *font) |
| static bool | widgetExists (Widget const *widget) |
| Static Protected Attributes inherited from fcn::Widget | |
| static DefaultFont | mDefaultFont |
| static Font * | mGlobalFont = nullptr |
| static DeathListener * | mGuiDeathListener = nullptr |
| static VisibilityEventHandler * | mVisibilityEventHandler = nullptr |
| static std::list< Widget * > | mWidgetInstances |
| static Widget * | sMouseCapture = nullptr |
A single-line text input field.
Definition at line 29 of file textfield.hpp.
| fcn::TextField::TextField | ( | ) |
Definition at line 23 of file textfield.cpp.
|
explicit |
Constructor.
The text field will be automatically resized to fit the text.
| text | The default text of the text field. |
Definition at line 33 of file textfield.cpp.
References fcn::Widget::addKeyListener(), fcn::Widget::addMouseListener(), adjustSizeImpl(), mStringEditor, mText, and fcn::Widget::setFocusable().
|
override |
Definition at line 43 of file textfield.cpp.
| void fcn::TextField::adjustHeight | ( | ) |
Adjusts the height of the text field to fit caption.
Definition at line 192 of file textfield.cpp.
References fcn::Widget::getFont(), fcn::Widget::getHeight(), and fcn::Widget::setHeight().
Referenced by adjustSizeImpl().
|
overridevirtual |
Adjusts the size of the text field to fit the text.
Reimplemented from fcn::Widget.
Definition at line 178 of file textfield.cpp.
References adjustSizeImpl().
|
protected |
Adjusts the size of the button to fit the caption.
The public adjustSize() method serves as a virtual entry point for polymorphism, while this adjustSizeImpl() method contains the concrete implementation of the resizing logic.
Definition at line 183 of file textfield.cpp.
References adjustHeight(), fixScroll(), fcn::Widget::getFont(), mText, fcn::Widget::setWidth(), and fcn::Rectangle::width.
Referenced by adjustSize(), resizeToContent(), and TextField().
|
overridevirtual |
Draws the widget.
The call to draw is initiated by the widget's parent. The graphics object is set up so that all drawing is relative to the widget, i.e coordinate (0,0) is the top left corner of the widget. It is not possible to draw outside of a widget's dimension. If a widget has children, the parent's draw function will always be called before the children's draw functions are called.
| graphics | A graphics object to draw with. |
Implements fcn::Widget.
Definition at line 54 of file textfield.cpp.
References fcn::Color::a, drawCaret(), fcn::Graphics::drawLine(), fcn::Graphics::drawRectangle(), fcn::Graphics::drawText(), fcn::Graphics::fillRectangle(), fcn::Widget::getBackgroundColor(), fcn::Widget::getBaseColor(), fcn::Widget::getFont(), fcn::Widget::getForegroundColor(), fcn::Widget::getHeight(), fcn::Widget::getSelectionColor(), fcn::Widget::getWidth(), isEditable(), fcn::Widget::isFocused(), mText, mXScroll, fcn::Graphics::popClipArea(), fcn::Graphics::pushClipArea(), fcn::Graphics::setColor(), and fcn::Graphics::setFont().
|
protectedvirtual |
Draws the caret.
Overloaded this method if you want to change the style of the caret.
| graphics | the Graphics object to draw with. |
| x | the caret's x-position. |
Definition at line 101 of file textfield.cpp.
References fcn::Graphics::drawLine(), fcn::Graphics::getCurrentClipArea(), fcn::Widget::getForegroundColor(), fcn::Rectangle::height, and fcn::Graphics::setColor().
Referenced by draw().
|
protected |
Ensures the caret remains visible by adjusting horizontal scroll.
Called after text input or caret movement to update the scroll position so the caret is within the visible area.
Definition at line 197 of file textfield.cpp.
References fcn::Widget::getFont(), fcn::Widget::getWidth(), fcn::Widget::isFocused(), mText, and mXScroll.
Referenced by adjustSizeImpl(), fcn::PasswordField::keyPressed(), keyPressed(), mousePressed(), and textInput().
| unsigned int fcn::TextField::getCaretPosition | ( | ) | const |
Gets the caret position.
As there is only one line of text in a text field the position is the caret's x coordinate.
Definition at line 217 of file textfield.cpp.
References mText.
Referenced by fcn::PasswordField::keyPressed(), keyPressed(), and textInput().
|
virtual |
Gets the text of the text field.
Reimplemented in fcn::PasswordField.
Definition at line 222 of file textfield.cpp.
References mText.
Referenced by keyPressed().
| bool fcn::TextField::isEditable | ( | ) | const |
Checks if the text field is editable.
Definition at line 227 of file textfield.cpp.
References mEditable.
Referenced by draw().
|
overridevirtual |
Called if a key is pressed when the widget has keyboard focus.
If a key is held down the widget will generate multiple key presses.
| keyEvent | Describes the event. |
Reimplemented from fcn::KeyListener.
Definition at line 127 of file textfield.cpp.
References fcn::InputEvent::consume(), fcn::Widget::distributeActionEvent(), fcn::UTF8StringEditor::eraseChar(), fixScroll(), getCaretPosition(), fcn::KeyEvent::getKey(), getText(), mText, fcn::UTF8StringEditor::nextChar(), fcn::UTF8StringEditor::prevChar(), and setCaretPosition().
|
overridevirtual |
Called when the mouse has moved and the mouse has previously been pressed on the widget.
| mouseEvent | Describes the event. |
Reimplemented from fcn::MouseListener.
Definition at line 122 of file textfield.cpp.
References fcn::InputEvent::consume().
|
overridevirtual |
Called when a mouse button has been pressed down on the widget area.
| mouseEvent | Describes the event. |
Reimplemented from fcn::MouseListener.
Definition at line 114 of file textfield.cpp.
References fixScroll(), fcn::MouseEvent::getButton(), fcn::Widget::getFont(), fcn::MouseEvent::getX(), fcn::MouseEvent::getY(), mText, and mXScroll.
|
overridevirtual |
Resizes the widget's size to fit the content exactly, calls recursively all childs.
The default value true allows callers to use resizeToContent() without argument.
| recursion | If true, perform the resize operation recursively on children. |
Reimplemented from fcn::Widget.
Definition at line 172 of file textfield.cpp.
References adjustSizeImpl().
| void fcn::TextField::setCaretPosition | ( | unsigned int | position | ) |
Sets the caret position.
As there is only one line of text in a text field the position is the caret's x coordinate.
| position | The caret position. |
Definition at line 212 of file textfield.cpp.
References mText.
Referenced by keyPressed(), and textInput().
| void fcn::TextField::setEditable | ( | bool | editable | ) |
Sets the text field to be editable or not.
A text field is editable by default.
| editable | True if the text field should be editable, false otherwise. |
Definition at line 232 of file textfield.cpp.
References mEditable.
|
virtual |
Sets the text of the text field.
| text | The text of the text field. |
Reimplemented in fcn::PasswordField.
Definition at line 49 of file textfield.cpp.
References mText.
|
overridevirtual |
Called when text input (IME, dead-key, paste) is received.
Override this to handle text input in your widget. The default implementation does nothing.
| event | The text input event containing the UTF-8 text. |
Reimplemented from fcn::Widget.
Definition at line 161 of file textfield.cpp.
References fixScroll(), getCaretPosition(), mText, and setCaretPosition().
|
protected |
True if the text field is editable, false otherwise.
Definition at line 168 of file textfield.hpp.
Referenced by isEditable(), fcn::PasswordField::keyPressed(), and setEditable().
|
protected |
String editor for UTF8 support.
Definition at line 186 of file textfield.hpp.
Referenced by TextField().
|
protected |
Holds the text of the text field.
Definition at line 173 of file textfield.hpp.
Referenced by adjustSizeImpl(), draw(), fixScroll(), getCaretPosition(), getText(), fcn::PasswordField::keyPressed(), keyPressed(), mousePressed(), setCaretPosition(), fcn::PasswordField::setText(), setText(), TextField(), and textInput().
|
protected |
Horizontal scroll offset in pixels.
Used when the text exceeds the visible width of the field, ensuring recently entered characters (and the caret) remain visible.
Definition at line 181 of file textfield.hpp.
Referenced by draw(), fixScroll(), and mousePressed().