diff --git a/.gitignore b/.gitignore index fca70329..6f346e78 100644 --- a/.gitignore +++ b/.gitignore @@ -4,6 +4,7 @@ Certificate.bat ## Ignore Visual Studio temporary files, build results, and ## files generated by popular Visual Studio add-ons. +!Build/ # User-specific files *.suo @@ -17,7 +18,6 @@ Certificate.bat [Rr]eleases/ x64/ x86/ -build/ bld/ [Bb]in/ [Oo]bj/ diff --git a/BuildTools/Build.bat b/Build/Build.bat similarity index 97% rename from BuildTools/Build.bat rename to Build/Build.bat index e3dd3baf..1e3910de 100644 --- a/BuildTools/Build.bat +++ b/Build/Build.bat @@ -1,176 +1,176 @@ -@echo off -setlocal EnableDelayedExpansion - -set VCVARSALL=%VS120COMNTOOLS%..\..\VC\vcvarsall.bat -set MAKENSIS=%PROGRAMFILES%\NSIS\MakeNSIS.exe -set GIT=%PROGRAMFILES%\Git\bin\git.exe - -:: Set VERSION_REVISION to non-zero value to override -set VERSION_MAJOR=3 -set VERSION_MINOR=2 -set VERSION_SUBMINOR=0 -set VERSION_REVISION=0 -set ISBETA=true - -if "%1" == "RELEASE" set ISBETA=false -if "%1" == "BUILDVERSION" goto BUILDVERSION -echo Rainmeter Build -echo ---------------------------------------------- -echo. - -if not exist "%VCVARSALL%" echo ERROR: vcvarsall.bat not found & goto END -call "%VCVARSALL%" x86 > nul - -set MSBUILD="msbuild.exe" /nologo^ - /p:PlatformToolset=v120_xp;VisualStudioVersion=12.0^ - /p:ExcludeTests=true^ - /p:Configuration=Release - -if exist "Certificate.bat" call "Certificate.bat" > nul -set SIGNTOOL="signtool.exe" sign /t http://time.certum.pl /f "%CERTFILE%" /p "%CERTKEY%" - -if "%1" == "BUILDLANGUAGES" goto BUILDLANGUAGES - -if exist "%MAKENSIS%" goto NSISFOUND -set MAKENSIS=%MAKENSIS:Program Files\=Program Files (x86)\% -if not exist "%MAKENSIS%" echo ERROR: MakeNSIS.exe not found & goto END -:NSISFOUND - -:BUILDVERSION - -if not exist "..\.git" goto UPDATEVERSION -if not "%VERSION_REVISION%" == "0" goto UPDATEVERSION - -:: git -if exist "%GIT%" goto GITFOUND -set GIT=%GIT:Program Files\=Program Files (x86)\% -if not exist "%GIT%" echo ERROR: git.exe not found & goto END -:GITFOUND -set /a VERSION_REVISION=0 -for /f "usebackq delims= " %%G in (`"%GIT%" rev-list --all --count`) do set VERSION_REVISION=%%G - -:UPDATEVERSION - -set VERSION_FULL=%VERSION_MAJOR%.%VERSION_MINOR%.%VERSION_SUBMINOR%.%VERSION_REVISION% -set VERSION_SHORT=%VERSION_MAJOR%.%VERSION_MINOR% -if not "%VERSION_SUBMINOR%" == "0" set VERSION_SHORT=!VERSION_SHORT!.%VERSION_SUBMINOR% - -:: Update Version.h -> "..\Version.h" echo #pragma once ->>"..\Version.h" echo #define FILEVER %VERSION_MAJOR%,%VERSION_MINOR%,%VERSION_SUBMINOR%,%VERSION_REVISION% ->>"..\Version.h" echo #define PRODUCTVER FILEVER ->>"..\Version.h" echo #define STRFILEVER "%VERSION_FULL%" ->>"..\Version.h" echo #define STRPRODUCTVER STRFILEVER ->>"..\Version.h" echo #define APPVERSION L"%VERSION_MAJOR%.%VERSION_MINOR%.%VERSION_SUBMINOR%" ->>"..\Version.h" echo #define RAINMETER_VERSION ((%VERSION_MAJOR% * 1000000) + (%VERSION_MINOR% * 1000) + %VERSION_SUBMINOR%) ->>"..\Version.h" echo const int revision_number = %VERSION_REVISION%; ->>"..\Version.h" echo const bool revision_beta = %ISBETA%; - -:: Update Version.cs -> "..\Version.cs" echo namespace Rainmeter ->>"..\Version.cs" echo { ->>"..\Version.cs" echo public class Version ->>"..\Version.cs" echo { ->>"..\Version.cs" echo #if X64 ->>"..\Version.cs" echo public const string Informational = "%VERSION_FULL% (64-bit)"; ->>"..\Version.cs" echo #else ->>"..\Version.cs" echo public const string Informational = "%VERSION_FULL% (32-bit)"; ->>"..\Version.cs" echo #endif ->>"..\Version.cs" echo } ->>"..\Version.cs" echo } - - -if "%1" == "BUILDVERSION" goto :eof -echo * Updated Version.h - -:: Set vcbuild environment variables and begin build -echo * Starting build for %VERSION_FULL% -for /F "tokens=1-4 delims=:.," %%a in ("%TIME%") do ( - set /A "BUILD_BEGIN_TIMESTAMP=(((%%a * 60) + 1%%b %% 100)* 60 + 1%%c %% 100) * 100 + 1%%d %% 100" -) - -:: Build Library -echo * Building 32-bit projects -%MSBUILD% /t:rebuild /p:Platform=Win32 /v:q /m ..\Rainmeter.sln > "BuildLog.txt" -if not %ERRORLEVEL% == 0 echo ERROR %ERRORLEVEL%: Build failed & goto END - -echo * Building 64-bit projects -%MSBUILD% /t:rebuild /p:Platform=x64 /v:q /m ..\Rainmeter.sln > "BuildLog.txt" -if not %ERRORLEVEL% == 0 echo ERROR %ERRORLEVEL%: Build failed & goto END - -:BUILDLANGUAGES -echo * Building languages - -:: Build all language libraries ->".\Installer\Languages.nsh" echo. -for /f "tokens=1,2,3 delims=," %%a in (..\Language\List) do ( - > "..\Language\Language.rc" echo #include "%%a.h" - >>"..\Language\Language.rc" echo #include "Resource.rc" - >>".\Installer\Languages.nsh" echo ${IncludeLanguage} "%%b" "%%a" - set LANGDLL_PARAMS='%%a - ${LANGFILE_%%b_NAME}' '${LANG_%%b}' '${LANG_%%b_CP}' !LANGDLL_PARAMS! - set LANGUAGE_IDS=${LANG_%%b},!LANGUAGE_IDS! - - %MSBUILD% /t:Language /p:Platform=Win32;TargetName=%%c /v:q ..\Rainmeter.sln > "BuildLog.txt" - if not %ERRORLEVEL% == 0 echo ERROR: Building language %%a failed & goto END -) ->>".\Installer\Languages.nsh" echo ^^!define LANGDLL_PARAMS "%LANGDLL_PARAMS%" ->>".\Installer\Languages.nsh" echo ^^!define LANGUAGE_IDS "%LANGUAGE_IDS%" - -:: Restore English -echo #include "English.h"> "..\Language\Language.rc" -echo #include "Resource.rc">> "..\Language\Language.rc" -if "%1" == "BUILDLANGUAGES" ( - xcopy /Q /S /Y ..\x32-Release\Languages\*.dll ..\x64-Release\Languages\ > nul - xcopy /Q /S /Y ..\x32-Release\Release\Languages\*.dll ..\x32-Debug\Languages\ > nul - xcopy /Q /S /Y ..\x32-Release\Release\Languages\*.dll ..\x64-Debug\Languages\ > nul - if exist "BuildLog.txt" del "BuildLog.txt" - goto END -) - -:: Sign binaries -if not "%CERTFILE%" == "" ( - echo * Signing binaries - for %%Z in (Rainmeter.dll Rainmeter.exe SkinInstaller.exe SkinInstaller.dll) do ( - %SIGNTOOL% ..\x32-Release\%%Z > BuildLog.txt - if not %ERRORLEVEL% == 0 echo ERROR %ERRORLEVEL%: Signing x32\%%Z failed & goto END - %SIGNTOOL% ..\x64-Release\%%Z > BuildLog.txt - if not %ERRORLEVEL% == 0 echo ERROR %ERRORLEVEL%: Signing x64\%%Z failed & goto END - ) -) - -:: Build installer -echo * Building installer - -set INSTALLER_NAME=Rainmeter-%VERSION_SHORT%.exe -if not "%1" == "RELEASE" set INSTALLER_NAME=Rainmeter-%VERSION_SHORT%-r%VERSION_REVISION%-beta.exe - -set INSTALLER_DEFINES=^ - /DOUTFILE="%INSTALLER_NAME%"^ - /DVERSION_FULL="%VERSION_FULL%"^ - /DVERSION_SHORT="%VERSION_SHORT%"^ - /DVERSION_REVISION="%VERSION_REVISION%" -if not "%1" == "RELEASE" set INSTALLER_DEFINES=!INSTALLER_DEFINES! /DBETA - -"%MAKENSIS%" %INSTALLER_DEFINES% .\Installer\Installer.nsi > "BuildLog.txt" -if not %ERRORLEVEL% == 0 echo ERROR %ERRORLEVEL%: Building installer failed & goto END - -:: Sign installer -if not "%CERTFILE%" == "" ( - echo * Signing installer - %SIGNTOOL% %INSTALLER_NAME% > BuildLog.txt - if not %ERRORLEVEL% == 0 echo ERROR %ERRORLEVEL%: Signing installer failed & goto END -) - -:: If we got here, build was successful so delete BuildLog.txt -if exist "BuildLog.txt" del "BuildLog.txt" - -for /F "tokens=1-4 delims=:.," %%a in ("%TIME%") do ( - set /A "BUILD_END_TIMESTAMP=(((%%a * 60) + 1%%b %% 100)* 60 + %%c %% 100) * 100 + 1%%d %% 100" -) -set /A "BUILD_ELAPSED_TIME=(%BUILD_END_TIMESTAMP% - %BUILD_BEGIN_TIMESTAMP%) / 100" -echo * Build complete. Elapsed time: %BUILD_ELAPSED_TIME% sec - -:END -if exist ".\Installer\Languages.nsh" del ".\Installer\Languages.nsh" -echo. -pause +@echo off +setlocal EnableDelayedExpansion + +set VCVARSALL=%VS120COMNTOOLS%..\..\VC\vcvarsall.bat +set MAKENSIS=%PROGRAMFILES%\NSIS\MakeNSIS.exe +set GIT=%PROGRAMFILES%\Git\bin\git.exe + +:: Set VERSION_REVISION to non-zero value to override +set VERSION_MAJOR=3 +set VERSION_MINOR=2 +set VERSION_SUBMINOR=0 +set VERSION_REVISION=0 +set ISBETA=true + +if "%1" == "RELEASE" set ISBETA=false +if "%1" == "BUILDVERSION" goto BUILDVERSION +echo Rainmeter Build +echo ---------------------------------------------- +echo. + +if not exist "%VCVARSALL%" echo ERROR: vcvarsall.bat not found & goto END +call "%VCVARSALL%" x86 > nul + +set MSBUILD="msbuild.exe" /nologo^ + /p:PlatformToolset=v120_xp;VisualStudioVersion=12.0^ + /p:ExcludeTests=true^ + /p:Configuration=Release + +if exist "Certificate.bat" call "Certificate.bat" > nul +set SIGNTOOL="signtool.exe" sign /t http://time.certum.pl /f "%CERTFILE%" /p "%CERTKEY%" + +if "%1" == "BUILDLANGUAGES" goto BUILDLANGUAGES + +if exist "%MAKENSIS%" goto NSISFOUND +set MAKENSIS=%MAKENSIS:Program Files\=Program Files (x86)\% +if not exist "%MAKENSIS%" echo ERROR: MakeNSIS.exe not found & goto END +:NSISFOUND + +:BUILDVERSION + +if not exist "..\.git" goto UPDATEVERSION +if not "%VERSION_REVISION%" == "0" goto UPDATEVERSION + +:: git +if exist "%GIT%" goto GITFOUND +set GIT=%GIT:Program Files\=Program Files (x86)\% +if not exist "%GIT%" echo ERROR: git.exe not found & goto END +:GITFOUND +set /a VERSION_REVISION=0 +for /f "usebackq delims= " %%G in (`"%GIT%" rev-list --all --count`) do set VERSION_REVISION=%%G + +:UPDATEVERSION + +set VERSION_FULL=%VERSION_MAJOR%.%VERSION_MINOR%.%VERSION_SUBMINOR%.%VERSION_REVISION% +set VERSION_SHORT=%VERSION_MAJOR%.%VERSION_MINOR% +if not "%VERSION_SUBMINOR%" == "0" set VERSION_SHORT=!VERSION_SHORT!.%VERSION_SUBMINOR% + +:: Update Version.h +> "..\Version.h" echo #pragma once +>>"..\Version.h" echo #define FILEVER %VERSION_MAJOR%,%VERSION_MINOR%,%VERSION_SUBMINOR%,%VERSION_REVISION% +>>"..\Version.h" echo #define PRODUCTVER FILEVER +>>"..\Version.h" echo #define STRFILEVER "%VERSION_FULL%" +>>"..\Version.h" echo #define STRPRODUCTVER STRFILEVER +>>"..\Version.h" echo #define APPVERSION L"%VERSION_MAJOR%.%VERSION_MINOR%.%VERSION_SUBMINOR%" +>>"..\Version.h" echo #define RAINMETER_VERSION ((%VERSION_MAJOR% * 1000000) + (%VERSION_MINOR% * 1000) + %VERSION_SUBMINOR%) +>>"..\Version.h" echo const int revision_number = %VERSION_REVISION%; +>>"..\Version.h" echo const bool revision_beta = %ISBETA%; + +:: Update Version.cs +> "..\Version.cs" echo namespace Rainmeter +>>"..\Version.cs" echo { +>>"..\Version.cs" echo public class Version +>>"..\Version.cs" echo { +>>"..\Version.cs" echo #if X64 +>>"..\Version.cs" echo public const string Informational = "%VERSION_FULL% (64-bit)"; +>>"..\Version.cs" echo #else +>>"..\Version.cs" echo public const string Informational = "%VERSION_FULL% (32-bit)"; +>>"..\Version.cs" echo #endif +>>"..\Version.cs" echo } +>>"..\Version.cs" echo } + + +if "%1" == "BUILDVERSION" goto :eof +echo * Updated Version.h + +:: Set vcbuild environment variables and begin build +echo * Starting build for %VERSION_FULL% +for /F "tokens=1-4 delims=:.," %%a in ("%TIME%") do ( + set /A "BUILD_BEGIN_TIMESTAMP=(((%%a * 60) + 1%%b %% 100)* 60 + 1%%c %% 100) * 100 + 1%%d %% 100" +) + +:: Build Library +echo * Building 32-bit projects +%MSBUILD% /t:rebuild /p:Platform=Win32 /v:q /m ..\Rainmeter.sln > "BuildLog.txt" +if not %ERRORLEVEL% == 0 echo ERROR %ERRORLEVEL%: Build failed & goto END + +echo * Building 64-bit projects +%MSBUILD% /t:rebuild /p:Platform=x64 /v:q /m ..\Rainmeter.sln > "BuildLog.txt" +if not %ERRORLEVEL% == 0 echo ERROR %ERRORLEVEL%: Build failed & goto END + +:BUILDLANGUAGES +echo * Building languages + +:: Build all language libraries +>".\Installer\Languages.nsh" echo. +for /f "tokens=1,2,3 delims=," %%a in (..\Language\List) do ( + > "..\Language\Language.rc" echo #include "%%a.h" + >>"..\Language\Language.rc" echo #include "Resource.rc" + >>".\Installer\Languages.nsh" echo ${IncludeLanguage} "%%b" "%%a" + set LANGDLL_PARAMS='%%a - ${LANGFILE_%%b_NAME}' '${LANG_%%b}' '${LANG_%%b_CP}' !LANGDLL_PARAMS! + set LANGUAGE_IDS=${LANG_%%b},!LANGUAGE_IDS! + + %MSBUILD% /t:Language /p:Platform=Win32;TargetName=%%c /v:q ..\Rainmeter.sln > "BuildLog.txt" + if not %ERRORLEVEL% == 0 echo ERROR: Building language %%a failed & goto END +) +>>".\Installer\Languages.nsh" echo ^^!define LANGDLL_PARAMS "%LANGDLL_PARAMS%" +>>".\Installer\Languages.nsh" echo ^^!define LANGUAGE_IDS "%LANGUAGE_IDS%" + +:: Restore English +echo #include "English.h"> "..\Language\Language.rc" +echo #include "Resource.rc">> "..\Language\Language.rc" +if "%1" == "BUILDLANGUAGES" ( + xcopy /Q /S /Y ..\x32-Release\Languages\*.dll ..\x64-Release\Languages\ > nul + xcopy /Q /S /Y ..\x32-Release\Release\Languages\*.dll ..\x32-Debug\Languages\ > nul + xcopy /Q /S /Y ..\x32-Release\Release\Languages\*.dll ..\x64-Debug\Languages\ > nul + if exist "BuildLog.txt" del "BuildLog.txt" + goto END +) + +:: Sign binaries +if not "%CERTFILE%" == "" ( + echo * Signing binaries + for %%Z in (Rainmeter.dll Rainmeter.exe SkinInstaller.exe SkinInstaller.dll) do ( + %SIGNTOOL% ..\x32-Release\%%Z > BuildLog.txt + if not %ERRORLEVEL% == 0 echo ERROR %ERRORLEVEL%: Signing x32\%%Z failed & goto END + %SIGNTOOL% ..\x64-Release\%%Z > BuildLog.txt + if not %ERRORLEVEL% == 0 echo ERROR %ERRORLEVEL%: Signing x64\%%Z failed & goto END + ) +) + +:: Build installer +echo * Building installer + +set INSTALLER_NAME=Rainmeter-%VERSION_SHORT%.exe +if not "%1" == "RELEASE" set INSTALLER_NAME=Rainmeter-%VERSION_SHORT%-r%VERSION_REVISION%-beta.exe + +set INSTALLER_DEFINES=^ + /DOUTFILE="%INSTALLER_NAME%"^ + /DVERSION_FULL="%VERSION_FULL%"^ + /DVERSION_SHORT="%VERSION_SHORT%"^ + /DVERSION_REVISION="%VERSION_REVISION%" +if not "%1" == "RELEASE" set INSTALLER_DEFINES=!INSTALLER_DEFINES! /DBETA + +"%MAKENSIS%" %INSTALLER_DEFINES% .\Installer\Installer.nsi > "BuildLog.txt" +if not %ERRORLEVEL% == 0 echo ERROR %ERRORLEVEL%: Building installer failed & goto END + +:: Sign installer +if not "%CERTFILE%" == "" ( + echo * Signing installer + %SIGNTOOL% %INSTALLER_NAME% > BuildLog.txt + if not %ERRORLEVEL% == 0 echo ERROR %ERRORLEVEL%: Signing installer failed & goto END +) + +:: If we got here, build was successful so delete BuildLog.txt +if exist "BuildLog.txt" del "BuildLog.txt" + +for /F "tokens=1-4 delims=:.," %%a in ("%TIME%") do ( + set /A "BUILD_END_TIMESTAMP=(((%%a * 60) + 1%%b %% 100)* 60 + %%c %% 100) * 100 + 1%%d %% 100" +) +set /A "BUILD_ELAPSED_TIME=(%BUILD_END_TIMESTAMP% - %BUILD_BEGIN_TIMESTAMP%) / 100" +echo * Build complete. Elapsed time: %BUILD_ELAPSED_TIME% sec + +:END +if exist ".\Installer\Languages.nsh" del ".\Installer\Languages.nsh" +echo. +pause diff --git a/BuildTools/BuildLanguages.bat b/Build/BuildLanguages.bat similarity index 97% rename from BuildTools/BuildLanguages.bat rename to Build/BuildLanguages.bat index cd8047ac..4a5f9b19 100644 --- a/BuildTools/BuildLanguages.bat +++ b/Build/BuildLanguages.bat @@ -1,2 +1,2 @@ -@echo off +@echo off "Build.bat" BUILDLANGUAGES \ No newline at end of file diff --git a/BuildTools/BuildVersion.bat b/Build/BuildVersion.bat similarity index 94% rename from BuildTools/BuildVersion.bat rename to Build/BuildVersion.bat index fcf49acf..1ffcfc2b 100644 --- a/BuildTools/BuildVersion.bat +++ b/Build/BuildVersion.bat @@ -1,2 +1,2 @@ -@echo off -"Build.bat" BUILDVERSION +@echo off +"Build.bat" BUILDVERSION diff --git a/BuildTools/DllExporter/AssemblyInfo.cs b/Build/DllExporter/AssemblyInfo.cs similarity index 100% rename from BuildTools/DllExporter/AssemblyInfo.cs rename to Build/DllExporter/AssemblyInfo.cs diff --git a/BuildTools/DllExporter/DllExporter.csproj b/Build/DllExporter/DllExporter.csproj similarity index 100% rename from BuildTools/DllExporter/DllExporter.csproj rename to Build/DllExporter/DllExporter.csproj diff --git a/BuildTools/DllExporter/Program.cs b/Build/DllExporter/Program.cs similarity index 100% rename from BuildTools/DllExporter/Program.cs rename to Build/DllExporter/Program.cs diff --git a/BuildTools/Installer/Header.bmp b/Build/Installer/Header.bmp similarity index 100% rename from BuildTools/Installer/Header.bmp rename to Build/Installer/Header.bmp diff --git a/BuildTools/Installer/Icon.ico b/Build/Installer/Icon.ico similarity index 100% rename from BuildTools/Installer/Icon.ico rename to Build/Installer/Icon.ico diff --git a/BuildTools/Installer/Installer.nsi b/Build/Installer/Installer.nsi similarity index 96% rename from BuildTools/Installer/Installer.nsi rename to Build/Installer/Installer.nsi index 7eba80fc..f3d0aa8c 100644 --- a/BuildTools/Installer/Installer.nsi +++ b/Build/Installer/Installer.nsi @@ -1,959 +1,959 @@ -/* - Copyright (C) 2012 Birunthan Mohanathas - - This program is free software; you can redistribute it and/or - modify it under the terms of the GNU General Public License - as published by the Free Software Foundation; either version 2 - of the License, or (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -*/ - -!verbose 3 -!addplugindir ".\" -!include "MUI2.nsh" -!include "x64.nsh" -!include "FileFunc.nsh" -!include "WordFunc.nsh" -!include "WinVer.nsh" -!include "UAC.nsh" - -!ifndef OUTFILE - !define OUTFILE "Rainmeter-test.exe" - !define VERSION_FULL "0.0.0.0" - !define VERSION_SHORT "0.0" - !define VERSION_REVISION "000" -!else - !define INCLUDEFILES -!endif - -Name "Rainmeter" -VIAddVersionKey "ProductName" "Rainmeter" -VIAddVersionKey "FileDescription" "Rainmeter Installer" -VIAddVersionKey "FileVersion" "${VERSION_FULL}" -VIAddVersionKey "ProductVersion" "${VERSION_FULL}" -VIAddVersionKey "OriginalFilename" "${OUTFILE}" -VIAddVersionKey "LegalCopyright" "Copyright (C) 2009-2013 - All authors" -VIProductVersion "${VERSION_FULL}" -BrandingText " " -SetCompressor /SOLID lzma -RequestExecutionLevel user -InstallDirRegKey HKLM "SOFTWARE\Rainmeter" "" -ShowInstDetails nevershow -AllowSkipFiles off -XPStyle on -OutFile "..\${OUTFILE}" -ReserveFile "${NSISDIR}\Plugins\LangDLL.dll" -ReserveFile "${NSISDIR}\Plugins\nsDialogs.dll" -ReserveFile "${NSISDIR}\Plugins\System.dll" -ReserveFile ".\UAC.dll" - -!define REQUIREDSPACE 5 ; Minimum required space for install (in MB) - -; Error levels (for silent install) -!define ERROR_UNSUPPORTED 3 -!define ERROR_NOTADMIN 4 -!define ERROR_WRITEFAIL 5 -!define ERROR_NOVCREDIST 6 -!define ERROR_CLOSEFAIL 7 - -; Additional Windows definitions -!define BCM_SETSHIELD 0x0000160c -!define PF_XMMI_INSTRUCTIONS_AVAILABLE 6 -!define PF_XMMI64_INSTRUCTIONS_AVAILABLE 10 - -!define MUI_ICON ".\Icon.ico" -!define MUI_UNICON ".\Icon.ico" -!define MUI_WELCOMEFINISHPAGE_BITMAP ".\Wizard.bmp" -!define MUI_FINISHPAGE_RUN -!define MUI_FINISHPAGE_RUN_FUNCTION FinishRun -!define MUI_WELCOMEPAGE ; For language strings - -Page custom PageWelcome PageWelcomeOnLeave -Page custom PageOptions PageOptionsOnLeave -!insertmacro MUI_PAGE_INSTFILES -!insertmacro MUI_PAGE_FINISH - -UninstPage custom un.PageOptions un.GetOptions -!insertmacro MUI_UNPAGE_INSTFILES - -; Include languages -!macro IncludeLanguage LANGUAGE CUSTOMLANGUAGE - !insertmacro MUI_LANGUAGE ${LANGUAGE} - !insertmacro LANGFILE_INCLUDE "..\..\Language\${CUSTOMLANGUAGE}.nsh" -!macroend -!define IncludeLanguage "!insertmacro IncludeLanguage" -!include "Languages.nsh" - -Var NonDefaultLanguage -Var AutoStartup -Var Install64Bit -Var InstallPortable -Var un.DeleteAll - -; Install -; -------------------------------------- -Function .onInit - ${If} ${RunningX64} - ${EnableX64FSRedirection} - ${EndIf} - - ${IfNot} ${UAC_IsInnerInstance} - ${If} ${IsWin2000} - ${OrIf} ${IsWinXP} - ${AndIf} ${AtMostServicePack} 2 - ${OrIf} ${IsWin2003} - ${AndIf} ${AtMostServicePack} 0 - ${IfNot} ${Silent} - MessageBox MB_OK|MB_ICONSTOP "Rainmeter requires Windows XP SP3 or later." - ${EndIf} - SetErrorLevel ${ERROR_UNSUPPORTED} - Quit - ${EndIf} - - System::Call 'kernel32::IsProcessorFeaturePresent(i${PF_XMMI_INSTRUCTIONS_AVAILABLE})i.r0' - ${If} $0 = 0 - ${IfNot} ${Silent} - MessageBox MB_OK|MB_ICONSTOP "Rainmeter requires a Pentium III or later processor." - ${EndIf} - SetErrorLevel ${ERROR_UNSUPPORTED} - Quit - ${EndIf} - - ReadRegStr $0 HKLM "SOFTWARE\Rainmeter" "Language" - ReadRegDWORD $NonDefaultLanguage HKLM "SOFTWARE\Rainmeter" "NonDefault" - - ${IfNot} ${Silent} - ${If} $0 == "" - ${OrIf} $0 <> $LANGUAGE - ${AndIf} $NonDefaultLanguage != 1 - ; New install or better match - LangDLL::LangDialog "$(^SetupCaption)" "Please select the installer language.$\n$(SELECTLANGUAGE)" AC ${LANGDLL_PARAMS} "" - Pop $0 - ${If} $0 == "cancel" - Abort - ${EndIf} - - ${If} $0 <> $LANGUAGE - ; User selected non-default language - StrCpy $NonDefaultLanguage 1 - ${EndIf} - ${EndIf} - - StrCpy $LANGUAGE $0 - ${Else} - ${If} $0 != "" - StrCpy $LANGUAGE $0 - ${EndIf} - - ${GetParameters} $R1 - - ClearErrors - ${GetOptions} $R1 "/LANGUAGE=" $0 - ${IfNot} ${Errors} - ${If} $LANGUAGE != $0 - StrCpy $NonDefaultLanguage 1 - ${EndIf} - - StrCpy $LANGUAGE $0 - ${EndIf} - - ${GetOptions} $R1 "/STARTUP=" $0 - ${If} $0 = 1 - StrCpy $AutoStartup 1 - ${EndIf} - - ${GetOptions} $R1 "/PORTABLE=" $0 - ${If} $0 = 1 - StrCpy $InstallPortable 1 - ${Else} - ${IfNot} ${UAC_IsAdmin} - SetErrorLevel ${ERROR_NOTADMIN} - Quit - ${EndIf} - ${EndIf} - - ${GetOptions} $R1 "/VERSION=" $0 - ${If} $0 = 64 - StrCpy $Install64Bit 1 - - ${If} $INSTDIR == "" - StrCpy $INSTDIR "$PROGRAMFILES64\Rainmeter" - ${EndIf} - ${Else} - ${If} $INSTDIR == "" - StrCpy $INSTDIR "$PROGRAMFILES\Rainmeter" - ${EndIf} - ${EndIf} - - ClearErrors - CreateDirectory "$INSTDIR" - WriteINIStr "$INSTDIR\writetest~.rm" "1" "1" "1" - Delete "$INSTDIR\writetest~.rm" - - ${If} ${Errors} - RMDir "$INSTDIR" - SetErrorLevel ${ERROR_WRITEFAIL} - Quit - ${EndIf} - ${EndIf} - - ; If the language was set to a non-existent language, reset it back to English. - ${WordFind} ",${LANGUAGE_IDS}" ",$LANGUAGE," "E+1{" $0 - ${If} ${Errors} - StrCpy $LANGUAGE "1033" - ${EndIf} - ${Else} - ; Exchange settings with user instance - !insertmacro UAC_AsUser_Call Function ExchangeSettings ${UAC_SYNCREGISTERS} - StrCpy $AutoStartup $1 - StrCpy $Install64Bit $2 - StrCpy $NonDefaultLanguage $3 - StrCpy $LANGUAGE $4 - StrCpy $INSTDIR $5 - ${EndIf} -FunctionEnd - -Function ExchangeSettings - StrCpy $1 $AutoStartup - StrCpy $2 $Install64Bit - StrCpy $3 $NonDefaultLanguage - StrCpy $4 $LANGUAGE - StrCpy $5 $INSTDIR - HideWindow -FunctionEnd - -Function PageWelcome - ${If} ${UAC_IsInnerInstance} - ${If} ${UAC_IsAdmin} - ; Skip page - Abort - ${Else} - MessageBox MB_OK|MB_ICONSTOP "$(ADMINERROR) (Inner)" - Quit - ${EndIf} - ${EndIf} - - !insertmacro MUI_HEADER_TEXT "$(INSTALLOPTIONS)" "$(^ComponentsSubText1)" - nsDialogs::Create 1044 - Pop $0 - nsDialogs::SetRTL $(^RTL) - SetCtlColors $0 "" "${MUI_BGCOLOR}" - - ${NSD_CreateBitmap} 0u 0u 109u 193u "" - Pop $0 - ${NSD_SetImage} $0 "$PLUGINSDIR\modern-wizard.bmp" $R0 - - ${NSD_CreateLabel} 120u 10u 195u 38u "$(MUI_TEXT_WELCOME_INFO_TITLE)" - Pop $0 - SetCtlColors $0 "" "${MUI_BGCOLOR}" - CreateFont $1 "$(^Font)" "12" "700" - SendMessage $0 ${WM_SETFONT} $1 0 - - ${NSD_CreateLabel} 120u 55u 195u 12u "$(^ComponentsSubText1)" - Pop $0 - SetCtlColors $0 "" "${MUI_BGCOLOR}" - - ${NSD_CreateRadioButton} 120u 70u 205u 12u "$(STANDARDINST)" - Pop $R1 - SetCtlColors $R1 "" "${MUI_BGCOLOR}" - ${NSD_AddStyle} $R1 ${WS_GROUP} - SendMessage $R1 ${WM_SETFONT} $mui.Header.Text.Font 0 - - ${NSD_CreateLabel} 132u 82u 185u 24u "$(STANDARDINSTDESC)" - Pop $0 - SetCtlColors $0 "" "${MUI_BGCOLOR}" - - ${NSD_CreateRadioButton} 120u 106u 310u 12u "$(PORTABLEINST)" - Pop $R2 - SetCtlColors $R2 "" "${MUI_BGCOLOR}" - ${NSD_AddStyle} $R2 ${WS_TABSTOP} - SendMessage $R2 ${WM_SETFONT} $mui.Header.Text.Font 0 - - ${NSD_CreateLabel} 132u 118u 185u 52u "$(PORTABLEINSTDESC)" - Pop $0 - SetCtlColors $0 "" "${MUI_BGCOLOR}" - - ${If} $InstallPortable = 1 - ${NSD_Check} $R2 - ${Else} - ${NSD_Check} $R1 - ${EndIf} - - Call muiPageLoadFullWindow - - nsDialogs::Show - ${NSD_FreeImage} $R0 -FunctionEnd - -Function PageWelcomeOnLeave - ${NSD_GetState} $R2 $InstallPortable - Call muiPageUnloadFullWindow -FunctionEnd - -Function PageOptions - ${If} ${UAC_IsInnerInstance} - ${AndIf} ${UAC_IsAdmin} - ; Skip page - Abort - ${EndIf} - - !insertmacro MUI_HEADER_TEXT "$(INSTALLOPTIONS)" "$(INSTALLOPTIONSDESC)" - nsDialogs::Create 1018 - nsDialogs::SetRTL $(^RTL) - - ${NSD_CreateGroupBox} 0 0u -1u 36u "$(^DirSubText)" - - ${NSD_CreateDirRequest} 6u 14u 232u 14u "" - Pop $R0 - ${NSD_OnChange} $R0 PageOptionsDirectoryOnChange - - ${NSD_CreateBrowseButton} 242u 14u 50u 14u "$(^BrowseBtn)" - Pop $R1 - ${NSD_OnClick} $R1 PageOptionsBrowseOnClick - - StrCpy $1 0 - - StrCpy $R2 0 - ${If} ${RunningX64} - ${If} $InstallPortable = 1 - ${OrIf} $INSTDIR == "" - ${NSD_CreateCheckBox} 6u 54u 285u 12u "$(INSTALL64BIT)" - Pop $R2 - StrCpy $1 30u - ${EndIf} - ${EndIf} - - ${If} $InstallPortable <> 1 - ${If} $1 = 0 - StrCpy $0 54u - StrCpy $1 30u - ${Else} - StrCpy $0 66u - StrCpy $1 42u - ${EndIf} - - ${NSD_CreateCheckbox} 6u $0 285u 12u "$(AUTOSTARTUP)" - Pop $R3 - - ${If} $INSTDIR == "" - ${NSD_Check} $R3 - ${Else} - SetShellVarContext all - ${If} ${FileExists} "$SMSTARTUP\Rainmeter.lnk" - ${NSD_Check} $R3 - ${EndIf} - - SetShellVarContext current - ${If} ${FileExists} "$SMSTARTUP\Rainmeter.lnk" - ${NSD_Check} $R3 - ${EndIf} - ${EndIf} - ${Else} - StrCpy $R3 0 - ${EndIf} - - ${If} $1 <> 0 - ${NSD_CreateGroupBox} 0 42u -1u $1 "$(ADDITIONALOPTIONS)" - ${EndIf} - - ; Set default directory - ${If} $InstallPortable = 1 - ${GetRoot} "$WINDIR" $0 - ${NSD_SetText} $R0 "$0\Rainmeter" - ${Else} - ; Disable Directory editbox and Browse button if already installed - SendMessage $R0 ${EM_SETREADONLY} 1 0 - - ${If} $INSTDIR != "" - EnableWindow $R1 0 - ${NSD_SetText} $R0 "$INSTDIR" - ${Else} - ; Fresh install - ${If} ${RunningX64} - ${NSD_SetText} $R0 "$PROGRAMFILES64\Rainmeter" - ${NSD_Check} $R2 - ${Else} - ${NSD_SetText} $R0 "$PROGRAMFILES\Rainmeter" - ${EndIf} - ${EndIf} - ${EndIf} - - ; Show UAC shield on Install button if requiredd - GetDlgItem $0 $HWNDPARENT 1 - ${If} $InstallPortable = 1 - SendMessage $0 ${BCM_SETSHIELD} 0 0 - ${Else} - SendMessage $0 ${BCM_SETSHIELD} 0 1 - - ; Hide Back button - GetDlgItem $0 $HWNDPARENT 3 - ShowWindow $0 ${SW_HIDE} - ${EndIf} - - nsDialogs::Show -FunctionEnd - -Function PageOptionsDirectoryOnChange - ${NSD_GetText} $R0 $0 - - ; Disable Install button if not enough space - GetDlgItem $1 $HWNDPARENT 1 - ${GetRoot} $0 $2 - ${DriveSpace} "$2\" "/D=F /S=M" $3 - ${If} $3 < ${REQUIREDSPACE} - EnableWindow $1 0 - ${Else} - EnableWindow $1 1 - ${EndIf} - - StrCpy $Install64Bit 0 - ${If} ${RunningX64} - ${If} ${FileExists} "$0\Rainmeter.exe" - MoreInfo::GetProductVersion "$0\Rainmeter.exe" - Pop $0 - StrCpy $0 $0 2 -7 - ${If} $0 == 64 - StrCpy $Install64Bit 1 - ${EndIf} - - ${If} $R2 != 0 - ${NSD_SetState} $R2 $Install64Bit - EnableWindow $R2 0 - ${EndIf} - ${Else} - ${If} $R2 != 0 - EnableWindow $R2 1 - ${EndIf} - ${EndIf} - ${EndIf} -FunctionEnd - -Function PageOptionsBrowseOnClick - ${NSD_GetText} $R0 $0 - nsDialogs::SelectFolderDialog "$(^DirBrowseText)" $0 - Pop $1 - ${If} $1 != error - ${NSD_SetText} $R0 $1 - ${EndIf} -FunctionEnd - -Function PageOptionsOnLeave - ; Verify that selected folder is writable - ${NSD_GetText} $R0 $0 - ${If} $InstallPortable = 1 - ClearErrors - CreateDirectory "$0" - WriteINIStr "$0\writetest~.rm" "1" "1" "1" - Delete "$0\writetest~.rm" - - ${If} ${Errors} - RMDir "$0" - MessageBox MB_OK|MB_ICONEXCLAMATION "$(WRITEERROR)" - Abort - ${EndIf} - - RMDir "$0" - ${EndIf} - - StrCpy $INSTDIR $0 - - GetDlgItem $0 $HWNDPARENT 1 - EnableWindow $0 0 - - ${If} $R2 != 0 - ${NSD_GetState} $R2 $Install64Bit - ${EndIf} - - ${If} $R3 != 0 - ${NSD_GetState} $R3 $AutoStartup - ${EndIf} - - ${If} $InstallPortable <> 1 - ${IfNot} ${UAC_IsAdmin} - ; UAC_IsAdmin seems to return incorrect result sometimes. Recheck with UserInfo::GetAccountType to be sure. - UserInfo::GetAccountType - Pop $0 - ${If} $0 != "Admin" -UAC_TryAgain: - !insertmacro UAC_RunElevated - ${Switch} $0 - ${Case} 0 - ${IfThen} $1 = 1 ${|} Quit ${|} - ${IfThen} $3 <> 0 ${|} ${Break} ${|} - ${If} $1 = 3 - MessageBox MB_OK|MB_ICONSTOP|MB_TOPMOST|MB_SETFOREGROUND "$(ADMINERROR)" /SD IDNO IDOK UAC_TryAgain IDNO 0 - ${EndIf} - ${Case} 1223 - Quit - ${Case} 1062 - MessageBox MB_OK|MB_ICONSTOP|MB_TOPMOST|MB_SETFOREGROUND "$(LOGONERROR)" - Quit - ${Default} - MessageBox MB_OK|MB_ICONSTOP|MB_TOPMOST|MB_SETFOREGROUND "$(UACERROR) ($0)" - Quit - ${EndSwitch} - ${EndIf} - ${EndIf} - ${EndIf} -FunctionEnd - -!macro InstallFiles DIR ARCH - SetOutPath "$INSTDIR" - File "..\..\${DIR}-Release\Rainmeter.exe" - File "..\..\${DIR}-Release\Rainmeter.dll" - File "..\..\${DIR}-Release\SkinInstaller.exe" - File "..\..\${DIR}-Release\SkinInstaller.dll" - - SetOutPath "$INSTDIR\Plugins" - File /x *Example*.dll "..\..\${DIR}-Release\Plugins\*.dll" - - SetOutPath "$INSTDIR\Runtime" - File "$%VS120COMNTOOLS%..\..\VC\redist\${ARCH}\Microsoft.VC120.CRT\msvcp120.dll" - File "$%VS120COMNTOOLS%..\..\VC\redist\${ARCH}\Microsoft.VC120.CRT\msvcr120.dll" -!macroend - -!macro RemoveStartMenuShortcuts STARTMENUPATH - Delete "${STARTMENUPATH}\Rainmeter.lnk" - Delete "${STARTMENUPATH}\Rainmeter Help.lnk" - Delete "${STARTMENUPATH}\Rainmeter Help.URL" - Delete "${STARTMENUPATH}\Remove Rainmeter.lnk" - Delete "${STARTMENUPATH}\RainThemes.lnk" - Delete "${STARTMENUPATH}\RainThemes Help.lnk" - Delete "${STARTMENUPATH}\RainBrowser.lnk" - Delete "${STARTMENUPATH}\RainBackup.lnk" - Delete "${STARTMENUPATH}\Rainstaller.lnk" - Delete "${STARTMENUPATH}\Skin Installer.lnk" - Delete "${STARTMENUPATH}\Rainstaller Help.lnk" - RMDir "${STARTMENUPATH}" -!macroend - -Section - SetOutPath "$PLUGINSDIR" - SetShellVarContext current - - Var /GLOBAL InstArc - ${If} $Install64Bit = 1 - StrCpy $InstArc "x64" - ${Else} - StrCpy $InstArc "x86" - ${EndIf} - - ${If} $InstallPortable <> 1 - ${AndIfNot} ${AtLeastWinVista} - ; Download and install .NET if required - ReadRegDWORD $0 HKLM "SOFTWARE\Microsoft\NET Framework Setup\NDP\v2.0.50727" "Install" - ${If} $0 <> 1 - ${If} $Install64Bit <> 1 - NSISdl::download /TIMEOUT=30000 "http://download.microsoft.com/download/5/6/7/567758a3-759e-473e-bf8f-52154438565a/dotnetfx.exe" "$PLUGINSDIR\dotnetfx.exe" - ${Else} - NSISdl::download /TIMEOUT=30000 "http://download.microsoft.com/download/a/3/f/a3f1bf98-18f3-4036-9b68-8e6de530ce0a/NetFx64.exe" "$PLUGINSDIR\dotnetfx.exe" - ${EndIf} - Pop $0 - - ${If} $0 == "success" - ExecWait '"$PLUGINSDIR\dotnetfx.exe" /q:a /c:"install /q"' $0 - Delete "$PLUGINSDIR\dotnetfx.exe" - - ${If} $0 = 3010 - SetRebootFlag true - ${ElseIf} $0 <> 0 - MessageBox MB_OK|MB_ICONSTOP "$(DOTNETINSTERROR)" - Quit - ${EndIf} - ${ElseIf} $0 == "cancel" - Quit - ${Else} - MessageBox MB_OK|MB_ICONSTOP "$(DOTNETINSTERROR)" - Quit - ${EndIf} - ${EndIf} - ${EndIf} - - SetOutPath "$INSTDIR" - - ; Close Rainmeter (and wait up to five seconds) - ${ForEach} $0 10 0 - 1 - FindWindow $1 "DummyRainWClass" "Rainmeter control window" - ClearErrors - Delete "$INSTDIR\Rainmeter.exe" - ${If} $1 = 0 - ${AndIfNot} ${Errors} - ${Break} - ${EndIf} - - SendMessage $1 ${WM_CLOSE} 0 0 - - ${If} $0 = 0 - ${If} ${Silent} - SetErrorLevel ${ERROR_CLOSEFAIL} - Quit - ${Else} - MessageBox MB_RETRYCANCEL|MB_ICONSTOP "$(RAINMETERCLOSEERROR)" IDRETRY +2 - Quit - ${EndIf} - ${EndIf} - - Sleep 500 - ${Next} - - ; Move Rainmeter.ini to %APPDATA% if needed - ${IfNot} ${Silent} - ${AndIf} ${FileExists} "$INSTDIR\Rainmeter.ini" - ${If} $InstallPortable <> 1 - ${If} $Install64Bit = 1 - ${AndIf} "$INSTDIR" == "$PROGRAMFILES64\Rainmeter" - ${OrIf} "$INSTDIR" == "$PROGRAMFILES\Rainmeter" - MessageBox MB_YESNO|MB_ICONEXCLAMATION "$(SETTINGSFILEERROR)" IDNO SkipIniMove - StrCpy $0 1 - !insertmacro UAC_AsUser_Call Function CopyIniToAppData ${UAC_SYNCREGISTERS} - ${If} $0 = 1 - ; Copy succeeded - Delete "$INSTDIR\Rainmeter.ini" - ${Else} - MessageBox MB_OK|MB_ICONSTOP "$(SETTINGSMOVEERROR)" - ${EndIf} -SkipIniMove: - ${EndIf} - ${Else} - ReadINIStr $0 "$INSTDIR\Rainmeter.ini" "Rainmeter" "SkinPath" - ${If} $0 == "$INSTDIR\Skins\" - DeleteINIStr "$INSTDIR\Rainmeter.ini" "Rainmeter" "SkinPath" - ${EndIf} - ${EndIf} - ${EndIf} - - SetOutPath "$INSTDIR" - - ; Cleanup old stuff - Delete "$INSTDIR\Rainmeter.chm" - Delete "$INSTDIR\Default.ini" - Delete "$INSTDIR\Launcher.exe" - Delete "$INSTDIR\Defaults\Plugins\FileView.dll" - RMDir /r "$INSTDIR\Addons\Rainstaller" - RMDir /r "$INSTDIR\Addons\RainBackup" - - ${If} $InstallPortable <> 1 - CreateDirectory "$INSTDIR\Defaults" - Rename "$INSTDIR\Skins" "$INSTDIR\Defaults\Skins" - - Rename "$INSTDIR\Themes" "$INSTDIR\Defaults\Layouts" - Rename "$INSTDIR\Defaults\Themes" "$INSTDIR\Defaults\Layouts" - ${Locate} "$INSTDIR\Defaults\Layouts" "/L=F /M=Rainmeter.thm /G=1" "RenameToRainmeterIni" - - ${If} ${FileExists} "$INSTDIR\Addons\Backup" - ${OrIf} ${FileExists} "$INSTDIR\Plugins\Backup" - CreateDirectory "$INSTDIR\Defaults\Backup" - Rename "$INSTDIR\Addons\Backup" "$INSTDIR\Defaults\Backup\Addons" - Rename "$INSTDIR\Plugins\Backup" "$INSTDIR\Defaults\Backup\Plugins" - ${EndIf} - - Rename "$INSTDIR\Addons" "$INSTDIR\Defaults\Addons" - ${Locate} "$INSTDIR\Plugins" "/L=F /M=*.dll /G=0" "MoveNonDefaultPlugins" - ${EndIf} - -!ifdef INCLUDEFILES - File "..\..\Application\Rainmeter.exe.config" - - ${If} $instArc == "x86" - !insertmacro InstallFiles "x32" "x86" - ${Else} - !insertmacro InstallFiles "x64" "x64" - ${EndIf} - - RMDir /r "$INSTDIR\Languages" - SetOutPath "$INSTDIR\Languages" - File "..\..\x32-Release\Languages\*.*" - - SetOutPath "$INSTDIR\Defaults\Skins" - RMDir /r "$INSTDIR\Skins\illustro" - Delete "$INSTDIR\Skins\*.txt" - File /r "..\Skins\*.*" - - SetOutPath "$INSTDIR\Defaults\Layouts" - File /r "..\Layouts\*.*" -!endif - - SetOutPath "$INSTDIR" - - ${If} $InstallPortable <> 1 - ReadRegStr $0 HKLM "SOFTWARE\Rainmeter" "" - WriteRegStr HKLM "SOFTWARE\Rainmeter" "" "$INSTDIR" - WriteRegStr HKLM "SOFTWARE\Rainmeter" "Language" "$LANGUAGE" - WriteRegDWORD HKLM "SOFTWARE\Rainmeter" "NonDefault" $NonDefaultLanguage - - WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Rainmeter" "DisplayName" "Rainmeter" - WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Rainmeter" "DisplayIcon" "$INSTDIR\Rainmeter.exe,0" - WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Rainmeter" "URLInfoAbout" "http://rainmeter.net" - WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Rainmeter" "UninstallString" "$INSTDIR\uninst.exe" - -!ifdef BETA - WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Rainmeter" "DisplayVersion" "${VERSION_SHORT} beta r${VERSION_REVISION}" -!else - WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Rainmeter" "DisplayVersion" "${VERSION_SHORT} r${VERSION_REVISION}" -!endif - - ; Create .rmskin association - WriteRegStr HKCR ".rmskin" "" "Rainmeter.SkinInstaller" - DeleteRegKey HKCR "Rainmeter skin" ; Old key - WriteRegStr HKCR "Rainmeter.SkinInstaller" "" "Rainmeter Skin Installer" - WriteRegStr HKCR "Rainmeter.SkinInstaller\shell" "" "open" - WriteRegStr HKCR "Rainmeter.SkinInstaller\DefaultIcon" "" "$INSTDIR\SkinInstaller.exe,0" - WriteRegStr HKCR "Rainmeter.SkinInstaller\shell\open\command" "" '"$INSTDIR\SkinInstaller.exe" %1' - WriteRegStr HKCR "Rainmeter.SkinInstaller\shell\edit" "" "Install Rainmeter skin" - WriteRegStr HKCR "Rainmeter.SkinInstaller\shell\edit\command" "" '"$INSTDIR\SkinInstaller.exe" %1' - - ; If .inc isn't associated, use the .ini association for it. - ReadRegStr $1 HKCR ".inc" "" - ${If} $1 == "" - ReadRegStr $1 HKCR ".ini" "" - ${If} $1 != "" - WriteRegStr HKCR ".inc" "" "$1" - ${EndIf} - ${EndIf} - - ; Refresh shell icons if new install - ${If} $0 == "" - ${RefreshShellIcons} - ${EndIf} - - ; Remove all start menu shortcuts - SetShellVarContext all - Call RemoveStartMenuShortcuts - - StrCpy $0 "$SMPROGRAMS\Rainmeter.lnk" - ${If} ${FileExists} "$SMPROGRAMS\Rainmeter" - StrCpy $0 "$SMPROGRAMS\Rainmeter\Rainmeter.lnk" - ${EndIf} - CreateShortcut "$0" "$INSTDIR\Rainmeter.exe" "" "$INSTDIR\Rainmeter.exe" 0 - - ${If} $AutoStartup = 1 - ${If} ${FileExists} "$SMSTARTUP\Rainmeter.lnk" - ; Remove user shortcut to prevent duplicate with all users shortcut - !insertmacro UAC_AsUser_Call Function RemoveUserStartupShortcut ${UAC_SYNCREGISTERS} - ${Else} - !insertmacro UAC_AsUser_Call Function CreateUserStartupShortcut ${UAC_SYNCREGISTERS} - ${EndIf} - ${EndIf} - - SetShellVarContext current - Call RemoveStartMenuShortcuts - - !insertmacro UAC_AsUser_Call Function RemoveStartMenuShortcuts ${UAC_SYNCREGISTERS} - - WriteUninstaller "$INSTDIR\uninst.exe" - ${Else} - ${IfNot} ${FileExists} "Rainmeter.ini" - CopyFiles /SILENT "$INSTDIR\Defaults\Layouts\illustro default\Rainmeter.ini" "$INSTDIR\Rainmeter.ini" - ${EndIf} - - WriteINIStr "$INSTDIR\Rainmeter.ini" "Rainmeter" "Language" "$LANGUAGE" - ${EndIf} -SectionEnd - -Function CopyIniToAppData - ClearErrors - CreateDirectory "$APPDATA\Rainmeter" - CopyFiles /SILENT "$INSTDIR\Rainmeter.ini" "$APPDATA\Rainmeter\Rainmeter.ini" - ${If} ${Errors} - StrCpy $0 0 - ${EndIf} -FunctionEnd - -Function RenameToRainmeterIni - ${If} ${FileExists} "$R8\Rainmeter.ini" - Delete "$R8\Rainmeter.thm" - ${Else} - Rename "$R9" "$R8\Rainmeter.ini" - ${EndIf} - - Push $0 -FunctionEnd - -Function MoveNonDefaultPlugins - ${If} $R7 != "AdvancedCPU.dll" - ${AndIf} $R7 != "CoreTemp.dll" - ${AndIf} $R7 != "FileView.dll" - ${AndIf} $R7 != "FolderInfo.dll" - ${AndIf} $R7 != "InputText.dll" - ${AndIf} $R7 != "iTunesPlugin.dll" - ${AndIf} $R7 != "MediaKey.dll" - ${AndIf} $R7 != "NowPlaying.dll" - ${AndIf} $R7 != "PerfMon.dll" - ${AndIf} $R7 != "PingPlugin.dll" - ${AndIf} $R7 != "PowerPlugin.dll" - ${AndIf} $R7 != "Process.dll" - ${AndIf} $R7 != "QuotePlugin.dll" - ${AndIf} $R7 != "RecycleManager.dll" - ${AndIf} $R7 != "ResMon.dll" - ${AndIf} $R7 != "SpeedFanPlugin.dll" - ${AndIf} $R7 != "SysInfo.dll" - ${AndIf} $R7 != "VirtualDesktops.dll" - ${AndIf} $R7 != "WebParser.dll" - ${AndIf} $R7 != "WifiStatus.dll" - ${AndIf} $R7 != "Win7AudioPlugin.dll" - ${AndIf} $R7 != "WindowMessagePlugin.dll" - CreateDirectory "$INSTDIR\Defaults\Plugins" - Delete "$INSTDIR\Defaults\Plugins\$R7" - Rename "$R9" "$INSTDIR\Defaults\Plugins\$R7" - ${EndIf} - - Push $0 -FunctionEnd - -Function RemoveStartMenuShortcuts - !insertmacro RemoveStartMenuShortcuts "$SMPROGRAMS\Rainmeter" -FunctionEnd - -Function CreateUserStartupShortcut - SetShellVarContext current - CreateShortcut "$SMSTARTUP\Rainmeter.lnk" "$INSTDIR\Rainmeter.exe" "" "$INSTDIR\Rainmeter.exe" 0 -FunctionEnd - -Function RemoveUserStartupShortcut - SetShellVarContext current - Delete "$SMSTARTUP\Rainmeter.lnk" -FunctionEnd - -Function FinishRun - !insertmacro UAC_AsUser_ExecShell "" "$INSTDIR\Rainmeter.exe" "" "" "" -FunctionEnd - - -; Uninstall -; -------------------------------------- -Function un.onInit -UAC_TryAgain: - ; Request administrative rights - !insertmacro UAC_RunElevated - ${Switch} $0 - ${Case} 0 - ${IfThen} $1 = 1 ${|} Quit ${|} - ${IfThen} $3 <> 0 ${|} ${Break} ${|} - ${If} $1 = 3 - MessageBox MB_OK|MB_ICONSTOP|MB_TOPMOST|MB_SETFOREGROUND "$(ADMINERROR)" /SD IDNO IDOK UAC_TryAgain IDNO 0 - ${EndIf} - ${Case} 1223 - Quit - ${Case} 1062 - MessageBox MB_OK|MB_ICONSTOP|MB_TOPMOST|MB_SETFOREGROUND "$(LOGONERROR)" - Quit - ${Default} - MessageBox MB_OK|MB_ICONSTOP|MB_TOPMOST|MB_SETFOREGROUND "$(UACERROR) ($0)" - Quit - ${EndSwitch} - - ReadRegStr $0 HKLM "SOFTWARE\Rainmeter" "Language" - ${If} $0 != "" - StrCpy $LANGUAGE $0 - ${EndIf} -FunctionEnd - -Function un.PageOptions - !insertmacro MUI_HEADER_TEXT "$(UNSTALLOPTIONS)" "$(UNSTALLOPTIONSDESC)" - nsDialogs::Create 1018 - nsDialogs::SetRTL $(^RTL) - - ${NSD_CreateCheckbox} 0 0u 95% 12u "$(UNSTALLRAINMETER)" - Pop $0 - EnableWindow $0 0 - ${NSD_Check} $0 - - ${NSD_CreateCheckbox} 0 15u 70% 12u "$(UNSTALLSETTINGS)" - Pop $R0 - - ${NSD_CreateLabel} 16 26u 95% 12u "$(UNSTALLSETTINGSDESC)" - - nsDialogs::Show -FunctionEnd - -Function un.GetOptions - ${NSD_GetState} $R0 $un.DeleteAll -FunctionEnd - -Section Uninstall - ; Close Rainmeter (and wait up to five seconds) - ${ForEach} $0 10 0 - 1 - FindWindow $1 "DummyRainWClass" "Rainmeter control window" - ClearErrors - Delete "$INSTDIR\Rainmeter.exe" - ${If} $1 = 0 - ${AndIfNot} ${Errors} - ${Break} - ${EndIf} - - SendMessage $1 ${WM_CLOSE} 0 0 - - ${If} $0 = 0 - ${If} ${Silent} - SetErrorLevel ${ERROR_CLOSEFAIL} - Quit - ${Else} - MessageBox MB_RETRYCANCEL|MB_ICONSTOP "$(RAINMETERCLOSEERROR)" IDRETRY +2 - Quit - ${EndIf} - ${EndIf} - - Sleep 500 - ${Next} - - ; Old stuff - RMDir /r "$INSTDIR\Addons" - RMDir /r "$INSTDIR\Fonts" - - RMDir /r "$INSTDIR\Defaults" - RMDir /r "$INSTDIR\Languages" - RMDir /r "$INSTDIR\Plugins" - RMDir /r "$INSTDIR\Runtime" - RMDir /r "$INSTDIR\Skins" - Delete "$INSTDIR\Rainmeter.dll" - Delete "$INSTDIR\Rainmeter.exe" - Delete "$INSTDIR\Rainmeter.exe.config" - Delete "$INSTDIR\SkinInstaller.exe" - Delete "$INSTDIR\SkinInstaller.dll" - Delete "$INSTDIR\uninst.exe" - - RMDir "$INSTDIR" - - SetShellVarContext all - RMDir /r "$APPDATA\Rainstaller" - - SetShellVarContext current - Call un.RemoveShortcuts - ${If} $un.DeleteAll = 1 - RMDir /r "$APPDATA\Rainmeter" - RMDir /r "$DOCUMENTS\Rainmeter\Skins" - RMDir "$DOCUMENTS\Rainmeter" - RMDir /r "$1\Rainmeter" - ${EndIf} - - !insertmacro UAC_AsUser_Call Function un.RemoveShortcuts ${UAC_SYNCREGISTERS} - ${If} $un.DeleteAll = 1 - RMDir /r "$APPDATA\Rainmeter" - RMDir /r "$DOCUMENTS\Rainmeter\Skins" - RMDir "$DOCUMENTS\Rainmeter" - ${EndIf} - - SetShellVarContext all - Call un.RemoveShortcuts - Delete "$SMPROGRAMS\Rainmeter.lnk" - - DeleteRegKey HKLM "SOFTWARE\Rainmeter" - DeleteRegKey HKCR ".rmskin" - DeleteRegKey HKCR "Rainmeter.SkinInstaller" - DeleteRegKey HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Rainmeter" - ${RefreshShellIcons} -SectionEnd - -Function un.RemoveShortcuts - !insertmacro RemoveStartMenuShortcuts "$SMPROGRAMS\Rainmeter" - Delete "$SMSTARTUP\Rainmeter.lnk" - Delete "$DESKTOP\Rainmeter.lnk" -FunctionEnd +/* + Copyright (C) 2012 Birunthan Mohanathas + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License + as published by the Free Software Foundation; either version 2 + of the License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +*/ + +!verbose 3 +!addplugindir ".\" +!include "MUI2.nsh" +!include "x64.nsh" +!include "FileFunc.nsh" +!include "WordFunc.nsh" +!include "WinVer.nsh" +!include "UAC.nsh" + +!ifndef OUTFILE + !define OUTFILE "Rainmeter-test.exe" + !define VERSION_FULL "0.0.0.0" + !define VERSION_SHORT "0.0" + !define VERSION_REVISION "000" +!else + !define INCLUDEFILES +!endif + +Name "Rainmeter" +VIAddVersionKey "ProductName" "Rainmeter" +VIAddVersionKey "FileDescription" "Rainmeter Installer" +VIAddVersionKey "FileVersion" "${VERSION_FULL}" +VIAddVersionKey "ProductVersion" "${VERSION_FULL}" +VIAddVersionKey "OriginalFilename" "${OUTFILE}" +VIAddVersionKey "LegalCopyright" "Copyright (C) 2009-2013 - All authors" +VIProductVersion "${VERSION_FULL}" +BrandingText " " +SetCompressor /SOLID lzma +RequestExecutionLevel user +InstallDirRegKey HKLM "SOFTWARE\Rainmeter" "" +ShowInstDetails nevershow +AllowSkipFiles off +XPStyle on +OutFile "..\${OUTFILE}" +ReserveFile "${NSISDIR}\Plugins\LangDLL.dll" +ReserveFile "${NSISDIR}\Plugins\nsDialogs.dll" +ReserveFile "${NSISDIR}\Plugins\System.dll" +ReserveFile ".\UAC.dll" + +!define REQUIREDSPACE 5 ; Minimum required space for install (in MB) + +; Error levels (for silent install) +!define ERROR_UNSUPPORTED 3 +!define ERROR_NOTADMIN 4 +!define ERROR_WRITEFAIL 5 +!define ERROR_NOVCREDIST 6 +!define ERROR_CLOSEFAIL 7 + +; Additional Windows definitions +!define BCM_SETSHIELD 0x0000160c +!define PF_XMMI_INSTRUCTIONS_AVAILABLE 6 +!define PF_XMMI64_INSTRUCTIONS_AVAILABLE 10 + +!define MUI_ICON ".\Icon.ico" +!define MUI_UNICON ".\Icon.ico" +!define MUI_WELCOMEFINISHPAGE_BITMAP ".\Wizard.bmp" +!define MUI_FINISHPAGE_RUN +!define MUI_FINISHPAGE_RUN_FUNCTION FinishRun +!define MUI_WELCOMEPAGE ; For language strings + +Page custom PageWelcome PageWelcomeOnLeave +Page custom PageOptions PageOptionsOnLeave +!insertmacro MUI_PAGE_INSTFILES +!insertmacro MUI_PAGE_FINISH + +UninstPage custom un.PageOptions un.GetOptions +!insertmacro MUI_UNPAGE_INSTFILES + +; Include languages +!macro IncludeLanguage LANGUAGE CUSTOMLANGUAGE + !insertmacro MUI_LANGUAGE ${LANGUAGE} + !insertmacro LANGFILE_INCLUDE "..\..\Language\${CUSTOMLANGUAGE}.nsh" +!macroend +!define IncludeLanguage "!insertmacro IncludeLanguage" +!include "Languages.nsh" + +Var NonDefaultLanguage +Var AutoStartup +Var Install64Bit +Var InstallPortable +Var un.DeleteAll + +; Install +; -------------------------------------- +Function .onInit + ${If} ${RunningX64} + ${EnableX64FSRedirection} + ${EndIf} + + ${IfNot} ${UAC_IsInnerInstance} + ${If} ${IsWin2000} + ${OrIf} ${IsWinXP} + ${AndIf} ${AtMostServicePack} 2 + ${OrIf} ${IsWin2003} + ${AndIf} ${AtMostServicePack} 0 + ${IfNot} ${Silent} + MessageBox MB_OK|MB_ICONSTOP "Rainmeter requires Windows XP SP3 or later." + ${EndIf} + SetErrorLevel ${ERROR_UNSUPPORTED} + Quit + ${EndIf} + + System::Call 'kernel32::IsProcessorFeaturePresent(i${PF_XMMI_INSTRUCTIONS_AVAILABLE})i.r0' + ${If} $0 = 0 + ${IfNot} ${Silent} + MessageBox MB_OK|MB_ICONSTOP "Rainmeter requires a Pentium III or later processor." + ${EndIf} + SetErrorLevel ${ERROR_UNSUPPORTED} + Quit + ${EndIf} + + ReadRegStr $0 HKLM "SOFTWARE\Rainmeter" "Language" + ReadRegDWORD $NonDefaultLanguage HKLM "SOFTWARE\Rainmeter" "NonDefault" + + ${IfNot} ${Silent} + ${If} $0 == "" + ${OrIf} $0 <> $LANGUAGE + ${AndIf} $NonDefaultLanguage != 1 + ; New install or better match + LangDLL::LangDialog "$(^SetupCaption)" "Please select the installer language.$\n$(SELECTLANGUAGE)" AC ${LANGDLL_PARAMS} "" + Pop $0 + ${If} $0 == "cancel" + Abort + ${EndIf} + + ${If} $0 <> $LANGUAGE + ; User selected non-default language + StrCpy $NonDefaultLanguage 1 + ${EndIf} + ${EndIf} + + StrCpy $LANGUAGE $0 + ${Else} + ${If} $0 != "" + StrCpy $LANGUAGE $0 + ${EndIf} + + ${GetParameters} $R1 + + ClearErrors + ${GetOptions} $R1 "/LANGUAGE=" $0 + ${IfNot} ${Errors} + ${If} $LANGUAGE != $0 + StrCpy $NonDefaultLanguage 1 + ${EndIf} + + StrCpy $LANGUAGE $0 + ${EndIf} + + ${GetOptions} $R1 "/STARTUP=" $0 + ${If} $0 = 1 + StrCpy $AutoStartup 1 + ${EndIf} + + ${GetOptions} $R1 "/PORTABLE=" $0 + ${If} $0 = 1 + StrCpy $InstallPortable 1 + ${Else} + ${IfNot} ${UAC_IsAdmin} + SetErrorLevel ${ERROR_NOTADMIN} + Quit + ${EndIf} + ${EndIf} + + ${GetOptions} $R1 "/VERSION=" $0 + ${If} $0 = 64 + StrCpy $Install64Bit 1 + + ${If} $INSTDIR == "" + StrCpy $INSTDIR "$PROGRAMFILES64\Rainmeter" + ${EndIf} + ${Else} + ${If} $INSTDIR == "" + StrCpy $INSTDIR "$PROGRAMFILES\Rainmeter" + ${EndIf} + ${EndIf} + + ClearErrors + CreateDirectory "$INSTDIR" + WriteINIStr "$INSTDIR\writetest~.rm" "1" "1" "1" + Delete "$INSTDIR\writetest~.rm" + + ${If} ${Errors} + RMDir "$INSTDIR" + SetErrorLevel ${ERROR_WRITEFAIL} + Quit + ${EndIf} + ${EndIf} + + ; If the language was set to a non-existent language, reset it back to English. + ${WordFind} ",${LANGUAGE_IDS}" ",$LANGUAGE," "E+1{" $0 + ${If} ${Errors} + StrCpy $LANGUAGE "1033" + ${EndIf} + ${Else} + ; Exchange settings with user instance + !insertmacro UAC_AsUser_Call Function ExchangeSettings ${UAC_SYNCREGISTERS} + StrCpy $AutoStartup $1 + StrCpy $Install64Bit $2 + StrCpy $NonDefaultLanguage $3 + StrCpy $LANGUAGE $4 + StrCpy $INSTDIR $5 + ${EndIf} +FunctionEnd + +Function ExchangeSettings + StrCpy $1 $AutoStartup + StrCpy $2 $Install64Bit + StrCpy $3 $NonDefaultLanguage + StrCpy $4 $LANGUAGE + StrCpy $5 $INSTDIR + HideWindow +FunctionEnd + +Function PageWelcome + ${If} ${UAC_IsInnerInstance} + ${If} ${UAC_IsAdmin} + ; Skip page + Abort + ${Else} + MessageBox MB_OK|MB_ICONSTOP "$(ADMINERROR) (Inner)" + Quit + ${EndIf} + ${EndIf} + + !insertmacro MUI_HEADER_TEXT "$(INSTALLOPTIONS)" "$(^ComponentsSubText1)" + nsDialogs::Create 1044 + Pop $0 + nsDialogs::SetRTL $(^RTL) + SetCtlColors $0 "" "${MUI_BGCOLOR}" + + ${NSD_CreateBitmap} 0u 0u 109u 193u "" + Pop $0 + ${NSD_SetImage} $0 "$PLUGINSDIR\modern-wizard.bmp" $R0 + + ${NSD_CreateLabel} 120u 10u 195u 38u "$(MUI_TEXT_WELCOME_INFO_TITLE)" + Pop $0 + SetCtlColors $0 "" "${MUI_BGCOLOR}" + CreateFont $1 "$(^Font)" "12" "700" + SendMessage $0 ${WM_SETFONT} $1 0 + + ${NSD_CreateLabel} 120u 55u 195u 12u "$(^ComponentsSubText1)" + Pop $0 + SetCtlColors $0 "" "${MUI_BGCOLOR}" + + ${NSD_CreateRadioButton} 120u 70u 205u 12u "$(STANDARDINST)" + Pop $R1 + SetCtlColors $R1 "" "${MUI_BGCOLOR}" + ${NSD_AddStyle} $R1 ${WS_GROUP} + SendMessage $R1 ${WM_SETFONT} $mui.Header.Text.Font 0 + + ${NSD_CreateLabel} 132u 82u 185u 24u "$(STANDARDINSTDESC)" + Pop $0 + SetCtlColors $0 "" "${MUI_BGCOLOR}" + + ${NSD_CreateRadioButton} 120u 106u 310u 12u "$(PORTABLEINST)" + Pop $R2 + SetCtlColors $R2 "" "${MUI_BGCOLOR}" + ${NSD_AddStyle} $R2 ${WS_TABSTOP} + SendMessage $R2 ${WM_SETFONT} $mui.Header.Text.Font 0 + + ${NSD_CreateLabel} 132u 118u 185u 52u "$(PORTABLEINSTDESC)" + Pop $0 + SetCtlColors $0 "" "${MUI_BGCOLOR}" + + ${If} $InstallPortable = 1 + ${NSD_Check} $R2 + ${Else} + ${NSD_Check} $R1 + ${EndIf} + + Call muiPageLoadFullWindow + + nsDialogs::Show + ${NSD_FreeImage} $R0 +FunctionEnd + +Function PageWelcomeOnLeave + ${NSD_GetState} $R2 $InstallPortable + Call muiPageUnloadFullWindow +FunctionEnd + +Function PageOptions + ${If} ${UAC_IsInnerInstance} + ${AndIf} ${UAC_IsAdmin} + ; Skip page + Abort + ${EndIf} + + !insertmacro MUI_HEADER_TEXT "$(INSTALLOPTIONS)" "$(INSTALLOPTIONSDESC)" + nsDialogs::Create 1018 + nsDialogs::SetRTL $(^RTL) + + ${NSD_CreateGroupBox} 0 0u -1u 36u "$(^DirSubText)" + + ${NSD_CreateDirRequest} 6u 14u 232u 14u "" + Pop $R0 + ${NSD_OnChange} $R0 PageOptionsDirectoryOnChange + + ${NSD_CreateBrowseButton} 242u 14u 50u 14u "$(^BrowseBtn)" + Pop $R1 + ${NSD_OnClick} $R1 PageOptionsBrowseOnClick + + StrCpy $1 0 + + StrCpy $R2 0 + ${If} ${RunningX64} + ${If} $InstallPortable = 1 + ${OrIf} $INSTDIR == "" + ${NSD_CreateCheckBox} 6u 54u 285u 12u "$(INSTALL64BIT)" + Pop $R2 + StrCpy $1 30u + ${EndIf} + ${EndIf} + + ${If} $InstallPortable <> 1 + ${If} $1 = 0 + StrCpy $0 54u + StrCpy $1 30u + ${Else} + StrCpy $0 66u + StrCpy $1 42u + ${EndIf} + + ${NSD_CreateCheckbox} 6u $0 285u 12u "$(AUTOSTARTUP)" + Pop $R3 + + ${If} $INSTDIR == "" + ${NSD_Check} $R3 + ${Else} + SetShellVarContext all + ${If} ${FileExists} "$SMSTARTUP\Rainmeter.lnk" + ${NSD_Check} $R3 + ${EndIf} + + SetShellVarContext current + ${If} ${FileExists} "$SMSTARTUP\Rainmeter.lnk" + ${NSD_Check} $R3 + ${EndIf} + ${EndIf} + ${Else} + StrCpy $R3 0 + ${EndIf} + + ${If} $1 <> 0 + ${NSD_CreateGroupBox} 0 42u -1u $1 "$(ADDITIONALOPTIONS)" + ${EndIf} + + ; Set default directory + ${If} $InstallPortable = 1 + ${GetRoot} "$WINDIR" $0 + ${NSD_SetText} $R0 "$0\Rainmeter" + ${Else} + ; Disable Directory editbox and Browse button if already installed + SendMessage $R0 ${EM_SETREADONLY} 1 0 + + ${If} $INSTDIR != "" + EnableWindow $R1 0 + ${NSD_SetText} $R0 "$INSTDIR" + ${Else} + ; Fresh install + ${If} ${RunningX64} + ${NSD_SetText} $R0 "$PROGRAMFILES64\Rainmeter" + ${NSD_Check} $R2 + ${Else} + ${NSD_SetText} $R0 "$PROGRAMFILES\Rainmeter" + ${EndIf} + ${EndIf} + ${EndIf} + + ; Show UAC shield on Install button if requiredd + GetDlgItem $0 $HWNDPARENT 1 + ${If} $InstallPortable = 1 + SendMessage $0 ${BCM_SETSHIELD} 0 0 + ${Else} + SendMessage $0 ${BCM_SETSHIELD} 0 1 + + ; Hide Back button + GetDlgItem $0 $HWNDPARENT 3 + ShowWindow $0 ${SW_HIDE} + ${EndIf} + + nsDialogs::Show +FunctionEnd + +Function PageOptionsDirectoryOnChange + ${NSD_GetText} $R0 $0 + + ; Disable Install button if not enough space + GetDlgItem $1 $HWNDPARENT 1 + ${GetRoot} $0 $2 + ${DriveSpace} "$2\" "/D=F /S=M" $3 + ${If} $3 < ${REQUIREDSPACE} + EnableWindow $1 0 + ${Else} + EnableWindow $1 1 + ${EndIf} + + StrCpy $Install64Bit 0 + ${If} ${RunningX64} + ${If} ${FileExists} "$0\Rainmeter.exe" + MoreInfo::GetProductVersion "$0\Rainmeter.exe" + Pop $0 + StrCpy $0 $0 2 -7 + ${If} $0 == 64 + StrCpy $Install64Bit 1 + ${EndIf} + + ${If} $R2 != 0 + ${NSD_SetState} $R2 $Install64Bit + EnableWindow $R2 0 + ${EndIf} + ${Else} + ${If} $R2 != 0 + EnableWindow $R2 1 + ${EndIf} + ${EndIf} + ${EndIf} +FunctionEnd + +Function PageOptionsBrowseOnClick + ${NSD_GetText} $R0 $0 + nsDialogs::SelectFolderDialog "$(^DirBrowseText)" $0 + Pop $1 + ${If} $1 != error + ${NSD_SetText} $R0 $1 + ${EndIf} +FunctionEnd + +Function PageOptionsOnLeave + ; Verify that selected folder is writable + ${NSD_GetText} $R0 $0 + ${If} $InstallPortable = 1 + ClearErrors + CreateDirectory "$0" + WriteINIStr "$0\writetest~.rm" "1" "1" "1" + Delete "$0\writetest~.rm" + + ${If} ${Errors} + RMDir "$0" + MessageBox MB_OK|MB_ICONEXCLAMATION "$(WRITEERROR)" + Abort + ${EndIf} + + RMDir "$0" + ${EndIf} + + StrCpy $INSTDIR $0 + + GetDlgItem $0 $HWNDPARENT 1 + EnableWindow $0 0 + + ${If} $R2 != 0 + ${NSD_GetState} $R2 $Install64Bit + ${EndIf} + + ${If} $R3 != 0 + ${NSD_GetState} $R3 $AutoStartup + ${EndIf} + + ${If} $InstallPortable <> 1 + ${IfNot} ${UAC_IsAdmin} + ; UAC_IsAdmin seems to return incorrect result sometimes. Recheck with UserInfo::GetAccountType to be sure. + UserInfo::GetAccountType + Pop $0 + ${If} $0 != "Admin" +UAC_TryAgain: + !insertmacro UAC_RunElevated + ${Switch} $0 + ${Case} 0 + ${IfThen} $1 = 1 ${|} Quit ${|} + ${IfThen} $3 <> 0 ${|} ${Break} ${|} + ${If} $1 = 3 + MessageBox MB_OK|MB_ICONSTOP|MB_TOPMOST|MB_SETFOREGROUND "$(ADMINERROR)" /SD IDNO IDOK UAC_TryAgain IDNO 0 + ${EndIf} + ${Case} 1223 + Quit + ${Case} 1062 + MessageBox MB_OK|MB_ICONSTOP|MB_TOPMOST|MB_SETFOREGROUND "$(LOGONERROR)" + Quit + ${Default} + MessageBox MB_OK|MB_ICONSTOP|MB_TOPMOST|MB_SETFOREGROUND "$(UACERROR) ($0)" + Quit + ${EndSwitch} + ${EndIf} + ${EndIf} + ${EndIf} +FunctionEnd + +!macro InstallFiles DIR ARCH + SetOutPath "$INSTDIR" + File "..\..\${DIR}-Release\Rainmeter.exe" + File "..\..\${DIR}-Release\Rainmeter.dll" + File "..\..\${DIR}-Release\SkinInstaller.exe" + File "..\..\${DIR}-Release\SkinInstaller.dll" + + SetOutPath "$INSTDIR\Plugins" + File /x *Example*.dll "..\..\${DIR}-Release\Plugins\*.dll" + + SetOutPath "$INSTDIR\Runtime" + File "$%VS120COMNTOOLS%..\..\VC\redist\${ARCH}\Microsoft.VC120.CRT\msvcp120.dll" + File "$%VS120COMNTOOLS%..\..\VC\redist\${ARCH}\Microsoft.VC120.CRT\msvcr120.dll" +!macroend + +!macro RemoveStartMenuShortcuts STARTMENUPATH + Delete "${STARTMENUPATH}\Rainmeter.lnk" + Delete "${STARTMENUPATH}\Rainmeter Help.lnk" + Delete "${STARTMENUPATH}\Rainmeter Help.URL" + Delete "${STARTMENUPATH}\Remove Rainmeter.lnk" + Delete "${STARTMENUPATH}\RainThemes.lnk" + Delete "${STARTMENUPATH}\RainThemes Help.lnk" + Delete "${STARTMENUPATH}\RainBrowser.lnk" + Delete "${STARTMENUPATH}\RainBackup.lnk" + Delete "${STARTMENUPATH}\Rainstaller.lnk" + Delete "${STARTMENUPATH}\Skin Installer.lnk" + Delete "${STARTMENUPATH}\Rainstaller Help.lnk" + RMDir "${STARTMENUPATH}" +!macroend + +Section + SetOutPath "$PLUGINSDIR" + SetShellVarContext current + + Var /GLOBAL InstArc + ${If} $Install64Bit = 1 + StrCpy $InstArc "x64" + ${Else} + StrCpy $InstArc "x86" + ${EndIf} + + ${If} $InstallPortable <> 1 + ${AndIfNot} ${AtLeastWinVista} + ; Download and install .NET if required + ReadRegDWORD $0 HKLM "SOFTWARE\Microsoft\NET Framework Setup\NDP\v2.0.50727" "Install" + ${If} $0 <> 1 + ${If} $Install64Bit <> 1 + NSISdl::download /TIMEOUT=30000 "http://download.microsoft.com/download/5/6/7/567758a3-759e-473e-bf8f-52154438565a/dotnetfx.exe" "$PLUGINSDIR\dotnetfx.exe" + ${Else} + NSISdl::download /TIMEOUT=30000 "http://download.microsoft.com/download/a/3/f/a3f1bf98-18f3-4036-9b68-8e6de530ce0a/NetFx64.exe" "$PLUGINSDIR\dotnetfx.exe" + ${EndIf} + Pop $0 + + ${If} $0 == "success" + ExecWait '"$PLUGINSDIR\dotnetfx.exe" /q:a /c:"install /q"' $0 + Delete "$PLUGINSDIR\dotnetfx.exe" + + ${If} $0 = 3010 + SetRebootFlag true + ${ElseIf} $0 <> 0 + MessageBox MB_OK|MB_ICONSTOP "$(DOTNETINSTERROR)" + Quit + ${EndIf} + ${ElseIf} $0 == "cancel" + Quit + ${Else} + MessageBox MB_OK|MB_ICONSTOP "$(DOTNETINSTERROR)" + Quit + ${EndIf} + ${EndIf} + ${EndIf} + + SetOutPath "$INSTDIR" + + ; Close Rainmeter (and wait up to five seconds) + ${ForEach} $0 10 0 - 1 + FindWindow $1 "DummyRainWClass" "Rainmeter control window" + ClearErrors + Delete "$INSTDIR\Rainmeter.exe" + ${If} $1 = 0 + ${AndIfNot} ${Errors} + ${Break} + ${EndIf} + + SendMessage $1 ${WM_CLOSE} 0 0 + + ${If} $0 = 0 + ${If} ${Silent} + SetErrorLevel ${ERROR_CLOSEFAIL} + Quit + ${Else} + MessageBox MB_RETRYCANCEL|MB_ICONSTOP "$(RAINMETERCLOSEERROR)" IDRETRY +2 + Quit + ${EndIf} + ${EndIf} + + Sleep 500 + ${Next} + + ; Move Rainmeter.ini to %APPDATA% if needed + ${IfNot} ${Silent} + ${AndIf} ${FileExists} "$INSTDIR\Rainmeter.ini" + ${If} $InstallPortable <> 1 + ${If} $Install64Bit = 1 + ${AndIf} "$INSTDIR" == "$PROGRAMFILES64\Rainmeter" + ${OrIf} "$INSTDIR" == "$PROGRAMFILES\Rainmeter" + MessageBox MB_YESNO|MB_ICONEXCLAMATION "$(SETTINGSFILEERROR)" IDNO SkipIniMove + StrCpy $0 1 + !insertmacro UAC_AsUser_Call Function CopyIniToAppData ${UAC_SYNCREGISTERS} + ${If} $0 = 1 + ; Copy succeeded + Delete "$INSTDIR\Rainmeter.ini" + ${Else} + MessageBox MB_OK|MB_ICONSTOP "$(SETTINGSMOVEERROR)" + ${EndIf} +SkipIniMove: + ${EndIf} + ${Else} + ReadINIStr $0 "$INSTDIR\Rainmeter.ini" "Rainmeter" "SkinPath" + ${If} $0 == "$INSTDIR\Skins\" + DeleteINIStr "$INSTDIR\Rainmeter.ini" "Rainmeter" "SkinPath" + ${EndIf} + ${EndIf} + ${EndIf} + + SetOutPath "$INSTDIR" + + ; Cleanup old stuff + Delete "$INSTDIR\Rainmeter.chm" + Delete "$INSTDIR\Default.ini" + Delete "$INSTDIR\Launcher.exe" + Delete "$INSTDIR\Defaults\Plugins\FileView.dll" + RMDir /r "$INSTDIR\Addons\Rainstaller" + RMDir /r "$INSTDIR\Addons\RainBackup" + + ${If} $InstallPortable <> 1 + CreateDirectory "$INSTDIR\Defaults" + Rename "$INSTDIR\Skins" "$INSTDIR\Defaults\Skins" + + Rename "$INSTDIR\Themes" "$INSTDIR\Defaults\Layouts" + Rename "$INSTDIR\Defaults\Themes" "$INSTDIR\Defaults\Layouts" + ${Locate} "$INSTDIR\Defaults\Layouts" "/L=F /M=Rainmeter.thm /G=1" "RenameToRainmeterIni" + + ${If} ${FileExists} "$INSTDIR\Addons\Backup" + ${OrIf} ${FileExists} "$INSTDIR\Plugins\Backup" + CreateDirectory "$INSTDIR\Defaults\Backup" + Rename "$INSTDIR\Addons\Backup" "$INSTDIR\Defaults\Backup\Addons" + Rename "$INSTDIR\Plugins\Backup" "$INSTDIR\Defaults\Backup\Plugins" + ${EndIf} + + Rename "$INSTDIR\Addons" "$INSTDIR\Defaults\Addons" + ${Locate} "$INSTDIR\Plugins" "/L=F /M=*.dll /G=0" "MoveNonDefaultPlugins" + ${EndIf} + +!ifdef INCLUDEFILES + File "..\..\Application\Rainmeter.exe.config" + + ${If} $instArc == "x86" + !insertmacro InstallFiles "x32" "x86" + ${Else} + !insertmacro InstallFiles "x64" "x64" + ${EndIf} + + RMDir /r "$INSTDIR\Languages" + SetOutPath "$INSTDIR\Languages" + File "..\..\x32-Release\Languages\*.*" + + SetOutPath "$INSTDIR\Defaults\Skins" + RMDir /r "$INSTDIR\Skins\illustro" + Delete "$INSTDIR\Skins\*.txt" + File /r "..\Skins\*.*" + + SetOutPath "$INSTDIR\Defaults\Layouts" + File /r "..\Layouts\*.*" +!endif + + SetOutPath "$INSTDIR" + + ${If} $InstallPortable <> 1 + ReadRegStr $0 HKLM "SOFTWARE\Rainmeter" "" + WriteRegStr HKLM "SOFTWARE\Rainmeter" "" "$INSTDIR" + WriteRegStr HKLM "SOFTWARE\Rainmeter" "Language" "$LANGUAGE" + WriteRegDWORD HKLM "SOFTWARE\Rainmeter" "NonDefault" $NonDefaultLanguage + + WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Rainmeter" "DisplayName" "Rainmeter" + WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Rainmeter" "DisplayIcon" "$INSTDIR\Rainmeter.exe,0" + WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Rainmeter" "URLInfoAbout" "http://rainmeter.net" + WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Rainmeter" "UninstallString" "$INSTDIR\uninst.exe" + +!ifdef BETA + WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Rainmeter" "DisplayVersion" "${VERSION_SHORT} beta r${VERSION_REVISION}" +!else + WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Rainmeter" "DisplayVersion" "${VERSION_SHORT} r${VERSION_REVISION}" +!endif + + ; Create .rmskin association + WriteRegStr HKCR ".rmskin" "" "Rainmeter.SkinInstaller" + DeleteRegKey HKCR "Rainmeter skin" ; Old key + WriteRegStr HKCR "Rainmeter.SkinInstaller" "" "Rainmeter Skin Installer" + WriteRegStr HKCR "Rainmeter.SkinInstaller\shell" "" "open" + WriteRegStr HKCR "Rainmeter.SkinInstaller\DefaultIcon" "" "$INSTDIR\SkinInstaller.exe,0" + WriteRegStr HKCR "Rainmeter.SkinInstaller\shell\open\command" "" '"$INSTDIR\SkinInstaller.exe" %1' + WriteRegStr HKCR "Rainmeter.SkinInstaller\shell\edit" "" "Install Rainmeter skin" + WriteRegStr HKCR "Rainmeter.SkinInstaller\shell\edit\command" "" '"$INSTDIR\SkinInstaller.exe" %1' + + ; If .inc isn't associated, use the .ini association for it. + ReadRegStr $1 HKCR ".inc" "" + ${If} $1 == "" + ReadRegStr $1 HKCR ".ini" "" + ${If} $1 != "" + WriteRegStr HKCR ".inc" "" "$1" + ${EndIf} + ${EndIf} + + ; Refresh shell icons if new install + ${If} $0 == "" + ${RefreshShellIcons} + ${EndIf} + + ; Remove all start menu shortcuts + SetShellVarContext all + Call RemoveStartMenuShortcuts + + StrCpy $0 "$SMPROGRAMS\Rainmeter.lnk" + ${If} ${FileExists} "$SMPROGRAMS\Rainmeter" + StrCpy $0 "$SMPROGRAMS\Rainmeter\Rainmeter.lnk" + ${EndIf} + CreateShortcut "$0" "$INSTDIR\Rainmeter.exe" "" "$INSTDIR\Rainmeter.exe" 0 + + ${If} $AutoStartup = 1 + ${If} ${FileExists} "$SMSTARTUP\Rainmeter.lnk" + ; Remove user shortcut to prevent duplicate with all users shortcut + !insertmacro UAC_AsUser_Call Function RemoveUserStartupShortcut ${UAC_SYNCREGISTERS} + ${Else} + !insertmacro UAC_AsUser_Call Function CreateUserStartupShortcut ${UAC_SYNCREGISTERS} + ${EndIf} + ${EndIf} + + SetShellVarContext current + Call RemoveStartMenuShortcuts + + !insertmacro UAC_AsUser_Call Function RemoveStartMenuShortcuts ${UAC_SYNCREGISTERS} + + WriteUninstaller "$INSTDIR\uninst.exe" + ${Else} + ${IfNot} ${FileExists} "Rainmeter.ini" + CopyFiles /SILENT "$INSTDIR\Defaults\Layouts\illustro default\Rainmeter.ini" "$INSTDIR\Rainmeter.ini" + ${EndIf} + + WriteINIStr "$INSTDIR\Rainmeter.ini" "Rainmeter" "Language" "$LANGUAGE" + ${EndIf} +SectionEnd + +Function CopyIniToAppData + ClearErrors + CreateDirectory "$APPDATA\Rainmeter" + CopyFiles /SILENT "$INSTDIR\Rainmeter.ini" "$APPDATA\Rainmeter\Rainmeter.ini" + ${If} ${Errors} + StrCpy $0 0 + ${EndIf} +FunctionEnd + +Function RenameToRainmeterIni + ${If} ${FileExists} "$R8\Rainmeter.ini" + Delete "$R8\Rainmeter.thm" + ${Else} + Rename "$R9" "$R8\Rainmeter.ini" + ${EndIf} + + Push $0 +FunctionEnd + +Function MoveNonDefaultPlugins + ${If} $R7 != "AdvancedCPU.dll" + ${AndIf} $R7 != "CoreTemp.dll" + ${AndIf} $R7 != "FileView.dll" + ${AndIf} $R7 != "FolderInfo.dll" + ${AndIf} $R7 != "InputText.dll" + ${AndIf} $R7 != "iTunesPlugin.dll" + ${AndIf} $R7 != "MediaKey.dll" + ${AndIf} $R7 != "NowPlaying.dll" + ${AndIf} $R7 != "PerfMon.dll" + ${AndIf} $R7 != "PingPlugin.dll" + ${AndIf} $R7 != "PowerPlugin.dll" + ${AndIf} $R7 != "Process.dll" + ${AndIf} $R7 != "QuotePlugin.dll" + ${AndIf} $R7 != "RecycleManager.dll" + ${AndIf} $R7 != "ResMon.dll" + ${AndIf} $R7 != "SpeedFanPlugin.dll" + ${AndIf} $R7 != "SysInfo.dll" + ${AndIf} $R7 != "VirtualDesktops.dll" + ${AndIf} $R7 != "WebParser.dll" + ${AndIf} $R7 != "WifiStatus.dll" + ${AndIf} $R7 != "Win7AudioPlugin.dll" + ${AndIf} $R7 != "WindowMessagePlugin.dll" + CreateDirectory "$INSTDIR\Defaults\Plugins" + Delete "$INSTDIR\Defaults\Plugins\$R7" + Rename "$R9" "$INSTDIR\Defaults\Plugins\$R7" + ${EndIf} + + Push $0 +FunctionEnd + +Function RemoveStartMenuShortcuts + !insertmacro RemoveStartMenuShortcuts "$SMPROGRAMS\Rainmeter" +FunctionEnd + +Function CreateUserStartupShortcut + SetShellVarContext current + CreateShortcut "$SMSTARTUP\Rainmeter.lnk" "$INSTDIR\Rainmeter.exe" "" "$INSTDIR\Rainmeter.exe" 0 +FunctionEnd + +Function RemoveUserStartupShortcut + SetShellVarContext current + Delete "$SMSTARTUP\Rainmeter.lnk" +FunctionEnd + +Function FinishRun + !insertmacro UAC_AsUser_ExecShell "" "$INSTDIR\Rainmeter.exe" "" "" "" +FunctionEnd + + +; Uninstall +; -------------------------------------- +Function un.onInit +UAC_TryAgain: + ; Request administrative rights + !insertmacro UAC_RunElevated + ${Switch} $0 + ${Case} 0 + ${IfThen} $1 = 1 ${|} Quit ${|} + ${IfThen} $3 <> 0 ${|} ${Break} ${|} + ${If} $1 = 3 + MessageBox MB_OK|MB_ICONSTOP|MB_TOPMOST|MB_SETFOREGROUND "$(ADMINERROR)" /SD IDNO IDOK UAC_TryAgain IDNO 0 + ${EndIf} + ${Case} 1223 + Quit + ${Case} 1062 + MessageBox MB_OK|MB_ICONSTOP|MB_TOPMOST|MB_SETFOREGROUND "$(LOGONERROR)" + Quit + ${Default} + MessageBox MB_OK|MB_ICONSTOP|MB_TOPMOST|MB_SETFOREGROUND "$(UACERROR) ($0)" + Quit + ${EndSwitch} + + ReadRegStr $0 HKLM "SOFTWARE\Rainmeter" "Language" + ${If} $0 != "" + StrCpy $LANGUAGE $0 + ${EndIf} +FunctionEnd + +Function un.PageOptions + !insertmacro MUI_HEADER_TEXT "$(UNSTALLOPTIONS)" "$(UNSTALLOPTIONSDESC)" + nsDialogs::Create 1018 + nsDialogs::SetRTL $(^RTL) + + ${NSD_CreateCheckbox} 0 0u 95% 12u "$(UNSTALLRAINMETER)" + Pop $0 + EnableWindow $0 0 + ${NSD_Check} $0 + + ${NSD_CreateCheckbox} 0 15u 70% 12u "$(UNSTALLSETTINGS)" + Pop $R0 + + ${NSD_CreateLabel} 16 26u 95% 12u "$(UNSTALLSETTINGSDESC)" + + nsDialogs::Show +FunctionEnd + +Function un.GetOptions + ${NSD_GetState} $R0 $un.DeleteAll +FunctionEnd + +Section Uninstall + ; Close Rainmeter (and wait up to five seconds) + ${ForEach} $0 10 0 - 1 + FindWindow $1 "DummyRainWClass" "Rainmeter control window" + ClearErrors + Delete "$INSTDIR\Rainmeter.exe" + ${If} $1 = 0 + ${AndIfNot} ${Errors} + ${Break} + ${EndIf} + + SendMessage $1 ${WM_CLOSE} 0 0 + + ${If} $0 = 0 + ${If} ${Silent} + SetErrorLevel ${ERROR_CLOSEFAIL} + Quit + ${Else} + MessageBox MB_RETRYCANCEL|MB_ICONSTOP "$(RAINMETERCLOSEERROR)" IDRETRY +2 + Quit + ${EndIf} + ${EndIf} + + Sleep 500 + ${Next} + + ; Old stuff + RMDir /r "$INSTDIR\Addons" + RMDir /r "$INSTDIR\Fonts" + + RMDir /r "$INSTDIR\Defaults" + RMDir /r "$INSTDIR\Languages" + RMDir /r "$INSTDIR\Plugins" + RMDir /r "$INSTDIR\Runtime" + RMDir /r "$INSTDIR\Skins" + Delete "$INSTDIR\Rainmeter.dll" + Delete "$INSTDIR\Rainmeter.exe" + Delete "$INSTDIR\Rainmeter.exe.config" + Delete "$INSTDIR\SkinInstaller.exe" + Delete "$INSTDIR\SkinInstaller.dll" + Delete "$INSTDIR\uninst.exe" + + RMDir "$INSTDIR" + + SetShellVarContext all + RMDir /r "$APPDATA\Rainstaller" + + SetShellVarContext current + Call un.RemoveShortcuts + ${If} $un.DeleteAll = 1 + RMDir /r "$APPDATA\Rainmeter" + RMDir /r "$DOCUMENTS\Rainmeter\Skins" + RMDir "$DOCUMENTS\Rainmeter" + RMDir /r "$1\Rainmeter" + ${EndIf} + + !insertmacro UAC_AsUser_Call Function un.RemoveShortcuts ${UAC_SYNCREGISTERS} + ${If} $un.DeleteAll = 1 + RMDir /r "$APPDATA\Rainmeter" + RMDir /r "$DOCUMENTS\Rainmeter\Skins" + RMDir "$DOCUMENTS\Rainmeter" + ${EndIf} + + SetShellVarContext all + Call un.RemoveShortcuts + Delete "$SMPROGRAMS\Rainmeter.lnk" + + DeleteRegKey HKLM "SOFTWARE\Rainmeter" + DeleteRegKey HKCR ".rmskin" + DeleteRegKey HKCR "Rainmeter.SkinInstaller" + DeleteRegKey HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Rainmeter" + ${RefreshShellIcons} +SectionEnd + +Function un.RemoveShortcuts + !insertmacro RemoveStartMenuShortcuts "$SMPROGRAMS\Rainmeter" + Delete "$SMSTARTUP\Rainmeter.lnk" + Delete "$DESKTOP\Rainmeter.lnk" +FunctionEnd diff --git a/BuildTools/Installer/MD5.dll b/Build/Installer/MD5.dll similarity index 100% rename from BuildTools/Installer/MD5.dll rename to Build/Installer/MD5.dll diff --git a/BuildTools/Installer/MoreInfo.dll b/Build/Installer/MoreInfo.dll similarity index 100% rename from BuildTools/Installer/MoreInfo.dll rename to Build/Installer/MoreInfo.dll diff --git a/BuildTools/Installer/UAC.dll b/Build/Installer/UAC.dll similarity index 100% rename from BuildTools/Installer/UAC.dll rename to Build/Installer/UAC.dll diff --git a/BuildTools/Installer/UAC.nsh b/Build/Installer/UAC.nsh similarity index 96% rename from BuildTools/Installer/UAC.nsh rename to Build/Installer/UAC.nsh index 3f2c11cc..a0e137fa 100644 --- a/BuildTools/Installer/UAC.nsh +++ b/Build/Installer/UAC.nsh @@ -1,200 +1,200 @@ -!ifndef UAC_HDR__INC -!verbose push -!verbose 3 -!ifndef UAC_VERBOSE - !define UAC_VERBOSE 3 -!endif -!verbose ${UAC_VERBOSE} - -!define UAC_HDR__INC 0x00020204 ;MMmmbbrr - -!include LogicLib.nsh - -!macro _UAC_definemath def val1 op val2 -!define /math _UAC_definemath "${val1}" ${op} ${val2} -!ifdef ${def} - !undef ${def} -!endif -!define ${def} "${_UAC_definemath}" -!undef _UAC_definemath -!macroend - -!macro _UAC_ParseDefineFlags_orin parse outflags -!searchparse /noerrors ${${parse}} "" _UAC_ParseDefineFlags_orin_f1 "|" _UAC_ParseDefineFlags_orin_f2 -!define _UAC_ParseDefineFlags_orin_this ${_UAC_ParseDefineFlags_orin_f1} -!undef ${parse} -!define ${parse} ${_UAC_ParseDefineFlags_orin_f2} -!define _UAC_ParseDefineFlags_orin_saveout ${${outflags}} -!undef ${outflags} -!define /math ${outflags} "${_UAC_ParseDefineFlags_orin_saveout}" | "${_UAC_ParseDefineFlags_orin_this}" -!undef _UAC_ParseDefineFlags_orin_saveout -!undef _UAC_ParseDefineFlags_orin_this -!ifdef _UAC_ParseDefineFlags_orin_f1 - !undef _UAC_ParseDefineFlags_orin_f1 - !undef _UAC_ParseDefineFlags_orin_f2 -!endif -!macroend -!macro _UAC_ParseDefineFlags_Begin _outdef _in -!define _UAC_PDF${_outdef}_parse "${_in}" -!define _UAC_PDF${_outdef}_flags "" -!define _UAC_PDF${_outdef}_r 0 -!insertmacro _UAC_ParseDefineFlags_orin _UAC_PDF${_outdef}_parse _UAC_PDF${_outdef}_flags ;0x1 -!insertmacro _UAC_ParseDefineFlags_orin _UAC_PDF${_outdef}_parse _UAC_PDF${_outdef}_flags ;0x2 -!insertmacro _UAC_ParseDefineFlags_orin _UAC_PDF${_outdef}_parse _UAC_PDF${_outdef}_flags ;0x4 -!insertmacro _UAC_ParseDefineFlags_orin _UAC_PDF${_outdef}_parse _UAC_PDF${_outdef}_flags ;0x8 -!insertmacro _UAC_ParseDefineFlags_orin _UAC_PDF${_outdef}_parse _UAC_PDF${_outdef}_flags ;0x10 -!macroend -!macro _UAC_ParseDefineFlags_End _outdef -!define ${_outdef} ${_UAC_PDF${_outdef}_r} -!undef _UAC_PDF${_outdef}_r -!undef _UAC_PDF${_outdef}_flags -!undef _UAC_PDF${_outdef}_parse -!macroend -!macro _UAC_ParseDefineFlags_IncludeFlag _outdef flag -!if ${_UAC_PDF${_outdef}_flags} & ${flag} - !insertmacro _UAC_definemath _UAC_PDF${_outdef}_r ${_UAC_PDF${_outdef}_r} | ${flag} -!endif -!macroend -!macro _UAC_ParseDefineFlagsToInt _outdef _in -!insertmacro _UAC_ParseDefineFlags_Begin _UAC_ParseDefineFlagsToInt_tmp "${_in}" -!define ${_outdef} ${_UAC_PDF_UAC_ParseDefineFlagsToInt_tmp_flags} -!insertmacro _UAC_ParseDefineFlags_End _UAC_ParseDefineFlagsToInt_tmp -!undef _UAC_ParseDefineFlagsToInt_tmp -!macroend - -!macro _UAC_IncL -!insertmacro _UAC_definemath __UAC_L "${__UAC_L}" + 1 -!macroend - - -!macro _UAC_MakeLL_Cmp cmpop cmp pluginparams -!insertmacro _LOGICLIB_TEMP -UAC::_ ${pluginparams} -pop $_LOGICLIB_TEMP -!insertmacro ${cmpop} $_LOGICLIB_TEMP ${cmp} `${_t}` `${_f}` -!macroend - - -!macro UAC_RunElevated -UAC::_ 0 -!macroend -!macro UAC_PageElevation_RunElevated -UAC::_ 0 -!macroend -/*!macro UAC_OnInitElevation_RunElevated -UAC::_ 0 -!macroend -!macro UAC_OnInitElevation_OnGuiInit -!macroend*/ - - -!macro UAC_IsAdmin -UAC::_ 2 -!macroend -!define UAC_IsAdmin `"" UAC_IsAdmin ""` -!macro _UAC_IsAdmin _a _b _t _f -!insertmacro _UAC_MakeLL_Cmp _!= 0 2s -!macroend - - - -!macro UAC_IsInnerInstance -UAC::_ 3 -!macroend -!define UAC_IsInnerInstance `"" UAC_IsInnerInstance ""` -!macro _UAC_IsInnerInstance _a _b _t _f -!insertmacro _UAC_MakeLL_Cmp _!= 0 3s -!macroend - -!macro UAC_Notify_OnGuiInit -UAC::_ 4 -!macroend -!macro UAC_PageElevation_OnGuiInit -!insertmacro UAC_Notify_OnGuiInit -!macroend -!macro UAC_PageElevation_OnInit -UAC::_ 5 -${IfThen} ${Errors} ${|} Quit ${|} -!macroend - - -!define UAC_SYNCREGISTERS 0x1 -#!define UAC_SYNCSTACK 0x2 -!define UAC_SYNCOUTDIR 0x4 -!define UAC_SYNCINSTDIR 0x8 -#!define UAC_CLEARERRFLAG 0x10 -!macro UAC_AsUser_Call type name flags -push $0 -Get${type}Address $0 ${name} -!verbose push -!verbose ${UAC_VERBOSE} -!insertmacro _UAC_ParseDefineFlagsToInt _UAC_AsUser_Call__flags ${flags} -!verbose pop -StrCpy $0 "1$0:${_UAC_AsUser_Call__flags}" -!undef _UAC_AsUser_Call__flags -Exch $0 -UAC::_ -!macroend - -!macro _UAC_AsUser_GenOp outvar op opparam1 opparam2 -!define _UAC_AUGOGR_ID _UAC_AUGOGR_OP${outvar}${op}${opparam1}${opparam2} -!ifndef ${_UAC_AUGOGR_ID} ;Has this exact action been done before? - !if ${outvar} == $0 - !define ${_UAC_AUGOGR_ID} $1 - !else - !define ${_UAC_AUGOGR_ID} $0 - !endif - !if "${opparam1}" == "" - !define _UAC_AUGOGR_OPP1 ${${_UAC_AUGOGR_ID}} - !define _UAC_AUGOGR_OPP2 ${opparam2} - !else - !define _UAC_AUGOGR_OPP1 ${opparam1} - !define _UAC_AUGOGR_OPP2 ${${_UAC_AUGOGR_ID}} - !endif - goto ${_UAC_AUGOGR_ID}_C - ${_UAC_AUGOGR_ID}_F: - ${op} ${_UAC_AUGOGR_OPP1} ${_UAC_AUGOGR_OPP2} - return - ${_UAC_AUGOGR_ID}_C: - !undef _UAC_AUGOGR_OPP1 - !undef _UAC_AUGOGR_OPP2 -!endif -push ${${_UAC_AUGOGR_ID}} -!insertmacro UAC_AsUser_Call Label ${_UAC_AUGOGR_ID}_F ${UAC_SYNCREGISTERS} -StrCpy ${outvar} ${${_UAC_AUGOGR_ID}} -pop ${${_UAC_AUGOGR_ID}} -!undef _UAC_AUGOGR_ID -!macroend - -!macro UAC_AsUser_GetSection datatype secidx outvar -!insertmacro _UAC_AsUser_GenOp ${outvar} SectionGet${datatype} ${secidx} "" -!macroend - -!macro UAC_AsUser_GetGlobalVar var -!insertmacro _UAC_AsUser_GenOp ${var} StrCpy "" ${var} -!macroend -!macro UAC_AsUser_GetGlobal outvar srcvar -!insertmacro _UAC_AsUser_GenOp ${outvar} StrCpy "" ${srcvar} -!macroend - - -!macro UAC_AsUser_ExecShell verb command params workdir show -!insertmacro _UAC_IncL -goto _UAC_L_E_${__UAC_L} -_UAC_L_F_${__UAC_L}: -ExecShell "${verb}" "${command}" ${params} ${show} -return -_UAC_L_E_${__UAC_L}: -!if "${workdir}" != "" - push $outdir - SetOutPath "${workdir}" -!endif -!insertmacro UAC_AsUser_Call Label _UAC_L_F_${__UAC_L} ${UAC_SYNCREGISTERS}|${UAC_SYNCOUTDIR}|${UAC_SYNCINSTDIR} #|${UAC_CLEARERRFLAG} -!if "${workdir}" != "" - pop $outdir - SetOutPath $outdir -!endif -!macroend - -!verbose pop +!ifndef UAC_HDR__INC +!verbose push +!verbose 3 +!ifndef UAC_VERBOSE + !define UAC_VERBOSE 3 +!endif +!verbose ${UAC_VERBOSE} + +!define UAC_HDR__INC 0x00020204 ;MMmmbbrr + +!include LogicLib.nsh + +!macro _UAC_definemath def val1 op val2 +!define /math _UAC_definemath "${val1}" ${op} ${val2} +!ifdef ${def} + !undef ${def} +!endif +!define ${def} "${_UAC_definemath}" +!undef _UAC_definemath +!macroend + +!macro _UAC_ParseDefineFlags_orin parse outflags +!searchparse /noerrors ${${parse}} "" _UAC_ParseDefineFlags_orin_f1 "|" _UAC_ParseDefineFlags_orin_f2 +!define _UAC_ParseDefineFlags_orin_this ${_UAC_ParseDefineFlags_orin_f1} +!undef ${parse} +!define ${parse} ${_UAC_ParseDefineFlags_orin_f2} +!define _UAC_ParseDefineFlags_orin_saveout ${${outflags}} +!undef ${outflags} +!define /math ${outflags} "${_UAC_ParseDefineFlags_orin_saveout}" | "${_UAC_ParseDefineFlags_orin_this}" +!undef _UAC_ParseDefineFlags_orin_saveout +!undef _UAC_ParseDefineFlags_orin_this +!ifdef _UAC_ParseDefineFlags_orin_f1 + !undef _UAC_ParseDefineFlags_orin_f1 + !undef _UAC_ParseDefineFlags_orin_f2 +!endif +!macroend +!macro _UAC_ParseDefineFlags_Begin _outdef _in +!define _UAC_PDF${_outdef}_parse "${_in}" +!define _UAC_PDF${_outdef}_flags "" +!define _UAC_PDF${_outdef}_r 0 +!insertmacro _UAC_ParseDefineFlags_orin _UAC_PDF${_outdef}_parse _UAC_PDF${_outdef}_flags ;0x1 +!insertmacro _UAC_ParseDefineFlags_orin _UAC_PDF${_outdef}_parse _UAC_PDF${_outdef}_flags ;0x2 +!insertmacro _UAC_ParseDefineFlags_orin _UAC_PDF${_outdef}_parse _UAC_PDF${_outdef}_flags ;0x4 +!insertmacro _UAC_ParseDefineFlags_orin _UAC_PDF${_outdef}_parse _UAC_PDF${_outdef}_flags ;0x8 +!insertmacro _UAC_ParseDefineFlags_orin _UAC_PDF${_outdef}_parse _UAC_PDF${_outdef}_flags ;0x10 +!macroend +!macro _UAC_ParseDefineFlags_End _outdef +!define ${_outdef} ${_UAC_PDF${_outdef}_r} +!undef _UAC_PDF${_outdef}_r +!undef _UAC_PDF${_outdef}_flags +!undef _UAC_PDF${_outdef}_parse +!macroend +!macro _UAC_ParseDefineFlags_IncludeFlag _outdef flag +!if ${_UAC_PDF${_outdef}_flags} & ${flag} + !insertmacro _UAC_definemath _UAC_PDF${_outdef}_r ${_UAC_PDF${_outdef}_r} | ${flag} +!endif +!macroend +!macro _UAC_ParseDefineFlagsToInt _outdef _in +!insertmacro _UAC_ParseDefineFlags_Begin _UAC_ParseDefineFlagsToInt_tmp "${_in}" +!define ${_outdef} ${_UAC_PDF_UAC_ParseDefineFlagsToInt_tmp_flags} +!insertmacro _UAC_ParseDefineFlags_End _UAC_ParseDefineFlagsToInt_tmp +!undef _UAC_ParseDefineFlagsToInt_tmp +!macroend + +!macro _UAC_IncL +!insertmacro _UAC_definemath __UAC_L "${__UAC_L}" + 1 +!macroend + + +!macro _UAC_MakeLL_Cmp cmpop cmp pluginparams +!insertmacro _LOGICLIB_TEMP +UAC::_ ${pluginparams} +pop $_LOGICLIB_TEMP +!insertmacro ${cmpop} $_LOGICLIB_TEMP ${cmp} `${_t}` `${_f}` +!macroend + + +!macro UAC_RunElevated +UAC::_ 0 +!macroend +!macro UAC_PageElevation_RunElevated +UAC::_ 0 +!macroend +/*!macro UAC_OnInitElevation_RunElevated +UAC::_ 0 +!macroend +!macro UAC_OnInitElevation_OnGuiInit +!macroend*/ + + +!macro UAC_IsAdmin +UAC::_ 2 +!macroend +!define UAC_IsAdmin `"" UAC_IsAdmin ""` +!macro _UAC_IsAdmin _a _b _t _f +!insertmacro _UAC_MakeLL_Cmp _!= 0 2s +!macroend + + + +!macro UAC_IsInnerInstance +UAC::_ 3 +!macroend +!define UAC_IsInnerInstance `"" UAC_IsInnerInstance ""` +!macro _UAC_IsInnerInstance _a _b _t _f +!insertmacro _UAC_MakeLL_Cmp _!= 0 3s +!macroend + +!macro UAC_Notify_OnGuiInit +UAC::_ 4 +!macroend +!macro UAC_PageElevation_OnGuiInit +!insertmacro UAC_Notify_OnGuiInit +!macroend +!macro UAC_PageElevation_OnInit +UAC::_ 5 +${IfThen} ${Errors} ${|} Quit ${|} +!macroend + + +!define UAC_SYNCREGISTERS 0x1 +#!define UAC_SYNCSTACK 0x2 +!define UAC_SYNCOUTDIR 0x4 +!define UAC_SYNCINSTDIR 0x8 +#!define UAC_CLEARERRFLAG 0x10 +!macro UAC_AsUser_Call type name flags +push $0 +Get${type}Address $0 ${name} +!verbose push +!verbose ${UAC_VERBOSE} +!insertmacro _UAC_ParseDefineFlagsToInt _UAC_AsUser_Call__flags ${flags} +!verbose pop +StrCpy $0 "1$0:${_UAC_AsUser_Call__flags}" +!undef _UAC_AsUser_Call__flags +Exch $0 +UAC::_ +!macroend + +!macro _UAC_AsUser_GenOp outvar op opparam1 opparam2 +!define _UAC_AUGOGR_ID _UAC_AUGOGR_OP${outvar}${op}${opparam1}${opparam2} +!ifndef ${_UAC_AUGOGR_ID} ;Has this exact action been done before? + !if ${outvar} == $0 + !define ${_UAC_AUGOGR_ID} $1 + !else + !define ${_UAC_AUGOGR_ID} $0 + !endif + !if "${opparam1}" == "" + !define _UAC_AUGOGR_OPP1 ${${_UAC_AUGOGR_ID}} + !define _UAC_AUGOGR_OPP2 ${opparam2} + !else + !define _UAC_AUGOGR_OPP1 ${opparam1} + !define _UAC_AUGOGR_OPP2 ${${_UAC_AUGOGR_ID}} + !endif + goto ${_UAC_AUGOGR_ID}_C + ${_UAC_AUGOGR_ID}_F: + ${op} ${_UAC_AUGOGR_OPP1} ${_UAC_AUGOGR_OPP2} + return + ${_UAC_AUGOGR_ID}_C: + !undef _UAC_AUGOGR_OPP1 + !undef _UAC_AUGOGR_OPP2 +!endif +push ${${_UAC_AUGOGR_ID}} +!insertmacro UAC_AsUser_Call Label ${_UAC_AUGOGR_ID}_F ${UAC_SYNCREGISTERS} +StrCpy ${outvar} ${${_UAC_AUGOGR_ID}} +pop ${${_UAC_AUGOGR_ID}} +!undef _UAC_AUGOGR_ID +!macroend + +!macro UAC_AsUser_GetSection datatype secidx outvar +!insertmacro _UAC_AsUser_GenOp ${outvar} SectionGet${datatype} ${secidx} "" +!macroend + +!macro UAC_AsUser_GetGlobalVar var +!insertmacro _UAC_AsUser_GenOp ${var} StrCpy "" ${var} +!macroend +!macro UAC_AsUser_GetGlobal outvar srcvar +!insertmacro _UAC_AsUser_GenOp ${outvar} StrCpy "" ${srcvar} +!macroend + + +!macro UAC_AsUser_ExecShell verb command params workdir show +!insertmacro _UAC_IncL +goto _UAC_L_E_${__UAC_L} +_UAC_L_F_${__UAC_L}: +ExecShell "${verb}" "${command}" ${params} ${show} +return +_UAC_L_E_${__UAC_L}: +!if "${workdir}" != "" + push $outdir + SetOutPath "${workdir}" +!endif +!insertmacro UAC_AsUser_Call Label _UAC_L_F_${__UAC_L} ${UAC_SYNCREGISTERS}|${UAC_SYNCOUTDIR}|${UAC_SYNCINSTDIR} #|${UAC_CLEARERRFLAG} +!if "${workdir}" != "" + pop $outdir + SetOutPath $outdir +!endif +!macroend + +!verbose pop !endif /* UAC_HDR__INC */ \ No newline at end of file diff --git a/BuildTools/Installer/Wizard.bmp b/Build/Installer/Wizard.bmp similarity index 100% rename from BuildTools/Installer/Wizard.bmp rename to Build/Installer/Wizard.bmp diff --git a/BuildTools/Layouts/illustro default/Rainmeter.ini b/Build/Layouts/illustro default/Rainmeter.ini similarity index 93% rename from BuildTools/Layouts/illustro default/Rainmeter.ini rename to Build/Layouts/illustro default/Rainmeter.ini index b362333b..1b9c400e 100644 --- a/BuildTools/Layouts/illustro default/Rainmeter.ini +++ b/Build/Layouts/illustro default/Rainmeter.ini @@ -1,23 +1,23 @@ -[Rainmeter] - -[illustro\Clock] -Active=1 -WindowX=(#SCREENAREAWIDTH#-200) -WindowY=0 - -[illustro\Disk] -Active=2 -WindowX=(#SCREENAREAWIDTH#-200) -WindowY=176 - -[illustro\System] -Active=1 -WindowX=(#SCREENAREAWIDTH#-200) -WindowY=68 - -[illustro\Welcome] -Active=1 -WindowX=50.000000% -WindowY=50.000000% -AnchorX=50.000000% +[Rainmeter] + +[illustro\Clock] +Active=1 +WindowX=(#SCREENAREAWIDTH#-200) +WindowY=0 + +[illustro\Disk] +Active=2 +WindowX=(#SCREENAREAWIDTH#-200) +WindowY=176 + +[illustro\System] +Active=1 +WindowX=(#SCREENAREAWIDTH#-200) +WindowY=68 + +[illustro\Welcome] +Active=1 +WindowX=50.000000% +WindowY=50.000000% +AnchorX=50.000000% AnchorY=50.000000% \ No newline at end of file diff --git a/BuildTools/Skins/illustro/@Resources/Background.png b/Build/Skins/illustro/@Resources/Background.png similarity index 100% rename from BuildTools/Skins/illustro/@Resources/Background.png rename to Build/Skins/illustro/@Resources/Background.png diff --git a/BuildTools/Skins/illustro/Clock/Clock.ini b/Build/Skins/illustro/Clock/Clock.ini similarity index 95% rename from BuildTools/Skins/illustro/Clock/Clock.ini rename to Build/Skins/illustro/Clock/Clock.ini index 3bcb981d..64bda3da 100644 --- a/BuildTools/Skins/illustro/Clock/Clock.ini +++ b/Build/Skins/illustro/Clock/Clock.ini @@ -1,138 +1,138 @@ -; Lines starting ; (semicolons) are commented out. -; That is, they do not affect the code and are here for demonstration purposes only. -; ---------------------------------- - -[Rainmeter] -; This section contains general settings that can be used to change how Rainmeter behaves. -Author=poiru -AppVersion=2003000 -Update=1000 -Background=#@#Background.png -; #@# is equal to Rainmeter\Skins\illustro\@Resources -BackgroundMode=3 -BackgroundMargins=0,34,0,14 - -[Metadata] -; Contains basic information of the skin. -Description=Displays the current date and time. -License=Creative Commons BY-NC-SA 3.0 -Version=1.0.0 - -[Variables] -; Variables declared here can be used later on between two # characters (e.g. #MyVariable#). -fontName=Trebuchet MS -textSize=8 -colorBar=235,170,0,255 -colorText=255,255,255,205 - -; ---------------------------------- -; MEASURES return some kind of value -; ---------------------------------- - -[measureTime] -; This measure returns the time in a 24-hour format (i.e. HH:MM). -Measure=Time -Format=%H:%M -; For a 12-hour clock, change the Format option above to: %I:%M %p -; Refer to the Rainmeter manual for other format codes. - -[measureDate] -; Returns the date as DD.MM.YYYY -Measure=Time -Format=%d.%m.%Y - -[measureDay] -; Returns the current day -Measure=Time -Format=%A - -; ---------------------------------- -; STYLES are used to "centralize" options -; ---------------------------------- - -[styleTitle] -StringAlign=CENTER -StringCase=UPPER -StringStyle=BOLD -StringEffect=SHADOW -FontEffectColor=0,0,0,50 -FontColor=#colorText# -FontFace=#fontName# -FontSize=10 -AntiAlias=1 -ClipString=1 - -[styleLeftText] -StringAlign=LEFT -; Meters using styleLeftText will be left-aligned. -StringCase=NONE -StringStyle=BOLD -StringEffect=SHADOW -FontEffectColor=0,0,0,20 -FontColor=#colorText# -FontFace=#fontName# -FontSize=#textSize# -AntiAlias=1 -ClipString=1 - -[styleRightText] -StringAlign=RIGHT -StringCase=NONE -StringStyle=BOLD -StringEffect=SHADOW -FontEffectColor=0,0,0,20 -FontColor=#colorText# -FontFace=#fontName# -FontSize=#textSize# -AntiAlias=1 -ClipString=1 - -[styleSeperator] -SolidColor=255,255,255,15 - -; ---------------------------------- -; METERS display images, text, bars, etc. -; ---------------------------------- - -[meterTitle] -Meter=STRING -MeterStyle=styleTitle -; Using MeterStyle=styleTitle will basically "copy" the -; contents of the [styleTitle] section here during runtime. -MeasureName=measureTime -X=100 -Y=12 -W=190 -H=18 -Text="%1" -; %1 stands for the value of MeasureName (measureTime in this case). - -[meterDay] -Meter=STRING -MeterStyle=styleLeftText -MeasureName=measureDay -X=10 -Y=40 -W=190 -H=14 -Text="%1" - -[meterDate] -Meter=STRING -MeterStyle=styleRightText -MeasureName=measureDate -X=200 -Y=0r -; r stands for relative. In this case, the Y postition of meterValueCPU is 0 pixels -; below the Y value of the previous meter (i.e it's the same as in meterLabelCPU). -W=190 -H=14 -Text="%1" - -[meterSeperator] -Meter=IMAGE -MeterStyle=styleSeperator -X=10 -Y=52 -W=190 +; Lines starting ; (semicolons) are commented out. +; That is, they do not affect the code and are here for demonstration purposes only. +; ---------------------------------- + +[Rainmeter] +; This section contains general settings that can be used to change how Rainmeter behaves. +Author=poiru +AppVersion=2003000 +Update=1000 +Background=#@#Background.png +; #@# is equal to Rainmeter\Skins\illustro\@Resources +BackgroundMode=3 +BackgroundMargins=0,34,0,14 + +[Metadata] +; Contains basic information of the skin. +Description=Displays the current date and time. +License=Creative Commons BY-NC-SA 3.0 +Version=1.0.0 + +[Variables] +; Variables declared here can be used later on between two # characters (e.g. #MyVariable#). +fontName=Trebuchet MS +textSize=8 +colorBar=235,170,0,255 +colorText=255,255,255,205 + +; ---------------------------------- +; MEASURES return some kind of value +; ---------------------------------- + +[measureTime] +; This measure returns the time in a 24-hour format (i.e. HH:MM). +Measure=Time +Format=%H:%M +; For a 12-hour clock, change the Format option above to: %I:%M %p +; Refer to the Rainmeter manual for other format codes. + +[measureDate] +; Returns the date as DD.MM.YYYY +Measure=Time +Format=%d.%m.%Y + +[measureDay] +; Returns the current day +Measure=Time +Format=%A + +; ---------------------------------- +; STYLES are used to "centralize" options +; ---------------------------------- + +[styleTitle] +StringAlign=CENTER +StringCase=UPPER +StringStyle=BOLD +StringEffect=SHADOW +FontEffectColor=0,0,0,50 +FontColor=#colorText# +FontFace=#fontName# +FontSize=10 +AntiAlias=1 +ClipString=1 + +[styleLeftText] +StringAlign=LEFT +; Meters using styleLeftText will be left-aligned. +StringCase=NONE +StringStyle=BOLD +StringEffect=SHADOW +FontEffectColor=0,0,0,20 +FontColor=#colorText# +FontFace=#fontName# +FontSize=#textSize# +AntiAlias=1 +ClipString=1 + +[styleRightText] +StringAlign=RIGHT +StringCase=NONE +StringStyle=BOLD +StringEffect=SHADOW +FontEffectColor=0,0,0,20 +FontColor=#colorText# +FontFace=#fontName# +FontSize=#textSize# +AntiAlias=1 +ClipString=1 + +[styleSeperator] +SolidColor=255,255,255,15 + +; ---------------------------------- +; METERS display images, text, bars, etc. +; ---------------------------------- + +[meterTitle] +Meter=STRING +MeterStyle=styleTitle +; Using MeterStyle=styleTitle will basically "copy" the +; contents of the [styleTitle] section here during runtime. +MeasureName=measureTime +X=100 +Y=12 +W=190 +H=18 +Text="%1" +; %1 stands for the value of MeasureName (measureTime in this case). + +[meterDay] +Meter=STRING +MeterStyle=styleLeftText +MeasureName=measureDay +X=10 +Y=40 +W=190 +H=14 +Text="%1" + +[meterDate] +Meter=STRING +MeterStyle=styleRightText +MeasureName=measureDate +X=200 +Y=0r +; r stands for relative. In this case, the Y postition of meterValueCPU is 0 pixels +; below the Y value of the previous meter (i.e it's the same as in meterLabelCPU). +W=190 +H=14 +Text="%1" + +[meterSeperator] +Meter=IMAGE +MeterStyle=styleSeperator +X=10 +Y=52 +W=190 H=1 \ No newline at end of file diff --git a/BuildTools/Skins/illustro/Disk/1 Disk.ini b/Build/Skins/illustro/Disk/1 Disk.ini similarity index 95% rename from BuildTools/Skins/illustro/Disk/1 Disk.ini rename to Build/Skins/illustro/Disk/1 Disk.ini index 669723bd..40deafc4 100644 --- a/BuildTools/Skins/illustro/Disk/1 Disk.ini +++ b/Build/Skins/illustro/Disk/1 Disk.ini @@ -1,149 +1,149 @@ -; Lines starting ; (semicolons) are commented out. -; That is, they do not affect the code and are here for demonstration purposes only. -; ---------------------------------- - -; NOTE! If you want to add more disks, take a look at 'Disks 2.ini'. - -[Rainmeter] -; This section contains general settings that can be used to change how Rainmeter behaves. -Author=poiru -AppVersion=2003000 -Update=1000 -Background=#@#Background.png -; #@# is equal to Rainmeter\Skins\illustro\@Resources -BackgroundMode=3 -BackgroundMargins=0,34,0,14 - -[Metadata] -; Contains basic information of the skin. -Description=Displays disk usage. -License=Creative Commons BY-NC-SA 3.0 -Version=1.0.0 - -[Variables] -; Variables declared here can be used later on between two # characters (e.g. #MyVariable#). -fontName=Trebuchet MS -textSize=8 -colorBar=235,170,0,255 -colorText=255,255,255,205 -disk1=C: - -; ---------------------------------- -; MEASURES return some kind of value -; ---------------------------------- - -[measureTotalDisk1] -; This measure returns the total disk space -Measure=FreeDiskSpace -Drive=#disk1# -Total=1 -UpdateDivider=120 - -[measureUsedDisk1] -; Returns inverted value of free disk space (i.e. used disk space) -Measure=FreeDiskSpace -Drive=#disk1# -InvertMeasure=1 -UpdateDivider=120 - -; ---------------------------------- -; STYLES are used to "centralize" options -; ---------------------------------- - -[styleTitle] -StringAlign=CENTER -StringCase=UPPER -StringStyle=BOLD -StringEffect=SHADOW -FontEffectColor=0,0,0,50 -FontColor=#colorText# -FontFace=#fontName# -FontSize=10 -AntiAlias=1 -ClipString=1 - -[styleLeftText] -StringAlign=LEFT -; Meters using styleLeftText will be left-aligned. -StringCase=NONE -StringStyle=BOLD -StringEffect=SHADOW -FontEffectColor=0,0,0,20 -FontColor=#colorText# -FontFace=#fontName# -FontSize=#textSize# -AntiAlias=1 -ClipString=1 - -[styleRightText] -StringAlign=RIGHT -StringCase=NONE -StringStyle=BOLD -StringEffect=SHADOW -FontEffectColor=0,0,0,20 -FontColor=#colorText# -FontFace=#fontName# -FontSize=#textSize# -AntiAlias=1 -ClipString=1 - -[styleBar] -BarColor=#colorBar# -BarOrientation=HORIZONTAL -SolidColor=255,255,255,15 - -; ---------------------------------- -; METERS display images, text, bars, etc. -; ---------------------------------- - -[meterTitle] -Meter=STRING -MeterStyle=styleTitle -; Using MeterStyle=styleTitle will basically "copy" the -; contents of the [styleTitle] section here during runtime. -X=100 -Y=12 -W=190 -H=18 -Text="Disks" -; Even though the text is set to Disks, Rainmeter will display -; it as DISKS, because styleTitle contains StringCase=UPPER. - -[meterLabelDisk1] -Meter=STRING -MeterStyle=styleLeftText -X=10 -Y=40 -W=190 -H=14 -Text="#disk1#\" - -[meterValueDisk1] -Meter=STRING -MeterStyle=styleRightText -MeasureName=measureUsedDisk1 -MeasureName2=measureTotalDisk1 -X=200 -Y=0r -; r stands for relative. In this case, the Y postition of meterValueCPU is 0 pixels -; below the Y value of the previous meter (i.e it's the same as in meterLabelCPU). -W=190 -H=14 -Text="%1B/%2B used" -; %1 stands for the value of MeasureName (measureUsedDisk1 in this case). -; %2 stands for the value of MeasureName2. -NumOfDecimals=1 -AutoScale=1 -; Because disk measures return the free/used space in bytes, we must use AutoScale=1 to -; automatically scale the value into a more readable figure. -LeftMouseUpAction=!Execute ["#disk1#\"] -; Open #disk1# on click - -[meterBarDisk1] -Meter=BAR -MeterStyle=styleBar -MeasureName=measureUsedDisk1 -X=10 -Y=52 -W=190 +; Lines starting ; (semicolons) are commented out. +; That is, they do not affect the code and are here for demonstration purposes only. +; ---------------------------------- + +; NOTE! If you want to add more disks, take a look at 'Disks 2.ini'. + +[Rainmeter] +; This section contains general settings that can be used to change how Rainmeter behaves. +Author=poiru +AppVersion=2003000 +Update=1000 +Background=#@#Background.png +; #@# is equal to Rainmeter\Skins\illustro\@Resources +BackgroundMode=3 +BackgroundMargins=0,34,0,14 + +[Metadata] +; Contains basic information of the skin. +Description=Displays disk usage. +License=Creative Commons BY-NC-SA 3.0 +Version=1.0.0 + +[Variables] +; Variables declared here can be used later on between two # characters (e.g. #MyVariable#). +fontName=Trebuchet MS +textSize=8 +colorBar=235,170,0,255 +colorText=255,255,255,205 +disk1=C: + +; ---------------------------------- +; MEASURES return some kind of value +; ---------------------------------- + +[measureTotalDisk1] +; This measure returns the total disk space +Measure=FreeDiskSpace +Drive=#disk1# +Total=1 +UpdateDivider=120 + +[measureUsedDisk1] +; Returns inverted value of free disk space (i.e. used disk space) +Measure=FreeDiskSpace +Drive=#disk1# +InvertMeasure=1 +UpdateDivider=120 + +; ---------------------------------- +; STYLES are used to "centralize" options +; ---------------------------------- + +[styleTitle] +StringAlign=CENTER +StringCase=UPPER +StringStyle=BOLD +StringEffect=SHADOW +FontEffectColor=0,0,0,50 +FontColor=#colorText# +FontFace=#fontName# +FontSize=10 +AntiAlias=1 +ClipString=1 + +[styleLeftText] +StringAlign=LEFT +; Meters using styleLeftText will be left-aligned. +StringCase=NONE +StringStyle=BOLD +StringEffect=SHADOW +FontEffectColor=0,0,0,20 +FontColor=#colorText# +FontFace=#fontName# +FontSize=#textSize# +AntiAlias=1 +ClipString=1 + +[styleRightText] +StringAlign=RIGHT +StringCase=NONE +StringStyle=BOLD +StringEffect=SHADOW +FontEffectColor=0,0,0,20 +FontColor=#colorText# +FontFace=#fontName# +FontSize=#textSize# +AntiAlias=1 +ClipString=1 + +[styleBar] +BarColor=#colorBar# +BarOrientation=HORIZONTAL +SolidColor=255,255,255,15 + +; ---------------------------------- +; METERS display images, text, bars, etc. +; ---------------------------------- + +[meterTitle] +Meter=STRING +MeterStyle=styleTitle +; Using MeterStyle=styleTitle will basically "copy" the +; contents of the [styleTitle] section here during runtime. +X=100 +Y=12 +W=190 +H=18 +Text="Disks" +; Even though the text is set to Disks, Rainmeter will display +; it as DISKS, because styleTitle contains StringCase=UPPER. + +[meterLabelDisk1] +Meter=STRING +MeterStyle=styleLeftText +X=10 +Y=40 +W=190 +H=14 +Text="#disk1#\" + +[meterValueDisk1] +Meter=STRING +MeterStyle=styleRightText +MeasureName=measureUsedDisk1 +MeasureName2=measureTotalDisk1 +X=200 +Y=0r +; r stands for relative. In this case, the Y postition of meterValueCPU is 0 pixels +; below the Y value of the previous meter (i.e it's the same as in meterLabelCPU). +W=190 +H=14 +Text="%1B/%2B used" +; %1 stands for the value of MeasureName (measureUsedDisk1 in this case). +; %2 stands for the value of MeasureName2. +NumOfDecimals=1 +AutoScale=1 +; Because disk measures return the free/used space in bytes, we must use AutoScale=1 to +; automatically scale the value into a more readable figure. +LeftMouseUpAction=!Execute ["#disk1#\"] +; Open #disk1# on click + +[meterBarDisk1] +Meter=BAR +MeterStyle=styleBar +MeasureName=measureUsedDisk1 +X=10 +Y=52 +W=190 H=1 \ No newline at end of file diff --git a/BuildTools/Skins/illustro/Disk/2 Disks.ini b/Build/Skins/illustro/Disk/2 Disks.ini similarity index 96% rename from BuildTools/Skins/illustro/Disk/2 Disks.ini rename to Build/Skins/illustro/Disk/2 Disks.ini index e255501a..78079f21 100644 --- a/BuildTools/Skins/illustro/Disk/2 Disks.ini +++ b/Build/Skins/illustro/Disk/2 Disks.ini @@ -1,209 +1,209 @@ -; Lines starting ; (semicolons) are commented out. -; That is, they do not affect the code and are here for demonstration purposes only. -; ---------------------------------- - -; HOWTO: Adding more disks -; ---------------------------------- -; Adding more disks is a pretty straightforward process. Follow the following steps to turn -; this 2 disks skin into a 3 disks skin. You can then extend it even further as you wish. -; -; 1) Create a new variable called disk3=X: directly below disk2=D: in the [Variables] section -; 2) Create a copy of the [measureTotalDisk2] and [measureUsedDisk2] sections -; 3) Rename the copied sections to [measureTotalDisk3] and [measureUsedDisk3], respectively. -; Also change Drive=#disk2# to Drive=#disk3# -; 4) Create a copy of the [meterLabelDisk2], [meterValueDisk2], and [meterBarDisk2]. -; Rename all Disk2's in the copied sections to Disk3. -; 5) Now we need to change the Y= values to adjust height. Change Y= under [meterLabelDisk3] -; to Y=80 (calculated by adding 20 to the Y= value of previous meterLabel). -; Then change Y= under [meterBarDisk3] to Y=92 (calculated by adding 20 to the Y= value of previous meterBar). -; 6) Save the file as '3 Disks.ini'. Now right-click on the Rainmeter tray icon and select -; 'Refresh All'. Now go activate the '3 Disks.ini' skin and enjoy! :) - -[Rainmeter] -; This section contains general settings that can be used to change how Rainmeter behaves. -Author=poiru -AppVersion=2003000 -Update=1000 -Background=#@#Background.png -; #@# is equal to Rainmeter\Skins\illustro\@Resources -BackgroundMode=3 -BackgroundMargins=0,34,0,14 - -[Metadata] -; Contains basic information of the skin. -Description=Displays disk usage. -License=Creative Commons BY-NC-SA 3.0 -Version=1.0.0 - -[Variables] -; Variables declared here can be used later on between two # characters (e.g. #MyVariable#). -fontName=Trebuchet MS -textSize=8 -colorBar=235,170,0,255 -colorText=255,255,255,205 -disk1=C: -disk2=D: - -; ---------------------------------- -; MEASURES return some kind of value -; ---------------------------------- - -[measureTotalDisk1] -; This measure returns the total disk space -Measure=FreeDiskSpace -Drive=#disk1# -Total=1 -UpdateDivider=120 - -[measureUsedDisk1] -; Returns inverted value of free disk space (i.e. used disk space) -Measure=FreeDiskSpace -Drive=#disk1# -InvertMeasure=1 -UpdateDivider=120 - -[measureTotalDisk2] -Measure=FreeDiskSpace -Drive=#disk2# -Total=1 -UpdateDivider=120 - -[measureUsedDisk2] -Measure=FreeDiskSpace -Drive=#disk2# -InvertMeasure=1 -UpdateDivider=120 - -; ---------------------------------- -; STYLES are used to "centralize" options -; ---------------------------------- - -[styleTitle] -StringAlign=CENTER -StringCase=UPPER -StringStyle=BOLD -StringEffect=SHADOW -FontEffectColor=0,0,0,50 -FontColor=#colorText# -FontFace=#fontName# -FontSize=10 -AntiAlias=1 -ClipString=1 - -[styleLeftText] -StringAlign=LEFT -; Meters using styleLeftText will be left-aligned. -StringCase=NONE -StringStyle=BOLD -StringEffect=SHADOW -FontEffectColor=0,0,0,20 -FontColor=#colorText# -FontFace=#fontName# -FontSize=#textSize# -AntiAlias=1 -ClipString=1 - -[styleRightText] -StringAlign=RIGHT -StringCase=NONE -StringStyle=BOLD -StringEffect=SHADOW -FontEffectColor=0,0,0,20 -FontColor=#colorText# -FontFace=#fontName# -FontSize=#textSize# -AntiAlias=1 -ClipString=1 - -[styleBar] -BarColor=#colorBar# -BarOrientation=HORIZONTAL -SolidColor=255,255,255,15 - -; ---------------------------------- -; METERS display images, text, bars, etc. -; ---------------------------------- - -[meterTitle] -Meter=STRING -MeterStyle=styleTitle -; Using MeterStyle=styleTitle will basically "copy" the -; contents of the [styleTitle] section here during runtime. -X=100 -Y=12 -W=190 -H=18 -Text="Disk" -; Even though the text is set to Disk, Rainmeter will display -; it as DISK, because styleTitle contains StringCase=UPPER. - -[meterLabelDisk1] -Meter=STRING -MeterStyle=styleLeftText -X=10 -Y=40 -W=190 -H=14 -Text="#disk1#\" - -[meterValueDisk1] -Meter=STRING -MeterStyle=styleRightText -MeasureName=measureUsedDisk1 -MeasureName2=measureTotalDisk1 -X=200 -Y=0r -; r stands for relative. In this case, the Y postition of meterValueCPU is 0 pixels -; below the Y value of the previous meter (i.e it's the same as in meterLabelCPU). -W=190 -H=14 -Text="%1B/%2B used" -; %1 stands for the value of MeasureName (measureUsedDisk1 in this case). -; %2 stands for the value of MeasureName2. -NumOfDecimals=1 -AutoScale=1 -; Because disk measures return the free/used space in bytes, we must use AutoScale=1 to -; automatically scale the value into a more readable figure. -LeftMouseUpAction=!Execute ["#disk1#\"] -; Open #disk1# on click - -[meterBarDisk1] -Meter=BAR -MeterStyle=styleBar -MeasureName=measureUsedDisk1 -X=10 -Y=52 -W=190 -H=1 - -[meterLabelDisk2] -Meter=STRING -MeterStyle=styleLeftText -X=10 -Y=60 -W=190 -H=14 -Text="#disk2#\" -LeftMouseUpAction=!Execute ["#disk2#\"] - -[meterValueDisk2] -Meter=STRING -MeterStyle=styleRightText -MeasureName=measureUsedDisk2 -MeasureName2=measureTotalDisk2 -X=200 -Y=0r -W=190 -H=14 -Text="%1B/%2B used" -NumOfDecimals=1 -AutoScale=1 - -[meterBarDisk2] -Meter=BAR -MeterStyle=styleBar -MeasureName=measureUsedDisk2 -X=10 -Y=72 -W=190 +; Lines starting ; (semicolons) are commented out. +; That is, they do not affect the code and are here for demonstration purposes only. +; ---------------------------------- + +; HOWTO: Adding more disks +; ---------------------------------- +; Adding more disks is a pretty straightforward process. Follow the following steps to turn +; this 2 disks skin into a 3 disks skin. You can then extend it even further as you wish. +; +; 1) Create a new variable called disk3=X: directly below disk2=D: in the [Variables] section +; 2) Create a copy of the [measureTotalDisk2] and [measureUsedDisk2] sections +; 3) Rename the copied sections to [measureTotalDisk3] and [measureUsedDisk3], respectively. +; Also change Drive=#disk2# to Drive=#disk3# +; 4) Create a copy of the [meterLabelDisk2], [meterValueDisk2], and [meterBarDisk2]. +; Rename all Disk2's in the copied sections to Disk3. +; 5) Now we need to change the Y= values to adjust height. Change Y= under [meterLabelDisk3] +; to Y=80 (calculated by adding 20 to the Y= value of previous meterLabel). +; Then change Y= under [meterBarDisk3] to Y=92 (calculated by adding 20 to the Y= value of previous meterBar). +; 6) Save the file as '3 Disks.ini'. Now right-click on the Rainmeter tray icon and select +; 'Refresh All'. Now go activate the '3 Disks.ini' skin and enjoy! :) + +[Rainmeter] +; This section contains general settings that can be used to change how Rainmeter behaves. +Author=poiru +AppVersion=2003000 +Update=1000 +Background=#@#Background.png +; #@# is equal to Rainmeter\Skins\illustro\@Resources +BackgroundMode=3 +BackgroundMargins=0,34,0,14 + +[Metadata] +; Contains basic information of the skin. +Description=Displays disk usage. +License=Creative Commons BY-NC-SA 3.0 +Version=1.0.0 + +[Variables] +; Variables declared here can be used later on between two # characters (e.g. #MyVariable#). +fontName=Trebuchet MS +textSize=8 +colorBar=235,170,0,255 +colorText=255,255,255,205 +disk1=C: +disk2=D: + +; ---------------------------------- +; MEASURES return some kind of value +; ---------------------------------- + +[measureTotalDisk1] +; This measure returns the total disk space +Measure=FreeDiskSpace +Drive=#disk1# +Total=1 +UpdateDivider=120 + +[measureUsedDisk1] +; Returns inverted value of free disk space (i.e. used disk space) +Measure=FreeDiskSpace +Drive=#disk1# +InvertMeasure=1 +UpdateDivider=120 + +[measureTotalDisk2] +Measure=FreeDiskSpace +Drive=#disk2# +Total=1 +UpdateDivider=120 + +[measureUsedDisk2] +Measure=FreeDiskSpace +Drive=#disk2# +InvertMeasure=1 +UpdateDivider=120 + +; ---------------------------------- +; STYLES are used to "centralize" options +; ---------------------------------- + +[styleTitle] +StringAlign=CENTER +StringCase=UPPER +StringStyle=BOLD +StringEffect=SHADOW +FontEffectColor=0,0,0,50 +FontColor=#colorText# +FontFace=#fontName# +FontSize=10 +AntiAlias=1 +ClipString=1 + +[styleLeftText] +StringAlign=LEFT +; Meters using styleLeftText will be left-aligned. +StringCase=NONE +StringStyle=BOLD +StringEffect=SHADOW +FontEffectColor=0,0,0,20 +FontColor=#colorText# +FontFace=#fontName# +FontSize=#textSize# +AntiAlias=1 +ClipString=1 + +[styleRightText] +StringAlign=RIGHT +StringCase=NONE +StringStyle=BOLD +StringEffect=SHADOW +FontEffectColor=0,0,0,20 +FontColor=#colorText# +FontFace=#fontName# +FontSize=#textSize# +AntiAlias=1 +ClipString=1 + +[styleBar] +BarColor=#colorBar# +BarOrientation=HORIZONTAL +SolidColor=255,255,255,15 + +; ---------------------------------- +; METERS display images, text, bars, etc. +; ---------------------------------- + +[meterTitle] +Meter=STRING +MeterStyle=styleTitle +; Using MeterStyle=styleTitle will basically "copy" the +; contents of the [styleTitle] section here during runtime. +X=100 +Y=12 +W=190 +H=18 +Text="Disk" +; Even though the text is set to Disk, Rainmeter will display +; it as DISK, because styleTitle contains StringCase=UPPER. + +[meterLabelDisk1] +Meter=STRING +MeterStyle=styleLeftText +X=10 +Y=40 +W=190 +H=14 +Text="#disk1#\" + +[meterValueDisk1] +Meter=STRING +MeterStyle=styleRightText +MeasureName=measureUsedDisk1 +MeasureName2=measureTotalDisk1 +X=200 +Y=0r +; r stands for relative. In this case, the Y postition of meterValueCPU is 0 pixels +; below the Y value of the previous meter (i.e it's the same as in meterLabelCPU). +W=190 +H=14 +Text="%1B/%2B used" +; %1 stands for the value of MeasureName (measureUsedDisk1 in this case). +; %2 stands for the value of MeasureName2. +NumOfDecimals=1 +AutoScale=1 +; Because disk measures return the free/used space in bytes, we must use AutoScale=1 to +; automatically scale the value into a more readable figure. +LeftMouseUpAction=!Execute ["#disk1#\"] +; Open #disk1# on click + +[meterBarDisk1] +Meter=BAR +MeterStyle=styleBar +MeasureName=measureUsedDisk1 +X=10 +Y=52 +W=190 +H=1 + +[meterLabelDisk2] +Meter=STRING +MeterStyle=styleLeftText +X=10 +Y=60 +W=190 +H=14 +Text="#disk2#\" +LeftMouseUpAction=!Execute ["#disk2#\"] + +[meterValueDisk2] +Meter=STRING +MeterStyle=styleRightText +MeasureName=measureUsedDisk2 +MeasureName2=measureTotalDisk2 +X=200 +Y=0r +W=190 +H=14 +Text="%1B/%2B used" +NumOfDecimals=1 +AutoScale=1 + +[meterBarDisk2] +Meter=BAR +MeterStyle=styleBar +MeasureName=measureUsedDisk2 +X=10 +Y=72 +W=190 H=1 \ No newline at end of file diff --git a/BuildTools/Skins/illustro/Google/Google.ini b/Build/Skins/illustro/Google/Google.ini similarity index 95% rename from BuildTools/Skins/illustro/Google/Google.ini rename to Build/Skins/illustro/Google/Google.ini index 07b32b6c..2cf7dc04 100644 --- a/BuildTools/Skins/illustro/Google/Google.ini +++ b/Build/Skins/illustro/Google/Google.ini @@ -1,119 +1,119 @@ -; Lines starting ; (semicolons) are commented out. -; That is, they do not affect the code and are here for demonstration purposes only. -; ---------------------------------- - -[Rainmeter] -; This section contains general settings that can be used to change how Rainmeter behaves. -Author=poiru -AppVersion=2003000 -Update=1000 -Background=#@#Background.png -; #@# is equal to Rainmeter\Skins\illustro\@Resources -BackgroundMode=3 -BackgroundMargins=0,34,0,14 - -[Metadata] -; Contains basic information of the skin. -Description=Allows searching through Google. -License=Creative Commons BY-NC-SA 3.0 -Version=1.0.0 - -[Variables] -; Variables declared here can be used later on between two # characters (e.g. #MyVariable#). -fontName=Trebuchet MS -textSize=8 -colorBar=235,170,0,255 -colorText=255,255,255,205 - -; ---------------------------------- -; MEASURES return some kind of value -; ---------------------------------- - -[measureInput] -; The InputText.dll plugin has special powers: it allows user input. -; However, it's not the easiest way to start learning Rainmeter. Get a -; hold of the basics, and then check out the manual entry for InputText. -Measure=Plugin -Plugin=InputText.dll -SolidColor=20,20,20,255 -StringAlign=LEFT -StringCase=NONE -StringStyle=BOLD -StringEffect=SHADOW -FontEffectColor=0,0,0,20 -FontColor=#colorText# -FontFace=#fontName# -FontSize=#textSize# -X=10 -Y=38 -W=188 -H=17 -FocusDismiss=1 -DefaultValue="" -Command1=!Execute ["http://www.google.com/search?q=$UserInput$"] -UpdateDivider=86400 - -; ---------------------------------- -; STYLES are used to "centralize" options -; ---------------------------------- - -[styleTitle] -StringAlign=CENTER -StringCase=UPPER -StringStyle=BOLD -StringEffect=SHADOW -FontEffectColor=0,0,0,50 -FontColor=#colorText# -FontFace=#fontName# -FontSize=10 -AntiAlias=1 -ClipString=1 - -[styleLeftText] -StringAlign=LEFT -; Meters using styleLeftText will be left-aligned. -StringCase=NONE -StringStyle=BOLD -StringEffect=SHADOW -FontEffectColor=0,0,0,20 -FontColor=#colorText# -FontFace=#fontName# -FontSize=#textSize# -AntiAlias=1 -ClipString=1 - -[styleSeperator] -SolidColor=255,255,255,15 - -; ---------------------------------- -; METERS display images, text, bars, etc. -; ---------------------------------- - -[meterTitle] -Meter=STRING -MeterStyle=styleTitle -; Using MeterStyle=styleTitle will basically "copy" the -; contents of the [styleTitle] section here during runtime. -X=100 -Y=12 -W=190 -H=18 -Text="Google" - -[meterSearch] -Meter=STRING -MeterStyle=styleLeftText -X=10 -Y=40 -W=190 -H=14 -Text="Search..." -LeftMouseUpAction=!PluginBang "measureInput ExecuteBatch 1" - -[meterSeperator] -Meter=IMAGE -MeterStyle=styleSeperator -X=10 -Y=52 -W=190 +; Lines starting ; (semicolons) are commented out. +; That is, they do not affect the code and are here for demonstration purposes only. +; ---------------------------------- + +[Rainmeter] +; This section contains general settings that can be used to change how Rainmeter behaves. +Author=poiru +AppVersion=2003000 +Update=1000 +Background=#@#Background.png +; #@# is equal to Rainmeter\Skins\illustro\@Resources +BackgroundMode=3 +BackgroundMargins=0,34,0,14 + +[Metadata] +; Contains basic information of the skin. +Description=Allows searching through Google. +License=Creative Commons BY-NC-SA 3.0 +Version=1.0.0 + +[Variables] +; Variables declared here can be used later on between two # characters (e.g. #MyVariable#). +fontName=Trebuchet MS +textSize=8 +colorBar=235,170,0,255 +colorText=255,255,255,205 + +; ---------------------------------- +; MEASURES return some kind of value +; ---------------------------------- + +[measureInput] +; The InputText.dll plugin has special powers: it allows user input. +; However, it's not the easiest way to start learning Rainmeter. Get a +; hold of the basics, and then check out the manual entry for InputText. +Measure=Plugin +Plugin=InputText.dll +SolidColor=20,20,20,255 +StringAlign=LEFT +StringCase=NONE +StringStyle=BOLD +StringEffect=SHADOW +FontEffectColor=0,0,0,20 +FontColor=#colorText# +FontFace=#fontName# +FontSize=#textSize# +X=10 +Y=38 +W=188 +H=17 +FocusDismiss=1 +DefaultValue="" +Command1=!Execute ["http://www.google.com/search?q=$UserInput$"] +UpdateDivider=86400 + +; ---------------------------------- +; STYLES are used to "centralize" options +; ---------------------------------- + +[styleTitle] +StringAlign=CENTER +StringCase=UPPER +StringStyle=BOLD +StringEffect=SHADOW +FontEffectColor=0,0,0,50 +FontColor=#colorText# +FontFace=#fontName# +FontSize=10 +AntiAlias=1 +ClipString=1 + +[styleLeftText] +StringAlign=LEFT +; Meters using styleLeftText will be left-aligned. +StringCase=NONE +StringStyle=BOLD +StringEffect=SHADOW +FontEffectColor=0,0,0,20 +FontColor=#colorText# +FontFace=#fontName# +FontSize=#textSize# +AntiAlias=1 +ClipString=1 + +[styleSeperator] +SolidColor=255,255,255,15 + +; ---------------------------------- +; METERS display images, text, bars, etc. +; ---------------------------------- + +[meterTitle] +Meter=STRING +MeterStyle=styleTitle +; Using MeterStyle=styleTitle will basically "copy" the +; contents of the [styleTitle] section here during runtime. +X=100 +Y=12 +W=190 +H=18 +Text="Google" + +[meterSearch] +Meter=STRING +MeterStyle=styleLeftText +X=10 +Y=40 +W=190 +H=14 +Text="Search..." +LeftMouseUpAction=!PluginBang "measureInput ExecuteBatch 1" + +[meterSeperator] +Meter=IMAGE +MeterStyle=styleSeperator +X=10 +Y=52 +W=190 H=1 \ No newline at end of file diff --git a/BuildTools/Skins/illustro/Network/Network.ini b/Build/Skins/illustro/Network/Network.ini similarity index 95% rename from BuildTools/Skins/illustro/Network/Network.ini rename to Build/Skins/illustro/Network/Network.ini index b72007bf..3669c330 100644 --- a/BuildTools/Skins/illustro/Network/Network.ini +++ b/Build/Skins/illustro/Network/Network.ini @@ -1,215 +1,215 @@ -; Lines starting ; (semicolons) are commented out. -; That is, they do not affect the code and are here for demonstration purposes only. -; ---------------------------------- - -[Rainmeter] -; This section contains general settings that can be used to change how Rainmeter behaves. -Author=poiru -AppVersion=2003000 -Update=1000 -Background=#@#Background.png -; #@# is equal to Rainmeter\Skins\illustro\@Resources -BackgroundMode=3 -BackgroundMargins=0,34,0,14 - -[Metadata] -; Contains basic information of the skin. -Description=Shows your IP address and network activity. -License=Creative Commons BY-NC-SA 3.0 -Version=1.0.0 - -[Variables] -; Variables declared here can be used later on between two # characters (e.g. #MyVariable#). -fontName=Trebuchet MS -textSize=8 -colorBar=235,170,0,255 -colorText=255,255,255,205 -maxDownload=10485760 -MaxUpload=10485760 -; Set maxDownload and maxUpload to your maximum download and upload speed in bits. -; To convert kilobits, megabits, kilobytes, and megabytes into bits, go to www.google.com -; and search for something like "10 megabytes in bits". - -; ---------------------------------- -; MEASURES return some kind of value -; ---------------------------------- - -[measureIP] -; This measure returns your IP. WebParser measures are relatively complicated. If you're a beginner with -; Rainmeter, take a look at some of the other illustro skins before modifying this one. -Measure=Plugin -Plugin=WebParser.dll -Url=http://checkip.dyndns.org -UpdateRate=14400 -RegExp="(?siU)Address: (.*)" -StringIndex=1 -Substitute="":"N/A" -; Substitute works as follows: "A":"B" where A is a string to substitute and B is a string -; to substitute with. In this case, it substutes "" (i.e. empty) to N/A - -[measureNetIn] -Measure=NetIn -NetInSpeed=#maxDownload# -; NetInSpeed must be set so your maximun download speed for the download bar to scale correctly - -[measureNetOut] -Measure=NetOut -NetOutSpeed=#maxUpload# - -; ---------------------------------- -; STYLES are used to "centralize" options -; ---------------------------------- - -[styleTitle] -StringAlign=CENTER -StringCase=UPPER -StringStyle=BOLD -StringEffect=SHADOW -FontEffectColor=0,0,0,50 -FontColor=#colorText# -FontFace=#fontName# -FontSize=10 -AntiAlias=1 -ClipString=1 - -[styleLeftText] -StringAlign=LEFT -; Meters using styleLeftText will be left-aligned. -StringCase=NONE -StringStyle=BOLD -StringEffect=SHADOW -FontEffectColor=0,0,0,20 -FontColor=#colorText# -FontFace=#fontName# -FontSize=#textSize# -AntiAlias=1 -ClipString=1 - -[styleRightText] -StringAlign=RIGHT -StringCase=NONE -StringStyle=BOLD -StringEffect=SHADOW -FontEffectColor=0,0,0,20 -FontColor=#colorText# -FontFace=#fontName# -FontSize=#textSize# -AntiAlias=1 -ClipString=1 - -[styleBar] -BarColor=#colorBar# -BarOrientation=HORIZONTAL -SolidColor=255,255,255,15 - -[styleSeperator] -SolidColor=255,255,255,15 - -; ---------------------------------- -; METERS display images, text, bars, etc. -; ---------------------------------- - -[meterTitle] -Meter=STRING -MeterStyle=styleTitle -; Using MeterStyle=styleTitle will basically "copy" the -; contents of the [styleTitle] section here during runtime. -X=100 -Y=12 -W=190 -H=18 -Text="Network" -; Even though the text is set to Network, Rainmeter will display -; it as NETWORK, because styleTitle contains StringCase=UPPER. - -[meterIPLabel] -Meter=STRING -MeterStyle=styleLeftText -X=10 -Y=40 -W=190 -H=14 -Text="IP Address" - -[meterIPValue] -Meter=STRING -MeterStyle=styleRightText -MeasureName=measureIP -X=200 -Y=0r -; r stands for relative. In this case, the Y postition of meterValueCPU is 0 pixels -; below the Y value of the previous meter (i.e it's the same as in meterLabelCPU). -W=190 -H=14 -Text="%1" -; %1 stands for the value of MeasureName (measureIP in this case). - -[meterSeperator] -Meter=IMAGE -MeterStyle=styleSeperator -X=10 -Y=52 -W=190 -H=1 - -[meterUploadLabel] -Meter=STRING -MeterStyle=styleLeftText -X=10 -Y=60 -W=190 -H=14 -Text="Upload" - -[meterUploadValue] -Meter=STRING -MeterStyle=styleRightText -MeasureName=measureNetOut -X=200 -Y=0r -W=190 -H=14 -Text="%1B/s" -NumOfDecimals=1 -AutoScale=1 -; Because measureIP returns the current upload speed in bytes, we must use AutoScale=1 to -; automatically scale the value into a more readable figure. - -[meterUploadBar] -Meter=BAR -MeterStyle=styleBar -MeasureName=measureNetOut -X=10 -Y=72 -W=190 -H=1 - -[meterDownloadLabel] -Meter=STRING -MeterStyle=styleLeftText -X=10 -Y=80 -W=190 -H=14 -Text="Download" - -[meterDownloadValue] -Meter=STRING -MeterStyle=styleRightText -MeasureName=measureNetIn -X=200 -Y=0r -W=190 -H=14 -Text="%1B/s" -NumOfDecimals=1 -AutoScale=1 - -[meterDownloadBar] -Meter=BAR -MeterStyle=styleBar -MeasureName=measureNetIn -X=10 -Y=92 -W=190 +; Lines starting ; (semicolons) are commented out. +; That is, they do not affect the code and are here for demonstration purposes only. +; ---------------------------------- + +[Rainmeter] +; This section contains general settings that can be used to change how Rainmeter behaves. +Author=poiru +AppVersion=2003000 +Update=1000 +Background=#@#Background.png +; #@# is equal to Rainmeter\Skins\illustro\@Resources +BackgroundMode=3 +BackgroundMargins=0,34,0,14 + +[Metadata] +; Contains basic information of the skin. +Description=Shows your IP address and network activity. +License=Creative Commons BY-NC-SA 3.0 +Version=1.0.0 + +[Variables] +; Variables declared here can be used later on between two # characters (e.g. #MyVariable#). +fontName=Trebuchet MS +textSize=8 +colorBar=235,170,0,255 +colorText=255,255,255,205 +maxDownload=10485760 +MaxUpload=10485760 +; Set maxDownload and maxUpload to your maximum download and upload speed in bits. +; To convert kilobits, megabits, kilobytes, and megabytes into bits, go to www.google.com +; and search for something like "10 megabytes in bits". + +; ---------------------------------- +; MEASURES return some kind of value +; ---------------------------------- + +[measureIP] +; This measure returns your IP. WebParser measures are relatively complicated. If you're a beginner with +; Rainmeter, take a look at some of the other illustro skins before modifying this one. +Measure=Plugin +Plugin=WebParser.dll +Url=http://checkip.dyndns.org +UpdateRate=14400 +RegExp="(?siU)Address: (.*)" +StringIndex=1 +Substitute="":"N/A" +; Substitute works as follows: "A":"B" where A is a string to substitute and B is a string +; to substitute with. In this case, it substutes "" (i.e. empty) to N/A + +[measureNetIn] +Measure=NetIn +NetInSpeed=#maxDownload# +; NetInSpeed must be set so your maximun download speed for the download bar to scale correctly + +[measureNetOut] +Measure=NetOut +NetOutSpeed=#maxUpload# + +; ---------------------------------- +; STYLES are used to "centralize" options +; ---------------------------------- + +[styleTitle] +StringAlign=CENTER +StringCase=UPPER +StringStyle=BOLD +StringEffect=SHADOW +FontEffectColor=0,0,0,50 +FontColor=#colorText# +FontFace=#fontName# +FontSize=10 +AntiAlias=1 +ClipString=1 + +[styleLeftText] +StringAlign=LEFT +; Meters using styleLeftText will be left-aligned. +StringCase=NONE +StringStyle=BOLD +StringEffect=SHADOW +FontEffectColor=0,0,0,20 +FontColor=#colorText# +FontFace=#fontName# +FontSize=#textSize# +AntiAlias=1 +ClipString=1 + +[styleRightText] +StringAlign=RIGHT +StringCase=NONE +StringStyle=BOLD +StringEffect=SHADOW +FontEffectColor=0,0,0,20 +FontColor=#colorText# +FontFace=#fontName# +FontSize=#textSize# +AntiAlias=1 +ClipString=1 + +[styleBar] +BarColor=#colorBar# +BarOrientation=HORIZONTAL +SolidColor=255,255,255,15 + +[styleSeperator] +SolidColor=255,255,255,15 + +; ---------------------------------- +; METERS display images, text, bars, etc. +; ---------------------------------- + +[meterTitle] +Meter=STRING +MeterStyle=styleTitle +; Using MeterStyle=styleTitle will basically "copy" the +; contents of the [styleTitle] section here during runtime. +X=100 +Y=12 +W=190 +H=18 +Text="Network" +; Even though the text is set to Network, Rainmeter will display +; it as NETWORK, because styleTitle contains StringCase=UPPER. + +[meterIPLabel] +Meter=STRING +MeterStyle=styleLeftText +X=10 +Y=40 +W=190 +H=14 +Text="IP Address" + +[meterIPValue] +Meter=STRING +MeterStyle=styleRightText +MeasureName=measureIP +X=200 +Y=0r +; r stands for relative. In this case, the Y postition of meterValueCPU is 0 pixels +; below the Y value of the previous meter (i.e it's the same as in meterLabelCPU). +W=190 +H=14 +Text="%1" +; %1 stands for the value of MeasureName (measureIP in this case). + +[meterSeperator] +Meter=IMAGE +MeterStyle=styleSeperator +X=10 +Y=52 +W=190 +H=1 + +[meterUploadLabel] +Meter=STRING +MeterStyle=styleLeftText +X=10 +Y=60 +W=190 +H=14 +Text="Upload" + +[meterUploadValue] +Meter=STRING +MeterStyle=styleRightText +MeasureName=measureNetOut +X=200 +Y=0r +W=190 +H=14 +Text="%1B/s" +NumOfDecimals=1 +AutoScale=1 +; Because measureIP returns the current upload speed in bytes, we must use AutoScale=1 to +; automatically scale the value into a more readable figure. + +[meterUploadBar] +Meter=BAR +MeterStyle=styleBar +MeasureName=measureNetOut +X=10 +Y=72 +W=190 +H=1 + +[meterDownloadLabel] +Meter=STRING +MeterStyle=styleLeftText +X=10 +Y=80 +W=190 +H=14 +Text="Download" + +[meterDownloadValue] +Meter=STRING +MeterStyle=styleRightText +MeasureName=measureNetIn +X=200 +Y=0r +W=190 +H=14 +Text="%1B/s" +NumOfDecimals=1 +AutoScale=1 + +[meterDownloadBar] +Meter=BAR +MeterStyle=styleBar +MeasureName=measureNetIn +X=10 +Y=92 +W=190 H=1 \ No newline at end of file diff --git a/BuildTools/Skins/illustro/Recycle Bin/Recycle Bin.ini b/Build/Skins/illustro/Recycle Bin/Recycle Bin.ini similarity index 96% rename from BuildTools/Skins/illustro/Recycle Bin/Recycle Bin.ini rename to Build/Skins/illustro/Recycle Bin/Recycle Bin.ini index 9a1a7448..1ecbd933 100644 --- a/BuildTools/Skins/illustro/Recycle Bin/Recycle Bin.ini +++ b/Build/Skins/illustro/Recycle Bin/Recycle Bin.ini @@ -1,147 +1,147 @@ -; Lines starting ; (semicolons) are commented out. -; That is, they do not affect the code and are here for demonstration purposes only. -; ---------------------------------- - -[Rainmeter] -; This section contains general settings that can be used to change how Rainmeter behaves. -Author=poiru -AppVersion=2003000 -Update=1000 -Background=#@#Background.png -; #@# is equal to Rainmeter\Skins\illustro\@Resources -BackgroundMode=3 -BackgroundMargins=0,34,0,14 - -[Metadata] -; Contains basic information of the skin. -Description=Shows the state and size of your Recycle Bin. -License=Creative Commons BY-NC-SA 3.0 -Version=1.0.0 - -[Variables] -; Variables declared here can be used later on between two # characters (e.g. #MyVariable#). -fontName=Trebuchet MS -textSize=8 -colorBar=235,170,0,255 -colorText=255,255,255,205 - -; ---------------------------------- -; MEASURES return some kind of value -; ---------------------------------- - -[measureBinItems] -; This measure returns the amount of items in the Recycle Bin. -Measure=Plugin -Plugin=RecycleManager.dll -RecycleType=COUNT -UpdateDivider=3 -; UpdateDivider sets the rate at which the value of the measure is updated. It is -; calculated as follows: UpdateDivider x Update. In this case, Update is set to -; 1000 milliseconds (in the [Rainmeter] section). 1000 x 3 = 3000 ms or 3 seconds. - -[measureBinSize] -; Returns the total size of the Recycle Bin in bytes. -Measure=Plugin -Plugin=RecycleManager.dll -RecycleType=SIZE -UpdateDivider=3 - -; ---------------------------------- -; STYLES are used to "centralize" options -; ---------------------------------- - -[styleTitle] -StringAlign=CENTER -StringCase=UPPER -StringStyle=BOLD -StringEffect=SHADOW -FontEffectColor=0,0,0,50 -FontColor=#colorText# -FontFace=#fontName# -FontSize=10 -AntiAlias=1 -ClipString=1 - -[styleLeftText] -StringAlign=LEFT -; Meters using styleLeftText will be left-aligned. -StringCase=NONE -StringStyle=BOLD -StringEffect=SHADOW -FontEffectColor=0,0,0,20 -FontColor=#colorText# -FontFace=#fontName# -FontSize=#textSize# -AntiAlias=1 -ClipString=1 - -[styleRightText] -StringAlign=RIGHT -StringCase=NONE -StringStyle=BOLD -StringEffect=SHADOW -FontEffectColor=0,0,0,20 -FontColor=#colorText# -FontFace=#fontName# -FontSize=#textSize# -AntiAlias=1 -ClipString=1 - -[styleSeperator] -SolidColor=255,255,255,15 - -; ---------------------------------- -; METERS display images, text, bars, etc. -; ---------------------------------- - -[meterTitle] -Meter=STRING -MeterStyle=styleTitle -; Using MeterStyle=styleTitle will basically "copy" the -; contents of the [styleTitle] section here during runtime. -X=100 -Y=12 -W=190 -H=18 -Text="Recycle Bin" -; Even though the text is set to Recycle Bin, Rainmeter will display -; it as RECYCLE BIN, because styleTitle contains StringCase=UPPER. -LeftMouseUpAction=!Execute [!PluginBang "measureBinItems OpenBin"] -RightMouseUpAction=!Execute [!PluginBang "measureBinItems EmptyBin"] -ToolTipText="Left-click to open Recycle Bin#CRLF#Right-click to empty" -; Hovering over this meter will display a tooltip with the text above. -; The #CRLF# variable creates a new line. - -[meterBinItems] -Meter=STRING -MeterStyle=styleLeftText -MeasureName=measureBinItems -X=10 -Y=40 -W=190 -H=14 -Text="%1 items" -; %1 stands for the value of MeasureName (measureBinItems in this case). - -[meterBinSize] -Meter=STRING -MeterStyle=styleRightText -MeasureName=measureBinSize -X=200 -Y=0r -; r stands for relative. In this case, the Y postition of meterValueCPU is 0 pixels -; below the Y value of the previous meter (i.e it's the same as in meterLabelCPU). -W=190 -H=14 -Text="%1B" -AutoScale=1 -; Because measureBinSize returns the size in bytes, we must use AutoScale=1 to -; automatically scale the value into a more readable figure. - -[meterSeperator] -Meter=IMAGE -MeterStyle=styleSeperator -X=10 -Y=52 -W=190 +; Lines starting ; (semicolons) are commented out. +; That is, they do not affect the code and are here for demonstration purposes only. +; ---------------------------------- + +[Rainmeter] +; This section contains general settings that can be used to change how Rainmeter behaves. +Author=poiru +AppVersion=2003000 +Update=1000 +Background=#@#Background.png +; #@# is equal to Rainmeter\Skins\illustro\@Resources +BackgroundMode=3 +BackgroundMargins=0,34,0,14 + +[Metadata] +; Contains basic information of the skin. +Description=Shows the state and size of your Recycle Bin. +License=Creative Commons BY-NC-SA 3.0 +Version=1.0.0 + +[Variables] +; Variables declared here can be used later on between two # characters (e.g. #MyVariable#). +fontName=Trebuchet MS +textSize=8 +colorBar=235,170,0,255 +colorText=255,255,255,205 + +; ---------------------------------- +; MEASURES return some kind of value +; ---------------------------------- + +[measureBinItems] +; This measure returns the amount of items in the Recycle Bin. +Measure=Plugin +Plugin=RecycleManager.dll +RecycleType=COUNT +UpdateDivider=3 +; UpdateDivider sets the rate at which the value of the measure is updated. It is +; calculated as follows: UpdateDivider x Update. In this case, Update is set to +; 1000 milliseconds (in the [Rainmeter] section). 1000 x 3 = 3000 ms or 3 seconds. + +[measureBinSize] +; Returns the total size of the Recycle Bin in bytes. +Measure=Plugin +Plugin=RecycleManager.dll +RecycleType=SIZE +UpdateDivider=3 + +; ---------------------------------- +; STYLES are used to "centralize" options +; ---------------------------------- + +[styleTitle] +StringAlign=CENTER +StringCase=UPPER +StringStyle=BOLD +StringEffect=SHADOW +FontEffectColor=0,0,0,50 +FontColor=#colorText# +FontFace=#fontName# +FontSize=10 +AntiAlias=1 +ClipString=1 + +[styleLeftText] +StringAlign=LEFT +; Meters using styleLeftText will be left-aligned. +StringCase=NONE +StringStyle=BOLD +StringEffect=SHADOW +FontEffectColor=0,0,0,20 +FontColor=#colorText# +FontFace=#fontName# +FontSize=#textSize# +AntiAlias=1 +ClipString=1 + +[styleRightText] +StringAlign=RIGHT +StringCase=NONE +StringStyle=BOLD +StringEffect=SHADOW +FontEffectColor=0,0,0,20 +FontColor=#colorText# +FontFace=#fontName# +FontSize=#textSize# +AntiAlias=1 +ClipString=1 + +[styleSeperator] +SolidColor=255,255,255,15 + +; ---------------------------------- +; METERS display images, text, bars, etc. +; ---------------------------------- + +[meterTitle] +Meter=STRING +MeterStyle=styleTitle +; Using MeterStyle=styleTitle will basically "copy" the +; contents of the [styleTitle] section here during runtime. +X=100 +Y=12 +W=190 +H=18 +Text="Recycle Bin" +; Even though the text is set to Recycle Bin, Rainmeter will display +; it as RECYCLE BIN, because styleTitle contains StringCase=UPPER. +LeftMouseUpAction=!Execute [!PluginBang "measureBinItems OpenBin"] +RightMouseUpAction=!Execute [!PluginBang "measureBinItems EmptyBin"] +ToolTipText="Left-click to open Recycle Bin#CRLF#Right-click to empty" +; Hovering over this meter will display a tooltip with the text above. +; The #CRLF# variable creates a new line. + +[meterBinItems] +Meter=STRING +MeterStyle=styleLeftText +MeasureName=measureBinItems +X=10 +Y=40 +W=190 +H=14 +Text="%1 items" +; %1 stands for the value of MeasureName (measureBinItems in this case). + +[meterBinSize] +Meter=STRING +MeterStyle=styleRightText +MeasureName=measureBinSize +X=200 +Y=0r +; r stands for relative. In this case, the Y postition of meterValueCPU is 0 pixels +; below the Y value of the previous meter (i.e it's the same as in meterLabelCPU). +W=190 +H=14 +Text="%1B" +AutoScale=1 +; Because measureBinSize returns the size in bytes, we must use AutoScale=1 to +; automatically scale the value into a more readable figure. + +[meterSeperator] +Meter=IMAGE +MeterStyle=styleSeperator +X=10 +Y=52 +W=190 H=1 \ No newline at end of file diff --git a/BuildTools/Skins/illustro/System/System.ini b/Build/Skins/illustro/System/System.ini similarity index 95% rename from BuildTools/Skins/illustro/System/System.ini rename to Build/Skins/illustro/System/System.ini index c7a89ffa..5b92a963 100644 --- a/BuildTools/Skins/illustro/System/System.ini +++ b/Build/Skins/illustro/System/System.ini @@ -1,206 +1,206 @@ -; Lines starting ; (semicolons) are commented out. -; That is, they do not affect the code and are here for demonstration purposes only. -; ---------------------------------- - -[Rainmeter] -; This section contains general settings that can be used to change how Rainmeter behaves. -Author=poiru -AppVersion=2003000 -Update=1000 -Background=#@#Background.png -; #@# is equal to Rainmeter\Skins\illustro\@Resources -BackgroundMode=3 -BackgroundMargins=0,34,0,14 - -[Metadata] -; Contains basic information of the skin. -Description=Displays basic system stats. -License=Creative Commons BY-NC-SA 3.0 -Version=1.0.0 - -[Variables] -; Variables declared here can be used later on between two # characters (e.g. #MyVariable#). -fontName=Trebuchet MS -textSize=8 -colorBar=235,170,0,255 -colorText=255,255,255,205 - -; ---------------------------------- -; MEASURES return some kind of value -; ---------------------------------- - -[measureCPU] -; This measure returns the average CPU load between all cores. -Measure=CPU -Processor=0 - -[measureRAM] -; Returns the amount of RAM used in bytes. -Measure=PhysicalMemory -UpdateDivider=20 -; UpdateDivider sets the rate at which the value of the measure is updated. It is -; calculated as follows: UpdateDivider x Update. In this case, Update is set to -; 1000 milliseconds (in the [Rainmeter] section). 1000 x 20 = 20000 ms or 20 seconds. - -[measureSWAP] -; Returns the amount of SWAP (pagefile) used in bytes. -Measure=SWAPMemory -UpdateDivider=20 - -; ---------------------------------- -; STYLES are used to "centralize" options -; ---------------------------------- - -[styleTitle] -StringAlign=CENTER -StringCase=UPPER -StringStyle=BOLD -StringEffect=SHADOW -FontEffectColor=0,0,0,50 -FontColor=#colorText# -FontFace=#fontName# -FontSize=10 -AntiAlias=1 -ClipString=1 - -[styleLeftText] -StringAlign=LEFT -; Meters using styleLeftText will be left-aligned. -StringCase=NONE -StringStyle=BOLD -StringEffect=SHADOW -FontEffectColor=0,0,0,20 -FontColor=#colorText# -FontFace=#fontName# -FontSize=#textSize# -AntiAlias=1 -ClipString=1 - -[styleRightText] -StringAlign=RIGHT -StringCase=NONE -StringStyle=BOLD -StringEffect=SHADOW -FontEffectColor=0,0,0,20 -FontColor=#colorText# -FontFace=#fontName# -FontSize=#textSize# -AntiAlias=1 -ClipString=1 - -[styleBar] -BarColor=#colorBar# -BarOrientation=HORIZONTAL -SolidColor=255,255,255,15 - -; ---------------------------------- -; METERS display images, text, bars, etc. -; ---------------------------------- - -[meterTitle] -Meter=STRING -MeterStyle=styleTitle -; Using MeterStyle=styleTitle will basically "copy" the -; contents of the [styleTitle] section here during runtime. -X=100 -Y=12 -W=190 -H=18 -Text="System" -; Even though the text is set to System, Rainmeter will display -; it as SYSTEM, because styleTitle contains StringCase=UPPER. -LeftMouseUpAction=!Execute ["taskmgr.exe"] -; Left-clicking this meter will launch taskmgr.exe (the Task Manager). -ToolTipText="Open Task Manager" -; Hovering over this meter will display a tooltip with the text above. - -[meterLabelCPU] -Meter=STRING -MeterStyle=styleLeftText -X=10 -Y=40 -W=190 -H=14 -Text="CPU Usage" - -[meterValueCPU] -Meter=STRING -MeterStyle=styleRightText -MeasureName=measureCPU -X=200 -Y=0r -; r stands for relative. In this case, the Y postition of meterValueCPU is 0 pixels -; below the Y value of the previous meter (i.e it's the same as in meterLabelCPU). -W=190 -H=14 -Text="%1%" -; %1 stands for the value of MeasureName (measureCPU in this case). - -[meterBarCPU] -Meter=BAR -MeterStyle=styleBar -MeasureName=measureCPU -X=10 -Y=52 -W=190 -H=1 - -[meterLabelRAM] -Meter=STRING -MeterStyle=styleLeftText -X=10 -Y=60 -W=190 -H=14 -Text="RAM Usage" - -[meterValueRAM] -Meter=STRING -MeterStyle=styleRightText -MeasureName=measureRAM -X=200 -Y=0r -W=190 -H=14 -Text="%1%" -Percentual=1 -; Percentual=1 needs to be added her because measureRAM returns the amount -; of RAM used in bytes. Using Percentual=1 will convert that into a percentual value. - -[meterBarRAM] -Meter=BAR -MeterStyle=styleBar -MeasureName=measureRAM -X=10 -Y=72 -W=190 -H=1 - -[meterLabelSWAP] -Meter=STRING -MeterStyle=styleLeftText -X=10 -Y=80 -W=190 -H=14 -Text="SWAP Usage" - -[meterValueSWAP] -Meter=STRING -MeterStyle=styleRightText -MeasureName=measureSWAP -X=200 -Y=0r -W=190 -H=14 -Text="%1%" -Percentual=1 - -[meterBarSWAP] -Meter=BAR -MeterStyle=styleBar -MeasureName=measureSWAP -X=10 -Y=92 -W=190 +; Lines starting ; (semicolons) are commented out. +; That is, they do not affect the code and are here for demonstration purposes only. +; ---------------------------------- + +[Rainmeter] +; This section contains general settings that can be used to change how Rainmeter behaves. +Author=poiru +AppVersion=2003000 +Update=1000 +Background=#@#Background.png +; #@# is equal to Rainmeter\Skins\illustro\@Resources +BackgroundMode=3 +BackgroundMargins=0,34,0,14 + +[Metadata] +; Contains basic information of the skin. +Description=Displays basic system stats. +License=Creative Commons BY-NC-SA 3.0 +Version=1.0.0 + +[Variables] +; Variables declared here can be used later on between two # characters (e.g. #MyVariable#). +fontName=Trebuchet MS +textSize=8 +colorBar=235,170,0,255 +colorText=255,255,255,205 + +; ---------------------------------- +; MEASURES return some kind of value +; ---------------------------------- + +[measureCPU] +; This measure returns the average CPU load between all cores. +Measure=CPU +Processor=0 + +[measureRAM] +; Returns the amount of RAM used in bytes. +Measure=PhysicalMemory +UpdateDivider=20 +; UpdateDivider sets the rate at which the value of the measure is updated. It is +; calculated as follows: UpdateDivider x Update. In this case, Update is set to +; 1000 milliseconds (in the [Rainmeter] section). 1000 x 20 = 20000 ms or 20 seconds. + +[measureSWAP] +; Returns the amount of SWAP (pagefile) used in bytes. +Measure=SWAPMemory +UpdateDivider=20 + +; ---------------------------------- +; STYLES are used to "centralize" options +; ---------------------------------- + +[styleTitle] +StringAlign=CENTER +StringCase=UPPER +StringStyle=BOLD +StringEffect=SHADOW +FontEffectColor=0,0,0,50 +FontColor=#colorText# +FontFace=#fontName# +FontSize=10 +AntiAlias=1 +ClipString=1 + +[styleLeftText] +StringAlign=LEFT +; Meters using styleLeftText will be left-aligned. +StringCase=NONE +StringStyle=BOLD +StringEffect=SHADOW +FontEffectColor=0,0,0,20 +FontColor=#colorText# +FontFace=#fontName# +FontSize=#textSize# +AntiAlias=1 +ClipString=1 + +[styleRightText] +StringAlign=RIGHT +StringCase=NONE +StringStyle=BOLD +StringEffect=SHADOW +FontEffectColor=0,0,0,20 +FontColor=#colorText# +FontFace=#fontName# +FontSize=#textSize# +AntiAlias=1 +ClipString=1 + +[styleBar] +BarColor=#colorBar# +BarOrientation=HORIZONTAL +SolidColor=255,255,255,15 + +; ---------------------------------- +; METERS display images, text, bars, etc. +; ---------------------------------- + +[meterTitle] +Meter=STRING +MeterStyle=styleTitle +; Using MeterStyle=styleTitle will basically "copy" the +; contents of the [styleTitle] section here during runtime. +X=100 +Y=12 +W=190 +H=18 +Text="System" +; Even though the text is set to System, Rainmeter will display +; it as SYSTEM, because styleTitle contains StringCase=UPPER. +LeftMouseUpAction=!Execute ["taskmgr.exe"] +; Left-clicking this meter will launch taskmgr.exe (the Task Manager). +ToolTipText="Open Task Manager" +; Hovering over this meter will display a tooltip with the text above. + +[meterLabelCPU] +Meter=STRING +MeterStyle=styleLeftText +X=10 +Y=40 +W=190 +H=14 +Text="CPU Usage" + +[meterValueCPU] +Meter=STRING +MeterStyle=styleRightText +MeasureName=measureCPU +X=200 +Y=0r +; r stands for relative. In this case, the Y postition of meterValueCPU is 0 pixels +; below the Y value of the previous meter (i.e it's the same as in meterLabelCPU). +W=190 +H=14 +Text="%1%" +; %1 stands for the value of MeasureName (measureCPU in this case). + +[meterBarCPU] +Meter=BAR +MeterStyle=styleBar +MeasureName=measureCPU +X=10 +Y=52 +W=190 +H=1 + +[meterLabelRAM] +Meter=STRING +MeterStyle=styleLeftText +X=10 +Y=60 +W=190 +H=14 +Text="RAM Usage" + +[meterValueRAM] +Meter=STRING +MeterStyle=styleRightText +MeasureName=measureRAM +X=200 +Y=0r +W=190 +H=14 +Text="%1%" +Percentual=1 +; Percentual=1 needs to be added her because measureRAM returns the amount +; of RAM used in bytes. Using Percentual=1 will convert that into a percentual value. + +[meterBarRAM] +Meter=BAR +MeterStyle=styleBar +MeasureName=measureRAM +X=10 +Y=72 +W=190 +H=1 + +[meterLabelSWAP] +Meter=STRING +MeterStyle=styleLeftText +X=10 +Y=80 +W=190 +H=14 +Text="SWAP Usage" + +[meterValueSWAP] +Meter=STRING +MeterStyle=styleRightText +MeasureName=measureSWAP +X=200 +Y=0r +W=190 +H=14 +Text="%1%" +Percentual=1 + +[meterBarSWAP] +Meter=BAR +MeterStyle=styleBar +MeasureName=measureSWAP +X=10 +Y=92 +W=190 H=1 \ No newline at end of file diff --git a/BuildTools/Skins/illustro/Welcome/Background.png b/Build/Skins/illustro/Welcome/Background.png similarity index 100% rename from BuildTools/Skins/illustro/Welcome/Background.png rename to Build/Skins/illustro/Welcome/Background.png diff --git a/BuildTools/Skins/illustro/Welcome/Welcome.ini b/Build/Skins/illustro/Welcome/Welcome.ini similarity index 95% rename from BuildTools/Skins/illustro/Welcome/Welcome.ini rename to Build/Skins/illustro/Welcome/Welcome.ini index a16764aa..f0597fca 100644 --- a/BuildTools/Skins/illustro/Welcome/Welcome.ini +++ b/Build/Skins/illustro/Welcome/Welcome.ini @@ -1,173 +1,173 @@ -; Lines starting ; (semicolons) are commented out. -; That is, they do not affect the code and are here for demonstration purposes only. -; ---------------------------------- - -[Rainmeter] -; This section contains general settings that can be used to change how Rainmeter behaves. -Author=poiru -AppVersion=2003000 -Update=1000 - -[Metadata] -; Contains basic information of the skin. -Description=The welcome skin for illustro. -License=Creative Commons BY-NC-SA 3.0 -Version=1.0.0 - -[Variables] -; Variables declared here can be used later on between two # characters (e.g. #MyVariable#). -fontName=Trebuchet MS -textSize=9 -colorBar=235,170,0,255 -colorText=255,255,255,205 - -; ---------------------------------- -; STYLES are used to "centralize" options -; ---------------------------------- - -[styleTitle] -StringAlign=LEFT -StringCase=UPPER -StringStyle=BOLD -StringEffect=SHADOW -FontEffectColor=0,0,0,50 -FontColor=#colorText# -FontFace=#fontName# -FontSize=10 -AntiAlias=1 -ClipString=1 - -[styleLeftText] -StringAlign=LEFT -; Meters using styleLeftText will be left-aligned. -StringCase=NONE -StringStyle=BOLD -StringEffect=SHADOW -FontEffectColor=0,0,0,20 -FontColor=#colorText# -FontFace=#fontName# -FontSize=#textSize# -AntiAlias=1 -ClipString=1 - -[styleSeperator] -SolidColor=255,255,255,15 - -; ---------------------------------- -; METERS display images, text, bars, etc. -; ---------------------------------- - -[meterBackground] -Meter=IMAGE -ImageName=Background.png -X=0 -Y=0 - -[meterMidLine] -Meter=IMAGE -SolidColor=255,255,255,80 -W=1 -H=200 -X=245 -Y=60 - -[meterTitle] -Meter=STRING -MeterStyle=styleTitle -; Using MeterStyle=styleTitle will basically "copy" the -; contents of the [styleTitle] section here during runtime. -X=20 -Y=18 -W=400 -H=18 -FontSize=11 -Text="Welcome to Rainmeter!" - -[meterIllustroTitle] -Meter=STRING -MeterStyle=styleLeftText -X=20 -Y=55 -W=240 -H=30 -FontColor=255,217,120,255 -FontSize=10 -Text="illustro: Getting started with Rainmeter skinning" - -[meterIllustroLine] -Meter=STRING -MeterStyle=styleLeftText -X=20 -Y=95 -W=225 -H=175 -FontColor=#colorText# -FontSize=9 -Text="illustro is a simple set of skins designed to show some of the capabilities of Rainmeter. It offers a good place to start learning how to edit Rainmeter to make it your own. Use the "Rainmeter 101" link on the right to learn the basics.#CRLF##CRLF#To explore installed skins and change Rainmeter settings, simply click on the Rainmeter tray icon." -; #CRLF# is a pre-defined varaible for newline. - -[meterLinksTitle] -Meter=STRING -MeterStyle=styleLeftText -X=260 -Y=55 -W=235 -H=30 -FontColor=255,217,120,255 -FontSize=10 -Text=Recommended skin suites: Start using Rainmeter now! - -[meterLinksLine] -Meter=STRING -MeterStyle=styleLeftText -X=260 -Y=95 -W=225 -H=80 -FontColor=#colorText# -FontSize=9 -Text=There are literally thousands of skins available for Rainmeter. We have a few popular ones we recommend, which you can install with just a few clicks. - -[meterLink1] -Meter=STRING -MeterStyle=styleLeftText -X=260 -Y=175 -W=225 -H=14 -FontColor=255,217,120,255 -Text="» Recommended Skin Suites" -LeftMouseUpAction=!Execute ["http://rainmeter.net/cms/Discover"] - -[meterLink2] -Meter=STRING -MeterStyle=styleLeftText -X=260 -Y=195 -W=225 -H=14 -FontColor=255,174,69,255 -Text="» Rainmeter 101" -LeftMouseUpAction=!Execute ["http://rainmeter.net/cms/Rainmeter101"] - -[meterLink3] -Meter=STRING -MeterStyle=styleLeftText -X=260 -Y=215 -W=225 -H=14 -FontColor=255,174,69,255 -Text="» Rainmeter Manual" -LeftMouseUpAction=!Execute ["http://rainmeter.net/cms/Support"] - -[meterLink4] -Meter=STRING -MeterStyle=styleLeftText -X=260 -Y=235 -W=225 -H=14 -FontColor=255,174,69,255 -Text="» Rainmeter Forums" +; Lines starting ; (semicolons) are commented out. +; That is, they do not affect the code and are here for demonstration purposes only. +; ---------------------------------- + +[Rainmeter] +; This section contains general settings that can be used to change how Rainmeter behaves. +Author=poiru +AppVersion=2003000 +Update=1000 + +[Metadata] +; Contains basic information of the skin. +Description=The welcome skin for illustro. +License=Creative Commons BY-NC-SA 3.0 +Version=1.0.0 + +[Variables] +; Variables declared here can be used later on between two # characters (e.g. #MyVariable#). +fontName=Trebuchet MS +textSize=9 +colorBar=235,170,0,255 +colorText=255,255,255,205 + +; ---------------------------------- +; STYLES are used to "centralize" options +; ---------------------------------- + +[styleTitle] +StringAlign=LEFT +StringCase=UPPER +StringStyle=BOLD +StringEffect=SHADOW +FontEffectColor=0,0,0,50 +FontColor=#colorText# +FontFace=#fontName# +FontSize=10 +AntiAlias=1 +ClipString=1 + +[styleLeftText] +StringAlign=LEFT +; Meters using styleLeftText will be left-aligned. +StringCase=NONE +StringStyle=BOLD +StringEffect=SHADOW +FontEffectColor=0,0,0,20 +FontColor=#colorText# +FontFace=#fontName# +FontSize=#textSize# +AntiAlias=1 +ClipString=1 + +[styleSeperator] +SolidColor=255,255,255,15 + +; ---------------------------------- +; METERS display images, text, bars, etc. +; ---------------------------------- + +[meterBackground] +Meter=IMAGE +ImageName=Background.png +X=0 +Y=0 + +[meterMidLine] +Meter=IMAGE +SolidColor=255,255,255,80 +W=1 +H=200 +X=245 +Y=60 + +[meterTitle] +Meter=STRING +MeterStyle=styleTitle +; Using MeterStyle=styleTitle will basically "copy" the +; contents of the [styleTitle] section here during runtime. +X=20 +Y=18 +W=400 +H=18 +FontSize=11 +Text="Welcome to Rainmeter!" + +[meterIllustroTitle] +Meter=STRING +MeterStyle=styleLeftText +X=20 +Y=55 +W=240 +H=30 +FontColor=255,217,120,255 +FontSize=10 +Text="illustro: Getting started with Rainmeter skinning" + +[meterIllustroLine] +Meter=STRING +MeterStyle=styleLeftText +X=20 +Y=95 +W=225 +H=175 +FontColor=#colorText# +FontSize=9 +Text="illustro is a simple set of skins designed to show some of the capabilities of Rainmeter. It offers a good place to start learning how to edit Rainmeter to make it your own. Use the "Rainmeter 101" link on the right to learn the basics.#CRLF##CRLF#To explore installed skins and change Rainmeter settings, simply click on the Rainmeter tray icon." +; #CRLF# is a pre-defined varaible for newline. + +[meterLinksTitle] +Meter=STRING +MeterStyle=styleLeftText +X=260 +Y=55 +W=235 +H=30 +FontColor=255,217,120,255 +FontSize=10 +Text=Recommended skin suites: Start using Rainmeter now! + +[meterLinksLine] +Meter=STRING +MeterStyle=styleLeftText +X=260 +Y=95 +W=225 +H=80 +FontColor=#colorText# +FontSize=9 +Text=There are literally thousands of skins available for Rainmeter. We have a few popular ones we recommend, which you can install with just a few clicks. + +[meterLink1] +Meter=STRING +MeterStyle=styleLeftText +X=260 +Y=175 +W=225 +H=14 +FontColor=255,217,120,255 +Text="» Recommended Skin Suites" +LeftMouseUpAction=!Execute ["http://rainmeter.net/cms/Discover"] + +[meterLink2] +Meter=STRING +MeterStyle=styleLeftText +X=260 +Y=195 +W=225 +H=14 +FontColor=255,174,69,255 +Text="» Rainmeter 101" +LeftMouseUpAction=!Execute ["http://rainmeter.net/cms/Rainmeter101"] + +[meterLink3] +Meter=STRING +MeterStyle=styleLeftText +X=260 +Y=215 +W=225 +H=14 +FontColor=255,174,69,255 +Text="» Rainmeter Manual" +LeftMouseUpAction=!Execute ["http://rainmeter.net/cms/Support"] + +[meterLink4] +Meter=STRING +MeterStyle=styleLeftText +X=260 +Y=235 +W=225 +H=14 +FontColor=255,174,69,255 +Text="» Rainmeter Forums" LeftMouseUpAction=!Execute ["http://rainmeter.net/forums"] \ No newline at end of file diff --git a/BuildTools/VS/Rainmeter.Cpp.Default.props b/Build/VS/Rainmeter.Cpp.Default.props similarity index 97% rename from BuildTools/VS/Rainmeter.Cpp.Default.props rename to Build/VS/Rainmeter.Cpp.Default.props index 7545c67a..acfa2e60 100644 --- a/BuildTools/VS/Rainmeter.Cpp.Default.props +++ b/Build/VS/Rainmeter.Cpp.Default.props @@ -1,31 +1,31 @@ - - - - - $(SolutionDir)..\WinDDK\7600.16385.1\ - - - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - - - - Unicode - v120_xp - + + + + + $(SolutionDir)..\WinDDK\7600.16385.1\ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + + Unicode + v120_xp + \ No newline at end of file diff --git a/BuildTools/VS/Rainmeter.Cpp.props b/Build/VS/Rainmeter.Cpp.props similarity index 97% rename from BuildTools/VS/Rainmeter.Cpp.props rename to Build/VS/Rainmeter.Cpp.props index d4b94401..8a5fc870 100644 --- a/BuildTools/VS/Rainmeter.Cpp.props +++ b/Build/VS/Rainmeter.Cpp.props @@ -1,129 +1,129 @@ - - - - - - $(VCInstallDir)include;$(VCInstallDir)atlmfc\include;$(WindowsSDK_IncludePath); - - - - true - true - - - - true - - - - - $(SolutionDir)x32-$(Configuration)\ - $(SolutionDir)x64-$(Configuration)\ - - $(RmOutDirRoot) - $(OutDir)\Obj\$(ProjectName)\ - - - - - $(IntDir) - - - - - - false - - - Microsoft.VisualStudio.TestTools.CppUnitTestFramework.dll - Microsoft.VisualStudio.TestTools.CppUnitTestFramework.x64.dll - - - - - - - $(VCInstallDir)UnitTest\include;%(AdditionalIncludeDirectories) - - - $(VCInstallDir)UnitTest\lib;%(AdditionalLibraryDirectories) - - - - - - - 4351;%(DisableSpecificWarnings) - - false - - - - WIN32;_WINDOWS;WINVER=0x0601;_WIN32_WINNT=0x0601;_WIN32_IE=0x0601;PSAPI_VERSION=1;_CRT_SECURE_NO_WARNINGS;WIN32_LEAN_AND_MEAN;_HAS_EXCEPTIONS=0;%(PreprocessorDefinitions) - Level3 - - - Windows - $(IntDir)$(TargetName).lib - $(IntDir)$(TargetName).pdb - false - - - 0x0409 - - - - - - Disabled - _DEBUG;%(PreprocessorDefinitions) - EnableFastChecks - - - true - - - _DEBUG;%(PreprocessorDefinitions) - - - - - - true - MaxSpeed - NDEBUG;%(PreprocessorDefinitions) - true - true - /Gw %(AdditionalOptions) - - - false - UseLinkTimeCodeGeneration - .rdata=.text - true - true - - - NDEBUG;%(PreprocessorDefinitions) - - - - - - StreamingSIMDExtensions - - - MachineX86 - - - - - - _WIN64;%(PreprocessorDefinitions) - - - MachineX64 - - + + + + + + $(VCInstallDir)include;$(VCInstallDir)atlmfc\include;$(WindowsSDK_IncludePath); + + + + true + true + + + + true + + + + + $(SolutionDir)x32-$(Configuration)\ + $(SolutionDir)x64-$(Configuration)\ + + $(RmOutDirRoot) + $(OutDir)\Obj\$(ProjectName)\ + + + + + $(IntDir) + + + + + + false + + + Microsoft.VisualStudio.TestTools.CppUnitTestFramework.dll + Microsoft.VisualStudio.TestTools.CppUnitTestFramework.x64.dll + + + + + + + $(VCInstallDir)UnitTest\include;%(AdditionalIncludeDirectories) + + + $(VCInstallDir)UnitTest\lib;%(AdditionalLibraryDirectories) + + + + + + + 4351;%(DisableSpecificWarnings) + + false + + + + WIN32;_WINDOWS;WINVER=0x0601;_WIN32_WINNT=0x0601;_WIN32_IE=0x0601;PSAPI_VERSION=1;_CRT_SECURE_NO_WARNINGS;WIN32_LEAN_AND_MEAN;_HAS_EXCEPTIONS=0;%(PreprocessorDefinitions) + Level3 + + + Windows + $(IntDir)$(TargetName).lib + $(IntDir)$(TargetName).pdb + false + + + 0x0409 + + + + + + Disabled + _DEBUG;%(PreprocessorDefinitions) + EnableFastChecks + + + true + + + _DEBUG;%(PreprocessorDefinitions) + + + + + + true + MaxSpeed + NDEBUG;%(PreprocessorDefinitions) + true + true + /Gw %(AdditionalOptions) + + + false + UseLinkTimeCodeGeneration + .rdata=.text + true + true + + + NDEBUG;%(PreprocessorDefinitions) + + + + + + StreamingSIMDExtensions + + + MachineX86 + + + + + + _WIN64;%(PreprocessorDefinitions) + + + MachineX64 + + \ No newline at end of file diff --git a/BuildTools/VS/RainmeterPlugin.Cpp.props b/Build/VS/RainmeterPlugin.Cpp.props similarity index 97% rename from BuildTools/VS/RainmeterPlugin.Cpp.props rename to Build/VS/RainmeterPlugin.Cpp.props index 486163dc..7677773f 100644 --- a/BuildTools/VS/RainmeterPlugin.Cpp.props +++ b/Build/VS/RainmeterPlugin.Cpp.props @@ -1,18 +1,18 @@ - - - - false - $(OutDir)Plugins\ - - - - - $(SolutionDir)Plugins\API\x32\Rainmeter.lib;%(AdditionalDependencies) - - - - - $(SolutionDir)Plugins\API\x64\Rainmeter.lib;%(AdditionalDependencies) - - + + + + false + $(OutDir)Plugins\ + + + + + $(SolutionDir)Plugins\API\x32\Rainmeter.lib;%(AdditionalDependencies) + + + + + $(SolutionDir)Plugins\API\x64\Rainmeter.lib;%(AdditionalDependencies) + + \ No newline at end of file diff --git a/BuildTools/VS/RainmeterPlugin.Cs.props b/Build/VS/RainmeterPlugin.Cs.props similarity index 98% rename from BuildTools/VS/RainmeterPlugin.Cs.props rename to Build/VS/RainmeterPlugin.Cs.props index b79649ae..53b7ff31 100644 --- a/BuildTools/VS/RainmeterPlugin.Cs.props +++ b/Build/VS/RainmeterPlugin.Cs.props @@ -1,9 +1,9 @@ - - - - $(SolutionDir)x32-$(Configuration)\ - $(SolutionDir)x64-$(Configuration)\ - - $(RmOutDirRoot)Plugins\ - + + + + $(SolutionDir)x32-$(Configuration)\ + $(SolutionDir)x64-$(Configuration)\ + + $(RmOutDirRoot)Plugins\ + \ No newline at end of file diff --git a/RainmeterStudio.Tests/RainmeterStudio.Tests.csproj b/RainmeterStudio.Tests/RainmeterStudio.Tests.csproj index f235ff84..47efa5b9 100644 --- a/RainmeterStudio.Tests/RainmeterStudio.Tests.csproj +++ b/RainmeterStudio.Tests/RainmeterStudio.Tests.csproj @@ -1,96 +1,96 @@ - - - - Debug - AnyCPU - {845F4BD4-6822-4D92-9DDB-15FD18A47E5A} - Library - Properties - RainmeterStudio.Tests - RainmeterStudio.Tests - v4.0 - 512 - {3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} - 10.0 - $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion) - $(ProgramFiles)\Common Files\microsoft shared\VSTT\$(VisualStudioVersion)\UITestExtensionPackages - False - UnitTest - - - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - x86 - - - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - - - - - 3.5 - - - - - - - - - - - - - - - - - - - - - - - - {438d0136-4a27-4e4d-a617-fface4554236} - RainmeterStudio - - - - - - - False - - - False - - - False - - - False - - - - - - - + + + + Debug + AnyCPU + {845F4BD4-6822-4D92-9DDB-15FD18A47E5A} + Library + Properties + RainmeterStudio.Tests + RainmeterStudio.Tests + v4.0 + 512 + {3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + 10.0 + $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion) + $(ProgramFiles)\Common Files\microsoft shared\VSTT\$(VisualStudioVersion)\UITestExtensionPackages + False + UnitTest + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + x86 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + 3.5 + + + + + + + + + + + + + + + + + + + + + + + + {438d0136-4a27-4e4d-a617-fface4554236} + RainmeterStudio + + + + + + + False + + + False + + + False + + + False + + + + + + + \ No newline at end of file diff --git a/RainmeterStudio.Tests/Storage/ProjectStorageTest.cs b/RainmeterStudio.Tests/Storage/ProjectStorageTest.cs index adac4e10..fdd834b8 100644 --- a/RainmeterStudio.Tests/Storage/ProjectStorageTest.cs +++ b/RainmeterStudio.Tests/Storage/ProjectStorageTest.cs @@ -1,110 +1,110 @@ -using System; -using System.Text; -using System.Collections.Generic; -using System.Linq; -using Microsoft.VisualStudio.TestTools.UnitTesting; -using RainmeterEditor.Storage; -using RainmeterEditor.Model; -using System.IO; - -namespace RainmeterStudio.Tests.Storage -{ - /// - /// Tests the ProjectStorage class - /// - [TestClass] - public class ProjectStorageTest - { - private ProjectStorage ProjectStorage = new ProjectStorage(); - - public TestContext TestContext { get; set; } - - [TestInitialize] - public void Initialize() - { - Directory.SetCurrentDirectory(TestContext.DeploymentDirectory); - } - - [TestMethod] - public void ProjectStorageSmokeTest() - { - string filename = TestContext.TestName + ".rsproj"; - - // Create project - Project project = CreateProject(); - - // Save and load - ProjectStorage.Save(filename, project); - Project res = ProjectStorage.Load(filename); - - // Verify results - Assert.IsNotNull(res); - Assert.AreEqual(project, res); - Assert.AreEqual(project.GetHashCode(), res.GetHashCode()); - Assert.AreEqual(project.Author, res.Author); - Assert.AreEqual(project.AutoLoadFile, res.AutoLoadFile); - Assert.AreEqual(project.MinimumRainmeter, res.MinimumRainmeter); - Assert.AreEqual(project.MinimumWindows, res.MinimumWindows); - Assert.AreEqual(project.Name, res.Name); - Assert.AreEqual(project.Root, res.Root); - Assert.IsTrue(project.VariableFiles.SequenceEqual(res.VariableFiles)); - Assert.AreEqual(project.Version, res.Version); - } - - [TestMethod] - public void ProjectStorageEmptyProjectSmokeTest() - { - string filename = TestContext.TestName + ".rsproj"; - - // Create a project - Project project = new Project(); - - // Save and load project - ProjectStorage.Save(filename, project); - Project res = ProjectStorage.Load(filename); - - // Test results - Assert.IsNotNull(res); - Assert.AreEqual(project, res); - Assert.AreEqual(project.GetHashCode(), res.GetHashCode()); - Assert.AreEqual(project.Author, res.Author); - Assert.AreEqual(project.AutoLoadFile, res.AutoLoadFile); - Assert.AreEqual(project.MinimumRainmeter, res.MinimumRainmeter); - Assert.AreEqual(project.MinimumWindows, res.MinimumWindows); - Assert.AreEqual(project.Name, res.Name); - Assert.AreEqual(project.Root, res.Root); - Assert.IsTrue(project.VariableFiles.SequenceEqual(res.VariableFiles)); - Assert.AreEqual(project.Version, res.Version); - } - - private Project CreateProject() - { - // Create some file references - Reference folder1 = new Reference("folder1"); - Reference folder2 = new Reference("folder2"); - Reference file1 = new Reference("file1.txt"); - Reference file2 = new Reference("file2.ini"); - Reference file3 = new Reference("file3.bmp"); - - // Create a project - Project project = new Project(); - project.Author = "Tiberiu Chibici"; - project.MinimumRainmeter = new Version("3.1"); - project.MinimumWindows = new Version("5.1"); - project.Name = "My project"; - project.Version = new Version("1.0.1"); - - project.AutoLoadFile = file2; - project.VariableFiles.Add(file1); - - // Set project references - project.Root.Add(folder1); - project.Root.Add(folder2); - project.Root[0].Add(file1); - project.Root[1].Add(file2); - project.Root.Add(file3); - - return project; - } - } -} +using System; +using System.Text; +using System.Collections.Generic; +using System.Linq; +using Microsoft.VisualStudio.TestTools.UnitTesting; +using RainmeterStudio.Storage; +using RainmeterStudio.Model; +using System.IO; + +namespace RainmeterStudio.Tests.Storage +{ + /// + /// Tests the ProjectStorage class + /// + [TestClass] + public class ProjectStorageTest + { + private ProjectStorage ProjectStorage = new ProjectStorage(); + + public TestContext TestContext { get; set; } + + [TestInitialize] + public void Initialize() + { + Directory.SetCurrentDirectory(TestContext.DeploymentDirectory); + } + + [TestMethod] + public void ProjectStorageSmokeTest() + { + string filename = TestContext.TestName + ".rsproj"; + + // Create project + Project project = CreateProject(); + + // Save and load + ProjectStorage.Save(filename, project); + Project res = ProjectStorage.Load(filename); + + // Verify results + Assert.IsNotNull(res); + Assert.AreEqual(project, res); + Assert.AreEqual(project.GetHashCode(), res.GetHashCode()); + Assert.AreEqual(project.Author, res.Author); + Assert.AreEqual(project.AutoLoadFile, res.AutoLoadFile); + Assert.AreEqual(project.MinimumRainmeter, res.MinimumRainmeter); + Assert.AreEqual(project.MinimumWindows, res.MinimumWindows); + Assert.AreEqual(project.Name, res.Name); + Assert.AreEqual(project.Root, res.Root); + Assert.IsTrue(project.VariableFiles.SequenceEqual(res.VariableFiles)); + Assert.AreEqual(project.Version, res.Version); + } + + [TestMethod] + public void ProjectStorageEmptyProjectSmokeTest() + { + string filename = TestContext.TestName + ".rsproj"; + + // Create a project + Project project = new Project(); + + // Save and load project + ProjectStorage.Save(filename, project); + Project res = ProjectStorage.Load(filename); + + // Test results + Assert.IsNotNull(res); + Assert.AreEqual(project, res); + Assert.AreEqual(project.GetHashCode(), res.GetHashCode()); + Assert.AreEqual(project.Author, res.Author); + Assert.AreEqual(project.AutoLoadFile, res.AutoLoadFile); + Assert.AreEqual(project.MinimumRainmeter, res.MinimumRainmeter); + Assert.AreEqual(project.MinimumWindows, res.MinimumWindows); + Assert.AreEqual(project.Name, res.Name); + Assert.AreEqual(project.Root, res.Root); + Assert.IsTrue(project.VariableFiles.SequenceEqual(res.VariableFiles)); + Assert.AreEqual(project.Version, res.Version); + } + + private Project CreateProject() + { + // Create some file references + Reference folder1 = new Reference("folder1"); + Reference folder2 = new Reference("folder2"); + Reference file1 = new Reference("file1.txt"); + Reference file2 = new Reference("file2.ini"); + Reference file3 = new Reference("file3.bmp"); + + // Create a project + Project project = new Project(); + project.Author = "Tiberiu Chibici"; + project.MinimumRainmeter = new Version("3.1"); + project.MinimumWindows = new Version("5.1"); + project.Name = "My project"; + project.Version = new Version("1.0.1"); + + project.AutoLoadFile = file2; + project.VariableFiles.Add(file1); + + // Set project references + project.Root.Add(folder1); + project.Root.Add(folder2); + project.Root[0].Add(file1); + project.Root[1].Add(file2); + project.Root.Add(file3); + + return project; + } + } +} diff --git a/RainmeterEditor.exe.config b/RainmeterStudio.exe.config similarity index 98% rename from RainmeterEditor.exe.config rename to RainmeterStudio.exe.config index fcd0c937..57c0f2cb 100644 --- a/RainmeterEditor.exe.config +++ b/RainmeterStudio.exe.config @@ -1,3 +1,3 @@ - - - + + + diff --git a/RainmeterStudio.sln b/RainmeterStudio.sln index ffea0851..9566f702 100644 --- a/RainmeterStudio.sln +++ b/RainmeterStudio.sln @@ -1,535 +1,535 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 2013 -VisualStudioVersion = 12.0.30110.0 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Common", "Common\Common.vcxproj", "{19312085-AA51-4BD6-BE92-4B6098CCA539}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Installer", "Installer\Installer.vcxproj", "{2FCFBFD2-2720-4BDD-B620-4BDD3DBB8D3D}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Language", "Language\Language.vcxproj", "{6BE6F228-B741-4DA9-9FBC-E9F2A7BD483A}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Library", "Library\Library.vcxproj", "{BE9D2400-7F1C-49D6-8498-5CE495491AD6}" - ProjectSection(ProjectDependencies) = postProject - {6BE6F228-B741-4DA9-9FBC-E9F2A7BD483A} = {6BE6F228-B741-4DA9-9FBC-E9F2A7BD483A} - {19312085-AA51-4BD6-BE92-4B6098CCA539} = {19312085-AA51-4BD6-BE92-4B6098CCA539} - {BC25C5DC-AEFB-49F9-8188-3C1B8C8929E6} = {BC25C5DC-AEFB-49F9-8188-3C1B8C8929E6} - {6D61FBE9-6913-4885-A95D-1A8C0C223D82} = {6D61FBE9-6913-4885-A95D-1A8C0C223D82} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Library_Lua", "Library\Library_Lua.vcxproj", "{BC25C5DC-AEFB-49F9-8188-3C1B8C8929E6}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Library_PCRE", "Library\Library_PCRE.vcxproj", "{6D61FBE9-6913-4885-A95D-1A8C0C223D82}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SkinInstaller", "SkinInstaller\SkinInstaller.vcxproj", "{6F5D4C4A-C8C3-41DA-BF44-6D42B76464DA}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SkinInstallerLauncher", "SkinInstaller\SkinInstallerLauncher.vcxproj", "{2D8F1DDB-6470-45A1-B95A-3E2960641314}" - ProjectSection(ProjectDependencies) = postProject - {6F5D4C4A-C8C3-41DA-BF44-6D42B76464DA} = {6F5D4C4A-C8C3-41DA-BF44-6D42B76464DA} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PluginAdvancedCPU", "Plugins\PluginAdvancedCPU\PluginAdvancedCPU.vcxproj", "{EE8EC522-8430-4B46-86A3-D943D77F9E4B}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PluginCoreTemp", "Plugins\PluginCoreTemp\PluginCoreTemp.vcxproj", "{F32FA418-8DF4-4E94-B92B-EBD502F5DC07}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PluginFileView", "Plugins\PluginFileView\PluginFileView.vcxproj", "{64FDEE97-6B7E-40E5-A489-ECA322825BC8}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PluginFolderInfo", "Plugins\PluginFolderInfo\PluginFolderInfo.vcxproj", "{A221819D-4263-42AA-B22A-C022924842A7}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PluginInputText", "Plugins\PluginInputText\PluginInputText.csproj", "{2CFEC79A-E39E-4FFD-ABC2-C4A69DD1E44D}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PluginiTunes", "Plugins\PluginiTunes\PluginiTunes.vcxproj", "{A2DD3CBE-B140-4892-A875-24107FA52518}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PluginMediaKey", "Plugins\PluginMediaKey\PluginMediaKey.vcxproj", "{EB48A04A-657E-41B8-B2F5-D47F8C30B2B4}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PluginNowPlaying", "Plugins\PluginNowPlaying\PluginNowPlaying.vcxproj", "{C7FECFCD-E6C6-4F95-BB9A-E1762B043969}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PluginPerfMon", "Plugins\PluginPerfMon\PluginPerfMon.vcxproj", "{5344B52B-BAC3-479C-B41D-D465B8BDA1AD}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PluginPing", "Plugins\PluginPing\PluginPing.vcxproj", "{C862B662-5CC6-4E79-B1B3-905E0B98D627}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PluginPower", "Plugins\PluginPower\PluginPower.vcxproj", "{C30E7EB6-9655-4AF4-98AE-D6E6B14631AF}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PluginProcess", "Plugins\PluginProcess\PluginProcess.vcxproj", "{05203741-CD80-4060-8218-EC5D1120FE3E}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PluginQuote", "Plugins\PluginQuote\PluginQuote.vcxproj", "{C029E0CF-F203-41D0-9608-A3EA2CF0ED1F}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PluginRecycleManager", "Plugins\PluginRecycleManager\PluginRecycleManager.vcxproj", "{4F8C4C09-431C-45C4-830B-32006E783C3A}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PluginResMon", "Plugins\PluginResMon\PluginResMon.vcxproj", "{17D3BD92-6F5D-438C-A89B-88F4CE06DB94}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PluginSpeedFan", "Plugins\PluginSpeedFan\PluginSpeedFan.vcxproj", "{D10AB316-0F7A-4551-BE4F-385E04CCF1E8}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PluginSysInfo", "Plugins\PluginSysInfo\PluginSysInfo.vcxproj", "{6EBCA4DA-8CC7-42FE-8F45-878ABE165078}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PluginVirtualDesktops", "Plugins\PluginVirtualDesktops\PluginVirtualDesktops.vcxproj", "{4640AB3A-5A8B-2DA0-980C-A70BCAB3A7F1}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PluginWebParser", "Plugins\PluginWebParser\PluginWebParser.vcxproj", "{8B820B9F-C154-417C-A090-42198F2AF496}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PluginWifiStatus", "Plugins\PluginWifiStatus\PluginWifiStatus.vcxproj", "{45A34285-56DD-4521-912B-3F884D36FA35}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PluginWin7Audio", "Plugins\PluginWin7Audio\PluginWin7Audio.vcxproj", "{6D032D6B-7656-4743-B454-3388E2921EB0}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PluginWindowMessage", "Plugins\PluginWindowMessage\PluginWindowMessage.vcxproj", "{B9184DBA-C6B7-44FE-8BBD-0852DB22D2E4}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RainmeterStudio", "RainmeterEditor\RainmeterStudio.csproj", "{438D0136-4A27-4E4D-A617-FFACE4554236}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RainmeterStudio.Tests", "RainmeterStudio.Tests\RainmeterStudio.Tests.csproj", "{845F4BD4-6822-4D92-9DDB-15FD18A47E5A}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Debug|Mixed Platforms = Debug|Mixed Platforms - Debug|Win32 = Debug|Win32 - Debug|x64 = Debug|x64 - Release|Any CPU = Release|Any CPU - Release|Mixed Platforms = Release|Mixed Platforms - Release|Win32 = Release|Win32 - Release|x64 = Release|x64 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {19312085-AA51-4BD6-BE92-4B6098CCA539}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {19312085-AA51-4BD6-BE92-4B6098CCA539}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {19312085-AA51-4BD6-BE92-4B6098CCA539}.Debug|Mixed Platforms.Build.0 = Debug|Win32 - {19312085-AA51-4BD6-BE92-4B6098CCA539}.Debug|Win32.ActiveCfg = Debug|Win32 - {19312085-AA51-4BD6-BE92-4B6098CCA539}.Debug|Win32.Build.0 = Debug|Win32 - {19312085-AA51-4BD6-BE92-4B6098CCA539}.Debug|x64.ActiveCfg = Debug|x64 - {19312085-AA51-4BD6-BE92-4B6098CCA539}.Debug|x64.Build.0 = Debug|x64 - {19312085-AA51-4BD6-BE92-4B6098CCA539}.Release|Any CPU.ActiveCfg = Release|Win32 - {19312085-AA51-4BD6-BE92-4B6098CCA539}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {19312085-AA51-4BD6-BE92-4B6098CCA539}.Release|Mixed Platforms.Build.0 = Release|Win32 - {19312085-AA51-4BD6-BE92-4B6098CCA539}.Release|Win32.ActiveCfg = Release|Win32 - {19312085-AA51-4BD6-BE92-4B6098CCA539}.Release|Win32.Build.0 = Release|Win32 - {19312085-AA51-4BD6-BE92-4B6098CCA539}.Release|x64.ActiveCfg = Release|x64 - {19312085-AA51-4BD6-BE92-4B6098CCA539}.Release|x64.Build.0 = Release|x64 - {2FCFBFD2-2720-4BDD-B620-4BDD3DBB8D3D}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {2FCFBFD2-2720-4BDD-B620-4BDD3DBB8D3D}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {2FCFBFD2-2720-4BDD-B620-4BDD3DBB8D3D}.Debug|Mixed Platforms.Build.0 = Debug|Win32 - {2FCFBFD2-2720-4BDD-B620-4BDD3DBB8D3D}.Debug|Win32.ActiveCfg = Debug|Win32 - {2FCFBFD2-2720-4BDD-B620-4BDD3DBB8D3D}.Debug|x64.ActiveCfg = Debug|Win32 - {2FCFBFD2-2720-4BDD-B620-4BDD3DBB8D3D}.Release|Any CPU.ActiveCfg = Release|Win32 - {2FCFBFD2-2720-4BDD-B620-4BDD3DBB8D3D}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {2FCFBFD2-2720-4BDD-B620-4BDD3DBB8D3D}.Release|Mixed Platforms.Build.0 = Release|Win32 - {2FCFBFD2-2720-4BDD-B620-4BDD3DBB8D3D}.Release|Win32.ActiveCfg = Release|Win32 - {2FCFBFD2-2720-4BDD-B620-4BDD3DBB8D3D}.Release|x64.ActiveCfg = Release|Win32 - {6BE6F228-B741-4DA9-9FBC-E9F2A7BD483A}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {6BE6F228-B741-4DA9-9FBC-E9F2A7BD483A}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {6BE6F228-B741-4DA9-9FBC-E9F2A7BD483A}.Debug|Mixed Platforms.Build.0 = Debug|Win32 - {6BE6F228-B741-4DA9-9FBC-E9F2A7BD483A}.Debug|Win32.ActiveCfg = Debug|Win32 - {6BE6F228-B741-4DA9-9FBC-E9F2A7BD483A}.Debug|Win32.Build.0 = Debug|Win32 - {6BE6F228-B741-4DA9-9FBC-E9F2A7BD483A}.Debug|x64.ActiveCfg = Debug|x64 - {6BE6F228-B741-4DA9-9FBC-E9F2A7BD483A}.Debug|x64.Build.0 = Debug|x64 - {6BE6F228-B741-4DA9-9FBC-E9F2A7BD483A}.Release|Any CPU.ActiveCfg = Release|Win32 - {6BE6F228-B741-4DA9-9FBC-E9F2A7BD483A}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {6BE6F228-B741-4DA9-9FBC-E9F2A7BD483A}.Release|Mixed Platforms.Build.0 = Release|Win32 - {6BE6F228-B741-4DA9-9FBC-E9F2A7BD483A}.Release|Win32.ActiveCfg = Release|Win32 - {6BE6F228-B741-4DA9-9FBC-E9F2A7BD483A}.Release|Win32.Build.0 = Release|Win32 - {6BE6F228-B741-4DA9-9FBC-E9F2A7BD483A}.Release|x64.ActiveCfg = Release|x64 - {6BE6F228-B741-4DA9-9FBC-E9F2A7BD483A}.Release|x64.Build.0 = Release|x64 - {BE9D2400-7F1C-49D6-8498-5CE495491AD6}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {BE9D2400-7F1C-49D6-8498-5CE495491AD6}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {BE9D2400-7F1C-49D6-8498-5CE495491AD6}.Debug|Mixed Platforms.Build.0 = Debug|Win32 - {BE9D2400-7F1C-49D6-8498-5CE495491AD6}.Debug|Win32.ActiveCfg = Debug|Win32 - {BE9D2400-7F1C-49D6-8498-5CE495491AD6}.Debug|Win32.Build.0 = Debug|Win32 - {BE9D2400-7F1C-49D6-8498-5CE495491AD6}.Debug|x64.ActiveCfg = Debug|x64 - {BE9D2400-7F1C-49D6-8498-5CE495491AD6}.Debug|x64.Build.0 = Debug|x64 - {BE9D2400-7F1C-49D6-8498-5CE495491AD6}.Release|Any CPU.ActiveCfg = Release|Win32 - {BE9D2400-7F1C-49D6-8498-5CE495491AD6}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {BE9D2400-7F1C-49D6-8498-5CE495491AD6}.Release|Mixed Platforms.Build.0 = Release|Win32 - {BE9D2400-7F1C-49D6-8498-5CE495491AD6}.Release|Win32.ActiveCfg = Release|Win32 - {BE9D2400-7F1C-49D6-8498-5CE495491AD6}.Release|Win32.Build.0 = Release|Win32 - {BE9D2400-7F1C-49D6-8498-5CE495491AD6}.Release|x64.ActiveCfg = Release|x64 - {BE9D2400-7F1C-49D6-8498-5CE495491AD6}.Release|x64.Build.0 = Release|x64 - {BC25C5DC-AEFB-49F9-8188-3C1B8C8929E6}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {BC25C5DC-AEFB-49F9-8188-3C1B8C8929E6}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {BC25C5DC-AEFB-49F9-8188-3C1B8C8929E6}.Debug|Mixed Platforms.Build.0 = Debug|Win32 - {BC25C5DC-AEFB-49F9-8188-3C1B8C8929E6}.Debug|Win32.ActiveCfg = Debug|Win32 - {BC25C5DC-AEFB-49F9-8188-3C1B8C8929E6}.Debug|Win32.Build.0 = Debug|Win32 - {BC25C5DC-AEFB-49F9-8188-3C1B8C8929E6}.Debug|x64.ActiveCfg = Debug|x64 - {BC25C5DC-AEFB-49F9-8188-3C1B8C8929E6}.Debug|x64.Build.0 = Debug|x64 - {BC25C5DC-AEFB-49F9-8188-3C1B8C8929E6}.Release|Any CPU.ActiveCfg = Release|Win32 - {BC25C5DC-AEFB-49F9-8188-3C1B8C8929E6}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {BC25C5DC-AEFB-49F9-8188-3C1B8C8929E6}.Release|Mixed Platforms.Build.0 = Release|Win32 - {BC25C5DC-AEFB-49F9-8188-3C1B8C8929E6}.Release|Win32.ActiveCfg = Release|Win32 - {BC25C5DC-AEFB-49F9-8188-3C1B8C8929E6}.Release|Win32.Build.0 = Release|Win32 - {BC25C5DC-AEFB-49F9-8188-3C1B8C8929E6}.Release|x64.ActiveCfg = Release|x64 - {BC25C5DC-AEFB-49F9-8188-3C1B8C8929E6}.Release|x64.Build.0 = Release|x64 - {6D61FBE9-6913-4885-A95D-1A8C0C223D82}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {6D61FBE9-6913-4885-A95D-1A8C0C223D82}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {6D61FBE9-6913-4885-A95D-1A8C0C223D82}.Debug|Mixed Platforms.Build.0 = Debug|Win32 - {6D61FBE9-6913-4885-A95D-1A8C0C223D82}.Debug|Win32.ActiveCfg = Debug|Win32 - {6D61FBE9-6913-4885-A95D-1A8C0C223D82}.Debug|Win32.Build.0 = Debug|Win32 - {6D61FBE9-6913-4885-A95D-1A8C0C223D82}.Debug|x64.ActiveCfg = Debug|x64 - {6D61FBE9-6913-4885-A95D-1A8C0C223D82}.Debug|x64.Build.0 = Debug|x64 - {6D61FBE9-6913-4885-A95D-1A8C0C223D82}.Release|Any CPU.ActiveCfg = Release|Win32 - {6D61FBE9-6913-4885-A95D-1A8C0C223D82}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {6D61FBE9-6913-4885-A95D-1A8C0C223D82}.Release|Mixed Platforms.Build.0 = Release|Win32 - {6D61FBE9-6913-4885-A95D-1A8C0C223D82}.Release|Win32.ActiveCfg = Release|Win32 - {6D61FBE9-6913-4885-A95D-1A8C0C223D82}.Release|Win32.Build.0 = Release|Win32 - {6D61FBE9-6913-4885-A95D-1A8C0C223D82}.Release|x64.ActiveCfg = Release|x64 - {6D61FBE9-6913-4885-A95D-1A8C0C223D82}.Release|x64.Build.0 = Release|x64 - {6F5D4C4A-C8C3-41DA-BF44-6D42B76464DA}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {6F5D4C4A-C8C3-41DA-BF44-6D42B76464DA}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {6F5D4C4A-C8C3-41DA-BF44-6D42B76464DA}.Debug|Mixed Platforms.Build.0 = Debug|Win32 - {6F5D4C4A-C8C3-41DA-BF44-6D42B76464DA}.Debug|Win32.ActiveCfg = Debug|Win32 - {6F5D4C4A-C8C3-41DA-BF44-6D42B76464DA}.Debug|Win32.Build.0 = Debug|Win32 - {6F5D4C4A-C8C3-41DA-BF44-6D42B76464DA}.Debug|x64.ActiveCfg = Debug|x64 - {6F5D4C4A-C8C3-41DA-BF44-6D42B76464DA}.Debug|x64.Build.0 = Debug|x64 - {6F5D4C4A-C8C3-41DA-BF44-6D42B76464DA}.Release|Any CPU.ActiveCfg = Release|Win32 - {6F5D4C4A-C8C3-41DA-BF44-6D42B76464DA}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {6F5D4C4A-C8C3-41DA-BF44-6D42B76464DA}.Release|Mixed Platforms.Build.0 = Release|Win32 - {6F5D4C4A-C8C3-41DA-BF44-6D42B76464DA}.Release|Win32.ActiveCfg = Release|Win32 - {6F5D4C4A-C8C3-41DA-BF44-6D42B76464DA}.Release|Win32.Build.0 = Release|Win32 - {6F5D4C4A-C8C3-41DA-BF44-6D42B76464DA}.Release|x64.ActiveCfg = Release|x64 - {6F5D4C4A-C8C3-41DA-BF44-6D42B76464DA}.Release|x64.Build.0 = Release|x64 - {2D8F1DDB-6470-45A1-B95A-3E2960641314}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {2D8F1DDB-6470-45A1-B95A-3E2960641314}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {2D8F1DDB-6470-45A1-B95A-3E2960641314}.Debug|Mixed Platforms.Build.0 = Debug|Win32 - {2D8F1DDB-6470-45A1-B95A-3E2960641314}.Debug|Win32.ActiveCfg = Debug|Win32 - {2D8F1DDB-6470-45A1-B95A-3E2960641314}.Debug|Win32.Build.0 = Debug|Win32 - {2D8F1DDB-6470-45A1-B95A-3E2960641314}.Debug|x64.ActiveCfg = Debug|x64 - {2D8F1DDB-6470-45A1-B95A-3E2960641314}.Debug|x64.Build.0 = Debug|x64 - {2D8F1DDB-6470-45A1-B95A-3E2960641314}.Release|Any CPU.ActiveCfg = Release|Win32 - {2D8F1DDB-6470-45A1-B95A-3E2960641314}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {2D8F1DDB-6470-45A1-B95A-3E2960641314}.Release|Mixed Platforms.Build.0 = Release|Win32 - {2D8F1DDB-6470-45A1-B95A-3E2960641314}.Release|Win32.ActiveCfg = Release|Win32 - {2D8F1DDB-6470-45A1-B95A-3E2960641314}.Release|Win32.Build.0 = Release|Win32 - {2D8F1DDB-6470-45A1-B95A-3E2960641314}.Release|x64.ActiveCfg = Release|x64 - {2D8F1DDB-6470-45A1-B95A-3E2960641314}.Release|x64.Build.0 = Release|x64 - {EE8EC522-8430-4B46-86A3-D943D77F9E4B}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {EE8EC522-8430-4B46-86A3-D943D77F9E4B}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {EE8EC522-8430-4B46-86A3-D943D77F9E4B}.Debug|Mixed Platforms.Build.0 = Debug|Win32 - {EE8EC522-8430-4B46-86A3-D943D77F9E4B}.Debug|Win32.ActiveCfg = Debug|Win32 - {EE8EC522-8430-4B46-86A3-D943D77F9E4B}.Debug|Win32.Build.0 = Debug|Win32 - {EE8EC522-8430-4B46-86A3-D943D77F9E4B}.Debug|x64.ActiveCfg = Debug|x64 - {EE8EC522-8430-4B46-86A3-D943D77F9E4B}.Debug|x64.Build.0 = Debug|x64 - {EE8EC522-8430-4B46-86A3-D943D77F9E4B}.Release|Any CPU.ActiveCfg = Release|Win32 - {EE8EC522-8430-4B46-86A3-D943D77F9E4B}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {EE8EC522-8430-4B46-86A3-D943D77F9E4B}.Release|Mixed Platforms.Build.0 = Release|Win32 - {EE8EC522-8430-4B46-86A3-D943D77F9E4B}.Release|Win32.ActiveCfg = Release|Win32 - {EE8EC522-8430-4B46-86A3-D943D77F9E4B}.Release|Win32.Build.0 = Release|Win32 - {EE8EC522-8430-4B46-86A3-D943D77F9E4B}.Release|x64.ActiveCfg = Release|x64 - {EE8EC522-8430-4B46-86A3-D943D77F9E4B}.Release|x64.Build.0 = Release|x64 - {F32FA418-8DF4-4E94-B92B-EBD502F5DC07}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {F32FA418-8DF4-4E94-B92B-EBD502F5DC07}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {F32FA418-8DF4-4E94-B92B-EBD502F5DC07}.Debug|Mixed Platforms.Build.0 = Debug|Win32 - {F32FA418-8DF4-4E94-B92B-EBD502F5DC07}.Debug|Win32.ActiveCfg = Debug|Win32 - {F32FA418-8DF4-4E94-B92B-EBD502F5DC07}.Debug|Win32.Build.0 = Debug|Win32 - {F32FA418-8DF4-4E94-B92B-EBD502F5DC07}.Debug|x64.ActiveCfg = Debug|x64 - {F32FA418-8DF4-4E94-B92B-EBD502F5DC07}.Debug|x64.Build.0 = Debug|x64 - {F32FA418-8DF4-4E94-B92B-EBD502F5DC07}.Release|Any CPU.ActiveCfg = Release|Win32 - {F32FA418-8DF4-4E94-B92B-EBD502F5DC07}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {F32FA418-8DF4-4E94-B92B-EBD502F5DC07}.Release|Mixed Platforms.Build.0 = Release|Win32 - {F32FA418-8DF4-4E94-B92B-EBD502F5DC07}.Release|Win32.ActiveCfg = Release|Win32 - {F32FA418-8DF4-4E94-B92B-EBD502F5DC07}.Release|Win32.Build.0 = Release|Win32 - {F32FA418-8DF4-4E94-B92B-EBD502F5DC07}.Release|x64.ActiveCfg = Release|x64 - {F32FA418-8DF4-4E94-B92B-EBD502F5DC07}.Release|x64.Build.0 = Release|x64 - {64FDEE97-6B7E-40E5-A489-ECA322825BC8}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {64FDEE97-6B7E-40E5-A489-ECA322825BC8}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {64FDEE97-6B7E-40E5-A489-ECA322825BC8}.Debug|Mixed Platforms.Build.0 = Debug|Win32 - {64FDEE97-6B7E-40E5-A489-ECA322825BC8}.Debug|Win32.ActiveCfg = Debug|Win32 - {64FDEE97-6B7E-40E5-A489-ECA322825BC8}.Debug|Win32.Build.0 = Debug|Win32 - {64FDEE97-6B7E-40E5-A489-ECA322825BC8}.Debug|x64.ActiveCfg = Debug|x64 - {64FDEE97-6B7E-40E5-A489-ECA322825BC8}.Debug|x64.Build.0 = Debug|x64 - {64FDEE97-6B7E-40E5-A489-ECA322825BC8}.Release|Any CPU.ActiveCfg = Release|Win32 - {64FDEE97-6B7E-40E5-A489-ECA322825BC8}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {64FDEE97-6B7E-40E5-A489-ECA322825BC8}.Release|Mixed Platforms.Build.0 = Release|Win32 - {64FDEE97-6B7E-40E5-A489-ECA322825BC8}.Release|Win32.ActiveCfg = Release|Win32 - {64FDEE97-6B7E-40E5-A489-ECA322825BC8}.Release|Win32.Build.0 = Release|Win32 - {64FDEE97-6B7E-40E5-A489-ECA322825BC8}.Release|x64.ActiveCfg = Release|x64 - {64FDEE97-6B7E-40E5-A489-ECA322825BC8}.Release|x64.Build.0 = Release|x64 - {A221819D-4263-42AA-B22A-C022924842A7}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {A221819D-4263-42AA-B22A-C022924842A7}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {A221819D-4263-42AA-B22A-C022924842A7}.Debug|Mixed Platforms.Build.0 = Debug|Win32 - {A221819D-4263-42AA-B22A-C022924842A7}.Debug|Win32.ActiveCfg = Debug|Win32 - {A221819D-4263-42AA-B22A-C022924842A7}.Debug|Win32.Build.0 = Debug|Win32 - {A221819D-4263-42AA-B22A-C022924842A7}.Debug|x64.ActiveCfg = Debug|x64 - {A221819D-4263-42AA-B22A-C022924842A7}.Debug|x64.Build.0 = Debug|x64 - {A221819D-4263-42AA-B22A-C022924842A7}.Release|Any CPU.ActiveCfg = Release|Win32 - {A221819D-4263-42AA-B22A-C022924842A7}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {A221819D-4263-42AA-B22A-C022924842A7}.Release|Mixed Platforms.Build.0 = Release|Win32 - {A221819D-4263-42AA-B22A-C022924842A7}.Release|Win32.ActiveCfg = Release|Win32 - {A221819D-4263-42AA-B22A-C022924842A7}.Release|Win32.Build.0 = Release|Win32 - {A221819D-4263-42AA-B22A-C022924842A7}.Release|x64.ActiveCfg = Release|x64 - {A221819D-4263-42AA-B22A-C022924842A7}.Release|x64.Build.0 = Release|x64 - {2CFEC79A-E39E-4FFD-ABC2-C4A69DD1E44D}.Debug|Any CPU.ActiveCfg = Debug|x86 - {2CFEC79A-E39E-4FFD-ABC2-C4A69DD1E44D}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 - {2CFEC79A-E39E-4FFD-ABC2-C4A69DD1E44D}.Debug|Mixed Platforms.Build.0 = Debug|x86 - {2CFEC79A-E39E-4FFD-ABC2-C4A69DD1E44D}.Debug|Win32.ActiveCfg = Debug|x86 - {2CFEC79A-E39E-4FFD-ABC2-C4A69DD1E44D}.Debug|Win32.Build.0 = Debug|x86 - {2CFEC79A-E39E-4FFD-ABC2-C4A69DD1E44D}.Debug|x64.ActiveCfg = Debug|x64 - {2CFEC79A-E39E-4FFD-ABC2-C4A69DD1E44D}.Debug|x64.Build.0 = Debug|x64 - {2CFEC79A-E39E-4FFD-ABC2-C4A69DD1E44D}.Release|Any CPU.ActiveCfg = Release|x86 - {2CFEC79A-E39E-4FFD-ABC2-C4A69DD1E44D}.Release|Mixed Platforms.ActiveCfg = Release|x86 - {2CFEC79A-E39E-4FFD-ABC2-C4A69DD1E44D}.Release|Mixed Platforms.Build.0 = Release|x86 - {2CFEC79A-E39E-4FFD-ABC2-C4A69DD1E44D}.Release|Win32.ActiveCfg = Release|x86 - {2CFEC79A-E39E-4FFD-ABC2-C4A69DD1E44D}.Release|Win32.Build.0 = Release|x86 - {2CFEC79A-E39E-4FFD-ABC2-C4A69DD1E44D}.Release|x64.ActiveCfg = Release|x64 - {2CFEC79A-E39E-4FFD-ABC2-C4A69DD1E44D}.Release|x64.Build.0 = Release|x64 - {A2DD3CBE-B140-4892-A875-24107FA52518}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {A2DD3CBE-B140-4892-A875-24107FA52518}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {A2DD3CBE-B140-4892-A875-24107FA52518}.Debug|Mixed Platforms.Build.0 = Debug|Win32 - {A2DD3CBE-B140-4892-A875-24107FA52518}.Debug|Win32.ActiveCfg = Debug|Win32 - {A2DD3CBE-B140-4892-A875-24107FA52518}.Debug|Win32.Build.0 = Debug|Win32 - {A2DD3CBE-B140-4892-A875-24107FA52518}.Debug|x64.ActiveCfg = Debug|x64 - {A2DD3CBE-B140-4892-A875-24107FA52518}.Debug|x64.Build.0 = Debug|x64 - {A2DD3CBE-B140-4892-A875-24107FA52518}.Release|Any CPU.ActiveCfg = Release|Win32 - {A2DD3CBE-B140-4892-A875-24107FA52518}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {A2DD3CBE-B140-4892-A875-24107FA52518}.Release|Mixed Platforms.Build.0 = Release|Win32 - {A2DD3CBE-B140-4892-A875-24107FA52518}.Release|Win32.ActiveCfg = Release|Win32 - {A2DD3CBE-B140-4892-A875-24107FA52518}.Release|Win32.Build.0 = Release|Win32 - {A2DD3CBE-B140-4892-A875-24107FA52518}.Release|x64.ActiveCfg = Release|x64 - {A2DD3CBE-B140-4892-A875-24107FA52518}.Release|x64.Build.0 = Release|x64 - {EB48A04A-657E-41B8-B2F5-D47F8C30B2B4}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {EB48A04A-657E-41B8-B2F5-D47F8C30B2B4}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {EB48A04A-657E-41B8-B2F5-D47F8C30B2B4}.Debug|Mixed Platforms.Build.0 = Debug|Win32 - {EB48A04A-657E-41B8-B2F5-D47F8C30B2B4}.Debug|Win32.ActiveCfg = Debug|Win32 - {EB48A04A-657E-41B8-B2F5-D47F8C30B2B4}.Debug|Win32.Build.0 = Debug|Win32 - {EB48A04A-657E-41B8-B2F5-D47F8C30B2B4}.Debug|x64.ActiveCfg = Debug|x64 - {EB48A04A-657E-41B8-B2F5-D47F8C30B2B4}.Debug|x64.Build.0 = Debug|x64 - {EB48A04A-657E-41B8-B2F5-D47F8C30B2B4}.Release|Any CPU.ActiveCfg = Release|Win32 - {EB48A04A-657E-41B8-B2F5-D47F8C30B2B4}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {EB48A04A-657E-41B8-B2F5-D47F8C30B2B4}.Release|Mixed Platforms.Build.0 = Release|Win32 - {EB48A04A-657E-41B8-B2F5-D47F8C30B2B4}.Release|Win32.ActiveCfg = Release|Win32 - {EB48A04A-657E-41B8-B2F5-D47F8C30B2B4}.Release|Win32.Build.0 = Release|Win32 - {EB48A04A-657E-41B8-B2F5-D47F8C30B2B4}.Release|x64.ActiveCfg = Release|x64 - {EB48A04A-657E-41B8-B2F5-D47F8C30B2B4}.Release|x64.Build.0 = Release|x64 - {C7FECFCD-E6C6-4F95-BB9A-E1762B043969}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {C7FECFCD-E6C6-4F95-BB9A-E1762B043969}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {C7FECFCD-E6C6-4F95-BB9A-E1762B043969}.Debug|Mixed Platforms.Build.0 = Debug|Win32 - {C7FECFCD-E6C6-4F95-BB9A-E1762B043969}.Debug|Win32.ActiveCfg = Debug|Win32 - {C7FECFCD-E6C6-4F95-BB9A-E1762B043969}.Debug|Win32.Build.0 = Debug|Win32 - {C7FECFCD-E6C6-4F95-BB9A-E1762B043969}.Debug|x64.ActiveCfg = Debug|x64 - {C7FECFCD-E6C6-4F95-BB9A-E1762B043969}.Debug|x64.Build.0 = Debug|x64 - {C7FECFCD-E6C6-4F95-BB9A-E1762B043969}.Release|Any CPU.ActiveCfg = Release|Win32 - {C7FECFCD-E6C6-4F95-BB9A-E1762B043969}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {C7FECFCD-E6C6-4F95-BB9A-E1762B043969}.Release|Mixed Platforms.Build.0 = Release|Win32 - {C7FECFCD-E6C6-4F95-BB9A-E1762B043969}.Release|Win32.ActiveCfg = Release|Win32 - {C7FECFCD-E6C6-4F95-BB9A-E1762B043969}.Release|Win32.Build.0 = Release|Win32 - {C7FECFCD-E6C6-4F95-BB9A-E1762B043969}.Release|x64.ActiveCfg = Release|x64 - {C7FECFCD-E6C6-4F95-BB9A-E1762B043969}.Release|x64.Build.0 = Release|x64 - {5344B52B-BAC3-479C-B41D-D465B8BDA1AD}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {5344B52B-BAC3-479C-B41D-D465B8BDA1AD}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {5344B52B-BAC3-479C-B41D-D465B8BDA1AD}.Debug|Mixed Platforms.Build.0 = Debug|Win32 - {5344B52B-BAC3-479C-B41D-D465B8BDA1AD}.Debug|Win32.ActiveCfg = Debug|Win32 - {5344B52B-BAC3-479C-B41D-D465B8BDA1AD}.Debug|Win32.Build.0 = Debug|Win32 - {5344B52B-BAC3-479C-B41D-D465B8BDA1AD}.Debug|x64.ActiveCfg = Debug|x64 - {5344B52B-BAC3-479C-B41D-D465B8BDA1AD}.Debug|x64.Build.0 = Debug|x64 - {5344B52B-BAC3-479C-B41D-D465B8BDA1AD}.Release|Any CPU.ActiveCfg = Release|Win32 - {5344B52B-BAC3-479C-B41D-D465B8BDA1AD}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {5344B52B-BAC3-479C-B41D-D465B8BDA1AD}.Release|Mixed Platforms.Build.0 = Release|Win32 - {5344B52B-BAC3-479C-B41D-D465B8BDA1AD}.Release|Win32.ActiveCfg = Release|Win32 - {5344B52B-BAC3-479C-B41D-D465B8BDA1AD}.Release|Win32.Build.0 = Release|Win32 - {5344B52B-BAC3-479C-B41D-D465B8BDA1AD}.Release|x64.ActiveCfg = Release|x64 - {5344B52B-BAC3-479C-B41D-D465B8BDA1AD}.Release|x64.Build.0 = Release|x64 - {C862B662-5CC6-4E79-B1B3-905E0B98D627}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {C862B662-5CC6-4E79-B1B3-905E0B98D627}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {C862B662-5CC6-4E79-B1B3-905E0B98D627}.Debug|Mixed Platforms.Build.0 = Debug|Win32 - {C862B662-5CC6-4E79-B1B3-905E0B98D627}.Debug|Win32.ActiveCfg = Debug|Win32 - {C862B662-5CC6-4E79-B1B3-905E0B98D627}.Debug|Win32.Build.0 = Debug|Win32 - {C862B662-5CC6-4E79-B1B3-905E0B98D627}.Debug|x64.ActiveCfg = Debug|x64 - {C862B662-5CC6-4E79-B1B3-905E0B98D627}.Debug|x64.Build.0 = Debug|x64 - {C862B662-5CC6-4E79-B1B3-905E0B98D627}.Release|Any CPU.ActiveCfg = Release|Win32 - {C862B662-5CC6-4E79-B1B3-905E0B98D627}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {C862B662-5CC6-4E79-B1B3-905E0B98D627}.Release|Mixed Platforms.Build.0 = Release|Win32 - {C862B662-5CC6-4E79-B1B3-905E0B98D627}.Release|Win32.ActiveCfg = Release|Win32 - {C862B662-5CC6-4E79-B1B3-905E0B98D627}.Release|Win32.Build.0 = Release|Win32 - {C862B662-5CC6-4E79-B1B3-905E0B98D627}.Release|x64.ActiveCfg = Release|x64 - {C862B662-5CC6-4E79-B1B3-905E0B98D627}.Release|x64.Build.0 = Release|x64 - {C30E7EB6-9655-4AF4-98AE-D6E6B14631AF}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {C30E7EB6-9655-4AF4-98AE-D6E6B14631AF}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {C30E7EB6-9655-4AF4-98AE-D6E6B14631AF}.Debug|Mixed Platforms.Build.0 = Debug|Win32 - {C30E7EB6-9655-4AF4-98AE-D6E6B14631AF}.Debug|Win32.ActiveCfg = Debug|Win32 - {C30E7EB6-9655-4AF4-98AE-D6E6B14631AF}.Debug|Win32.Build.0 = Debug|Win32 - {C30E7EB6-9655-4AF4-98AE-D6E6B14631AF}.Debug|x64.ActiveCfg = Debug|x64 - {C30E7EB6-9655-4AF4-98AE-D6E6B14631AF}.Debug|x64.Build.0 = Debug|x64 - {C30E7EB6-9655-4AF4-98AE-D6E6B14631AF}.Release|Any CPU.ActiveCfg = Release|Win32 - {C30E7EB6-9655-4AF4-98AE-D6E6B14631AF}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {C30E7EB6-9655-4AF4-98AE-D6E6B14631AF}.Release|Mixed Platforms.Build.0 = Release|Win32 - {C30E7EB6-9655-4AF4-98AE-D6E6B14631AF}.Release|Win32.ActiveCfg = Release|Win32 - {C30E7EB6-9655-4AF4-98AE-D6E6B14631AF}.Release|Win32.Build.0 = Release|Win32 - {C30E7EB6-9655-4AF4-98AE-D6E6B14631AF}.Release|x64.ActiveCfg = Release|x64 - {C30E7EB6-9655-4AF4-98AE-D6E6B14631AF}.Release|x64.Build.0 = Release|x64 - {05203741-CD80-4060-8218-EC5D1120FE3E}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {05203741-CD80-4060-8218-EC5D1120FE3E}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {05203741-CD80-4060-8218-EC5D1120FE3E}.Debug|Mixed Platforms.Build.0 = Debug|Win32 - {05203741-CD80-4060-8218-EC5D1120FE3E}.Debug|Win32.ActiveCfg = Debug|Win32 - {05203741-CD80-4060-8218-EC5D1120FE3E}.Debug|Win32.Build.0 = Debug|Win32 - {05203741-CD80-4060-8218-EC5D1120FE3E}.Debug|x64.ActiveCfg = Debug|x64 - {05203741-CD80-4060-8218-EC5D1120FE3E}.Debug|x64.Build.0 = Debug|x64 - {05203741-CD80-4060-8218-EC5D1120FE3E}.Release|Any CPU.ActiveCfg = Release|Win32 - {05203741-CD80-4060-8218-EC5D1120FE3E}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {05203741-CD80-4060-8218-EC5D1120FE3E}.Release|Mixed Platforms.Build.0 = Release|Win32 - {05203741-CD80-4060-8218-EC5D1120FE3E}.Release|Win32.ActiveCfg = Release|Win32 - {05203741-CD80-4060-8218-EC5D1120FE3E}.Release|Win32.Build.0 = Release|Win32 - {05203741-CD80-4060-8218-EC5D1120FE3E}.Release|x64.ActiveCfg = Release|x64 - {05203741-CD80-4060-8218-EC5D1120FE3E}.Release|x64.Build.0 = Release|x64 - {C029E0CF-F203-41D0-9608-A3EA2CF0ED1F}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {C029E0CF-F203-41D0-9608-A3EA2CF0ED1F}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {C029E0CF-F203-41D0-9608-A3EA2CF0ED1F}.Debug|Mixed Platforms.Build.0 = Debug|Win32 - {C029E0CF-F203-41D0-9608-A3EA2CF0ED1F}.Debug|Win32.ActiveCfg = Debug|Win32 - {C029E0CF-F203-41D0-9608-A3EA2CF0ED1F}.Debug|Win32.Build.0 = Debug|Win32 - {C029E0CF-F203-41D0-9608-A3EA2CF0ED1F}.Debug|x64.ActiveCfg = Debug|x64 - {C029E0CF-F203-41D0-9608-A3EA2CF0ED1F}.Debug|x64.Build.0 = Debug|x64 - {C029E0CF-F203-41D0-9608-A3EA2CF0ED1F}.Release|Any CPU.ActiveCfg = Release|Win32 - {C029E0CF-F203-41D0-9608-A3EA2CF0ED1F}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {C029E0CF-F203-41D0-9608-A3EA2CF0ED1F}.Release|Mixed Platforms.Build.0 = Release|Win32 - {C029E0CF-F203-41D0-9608-A3EA2CF0ED1F}.Release|Win32.ActiveCfg = Release|Win32 - {C029E0CF-F203-41D0-9608-A3EA2CF0ED1F}.Release|Win32.Build.0 = Release|Win32 - {C029E0CF-F203-41D0-9608-A3EA2CF0ED1F}.Release|x64.ActiveCfg = Release|x64 - {C029E0CF-F203-41D0-9608-A3EA2CF0ED1F}.Release|x64.Build.0 = Release|x64 - {4F8C4C09-431C-45C4-830B-32006E783C3A}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {4F8C4C09-431C-45C4-830B-32006E783C3A}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {4F8C4C09-431C-45C4-830B-32006E783C3A}.Debug|Mixed Platforms.Build.0 = Debug|Win32 - {4F8C4C09-431C-45C4-830B-32006E783C3A}.Debug|Win32.ActiveCfg = Debug|Win32 - {4F8C4C09-431C-45C4-830B-32006E783C3A}.Debug|Win32.Build.0 = Debug|Win32 - {4F8C4C09-431C-45C4-830B-32006E783C3A}.Debug|x64.ActiveCfg = Debug|x64 - {4F8C4C09-431C-45C4-830B-32006E783C3A}.Debug|x64.Build.0 = Debug|x64 - {4F8C4C09-431C-45C4-830B-32006E783C3A}.Release|Any CPU.ActiveCfg = Release|Win32 - {4F8C4C09-431C-45C4-830B-32006E783C3A}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {4F8C4C09-431C-45C4-830B-32006E783C3A}.Release|Mixed Platforms.Build.0 = Release|Win32 - {4F8C4C09-431C-45C4-830B-32006E783C3A}.Release|Win32.ActiveCfg = Release|Win32 - {4F8C4C09-431C-45C4-830B-32006E783C3A}.Release|Win32.Build.0 = Release|Win32 - {4F8C4C09-431C-45C4-830B-32006E783C3A}.Release|x64.ActiveCfg = Release|x64 - {4F8C4C09-431C-45C4-830B-32006E783C3A}.Release|x64.Build.0 = Release|x64 - {17D3BD92-6F5D-438C-A89B-88F4CE06DB94}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {17D3BD92-6F5D-438C-A89B-88F4CE06DB94}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {17D3BD92-6F5D-438C-A89B-88F4CE06DB94}.Debug|Mixed Platforms.Build.0 = Debug|Win32 - {17D3BD92-6F5D-438C-A89B-88F4CE06DB94}.Debug|Win32.ActiveCfg = Debug|Win32 - {17D3BD92-6F5D-438C-A89B-88F4CE06DB94}.Debug|Win32.Build.0 = Debug|Win32 - {17D3BD92-6F5D-438C-A89B-88F4CE06DB94}.Debug|x64.ActiveCfg = Debug|x64 - {17D3BD92-6F5D-438C-A89B-88F4CE06DB94}.Debug|x64.Build.0 = Debug|x64 - {17D3BD92-6F5D-438C-A89B-88F4CE06DB94}.Release|Any CPU.ActiveCfg = Release|Win32 - {17D3BD92-6F5D-438C-A89B-88F4CE06DB94}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {17D3BD92-6F5D-438C-A89B-88F4CE06DB94}.Release|Mixed Platforms.Build.0 = Release|Win32 - {17D3BD92-6F5D-438C-A89B-88F4CE06DB94}.Release|Win32.ActiveCfg = Release|Win32 - {17D3BD92-6F5D-438C-A89B-88F4CE06DB94}.Release|Win32.Build.0 = Release|Win32 - {17D3BD92-6F5D-438C-A89B-88F4CE06DB94}.Release|x64.ActiveCfg = Release|x64 - {17D3BD92-6F5D-438C-A89B-88F4CE06DB94}.Release|x64.Build.0 = Release|x64 - {D10AB316-0F7A-4551-BE4F-385E04CCF1E8}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {D10AB316-0F7A-4551-BE4F-385E04CCF1E8}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {D10AB316-0F7A-4551-BE4F-385E04CCF1E8}.Debug|Mixed Platforms.Build.0 = Debug|Win32 - {D10AB316-0F7A-4551-BE4F-385E04CCF1E8}.Debug|Win32.ActiveCfg = Debug|Win32 - {D10AB316-0F7A-4551-BE4F-385E04CCF1E8}.Debug|Win32.Build.0 = Debug|Win32 - {D10AB316-0F7A-4551-BE4F-385E04CCF1E8}.Debug|x64.ActiveCfg = Debug|x64 - {D10AB316-0F7A-4551-BE4F-385E04CCF1E8}.Debug|x64.Build.0 = Debug|x64 - {D10AB316-0F7A-4551-BE4F-385E04CCF1E8}.Release|Any CPU.ActiveCfg = Release|Win32 - {D10AB316-0F7A-4551-BE4F-385E04CCF1E8}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {D10AB316-0F7A-4551-BE4F-385E04CCF1E8}.Release|Mixed Platforms.Build.0 = Release|Win32 - {D10AB316-0F7A-4551-BE4F-385E04CCF1E8}.Release|Win32.ActiveCfg = Release|Win32 - {D10AB316-0F7A-4551-BE4F-385E04CCF1E8}.Release|Win32.Build.0 = Release|Win32 - {D10AB316-0F7A-4551-BE4F-385E04CCF1E8}.Release|x64.ActiveCfg = Release|x64 - {D10AB316-0F7A-4551-BE4F-385E04CCF1E8}.Release|x64.Build.0 = Release|x64 - {6EBCA4DA-8CC7-42FE-8F45-878ABE165078}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {6EBCA4DA-8CC7-42FE-8F45-878ABE165078}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {6EBCA4DA-8CC7-42FE-8F45-878ABE165078}.Debug|Mixed Platforms.Build.0 = Debug|Win32 - {6EBCA4DA-8CC7-42FE-8F45-878ABE165078}.Debug|Win32.ActiveCfg = Debug|Win32 - {6EBCA4DA-8CC7-42FE-8F45-878ABE165078}.Debug|Win32.Build.0 = Debug|Win32 - {6EBCA4DA-8CC7-42FE-8F45-878ABE165078}.Debug|x64.ActiveCfg = Debug|x64 - {6EBCA4DA-8CC7-42FE-8F45-878ABE165078}.Debug|x64.Build.0 = Debug|x64 - {6EBCA4DA-8CC7-42FE-8F45-878ABE165078}.Release|Any CPU.ActiveCfg = Release|Win32 - {6EBCA4DA-8CC7-42FE-8F45-878ABE165078}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {6EBCA4DA-8CC7-42FE-8F45-878ABE165078}.Release|Mixed Platforms.Build.0 = Release|Win32 - {6EBCA4DA-8CC7-42FE-8F45-878ABE165078}.Release|Win32.ActiveCfg = Release|Win32 - {6EBCA4DA-8CC7-42FE-8F45-878ABE165078}.Release|Win32.Build.0 = Release|Win32 - {6EBCA4DA-8CC7-42FE-8F45-878ABE165078}.Release|x64.ActiveCfg = Release|x64 - {6EBCA4DA-8CC7-42FE-8F45-878ABE165078}.Release|x64.Build.0 = Release|x64 - {4640AB3A-5A8B-2DA0-980C-A70BCAB3A7F1}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {4640AB3A-5A8B-2DA0-980C-A70BCAB3A7F1}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {4640AB3A-5A8B-2DA0-980C-A70BCAB3A7F1}.Debug|Mixed Platforms.Build.0 = Debug|Win32 - {4640AB3A-5A8B-2DA0-980C-A70BCAB3A7F1}.Debug|Win32.ActiveCfg = Debug|Win32 - {4640AB3A-5A8B-2DA0-980C-A70BCAB3A7F1}.Debug|Win32.Build.0 = Debug|Win32 - {4640AB3A-5A8B-2DA0-980C-A70BCAB3A7F1}.Debug|x64.ActiveCfg = Debug|x64 - {4640AB3A-5A8B-2DA0-980C-A70BCAB3A7F1}.Debug|x64.Build.0 = Debug|x64 - {4640AB3A-5A8B-2DA0-980C-A70BCAB3A7F1}.Release|Any CPU.ActiveCfg = Release|Win32 - {4640AB3A-5A8B-2DA0-980C-A70BCAB3A7F1}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {4640AB3A-5A8B-2DA0-980C-A70BCAB3A7F1}.Release|Mixed Platforms.Build.0 = Release|Win32 - {4640AB3A-5A8B-2DA0-980C-A70BCAB3A7F1}.Release|Win32.ActiveCfg = Release|Win32 - {4640AB3A-5A8B-2DA0-980C-A70BCAB3A7F1}.Release|Win32.Build.0 = Release|Win32 - {4640AB3A-5A8B-2DA0-980C-A70BCAB3A7F1}.Release|x64.ActiveCfg = Release|x64 - {4640AB3A-5A8B-2DA0-980C-A70BCAB3A7F1}.Release|x64.Build.0 = Release|x64 - {8B820B9F-C154-417C-A090-42198F2AF496}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {8B820B9F-C154-417C-A090-42198F2AF496}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {8B820B9F-C154-417C-A090-42198F2AF496}.Debug|Mixed Platforms.Build.0 = Debug|Win32 - {8B820B9F-C154-417C-A090-42198F2AF496}.Debug|Win32.ActiveCfg = Debug|Win32 - {8B820B9F-C154-417C-A090-42198F2AF496}.Debug|Win32.Build.0 = Debug|Win32 - {8B820B9F-C154-417C-A090-42198F2AF496}.Debug|x64.ActiveCfg = Debug|x64 - {8B820B9F-C154-417C-A090-42198F2AF496}.Debug|x64.Build.0 = Debug|x64 - {8B820B9F-C154-417C-A090-42198F2AF496}.Release|Any CPU.ActiveCfg = Release|Win32 - {8B820B9F-C154-417C-A090-42198F2AF496}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {8B820B9F-C154-417C-A090-42198F2AF496}.Release|Mixed Platforms.Build.0 = Release|Win32 - {8B820B9F-C154-417C-A090-42198F2AF496}.Release|Win32.ActiveCfg = Release|Win32 - {8B820B9F-C154-417C-A090-42198F2AF496}.Release|Win32.Build.0 = Release|Win32 - {8B820B9F-C154-417C-A090-42198F2AF496}.Release|x64.ActiveCfg = Release|x64 - {8B820B9F-C154-417C-A090-42198F2AF496}.Release|x64.Build.0 = Release|x64 - {45A34285-56DD-4521-912B-3F884D36FA35}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {45A34285-56DD-4521-912B-3F884D36FA35}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {45A34285-56DD-4521-912B-3F884D36FA35}.Debug|Mixed Platforms.Build.0 = Debug|Win32 - {45A34285-56DD-4521-912B-3F884D36FA35}.Debug|Win32.ActiveCfg = Debug|Win32 - {45A34285-56DD-4521-912B-3F884D36FA35}.Debug|Win32.Build.0 = Debug|Win32 - {45A34285-56DD-4521-912B-3F884D36FA35}.Debug|x64.ActiveCfg = Debug|x64 - {45A34285-56DD-4521-912B-3F884D36FA35}.Debug|x64.Build.0 = Debug|x64 - {45A34285-56DD-4521-912B-3F884D36FA35}.Release|Any CPU.ActiveCfg = Release|Win32 - {45A34285-56DD-4521-912B-3F884D36FA35}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {45A34285-56DD-4521-912B-3F884D36FA35}.Release|Mixed Platforms.Build.0 = Release|Win32 - {45A34285-56DD-4521-912B-3F884D36FA35}.Release|Win32.ActiveCfg = Release|Win32 - {45A34285-56DD-4521-912B-3F884D36FA35}.Release|Win32.Build.0 = Release|Win32 - {45A34285-56DD-4521-912B-3F884D36FA35}.Release|x64.ActiveCfg = Release|x64 - {45A34285-56DD-4521-912B-3F884D36FA35}.Release|x64.Build.0 = Release|x64 - {6D032D6B-7656-4743-B454-3388E2921EB0}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {6D032D6B-7656-4743-B454-3388E2921EB0}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {6D032D6B-7656-4743-B454-3388E2921EB0}.Debug|Mixed Platforms.Build.0 = Debug|Win32 - {6D032D6B-7656-4743-B454-3388E2921EB0}.Debug|Win32.ActiveCfg = Debug|Win32 - {6D032D6B-7656-4743-B454-3388E2921EB0}.Debug|Win32.Build.0 = Debug|Win32 - {6D032D6B-7656-4743-B454-3388E2921EB0}.Debug|x64.ActiveCfg = Debug|x64 - {6D032D6B-7656-4743-B454-3388E2921EB0}.Debug|x64.Build.0 = Debug|x64 - {6D032D6B-7656-4743-B454-3388E2921EB0}.Release|Any CPU.ActiveCfg = Release|Win32 - {6D032D6B-7656-4743-B454-3388E2921EB0}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {6D032D6B-7656-4743-B454-3388E2921EB0}.Release|Mixed Platforms.Build.0 = Release|Win32 - {6D032D6B-7656-4743-B454-3388E2921EB0}.Release|Win32.ActiveCfg = Release|Win32 - {6D032D6B-7656-4743-B454-3388E2921EB0}.Release|Win32.Build.0 = Release|Win32 - {6D032D6B-7656-4743-B454-3388E2921EB0}.Release|x64.ActiveCfg = Release|x64 - {6D032D6B-7656-4743-B454-3388E2921EB0}.Release|x64.Build.0 = Release|x64 - {B9184DBA-C6B7-44FE-8BBD-0852DB22D2E4}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {B9184DBA-C6B7-44FE-8BBD-0852DB22D2E4}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {B9184DBA-C6B7-44FE-8BBD-0852DB22D2E4}.Debug|Mixed Platforms.Build.0 = Debug|Win32 - {B9184DBA-C6B7-44FE-8BBD-0852DB22D2E4}.Debug|Win32.ActiveCfg = Debug|Win32 - {B9184DBA-C6B7-44FE-8BBD-0852DB22D2E4}.Debug|Win32.Build.0 = Debug|Win32 - {B9184DBA-C6B7-44FE-8BBD-0852DB22D2E4}.Debug|x64.ActiveCfg = Debug|x64 - {B9184DBA-C6B7-44FE-8BBD-0852DB22D2E4}.Debug|x64.Build.0 = Debug|x64 - {B9184DBA-C6B7-44FE-8BBD-0852DB22D2E4}.Release|Any CPU.ActiveCfg = Release|Win32 - {B9184DBA-C6B7-44FE-8BBD-0852DB22D2E4}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {B9184DBA-C6B7-44FE-8BBD-0852DB22D2E4}.Release|Mixed Platforms.Build.0 = Release|Win32 - {B9184DBA-C6B7-44FE-8BBD-0852DB22D2E4}.Release|Win32.ActiveCfg = Release|Win32 - {B9184DBA-C6B7-44FE-8BBD-0852DB22D2E4}.Release|Win32.Build.0 = Release|Win32 - {B9184DBA-C6B7-44FE-8BBD-0852DB22D2E4}.Release|x64.ActiveCfg = Release|x64 - {B9184DBA-C6B7-44FE-8BBD-0852DB22D2E4}.Release|x64.Build.0 = Release|x64 - {438D0136-4A27-4E4D-A617-FFACE4554236}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {438D0136-4A27-4E4D-A617-FFACE4554236}.Debug|Any CPU.Build.0 = Debug|Any CPU - {438D0136-4A27-4E4D-A617-FFACE4554236}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU - {438D0136-4A27-4E4D-A617-FFACE4554236}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU - {438D0136-4A27-4E4D-A617-FFACE4554236}.Debug|Win32.ActiveCfg = Debug|Any CPU - {438D0136-4A27-4E4D-A617-FFACE4554236}.Debug|x64.ActiveCfg = Debug|Any CPU - {438D0136-4A27-4E4D-A617-FFACE4554236}.Release|Any CPU.ActiveCfg = Release|Any CPU - {438D0136-4A27-4E4D-A617-FFACE4554236}.Release|Any CPU.Build.0 = Release|Any CPU - {438D0136-4A27-4E4D-A617-FFACE4554236}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU - {438D0136-4A27-4E4D-A617-FFACE4554236}.Release|Mixed Platforms.Build.0 = Release|Any CPU - {438D0136-4A27-4E4D-A617-FFACE4554236}.Release|Win32.ActiveCfg = Release|Any CPU - {438D0136-4A27-4E4D-A617-FFACE4554236}.Release|x64.ActiveCfg = Release|Any CPU - {845F4BD4-6822-4D92-9DDB-15FD18A47E5A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {845F4BD4-6822-4D92-9DDB-15FD18A47E5A}.Debug|Any CPU.Build.0 = Debug|Any CPU - {845F4BD4-6822-4D92-9DDB-15FD18A47E5A}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU - {845F4BD4-6822-4D92-9DDB-15FD18A47E5A}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU - {845F4BD4-6822-4D92-9DDB-15FD18A47E5A}.Debug|Win32.ActiveCfg = Debug|Any CPU - {845F4BD4-6822-4D92-9DDB-15FD18A47E5A}.Debug|x64.ActiveCfg = Debug|Any CPU - {845F4BD4-6822-4D92-9DDB-15FD18A47E5A}.Release|Any CPU.ActiveCfg = Release|Any CPU - {845F4BD4-6822-4D92-9DDB-15FD18A47E5A}.Release|Any CPU.Build.0 = Release|Any CPU - {845F4BD4-6822-4D92-9DDB-15FD18A47E5A}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU - {845F4BD4-6822-4D92-9DDB-15FD18A47E5A}.Release|Mixed Platforms.Build.0 = Release|Any CPU - {845F4BD4-6822-4D92-9DDB-15FD18A47E5A}.Release|Win32.ActiveCfg = Release|Any CPU - {845F4BD4-6822-4D92-9DDB-15FD18A47E5A}.Release|x64.ActiveCfg = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 2013 +VisualStudioVersion = 12.0.30110.0 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Common", "Common\Common.vcxproj", "{19312085-AA51-4BD6-BE92-4B6098CCA539}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Installer", "Installer\Installer.vcxproj", "{2FCFBFD2-2720-4BDD-B620-4BDD3DBB8D3D}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Language", "Language\Language.vcxproj", "{6BE6F228-B741-4DA9-9FBC-E9F2A7BD483A}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Library", "Library\Library.vcxproj", "{BE9D2400-7F1C-49D6-8498-5CE495491AD6}" + ProjectSection(ProjectDependencies) = postProject + {6BE6F228-B741-4DA9-9FBC-E9F2A7BD483A} = {6BE6F228-B741-4DA9-9FBC-E9F2A7BD483A} + {19312085-AA51-4BD6-BE92-4B6098CCA539} = {19312085-AA51-4BD6-BE92-4B6098CCA539} + {BC25C5DC-AEFB-49F9-8188-3C1B8C8929E6} = {BC25C5DC-AEFB-49F9-8188-3C1B8C8929E6} + {6D61FBE9-6913-4885-A95D-1A8C0C223D82} = {6D61FBE9-6913-4885-A95D-1A8C0C223D82} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Library_Lua", "Library\Library_Lua.vcxproj", "{BC25C5DC-AEFB-49F9-8188-3C1B8C8929E6}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Library_PCRE", "Library\Library_PCRE.vcxproj", "{6D61FBE9-6913-4885-A95D-1A8C0C223D82}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SkinInstaller", "SkinInstaller\SkinInstaller.vcxproj", "{6F5D4C4A-C8C3-41DA-BF44-6D42B76464DA}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SkinInstallerLauncher", "SkinInstaller\SkinInstallerLauncher.vcxproj", "{2D8F1DDB-6470-45A1-B95A-3E2960641314}" + ProjectSection(ProjectDependencies) = postProject + {6F5D4C4A-C8C3-41DA-BF44-6D42B76464DA} = {6F5D4C4A-C8C3-41DA-BF44-6D42B76464DA} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PluginAdvancedCPU", "Plugins\PluginAdvancedCPU\PluginAdvancedCPU.vcxproj", "{EE8EC522-8430-4B46-86A3-D943D77F9E4B}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PluginCoreTemp", "Plugins\PluginCoreTemp\PluginCoreTemp.vcxproj", "{F32FA418-8DF4-4E94-B92B-EBD502F5DC07}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PluginFileView", "Plugins\PluginFileView\PluginFileView.vcxproj", "{64FDEE97-6B7E-40E5-A489-ECA322825BC8}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PluginFolderInfo", "Plugins\PluginFolderInfo\PluginFolderInfo.vcxproj", "{A221819D-4263-42AA-B22A-C022924842A7}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PluginInputText", "Plugins\PluginInputText\PluginInputText.csproj", "{2CFEC79A-E39E-4FFD-ABC2-C4A69DD1E44D}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PluginiTunes", "Plugins\PluginiTunes\PluginiTunes.vcxproj", "{A2DD3CBE-B140-4892-A875-24107FA52518}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PluginMediaKey", "Plugins\PluginMediaKey\PluginMediaKey.vcxproj", "{EB48A04A-657E-41B8-B2F5-D47F8C30B2B4}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PluginNowPlaying", "Plugins\PluginNowPlaying\PluginNowPlaying.vcxproj", "{C7FECFCD-E6C6-4F95-BB9A-E1762B043969}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PluginPerfMon", "Plugins\PluginPerfMon\PluginPerfMon.vcxproj", "{5344B52B-BAC3-479C-B41D-D465B8BDA1AD}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PluginPing", "Plugins\PluginPing\PluginPing.vcxproj", "{C862B662-5CC6-4E79-B1B3-905E0B98D627}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PluginPower", "Plugins\PluginPower\PluginPower.vcxproj", "{C30E7EB6-9655-4AF4-98AE-D6E6B14631AF}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PluginProcess", "Plugins\PluginProcess\PluginProcess.vcxproj", "{05203741-CD80-4060-8218-EC5D1120FE3E}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PluginQuote", "Plugins\PluginQuote\PluginQuote.vcxproj", "{C029E0CF-F203-41D0-9608-A3EA2CF0ED1F}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PluginRecycleManager", "Plugins\PluginRecycleManager\PluginRecycleManager.vcxproj", "{4F8C4C09-431C-45C4-830B-32006E783C3A}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PluginResMon", "Plugins\PluginResMon\PluginResMon.vcxproj", "{17D3BD92-6F5D-438C-A89B-88F4CE06DB94}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PluginSpeedFan", "Plugins\PluginSpeedFan\PluginSpeedFan.vcxproj", "{D10AB316-0F7A-4551-BE4F-385E04CCF1E8}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PluginSysInfo", "Plugins\PluginSysInfo\PluginSysInfo.vcxproj", "{6EBCA4DA-8CC7-42FE-8F45-878ABE165078}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PluginVirtualDesktops", "Plugins\PluginVirtualDesktops\PluginVirtualDesktops.vcxproj", "{4640AB3A-5A8B-2DA0-980C-A70BCAB3A7F1}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PluginWebParser", "Plugins\PluginWebParser\PluginWebParser.vcxproj", "{8B820B9F-C154-417C-A090-42198F2AF496}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PluginWifiStatus", "Plugins\PluginWifiStatus\PluginWifiStatus.vcxproj", "{45A34285-56DD-4521-912B-3F884D36FA35}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PluginWin7Audio", "Plugins\PluginWin7Audio\PluginWin7Audio.vcxproj", "{6D032D6B-7656-4743-B454-3388E2921EB0}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PluginWindowMessage", "Plugins\PluginWindowMessage\PluginWindowMessage.vcxproj", "{B9184DBA-C6B7-44FE-8BBD-0852DB22D2E4}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RainmeterStudio", "RainmeterStudio\RainmeterStudio.csproj", "{438D0136-4A27-4E4D-A617-FFACE4554236}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RainmeterStudio.Tests", "RainmeterStudio.Tests\RainmeterStudio.Tests.csproj", "{845F4BD4-6822-4D92-9DDB-15FD18A47E5A}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Debug|Mixed Platforms = Debug|Mixed Platforms + Debug|Win32 = Debug|Win32 + Debug|x64 = Debug|x64 + Release|Any CPU = Release|Any CPU + Release|Mixed Platforms = Release|Mixed Platforms + Release|Win32 = Release|Win32 + Release|x64 = Release|x64 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {19312085-AA51-4BD6-BE92-4B6098CCA539}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {19312085-AA51-4BD6-BE92-4B6098CCA539}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {19312085-AA51-4BD6-BE92-4B6098CCA539}.Debug|Mixed Platforms.Build.0 = Debug|Win32 + {19312085-AA51-4BD6-BE92-4B6098CCA539}.Debug|Win32.ActiveCfg = Debug|Win32 + {19312085-AA51-4BD6-BE92-4B6098CCA539}.Debug|Win32.Build.0 = Debug|Win32 + {19312085-AA51-4BD6-BE92-4B6098CCA539}.Debug|x64.ActiveCfg = Debug|x64 + {19312085-AA51-4BD6-BE92-4B6098CCA539}.Debug|x64.Build.0 = Debug|x64 + {19312085-AA51-4BD6-BE92-4B6098CCA539}.Release|Any CPU.ActiveCfg = Release|Win32 + {19312085-AA51-4BD6-BE92-4B6098CCA539}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {19312085-AA51-4BD6-BE92-4B6098CCA539}.Release|Mixed Platforms.Build.0 = Release|Win32 + {19312085-AA51-4BD6-BE92-4B6098CCA539}.Release|Win32.ActiveCfg = Release|Win32 + {19312085-AA51-4BD6-BE92-4B6098CCA539}.Release|Win32.Build.0 = Release|Win32 + {19312085-AA51-4BD6-BE92-4B6098CCA539}.Release|x64.ActiveCfg = Release|x64 + {19312085-AA51-4BD6-BE92-4B6098CCA539}.Release|x64.Build.0 = Release|x64 + {2FCFBFD2-2720-4BDD-B620-4BDD3DBB8D3D}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {2FCFBFD2-2720-4BDD-B620-4BDD3DBB8D3D}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {2FCFBFD2-2720-4BDD-B620-4BDD3DBB8D3D}.Debug|Mixed Platforms.Build.0 = Debug|Win32 + {2FCFBFD2-2720-4BDD-B620-4BDD3DBB8D3D}.Debug|Win32.ActiveCfg = Debug|Win32 + {2FCFBFD2-2720-4BDD-B620-4BDD3DBB8D3D}.Debug|x64.ActiveCfg = Debug|Win32 + {2FCFBFD2-2720-4BDD-B620-4BDD3DBB8D3D}.Release|Any CPU.ActiveCfg = Release|Win32 + {2FCFBFD2-2720-4BDD-B620-4BDD3DBB8D3D}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {2FCFBFD2-2720-4BDD-B620-4BDD3DBB8D3D}.Release|Mixed Platforms.Build.0 = Release|Win32 + {2FCFBFD2-2720-4BDD-B620-4BDD3DBB8D3D}.Release|Win32.ActiveCfg = Release|Win32 + {2FCFBFD2-2720-4BDD-B620-4BDD3DBB8D3D}.Release|x64.ActiveCfg = Release|Win32 + {6BE6F228-B741-4DA9-9FBC-E9F2A7BD483A}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {6BE6F228-B741-4DA9-9FBC-E9F2A7BD483A}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {6BE6F228-B741-4DA9-9FBC-E9F2A7BD483A}.Debug|Mixed Platforms.Build.0 = Debug|Win32 + {6BE6F228-B741-4DA9-9FBC-E9F2A7BD483A}.Debug|Win32.ActiveCfg = Debug|Win32 + {6BE6F228-B741-4DA9-9FBC-E9F2A7BD483A}.Debug|Win32.Build.0 = Debug|Win32 + {6BE6F228-B741-4DA9-9FBC-E9F2A7BD483A}.Debug|x64.ActiveCfg = Debug|x64 + {6BE6F228-B741-4DA9-9FBC-E9F2A7BD483A}.Debug|x64.Build.0 = Debug|x64 + {6BE6F228-B741-4DA9-9FBC-E9F2A7BD483A}.Release|Any CPU.ActiveCfg = Release|Win32 + {6BE6F228-B741-4DA9-9FBC-E9F2A7BD483A}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {6BE6F228-B741-4DA9-9FBC-E9F2A7BD483A}.Release|Mixed Platforms.Build.0 = Release|Win32 + {6BE6F228-B741-4DA9-9FBC-E9F2A7BD483A}.Release|Win32.ActiveCfg = Release|Win32 + {6BE6F228-B741-4DA9-9FBC-E9F2A7BD483A}.Release|Win32.Build.0 = Release|Win32 + {6BE6F228-B741-4DA9-9FBC-E9F2A7BD483A}.Release|x64.ActiveCfg = Release|x64 + {6BE6F228-B741-4DA9-9FBC-E9F2A7BD483A}.Release|x64.Build.0 = Release|x64 + {BE9D2400-7F1C-49D6-8498-5CE495491AD6}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {BE9D2400-7F1C-49D6-8498-5CE495491AD6}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {BE9D2400-7F1C-49D6-8498-5CE495491AD6}.Debug|Mixed Platforms.Build.0 = Debug|Win32 + {BE9D2400-7F1C-49D6-8498-5CE495491AD6}.Debug|Win32.ActiveCfg = Debug|Win32 + {BE9D2400-7F1C-49D6-8498-5CE495491AD6}.Debug|Win32.Build.0 = Debug|Win32 + {BE9D2400-7F1C-49D6-8498-5CE495491AD6}.Debug|x64.ActiveCfg = Debug|x64 + {BE9D2400-7F1C-49D6-8498-5CE495491AD6}.Debug|x64.Build.0 = Debug|x64 + {BE9D2400-7F1C-49D6-8498-5CE495491AD6}.Release|Any CPU.ActiveCfg = Release|Win32 + {BE9D2400-7F1C-49D6-8498-5CE495491AD6}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {BE9D2400-7F1C-49D6-8498-5CE495491AD6}.Release|Mixed Platforms.Build.0 = Release|Win32 + {BE9D2400-7F1C-49D6-8498-5CE495491AD6}.Release|Win32.ActiveCfg = Release|Win32 + {BE9D2400-7F1C-49D6-8498-5CE495491AD6}.Release|Win32.Build.0 = Release|Win32 + {BE9D2400-7F1C-49D6-8498-5CE495491AD6}.Release|x64.ActiveCfg = Release|x64 + {BE9D2400-7F1C-49D6-8498-5CE495491AD6}.Release|x64.Build.0 = Release|x64 + {BC25C5DC-AEFB-49F9-8188-3C1B8C8929E6}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {BC25C5DC-AEFB-49F9-8188-3C1B8C8929E6}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {BC25C5DC-AEFB-49F9-8188-3C1B8C8929E6}.Debug|Mixed Platforms.Build.0 = Debug|Win32 + {BC25C5DC-AEFB-49F9-8188-3C1B8C8929E6}.Debug|Win32.ActiveCfg = Debug|Win32 + {BC25C5DC-AEFB-49F9-8188-3C1B8C8929E6}.Debug|Win32.Build.0 = Debug|Win32 + {BC25C5DC-AEFB-49F9-8188-3C1B8C8929E6}.Debug|x64.ActiveCfg = Debug|x64 + {BC25C5DC-AEFB-49F9-8188-3C1B8C8929E6}.Debug|x64.Build.0 = Debug|x64 + {BC25C5DC-AEFB-49F9-8188-3C1B8C8929E6}.Release|Any CPU.ActiveCfg = Release|Win32 + {BC25C5DC-AEFB-49F9-8188-3C1B8C8929E6}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {BC25C5DC-AEFB-49F9-8188-3C1B8C8929E6}.Release|Mixed Platforms.Build.0 = Release|Win32 + {BC25C5DC-AEFB-49F9-8188-3C1B8C8929E6}.Release|Win32.ActiveCfg = Release|Win32 + {BC25C5DC-AEFB-49F9-8188-3C1B8C8929E6}.Release|Win32.Build.0 = Release|Win32 + {BC25C5DC-AEFB-49F9-8188-3C1B8C8929E6}.Release|x64.ActiveCfg = Release|x64 + {BC25C5DC-AEFB-49F9-8188-3C1B8C8929E6}.Release|x64.Build.0 = Release|x64 + {6D61FBE9-6913-4885-A95D-1A8C0C223D82}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {6D61FBE9-6913-4885-A95D-1A8C0C223D82}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {6D61FBE9-6913-4885-A95D-1A8C0C223D82}.Debug|Mixed Platforms.Build.0 = Debug|Win32 + {6D61FBE9-6913-4885-A95D-1A8C0C223D82}.Debug|Win32.ActiveCfg = Debug|Win32 + {6D61FBE9-6913-4885-A95D-1A8C0C223D82}.Debug|Win32.Build.0 = Debug|Win32 + {6D61FBE9-6913-4885-A95D-1A8C0C223D82}.Debug|x64.ActiveCfg = Debug|x64 + {6D61FBE9-6913-4885-A95D-1A8C0C223D82}.Debug|x64.Build.0 = Debug|x64 + {6D61FBE9-6913-4885-A95D-1A8C0C223D82}.Release|Any CPU.ActiveCfg = Release|Win32 + {6D61FBE9-6913-4885-A95D-1A8C0C223D82}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {6D61FBE9-6913-4885-A95D-1A8C0C223D82}.Release|Mixed Platforms.Build.0 = Release|Win32 + {6D61FBE9-6913-4885-A95D-1A8C0C223D82}.Release|Win32.ActiveCfg = Release|Win32 + {6D61FBE9-6913-4885-A95D-1A8C0C223D82}.Release|Win32.Build.0 = Release|Win32 + {6D61FBE9-6913-4885-A95D-1A8C0C223D82}.Release|x64.ActiveCfg = Release|x64 + {6D61FBE9-6913-4885-A95D-1A8C0C223D82}.Release|x64.Build.0 = Release|x64 + {6F5D4C4A-C8C3-41DA-BF44-6D42B76464DA}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {6F5D4C4A-C8C3-41DA-BF44-6D42B76464DA}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {6F5D4C4A-C8C3-41DA-BF44-6D42B76464DA}.Debug|Mixed Platforms.Build.0 = Debug|Win32 + {6F5D4C4A-C8C3-41DA-BF44-6D42B76464DA}.Debug|Win32.ActiveCfg = Debug|Win32 + {6F5D4C4A-C8C3-41DA-BF44-6D42B76464DA}.Debug|Win32.Build.0 = Debug|Win32 + {6F5D4C4A-C8C3-41DA-BF44-6D42B76464DA}.Debug|x64.ActiveCfg = Debug|x64 + {6F5D4C4A-C8C3-41DA-BF44-6D42B76464DA}.Debug|x64.Build.0 = Debug|x64 + {6F5D4C4A-C8C3-41DA-BF44-6D42B76464DA}.Release|Any CPU.ActiveCfg = Release|Win32 + {6F5D4C4A-C8C3-41DA-BF44-6D42B76464DA}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {6F5D4C4A-C8C3-41DA-BF44-6D42B76464DA}.Release|Mixed Platforms.Build.0 = Release|Win32 + {6F5D4C4A-C8C3-41DA-BF44-6D42B76464DA}.Release|Win32.ActiveCfg = Release|Win32 + {6F5D4C4A-C8C3-41DA-BF44-6D42B76464DA}.Release|Win32.Build.0 = Release|Win32 + {6F5D4C4A-C8C3-41DA-BF44-6D42B76464DA}.Release|x64.ActiveCfg = Release|x64 + {6F5D4C4A-C8C3-41DA-BF44-6D42B76464DA}.Release|x64.Build.0 = Release|x64 + {2D8F1DDB-6470-45A1-B95A-3E2960641314}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {2D8F1DDB-6470-45A1-B95A-3E2960641314}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {2D8F1DDB-6470-45A1-B95A-3E2960641314}.Debug|Mixed Platforms.Build.0 = Debug|Win32 + {2D8F1DDB-6470-45A1-B95A-3E2960641314}.Debug|Win32.ActiveCfg = Debug|Win32 + {2D8F1DDB-6470-45A1-B95A-3E2960641314}.Debug|Win32.Build.0 = Debug|Win32 + {2D8F1DDB-6470-45A1-B95A-3E2960641314}.Debug|x64.ActiveCfg = Debug|x64 + {2D8F1DDB-6470-45A1-B95A-3E2960641314}.Debug|x64.Build.0 = Debug|x64 + {2D8F1DDB-6470-45A1-B95A-3E2960641314}.Release|Any CPU.ActiveCfg = Release|Win32 + {2D8F1DDB-6470-45A1-B95A-3E2960641314}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {2D8F1DDB-6470-45A1-B95A-3E2960641314}.Release|Mixed Platforms.Build.0 = Release|Win32 + {2D8F1DDB-6470-45A1-B95A-3E2960641314}.Release|Win32.ActiveCfg = Release|Win32 + {2D8F1DDB-6470-45A1-B95A-3E2960641314}.Release|Win32.Build.0 = Release|Win32 + {2D8F1DDB-6470-45A1-B95A-3E2960641314}.Release|x64.ActiveCfg = Release|x64 + {2D8F1DDB-6470-45A1-B95A-3E2960641314}.Release|x64.Build.0 = Release|x64 + {EE8EC522-8430-4B46-86A3-D943D77F9E4B}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {EE8EC522-8430-4B46-86A3-D943D77F9E4B}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {EE8EC522-8430-4B46-86A3-D943D77F9E4B}.Debug|Mixed Platforms.Build.0 = Debug|Win32 + {EE8EC522-8430-4B46-86A3-D943D77F9E4B}.Debug|Win32.ActiveCfg = Debug|Win32 + {EE8EC522-8430-4B46-86A3-D943D77F9E4B}.Debug|Win32.Build.0 = Debug|Win32 + {EE8EC522-8430-4B46-86A3-D943D77F9E4B}.Debug|x64.ActiveCfg = Debug|x64 + {EE8EC522-8430-4B46-86A3-D943D77F9E4B}.Debug|x64.Build.0 = Debug|x64 + {EE8EC522-8430-4B46-86A3-D943D77F9E4B}.Release|Any CPU.ActiveCfg = Release|Win32 + {EE8EC522-8430-4B46-86A3-D943D77F9E4B}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {EE8EC522-8430-4B46-86A3-D943D77F9E4B}.Release|Mixed Platforms.Build.0 = Release|Win32 + {EE8EC522-8430-4B46-86A3-D943D77F9E4B}.Release|Win32.ActiveCfg = Release|Win32 + {EE8EC522-8430-4B46-86A3-D943D77F9E4B}.Release|Win32.Build.0 = Release|Win32 + {EE8EC522-8430-4B46-86A3-D943D77F9E4B}.Release|x64.ActiveCfg = Release|x64 + {EE8EC522-8430-4B46-86A3-D943D77F9E4B}.Release|x64.Build.0 = Release|x64 + {F32FA418-8DF4-4E94-B92B-EBD502F5DC07}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {F32FA418-8DF4-4E94-B92B-EBD502F5DC07}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {F32FA418-8DF4-4E94-B92B-EBD502F5DC07}.Debug|Mixed Platforms.Build.0 = Debug|Win32 + {F32FA418-8DF4-4E94-B92B-EBD502F5DC07}.Debug|Win32.ActiveCfg = Debug|Win32 + {F32FA418-8DF4-4E94-B92B-EBD502F5DC07}.Debug|Win32.Build.0 = Debug|Win32 + {F32FA418-8DF4-4E94-B92B-EBD502F5DC07}.Debug|x64.ActiveCfg = Debug|x64 + {F32FA418-8DF4-4E94-B92B-EBD502F5DC07}.Debug|x64.Build.0 = Debug|x64 + {F32FA418-8DF4-4E94-B92B-EBD502F5DC07}.Release|Any CPU.ActiveCfg = Release|Win32 + {F32FA418-8DF4-4E94-B92B-EBD502F5DC07}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {F32FA418-8DF4-4E94-B92B-EBD502F5DC07}.Release|Mixed Platforms.Build.0 = Release|Win32 + {F32FA418-8DF4-4E94-B92B-EBD502F5DC07}.Release|Win32.ActiveCfg = Release|Win32 + {F32FA418-8DF4-4E94-B92B-EBD502F5DC07}.Release|Win32.Build.0 = Release|Win32 + {F32FA418-8DF4-4E94-B92B-EBD502F5DC07}.Release|x64.ActiveCfg = Release|x64 + {F32FA418-8DF4-4E94-B92B-EBD502F5DC07}.Release|x64.Build.0 = Release|x64 + {64FDEE97-6B7E-40E5-A489-ECA322825BC8}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {64FDEE97-6B7E-40E5-A489-ECA322825BC8}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {64FDEE97-6B7E-40E5-A489-ECA322825BC8}.Debug|Mixed Platforms.Build.0 = Debug|Win32 + {64FDEE97-6B7E-40E5-A489-ECA322825BC8}.Debug|Win32.ActiveCfg = Debug|Win32 + {64FDEE97-6B7E-40E5-A489-ECA322825BC8}.Debug|Win32.Build.0 = Debug|Win32 + {64FDEE97-6B7E-40E5-A489-ECA322825BC8}.Debug|x64.ActiveCfg = Debug|x64 + {64FDEE97-6B7E-40E5-A489-ECA322825BC8}.Debug|x64.Build.0 = Debug|x64 + {64FDEE97-6B7E-40E5-A489-ECA322825BC8}.Release|Any CPU.ActiveCfg = Release|Win32 + {64FDEE97-6B7E-40E5-A489-ECA322825BC8}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {64FDEE97-6B7E-40E5-A489-ECA322825BC8}.Release|Mixed Platforms.Build.0 = Release|Win32 + {64FDEE97-6B7E-40E5-A489-ECA322825BC8}.Release|Win32.ActiveCfg = Release|Win32 + {64FDEE97-6B7E-40E5-A489-ECA322825BC8}.Release|Win32.Build.0 = Release|Win32 + {64FDEE97-6B7E-40E5-A489-ECA322825BC8}.Release|x64.ActiveCfg = Release|x64 + {64FDEE97-6B7E-40E5-A489-ECA322825BC8}.Release|x64.Build.0 = Release|x64 + {A221819D-4263-42AA-B22A-C022924842A7}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {A221819D-4263-42AA-B22A-C022924842A7}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {A221819D-4263-42AA-B22A-C022924842A7}.Debug|Mixed Platforms.Build.0 = Debug|Win32 + {A221819D-4263-42AA-B22A-C022924842A7}.Debug|Win32.ActiveCfg = Debug|Win32 + {A221819D-4263-42AA-B22A-C022924842A7}.Debug|Win32.Build.0 = Debug|Win32 + {A221819D-4263-42AA-B22A-C022924842A7}.Debug|x64.ActiveCfg = Debug|x64 + {A221819D-4263-42AA-B22A-C022924842A7}.Debug|x64.Build.0 = Debug|x64 + {A221819D-4263-42AA-B22A-C022924842A7}.Release|Any CPU.ActiveCfg = Release|Win32 + {A221819D-4263-42AA-B22A-C022924842A7}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {A221819D-4263-42AA-B22A-C022924842A7}.Release|Mixed Platforms.Build.0 = Release|Win32 + {A221819D-4263-42AA-B22A-C022924842A7}.Release|Win32.ActiveCfg = Release|Win32 + {A221819D-4263-42AA-B22A-C022924842A7}.Release|Win32.Build.0 = Release|Win32 + {A221819D-4263-42AA-B22A-C022924842A7}.Release|x64.ActiveCfg = Release|x64 + {A221819D-4263-42AA-B22A-C022924842A7}.Release|x64.Build.0 = Release|x64 + {2CFEC79A-E39E-4FFD-ABC2-C4A69DD1E44D}.Debug|Any CPU.ActiveCfg = Debug|x86 + {2CFEC79A-E39E-4FFD-ABC2-C4A69DD1E44D}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 + {2CFEC79A-E39E-4FFD-ABC2-C4A69DD1E44D}.Debug|Mixed Platforms.Build.0 = Debug|x86 + {2CFEC79A-E39E-4FFD-ABC2-C4A69DD1E44D}.Debug|Win32.ActiveCfg = Debug|x86 + {2CFEC79A-E39E-4FFD-ABC2-C4A69DD1E44D}.Debug|Win32.Build.0 = Debug|x86 + {2CFEC79A-E39E-4FFD-ABC2-C4A69DD1E44D}.Debug|x64.ActiveCfg = Debug|x64 + {2CFEC79A-E39E-4FFD-ABC2-C4A69DD1E44D}.Debug|x64.Build.0 = Debug|x64 + {2CFEC79A-E39E-4FFD-ABC2-C4A69DD1E44D}.Release|Any CPU.ActiveCfg = Release|x86 + {2CFEC79A-E39E-4FFD-ABC2-C4A69DD1E44D}.Release|Mixed Platforms.ActiveCfg = Release|x86 + {2CFEC79A-E39E-4FFD-ABC2-C4A69DD1E44D}.Release|Mixed Platforms.Build.0 = Release|x86 + {2CFEC79A-E39E-4FFD-ABC2-C4A69DD1E44D}.Release|Win32.ActiveCfg = Release|x86 + {2CFEC79A-E39E-4FFD-ABC2-C4A69DD1E44D}.Release|Win32.Build.0 = Release|x86 + {2CFEC79A-E39E-4FFD-ABC2-C4A69DD1E44D}.Release|x64.ActiveCfg = Release|x64 + {2CFEC79A-E39E-4FFD-ABC2-C4A69DD1E44D}.Release|x64.Build.0 = Release|x64 + {A2DD3CBE-B140-4892-A875-24107FA52518}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {A2DD3CBE-B140-4892-A875-24107FA52518}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {A2DD3CBE-B140-4892-A875-24107FA52518}.Debug|Mixed Platforms.Build.0 = Debug|Win32 + {A2DD3CBE-B140-4892-A875-24107FA52518}.Debug|Win32.ActiveCfg = Debug|Win32 + {A2DD3CBE-B140-4892-A875-24107FA52518}.Debug|Win32.Build.0 = Debug|Win32 + {A2DD3CBE-B140-4892-A875-24107FA52518}.Debug|x64.ActiveCfg = Debug|x64 + {A2DD3CBE-B140-4892-A875-24107FA52518}.Debug|x64.Build.0 = Debug|x64 + {A2DD3CBE-B140-4892-A875-24107FA52518}.Release|Any CPU.ActiveCfg = Release|Win32 + {A2DD3CBE-B140-4892-A875-24107FA52518}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {A2DD3CBE-B140-4892-A875-24107FA52518}.Release|Mixed Platforms.Build.0 = Release|Win32 + {A2DD3CBE-B140-4892-A875-24107FA52518}.Release|Win32.ActiveCfg = Release|Win32 + {A2DD3CBE-B140-4892-A875-24107FA52518}.Release|Win32.Build.0 = Release|Win32 + {A2DD3CBE-B140-4892-A875-24107FA52518}.Release|x64.ActiveCfg = Release|x64 + {A2DD3CBE-B140-4892-A875-24107FA52518}.Release|x64.Build.0 = Release|x64 + {EB48A04A-657E-41B8-B2F5-D47F8C30B2B4}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {EB48A04A-657E-41B8-B2F5-D47F8C30B2B4}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {EB48A04A-657E-41B8-B2F5-D47F8C30B2B4}.Debug|Mixed Platforms.Build.0 = Debug|Win32 + {EB48A04A-657E-41B8-B2F5-D47F8C30B2B4}.Debug|Win32.ActiveCfg = Debug|Win32 + {EB48A04A-657E-41B8-B2F5-D47F8C30B2B4}.Debug|Win32.Build.0 = Debug|Win32 + {EB48A04A-657E-41B8-B2F5-D47F8C30B2B4}.Debug|x64.ActiveCfg = Debug|x64 + {EB48A04A-657E-41B8-B2F5-D47F8C30B2B4}.Debug|x64.Build.0 = Debug|x64 + {EB48A04A-657E-41B8-B2F5-D47F8C30B2B4}.Release|Any CPU.ActiveCfg = Release|Win32 + {EB48A04A-657E-41B8-B2F5-D47F8C30B2B4}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {EB48A04A-657E-41B8-B2F5-D47F8C30B2B4}.Release|Mixed Platforms.Build.0 = Release|Win32 + {EB48A04A-657E-41B8-B2F5-D47F8C30B2B4}.Release|Win32.ActiveCfg = Release|Win32 + {EB48A04A-657E-41B8-B2F5-D47F8C30B2B4}.Release|Win32.Build.0 = Release|Win32 + {EB48A04A-657E-41B8-B2F5-D47F8C30B2B4}.Release|x64.ActiveCfg = Release|x64 + {EB48A04A-657E-41B8-B2F5-D47F8C30B2B4}.Release|x64.Build.0 = Release|x64 + {C7FECFCD-E6C6-4F95-BB9A-E1762B043969}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {C7FECFCD-E6C6-4F95-BB9A-E1762B043969}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {C7FECFCD-E6C6-4F95-BB9A-E1762B043969}.Debug|Mixed Platforms.Build.0 = Debug|Win32 + {C7FECFCD-E6C6-4F95-BB9A-E1762B043969}.Debug|Win32.ActiveCfg = Debug|Win32 + {C7FECFCD-E6C6-4F95-BB9A-E1762B043969}.Debug|Win32.Build.0 = Debug|Win32 + {C7FECFCD-E6C6-4F95-BB9A-E1762B043969}.Debug|x64.ActiveCfg = Debug|x64 + {C7FECFCD-E6C6-4F95-BB9A-E1762B043969}.Debug|x64.Build.0 = Debug|x64 + {C7FECFCD-E6C6-4F95-BB9A-E1762B043969}.Release|Any CPU.ActiveCfg = Release|Win32 + {C7FECFCD-E6C6-4F95-BB9A-E1762B043969}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {C7FECFCD-E6C6-4F95-BB9A-E1762B043969}.Release|Mixed Platforms.Build.0 = Release|Win32 + {C7FECFCD-E6C6-4F95-BB9A-E1762B043969}.Release|Win32.ActiveCfg = Release|Win32 + {C7FECFCD-E6C6-4F95-BB9A-E1762B043969}.Release|Win32.Build.0 = Release|Win32 + {C7FECFCD-E6C6-4F95-BB9A-E1762B043969}.Release|x64.ActiveCfg = Release|x64 + {C7FECFCD-E6C6-4F95-BB9A-E1762B043969}.Release|x64.Build.0 = Release|x64 + {5344B52B-BAC3-479C-B41D-D465B8BDA1AD}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {5344B52B-BAC3-479C-B41D-D465B8BDA1AD}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {5344B52B-BAC3-479C-B41D-D465B8BDA1AD}.Debug|Mixed Platforms.Build.0 = Debug|Win32 + {5344B52B-BAC3-479C-B41D-D465B8BDA1AD}.Debug|Win32.ActiveCfg = Debug|Win32 + {5344B52B-BAC3-479C-B41D-D465B8BDA1AD}.Debug|Win32.Build.0 = Debug|Win32 + {5344B52B-BAC3-479C-B41D-D465B8BDA1AD}.Debug|x64.ActiveCfg = Debug|x64 + {5344B52B-BAC3-479C-B41D-D465B8BDA1AD}.Debug|x64.Build.0 = Debug|x64 + {5344B52B-BAC3-479C-B41D-D465B8BDA1AD}.Release|Any CPU.ActiveCfg = Release|Win32 + {5344B52B-BAC3-479C-B41D-D465B8BDA1AD}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {5344B52B-BAC3-479C-B41D-D465B8BDA1AD}.Release|Mixed Platforms.Build.0 = Release|Win32 + {5344B52B-BAC3-479C-B41D-D465B8BDA1AD}.Release|Win32.ActiveCfg = Release|Win32 + {5344B52B-BAC3-479C-B41D-D465B8BDA1AD}.Release|Win32.Build.0 = Release|Win32 + {5344B52B-BAC3-479C-B41D-D465B8BDA1AD}.Release|x64.ActiveCfg = Release|x64 + {5344B52B-BAC3-479C-B41D-D465B8BDA1AD}.Release|x64.Build.0 = Release|x64 + {C862B662-5CC6-4E79-B1B3-905E0B98D627}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {C862B662-5CC6-4E79-B1B3-905E0B98D627}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {C862B662-5CC6-4E79-B1B3-905E0B98D627}.Debug|Mixed Platforms.Build.0 = Debug|Win32 + {C862B662-5CC6-4E79-B1B3-905E0B98D627}.Debug|Win32.ActiveCfg = Debug|Win32 + {C862B662-5CC6-4E79-B1B3-905E0B98D627}.Debug|Win32.Build.0 = Debug|Win32 + {C862B662-5CC6-4E79-B1B3-905E0B98D627}.Debug|x64.ActiveCfg = Debug|x64 + {C862B662-5CC6-4E79-B1B3-905E0B98D627}.Debug|x64.Build.0 = Debug|x64 + {C862B662-5CC6-4E79-B1B3-905E0B98D627}.Release|Any CPU.ActiveCfg = Release|Win32 + {C862B662-5CC6-4E79-B1B3-905E0B98D627}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {C862B662-5CC6-4E79-B1B3-905E0B98D627}.Release|Mixed Platforms.Build.0 = Release|Win32 + {C862B662-5CC6-4E79-B1B3-905E0B98D627}.Release|Win32.ActiveCfg = Release|Win32 + {C862B662-5CC6-4E79-B1B3-905E0B98D627}.Release|Win32.Build.0 = Release|Win32 + {C862B662-5CC6-4E79-B1B3-905E0B98D627}.Release|x64.ActiveCfg = Release|x64 + {C862B662-5CC6-4E79-B1B3-905E0B98D627}.Release|x64.Build.0 = Release|x64 + {C30E7EB6-9655-4AF4-98AE-D6E6B14631AF}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {C30E7EB6-9655-4AF4-98AE-D6E6B14631AF}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {C30E7EB6-9655-4AF4-98AE-D6E6B14631AF}.Debug|Mixed Platforms.Build.0 = Debug|Win32 + {C30E7EB6-9655-4AF4-98AE-D6E6B14631AF}.Debug|Win32.ActiveCfg = Debug|Win32 + {C30E7EB6-9655-4AF4-98AE-D6E6B14631AF}.Debug|Win32.Build.0 = Debug|Win32 + {C30E7EB6-9655-4AF4-98AE-D6E6B14631AF}.Debug|x64.ActiveCfg = Debug|x64 + {C30E7EB6-9655-4AF4-98AE-D6E6B14631AF}.Debug|x64.Build.0 = Debug|x64 + {C30E7EB6-9655-4AF4-98AE-D6E6B14631AF}.Release|Any CPU.ActiveCfg = Release|Win32 + {C30E7EB6-9655-4AF4-98AE-D6E6B14631AF}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {C30E7EB6-9655-4AF4-98AE-D6E6B14631AF}.Release|Mixed Platforms.Build.0 = Release|Win32 + {C30E7EB6-9655-4AF4-98AE-D6E6B14631AF}.Release|Win32.ActiveCfg = Release|Win32 + {C30E7EB6-9655-4AF4-98AE-D6E6B14631AF}.Release|Win32.Build.0 = Release|Win32 + {C30E7EB6-9655-4AF4-98AE-D6E6B14631AF}.Release|x64.ActiveCfg = Release|x64 + {C30E7EB6-9655-4AF4-98AE-D6E6B14631AF}.Release|x64.Build.0 = Release|x64 + {05203741-CD80-4060-8218-EC5D1120FE3E}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {05203741-CD80-4060-8218-EC5D1120FE3E}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {05203741-CD80-4060-8218-EC5D1120FE3E}.Debug|Mixed Platforms.Build.0 = Debug|Win32 + {05203741-CD80-4060-8218-EC5D1120FE3E}.Debug|Win32.ActiveCfg = Debug|Win32 + {05203741-CD80-4060-8218-EC5D1120FE3E}.Debug|Win32.Build.0 = Debug|Win32 + {05203741-CD80-4060-8218-EC5D1120FE3E}.Debug|x64.ActiveCfg = Debug|x64 + {05203741-CD80-4060-8218-EC5D1120FE3E}.Debug|x64.Build.0 = Debug|x64 + {05203741-CD80-4060-8218-EC5D1120FE3E}.Release|Any CPU.ActiveCfg = Release|Win32 + {05203741-CD80-4060-8218-EC5D1120FE3E}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {05203741-CD80-4060-8218-EC5D1120FE3E}.Release|Mixed Platforms.Build.0 = Release|Win32 + {05203741-CD80-4060-8218-EC5D1120FE3E}.Release|Win32.ActiveCfg = Release|Win32 + {05203741-CD80-4060-8218-EC5D1120FE3E}.Release|Win32.Build.0 = Release|Win32 + {05203741-CD80-4060-8218-EC5D1120FE3E}.Release|x64.ActiveCfg = Release|x64 + {05203741-CD80-4060-8218-EC5D1120FE3E}.Release|x64.Build.0 = Release|x64 + {C029E0CF-F203-41D0-9608-A3EA2CF0ED1F}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {C029E0CF-F203-41D0-9608-A3EA2CF0ED1F}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {C029E0CF-F203-41D0-9608-A3EA2CF0ED1F}.Debug|Mixed Platforms.Build.0 = Debug|Win32 + {C029E0CF-F203-41D0-9608-A3EA2CF0ED1F}.Debug|Win32.ActiveCfg = Debug|Win32 + {C029E0CF-F203-41D0-9608-A3EA2CF0ED1F}.Debug|Win32.Build.0 = Debug|Win32 + {C029E0CF-F203-41D0-9608-A3EA2CF0ED1F}.Debug|x64.ActiveCfg = Debug|x64 + {C029E0CF-F203-41D0-9608-A3EA2CF0ED1F}.Debug|x64.Build.0 = Debug|x64 + {C029E0CF-F203-41D0-9608-A3EA2CF0ED1F}.Release|Any CPU.ActiveCfg = Release|Win32 + {C029E0CF-F203-41D0-9608-A3EA2CF0ED1F}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {C029E0CF-F203-41D0-9608-A3EA2CF0ED1F}.Release|Mixed Platforms.Build.0 = Release|Win32 + {C029E0CF-F203-41D0-9608-A3EA2CF0ED1F}.Release|Win32.ActiveCfg = Release|Win32 + {C029E0CF-F203-41D0-9608-A3EA2CF0ED1F}.Release|Win32.Build.0 = Release|Win32 + {C029E0CF-F203-41D0-9608-A3EA2CF0ED1F}.Release|x64.ActiveCfg = Release|x64 + {C029E0CF-F203-41D0-9608-A3EA2CF0ED1F}.Release|x64.Build.0 = Release|x64 + {4F8C4C09-431C-45C4-830B-32006E783C3A}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {4F8C4C09-431C-45C4-830B-32006E783C3A}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {4F8C4C09-431C-45C4-830B-32006E783C3A}.Debug|Mixed Platforms.Build.0 = Debug|Win32 + {4F8C4C09-431C-45C4-830B-32006E783C3A}.Debug|Win32.ActiveCfg = Debug|Win32 + {4F8C4C09-431C-45C4-830B-32006E783C3A}.Debug|Win32.Build.0 = Debug|Win32 + {4F8C4C09-431C-45C4-830B-32006E783C3A}.Debug|x64.ActiveCfg = Debug|x64 + {4F8C4C09-431C-45C4-830B-32006E783C3A}.Debug|x64.Build.0 = Debug|x64 + {4F8C4C09-431C-45C4-830B-32006E783C3A}.Release|Any CPU.ActiveCfg = Release|Win32 + {4F8C4C09-431C-45C4-830B-32006E783C3A}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {4F8C4C09-431C-45C4-830B-32006E783C3A}.Release|Mixed Platforms.Build.0 = Release|Win32 + {4F8C4C09-431C-45C4-830B-32006E783C3A}.Release|Win32.ActiveCfg = Release|Win32 + {4F8C4C09-431C-45C4-830B-32006E783C3A}.Release|Win32.Build.0 = Release|Win32 + {4F8C4C09-431C-45C4-830B-32006E783C3A}.Release|x64.ActiveCfg = Release|x64 + {4F8C4C09-431C-45C4-830B-32006E783C3A}.Release|x64.Build.0 = Release|x64 + {17D3BD92-6F5D-438C-A89B-88F4CE06DB94}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {17D3BD92-6F5D-438C-A89B-88F4CE06DB94}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {17D3BD92-6F5D-438C-A89B-88F4CE06DB94}.Debug|Mixed Platforms.Build.0 = Debug|Win32 + {17D3BD92-6F5D-438C-A89B-88F4CE06DB94}.Debug|Win32.ActiveCfg = Debug|Win32 + {17D3BD92-6F5D-438C-A89B-88F4CE06DB94}.Debug|Win32.Build.0 = Debug|Win32 + {17D3BD92-6F5D-438C-A89B-88F4CE06DB94}.Debug|x64.ActiveCfg = Debug|x64 + {17D3BD92-6F5D-438C-A89B-88F4CE06DB94}.Debug|x64.Build.0 = Debug|x64 + {17D3BD92-6F5D-438C-A89B-88F4CE06DB94}.Release|Any CPU.ActiveCfg = Release|Win32 + {17D3BD92-6F5D-438C-A89B-88F4CE06DB94}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {17D3BD92-6F5D-438C-A89B-88F4CE06DB94}.Release|Mixed Platforms.Build.0 = Release|Win32 + {17D3BD92-6F5D-438C-A89B-88F4CE06DB94}.Release|Win32.ActiveCfg = Release|Win32 + {17D3BD92-6F5D-438C-A89B-88F4CE06DB94}.Release|Win32.Build.0 = Release|Win32 + {17D3BD92-6F5D-438C-A89B-88F4CE06DB94}.Release|x64.ActiveCfg = Release|x64 + {17D3BD92-6F5D-438C-A89B-88F4CE06DB94}.Release|x64.Build.0 = Release|x64 + {D10AB316-0F7A-4551-BE4F-385E04CCF1E8}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {D10AB316-0F7A-4551-BE4F-385E04CCF1E8}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {D10AB316-0F7A-4551-BE4F-385E04CCF1E8}.Debug|Mixed Platforms.Build.0 = Debug|Win32 + {D10AB316-0F7A-4551-BE4F-385E04CCF1E8}.Debug|Win32.ActiveCfg = Debug|Win32 + {D10AB316-0F7A-4551-BE4F-385E04CCF1E8}.Debug|Win32.Build.0 = Debug|Win32 + {D10AB316-0F7A-4551-BE4F-385E04CCF1E8}.Debug|x64.ActiveCfg = Debug|x64 + {D10AB316-0F7A-4551-BE4F-385E04CCF1E8}.Debug|x64.Build.0 = Debug|x64 + {D10AB316-0F7A-4551-BE4F-385E04CCF1E8}.Release|Any CPU.ActiveCfg = Release|Win32 + {D10AB316-0F7A-4551-BE4F-385E04CCF1E8}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {D10AB316-0F7A-4551-BE4F-385E04CCF1E8}.Release|Mixed Platforms.Build.0 = Release|Win32 + {D10AB316-0F7A-4551-BE4F-385E04CCF1E8}.Release|Win32.ActiveCfg = Release|Win32 + {D10AB316-0F7A-4551-BE4F-385E04CCF1E8}.Release|Win32.Build.0 = Release|Win32 + {D10AB316-0F7A-4551-BE4F-385E04CCF1E8}.Release|x64.ActiveCfg = Release|x64 + {D10AB316-0F7A-4551-BE4F-385E04CCF1E8}.Release|x64.Build.0 = Release|x64 + {6EBCA4DA-8CC7-42FE-8F45-878ABE165078}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {6EBCA4DA-8CC7-42FE-8F45-878ABE165078}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {6EBCA4DA-8CC7-42FE-8F45-878ABE165078}.Debug|Mixed Platforms.Build.0 = Debug|Win32 + {6EBCA4DA-8CC7-42FE-8F45-878ABE165078}.Debug|Win32.ActiveCfg = Debug|Win32 + {6EBCA4DA-8CC7-42FE-8F45-878ABE165078}.Debug|Win32.Build.0 = Debug|Win32 + {6EBCA4DA-8CC7-42FE-8F45-878ABE165078}.Debug|x64.ActiveCfg = Debug|x64 + {6EBCA4DA-8CC7-42FE-8F45-878ABE165078}.Debug|x64.Build.0 = Debug|x64 + {6EBCA4DA-8CC7-42FE-8F45-878ABE165078}.Release|Any CPU.ActiveCfg = Release|Win32 + {6EBCA4DA-8CC7-42FE-8F45-878ABE165078}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {6EBCA4DA-8CC7-42FE-8F45-878ABE165078}.Release|Mixed Platforms.Build.0 = Release|Win32 + {6EBCA4DA-8CC7-42FE-8F45-878ABE165078}.Release|Win32.ActiveCfg = Release|Win32 + {6EBCA4DA-8CC7-42FE-8F45-878ABE165078}.Release|Win32.Build.0 = Release|Win32 + {6EBCA4DA-8CC7-42FE-8F45-878ABE165078}.Release|x64.ActiveCfg = Release|x64 + {6EBCA4DA-8CC7-42FE-8F45-878ABE165078}.Release|x64.Build.0 = Release|x64 + {4640AB3A-5A8B-2DA0-980C-A70BCAB3A7F1}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {4640AB3A-5A8B-2DA0-980C-A70BCAB3A7F1}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {4640AB3A-5A8B-2DA0-980C-A70BCAB3A7F1}.Debug|Mixed Platforms.Build.0 = Debug|Win32 + {4640AB3A-5A8B-2DA0-980C-A70BCAB3A7F1}.Debug|Win32.ActiveCfg = Debug|Win32 + {4640AB3A-5A8B-2DA0-980C-A70BCAB3A7F1}.Debug|Win32.Build.0 = Debug|Win32 + {4640AB3A-5A8B-2DA0-980C-A70BCAB3A7F1}.Debug|x64.ActiveCfg = Debug|x64 + {4640AB3A-5A8B-2DA0-980C-A70BCAB3A7F1}.Debug|x64.Build.0 = Debug|x64 + {4640AB3A-5A8B-2DA0-980C-A70BCAB3A7F1}.Release|Any CPU.ActiveCfg = Release|Win32 + {4640AB3A-5A8B-2DA0-980C-A70BCAB3A7F1}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {4640AB3A-5A8B-2DA0-980C-A70BCAB3A7F1}.Release|Mixed Platforms.Build.0 = Release|Win32 + {4640AB3A-5A8B-2DA0-980C-A70BCAB3A7F1}.Release|Win32.ActiveCfg = Release|Win32 + {4640AB3A-5A8B-2DA0-980C-A70BCAB3A7F1}.Release|Win32.Build.0 = Release|Win32 + {4640AB3A-5A8B-2DA0-980C-A70BCAB3A7F1}.Release|x64.ActiveCfg = Release|x64 + {4640AB3A-5A8B-2DA0-980C-A70BCAB3A7F1}.Release|x64.Build.0 = Release|x64 + {8B820B9F-C154-417C-A090-42198F2AF496}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {8B820B9F-C154-417C-A090-42198F2AF496}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {8B820B9F-C154-417C-A090-42198F2AF496}.Debug|Mixed Platforms.Build.0 = Debug|Win32 + {8B820B9F-C154-417C-A090-42198F2AF496}.Debug|Win32.ActiveCfg = Debug|Win32 + {8B820B9F-C154-417C-A090-42198F2AF496}.Debug|Win32.Build.0 = Debug|Win32 + {8B820B9F-C154-417C-A090-42198F2AF496}.Debug|x64.ActiveCfg = Debug|x64 + {8B820B9F-C154-417C-A090-42198F2AF496}.Debug|x64.Build.0 = Debug|x64 + {8B820B9F-C154-417C-A090-42198F2AF496}.Release|Any CPU.ActiveCfg = Release|Win32 + {8B820B9F-C154-417C-A090-42198F2AF496}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {8B820B9F-C154-417C-A090-42198F2AF496}.Release|Mixed Platforms.Build.0 = Release|Win32 + {8B820B9F-C154-417C-A090-42198F2AF496}.Release|Win32.ActiveCfg = Release|Win32 + {8B820B9F-C154-417C-A090-42198F2AF496}.Release|Win32.Build.0 = Release|Win32 + {8B820B9F-C154-417C-A090-42198F2AF496}.Release|x64.ActiveCfg = Release|x64 + {8B820B9F-C154-417C-A090-42198F2AF496}.Release|x64.Build.0 = Release|x64 + {45A34285-56DD-4521-912B-3F884D36FA35}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {45A34285-56DD-4521-912B-3F884D36FA35}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {45A34285-56DD-4521-912B-3F884D36FA35}.Debug|Mixed Platforms.Build.0 = Debug|Win32 + {45A34285-56DD-4521-912B-3F884D36FA35}.Debug|Win32.ActiveCfg = Debug|Win32 + {45A34285-56DD-4521-912B-3F884D36FA35}.Debug|Win32.Build.0 = Debug|Win32 + {45A34285-56DD-4521-912B-3F884D36FA35}.Debug|x64.ActiveCfg = Debug|x64 + {45A34285-56DD-4521-912B-3F884D36FA35}.Debug|x64.Build.0 = Debug|x64 + {45A34285-56DD-4521-912B-3F884D36FA35}.Release|Any CPU.ActiveCfg = Release|Win32 + {45A34285-56DD-4521-912B-3F884D36FA35}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {45A34285-56DD-4521-912B-3F884D36FA35}.Release|Mixed Platforms.Build.0 = Release|Win32 + {45A34285-56DD-4521-912B-3F884D36FA35}.Release|Win32.ActiveCfg = Release|Win32 + {45A34285-56DD-4521-912B-3F884D36FA35}.Release|Win32.Build.0 = Release|Win32 + {45A34285-56DD-4521-912B-3F884D36FA35}.Release|x64.ActiveCfg = Release|x64 + {45A34285-56DD-4521-912B-3F884D36FA35}.Release|x64.Build.0 = Release|x64 + {6D032D6B-7656-4743-B454-3388E2921EB0}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {6D032D6B-7656-4743-B454-3388E2921EB0}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {6D032D6B-7656-4743-B454-3388E2921EB0}.Debug|Mixed Platforms.Build.0 = Debug|Win32 + {6D032D6B-7656-4743-B454-3388E2921EB0}.Debug|Win32.ActiveCfg = Debug|Win32 + {6D032D6B-7656-4743-B454-3388E2921EB0}.Debug|Win32.Build.0 = Debug|Win32 + {6D032D6B-7656-4743-B454-3388E2921EB0}.Debug|x64.ActiveCfg = Debug|x64 + {6D032D6B-7656-4743-B454-3388E2921EB0}.Debug|x64.Build.0 = Debug|x64 + {6D032D6B-7656-4743-B454-3388E2921EB0}.Release|Any CPU.ActiveCfg = Release|Win32 + {6D032D6B-7656-4743-B454-3388E2921EB0}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {6D032D6B-7656-4743-B454-3388E2921EB0}.Release|Mixed Platforms.Build.0 = Release|Win32 + {6D032D6B-7656-4743-B454-3388E2921EB0}.Release|Win32.ActiveCfg = Release|Win32 + {6D032D6B-7656-4743-B454-3388E2921EB0}.Release|Win32.Build.0 = Release|Win32 + {6D032D6B-7656-4743-B454-3388E2921EB0}.Release|x64.ActiveCfg = Release|x64 + {6D032D6B-7656-4743-B454-3388E2921EB0}.Release|x64.Build.0 = Release|x64 + {B9184DBA-C6B7-44FE-8BBD-0852DB22D2E4}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {B9184DBA-C6B7-44FE-8BBD-0852DB22D2E4}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {B9184DBA-C6B7-44FE-8BBD-0852DB22D2E4}.Debug|Mixed Platforms.Build.0 = Debug|Win32 + {B9184DBA-C6B7-44FE-8BBD-0852DB22D2E4}.Debug|Win32.ActiveCfg = Debug|Win32 + {B9184DBA-C6B7-44FE-8BBD-0852DB22D2E4}.Debug|Win32.Build.0 = Debug|Win32 + {B9184DBA-C6B7-44FE-8BBD-0852DB22D2E4}.Debug|x64.ActiveCfg = Debug|x64 + {B9184DBA-C6B7-44FE-8BBD-0852DB22D2E4}.Debug|x64.Build.0 = Debug|x64 + {B9184DBA-C6B7-44FE-8BBD-0852DB22D2E4}.Release|Any CPU.ActiveCfg = Release|Win32 + {B9184DBA-C6B7-44FE-8BBD-0852DB22D2E4}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {B9184DBA-C6B7-44FE-8BBD-0852DB22D2E4}.Release|Mixed Platforms.Build.0 = Release|Win32 + {B9184DBA-C6B7-44FE-8BBD-0852DB22D2E4}.Release|Win32.ActiveCfg = Release|Win32 + {B9184DBA-C6B7-44FE-8BBD-0852DB22D2E4}.Release|Win32.Build.0 = Release|Win32 + {B9184DBA-C6B7-44FE-8BBD-0852DB22D2E4}.Release|x64.ActiveCfg = Release|x64 + {B9184DBA-C6B7-44FE-8BBD-0852DB22D2E4}.Release|x64.Build.0 = Release|x64 + {438D0136-4A27-4E4D-A617-FFACE4554236}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {438D0136-4A27-4E4D-A617-FFACE4554236}.Debug|Any CPU.Build.0 = Debug|Any CPU + {438D0136-4A27-4E4D-A617-FFACE4554236}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {438D0136-4A27-4E4D-A617-FFACE4554236}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {438D0136-4A27-4E4D-A617-FFACE4554236}.Debug|Win32.ActiveCfg = Debug|Any CPU + {438D0136-4A27-4E4D-A617-FFACE4554236}.Debug|x64.ActiveCfg = Debug|Any CPU + {438D0136-4A27-4E4D-A617-FFACE4554236}.Release|Any CPU.ActiveCfg = Release|Any CPU + {438D0136-4A27-4E4D-A617-FFACE4554236}.Release|Any CPU.Build.0 = Release|Any CPU + {438D0136-4A27-4E4D-A617-FFACE4554236}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {438D0136-4A27-4E4D-A617-FFACE4554236}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {438D0136-4A27-4E4D-A617-FFACE4554236}.Release|Win32.ActiveCfg = Release|Any CPU + {438D0136-4A27-4E4D-A617-FFACE4554236}.Release|x64.ActiveCfg = Release|Any CPU + {845F4BD4-6822-4D92-9DDB-15FD18A47E5A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {845F4BD4-6822-4D92-9DDB-15FD18A47E5A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {845F4BD4-6822-4D92-9DDB-15FD18A47E5A}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {845F4BD4-6822-4D92-9DDB-15FD18A47E5A}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {845F4BD4-6822-4D92-9DDB-15FD18A47E5A}.Debug|Win32.ActiveCfg = Debug|Any CPU + {845F4BD4-6822-4D92-9DDB-15FD18A47E5A}.Debug|x64.ActiveCfg = Debug|Any CPU + {845F4BD4-6822-4D92-9DDB-15FD18A47E5A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {845F4BD4-6822-4D92-9DDB-15FD18A47E5A}.Release|Any CPU.Build.0 = Release|Any CPU + {845F4BD4-6822-4D92-9DDB-15FD18A47E5A}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {845F4BD4-6822-4D92-9DDB-15FD18A47E5A}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {845F4BD4-6822-4D92-9DDB-15FD18A47E5A}.Release|Win32.ActiveCfg = Release|Any CPU + {845F4BD4-6822-4D92-9DDB-15FD18A47E5A}.Release|x64.ActiveCfg = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/RainmeterEditor.vshost.exe.config b/RainmeterStudio.vshost.exe.config similarity index 98% rename from RainmeterEditor.vshost.exe.config rename to RainmeterStudio.vshost.exe.config index fcd0c937..57c0f2cb 100644 --- a/RainmeterEditor.vshost.exe.config +++ b/RainmeterStudio.vshost.exe.config @@ -1,3 +1,3 @@ - - - + + + diff --git a/RainmeterEditor/App.xaml b/RainmeterStudio/App.xaml similarity index 90% rename from RainmeterEditor/App.xaml rename to RainmeterStudio/App.xaml index adce9422..2b40779e 100644 --- a/RainmeterEditor/App.xaml +++ b/RainmeterStudio/App.xaml @@ -1,13 +1,13 @@ - - - - - - - - - + + + + + + + + + diff --git a/RainmeterEditor/App.xaml.cs b/RainmeterStudio/App.xaml.cs similarity index 79% rename from RainmeterEditor/App.xaml.cs rename to RainmeterStudio/App.xaml.cs index 4f4b4409..36ae7304 100644 --- a/RainmeterEditor/App.xaml.cs +++ b/RainmeterStudio/App.xaml.cs @@ -1,22 +1,22 @@ -using System; -using System.Collections.Generic; -using System.Configuration; -using System.Data; -using System.Linq; -using System.Windows; -using RainmeterEditor.Business; -using RainmeterEditor.Documents.Text; - -namespace RainmeterEditor -{ - /// - /// Interaction logic for App.xaml - /// - public partial class App : Application - { - private void Application_Startup(object sender, StartupEventArgs e) - { - DocumentManager.Instance.RegisterEditorFactory(new TextEditorFactory()); - } - } -} +using System; +using System.Collections.Generic; +using System.Configuration; +using System.Data; +using System.Linq; +using System.Windows; +using RainmeterStudio.Business; +using RainmeterStudio.Documents.Text; + +namespace RainmeterStudio +{ + /// + /// Interaction logic for App.xaml + /// + public partial class App : Application + { + private void Application_Startup(object sender, StartupEventArgs e) + { + DocumentManager.Instance.RegisterEditorFactory(new TextEditorFactory()); + } + } +} diff --git a/RainmeterEditor/Business/DocumentManager.cs b/RainmeterStudio/Business/DocumentManager.cs similarity index 92% rename from RainmeterEditor/Business/DocumentManager.cs rename to RainmeterStudio/Business/DocumentManager.cs index 230f99c9..62a38377 100644 --- a/RainmeterEditor/Business/DocumentManager.cs +++ b/RainmeterStudio/Business/DocumentManager.cs @@ -1,78 +1,78 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using RainmeterEditor.Model; -using RainmeterEditor.Model.Events; - -namespace RainmeterEditor.Business -{ - public class DocumentManager - { - #region Singleton instance - private static DocumentManager _instance = null; - - /// - /// Gets the instance of DocumentManager - /// - public static DocumentManager Instance - { - get - { - if (_instance == null) - _instance = new DocumentManager(); - - return _instance; - } - } - - #endregion - - private DocumentManager() - { - } - - List _factories = new List(); - List _editors = new List(); - - public event EventHandler DocumentOpened; - - /// - /// Registers a document editor factory - /// - /// Document editor factory - public void RegisterEditorFactory(IDocumentEditorFactory factory) - { - _factories.Add(factory); - } - - /// - /// Creates a new document in the specified path, with the specified format, and opens it - /// - /// - /// - public void Create(DocumentFormat format, string path) - { - // Create document - var document = format.Factory.CreateDocument(format, path); - - // Create editor - var editor = format.Factory.CreateEditor(document); - _editors.Add(editor); - - // Trigger event - if (DocumentOpened != null) - DocumentOpened(this, new DocumentOpenedEventArgs(editor)); - } - - public IEnumerable DocumentFormats - { - get - { - foreach (var f in _factories) - foreach (var df in f.CreateDocumentFormats) - yield return df; - } - } - } -} +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using RainmeterStudio.Model; +using RainmeterStudio.Model.Events; + +namespace RainmeterStudio.Business +{ + public class DocumentManager + { + #region Singleton instance + private static DocumentManager _instance = null; + + /// + /// Gets the instance of DocumentManager + /// + public static DocumentManager Instance + { + get + { + if (_instance == null) + _instance = new DocumentManager(); + + return _instance; + } + } + + #endregion + + private DocumentManager() + { + } + + List _factories = new List(); + List _editors = new List(); + + public event EventHandler DocumentOpened; + + /// + /// Registers a document editor factory + /// + /// Document editor factory + public void RegisterEditorFactory(IDocumentEditorFactory factory) + { + _factories.Add(factory); + } + + /// + /// Creates a new document in the specified path, with the specified format, and opens it + /// + /// + /// + public void Create(DocumentFormat format, string path) + { + // Create document + var document = format.Factory.CreateDocument(format, path); + + // Create editor + var editor = format.Factory.CreateEditor(document); + _editors.Add(editor); + + // Trigger event + if (DocumentOpened != null) + DocumentOpened(this, new DocumentOpenedEventArgs(editor)); + } + + public IEnumerable DocumentFormats + { + get + { + foreach (var f in _factories) + foreach (var df in f.CreateDocumentFormats) + yield return df; + } + } + } +} diff --git a/RainmeterEditor/Business/ProjectManager.cs b/RainmeterStudio/Business/ProjectManager.cs similarity index 76% rename from RainmeterEditor/Business/ProjectManager.cs rename to RainmeterStudio/Business/ProjectManager.cs index 491ea1e7..a29b6852 100644 --- a/RainmeterEditor/Business/ProjectManager.cs +++ b/RainmeterStudio/Business/ProjectManager.cs @@ -1,16 +1,16 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using RainmeterEditor.Model; - -namespace RainmeterEditor.Business -{ - public class ProjectManager - { - public Project ActiveProject { get; protected set; } - - public void Open() { } - public void Close() { } - } -} +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using RainmeterStudio.Model; + +namespace RainmeterStudio.Business +{ + public class ProjectManager + { + public Project ActiveProject { get; protected set; } + + public void Open() { } + public void Close() { } + } +} diff --git a/RainmeterEditor/Documents/Ini/IniDocument.cs b/RainmeterStudio/Documents/Ini/IniDocument.cs similarity index 65% rename from RainmeterEditor/Documents/Ini/IniDocument.cs rename to RainmeterStudio/Documents/Ini/IniDocument.cs index e6f47574..927171ca 100644 --- a/RainmeterEditor/Documents/Ini/IniDocument.cs +++ b/RainmeterStudio/Documents/Ini/IniDocument.cs @@ -1,12 +1,12 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using RainmeterEditor.Model; - -namespace RainmeterEditor.Documents.Ini -{ - /*public class IniDocument : IDocument - { - }*/ -} +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using RainmeterStudio.Model; + +namespace RainmeterStudio.Documents.Ini +{ + /*public class IniDocument : IDocument + { + }*/ +} diff --git a/RainmeterEditor/Documents/Ini/IniSkinDesigner.cs b/RainmeterStudio/Documents/Ini/IniSkinDesigner.cs similarity index 86% rename from RainmeterEditor/Documents/Ini/IniSkinDesigner.cs rename to RainmeterStudio/Documents/Ini/IniSkinDesigner.cs index f03ec66d..dda2d27c 100644 --- a/RainmeterEditor/Documents/Ini/IniSkinDesigner.cs +++ b/RainmeterStudio/Documents/Ini/IniSkinDesigner.cs @@ -1,31 +1,31 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using RainmeterEditor.Model; - -namespace RainmeterEditor.Documents.Ini -{ - /*public class IniSkinDesigner : IDocumentEditor - { - public override IDocument Document - { - get { throw new NotImplementedException(); } - } - - public override string Title - { - get { throw new NotImplementedException(); } - } - - public override System.Windows.UIElement EditorUI - { - get { throw new NotImplementedException(); } - } - - public override EventHandler SelectionChanged - { - get { throw new NotImplementedException(); } - } - }*/ -} +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using RainmeterStudio.Model; + +namespace RainmeterStudio.Documents.Ini +{ + /*public class IniSkinDesigner : IDocumentEditor + { + public override IDocument Document + { + get { throw new NotImplementedException(); } + } + + public override string Title + { + get { throw new NotImplementedException(); } + } + + public override System.Windows.UIElement EditorUI + { + get { throw new NotImplementedException(); } + } + + public override EventHandler SelectionChanged + { + get { throw new NotImplementedException(); } + } + }*/ +} diff --git a/RainmeterEditor/Documents/Ini/IniSkinDesignerControl.xaml b/RainmeterStudio/Documents/Ini/IniSkinDesignerControl.xaml similarity index 85% rename from RainmeterEditor/Documents/Ini/IniSkinDesignerControl.xaml rename to RainmeterStudio/Documents/Ini/IniSkinDesignerControl.xaml index 6a86740f..b4c5c6df 100644 --- a/RainmeterEditor/Documents/Ini/IniSkinDesignerControl.xaml +++ b/RainmeterStudio/Documents/Ini/IniSkinDesignerControl.xaml @@ -1,11 +1,11 @@ - - - - - + + + + + diff --git a/RainmeterEditor/Documents/Ini/IniSkinDesignerControl.xaml.cs b/RainmeterStudio/Documents/Ini/IniSkinDesignerControl.xaml.cs similarity index 90% rename from RainmeterEditor/Documents/Ini/IniSkinDesignerControl.xaml.cs rename to RainmeterStudio/Documents/Ini/IniSkinDesignerControl.xaml.cs index f1ad22c5..c854d10a 100644 --- a/RainmeterEditor/Documents/Ini/IniSkinDesignerControl.xaml.cs +++ b/RainmeterStudio/Documents/Ini/IniSkinDesignerControl.xaml.cs @@ -1,27 +1,27 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Windows; -using System.Windows.Controls; -using System.Windows.Data; -using System.Windows.Documents; -using System.Windows.Input; -using System.Windows.Media; -using System.Windows.Media.Imaging; -using System.Windows.Navigation; -using System.Windows.Shapes; - -namespace RainmeterEditor.Documents.Ini -{ - /// - /// Interaction logic for IniSkinDesignerControl.xaml - /// - public partial class IniSkinDesignerControl : UserControl - { - public IniSkinDesignerControl() - { - InitializeComponent(); - } - } -} +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace RainmeterStudio.Documents.Ini +{ + /// + /// Interaction logic for IniSkinDesignerControl.xaml + /// + public partial class IniSkinDesignerControl : UserControl + { + public IniSkinDesignerControl() + { + InitializeComponent(); + } + } +} diff --git a/RainmeterEditor/Documents/Ini/IniSkinDesignerFactory.cs b/RainmeterStudio/Documents/Ini/IniSkinDesignerFactory.cs similarity index 69% rename from RainmeterEditor/Documents/Ini/IniSkinDesignerFactory.cs rename to RainmeterStudio/Documents/Ini/IniSkinDesignerFactory.cs index d5ebe6cd..ee89b656 100644 --- a/RainmeterEditor/Documents/Ini/IniSkinDesignerFactory.cs +++ b/RainmeterStudio/Documents/Ini/IniSkinDesignerFactory.cs @@ -1,14 +1,14 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using System.Text; -using RainmeterEditor.Model; - -namespace RainmeterEditor.Documents.Ini -{ - /*public class IniSkinDesignerFactory : IDocumentEditorFactory - { - - }*/ -} +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; +using RainmeterStudio.Model; + +namespace RainmeterStudio.Documents.Ini +{ + /*public class IniSkinDesignerFactory : IDocumentEditorFactory + { + + }*/ +} diff --git a/RainmeterEditor/Documents/Text/TextDocument.cs b/RainmeterStudio/Documents/Text/TextDocument.cs similarity index 83% rename from RainmeterEditor/Documents/Text/TextDocument.cs rename to RainmeterStudio/Documents/Text/TextDocument.cs index a634706c..f6050965 100644 --- a/RainmeterEditor/Documents/Text/TextDocument.cs +++ b/RainmeterStudio/Documents/Text/TextDocument.cs @@ -1,35 +1,35 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using System.Text; -using RainmeterEditor.Model; - -namespace RainmeterEditor.Documents.Text -{ - public class TextDocument : IDocument - { - public string Name - { - get - { - return Path.GetFileName(FilePath); - } - } - - public string FilePath - { - get; set; - } - - public string Text - { - get; set; - } - - public TextDocument() - { - Text = String.Empty; - } - } -} +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; +using RainmeterStudio.Model; + +namespace RainmeterStudio.Documents.Text +{ + public class TextDocument : IDocument + { + public string Name + { + get + { + return Path.GetFileName(FilePath); + } + } + + public string FilePath + { + get; set; + } + + public string Text + { + get; set; + } + + public TextDocument() + { + Text = String.Empty; + } + } +} diff --git a/RainmeterEditor/Documents/Text/TextEditor.cs b/RainmeterStudio/Documents/Text/TextEditor.cs similarity index 86% rename from RainmeterEditor/Documents/Text/TextEditor.cs rename to RainmeterStudio/Documents/Text/TextEditor.cs index 1b052d22..1496cb9c 100644 --- a/RainmeterEditor/Documents/Text/TextEditor.cs +++ b/RainmeterStudio/Documents/Text/TextEditor.cs @@ -1,27 +1,27 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using System.Text; -using RainmeterEditor.Model; - -namespace RainmeterEditor.Documents.Text -{ - public class TextEditor : IDocumentEditor - { - private TextDocument _document; - private TextEditorControl _control; - - public TextEditor(TextDocument document) - { - _document = document; - _control = new TextEditorControl(document); - } - - public override IDocument Document { get { return _document; } } - - public override string Title { get { return _document.Name; } } - - public override System.Windows.UIElement EditorUI { get { return _control; } } - } -} +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; +using RainmeterStudio.Model; + +namespace RainmeterStudio.Documents.Text +{ + public class TextEditor : IDocumentEditor + { + private TextDocument _document; + private TextEditorControl _control; + + public TextEditor(TextDocument document) + { + _document = document; + _control = new TextEditorControl(document); + } + + public override IDocument Document { get { return _document; } } + + public override string Title { get { return _document.Name; } } + + public override System.Windows.UIElement EditorUI { get { return _control; } } + } +} diff --git a/RainmeterEditor/Documents/Text/TextEditorControl.xaml b/RainmeterStudio/Documents/Text/TextEditorControl.xaml similarity index 86% rename from RainmeterEditor/Documents/Text/TextEditorControl.xaml rename to RainmeterStudio/Documents/Text/TextEditorControl.xaml index e8508998..41b4a98f 100644 --- a/RainmeterEditor/Documents/Text/TextEditorControl.xaml +++ b/RainmeterStudio/Documents/Text/TextEditorControl.xaml @@ -1,11 +1,11 @@ - - - - - + + + + + diff --git a/RainmeterEditor/Documents/Text/TextEditorControl.xaml.cs b/RainmeterStudio/Documents/Text/TextEditorControl.xaml.cs similarity index 91% rename from RainmeterEditor/Documents/Text/TextEditorControl.xaml.cs rename to RainmeterStudio/Documents/Text/TextEditorControl.xaml.cs index e2994252..8e716e5d 100644 --- a/RainmeterEditor/Documents/Text/TextEditorControl.xaml.cs +++ b/RainmeterStudio/Documents/Text/TextEditorControl.xaml.cs @@ -1,32 +1,32 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Windows; -using System.Windows.Controls; -using System.Windows.Data; -using System.Windows.Documents; -using System.Windows.Input; -using System.Windows.Media; -using System.Windows.Media.Imaging; -using System.Windows.Navigation; -using System.Windows.Shapes; - -namespace RainmeterEditor.Documents.Text -{ - /// - /// Interaction logic for TextEditorControl.xaml - /// - public partial class TextEditorControl : UserControl - { - private TextDocument _document; - - public TextEditorControl(TextDocument document) - { - InitializeComponent(); - - _document = document; - text.Text = document.Text; - } - } -} +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace RainmeterStudio.Documents.Text +{ + /// + /// Interaction logic for TextEditorControl.xaml + /// + public partial class TextEditorControl : UserControl + { + private TextDocument _document; + + public TextEditorControl(TextDocument document) + { + InitializeComponent(); + + _document = document; + text.Text = document.Text; + } + } +} diff --git a/RainmeterEditor/Documents/Text/TextEditorFactory.cs b/RainmeterStudio/Documents/Text/TextEditorFactory.cs similarity index 91% rename from RainmeterEditor/Documents/Text/TextEditorFactory.cs rename to RainmeterStudio/Documents/Text/TextEditorFactory.cs index 544cf7de..b75dbead 100644 --- a/RainmeterEditor/Documents/Text/TextEditorFactory.cs +++ b/RainmeterStudio/Documents/Text/TextEditorFactory.cs @@ -1,59 +1,59 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using System.Text; -using RainmeterEditor.Business; -using RainmeterEditor.Model; - -namespace RainmeterEditor.Documents.Text -{ - public class TextEditorFactory : IDocumentEditorFactory - { - private TextStorage _storage = new TextStorage(); - - /// - public string EditorName - { - get { return Resources.Strings.DocumentEditor_Text_Name; } - } - - /// - public IEnumerable CreateDocumentFormats - { - get - { - yield return new DocumentFormat() - { - Name = Resources.Strings.DocumentFormat_TextFile_Name, - Category = Resources.Strings.Category_Utility, - DefaultExtension = ".txt", - Description = Resources.Strings.DocumentFormat_TextFile_Description, - Icon = new System.Windows.Media.Imaging.BitmapImage(new Uri("/Resources/Icons/text_file_32.png", UriKind.RelativeOrAbsolute)), - Factory = this - }; - } - } - - - public IDocumentEditor CreateEditor(IDocument document) - { - TextDocument textDocument = document as TextDocument; - - if (textDocument == null) - throw new ArgumentException("Cannot edit provided document."); - - return new TextEditor(textDocument); - } - - public IDocumentStorage Storage { get { return _storage; } } - - public IDocument CreateDocument(DocumentFormat format, string path) - { - var document = new TextDocument(); - document.FilePath = path; - - return document; - } - } -} +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; +using RainmeterStudio.Business; +using RainmeterStudio.Model; + +namespace RainmeterStudio.Documents.Text +{ + public class TextEditorFactory : IDocumentEditorFactory + { + private TextStorage _storage = new TextStorage(); + + /// + public string EditorName + { + get { return Resources.Strings.DocumentEditor_Text_Name; } + } + + /// + public IEnumerable CreateDocumentFormats + { + get + { + yield return new DocumentFormat() + { + Name = Resources.Strings.DocumentFormat_TextFile_Name, + Category = Resources.Strings.Category_Utility, + DefaultExtension = ".txt", + Description = Resources.Strings.DocumentFormat_TextFile_Description, + Icon = new System.Windows.Media.Imaging.BitmapImage(new Uri("/Resources/Icons/text_file_32.png", UriKind.RelativeOrAbsolute)), + Factory = this + }; + } + } + + + public IDocumentEditor CreateEditor(IDocument document) + { + TextDocument textDocument = document as TextDocument; + + if (textDocument == null) + throw new ArgumentException("Cannot edit provided document."); + + return new TextEditor(textDocument); + } + + public IDocumentStorage Storage { get { return _storage; } } + + public IDocument CreateDocument(DocumentFormat format, string path) + { + var document = new TextDocument(); + document.FilePath = path; + + return document; + } + } +} diff --git a/RainmeterEditor/Documents/Text/TextStorage.cs b/RainmeterStudio/Documents/Text/TextStorage.cs similarity index 92% rename from RainmeterEditor/Documents/Text/TextStorage.cs rename to RainmeterStudio/Documents/Text/TextStorage.cs index a607e13f..ddde402c 100644 --- a/RainmeterEditor/Documents/Text/TextStorage.cs +++ b/RainmeterStudio/Documents/Text/TextStorage.cs @@ -1,64 +1,64 @@ -using System; -using System.IO; -using RainmeterEditor.Model; - -namespace RainmeterEditor.Documents.Text -{ - /// - /// Storage for text files - /// - public class TextStorage : IDocumentStorage - { - /// - IDocument IDocumentStorage.Read(string path) - { - TextDocument document = new TextDocument(); - document.FilePath = path; - document.Text = File.ReadAllText(path); - - return document; - } - - /// - public void Write(string path, IDocument document) - { - TextDocument textDocument = document as TextDocument; - - if (textDocument == null) - throw new ArgumentException("Provided document is not supported by this storage."); - - File.WriteAllText(path, textDocument.Text); - } - - /// - public bool CanRead(string path) - { - // Open the file - FileStream file = File.OpenRead(path); - - // Read a small chunk (1kb should be enough) - byte[] buffer = new byte[1024]; - int read = file.Read(buffer, 0, buffer.Length); - - // Close file - file.Close(); - - // Find 4 consecutive zero bytes - int cnt = 0; - for (int i = 0; i < read; i++) - { - // Count zero bytes - if (buffer[i] == 0) - ++cnt; - else cnt = 0; - - // Found > 4? Most likely binary file - if (cnt >= 4) - return false; - } - - // Not found, probably text file - return true; - } - } -} +using System; +using System.IO; +using RainmeterStudio.Model; + +namespace RainmeterStudio.Documents.Text +{ + /// + /// Storage for text files + /// + public class TextStorage : IDocumentStorage + { + /// + IDocument IDocumentStorage.Read(string path) + { + TextDocument document = new TextDocument(); + document.FilePath = path; + document.Text = File.ReadAllText(path); + + return document; + } + + /// + public void Write(string path, IDocument document) + { + TextDocument textDocument = document as TextDocument; + + if (textDocument == null) + throw new ArgumentException("Provided document is not supported by this storage."); + + File.WriteAllText(path, textDocument.Text); + } + + /// + public bool CanRead(string path) + { + // Open the file + FileStream file = File.OpenRead(path); + + // Read a small chunk (1kb should be enough) + byte[] buffer = new byte[1024]; + int read = file.Read(buffer, 0, buffer.Length); + + // Close file + file.Close(); + + // Find 4 consecutive zero bytes + int cnt = 0; + for (int i = 0; i < read; i++) + { + // Count zero bytes + if (buffer[i] == 0) + ++cnt; + else cnt = 0; + + // Found > 4? Most likely binary file + if (cnt >= 4) + return false; + } + + // Not found, probably text file + return true; + } + } +} diff --git a/RainmeterEditor/Interop/NativeLibrary.cs b/RainmeterStudio/Interop/NativeLibrary.cs similarity index 94% rename from RainmeterEditor/Interop/NativeLibrary.cs rename to RainmeterStudio/Interop/NativeLibrary.cs index 58daf48a..df6905e2 100644 --- a/RainmeterEditor/Interop/NativeLibrary.cs +++ b/RainmeterStudio/Interop/NativeLibrary.cs @@ -1,53 +1,53 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Runtime.InteropServices; -using System.Text; - -namespace RainmeterEditor.Interop -{ - public class NativeLibrary : IDisposable - { - #region Imports - - [DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)] - private static extern IntPtr LoadLibrary(string libname); - - [DllImport("kernel32.dll", CharSet = CharSet.Ansi)] - private static extern bool FreeLibrary(IntPtr hModule); - - [DllImport("kernel32.dll", CharSet = CharSet.Ansi)] - private static extern IntPtr GetProcAddress(IntPtr hModule, string lpProcName); - - #endregion - - public string DllName { get; private set; } - private IntPtr _handle; - - public NativeLibrary(string dllName) - { - // Set properties - DllName = dllName; - - // Load library - _handle = LoadLibrary(DllName); - if (_handle == IntPtr.Zero) - { - int errorCode = Marshal.GetLastWin32Error(); - throw new BadImageFormatException(string.Format("Failed to load library (ErrorCode: {0})", errorCode)); - } - } - - public void Dispose() - { - if (_handle != IntPtr.Zero) - FreeLibrary(_handle); - } - - public Delegate GetFunctionByName(string name, Type delegateType) - { - IntPtr addr = GetProcAddress(_handle, name); - return Marshal.GetDelegateForFunctionPointer(addr, delegateType); - } - } -} +using System; +using System.Collections.Generic; +using System.Linq; +using System.Runtime.InteropServices; +using System.Text; + +namespace RainmeterStudio.Interop +{ + public class NativeLibrary : IDisposable + { + #region Imports + + [DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)] + private static extern IntPtr LoadLibrary(string libname); + + [DllImport("kernel32.dll", CharSet = CharSet.Ansi)] + private static extern bool FreeLibrary(IntPtr hModule); + + [DllImport("kernel32.dll", CharSet = CharSet.Ansi)] + private static extern IntPtr GetProcAddress(IntPtr hModule, string lpProcName); + + #endregion + + public string DllName { get; private set; } + private IntPtr _handle; + + public NativeLibrary(string dllName) + { + // Set properties + DllName = dllName; + + // Load library + _handle = LoadLibrary(DllName); + if (_handle == IntPtr.Zero) + { + int errorCode = Marshal.GetLastWin32Error(); + throw new BadImageFormatException(string.Format("Failed to load library (ErrorCode: {0})", errorCode)); + } + } + + public void Dispose() + { + if (_handle != IntPtr.Zero) + FreeLibrary(_handle); + } + + public Delegate GetFunctionByName(string name, Type delegateType) + { + IntPtr addr = GetProcAddress(_handle, name); + return Marshal.GetDelegateForFunctionPointer(addr, delegateType); + } + } +} diff --git a/RainmeterEditor/LICENSE b/RainmeterStudio/LICENSE similarity index 98% rename from RainmeterEditor/LICENSE rename to RainmeterStudio/LICENSE index 67901943..fe5f7ed6 100644 --- a/RainmeterEditor/LICENSE +++ b/RainmeterStudio/LICENSE @@ -1,20 +1,20 @@ -The MIT License (MIT) - -Copyright (c) 2008 Ricardo Amores Hernández - -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files (the "Software"), to deal in -the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of -the Software, and to permit persons to whom the Software is furnished to do so, -subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +The MIT License (MIT) + +Copyright (c) 2008 Ricardo Amores Hernández + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/RainmeterEditor/Model/DocumentFormat.cs b/RainmeterStudio/Model/DocumentFormat.cs similarity index 89% rename from RainmeterEditor/Model/DocumentFormat.cs rename to RainmeterStudio/Model/DocumentFormat.cs index 41acc9a2..b9522f80 100644 --- a/RainmeterEditor/Model/DocumentFormat.cs +++ b/RainmeterStudio/Model/DocumentFormat.cs @@ -1,14 +1,14 @@ -using System.Windows.Media; - -namespace RainmeterEditor.Model -{ - public class DocumentFormat - { - public string Name { get; set; } - public ImageSource Icon { get; set; } - public string Description { get; set; } - public string DefaultExtension { get; set; } - public IDocumentEditorFactory Factory { get; set; } - public string Category { get; set; } - } -} +using System.Windows.Media; + +namespace RainmeterStudio.Model +{ + public class DocumentFormat + { + public string Name { get; set; } + public ImageSource Icon { get; set; } + public string Description { get; set; } + public string DefaultExtension { get; set; } + public IDocumentEditorFactory Factory { get; set; } + public string Category { get; set; } + } +} diff --git a/RainmeterEditor/Model/Events/DocumentOpenedEventArgs.cs b/RainmeterStudio/Model/Events/DocumentOpenedEventArgs.cs similarity index 85% rename from RainmeterEditor/Model/Events/DocumentOpenedEventArgs.cs rename to RainmeterStudio/Model/Events/DocumentOpenedEventArgs.cs index 9c4e0df2..4769fe89 100644 --- a/RainmeterEditor/Model/Events/DocumentOpenedEventArgs.cs +++ b/RainmeterStudio/Model/Events/DocumentOpenedEventArgs.cs @@ -1,17 +1,17 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; - -namespace RainmeterEditor.Model.Events -{ - public class DocumentOpenedEventArgs : EventArgs - { - public IDocumentEditor Editor { get; private set; } - - public DocumentOpenedEventArgs(IDocumentEditor editor) - { - Editor = editor; - } - } -} +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace RainmeterStudio.Model.Events +{ + public class DocumentOpenedEventArgs : EventArgs + { + public IDocumentEditor Editor { get; private set; } + + public DocumentOpenedEventArgs(IDocumentEditor editor) + { + Editor = editor; + } + } +} diff --git a/RainmeterEditor/Model/IDocument.cs b/RainmeterStudio/Model/IDocument.cs similarity index 81% rename from RainmeterEditor/Model/IDocument.cs rename to RainmeterStudio/Model/IDocument.cs index 48ef5cf8..84b8ddb9 100644 --- a/RainmeterEditor/Model/IDocument.cs +++ b/RainmeterStudio/Model/IDocument.cs @@ -1,13 +1,13 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; - -namespace RainmeterEditor.Model -{ - public interface IDocument - { - string Name { get; } - string FilePath { get; } - } -} +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace RainmeterStudio.Model +{ + public interface IDocument + { + string Name { get; } + string FilePath { get; } + } +} diff --git a/RainmeterEditor/Model/IDocumentEditor.cs b/RainmeterStudio/Model/IDocumentEditor.cs similarity index 94% rename from RainmeterEditor/Model/IDocumentEditor.cs rename to RainmeterStudio/Model/IDocumentEditor.cs index b0677422..7cc5ff8d 100644 --- a/RainmeterEditor/Model/IDocumentEditor.cs +++ b/RainmeterStudio/Model/IDocumentEditor.cs @@ -1,136 +1,136 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Windows; - -namespace RainmeterEditor.Model -{ - public abstract class IDocumentEditor : IDisposable - { - #region Dirty flag - - private bool _dirty = false; - - /// - /// Gets a flag indicating if the active document is dirty (modified and not saved) - /// - public virtual bool Dirty - { - get - { - return _dirty; - } - protected set - { - _dirty = value; - if (DirtyChanged != null) - DirtyChanged(this, new EventArgs()); - } - } - - /// - /// Triggered when the dirty flag changes - /// - public event EventHandler DirtyChanged; - - #endregion - - #region Document - - /// - /// Gets the opened document - /// - public abstract IDocument Document { get; } - - /// - /// Gets the title to be displayed in the title bar - /// - public abstract string Title { get; } - - /// - /// Triggered when the title changes - /// - public event EventHandler TitleChanged; - - #endregion - - #region EditorUI - - /// - /// Gets the editor UI - /// - public abstract UIElement EditorUI { get; } - - #endregion - - #region Selection properties - - /// - /// Gets a value indicating if this editor uses the selection properties window - /// - public virtual bool UsesSelectionProperties - { - get - { - return false; - } - } - - /// - /// Gets the name of the selected object - /// - public virtual string SelectionName - { - get - { - return String.Empty; - } - } - - /// - /// Gets a list of properties for the currently selected object - /// - public virtual IEnumerable SelectionProperties - { - get - { - yield break; - } - } - - /// - /// Triggered when the selected object changes (used to update properties) - /// - public event EventHandler SelectionChanged; - - #endregion - - #region Toolbox - - /// - /// Gets a list of items to populate the toolbox - /// - public virtual IEnumerable ToolboxItems - { - get - { - yield break; - } - } - - public event EventHandler ToolboxChanged; - - #endregion - - #region Dispose - /// - /// Dispose - /// - public virtual void Dispose() - { - } - - #endregion - } -} +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Windows; + +namespace RainmeterStudio.Model +{ + public abstract class IDocumentEditor : IDisposable + { + #region Dirty flag + + private bool _dirty = false; + + /// + /// Gets a flag indicating if the active document is dirty (modified and not saved) + /// + public virtual bool Dirty + { + get + { + return _dirty; + } + protected set + { + _dirty = value; + if (DirtyChanged != null) + DirtyChanged(this, new EventArgs()); + } + } + + /// + /// Triggered when the dirty flag changes + /// + public event EventHandler DirtyChanged; + + #endregion + + #region Document + + /// + /// Gets the opened document + /// + public abstract IDocument Document { get; } + + /// + /// Gets the title to be displayed in the title bar + /// + public abstract string Title { get; } + + /// + /// Triggered when the title changes + /// + public event EventHandler TitleChanged; + + #endregion + + #region EditorUI + + /// + /// Gets the editor UI + /// + public abstract UIElement EditorUI { get; } + + #endregion + + #region Selection properties + + /// + /// Gets a value indicating if this editor uses the selection properties window + /// + public virtual bool UsesSelectionProperties + { + get + { + return false; + } + } + + /// + /// Gets the name of the selected object + /// + public virtual string SelectionName + { + get + { + return String.Empty; + } + } + + /// + /// Gets a list of properties for the currently selected object + /// + public virtual IEnumerable SelectionProperties + { + get + { + yield break; + } + } + + /// + /// Triggered when the selected object changes (used to update properties) + /// + public event EventHandler SelectionChanged; + + #endregion + + #region Toolbox + + /// + /// Gets a list of items to populate the toolbox + /// + public virtual IEnumerable ToolboxItems + { + get + { + yield break; + } + } + + public event EventHandler ToolboxChanged; + + #endregion + + #region Dispose + /// + /// Dispose + /// + public virtual void Dispose() + { + } + + #endregion + } +} diff --git a/RainmeterEditor/Model/IDocumentEditorFactory.cs b/RainmeterStudio/Model/IDocumentEditorFactory.cs similarity index 91% rename from RainmeterEditor/Model/IDocumentEditorFactory.cs rename to RainmeterStudio/Model/IDocumentEditorFactory.cs index 806e36f8..a6205e9f 100644 --- a/RainmeterEditor/Model/IDocumentEditorFactory.cs +++ b/RainmeterStudio/Model/IDocumentEditorFactory.cs @@ -1,39 +1,39 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using RainmeterEditor.Storage; - -namespace RainmeterEditor.Model -{ - public interface IDocumentEditorFactory - { - /// - /// Name of the editor - /// - string EditorName { get; } - - /// - /// Formats that will be used to populate the 'create document' dialog - /// - IEnumerable CreateDocumentFormats { get; } - - /// - /// Creates a new editor object - /// - /// Document to be edited by the editor - /// A new document editor - IDocumentEditor CreateEditor(IDocument document); - - /// - /// Creates a new document - /// - /// A new document - IDocument CreateDocument(DocumentFormat format, string path); - - /// - /// Gets the storage of this factory - /// - IDocumentStorage Storage { get; } - } -} +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using RainmeterStudio.Storage; + +namespace RainmeterStudio.Model +{ + public interface IDocumentEditorFactory + { + /// + /// Name of the editor + /// + string EditorName { get; } + + /// + /// Formats that will be used to populate the 'create document' dialog + /// + IEnumerable CreateDocumentFormats { get; } + + /// + /// Creates a new editor object + /// + /// Document to be edited by the editor + /// A new document editor + IDocumentEditor CreateEditor(IDocument document); + + /// + /// Creates a new document + /// + /// A new document + IDocument CreateDocument(DocumentFormat format, string path); + + /// + /// Gets the storage of this factory + /// + IDocumentStorage Storage { get; } + } +} diff --git a/RainmeterEditor/Model/IDocumentStorage.cs b/RainmeterStudio/Model/IDocumentStorage.cs similarity index 92% rename from RainmeterEditor/Model/IDocumentStorage.cs rename to RainmeterStudio/Model/IDocumentStorage.cs index 061945c8..7215dedc 100644 --- a/RainmeterEditor/Model/IDocumentStorage.cs +++ b/RainmeterStudio/Model/IDocumentStorage.cs @@ -1,26 +1,26 @@ -namespace RainmeterEditor.Model -{ - public interface IDocumentStorage - { - /// - /// Reads a document from file - /// - /// Path to file - /// Read document - IDocument Read(string path); - - /// - /// Writes a document to a file - /// - /// Path to file - /// Document to write - void Write(string path, IDocument document); - - /// - /// Tests if the file can be read by this storage - /// - /// Path to file - /// True if file can be read - bool CanRead(string path); - } -} +namespace RainmeterStudio.Model +{ + public interface IDocumentStorage + { + /// + /// Reads a document from file + /// + /// Path to file + /// Read document + IDocument Read(string path); + + /// + /// Writes a document to a file + /// + /// Path to file + /// Document to write + void Write(string path, IDocument document); + + /// + /// Tests if the file can be read by this storage + /// + /// Path to file + /// True if file can be read + bool CanRead(string path); + } +} diff --git a/RainmeterEditor/Model/Project.cs b/RainmeterStudio/Model/Project.cs similarity index 95% rename from RainmeterEditor/Model/Project.cs rename to RainmeterStudio/Model/Project.cs index e697f616..088263f9 100644 --- a/RainmeterEditor/Model/Project.cs +++ b/RainmeterStudio/Model/Project.cs @@ -1,114 +1,114 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Xml.Serialization; - -namespace RainmeterEditor.Model -{ - public class Project - { - [XmlElement("name")] - public string Name { get; set; } - - [XmlElement("author")] - public string Author { get; set; } - - [XmlIgnore] - public Version Version { get; set; } - - [XmlElement("version")] - public string VersionString - { - get - { - return Version.ToString(); - } - set - { - Version = new Version(value); - } - } - - [XmlElement("autoLoadFile")] - public Reference AutoLoadFile { get; set; } - - [XmlArray("variableFiles")] - public List VariableFiles { get; set; } - - [XmlIgnore] - public Version MinimumRainmeter { get; set; } - - [XmlElement("minimumRainmeter")] - public string MinimumRainmeterString - { - get - { - return MinimumRainmeter.ToString(); - } - set - { - MinimumRainmeter = new Version(value); - } - } - - [XmlIgnore] - public Version MinimumWindows { get; set; } - - [XmlElement("minimumWindows")] - public string MinimumWindowsString - { - get - { - return MinimumWindows.ToString(); - } - set - { - MinimumWindows = new Version(value); - } - } - - [XmlElement("root")] - public Tree Root { get; set; } - - public Project() - { - Root = new Tree(); - VariableFiles = new List(); - Version = new Version(); - MinimumRainmeter = new Version("3.1"); - MinimumWindows = new Version("5.1"); - } - - public override bool Equals(object obj) - { - Project other = obj as Project; - - if (other == null) - return false; - - bool res = String.Equals(Author, other.Author); - res &= Reference.Equals(AutoLoadFile, other.AutoLoadFile); - res &= Version.Equals(MinimumRainmeter, other.MinimumRainmeter); - res &= Version.Equals(MinimumWindows, other.MinimumWindows); - res &= String.Equals(Name, other.Name); - res &= Tree.Equals(Root, other.Root); - res &= Version.Equals(Version, other.Version); - - return res; - } - - public override int GetHashCode() - { - int hash = (Author == null) ? 0 : Author.GetHashCode(); - hash = hash * 7 + ((AutoLoadFile == null) ? 0 : AutoLoadFile.GetHashCode()); - hash = hash * 7 + ((MinimumRainmeter == null) ? 0 : MinimumRainmeter.GetHashCode()); - hash = hash * 7 + ((MinimumWindows == null) ? 0 : MinimumWindows.GetHashCode()); - hash = hash * 7 + ((Name == null) ? 0 : Name.GetHashCode()); - hash = hash * 7 + ((Root == null) ? 0 : Root.GetHashCode()); - hash = hash * 7 + ((Version == null) ? 0 : Version.GetHashCode()); - - return hash; - } - } -} +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Xml.Serialization; + +namespace RainmeterStudio.Model +{ + public class Project + { + [XmlElement("name")] + public string Name { get; set; } + + [XmlElement("author")] + public string Author { get; set; } + + [XmlIgnore] + public Version Version { get; set; } + + [XmlElement("version")] + public string VersionString + { + get + { + return Version.ToString(); + } + set + { + Version = new Version(value); + } + } + + [XmlElement("autoLoadFile")] + public Reference AutoLoadFile { get; set; } + + [XmlArray("variableFiles")] + public List VariableFiles { get; set; } + + [XmlIgnore] + public Version MinimumRainmeter { get; set; } + + [XmlElement("minimumRainmeter")] + public string MinimumRainmeterString + { + get + { + return MinimumRainmeter.ToString(); + } + set + { + MinimumRainmeter = new Version(value); + } + } + + [XmlIgnore] + public Version MinimumWindows { get; set; } + + [XmlElement("minimumWindows")] + public string MinimumWindowsString + { + get + { + return MinimumWindows.ToString(); + } + set + { + MinimumWindows = new Version(value); + } + } + + [XmlElement("root")] + public Tree Root { get; set; } + + public Project() + { + Root = new Tree(); + VariableFiles = new List(); + Version = new Version(); + MinimumRainmeter = new Version("3.1"); + MinimumWindows = new Version("5.1"); + } + + public override bool Equals(object obj) + { + Project other = obj as Project; + + if (other == null) + return false; + + bool res = String.Equals(Author, other.Author); + res &= Reference.Equals(AutoLoadFile, other.AutoLoadFile); + res &= Version.Equals(MinimumRainmeter, other.MinimumRainmeter); + res &= Version.Equals(MinimumWindows, other.MinimumWindows); + res &= String.Equals(Name, other.Name); + res &= Tree.Equals(Root, other.Root); + res &= Version.Equals(Version, other.Version); + + return res; + } + + public override int GetHashCode() + { + int hash = (Author == null) ? 0 : Author.GetHashCode(); + hash = hash * 7 + ((AutoLoadFile == null) ? 0 : AutoLoadFile.GetHashCode()); + hash = hash * 7 + ((MinimumRainmeter == null) ? 0 : MinimumRainmeter.GetHashCode()); + hash = hash * 7 + ((MinimumWindows == null) ? 0 : MinimumWindows.GetHashCode()); + hash = hash * 7 + ((Name == null) ? 0 : Name.GetHashCode()); + hash = hash * 7 + ((Root == null) ? 0 : Root.GetHashCode()); + hash = hash * 7 + ((Version == null) ? 0 : Version.GetHashCode()); + + return hash; + } + } +} diff --git a/RainmeterEditor/Model/Property.cs b/RainmeterStudio/Model/Property.cs similarity index 89% rename from RainmeterEditor/Model/Property.cs rename to RainmeterStudio/Model/Property.cs index 96c320a3..40f2c6ae 100644 --- a/RainmeterEditor/Model/Property.cs +++ b/RainmeterStudio/Model/Property.cs @@ -1,30 +1,30 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; - -namespace RainmeterEditor.Model -{ - public class Property - { - public string Name { get; set; } - - private object _value; - public object Value - { - get - { - return _value; - } - set - { - _value = value; - - if (ValueChanged != null) - ValueChanged(this, new EventArgs()); - } - } - - public event EventHandler ValueChanged; - } -} +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace RainmeterStudio.Model +{ + public class Property + { + public string Name { get; set; } + + private object _value; + public object Value + { + get + { + return _value; + } + set + { + _value = value; + + if (ValueChanged != null) + ValueChanged(this, new EventArgs()); + } + } + + public event EventHandler ValueChanged; + } +} diff --git a/RainmeterEditor/Model/RainmeterConfig.cs b/RainmeterStudio/Model/RainmeterConfig.cs similarity index 76% rename from RainmeterEditor/Model/RainmeterConfig.cs rename to RainmeterStudio/Model/RainmeterConfig.cs index e2605a2a..5d67763c 100644 --- a/RainmeterEditor/Model/RainmeterConfig.cs +++ b/RainmeterStudio/Model/RainmeterConfig.cs @@ -1,11 +1,11 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; - -namespace RainmeterEditor.Model -{ - public class RainmeterConfig - { - } -} +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace RainmeterStudio.Model +{ + public class RainmeterConfig + { + } +} diff --git a/RainmeterEditor/Model/Reference.cs b/RainmeterStudio/Model/Reference.cs similarity index 93% rename from RainmeterEditor/Model/Reference.cs rename to RainmeterStudio/Model/Reference.cs index 75f9ad5b..c1270971 100644 --- a/RainmeterEditor/Model/Reference.cs +++ b/RainmeterStudio/Model/Reference.cs @@ -1,50 +1,50 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Xml.Serialization; - -namespace RainmeterEditor.Model -{ - /// - /// Reference to a file or folder - /// - public class Reference - { - [XmlAttribute("name")] - public string Name { get; set; } - - [XmlAttribute("path")] - public string Path { get; set; } - - public Reference() - { - } - - public Reference(string name, string path = null) - { - Name = name; - Path = path; - } - - public override bool Equals(object obj) - { - var other = obj as Reference; - - // Types are different, so not equal - if (other == null) - return false; - - // Compare using string equals - return String.Equals(Name, other.Name) && String.Equals(Path, other.Path); - } - - public override int GetHashCode() - { - int hash = (Name == null) ? 0 : Name.GetHashCode(); - hash = hash * 7 + ((Path == null) ? 0 : Path.GetHashCode()); - - return hash; - } - } -} +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Xml.Serialization; + +namespace RainmeterStudio.Model +{ + /// + /// Reference to a file or folder + /// + public class Reference + { + [XmlAttribute("name")] + public string Name { get; set; } + + [XmlAttribute("path")] + public string Path { get; set; } + + public Reference() + { + } + + public Reference(string name, string path = null) + { + Name = name; + Path = path; + } + + public override bool Equals(object obj) + { + var other = obj as Reference; + + // Types are different, so not equal + if (other == null) + return false; + + // Compare using string equals + return String.Equals(Name, other.Name) && String.Equals(Path, other.Path); + } + + public override int GetHashCode() + { + int hash = (Name == null) ? 0 : Name.GetHashCode(); + hash = hash * 7 + ((Path == null) ? 0 : Path.GetHashCode()); + + return hash; + } + } +} diff --git a/RainmeterEditor/Model/Tree.cs b/RainmeterStudio/Model/Tree.cs similarity index 94% rename from RainmeterEditor/Model/Tree.cs rename to RainmeterStudio/Model/Tree.cs index 0c187f4d..262e9dcd 100644 --- a/RainmeterEditor/Model/Tree.cs +++ b/RainmeterStudio/Model/Tree.cs @@ -1,153 +1,153 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Xml.Serialization; - -namespace RainmeterEditor.Model -{ - public class Tree - { - [XmlElement("data")] - public T Data { get; set; } - - [XmlArray("children"), XmlArrayItem("child")] - public List> Children { get; set; } - - public Tree() - { - Children = new List>(); - Data = default(T); - } - - public Tree(T data) - { - Children = new List>(); - Data = data; - } - - public int IndexOf(Tree item) - { - return Children.IndexOf(item); - } - - public void Insert(int index, Tree item) - { - Children.Insert(index, item); - } - - public void RemoveAt(int index) - { - Children.RemoveAt(index); - } - - public Tree this[int index] - { - get - { - return Children[index]; - } - set - { - Children[index] = value; - } - } - - public void Add(Tree item) - { - Children.Add(item); - } - - public void Clear() - { - Children.Clear(); - } - - public bool Contains(Tree item) - { - return Children.Contains(item); - } - - public void CopyTo(Tree[] array, int arrayIndex) - { - Children.CopyTo(array, arrayIndex); - } - - public int Count - { - get { return Children.Count; } - } - - public bool IsReadOnly - { - get { return false; } - } - - public bool Remove(Tree item) - { - return Children.Remove(item); - } - - public IEnumerator> GetEnumerator() - { - return Children.GetEnumerator(); - } - - public int IndexOf(T item) - { - return Children.IndexOf(new Tree(item)); - } - - public void Insert(int index, T item) - { - Children.Insert(index, new Tree(item)); - } - - public void Add(T item) - { - Children.Add(new Tree(item)); - } - - public bool Contains(T item) - { - return Children.Contains(new Tree(item)); - } - - public void CopyTo(T[] array, int arrayIndex) - { - foreach (var node in Children) - array[arrayIndex++] = node.Data; - } - - public bool Remove(T item) - { - return Children.Remove(new Tree(item)); - } - - public override bool Equals(object obj) - { - Tree other = obj as Tree; - - // Types are different, so not equal - if (other == null) - return false; - - // Compare data - if (!object.Equals(Data, other.Data)) - return false; - - // Compare children array - return Children.SequenceEqual(other.Children); - } - - public override int GetHashCode() - { - int hash = ((Data == null) ? 0 : Data.GetHashCode()); - - foreach (var c in Children) - hash = hash * 7 + c.GetHashCode(); - - return hash; - } - } -} +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Xml.Serialization; + +namespace RainmeterStudio.Model +{ + public class Tree + { + [XmlElement("data")] + public T Data { get; set; } + + [XmlArray("children"), XmlArrayItem("child")] + public List> Children { get; set; } + + public Tree() + { + Children = new List>(); + Data = default(T); + } + + public Tree(T data) + { + Children = new List>(); + Data = data; + } + + public int IndexOf(Tree item) + { + return Children.IndexOf(item); + } + + public void Insert(int index, Tree item) + { + Children.Insert(index, item); + } + + public void RemoveAt(int index) + { + Children.RemoveAt(index); + } + + public Tree this[int index] + { + get + { + return Children[index]; + } + set + { + Children[index] = value; + } + } + + public void Add(Tree item) + { + Children.Add(item); + } + + public void Clear() + { + Children.Clear(); + } + + public bool Contains(Tree item) + { + return Children.Contains(item); + } + + public void CopyTo(Tree[] array, int arrayIndex) + { + Children.CopyTo(array, arrayIndex); + } + + public int Count + { + get { return Children.Count; } + } + + public bool IsReadOnly + { + get { return false; } + } + + public bool Remove(Tree item) + { + return Children.Remove(item); + } + + public IEnumerator> GetEnumerator() + { + return Children.GetEnumerator(); + } + + public int IndexOf(T item) + { + return Children.IndexOf(new Tree(item)); + } + + public void Insert(int index, T item) + { + Children.Insert(index, new Tree(item)); + } + + public void Add(T item) + { + Children.Add(new Tree(item)); + } + + public bool Contains(T item) + { + return Children.Contains(new Tree(item)); + } + + public void CopyTo(T[] array, int arrayIndex) + { + foreach (var node in Children) + array[arrayIndex++] = node.Data; + } + + public bool Remove(T item) + { + return Children.Remove(new Tree(item)); + } + + public override bool Equals(object obj) + { + Tree other = obj as Tree; + + // Types are different, so not equal + if (other == null) + return false; + + // Compare data + if (!object.Equals(Data, other.Data)) + return false; + + // Compare children array + return Children.SequenceEqual(other.Children); + } + + public override int GetHashCode() + { + int hash = ((Data == null) ? 0 : Data.GetHashCode()); + + foreach (var c in Children) + hash = hash * 7 + c.GetHashCode(); + + return hash; + } + } +} diff --git a/RainmeterEditor/Properties/AssemblyInfo.cs b/RainmeterStudio/Properties/AssemblyInfo.cs similarity index 93% rename from RainmeterEditor/Properties/AssemblyInfo.cs rename to RainmeterStudio/Properties/AssemblyInfo.cs index f9620b46..eb132073 100644 --- a/RainmeterEditor/Properties/AssemblyInfo.cs +++ b/RainmeterStudio/Properties/AssemblyInfo.cs @@ -1,55 +1,55 @@ -using System.Reflection; -using System.Resources; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; -using System.Windows; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyTitle("RainmeterEditor")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("RainmeterEditor")] -[assembly: AssemblyCopyright("Copyright © 2014")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. -[assembly: ComVisible(false)] - -//In order to begin building localizable applications, set -//CultureYouAreCodingWith in your .csproj file -//inside a . For example, if you are using US english -//in your source files, set the to en-US. Then uncomment -//the NeutralResourceLanguage attribute below. Update the "en-US" in -//the line below to match the UICulture setting in the project file. - -//[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)] - - -[assembly: ThemeInfo( - ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located - //(used if a resource is not found in the page, - // or application resource dictionaries) - ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located - //(used if a resource is not found in the page, - // app, or any theme specific resource dictionaries) -)] - - -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the values or you can default the Build and Revision Numbers -// by using the '*' as shown below: -// [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] +using System.Reflection; +using System.Resources; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using System.Windows; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("RainmeterStudio")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("RainmeterStudio")] +[assembly: AssemblyCopyright("Copyright © 2014")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +//In order to begin building localizable applications, set +//CultureYouAreCodingWith in your .csproj file +//inside a . For example, if you are using US english +//in your source files, set the to en-US. Then uncomment +//the NeutralResourceLanguage attribute below. Update the "en-US" in +//the line below to match the UICulture setting in the project file. + +//[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)] + + +[assembly: ThemeInfo( + ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located + //(used if a resource is not found in the page, + // or application resource dictionaries) + ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located + //(used if a resource is not found in the page, + // app, or any theme specific resource dictionaries) +)] + + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/RainmeterEditor/Properties/Resources.Designer.cs b/RainmeterStudio/Properties/Resources.Designer.cs similarity index 92% rename from RainmeterEditor/Properties/Resources.Designer.cs rename to RainmeterStudio/Properties/Resources.Designer.cs index 06dc2237..883f3dad 100644 --- a/RainmeterEditor/Properties/Resources.Designer.cs +++ b/RainmeterStudio/Properties/Resources.Designer.cs @@ -1,63 +1,63 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Runtime Version:4.0.30319.34014 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -//------------------------------------------------------------------------------ - -namespace RainmeterEditor.Properties { - using System; - - - /// - /// A strongly-typed resource class, for looking up localized strings, etc. - /// - // This class was auto-generated by the StronglyTypedResourceBuilder - // class via a tool like ResGen or Visual Studio. - // To add or remove a member, edit your .ResX file then rerun ResGen - // with the /str option, or rebuild your VS project. - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - internal class Resources { - - private static global::System.Resources.ResourceManager resourceMan; - - private static global::System.Globalization.CultureInfo resourceCulture; - - [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] - internal Resources() { - } - - /// - /// Returns the cached ResourceManager instance used by this class. - /// - [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Resources.ResourceManager ResourceManager { - get { - if (object.ReferenceEquals(resourceMan, null)) { - global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("RainmeterEditor.Properties.Resources", typeof(Resources).Assembly); - resourceMan = temp; - } - return resourceMan; - } - } - - /// - /// Overrides the current thread's CurrentUICulture property for all - /// resource lookups using this strongly typed resource class. - /// - [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Globalization.CultureInfo Culture { - get { - return resourceCulture; - } - set { - resourceCulture = value; - } - } - } -} +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.34014 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace RainmeterStudio.Properties { + using System; + + + /// + /// A strongly-typed resource class, for looking up localized strings, etc. + /// + // This class was auto-generated by the StronglyTypedResourceBuilder + // class via a tool like ResGen or Visual Studio. + // To add or remove a member, edit your .ResX file then rerun ResGen + // with the /str option, or rebuild your VS project. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() { + } + + /// + /// Returns the cached ResourceManager instance used by this class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager { + get { + if (object.ReferenceEquals(resourceMan, null)) { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("RainmeterStudio.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// Overrides the current thread's CurrentUICulture property for all + /// resource lookups using this strongly typed resource class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + } +} diff --git a/RainmeterEditor/Properties/Resources.resx b/RainmeterStudio/Properties/Resources.resx similarity index 97% rename from RainmeterEditor/Properties/Resources.resx rename to RainmeterStudio/Properties/Resources.resx index af7dbebb..ffecec85 100644 --- a/RainmeterEditor/Properties/Resources.resx +++ b/RainmeterStudio/Properties/Resources.resx @@ -1,117 +1,117 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + \ No newline at end of file diff --git a/RainmeterEditor/Properties/Settings.Designer.cs b/RainmeterStudio/Properties/Settings.Designer.cs similarity index 94% rename from RainmeterEditor/Properties/Settings.Designer.cs rename to RainmeterStudio/Properties/Settings.Designer.cs index cfa37b69..c6767e20 100644 --- a/RainmeterEditor/Properties/Settings.Designer.cs +++ b/RainmeterStudio/Properties/Settings.Designer.cs @@ -1,26 +1,26 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Runtime Version:4.0.30319.34014 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -//------------------------------------------------------------------------------ - -namespace RainmeterEditor.Properties { - - - [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "12.0.0.0")] - internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { - - private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); - - public static Settings Default { - get { - return defaultInstance; - } - } - } -} +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.34014 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace RainmeterStudio.Properties { + + + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "12.0.0.0")] + internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { + + private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); + + public static Settings Default { + get { + return defaultInstance; + } + } + } +} diff --git a/RainmeterEditor/Properties/Settings.settings b/RainmeterStudio/Properties/Settings.settings similarity index 97% rename from RainmeterEditor/Properties/Settings.settings rename to RainmeterStudio/Properties/Settings.settings index 033d7a5e..8f2fd95d 100644 --- a/RainmeterEditor/Properties/Settings.settings +++ b/RainmeterStudio/Properties/Settings.settings @@ -1,7 +1,7 @@ - - - - - - + + + + + + \ No newline at end of file diff --git a/RainmeterEditor/Rainmeter.cs b/RainmeterStudio/Rainmeter.cs similarity index 91% rename from RainmeterEditor/Rainmeter.cs rename to RainmeterStudio/Rainmeter.cs index 136b55f6..9784d15b 100644 --- a/RainmeterEditor/Rainmeter.cs +++ b/RainmeterStudio/Rainmeter.cs @@ -1,59 +1,59 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Runtime.InteropServices; -using System.Text; -using RainmeterEditor.Interop; - -namespace RainmeterEditor -{ - class Rainmeter - { - #region Imports - - [DllImport("Rainmeter.dll", CallingConvention = CallingConvention.Cdecl)] - private static extern IntPtr Rainmeter_Initialize(); - - [DllImport("Rainmeter.dll", CallingConvention = CallingConvention.Cdecl)] - private static extern void Rainmeter_Finalize(IntPtr handle); - - #endregion - - private static Rainmeter _instance = null; - - /// - /// Gets the single instance of this class - /// - public static Rainmeter Instance - { - get - { - if (_instance == null) - _instance = new Rainmeter(); - - return _instance; - } - } - - private IntPtr _handle; - - #region Constructor, finalizer - - private Rainmeter() - { - _handle = Rainmeter_Initialize(); - - if (_handle == IntPtr.Zero) - throw new Exception("Failed to initialize native library."); - } - - ~Rainmeter() - { - Rainmeter_Finalize(_handle); - } - - #endregion - - public IntPtr Handle { get { return _handle; } } - } -} +using System; +using System.Collections.Generic; +using System.Linq; +using System.Runtime.InteropServices; +using System.Text; +using RainmeterStudio.Interop; + +namespace RainmeterStudio +{ + class Rainmeter + { + #region Imports + + [DllImport("Rainmeter.dll", CallingConvention = CallingConvention.Cdecl)] + private static extern IntPtr Rainmeter_Initialize(); + + [DllImport("Rainmeter.dll", CallingConvention = CallingConvention.Cdecl)] + private static extern void Rainmeter_Finalize(IntPtr handle); + + #endregion + + private static Rainmeter _instance = null; + + /// + /// Gets the single instance of this class + /// + public static Rainmeter Instance + { + get + { + if (_instance == null) + _instance = new Rainmeter(); + + return _instance; + } + } + + private IntPtr _handle; + + #region Constructor, finalizer + + private Rainmeter() + { + _handle = Rainmeter_Initialize(); + + if (_handle == IntPtr.Zero) + throw new Exception("Failed to initialize native library."); + } + + ~Rainmeter() + { + Rainmeter_Finalize(_handle); + } + + #endregion + + public IntPtr Handle { get { return _handle; } } + } +} diff --git a/RainmeterEditor/RainmeterStudio.csproj b/RainmeterStudio/RainmeterStudio.csproj similarity index 97% rename from RainmeterEditor/RainmeterStudio.csproj rename to RainmeterStudio/RainmeterStudio.csproj index 202b305b..21268294 100644 --- a/RainmeterEditor/RainmeterStudio.csproj +++ b/RainmeterStudio/RainmeterStudio.csproj @@ -1,214 +1,214 @@ - - - - - Debug - AnyCPU - {438D0136-4A27-4E4D-A617-FFACE4554236} - WinExe - Properties - RainmeterEditor - RainmeterEditor - v4.0 - 512 - {60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} - 4 - - - - x86 - true - full - false - ..\x32-Debug\ - DEBUG;TRACE - prompt - 4 - - - AnyCPU - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - - - - ..\packages\ini-parser.2.1.1\lib\INIFileParser.dll - - - - - - - - - - - - - ..\packages\AvalonDock.2.0.2000\lib\net40\Xceed.Wpf.AvalonDock.dll - - - ..\packages\AvalonDock.2.0.2000\lib\net40\Xceed.Wpf.AvalonDock.Themes.Aero.dll - - - ..\packages\AvalonDock.2.0.2000\lib\net40\Xceed.Wpf.AvalonDock.Themes.Expression.dll - - - ..\packages\AvalonDock.2.0.2000\lib\net40\Xceed.Wpf.AvalonDock.Themes.Metro.dll - - - ..\packages\AvalonDock.2.0.2000\lib\net40\Xceed.Wpf.AvalonDock.Themes.VS2010.dll - - - - - MSBuild:Compile - Designer - - - - - - TextEditorControl.xaml - - - - - - - - - - IniSkinDesignerControl.xaml - - - - - - - - - - - - - True - True - Strings.resx - - - - - - - CreateDocumentDialog.xaml - - - - - SkinsPanel.xaml - - - Designer - MSBuild:Compile - - - Designer - MSBuild:Compile - - - Designer - MSBuild:Compile - - - MSBuild:Compile - Designer - - - App.xaml - Code - - - MainWindow.xaml - Code - - - Designer - MSBuild:Compile - - - Designer - MSBuild:Compile - - - Designer - MSBuild:Compile - - - - - Code - - - True - True - Resources.resx - - - True - Settings.settings - True - - - ResXFileCodeGenerator - Resources.Designer.cs - - - ResXFileCodeGenerator - Strings.Designer.cs - - - - - - SettingsSingleFileGenerator - Settings.Designer.cs - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + Debug + AnyCPU + {438D0136-4A27-4E4D-A617-FFACE4554236} + WinExe + Properties + RainmeterStudio + RainmeterEditor + v4.0 + 512 + {60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + 4 + + + + x86 + true + full + false + ..\x32-Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + ..\packages\ini-parser.2.1.1\lib\INIFileParser.dll + + + + + + + + + + + + + ..\packages\AvalonDock.2.0.2000\lib\net40\Xceed.Wpf.AvalonDock.dll + + + ..\packages\AvalonDock.2.0.2000\lib\net40\Xceed.Wpf.AvalonDock.Themes.Aero.dll + + + ..\packages\AvalonDock.2.0.2000\lib\net40\Xceed.Wpf.AvalonDock.Themes.Expression.dll + + + ..\packages\AvalonDock.2.0.2000\lib\net40\Xceed.Wpf.AvalonDock.Themes.Metro.dll + + + ..\packages\AvalonDock.2.0.2000\lib\net40\Xceed.Wpf.AvalonDock.Themes.VS2010.dll + + + + + MSBuild:Compile + Designer + + + + + + TextEditorControl.xaml + + + + + + + + + + IniSkinDesignerControl.xaml + + + + + + + + + + + + + True + True + Strings.resx + + + + + + + CreateDocumentDialog.xaml + + + + + SkinsPanel.xaml + + + Designer + MSBuild:Compile + + + Designer + MSBuild:Compile + + + Designer + MSBuild:Compile + + + MSBuild:Compile + Designer + + + App.xaml + Code + + + MainWindow.xaml + Code + + + Designer + MSBuild:Compile + + + Designer + MSBuild:Compile + + + Designer + MSBuild:Compile + + + + + Code + + + True + True + Resources.resx + + + True + Settings.settings + True + + + ResXFileCodeGenerator + Resources.Designer.cs + + + ResXFileCodeGenerator + Strings.Designer.cs + + + + + + SettingsSingleFileGenerator + Settings.Designer.cs + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/RainmeterEditor/Resources/Icons/arrow_backward_16.png b/RainmeterStudio/Resources/Icons/arrow_backward_16.png similarity index 100% rename from RainmeterEditor/Resources/Icons/arrow_backward_16.png rename to RainmeterStudio/Resources/Icons/arrow_backward_16.png diff --git a/RainmeterEditor/Resources/Icons/arrow_forward_16.png b/RainmeterStudio/Resources/Icons/arrow_forward_16.png similarity index 100% rename from RainmeterEditor/Resources/Icons/arrow_forward_16.png rename to RainmeterStudio/Resources/Icons/arrow_forward_16.png diff --git a/RainmeterEditor/Resources/Icons/arrow_left_16.png b/RainmeterStudio/Resources/Icons/arrow_left_16.png similarity index 100% rename from RainmeterEditor/Resources/Icons/arrow_left_16.png rename to RainmeterStudio/Resources/Icons/arrow_left_16.png diff --git a/RainmeterEditor/Resources/Icons/arrow_right_16.png b/RainmeterStudio/Resources/Icons/arrow_right_16.png similarity index 100% rename from RainmeterEditor/Resources/Icons/arrow_right_16.png rename to RainmeterStudio/Resources/Icons/arrow_right_16.png diff --git a/RainmeterEditor/Resources/Icons/page_white_star_16.png b/RainmeterStudio/Resources/Icons/page_white_star_16.png similarity index 100% rename from RainmeterEditor/Resources/Icons/page_white_star_16.png rename to RainmeterStudio/Resources/Icons/page_white_star_16.png diff --git a/RainmeterEditor/Resources/Icons/project_16.png b/RainmeterStudio/Resources/Icons/project_16.png similarity index 100% rename from RainmeterEditor/Resources/Icons/project_16.png rename to RainmeterStudio/Resources/Icons/project_16.png diff --git a/RainmeterEditor/Resources/Icons/project_star_16.png b/RainmeterStudio/Resources/Icons/project_star_16.png similarity index 100% rename from RainmeterEditor/Resources/Icons/project_star_16.png rename to RainmeterStudio/Resources/Icons/project_star_16.png diff --git a/RainmeterEditor/Resources/Icons/text_file_32.png b/RainmeterStudio/Resources/Icons/text_file_32.png similarity index 100% rename from RainmeterEditor/Resources/Icons/text_file_32.png rename to RainmeterStudio/Resources/Icons/text_file_32.png diff --git a/RainmeterEditor/Resources/Strings.Designer.cs b/RainmeterStudio/Resources/Strings.Designer.cs similarity index 94% rename from RainmeterEditor/Resources/Strings.Designer.cs rename to RainmeterStudio/Resources/Strings.Designer.cs index a84078db..c82b8218 100644 --- a/RainmeterEditor/Resources/Strings.Designer.cs +++ b/RainmeterStudio/Resources/Strings.Designer.cs @@ -1,117 +1,117 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Runtime Version:4.0.30319.34014 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -//------------------------------------------------------------------------------ - -namespace RainmeterEditor.Resources { - using System; - - - /// - /// A strongly-typed resource class, for looking up localized strings, etc. - /// - // This class was auto-generated by the StronglyTypedResourceBuilder - // class via a tool like ResGen or Visual Studio. - // To add or remove a member, edit your .ResX file then rerun ResGen - // with the /str option, or rebuild your VS project. - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - internal class Strings { - - private static global::System.Resources.ResourceManager resourceMan; - - private static global::System.Globalization.CultureInfo resourceCulture; - - [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] - internal Strings() { - } - - /// - /// Returns the cached ResourceManager instance used by this class. - /// - [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Resources.ResourceManager ResourceManager { - get { - if (object.ReferenceEquals(resourceMan, null)) { - global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("RainmeterEditor.Resources.Strings", typeof(Strings).Assembly); - resourceMan = temp; - } - return resourceMan; - } - } - - /// - /// Overrides the current thread's CurrentUICulture property for all - /// resource lookups using this strongly typed resource class. - /// - [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Globalization.CultureInfo Culture { - get { - return resourceCulture; - } - set { - resourceCulture = value; - } - } - - /// - /// Looks up a localized string similar to Utility. - /// - internal static string Category_Utility { - get { - return ResourceManager.GetString("Category_Utility", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to _File.... - /// - internal static string DocumentCreateCommand_DisplayText { - get { - return ResourceManager.GetString("DocumentCreateCommand_DisplayText", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Creates a new file. - /// - internal static string DocumentCreateCommand_ToolTip { - get { - return ResourceManager.GetString("DocumentCreateCommand_ToolTip", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Text Editor. - /// - internal static string DocumentEditor_Text_Name { - get { - return ResourceManager.GetString("DocumentEditor_Text_Name", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Blank text file. - /// - internal static string DocumentFormat_TextFile_Description { - get { - return ResourceManager.GetString("DocumentFormat_TextFile_Description", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Text file. - /// - internal static string DocumentFormat_TextFile_Name { - get { - return ResourceManager.GetString("DocumentFormat_TextFile_Name", resourceCulture); - } - } - } -} +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.34014 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace RainmeterStudio.Resources { + using System; + + + /// + /// A strongly-typed resource class, for looking up localized strings, etc. + /// + // This class was auto-generated by the StronglyTypedResourceBuilder + // class via a tool like ResGen or Visual Studio. + // To add or remove a member, edit your .ResX file then rerun ResGen + // with the /str option, or rebuild your VS project. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Strings { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Strings() { + } + + /// + /// Returns the cached ResourceManager instance used by this class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager { + get { + if (object.ReferenceEquals(resourceMan, null)) { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("RainmeterStudio.Resources.Strings", typeof(Strings).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// Overrides the current thread's CurrentUICulture property for all + /// resource lookups using this strongly typed resource class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + + /// + /// Looks up a localized string similar to Utility. + /// + internal static string Category_Utility { + get { + return ResourceManager.GetString("Category_Utility", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to _File.... + /// + internal static string DocumentCreateCommand_DisplayText { + get { + return ResourceManager.GetString("DocumentCreateCommand_DisplayText", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Creates a new file. + /// + internal static string DocumentCreateCommand_ToolTip { + get { + return ResourceManager.GetString("DocumentCreateCommand_ToolTip", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Text Editor. + /// + internal static string DocumentEditor_Text_Name { + get { + return ResourceManager.GetString("DocumentEditor_Text_Name", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Blank text file. + /// + internal static string DocumentFormat_TextFile_Description { + get { + return ResourceManager.GetString("DocumentFormat_TextFile_Description", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Text file. + /// + internal static string DocumentFormat_TextFile_Name { + get { + return ResourceManager.GetString("DocumentFormat_TextFile_Name", resourceCulture); + } + } + } +} diff --git a/RainmeterEditor/Resources/Strings.resx b/RainmeterStudio/Resources/Strings.resx similarity index 97% rename from RainmeterEditor/Resources/Strings.resx rename to RainmeterStudio/Resources/Strings.resx index a26a6958..e2d125c1 100644 --- a/RainmeterEditor/Resources/Strings.resx +++ b/RainmeterStudio/Resources/Strings.resx @@ -1,138 +1,138 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - Utility - - - _File... - - - Creates a new file - - - Text Editor - - - Blank text file - - - Text file - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Utility + + + _File... + + + Creates a new file + + + Text Editor + + + Blank text file + + + Text file + \ No newline at end of file diff --git a/RainmeterEditor/Resources/splash.png b/RainmeterStudio/Resources/splash.png similarity index 100% rename from RainmeterEditor/Resources/splash.png rename to RainmeterStudio/Resources/splash.png diff --git a/RainmeterEditor/Storage/ProjectStorage.cs b/RainmeterStudio/Storage/ProjectStorage.cs similarity index 90% rename from RainmeterEditor/Storage/ProjectStorage.cs rename to RainmeterStudio/Storage/ProjectStorage.cs index 0fd30d59..224ba2e9 100644 --- a/RainmeterEditor/Storage/ProjectStorage.cs +++ b/RainmeterStudio/Storage/ProjectStorage.cs @@ -1,40 +1,40 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using System.Text; -using System.Xml.Serialization; -using RainmeterEditor.Model; - -namespace RainmeterEditor.Storage -{ - public class ProjectStorage - { - public Project Load(string path) - { - // Open file - var file = File.OpenText(path); - - // Deserialize file - var serializer = new XmlSerializer(typeof(Project), new XmlRootAttribute("project")); - Project project = serializer.Deserialize(file) as Project; - - // Clean up - file.Close(); - return project; - } - - public void Save(string path, Project project) - { - // Open file - var file = File.OpenWrite(path); - - // Deserialize file - var serializer = new XmlSerializer(typeof(Project), new XmlRootAttribute("project")); - serializer.Serialize(file, project); - - // Clean up - file.Close(); - } - } -} +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; +using System.Xml.Serialization; +using RainmeterStudio.Model; + +namespace RainmeterStudio.Storage +{ + public class ProjectStorage + { + public Project Load(string path) + { + // Open file + var file = File.OpenText(path); + + // Deserialize file + var serializer = new XmlSerializer(typeof(Project), new XmlRootAttribute("project")); + Project project = serializer.Deserialize(file) as Project; + + // Clean up + file.Close(); + return project; + } + + public void Save(string path, Project project) + { + // Open file + var file = File.OpenWrite(path); + + // Deserialize file + var serializer = new XmlSerializer(typeof(Project), new XmlRootAttribute("project")); + serializer.Serialize(file, project); + + // Clean up + file.Close(); + } + } +} diff --git a/RainmeterEditor/Storage/SkinDirectory.cs b/RainmeterStudio/Storage/SkinDirectory.cs similarity index 87% rename from RainmeterEditor/Storage/SkinDirectory.cs rename to RainmeterStudio/Storage/SkinDirectory.cs index 00705ff0..eedc135d 100644 --- a/RainmeterEditor/Storage/SkinDirectory.cs +++ b/RainmeterStudio/Storage/SkinDirectory.cs @@ -1,25 +1,25 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Runtime.InteropServices; -using System.Text; - -namespace RainmeterEditor.Storage -{ - public static class SkinDirectory - { - private static string _path = null; - - public static string Path - { - get - { - return ""; - } - set - { - - } - } - } -} +using System; +using System.Collections.Generic; +using System.Linq; +using System.Runtime.InteropServices; +using System.Text; + +namespace RainmeterStudio.Storage +{ + public static class SkinDirectory + { + private static string _path = null; + + public static string Path + { + get + { + return ""; + } + set + { + + } + } + } +} diff --git a/RainmeterEditor/UI/Command.cs b/RainmeterStudio/UI/Command.cs similarity index 95% rename from RainmeterEditor/UI/Command.cs rename to RainmeterStudio/UI/Command.cs index ebcd6643..1a931f14 100644 --- a/RainmeterEditor/UI/Command.cs +++ b/RainmeterStudio/UI/Command.cs @@ -1,88 +1,88 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Windows.Input; -using System.Windows.Media; - -namespace RainmeterEditor.UI -{ - public class Command : ICommand - { - #region Private members - - private Action _execute; - private Func _canExecute; - private Action _executeNoParam; - private Func _canExecuteNoParam; - - #endregion - - #region Public properties - - public string Name { get; set; } - public string DisplayText { get; set; } - public string Tooltip { get; set; } - public ImageSource Icon { get; set; } - public KeyGesture Shortcut { get; set; } - - public string ShortcutText - { - get - { - string text = String.Empty; - - if ((Shortcut.Modifiers & ModifierKeys.Windows) != 0) - text += "Win+"; - - if ((Shortcut.Modifiers & ModifierKeys.Control) != 0) - text += "Ctrl+"; - - if ((Shortcut.Modifiers & ModifierKeys.Alt) != 0) - text += "Alt+"; - - if ((Shortcut.Modifiers & ModifierKeys.Shift) != 0) - text += "Shift+"; - - text += Enum.GetName(typeof(Key), Shortcut.Key); - return text; - } - } - - #endregion - - public event EventHandler CanExecuteChanged; - - public Command(string name = null, Action execute = null, Func canExecute = null) - { - Name = name; - _execute = execute; - _canExecute = canExecute; - } - - public Command(string name = null, Action execute = null, Func canExecute = null) - { - Name = name; - _executeNoParam = execute; - _canExecuteNoParam = canExecute; - } - - public virtual bool CanExecute(object parameter) - { - if (_canExecute != null) - return _canExecute(parameter); - else if (_canExecuteNoParam != null) - return _canExecuteNoParam(); - - return true; - } - - public virtual void Execute(object parameter) - { - if (_execute != null) - _execute(parameter); - else if (_executeNoParam != null) - _executeNoParam(); - } - } -} +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Windows.Input; +using System.Windows.Media; + +namespace RainmeterStudio.UI +{ + public class Command : ICommand + { + #region Private members + + private Action _execute; + private Func _canExecute; + private Action _executeNoParam; + private Func _canExecuteNoParam; + + #endregion + + #region Public properties + + public string Name { get; set; } + public string DisplayText { get; set; } + public string Tooltip { get; set; } + public ImageSource Icon { get; set; } + public KeyGesture Shortcut { get; set; } + + public string ShortcutText + { + get + { + string text = String.Empty; + + if ((Shortcut.Modifiers & ModifierKeys.Windows) != 0) + text += "Win+"; + + if ((Shortcut.Modifiers & ModifierKeys.Control) != 0) + text += "Ctrl+"; + + if ((Shortcut.Modifiers & ModifierKeys.Alt) != 0) + text += "Alt+"; + + if ((Shortcut.Modifiers & ModifierKeys.Shift) != 0) + text += "Shift+"; + + text += Enum.GetName(typeof(Key), Shortcut.Key); + return text; + } + } + + #endregion + + public event EventHandler CanExecuteChanged; + + public Command(string name = null, Action execute = null, Func canExecute = null) + { + Name = name; + _execute = execute; + _canExecute = canExecute; + } + + public Command(string name = null, Action execute = null, Func canExecute = null) + { + Name = name; + _executeNoParam = execute; + _canExecuteNoParam = canExecute; + } + + public virtual bool CanExecute(object parameter) + { + if (_canExecute != null) + return _canExecute(parameter); + else if (_canExecuteNoParam != null) + return _canExecuteNoParam(); + + return true; + } + + public virtual void Execute(object parameter) + { + if (_execute != null) + _execute(parameter); + else if (_executeNoParam != null) + _executeNoParam(); + } + } +} diff --git a/RainmeterEditor/UI/Controller/DocumentController.cs b/RainmeterStudio/UI/Controller/DocumentController.cs similarity index 89% rename from RainmeterEditor/UI/Controller/DocumentController.cs rename to RainmeterStudio/UI/Controller/DocumentController.cs index e5db844b..6acaded3 100644 --- a/RainmeterEditor/UI/Controller/DocumentController.cs +++ b/RainmeterStudio/UI/Controller/DocumentController.cs @@ -1,77 +1,77 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using RainmeterEditor.Business; -using RainmeterEditor.UI.Dialogs; -using RainmeterEditor.Model.Events; -using RainmeterEditor.Model; -using System.Windows; -using System.Windows.Input; -using System.Windows.Media.Imaging; - -namespace RainmeterEditor.UI.Controller -{ - public class DocumentController - { - #region Commands - - public Command DocumentCreateCommand { get; private set; } - - #endregion - - public event EventHandler DocumentOpened - { - add - { - DocumentManager.Instance.DocumentOpened += value; - } - remove - { - DocumentManager.Instance.DocumentOpened -= value; - } - } - public event EventHandler DocumentClosed; - - public Window OwnerWindow { get; set; } - - public DocumentController() - { - DocumentCreateCommand = new Command("DocumentCreateCommand", () => CreateWindow()) - { - DisplayText = Resources.Strings.DocumentCreateCommand_DisplayText, - Tooltip = Resources.Strings.DocumentCreateCommand_ToolTip, - Icon = new BitmapImage(new Uri("/Resources/Icons/page_white_star_16.png", UriKind.RelativeOrAbsolute)), - Shortcut = new KeyGesture(Key.N, ModifierKeys.Control) - }; - } - - public void CreateWindow(DocumentFormat defaultFormat = null, string defaultPath = "") - { - // Show dialog - var dialog = new CreateDocumentDialog() - { - Owner = OwnerWindow, - SelectedFormat = defaultFormat, - SelectedPath = defaultPath - }; - bool? res = dialog.ShowDialog(); - - if (!res.HasValue || !res.Value) - return; - - var format = dialog.SelectedFormat; - var path = dialog.SelectedPath; - - // Call manager - DocumentManager.Instance.Create(format, path); - } - - public void Create(DocumentFormat format, string path) - { - // Call manager - DocumentManager.Instance.Create(format, path); - } - - } -} +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using RainmeterStudio.Business; +using RainmeterStudio.UI.Dialogs; +using RainmeterStudio.Model.Events; +using RainmeterStudio.Model; +using System.Windows; +using System.Windows.Input; +using System.Windows.Media.Imaging; + +namespace RainmeterStudio.UI.Controller +{ + public class DocumentController + { + #region Commands + + public Command DocumentCreateCommand { get; private set; } + + #endregion + + public event EventHandler DocumentOpened + { + add + { + DocumentManager.Instance.DocumentOpened += value; + } + remove + { + DocumentManager.Instance.DocumentOpened -= value; + } + } + public event EventHandler DocumentClosed; + + public Window OwnerWindow { get; set; } + + public DocumentController() + { + DocumentCreateCommand = new Command("DocumentCreateCommand", () => CreateWindow()) + { + DisplayText = Resources.Strings.DocumentCreateCommand_DisplayText, + Tooltip = Resources.Strings.DocumentCreateCommand_ToolTip, + Icon = new BitmapImage(new Uri("/Resources/Icons/page_white_star_16.png", UriKind.RelativeOrAbsolute)), + Shortcut = new KeyGesture(Key.N, ModifierKeys.Control) + }; + } + + public void CreateWindow(DocumentFormat defaultFormat = null, string defaultPath = "") + { + // Show dialog + var dialog = new CreateDocumentDialog() + { + Owner = OwnerWindow, + SelectedFormat = defaultFormat, + SelectedPath = defaultPath + }; + bool? res = dialog.ShowDialog(); + + if (!res.HasValue || !res.Value) + return; + + var format = dialog.SelectedFormat; + var path = dialog.SelectedPath; + + // Call manager + DocumentManager.Instance.Create(format, path); + } + + public void Create(DocumentFormat format, string path) + { + // Call manager + DocumentManager.Instance.Create(format, path); + } + + } +} diff --git a/RainmeterEditor/UI/Dialogs/CreateDocumentDialog.xaml b/RainmeterStudio/UI/Dialogs/CreateDocumentDialog.xaml similarity index 95% rename from RainmeterEditor/UI/Dialogs/CreateDocumentDialog.xaml rename to RainmeterStudio/UI/Dialogs/CreateDocumentDialog.xaml index 7b416439..e28574e6 100644 --- a/RainmeterEditor/UI/Dialogs/CreateDocumentDialog.xaml +++ b/RainmeterStudio/UI/Dialogs/CreateDocumentDialog.xaml @@ -1,64 +1,64 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Path: - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Path: + + + + + + + + + + + + diff --git a/RainmeterEditor/UI/Dialogs/CreateDocumentDialog.xaml.cs b/RainmeterStudio/UI/Dialogs/CreateDocumentDialog.xaml.cs similarity index 92% rename from RainmeterEditor/UI/Dialogs/CreateDocumentDialog.xaml.cs rename to RainmeterStudio/UI/Dialogs/CreateDocumentDialog.xaml.cs index 6060ed95..8c2767bf 100644 --- a/RainmeterEditor/UI/Dialogs/CreateDocumentDialog.xaml.cs +++ b/RainmeterStudio/UI/Dialogs/CreateDocumentDialog.xaml.cs @@ -1,93 +1,93 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Linq; -using System.Text; -using System.Windows; -using System.Windows.Controls; -using System.Windows.Data; -using System.Windows.Documents; -using System.Windows.Input; -using System.Windows.Media; -using System.Windows.Media.Imaging; -using System.Windows.Shapes; -using RainmeterEditor.Business; -using RainmeterEditor.Model; - -namespace RainmeterEditor.UI.Dialogs -{ - /// - /// Interaction logic for CreateDocumentDialog.xaml - /// - public partial class CreateDocumentDialog : Window - { - /// - /// Gets or sets the currently selected file format - /// - public DocumentFormat SelectedFormat - { - get - { - return listFormats.SelectedItem as DocumentFormat; - } - set - { - listFormats.SelectedItem = value; - } - } - - /// - /// Gets or sets the path - /// - public string SelectedPath - { - get - { - return textPath.Text; - } - set - { - textPath.Text = value; - } - } - - /// - /// Creates a new instance of CreateDocumentDialog - /// - public CreateDocumentDialog() - { - InitializeComponent(); - - PopulateFormats(); - Validate(); - } - - private void PopulateFormats() - { - listFormats.ItemsSource = DocumentManager.Instance.DocumentFormats; - CollectionView view = (CollectionView)CollectionViewSource.GetDefaultView(listFormats.ItemsSource); - view.GroupDescriptions.Add(new PropertyGroupDescription("Category")); - } - - private void buttonCreate_Click(object sender, RoutedEventArgs e) - { - DialogResult = true; - Close(); - } - - private void buttonCancel_Click(object sender, RoutedEventArgs e) - { - DialogResult = false; - Close(); - } - - private void Validate() - { - bool res = true; - res &= !String.IsNullOrWhiteSpace(textPath.Text); - res &= (listFormats.SelectedItem != null); - - buttonCreate.IsEnabled = res; - } - } -} +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Linq; +using System.Text; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Shapes; +using RainmeterStudio.Business; +using RainmeterStudio.Model; + +namespace RainmeterStudio.UI.Dialogs +{ + /// + /// Interaction logic for CreateDocumentDialog.xaml + /// + public partial class CreateDocumentDialog : Window + { + /// + /// Gets or sets the currently selected file format + /// + public DocumentFormat SelectedFormat + { + get + { + return listFormats.SelectedItem as DocumentFormat; + } + set + { + listFormats.SelectedItem = value; + } + } + + /// + /// Gets or sets the path + /// + public string SelectedPath + { + get + { + return textPath.Text; + } + set + { + textPath.Text = value; + } + } + + /// + /// Creates a new instance of CreateDocumentDialog + /// + public CreateDocumentDialog() + { + InitializeComponent(); + + PopulateFormats(); + Validate(); + } + + private void PopulateFormats() + { + listFormats.ItemsSource = DocumentManager.Instance.DocumentFormats; + CollectionView view = (CollectionView)CollectionViewSource.GetDefaultView(listFormats.ItemsSource); + view.GroupDescriptions.Add(new PropertyGroupDescription("Category")); + } + + private void buttonCreate_Click(object sender, RoutedEventArgs e) + { + DialogResult = true; + Close(); + } + + private void buttonCancel_Click(object sender, RoutedEventArgs e) + { + DialogResult = false; + Close(); + } + + private void Validate() + { + bool res = true; + res &= !String.IsNullOrWhiteSpace(textPath.Text); + res &= (listFormats.SelectedItem != null); + + buttonCreate.IsEnabled = res; + } + } +} diff --git a/RainmeterEditor/UI/MainWindow.xaml b/RainmeterStudio/UI/MainWindow.xaml similarity index 95% rename from RainmeterEditor/UI/MainWindow.xaml rename to RainmeterStudio/UI/MainWindow.xaml index 34e353d1..65071269 100644 --- a/RainmeterEditor/UI/MainWindow.xaml +++ b/RainmeterStudio/UI/MainWindow.xaml @@ -1,116 +1,116 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Ready - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Ready + + + diff --git a/RainmeterEditor/UI/MainWindow.xaml.cs b/RainmeterStudio/UI/MainWindow.xaml.cs similarity index 92% rename from RainmeterEditor/UI/MainWindow.xaml.cs rename to RainmeterStudio/UI/MainWindow.xaml.cs index e378257e..29cacacb 100644 --- a/RainmeterEditor/UI/MainWindow.xaml.cs +++ b/RainmeterStudio/UI/MainWindow.xaml.cs @@ -1,75 +1,75 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Windows; -using System.Windows.Controls; -using System.Windows.Data; -using System.Windows.Documents; -using System.Windows.Input; -using System.Windows.Media; -using System.Windows.Media.Imaging; -using System.Windows.Navigation; -using System.Windows.Shapes; -using RainmeterEditor.Model.Events; -using RainmeterEditor.UI.Controller; -using Xceed.Wpf.AvalonDock.Layout; - -namespace RainmeterEditor.UI -{ - /// - /// Interaction logic for MainWindow.xaml - /// - public partial class MainWindow : Window - { - private DocumentController documentController; - - public Command DocumentCreateCommand { get { return documentController.DocumentCreateCommand; } } - - public MainWindow() - { - InitializeComponent(); - - this.DataContext = this; - - documentController = new DocumentController(); - documentController.OwnerWindow = this; - documentController.DocumentOpened += documentController_DocumentOpened; - AddKeyBinding(documentController.DocumentCreateCommand); - } - - private void AddKeyBinding(Command c) - { - if (c.Shortcut != null) - InputBindings.Add(new KeyBinding(c, c.Shortcut)); - } - - void documentController_DocumentOpened(object sender, DocumentOpenedEventArgs e) - { - // Spawn a new window - LayoutDocument document = new LayoutDocument(); - document.Content = e.Editor.EditorUI; - document.Title = e.Editor.Title; - document.Closing += document_Closing; - - documentPane.Children.Add(document); - documentPane.SelectedContentIndex = documentPane.IndexOf(document); - } - - void document_Closing(object sender, System.ComponentModel.CancelEventArgs e) - { - switch (MessageBox.Show("Are you sure?", "", MessageBoxButton.YesNoCancel, MessageBoxImage.Question)) - { - case MessageBoxResult.Yes: - break; - - case MessageBoxResult.No: - break; - - default: - e.Cancel = true; - return; - } - } - } +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; +using RainmeterStudio.Model.Events; +using RainmeterStudio.UI.Controller; +using Xceed.Wpf.AvalonDock.Layout; + +namespace RainmeterStudio.UI +{ + /// + /// Interaction logic for MainWindow.xaml + /// + public partial class MainWindow : Window + { + private DocumentController documentController; + + public Command DocumentCreateCommand { get { return documentController.DocumentCreateCommand; } } + + public MainWindow() + { + InitializeComponent(); + + this.DataContext = this; + + documentController = new DocumentController(); + documentController.OwnerWindow = this; + documentController.DocumentOpened += documentController_DocumentOpened; + AddKeyBinding(documentController.DocumentCreateCommand); + } + + private void AddKeyBinding(Command c) + { + if (c.Shortcut != null) + InputBindings.Add(new KeyBinding(c, c.Shortcut)); + } + + void documentController_DocumentOpened(object sender, DocumentOpenedEventArgs e) + { + // Spawn a new window + LayoutDocument document = new LayoutDocument(); + document.Content = e.Editor.EditorUI; + document.Title = e.Editor.Title; + document.Closing += document_Closing; + + documentPane.Children.Add(document); + documentPane.SelectedContentIndex = documentPane.IndexOf(document); + } + + void document_Closing(object sender, System.ComponentModel.CancelEventArgs e) + { + switch (MessageBox.Show("Are you sure?", "", MessageBoxButton.YesNoCancel, MessageBoxImage.Question)) + { + case MessageBoxResult.Yes: + break; + + case MessageBoxResult.No: + break; + + default: + e.Cancel = true; + return; + } + } + } } \ No newline at end of file diff --git a/RainmeterEditor/UI/SkinsPanel.xaml b/RainmeterStudio/UI/SkinsPanel.xaml similarity index 90% rename from RainmeterEditor/UI/SkinsPanel.xaml rename to RainmeterStudio/UI/SkinsPanel.xaml index 5a5746f6..95e255ca 100644 --- a/RainmeterEditor/UI/SkinsPanel.xaml +++ b/RainmeterStudio/UI/SkinsPanel.xaml @@ -1,16 +1,16 @@ - - - - - - - - - - + + + + + + + + + + diff --git a/RainmeterEditor/UI/SkinsPanel.xaml.cs b/RainmeterStudio/UI/SkinsPanel.xaml.cs similarity index 83% rename from RainmeterEditor/UI/SkinsPanel.xaml.cs rename to RainmeterStudio/UI/SkinsPanel.xaml.cs index 6d8425ab..30cf0c99 100644 --- a/RainmeterEditor/UI/SkinsPanel.xaml.cs +++ b/RainmeterStudio/UI/SkinsPanel.xaml.cs @@ -1,31 +1,31 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Windows; -using System.Windows.Controls; -using System.Windows.Data; -using System.Windows.Documents; -using System.Windows.Input; -using System.Windows.Media; -using System.Windows.Media.Imaging; -using System.Windows.Navigation; -using System.Windows.Shapes; -using RainmeterEditor.Interop; -using RainmeterEditor.Storage; - -namespace RainmeterEditor.UI -{ - /// - /// Interaction logic for SkinsPanel.xaml - /// - public partial class SkinsPanel : UserControl - { - public SkinsPanel() - { - InitializeComponent(); - - //var x = Rainmeter.Instance.Handle; - } - } -} +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; +using RainmeterStudio.Interop; +using RainmeterStudio.Storage; + +namespace RainmeterStudio.UI +{ + /// + /// Interaction logic for SkinsPanel.xaml + /// + public partial class SkinsPanel : UserControl + { + public SkinsPanel() + { + InitializeComponent(); + + //var x = Rainmeter.Instance.Handle; + } + } +} diff --git a/RainmeterEditor/UI/Styles/ButtonStyle.xaml b/RainmeterStudio/UI/Styles/ButtonStyle.xaml similarity index 98% rename from RainmeterEditor/UI/Styles/ButtonStyle.xaml rename to RainmeterStudio/UI/Styles/ButtonStyle.xaml index 53f3fd5a..72b3c419 100644 --- a/RainmeterEditor/UI/Styles/ButtonStyle.xaml +++ b/RainmeterStudio/UI/Styles/ButtonStyle.xaml @@ -1,55 +1,55 @@ - - + + \ No newline at end of file diff --git a/RainmeterEditor/UI/Styles/Common.xaml b/RainmeterStudio/UI/Styles/Common.xaml similarity index 98% rename from RainmeterEditor/UI/Styles/Common.xaml rename to RainmeterStudio/UI/Styles/Common.xaml index 57751a24..bae659cf 100644 --- a/RainmeterEditor/UI/Styles/Common.xaml +++ b/RainmeterStudio/UI/Styles/Common.xaml @@ -1,6 +1,6 @@ - - - - + + + + \ No newline at end of file diff --git a/RainmeterEditor/app.config b/RainmeterStudio/app.config similarity index 98% rename from RainmeterEditor/app.config rename to RainmeterStudio/app.config index fcd0c937..57c0f2cb 100644 --- a/RainmeterEditor/app.config +++ b/RainmeterStudio/app.config @@ -1,3 +1,3 @@ - - - + + + diff --git a/RainmeterEditor/packages.config b/RainmeterStudio/packages.config similarity index 98% rename from RainmeterEditor/packages.config rename to RainmeterStudio/packages.config index 82c30905..f523d41a 100644 --- a/RainmeterEditor/packages.config +++ b/RainmeterStudio/packages.config @@ -1,5 +1,5 @@ - - - - + + + + \ No newline at end of file diff --git a/packages/AvalonDock.2.0.2000/AvalonDock.2.0.2000.nuspec b/packages/AvalonDock.2.0.2000/AvalonDock.2.0.2000.nuspec new file mode 100644 index 00000000..89e0af8f --- /dev/null +++ b/packages/AvalonDock.2.0.2000/AvalonDock.2.0.2000.nuspec @@ -0,0 +1,19 @@ + + + + AvalonDock + 2.0.2000 + AvalonDock + Xceed Software Inc. + Xceed Software Inc. + http://avalondock.codeplex.com/license + http://avalondock.codeplex.com/ + false + AvalonDock is a docking windows control for WPF that lets you create customizable layouts using a full featured window docking system similar to what is found in many popular integrated development environements (IDEs) such as Visual Studio. It includes themes and samples to get you started. + Powerful and free WPF docking windows control. + v2.0.2000 is a bug-fix release + Copyright (c) 2007-2013 Xceed Software Inc. + en-US + WPF Docking + + \ No newline at end of file diff --git a/packages/AvalonDock.2.0.2000/lib/net40/Xceed.Wpf.AvalonDock.Themes.Aero.dll b/packages/AvalonDock.2.0.2000/lib/net40/Xceed.Wpf.AvalonDock.Themes.Aero.dll new file mode 100644 index 00000000..18ebf372 Binary files /dev/null and b/packages/AvalonDock.2.0.2000/lib/net40/Xceed.Wpf.AvalonDock.Themes.Aero.dll differ diff --git a/packages/AvalonDock.2.0.2000/lib/net40/Xceed.Wpf.AvalonDock.Themes.Expression.dll b/packages/AvalonDock.2.0.2000/lib/net40/Xceed.Wpf.AvalonDock.Themes.Expression.dll new file mode 100644 index 00000000..ff2cc3f4 Binary files /dev/null and b/packages/AvalonDock.2.0.2000/lib/net40/Xceed.Wpf.AvalonDock.Themes.Expression.dll differ diff --git a/packages/AvalonDock.2.0.2000/lib/net40/Xceed.Wpf.AvalonDock.Themes.Metro.dll b/packages/AvalonDock.2.0.2000/lib/net40/Xceed.Wpf.AvalonDock.Themes.Metro.dll new file mode 100644 index 00000000..4e391d41 Binary files /dev/null and b/packages/AvalonDock.2.0.2000/lib/net40/Xceed.Wpf.AvalonDock.Themes.Metro.dll differ diff --git a/packages/AvalonDock.2.0.2000/lib/net40/Xceed.Wpf.AvalonDock.Themes.VS2010.dll b/packages/AvalonDock.2.0.2000/lib/net40/Xceed.Wpf.AvalonDock.Themes.VS2010.dll new file mode 100644 index 00000000..71a35f58 Binary files /dev/null and b/packages/AvalonDock.2.0.2000/lib/net40/Xceed.Wpf.AvalonDock.Themes.VS2010.dll differ diff --git a/packages/AvalonDock.2.0.2000/lib/net40/Xceed.Wpf.AvalonDock.dll b/packages/AvalonDock.2.0.2000/lib/net40/Xceed.Wpf.AvalonDock.dll new file mode 100644 index 00000000..a7d76cdd Binary files /dev/null and b/packages/AvalonDock.2.0.2000/lib/net40/Xceed.Wpf.AvalonDock.dll differ diff --git a/packages/AvalonDock.2.0.2000/lib/net40/Xceed.Wpf.AvalonDock.xml b/packages/AvalonDock.2.0.2000/lib/net40/Xceed.Wpf.AvalonDock.xml new file mode 100644 index 00000000..abf092f2 --- /dev/null +++ b/packages/AvalonDock.2.0.2000/lib/net40/Xceed.Wpf.AvalonDock.xml @@ -0,0 +1,4044 @@ + + + + Xceed.Wpf.AvalonDock + + + + + Provides derived classes an opportunity to handle execute code before to the Parent property changes. + + + + + Provides derived classes an opportunity to handle changes to the Parent property. + + + + + Removes any empty container not directly referenced by other layout items + + + + + BackgroundWhileDragging Dependency Property + + + + + OpacityWhileDragging Dependency Property + + + + + Gets or sets the BackgroundWhileDragging property. This dependency property + indicates .... + + + + + Gets or sets the OpacityWhileDragging property. This dependency property + indicates .... + + + + + A static class for retail validated assertions. + Instead of breaking into the debugger an exception is thrown. + + + + + Ensure that the current thread's apartment state is what's expected. + + + The required apartment state for the current thread. + + + The message string for the exception to be thrown if the state is invalid. + + + Thrown if the calling thread's apartment state is not the same as the requiredState. + + + + + Ensure that an argument is neither null nor empty. + + The string to validate. + The name of the parameter that will be presented if an exception is thrown. + + + + Ensure that an argument is neither null nor does it consist only of whitespace. + + The string to validate. + The name of the parameter that will be presented if an exception is thrown. + + + Verifies that an argument is not null. + Type of the object to validate. Must be a class. + The object to validate. + The name of the parameter that will be presented if an exception is thrown. + + + Verifies that an argument is not null. + Type of the object to validate. Must be a class. + The object to validate. + The name of the parameter that will be presented if an exception is thrown. + + + Verifies that an argument is null. + Type of the object to validate. Must be a class. + The object to validate. + The name of the parameter that will be presented if an exception is thrown. + + + + Verifies the specified statement is true. Throws an ArgumentException if it's not. + + The statement to be verified as true. + Name of the parameter to include in the ArgumentException. + + + + Verifies the specified statement is true. Throws an ArgumentException if it's not. + + The statement to be verified as true. + Name of the parameter to include in the ArgumentException. + The message to include in the ArgumentException. + + + + Verifies that the specified value is within the expected range. The assertion fails if it isn't. + + The lower bound inclusive value. + The value to verify. + The upper bound exclusive value. + + + The native RGB macro. + + + + + Convert a native integer that represent a color with an alpha channel into a Color struct. + The integer that represents the color. Its bits are of the format 0xAARRGGBB. + A Color representation of the parameter. + + + From a list of BitmapFrames find the one that best matches the requested dimensions. + The methods used here are copied from Win32 sources. We want to be consistent with + system behaviors. + + + + Simple guard against the exceptions that File.Delete throws on null and empty strings. + + The path to delete. Unlike File.Delete, this can be null or empty. + + Note that File.Delete, and by extension SafeDeleteFile, does not throw an exception + if the file does not exist. + + + + GDI's DeleteObject + + + GDI+'s DisposeImage + + + + + Utility to help classes catenate their properties for implementing ToString(). + + The StringBuilder to catenate the results into. + The name of the property to be catenated. + The value of the property to be catenated. + + + + Generates ToString functionality for a struct. This is an expensive way to do it, + it exists for the sake of debugging while classes are in flux. + Eventually this should just be removed and the classes should + do this without reflection. + + + + + + + + Encodes a URL string. Duplicated functionality from System.Web.HttpUtility.UrlEncode. + + + + + Duplicated from System.Web.HttpUtility because System.Web isn't part of the client profile. + URL Encoding replaces ' ' with '+' and unsafe ASCII characters with '%XX'. + Safe characters are defined in RFC2396 (http://www.ietf.org/rfc/rfc2396.txt). + They are the 7-bit ASCII alphanumerics and the mark characters "-_.!~*'()". + This implementation does not treat '~' as a safe character to be consistent with the System.Web version. + + + + + Is this using WPF4? + + + There are a few specific bugs in Window in 3.5SP1 and below that require workarounds + when handling WM_NCCALCSIZE on the HWND. + + + + + Documents Read-Only Dependency Property + + + + + Provides a secure method for setting the Documents property. + This dependency property indicates the list of documents. + + The new value for the property. + + + + Anchorables Read-Only Dependency Property + + + + + Provides a secure method for setting the Anchorables property. + This dependency property indicates the list of anchorables. + + The new value for the property. + + + + SelectedDocument Dependency Property + + + + + Handles changes to the SelectedDocument property. + + + + + Provides derived classes an opportunity to handle changes to the SelectedDocument property. + + + + + SelectedAnchorable Dependency Property + + + + + Handles changes to the SelectedAnchorable property. + + + + + Provides derived classes an opportunity to handle changes to the SelectedAnchorable property. + + + + + Gets the Documents property. This dependency property + indicates the list of documents. + + + + + Gets the Anchorables property. This dependency property + indicates the list of anchorables. + + + + + Gets or sets the SelectedDocument property. This dependency property + indicates the selected document. + + + + + Gets or sets the SelectedAnchorable property. This dependency property + indicates the selected anchorable. + + + + + IsDragging Read-Only Dependency Property + + + + + Provides a secure method for setting the IsDragging property. + This dependency property indicates that this floating window is being dragged. + + The new value for the property. + + + + Handles changes to the IsDragging property. + + + + + Provides derived classes an opportunity to handle changes to the IsDragging property. + + + + + IsMaximized Read-Only Dependency Property + + + + + Provides a secure method for setting the IsMaximized property. + This dependency property indicates if the window is maximized. + + The new value for the property. + + + + Gets the IsDragging property. This dependency property + indicates that this floating window is being dragged. + + + + + Gets the IsMaximized property. This dependency property + indicates if the window is maximized. + + + + + Content Dependency Property + + + + + Handles changes to the Content property. + + + + + Provides derived classes an opportunity to handle changes to the Content property. + + + + + Gets or sets the Content property. This dependency property + indicates .... + + + + + Model Dependency Property + + + + + Handles changes to the Model property. + + + + + Provides derived classes an opportunity to handle changes to the Model property. + + + + + LayoutItem Read-Only Dependency Property + + + + + Provides a secure method for setting the LayoutItem property. + This dependency property indicates the LayoutItem attached to this tag item. + + The new value for the property. + + + + Gets or sets the Model property. This dependency property + indicates model attached to the anchorable tab item. + + + + + Gets the LayoutItem property. This dependency property + indicates the LayoutItem attached to this tag item. + + + + A static class for verifying assumptions. + + + + Executes the specified argument. + + The function to execute. + + + Obsolete: Use Standard.Assert.AreEqual instead of Assert.Equals + The generic type to compare for equality. + The first generic type data to compare. This is is the expected value. + The second generic type data to compare. This is the actual value. + + + + Verifies that two generic type data are equal. The assertion fails if they are not. + + The generic type to compare for equality. + The first generic type data to compare. This is is the expected value. + The second generic type data to compare. This is the actual value. + This breaks into the debugger in the case of a failed assertion. + + + + Verifies that two generic type data are not equal. The assertion fails if they are. + + The generic type to compare for inequality. + The first generic type data to compare. This is is the value that's not expected. + The second generic type data to compare. This is the actual value. + This breaks into the debugger in the case of a failed assertion. + + + + Verifies that if the specified condition is true, then so is the result. + The assertion fails if the condition is true but the result is false. + + if set to true [condition]. + + A second Boolean statement. If the first was true then so must this be. + If the first statement was false then the value of this is ignored. + + This breaks into the debugger in the case of a failed assertion. + + + + Lazy evaluation overload. Verifies that if a condition is true, then so is a secondary value. + + The conditional value. + A function to be evaluated for truth if the condition argument is true. + + This overload only evaluates the result if the first condition is true. + + + + + Verifies that a string has content. I.e. it is not null and it is not empty. + + The string to verify. + + + + Verifies that a string has content. I.e. it is not null and it is not purely whitespace. + + The string to verify. + + + + Verifies the specified value is not null. The assertion fails if it is. + + The generic reference type. + The value to check for nullness. + This breaks into the debugger in the case of a failed assertion. + + + + Verifies that the specified condition is false. The assertion fails if it is true. + + The expression that should be false. + This breaks into the debugger in the case of a failed assertion. + + + + Verifies that the specified condition is false. The assertion fails if it is true. + + The expression that should be false. + The message to display if the condition is true. + This breaks into the debugger in the case of a failed assertion. + + + + Verifies that the specified condition is true. The assertion fails if it is not. + + A condition that is expected to be true. + This breaks into the debugger in the case of a failed assertion. + + + + Verifies that the specified condition is true. The assertion fails if it is not. + + A condition that is expected to be true. + The message to write in case the condition is false. + This breaks into the debugger in the case of a failed assertion. + + + + This line should never be executed. The assertion always fails. + + This breaks into the debugger in the case of a failed assertion. + + + + This line should never be executed. The assertion always fails. + + The message to display if this function is executed. + This breaks into the debugger in the case of a failed assertion. + + + + Verifies that the specified object is null. The assertion fails if it is not. + + The item to verify is null. + + + + Verifies that the specified value is within the expected range. The assertion fails if it isn't. + + The lower bound inclusive value. + The value to verify. + The upper bound inclusive value. + + + + Verifies that the specified value is within the expected range. The assertion fails if it isn't. + + The lower bound inclusive value. + The value to verify. + The upper bound exclusive value. + + + + Verify the current thread's apartment state is what's expected. The assertion fails if it isn't + + + The expected apartment state for the current thread. + + This breaks into the debugger in the case of a failed assertion. + + + A function signature for Assert.Evaluate. + + + A function signature for Assert.Implies. + Returns the truth of a predicate. + + + + Get the input element that was focused before user left the layout element + + Element to look for + Input element + + + + Get the last window handle focused before user left the element passed as argument + + + + + + + Given a layout element tries to set the focus of the keyword where it was before user moved to another element + + + + + + Provides derived classes an opportunity to handle changes to the IsSelected property. + + + + + Provides derived classes an opportunity to handle changes to the IsActive property. + + + + + Test if the content can be closed + + + + + + Close the content + + Please note that usually the anchorable is only hidden (not closed). By default when user click the X button it only hides the content. + + + + Float the content in a popup window + + + + + Dock the content as document + + + + + Re-dock the content to its previous container + + + + + Event fired when the content is closed (i.e. removed definitely from the layout) + + + + + Event fired when the content is about to be closed (i.e. removed definitely from the layout) + + Please note that LayoutAnchorable also can be hidden. Usually user hide anchorables when click the 'X' button. To completely close + an anchorable the user should click the 'Close' menu item from the context menu. When an LayoutAnchorable is hidden its visibility changes to false and + IsHidden property is set to true. + Hanlde the Hiding event for the LayoutAnchorable to cancel the hide operation. + + + + Background Dependency Property + + + + + AnchorableStyle Dependency Property + + + + + Gets or sets the Background property. This dependency property + indicates background of the autohide childwindow. + + + + + Gets or sets the AnchorableStyle property. This dependency property + indicates the style to apply to the LayoutAnchorableControl hosted in this auto hide window. + + + + + SingleContentLayoutItem Dependency Property + + + + + Handles changes to the SingleContentLayoutItem property. + + + + + Provides derived classes an opportunity to handle changes to the SingleContentLayoutItem property. + + + + + Gets or sets the SingleContentLayoutItem property. This dependency property + indicates the layout item of the selected content when is shown a single anchorable pane. + + + + ShellItem attribute flags. SIATTRIBFLAGS_* + + + + Flags for SetTabProperties. STPF_* + + The native enum was called STPFLAG. + + + + Flags for Setting Taskbar Progress state. TBPF_* + + + The native enum was called TBPFLAG. + + + + + THUMBBUTTON mask. THB_* + + + + + THUMBBUTTON flags. THBF_* + + + + + GetPropertyStoreFlags. GPS_*. + + + These are new for Vista, but are used in downlevel components + + + + + KNOWNDESTCATEGORY. KDC_* + + + + Objects can be copied + DROPEFFECT_COPY + + + Objects can be moved + DROPEFFECT_MOVE + + + Objects can be linked + + DROPEFFECT_LINK. + + If this bit is set on an item in the shell folder, a + 'Create Shortcut' menu item will be added to the File + menu and context menus for the item. If the user selects + that command, your IContextMenu::InvokeCommand() will be called + with 'link'. + That flag will also be used to determine if 'Create Shortcut' + should be added when the item in your folder is dragged to another + folder. + + + + supports BindToObject(IID_IStorage) + + + Objects can be renamed + + + Objects can be deleted + + + Objects have property sheets + + + Objects are drop target + + + Object is encrypted (use alt color) + + + 'Slow' object + + + Ghosted icon + + + Shortcut (link) + + + Shared + + + Read-only + + + Hidden object + + + May contain children with SFGAO_FILESYSTEM + + + Support BindToObject(IID_IShellFolder) + + + Is a win32 file system object (file/folder/root) + + + May contain children with SFGAO_FOLDER (may be slow) + + + Invalidate cached information (may be slow) + + + Is this removeable media? + + + Object is compressed (use alt color) + + + Supports IShellFolder, but only implements CreateViewObject() (non-folder view) + + + Is a non-enumerated object (should be hidden) + + + Should show bold in explorer tree + + + Obsolete + + + Obsolete + + + Supports BindToObject(IID_IStream) + + + May contain children with SFGAO_STORAGE or SFGAO_STREAM + + + For determining storage capabilities, ie for open/save semantics + + + + Attributes that are masked out for PKEY_SFGAOFlags because they are considered + to cause slow calculations or lack context + (SFGAO_VALIDATE | SFGAO_ISSLOW | SFGAO_HASSUBFOLDER and others) + + + + + IShellFolder::EnumObjects grfFlags bits. Also called SHCONT + + + + + IShellFolder::GetDisplayNameOf/SetNameOf uFlags. Also called SHGDNF. + + + For compatibility with SIGDN, these bits must all sit in the LOW word. + + + + + SHELLITEMCOMPAREHINTF. SICHINT_*. + + + + iOrder based on display in a folder view + + + exact instance compare + + + iOrder based on canonical name (better performance) + + + + ShellItem enum. SIGDN_*. + + + + + STR_GPS_* + + + When requesting a property store through IShellFolder, you can specify the equivalent of + GPS_DEFAULT by passing in a null IBindCtx parameter. + + You can specify the equivalent of GPS_READWRITE by passing a mode of STGM_READWRITE | STGM_EXCLUSIVE + in the bind context + + Here are the string versions of GPS_ flags, passed to IShellFolder::BindToObject() via IBindCtx::RegisterObjectParam() + These flags are valid when requesting an IPropertySetStorage or IPropertyStore handler + + The meaning of these flags are described above. + + There is no STR_ equivalent for GPS_TEMPORARY because temporary property stores + are provided by IShellItem2 only -- not by the underlying IShellFolder. + + + + + WPARAM value for a THUMBBUTTON being clicked. + + + + fmtid + + + pid + + + PKEY_Title + + + PKEY_AppUserModel_ID + + + PKEY_AppUserModel_IsDestListSeparator + + + PKEY_AppUserModel_RelaunchCommand + + + PKEY_AppUserModel_RelaunchDisplayNameResource + + + PKEY_AppUserModel_RelaunchIconResource + + + Unknown Object Array + + + + Shell Namespace helper + + + + + Shell Namespace helper 2 + + + + + This function must be called first to validate use of other members. + + + + + This function adds a tab for hwnd to the taskbar. + + The HWND for which to add the tab. + + + + This function deletes a tab for hwnd from the taskbar. + + The HWND for which the tab is to be deleted. + + + + This function activates the tab associated with hwnd on the taskbar. + + The HWND for which the tab is to be actuvated. + + + + This function marks hwnd in the taskbar as the active tab. + + The HWND to activate. + + + + Marks a window as full-screen. + + The handle of the window to be marked. + A Boolean value marking the desired full-screen status of the window. + + Setting the value of fFullscreen to true, the Shell treats this window as a full-screen window, and the taskbar + is moved to the bottom of the z-order when this window is active. Setting the value of fFullscreen to false + removes the full-screen marking, but does not cause the Shell to treat the window as though it were + definitely not full-screen. With a false fFullscreen value, the Shell depends on its automatic detection facility + to specify how the window should be treated, possibly still flagging the window as full-screen. + + + + + Allows an application to retrieve the most recent and frequent documents opened in that app, as reported via SHAddToRecentDocs + + + + + Set the App User Model ID for the application retrieving this list. If an AppID is not provided via this method, + the system will use a heuristically determined ID. This method must be called before GetList. + + App Id. + + + + Retrieve an IEnumObjects or IObjectArray for IShellItems and/or IShellLinks. + Items may appear in both the frequent and recent lists. + + + + + + + Provides access to the App User Model ID on objects supporting this value. + + + + + Provides access to the ProgID associated with an object + + + + + Title Dependency Property + + + + + Handles changes to the Title property. + + + + + Provides derived classes an opportunity to handle changes to the Title property. + + + + + IconSource Dependency Property + + + + + Handles changes to the IconSource property. + + + + + Provides derived classes an opportunity to handle changes to the IconSource property. + + + + + ContentId Dependency Property + + + + + Handles changes to the ContentId property. + + + + + Provides derived classes an opportunity to handle changes to the ContentId property. + + + + + IsSelected Dependency Property + + + + + Handles changes to the IsSelected property. + + + + + Provides derived classes an opportunity to handle changes to the IsSelected property. + + + + + IsActive Dependency Property + + + + + Handles changes to the IsActive property. + + + + + Provides derived classes an opportunity to handle changes to the IsActive property. + + + + + CanClose Dependency Property + + + + + Handles changes to the CanClose property. + + + + + Provides derived classes an opportunity to handle changes to the CanClose property. + + + + + CanFloat Dependency Property + + + + + Handles changes to the CanFloat property. + + + + + Provides derived classes an opportunity to handle changes to the CanFloat property. + + + + + CloseCommand Dependency Property + + + + + Handles changes to the CloseCommand property. + + + + + Provides derived classes an opportunity to handle changes to the CloseCommand property. + + + + + Coerces the CloseCommand value. + + + + + FloatCommand Dependency Property + + + + + Handles changes to the FloatCommand property. + + + + + Provides derived classes an opportunity to handle changes to the FloatCommand property. + + + + + Coerces the FloatCommand value. + + + + + DockAsDocumentCommand Dependency Property + + + + + Handles changes to the DockAsDocumentCommand property. + + + + + Provides derived classes an opportunity to handle changes to the DockAsDocumentCommand property. + + + + + Coerces the DockAsDocumentCommand value. + + + + + CloseAllButThisCommand Dependency Property + + + + + Handles changes to the CloseAllButThisCommand property. + + + + + Provides derived classes an opportunity to handle changes to the CloseAllButThisCommand property. + + + + + Coerces the CloseAllButThisCommand value. + + + + + ActivateCommand Dependency Property + + + + + Handles changes to the ActivateCommand property. + + + + + Provides derived classes an opportunity to handle changes to the ActivateCommand property. + + + + + Coerces the ActivateCommand value. + + + + + NewVerticalTabGroupCommand Dependency Property + + + + + Handles changes to the NewVerticalTabGroupCommand property. + + + + + Provides derived classes an opportunity to handle changes to the NewVerticalTabGroupCommand property. + + + + + NewHorizontalTabGroupCommand Dependency Property + + + + + Handles changes to the NewHorizontalTabGroupCommand property. + + + + + Provides derived classes an opportunity to handle changes to the NewHorizontalTabGroupCommand property. + + + + + MoveToNextTabGroupCommand Dependency Property + + + + + Handles changes to the MoveToNextTabGroupCommand property. + + + + + Provides derived classes an opportunity to handle changes to the MoveToNextTabGroupCommand property. + + + + + MoveToPreviousTabGroupCommand Dependency Property + + + + + Handles changes to the MoveToPreviousTabGroupCommand property. + + + + + Provides derived classes an opportunity to handle changes to the MoveToPreviousTabGroupCommand property. + + + + + Gets or sets the Title property. This dependency property + indicates the title of the element. + + + + + Gets or sets the IconSource property. This dependency property + indicates icon associated with the item. + + + + + Gets or sets the ContentId property. This dependency property + indicates the content id used to retrive content when deserializing layouts. + + + + + Gets or sets the IsSelected property. This dependency property + indicates if the item is selected inside its container. + + + + + Gets or sets the IsActive property. This dependency property + indicates if the item is active in the UI. + + + + + Gets or sets the CanClose property. This dependency property + indicates if the item can be closed. + + + + + Gets or sets the CanFloat property. This dependency property + indicates if user can move the layout element dragging it to another position. + + + + + Gets or sets the CloseCommand property. This dependency property + indicates the command to execute when user click the document close button. + + + + + Gets or sets the FloatCommand property. This dependency property + indicates the command to execute when user click the float button. + + By default this command move the anchorable inside new floating window. + + + + Gets or sets the DockAsDocumentCommand property. This dependency property + indicates the command to execute when user click the DockAsDocument button. + + By default this command move the anchorable inside the last focused document pane. + + + + Gets or sets the CloseAllButThisCommand property. This dependency property + indicates the 'Close All But This' command. + + + + + Gets or sets the ActivateCommand property. This dependency property + indicates the command to execute when user wants to activate a content (either a Document or an Anchorable). + + + + + Gets or sets the NewVerticalTabGroupCommand property. This dependency property + indicates the new vertical tab group command. + + + + + Gets or sets the NewHorizontalTabGroupCommand property. This dependency property + indicates the new horizontal tab group command. + + + + + Gets or sets the MoveToNextTabGroupCommand property. This dependency property + indicates move to next tab group command. + + + + + Gets or sets the MoveToPreviousTabGroupCommand property. This dependency property + indicates move to rpevious tab group command. + + + + + Side Read-Only Dependency Property + + + + + Provides a secure method for setting the Side property. + This dependency property indicates the anchor side of the control. + + The new value for the property. + + + + Gets the Side property. This dependency property + indicates the anchor side of the control. + + + + The extent of the top of the window to treat as the caption. + + + + Gets or sets the ShowSystemMenu property. This dependency property + indicates if the system menu should be shown at right click on the caption. + + + + + Convert a point in device independent pixels (1/96") to a point in the system coordinates. + + A point in the logical coordinate system. + Returns the parameter converted to the system's coordinates. + + + + Convert a point in system coordinates to a point in device independent pixels (1/96"). + + A point in the physical coordinate system. + Returns the parameter converted to the device independent coordinate system. + + + The Window that's chrome is being modified. + + + Underlying HWND for the _window. + + + Object that describes the current modifications being made to the chrome. + + + Add and remove a native WindowStyle from the HWND. + The styles to be removed. These can be bitwise combined. + The styles to be added. These can be bitwise combined. + Whether the styles of the HWND were modified as a result of this call. + + + + Get the WindowState as the native HWND knows it to be. This isn't necessarily the same as what Window thinks. + + + + + Get the bounding rectangle for the window in physical coordinates. + + The bounding rectangle for the window. + + + + Update the items in the system menu based on the current, or assumed, WindowState. + + + The state to assume that the Window is in. This can be null to query the Window's state. + + + We want to update the menu while we have some control over whether the caption will be repainted. + + + + + Matrix of the HT values to return when responding to NC window messages. + + + + IID_IEnumIDList + + + IID_IEnumObjects + + + IID_IHTMLDocument2 + + + IID_IModalWindow + + + IID_IObjectArray + + + IID_IObjectCollection + + + IID_IPropertyNotifySink + + + IID_IPropertyStore + + + IID_IServiceProvider + + + IID_IShellFolder + + + IID_IShellLink + + + IID_IShellItem + + + IID_IShellItem2 + + + IID_IShellItemArray + + + IID_ITaskbarList + + + IID_ITaskbarList2 + + + IID_IUnknown + + + IID_IApplicationDestinations + + + IID_IApplicationDocumentLists + + + IID_ICustomDestinationList + + + IID_IObjectWithAppUserModelID + + + IID_IObjectWithProgID + + + IID_ITaskbarList3 + + + IID_ITaskbarList4 + + + CLSID_TaskbarList + IID_ITaskbarList + + + CLSID_EnumerableObjectCollection + IID_IEnumObjects. + + + CLSID_ShellLink + IID_IShellLink + + + CLSID_DestinationList + IID_ICustomDestinationList + + + CLSID_ApplicationDestinations + IID_IApplicationDestinations + + + CLSID_ApplicationDocumentLists + IID_IApplicationDocumentLists + + + + IsDraggingOver Attached Dependency Property + + + + + Gets the IsDraggingOver property. This dependency property + indicates if user is dragging a window over the target element. + + + + + Sets the IsDraggingOver property. This dependency property + indicates if user is dragging away a window from the target element. + + + + + DropDownContextMenu Dependency Property + + + + + DropDownContextMenuDataContext Dependency Property + + + + + Gets or sets the DropDownContextMenu property. This dependency property + indicates context menu to show when a right click is detected over the area occpied by the control. + + + + + Gets or sets the DropDownContextMenuDataContext property. This dependency property + indicates data context to attach when context menu is shown. + + + + + DropDownContextMenu Dependency Property + + + + + Handles changes to the DropDownContextMenu property. + + + + + Provides derived classes an opportunity to handle changes to the DropDownContextMenu property. + + + + + DropDownContextMenuDataContext Dependency Property + + + + + Gets or sets the DropDownContextMenu property. This dependency property + indicates drop down menu to show up when user click on an anchorable menu pin. + + + + + Gets or sets the DropDownContextMenuDataContext property. This dependency property + indicates data context to set for drop down context menu. + + + + + Model Dependency Property + + + + + Handles changes to the Model property. + + + + + Provides derived classes an opportunity to handle changes to the Model property. + + + + + LayoutItem Read-Only Dependency Property + + + + + Provides a secure method for setting the LayoutItem property. + This dependency property indicates the LayoutItem attached to this tag item. + + The new value for the property. + + + + Gets or sets the Model property. This dependency property + indicates the model attached to this view. + + + + + Gets the LayoutItem property. This dependency property + indicates the LayoutItem attached to this tag item. + + + + Display the system menu at a specified location. + The location to display the system menu, in logical screen coordinates. + + + + Private constructor. The public way to access this class is through the static Current property. + + + + + Hide this contents + + Add this content to collection of parent root. + + + + Show the content + + Try to show the content where it was previously hidden. + + + + Add the anchorable to a DockingManager layout + + + + + + + Get a value indicating if the anchorable is anchored to a border in an autohide status + + + + + Layout Dependency Property + + + + + Handles changes to the Layout property. + + + + + Provides derived classes an opportunity to handle changes to the property. + + + + + Coerces the value. + + + + + LayoutUpdateStrategy Dependency Property + + + + + DocumentPaneTemplate Dependency Property + + + + + Handles changes to the DocumentPaneTemplate property. + + + + + Provides derived classes an opportunity to handle changes to the DocumentPaneTemplate property. + + + + + AnchorablePaneTemplate Dependency Property + + + + + Handles changes to the AnchorablePaneDataTemplate property. + + + + + Provides derived classes an opportunity to handle changes to the AnchorablePaneDataTemplate property. + + + + + AnchorSideTemplate Dependency Property + + + + + AnchorGroupTemplate Dependency Property + + + + + AnchorTemplate Dependency Property + + + + + DocumentPaneControlStyle Dependency Property + + + + + Handles changes to the DocumentPaneControlStyle property. + + + + + Provides derived classes an opportunity to handle changes to the DocumentPaneControlStyle property. + + + + + AnchorablePaneControlStyle Dependency Property + + + + + Handles changes to the AnchorablePaneControlStyle property. + + + + + Provides derived classes an opportunity to handle changes to the AnchorablePaneControlStyle property. + + + + + DocumentHeaderTemplate Dependency Property + + + + + Handles changes to the DocumentHeaderTemplate property. + + + + + Provides derived classes an opportunity to handle changes to the DocumentHeaderTemplate property. + + + + + Coerces the DocumentHeaderTemplate value. + + + + + DocumentHeaderTemplateSelector Dependency Property + + + + + Handles changes to the DocumentHeaderTemplateSelector property. + + + + + Provides derived classes an opportunity to handle changes to the DocumentHeaderTemplateSelector property. + + + + + Coerces the DocumentHeaderTemplateSelector value. + + + + + DocumentTitleTemplate Dependency Property + + + + + Handles changes to the DocumentTitleTemplate property. + + + + + Provides derived classes an opportunity to handle changes to the DocumentTitleTemplate property. + + + + + Coerces the DocumentTitleTemplate value. + + + + + DocumentTitleTemplateSelector Dependency Property + + + + + Handles changes to the DocumentTitleTemplateSelector property. + + + + + Provides derived classes an opportunity to handle changes to the DocumentTitleTemplateSelector property. + + + + + Coerces the DocumentTitleTemplateSelector value. + + + + + AnchorableTitleTemplate Dependency Property + + + + + Handles changes to the AnchorableTitleTemplate property. + + + + + Provides derived classes an opportunity to handle changes to the AnchorableTitleTemplate property. + + + + + Coerces the AnchorableTitleTemplate value. + + + + + AnchorableTitleTemplateSelector Dependency Property + + + + + Handles changes to the AnchorableTitleTemplateSelector property. + + + + + Provides derived classes an opportunity to handle changes to the AnchorableTitleTemplateSelector property. + + + + + AnchorableHeaderTemplate Dependency Property + + + + + Handles changes to the AnchorableHeaderTemplate property. + + + + + Provides derived classes an opportunity to handle changes to the AnchorableHeaderTemplate property. + + + + + Coerces the AnchorableHeaderTemplate value. + + + + + AnchorableHeaderTemplateSelector Dependency Property + + + + + Handles changes to the AnchorableHeaderTemplateSelector property. + + + + + Provides derived classes an opportunity to handle changes to the AnchorableHeaderTemplateSelector property. + + + + + LayoutRootPanel Dependency Property + + + + + Handles changes to the LayoutRootPanel property. + + + + + Provides derived classes an opportunity to handle changes to the LayoutRootPanel property. + + + + + RightSidePanel Dependency Property + + + + + Handles changes to the RightSidePanel property. + + + + + Provides derived classes an opportunity to handle changes to the RightSidePanel property. + + + + + LeftSidePanel Dependency Property + + + + + Handles changes to the LeftSidePanel property. + + + + + Provides derived classes an opportunity to handle changes to the LeftSidePanel property. + + + + + TopSidePanel Dependency Property + + + + + Handles changes to the TopSidePanel property. + + + + + Provides derived classes an opportunity to handle changes to the TopSidePanel property. + + + + + BottomSidePanel Dependency Property + + + + + Handles changes to the BottomSidePanel property. + + + + + Provides derived classes an opportunity to handle changes to the BottomSidePanel property. + + + + + AutoHideWindow Read-Only Dependency Property + + + + + Provides a secure method for setting the AutoHideWindow property. + This dependency property indicates the currently shown autohide window. + + The new value for the property. + + + + Handles changes to the AutoHideWindow property. + + + + + Provides derived classes an opportunity to handle changes to the AutoHideWindow property. + + + + + LayoutItemTemplate Dependency Property + + + + + Handles changes to the AnchorableTemplate property. + + + + + Provides derived classes an opportunity to handle changes to the AnchorableTemplate property. + + + + + LayoutItemTemplateSelector Dependency Property + + + + + Handles changes to the LayoutItemTemplateSelector property. + + + + + Provides derived classes an opportunity to handle changes to the LayoutItemTemplateSelector property. + + + + + DocumentsSource Dependency Property + + + + + Handles changes to the DocumentsSource property. + + + + + Provides derived classes an opportunity to handle changes to the DocumentsSource property. + + + + + DocumentContextMenu Dependency Property + + + + + AnchorablesSource Dependency Property + + + + + Handles changes to the AnchorablesSource property. + + + + + Provides derived classes an opportunity to handle changes to the AnchorablesSource property. + + + + + ActiveContent Dependency Property + + + + + Handles changes to the ActiveContent property. + + + + + Provides derived classes an opportunity to handle changes to the ActiveContent property. + + + + + AnchorableContextMenu Dependency Property + + + + + Theme Dependency Property + + + + + Handles changes to the Theme property. + + + + + Provides derived classes an opportunity to handle changes to the Theme property. + + + + + GridSplitterWidth Dependency Property + + + + + GridSplitterHeight Dependency Property + + + + + DocumentPaneMenuItemHeaderTemplate Dependency Property + + + + + Handles changes to the DocumentPaneMenuItemHeaderTemplate property. + + + + + Provides derived classes an opportunity to handle changes to the DocumentPaneMenuItemHeaderTemplate property. + + + + + Coerces the DocumentPaneMenuItemHeaderTemplate value. + + + + + DocumentPaneMenuItemHeaderTemplateSelector Dependency Property + + + + + Handles changes to the DocumentPaneMenuItemHeaderTemplateSelector property. + + + + + Provides derived classes an opportunity to handle changes to the DocumentPaneMenuItemHeaderTemplateSelector property. + + + + + Coerces the DocumentPaneMenuItemHeaderTemplateSelector value. + + + + + IconContentTemplate Dependency Property + + + + + IconContentTemplateSelector Dependency Property + + + + + LayoutItemContainerStyle Dependency Property + + + + + Handles changes to the LayoutItemContainerStyle property. + + + + + Provides derived classes an opportunity to handle changes to the LayoutItemContainerStyle property. + + + + + LayoutItemContainerStyleSelector Dependency Property + + + + + Handles changes to the LayoutItemContainerStyleSelector property. + + + + + Provides derived classes an opportunity to handle changes to the LayoutItemContainerStyleSelector property. + + + + + Return the LayoutItem wrapper for the content passed as argument + + LayoutContent to search + Either a LayoutAnchorableItem or LayoutDocumentItem which contains the LayoutContent passed as argument + + + + ShowSystemMenu Dependency Property + + + + + AllowMixedOrientation Dependency Property + + + + + Gets or sets the Layout property. This dependency property + indicates layout tree. + + + + + Event fired when property changes + + + + + Event fired when property is about to be changed + + + + + Gets or sets the LayoutUpdateStrategy property. This dependency property + indicates the strategy class to call when AvalonDock needs to positionate a LayoutAnchorable inside an existing layout. + + Sometimes it's impossible to automatically insert an anchorable in the layout without specifing the target parent pane. + Set this property to an object that will be asked to insert the anchorable to the desidered position. + + + + Gets or sets the DocumentPaneDataTemplate property. This dependency property + indicates . + + + + + Gets or sets the AnchorablePaneTemplate property. This dependency property + indicates .... + + + + + Gets or sets the AnchorSideTemplate property. This dependency property + indicates .... + + + + + Gets or sets the AnchorGroupTemplate property. This dependency property + indicates the template used to render the AnchorGroup control. + + + + + Gets or sets the AnchorTemplate property. This dependency property + indicates .... + + + + + Gets or sets the DocumentPaneControlStyle property. This dependency property + indicates .... + + + + + Gets or sets the AnchorablePaneControlStyle property. This dependency property + indicates the style to apply to AnchorablePaneControl. + + + + + Gets or sets the DocumentHeaderTemplate property. This dependency property + indicates data template to use for document header. + + + + + Gets or sets the DocumentHeaderTemplateSelector property. This dependency property + indicates the template selector that is used when selcting the data template for the header. + + + + + Gets or sets the DocumentTitleTemplate property. This dependency property + indicates the datatemplate to use when creating the title for a document. + + + + + Gets or sets the DocumentTitleTemplateSelector property. This dependency property + indicates the data template selector to use when creating the data template for the title. + + + + + Gets or sets the AnchorableTitleTemplate property. This dependency property + indicates the data template to use for anchorables title. + + + + + Gets or sets the AnchorableTitleTemplateSelector property. This dependency property + indicates selctor to use when selecting data template for the title of anchorables. + + + + + Gets or sets the AnchorableHeaderTemplate property. This dependency property + indicates the data template to use for anchorable templates. + + + + + Gets or sets the AnchorableHeaderTemplateSelector property. This dependency property + indicates the selector to use when selecting the data template for anchorable headers. + + + + + Gets or sets the LayoutRootPanel property. This dependency property + indicates the layout panel control which is attached to the Layout.Root property. + + + + + Gets or sets the RightSidePanel property. This dependency property + indicates right side anchor panel. + + + + + Gets or sets the LeftSidePanel property. This dependency property + indicates the left side panel control. + + + + + Gets or sets the TopSidePanel property. This dependency property + indicates top side control panel. + + + + + Gets or sets the BottomSidePanel property. This dependency property + indicates bottom side panel control. + + + + + Gets the AutoHideWindow property. This dependency property + indicates the currently shown autohide window. + + + + + Gets or sets the AnchorableTemplate property. This dependency property + indicates the template to use to render anchorable and document contents. + + + + + Gets or sets the LayoutItemTemplateSelector property. This dependency property + indicates selector object to use for anchorable templates. + + + + + Gets or sets the DocumentsSource property. This dependency property + indicates the source collection of documents. + + + + + Event fired when a document is about to be closed + + Subscribers have the opportuniy to cancel the operation. + + + + Event fired after a document is closed + + + + + Gets or sets the DocumentContextMenu property. This dependency property + indicates context menu to show for documents. + + + + + Gets or sets the AnchorablesSource property. This dependency property + indicates source collection of anchorables. + + + + + Gets or sets the ActiveContent property. This dependency property + indicates the content currently active. + + + + + Gets or sets the AnchorableContextMenu property. This dependency property + indicates the context menu to show up for anchorables. + + + + + Gets or sets the Theme property. This dependency property + indicates the theme to use for AvalonDock controls. + + + + + Gets or sets the GridSplitterWidth property. This dependency property + indicates width of grid splitters. + + + + + Gets or sets the GridSplitterHeight property. This dependency property + indicates height of grid splitters. + + + + + Gets or sets the DocumentPaneMenuItemHeaderTemplate property. This dependency property + indicates the header template to use while creating menu items for the document panes. + + + + + Gets or sets the DocumentPaneMenuItemHeaderTemplateSelector property. This dependency property + indicates the data template selector to use for the menu items show when user select the DocumentPane document switch context menu. + + + + + Gets or sets the IconContentTemplate property. This dependency property + indicates the data template to use while extracting the icon from model. + + + + + Gets or sets the IconContentTemplateSelector property. This dependency property + indicates data template selector to use while selecting the datatamplate for content icons. + + + + + Gets or sets the LayoutItemContainerStyle property. This dependency property + indicates the style to apply to LayoutDocumentItem objects. A LayoutDocumentItem object is created when a new LayoutDocument is created inside the current Layout. + + + + + Gets or sets the LayoutItemContainerStyleSelector property. This dependency property + indicates style selector of the LayoutDocumentItemStyle. + + + + + Gets or sets the ShowSystemMenu property. This dependency property + indicates if floating windows should show the system menu when a custom context menu is not defined. + + + + + Gets or sets the AllowMixedOrientation property. This dependency property + indicates if the manager should allow mixed orientation for document panes. + + + + + Converts a value. + + The value produced by the binding source. + The type of the binding target property. + The converter parameter to use. + The culture to use in the converter. + + A converted value. If the method returns null, the valid null value is used. + + + + + Converts a value. + + The value that is produced by the binding target. + The type to convert to. + The converter parameter to use. + The culture to use in the converter. + + A converted value. If the method returns null, the valid null value is used. + + + + + Wraps a managed stream instance into an interface pointer consumable by COM. + + + + + Initializes a new instance of the ManagedIStream class with the specified managed Stream object. + + + The stream that this IStream reference is wrapping. + + + + + Creates a new stream object with its own seek pointer that + references the same bytes as the original stream. + + + When this method returns, contains the new stream object. This parameter is passed uninitialized. + + + For more information, see the existing documentation for IStream::Clone in the MSDN library. + This class doesn't implement Clone. A COMException is thrown if it is used. + + + + + Ensures that any changes made to a stream object that is open in transacted + mode are reflected in the parent storage. + + + A value that controls how the changes for the stream object are committed. + + + For more information, see the existing documentation for IStream::Commit in the MSDN library. + + + + + Copies a specified number of bytes from the current seek pointer in the + stream to the current seek pointer in another stream. + + + A reference to the destination stream. + + + The number of bytes to copy from the source stream. + + + On successful return, contains the actual number of bytes read from the source. + (Note the native signature is to a ULARGE_INTEGER*, so 64 bits are written + to this parameter on success.) + + + On successful return, contains the actual number of bytes written to the destination. + (Note the native signature is to a ULARGE_INTEGER*, so 64 bits are written + to this parameter on success.) + + + + + Restricts access to a specified range of bytes in the stream. + + + The byte offset for the beginning of the range. + + + The length of the range, in bytes, to restrict. + + + The requested restrictions on accessing the range. + + + For more information, see the existing documentation for IStream::LockRegion in the MSDN library. + This class doesn't implement LockRegion. A COMException is thrown if it is used. + + + + + Reads a specified number of bytes from the stream object into memory starting at the current seek pointer. + + + When this method returns, contains the data read from the stream. This parameter is passed uninitialized. + + + The number of bytes to read from the stream object. + + + A pointer to a ULONG variable that receives the actual number of bytes read from the stream object. + + + For more information, see the existing documentation for ISequentialStream::Read in the MSDN library. + + + + + Discards all changes that have been made to a transacted stream since the last Commit call. + + + This class doesn't implement Revert. A COMException is thrown if it is used. + + + + + Changes the seek pointer to a new location relative to the beginning of the + stream, to the end of the stream, or to the current seek pointer. + + + The displacement to add to dwOrigin. + + + The origin of the seek. The origin can be the beginning of the file, the current seek pointer, or the end of the file. + + + On successful return, contains the offset of the seek pointer from the beginning of the stream. + (Note the native signature is to a ULARGE_INTEGER*, so 64 bits are written + to this parameter on success.) + + + For more information, see the existing documentation for IStream::Seek in the MSDN library. + + + + + Changes the size of the stream object. + + + The new size of the stream as a number of bytes. + + + For more information, see the existing documentation for IStream::SetSize in the MSDN library. + + + + + Retrieves the STATSTG structure for this stream. + + + When this method returns, contains a STATSTG structure that describes this stream object. + This parameter is passed uninitialized. + + + Members in the STATSTG structure that this method does not return, thus saving some memory allocation operations. + + + + + Removes the access restriction on a range of bytes previously restricted with the LockRegion method. + + The byte offset for the beginning of the range. + + + The length, in bytes, of the range to restrict. + + + The access restrictions previously placed on the range. + + + For more information, see the existing documentation for IStream::UnlockRegion in the MSDN library. + This class doesn't implement UnlockRegion. A COMException is thrown if it is used. + + + + + Writes a specified number of bytes into the stream object starting at the current seek pointer. + + + The buffer to write this stream to. + + + The number of bytes to write to the stream. + + + On successful return, contains the actual number of bytes written to the stream object. + If the caller sets this pointer to null, this method does not provide the actual number + of bytes written. + + + + + Releases resources controlled by this object. + + + Dispose can be called multiple times, but trying to use the object + after it has been disposed will generally throw ObjectDisposedExceptions. + + + + + HIGHCONTRAST flags + + + + + BITMAPINFOHEADER Compression type. BI_*. + + + + + CombingRgn flags. RGN_* + + + + + Creates the intersection of the two combined regions. + + + + + Creates the union of two combined regions. + + + + + Creates the union of two combined regions except for any overlapping areas. + + + + + Combines the parts of hrgnSrc1 that are not part of hrgnSrc2. + + + + + Creates a copy of the region identified by hrgnSrc1. + + + + + For IWebBrowser2. OLECMDEXECOPT_* + + + + + For IWebBrowser2. OLECMDF_* + + + + + For IWebBrowser2. OLECMDID_* + + + + + For IWebBrowser2. READYSTATE_* + + + + + DATAOBJ_GET_ITEM_FLAGS. DOGIF_*. + + + + Use the system default, which is to display all error dialog boxes. + + + + The system does not display the critical-error-handler message box. + Instead, the system sends the error to the calling process. + + + + + 64-bit Windows: The system automatically fixes memory alignment faults and makes them + invisible to the application. It does this for the calling process and any descendant processes. + After this value is set for a process, subsequent attempts to clear the value are ignored. + + + + + The system does not display the general-protection-fault message box. + This flag should only be set by debugging applications that handle general + protection (GP) faults themselves with an exception handler. + + + + + The system does not display a message box when it fails to find a file. + Instead, the error is returned to the calling process. + + + + + Non-client hit test values, HT* + + + + + GetClassLongPtr values, GCLP_* + + + + + GetWindowLongPtr values, GWL_* + + + + + SystemMetrics. SM_* + + + + + SystemParameterInfo values, SPI_* + + + + + SystemParameterInfo flag values, SPIF_* + + + + + CS_* + + + + + WindowStyle values, WS_* + + + + + Window message values, WM_* + + + + + Window style extended values, WS_EX_* + + + + + GetDeviceCaps nIndex values. + + + + Number of bits per pixel + + + + + Number of planes + + + + + Logical pixels inch in X + + + + + Logical pixels inch in Y + + + + + "FILEOP_FLAGS", FOF_*. + + + + + EnableMenuItem uEnable values, MF_* + + + + + Possible return value for EnableMenuItem + + + + Specifies the type of visual style attribute to set on a window. + + + Non-client area window attributes will be set. + + + + DWMFLIP3DWINDOWPOLICY. DWMFLIP3D_* + + + + + DWMNCRENDERINGPOLICY. DWMNCRP_* + + + + + DWMWINDOWATTRIBUTE. DWMWA_* + + + + + WindowThemeNonClientAttributes + + + + Prevents the window caption from being drawn. + + + Prevents the system icon from being drawn. + + + Prevents the system icon menu from appearing. + + + Prevents mirroring of the question mark, even in right-to-left (RTL) layout. + + + A mask that contains all the valid bits. + + + + SetWindowPos options + + + + + ShowWindow options + + + + + SCF_ISSECURE + + + + + GDI+ Status codes + + + + + MSGFLT_*. New in Vista. Realiased in Windows 7. + + + + + Shell_NotifyIcon messages. NIM_* + + + + + SHAddToRecentDocuments flags. SHARD_* + + + + + Shell_NotifyIcon flags. NIF_* + + + + + Vista only. + + + + + Vista only. + + + + + Shell_NotifyIcon info flags. NIIF_* + + + + XP SP2 and later. + + + XP and later. + + + Vista and later. + + + Windows 7 and later + + + XP and later. Native version called NIIF_ICON_MASK. + + + + AC_* + + + + + The state of the icon. There are two flags that can be set independently. + NIS_HIDDEN = 1. The icon is hidden. + NIS_SHAREDICON = 2. The icon is shared. + + + + The idlist for the shell item that should be added to the recent docs folder. + + + The id of the application that should be associated with this recent doc. + + + Defines options that are used to set window visual style attributes. + + + + A combination of flags that modify window visual style attributes. + Can be a combination of the WTNCA constants. + + + + + A bitmask that describes how the values specified in dwFlags should be applied. + If the bit corresponding to a value in dwFlags is 0, that flag will be removed. + If the bit is 1, the flag will be added. + + + + Width of left border that retains its size. + + + Width of right border that retains its size. + + + Height of top border that retains its size. + + + Height of bottom border that retains its size. + + + Delegate declaration that matches native WndProc signatures. + + + Delegate declaration that matches native WndProc signatures. + + + Delegate declaration that matches managed WndProc signatures. + + + + Sets attributes to control how visual styles are applied to a specified window. + + + Handle to a window to apply changes to. + + + Value of type WINDOWTHEMEATTRIBUTETYPE that specifies the type of attribute to set. + The value of this parameter determines the type of data that should be passed in the pvAttribute parameter. + Can be the following value: + WTA_NONCLIENT (Specifies non-client related attributes). + pvAttribute must be a pointer of type WTA_OPTIONS. + + + A pointer that specifies attributes to set. Type is determined by the value of the eAttribute value. + + + Specifies the size, in bytes, of the data pointed to by pvAttribute. + + + + Overload of SystemParametersInfo for getting and setting NONCLIENTMETRICS. + + + Overload of SystemParametersInfo for getting and setting HIGHCONTRAST. + + + + Sets the User Model AppID for the current process, enabling Windows to retrieve this ID + + + + + + Retrieves the User Model AppID that has been explicitly set for the current process via SetCurrentProcessExplicitAppUserModelID + + + + + + Description Dependency Property + + + + + Handles changes to the Description property. + + + + + Provides derived classes an opportunity to handle changes to the Description property. + + + + + Gets or sets the Description property. This dependency property + indicates the description to display for the document item. + + + + + Model Dependency Property + + + + + Handles changes to the Model property. + + + + + Provides derived classes an opportunity to handle changes to the Model property. + + + + + LayoutItem Read-Only Dependency Property + + + + + Provides a secure method for setting the LayoutItem property. + This dependency property indicates the LayoutItem attached to this tag item. + + The new value for the property. + + + + Gets or sets the Model property. This dependency property + indicates the layout content model attached to the tab item. + + + + + Gets the LayoutItem property. This dependency property + indicates the LayoutItem attached to this tag item. + + + + + IsLeftSide Read-Only Dependency Property + + + + + Provides a secure method for setting the IsLeftSide property. + This dependency property indicates this control is anchored to left side. + + The new value for the property. + + + + IsTopSide Read-Only Dependency Property + + + + + Provides a secure method for setting the IsTopSide property. + This dependency property indicates this control is anchored to top side. + + The new value for the property. + + + + IsRightSide Read-Only Dependency Property + + + + + Provides a secure method for setting the IsRightSide property. + This dependency property indicates this control is anchored to right side. + + The new value for the property. + + + + IsBottomSide Read-Only Dependency Property + + + + + Provides a secure method for setting the IsBottomSide property. + This dependency property indicates if this panel is anchored to bottom side. + + The new value for the property. + + + + Gets the IsLeftSide property. This dependency property + indicates this control is anchored to left side. + + + + + Gets the IsTopSide property. This dependency property + indicates this control is anchored to top side. + + + + + Gets the IsRightSide property. This dependency property + indicates this control is anchored to right side. + + + + + Gets the IsBottomSide property. This dependency property + indicates if this panel is anchored to bottom side. + + + + + DoubleUtil uses fixed eps to provide fuzzy comparison functionality for doubles. + Note that FP noise is a big problem and using any of these compare + methods is not a complete solution, but rather the way to reduce + the probability of repeating unnecessary work. + + + + + Epsilon - more or less random, more or less small number. + + + + + AreClose returns whether or not two doubles are "close". That is, whether or + not they are within epsilon of each other. + There are plenty of ways for this to return false even for numbers which + are theoretically identical, so no code calling this should fail to work if this + returns false. + + The first double to compare. + The second double to compare. + The result of the AreClose comparision. + + + + LessThan returns whether or not the first double is less than the second double. + That is, whether or not the first is strictly less than *and* not within epsilon of + the other number. + There are plenty of ways for this to return false even for numbers which + are theoretically identical, so no code calling this should fail to work if this + returns false. + + The first double to compare. + The second double to compare. + The result of the LessThan comparision. + + + + GreaterThan returns whether or not the first double is greater than the second double. + That is, whether or not the first is strictly greater than *and* not within epsilon of + the other number. + There are plenty of ways for this to return false even for numbers which + are theoretically identical, so no code calling this should fail to work if this + returns false. + + The first double to compare. + The second double to compare. + The result of the GreaterThan comparision. + + + + LessThanOrClose returns whether or not the first double is less than or close to + the second double. That is, whether or not the first is strictly less than or within + epsilon of the other number. + There are plenty of ways for this to return false even for numbers which + are theoretically identical, so no code calling this should fail to work if this + returns false. + + The first double to compare. + The second double to compare. + The result of the LessThanOrClose comparision. + + + + GreaterThanOrClose returns whether or not the first double is greater than or close to + the second double. That is, whether or not the first is strictly greater than or within + epsilon of the other number. + There are plenty of ways for this to return false even for numbers which + are theoretically identical, so no code calling this should fail to work if this + returns false. + + The first double to compare. + The second double to compare. + The result of the GreaterThanOrClose comparision. + + + + Test to see if a double is a finite number (is not NaN or Infinity). + + The value to test. + Whether or not the value is a finite number. + + + + Test to see if a double a valid size value (is finite and > 0). + + The value to test. + Whether or not the value is a valid size value. + + + + Direct insert/remove operation has been perfomed to the group + + + + + An element below in the hierarchy as been added/removed + + + + + Converts a value. + + The value produced by the binding source. + The type of the binding target property. + The converter parameter to use. + The culture to use in the converter. + + A converted value. If the method returns null, the valid null value is used. + + + + + Converts a value. + + The value that is produced by the binding target. + The type to convert to. + The converter parameter to use. + The culture to use in the converter. + + A converted value. If the method returns null, the valid null value is used. + + + + + Model Dependency Property + + + + + Handles changes to the Model property. + + + + + Provides derived classes an opportunity to handle changes to the Model property. + + + + + LayoutItem Read-Only Dependency Property + + + + + Provides a secure method for setting the LayoutItem property. + This dependency property indicates the LayoutItem attached to this tag item. + + The new value for the property. + + + + Gets or sets the Model property. This dependency property + indicates the model attached to this view. + + + + + Gets the LayoutItem property. This dependency property + indicates the LayoutItem attached to this tag item. + + + + + Wrapper for common Win32 status codes. + + + + The operation completed successfully. + + + Incorrect function. + + + The system cannot find the file specified. + + + The system cannot find the path specified. + + + The system cannot open the file. + + + Access is denied. + + + The handle is invalid. + + + Not enough storage is available to complete this operation. + + + There are no more files. + + + The process cannot access the file because it is being used by another process. + + + The parameter is incorrect. + + + The data area passed to a system call is too small. + + + Cannot nest calls to LoadModule. + + + Illegal operation attempted on a registry key that has been marked for deletion. + + + Element not found. + + + There was no match for the specified key in the index. + + + An invalid device was specified. + + + The operation was canceled by the user. + + + The window class was already registered. + + + The specified datatype is invalid. + + + + Create a new Win32 error. + + The integer value of the error. + + + Performs HRESULT_FROM_WIN32 conversion. + The Win32 error being converted to an HRESULT. + The equivilent HRESULT value. + + + Performs HRESULT_FROM_WIN32 conversion. + The Win32 error being converted to an HRESULT. + The equivilent HRESULT value. + + + Performs the equivalent of Win32's GetLastError() + A Win32Error instance with the result of the native GetLastError + + + + Compare two Win32 error codes for equality. + + The first error code to compare. + The second error code to compare. + Whether the two error codes are the same. + + + + Compare two Win32 error codes for inequality. + + The first error code to compare. + The second error code to compare. + Whether the two error codes are not the same. + + + FACILITY_NULL + + + FACILITY_RPC + + + FACILITY_DISPATCH + + + FACILITY_STORAGE + + + FACILITY_ITF + + + FACILITY_WIN32 + + + FACILITY_WINDOWS + + + FACILITY_CONTROL + + + MSDN doced facility code for ESE errors. + + + FACILITY_WINCODEC (WIC) + + + Wrapper for HRESULT status codes. + + + S_OK + + + S_FALSE + + + E_PENDING + + + E_NOTIMPL + + + E_NOINTERFACE + + + E_POINTER + + + E_ABORT + + + E_FAIL + + + E_UNEXPECTED + + + STG_E_INVALIDFUNCTION + + + REGDB_E_CLASSNOTREG + + + DESTS_E_NO_MATCHING_ASSOC_HANDLER. Win7 internal error code for Jump Lists. + There is no Assoc Handler for the given item registered by the specified application. + + + DESTS_E_NORECDOCS. Win7 internal error code for Jump Lists. + The given item is excluded from the recent docs folder by the NoRecDocs bit on its registration. + + + DESTS_E_NOTALLCLEARED. Win7 internal error code for Jump Lists. + Not all of the items were successfully cleared + + + E_ACCESSDENIED + Win32Error ERROR_ACCESS_DENIED. + + + E_OUTOFMEMORY + Win32Error ERROR_OUTOFMEMORY. + + + E_INVALIDARG + Win32Error ERROR_INVALID_PARAMETER. + + + INTSAFE_E_ARITHMETIC_OVERFLOW + + + COR_E_OBJECTDISPOSED + + + WC_E_GREATERTHAN + + + WC_E_SYNTAX + + + + Create an HRESULT from an integer value. + + + + + + Get a string representation of this HRESULT. + + + + + + Convert the result of Win32 GetLastError() into a raised exception. + + + + + retrieve HRESULT_FACILITY + + + + + retrieve HRESULT_CODE + + + + + HideCommand Dependency Property + + + + + Handles changes to the HideCommand property. + + + + + Provides derived classes an opportunity to handle changes to the HideCommand property. + + + + + Coerces the HideCommand value. + + + + + AutoHideCommand Dependency Property + + + + + Handles changes to the AutoHideCommand property. + + + + + Provides derived classes an opportunity to handle changes to the AutoHideCommand property. + + + + + Coerces the AutoHideCommand value. + + + + + DockCommand Dependency Property + + + + + Handles changes to the DockCommand property. + + + + + Provides derived classes an opportunity to handle changes to the DockCommand property. + + + + + Coerces the DockCommand value. + + + + + CanHide Dependency Property + + + + + Handles changes to the CanHide property. + + + + + Provides derived classes an opportunity to handle changes to the CanHide property. + + + + + Gets or sets the HideCommand property. This dependency property + indicates the command to execute when an anchorable is hidden. + + + + + Gets or sets the AutoHideCommand property. This dependency property + indicates the command to execute when user click the auto hide button. + + By default this command toggles auto hide state for an anchorable. + + + + Gets or sets the DockCommand property. This dependency property + indicates the command to execute when user click the Dock button. + + By default this command moves the anchorable inside the container pane which previously hosted the object. + + + + Gets or sets the CanHide property. This dependency property + indicates if user can hide the anchorable item. + + + + + Model Dependency Property + + + + + Provides derived classes an opportunity to handle changes to the Model property. + + + + + LayoutItem Read-Only Dependency Property + + + + + Provides a secure method for setting the LayoutItem property. + This dependency property indicates the LayoutItem attached to this tag item. + + The new value for the property. + + + + Gets or sets the Model property. This dependency property + indicates model attached to this view. + + + + + Gets the LayoutItem property. This dependency property + indicates the LayoutItem attached to this tag item. + + + + + Special window handles + + + + + Changes an attribute of the specified window. The function also sets the 32-bit (long) value at the specified offset into the extra window memory. + + A handle to the window and, indirectly, the class to which the window belongs.. + The zero-based offset to the value to be set. Valid values are in the range zero through the number of bytes of extra window memory, minus the size of an integer. To set any other value, specify one of the following values: GWL_EXSTYLE, GWL_HINSTANCE, GWL_ID, GWL_STYLE, GWL_USERDATA, GWL_WNDPROC + The replacement value. + If the function succeeds, the return value is the previous value of the specified 32-bit integer. + If the function fails, the return value is zero. To get extended error information, call GetLastError. + + + + The MonitorFromRect function retrieves a handle to the display monitor that + has the largest area of intersection with a specified rectangle. + + Pointer to a RECT structure that specifies the rectangle of interest in + virtual-screen coordinates + Determines the function's return value if the rectangle does not intersect + any display monitor + + If the rectangle intersects one or more display monitor rectangles, the return value + is an HMONITOR handle to the display monitor that has the largest area of intersection with the rectangle. + If the rectangle does not intersect a display monitor, the return value depends on the value of dwFlags. + + + + + The MonitorFromWindow function retrieves a handle to the display monitor that has the largest area of intersection with the bounding rectangle of a specified window. + + A handle to the window of interest. + Determines the function's return value if the window does not intersect any display monitor. + If the window intersects one or more display monitor rectangles, the return value is an HMONITOR handle to the display monitor that has the largest area of intersection with the window. + If the window does not intersect a display monitor, the return value depends on the value of dwFlags. + + + + + The GetMonitorInfo function retrieves information about a display monitor. + + Handle to the display monitor of interest. + Pointer to a MONITORINFO or MONITORINFOEX structure that receives + information about the specified display monitor + If the function succeeds, the return value is nonzero. + If the function fails, the return value is zero. + + + + SetWindowPos Flags + + + + If the calling thread and the thread that owns the window are attached to different input queues, + the system posts the request to the thread that owns the window. This prevents the calling thread from + blocking its execution while other threads process the request. + SWP_ASYNCWINDOWPOS + + + Prevents generation of the WM_SYNCPAINT message. + SWP_DEFERERASE + + + Draws a frame (defined in the window's class description) around the window. + SWP_DRAWFRAME + + + Applies new frame styles set using the SetWindowLong function. Sends a WM_NCCALCSIZE message to + the window, even if the window's size is not being changed. If this flag is not specified, WM_NCCALCSIZE + is sent only when the window's size is being changed. + SWP_FRAMECHANGED + + + Hides the window. + SWP_HIDEWINDOW + + + Does not activate the window. If this flag is not set, the window is activated and moved to the + top of either the topmost or non-topmost group (depending on the setting of the hWndInsertAfter + parameter). + SWP_NOACTIVATE + + + Discards the entire contents of the client area. If this flag is not specified, the valid + contents of the client area are saved and copied back into the client area after the window is sized or + repositioned. + SWP_NOCOPYBITS + + + Retains the current position (ignores X and Y parameters). + SWP_NOMOVE + + + Does not change the owner window's position in the Z order. + SWP_NOOWNERZORDER + + + Does not redraw changes. If this flag is set, no repainting of any kind occurs. This applies to + the client area, the nonclient area (including the title bar and scroll bars), and any part of the parent + window uncovered as a result of the window being moved. When this flag is set, the application must + explicitly invalidate or redraw any parts of the window and parent window that need redrawing. + SWP_NOREDRAW + + + Same as the SWP_NOOWNERZORDER flag. + SWP_NOREPOSITION + + + Prevents the window from receiving the WM_WINDOWPOSCHANGING message. + SWP_NOSENDCHANGING + + + Retains the current size (ignores the cx and cy parameters). + SWP_NOSIZE + + + Retains the current Z order (ignores the hWndInsertAfter parameter). + SWP_NOZORDER + + + Displays the window. + SWP_SHOWWINDOW + + + + The MONITORINFO structure contains information about a display monitor. + + + + + The size of the structure, in bytes. + + + + + A RECT structure that specifies the display monitor rectangle, expressed + in virtual-screen coordinates. + Note that if the monitor is not the primary display monitor, + some of the rectangle's coordinates may be negative values. + + + + + A RECT structure that specifies the work area rectangle of the display monitor, + expressed in virtual-screen coordinates. Note that if the monitor is not the primary + display monitor, some of the rectangle's coordinates may be negative values. + + + + + A set of flags that represent attributes of the display monitor. + + + + + A strongly-typed resource class, for looking up localized strings, etc. + + + + + Returns the cached ResourceManager instance used by this class. + + + + + Overrides the current thread's CurrentUICulture property for all + resource lookups using this strongly typed resource class. + + + + + Looks up a localized string similar to Auto Hide. + + + + + Looks up a localized string similar to Auto Hide. + + + + + Looks up a localized string similar to Hide. + + + + + Looks up a localized string similar to Window Position. + + + + + Looks up a localized string similar to Dock. + + + + + Looks up a localized string similar to Dock as Tabbed Document. + + + + + Looks up a localized string similar to Float. + + + + + Looks up a localized string similar to Hide. + + + + + Looks up a localized string similar to Close. + + + + + Looks up a localized string similar to Close All But This. + + + + + Looks up a localized string similar to Window Position. + + + + + Looks up a localized string similar to Dock as Tabbed Document. + + + + + Looks up a localized string similar to Float. + + + + + Looks up a localized string similar to Move To Next Tab Group. + + + + + Looks up a localized string similar to Move To Previous Tab Group. + + + + + Looks up a localized string similar to New Horizontal Tab Group. + + + + + Looks up a localized string similar to New Vertical Tab Group. + + + + + Looks up a localized string similar to Maximize. + + + + + Looks up a localized string similar to Restore. + + + + + IconTemplate Dependency Property + + + + + Handles changes to the IconTemplate property. + + + + + Provides derived classes an opportunity to handle changes to the IconTemplate property. + + + + + IconTemplateSelector Dependency Property + + + + + Handles changes to the IconTemplateSelector property. + + + + + Provides derived classes an opportunity to handle changes to the IconTemplateSelector property. + + + + + Gets or sets the IconTemplate property. This dependency property + indicates the data template for the icon. + + + + + Gets or sets the IconTemplateSelector property. This dependency property + indicates the DataTemplateSelector for the Icon. + + + + diff --git a/packages/AvalonDock.2.0.2000/lib/net40/de/Xceed.Wpf.AvalonDock.resources.dll b/packages/AvalonDock.2.0.2000/lib/net40/de/Xceed.Wpf.AvalonDock.resources.dll new file mode 100644 index 00000000..3005ea9a Binary files /dev/null and b/packages/AvalonDock.2.0.2000/lib/net40/de/Xceed.Wpf.AvalonDock.resources.dll differ diff --git a/packages/AvalonDock.2.0.2000/lib/net40/es/Xceed.Wpf.AvalonDock.resources.dll b/packages/AvalonDock.2.0.2000/lib/net40/es/Xceed.Wpf.AvalonDock.resources.dll new file mode 100644 index 00000000..ab6641b3 Binary files /dev/null and b/packages/AvalonDock.2.0.2000/lib/net40/es/Xceed.Wpf.AvalonDock.resources.dll differ diff --git a/packages/AvalonDock.2.0.2000/lib/net40/fr/Xceed.Wpf.AvalonDock.resources.dll b/packages/AvalonDock.2.0.2000/lib/net40/fr/Xceed.Wpf.AvalonDock.resources.dll new file mode 100644 index 00000000..8d3b7c4c Binary files /dev/null and b/packages/AvalonDock.2.0.2000/lib/net40/fr/Xceed.Wpf.AvalonDock.resources.dll differ diff --git a/packages/AvalonDock.2.0.2000/lib/net40/hu/Xceed.Wpf.AvalonDock.resources.dll b/packages/AvalonDock.2.0.2000/lib/net40/hu/Xceed.Wpf.AvalonDock.resources.dll new file mode 100644 index 00000000..b09aea98 Binary files /dev/null and b/packages/AvalonDock.2.0.2000/lib/net40/hu/Xceed.Wpf.AvalonDock.resources.dll differ diff --git a/packages/AvalonDock.2.0.2000/lib/net40/it/Xceed.Wpf.AvalonDock.resources.dll b/packages/AvalonDock.2.0.2000/lib/net40/it/Xceed.Wpf.AvalonDock.resources.dll new file mode 100644 index 00000000..86c9ea90 Binary files /dev/null and b/packages/AvalonDock.2.0.2000/lib/net40/it/Xceed.Wpf.AvalonDock.resources.dll differ diff --git a/packages/AvalonDock.2.0.2000/lib/net40/pt-BR/Xceed.Wpf.AvalonDock.resources.dll b/packages/AvalonDock.2.0.2000/lib/net40/pt-BR/Xceed.Wpf.AvalonDock.resources.dll new file mode 100644 index 00000000..8c9eb599 Binary files /dev/null and b/packages/AvalonDock.2.0.2000/lib/net40/pt-BR/Xceed.Wpf.AvalonDock.resources.dll differ diff --git a/packages/AvalonDock.2.0.2000/lib/net40/ro/Xceed.Wpf.AvalonDock.resources.dll b/packages/AvalonDock.2.0.2000/lib/net40/ro/Xceed.Wpf.AvalonDock.resources.dll new file mode 100644 index 00000000..1099d206 Binary files /dev/null and b/packages/AvalonDock.2.0.2000/lib/net40/ro/Xceed.Wpf.AvalonDock.resources.dll differ diff --git a/packages/AvalonDock.2.0.2000/lib/net40/ru/Xceed.Wpf.AvalonDock.resources.dll b/packages/AvalonDock.2.0.2000/lib/net40/ru/Xceed.Wpf.AvalonDock.resources.dll new file mode 100644 index 00000000..4c77c97e Binary files /dev/null and b/packages/AvalonDock.2.0.2000/lib/net40/ru/Xceed.Wpf.AvalonDock.resources.dll differ diff --git a/packages/AvalonDock.2.0.2000/lib/net40/sv/Xceed.Wpf.AvalonDock.resources.dll b/packages/AvalonDock.2.0.2000/lib/net40/sv/Xceed.Wpf.AvalonDock.resources.dll new file mode 100644 index 00000000..481ce9bb Binary files /dev/null and b/packages/AvalonDock.2.0.2000/lib/net40/sv/Xceed.Wpf.AvalonDock.resources.dll differ diff --git a/packages/AvalonDock.2.0.2000/lib/net40/zh-Hans/Xceed.Wpf.AvalonDock.resources.dll b/packages/AvalonDock.2.0.2000/lib/net40/zh-Hans/Xceed.Wpf.AvalonDock.resources.dll new file mode 100644 index 00000000..c52a6daa Binary files /dev/null and b/packages/AvalonDock.2.0.2000/lib/net40/zh-Hans/Xceed.Wpf.AvalonDock.resources.dll differ diff --git a/packages/ini-parser.2.1.1/README.md b/packages/ini-parser.2.1.1/README.md new file mode 100644 index 00000000..e189676e --- /dev/null +++ b/packages/ini-parser.2.1.1/README.md @@ -0,0 +1,56 @@ +# INI File Parser + +A Mono-compatible .NET library for reading/writing INI data from IO streams, file streams, and strings. + +[![Build Status](https://travis-ci.org/rickyah/ini-parser.png?branch=master)](https://travis-ci.org/rickyah/ini-parser) + +## Installation + +The library is published to [NuGet](https://www.nuget.org/packages/ini-parser/) and can be installed on the command-line from the directory containing your solution. + +```bat +> nuget install ini-parser +``` + +Or, from the [Package Manager Console](http://docs.nuget.org/docs/start-here/using-the-package-manager-console) in Visual Studio + +```powershell +PM> Install-Package ini-parser +``` + +Or from the [NuGet Package Manager](http://visualstudiogallery.msdn.microsoft.com/27077b70-9dad-4c64-adcf-c7cf6bc9970c) extension built available for most flavors of Visual Studio! + +## Getting Started + +INI data is stored in nested dictionaries, so accessing the value associated to a key in a section is straightforward. Load the data using one of the provided methods. + +```csharp +var data = parser.ReadFile("Configuration.ini"); +``` + +Retrieve the value for a key inside of a named section. Values are always retrieved as `string`s. + +```csharp +var useFullScreen = data["UI"]["fullscreen"]; +``` + +Modify the value in the dictionary, not the value retrieved, and save to a new file or overwrite. + +```csharp +data["UI"]["fullscreen"] = "true"; +parser.WriteFile("Configuration.ini", data); +``` + +See the [wiki](https://github.com/rickyah/ini-parser/wiki) for more usage examples. + +## Contributing + +Do you have an idea to improve this library, or did you happen to run into a bug. Please share your idea or the bug you found in the issues page, or even better: feel free to fork and [contribute](https://github.com/rickyah/ini-parser/wiki/Contributing) to this project! + +## Version 2.0! +Since the INI format isn't really a "standard", this version introduces a simpler way to customize INI parsing: + + * Pass a configuration object to an `IniParser`, specifying the behaviour of the parser. A default implementation is used if none is provided. + + * Derive from `IniDataParser` and override the fine-grained parsing methods. + diff --git a/packages/ini-parser.2.1.1/content/LICENSE b/packages/ini-parser.2.1.1/content/LICENSE new file mode 100644 index 00000000..fe5f7ed6 --- /dev/null +++ b/packages/ini-parser.2.1.1/content/LICENSE @@ -0,0 +1,20 @@ +The MIT License (MIT) + +Copyright (c) 2008 Ricardo Amores Hernández + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/packages/ini-parser.2.1.1/ini-parser.2.1.1.nuspec b/packages/ini-parser.2.1.1/ini-parser.2.1.1.nuspec new file mode 100644 index 00000000..d958ff15 --- /dev/null +++ b/packages/ini-parser.2.1.1/ini-parser.2.1.1.nuspec @@ -0,0 +1,17 @@ + + + + ini-parser + 2.1.1 + INI Parser + Ricardo Amores Hernández + Ricardo Amores Hernández + https://github.com/rickyah/ini-parser/master/blob/LICENSE.txt + https://github.com/rickyah/ini-parser + false + A Mono compatible .NET open source library for managing data from an INI file format. Allows reading/writing INI data to and from I/O streams, file streams, and/or plain strings. + A simple C# library for reading and writing INI files + + ini + + \ No newline at end of file diff --git a/packages/ini-parser.2.1.1/lib/INIFileParser.dll b/packages/ini-parser.2.1.1/lib/INIFileParser.dll new file mode 100644 index 00000000..7a088d18 Binary files /dev/null and b/packages/ini-parser.2.1.1/lib/INIFileParser.dll differ diff --git a/packages/repositories.config b/packages/repositories.config new file mode 100644 index 00000000..40a89028 --- /dev/null +++ b/packages/repositories.config @@ -0,0 +1,4 @@ + + + + \ No newline at end of file