mirror of
https://github.com/chibicitiberiu/rainmeter-studio.git
synced 2024-02-24 04:33:31 +00:00
Code cleanup.
This commit is contained in:
parent
a336c916f6
commit
1808930c5a
@ -60,6 +60,35 @@ CDialogAbout::~CDialogAbout()
|
|||||||
delete m_TabVersion;
|
delete m_TabVersion;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
** Open
|
||||||
|
**
|
||||||
|
** Opens the About dialog by tab name.
|
||||||
|
**
|
||||||
|
*/
|
||||||
|
void CDialogAbout::Open(const WCHAR* name)
|
||||||
|
{
|
||||||
|
int tab = 0;
|
||||||
|
|
||||||
|
if (name)
|
||||||
|
{
|
||||||
|
if (_wcsnicmp(name, L"Measures", 8) == 0)
|
||||||
|
{
|
||||||
|
tab = 1;
|
||||||
|
}
|
||||||
|
else if (_wcsnicmp(name, L"Plugins", 7) == 0)
|
||||||
|
{
|
||||||
|
tab = 2;
|
||||||
|
}
|
||||||
|
else if (_wcsnicmp(name, L"Version", 7) == 0)
|
||||||
|
{
|
||||||
|
tab = 3;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Open(tab);
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** Open
|
** Open
|
||||||
**
|
**
|
||||||
|
@ -34,6 +34,7 @@ public:
|
|||||||
INT_PTR OnNotify(WPARAM wParam, LPARAM lParam);
|
INT_PTR OnNotify(WPARAM wParam, LPARAM lParam);
|
||||||
INT_PTR OnCommand(WPARAM wParam, LPARAM lParam);
|
INT_PTR OnCommand(WPARAM wParam, LPARAM lParam);
|
||||||
|
|
||||||
|
static void Open(const WCHAR* name);
|
||||||
static void Open(int tab = 0);
|
static void Open(int tab = 0);
|
||||||
static void ShowAboutLog();
|
static void ShowAboutLog();
|
||||||
|
|
||||||
|
@ -59,6 +59,31 @@ CDialogManage::~CDialogManage()
|
|||||||
delete m_TabSettings;
|
delete m_TabSettings;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
** Open
|
||||||
|
**
|
||||||
|
** Opens the Manage dialog by tab name.
|
||||||
|
**
|
||||||
|
*/
|
||||||
|
void CDialogManage::Open(const WCHAR* name)
|
||||||
|
{
|
||||||
|
int tab = 0;
|
||||||
|
|
||||||
|
if (name)
|
||||||
|
{
|
||||||
|
if (_wcsnicmp(name, L"Themes", 6) == 0)
|
||||||
|
{
|
||||||
|
tab = 1;
|
||||||
|
}
|
||||||
|
else if (_wcsnicmp(name, L"Settings", 8) == 0)
|
||||||
|
{
|
||||||
|
tab = 2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Open(tab);
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** Open
|
** Open
|
||||||
**
|
**
|
||||||
@ -266,7 +291,7 @@ INT_PTR CDialogManage::OnCommand(WPARAM wParam, LPARAM lParam)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case IDC_OPENLOG_BUTTON:
|
case IDC_OPENLOG_BUTTON:
|
||||||
RainmeterAbout();
|
CDialogAbout::Open();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case IDCLOSE:
|
case IDCLOSE:
|
||||||
|
@ -35,6 +35,7 @@ public:
|
|||||||
INT_PTR OnNotify(WPARAM wParam, LPARAM lParam);
|
INT_PTR OnNotify(WPARAM wParam, LPARAM lParam);
|
||||||
INT_PTR OnCommand(WPARAM wParam, LPARAM lParam);
|
INT_PTR OnCommand(WPARAM wParam, LPARAM lParam);
|
||||||
|
|
||||||
|
static void Open(const WCHAR* name);
|
||||||
static void Open(int tab = 0);
|
static void Open(int tab = 0);
|
||||||
static void OpenSkin(CMeterWindow* meterWindow);
|
static void OpenSkin(CMeterWindow* meterWindow);
|
||||||
|
|
||||||
|
@ -35,105 +35,6 @@ using namespace Gdiplus;
|
|||||||
|
|
||||||
CRainmeter* Rainmeter; // The module
|
CRainmeter* Rainmeter; // The module
|
||||||
|
|
||||||
/*
|
|
||||||
** ParseString
|
|
||||||
**
|
|
||||||
** Splits the given string into substrings
|
|
||||||
**
|
|
||||||
*/
|
|
||||||
std::vector<std::wstring> CRainmeter::ParseString(LPCTSTR str)
|
|
||||||
{
|
|
||||||
std::vector<std::wstring> result;
|
|
||||||
if (str)
|
|
||||||
{
|
|
||||||
std::wstring arg = str;
|
|
||||||
|
|
||||||
// Split the argument between first space.
|
|
||||||
// Or if string is in quotes, the after the second quote.
|
|
||||||
|
|
||||||
size_t pos;
|
|
||||||
std::wstring newStr;
|
|
||||||
while ((pos = arg.find_first_not_of(L' ')) != std::wstring::npos)
|
|
||||||
{
|
|
||||||
if (arg[pos] == L'"')
|
|
||||||
{
|
|
||||||
if (arg.size() > (pos + 2) &&
|
|
||||||
arg[pos + 1] == L'"' && arg[pos + 2] == L'"')
|
|
||||||
{
|
|
||||||
// Eat found quotes and finding ending """
|
|
||||||
arg.erase(0, pos + 3);
|
|
||||||
|
|
||||||
size_t extra = 4;
|
|
||||||
if ((pos = arg.find(L"\"\"\" ")) == std::wstring::npos)
|
|
||||||
{
|
|
||||||
extra = 3;
|
|
||||||
pos = arg.find(L"\"\"\"");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (pos != std::wstring::npos)
|
|
||||||
{
|
|
||||||
newStr.assign(arg, 0, pos);
|
|
||||||
arg.erase(0, pos + extra);
|
|
||||||
|
|
||||||
result.push_back(newStr);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Skip stripping quotes
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// Eat found quote and find ending quote
|
|
||||||
arg.erase(0, pos + 1);
|
|
||||||
pos = arg.find_first_of(L'"');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (pos > 0)
|
|
||||||
{
|
|
||||||
// Eat everything until non-space (and non-quote) char
|
|
||||||
arg.erase(0, pos);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Find the second quote
|
|
||||||
pos = arg.find_first_of(L' ');
|
|
||||||
}
|
|
||||||
|
|
||||||
if (pos != std::wstring::npos)
|
|
||||||
{
|
|
||||||
newStr.assign(arg, 0, pos);
|
|
||||||
arg.erase(0, pos + 1);
|
|
||||||
|
|
||||||
// Strip quotes
|
|
||||||
while ((pos = newStr.find(L'"')) != std::wstring::npos)
|
|
||||||
{
|
|
||||||
newStr.erase(pos, 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
result.push_back(newStr);
|
|
||||||
}
|
|
||||||
else // quote or space not found
|
|
||||||
{
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (arg.size() > 0)
|
|
||||||
{
|
|
||||||
// Strip quotes
|
|
||||||
while ((pos = arg.find(L'"')) != std::wstring::npos)
|
|
||||||
{
|
|
||||||
arg.erase(pos, 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
result.push_back(arg);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** Initialize
|
** Initialize
|
||||||
**
|
**
|
||||||
@ -354,17 +255,115 @@ LPCTSTR PluginBridge(LPCTSTR _sCommand, LPCTSTR _sData)
|
|||||||
return L"error:no rainmeter!";
|
return L"error:no rainmeter!";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
** ParseString
|
||||||
|
**
|
||||||
|
** Splits the given string into substrings
|
||||||
|
**
|
||||||
|
*/
|
||||||
|
std::vector<std::wstring> CRainmeter::ParseString(LPCTSTR str)
|
||||||
|
{
|
||||||
|
std::vector<std::wstring> result;
|
||||||
|
|
||||||
|
if (str)
|
||||||
|
{
|
||||||
|
std::wstring arg = str;
|
||||||
|
|
||||||
|
// Split the argument between first space.
|
||||||
|
// Or if string is in quotes, the after the second quote.
|
||||||
|
|
||||||
|
size_t pos;
|
||||||
|
std::wstring newStr;
|
||||||
|
while ((pos = arg.find_first_not_of(L' ')) != std::wstring::npos)
|
||||||
|
{
|
||||||
|
if (arg[pos] == L'"')
|
||||||
|
{
|
||||||
|
if (arg.size() > (pos + 2) &&
|
||||||
|
arg[pos + 1] == L'"' && arg[pos + 2] == L'"')
|
||||||
|
{
|
||||||
|
// Eat found quotes and finding ending """
|
||||||
|
arg.erase(0, pos + 3);
|
||||||
|
|
||||||
|
size_t extra = 4;
|
||||||
|
if ((pos = arg.find(L"\"\"\" ")) == std::wstring::npos)
|
||||||
|
{
|
||||||
|
extra = 3;
|
||||||
|
pos = arg.find(L"\"\"\"");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (pos != std::wstring::npos)
|
||||||
|
{
|
||||||
|
newStr.assign(arg, 0, pos);
|
||||||
|
arg.erase(0, pos + extra);
|
||||||
|
|
||||||
|
result.push_back(newStr);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Skip stripping quotes
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Eat found quote and find ending quote
|
||||||
|
arg.erase(0, pos + 1);
|
||||||
|
pos = arg.find_first_of(L'"');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (pos > 0)
|
||||||
|
{
|
||||||
|
// Eat everything until non-space (and non-quote) char
|
||||||
|
arg.erase(0, pos);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Find the second quote
|
||||||
|
pos = arg.find_first_of(L' ');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (pos != std::wstring::npos)
|
||||||
|
{
|
||||||
|
newStr.assign(arg, 0, pos);
|
||||||
|
arg.erase(0, pos + 1);
|
||||||
|
|
||||||
|
// Strip quotes
|
||||||
|
while ((pos = newStr.find(L'"')) != std::wstring::npos)
|
||||||
|
{
|
||||||
|
newStr.erase(pos, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
result.push_back(newStr);
|
||||||
|
}
|
||||||
|
else // quote or space not found
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (arg.size() > 0)
|
||||||
|
{
|
||||||
|
// Strip quotes
|
||||||
|
while ((pos = arg.find(L'"')) != std::wstring::npos)
|
||||||
|
{
|
||||||
|
arg.erase(pos, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
result.push_back(arg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** BangWithArgs
|
** BangWithArgs
|
||||||
**
|
**
|
||||||
** Parses Bang args
|
** Parses Bang args
|
||||||
**
|
**
|
||||||
*/
|
*/
|
||||||
void BangWithArgs(BANGCOMMAND bang, const WCHAR* arg, size_t numOfArgs)
|
void CRainmeter::BangWithArgs(BANGCOMMAND bang, const WCHAR* arg, size_t numOfArgs)
|
||||||
{
|
{
|
||||||
if (Rainmeter)
|
std::vector<std::wstring> subStrings = ParseString(arg);
|
||||||
{
|
|
||||||
std::vector<std::wstring> subStrings = CRainmeter::ParseString(arg);
|
|
||||||
size_t subStringsSize = subStrings.size();
|
size_t subStringsSize = subStrings.size();
|
||||||
std::wstring config;
|
std::wstring config;
|
||||||
std::wstring argument;
|
std::wstring argument;
|
||||||
@ -389,7 +388,7 @@ void BangWithArgs(BANGCOMMAND bang, const WCHAR* arg, size_t numOfArgs)
|
|||||||
if ((!config.empty()) && (config != L"*"))
|
if ((!config.empty()) && (config != L"*"))
|
||||||
{
|
{
|
||||||
// Config defined, so bang only that
|
// Config defined, so bang only that
|
||||||
CMeterWindow* meterWindow = Rainmeter->GetMeterWindow(config);
|
CMeterWindow* meterWindow = GetMeterWindow(config);
|
||||||
|
|
||||||
if (meterWindow)
|
if (meterWindow)
|
||||||
{
|
{
|
||||||
@ -403,10 +402,8 @@ void BangWithArgs(BANGCOMMAND bang, const WCHAR* arg, size_t numOfArgs)
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
// No config defined -> apply to all.
|
// No config defined -> apply to all.
|
||||||
const std::map<std::wstring, CMeterWindow*>& windows = Rainmeter->GetAllMeterWindows();
|
std::map<std::wstring, CMeterWindow*>::const_iterator iter = m_Meters.begin();
|
||||||
std::map<std::wstring, CMeterWindow*>::const_iterator iter = windows.begin();
|
for (; iter != m_Meters.end(); ++iter)
|
||||||
|
|
||||||
for (; iter != windows.end(); ++iter)
|
|
||||||
{
|
{
|
||||||
((*iter).second)->RunBang(bang, argument.c_str());
|
((*iter).second)->RunBang(bang, argument.c_str());
|
||||||
}
|
}
|
||||||
@ -416,7 +413,6 @@ void BangWithArgs(BANGCOMMAND bang, const WCHAR* arg, size_t numOfArgs)
|
|||||||
{
|
{
|
||||||
Log(LOG_ERROR, L"Bang: Incorrect number of arugments");
|
Log(LOG_ERROR, L"Bang: Incorrect number of arugments");
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -425,16 +421,14 @@ void BangWithArgs(BANGCOMMAND bang, const WCHAR* arg, size_t numOfArgs)
|
|||||||
** Parses Bang args for Group
|
** Parses Bang args for Group
|
||||||
**
|
**
|
||||||
*/
|
*/
|
||||||
void BangGroupWithArgs(BANGCOMMAND bang, const WCHAR* arg, size_t numOfArgs)
|
void CRainmeter::BangGroupWithArgs(BANGCOMMAND bang, const WCHAR* arg, size_t numOfArgs)
|
||||||
{
|
{
|
||||||
if (Rainmeter)
|
std::vector<std::wstring> subStrings = ParseString(arg);
|
||||||
{
|
|
||||||
std::vector<std::wstring> subStrings = CRainmeter::ParseString(arg);
|
|
||||||
|
|
||||||
if (subStrings.size() > numOfArgs)
|
if (subStrings.size() > numOfArgs)
|
||||||
{
|
{
|
||||||
std::multimap<int, CMeterWindow*> windows;
|
std::multimap<int, CMeterWindow*> windows;
|
||||||
Rainmeter->GetMeterWindowsByLoadOrder(windows, subStrings[numOfArgs]);
|
GetMeterWindowsByLoadOrder(windows, subStrings[numOfArgs]);
|
||||||
|
|
||||||
std::multimap<int, CMeterWindow*>::const_iterator iter = windows.begin();
|
std::multimap<int, CMeterWindow*>::const_iterator iter = windows.begin();
|
||||||
for (; iter != windows.end(); ++iter)
|
for (; iter != windows.end(); ++iter)
|
||||||
@ -454,27 +448,24 @@ void BangGroupWithArgs(BANGCOMMAND bang, const WCHAR* arg, size_t numOfArgs)
|
|||||||
{
|
{
|
||||||
Log(LOG_ERROR, L"BangGroup: Incorrect number of arguments");
|
Log(LOG_ERROR, L"BangGroup: Incorrect number of arguments");
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** RainmeterActivateConfig
|
** RainmeterActivateConfig
|
||||||
**
|
**
|
||||||
** Callback for the !RainmeterActivateConfig bang
|
** !RainmeterActivateConfig bang
|
||||||
**
|
**
|
||||||
*/
|
*/
|
||||||
void RainmeterActivateConfig(const WCHAR* arg)
|
void CRainmeter::RainmeterActivateConfig(const WCHAR* arg)
|
||||||
{
|
{
|
||||||
if (Rainmeter)
|
std::vector<std::wstring> subStrings = ParseString(arg);
|
||||||
{
|
|
||||||
std::vector<std::wstring> subStrings = CRainmeter::ParseString(arg);
|
|
||||||
|
|
||||||
if (subStrings.size() > 1)
|
if (subStrings.size() > 1)
|
||||||
{
|
{
|
||||||
std::pair<int, int> indexes = Rainmeter->GetMeterWindowIndex(subStrings[0], subStrings[1]);
|
std::pair<int, int> indexes = GetMeterWindowIndex(subStrings[0], subStrings[1]);
|
||||||
if (indexes.first != -1 && indexes.second != -1)
|
if (indexes.first != -1 && indexes.second != -1)
|
||||||
{
|
{
|
||||||
Rainmeter->ActivateConfig(indexes.first, indexes.second);
|
ActivateConfig(indexes.first, indexes.second);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
LogWithArgs(LOG_ERROR, L"!ActivateConfig: \"%s\\%s\" not found", subStrings[0].c_str(), subStrings[1].c_str());
|
LogWithArgs(LOG_ERROR, L"!ActivateConfig: \"%s\\%s\" not found", subStrings[0].c_str(), subStrings[1].c_str());
|
||||||
@ -484,27 +475,24 @@ void RainmeterActivateConfig(const WCHAR* arg)
|
|||||||
// If we got this far, something went wrong
|
// If we got this far, something went wrong
|
||||||
Log(LOG_ERROR, L"!ActivateConfig: Invalid parameters");
|
Log(LOG_ERROR, L"!ActivateConfig: Invalid parameters");
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** RainmeterDeactivateConfig
|
** RainmeterDeactivateConfig
|
||||||
**
|
**
|
||||||
** Callback for the !RainmeterDeactivateConfig bang
|
** !RainmeterDeactivateConfig bang
|
||||||
**
|
**
|
||||||
*/
|
*/
|
||||||
void RainmeterDeactivateConfig(const WCHAR* arg)
|
void CRainmeter::RainmeterDeactivateConfig(const WCHAR* arg)
|
||||||
{
|
{
|
||||||
if (Rainmeter)
|
std::vector<std::wstring> subStrings = ParseString(arg);
|
||||||
{
|
|
||||||
std::vector<std::wstring> subStrings = CRainmeter::ParseString(arg);
|
|
||||||
|
|
||||||
if (!subStrings.empty())
|
if (!subStrings.empty())
|
||||||
{
|
{
|
||||||
CMeterWindow* mw = Rainmeter->GetMeterWindow(subStrings[0]);
|
CMeterWindow* mw = GetMeterWindow(subStrings[0]);
|
||||||
if (mw)
|
if (mw)
|
||||||
{
|
{
|
||||||
Rainmeter->DeactivateConfig(mw, -1);
|
DeactivateConfig(mw, -1);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
LogWithArgs(LOG_WARNING, L"!DeactivateConfig: \"%s\" not active", subStrings[0].c_str());
|
LogWithArgs(LOG_WARNING, L"!DeactivateConfig: \"%s\" not active", subStrings[0].c_str());
|
||||||
@ -513,27 +501,24 @@ void RainmeterDeactivateConfig(const WCHAR* arg)
|
|||||||
{
|
{
|
||||||
Log(LOG_ERROR, L"!DeactivateConfig: Invalid parameters");
|
Log(LOG_ERROR, L"!DeactivateConfig: Invalid parameters");
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** RainmeterToggleConfig
|
** RainmeterToggleConfig
|
||||||
**
|
**
|
||||||
** Callback for the !RainmeterToggleConfig bang
|
** !RainmeterToggleConfig bang
|
||||||
**
|
**
|
||||||
*/
|
*/
|
||||||
void RainmeterToggleConfig(const WCHAR* arg)
|
void CRainmeter::RainmeterToggleConfig(const WCHAR* arg)
|
||||||
{
|
{
|
||||||
if (Rainmeter)
|
std::vector<std::wstring> subStrings = ParseString(arg);
|
||||||
{
|
|
||||||
std::vector<std::wstring> subStrings = CRainmeter::ParseString(arg);
|
|
||||||
|
|
||||||
if (subStrings.size() >= 2)
|
if (subStrings.size() >= 2)
|
||||||
{
|
{
|
||||||
CMeterWindow* mw = Rainmeter->GetMeterWindow(subStrings[0]);
|
CMeterWindow* mw = GetMeterWindow(subStrings[0]);
|
||||||
if (mw)
|
if (mw)
|
||||||
{
|
{
|
||||||
Rainmeter->DeactivateConfig(mw, -1);
|
DeactivateConfig(mw, -1);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -544,132 +529,53 @@ void RainmeterToggleConfig(const WCHAR* arg)
|
|||||||
{
|
{
|
||||||
Log(LOG_ERROR, L"!ToggleConfig: Invalid parameters");
|
Log(LOG_ERROR, L"!ToggleConfig: Invalid parameters");
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** RainmeterDeactivateConfigGroup
|
** RainmeterDeactivateConfigGroup
|
||||||
**
|
**
|
||||||
** Callback for the !RainmeterDeactivateConfigGroup bang
|
** !RainmeterDeactivateConfigGroup bang
|
||||||
**
|
**
|
||||||
*/
|
*/
|
||||||
void RainmeterDeactivateConfigGroup(const WCHAR* arg)
|
void CRainmeter::RainmeterDeactivateConfigGroup(const WCHAR* arg)
|
||||||
{
|
{
|
||||||
if (Rainmeter)
|
std::vector<std::wstring> subStrings = ParseString(arg);
|
||||||
{
|
|
||||||
std::vector<std::wstring> subStrings = CRainmeter::ParseString(arg);
|
|
||||||
|
|
||||||
if (!subStrings.empty())
|
if (!subStrings.empty())
|
||||||
{
|
{
|
||||||
std::multimap<int, CMeterWindow*> windows;
|
std::multimap<int, CMeterWindow*> windows;
|
||||||
Rainmeter->GetMeterWindowsByLoadOrder(windows, subStrings[0]);
|
GetMeterWindowsByLoadOrder(windows, subStrings[0]);
|
||||||
|
|
||||||
std::multimap<int, CMeterWindow*>::const_iterator iter = windows.begin();
|
std::multimap<int, CMeterWindow*>::const_iterator iter = windows.begin();
|
||||||
for (; iter != windows.end(); ++iter)
|
for (; iter != windows.end(); ++iter)
|
||||||
{
|
{
|
||||||
Rainmeter->DeactivateConfig((*iter).second, -1);
|
DeactivateConfig((*iter).second, -1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Log(LOG_ERROR, L"!DeactivateConfigGroup: Invalid parameters");
|
Log(LOG_ERROR, L"!DeactivateConfigGroup: Invalid parameters");
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
** RainmeterRefreshApp
|
|
||||||
**
|
|
||||||
** Callback for the !RainmeterRefreshApp bang
|
|
||||||
**
|
|
||||||
*/
|
|
||||||
void RainmeterRefreshApp()
|
|
||||||
{
|
|
||||||
if (Rainmeter)
|
|
||||||
{
|
|
||||||
// Refresh needs to be delayed since it crashes if done during Update()
|
|
||||||
PostMessage(Rainmeter->GetTrayWindow()->GetWindow(), WM_TRAY_DELAYED_REFRESH_ALL, (WPARAM)NULL, (LPARAM)NULL);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
** RainmeterAbout
|
|
||||||
**
|
|
||||||
** Callback for the !RainmeterAbout bang
|
|
||||||
**
|
|
||||||
*/
|
|
||||||
void RainmeterAbout(const WCHAR* arg)
|
|
||||||
{
|
|
||||||
if (Rainmeter)
|
|
||||||
{
|
|
||||||
int tab = 0;
|
|
||||||
if (arg)
|
|
||||||
{
|
|
||||||
if (_wcsnicmp(arg, L"Measures", 8) == 0)
|
|
||||||
{
|
|
||||||
tab = 1;
|
|
||||||
}
|
|
||||||
else if (_wcsnicmp(arg, L"Plugins", 7) == 0)
|
|
||||||
{
|
|
||||||
tab = 2;
|
|
||||||
}
|
|
||||||
else if (_wcsnicmp(arg, L"Version", 7) == 0)
|
|
||||||
{
|
|
||||||
tab = 3;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
CDialogAbout::Open(tab);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
** RainmeterManage
|
|
||||||
**
|
|
||||||
** Callback for the !RainmeterManage bang
|
|
||||||
**
|
|
||||||
*/
|
|
||||||
void RainmeterManage(const WCHAR* arg)
|
|
||||||
{
|
|
||||||
if (Rainmeter)
|
|
||||||
{
|
|
||||||
int tab = 0;
|
|
||||||
if (arg)
|
|
||||||
{
|
|
||||||
if (_wcsnicmp(arg, L"Themes", 6) == 0)
|
|
||||||
{
|
|
||||||
tab = 1;
|
|
||||||
}
|
|
||||||
else if (_wcsnicmp(arg, L"Settings", 8) == 0)
|
|
||||||
{
|
|
||||||
tab = 2;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
CDialogManage::Open(tab);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** RainmeterSkinMenu
|
** RainmeterSkinMenu
|
||||||
**
|
**
|
||||||
** Callback for the !RainmeterSkinMenu bang
|
** !RainmeterSkinMenu bang
|
||||||
**
|
**
|
||||||
*/
|
*/
|
||||||
void RainmeterSkinMenu(const WCHAR* arg)
|
void CRainmeter::RainmeterSkinMenu(const WCHAR* arg)
|
||||||
{
|
{
|
||||||
if (Rainmeter)
|
std::vector<std::wstring> subStrings = ParseString(arg);
|
||||||
{
|
|
||||||
std::vector<std::wstring> subStrings = CRainmeter::ParseString(arg);
|
|
||||||
|
|
||||||
if (!subStrings.empty())
|
if (!subStrings.empty())
|
||||||
{
|
{
|
||||||
CMeterWindow* mw = Rainmeter->GetMeterWindow(subStrings[0]);
|
CMeterWindow* mw = GetMeterWindow(subStrings[0]);
|
||||||
if (mw)
|
if (mw)
|
||||||
{
|
{
|
||||||
POINT pos;
|
POINT pos;
|
||||||
GetCursorPos(&pos);
|
GetCursorPos(&pos);
|
||||||
Rainmeter->ShowContextMenu(pos, mw);
|
ShowContextMenu(pos, mw);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
LogWithArgs(LOG_WARNING, L"!SkinMenu: \"%s\" not active", subStrings[0].c_str());
|
LogWithArgs(LOG_WARNING, L"!SkinMenu: \"%s\" not active", subStrings[0].c_str());
|
||||||
@ -678,50 +584,30 @@ void RainmeterSkinMenu(const WCHAR* arg)
|
|||||||
{
|
{
|
||||||
Log(LOG_ERROR, L"!SkinMenu: Invalid parameter");
|
Log(LOG_ERROR, L"!SkinMenu: Invalid parameter");
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** RainmeterTrayMenu
|
** RainmeterTrayMenu
|
||||||
**
|
**
|
||||||
** Callback for the !RainmeterTrayMenu bang
|
** !RainmeterTrayMenu bang
|
||||||
**
|
**
|
||||||
*/
|
*/
|
||||||
void RainmeterTrayMenu()
|
void CRainmeter::RainmeterTrayMenu()
|
||||||
{
|
{
|
||||||
if (Rainmeter)
|
|
||||||
{
|
|
||||||
POINT pos;
|
POINT pos;
|
||||||
GetCursorPos(&pos);
|
GetCursorPos(&pos);
|
||||||
Rainmeter->ShowContextMenu(pos, NULL);
|
ShowContextMenu(pos, NULL);
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
** RainmeterResetStats
|
|
||||||
**
|
|
||||||
** Callback for the !RainmeterResetStats bang
|
|
||||||
**
|
|
||||||
*/
|
|
||||||
void RainmeterResetStats()
|
|
||||||
{
|
|
||||||
if (Rainmeter)
|
|
||||||
{
|
|
||||||
Rainmeter->ResetStats();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** RainmeterWriteKeyValue
|
** RainmeterWriteKeyValue
|
||||||
**
|
**
|
||||||
** Callback for the !RainmeterWriteKeyValue bang
|
** !RainmeterWriteKeyValue bang
|
||||||
**
|
**
|
||||||
*/
|
*/
|
||||||
void RainmeterWriteKeyValue(const WCHAR* arg)
|
void CRainmeter::RainmeterWriteKeyValue(const WCHAR* arg)
|
||||||
{
|
{
|
||||||
if (Rainmeter)
|
std::vector<std::wstring> subStrings = ParseString(arg);
|
||||||
{
|
|
||||||
std::vector<std::wstring> subStrings = CRainmeter::ParseString(arg);
|
|
||||||
|
|
||||||
if (subStrings.size() > 3)
|
if (subStrings.size() > 3)
|
||||||
{
|
{
|
||||||
@ -733,8 +619,8 @@ void RainmeterWriteKeyValue(const WCHAR* arg)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const std::wstring& skinPath = Rainmeter->GetSkinPath();
|
const std::wstring& skinPath = GetSkinPath();
|
||||||
const std::wstring settingsPath = Rainmeter->GetSettingsPath();
|
const std::wstring settingsPath = GetSettingsPath();
|
||||||
|
|
||||||
if (_wcsnicmp(iniFile.c_str(), skinPath.c_str(), skinPath.size()) != 0 &&
|
if (_wcsnicmp(iniFile.c_str(), skinPath.c_str(), skinPath.size()) != 0 &&
|
||||||
_wcsnicmp(iniFile.c_str(), settingsPath.c_str(), settingsPath.size()) != 0)
|
_wcsnicmp(iniFile.c_str(), settingsPath.c_str(), settingsPath.size()) != 0)
|
||||||
@ -771,11 +657,11 @@ void RainmeterWriteKeyValue(const WCHAR* arg)
|
|||||||
|
|
||||||
if (temporary)
|
if (temporary)
|
||||||
{
|
{
|
||||||
if (Rainmeter->GetDebug()) LogWithArgs(LOG_DEBUG, L"!WriteKeyValue: Writing to: %s (Temp: %s)", iniFile.c_str(), iniWrite.c_str());
|
if (GetDebug()) LogWithArgs(LOG_DEBUG, L"!WriteKeyValue: Writing to: %s (Temp: %s)", iniFile.c_str(), iniWrite.c_str());
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (Rainmeter->GetDebug()) LogWithArgs(LOG_DEBUG, L"!WriteKeyValue: Writing to: %s", iniFile.c_str());
|
if (GetDebug()) LogWithArgs(LOG_DEBUG, L"!WriteKeyValue: Writing to: %s", iniFile.c_str());
|
||||||
iniWrite = iniFile;
|
iniWrite = iniFile;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -788,7 +674,7 @@ void RainmeterWriteKeyValue(const WCHAR* arg)
|
|||||||
|
|
||||||
if (subStrings.size() > 4)
|
if (subStrings.size() > 4)
|
||||||
{
|
{
|
||||||
CMeterWindow* mw = Rainmeter->GetMeterWindow(subStrings[4]);
|
CMeterWindow* mw = GetMeterWindow(subStrings[4]);
|
||||||
if (mw)
|
if (mw)
|
||||||
{
|
{
|
||||||
double value;
|
double value;
|
||||||
@ -845,22 +731,6 @@ void RainmeterWriteKeyValue(const WCHAR* arg)
|
|||||||
{
|
{
|
||||||
Log(LOG_ERROR, L"!WriteKeyValue: Invalid parameters");
|
Log(LOG_ERROR, L"!WriteKeyValue: Invalid parameters");
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
** RainmeterQuit
|
|
||||||
**
|
|
||||||
** Callback for the !RainmeterQuit bang
|
|
||||||
**
|
|
||||||
*/
|
|
||||||
void RainmeterQuit()
|
|
||||||
{
|
|
||||||
if (Rainmeter)
|
|
||||||
{
|
|
||||||
// Quit needs to be delayed since it crashes if done during Update()
|
|
||||||
PostMessage(Rainmeter->GetTrayWindow()->GetWindow(), WM_COMMAND, MAKEWPARAM(ID_CONTEXT_QUIT, 0), (LPARAM)NULL);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -1281,7 +1151,8 @@ void CRainmeter::ActivateActiveConfigs()
|
|||||||
|
|
||||||
void CRainmeter::ActivateConfig(int configIndex, int iniIndex)
|
void CRainmeter::ActivateConfig(int configIndex, int iniIndex)
|
||||||
{
|
{
|
||||||
if (configIndex >= 0 && configIndex < (int)m_ConfigStrings.size())
|
if (configIndex >= 0 && configIndex < (int)m_ConfigStrings.size() &&
|
||||||
|
iniIndex >= 0 && iniIndex < (int)m_ConfigStrings[configIndex].iniFiles.size())
|
||||||
{
|
{
|
||||||
const std::wstring skinIniFile = m_ConfigStrings[configIndex].iniFiles[iniIndex];
|
const std::wstring skinIniFile = m_ConfigStrings[configIndex].iniFiles[iniIndex];
|
||||||
const std::wstring skinConfig = m_ConfigStrings[configIndex].config;
|
const std::wstring skinConfig = m_ConfigStrings[configIndex].config;
|
||||||
@ -1355,6 +1226,23 @@ bool CRainmeter::DeactivateConfig(CMeterWindow* meterWindow, int configIndex, bo
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CRainmeter::ToggleConfig(int configIndex, int iniIndex)
|
||||||
|
{
|
||||||
|
if (configIndex >= 0 && configIndex < (int)m_ConfigStrings.size() &&
|
||||||
|
iniIndex >= 0 && iniIndex < (int)m_ConfigStrings[configIndex].iniFiles.size())
|
||||||
|
{
|
||||||
|
if (m_ConfigStrings[configIndex].active == iniIndex + 1)
|
||||||
|
{
|
||||||
|
CMeterWindow* meterWindow = Rainmeter->GetMeterWindow(m_ConfigStrings[configIndex].config);
|
||||||
|
DeactivateConfig(meterWindow, configIndex);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ActivateConfig(configIndex, iniIndex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void CRainmeter::WriteActive(const std::wstring& config, int iniIndex)
|
void CRainmeter::WriteActive(const std::wstring& config, int iniIndex)
|
||||||
{
|
{
|
||||||
WCHAR buffer[32];
|
WCHAR buffer[32];
|
||||||
@ -1523,6 +1411,29 @@ std::pair<int, int> CRainmeter::GetMeterWindowIndex(const std::wstring& config,
|
|||||||
return indexes;
|
return indexes;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::pair<int, int> CRainmeter::GetMeterWindowIndex(UINT menuCommand)
|
||||||
|
{
|
||||||
|
std::pair<int, int> indexes;
|
||||||
|
|
||||||
|
if (menuCommand >= ID_CONFIG_FIRST && menuCommand <= ID_CONFIG_LAST)
|
||||||
|
{
|
||||||
|
// Check which config was selected
|
||||||
|
for (size_t i = 0, isize = m_ConfigStrings.size(); i < isize; ++i)
|
||||||
|
{
|
||||||
|
if (menuCommand >= m_ConfigStrings[i].commandBase &&
|
||||||
|
menuCommand < (m_ConfigStrings[i].commandBase + m_ConfigStrings[i].iniFiles.size()))
|
||||||
|
{
|
||||||
|
indexes = std::make_pair(i, menuCommand - m_ConfigStrings[i].commandBase);
|
||||||
|
return indexes;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
indexes = std::make_pair(-1, -1); // error
|
||||||
|
return indexes;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
CMeterWindow* CRainmeter::GetMeterWindow(HWND hwnd)
|
CMeterWindow* CRainmeter::GetMeterWindow(HWND hwnd)
|
||||||
{
|
{
|
||||||
std::map<std::wstring, CMeterWindow*>::const_iterator iter = m_Meters.begin();
|
std::map<std::wstring, CMeterWindow*>::const_iterator iter = m_Meters.begin();
|
||||||
@ -1648,8 +1559,12 @@ int CRainmeter::ScanForConfigsRecursive(const std::wstring& path, std::wstring b
|
|||||||
menuItem.index = m_ConfigStrings.size();
|
menuItem.index = m_ConfigStrings.size();
|
||||||
menu.push_back(menuItem);
|
menu.push_back(menuItem);
|
||||||
|
|
||||||
|
if (config.iniFiles.empty())
|
||||||
|
{
|
||||||
|
config.commandBase = ID_CONFIG_FIRST + index;
|
||||||
|
}
|
||||||
config.iniFiles.push_back(fileData.cFileName);
|
config.iniFiles.push_back(fileData.cFileName);
|
||||||
config.commands.push_back(ID_CONFIG_FIRST + index++);
|
++index;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} while (FindNextFile(hSearch, &fileData));
|
} while (FindNextFile(hSearch, &fileData));
|
||||||
@ -1742,7 +1657,8 @@ BOOL CRainmeter::ExecuteBang(const std::wstring& bang, const std::wstring& arg,
|
|||||||
}
|
}
|
||||||
else if (_wcsicmp(name, L"RefreshApp") == 0)
|
else if (_wcsicmp(name, L"RefreshApp") == 0)
|
||||||
{
|
{
|
||||||
RainmeterRefreshApp();
|
// Refresh needs to be delayed since it crashes if done during Update()
|
||||||
|
PostMessage(GetTrayWindow()->GetWindow(), WM_TRAY_DELAYED_REFRESH_ALL, (WPARAM)NULL, (LPARAM)NULL);
|
||||||
}
|
}
|
||||||
else if (_wcsicmp(name, L"Redraw") == 0)
|
else if (_wcsicmp(name, L"Redraw") == 0)
|
||||||
{
|
{
|
||||||
@ -1988,13 +1904,21 @@ BOOL CRainmeter::ExecuteBang(const std::wstring& bang, const std::wstring& arg,
|
|||||||
{
|
{
|
||||||
BangWithArgs(BANG_SETOPTIONGROUP, arg.c_str(), 3);
|
BangWithArgs(BANG_SETOPTIONGROUP, arg.c_str(), 3);
|
||||||
}
|
}
|
||||||
|
else if (_wcsicmp(name, L"WriteKeyValue") == 0)
|
||||||
|
{
|
||||||
|
RainmeterWriteKeyValue(arg.c_str());
|
||||||
|
}
|
||||||
|
else if (_wcsicmp(name, L"PluginBang") == 0)
|
||||||
|
{
|
||||||
|
BangWithArgs(BANG_PLUGIN, arg.c_str(), 1);
|
||||||
|
}
|
||||||
else if (_wcsicmp(name, L"About") == 0)
|
else if (_wcsicmp(name, L"About") == 0)
|
||||||
{
|
{
|
||||||
RainmeterAbout(arg.c_str());
|
CDialogAbout::Open(arg.c_str());
|
||||||
}
|
}
|
||||||
else if (_wcsicmp(name, L"Manage") == 0)
|
else if (_wcsicmp(name, L"Manage") == 0)
|
||||||
{
|
{
|
||||||
RainmeterManage(arg.c_str());
|
CDialogManage::Open(arg.c_str());
|
||||||
}
|
}
|
||||||
else if (_wcsicmp(name, L"SkinMenu") == 0)
|
else if (_wcsicmp(name, L"SkinMenu") == 0)
|
||||||
{
|
{
|
||||||
@ -2006,23 +1930,12 @@ BOOL CRainmeter::ExecuteBang(const std::wstring& bang, const std::wstring& arg,
|
|||||||
}
|
}
|
||||||
else if (_wcsicmp(name, L"ResetStats") == 0)
|
else if (_wcsicmp(name, L"ResetStats") == 0)
|
||||||
{
|
{
|
||||||
RainmeterResetStats();
|
ResetStats();
|
||||||
}
|
|
||||||
else if (_wcsicmp(name, L"WriteKeyValue") == 0)
|
|
||||||
{
|
|
||||||
RainmeterWriteKeyValue(arg.c_str());
|
|
||||||
}
|
|
||||||
else if (_wcsicmp(name, L"PluginBang") == 0)
|
|
||||||
{
|
|
||||||
BangWithArgs(BANG_PLUGIN, arg.c_str(), 1);
|
|
||||||
}
|
|
||||||
else if (_wcsicmp(name, L"LsBoxHook") == 0)
|
|
||||||
{
|
|
||||||
// Nothing to do here (this works only with Litestep)
|
|
||||||
}
|
}
|
||||||
else if (_wcsicmp(name, L"Quit") == 0)
|
else if (_wcsicmp(name, L"Quit") == 0)
|
||||||
{
|
{
|
||||||
RainmeterQuit();
|
// Quit needs to be delayed since it crashes if done during Update()
|
||||||
|
PostMessage(GetTrayWindow()->GetWindow(), WM_COMMAND, MAKEWPARAM(ID_CONTEXT_QUIT, 0), (LPARAM)NULL);
|
||||||
}
|
}
|
||||||
else if (_wcsicmp(bang.c_str(), L"!Execute") == 0)
|
else if (_wcsicmp(bang.c_str(), L"!Execute") == 0)
|
||||||
{
|
{
|
||||||
@ -2068,6 +1981,10 @@ BOOL CRainmeter::ExecuteBang(const std::wstring& bang, const std::wstring& arg,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if (_wcsicmp(name, L"LsBoxHook") == 0)
|
||||||
|
{
|
||||||
|
// Deprecated.
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
std::wstring error = L"Unknown bang: " + bang;
|
std::wstring error = L"Unknown bang: " + bang;
|
||||||
@ -2490,11 +2407,11 @@ void CRainmeter::LoadTheme(const std::wstring& name)
|
|||||||
CSystem::CopyFiles(m_IniFile, backup);
|
CSystem::CopyFiles(m_IniFile, backup);
|
||||||
|
|
||||||
// Replace Rainmeter.ini with theme
|
// Replace Rainmeter.ini with theme
|
||||||
std::wstring theme = Rainmeter->GetSettingsPath() + L"Themes\\";
|
std::wstring theme = GetSettingsPath() + L"Themes\\";
|
||||||
theme += name;
|
theme += name;
|
||||||
std::wstring wallpaper = theme + L"\\RainThemes.bmp";
|
std::wstring wallpaper = theme + L"\\RainThemes.bmp";
|
||||||
theme += L"\\Rainmeter.thm";
|
theme += L"\\Rainmeter.thm";
|
||||||
CSystem::CopyFiles(theme, Rainmeter->GetIniFile());
|
CSystem::CopyFiles(theme, GetIniFile());
|
||||||
|
|
||||||
PreserveSetting(backup, L"SkinPath");
|
PreserveSetting(backup, L"SkinPath");
|
||||||
PreserveSetting(backup, L"ConfigEditor");
|
PreserveSetting(backup, L"ConfigEditor");
|
||||||
@ -2795,10 +2712,9 @@ void CRainmeter::ShowContextMenu(POINT pos, CMeterWindow* meterWindow)
|
|||||||
InsertMenu(subMenu, 12, MF_BYPOSITION | MF_SEPARATOR, 0, NULL);
|
InsertMenu(subMenu, 12, MF_BYPOSITION | MF_SEPARATOR, 0, NULL);
|
||||||
|
|
||||||
// Create a menu for all active configs
|
// Create a menu for all active configs
|
||||||
std::map<std::wstring, CMeterWindow*>::const_iterator iter = Rainmeter->GetAllMeterWindows().begin();
|
|
||||||
|
|
||||||
int index = 0;
|
int index = 0;
|
||||||
for (; iter != Rainmeter->GetAllMeterWindows().end(); ++iter)
|
std::map<std::wstring, CMeterWindow*>::const_iterator iter = m_Meters.begin();
|
||||||
|
for (; iter != m_Meters.end(); ++iter)
|
||||||
{
|
{
|
||||||
CMeterWindow* mw = ((*iter).second);
|
CMeterWindow* mw = ((*iter).second);
|
||||||
HMENU skinMenu = CreateSkinMenu(mw, index, configMenu);
|
HMENU skinMenu = CreateSkinMenu(mw, index, configMenu);
|
||||||
@ -2810,7 +2726,7 @@ void CRainmeter::ShowContextMenu(POINT pos, CMeterWindow* meterWindow)
|
|||||||
if (m_NewVersion)
|
if (m_NewVersion)
|
||||||
{
|
{
|
||||||
InsertMenu(subMenu, 0, MF_BYPOSITION, ID_CONTEXT_NEW_VERSION, GetString(ID_STR_UPDATEAVAILABLE));
|
InsertMenu(subMenu, 0, MF_BYPOSITION, ID_CONTEXT_NEW_VERSION, GetString(ID_STR_UPDATEAVAILABLE));
|
||||||
HiliteMenuItem(Rainmeter->GetTrayWindow()->GetWindow(), subMenu, 0, MF_BYPOSITION | MF_HILITE);
|
HiliteMenuItem(GetTrayWindow()->GetWindow(), subMenu, 0, MF_BYPOSITION | MF_HILITE);
|
||||||
InsertMenu(subMenu, 1, MF_BYPOSITION | MF_SEPARATOR, 0, NULL);
|
InsertMenu(subMenu, 1, MF_BYPOSITION | MF_SEPARATOR, 0, NULL);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -2862,7 +2778,7 @@ void CRainmeter::ShowContextMenu(POINT pos, CMeterWindow* meterWindow)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
HMENU CRainmeter::CreateConfigMenu(HMENU configMenu, std::vector<CONFIGMENU>& configMenuData)
|
HMENU CRainmeter::CreateConfigMenu(HMENU configMenu, const std::vector<CONFIGMENU>& configMenuData)
|
||||||
{
|
{
|
||||||
if (!configMenuData.empty())
|
if (!configMenuData.empty())
|
||||||
{
|
{
|
||||||
@ -2892,7 +2808,7 @@ HMENU CRainmeter::CreateConfigMenu(HMENU configMenu, std::vector<CONFIGMENU>& co
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
CONFIG& config = m_ConfigStrings[configMenuData[i].index];
|
CONFIG& config = m_ConfigStrings[configMenuData[i].index];
|
||||||
InsertMenu(configMenu, i, MF_BYPOSITION | ((config.active == i + 1) ? MF_CHECKED : MF_UNCHECKED), config.commands[i], configMenuData[i].name.c_str());
|
InsertMenu(configMenu, i, MF_BYPOSITION | ((config.active == i + 1) ? MF_CHECKED : MF_UNCHECKED), config.commandBase + i, configMenuData[i].name.c_str());
|
||||||
separator = true;
|
separator = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -3070,7 +2986,7 @@ HMENU CRainmeter::CreateSkinMenu(CMeterWindow* meterWindow, int index, HMENU con
|
|||||||
{
|
{
|
||||||
for (int j = 0, jsize = (int)config.iniFiles.size(); j < jsize; ++j)
|
for (int j = 0, jsize = (int)config.iniFiles.size(); j < jsize; ++j)
|
||||||
{
|
{
|
||||||
InsertMenu(variantsMenu, j, MF_BYPOSITION | ((config.active == j + 1) ? MF_CHECKED : MF_UNCHECKED), config.commands[j], config.iniFiles[j].c_str());
|
InsertMenu(variantsMenu, j, MF_BYPOSITION | ((config.active == j + 1) ? MF_CHECKED : MF_UNCHECKED), config.commandBase + j, config.iniFiles[j].c_str());
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -39,23 +39,6 @@
|
|||||||
#define WIDEN(x) WIDEN2(x)
|
#define WIDEN(x) WIDEN2(x)
|
||||||
#define APPDATE WIDEN(__DATE__)
|
#define APPDATE WIDEN(__DATE__)
|
||||||
|
|
||||||
// Callbacks
|
|
||||||
void RainmeterActivateConfig(const WCHAR* arg);
|
|
||||||
void RainmeterDeactivateConfig(const WCHAR* arg);
|
|
||||||
void RainmeterToggleConfig(const WCHAR* arg);
|
|
||||||
void RainmeterDeactivateConfigGroup(const WCHAR* arg);
|
|
||||||
void RainmeterRefreshApp();
|
|
||||||
void RainmeterAbout(const WCHAR* arg = NULL);
|
|
||||||
void RainmeterManage(const WCHAR* arg = NULL);
|
|
||||||
void RainmeterSkinMenu(const WCHAR* arg);
|
|
||||||
void RainmeterTrayMenu();
|
|
||||||
void RainmeterResetStats();
|
|
||||||
void RainmeterWriteKeyValue(const WCHAR* arg);
|
|
||||||
void RainmeterQuit();
|
|
||||||
|
|
||||||
void BangWithArgs(BANGCOMMAND bang, const WCHAR* arg, size_t numOfArgs);
|
|
||||||
void BangGroupWithArgs(BANGCOMMAND bang, const WCHAR* arg, size_t numOfArgs);
|
|
||||||
|
|
||||||
struct GlobalConfig
|
struct GlobalConfig
|
||||||
{
|
{
|
||||||
double netInSpeed;
|
double netInSpeed;
|
||||||
@ -72,7 +55,7 @@ public:
|
|||||||
{
|
{
|
||||||
std::wstring config;
|
std::wstring config;
|
||||||
std::vector<std::wstring> iniFiles;
|
std::vector<std::wstring> iniFiles;
|
||||||
std::vector<UINT> commands;
|
UINT commandBase;
|
||||||
int active;
|
int active;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -104,6 +87,7 @@ public:
|
|||||||
CMeterWindow* GetMeterWindowByINI(const std::wstring& ini_searching);
|
CMeterWindow* GetMeterWindowByINI(const std::wstring& ini_searching);
|
||||||
std::pair<int, int> GetMeterWindowIndex(const std::wstring& config, const std::wstring& iniFile);
|
std::pair<int, int> GetMeterWindowIndex(const std::wstring& config, const std::wstring& iniFile);
|
||||||
std::pair<int, int> GetMeterWindowIndex(CMeterWindow* meterWindow) { return GetMeterWindowIndex(meterWindow->GetSkinName(), meterWindow->GetSkinIniFile()); }
|
std::pair<int, int> GetMeterWindowIndex(CMeterWindow* meterWindow) { return GetMeterWindowIndex(meterWindow->GetSkinName(), meterWindow->GetSkinIniFile()); }
|
||||||
|
std::pair<int, int> GetMeterWindowIndex(UINT menuCommand);
|
||||||
|
|
||||||
CMeterWindow* GetMeterWindow(HWND hwnd);
|
CMeterWindow* GetMeterWindow(HWND hwnd);
|
||||||
void GetMeterWindowsByLoadOrder(std::multimap<int, CMeterWindow*>& windows, const std::wstring& group = L"");
|
void GetMeterWindowsByLoadOrder(std::multimap<int, CMeterWindow*>& windows, const std::wstring& group = L"");
|
||||||
@ -113,6 +97,7 @@ public:
|
|||||||
|
|
||||||
void ActivateConfig(int configIndex, int iniIndex);
|
void ActivateConfig(int configIndex, int iniIndex);
|
||||||
bool DeactivateConfig(CMeterWindow* meterWindow, int configIndex, bool save = true);
|
bool DeactivateConfig(CMeterWindow* meterWindow, int configIndex, bool save = true);
|
||||||
|
void ToggleConfig(int configIndex, int iniIndex);
|
||||||
|
|
||||||
const std::wstring& GetPath() { return m_Path; }
|
const std::wstring& GetPath() { return m_Path; }
|
||||||
const std::wstring& GetIniFile() { return m_IniFile; }
|
const std::wstring& GetIniFile() { return m_IniFile; }
|
||||||
@ -191,6 +176,16 @@ public:
|
|||||||
friend class CDialogManage;
|
friend class CDialogManage;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
void BangWithArgs(BANGCOMMAND bang, const WCHAR* arg, size_t numOfArgs);
|
||||||
|
void BangGroupWithArgs(BANGCOMMAND bang, const WCHAR* arg, size_t numOfArgs);
|
||||||
|
void RainmeterActivateConfig(const WCHAR* arg);
|
||||||
|
void RainmeterDeactivateConfig(const WCHAR* arg);
|
||||||
|
void RainmeterToggleConfig(const WCHAR* arg);
|
||||||
|
void RainmeterDeactivateConfigGroup(const WCHAR* arg);
|
||||||
|
void RainmeterSkinMenu(const WCHAR* arg);
|
||||||
|
void RainmeterTrayMenu();
|
||||||
|
void RainmeterWriteKeyValue(const WCHAR* arg);
|
||||||
|
|
||||||
void ActivateActiveConfigs();
|
void ActivateActiveConfigs();
|
||||||
void CreateMeterWindow(const std::wstring& path, const std::wstring& config, const std::wstring& iniFile);
|
void CreateMeterWindow(const std::wstring& path, const std::wstring& config, const std::wstring& iniFile);
|
||||||
bool DeleteMeterWindow(CMeterWindow* meterWindow, bool bLater);
|
bool DeleteMeterWindow(CMeterWindow* meterWindow, bool bLater);
|
||||||
@ -204,7 +199,7 @@ private:
|
|||||||
HMENU CreateSkinMenu(CMeterWindow* meterWindow, int index, HMENU configMenu);
|
HMENU CreateSkinMenu(CMeterWindow* meterWindow, int index, HMENU configMenu);
|
||||||
void ChangeSkinIndex(HMENU subMenu, int index);
|
void ChangeSkinIndex(HMENU subMenu, int index);
|
||||||
int ScanForConfigsRecursive(const std::wstring& path, std::wstring base, int index, std::vector<CONFIGMENU>& menu, bool DontRecurse);
|
int ScanForConfigsRecursive(const std::wstring& path, std::wstring base, int index, std::vector<CONFIGMENU>& menu, bool DontRecurse);
|
||||||
HMENU CreateConfigMenu(HMENU configMenu, std::vector<CONFIGMENU>& configMenuData);
|
HMENU CreateConfigMenu(HMENU configMenu, const std::vector<CONFIGMENU>& configMenuData);
|
||||||
void CreateThemeMenu(HMENU themeMenu);
|
void CreateThemeMenu(HMENU themeMenu);
|
||||||
void CreateMonitorMenu(HMENU monitorMenu, CMeterWindow* meterWindow);
|
void CreateMonitorMenu(HMENU monitorMenu, CMeterWindow* meterWindow);
|
||||||
void CreateDefaultConfigFile(const std::wstring& strFile);
|
void CreateDefaultConfigFile(const std::wstring& strFile);
|
||||||
|
@ -486,29 +486,10 @@ LRESULT CALLBACK CTrayWindow::WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARA
|
|||||||
}
|
}
|
||||||
else if ((wParam & 0x0ffff) >= ID_CONFIG_FIRST && (wParam & 0x0ffff) <= ID_CONFIG_LAST)
|
else if ((wParam & 0x0ffff) >= ID_CONFIG_FIRST && (wParam & 0x0ffff) <= ID_CONFIG_LAST)
|
||||||
{
|
{
|
||||||
wParam = wParam & 0x0ffff;
|
std::pair<int, int> indexes = Rainmeter->GetMeterWindowIndex((UINT)(wParam & 0x0ffff));
|
||||||
|
if (indexes.first != -1 && indexes.second != -1)
|
||||||
// Check which config was selected
|
|
||||||
const std::vector<CRainmeter::CONFIG>& configs = Rainmeter->GetAllConfigs();
|
|
||||||
|
|
||||||
for (int i = 0, isize = (int)configs.size(); i < isize; ++i)
|
|
||||||
{
|
{
|
||||||
for (int j = 0, jsize = (int)configs[i].commands.size(); j < jsize; ++j)
|
Rainmeter->ToggleConfig(indexes.first, indexes.second);
|
||||||
{
|
|
||||||
if (configs[i].commands[j] == wParam)
|
|
||||||
{
|
|
||||||
if (configs[i].active == j + 1)
|
|
||||||
{
|
|
||||||
CMeterWindow* meterWindow = Rainmeter->GetMeterWindow(configs[i].config);
|
|
||||||
Rainmeter->DeactivateConfig(meterWindow, i);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
Rainmeter->ActivateConfig(i, j);
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
Loading…
x
Reference in New Issue
Block a user