From 6be517ccf5c13bcb604003cd6979152e087408a1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mart=C3=ADn=20Lucas=20Golini?= Date: Sat, 16 Jul 2022 20:20:13 -0300 Subject: [PATCH] Deprecated (removed) EE::Graphics::Console and EE::Window::InputTextBuffer. Fixed build. --- include/eepp/graphics.hpp | 1 - include/eepp/graphics/console.hpp | 267 ----- include/eepp/ui/models/model.hpp | 4 +- include/eepp/window.hpp | 1 - include/eepp/window/inputtextbuffer.hpp | 214 ---- projects/linux/ee.creator.user | 4 +- projects/linux/ee.files | 4 - src/eepp/graphics/console.cpp | 975 ------------------ src/eepp/ui/models/modelindex.cpp | 5 + src/eepp/ui/uiconsole.cpp | 22 +- src/eepp/window/inputtextbuffer.cpp | 859 --------------- .../eterm/terminal/terminalcolorscheme.cpp | 1 - .../src/eterm/terminal/terminaldisplay.cpp | 1 + src/tests/test_all/test.cpp | 26 +- src/tests/test_all/test.hpp | 2 +- src/tools/uieditor/uieditor.cpp | 17 +- 16 files changed, 47 insertions(+), 2356 deletions(-) delete mode 100644 include/eepp/graphics/console.hpp delete mode 100644 include/eepp/window/inputtextbuffer.hpp delete mode 100755 src/eepp/graphics/console.cpp delete mode 100644 src/eepp/window/inputtextbuffer.cpp diff --git a/include/eepp/graphics.hpp b/include/eepp/graphics.hpp index 44bbac4ec..d02d3d63a 100644 --- a/include/eepp/graphics.hpp +++ b/include/eepp/graphics.hpp @@ -5,7 +5,6 @@ #include #include #include -#include #include #include #include diff --git a/include/eepp/graphics/console.hpp b/include/eepp/graphics/console.hpp deleted file mode 100644 index d0a0a0540..000000000 --- a/include/eepp/graphics/console.hpp +++ /dev/null @@ -1,267 +0,0 @@ -#ifndef EE_GRAPHICSCCONSOLE_H -#define EE_GRAPHICSCCONSOLE_H - -#include -#include -#include -#include -#include -#include - -namespace EE { namespace Window { -class Window; -class InputTextBuffer; -class InputEvent; -}} // namespace EE::Window - -using namespace EE::Window; - -namespace EE { namespace Graphics { - -class EE_API Console : protected LogReaderInterface { - public: - //! The Console Callback return a vector of parameters ( String ) - typedef std::function& )> ConsoleCallback; - - /** Instances the console but doesn't create it, you must call Create to initialize the console. - */ - Console( EE::Window::Window* window = NULL ); - - /** Creates the console */ - Console( Font* Font, const bool& makeDefaultCommands = true, const bool& attachToLog = true, - const unsigned int& maxLogLines = 1024, const Uint32& textureId = 0, - EE::Window::Window* window = NULL ); - - virtual ~Console(); - - /** Set the Console Height ( percent, between 0 and 1 ) when it's not in fullscreen */ - void setConsoleMinimizedHeight( const Float& MinHeight ); - - /** Get the Console Height when it's Minimized ( Not Maximized ) */ - const Float& getConsoleMinimizedHeight() const; - - /** Set the Texture Id for the Background, 0 will disable texture background */ - void setBackgroundTextureId( const Uint32& TexId ); - - /** Get the Background Texture Id */ - Uint32 getBackgroundTextureId() const; - - /** Set the Console Background Color */ - void setBackgroundColor( const Color& BackColor ); - - void setCharacterSize( const Uint32& characterSize ); - - /** Get the Console Background Color */ - const Color& getBackgroundColor() const; - - /** Set the Console Border Line Background Color */ - void setBackgroundLineColor( const Color& BackColor ); - - /** Get the Console Border Line Background Color */ - const Color& getBackgroundLineColor() const; - - /** Set the Console Font Color */ - void setFontColor( const Color& FntColor ); - - /** Get the Console Font Color */ - const Color& getFontColor() const; - - /** Set the Console Client Input ( Writeable Line ) Font Color */ - void setFontLineColor( const Color& FntColor ); - - /** Get the Console Client Input ( Writeable Line ) Font Color */ - const Color& getFontLineColor() const; - - /** Toogle the console between visible and hided with Fade In or Fade Out effect. */ - void toggle(); - - /** Make visible the console */ - void fadeIn(); - - /** Hide the console */ - void fadeOut(); - - /** @return If Console Active ( Visible ) */ - bool isActive() const; - - /** Maximize or Minimize the Console */ - void setExpanded( const bool& Exp ); - - /** @return If console is maximized */ - bool isExpanded() const; - - /** Set the fade time */ - void setFadeSpeed( const Time& fadespeed ); - - /** @return The fading speed in ms */ - const Time& getFadeSpeed() const; - - /** @brief Creates the new console - * @param Font The Font pointer to class - * @param MakeDefaultCommands Register the default commands provided by the class? - * @param AttachToLog Attach the console to the Log instance - * @param MaxLogLines Maximum number of lines stored on the console - * @param textureId Background texture id ( 0 for no texture ) - */ - void create( Font* Font, const bool& makeDefaultCommands = true, const bool& attachToLog = true, - const unsigned int& maxLogLines = 1024, const Uint32& textureId = 0 ); - - /** Add Text to Console */ - void pushText( const String& str ); - - /** Add formated Text to console */ - void pushText( const char* format, ... ); - - /** Adds a new Command - * @param Command The Command Name ( raise the event ) - * @param CB The Callback for the Command - */ - void addCommand( const String& Command, ConsoleCallback CB ); - - /** Draw the Console ( allways call it, visible or not ) */ - void draw( const Time& elapsedTime = Time::Zero ); - - /** Set the line height ( distance between lines ) */ - void setLineHeight( const Float& LineHeight ); - - /** Use this if you need to ignore some char to activate the console, for example '~'. A common - * char to activate a console. */ - void ignoreCharOnPrompt( const Uint32& ch ); - - /** @return If the console is rendering the FPS count. */ - const bool& isShowingFps() const; - - /** Activate/Deactive fps rendering */ - void showFps( const bool& Show ); - - FontStyleConfig getFontStyleConfig() const; - - void setFontStyleConfig( const FontStyleConfig& fontStyleConfig ); - - const bool& isFading() const; - - protected: - Mutex mMutex; - std::map mCallbacks; - std::deque mCmdLog; - std::deque mLastCommands; - - EE::Window::Window* mWindow{ nullptr }; - - Color mConColor{ 0x201F1FEE }; - Color mConLineColor{ 0x666666EE }; - Color mFontLineColor{ 255, 255, 255, 230 }; - - Sizef mSize; -#if EE_PLATFORM == EE_PLATFORM_ANDROID || EE_PLATFORM == EE_PLATFORM_IOS - Float mHeightMin{ 0.5f }; -#else - Float mHeightMin{ 0.6f }; -#endif - Float mCurHeight{ 0.f }; - Float mY{ 0.f }; - Float mA{ 0.f }; - Float mMaxAlpha{ 255.f }; - Float mTempY{ 0.f }; - Float mFontSize{ 12.f }; - Time mFadeSpeed{ Milliseconds( 250.f ) }; - - Uint32 mMyCallback{ 0 }; - Uint32 mVidCb{ 0 }; - Uint32 mEx{ 0 }; - Uint32 mMaxLogLines{ 1024 }; - int mLastLogPos{ 0 }; - - InputTextBuffer* mTBuf{ nullptr }; - - Primitives mPri; - Uint32 mTexId{ 0 }; - - struct sCon { - int ConMin{ 0 }; - int ConMax{ 0 }; - int ConModif{ 0 }; - }; - sCon mCon; - - Float mCurAlpha{ 0.f }; - std::vector mTextCache; - FontStyleConfig mFontStyleConfig; - bool mEnabled{ false }; - bool mVisible{ false }; - bool mFadeIn{ false }; - bool mFadeOut{ false }; - bool mExpand{ false }; - bool mFading{ false }; - bool mShowFps{ false }; - bool mCurSide{ false }; - - void createDefaultCommands(); - - void fade( const Time& elapsedTime ); - - /** Internal Callback for default command ( maximize ) */ - void cmdMaximize(); - - /** Internal Callback for default command ( minimize ) */ - void cmdMinimize(); - - /** Internal Callback for default command ( cmdlist ) */ - void cmdCmdList(); - - /** Internal Callback for default command ( showcursor ) */ - void cmdShowCursor( const std::vector& params ); - - /** Internal Callback for default command ( setfpslimit ) */ - void cmdFrameLimit( const std::vector& params ); - - /** Internal Callback for default command ( setgamma ) */ - void cmdSetGamma( const std::vector& params ); - - /** Internal Callback for default command ( setvolume ) */ - void cmdSetVolume( const std::vector& params ); - - /** Internal Callback for default command ( dir and ls ) */ - void cmdDir( const std::vector& params ); - - /** Internal Callback for default command ( showfps ) */ - void cmdShowFps( const std::vector& params ); - - /** Internal Callback for default command ( gettexturememory ) */ - void cmdGetTextureMemory(); - - /** The Default Commands Callbacks for the Console ( don't call it ) */ - void privInputCallback( InputEvent* Event ); - - /** Clear the Console */ - void cmdClear(); - - /** Add the current log to the console */ - void cmdGetLog(); - - /** Add the GPU Extensions supported to the console */ - void cmdGetGpuExtensions(); - - /** Internal Callback to Process the new line ( when return pressed ) */ - void processLine(); - - void privPushText( const String& str ); - - void printCommandsStartingWith( const String& start ); - - void privVideoResize( EE::Window::Window* ); - - void writeLog( const std::string& Text ); - - void getFilesFrom( std::string txt, const Uint32& curPos ); - - Int32 linesOnScreen(); - - Int32 maxLinesOnScreen(); - - String getLastCommonSubStr( std::list& cmds ); -}; - -}} // namespace EE::Graphics - -#endif diff --git a/include/eepp/ui/models/model.hpp b/include/eepp/ui/models/model.hpp index 560868154..d1520b4fb 100644 --- a/include/eepp/ui/models/model.hpp +++ b/include/eepp/ui/models/model.hpp @@ -206,9 +206,7 @@ class EE_API Model { Mutex mResourceLock; }; -inline ModelIndex ModelIndex::parent() const { - return mModel ? mModel->parentIndex( *this ) : ModelIndex(); -} + }}} // namespace EE::UI::Models diff --git a/include/eepp/window.hpp b/include/eepp/window.hpp index ed1ac2f36..1d76ea097 100644 --- a/include/eepp/window.hpp +++ b/include/eepp/window.hpp @@ -6,7 +6,6 @@ #include #include #include -#include #include #include #include diff --git a/include/eepp/window/inputtextbuffer.hpp b/include/eepp/window/inputtextbuffer.hpp deleted file mode 100644 index 22cc15a37..000000000 --- a/include/eepp/window/inputtextbuffer.hpp +++ /dev/null @@ -1,214 +0,0 @@ -#ifndef EE_WINDOWCINPUTTEXTBUFFER_H -#define EE_WINDOWCINPUTTEXTBUFFER_H - -#include -#include -#include -#include - -namespace EE { namespace Window { - -/** @brief A class to keep a buffer of the user writed text */ -class EE_API InputTextBuffer { - public: - typedef std::function EnterCallback; - typedef std::function CursorPositionChangeCallback; - typedef std::function BufferChangeCallback; - typedef std::function SelectionChangeCallback; - - static InputTextBuffer* New( const bool& active, const bool& newLineEnabled, - const bool& freeEditing, EE::Window::Window* window = NULL, - const Uint32& maxLength = UINT32_MAX ); - - static InputTextBuffer* New( EE::Window::Window* window = NULL ); - - InputTextBuffer( const bool& active, const bool& newLineEnabled, const bool& freeEditing, - EE::Window::Window* window = NULL, const Uint32& maxLength = UINT32_MAX ); - - InputTextBuffer( EE::Window::Window* window = NULL ); - - ~InputTextBuffer(); - - /** @return The current buffer */ - String getBuffer() const; - - /** Set a new current buffer */ - void setBuffer( const String& str ); - - /** @return If input buffer is active */ - bool isActive() const; - - /** Set the state of the input buffer */ - void setActive( const bool& active ); - - /** @return If new line is supported */ - bool setSupportNewLine(); - - /** Support new line consist of allowing to add a new line when key return is pressed. */ - void isNewLineEnabled( const bool& enabled ); - - /** @return If Free Editing is enabled */ - bool isFreeEditingEnabled() const; - - /** Free editing consist on the capability of moving the cursor position over the buffer, to - * write over the buffer, and not only after the last character. */ - void setFreeEditing( const bool& enabled ); - - /** Block all the inserts, allow only numeric characters. */ - void setAllowOnlyNumbers( const bool& onlynums, const bool& allowdots = false ); - - /** @return If is only allowing numbers */ - bool onlyNumbersAllowed(); - - /** @return If is only allowing numbers, it allow floating point numbers? */ - bool dotsInNumbersAllowed(); - - /** @return If text selection feature is enabled */ - bool isTextSelectionEnabled(); - - /** Enable text selection */ - void setTextSelectionEnabled( const bool& enabled ); - - /** Start the input buffer */ - void start(); - - /** Clear the buffer */ - void clear(); - - /** Internal callback, don't call it */ - void update( InputEvent* Event ); - - /** A callback for the key return */ - void setReturnCallback( EnterCallback EC ); - - /** @return If something changed since last update */ - bool changedSinceLastUpdate(); - - /** Set if changed since last update */ - void setChangedSinceLastUpdate( const bool& Changed ); - - /** @return The Cursor Position (where is the cursor editing) */ - int getCursorPosition() const; - - /** Set the cursor position */ - void setCursorPosition( const Uint32& pos ); - - /** This function locates the cursor line position for the correct rendering of it. - * @param LastNewLinePos This will return the position of the closest "\n" to the current Cursor - * Pos - * @return On which line is the cursor - */ - Uint32 getCurPosLinePos( Uint32& LastNewLinePos ); - - /** Push the char you want to ignore */ - void pushIgnoredChar( const Uint32& ch ); - - /** Set the new max length */ - void setMaxLength( const Uint32& Max ); - - /** @return The Max Length */ - const Uint32& getMaxLength() const; - - /** Support copy paste */ - void supportCopyPaste( const bool& support ); - - /** @return Support copy paste */ - bool supportCopyPaste(); - - /** Set the cursor to the last character of the buffer. */ - void cursorToEnd(); - - /** Set the selection cursor initial position */ - void selCurInit( const Int32& init ); - - /** Set the selection cursor final position */ - void selCurEnd( const Int32& end ); - - /** @return The selection cursor initial position */ - const Int32& selCurInit() const; - - /** @return The selection cursor final position */ - const Int32& selCurEnd() const; - - /** Event callback when the cursor position changes. */ - void setCursorPositionChangeCallback( - const CursorPositionChangeCallback& cursorPositionChangeCallback ); - - /** Event callback when the text buffer changes. */ - void setBufferChangeCallback( const BufferChangeCallback& bufferChangeCallback ); - - /** Event callback when the selection changes. */ - void setSelectionChangeCallback( const SelectionChangeCallback& selectionChangeCallback ); - - void selectAll(); - - protected: - enum Flags { - SUPPORT_NEW_LINE = 0, - ALLOW_ONLY_NUMBERS = 1, - ALLOW_DOT_IN_NUMBERS = 2, - ACTIVE = 3, - CHANGE_SINCE_LAST_UPDATE = 4, - FREE_EDITING = 5, - PROMPT_AUTO_POS = 6, - SUPPORT_COPY_PASTE = 7, - TEXT_SELECTION_ENABLED = 8 - }; - - EE::Window::Window* mWindow; - String mText; - Uint32 mFlags; - Uint32 mCallback; - int mPromptPos; - EnterCallback mEnterCall; - CursorPositionChangeCallback mCursorPositionChangeCallback; - BufferChangeCallback mBufferChangeCallback; - SelectionChangeCallback mSelectionChangeCallback; - Uint32 mMaxLength; - std::vector mIgnoredChars; - Int32 mSelCurInit; - Int32 mSelCurEnd; - - void autoPrompt( const bool& set ); - - bool autoPrompt(); - - bool canAdd(); - - void movePromptRowDown( const bool& breakit ); - - void movePromptRowUp( const bool& breakit ); - - void promptToLeftFirstNoChar(); - - void promptToRightFirstNoChar(); - - void eraseToPrevNoChar(); - - void eraseToNextNoChar(); - - bool isIgnoredChar( const String::StringBaseType& c ); - - bool validChar( const String::StringBaseType& c ); - - void tryAddChar( const String::StringBaseType& c ); - - void shiftSelection( const int& lastPromtpPos ); - - void removeSelection(); - - void resetSelection(); - - void onCursorPositionChange(); - - void onSelectionChange(); - - void onBufferChange(); - - /** Set the cursor position */ - void setCursorPos( const Uint32& pos ); -}; - -}} // namespace EE::Window - -#endif diff --git a/projects/linux/ee.creator.user b/projects/linux/ee.creator.user index e949a7bb3..b7fea2840 100644 --- a/projects/linux/ee.creator.user +++ b/projects/linux/ee.creator.user @@ -1,6 +1,6 @@ - + EnvironmentId @@ -109,7 +109,7 @@ {388e5431-b31b-42b3-b9ad-9002d279d75d} 10 0 - 16 + 19 ../../make/linux diff --git a/projects/linux/ee.files b/projects/linux/ee.files index 9315dd437..9a682f348 100644 --- a/projects/linux/ee.files +++ b/projects/linux/ee.files @@ -51,7 +51,6 @@ ../../include/eepp/graphics/batchrenderer.hpp ../../include/eepp/graphics/blendmode.hpp ../../include/eepp/graphics/circledrawable.hpp -../../include/eepp/graphics/console.hpp ../../include/eepp/graphics/convexshapedrawable.hpp ../../include/eepp/graphics/drawablegroup.hpp ../../include/eepp/graphics/drawable.hpp @@ -443,7 +442,6 @@ ../../include/eepp/window/inputfinger.hpp ../../include/eepp/window/inputhelper.hpp ../../include/eepp/window/input.hpp -../../include/eepp/window/inputtextbuffer.hpp ../../include/eepp/window/joycodes.hpp ../../include/eepp/window/joystick.hpp ../../include/eepp/window/joystickmanager.hpp @@ -527,7 +525,6 @@ ../../src/eepp/graphics/batchrenderer.cpp ../../src/eepp/graphics/blendmode.cpp ../../src/eepp/graphics/circledrawable.cpp -../../src/eepp/graphics/console.cpp ../../src/eepp/graphics/convexshapedrawable.cpp ../../src/eepp/graphics/drawable.cpp ../../src/eepp/graphics/drawablegroup.cpp @@ -987,7 +984,6 @@ ../../src/eepp/window/input.cpp ../../src/eepp/window/inputfinger.cpp ../../src/eepp/window/inputhelper.cpp -../../src/eepp/window/inputtextbuffer.cpp ../../src/eepp/window/joystick.cpp ../../src/eepp/window/joystickmanager.cpp ../../src/eepp/window/keycodes.cpp diff --git a/src/eepp/graphics/console.cpp b/src/eepp/graphics/console.cpp deleted file mode 100755 index c9b0d8099..000000000 --- a/src/eepp/graphics/console.cpp +++ /dev/null @@ -1,975 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -using namespace EE::Window; - -namespace EE { namespace Graphics { - -Console::Console( EE::Window::Window* window ) : - mWindow( window ), mTBuf( InputTextBuffer::New() ) { - mFontStyleConfig.FontColor = Color( 0xCFCFCFFF ); - - if ( NULL == mWindow ) - mWindow = Engine::instance()->getCurrentWindow(); -} - -Console::Console( Font* font, const bool& makeDefaultCommands, const bool& attachToLog, - const unsigned int& maxLogLines, const Uint32& textureId, - EE::Window::Window* window ) : - mWindow( window ), mTBuf( InputTextBuffer::New() ) { - mFontStyleConfig.FontColor = Color( 0xCFCFCFFF ); - - if ( NULL == mWindow ) - mWindow = Engine::instance()->getCurrentWindow(); - - create( font, makeDefaultCommands, attachToLog, maxLogLines, textureId ); -} - -Console::~Console() { - if ( mMyCallback && NULL != Engine::existsSingleton() && - Engine::instance()->existsWindow( mWindow ) ) { - mWindow->getInput()->popCallback( mMyCallback ); - mWindow->popResizeCallback( mVidCb ); - } - - eeSAFE_DELETE( mTBuf ); - - if ( Log::existsSingleton() ) - Log::instance()->removeLogReader( this ); -} - -void Console::setConsoleMinimizedHeight( const EE::Float& MinHeight ) { - mHeightMin = eemax( 0.f, eemin( MinHeight, 1.f ) ); - - if ( mVisible && !mExpand ) - mCurHeight = eefloor( mHeightMin * mWindow->getHeight() ); -} - -const Float& Console::getConsoleMinimizedHeight() const { - return mHeightMin; -} - -void Console::setBackgroundTextureId( const Uint32& TexId ) { - mTexId = TexId; -} - -Uint32 Console::getBackgroundTextureId() const { - return mTexId; -} - -void Console::setBackgroundColor( const Color& BackColor ) { - mConColor = BackColor; - mMaxAlpha = mConColor.a; -} - -void Console::setCharacterSize( const EE::Uint32& characterSize ) { - mFontStyleConfig.CharacterSize = characterSize; - mFontSize = (Float)( mFontStyleConfig.Font->getFontHeight( - PixelDensity::dpToPxI( mFontStyleConfig.CharacterSize ) ) ); -} - -const Color& Console::getBackgroundColor() const { - return mConColor; -} - -void Console::setBackgroundLineColor( const Color& BackColor ) { - mConLineColor = BackColor; -} - -const Color& Console::getBackgroundLineColor() const { - return mConLineColor; -} - -void Console::setFontColor( const Color& FntColor ) { - mFontStyleConfig.FontColor = FntColor; -} - -const Color& Console::getFontColor() const { - return mFontStyleConfig.FontColor; -} - -void Console::setFontLineColor( const Color& FntColor ) { - mFontLineColor = FntColor; -} - -const Color& Console::getFontLineColor() const { - return mFontLineColor; -} - -void Console::create( Font* Font, const bool& makeDefaultCommands, const bool& attachToLog, - const unsigned int& maxLogLines, const Uint32& textureId ) { - if ( NULL == mWindow ) - mWindow = Engine::instance()->getCurrentWindow(); - - mFontStyleConfig.Font = Font; - mFontSize = (Float)( mFontStyleConfig.Font->getFontHeight( - PixelDensity::dpToPxI( mFontStyleConfig.CharacterSize ) ) ); - - if ( textureId > 0 ) - mTexId = textureId; - - mMaxLogLines = maxLogLines; - mMaxAlpha = (Float)mConColor.a; - - mEnabled = true; - - if ( makeDefaultCommands ) - createDefaultCommands(); - - mSize.x = (Float)mWindow->getWidth(); - mSize.y = (Float)mWindow->getHeight(); - - mTextCache.resize( maxLinesOnScreen() ); - - if ( NULL != Engine::existsSingleton() && Engine::instance()->existsWindow( mWindow ) ) { - mMyCallback = - mWindow->getInput()->pushCallback( cb::Make1( this, &Console::privInputCallback ) ); - mVidCb = mWindow->pushResizeCallback( cb::Make1( this, &Console::privVideoResize ) ); - } - - mTBuf->setReturnCallback( cb::Make0( this, &Console::processLine ) ); - mTBuf->start(); - mTBuf->isNewLineEnabled( false ); - mTBuf->setActive( false ); - ignoreCharOnPrompt( KEY_TAB ); - - mCon.ConModif = 0; - - cmdGetLog(); - - if ( attachToLog ) - Log::instance()->addLogReader( this ); -} - -void Console::addCommand( const String& Command, ConsoleCallback CB ) { - if ( !( mCallbacks.count( Command ) > 0 ) ) - mCallbacks[Command] = CB; -} - -void Console::draw( const Time& elapsedTime ) { - Lock l( mMutex ); - if ( mEnabled && NULL != mFontStyleConfig.Font ) { - fade( elapsedTime == Time::Zero ? mWindow->getElapsed() : elapsedTime ); - - if ( mY > 0.0f ) { - if ( mTexId == 0 ) { - mPri.setColor( - Color( mConColor.r, mConColor.g, mConColor.b, static_cast( mA ) ) ); - mPri.drawRectangle( Rectf( Vector2f( 0.0f, 0.0f ), Sizef( mSize.x, mY ) ) ); - } else { - Color C( mConColor.r, mConColor.g, mConColor.b, static_cast( mA ) ); - - Texture* Tex = TextureFactory::instance()->getTexture( mTexId ); - - if ( NULL != Tex ) - Tex->drawEx( 0.0f, 0.0f, mSize.x, mY, 0.0f, Vector2f::One, C, C, C, C ); - } - mPri.setColor( Color( mConLineColor.r, mConLineColor.g, mConLineColor.b, - static_cast( mA ) ) ); - mPri.drawRectangle( - Rectf( Vector2f( 0.0f, mY ), Sizef( mSize.x, PixelDensity::dpToPx( 2.0f ) ) ) ); - - Int32 linesInScreen = this->linesOnScreen(); - - if ( static_cast( mCmdLog.size() ) > linesInScreen ) - mEx = (Uint32)( mCmdLog.size() - linesInScreen ); - else - mEx = 0; - mTempY = -mCurHeight; - - Uint16 Pos = 0; - Float CurY; - - mCon.ConMin = mEx; - mCon.ConMax = (int)mCmdLog.size() - 1; - - for ( int i = mCon.ConMax - mCon.ConModif; i >= mCon.ConMin - mCon.ConModif; i-- ) { - if ( i < static_cast( mCmdLog.size() ) && i >= 0 ) { - CurY = mTempY + mY + mCurHeight - Pos * mFontSize - mFontSize * 2; - - Text& text = mTextCache[Pos]; - - text.setFont( mFontStyleConfig.Font ); - text.setFontSize( mFontStyleConfig.CharacterSize ); - text.setStyle( mFontStyleConfig.Style ); - text.setOutlineThickness( mFontStyleConfig.OutlineThickness ); - text.setOutlineColor( mFontStyleConfig.OutlineColor ); - text.setFillColor( - Color( mFontStyleConfig.FontColor.r, mFontStyleConfig.FontColor.g, - mFontStyleConfig.FontColor.b, static_cast( mA ) ) ); - text.setString( mCmdLog[i] ); - text.draw( mFontSize, CurY ); - - Pos++; - } - } - - CurY = mTempY + mY + mCurHeight - mFontSize - 1; - - Text& text = mTextCache[mTextCache.size() - 1]; - text.setFont( mFontStyleConfig.Font ); - text.setFontSize( mFontStyleConfig.CharacterSize ); - text.setStyle( mFontStyleConfig.Style ); - text.setOutlineThickness( mFontStyleConfig.OutlineThickness ); - text.setOutlineColor( mFontStyleConfig.OutlineColor ); - text.setFillColor( Color( mFontLineColor.r, mFontLineColor.g, mFontLineColor.b, - static_cast( mA ) ) ); - text.setString( "> " + mTBuf->getBuffer() ); - text.draw( mFontSize, CurY ); - - Text& text2 = mTextCache[mTextCache.size() - 2]; - text2.setFont( mFontStyleConfig.Font ); - text2.setFontSize( mFontStyleConfig.CharacterSize ); - text2.setStyle( mFontStyleConfig.Style ); - text2.setOutlineThickness( mFontStyleConfig.OutlineThickness ); - text2.setOutlineColor( mFontStyleConfig.OutlineColor ); - text2.setFillColor( Color( mFontLineColor.r, mFontLineColor.g, mFontLineColor.b, - static_cast( mCurAlpha ) ) ); - - if ( (unsigned int)mTBuf->getCursorPosition() == mTBuf->getBuffer().size() ) { - Uint32 width = text.getTextWidth(); - text2.setString( "_" ); - text2.draw( mFontSize + width, CurY ); - } else { - text2.setString( "> " + - mTBuf->getBuffer().substr( 0, mTBuf->getCursorPosition() ) ); - Uint32 width = mFontSize + text2.getTextWidth(); - text2.setString( "_" ); - text2.draw( width, CurY ); - } - } - } - - if ( mShowFps && NULL != mFontStyleConfig.Font ) { - Text& text = mTextCache[mTextCache.size() - 3]; - Color OldColor1( text.getColor() ); - text.setStyleConfig( mFontStyleConfig ); - text.setFillColor( Color::White ); - text.setString( "FPS: " + String::toString( mWindow->getFPS() ) ); - text.draw( mWindow->getWidth() - text.getTextWidth() - 15, 6 ); - text.setFillColor( OldColor1 ); - } -} - -void Console::setLineHeight( const Float& LineHeight ) { - mFontSize = LineHeight; -} - -void Console::fadeIn() { - if ( !mFading ) { - mFading = true; - mFadeIn = true; - mVisible = true; - mY = 0.0f; - mTBuf->setActive( true ); - } -} - -void Console::fadeOut() { - if ( !mFading ) { - mFading = true; - mFadeOut = true; - mVisible = false; - mTBuf->setActive( false ); - } -} - -bool Console::isActive() const { - return mVisible; -} - -void Console::setExpanded( const bool& Exp ) { - mExpand = Exp; -} - -bool Console::isExpanded() const { - return mExpand; -} - -void Console::setFadeSpeed( const Time& fadespeed ) { - mFadeSpeed = fadespeed; -} - -const Time& Console::getFadeSpeed() const { - return mFadeSpeed; -} - -static std::vector splitCommandParams( String str ) { - std::vector params = String::split( str, ' ' ); - std::vector rparams; - String tstr; - - for ( size_t i = 0; i < params.size(); i++ ) { - String tparam = params[i]; - - if ( !tparam.empty() ) { - if ( '"' == tparam[0] ) { - tstr += tparam; - } else if ( '"' == tparam[tparam.size() - 1] ) { - tstr += " " + tparam; - - rparams.push_back( String::trim( tstr, '"' ) ); - - tstr = ""; - } else if ( !tstr.empty() ) { - tstr += " " + tparam; - } else { - rparams.push_back( tparam ); - } - } - } - - if ( !tstr.empty() ) { - rparams.push_back( String::trim( tstr, '"' ) ); - } - - return rparams; -} - -void Console::processLine() { - String str = mTBuf->getBuffer(); - std::vector params = splitCommandParams( str ); - - mLastCommands.push_back( str ); - mLastLogPos = (int)mLastCommands.size(); - - if ( mLastCommands.size() > 20 ) - mLastCommands.pop_front(); - - if ( str.size() > 0 ) { - privPushText( "> " + str ); - - if ( mCallbacks.find( params[0] ) != mCallbacks.end() ) { - mCallbacks[params[0]]( params ); - } else { - privPushText( "Unknown Command: '" + params[0] + "'" ); - } - } - mTBuf->clear(); -} - -void Console::privPushText( const String& str ) { - Lock l( mMutex ); - mCmdLog.push_back( str ); - - if ( mCmdLog.size() >= mMaxLogLines ) - mCmdLog.pop_front(); -} - -void Console::pushText( const String& str ) { - if ( std::string::npos != str.find_first_of( '\n' ) ) { - std::vector Strings = String::split( String( str ) ); - - for ( Uint32 i = 0; i < Strings.size(); i++ ) { - privPushText( Strings[i] ); - } - } else { - privPushText( str ); - } -} - -void Console::pushText( const char* format, ... ) { - int n, size = 256; - std::string tstr( size, '\0' ); - - va_list args; - - while ( 1 ) { - va_start( args, format ); - - n = vsnprintf( &tstr[0], size, format, args ); - - if ( n > -1 && n < size ) { - tstr.resize( n ); - - pushText( tstr ); - - va_end( args ); - - return; - } - - if ( n > -1 ) // glibc 2.1 - size = n + 1; // precisely what is needed - else // glibc 2.0 - size *= 2; // twice the old size - - tstr.resize( size ); - } -} - -void Console::toggle() { - if ( mVisible ) - fadeOut(); - else - fadeIn(); -} - -void Console::fade( const Time& elapsedTime ) { - if ( mCurSide ) { - mCurAlpha -= 255.f * elapsedTime.asMilliseconds() / mFadeSpeed.asMilliseconds(); - if ( mCurAlpha <= 0.0f ) { - mCurAlpha = 0.0f; - mCurSide = !mCurSide; - } - } else { - mCurAlpha += 255.f * elapsedTime.asMilliseconds() / mFadeSpeed.asMilliseconds(); - if ( mCurAlpha >= 255.f ) { - mCurAlpha = 255.f; - mCurSide = !mCurSide; - } - } - - if ( mExpand ) - mCurHeight = mSize.y; - else - mCurHeight = eefloor( mHeightMin * mSize.y ); - - if ( mFadeIn ) { - mFadeOut = false; - mY += mCurHeight * elapsedTime.asMilliseconds() / mFadeSpeed.asMilliseconds(); - - mA = ( mY * mMaxAlpha / mCurHeight ); - if ( mY > mCurHeight ) { - mY = mCurHeight; - mFadeIn = false; - mFading = false; - } - } - - if ( mFadeOut ) { - mFadeIn = false; - mY -= mCurHeight * elapsedTime.asMilliseconds() / mFadeSpeed.asMilliseconds(); - - mA = ( mY * mMaxAlpha / mCurHeight ); - if ( mY <= 0.0f ) { - mY = 0.0f; - mFadeOut = false; - mFading = false; - } - } - - if ( mA > 255.0f ) - mA = 255.0f; - if ( mA < 0.0f ) - mA = 0.0f; -} - -String Console::getLastCommonSubStr( std::list& cmds ) { - String lastCommon( mTBuf->getBuffer() ); - String strTry( lastCommon ); - - std::list::iterator ite; - - bool found = false; - - do { - found = false; - - bool allEqual = true; - - String strBeg( ( *cmds.begin() ) ); - - if ( strTry.size() + 1 <= strBeg.size() ) { - strTry = String( strBeg.substr( 0, strTry.size() + 1 ) ); - - for ( ite = ++cmds.begin(); ite != cmds.end(); ++ite ) { - String& strCur = ( *ite ); - - if ( !( strTry.size() <= strCur.size() && - strTry == strCur.substr( 0, strTry.size() ) ) ) { - allEqual = false; - } - } - - if ( allEqual ) { - lastCommon = strTry; - - found = true; - } - } - } while ( found ); - - return lastCommon; -} - -void Console::printCommandsStartingWith( const String& start ) { - std::list cmds; - std::map::iterator it; - - for ( it = mCallbacks.begin(); it != mCallbacks.end(); ++it ) { - if ( String::startsWith( it->first, start ) ) { - cmds.push_back( it->first ); - } - } - - if ( cmds.size() > 1 ) { - privPushText( "> " + mTBuf->getBuffer() ); - - std::list::iterator ite; - - for ( ite = cmds.begin(); ite != cmds.end(); ++ite ) - privPushText( ( *ite ) ); - - String newStr( getLastCommonSubStr( cmds ) ); - - if ( newStr != mTBuf->getBuffer() ) { - mTBuf->setBuffer( newStr ); - mTBuf->cursorToEnd(); - } - } else if ( cmds.size() ) { - mTBuf->setBuffer( cmds.front() ); - mTBuf->cursorToEnd(); - } -} - -void Console::privVideoResize( EE::Window::Window* ) { - mSize.x = (Float)mWindow->getWidth(); - mSize.y = (Float)mWindow->getHeight(); - mTextCache.resize( maxLinesOnScreen() ); - - if ( mVisible ) { - if ( mExpand ) - mCurHeight = mSize.y; - else - mCurHeight = eefloor( mHeightMin * mSize.y ); - - mY = mCurHeight; - } -} - -void Console::getFilesFrom( std::string txt, const Uint32& curPos ) { - static char OSSlash = FileSystem::getOSSlash().at( 0 ); - size_t pos; - - if ( std::string::npos != ( pos = txt.find_last_of( OSSlash ) ) && pos <= curPos ) { - size_t fpos = txt.find_first_of( OSSlash ); - - std::string dir( txt.substr( fpos, pos - fpos + 1 ) ); - std::string file( txt.substr( pos + 1 ) ); - - if ( FileSystem::isDirectory( dir ) ) { - size_t count = 0, lasti = 0; - std::vector files = FileSystem::filesGetInPath( dir, true, true ); - String res; - bool again = false; - - do { - std::vector foundFiles; - res = ""; - count = 0; - again = false; - - for ( size_t i = 0; i < files.size(); i++ ) { - if ( !file.size() || String::startsWith( files[i], file ) ) { - res += "\t" + files[i] + "\n"; - count++; - lasti = i; - foundFiles.push_back( files[i] ); - } - } - - if ( count > 1 ) { - bool allBigger = true; - bool allStartsWith = true; - - do { - allBigger = true; - - for ( size_t i = 0; i < foundFiles.size(); i++ ) { - if ( foundFiles[i].size() < file.size() + 1 ) { - allBigger = false; - break; - } - } - - if ( allBigger ) { - std::string tfile = foundFiles[0].substr( 0, file.size() + 1 ); - allStartsWith = true; - - for ( size_t i = 0; i < foundFiles.size(); i++ ) { - if ( !String::startsWith( foundFiles[i], tfile ) ) { - allStartsWith = false; - break; - } - } - - if ( allStartsWith ) { - file = tfile; - again = true; - } - } - } while ( allBigger && allStartsWith ); - } - } while ( again ); - - if ( count == 1 ) { - std::string slash = ""; - - if ( FileSystem::isDirectory( dir + files[lasti] ) ) { - slash = FileSystem::getOSSlash(); - } - - mTBuf->setBuffer( mTBuf->getBuffer().substr( 0, pos + 1 ) + files[lasti] + slash ); - mTBuf->cursorToEnd(); - } else if ( count > 1 ) { - privPushText( "Directory file list:" ); - pushText( res ); - - mTBuf->setBuffer( mTBuf->getBuffer().substr( 0, pos + 1 ) + file ); - mTBuf->cursorToEnd(); - } - } - } -} - -Int32 Console::linesOnScreen() { - return static_cast( ( mCurHeight / mFontSize ) - 1 ); -} - -Int32 Console::maxLinesOnScreen() { - return static_cast( ( mSize.y / mFontSize ) + 3 ); -} - -void Console::privInputCallback( InputEvent* Event ) { - Uint8 etype = Event->Type; - - if ( mVisible ) { - Uint32 KeyCode = (Uint32)Event->key.keysym.sym; - Uint32 KeyMod = (Uint32)Event->key.keysym.mod; - Uint32 Button = Event->button.button; - - if ( InputEvent::KeyDown == etype ) { - if ( ( KeyCode == KEY_TAB ) && - (unsigned int)mTBuf->getCursorPosition() == mTBuf->getBuffer().size() ) { - printCommandsStartingWith( mTBuf->getBuffer() ); - getFilesFrom( mTBuf->getBuffer().toUtf8(), mTBuf->getCursorPosition() ); - } - - if ( KeyMod & KEYMOD_SHIFT ) { - if ( KeyCode == KEY_UP ) { - if ( mCon.ConMin - mCon.ConModif > 0 ) - mCon.ConModif++; - } - - if ( KeyCode == KEY_DOWN ) { - if ( mCon.ConModif > 0 ) - mCon.ConModif--; - } - - if ( KeyCode == KEY_HOME ) { - size_t size; - { - Lock l( mMutex ); - size = mCmdLog.size(); - } - if ( static_cast( size ) > linesOnScreen() ) - mCon.ConModif = mCon.ConMin; - } - - if ( KeyCode == KEY_END ) { - mCon.ConModif = 0; - } - - if ( KeyCode == KEY_PAGEUP ) { - if ( mCon.ConMin - mCon.ConModif - linesOnScreen() / 2 > 0 ) - mCon.ConModif += linesOnScreen() / 2; - else - mCon.ConModif = mCon.ConMin; - } - - if ( KeyCode == KEY_PAGEDOWN ) { - if ( mCon.ConModif - linesOnScreen() / 2 > 0 ) - mCon.ConModif -= linesOnScreen() / 2; - else - mCon.ConModif = 0; - } - } else { - if ( mLastCommands.size() > 0 ) { - if ( KeyCode == KEY_UP && mLastLogPos > 0 ) { - mLastLogPos--; - } - - if ( KeyCode == KEY_DOWN && - mLastLogPos < static_cast( mLastCommands.size() ) ) { - mLastLogPos++; - } - - if ( KeyCode == KEY_UP || KeyCode == KEY_DOWN ) { - if ( mLastLogPos == static_cast( mLastCommands.size() ) ) { - mTBuf->setBuffer( "" ); - } else { - mTBuf->setBuffer( mLastCommands[mLastLogPos] ); - mTBuf->cursorToEnd(); - } - } - } - } - } else if ( InputEvent::MouseButtonUp == etype ) { - if ( Button == EE_BUTTON_WHEELUP ) { - if ( mCon.ConMin - mCon.ConModif - 6 > 0 ) { - mCon.ConModif += 6; - } else { - mCon.ConModif = mCon.ConMin; - } - } - - if ( Button == EE_BUTTON_WHEELDOWN ) { - if ( mCon.ConModif - 6 > 0 ) { - mCon.ConModif -= 6; - } else { - mCon.ConModif = 0; - } - } - } - } -} - -void Console::createDefaultCommands() { - addCommand( "clear", [&]( const auto& ) { cmdClear(); } ); - addCommand( "quit", [&]( const auto& ) { mWindow->close(); } ); - addCommand( "maximize", [&]( const auto& ) { cmdMaximize(); } ); - addCommand( "minimize", [&]( const auto& ) { cmdMinimize(); } ); - addCommand( "cmdlist", [&]( const auto& ) { cmdCmdList(); } ); - addCommand( "help", [&]( const auto& ) { cmdCmdList(); } ); - addCommand( "showcursor", [&]( const auto& params ) { cmdShowCursor( params ); } ); - addCommand( "setfpslimit", [&]( const auto& params ) { cmdFrameLimit( params ); } ); - addCommand( "getlog", [&]( const auto& ) { cmdGetLog(); } ); - addCommand( "setgamma", [&]( const auto& params ) { cmdSetGamma( params ); } ); - addCommand( "setvolume", [&]( const auto& params ) { cmdSetVolume( params ); } ); - addCommand( "getgpuextensions", [&]( const auto& ) { cmdGetGpuExtensions(); } ); - addCommand( "dir", [&]( const auto& params ) { cmdDir( params ); } ); - addCommand( "ls", [&]( const auto& params ) { cmdDir( params ); } ); - addCommand( "showfps", [&]( const auto& params ) { cmdShowFps( params ); } ); - addCommand( "gettexturememory", [&]( const auto& ) { cmdGetTextureMemory(); } ); - addCommand( "hide", [&]( const auto& ) { fadeOut(); } ); -} - -void Console::cmdClear() { - Uint16 CutLines; - if ( mExpand ) { - CutLines = (Uint16)( mSize.y / mFontSize ); - } else { - CutLines = (Uint16)( ( mHeightMin * mSize.y ) / mFontSize ); - } - - for ( Uint16 i = 0; i < CutLines; i++ ) - privPushText( "" ); -} - -void Console::cmdMaximize() { - mExpand = true; - mY = mSize.y; - privPushText( "Console Maximized" ); -} - -void Console::cmdMinimize() { - mExpand = false; - mY = eefloor( mHeightMin * mSize.y ); - privPushText( "Console Minimized" ); -} - -void Console::cmdGetTextureMemory() { - privPushText( "Total texture memory used: " + - FileSystem::sizeToString( TextureFactory::instance()->getTextureMemorySize() ) ); -} - -void Console::cmdCmdList() { - std::map::iterator itr; - for ( itr = mCallbacks.begin(); itr != mCallbacks.end(); ++itr ) { - privPushText( "\t" + itr->first ); - } -} - -void Console::cmdShowCursor( const std::vector& params ) { - if ( params.size() >= 2 ) { - Int32 tInt = 0; - - bool Res = String::fromString( tInt, params[1] ); - - if ( Res && ( tInt == 0 || tInt == 1 ) ) { - mWindow->getCursorManager()->setVisible( 0 != tInt ); - } else - privPushText( "Valid parameters are 0 or 1." ); - } else { - privPushText( "No parameters. Valid parameters are 0 ( hide ) or 1 ( show )." ); - } -} - -void Console::cmdFrameLimit( const std::vector& params ) { - if ( params.size() >= 2 ) { - Int32 tInt = 0; - - bool Res = String::fromString( tInt, params[1] ); - - if ( Res && ( tInt >= 0 && tInt <= 10000 ) ) { - mWindow->setFrameRateLimit( tInt ); - return; - } - } - - privPushText( "Valid parameters are between 0 and 10000 (0 = no limit)." ); -} - -void Console::cmdGetLog() { - std::vector tvec = - String::split( String( String::toString( Log::instance()->getBuffer() ) ) ); - if ( tvec.size() > 0 ) { - for ( unsigned int i = 0; i < tvec.size(); i++ ) - privPushText( tvec[i] ); - } -} - -void Console::cmdGetGpuExtensions() { - std::vector tvec = String::split( String( GLi->getExtensions() ), ' ' ); - if ( tvec.size() > 0 ) { - for ( unsigned int i = 0; i < tvec.size(); i++ ) - privPushText( tvec[i] ); - } -} - -void Console::cmdSetGamma( const std::vector& params ) { - if ( params.size() >= 2 ) { - Float tFloat = 0.f; - bool Res = String::fromString( tFloat, params[1] ); - - if ( Res && ( tFloat > 0.1f && tFloat <= 10.0f ) ) { - mWindow->setGamma( tFloat, tFloat, tFloat ); - return; - } - } - - privPushText( "Valid parameters are between 0.1 and 10." ); -} - -void Console::cmdSetVolume( const std::vector& params ) { - if ( params.size() >= 2 ) { - Float tFloat = 0.f; - - bool Res = String::fromString( tFloat, params[1] ); - - if ( Res && ( tFloat >= 0.0f && tFloat <= 100.0f ) ) { - EE::Audio::Listener::setGlobalVolume( tFloat ); - return; - } - } - - privPushText( "Valid parameters are between 0 and 100." ); -} - -void Console::cmdDir( const std::vector& params ) { - if ( params.size() >= 2 ) { - String Slash( FileSystem::getOSSlash() ); - String myPath = params[1]; - String myOrder; - - if ( params.size() > 2 ) { - myOrder = params[2]; - } - - if ( FileSystem::isDirectory( myPath ) ) { - unsigned int i; - - std::vector mFiles = FileSystem::filesGetInPath( myPath ); - std::sort( mFiles.begin(), mFiles.end() ); - - privPushText( "Directory: " + myPath ); - - if ( myOrder == "ff" ) { - std::vector mFolders; - std::vector mFile; - - for ( i = 0; i < mFiles.size(); i++ ) { - if ( FileSystem::isDirectory( myPath + Slash + mFiles[i] ) ) { - mFolders.push_back( mFiles[i] ); - } else { - mFile.push_back( mFiles[i] ); - } - } - - if ( mFolders.size() ) - privPushText( "Folders: " ); - - for ( i = 0; i < mFolders.size(); i++ ) - privPushText( " " + mFolders[i] ); - - if ( mFolders.size() ) - privPushText( "Files: " ); - - for ( i = 0; i < mFile.size(); i++ ) - privPushText( " " + mFile[i] ); - - } else { - for ( i = 0; i < mFiles.size(); i++ ) - privPushText( " " + mFiles[i] ); - } - } else { - if ( myPath == "help" ) - privPushText( - "You can use a third parameter to show folders first, the parameter is ff." ); - else - privPushText( "Path \"" + myPath + "\" is not a directory." ); - } - } else { - privPushText( "Expected a path to list. Example of usage: ls /home" ); - } -} - -void Console::cmdShowFps( const std::vector& params ) { - if ( params.size() >= 2 ) { - Int32 tInt = 0; - - bool Res = String::fromString( tInt, params[1] ); - - if ( Res && ( tInt == 0 || tInt == 1 ) ) { - mShowFps = 0 != tInt; - return; - } - } - - privPushText( "Valid parameters are 0 ( hide ) or 1 ( show )." ); -} - -void Console::ignoreCharOnPrompt( const Uint32& ch ) { - mTBuf->pushIgnoredChar( ch ); -} - -const bool& Console::isShowingFps() const { - return mShowFps; -} - -void Console::showFps( const bool& Show ) { - mShowFps = Show; -} - -FontStyleConfig Console::getFontStyleConfig() const { - return mFontStyleConfig; -} - -void Console::setFontStyleConfig( const FontStyleConfig& fontStyleConfig ) { - mFontStyleConfig = fontStyleConfig; -} - -const bool& Console::isFading() const { - return mFading; -} - -void Console::writeLog( const std::string& Text ) { - std::vector Strings = String::split( String( Text ) ); - - for ( Uint32 i = 0; i < Strings.size(); i++ ) { - privPushText( Strings[i] ); - } -} - -}} // namespace EE::Graphics diff --git a/src/eepp/ui/models/modelindex.cpp b/src/eepp/ui/models/modelindex.cpp index 27a809483..8a3db6c3c 100644 --- a/src/eepp/ui/models/modelindex.cpp +++ b/src/eepp/ui/models/modelindex.cpp @@ -1,5 +1,6 @@ #include #include + namespace EE { namespace UI { namespace Models { ModelIndex ModelIndex::sibling( int row, int column ) const { @@ -22,4 +23,8 @@ Variant ModelIndex::data( ModelRole role ) const { return model()->data( *this, role ); } +ModelIndex ModelIndex::parent() const { + return mModel ? mModel->parentIndex( *this ) : ModelIndex(); +} + }}} // namespace EE::UI::Models diff --git a/src/eepp/ui/uiconsole.cpp b/src/eepp/ui/uiconsole.cpp index 6dffface9..2c7fe0139 100644 --- a/src/eepp/ui/uiconsole.cpp +++ b/src/eepp/ui/uiconsole.cpp @@ -27,7 +27,7 @@ using namespace EE::Scene; namespace EE { namespace UI { UIConsole* UIConsole::New() { - return eeNew( UIConsole, ( nullptr, true, false, 8192 ) ); + return eeNew( UIConsole, ( nullptr, true, true, 8192 ) ); } UIConsole* UIConsole::NewOpt( Font* font, const bool& makeDefaultCommands, const bool& attachToLog, @@ -263,6 +263,26 @@ const Color& UIConsole::getFontSelectionBackColor() const { return mFontStyleConfig.getFontSelectionBackColor(); } +UIConsole* UIConsole::setFontShadowColor( const Color& color ) { + if ( color != mFontStyleConfig.getFontShadowColor() ) { + mFontStyleConfig.ShadowColor = color; + onFontStyleChanged(); + } + return this; +} + +const Color& UIConsole::getFontShadowColor() const { + return mFontStyleConfig.ShadowColor; +} + +UIConsole* UIConsole::setFontStyle( const Uint32& fontStyle ) { + if ( mFontStyleConfig.Style != fontStyle ) { + mFontStyleConfig.Style = fontStyle; + onFontStyleChanged(); + } + return this; +} + UIConsole* UIConsole::setFontOutlineThickness( const Float& outlineThickness ) { if ( mFontStyleConfig.OutlineThickness != outlineThickness ) { mFontStyleConfig.OutlineThickness = outlineThickness; diff --git a/src/eepp/window/inputtextbuffer.cpp b/src/eepp/window/inputtextbuffer.cpp deleted file mode 100644 index e0909e7d2..000000000 --- a/src/eepp/window/inputtextbuffer.cpp +++ /dev/null @@ -1,859 +0,0 @@ -#include -#include -#include - -namespace EE { namespace Window { - -// TODO: Deprecate this. It's horrendous. Use TextDocument instead. - -InputTextBuffer* InputTextBuffer::New( const bool& active, const bool& newLineEnabled, - const bool& freeEditing, EE::Window::Window* window, - const Uint32& maxLength ) { - return eeNew( InputTextBuffer, ( active, newLineEnabled, freeEditing, window, maxLength ) ); -} - -InputTextBuffer* InputTextBuffer::New( EE::Window::Window* window ) { - return eeNew( InputTextBuffer, ( window ) ); -} - -InputTextBuffer::InputTextBuffer( const bool& active, const bool& newLineEnabled, - const bool& freeEditing, EE::Window::Window* window, - const Uint32& maxLength ) : - mWindow( window ), - mFlags( 0 ), - mCallback( 0 ), - mPromptPos( 0 ), - mMaxLength( UINT32_MAX ), - mSelCurInit( -1 ), - mSelCurEnd( -1 ) { - if ( NULL == mWindow ) { - mWindow = Engine::instance()->getCurrentWindow(); - } - - this->setActive( active ); - - this->setFreeEditing( freeEditing ); - - this->isNewLineEnabled( newLineEnabled ); - - autoPrompt( true ); - - supportCopyPaste( true ); - - mMaxLength = maxLength; -} - -InputTextBuffer::InputTextBuffer( EE::Window::Window* window ) : - mWindow( window ), - mFlags( 0 ), - mCallback( 0 ), - mPromptPos( 0 ), - mMaxLength( UINT32_MAX ), - mSelCurInit( -1 ), - mSelCurEnd( -1 ) { - if ( NULL == mWindow ) { - mWindow = Engine::instance()->getCurrentWindow(); - } - - setActive( true ); - - setFreeEditing( true ); - - isNewLineEnabled( false ); - - autoPrompt( true ); - - setTextSelectionEnabled( false ); - - supportCopyPaste( true ); -} - -InputTextBuffer::~InputTextBuffer() { - if ( 0 != mCallback && Engine::existsSingleton() && - Engine::instance()->existsWindow( mWindow ) ) { - mWindow->getInput()->popCallback( mCallback ); - } - - mText.clear(); -} - -void InputTextBuffer::start() { - if ( NULL == mWindow ) { - mWindow = Engine::instance()->getCurrentWindow(); - } - - if ( Engine::instance()->existsWindow( mWindow ) ) { - mCallback = - mWindow->getInput()->pushCallback( cb::Make1( this, &InputTextBuffer::update ) ); - } -} - -void InputTextBuffer::promptToLeftFirstNoChar() { - if ( !mText.size() ) - return; - - if ( mPromptPos - 2 > 0 ) { - for ( Int32 i = mPromptPos - 2; i > 0; i-- ) { - if ( !String::isLetter( mText[i] ) && !String::isNumber( mText[i] ) && - '\n' != mText[i] ) { - setCursorPos( i + 1 ); - break; - } else if ( i - 1 == 0 ) { - setCursorPos( 0 ); - break; - } - } - } else { - setCursorPos( 0 ); - } - - resetSelection(); -} - -void InputTextBuffer::promptToRightFirstNoChar() { - Int32 s = static_cast( mText.size() ); - - if ( 0 == s ) - return; - - for ( Int32 i = mPromptPos; i < s; i++ ) { - if ( !String::isLetter( mText[i] ) && !String::isNumber( mText[i] ) && '\n' != mText[i] ) { - setCursorPos( i + 1 ); - break; - } else if ( i + 1 == s ) { - setCursorPos( s ); - } - } - - resetSelection(); -} - -void InputTextBuffer::resetSelection() { - if ( isTextSelectionEnabled() ) { - selCurInit( -1 ); - selCurEnd( -1 ); - onSelectionChange(); - } -} - -void InputTextBuffer::eraseToPrevNoChar() { - if ( !mText.size() || !mPromptPos ) - return; - - String::StringBaseType c; - - do { - if ( mPromptPos < (int)mText.size() ) { - mText.erase( mPromptPos - 1, 1 ); - setCursorPos( mPromptPos - 1 ); - } else { - mText.resize( mText.size() - 1 ); - setCursorPos( mText.size() ); - } - - if ( mPromptPos <= 0 ) { - setCursorPos( 0 ); - break; - } - - c = mText[mPromptPos - 1]; - } while ( String::isLetter( c ) || String::isNumber( c ) ); - - resetSelection(); - - setChangedSinceLastUpdate( true ); - onBufferChange(); -} - -void InputTextBuffer::eraseToNextNoChar() { - if ( !mText.size() ) - return; - - Int32 tPromptPos = mPromptPos; - Int32 c; - Int32 size = (Int32)mText.size(); - - do { - tPromptPos++; - - if ( tPromptPos < size ) { - c = mText[tPromptPos]; - } else { - break; - } - } while ( String::isLetter( c ) || String::isNumber( c ) ); - - if ( tPromptPos <= size ) { - String iniStr( mText.substr( 0, mPromptPos ) ); - String endStr( mText.substr( tPromptPos ) ); - - setBuffer( iniStr + endStr ); - - resetSelection(); - onBufferChange(); - } -} - -bool InputTextBuffer::isIgnoredChar( const String::StringBaseType& c ) { - if ( mIgnoredChars.size() ) { - for ( std::size_t i = 0; i < mIgnoredChars.size(); i++ ) { - if ( mIgnoredChars[i] == c ) - return true; - } - } - - return false; -} - -bool InputTextBuffer::validChar( const String::StringBaseType& c ) { - if ( canAdd() && String::isCharacter( c ) ) { - bool Ignored = false; - - if ( onlyNumbersAllowed() && !String::isNumber( c, dotsInNumbersAllowed() ) ) { - Ignored = true; - } - - if ( isIgnoredChar( c ) ) { - Ignored = true; - } - - if ( !Ignored ) { - return true; - } - } - - return false; -} - -void InputTextBuffer::tryAddChar( const String::StringBaseType& c ) { - if ( isFreeEditingEnabled() ) { - if ( validChar( c ) ) { - removeSelection(); - - if ( autoPrompt() ) { - mText += c; - setCursorPos( (int)mText.size() ); - } else { - String::insertChar( mText, mPromptPos, c ); - setCursorPos( mPromptPos + 1 ); - } - - setChangedSinceLastUpdate( true ); - onBufferChange(); - } - } else { - if ( canAdd() && String::isCharacter( c ) ) { - Input* Input = mWindow->getInput(); - - if ( !Input->isMetaPressed() && !Input->isAltPressed() && !Input->isControlPressed() ) { - if ( !( onlyNumbersAllowed() && !String::isNumber( c, dotsInNumbersAllowed() ) ) ) { - mText += c; - } - } - } - } -} - -void InputTextBuffer::removeSelection() { - if ( isTextSelectionEnabled() && -1 != mSelCurInit && -1 != mSelCurEnd ) { - Int32 size = (Int32)mText.size(); - - if ( mSelCurInit <= size && mSelCurInit <= size ) { - Int32 init = eemin( mSelCurInit, mSelCurEnd ); - Int32 end = eemax( mSelCurInit, mSelCurEnd ); - String iniStr( mText.substr( 0, init ) ); - String endStr( mText.substr( end ) ); - - setBuffer( iniStr + endStr ); - - setCursorPos( init ); - - resetSelection(); - onBufferChange(); - } else { - resetSelection(); - } - } -} - -void InputTextBuffer::update( InputEvent* Event ) { - if ( isActive() ) { - Input* Input = mWindow->getInput(); - - Uint32 keyChar = 0; - - if ( Event->Type == InputEvent::TextInput || Event->Type == InputEvent::KeyDown || - Event->Type == InputEvent::KeyUp ) { - keyChar = InputHelper::convertKeyCharacter( Event->key.keysym.sym, - Event->key.keysym.unicode ); - } - - if ( isFreeEditingEnabled() ) { - switch ( Event->Type ) { - case InputEvent::TextInput: { - tryAddChar( Event->text.text ); - break; - } - case InputEvent::KeyDown: { - if ( isTextSelectionEnabled() ) { - if ( mSelCurInit >= 0 && mSelCurInit != mSelCurEnd ) { - if ( ( Event->key.keysym.mod & KEYMOD_CTRL ) && - ( Event->key.keysym.sym == KEY_C || - Event->key.keysym.sym == KEY_X ) ) { - Int32 init = eemin( mSelCurInit, mSelCurEnd ); - Int32 end = eemax( mSelCurInit, mSelCurEnd ); - std::string clipStr( mText.substr( init, end - init ).toUtf8() ); - mWindow->getClipboard()->setText( clipStr ); - } else if ( Event->key.keysym.sym == KEY_UP || - Event->key.keysym.sym == KEY_DOWN || - Event->key.keysym.sym == KEY_LEFT || - Event->key.keysym.sym == KEY_RIGHT || - Event->key.keysym.sym == KEY_HOME || - Event->key.keysym.sym == KEY_END ) { - if ( !( Input->isShiftPressed() && - ( Event->key.keysym.sym == KEY_UP || - Event->key.keysym.sym == KEY_DOWN || - Event->key.keysym.sym == KEY_LEFT || - Event->key.keysym.sym == KEY_RIGHT || - Event->key.keysym.sym == KEY_HOME || - Event->key.keysym.sym == KEY_END ) ) ) { - resetSelection(); - } - } - - if ( ( ( ( Event->key.keysym.sym & KEYMOD_LCTRL ) && - ( Event->key.keysym.sym == KEY_X || - Event->key.keysym.sym == KEY_V ) ) || - Event->key.keysym.sym == KEY_DELETE ) || - keyChar == KEY_BACKSPACE ) { - removeSelection(); - } - } - - if ( ( Event->key.keysym.mod & KEYMOD_CTRL ) && - Event->key.keysym.sym == KEY_A ) { - selectAll(); - } - } - - if ( Input->isShiftPressed() || Input->isControlPressed() ) { - if ( !onlyNumbersAllowed() && - ( ( ( Event->key.keysym.mod & KEYMOD_SHIFT ) && - keyChar == KEY_INSERT ) || - ( ( Event->key.keysym.mod & KEYMOD_CTRL ) && - Event->key.keysym.sym == KEY_V ) ) ) { - String txt = mWindow->getClipboard()->getWideText(); - - if ( !setSupportNewLine() ) { - size_t pos = txt.find_first_of( '\n' ); - - if ( pos != std::string::npos ) - txt = txt.substr( 0, pos ); - } - - if ( txt.size() ) { - if ( mText.size() + txt.size() < mMaxLength ) { - if ( autoPrompt() ) { - mText += txt; - setCursorPos( (int)mText.size() ); - } else { - mText.insert( mPromptPos, txt ); - mPromptPos += txt.size(); - } - - autoPrompt( false ); - } - - setChangedSinceLastUpdate( true ); - onBufferChange(); - } - } - - if ( Input->isControlPressed() ) { - if ( keyChar == KEY_LEFT ) { - promptToLeftFirstNoChar(); - break; - } else if ( keyChar == KEY_RIGHT ) { - promptToRightFirstNoChar(); - break; - } else if ( keyChar == KEY_BACKSPACE ) { - eraseToPrevNoChar(); - break; - } else if ( keyChar == KEY_DELETE ) { - eraseToNextNoChar(); - break; - } - } - } - - if ( ( keyChar == KEY_BACKSPACE || keyChar == KEY_DELETE ) ) { - if ( mText.size() ) { - if ( mPromptPos < (int)mText.size() ) { - if ( keyChar == KEY_BACKSPACE ) { - if ( mPromptPos > 0 ) { - mText.erase( mPromptPos - 1, 1 ); - setCursorPos( mPromptPos - 1 ); - } - } else { - mText.erase( mPromptPos, 1 ); - } - } else if ( keyChar == KEY_BACKSPACE ) { - mText.resize( mText.size() - 1 ); - autoPrompt( true ); - } - - resetSelection(); - - setChangedSinceLastUpdate( true ); - onBufferChange(); - } - } else if ( ( keyChar == KEY_RETURN || keyChar == KEY_KP_ENTER ) ) { - if ( setSupportNewLine() && canAdd() ) { - String::insertChar( mText, mPromptPos, '\n' ); - - setCursorPos( mPromptPos + 1 ); - - resetSelection(); - - setChangedSinceLastUpdate( true ); - onBufferChange(); - } - - if ( mEnterCall ) - mEnterCall(); - - } else if ( keyChar == KEY_LEFT ) { - if ( ( mPromptPos - 1 ) >= 0 ) { - setCursorPos( mPromptPos - 1 ); - autoPrompt( false ); - shiftSelection( mPromptPos + 1 ); - } - } else if ( keyChar == KEY_RIGHT ) { - if ( ( mPromptPos + 1 ) < (int)mText.size() ) { - setCursorPos( mPromptPos + 1 ); - autoPrompt( false ); - shiftSelection( mPromptPos - 1 ); - } else if ( ( mPromptPos + 1 ) == (int)mText.size() ) { - autoPrompt( true ); - } - } else if ( keyChar == KEY_UP ) { - movePromptRowUp( false ); - } else if ( keyChar == KEY_DOWN ) { - movePromptRowDown( true ); - } else if ( keyChar == KEY_PAGEUP ) { - movePromptRowUp( true ); - } else if ( keyChar == KEY_PAGEDOWN ) { - movePromptRowDown( false ); - } else if ( keyChar == KEY_TAB ) { - tryAddChar( keyChar ); - } - - if ( setSupportNewLine() ) { - int lPromtpPos = mPromptPos; - - if ( keyChar == KEY_END ) { - for ( Uint32 i = mPromptPos; i < mText.size(); i++ ) { - if ( mText[i] == '\n' ) { - setCursorPos( i ); - autoPrompt( false ); - break; - } - - if ( i == ( mText.size() - 1 ) ) { - setCursorPos( mText.size() ); - autoPrompt( false ); - } - } - - shiftSelection( lPromtpPos ); - } - - if ( keyChar == KEY_HOME ) { - if ( 0 != mPromptPos ) { - for ( Int32 i = (Int32)mPromptPos - 1; i >= 0; i-- ) { - if ( mText[i] == '\n' ) { - setCursorPos( i + 1 ); - autoPrompt( false ); - break; - } - - if ( i == 0 ) { - setCursorPos( 0 ); - autoPrompt( false ); - } - } - } - - shiftSelection( lPromtpPos ); - } - } else { - int lPromtpPos = mPromptPos; - - if ( keyChar == KEY_END ) { - autoPrompt( true ); - - shiftSelection( lPromtpPos ); - } - - if ( keyChar == KEY_HOME ) { - setCursorPos( 0 ); - autoPrompt( false ); - - shiftSelection( lPromtpPos ); - } - } - - break; - } - } - } else { - if ( Event->Type == InputEvent::TextInput ) { - tryAddChar( Event->text.text ); - } else if ( Event->Type == InputEvent::KeyDown ) { - if ( keyChar == KEY_BACKSPACE && mText.size() > 0 ) { - mText.resize( mText.size() - 1 ); - } else if ( ( keyChar == KEY_RETURN || keyChar == KEY_KP_ENTER ) && - !Input->isMetaPressed() && !Input->isAltPressed() && - !Input->isControlPressed() ) { - if ( setSupportNewLine() && canAdd() ) - mText += '\n'; - - if ( mEnterCall ) - mEnterCall(); - } - - setChangedSinceLastUpdate( true ); - onBufferChange(); - } - } - } -} - -void InputTextBuffer::shiftSelection( const int& lastPromtpPos ) { - if ( !isTextSelectionEnabled() ) - return; - - Input* Input = mWindow->getInput(); - - if ( Input->isShiftPressed() && !Input->isControlPressed() ) { - if ( selCurInit() != getCursorPosition() ) { - selCurEnd( getCursorPosition() ); - onSelectionChange(); - } else { - if ( selCurInit() != getCursorPosition() ) { - selCurInit( getCursorPosition() ); - onSelectionChange(); - } else { - resetSelection(); - return; - } - } - - if ( -1 == selCurInit() ) { - selCurInit( lastPromtpPos ); - onSelectionChange(); - } - - if ( -1 == selCurEnd() ) { - selCurEnd( lastPromtpPos ); - onSelectionChange(); - } - } -} - -void InputTextBuffer::movePromptRowDown( const bool& breakit ) { - if ( isFreeEditingEnabled() && setSupportNewLine() ) { - int lPromtpPos = mPromptPos; - - Uint32 dNLPos = 0; - getCurPosLinePos( dNLPos ); - Uint32 dCharsTo = mPromptPos - dNLPos; - - Uint32 dLastLinePos = 0; - Uint32 dCharLineCount = 0; - - for ( Uint32 i = mPromptPos; i < mText.size(); i++ ) { - if ( mText[i] == '\n' ) { - if ( breakit ) { - if ( 0 == dLastLinePos ) { - dLastLinePos = i + 1; - - dCharLineCount = 0; - } else { - break; - } - } else { - dLastLinePos = i + 1; - - dCharLineCount = 0; - } - } else { - dCharLineCount++; - } - } - - if ( 0 != dLastLinePos ) { - if ( dCharLineCount < dCharsTo ) { - setCursorPos( dLastLinePos + dCharLineCount ); - } else { - setCursorPos( dLastLinePos + dCharsTo ); - } - - autoPrompt( false ); - } - - shiftSelection( lPromtpPos ); - } -} - -void InputTextBuffer::movePromptRowUp( const bool& breakit ) { - if ( isFreeEditingEnabled() && setSupportNewLine() ) { - int lPromtpPos = mPromptPos; - - Uint32 uNLPos = 0; - Uint32 uLineNum = getCurPosLinePos( uNLPos ); - Uint32 uCharsTo = mPromptPos - uNLPos; - - if ( uLineNum >= 1 ) { - Uint32 uLastLinePos = 0; - Uint32 uCharLineCount = 0; - uNLPos = ( uNLPos - 1 ); - - for ( Uint32 i = 0; i < uNLPos; i++ ) { - if ( mText[i] == '\n' ) { - if ( !breakit ) { - uLastLinePos = i + 1; - - uCharLineCount = 0; - } else { - break; - } - } else { - uCharLineCount++; - } - } - - if ( uCharLineCount < uCharsTo ) { - setCursorPos( uLastLinePos + uCharLineCount ); - } else { - setCursorPos( uLastLinePos + uCharsTo ); - } - - autoPrompt( false ); - } - - shiftSelection( lPromtpPos ); - } -} - -void InputTextBuffer::clear() { - mText.clear(); - autoPrompt( true ); -} - -void InputTextBuffer::setReturnCallback( EnterCallback EC ) { - mEnterCall = EC; -} - -void InputTextBuffer::setBuffer( const String& str ) { - if ( mText != str ) { - mText = str; - setChangedSinceLastUpdate( true ); - } -} - -int InputTextBuffer::getCursorPosition() const { - return mPromptPos; -} - -void InputTextBuffer::setCursorPosition( const Uint32& pos ) { - if ( isFreeEditingEnabled() ) { - if ( pos < mText.size() ) { - autoPrompt( false ); - } - - mPromptPos = pos; - } -} - -void InputTextBuffer::setCursorPos( const Uint32& pos ) { - if ( isFreeEditingEnabled() && mPromptPos != (Int32)pos ) { - setCursorPosition( pos ); - - onCursorPositionChange(); - } -} - -Uint32 InputTextBuffer::getCurPosLinePos( Uint32& LastNewLinePos ) { - if ( isFreeEditingEnabled() ) { - Uint32 nl = 0; - LastNewLinePos = 0; - for ( int i = 0; i < mPromptPos; i++ ) { - if ( mText[i] == '\n' ) { - nl++; - LastNewLinePos = i + 1; - } - } - return nl; - } - return 0; -} - -void InputTextBuffer::pushIgnoredChar( const Uint32& ch ) { - mIgnoredChars.push_back( ch ); -} - -bool InputTextBuffer::canAdd() { - return mText.size() < mMaxLength; -} - -void InputTextBuffer::setMaxLength( const Uint32& Max ) { - mMaxLength = Max; - - if ( mText.size() > mMaxLength ) - mText.resize( mMaxLength ); -} - -const Uint32& InputTextBuffer::getMaxLength() const { - return mMaxLength; -} - -String InputTextBuffer::getBuffer() const { - return mText; -} - -bool InputTextBuffer::changedSinceLastUpdate() { - return 0 != ( mFlags & ( 1 << CHANGE_SINCE_LAST_UPDATE ) ); -} - -void InputTextBuffer::setChangedSinceLastUpdate( const bool& Changed ) { - BitOp::writeBitKey( &mFlags, CHANGE_SINCE_LAST_UPDATE, Changed == true ); -} - -void InputTextBuffer::autoPrompt( const bool& set ) { - BitOp::writeBitKey( &mFlags, PROMPT_AUTO_POS, set == true ); - - if ( set ) { - mPromptPos = (int)mText.size(); - - onCursorPositionChange(); - } -} - -bool InputTextBuffer::autoPrompt() { - return 0 != ( mFlags & ( 1 << PROMPT_AUTO_POS ) ); -} - -bool InputTextBuffer::isActive() const { - return 0 != ( mFlags & ( 1 << ACTIVE ) ); -} - -void InputTextBuffer::setActive( const bool& active ) { - BitOp::writeBitKey( &mFlags, ACTIVE, active == true ); -} - -bool InputTextBuffer::setSupportNewLine() { - return 0 != ( mFlags & ( 1 << SUPPORT_NEW_LINE ) ); -} - -void InputTextBuffer::isNewLineEnabled( const bool& enabled ) { - BitOp::writeBitKey( &mFlags, SUPPORT_NEW_LINE, enabled == true ); -} - -void InputTextBuffer::setAllowOnlyNumbers( const bool& onlynums, const bool& allowdots ) { - BitOp::writeBitKey( &mFlags, ALLOW_ONLY_NUMBERS, onlynums == true ); - BitOp::writeBitKey( &mFlags, ALLOW_DOT_IN_NUMBERS, allowdots == true ); -} - -bool InputTextBuffer::onlyNumbersAllowed() { - return 0 != ( mFlags & ( 1 << ALLOW_ONLY_NUMBERS ) ); -} - -bool InputTextBuffer::dotsInNumbersAllowed() { - return 0 != ( mFlags & ( 1 << ALLOW_DOT_IN_NUMBERS ) ); -} - -bool InputTextBuffer::isFreeEditingEnabled() const { - return 0 != ( mFlags & ( 1 << FREE_EDITING ) ); -} - -void InputTextBuffer::setFreeEditing( const bool& enabled ) { - BitOp::writeBitKey( &mFlags, FREE_EDITING, enabled == true ); -} - -void InputTextBuffer::supportCopyPaste( const bool& support ) { - BitOp::writeBitKey( &mFlags, SUPPORT_COPY_PASTE, support == true ); -} - -bool InputTextBuffer::supportCopyPaste() { - return 0 != ( mFlags & ( 1 << SUPPORT_COPY_PASTE ) ); -} - -bool InputTextBuffer::isTextSelectionEnabled() { - return 0 != ( mFlags & ( 1 << TEXT_SELECTION_ENABLED ) ); -} - -void InputTextBuffer::setTextSelectionEnabled( const bool& enabled ) { - BitOp::writeBitKey( &mFlags, TEXT_SELECTION_ENABLED, enabled == true ); -} - -void InputTextBuffer::cursorToEnd() { - setCursorPos( mText.size() ); -} - -void InputTextBuffer::selCurInit( const Int32& init ) { - mSelCurInit = init; -} - -void InputTextBuffer::selCurEnd( const Int32& end ) { - mSelCurEnd = end; -} - -const Int32& InputTextBuffer::selCurInit() const { - return mSelCurInit; -} - -const Int32& InputTextBuffer::selCurEnd() const { - return mSelCurEnd; -} - -void InputTextBuffer::setCursorPositionChangeCallback( - const CursorPositionChangeCallback& cursorPositionChangeCallback ) { - mCursorPositionChangeCallback = cursorPositionChangeCallback; -} - -void InputTextBuffer::setBufferChangeCallback( const BufferChangeCallback& bufferChangeCallback ) { - mBufferChangeCallback = bufferChangeCallback; -} - -void InputTextBuffer::setSelectionChangeCallback( - const SelectionChangeCallback& selectionChangeCallback ) { - mSelectionChangeCallback = selectionChangeCallback; -} - -void InputTextBuffer::selectAll() { - selCurInit( 0 ); - selCurEnd( mText.size() ); - setCursorPos( mSelCurEnd ); - onSelectionChange(); -} - -void InputTextBuffer::onCursorPositionChange() { - if ( mCursorPositionChangeCallback ) { - mCursorPositionChangeCallback(); - } -} - -void InputTextBuffer::onSelectionChange() { - if ( mSelectionChangeCallback ) { - mSelectionChangeCallback(); - } -} - -void InputTextBuffer::onBufferChange() { - if ( mBufferChangeCallback ) { - mBufferChangeCallback(); - } -} - -}} // namespace EE::Window diff --git a/src/modules/eterm/src/eterm/terminal/terminalcolorscheme.cpp b/src/modules/eterm/src/eterm/terminal/terminalcolorscheme.cpp index 940c95560..c4744511f 100644 --- a/src/modules/eterm/src/eterm/terminal/terminalcolorscheme.cpp +++ b/src/modules/eterm/src/eterm/terminal/terminalcolorscheme.cpp @@ -106,7 +106,6 @@ const std::vector& TerminalColorScheme::getPalette() const { } const Color& TerminalColorScheme::getPaletteIndex( const size_t& index ) const { - eeASSERT( index < mPalette.size() ); return mPalette[index]; } diff --git a/src/modules/eterm/src/eterm/terminal/terminaldisplay.cpp b/src/modules/eterm/src/eterm/terminal/terminaldisplay.cpp index d34121368..0d13e333a 100644 --- a/src/modules/eterm/src/eterm/terminal/terminaldisplay.cpp +++ b/src/modules/eterm/src/eterm/terminal/terminaldisplay.cpp @@ -9,6 +9,7 @@ #include #include #include +#include namespace eterm { namespace Terminal { diff --git a/src/tests/test_all/test.cpp b/src/tests/test_all/test.cpp index c3d7299e5..c7bbddc30 100644 --- a/src/tests/test_all/test.cpp +++ b/src/tests/test_all/test.cpp @@ -262,9 +262,6 @@ void EETest::onFontLoaded() { eeASSERT( TTF != NULL ); eeASSERT( monospace != NULL ); - Con.create( monospace, true ); - Con.ignoreCharOnPrompt( 186 ); // 'º' - mBuda = String::fromUtf8( "El mono ve el pez en el agua y sufre. Piensa que su mundo es el único que existe, el " "mejor, el real. Sufre porque es bueno y tiene compasión, lo ve y piensa: \"Pobre se está " @@ -273,6 +270,10 @@ void EETest::onFontLoaded() { "el mar en tu cabeza, que es un balde." ); createUI(); + Con = UIConsole::NewOpt( monospace, true, true, 8191 ); + Con->setQuakeMode( true ); + Con->setVisible( false ); + Con->addCommand( "setparticlesnum", cb::Make1( this, &EETest::cmdSetPartsNum ) ); mEEText.create( TTF, "Entropia Engine++\nCTRL + Number to change Demo Screen\nRight click to " "see the PopUp Menu" ); @@ -1196,13 +1197,7 @@ void EETest::onItemClick( const Event* event ) { } else if ( "Show Screen 6" == txt ) { setScreen( 5 ); } else if ( "Show Console" == txt ) { - Con.toggle(); - - if ( Con.isActive() ) { - mWindow->startTextInput(); - } else { - mWindow->stopTextInput(); - } + Con->toggle(); } else if ( "Show Window" == txt ) { UIMenuCheckBox* Chk = event->getNode()->asType(); @@ -1335,9 +1330,9 @@ void EETest::cmdSetPartsNum( const std::vector& params ) { PS[2].create( ParticleEffect::WormHole, tInt, TN[5], Vector2f( mWindow->getWidth() * 0.5f, mWindow->getHeight() * 0.5f ), 32, true ); - Con.pushText( "Wormhole Particles Number Changed to: " + String::toString( tInt ) ); + Con->pushText( "Wormhole Particles Number Changed to: " + String::toString( tInt ) ); } else - Con.pushText( "Valid parameters are between 0 and 100000 (0 = no limit)." ); + Con->pushText( "Valid parameters are between 0 and 100000 (0 = no limit)." ); } } @@ -1434,8 +1429,6 @@ void EETest::loadTextures() { PS[3].create( ParticleEffect::Fire, 350, TN[5], Vector2f( -50.f, -50.f ), 32, true ); PS[4].create( ParticleEffect::Fire, 350, TN[5], Vector2f( -50.f, -50.f ), 32, true ); - Con.addCommand( "setparticlesnum", cb::Make1( this, &EETest::cmdSetPartsNum ) ); - Texture* Tex = TNP[2]; if ( NULL != Tex && Tex->lock() ) { @@ -1914,7 +1907,6 @@ void EETest::render() { mInfoText.draw( 6.f, 6.f ); SceneManager::instance()->draw(); - Con.draw(); } void EETest::input() { @@ -1976,7 +1968,7 @@ void EETest::input() { if ( KM->isAltPressed() && KM->isKeyUp( KEY_C ) ) mWindow->centerToDisplay(); - if ( KM->isAltPressed() && KM->isKeyUp( KEY_M ) && !Con.isActive() ) { + if ( KM->isAltPressed() && KM->isKeyUp( KEY_M ) && !Con->isActive() ) { if ( !mWindow->isMaximized() ) mWindow->maximize(); } @@ -2001,7 +1993,7 @@ void EETest::input() { KM->grabInput( !KM->grabInput() ); if ( KM->isKeyUp( KEY_F3 ) || KM->isKeyUp( KEY_BACKSLASH ) ) { - Con.toggle(); + Con->toggle(); } if ( KM->isKeyUp( KEY_1 ) && KM->isControlPressed() ) diff --git a/src/tests/test_all/test.hpp b/src/tests/test_all/test.hpp index ed378e90e..666ec7121 100644 --- a/src/tests/test_all/test.hpp +++ b/src/tests/test_all/test.hpp @@ -69,7 +69,7 @@ class EETest : private Thread { bool DrawBack; - Console Con; + UIConsole* Con; virtual void run(); Vector2f Point; diff --git a/src/tools/uieditor/uieditor.cpp b/src/tools/uieditor/uieditor.cpp index f934772f9..bcbf82797 100644 --- a/src/tools/uieditor/uieditor.cpp +++ b/src/tools/uieditor/uieditor.cpp @@ -64,7 +64,7 @@ std::string basePath; Vector2i mousePos; Clock mouseClock; -Console* console = NULL; +UIConsole* console = NULL; std::map layouts; std::vector recentProjects; @@ -789,17 +789,13 @@ void mainLoop() { refreshStyleSheet(); } - Time elapsed = SceneManager::instance()->getElapsed(); SceneManager::instance()->update(); - if ( appUiSceneNode->invalidated() || uiSceneNode->invalidated() || console->isActive() || - console->isFading() ) { + if ( appUiSceneNode->invalidated() || uiSceneNode->invalidated() ) { window->clear(); SceneManager::instance()->draw(); - console->draw( elapsed ); - window->display(); } else { Sys::sleep( Milliseconds( 8 ) ); @@ -919,6 +915,10 @@ void createAppMenu() { uiMenuBar->addMenuButton( "Resources", uiResourceMenu ); uiResourceMenu->addEventListener( Event::OnItemClicked, cb::Make1( fileMenuClick ) ); + console = UIConsole::New(); + console->setQuakeMode( true ); + console->setVisible( false ); + SceneManager::instance()->setCurrentUISceneNode( uiSceneNode ); } @@ -1027,10 +1027,7 @@ EE_MAIN_FUNC int main( int argc, char* argv[] ) { FontTrueType* font = FontTrueType::New( "NotoSans-Regular", resPath + "assets/fonts/NotoSans-Regular.ttf" ); - FontTrueType* fontMono = - FontTrueType::New( "monospace", resPath + "assets/fonts/DejaVuSansMono.ttf" ); - - console = eeNew( Console, ( fontMono, true, true, 1024 * 1000, 0, window ) ); + FontTrueType::New( "monospace", resPath + "assets/fonts/DejaVuSansMono.ttf" ); theme = UITheme::load( "uitheme" + pd, "uitheme" + pd, resPath + "assets/ui/uitheme" + pd + ".eta", font,