diff --git a/.gitignore b/.gitignore index 890ec2476..d5036a609 100644 --- a/.gitignore +++ b/.gitignore @@ -48,3 +48,6 @@ eepp.geany /bin/assets/icon/ee.aps /bin/.htaccess .qtc_clangd +/projects/osx/ecode/ecode.app +/bin/assets/icon/ee.iconset +ecode.dmg diff --git a/bin/assets/icon/ee.icns b/bin/assets/icon/ee.icns new file mode 100644 index 000000000..b9eae3d53 Binary files /dev/null and b/bin/assets/icon/ee.icns differ diff --git a/projects/osx/ecode/Info.plist b/projects/osx/ecode/Info.plist new file mode 100644 index 000000000..14506cb6e --- /dev/null +++ b/projects/osx/ecode/Info.plist @@ -0,0 +1,30 @@ + + + + + CFBundleGetInfoString + ecode + CFBundleExecutable + run.sh + CFBundleIdentifier + ensoft.dev + CFBundleName + ecode + CFBundleIconFile + ecode.icns + CFBundleShortVersionString + 0.1 + CFBundleInfoDictionaryVersion + 6.0 + CFBundlePackageType + APPL + IFMajorVersion + 0 + IFMinorVersion + 1 + NSHighResolutionCapable + + NSMainNibFile + + + diff --git a/projects/osx/ecode/build.app.sh b/projects/osx/ecode/build.app.sh new file mode 100755 index 000000000..8e06b212a --- /dev/null +++ b/projects/osx/ecode/build.app.sh @@ -0,0 +1,23 @@ +#!/bin/sh +../make_no_fw.sh config=release ecode +rm -rf ./ecode.app +mkdir -p ecode.app/Contents/MacOS/ +mkdir -p ecode.app/Contents/Resources/ +cp ../../../bin/assets/icon/ee.icns ecode.app/Contents/Resources/ecode.icns +cp Info.plist ecode.app/Contents/ +chmod +x run.sh +cp run.sh ecode.app/Contents/MacOS +cp ../../../libs/macosx/libeepp.dylib ecode.app/Contents/MacOS +cp ../../../bin/ecode ecode.app/Contents/MacOS +cp /usr/local/opt/sdl2/lib/libSDL2-2.0.0.dylib ecode.app/Contents/MacOS +install_name_tool -change /usr/local/opt/sdl2/lib/libSDL2-2.0.0.dylib @executable_path/libSDL2-2.0.0.dylib ecode.app/Contents/MacOS/libeepp.dylib +install_name_tool -change libeepp.dylib @executable_path/libeepp.dylib ecode.app/Contents/MacOS/ecode +#cp -r ../../../bin/assets ecode.app/Contents/MacOS/assets +mkdir -p ecode.app/Contents/MacOS/assets/colorschemes +cp -r ../../../bin/assets/colorschemes/ ecode.app/Contents/MacOS/assets/colorschemes/ +cp -r ../../../bin/assets/fonts ecode.app/Contents/MacOS/assets/ +cp -r ../../../bin/assets/formatter ecode.app/Contents/MacOS/assets/ +cp -r ../../../bin/assets/icon ecode.app/Contents/MacOS/assets/ +cp -r ../../../bin/assets/linters ecode.app/Contents/MacOS/assets/ +mkdir ecode.app/Contents/MacOS/assets/ui +cp ../../../bin/assets/ui/breeze.css ecode.app/Contents/MacOS/assets/ui/ diff --git a/projects/osx/ecode/create.dmg.sh b/projects/osx/ecode/create.dmg.sh new file mode 100755 index 000000000..76b9aba07 --- /dev/null +++ b/projects/osx/ecode/create.dmg.sh @@ -0,0 +1,4 @@ +#!/bin/sh +# brew install create-dmg +rm -f ecode.dmg +create-dmg --icon ecode 0 16 --window-size 256 256 --app-drop-link 0 80 --icon-size 32 --text-size 12 --volicon ../../../bin/assets/icon/ee.icns ecode.dmg ecode.app diff --git a/projects/osx/ecode/run.sh b/projects/osx/ecode/run.sh new file mode 100755 index 000000000..3e9e2218b --- /dev/null +++ b/projects/osx/ecode/run.sh @@ -0,0 +1,3 @@ +#!/bin/bash +cd "${0%/*}" +./ecode diff --git a/projects/osx/ee.files b/projects/osx/ee.files index 82706c780..7589e9653 100644 --- a/projects/osx/ee.files +++ b/projects/osx/ee.files @@ -1104,6 +1104,8 @@ ../../src/tools/ecode/codeeditor.hpp ../../src/tools/ecode/docsearchcontroller.cpp ../../src/tools/ecode/docsearchcontroller.hpp +../../src/tools/ecode/ecode.cpp +../../src/tools/ecode/ecode.hpp ../../src/tools/ecode/filelocator.cpp ../../src/tools/ecode/filelocator.hpp ../../src/tools/ecode/filesystemlistener.cpp @@ -1116,18 +1118,30 @@ ../../src/tools/ecode/ignorematcher.hpp ../../src/tools/ecode/lintermodule.cpp ../../src/tools/ecode/lintermodule.hpp +../../src/tools/ecode/modules/autocomplete/autocompletemodule.cpp +../../src/tools/ecode/modules/autocomplete/autocompletemodule.hpp +../../src/tools/ecode/modules/formatter/formattermodule.cpp +../../src/tools/ecode/modules/formatter/formattermodule.hpp +../../src/tools/ecode/modules/linter/lintermodule.cpp +../../src/tools/ecode/modules/linter/lintermodule.hpp ../../src/tools/ecode/notificationcenter.cpp ../../src/tools/ecode/notificationcenter.hpp ../../src/tools/ecode/projectdirectorytree.cpp ../../src/tools/ecode/projectdirectorytree.hpp ../../src/tools/ecode/projectsearch.cpp ../../src/tools/ecode/projectsearch.hpp +../../src/tools/ecode/thirdparty/json.hpp +../../src/tools/ecode/thirdparty/subprocess.h ../../src/tools/ecode/uicodeeditorsplitter.cpp ../../src/tools/ecode/uicodeeditorsplitter.hpp ../../src/tools/ecode/uitreeviewglobalsearch.cpp ../../src/tools/ecode/uitreeviewglobalsearch.hpp ../../src/tools/ecode/widgetcommandexecuter.hpp ../../src/tools/mapeditor/mapeditor.cpp +../../src/tools/mapeditor/mapeditor.cpp +../../src/tools/textureatlaseditor/textureatlaseditor.cpp ../../src/tools/textureatlaseditor/textureatlaseditor.cpp ../../src/tools/texturepacker/texturepacker.cpp +../../src/tools/texturepacker/texturepacker.cpp +../../src/tools/uieditor/uieditor.cpp ../../src/tools/uieditor/uieditor.cpp diff --git a/projects/osx/make_no_fw.sh b/projects/osx/make_no_fw.sh index 5aa15eb78..b81887f0a 100755 --- a/projects/osx/make_no_fw.sh +++ b/projects/osx/make_no_fw.sh @@ -5,7 +5,7 @@ premake4 --file=../../premake4.lua gmake cd ../../make/macosx/ sed -e "s/-Wl,-x//g" -i .make -make $@ +make -j`nproc` $@ cd ../../bin/ ln -sf ../libs/macosx/libeepp.dylib . diff --git a/src/tools/ecode/ecode.cpp b/src/tools/ecode/ecode.cpp index e1bd50ab8..a4c6a20de 100644 --- a/src/tools/ecode/ecode.cpp +++ b/src/tools/ecode/ecode.cpp @@ -863,7 +863,7 @@ UIMenu* App::createEditMenu() { menu->add( i18n( "copy_file_path", "Copy File Path" ), findIcon( "copy" ), getKeybind( "copy-file-path" ) ) ->setId( "copy-file-path" ); - menu->addSeparator(); + UIMenuSeparator* fileSep = menu->addSeparator(); menu->add( i18n( "key_bindings", "Key Bindings" ), findIcon( "keybindings" ), getKeybind( "keybindings" ) ) ->setId( "keybindings" ); @@ -872,7 +872,7 @@ UIMenu* App::createEditMenu() { return; runCommand( event->getNode()->getId() ); } ); - menu->addEventListener( Event::OnMenuShow, [&, menu]( const Event* ) { + menu->addEventListener( Event::OnMenuShow, [&, menu, fileSep]( const Event* ) { if ( nullptr == mEditorSplitter->getCurEditor() ) return; auto doc = mEditorSplitter->getCurEditor()->getDocumentRef(); @@ -882,6 +882,7 @@ UIMenu* App::createEditMenu() { menu->getItemId( "cut" )->setEnabled( doc->hasSelection() ); menu->getItemId( "open-containing-folder" )->setVisible( doc->hasFilepath() ); menu->getItemId( "copy-file-path" )->setVisible( doc->hasFilepath() ); + fileSep->setVisible( doc->hasFilepath() ); } ); return menu; } @@ -2576,7 +2577,7 @@ void App::initProjectTreeView( const std::string& path ) { } } } - } else { + } else if ( !mIsMacOSApp ) { loadFolder( "." ); } @@ -2644,6 +2645,13 @@ void App::init( std::string file, const Float& pidelDensity, const std::string& : 0 ); mDisplayDPI = currentDisplay->getDPI(); mResPath = Sys::getProcessPath(); +#if EE_PLATFORM == EE_PLATFORM_MACOSX + if ( String::contains( mResPath, "ecode.app" ) ) { + mResPath = FileSystem::getCurrentWorkingDirectory(); + FileSystem::dirAddSlashAtEnd( mResPath ); + mIsMacOSApp = true; + } +#endif mConfig.window.pixelDensity = pidelDensity > 0 ? pidelDensity diff --git a/src/tools/ecode/ecode.hpp b/src/tools/ecode/ecode.hpp index 54569c848..57f9ce941 100644 --- a/src/tools/ecode/ecode.hpp +++ b/src/tools/ecode/ecode.hpp @@ -117,6 +117,7 @@ class App : public UICodeEditorSplitter::Client { std::shared_ptr mFileSystemModel; size_t mMenuIconSize; bool mDirTreeReady{ false }; + bool mIsMacOSApp{ false }; ProjectDocumentConfig mProjectDocConfig; std::unordered_set mTmpDocs; std::string mCurrentProject;