Moved default skins and themes into ProgramPath\Defaults\

This commit is contained in:
Birunthan Mohanathas 2012-05-30 08:33:32 +03:00
parent 0891ee4b91
commit 96959d62f1
3 changed files with 55 additions and 65 deletions

View File

@ -501,6 +501,7 @@ UAC_TryAgain:
FunctionEnd FunctionEnd
!macro InstallFiles DIR !macro InstallFiles DIR
SetOutPath "$INSTDIR"
File "..\..\TestBench\${DIR}\Release\Rainmeter.exe" File "..\..\TestBench\${DIR}\Release\Rainmeter.exe"
File "..\..\TestBench\${DIR}\Release\Rainmeter.dll" File "..\..\TestBench\${DIR}\Release\Rainmeter.dll"
File "..\..\TestBench\${DIR}\Release\SkinInstaller.exe" File "..\..\TestBench\${DIR}\Release\SkinInstaller.exe"
@ -700,6 +701,13 @@ SkipIniMove:
Delete "$INSTDIR\Rainmeter.chm" Delete "$INSTDIR\Rainmeter.chm"
Delete "$INSTDIR\Default.ini" Delete "$INSTDIR\Default.ini"
${If} $InstallPortable != 1
${AndIfNot} ${FileExists} "$INSTDIR\Defaults"
SetOutPath "$INSTDIR\Defaults"
Rename "$INSTDIR\Skins" "$INSTDIR\Defaults\Skins"
Rename "$INSTDIR\Themes" "$INSTDIR\Defaults\Themes"
${EndIf}
!ifdef INCLUDEFILES !ifdef INCLUDEFILES
${If} $instArc == "x86" ${If} $instArc == "x86"
!insertmacro InstallFiles "x32" !insertmacro InstallFiles "x32"
@ -713,12 +721,12 @@ SkipIniMove:
RMDir /r "$INSTDIR\Addons\Rainstaller" RMDir /r "$INSTDIR\Addons\Rainstaller"
SetOutPath "$INSTDIR\Skins" SetOutPath "$INSTDIR\Defaults\Skins"
RMDir /r "$INSTDIR\Skins\illustro" RMDir /r "$INSTDIR\Skins\illustro"
Delete "$INSTDIR\Skins\*.txt" Delete "$INSTDIR\Skins\*.txt"
File /r "..\Skins\*.*" File /r "..\Skins\*.*"
SetOutPath "$INSTDIR\Themes" SetOutPath "$INSTDIR\Defaults\Themes"
File /r "..\Themes\*.*" File /r "..\Themes\*.*"
!endif !endif

View File

