Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
refacto: factorize multiple code parts from guiEditbox childs (#10782)
- Loading branch information
Showing
7 changed files
with
266 additions
and
391 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,95 @@ | ||
/* | ||
Minetest | ||
Copyright (C) 2021 Minetest | ||
This program is free software; you can redistribute it and/or modify | ||
it under the terms of the GNU Lesser General Public License as published by | ||
the Free Software Foundation; either version 2.1 of the License, or | ||
(at your option) any later version. | ||
This program is distributed in the hope that it will be useful, | ||
but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
GNU Lesser General Public License for more details. | ||
You should have received a copy of the GNU Lesser General Public License along | ||
with this program; if not, write to the Free Software Foundation, Inc., | ||
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. | ||
*/ | ||
|
||
#include "guiEditBox.h" | ||
|
||
#include "IGUISkin.h" | ||
#include "IGUIEnvironment.h" | ||
#include "IGUIFont.h" | ||
|
||
GUIEditBox::~GUIEditBox() | ||
{ | ||
if (m_override_font) | ||
m_override_font->drop(); | ||
} | ||
|
||
void GUIEditBox::setOverrideFont(IGUIFont *font) | ||
{ | ||
if (m_override_font == font) | ||
return; | ||
|
||
if (m_override_font) | ||
m_override_font->drop(); | ||
|
||
m_override_font = font; | ||
|
||
if (m_override_font) | ||
m_override_font->grab(); | ||
|
||
breakText(); | ||
} | ||
|
||
//! Get the font which is used right now for drawing | ||
IGUIFont *GUIEditBox::getActiveFont() const | ||
{ | ||
if (m_override_font) | ||
return m_override_font; | ||
IGUISkin *skin = Environment->getSkin(); | ||
if (skin) | ||
return skin->getFont(); | ||
return 0; | ||
} | ||
|
||
//! Sets another color for the text. | ||
void GUIEditBox::setOverrideColor(video::SColor color) | ||
{ | ||
m_override_color = color; | ||
m_override_color_enabled = true; | ||
} | ||
|
||
video::SColor GUIEditBox::getOverrideColor() const | ||
{ | ||
return m_override_color; | ||
} | ||
|
||
//! Sets if the text should use the overide color or the color in the gui skin. | ||
void GUIEditBox::enableOverrideColor(bool enable) | ||
{ | ||
m_override_color_enabled = enable; | ||
} | ||
|
||
//! Enables or disables word wrap | ||
void GUIEditBox::setWordWrap(bool enable) | ||
{ | ||
m_word_wrap = enable; | ||
breakText(); | ||
} | ||
|
||
//! Enables or disables newlines. | ||
void GUIEditBox::setMultiLine(bool enable) | ||
{ | ||
m_multiline = enable; | ||
} | ||
|
||
//! Enables or disables automatic scrolling with cursor position | ||
//! \param enable: If set to true, the text will move around with the cursor position | ||
void GUIEditBox::setAutoScroll(bool enable) | ||
{ | ||
m_autoscroll = enable; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,103 @@ | ||
/* | ||
Minetest | ||
Copyright (C) 2021 Minetest | ||
This program is free software; you can redistribute it and/or modify | ||
it under the terms of the GNU Lesser General Public License as published by | ||
the Free Software Foundation; either version 2.1 of the License, or | ||
(at your option) any later version. | ||
This program is distributed in the hope that it will be useful, | ||
but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
GNU Lesser General Public License for more details. | ||
You should have received a copy of the GNU Lesser General Public License along | ||
with this program; if not, write to the Free Software Foundation, Inc., | ||
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. | ||
*/ | ||
|
||
#pragma once | ||
|
||
#include "IGUIEditBox.h" | ||
#include "IOSOperator.h" | ||
#include "guiScrollBar.h" | ||
|
||
using namespace irr; | ||
using namespace irr::gui; | ||
|
||
class GUIEditBox : public IGUIEditBox | ||
{ | ||
public: | ||
GUIEditBox(IGUIEnvironment *environment, IGUIElement *parent, s32 id, | ||
core::rect<s32> rectangle) : | ||
IGUIEditBox(environment, parent, id, rectangle) | ||
{ | ||
} | ||
|
||
virtual ~GUIEditBox(); | ||
|
||
//! Sets another skin independent font. | ||
virtual void setOverrideFont(IGUIFont *font = 0); | ||
|
||
virtual IGUIFont *getOverrideFont() const { return m_override_font; } | ||
|
||
//! Get the font which is used right now for drawing | ||
/** Currently this is the override font when one is set and the | ||
font of the active skin otherwise */ | ||
virtual IGUIFont *getActiveFont() const; | ||
|
||
//! Sets another color for the text. | ||
virtual void setOverrideColor(video::SColor color); | ||
|
||
//! Gets the override color | ||
virtual video::SColor getOverrideColor() const; | ||
|
||
//! Sets if the text should use the overide color or the | ||
//! color in the gui skin. | ||
virtual void enableOverrideColor(bool enable); | ||
|
||
//! Checks if an override color is enabled | ||
/** \return true if the override color is enabled, false otherwise */ | ||
virtual bool isOverrideColorEnabled(void) const | ||
{ | ||
return m_override_color_enabled; | ||
} | ||
|
||
//! Enables or disables word wrap for using the edit box as multiline text editor. | ||
virtual void setWordWrap(bool enable); | ||
|
||
//! Checks if word wrap is enabled | ||
//! \return true if word wrap is enabled, false otherwise | ||
virtual bool isWordWrapEnabled() const { return m_word_wrap; } | ||
|
||
//! Enables or disables newlines. | ||
/** \param enable: If set to true, the EGET_EDITBOX_ENTER event will not be fired, | ||
instead a newline character will be inserted. */ | ||
virtual void setMultiLine(bool enable); | ||
|
||
//! Checks if multi line editing is enabled | ||
//! \return true if mult-line is enabled, false otherwise | ||
virtual bool isMultiLineEnabled() const { return m_multiline; } | ||
|
||
//! Enables or disables automatic scrolling with cursor position | ||
//! \param enable: If set to true, the text will move around with the cursor | ||
//! position | ||
virtual void setAutoScroll(bool enable); | ||
|
||
//! Checks to see if automatic scrolling is enabled | ||
//! \return true if automatic scrolling is enabled, false if not | ||
virtual bool isAutoScrollEnabled() const { return m_autoscroll; } | ||
|
||
protected: | ||
virtual void breakText() = 0; | ||
|
||
gui::IGUIFont *m_override_font = nullptr; | ||
|
||
bool m_override_color_enabled = false; | ||
bool m_word_wrap = false; | ||
bool m_multiline = false; | ||
bool m_autoscroll = true; | ||
|
||
video::SColor m_override_color = video::SColor(101, 255, 255, 255); | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.