diff --git a/src/tools/ecode/ecode.cpp b/src/tools/ecode/ecode.cpp
index 7a41b77c4..24388f644 100644
--- a/src/tools/ecode/ecode.cpp
+++ b/src/tools/ecode/ecode.cpp
@@ -247,6 +247,15 @@ std::string App::getLastUsedFolder() {
return ".";
}
+void App::insertRecentFolder( const std::string& rpath ) {
+ auto found = std::find( mRecentFolders.begin(), mRecentFolders.end(), rpath );
+ if ( found != mRecentFolders.end() )
+ mRecentFolders.erase( found );
+ mRecentFolders.insert( mRecentFolders.begin(), rpath );
+ if ( mRecentFolders.size() > 10 )
+ mRecentFolders.resize( 10 );
+}
+
void App::refreshFolderView() {
if ( !mFileSystemModel )
return;
@@ -2924,13 +2933,7 @@ void App::loadFolder( const std::string& path ) {
if ( mFileSystemListener )
mFileSystemListener->setFileSystemModel( mFileSystemModel );
- auto found = std::find( mRecentFolders.begin(), mRecentFolders.end(), rpath );
- if ( found != mRecentFolders.end() )
- mRecentFolders.erase( found );
- mRecentFolders.insert( mRecentFolders.begin(), rpath );
- if ( mRecentFolders.size() > 10 )
- mRecentFolders.resize( 10 );
-
+ insertRecentFolder( rpath );
cleanUpRecentFolders();
updateRecentFolders();
mSettings->updateProjectSettingsMenu();
@@ -3288,17 +3291,20 @@ TableView#locate_bar_table > tableview::row:selected > tableview::cell:nth-child
padding-top: 1dp;
padding-bottom: 1dp;
}
-#status_bar > TextView {
- padding-left: 4dp;
- padding-right: 5dp;
+#status_bar > * {
+ padding: 0dp 5dp 0dp 4dp;
background-color: var(--list-back);
+ border-radius: 0dp;
+ border-left-color: transparent;
+ border-top-color: transparent;
+ border-bottom-color: transparent;
border-right-color: var(--tab-line);
font-size: 10dp;
}
-#status_bar > TextView:hover {
+#status_bar > *:hover {
background-color: var(--item-hover);
}
-#status_bar > TextView.selected {
+#status_bar > *.selected {
background-color: var(--primary);
}
#panel > tabwidget::container > * {
@@ -3598,10 +3604,10 @@ Anchor.error:hover {
-
-
-
-
+
+
+
+
@@ -3674,7 +3680,9 @@ Anchor.error:hover {
{ "hearth-pulse", 0xee10 },
{ "add", 0xea12 },
{ "hammer", 0xedee },
- { "eraser", 0xec9e } };
+ { "eraser", 0xec9e },
+ { "file-search", 0xed05 } };
+
for ( const auto& icon : icons )
iconTheme->add( UIGlyphIcon::New( icon.first, iconFont, icon.second ) );
@@ -3797,7 +3805,8 @@ Anchor.error:hover {
{ "layout-sidebar-left-off", 0xec02 },
{ "layout-sidebar-left", 0xebf3 },
{ "warning", 0xea6c },
- { "error", 0xea87 } };
+ { "error", 0xea87 },
+ { "search-fuzzy", 0xec0d } };
for ( const auto& icon : codIcons )
iconTheme->add( UIGlyphIcon::New( icon.first, codIconFont, icon.second ) );
diff --git a/src/tools/ecode/ecode.hpp b/src/tools/ecode/ecode.hpp
index 95bdf7c46..7b3eab602 100644
--- a/src/tools/ecode/ecode.hpp
+++ b/src/tools/ecode/ecode.hpp
@@ -559,6 +559,8 @@ class App : public UICodeEditorSplitter::Client {
std::string getLastUsedFolder();
+ void insertRecentFolder( const std::string& rpath );
+
void cleanUpRecentFolders();
void cleanUpRecentFiles();
diff --git a/src/tools/ecode/statusbuildoutputcontroller.cpp b/src/tools/ecode/statusbuildoutputcontroller.cpp
index d3eb43eda..6d37aa4e5 100644
--- a/src/tools/ecode/statusbuildoutputcontroller.cpp
+++ b/src/tools/ecode/statusbuildoutputcontroller.cpp
@@ -455,15 +455,19 @@ void StatusBuildOutputController::createContainer() {
if ( mContainer )
return;
const auto XML = R"xml(
-
-
-
-
-
-
-
-
+
+
+
+
+
+
)xml";
+
+ if ( mMainSplitter->getLastWidget() != nullptr ) {
+ mMainSplitter->getLastWidget()->setVisible( false );
+ mMainSplitter->getLastWidget()->setParent( mUISceneNode );
+ }
+
mContainer = mApp->getUISceneNode()
->loadLayoutFromString( XML, mMainSplitter )
->asType();
@@ -513,19 +517,18 @@ void StatusBuildOutputController::createContainer() {
} );
mBuildOutput = editor;
mContainer->setVisible( false );
- auto cont = mContainer->getFirstChild()->asType();
- cont->setCommand( "build-output-show-build-output", [this]() { showBuildOutput(); } );
- cont->setCommand( "build-output-show-build-issues", [this]() { showIssues(); } );
- cont->getKeyBindings().addKeybind( { KEY_1, KeyMod::getDefaultModifier() },
- "build-output-show-build-output" );
- cont->getKeyBindings().addKeybind( { KEY_2, KeyMod::getDefaultModifier() },
- "build-output-show-build-issues" );
+ mContainer->setCommand( "build-output-show-build-output", [this]() { showBuildOutput(); } );
+ mContainer->setCommand( "build-output-show-build-issues", [this]() { showIssues(); } );
+ mContainer->getKeyBindings().addKeybind( { KEY_1, KeyMod::getDefaultModifier() },
+ "build-output-show-build-output" );
+ mContainer->getKeyBindings().addKeybind( { KEY_2, KeyMod::getDefaultModifier() },
+ "build-output-show-build-issues" );
mButOutput->onClick( [this]( auto ) { showBuildOutput(); } );
mButIssues->onClick( [this]( auto ) { showIssues(); } );
mButOutput->setTooltipText(
- cont->getKeyBindings().getCommandKeybindString( "build-output-show-build-output" ) );
+ mContainer->getKeyBindings().getCommandKeybindString( "build-output-show-build-output" ) );
mButIssues->setTooltipText(
- cont->getKeyBindings().getCommandKeybindString( "build-output-show-build-issues" ) );
+ mContainer->getKeyBindings().getCommandKeybindString( "build-output-show-build-issues" ) );
}
} // namespace ecode
diff --git a/src/tools/ecode/statusbuildoutputcontroller.hpp b/src/tools/ecode/statusbuildoutputcontroller.hpp
index 9c346c947..4f66689d7 100644
--- a/src/tools/ecode/statusbuildoutputcontroller.hpp
+++ b/src/tools/ecode/statusbuildoutputcontroller.hpp
@@ -2,6 +2,7 @@
#define ECODE_STATUSBUILDOUTPUTCONTROLLER_HPP
#include "projectbuild.hpp"
+#include "widgetcommandexecuter.hpp"
#include
#include
#include
@@ -61,7 +62,7 @@ class StatusBuildOutputController {
App* mApp{ nullptr };
UICodeEditorSplitter* mSplitter{ nullptr };
- UIRelativeLayout* mContainer{ nullptr };
+ UIRelativeLayoutCommandExecuter* mContainer{ nullptr };
UICodeEditor* mBuildOutput{ nullptr };
UISelectButton* mButOutput{ nullptr };
UISelectButton* mButIssues{ nullptr };
diff --git a/src/tools/uieditor/uieditor.cpp b/src/tools/uieditor/uieditor.cpp
index db170599c..e6275bb3d 100644
--- a/src/tools/uieditor/uieditor.cpp
+++ b/src/tools/uieditor/uieditor.cpp
@@ -790,56 +790,61 @@ void App::loadLayoutFile( std::string layoutPath ) {
}
void App::loadProject( std::string projectPath ) {
- if ( FileSystem::fileExists( projectPath ) ) {
- closeProject();
+ if ( !FileSystem::fileExists( projectPath ) )
+ return;
- mBasePath = FileSystem::fileRemoveFileName( projectPath );
+ closeProject();
- FileSystem::changeWorkingDirectory( mBasePath );
+ mBasePath = FileSystem::fileRemoveFileName( projectPath );
- pugi::xml_document doc;
- pugi::xml_parse_result result = doc.load_file( projectPath.c_str() );
+ FileSystem::changeWorkingDirectory( mBasePath );
- if ( result ) {
- loadProjectNodes( doc.first_child() );
+ pugi::xml_document doc;
+ pugi::xml_parse_result result = doc.load_file( projectPath.c_str() );
- for ( auto pathIt = mRecentProjects.begin(); pathIt != mRecentProjects.end();
- pathIt++ ) {
- if ( *pathIt == projectPath ) {
- mRecentProjects.erase( pathIt );
- break;
- }
+ if ( result ) {
+ loadProjectNodes( doc.first_child() );
+
+ for ( auto pathIt = mRecentProjects.begin(); pathIt != mRecentProjects.end(); pathIt++ ) {
+ if ( *pathIt == projectPath ) {
+ mRecentProjects.erase( pathIt );
+ break;
}
-
- mRecentProjects.insert( mRecentProjects.begin(), projectPath );
-
- if ( mRecentProjects.size() > 10 )
- mRecentProjects.resize( 10 );
-
- updateRecentProjects();
- } else {
- Log::error( "Couldn't load UI Layout: %s", projectPath.c_str() );
- Log::error( "Error description: %s", result.description() );
- Log::error( "Error offset: %d", result.offset );
}
+
+ mRecentProjects.insert( mRecentProjects.begin(), projectPath );
+
+ if ( mRecentProjects.size() > 10 )
+ mRecentProjects.resize( 10 );
+
+ updateRecentProjects();
+ } else {
+ Log::error( "Couldn't load UI Layout: %s", projectPath.c_str() );
+ Log::error( "Error description: %s", result.description() );
+ Log::error( "Error offset: %d", result.offset );
}
}
void App::closeEditors() {
+ UISceneNode* prevUISceneNode = SceneManager::instance()->getUISceneNode();
+ SceneManager::instance()->setCurrentUISceneNode( mSplitter->getUISceneNode() );
std::vector editors = mSplitter->getAllEditors();
while ( !editors.empty() ) {
UICodeEditor* editor = editors[0];
UITabWidget* tabWidget = mSplitter->tabWidgetFromEditor( editor );
- tabWidget->removeTab( (UITab*)editor->getData(), true, true );
+ tabWidget->removeTab( (UITab*)editor->getData(), true, false );
editors = mSplitter->getAllEditors();
if ( editors.size() == 1 && editors[0]->getDocument().isEmpty() )
break;
};
if ( !mSplitter->getTabWidgets().empty() && mSplitter->getTabWidgets()[0]->getTabCount() == 0 )
mSplitter->createCodeEditorInTabWidget( mSplitter->getTabWidgets()[0] );
+ SceneManager::instance()->setCurrentUISceneNode( prevUISceneNode );
}
void App::closeProject() {
+ SceneManager::instance()->setCurrentUISceneNode( mUISceneNode );
+
mCurrentLayout = "";
mCurrentStyleSheet = "";
mUIContainer->getContainer()->childsCloseAll();
@@ -1373,7 +1378,7 @@ void App::init( const Float& pixelDensityConf, const bool& useAppTheme, const st
mAppUISceneNode->bind( "project_splitter", mProjectSplitter );
mSidePanel = mProjectSplitter->getFirstWidget();
SceneManager::instance()->setCurrentUISceneNode( mAppUISceneNode );
- mSplitter = UICodeEditorSplitter::New( this, mUISceneNode, colorSchemes, "eepp" );
+ mSplitter = UICodeEditorSplitter::New( this, mAppUISceneNode, colorSchemes, "eepp" );
mSplitter->setHideTabBarOnSingleTab( false );
mSplitter->createEditorWithTabWidget( mBaseLayout );
SceneManager::instance()->setCurrentUISceneNode( mUISceneNode );