@ -802,12 +802,6 @@ int CRainmeter::Initialize(LPCWSTR iniPath)
const WCHAR* iniFile = m_IniFile.c_str(); const WCHAR* iniFile = m_IniFile.c_str();
// Create a default Rainmeter.ini file if needed
if (_waccess(iniFile, 0) == -1)
{
CreateDefaultConfigFile();
}
// Set file locations // Set file locations
{ {
size_t len = m_IniFile.length(); size_t len = m_IniFile.length();
@ -830,10 +824,6 @@ int CRainmeter::Initialize(LPCWSTR iniPath)
CreateDataFile(); CreateDataFile();
} }
// Read Logging settings beforehand
m_Logging = 0!=GetPrivateProfileInt(L"Rainmeter", L"Logging", 0, iniFile);
m_Debug = 0!=GetPrivateProfileInt(L"Rainmeter", L"Debug", 0, iniFile);
// Determine the language resource to load // Determine the language resource to load
std::wstring resource = m_Path + L"Languages\\"; std::wstring resource = m_Path + L"Languages\\";
if (GetPrivateProfileString(L"Rainmeter", L"Language", L"", buffer, MAX_LINE_LENGTH, iniFile) == 0) if (GetPrivateProfileString(L"Rainmeter", L"Language", L"", buffer, MAX_LINE_LENGTH, iniFile) == 0)
@ -878,20 +868,19 @@ int CRainmeter::Initialize(LPCWSTR iniPath)
// Reset log file // Reset log file
CSystem::RemoveFile(m_LogFile); CSystem::RemoveFile(m_LogFile);
m_Debug = 0!=GetPrivateProfileInt(L"Rainmeter", L"Debug", 0, iniFile);
m_Logging = 0!=GetPrivateProfileInt(L"Rainmeter", L"Logging", 0, iniFile);
if (m_Logging) if (m_Logging)
{ {
StartLogging(); StartLogging();
} }
m_PluginPath = m_AddonPath = m_SkinPath = m_Path; // Get skin folder path
m_PluginPath += L"Plugins\\";
m_AddonPath += L"Addons\\";
m_SkinPath += L"Skins\\";
// Read the skin folder from the ini file
size_t len = GetPrivateProfileString(L"Rainmeter", L"SkinPath", L"", buffer, MAX_LINE_LENGTH, iniFile); size_t len = GetPrivateProfileString(L"Rainmeter", L"SkinPath", L"", buffer, MAX_LINE_LENGTH, iniFile);
if (len > 0) if (len > 0)
{ {
// Try Rainmeter.ini first
m_SkinPath.assign(buffer, len); m_SkinPath.assign(buffer, len);
ExpandEnvironmentVariables(m_SkinPath); ExpandEnvironmentVariables(m_SkinPath);
@ -903,44 +892,46 @@ int CRainmeter::Initialize(LPCWSTR iniPath)
} }
} }
} }
else if (bDefaultIniLocation) else if (bDefaultIniLocation &&
SUCCEEDED(SHGetFolderPath(NULL, CSIDL_MYDOCUMENTS, NULL, SHGFP_TYPE_CURRENT, buffer)))
{ {
// If the skin path is not defined in the Rainmeter.ini file use My Documents/Rainmeter/Skins // Use My Documents/Rainmeter/Skins
buffer[0] = L'\0'; m_SkinPath = buffer;
HRESULT hr = SHGetFolderPath(NULL, CSIDL_MYDOCUMENTS, NULL, SHGFP_TYPE_CURRENT, buffer); m_SkinPath += L"\\Rainmeter\\";
if (SUCCEEDED(hr)) CreateDirectory(m_SkinPath.c_str(), NULL);
m_SkinPath += L"Skins\\";
DWORD result = CreateDirectory(m_SkinPath.c_str(), NULL);
if (result)
{ {
// Make the folders if they don't exist yet // Folder just created, so copy default skins there
m_SkinPath = buffer; std::wstring from = GetDefaultSkinPath();
m_SkinPath += L"\\Rainmeter"; from += L"*.*";
CreateDirectory(m_SkinPath.c_str(), NULL); CSystem::CopyFiles(from, m_SkinPath);
m_SkinPath += L"\\Skins\\";
DWORD result = CreateDirectory(m_SkinPath.c_str(), NULL);
if (result)
{
// The folder was created successfully which means that it wasn't available yet.
// Copy the default skin to the Skins folder
std::wstring from = m_Path + L"Skins\\*.*";
CSystem::CopyFiles(from, m_SkinPath);
}
std::wstring themesPath = GetSettingsPath();
themesPath += L"Themes\\";
result = CreateDirectory(themesPath.c_str(), NULL);
if (result)
{
// Copy themes to %APPDATA%
std::wstring from = m_Path + L"Themes\\*.*";
CSystem::CopyFiles(from, themesPath);
}
} }
else
std::wstring themesPath = GetSettingsPath();
themesPath += L"Themes\\";
result = CreateDirectory(themesPath.c_str(), NULL);
if (result)
{ {
Log(LOG_WARNING, L"Documents folder not found"); // Copy themes to %APPDATA%
std::wstring from = GetDefaultThemePath();
from += L"*.*";
CSystem::CopyFiles(from, themesPath);
} }
WritePrivateProfileString(L"Rainmeter", L"SkinPath", m_SkinPath.c_str(), iniFile); WritePrivateProfileString(L"Rainmeter", L"SkinPath", m_SkinPath.c_str(), iniFile);
} }
else
{
m_SkinPath = m_Path + L"Skins\\";
}
// Create a default Rainmeter.ini file if needed
if (_waccess(iniFile, 0) == -1)
{
CreateDefaultConfigFile();
}
delete [] buffer; delete [] buffer;
buffer = NULL; buffer = NULL;
@ -1166,10 +1157,6 @@ void CRainmeter::SetNetworkStatisticsTimer()
static bool set = SetTimer(m_Window, TIMER_NETSTATS, INTERVAL_NETSTATS, NULL); static bool set = SetTimer(m_Window, TIMER_NETSTATS, INTERVAL_NETSTATS, NULL);
} }
/*
** Creates the default Rainmeter.ini file with illustro\System enabled.
**
*/
void CRainmeter::CreateDefaultConfigFile() void CRainmeter::CreateDefaultConfigFile()
{ {
size_t pos = m_IniFile.find_last_of(L'\\'); size_t pos = m_IniFile.find_last_of(L'\\');
@ -1179,15 +1166,9 @@ void CRainmeter::CreateDefaultConfigFile()
CreateDirectory(strPath.c_str(), NULL); CreateDirectory(strPath.c_str(), NULL);
} }
std::wstring defaultIni = GetPath() + L"Themes\\illustro default\\Rainmeter.thm"; std::wstring defaultIni = GetDefaultThemePath();
if (_waccess(defaultIni.c_str(), 0) == -1) defaultIni += L"illustro default\\Rainmeter.thm";
{ CSystem::CopyFiles(defaultIni, m_IniFile);
WritePrivateProfileString(L"Rainmeter", L"\r\n[illustro\\System]\r\nActive", L"1", m_IniFile.c_str());
}
else
{
CSystem::CopyFiles(defaultIni, m_IniFile);
}
} }
void CRainmeter::CreateDataFile() void CRainmeter::CreateDataFile()

View File

@ -155,9 +155,12 @@ public:
const std::wstring& GetDataFile() { return m_DataFile; } const std::wstring& GetDataFile() { return m_DataFile; }
const std::wstring& GetLogFile() { return m_LogFile; } const std::wstring& GetLogFile() { return m_LogFile; }
const std::wstring& GetSkinPath() { return m_SkinPath; } const std::wstring& GetSkinPath() { return m_SkinPath; }
const std::wstring& GetPluginPath() { return m_PluginPath; }
const std::wstring& GetAddonPath() { return m_AddonPath; }
std::wstring GetSettingsPath() { return ExtractPath(m_IniFile); } std::wstring GetSettingsPath() { return ExtractPath(m_IniFile); }
std::wstring GetPluginPath() { return m_Path + L"Plugins\\"; }
std::wstring GetAddonPath() { return m_Path + L"Addons\\"; }
std::wstring GetDefaultSkinPath() { return m_Path + L"Defaults\\Skins\\"; }
std::wstring GetDefaultThemePath() { return m_Path + L"Defaults\\Themes\\"; }
const std::wstring& GetDrive() { return m_Drive; } const std::wstring& GetDrive() { return m_Drive; }
@ -282,8 +285,6 @@ private:
std::wstring m_StatsFile; std::wstring m_StatsFile;
std::wstring m_LogFile; std::wstring m_LogFile;
std::wstring m_SkinPath; std::wstring m_SkinPath;
std::wstring m_PluginPath;
std::wstring m_AddonPath;
std::wstring m_Drive; std::wstring m_Drive;