diff --git a/include/eepp/ui/uicodeeditor.hpp b/include/eepp/ui/uicodeeditor.hpp index ccb4d100c..b7c5dfcc1 100644 --- a/include/eepp/ui/uicodeeditor.hpp +++ b/include/eepp/ui/uicodeeditor.hpp @@ -631,8 +631,11 @@ class EE_API UICodeEditor : public UIWidget, public TextDocument::Client { void setFileLockIconName( const std::string& fileLockIconName ); bool getDisplayLockedIcon() const; + void setDisplayLockedIcon( bool displayLockedIcon ); + void invalidateLongestLineWidth(); + protected: struct LastXOffset { TextPosition position{ 0, 0 }; @@ -758,8 +761,6 @@ class EE_API UICodeEditor : public UIWidget, public TextDocument::Client { void invalidateEditor( bool dirtyScroll = true ); - void invalidateLongestLineWidth(); - void invalidateLinesCache(); void findLongestLine(); diff --git a/src/tools/ecode/projectbuild.cpp b/src/tools/ecode/projectbuild.cpp index e1d2c61a8..146b571a6 100644 --- a/src/tools/ecode/projectbuild.cpp +++ b/src/tools/ecode/projectbuild.cpp @@ -23,6 +23,8 @@ static const char* VAR_PROJECT_ROOT = "${project_root}"; static const char* VAR_BUILD_TYPE = "${build_type}"; static const char* VAR_OS = "${os}"; static const char* VAR_NPROC = "${nproc}"; +static const char* VAR_CURRENT_DOC = "${current_doc}"; +static const char* VAR_CURRENT_DOC_NAME = "${current_doc_name}"; static void replaceVar( ProjectBuildStep& s, const std::string& var, const std::string& val ) { static std::string slashDup = FileSystem::getOSSlash() + FileSystem::getOSSlash(); @@ -301,6 +303,9 @@ ProjectBuildCommandsRes ProjectBuildManager::generateBuildCommands( const std::s i18n( "build_os_not_supported", "Operating System not supported for this build!" ) }; std::string nproc = String::format( "%d", Sys::getCPUCount() ); + std::string curDoc = getCurrentDocument(); + std::string curDocName = + FileSystem::fileRemoveExtension( FileSystem::fileNameFromPath( curDoc ) ); ProjectBuildCommandsRes res; auto finalBuild( build.replaceVars( build.mBuild ) ); @@ -309,6 +314,8 @@ ProjectBuildCommandsRes ProjectBuildManager::generateBuildCommands( const std::s ProjectBuildCommand buildCmd( step ); replaceVar( buildCmd, VAR_OS, currentOS ); replaceVar( buildCmd, VAR_NPROC, nproc ); + replaceVar( buildCmd, VAR_CURRENT_DOC, curDoc ); + replaceVar( buildCmd, VAR_CURRENT_DOC_NAME, curDocName ); if ( buildCmd.workingDir.empty() ) buildCmd.workingDir = mProjectRoot; if ( !buildType.empty() ) @@ -362,6 +369,9 @@ ProjectBuildCommandsRes ProjectBuildManager::generateCleanCommands( const std::s i18n( "build_os_not_supported", "Operating System not supported for this build!" ) }; std::string nproc = String::format( "%d", Sys::getCPUCount() ); + std::string curDoc = getCurrentDocument(); + std::string curDocName = + FileSystem::fileRemoveExtension( FileSystem::fileNameFromPath( curDoc ) ); ProjectBuildCommandsRes res; auto finalBuild( build.replaceVars( build.mClean ) ); @@ -370,6 +380,8 @@ ProjectBuildCommandsRes ProjectBuildManager::generateCleanCommands( const std::s ProjectBuildCommand buildCmd( step ); replaceVar( buildCmd, VAR_OS, currentOS ); replaceVar( buildCmd, VAR_NPROC, nproc ); + replaceVar( buildCmd, VAR_CURRENT_DOC, curDoc ); + replaceVar( buildCmd, VAR_CURRENT_DOC_NAME, curDocName ); if ( !buildType.empty() ) replaceVar( buildCmd, VAR_BUILD_TYPE, buildType ); buildCmd.config = build.mConfig; @@ -680,6 +692,13 @@ void ProjectBuildManager::cleanCurrentConfig( StatusBuildOutputController* sboc } } +std::string ProjectBuildManager::getCurrentDocument() { + return mApp->getSplitter() && mApp->getSplitter()->getCurEditor() && + mApp->getSplitter()->getCurEditor()->getDocument().hasFilepath() + ? mApp->getSplitter()->getCurEditor()->getDocument().getFilePath() + : ""; +} + static std::unordered_map toUnorderedMap( const ProjectBuildKeyVal& vec ) { std::unordered_map map; diff --git a/src/tools/ecode/projectbuild.hpp b/src/tools/ecode/projectbuild.hpp index 566767a75..fdafdf048 100644 --- a/src/tools/ecode/projectbuild.hpp +++ b/src/tools/ecode/projectbuild.hpp @@ -9,7 +9,6 @@ #include #include #include -#include #include using namespace EE; @@ -263,6 +262,8 @@ class ProjectBuildManager { const std::string& getProjectFile() const { return mProjectFile; } + std::string getCurrentDocument(); + ProjectBuild* getBuild( const std::string& buildName ); bool hasBuild( const std::string& name ) { return mBuilds.find( name ) != mBuilds.end(); } diff --git a/src/tools/ecode/statusbuildoutputcontroller.cpp b/src/tools/ecode/statusbuildoutputcontroller.cpp index 350cdccd1..b574dba99 100644 --- a/src/tools/ecode/statusbuildoutputcontroller.cpp +++ b/src/tools/ecode/statusbuildoutputcontroller.cpp @@ -114,6 +114,7 @@ void StatusBuildOutputController::runBuild( const std::string& buildName, if ( mTableIssues ) mTableIssues->getSelection().clear(); mBuildOutput->getDocument().reset(); + mBuildOutput->invalidateLongestLineWidth(); mBuildOutput->setScrollY( mBuildOutput->getMaxScroll().y ); std::vector patterns; @@ -240,6 +241,7 @@ void StatusBuildOutputController::runClean( const std::string& buildName, show(); mBuildOutput->getDocument().reset(); + mBuildOutput->invalidateLongestLineWidth(); mBuildOutput->setScrollY( mBuildOutput->getMaxScroll().y ); std::vector patterns; diff --git a/src/tools/ecode/uibuildsettings.cpp b/src/tools/ecode/uibuildsettings.cpp index 88ee6fabf..026ccb66e 100644 --- a/src/tools/ecode/uibuildsettings.cpp +++ b/src/tools/ecode/uibuildsettings.cpp @@ -359,7 +359,7 @@ static const auto SETTINGS_PANEL_XML = R"xml( - +