FifeGUI 0.2.0
A C++ GUI library designed for games.
fcn::TextField Class Reference

#include <textfield.hpp>

Inheritance diagram for fcn::TextField:
fcn::Widget fcn::MouseListener fcn::KeyListener fcn::PasswordField

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 ()
void resizeToContent (bool recursion) 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
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 addFocusListener (FocusListener *focusListener)
void addKeyListener (KeyListener *keyListener)
void addMouseListener (MouseListener *mouseListener)
void addWidgetListener (WidgetListener *widgetListener)
virtual void drawBorder (Graphics *graphics)
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 getBorderSize () const
virtual Rectangle getChildrenArea ()
unsigned int getChildrenCount () const
Rectangle const & getDimension () const
Size const & getFixedSize () const
FontgetFont () 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 WidgetgetParent () const
Color const & getSelectionColor () const
SelectionMode getSelectionMode () const
virtual WidgetgetTop () const
unsigned int getVisibleChildrenCount () const
WidgetgetWidgetAt (int x, int y)
virtual WidgetgetWidgetAt (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 isEnabled () const
bool isFixedSize () const
bool isFocusable () const
virtual bool isFocused () const
bool isHorizontalExpand () const
bool isLastPositionSet () const
virtual bool isLayouted ()
virtual bool isModalFocusable () const
virtual bool isModalFocused () const
virtual bool isModalMouseInputFocusable () const
virtual bool isModalMouseInputFocused () const
bool isSetVisible () const
bool isTabInEnabled () const
bool isTabOutEnabled () const
bool isVerticalExpand () const
bool isVisible () const
virtual void logic ()
virtual void moveToBottom (Widget *widget)
virtual void moveToTop (Widget *widget)
Widgetoperator= (Widget &&)=delete
Widgetoperator= (Widget const &)=delete
virtual void releaseModalFocus ()
virtual void releaseModalMouseInputFocus ()
void removeActionListener (ActionListener *actionListener)
void removeDeathListener (DeathListener *deathListener)
void removeFocusListener (FocusListener *focusListener)
void removeKeyListener (KeyListener *keyListener)
void removeMouseListener (MouseListener *mouseListener)
void removeWidgetListener (WidgetListener *widgetListener)
virtual void requestFocus ()
virtual void requestModalFocus ()
virtual void requestModalMouseInputFocus ()
virtual void requestMoveToBottom ()
virtual void requestMoveToTop ()
void resizeToContent ()
void setActionEventId (std::string const &actionEventId)
virtual void setBackgroundColor (Color const &color)
virtual void setBaseColor (Color const &color)
virtual void setBorderColor (Color const &color)
void setBorderSize (unsigned int size)
void setDimension (Rectangle const &dimension)
void setEnabled (bool enabled)
void setFixedSize (Size const &size)
void setFocusable (bool focusable)
virtual void setFont (Font *font)
virtual void setForegroundColor (Color const &color)
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)
void setSize (int width, int height)
void setTabInEnabled (bool enabled)
void setTabOutEnabled (bool enabled)
void setVerticalExpand (bool expand)
void setVisible (bool visible)
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 distributeHiddenEvent ()
void distributeMovedEvent ()
void distributeResizedEvent ()
void distributeShownEvent ()
virtual WidgetfindWidgetById (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}
UTF8StringEditormStringEditor
TextmText
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 mBorderSize {0}
std::list< Widget * > mChildren
FontmCurrentFont {nullptr}
std::list< DeathListener * > mDeathListeners
Rectangle mDimension
bool mEnabled {true}
Size mFixedSize {-1, -1}
bool mFixedSizeUsed {false}
bool mFocusable {false}
FocusHandlermFocusHandler {nullptr}
std::list< FocusListener * > mFocusListeners
Color mForegroundColor {0x1f2933}
bool mHExpand {false}
std::string mId
FocusHandlermInternalFocusHandler {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}
WidgetmParent {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 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 void setGlobalFont (Font *font)
static bool widgetExists (Widget const *widget)
Static Protected Attributes inherited from fcn::Widget
static DefaultFont mDefaultFont
static FontmGlobalFont = nullptr
static DeathListenermGuiDeathListener = nullptr
static VisibilityEventHandlermVisibilityEventHandler = nullptr
static std::list< Widget * > mWidgetInstances

Detailed Description

A single-line text input field.

Definition at line 25 of file textfield.hpp.

Constructor & Destructor Documentation

◆ TextField() [1/2]

fcn::TextField::TextField ( )

Definition at line 19 of file textfield.cpp.

◆ TextField() [2/2]

fcn::TextField::TextField ( std::string const & text)
explicit

Constructor.

The text field will be automatically resized to fit the text.

Parameters
textThe default text of the text field.

Definition at line 29 of file textfield.cpp.

References fcn::Widget::addKeyListener(), fcn::Widget::addMouseListener(), adjustSizeImpl(), mStringEditor, mText, and fcn::Widget::setFocusable().

◆ ~TextField()

fcn::TextField::~TextField ( )
override

Definition at line 39 of file textfield.cpp.

Member Function Documentation

◆ adjustHeight()

void fcn::TextField::adjustHeight ( )

Adjusts the height of the text field to fit caption.

Definition at line 182 of file textfield.cpp.

References fcn::Widget::getFont(), fcn::Widget::getHeight(), and fcn::Widget::setHeight().

Referenced by adjustSizeImpl().

◆ adjustSize()

void fcn::TextField::adjustSize ( )
overridevirtual

Adjusts the size of the text field to fit the text.

Reimplemented from fcn::Widget.

Definition at line 168 of file textfield.cpp.

References adjustSizeImpl().

◆ adjustSizeImpl()

void fcn::TextField::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.

See also
adjustSize (virtual entry point for polymorphism)

Definition at line 173 of file textfield.cpp.

References adjustHeight(), fixScroll(), fcn::Widget::getFont(), mText, fcn::Widget::setWidth(), and fcn::Rectangle::width.

Referenced by adjustSize(), resizeToContent(), and TextField().

◆ draw()

void fcn::TextField::draw ( Graphics * graphics)
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.

NOTE: A widget with children won't draw its children unless the children area given by Widget::getChildrenArea returns a none empty rectangle inside the widgets dimension. The children area is considered relative to the widget's position.

Parameters
Graphics & RenderingA graphics object to draw with.
See also
getChildrenArea, drawOutline, drawBorder

Implements fcn::Widget.

Definition at line 50 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().

◆ drawCaret()

void fcn::TextField::drawCaret ( Graphics * graphics,
int x )
protectedvirtual

Draws the caret.

Overloaded this method if you want to change the style of the caret.

Parameters
Graphics & Renderingthe Graphics object to draw with.
xthe caret's x-position.

Definition at line 97 of file textfield.cpp.

References fcn::Graphics::drawLine(), fcn::Graphics::getCurrentClipArea(), fcn::Widget::getForegroundColor(), fcn::Rectangle::height, and fcn::Graphics::setColor().

Referenced by draw().

◆ fixScroll()

void fcn::TextField::fixScroll ( )
protected

Scrolls the text horizontally so that the caret shows if needed.

The method is used any time a user types in the text field so the caret always will be shown.

Definition at line 187 of file textfield.cpp.

References fcn::Widget::getFont(), fcn::Widget::getWidth(), fcn::Widget::isFocused(), mText, and mXScroll.

Referenced by adjustSizeImpl(), fcn::PasswordField::keyPressed(), keyPressed(), and mousePressed().

◆ getCaretPosition()

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.

Returns
The caret position.
See also
setCaretPosition

Definition at line 207 of file textfield.cpp.

References mText.

Referenced by fcn::PasswordField::keyPressed(), and keyPressed().

◆ getText()

std::string fcn::TextField::getText ( ) const
virtual

Gets the text of the text field.

Returns
The text of the text field.
See also
setText

Reimplemented in fcn::PasswordField.

Definition at line 212 of file textfield.cpp.

References mText.

Referenced by keyPressed().

◆ isEditable()

bool fcn::TextField::isEditable ( ) const

Checks if the text field is editable.

Returns
True it the text field is editable, false otherwise.
See also
setEditable

Definition at line 217 of file textfield.cpp.

References mEditable.

Referenced by draw().

◆ keyPressed()

void fcn::TextField::keyPressed ( KeyEvent & keyEvent)
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.

Parameters
keyEventDescribes the event.

Reimplemented from fcn::KeyListener.

Definition at line 123 of file textfield.cpp.

References fcn::InputEvent::consume(), fcn::Widget::distributeActionEvent(), fcn::UTF8StringEditor::eraseChar(), fixScroll(), getCaretPosition(), fcn::KeyEvent::getKey(), getText(), fcn::Key::getValue(), fcn::UTF8StringEditor::insertChar(), fcn::Key::isCharacter(), mText, fcn::UTF8StringEditor::nextChar(), fcn::UTF8StringEditor::prevChar(), and setCaretPosition().

◆ mouseDragged()

void fcn::TextField::mouseDragged ( MouseEvent & mouseEvent)
overridevirtual

Called when the mouse has moved and the mouse has previously been pressed on the widget.

Parameters
mouseEventDescribes the event.

Reimplemented from fcn::MouseListener.

Definition at line 118 of file textfield.cpp.

References fcn::InputEvent::consume().

◆ mousePressed()

void fcn::TextField::mousePressed ( MouseEvent & mouseEvent)
overridevirtual

Called when a mouse button has been pressed on the widget area.

NOTE: A mouse press is NOT equal to a mouse click. Use mouseClickMessage to check for mouse clicks.

Parameters
mouseEventDescribes the event.

Reimplemented from fcn::MouseListener.

Definition at line 110 of file textfield.cpp.

References fixScroll(), fcn::MouseEvent::getButton(), fcn::Widget::getFont(), fcn::MouseEvent::getX(), fcn::MouseEvent::getY(), mText, and mXScroll.

◆ resizeToContent() [1/2]

Resizes the widget's size to fit the content exactly, calls recursively all childs.

This is a convenience wrapper that calls resizeToContent(true).

Definition at line 1417 of file widget.hpp.

◆ resizeToContent() [2/2]

void fcn::TextField::resizeToContent ( bool recursion)
overridevirtual

Resize this widget to fit its content.

Parameters
recursionIf true, perform the resize operation recursively on children.

Reimplemented from fcn::Widget.

Definition at line 162 of file textfield.cpp.

References adjustSizeImpl().

◆ setCaretPosition()

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.

Parameters
positionThe caret position.
See also
getCaretPosition

Definition at line 202 of file textfield.cpp.

References mText.

Referenced by keyPressed().

◆ setEditable()

void fcn::TextField::setEditable ( bool editable)

Sets the text field to be editable or not.

A text field is editable by default.

Parameters
editableTrue if the text field should be editable, false otherwise.

Definition at line 222 of file textfield.cpp.

References mEditable.

◆ setText()

void fcn::TextField::setText ( std::string const & text)
virtual

Sets the text of the text field.

Parameters
textThe text of the text field.
See also
getText

Reimplemented in fcn::PasswordField.

Definition at line 45 of file textfield.cpp.

References mText.

Member Data Documentation

◆ mEditable

bool fcn::TextField::mEditable {true}
protected

True if the text field is editable, false otherwise.

Definition at line 155 of file textfield.hpp.

Referenced by isEditable(), fcn::PasswordField::keyPressed(), and setEditable().

◆ mStringEditor

UTF8StringEditor* fcn::TextField::mStringEditor
protected

String editor for UTF8 support.

Definition at line 172 of file textfield.hpp.

Referenced by TextField().

◆ mText

Text* fcn::TextField::mText
protected

◆ mXScroll

int fcn::TextField::mXScroll {0}
protected

Holds the amount scrolled in x.

If a user types more characters than the text field can display, due to the text field being to small, the text needs to scroll in order to show the last type character.

Definition at line 167 of file textfield.hpp.

Referenced by draw(), fixScroll(), and mousePressed().


The documentation for this class was generated from the following files: