From 04090b232a73f209a051cc9b6879fb557f0ce590 Mon Sep 17 00:00:00 2001 From: Birunthan Mohanathas Date: Thu, 13 Jun 2013 17:20:27 +0300 Subject: [PATCH] Make Rainmeter a singleton class This change is part of making the Libray project more testable. The old g_Rainmeter global pointer has been replaced with a GetRainmeter() function to guarantee that the object exists in some state. --- Library/CommandHandler.cpp | 54 ++++++----- Library/ConfigParser.cpp | 20 ++-- Library/DialogAbout.cpp | 26 +++--- Library/DialogManage.cpp | 140 ++++++++++++++-------------- Library/Export.cpp | 18 ++-- Library/Litestep.cpp | 4 +- Library/Logger.cpp | 8 +- Library/Measure.cpp | 10 +- Library/MeasureNet.cpp | 16 ++-- Library/MeasurePlugin.cpp | 8 +- Library/Meter.cpp | 4 +- Library/MeterBar.cpp | 2 - Library/MeterBitmap.cpp | 2 - Library/MeterButton.cpp | 4 +- Library/MeterHistogram.cpp | 2 - Library/MeterImage.cpp | 2 - Library/MeterRotator.cpp | 2 - Library/MeterString.cpp | 4 +- Library/MeterWindow.cpp | 96 ++++++++++--------- Library/Rainmeter.cpp | 35 +++---- Library/Rainmeter.h | 11 ++- Library/Section.cpp | 4 +- Library/System.cpp | 36 ++++--- Library/TrayWindow.cpp | 64 ++++++------- Library/UpdateCheck.cpp | 8 +- Library/lua/glue/LuaMeterWindow.cpp | 6 +- 26 files changed, 272 insertions(+), 314 deletions(-) diff --git a/Library/CommandHandler.cpp b/Library/CommandHandler.cpp index 26119f11..581a3d01 100644 --- a/Library/CommandHandler.cpp +++ b/Library/CommandHandler.cpp @@ -29,8 +29,6 @@ #include "TrayWindow.h" #include "resource.h" -extern Rainmeter* g_Rainmeter; - namespace { typedef void (* BangHandlerFunc)(std::vector& args, MeterWindow* skin); @@ -160,7 +158,7 @@ void DoBang(const BangInfo& bangInfo, std::vector& args, MeterWind const std::wstring& folderPath = args[bangInfo.argCount]; if (!folderPath.empty() && (folderPath.length() != 1 || folderPath[0] != L'*')) { - MeterWindow* skin = g_Rainmeter->GetMeterWindow(folderPath); + MeterWindow* skin = GetRainmeter().GetMeterWindow(folderPath); if (skin) { skin->DoBang(bangInfo.bang, args); @@ -174,7 +172,7 @@ void DoBang(const BangInfo& bangInfo, std::vector& args, MeterWind } // No skin defined -> apply to all. - for (const auto& ip : g_Rainmeter->GetAllMeterWindows()) + for (const auto& ip : GetRainmeter().GetAllMeterWindows()) { ip.second->DoBang(bangInfo.bang, args); } @@ -208,7 +206,7 @@ void DoGroupBang(const BangInfo& bangInfo, std::vector& args, Mete if (args.size() > bangInfo.argCount) { std::multimap windows; - g_Rainmeter->GetMeterWindowsByLoadOrder(windows, args[bangInfo.argCount]); + GetRainmeter().GetMeterWindowsByLoadOrder(windows, args[bangInfo.argCount]); // Remove extra parameters (including group). args.resize(bangInfo.argCount); @@ -579,24 +577,24 @@ void CommandHandler::DoActivateSkinBang(std::vector& args, MeterWi { if (args.size() == 1) { - int index = g_Rainmeter->FindSkinFolderIndex(args[0]); + int index = GetRainmeter().FindSkinFolderIndex(args[0]); if (index != -1) { - const Rainmeter::SkinFolder& skinFolder = g_Rainmeter->m_SkinFolders[index]; + const Rainmeter::SkinFolder& skinFolder = GetRainmeter().m_SkinFolders[index]; if (!(skinFolder.active == 1 && skinFolder.files.size() == 1)) { // Activate the next index. - g_Rainmeter->ActivateSkin(index, (skinFolder.active < skinFolder.files.size()) ? skinFolder.active : 0); + GetRainmeter().ActivateSkin(index, (skinFolder.active < skinFolder.files.size()) ? skinFolder.active : 0); } return; } } else if (args.size() > 1) { - std::pair indexes = g_Rainmeter->GetMeterWindowIndex(args[0], args[1]); + std::pair indexes = GetRainmeter().GetMeterWindowIndex(args[0], args[1]); if (indexes.first != -1 && indexes.second != -1) { - g_Rainmeter->ActivateSkin(indexes.first, indexes.second); + GetRainmeter().ActivateSkin(indexes.first, indexes.second); return; } } @@ -608,7 +606,7 @@ void CommandHandler::DoDeactivateSkinBang(std::vector& args, Meter { if (!args.empty()) { - skin = g_Rainmeter->GetMeterWindow(args[0]); + skin = GetRainmeter().GetMeterWindow(args[0]); if (!skin) { LogWarningF(L"!DeactivateConfig: \"%s\" not active", args[0].c_str()); @@ -618,7 +616,7 @@ void CommandHandler::DoDeactivateSkinBang(std::vector& args, Meter if (skin) { - g_Rainmeter->DeactivateSkin(skin, -1); + GetRainmeter().DeactivateSkin(skin, -1); } else { @@ -630,10 +628,10 @@ void CommandHandler::DoToggleSkinBang(std::vector& args, MeterWind { if (args.size() >= 2) { - MeterWindow* skin = g_Rainmeter->GetMeterWindow(args[0]); + MeterWindow* skin = GetRainmeter().GetMeterWindow(args[0]); if (skin) { - g_Rainmeter->DeactivateSkin(skin, -1); + GetRainmeter().DeactivateSkin(skin, -1); return; } @@ -651,10 +649,10 @@ void CommandHandler::DoDeactivateSkinGroupBang(std::vector& args, if (!args.empty()) { std::multimap windows; - g_Rainmeter->GetMeterWindowsByLoadOrder(windows, args[0]); + GetRainmeter().GetMeterWindowsByLoadOrder(windows, args[0]); for (const auto& ip : windows) { - g_Rainmeter->DeactivateSkin(ip.second, -1); + GetRainmeter().DeactivateSkin(ip.second, -1); } } else @@ -673,12 +671,12 @@ void CommandHandler::DoLoadLayoutBang(std::vector& args, MeterWind std::wstring command = L"!LoadLayout \""; command += args[0]; command += L'"'; - g_Rainmeter->DelayedExecuteCommand(command.c_str()); + GetRainmeter().DelayedExecuteCommand(command.c_str()); } else { // Not called from a skin (or called with delay). - g_Rainmeter->LoadLayout(args[0]); + GetRainmeter().LoadLayout(args[0]); } } } @@ -730,7 +728,7 @@ void CommandHandler::DoSkinMenuBang(std::vector& args, MeterWindow { if (!args.empty()) { - skin = g_Rainmeter->GetMeterWindow(args[0]); + skin = GetRainmeter().GetMeterWindow(args[0]); if (!skin) { LogWarningF(L"!SkinMenu: \"%s\" not active", args[0].c_str()); @@ -741,7 +739,7 @@ void CommandHandler::DoSkinMenuBang(std::vector& args, MeterWindow if (skin) { POINT pos = System::GetCursorPosition(); - g_Rainmeter->ShowContextMenu(pos, skin); + GetRainmeter().ShowContextMenu(pos, skin); } else { @@ -752,12 +750,12 @@ void CommandHandler::DoSkinMenuBang(std::vector& args, MeterWindow void CommandHandler::DoTrayMenuBang(std::vector& args, MeterWindow* skin) { POINT pos = System::GetCursorPosition(); - g_Rainmeter->ShowContextMenu(pos, nullptr); + GetRainmeter().ShowContextMenu(pos, nullptr); } void CommandHandler::DoResetStatsBang(std::vector& args, MeterWindow* meterWindow) { - g_Rainmeter->ResetStats(); + GetRainmeter().ResetStats(); } void CommandHandler::DoWriteKeyValueBang(std::vector& args, MeterWindow* skin) @@ -787,8 +785,8 @@ void CommandHandler::DoWriteKeyValueBang(std::vector& args, MeterW return; } - if (_wcsnicmp(iniFile, g_Rainmeter->m_SkinPath.c_str(), g_Rainmeter->m_SkinPath.size()) != 0 && - _wcsnicmp(iniFile, g_Rainmeter->m_SettingsPath.c_str(), g_Rainmeter->m_SettingsPath.size()) != 0) + if (_wcsnicmp(iniFile, GetRainmeter().m_SkinPath.c_str(), GetRainmeter().m_SkinPath.size()) != 0 && + _wcsnicmp(iniFile, GetRainmeter().m_SettingsPath.c_str(), GetRainmeter().m_SettingsPath.size()) != 0) { LogErrorF(L"!WriteKeyValue: Illegal path: %s", iniFile); return; @@ -821,14 +819,14 @@ void CommandHandler::DoWriteKeyValueBang(std::vector& args, MeterW if (temporary) { - if (g_Rainmeter->GetDebug()) + if (GetRainmeter().GetDebug()) { LogDebugF(L"!WriteKeyValue: Writing to: %s (Temp: %s)", iniFile, strIniWrite.c_str()); } } else { - if (g_Rainmeter->GetDebug()) + if (GetRainmeter().GetDebug()) { LogDebugF(L"!WriteKeyValue: Writing to: %s", iniFile); } @@ -925,13 +923,13 @@ void CommandHandler::DoLogBang(std::vector& args, MeterWindow* ski void CommandHandler::DoRefreshApp(std::vector& args, MeterWindow* meterWindow) { // Refresh needs to be delayed since it crashes if done during Update(). - PostMessage(g_Rainmeter->m_Window, WM_RAINMETER_DELAYED_REFRESH_ALL, 0, 0); + PostMessage(GetRainmeter().m_Window, WM_RAINMETER_DELAYED_REFRESH_ALL, 0, 0); } void CommandHandler::DoQuitBang(std::vector& args, MeterWindow* meterWindow) { // Quit needs to be delayed since it crashes if done during Update(). - PostMessage(g_Rainmeter->GetTrayWindow()->GetWindow(), WM_COMMAND, MAKEWPARAM(IDM_QUIT, 0), 0); + PostMessage(GetRainmeter().GetTrayWindow()->GetWindow(), WM_COMMAND, MAKEWPARAM(IDM_QUIT, 0), 0); } void CommandHandler::DoLsBoxHookBang(std::vector& args, MeterWindow* meterWindow) diff --git a/Library/ConfigParser.cpp b/Library/ConfigParser.cpp index c2af5ce3..c5c2cdf2 100644 --- a/Library/ConfigParser.cpp +++ b/Library/ConfigParser.cpp @@ -27,8 +27,6 @@ #include "Meter.h" #include "resource.h" -extern Rainmeter* g_Rainmeter; - using namespace Gdiplus; std::unordered_map ConfigParser::c_MonitorVariables; @@ -94,13 +92,13 @@ void ConfigParser::SetBuiltInVariables(const std::wstring& filename, const std:: return m_BuiltInVariables.insert(std::make_pair(name, value)); }; - insertVariable(L"PROGRAMPATH", g_Rainmeter->GetPath()); - insertVariable(L"PROGRAMDRIVE", g_Rainmeter->GetDrive()); - insertVariable(L"SETTINGSPATH", g_Rainmeter->GetSettingsPath()); - insertVariable(L"SKINSPATH", g_Rainmeter->GetSkinPath()); - insertVariable(L"PLUGINSPATH", g_Rainmeter->GetPluginPath()); + insertVariable(L"PROGRAMPATH", GetRainmeter().GetPath()); + insertVariable(L"PROGRAMDRIVE", GetRainmeter().GetDrive()); + insertVariable(L"SETTINGSPATH", GetRainmeter().GetSettingsPath()); + insertVariable(L"SKINSPATH", GetRainmeter().GetSkinPath()); + insertVariable(L"PLUGINSPATH", GetRainmeter().GetPluginPath()); insertVariable(L"CURRENTPATH", PathUtil::GetFolderFromFilePath(filename)); - insertVariable(L"ADDONSPATH", g_Rainmeter->GetAddonPath()); + insertVariable(L"ADDONSPATH", GetRainmeter().GetAddonPath()); if (meterWindow) { @@ -1289,7 +1287,7 @@ void ConfigParser::ReadIniFile(const std::wstring& iniFile, LPCTSTR skinSection, { if (depth > 100) // Is 100 enough to assume the include loop never ends? { - g_Rainmeter->ShowMessage(nullptr, GetString(ID_STR_INCLUDEINFINITELOOP), MB_OK | MB_ICONERROR); + GetRainmeter().ShowMessage(nullptr, GetString(ID_STR_INCLUDEINFINITELOOP), MB_OK | MB_ICONERROR); return; } @@ -1306,11 +1304,11 @@ void ConfigParser::ReadIniFile(const std::wstring& iniFile, LPCTSTR skinSection, if (temporary) { - if (g_Rainmeter->GetDebug()) LogDebugF(L"Reading file: %s (Temp: %s)", iniFile.c_str(), iniRead.c_str()); + if (GetRainmeter().GetDebug()) LogDebugF(L"Reading file: %s (Temp: %s)", iniFile.c_str(), iniRead.c_str()); } else { - if (g_Rainmeter->GetDebug()) LogDebugF(L"Reading file: %s", iniFile.c_str()); + if (GetRainmeter().GetDebug()) LogDebugF(L"Reading file: %s", iniFile.c_str()); iniRead = iniFile; } diff --git a/Library/DialogAbout.cpp b/Library/DialogAbout.cpp index 29b0987c..5a5f22b6 100644 --- a/Library/DialogAbout.cpp +++ b/Library/DialogAbout.cpp @@ -26,8 +26,6 @@ #include "DialogAbout.h" #include "../Version.h" -extern Rainmeter* g_Rainmeter; - WINDOWPLACEMENT DialogAbout::c_WindowPlacement = {0}; DialogAbout* DialogAbout::c_Dialog = nullptr; @@ -63,7 +61,7 @@ void DialogAbout::Open(int tab) 0, 0, 400, 210, DS_CENTER | WS_POPUP | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME, WS_EX_APPWINDOW | WS_EX_CONTROLPARENT | ((*GetString(ID_STR_ISRTL) == L'1') ? WS_EX_LAYOUTRTL : 0), - g_Rainmeter->GetWindow()); + GetRainmeter().GetWindow()); // Fake WM_NOTIFY to change tab NMHDR nm; @@ -702,7 +700,7 @@ void DialogAbout::TabSkins::UpdateSkinList() // Add entries for each skin std::wstring::size_type maxLength = 0; - const std::map& windows = g_Rainmeter->GetAllMeterWindows(); + const std::map& windows = GetRainmeter().GetAllMeterWindows(); std::map::const_iterator iter = windows.begin(); bool found = false; for ( ; iter != windows.end(); ++iter) @@ -756,7 +754,7 @@ void DialogAbout::TabSkins::UpdateMeasureList(MeterWindow* meterWindow) HWND item = GetControl(Id_SkinsListBox); int selected = (int)SendMessage(item, LB_GETCURSEL, 0, 0); - const std::map& windows = g_Rainmeter->GetAllMeterWindows(); + const std::map& windows = GetRainmeter().GetAllMeterWindows(); std::map::const_iterator iter = windows.begin(); while (selected && iter != windows.end()) { @@ -1090,10 +1088,10 @@ void DialogAbout::TabPlugins::Initialize() FindClose(hSearch); }; - findPlugins(g_Rainmeter->GetPluginPath()); - if (g_Rainmeter->HasUserPluginPath()) + findPlugins(GetRainmeter().GetPluginPath()); + if (GetRainmeter().HasUserPluginPath()) { - findPlugins(g_Rainmeter->GetUserPluginPath()); + findPlugins(GetRainmeter().GetUserPluginPath()); } m_Initialized = true; @@ -1181,15 +1179,15 @@ void DialogAbout::TabVersion::Initialize() SetWindowText(item, tmpSz); item = GetControl(Id_PathLabel); - std::wstring text = L"Path: " + g_Rainmeter->GetPath(); + std::wstring text = L"Path: " + GetRainmeter().GetPath(); SetWindowText(item, text.c_str()); item = GetControl(Id_IniFileLabel); - text = L"IniFile: " + g_Rainmeter->GetIniFile(); + text = L"IniFile: " + GetRainmeter().GetIniFile(); SetWindowText(item, text.c_str()); item = GetControl(Id_SkinPathLabel); - text = L"SkinPath: " + g_Rainmeter->GetSkinPath(); + text = L"SkinPath: " + GetRainmeter().GetSkinPath(); SetWindowText(item, text.c_str()); m_Initialized = true; @@ -1228,11 +1226,11 @@ INT_PTR DialogAbout::TabVersion::OnCommand(WPARAM wParam, LPARAM lParam) int len = _snwprintf_s(tmpSz, _TRUNCATE, L"%s%s r%i %s (%s)", APPVERSION, revision_beta ? L" beta" : L"", revision_number, APPBITS, APPDATE); std::wstring text(tmpSz, len); text += L"\nPath: "; - text += g_Rainmeter->GetPath(); + text += GetRainmeter().GetPath(); text += L"\nIniFile: "; - text += g_Rainmeter->GetIniFile(); + text += GetRainmeter().GetIniFile(); text += L"\nSkinPath: "; - text += g_Rainmeter->GetSkinPath(); + text += GetRainmeter().GetSkinPath(); System::SetClipboardText(text); } break; diff --git a/Library/DialogManage.cpp b/Library/DialogManage.cpp index f08453c0..82c66ca4 100644 --- a/Library/DialogManage.cpp +++ b/Library/DialogManage.cpp @@ -29,8 +29,6 @@ #include "../Version.h" #include -extern Rainmeter* g_Rainmeter; - WINDOWPLACEMENT DialogManage::c_WindowPlacement = {0}; DialogManage* DialogManage::c_Dialog = nullptr; @@ -90,7 +88,7 @@ void DialogManage::Open(int tab) 0, 0, 500, 322, DS_CENTER | WS_POPUP | WS_MINIMIZEBOX | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME, WS_EX_APPWINDOW | WS_EX_CONTROLPARENT | ((*GetString(ID_STR_ISRTL) == L'1') ? WS_EX_LAYOUTRTL : 0), - g_Rainmeter->GetWindow()); + GetRainmeter().GetWindow()); // Fake WM_NOTIFY to change tab NMHDR nm; @@ -256,11 +254,11 @@ INT_PTR DialogManage::OnCommand(WPARAM wParam, LPARAM lParam) switch (LOWORD(wParam)) { case Id_RefreshAllButton: - g_Rainmeter->RefreshAll(); + GetRainmeter().RefreshAll(); break; case Id_EditSettingsButton: - g_Rainmeter->EditSettings(); + GetRainmeter().EditSettings(); break; case Id_OpenLogButton: @@ -572,7 +570,7 @@ void DialogManage::TabSkins::Update(MeterWindow* meterWindow, bool deleted) tvi.item.mask = TVIF_TEXT | TVIF_IMAGE | TVIF_SELECTEDIMAGE; tvi.item.iImage = tvi.item.iSelectedImage = 0; - if (!g_Rainmeter->m_SkinFolders.empty()) + if (!GetRainmeter().m_SkinFolders.empty()) { PopulateTree(item, tvi); } @@ -610,7 +608,7 @@ void DialogManage::TabSkins::SetControls() EnableWindow(item, TRUE); item = GetControl(Id_DraggableCheckBox); - if (g_Rainmeter->GetDisableDragging()) + if (GetRainmeter().GetDisableDragging()) { EnableWindow(item, FALSE); Button_SetCheck(item, BST_UNCHECKED); @@ -650,7 +648,7 @@ void DialogManage::TabSkins::SetControls() item = GetControl(Id_LoadOrderEdit); EnableWindow(item, TRUE); - _itow_s(g_Rainmeter->GetLoadOrder(m_SkinFolderPath), buffer, 10); + _itow_s(GetRainmeter().GetLoadOrder(m_SkinFolderPath), buffer, 10); SetWindowText(item, buffer); item = GetControl(Id_OnHoverDropDownList); @@ -763,10 +761,10 @@ void DialogManage::TabSkins::ReadSkin() item = GetControl(Id_EditButton); EnableWindow(item, TRUE); - std::wstring file = g_Rainmeter->GetSkinPath() + m_SkinFolderPath; + std::wstring file = GetRainmeter().GetSkinPath() + m_SkinFolderPath; file += L'\\'; file += m_SkinFileName; - m_SkinWindow = g_Rainmeter->GetMeterWindowByINI(file); + m_SkinWindow = GetRainmeter().GetMeterWindowByINI(file); if (!m_SkinWindow) { DisableControls(); @@ -883,12 +881,12 @@ std::wstring DialogManage::TabSkins::GetTreeSelectionPath(HWND tree) */ int DialogManage::TabSkins::PopulateTree(HWND tree, TVINSERTSTRUCT& tvi, int index) { - int initialLevel = g_Rainmeter->m_SkinFolders[index].level; + int initialLevel = GetRainmeter().m_SkinFolders[index].level; - const size_t max = g_Rainmeter->m_SkinFolders.size(); + const size_t max = GetRainmeter().m_SkinFolders.size(); while (index < max) { - const Rainmeter::SkinFolder& skinFolder = g_Rainmeter->m_SkinFolders[index]; + const Rainmeter::SkinFolder& skinFolder = GetRainmeter().m_SkinFolders[index]; if (skinFolder.level != initialLevel) { return index - 1; @@ -903,7 +901,7 @@ int DialogManage::TabSkins::PopulateTree(HWND tree, TVINSERTSTRUCT& tvi, int ind // Add subfolders if ((index + 1) < max && - g_Rainmeter->m_SkinFolders[index + 1].level == initialLevel + 1) + GetRainmeter().m_SkinFolders[index + 1].level == initialLevel + 1) { index = PopulateTree(tree, tvi, index + 1); } @@ -1007,9 +1005,9 @@ INT_PTR DialogManage::TabSkins::OnCommand(WPARAM wParam, LPARAM lParam) HMENU menu = CreatePopupMenu(); // Add active skins to menu - std::map::const_iterator iter = g_Rainmeter->GetAllMeterWindows().begin(); + std::map::const_iterator iter = GetRainmeter().GetAllMeterWindows().begin(); int index = 0; - for ( ; iter != g_Rainmeter->GetAllMeterWindows().end(); ++iter) + for ( ; iter != GetRainmeter().GetAllMeterWindows().end(); ++iter) { std::wstring name = ((*iter).second)->GetFolderPath() + L'\\'; name += ((*iter).second)->GetFileName(); @@ -1040,7 +1038,7 @@ INT_PTR DialogManage::TabSkins::OnCommand(WPARAM wParam, LPARAM lParam) case Id_CreateSkinPackageButton: { - std::wstring file = g_Rainmeter->GetPath() + L"SkinInstaller.exe"; + std::wstring file = GetRainmeter().GetPath() + L"SkinInstaller.exe"; CommandHandler::RunFile(file.c_str(), L"/Packager"); } break; @@ -1050,11 +1048,11 @@ INT_PTR DialogManage::TabSkins::OnCommand(WPARAM wParam, LPARAM lParam) if (!m_SkinWindow) { // Skin not active, load - std::pair indexes = g_Rainmeter->GetMeterWindowIndex(m_SkinFolderPath, m_SkinFileName); + std::pair indexes = GetRainmeter().GetMeterWindowIndex(m_SkinFolderPath, m_SkinFileName); if (indexes.first != -1 && indexes.second != -1) { m_HandleCommands = false; - g_Rainmeter->ActivateSkin(indexes.first, indexes.second); + GetRainmeter().ActivateSkin(indexes.first, indexes.second); m_HandleCommands = true; // Fake selection change to update controls @@ -1068,7 +1066,7 @@ INT_PTR DialogManage::TabSkins::OnCommand(WPARAM wParam, LPARAM lParam) else { m_HandleCommands = false; - g_Rainmeter->DeactivateSkin(m_SkinWindow, -1); + GetRainmeter().DeactivateSkin(m_SkinWindow, -1); } } break; @@ -1081,7 +1079,7 @@ INT_PTR DialogManage::TabSkins::OnCommand(WPARAM wParam, LPARAM lParam) break; case Id_EditButton: - g_Rainmeter->EditSkinFile(m_SkinFolderPath, m_SkinFileName); + GetRainmeter().EditSkinFile(m_SkinFolderPath, m_SkinFileName); break; case Id_XPositionEdit: @@ -1148,14 +1146,14 @@ INT_PTR DialogManage::TabSkins::OnCommand(WPARAM wParam, LPARAM lParam) // Reset selection Edit_SetSel((HWND)lParam, LOWORD(sel), HIWORD(sel)); - WritePrivateProfileString(m_SkinFolderPath.c_str(), L"LoadOrder", buffer, g_Rainmeter->GetIniFile().c_str()); - std::pair indexes = g_Rainmeter->GetMeterWindowIndex(m_SkinWindow); + WritePrivateProfileString(m_SkinFolderPath.c_str(), L"LoadOrder", buffer, GetRainmeter().GetIniFile().c_str()); + std::pair indexes = GetRainmeter().GetMeterWindowIndex(m_SkinWindow); if (indexes.first != -1) { - g_Rainmeter->SetLoadOrder(indexes.first, value); + GetRainmeter().SetLoadOrder(indexes.first, value); std::multimap windows; - g_Rainmeter->GetMeterWindowsByLoadOrder(windows); + GetRainmeter().GetMeterWindowsByLoadOrder(windows); System::PrepareHelperWindow(); @@ -1185,7 +1183,7 @@ INT_PTR DialogManage::TabSkins::OnCommand(WPARAM wParam, LPARAM lParam) HMENU menu = MenuTemplate::CreateMenu(s_Menu, _countof(s_Menu), GetString); if (menu) { - g_Rainmeter->CreateMonitorMenu(menu, m_SkinWindow); + GetRainmeter().CreateMonitorMenu(menu, m_SkinWindow); RECT r; GetWindowRect((HWND)lParam, &r); @@ -1269,17 +1267,17 @@ INT_PTR DialogManage::TabSkins::OnCommand(WPARAM wParam, LPARAM lParam) case IDM_MANAGESKINSMENU_OPENFOLDER: { HWND tree = GetControl(Id_SkinsTreeView); - g_Rainmeter->OpenSkinFolder(GetTreeSelectionPath(tree)); + GetRainmeter().OpenSkinFolder(GetTreeSelectionPath(tree)); } break; default: if (wParam >= ID_CONFIG_FIRST && wParam <= ID_CONFIG_LAST) { - std::map::const_iterator iter = g_Rainmeter->GetAllMeterWindows().begin(); + std::map::const_iterator iter = GetRainmeter().GetAllMeterWindows().begin(); int index = (int)wParam - ID_CONFIG_FIRST; int i = 0; - for ( ; iter != g_Rainmeter->GetAllMeterWindows().end(); ++iter) + for ( ; iter != GetRainmeter().GetAllMeterWindows().end(); ++iter) { if (i == index) { @@ -1319,7 +1317,7 @@ INT_PTR DialogManage::TabSkins::OnNotify(WPARAM wParam, LPARAM lParam) case NM_CLICK: if (nm->idFrom == Id_AddMetadataLink) { - std::wstring file = g_Rainmeter->GetSkinPath() + m_SkinFolderPath; + std::wstring file = GetRainmeter().GetSkinPath() + m_SkinFolderPath; file += L'\\'; file += m_SkinFileName; const WCHAR* str = L"\r\n" // Hack to add below [Rainmeter]. @@ -1548,7 +1546,7 @@ void DialogManage::TabLayouts::Create(HWND owner) void DialogManage::TabLayouts::Initialize() { HWND item = GetControl(Id_List); - const std::vector& layouts = g_Rainmeter->GetAllLayouts(); + const std::vector& layouts = GetRainmeter().GetAllLayouts(); for (int i = 0, isize = layouts.size(); i < isize; ++i) { ListBox_AddString(item, layouts[i].c_str()); @@ -1611,7 +1609,7 @@ INT_PTR DialogManage::TabLayouts::OnCommand(WPARAM wParam, LPARAM lParam) item = GetControl(Id_EditButton); EnableWindow(item, TRUE); - const std::vector& layouts = g_Rainmeter->GetAllLayouts(); + const std::vector& layouts = GetRainmeter().GetAllLayouts(); item = GetControl(Id_List); int sel = ListBox_GetCurSel(item); @@ -1628,7 +1626,7 @@ INT_PTR DialogManage::TabLayouts::OnCommand(WPARAM wParam, LPARAM lParam) Edit_GetText(item, buffer, MAX_PATH); std::wstring layout = buffer; - std::wstring path = g_Rainmeter->GetLayoutPath(); + std::wstring path = GetRainmeter().GetLayoutPath(); CreateDirectory(path.c_str(), 0); path += layout; @@ -1636,7 +1634,7 @@ INT_PTR DialogManage::TabLayouts::OnCommand(WPARAM wParam, LPARAM lParam) if (alreadyExists) { std::wstring text = GetFormattedString(ID_STR_THEMEALREADYEXISTS, layout.c_str()); - if (g_Rainmeter->ShowMessage(m_Window, text.c_str(), MB_ICONWARNING | MB_YESNO) != IDYES) + if (GetRainmeter().ShowMessage(m_Window, text.c_str(), MB_ICONWARNING | MB_YESNO) != IDYES) { // Cancel break; @@ -1653,10 +1651,10 @@ INT_PTR DialogManage::TabLayouts::OnCommand(WPARAM wParam, LPARAM lParam) item = GetControl(Id_SaveEmptyThemeCheckBox); if (Button_GetCheck(item) != BST_CHECKED) { - if (!System::CopyFiles(g_Rainmeter->GetIniFile(), path)) + if (!System::CopyFiles(GetRainmeter().GetIniFile(), path)) { std::wstring text = GetFormattedString(ID_STR_THEMESAVEFAIL, path.c_str()); - g_Rainmeter->ShowMessage(m_Window, text.c_str(), MB_OK | MB_ICONERROR); + GetRainmeter().ShowMessage(m_Window, text.c_str(), MB_OK | MB_ICONERROR); break; } @@ -1698,7 +1696,7 @@ INT_PTR DialogManage::TabLayouts::OnCommand(WPARAM wParam, LPARAM lParam) if (file == INVALID_HANDLE_VALUE) { std::wstring text = GetFormattedString(ID_STR_THEMESAVEFAIL, path.c_str()); - g_Rainmeter->ShowMessage(m_Window, text.c_str(), MB_OK | MB_ICONERROR); + GetRainmeter().ShowMessage(m_Window, text.c_str(), MB_OK | MB_ICONERROR); break; } @@ -1710,7 +1708,7 @@ INT_PTR DialogManage::TabLayouts::OnCommand(WPARAM wParam, LPARAM lParam) item = GetControl(Id_List); ListBox_AddString(item, layout.c_str()); - g_Rainmeter->ScanForLayouts(); + GetRainmeter().ScanForLayouts(); } } break; @@ -1719,7 +1717,7 @@ INT_PTR DialogManage::TabLayouts::OnCommand(WPARAM wParam, LPARAM lParam) { HWND item = GetControl(Id_List); int sel = ListBox_GetCurSel(item); - g_Rainmeter->LoadLayout(g_Rainmeter->m_Layouts[sel]); + GetRainmeter().LoadLayout(GetRainmeter().m_Layouts[sel]); } break; @@ -1727,13 +1725,13 @@ INT_PTR DialogManage::TabLayouts::OnCommand(WPARAM wParam, LPARAM lParam) { HWND item = GetControl(Id_List); int sel = ListBox_GetCurSel(item); - const std::vector& layouts = g_Rainmeter->GetAllLayouts(); + const std::vector& layouts = GetRainmeter().GetAllLayouts(); - std::wstring args = L"\"" + g_Rainmeter->GetLayoutPath(); + std::wstring args = L"\"" + GetRainmeter().GetLayoutPath(); args += layouts[sel]; args += L"\\Rainmeter.ini"; args += L'"'; - CommandHandler::RunFile(g_Rainmeter->GetSkinEditor().c_str(), args.c_str()); + CommandHandler::RunFile(GetRainmeter().GetSkinEditor().c_str(), args.c_str()); } break; @@ -1741,16 +1739,16 @@ INT_PTR DialogManage::TabLayouts::OnCommand(WPARAM wParam, LPARAM lParam) { HWND item = GetControl(Id_List); int sel = ListBox_GetCurSel(item); - std::vector& layouts = const_cast&>(g_Rainmeter->GetAllLayouts()); + std::vector& layouts = const_cast&>(GetRainmeter().GetAllLayouts()); std::wstring text = GetFormattedString(ID_STR_THEMEDELETE, layouts[sel].c_str()); - if (g_Rainmeter->ShowMessage(m_Window, text.c_str(), MB_ICONQUESTION | MB_YESNO) != IDYES) + if (GetRainmeter().ShowMessage(m_Window, text.c_str(), MB_ICONQUESTION | MB_YESNO) != IDYES) { // Cancel break; } - std::wstring folder = g_Rainmeter->GetLayoutPath(); + std::wstring folder = GetRainmeter().GetLayoutPath(); folder += layouts[sel]; if (System::RemoveFolder(folder)) @@ -1861,7 +1859,7 @@ void DialogManage::TabSettings::Initialize() // Scan for languages HWND item = GetControl(Id_LanguageDropDownList); - std::wstring files = g_Rainmeter->GetPath() + L"Languages\\*.dll"; + std::wstring files = GetRainmeter().GetPath() + L"Languages\\*.dll"; WIN32_FIND_DATA fd; HANDLE hSearch = FindFirstFile(files.c_str(), &fd); if (hSearch != INVALID_HANDLE_VALUE) @@ -1886,7 +1884,7 @@ void DialogManage::TabSettings::Initialize() int index = ComboBox_AddString(item, text.c_str()); ComboBox_SetItemData(item, index, (LPARAM)lcid); - if (lcid == g_Rainmeter->GetResourceLCID()) + if (lcid == GetRainmeter().GetResourceLCID()) { ComboBox_SetCurSel(item, index); } @@ -1898,18 +1896,18 @@ void DialogManage::TabSettings::Initialize() FindClose(hSearch); } - Button_SetCheck(GetControl(Id_CheckForUpdatesCheckBox), !g_Rainmeter->GetDisableVersionCheck()); - Button_SetCheck(GetControl(Id_LockSkinsCheckBox), g_Rainmeter->GetDisableDragging()); + Button_SetCheck(GetControl(Id_CheckForUpdatesCheckBox), !GetRainmeter().GetDisableVersionCheck()); + Button_SetCheck(GetControl(Id_LockSkinsCheckBox), GetRainmeter().GetDisableDragging()); Button_SetCheck(GetControl(Id_LogToFileCheckBox), Logger::GetInstance().IsLogToFile()); - Button_SetCheck(GetControl(Id_VerboseLoggingCheckbox), g_Rainmeter->GetDebug()); + Button_SetCheck(GetControl(Id_VerboseLoggingCheckbox), GetRainmeter().GetDebug()); BOOL isLogFile = (_waccess(Logger::GetInstance().GetLogFilePath().c_str(), 0) != -1); EnableWindow(GetControl(Id_ShowLogFileButton), isLogFile); EnableWindow(GetControl(Id_DeleteLogFileButton), isLogFile); - Edit_SetText(GetControl(Id_EditorEdit), g_Rainmeter->GetSkinEditor().c_str()); + Edit_SetText(GetControl(Id_EditorEdit), GetRainmeter().GetSkinEditor().c_str()); - bool iconEnabled = g_Rainmeter->GetTrayWindow()->IsTrayIconEnabled(); + bool iconEnabled = GetRainmeter().GetTrayWindow()->IsTrayIconEnabled(); Button_SetCheck(GetControl(Id_ShowTrayIconCheckBox), iconEnabled); m_Initialized = true; @@ -1940,18 +1938,18 @@ INT_PTR DialogManage::TabSettings::OnCommand(WPARAM wParam, LPARAM lParam) { int sel = ComboBox_GetCurSel((HWND)lParam); LCID lcid = (LCID)ComboBox_GetItemData((HWND)lParam, sel); - if (lcid != g_Rainmeter->m_ResourceLCID) + if (lcid != GetRainmeter().m_ResourceLCID) { WCHAR buffer[16]; _ultow(lcid, buffer, 10); - WritePrivateProfileString(L"Rainmeter", L"Language", buffer, g_Rainmeter->GetIniFile().c_str()); + WritePrivateProfileString(L"Rainmeter", L"Language", buffer, GetRainmeter().GetIniFile().c_str()); - std::wstring resource = g_Rainmeter->GetPath() + L"Languages\\"; + std::wstring resource = GetRainmeter().GetPath() + L"Languages\\"; resource += buffer; resource += L".dll"; - FreeLibrary(g_Rainmeter->m_ResourceInstance); - g_Rainmeter->m_ResourceInstance = LoadLibraryEx(resource.c_str(), nullptr, DONT_RESOLVE_DLL_REFERENCES | LOAD_LIBRARY_AS_DATAFILE); - g_Rainmeter->m_ResourceLCID = lcid; + FreeLibrary(GetRainmeter().m_ResourceInstance); + GetRainmeter().m_ResourceInstance = LoadLibraryEx(resource.c_str(), nullptr, DONT_RESOLVE_DLL_REFERENCES | LOAD_LIBRARY_AS_DATAFILE); + GetRainmeter().m_ResourceLCID = lcid; if (DialogAbout::GetDialog()) { @@ -1959,42 +1957,42 @@ INT_PTR DialogManage::TabSettings::OnCommand(WPARAM wParam, LPARAM lParam) SendMessage(DialogAbout::GetDialog()->GetWindow(), WM_CLOSE, 0, 0); if (sel == 0) { - g_Rainmeter->DelayedExecuteCommand(L"!About"); + GetRainmeter().DelayedExecuteCommand(L"!About"); } else if (sel == 1) { - g_Rainmeter->DelayedExecuteCommand(L"!About Skins"); + GetRainmeter().DelayedExecuteCommand(L"!About Skins"); } else if (sel == 2) { - g_Rainmeter->DelayedExecuteCommand(L"!About Plugins"); + GetRainmeter().DelayedExecuteCommand(L"!About Plugins"); } else //if (sel == 3) { - g_Rainmeter->DelayedExecuteCommand(L"!About Version"); + GetRainmeter().DelayedExecuteCommand(L"!About Version"); } } SendMessage(c_Dialog->GetWindow(), WM_CLOSE, 0, 0); - g_Rainmeter->DelayedExecuteCommand(L"!Manage Settings"); + GetRainmeter().DelayedExecuteCommand(L"!Manage Settings"); } } break; case Id_CheckForUpdatesCheckBox: - g_Rainmeter->SetDisableVersionCheck(!g_Rainmeter->GetDisableVersionCheck()); + GetRainmeter().SetDisableVersionCheck(!GetRainmeter().GetDisableVersionCheck()); break; case Id_LockSkinsCheckBox: - g_Rainmeter->SetDisableDragging(!g_Rainmeter->GetDisableDragging()); + GetRainmeter().SetDisableDragging(!GetRainmeter().GetDisableDragging()); break; case Id_ResetStatisticsButton: - g_Rainmeter->ResetStats(); + GetRainmeter().ResetStats(); break; case Id_ShowLogFileButton: - g_Rainmeter->ShowLogFile(); + GetRainmeter().ShowLogFile(); break; case Id_DeleteLogFileButton: @@ -2024,7 +2022,7 @@ INT_PTR DialogManage::TabSettings::OnCommand(WPARAM wParam, LPARAM lParam) break; case Id_VerboseLoggingCheckbox: - g_Rainmeter->SetDebug(!g_Rainmeter->GetDebug()); + GetRainmeter().SetDebug(!GetRainmeter().GetDebug()); break; case Id_EditorEdit: @@ -2033,7 +2031,7 @@ INT_PTR DialogManage::TabSettings::OnCommand(WPARAM wParam, LPARAM lParam) WCHAR buffer[MAX_PATH]; if (GetWindowText((HWND)lParam, buffer, _countof(buffer)) > 0) { - g_Rainmeter->SetSkinEditor(buffer); + GetRainmeter().SetSkinEditor(buffer); } } break; @@ -2043,7 +2041,7 @@ INT_PTR DialogManage::TabSettings::OnCommand(WPARAM wParam, LPARAM lParam) WCHAR buffer[MAX_PATH]; buffer[0] = L'\0'; - std::wstring editor = g_Rainmeter->GetSkinEditor(); + std::wstring editor = GetRainmeter().GetSkinEditor(); editor = editor.substr(0, editor.find_last_of(L"/\\")).c_str(); OPENFILENAME ofn = { sizeof(OPENFILENAME) }; @@ -2067,7 +2065,7 @@ INT_PTR DialogManage::TabSettings::OnCommand(WPARAM wParam, LPARAM lParam) break; case Id_ShowTrayIconCheckBox: - g_Rainmeter->GetTrayWindow()->SetTrayIcon(!g_Rainmeter->GetTrayWindow()->IsTrayIconEnabled()); + GetRainmeter().GetTrayWindow()->SetTrayIcon(!GetRainmeter().GetTrayWindow()->IsTrayIconEnabled()); break; default: diff --git a/Library/Export.cpp b/Library/Export.cpp index 6c6bb178..d96fa292 100644 --- a/Library/Export.cpp +++ b/Library/Export.cpp @@ -25,8 +25,6 @@ #define NULLCHECK(str) { if ((str) == nullptr) { (str) = L""; } } -extern Rainmeter* g_Rainmeter; - static std::wstring g_Buffer; LPCWSTR __stdcall RmReadString(void* rm, LPCWSTR option, LPCWSTR defValue, BOOL replaceMeasures) @@ -76,7 +74,7 @@ void* __stdcall RmGet(void* rm, int type) case RMG_SETTINGSFILE: { - return (void*)g_Rainmeter->GetDataFile().c_str(); + return (void*)GetRainmeter().GetDataFile().c_str(); } case RMG_SKINNAME: @@ -103,7 +101,7 @@ void __stdcall RmExecute(void* skin, LPCWSTR command) if (command) { // WM_RAINMETER_EXECUTE used instead of ExecuteCommand for thread-safety - SendMessage(g_Rainmeter->GetWindow(), WM_RAINMETER_EXECUTE, (WPARAM)mw, (LPARAM)command); + SendMessage(GetRainmeter().GetWindow(), WM_RAINMETER_EXECUTE, (WPARAM)mw, (LPARAM)command); } } @@ -112,7 +110,7 @@ BOOL LSLog(int nLevel, LPCWSTR unused, LPCWSTR pszMessage) NULLCHECK(pszMessage); // Ignore Level::Debug messages from plugins unless in debug mode - if (nLevel != (int)Logger::Level::Debug || g_Rainmeter->GetDebug()) + if (nLevel != (int)Logger::Level::Debug || GetRainmeter().GetDebug()) { Logger::GetInstance().Log((Logger::Level)nLevel, pszMessage); } @@ -127,7 +125,7 @@ LPCWSTR ReadConfigString(LPCWSTR section, LPCWSTR option, LPCWSTR defValue) NULLCHECK(option); NULLCHECK(defValue); - ConfigParser* parser = g_Rainmeter->GetCurrentParser(); + ConfigParser* parser = GetRainmeter().GetCurrentParser(); if (parser) { return parser->ReadString(section, option, defValue, false).c_str(); @@ -148,7 +146,7 @@ LPCWSTR PluginBridge(LPCWSTR command, LPCWSTR data) if (_wcsicmp(command, L"GetConfig") == 0) { - MeterWindow* meterWindow = g_Rainmeter->GetMeterWindowByINI(data); + MeterWindow* meterWindow = GetRainmeter().GetMeterWindowByINI(data); if (meterWindow) { g_Buffer = L"\""; @@ -167,7 +165,7 @@ LPCWSTR PluginBridge(LPCWSTR command, LPCWSTR data) { const std::wstring& config = subStrings[0]; - MeterWindow* meterWindow = g_Rainmeter->GetMeterWindow(config); + MeterWindow* meterWindow = GetRainmeter().GetMeterWindow(config); if (meterWindow) { WCHAR buf1[64]; @@ -187,7 +185,7 @@ LPCWSTR PluginBridge(LPCWSTR command, LPCWSTR data) { const std::wstring& config = subStrings[0]; - MeterWindow* meterWindow = g_Rainmeter->GetMeterWindow(config); + MeterWindow* meterWindow = GetRainmeter().GetMeterWindow(config); if (meterWindow) { const std::wstring& variable = subStrings[1]; @@ -208,7 +206,7 @@ LPCWSTR PluginBridge(LPCWSTR command, LPCWSTR data) if (subStrings.size() == 3) { - MeterWindow* meterWindow = g_Rainmeter->GetMeterWindow(subStrings[0]); + MeterWindow* meterWindow = GetRainmeter().GetMeterWindow(subStrings[0]); if (meterWindow) { meterWindow->SetVariable(subStrings[1], subStrings[2]); diff --git a/Library/Litestep.cpp b/Library/Litestep.cpp index 7a6808b7..f942492c 100644 --- a/Library/Litestep.cpp +++ b/Library/Litestep.cpp @@ -22,8 +22,6 @@ #include "DialogAbout.h" #include "System.h" -extern Rainmeter* g_Rainmeter; - UINT GetUniqueID() { static UINT id = 0; @@ -33,7 +31,7 @@ UINT GetUniqueID() WCHAR* GetString(UINT id) { LPWSTR pData; - int len = LoadString(g_Rainmeter->GetResourceInstance(), id, (LPWSTR)&pData, 0); + int len = LoadString(GetRainmeter().GetResourceInstance(), id, (LPWSTR)&pData, 0); return len ? pData : L""; } diff --git a/Library/Logger.cpp b/Library/Logger.cpp index 3e266e24..a33d3e7b 100644 --- a/Library/Logger.cpp +++ b/Library/Logger.cpp @@ -24,8 +24,6 @@ #include "System.h" #include "resource.h" -extern Rainmeter* g_Rainmeter; - namespace { const size_t MAX_LOG_ENTIRES = 20; @@ -65,7 +63,7 @@ void Logger::StartLogFile() else { const std::wstring text = GetFormattedString(ID_STR_LOGFILECREATEFAIL, filePath); - g_Rainmeter->ShowMessage(nullptr, text.c_str(), MB_OK | MB_ICONERROR); + GetRainmeter().ShowMessage(nullptr, text.c_str(), MB_OK | MB_ICONERROR); SetLogToFile(false); return; } @@ -85,7 +83,7 @@ void Logger::DeleteLogFile() if (_waccess(filePath, 0) != -1) { const std::wstring text = GetFormattedString(ID_STR_LOGFILEDELETE, filePath); - const int res = g_Rainmeter->ShowMessage(nullptr, text.c_str(), MB_YESNO | MB_ICONQUESTION); + const int res = GetRainmeter().ShowMessage(nullptr, text.c_str(), MB_YESNO | MB_ICONQUESTION); if (res == IDYES) { SetLogToFile(false); @@ -98,7 +96,7 @@ void Logger::SetLogToFile(bool logToFile) { m_LogToFile = logToFile; WritePrivateProfileString( - L"Rainmeter", L"Logging", logToFile ? L"1" : L"0", g_Rainmeter->GetIniFile().c_str()); + L"Rainmeter", L"Logging", logToFile ? L"1" : L"0", GetRainmeter().GetIniFile().c_str()); } void Logger::LogInternal(Level level, ULONGLONG timestamp, const WCHAR* msg) diff --git a/Library/Measure.cpp b/Library/Measure.cpp index f73af7ea..ca995c83 100644 --- a/Library/Measure.cpp +++ b/Library/Measure.cpp @@ -63,8 +63,6 @@ static const double g_TblScale[2][4] = { const int MEDIAN_SIZE = 3; -extern Rainmeter* g_Rainmeter; - /* ** The constructor ** @@ -501,7 +499,7 @@ bool Measure::Update() if (!m_IfEqualCommitted) { m_IfEqualCommitted = true; // To avoid infinite loop from !Update - g_Rainmeter->ExecuteCommand(m_IfEqualAction.c_str(), m_MeterWindow); + GetRainmeter().ExecuteCommand(m_IfEqualAction.c_str(), m_MeterWindow); } } else @@ -517,7 +515,7 @@ bool Measure::Update() if (!m_IfAboveCommitted) { m_IfAboveCommitted = true; // To avoid infinite loop from !Update - g_Rainmeter->ExecuteCommand(m_IfAboveAction.c_str(), m_MeterWindow); + GetRainmeter().ExecuteCommand(m_IfAboveAction.c_str(), m_MeterWindow); } } else @@ -533,7 +531,7 @@ bool Measure::Update() if (!m_IfBelowCommitted) { m_IfBelowCommitted = true; // To avoid infinite loop from !Update - g_Rainmeter->ExecuteCommand(m_IfBelowAction.c_str(), m_MeterWindow); + GetRainmeter().ExecuteCommand(m_IfBelowAction.c_str(), m_MeterWindow); } } else @@ -771,7 +769,7 @@ void Measure::DoChangeAction(bool execute) { if (m_OldValue->IsChanged(newValue, newStringValue)) { - g_Rainmeter->ExecuteCommand(m_OnChangeAction.c_str(), m_MeterWindow); + GetRainmeter().ExecuteCommand(m_OnChangeAction.c_str(), m_MeterWindow); } } else diff --git a/Library/MeasureNet.cpp b/Library/MeasureNet.cpp index f74a2d49..148a479f 100644 --- a/Library/MeasureNet.cpp +++ b/Library/MeasureNet.cpp @@ -29,8 +29,6 @@ std::vector MeasureNet::c_OldStatValues; FPGETIFTABLE2 MeasureNet::c_GetIfTable2 = nullptr; FPFREEMIBTABLE MeasureNet::c_FreeMibTable = nullptr; -extern Rainmeter* g_Rainmeter; - /* ** The constructor. This is the base class for the net-meters. ** @@ -78,7 +76,7 @@ void MeasureNet::UpdateIFTable() logging = true; } - if (g_Rainmeter->GetDebug() && logging) + if (GetRainmeter().GetDebug() && logging) { LogDebug(L"------------------------------"); LogDebugF(L"* NETWORK-INTERFACE: Count=%i", c_NumOfTables); @@ -171,7 +169,7 @@ void MeasureNet::UpdateIFTable() logging = true; } - if (g_Rainmeter->GetDebug() && logging) + if (GetRainmeter().GetDebug() && logging) { LogDebug(L"------------------------------"); LogDebugF(L"* NETWORK-INTERFACE: Count=%i", c_NumOfTables); @@ -465,17 +463,17 @@ void MeasureNet::ReadOptions(ConfigParser& parser, const WCHAR* section) if (m_Net == NET_IN) { netName = L"NetInSpeed"; - value = g_Rainmeter->GetGlobalOptions().netInSpeed; + value = GetRainmeter().GetGlobalOptions().netInSpeed; } else if (m_Net == NET_OUT) { netName = L"NetOutSpeed"; - value = g_Rainmeter->GetGlobalOptions().netOutSpeed; + value = GetRainmeter().GetGlobalOptions().netOutSpeed; } else // if (m_Net == NET_TOTAL) { netName = L"NetTotalSpeed"; - value = g_Rainmeter->GetGlobalOptions().netInSpeed + g_Rainmeter->GetGlobalOptions().netOutSpeed; + value = GetRainmeter().GetGlobalOptions().netInSpeed + GetRainmeter().GetGlobalOptions().netOutSpeed; } double maxValue = parser.ReadFloat(section, L"MaxValue", -1); @@ -493,7 +491,7 @@ void MeasureNet::ReadOptions(ConfigParser& parser, const WCHAR* section) m_Cumulative = 0!=parser.ReadInt(section, L"Cumulative", 0); if (m_Cumulative) { - g_Rainmeter->SetNetworkStatisticsTimer(); + GetRainmeter().SetNetworkStatisticsTimer(); } if (maxValue == 0.0) @@ -707,7 +705,7 @@ void MeasureNet::InitializeStatic() } } - if (g_Rainmeter->GetDebug()) + if (GetRainmeter().GetDebug()) { UpdateIFTable(); } diff --git a/Library/MeasurePlugin.cpp b/Library/MeasurePlugin.cpp index 462862f3..738a4e2b 100644 --- a/Library/MeasurePlugin.cpp +++ b/Library/MeasurePlugin.cpp @@ -23,8 +23,6 @@ #include "System.h" #include "Error.h" -extern Rainmeter* g_Rainmeter; - /* ** The constructor ** @@ -129,15 +127,15 @@ void MeasurePlugin::ReadOptions(ConfigParser& parser, const WCHAR* section) } // First try from program path - std::wstring pluginFile = g_Rainmeter->GetPluginPath(); + std::wstring pluginFile = GetRainmeter().GetPluginPath(); pluginFile += pluginName; m_Plugin = System::RmLoadLibrary(pluginFile.c_str()); if (!m_Plugin) { - if (g_Rainmeter->HasUserPluginPath()) + if (GetRainmeter().HasUserPluginPath()) { // Try from settings path - pluginFile = g_Rainmeter->GetUserPluginPath(); + pluginFile = GetRainmeter().GetUserPluginPath(); pluginFile += pluginName; m_Plugin = System::RmLoadLibrary(pluginFile.c_str()); } diff --git a/Library/Meter.cpp b/Library/Meter.cpp index d1c402b8..b2386a73 100644 --- a/Library/Meter.cpp +++ b/Library/Meter.cpp @@ -34,8 +34,6 @@ using namespace Gdiplus; -extern Rainmeter* g_Rainmeter; - /* ** The constructor ** @@ -528,7 +526,7 @@ bool Meter::ReplaceMeasures(std::wstring& str, AUTOSCALE autoScale, double scale void Meter::CreateToolTip(MeterWindow* meterWindow) { HWND hMeterWindow = m_MeterWindow->GetWindow(); - HINSTANCE hInstance = g_Rainmeter->GetInstance(); + HINSTANCE hInstance = GetRainmeter().GetModuleInstance(); DWORD style = WS_POPUP | TTS_NOPREFIX | TTS_ALWAYSTIP; if (m_ToolTipType) diff --git a/Library/MeterBar.cpp b/Library/MeterBar.cpp index 39b5316f..821b4d73 100644 --- a/Library/MeterBar.cpp +++ b/Library/MeterBar.cpp @@ -26,8 +26,6 @@ using namespace Gdiplus; -extern Rainmeter* g_Rainmeter; - /* ** The constructor ** diff --git a/Library/MeterBitmap.cpp b/Library/MeterBitmap.cpp index babfcb45..6e6e0bda 100644 --- a/Library/MeterBitmap.cpp +++ b/Library/MeterBitmap.cpp @@ -26,8 +26,6 @@ using namespace Gdiplus; -extern Rainmeter* g_Rainmeter; - /* ** The constructor ** diff --git a/Library/MeterButton.cpp b/Library/MeterButton.cpp index 37e8ad83..5c9c1bc5 100644 --- a/Library/MeterButton.cpp +++ b/Library/MeterButton.cpp @@ -23,8 +23,6 @@ #include "Error.h" #include "../Common/Gfx/Canvas.h" -extern Rainmeter* g_Rainmeter; - using namespace Gdiplus; enum BUTTON_STATE @@ -257,7 +255,7 @@ bool MeterButton::MouseUp(POINT pos, bool execute) { if (execute && m_Clicked && m_Focus && HitTest2(pos.x, pos.y, true)) { - g_Rainmeter->ExecuteCommand(m_Command.c_str(), m_MeterWindow); + GetRainmeter().ExecuteCommand(m_Command.c_str(), m_MeterWindow); } m_State = BUTTON_STATE_NORMAL; m_Clicked = false; diff --git a/Library/MeterHistogram.cpp b/Library/MeterHistogram.cpp index e12b30dd..b86623da 100644 --- a/Library/MeterHistogram.cpp +++ b/Library/MeterHistogram.cpp @@ -25,8 +25,6 @@ using namespace Gdiplus; -extern Rainmeter* g_Rainmeter; - TintedImageHelper_DefineOptionArray(MeterHistogram::c_PrimaryOptionArray, L"Primary"); TintedImageHelper_DefineOptionArray(MeterHistogram::c_SecondaryOptionArray, L"Secondary"); TintedImageHelper_DefineOptionArray(MeterHistogram::c_BothOptionArray, L"Both"); diff --git a/Library/MeterImage.cpp b/Library/MeterImage.cpp index bad455f8..2d35e090 100644 --- a/Library/MeterImage.cpp +++ b/Library/MeterImage.cpp @@ -25,8 +25,6 @@ #include "../Common/PathUtil.h" #include "../Common/Gfx/Canvas.h" -extern Rainmeter* g_Rainmeter; - using namespace Gdiplus; /* diff --git a/Library/MeterRotator.cpp b/Library/MeterRotator.cpp index b8105582..c1097934 100644 --- a/Library/MeterRotator.cpp +++ b/Library/MeterRotator.cpp @@ -29,8 +29,6 @@ using namespace Gdiplus; #define PI (3.14159265358979323846) #define CONVERT_TO_DEGREES(X) ((X) * (180.0 / PI)) -extern Rainmeter* g_Rainmeter; - /* ** The constructor ** diff --git a/Library/MeterString.cpp b/Library/MeterString.cpp index 30d35d55..e72687ac 100644 --- a/Library/MeterString.cpp +++ b/Library/MeterString.cpp @@ -28,8 +28,6 @@ using namespace Gdiplus; #define PI (3.14159265f) #define CONVERT_TO_DEGREES(X) ((X) * (180.0f / PI)) -extern Rainmeter* g_Rainmeter; - void StringToUpper(std::wstring& str) { WCHAR* srcAndDest = &str[0]; @@ -650,7 +648,7 @@ void MeterString::EnumerateInstalledFontFamilies() void MeterString::InitializeStatic() { - if (g_Rainmeter->GetDebug()) + if (GetRainmeter().GetDebug()) { LogDebug(L"------------------------------"); LogDebug(L"* Font families:"); diff --git a/Library/MeterWindow.cpp b/Library/MeterWindow.cpp index 7286cd88..fe4cff2e 100644 --- a/Library/MeterWindow.cpp +++ b/Library/MeterWindow.cpp @@ -70,8 +70,6 @@ FPDWMGETCOLORIZATIONCOLOR MeterWindow::c_DwmGetColorizationColor = nullptr; FPDWMSETWINDOWATTRIBUTE MeterWindow::c_DwmSetWindowAttribute = nullptr; FPDWMISCOMPOSITIONENABLED MeterWindow::c_DwmIsCompositionEnabled = nullptr; -extern Rainmeter* g_Rainmeter; - /* ** Constructor ** @@ -144,7 +142,7 @@ MeterWindow::MeterWindow(const std::wstring& folderPath, const std::wstring& fil m_FontCollection(), m_ToolTipHidden(false) { - m_Canvas = (Platform::IsAtLeastWinVista() && g_Rainmeter->CanUseD2D()) ? + m_Canvas = (Platform::IsAtLeastWinVista() && GetRainmeter().CanUseD2D()) ? (Gfx::Canvas*)new Gfx::CanvasD2D() : (Gfx::Canvas*)new Gfx::CanvasGDIP(); if (!c_DwmInstance && Platform::IsAtLeastWinVista()) @@ -164,7 +162,7 @@ MeterWindow::MeterWindow(const std::wstring& folderPath, const std::wstring& fil WNDCLASSEX wc = {sizeof(WNDCLASSEX)}; wc.style = CS_NOCLOSE | CS_DBLCLKS; wc.lpfnWndProc = InitialWndProc; - wc.hInstance = g_Rainmeter->GetInstance(); + wc.hInstance = GetRainmeter().GetModuleInstance(); wc.hCursor = nullptr; // The cursor should be controlled by using SetCursor() when needed. wc.lpszClassName = METERWINDOW_CLASS_NAME; RegisterClassEx(&wc); @@ -181,7 +179,7 @@ MeterWindow::~MeterWindow() { if (!m_OnCloseAction.empty()) { - g_Rainmeter->ExecuteCommand(m_OnCloseAction.c_str(), this); + GetRainmeter().ExecuteCommand(m_OnCloseAction.c_str(), this); } Dispose(false); @@ -190,7 +188,7 @@ MeterWindow::~MeterWindow() if (c_InstanceCount == 0) { - UnregisterClass(METERWINDOW_CLASS_NAME, g_Rainmeter->GetInstance()); + UnregisterClass(METERWINDOW_CLASS_NAME, GetRainmeter().GetModuleInstance()); if (c_DwmInstance) { @@ -289,7 +287,7 @@ void MeterWindow::Initialize() CW_USEDEFAULT, nullptr, nullptr, - g_Rainmeter->GetInstance(), + GetRainmeter().GetModuleInstance(), this); setlocale(LC_NUMERIC, "C"); @@ -387,8 +385,8 @@ void MeterWindow::Deactivate() { m_State = STATE_CLOSING; - g_Rainmeter->RemoveMeterWindow(this); - g_Rainmeter->AddUnmanagedMeterWindow(this); + GetRainmeter().RemoveMeterWindow(this); + GetRainmeter().AddUnmanagedMeterWindow(this); HideFade(); SetTimer(m_Window, TIMER_DEACTIVATE, m_FadeDuration + 50, nullptr); @@ -403,7 +401,7 @@ void MeterWindow::Refresh(bool init, bool all) if (m_State == STATE_CLOSING) return; m_State = STATE_REFRESHING; - g_Rainmeter->SetCurrentParser(&m_Parser); + GetRainmeter().SetCurrentParser(&m_Parser); std::wstring notice = L"Refreshing skin \"" + m_FolderPath; notice += L'\\'; @@ -422,7 +420,7 @@ void MeterWindow::Refresh(bool init, bool all) if (!ReadSkin()) { - g_Rainmeter->DeactivateSkin(this, -1); + GetRainmeter().DeactivateSkin(this, -1); return; } @@ -470,13 +468,13 @@ void MeterWindow::Refresh(bool init, bool all) SetTimer(m_Window, TIMER_MOUSE, INTERVAL_MOUSE, nullptr); - g_Rainmeter->SetCurrentParser(nullptr); + GetRainmeter().SetCurrentParser(nullptr); m_State = STATE_RUNNING; if (!m_OnRefreshAction.empty()) { - g_Rainmeter->ExecuteCommand(m_OnRefreshAction.c_str(), this); + GetRainmeter().ExecuteCommand(m_OnRefreshAction.c_str(), this); } } @@ -634,7 +632,7 @@ void MeterWindow::ChangeZPos(ZPOSITION zPos, bool all) break; case ZPOSITION_NORMAL: - if (all || !g_Rainmeter->IsNormalStayDesktop()) break; + if (all || !GetRainmeter().IsNormalStayDesktop()) break; case ZPOSITION_ONDESKTOP: if (System::GetShowDesktop()) { @@ -685,7 +683,7 @@ void MeterWindow::ChangeZPos(ZPOSITION zPos, bool all) */ void MeterWindow::ChangeSingleZPos(ZPOSITION zPos, bool all) { - if (zPos == ZPOSITION_NORMAL && g_Rainmeter->IsNormalStayDesktop() && (!all || System::GetShowDesktop())) + if (zPos == ZPOSITION_NORMAL && GetRainmeter().IsNormalStayDesktop() && (!all || System::GetShowDesktop())) { m_WindowZPosition = zPos; @@ -1794,7 +1792,7 @@ void MeterWindow::ReadOptions() const WCHAR* section = m_FolderPath.c_str(); ConfigParser parser; - parser.Initialize(g_Rainmeter->GetIniFile(), nullptr, section); + parser.Initialize(GetRainmeter().GetIniFile(), nullptr, section); INT writeFlags = 0; auto addWriteFlag = [&](INT flag) @@ -1878,7 +1876,7 @@ void MeterWindow::ReadOptions() */ void MeterWindow::WriteOptions(INT setting) { - const WCHAR* iniFile = g_Rainmeter->GetIniFile().c_str(); + const WCHAR* iniFile = GetRainmeter().GetIniFile().c_str(); if (*iniFile) { @@ -1974,7 +1972,7 @@ bool MeterWindow::ReadSkin() if (_waccess(iniFile.c_str(), 0) == -1) { std::wstring message = GetFormattedString(ID_STR_UNABLETOREFRESHSKIN, m_FolderPath.c_str(), m_FileName.c_str()); - g_Rainmeter->ShowMessage(m_Window, message.c_str(), MB_OK | MB_ICONEXCLAMATION); + GetRainmeter().ShowMessage(m_Window, message.c_str(), MB_OK | MB_ICONEXCLAMATION); return false; } @@ -2000,7 +1998,7 @@ bool MeterWindow::ReadSkin() } std::wstring text = GetFormattedString(ID_STR_NEWVERSIONREQUIRED, m_FolderPath.c_str(), m_FileName.c_str(), buffer); - g_Rainmeter->ShowMessage(m_Window, text.c_str(), MB_OK | MB_ICONEXCLAMATION); + GetRainmeter().ShowMessage(m_Window, text.c_str(), MB_OK | MB_ICONEXCLAMATION); return false; } @@ -2131,7 +2129,7 @@ bool MeterWindow::ReadSkin() do { // Try program folder first - std::wstring szFontFile = g_Rainmeter->GetPath() + L"Fonts\\"; + std::wstring szFontFile = GetRainmeter().GetPath() + L"Fonts\\"; szFontFile += localFont; if (!m_FontCollection->AddFile(szFontFile.c_str())) { @@ -2209,7 +2207,7 @@ bool MeterWindow::ReadSkin() if (m_Meters.empty()) { std::wstring text = GetFormattedString(ID_STR_NOMETERSINSKIN, m_FolderPath.c_str(), m_FileName.c_str()); - g_Rainmeter->ShowMessage(m_Window, text.c_str(), MB_OK | MB_ICONEXCLAMATION); + GetRainmeter().ShowMessage(m_Window, text.c_str(), MB_OK | MB_ICONEXCLAMATION); return false; } @@ -2697,7 +2695,7 @@ void MeterWindow::Update(bool refresh) // If our option is to disable when in an RDP session, then check if in an RDP session. // Only redraw if we are not in a remote session - if (g_Rainmeter->IsRedrawable()) + if (GetRainmeter().IsRedrawable()) { Redraw(); } @@ -2708,7 +2706,7 @@ void MeterWindow::Update(bool refresh) if (!m_OnUpdateAction.empty()) { - g_Rainmeter->ExecuteCommand(m_OnUpdateAction.c_str(), this); + GetRainmeter().ExecuteCommand(m_OnUpdateAction.c_str(), this); } } @@ -2769,7 +2767,7 @@ LRESULT MeterWindow::OnTimer(UINT uMsg, WPARAM wParam, LPARAM lParam) break; case TIMER_MOUSE: - if (!g_Rainmeter->IsMenuActive() && !m_Dragging) + if (!GetRainmeter().IsMenuActive() && !m_Dragging) { ShowWindowIfAppropriate(); @@ -2874,7 +2872,7 @@ LRESULT MeterWindow::OnTimer(UINT uMsg, WPARAM wParam, LPARAM lParam) if (m_FadeStartTime == 0) { KillTimer(m_Window, TIMER_DEACTIVATE); - g_Rainmeter->RemoveUnmanagedMeterWindow(this); + GetRainmeter().RemoveUnmanagedMeterWindow(this); delete this; } break; @@ -3287,7 +3285,7 @@ LRESULT MeterWindow::OnCommand(UINT uMsg, WPARAM wParam, LPARAM lParam) switch (wParam) { case IDM_SKIN_EDITSKIN: - g_Rainmeter->EditSkinFile(m_FolderPath, m_FileName); + GetRainmeter().EditSkinFile(m_FolderPath, m_FileName); break; case IDM_SKIN_REFRESH: @@ -3295,7 +3293,7 @@ LRESULT MeterWindow::OnCommand(UINT uMsg, WPARAM wParam, LPARAM lParam) break; case IDM_SKIN_OPENSKINSFOLDER: - g_Rainmeter->OpenSkinFolder(m_FolderPath); + GetRainmeter().OpenSkinFolder(m_FolderPath); break; case IDM_SKIN_MANAGESKIN: @@ -3357,7 +3355,7 @@ LRESULT MeterWindow::OnCommand(UINT uMsg, WPARAM wParam, LPARAM lParam) case IDM_CLOSESKIN: if (m_State != STATE_CLOSING) { - g_Rainmeter->DeactivateSkin(this, -1); + GetRainmeter().DeactivateSkin(this, -1); } break; @@ -3447,13 +3445,13 @@ LRESULT MeterWindow::OnCommand(UINT uMsg, WPARAM wParam, LPARAM lParam) if (!action.empty()) { - g_Rainmeter->ExecuteCommand(action.c_str(), this); + GetRainmeter().ExecuteCommand(action.c_str(), this); } } else { // Forward to tray window, which handles all the other commands - HWND tray = g_Rainmeter->GetTrayWindow()->GetWindow(); + HWND tray = GetRainmeter().GetTrayWindow()->GetWindow(); if (wParam == IDM_QUIT) { @@ -3660,7 +3658,7 @@ LRESULT MeterWindow::OnExitSizeMove(UINT uMsg, WPARAM wParam, LPARAM lParam) */ LRESULT MeterWindow::OnNcHitTest(UINT uMsg, WPARAM wParam, LPARAM lParam) { - if (m_WindowDraggable && !g_Rainmeter->GetDisableDragging()) + if (m_WindowDraggable && !GetRainmeter().GetDisableDragging()) { POINT pos; pos.x = GET_X_LPARAM(lParam); @@ -3700,7 +3698,7 @@ LRESULT MeterWindow::OnWindowPosChanging(UINT uMsg, WPARAM wParam, LPARAM lParam if (m_State != STATE_REFRESHING) { - if (m_WindowZPosition == ZPOSITION_NORMAL && g_Rainmeter->IsNormalStayDesktop() && System::GetShowDesktop()) + if (m_WindowZPosition == ZPOSITION_NORMAL && GetRainmeter().IsNormalStayDesktop() && System::GetShowDesktop()) { if (!(wp->flags & (SWP_NOOWNERZORDER | SWP_NOACTIVATE))) { @@ -3745,7 +3743,7 @@ LRESULT MeterWindow::OnWindowPosChanging(UINT uMsg, WPARAM wParam, LPARAM lParam } // Snap to other windows - for (auto iter = g_Rainmeter->GetAllMeterWindows().cbegin(); iter != g_Rainmeter->GetAllMeterWindows().cend(); ++iter) + for (auto iter = GetRainmeter().GetAllMeterWindows().cbegin(); iter != GetRainmeter().GetAllMeterWindows().cend(); ++iter) { if ((*iter).second != this) { @@ -4228,14 +4226,14 @@ LRESULT MeterWindow::OnSetWindowFocus(UINT uMsg, WPARAM wParam, LPARAM lParam) case WM_SETFOCUS: if (!m_OnFocusAction.empty()) { - g_Rainmeter->ExecuteCommand(m_OnFocusAction.c_str(), this); + GetRainmeter().ExecuteCommand(m_OnFocusAction.c_str(), this); } break; case WM_KILLFOCUS: if (!m_OnUnfocusAction.empty()) { - g_Rainmeter->ExecuteCommand(m_OnUnfocusAction.c_str(), this); + GetRainmeter().ExecuteCommand(m_OnUnfocusAction.c_str(), this); } break; } @@ -4278,7 +4276,7 @@ LRESULT MeterWindow::OnContextMenu(UINT uMsg, WPARAM wParam, LPARAM lParam) } } - g_Rainmeter->ShowContextMenu(pos, this); + GetRainmeter().ShowContextMenu(pos, this); return 0; } @@ -4319,7 +4317,7 @@ bool MeterWindow::DoAction(int x, int y, MOUSEACTION action, bool test) { if (!test) { - g_Rainmeter->ExecuteCommand(command.c_str(), this); + GetRainmeter().ExecuteCommand(command.c_str(), this); } return true; @@ -4355,7 +4353,7 @@ bool MeterWindow::DoMoveAction(int x, int y, MOUSEACTION action) if (!m_Mouse.GetOverAction().empty()) { UINT currCounter = m_MouseMoveCounter; - g_Rainmeter->ExecuteCommand(m_Mouse.GetOverAction().c_str(), this); + GetRainmeter().ExecuteCommand(m_Mouse.GetOverAction().c_str(), this); return (currCounter == m_MouseMoveCounter); } } @@ -4392,7 +4390,7 @@ bool MeterWindow::DoMoveAction(int x, int y, MOUSEACTION action) if (!mouse.GetOverAction().empty()) { UINT currCounter = m_MouseMoveCounter; - g_Rainmeter->ExecuteCommand(mouse.GetOverAction().c_str(), this); + GetRainmeter().ExecuteCommand(mouse.GetOverAction().c_str(), this); return (currCounter == m_MouseMoveCounter); } } @@ -4418,7 +4416,7 @@ bool MeterWindow::DoMoveAction(int x, int y, MOUSEACTION action) const Mouse& mouse = (*j)->GetMouse(); if (!mouse.GetLeaveAction().empty()) { - g_Rainmeter->ExecuteCommand(mouse.GetLeaveAction().c_str(), this); + GetRainmeter().ExecuteCommand(mouse.GetLeaveAction().c_str(), this); return true; } } @@ -4441,7 +4439,7 @@ bool MeterWindow::DoMoveAction(int x, int y, MOUSEACTION action) if (!m_Mouse.GetOverAction().empty()) { UINT currCounter = m_MouseMoveCounter; - g_Rainmeter->ExecuteCommand(m_Mouse.GetOverAction().c_str(), this); + GetRainmeter().ExecuteCommand(m_Mouse.GetOverAction().c_str(), this); return (currCounter == m_MouseMoveCounter); } } @@ -4461,7 +4459,7 @@ bool MeterWindow::DoMoveAction(int x, int y, MOUSEACTION action) if (!m_Mouse.GetLeaveAction().empty()) { - g_Rainmeter->ExecuteCommand(m_Mouse.GetLeaveAction().c_str(), this); + GetRainmeter().ExecuteCommand(m_Mouse.GetLeaveAction().c_str(), this); return true; } } @@ -4536,7 +4534,7 @@ LRESULT MeterWindow::OnWake(UINT uMsg, WPARAM wParam, LPARAM lParam) { if (wParam == PBT_APMRESUMEAUTOMATIC && !m_OnWakeAction.empty()) { - g_Rainmeter->ExecuteCommand(m_OnWakeAction.c_str(), this); + GetRainmeter().ExecuteCommand(m_OnWakeAction.c_str(), this); } return 0; @@ -4661,10 +4659,10 @@ LRESULT MeterWindow::OnCopyData(UINT uMsg, WPARAM wParam, LPARAM lParam) if (pCopyDataStruct && (pCopyDataStruct->dwData == 1) && (pCopyDataStruct->cbData > 0)) { - if (g_Rainmeter->HasMeterWindow(this)) + if (GetRainmeter().HasMeterWindow(this)) { const WCHAR* command = (const WCHAR*)pCopyDataStruct->lpData; - g_Rainmeter->ExecuteCommand(command, this); + GetRainmeter().ExecuteCommand(command, this); } else { @@ -4719,8 +4717,8 @@ void MeterWindow::MakePathAbsolute(std::wstring& path) else { std::wstring absolute; - absolute.reserve(g_Rainmeter->GetSkinPath().size() + m_FolderPath.size() + 1 + path.size()); - absolute = g_Rainmeter->GetSkinPath(); + absolute.reserve(GetRainmeter().GetSkinPath().size() + m_FolderPath.size() + 1 + path.size()); + absolute = GetRainmeter().GetSkinPath(); absolute += m_FolderPath; absolute += L'\\'; absolute += path; @@ -4730,7 +4728,7 @@ void MeterWindow::MakePathAbsolute(std::wstring& path) std::wstring MeterWindow::GetFilePath() { - std::wstring file = g_Rainmeter->GetSkinPath() + m_FolderPath; + std::wstring file = GetRainmeter().GetSkinPath() + m_FolderPath; file += L'\\'; file += m_FileName; return file; @@ -4738,7 +4736,7 @@ std::wstring MeterWindow::GetFilePath() std::wstring MeterWindow::GetRootPath() { - std::wstring path = g_Rainmeter->GetSkinPath(); + std::wstring path = GetRainmeter().GetSkinPath(); std::wstring::size_type loc; if ((loc = m_FolderPath.find_first_of(L'\\')) != std::wstring::npos) diff --git a/Library/Rainmeter.cpp b/Library/Rainmeter.cpp index 4b438702..fcfdaa5f 100644 --- a/Library/Rainmeter.cpp +++ b/Library/Rainmeter.cpp @@ -45,8 +45,6 @@ enum INTERVAL INTERVAL_NETSTATS = 120000 }; -Rainmeter* g_Rainmeter; // The module - /* ** Initializes Rainmeter. ** @@ -95,16 +93,13 @@ int RainmeterMain(LPWSTR cmdLine) const WCHAR* iniFile = (*cmdLine && !layout) ? cmdLine : nullptr; - g_Rainmeter = new Rainmeter; - int ret = g_Rainmeter->Initialize(iniFile, layout); + auto& rainmeter = GetRainmeter(); + int ret = rainmeter.Initialize(iniFile, layout); if (ret == 0) { - ret = g_Rainmeter->MessagePump(); + ret = rainmeter.MessagePump(); } - delete g_Rainmeter; - g_Rainmeter = nullptr; - return ret; } @@ -179,6 +174,12 @@ Rainmeter::~Rainmeter() GdiplusShutdown(m_GDIplusToken); } +Rainmeter& Rainmeter::GetInstance() +{ + static Rainmeter s_Rainmeter; + return s_Rainmeter; +} + /* ** The main initialization function for the module. ** @@ -538,7 +539,7 @@ LRESULT CALLBACK Rainmeter::MainWndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPA const WCHAR* data = (const WCHAR*)cds->lpData; if (cds->dwData == 1 && (cds->cbData > 0)) { - g_Rainmeter->DelayedExecuteCommand(data); + GetRainmeter().DelayedExecuteCommand(data); } } } @@ -549,12 +550,12 @@ LRESULT CALLBACK Rainmeter::MainWndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPA { MeasureNet::UpdateIFTable(); MeasureNet::UpdateStats(); - g_Rainmeter->WriteStats(false); + GetRainmeter().WriteStats(false); } break; case WM_RAINMETER_DELAYED_REFRESH_ALL: - g_Rainmeter->RefreshAll(); + GetRainmeter().RefreshAll(); break; case WM_RAINMETER_DELAYED_EXECUTE: @@ -562,15 +563,15 @@ LRESULT CALLBACK Rainmeter::MainWndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPA { // Execute bang WCHAR* bang = (WCHAR*)lParam; - g_Rainmeter->ExecuteCommand(bang, nullptr); + GetRainmeter().ExecuteCommand(bang, nullptr); free(bang); // _wcsdup() } break; case WM_RAINMETER_EXECUTE: - if (g_Rainmeter->HasMeterWindow((MeterWindow*)wParam)) + if (GetRainmeter().HasMeterWindow((MeterWindow*)wParam)) { - g_Rainmeter->ExecuteCommand((const WCHAR*)lParam, (MeterWindow*)wParam); + GetRainmeter().ExecuteCommand((const WCHAR*)lParam, (MeterWindow*)wParam); } break; @@ -883,7 +884,7 @@ void Rainmeter::ToggleSkin(int folderIndex, int fileIndex) { if (m_SkinFolders[folderIndex].active == fileIndex + 1) { - MeterWindow* meterWindow = g_Rainmeter->GetMeterWindow(GetFolderPath(folderIndex)); + MeterWindow* meterWindow = GetRainmeter().GetMeterWindow(GetFolderPath(folderIndex)); DeactivateSkin(meterWindow, folderIndex); } else @@ -2035,10 +2036,10 @@ int Rainmeter::CreateAllSkinsMenuRecursive(HMENU skinMenu, int index) int initialLevel = m_SkinFolders[index].level; int menuIndex = 0; - const size_t max = g_Rainmeter->m_SkinFolders.size(); + const size_t max = GetRainmeter().m_SkinFolders.size(); while (index < max) { - const SkinFolder& skinFolder = g_Rainmeter->m_SkinFolders[index]; + const SkinFolder& skinFolder = GetRainmeter().m_SkinFolders[index]; if (skinFolder.level != initialLevel) { return index - 1; diff --git a/Library/Rainmeter.h b/Library/Rainmeter.h index a0cf45d3..0b76927e 100644 --- a/Library/Rainmeter.h +++ b/Library/Rainmeter.h @@ -90,8 +90,7 @@ public: } }; - Rainmeter(); - ~Rainmeter(); + static Rainmeter& GetInstance(); int Initialize(LPCWSTR iniPath, LPCWSTR layout); bool IsAlreadyRunning(); @@ -156,7 +155,7 @@ public: HWND GetWindow() { return m_Window; } - HINSTANCE GetInstance() { return m_Instance; } + HINSTANCE GetModuleInstance() { return m_Instance; } HINSTANCE GetResourceInstance() { return m_ResourceInstance; } LCID GetResourceLCID() { return m_ResourceLCID; } @@ -216,6 +215,9 @@ public: friend class DialogManage; private: + Rainmeter(); + ~Rainmeter(); + static LRESULT CALLBACK MainWndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam); void ActivateActiveSkins(); @@ -305,6 +307,9 @@ private: GlobalOptions m_GlobalOptions; }; +// Convenience function. +inline Rainmeter& GetRainmeter() { return Rainmeter::GetInstance(); } + #ifdef LIBRARY_EXPORTS #define EXPORT_PLUGIN EXTERN_C #else diff --git a/Library/Section.cpp b/Library/Section.cpp index 64c326ca..9fc40d3a 100644 --- a/Library/Section.cpp +++ b/Library/Section.cpp @@ -21,8 +21,6 @@ #include "ConfigParser.h" #include "Rainmeter.h" -extern Rainmeter* g_Rainmeter; - /* ** The constructor ** @@ -84,6 +82,6 @@ void Section::DoUpdateAction() { if (!m_OnUpdateAction.empty()) { - g_Rainmeter->ExecuteCommand(m_OnUpdateAction.c_str(), m_MeterWindow); + GetRainmeter().ExecuteCommand(m_OnUpdateAction.c_str(), m_MeterWindow); } } diff --git a/Library/System.cpp b/Library/System.cpp index 9b56cbcf..6c2ca6f4 100644 --- a/Library/System.cpp +++ b/Library/System.cpp @@ -56,8 +56,6 @@ std::wstring System::c_WorkingDirectory; std::vector System::c_IniFileMappings; -extern Rainmeter* g_Rainmeter; - /* ** Creates a helper window to detect changes in the system. ** @@ -160,7 +158,7 @@ BOOL CALLBACK MyInfoEnumProc(HMONITOR hMonitor, HDC hdcMonitor, LPRECT lprcMonit info.cbSize = sizeof(MONITORINFOEX); GetMonitorInfo(hMonitor, &info); - if (g_Rainmeter->GetDebug()) + if (GetRainmeter().GetDebug()) { LogDebug(info.szDevice); LogDebugF(L" Flags : %s(0x%08X)", (info.dwFlags & MONITORINFOF_PRIMARY) ? L"PRIMARY " : L"", info.dwFlags); @@ -242,7 +240,7 @@ size_t System::GetMonitorCount() void System::SetMultiMonitorInfo() { std::vector& monitors = c_Monitors.monitors; - bool logging = g_Rainmeter->GetDebug(); + bool logging = GetRainmeter().GetDebug(); c_Monitors.vsT = GetSystemMetrics(SM_YVIRTUALSCREEN); c_Monitors.vsL = GetSystemMetrics(SM_XVIRTUALSCREEN); @@ -530,7 +528,7 @@ void System::UpdateWorkareaInfo() (*iter).work = info.rcWork; - if (g_Rainmeter->GetDebug()) + if (GetRainmeter().GetDebug()) { LogDebugF(L"WorkArea@%i : L=%i, T=%i, R=%i, B=%i (W=%i, H=%i)", i, @@ -635,7 +633,7 @@ HWND System::GetBackmostTopWindow() // Skip all ZPOSITION_ONDESKTOP, ZPOSITION_BOTTOM, and ZPOSITION_NORMAL windows while (winPos = ::GetNextWindow(winPos, GW_HWNDPREV)) { - MeterWindow* wnd = g_Rainmeter->GetMeterWindow(winPos); + MeterWindow* wnd = GetRainmeter().GetMeterWindow(winPos); if (!wnd || (wnd->GetWindowZPosition() != ZPOSITION_NORMAL && wnd->GetWindowZPosition() != ZPOSITION_ONDESKTOP && @@ -668,7 +666,7 @@ bool System::BelongToSameProcess(HWND hwndA, HWND hwndB) */ BOOL CALLBACK MyEnumWindowsProc(HWND hwnd, LPARAM lParam) { - bool logging = g_Rainmeter->GetDebug() && DEBUG_VERBOSE; + bool logging = GetRainmeter().GetDebug() && DEBUG_VERBOSE; const int classLen = _countof(METERWINDOW_CLASS_NAME) + (DEBUG_VERBOSE ? 32 : 1); WCHAR className[classLen]; MeterWindow* Window; @@ -676,11 +674,11 @@ BOOL CALLBACK MyEnumWindowsProc(HWND hwnd, LPARAM lParam) if (GetClassName(hwnd, className, classLen) > 0 && wcscmp(className, METERWINDOW_CLASS_NAME) == 0 && - (Window = g_Rainmeter->GetMeterWindow(hwnd))) + (Window = GetRainmeter().GetMeterWindow(hwnd))) { ZPOSITION zPos = Window->GetWindowZPosition(); if (zPos == ZPOSITION_ONDESKTOP || - (zPos == ZPOSITION_NORMAL && g_Rainmeter->IsNormalStayDesktop()) || + (zPos == ZPOSITION_NORMAL && GetRainmeter().IsNormalStayDesktop()) || zPos == ZPOSITION_ONBOTTOM) { if (lParam) @@ -719,7 +717,7 @@ BOOL CALLBACK MyEnumWindowsProc(HWND hwnd, LPARAM lParam) */ void System::ChangeZPosInOrder() { - bool logging = g_Rainmeter->GetDebug() && DEBUG_VERBOSE; + bool logging = GetRainmeter().GetDebug() && DEBUG_VERBOSE; std::vector windowsInZOrder; if (logging) LogDebug(L"1: ----- BEFORE -----"); @@ -740,7 +738,7 @@ void System::ChangeZPosInOrder() } }; - if (g_Rainmeter->IsNormalStayDesktop()) + if (GetRainmeter().IsNormalStayDesktop()) { resetZPos(ZPOSITION_NORMAL); } @@ -767,7 +765,7 @@ void System::ChangeZPosInOrder() */ void System::PrepareHelperWindow(HWND WorkerW) { - bool logging = g_Rainmeter->GetDebug() && DEBUG_VERBOSE; + bool logging = GetRainmeter().GetDebug() && DEBUG_VERBOSE; SetWindowPos(c_Window, HWND_BOTTOM, 0, 0, 0, 0, ZPOS_FLAGS); // always on bottom @@ -850,7 +848,7 @@ bool System::CheckDesktopState(HWND WorkerW) { c_ShowDesktop = !c_ShowDesktop; - if (g_Rainmeter->GetDebug()) + if (GetRainmeter().GetDebug()) { LogDebugF(L"System: \"Show %s\" has been detected.", c_ShowDesktop ? L"desktop" : L"open windows"); @@ -945,10 +943,10 @@ LRESULT CALLBACK System::WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lPa case TIMER_RESUME: KillTimer(hWnd, TIMER_RESUME); - if (g_Rainmeter->IsRedrawable()) + if (GetRainmeter().IsRedrawable()) { - std::map::const_iterator iter = g_Rainmeter->GetAllMeterWindows().begin(); - for ( ; iter != g_Rainmeter->GetAllMeterWindows().end(); ++iter) + std::map::const_iterator iter = GetRainmeter().GetAllMeterWindows().begin(); + for ( ; iter != GetRainmeter().GetAllMeterWindows().end(); ++iter) { (*iter).second->RedrawWindow(); } @@ -972,8 +970,8 @@ LRESULT CALLBACK System::WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lPa } // Deliver WM_DISPLAYCHANGE / WM_SETTINGCHANGE message to all meter windows - std::map::const_iterator iter = g_Rainmeter->GetAllMeterWindows().begin(); - for ( ; iter != g_Rainmeter->GetAllMeterWindows().end(); ++iter) + std::map::const_iterator iter = GetRainmeter().GetAllMeterWindows().begin(); + for ( ; iter != GetRainmeter().GetAllMeterWindows().end(); ++iter) { PostMessage((*iter).second->GetWindow(), WM_METERWINDOW_DELAYED_MOVE, (WPARAM)uMsg, (LPARAM)0); } @@ -1152,7 +1150,7 @@ void System::SetWallpaper(const std::wstring& wallpaper, const std::wstring& sty Bitmap* bitmap = Bitmap::FromFile(wallpaper.c_str()); if (bitmap && bitmap->GetLastStatus() == Ok) { - std::wstring file = g_Rainmeter->GetSettingsPath() + L"Wallpaper.bmp"; + std::wstring file = GetRainmeter().GetSettingsPath() + L"Wallpaper.bmp"; const CLSID bmpClsid = { 0x557cf400, 0x1a04, 0x11d3, { 0x9a, 0x73, 0x0, 0x0, 0xf8, 0x1e, 0xf3, 0x2e } }; if (bitmap->Save(file.c_str(), &bmpClsid) == Ok) diff --git a/Library/TrayWindow.cpp b/Library/TrayWindow.cpp index 73bde54f..178e31b2 100644 --- a/Library/TrayWindow.cpp +++ b/Library/TrayWindow.cpp @@ -48,8 +48,6 @@ enum INTERVAL const UINT WM_TASKBARCREATED = ::RegisterWindowMessage(L"TaskbarCreated"); -extern Rainmeter* g_Rainmeter; - using namespace Gdiplus; TrayWindow::TrayWindow() : @@ -89,7 +87,7 @@ void TrayWindow::Initialize() { WNDCLASS wc = {0}; wc.lpfnWndProc = (WNDPROC)WndProc; - wc.hInstance = g_Rainmeter->GetInstance(); + wc.hInstance = GetRainmeter().GetModuleInstance(); wc.lpszClassName = L"RainmeterTrayClass"; wc.hIcon = GetIcon(IDI_RAINMETER); @@ -339,7 +337,7 @@ void TrayWindow::SetTrayIcon(bool enabled) m_IconEnabled = enabled; // Save to Rainmeter.ini. - const std::wstring& iniFile = g_Rainmeter->GetIniFile(); + const std::wstring& iniFile = GetRainmeter().GetIniFile(); WritePrivateProfileString(L"Rainmeter", L"TrayIcon", enabled ? nullptr : L"0", iniFile.c_str()); } @@ -372,8 +370,8 @@ void TrayWindow::ReadOptions(ConfigParser& parser) if (!measureName.empty()) { - ConfigParser* oldParser = g_Rainmeter->GetCurrentParser(); - g_Rainmeter->SetCurrentParser(&parser); + ConfigParser* oldParser = GetRainmeter().GetCurrentParser(); + GetRainmeter().SetCurrentParser(&parser); m_Measure = Measure::Create(measureName.c_str(), nullptr, L"TrayMeasure"); if (m_Measure) @@ -381,7 +379,7 @@ void TrayWindow::ReadOptions(ConfigParser& parser) m_Measure->ReadOptions(parser); } - g_Rainmeter->SetCurrentParser(oldParser); + GetRainmeter().SetCurrentParser(oldParser); } const WCHAR* type = parser.ReadString(L"TrayMeasure", L"TrayMeter", m_Measure ? L"HISTOGRAM" : L"NONE").c_str(); @@ -404,7 +402,7 @@ void TrayWindow::ReadOptions(ConfigParser& parser) // Load the bitmaps if defined if (!imageName.empty()) { - imageName.insert(0, g_Rainmeter->GetSkinPath()); + imageName.insert(0, GetRainmeter().GetSkinPath()); const WCHAR* imagePath = imageName.c_str(); if (_wcsicmp(imagePath + (imageName.size() - 4), L".ico") == 0) { @@ -459,7 +457,7 @@ void TrayWindow::ReadOptions(ConfigParser& parser) LRESULT CALLBACK TrayWindow::WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { - TrayWindow* tray = g_Rainmeter->GetTrayWindow(); + TrayWindow* tray = GetRainmeter().GetTrayWindow(); switch (uMsg) { @@ -483,11 +481,11 @@ LRESULT CALLBACK TrayWindow::WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM break; case IDM_REFRESH: - PostMessage(g_Rainmeter->GetWindow(), WM_RAINMETER_DELAYED_REFRESH_ALL, (WPARAM)nullptr, (LPARAM)nullptr); + PostMessage(GetRainmeter().GetWindow(), WM_RAINMETER_DELAYED_REFRESH_ALL, (WPARAM)nullptr, (LPARAM)nullptr); break; case IDM_SHOWLOGFILE: - g_Rainmeter->ShowLogFile(); + GetRainmeter().ShowLogFile(); break; case IDM_STARTLOG: @@ -503,15 +501,15 @@ LRESULT CALLBACK TrayWindow::WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM break; case IDM_DEBUGLOG: - g_Rainmeter->SetDebug(!g_Rainmeter->GetDebug()); + GetRainmeter().SetDebug(!GetRainmeter().GetDebug()); break; case IDM_DISABLEDRAG: - g_Rainmeter->SetDisableDragging(!g_Rainmeter->GetDisableDragging()); + GetRainmeter().SetDisableDragging(!GetRainmeter().GetDisableDragging()); break; case IDM_EDITCONFIG: - g_Rainmeter->EditSettings(); + GetRainmeter().EditSettings(); break; case IDM_QUIT: @@ -519,7 +517,7 @@ LRESULT CALLBACK TrayWindow::WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM break; case IDM_OPENSKINSFOLDER: - g_Rainmeter->OpenSkinFolder(); + GetRainmeter().OpenSkinFolder(); break; default: @@ -530,25 +528,25 @@ LRESULT CALLBACK TrayWindow::WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM { int pos = mID - ID_THEME_FIRST; - const std::vector& layouts = g_Rainmeter->GetAllLayouts(); + const std::vector& layouts = GetRainmeter().GetAllLayouts(); if (pos >= 0 && pos < (int)layouts.size()) { - g_Rainmeter->LoadLayout(layouts[pos]); + GetRainmeter().LoadLayout(layouts[pos]); } } else if (mID >= ID_CONFIG_FIRST && mID <= ID_CONFIG_LAST) { - std::pair indexes = g_Rainmeter->GetMeterWindowIndex(mID); + std::pair indexes = GetRainmeter().GetMeterWindowIndex(mID); if (indexes.first != -1 && indexes.second != -1) { - g_Rainmeter->ToggleSkin(indexes.first, indexes.second); + GetRainmeter().ToggleSkin(indexes.first, indexes.second); } } else { // Forward the message to correct window int index = (int)(wParam >> 16); - const std::map& windows = g_Rainmeter->GetAllMeterWindows(); + const std::map& windows = GetRainmeter().GetAllMeterWindows(); if (index < (int)windows.size()) { @@ -579,19 +577,19 @@ LRESULT CALLBACK TrayWindow::WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM switch (uMouseMsg) { case WM_MBUTTONDOWN: - bang = g_Rainmeter->GetTrayExecuteM().c_str(); + bang = GetRainmeter().GetTrayExecuteM().c_str(); break; case WM_RBUTTONDOWN: - bang = g_Rainmeter->GetTrayExecuteR().c_str(); + bang = GetRainmeter().GetTrayExecuteR().c_str(); break; case WM_MBUTTONDBLCLK: - bang = g_Rainmeter->GetTrayExecuteDM().c_str(); + bang = GetRainmeter().GetTrayExecuteDM().c_str(); break; case WM_RBUTTONDBLCLK: - bang = g_Rainmeter->GetTrayExecuteDR().c_str(); + bang = GetRainmeter().GetTrayExecuteDR().c_str(); break; default: @@ -602,7 +600,7 @@ LRESULT CALLBACK TrayWindow::WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM if (*bang && !IsCtrlKeyDown()) // Ctrl is pressed, so only run default action { - g_Rainmeter->ExecuteCommand(bang, nullptr); + GetRainmeter().ExecuteCommand(bang, nullptr); tray->m_TrayContextMenuEnabled = (uMouseMsg != WM_RBUTTONDOWN); break; } @@ -618,7 +616,7 @@ LRESULT CALLBACK TrayWindow::WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM if (tray->m_TrayContextMenuEnabled) { POINT pos = System::GetCursorPosition(); - g_Rainmeter->ShowContextMenu(pos, nullptr); + GetRainmeter().ShowContextMenu(pos, nullptr); } break; @@ -662,19 +660,19 @@ LRESULT CALLBACK TrayWindow::WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM switch (wParam) { case RAINMETER_QUERY_ID_SKINS_PATH: - sendCopyData(g_Rainmeter->GetSkinPath()); + sendCopyData(GetRainmeter().GetSkinPath()); return 0; case RAINMETER_QUERY_ID_SETTINGS_PATH: - sendCopyData(g_Rainmeter->GetSettingsPath()); + sendCopyData(GetRainmeter().GetSettingsPath()); return 0; case RAINMETER_QUERY_ID_PLUGINS_PATH: - sendCopyData(g_Rainmeter->GetPluginPath()); + sendCopyData(GetRainmeter().GetPluginPath()); return 0; case RAINMETER_QUERY_ID_PROGRAM_PATH: - sendCopyData(g_Rainmeter->GetPath()); + sendCopyData(GetRainmeter().GetPath()); return 0; case RAINMETER_QUERY_ID_LOG_PATH: @@ -682,12 +680,12 @@ LRESULT CALLBACK TrayWindow::WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM return 0; case RAINMETER_QUERY_ID_CONFIG_EDITOR: - sendCopyData(g_Rainmeter->GetSkinEditor()); + sendCopyData(GetRainmeter().GetSkinEditor()); return 0; case RAINMETER_QUERY_ID_IS_DEBUGGING: { - BOOL debug = g_Rainmeter->GetDebug(); + BOOL debug = GetRainmeter().GetDebug(); SendMessage((HWND)lParam, WM_QUERY_RAINMETER_RETURN, (WPARAM)hWnd, (LPARAM)debug); } return 0; @@ -701,7 +699,7 @@ LRESULT CALLBACK TrayWindow::WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM if (cds->dwData == RAINMETER_QUERY_ID_SKIN_WINDOWHANDLE) { LPCWSTR folderPath = (LPCWSTR)cds->lpData; - MeterWindow* mw = g_Rainmeter->GetMeterWindow(folderPath); + MeterWindow* mw = GetRainmeter().GetMeterWindow(folderPath); return (mw) ? (LRESULT)mw->GetWindow() : 0; } } diff --git a/Library/UpdateCheck.cpp b/Library/UpdateCheck.cpp index afdece2c..fdf9fffd 100644 --- a/Library/UpdateCheck.cpp +++ b/Library/UpdateCheck.cpp @@ -22,8 +22,6 @@ #include "TrayWindow.h" #include "../Version.h" -extern Rainmeter* g_Rainmeter; - void CheckVersion(void* dummy) { HINTERNET hRootHandle = InternetOpen( @@ -72,17 +70,17 @@ void CheckVersion(void* dummy) if (availableVersion > RAINMETER_VERSION || (revision_beta && availableVersion == RAINMETER_VERSION)) { - g_Rainmeter->SetNewVersion(); + GetRainmeter().SetNewVersion(); WCHAR buffer[32]; - const WCHAR* dataFile = g_Rainmeter->GetDataFile().c_str(); + const WCHAR* dataFile = GetRainmeter().GetDataFile().c_str(); GetPrivateProfileString(L"Rainmeter", L"LastCheck", L"0", buffer, _countof(buffer), dataFile); // Show tray notification only once per new version int lastVersion = parseVersion(buffer); if (availableVersion > lastVersion) { - g_Rainmeter->GetTrayWindow()->ShowUpdateNotification(version); + GetRainmeter().GetTrayWindow()->ShowUpdateNotification(version); WritePrivateProfileString(L"Rainmeter", L"LastCheck", version, dataFile); } } diff --git a/Library/lua/glue/LuaMeterWindow.cpp b/Library/lua/glue/LuaMeterWindow.cpp index 498fcc08..24447dff 100644 --- a/Library/lua/glue/LuaMeterWindow.cpp +++ b/Library/lua/glue/LuaMeterWindow.cpp @@ -22,8 +22,6 @@ #include "../../MeterWindow.h" #include "../../MeterString.h" -extern Rainmeter* g_Rainmeter; - #define DECLARE_SELF(L) \ void* selfData = lua_touserdata(L, 1); \ if (!selfData) return 0; \ @@ -40,7 +38,7 @@ static int Bang(lua_State* L) if (top == 2) // 1 argument { parser.ReplaceVariables(bang); - g_Rainmeter->ExecuteCommand(bang.c_str(), self); + GetRainmeter().ExecuteCommand(bang.c_str(), self); } else { @@ -56,7 +54,7 @@ static int Bang(lua_State* L) args.push_back(tmpSz); } - g_Rainmeter->ExecuteBang(bangSz, args, self); + GetRainmeter().ExecuteBang(bangSz, args, self); } }