From a188d7d64aabc1a15b5968eb413ffa7934db0f81 Mon Sep 17 00:00:00 2001 From: klugier Date: Tue, 20 Oct 2015 21:56:47 +0000 Subject: [PATCH] AndroidBuilder now full independent from ide git-svn-id: svn://ultimatepp.org/upp/trunk@9061 f0d560ea-af0d-0410-9eb7-867de7ffcac7 --- uppsrc/ide/Android.cpp | 9 ++++ uppsrc/ide/Builders/AndroidBuilder.icpp | 1 - uppsrc/ide/Builders/Build.cpp | 1 + uppsrc/ide/Config.cpp | 8 +-- uppsrc/ide/Core/Core.h | 1 - uppsrc/ide/Debug.cpp | 4 +- uppsrc/ide/Methods.cpp | 65 ++++++++++++++++++++++--- uppsrc/ide/Methods.h | 10 +++- uppsrc/ide/Setup.cpp | 17 ------- uppsrc/ide/ide.h | 6 +-- uppsrc/ide/ide.lay | 63 +++++++++++------------- uppsrc/ide/ide.upp | 1 + uppsrc/ide/idebar.cpp | 2 +- uppsrc/ide/idewin.cpp | 8 --- 14 files changed, 116 insertions(+), 80 deletions(-) create mode 100644 uppsrc/ide/Android.cpp diff --git a/uppsrc/ide/Android.cpp b/uppsrc/ide/Android.cpp new file mode 100644 index 000000000..1e3d0876c --- /dev/null +++ b/uppsrc/ide/Android.cpp @@ -0,0 +1,9 @@ +#include "ide.h" + +String Ide::GetAndroidSdkPath() +{ + VectorMap bm = GetMethodVars(method); + if(bm.Get("BUILDER") == "ANDROID") + return bm.Get("SDK_PATH"); + return String(); +} diff --git a/uppsrc/ide/Builders/AndroidBuilder.icpp b/uppsrc/ide/Builders/AndroidBuilder.icpp index 0f37a601f..364d7b818 100644 --- a/uppsrc/ide/Builders/AndroidBuilder.icpp +++ b/uppsrc/ide/Builders/AndroidBuilder.icpp @@ -11,7 +11,6 @@ Index AndroidBuilder::GetBuildersNames() AndroidBuilder::AndroidBuilder() { - androidSDK.SetPath(GetAndroidSDKPath()); } String AndroidBuilder::GetTargetExt() const diff --git a/uppsrc/ide/Builders/Build.cpp b/uppsrc/ide/Builders/Build.cpp index 2d5bff791..bf88b1e1e 100644 --- a/uppsrc/ide/Builders/Build.cpp +++ b/uppsrc/ide/Builders/Build.cpp @@ -140,6 +140,7 @@ One MakeBuild::CreateBuilder(Host *host) b->script = bm.Get("SCRIPT", ""); if(AndroidBuilder::GetBuildersNames().Find(builder) > -1) { AndroidBuilder* ab = dynamic_cast(b); + ab->androidSDK.SetPath((bm.Get("SDK_PATH", ""))); ab->androidNDK.SetPath((bm.Get("NDK_PATH", ""))); ab->jdk.SetPath((bm.Get("JDK_PATH", ""))); diff --git a/uppsrc/ide/Config.cpp b/uppsrc/ide/Config.cpp index fda82dc22..924089d90 100644 --- a/uppsrc/ide/Config.cpp +++ b/uppsrc/ide/Config.cpp @@ -146,7 +146,7 @@ void Sentinel(Stream& s, const char *txt) void Ide::Serialize(Stream& s) { - int version = 7; + int version = 8; Sentinel(s, "before 12341234"); s.Magic(0x12341234); Sentinel(s, "after magic"); @@ -244,8 +244,10 @@ void Ide::Serialize(Stream& s) s % astyle_EmptyLineFill; s % astyle_TabSpaceConversionMode; s % astyle_TestBox; - if(version >= 6) - s % androidSDKPath; + if(version >= 6 && version < 8) { + String dummy; + s % dummy; + } s % LinuxHostConsole; editor.SerializeNavigator(s); s % showtime; diff --git a/uppsrc/ide/Core/Core.h b/uppsrc/ide/Core/Core.h index 5f5b8b113..faefe1397 100644 --- a/uppsrc/ide/Core/Core.h +++ b/uppsrc/ide/Core/Core.h @@ -201,7 +201,6 @@ String GetCurrentBuildMethod(); String GetCurrentMainPackage(); int GetHydraThreads(); -String GetAndroidSDKPath(); String GetAnyFileName(const char *path); String GetAnyFileTitle(const char *path); diff --git a/uppsrc/ide/Debug.cpp b/uppsrc/ide/Debug.cpp index 2d25b91da..0814bfd6c 100644 --- a/uppsrc/ide/Debug.cpp +++ b/uppsrc/ide/Debug.cpp @@ -192,7 +192,7 @@ void SelectAndroidDeviceDlg::LoadPhysicalDevices() void Ide::ExecuteApk() { - AndroidSDK sdk(androidSDKPath, true); + AndroidSDK sdk(GetAndroidSdkPath(), true); if(!sdk.Validate()) return; @@ -213,8 +213,6 @@ void Ide::ExecuteApk() if(!packageName.IsEmpty() && !activityName.IsEmpty()) host->Execute(adb.MakeLaunchOnDeviceCmd(packageName, activityName)); - - Cout() << "PID: " << adb.GetPid(packageName) << "\n"; } void Ide::BuildAndDebug0(const String& srcfile) diff --git a/uppsrc/ide/Methods.cpp b/uppsrc/ide/Methods.cpp index c492b7bb0..d0d6e6f8d 100644 --- a/uppsrc/ide/Methods.cpp +++ b/uppsrc/ide/Methods.cpp @@ -81,6 +81,18 @@ AndroidBuilderSetup::AndroidBuilderSetup() { CtrlLayout(*this); + sdk_path <<= THISBACK(OnSdkPathChange); + + sdkDownload.SetImage(IdeImg::DownloadBlack()); + sdkDownload.Tip("Download"); + sdkDownload <<= callback1(LaunchWebBrowser, AndroidSDK::GetDownloadUrl()); + sdk_path.AddFrame(sdkDownload); + + sdkBrowse.SetImage(CtrlImg::right_arrow()); + sdkBrowse.Tip("Select directory"); + sdkBrowse <<= THISBACK(OnSdkPathInsert); + sdk_path.AddFrame(sdkBrowse); + ndk_path <<= THISBACK(OnNdkPathChange); ndkDownload.SetImage(IdeImg::DownloadBlack()); @@ -106,6 +118,7 @@ AndroidBuilderSetup::AndroidBuilderSetup() void AndroidBuilderSetup::InitSetupCtrlsMap(VectorMap& map) { + map.Add("SDK_PATH", &sdk_path); map.Add("NDK_PATH", &ndk_path); map.Add("JDK_PATH", &jdk_path); map.Add("SDK_PLATFORM_VERSION", &sdk_platform_version); @@ -136,10 +149,7 @@ void AndroidBuilderSetup::New(const String& builder) void AndroidBuilderSetup::OnLoad() { - String sdkPath = GetAndroidSDKPath(); - sdk_path.SetData(sdkPath); - OnSdkPathChange(sdkPath); - + OnSdkPathChange(); OnNdkPathChange(); } @@ -150,6 +160,10 @@ void AndroidBuilderSetup::OnCtrlLoad(const String& ctrlKey, const String& value) if(map.Find(ctrlKey) > -1) { Ctrl* ctrl = map.Get(ctrlKey); + if(ctrl == &sdk_path) { + OnSdkPathChange0(value); + } + else if(ctrl == &ndk_path) { OnNdkPathChange0(value); } @@ -164,10 +178,12 @@ void AndroidBuilderSetup::OnShow() void AndroidBuilderSetup::OnSdkShow() { - AndroidSDK sdk(GetAndroidSDKPath(), true); + AndroidSDK sdk(sdk_path.GetData(), true); if(!sdk.Validate()) { + DisableSdkCtrls(); return; } + EnableSdkCtrls(); if(sdk_platform_version.GetValue().IsNull()) sdk_platform_version.SetData(sdk.FindDefaultPlatform()); @@ -175,13 +191,32 @@ void AndroidBuilderSetup::OnSdkShow() sdk_build_tools_release.SetData(sdk.FindDefaultBuildToolsRelease()); } -void AndroidBuilderSetup::OnSdkPathChange(const String& sdkPath) +void AndroidBuilderSetup::OnSdkPathInsert() +{ + String currentPath = sdk_path.GetData(); + + InsertPath(&sdk_path); + + String newPath = sdk_path.GetData(); + if(currentPath != newPath) + OnSdkPathChange(); +} + +void AndroidBuilderSetup::OnSdkPathChange() +{ + OnSdkPathChange0(sdk_path.GetData()); + OnSdkShow(); +} + +void AndroidBuilderSetup::OnSdkPathChange0(const String& sdkPath) { AndroidSDK sdk(sdkPath, true); if(sdk.Validate()) { LoadPlatforms(sdk); LoadBuildTools(sdk); } + else + ClearSdkCtrls(); } void AndroidBuilderSetup::OnNdkShow() @@ -191,7 +226,6 @@ void AndroidBuilderSetup::OnNdkShow() DisableNdkCtrls(); return; } - EnableNdkCtrls(); } @@ -279,6 +313,23 @@ void AndroidBuilderSetup::LoadDropList(DropList& dropList, } } +void AndroidBuilderSetup::EnableSdkCtrls(bool enable) +{ + sdk_platform_version.Enable(enable); + sdk_build_tools_release.Enable(enable); +} + +void AndroidBuilderSetup::DisableSdkCtrls() +{ + EnableSdkCtrls(false); +} + +void AndroidBuilderSetup::ClearSdkCtrls() +{ + sdk_platform_version.Clear(); + sdk_build_tools_release.Clear(); +} + void AndroidBuilderSetup::EnableNdkCtrls(bool enable) { ndk_blitz.Enable(enable); diff --git a/uppsrc/ide/Methods.h b/uppsrc/ide/Methods.h index d3f18221d..c4ca6c686 100644 --- a/uppsrc/ide/Methods.h +++ b/uppsrc/ide/Methods.h @@ -55,6 +55,8 @@ class AndroidBuilderSetup : public WithBuildMethodsAndroidBuilderSetupLayout sdkBrowse; + FrameRight