diff --git a/Library/CommandHandler.cpp b/Library/CommandHandler.cpp index 59789766..285945a4 100644 --- a/Library/CommandHandler.cpp +++ b/Library/CommandHandler.cpp @@ -165,7 +165,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* meterWindow = GetRainmeter().GetMeterWindow(folderPath); + MeterWindow* meterWindow = Rainmeter::GetInstance().GetMeterWindow(folderPath); if (meterWindow) { meterWindow->DoBang(bangInfo.bang, args); @@ -179,7 +179,7 @@ void DoBang(const BangInfo& bangInfo, std::vector& args, MeterWind } // No skin defined -> apply to all. - for (const auto& ip : GetRainmeter().GetAllMeterWindows()) + for (const auto& ip : Rainmeter::GetInstance().GetAllMeterWindows()) { ip.second->DoBang(bangInfo.bang, args); } @@ -213,7 +213,7 @@ void DoGroupBang(const BangInfo& bangInfo, std::vector& args, Mete if (args.size() > bangInfo.argCount) { std::multimap windows; - GetRainmeter().GetMeterWindowsByLoadOrder(windows, args[bangInfo.argCount]); + Rainmeter::GetInstance().GetMeterWindowsByLoadOrder(windows, args[bangInfo.argCount]); // Remove extra parameters (including group). args.resize(bangInfo.argCount); @@ -584,11 +584,11 @@ void CommandHandler::DoActivateSkinBang(std::vector& args, MeterWi { if (args.size() == 1) { - if (GetRainmeter().ActivateSkin(args[0])) return; + if (Rainmeter::GetInstance().ActivateSkin(args[0])) return; } else if (args.size() > 1) { - if (GetRainmeter().ActivateSkin(args[0], args[1])) return; + if (Rainmeter::GetInstance().ActivateSkin(args[0], args[1])) return; } LogErrorF(skin, L"!ActivateConfig: Invalid parameters"); @@ -598,7 +598,7 @@ void CommandHandler::DoDeactivateSkinBang(std::vector& args, Meter { if (!args.empty()) { - skin = GetRainmeter().GetMeterWindow(args[0]); + skin = Rainmeter::GetInstance().GetMeterWindow(args[0]); if (!skin) { LogWarningF(L"!DeactivateConfig: \"%s\" not active", args[0].c_str()); @@ -608,7 +608,7 @@ void CommandHandler::DoDeactivateSkinBang(std::vector& args, Meter if (skin) { - GetRainmeter().DeactivateSkin(skin, -1); + Rainmeter::GetInstance().DeactivateSkin(skin, -1); } else { @@ -620,10 +620,10 @@ void CommandHandler::DoToggleSkinBang(std::vector& args, MeterWind { if (args.size() >= 2) { - MeterWindow* meterWindow = GetRainmeter().GetMeterWindow(args[0]); + MeterWindow* meterWindow = Rainmeter::GetInstance().GetMeterWindow(args[0]); if (meterWindow) { - GetRainmeter().DeactivateSkin(meterWindow, -1); + Rainmeter::GetInstance().DeactivateSkin(meterWindow, -1); return; } @@ -641,10 +641,10 @@ void CommandHandler::DoDeactivateSkinGroupBang(std::vector& args, if (!args.empty()) { std::multimap windows; - GetRainmeter().GetMeterWindowsByLoadOrder(windows, args[0]); + Rainmeter::GetInstance().GetMeterWindowsByLoadOrder(windows, args[0]); for (const auto& ip : windows) { - GetRainmeter().DeactivateSkin(ip.second, -1); + Rainmeter::GetInstance().DeactivateSkin(ip.second, -1); } } else @@ -663,12 +663,12 @@ void CommandHandler::DoLoadLayoutBang(std::vector& args, MeterWind std::wstring command = L"!LoadLayout \""; command += args[0]; command += L'"'; - GetRainmeter().DelayedExecuteCommand(command.c_str()); + Rainmeter::GetInstance().DelayedExecuteCommand(command.c_str()); } else { // Not called from a skin (or called with delay). - GetRainmeter().LoadLayout(args[0]); + Rainmeter::GetInstance().LoadLayout(args[0]); } } } @@ -734,7 +734,7 @@ void CommandHandler::DoSkinMenuBang(std::vector& args, MeterWindow { if (!args.empty()) { - skin = GetRainmeter().GetMeterWindow(args[0]); + skin = Rainmeter::GetInstance().GetMeterWindow(args[0]); if (!skin) { LogWarningF(L"!SkinMenu: \"%s\" not active", args[0].c_str()); @@ -745,7 +745,7 @@ void CommandHandler::DoSkinMenuBang(std::vector& args, MeterWindow if (skin) { POINT pos = System::GetCursorPosition(); - GetRainmeter().ShowContextMenu(pos, skin); + Rainmeter::GetInstance().ShowContextMenu(pos, skin); } else { @@ -756,12 +756,12 @@ void CommandHandler::DoSkinMenuBang(std::vector& args, MeterWindow void CommandHandler::DoTrayMenuBang(std::vector& args, MeterWindow* skin) { POINT pos = System::GetCursorPosition(); - GetRainmeter().ShowContextMenu(pos, nullptr); + Rainmeter::GetInstance().ShowContextMenu(pos, nullptr); } void CommandHandler::DoResetStatsBang(std::vector& args, MeterWindow* meterWindow) { - GetRainmeter().ResetStats(); + Rainmeter::GetInstance().ResetStats(); } void CommandHandler::DoWriteKeyValueBang(std::vector& args, MeterWindow* skin) @@ -791,8 +791,8 @@ void CommandHandler::DoWriteKeyValueBang(std::vector& args, MeterW return; } - 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) + if (_wcsnicmp(iniFile, Rainmeter::GetInstance().m_SkinPath.c_str(), Rainmeter::GetInstance().m_SkinPath.size()) != 0 && + _wcsnicmp(iniFile, Rainmeter::GetInstance().m_SettingsPath.c_str(), Rainmeter::GetInstance().m_SettingsPath.size()) != 0) { LogErrorF(skin, L"!WriteKeyValue: Illegal path: %s", iniFile); return; @@ -825,14 +825,14 @@ void CommandHandler::DoWriteKeyValueBang(std::vector& args, MeterW if (temporary) { - if (GetRainmeter().GetDebug()) + if (Rainmeter::GetInstance().GetDebug()) { LogDebugF(skin, L"!WriteKeyValue: Writing to: %s (Temp: %s)", iniFile, strIniWrite.c_str()); } } else { - if (GetRainmeter().GetDebug()) + if (Rainmeter::GetInstance().GetDebug()) { LogDebugF(skin, L"!WriteKeyValue: Writing to: %s", iniFile); } @@ -935,13 +935,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(GetRainmeter().m_Window, WM_RAINMETER_DELAYED_REFRESH_ALL, 0, 0); + PostMessage(Rainmeter::GetInstance().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(GetRainmeter().GetTrayWindow()->GetWindow(), WM_COMMAND, MAKEWPARAM(IDM_QUIT, 0), 0); + PostMessage(Rainmeter::GetInstance().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 b8ff8271..86da5631 100644 --- a/Library/ConfigParser.cpp +++ b/Library/ConfigParser.cpp @@ -92,13 +92,13 @@ void ConfigParser::SetBuiltInVariables(const std::wstring& filename, const std:: return m_BuiltInVariables.insert(std::make_pair(name, value)); }; - 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"PROGRAMPATH", Rainmeter::GetInstance().GetPath()); + insertVariable(L"PROGRAMDRIVE", Rainmeter::GetInstance().GetDrive()); + insertVariable(L"SETTINGSPATH", Rainmeter::GetInstance().GetSettingsPath()); + insertVariable(L"SKINSPATH", Rainmeter::GetInstance().GetSkinPath()); + insertVariable(L"PLUGINSPATH", Rainmeter::GetInstance().GetPluginPath()); insertVariable(L"CURRENTPATH", PathUtil::GetFolderFromFilePath(filename)); - insertVariable(L"ADDONSPATH", GetRainmeter().GetAddonPath()); + insertVariable(L"ADDONSPATH", Rainmeter::GetInstance().GetAddonPath()); if (meterWindow) { @@ -1314,7 +1314,7 @@ void ConfigParser::ReadIniFile(const std::wstring& iniFile, LPCTSTR skinSection, { if (depth > 100) // Is 100 enough to assume the include loop never ends? { - GetRainmeter().ShowMessage(nullptr, GetString(ID_STR_INCLUDEINFINITELOOP), MB_OK | MB_ICONERROR); + Rainmeter::GetInstance().ShowMessage(nullptr, GetString(ID_STR_INCLUDEINFINITELOOP), MB_OK | MB_ICONERROR); return; } @@ -1331,11 +1331,11 @@ void ConfigParser::ReadIniFile(const std::wstring& iniFile, LPCTSTR skinSection, if (temporary) { - if (GetRainmeter().GetDebug()) LogDebugF(m_MeterWindow, L"Reading file: %s (Temp: %s)", iniFile.c_str(), iniRead.c_str()); + if (Rainmeter::GetInstance().GetDebug()) LogDebugF(m_MeterWindow, L"Reading file: %s (Temp: %s)", iniFile.c_str(), iniRead.c_str()); } else { - if (GetRainmeter().GetDebug()) LogDebugF(m_MeterWindow, L"Reading file: %s", iniFile.c_str()); + if (Rainmeter::GetInstance().GetDebug()) LogDebugF(m_MeterWindow, L"Reading file: %s", iniFile.c_str()); iniRead = iniFile; } diff --git a/Library/ContextMenu.cpp b/Library/ContextMenu.cpp index 50b51844..3eae3830 100644 --- a/Library/ContextMenu.cpp +++ b/Library/ContextMenu.cpp @@ -73,7 +73,7 @@ void ContextMenu::ShowMenu(POINT pos, MeterWindow* meterWindow) if (!menu) return; m_MenuActive = true; - Rainmeter& rainmeter = GetRainmeter(); + Rainmeter& rainmeter = Rainmeter::GetInstance(); SetMenuDefaultItem(menu, IDM_MANAGE, MF_BYCOMMAND); @@ -343,7 +343,7 @@ HMENU ContextMenu::CreateSkinMenu(MeterWindow* meterWindow, int index, HMENU men CheckMenuItem(settingsMenu, IDM_SKIN_REMEMBERPOSITION, MF_BYCOMMAND | MF_CHECKED); } - if (GetRainmeter().m_DisableDragging) + if (Rainmeter::GetInstance().m_DisableDragging) { EnableMenuItem(settingsMenu, IDM_SKIN_DRAGGABLE, MF_BYCOMMAND | MF_GRAYED); } @@ -398,7 +398,7 @@ HMENU ContextMenu::CreateSkinMenu(MeterWindow* meterWindow, int index, HMENU men // Add the variants menu if (variantsMenu) { - const SkinRegistry::Folder& skinFolder = *GetRainmeter().m_SkinRegistry.FindFolder(skinName); + const SkinRegistry::Folder& skinFolder = *Rainmeter::GetInstance().m_SkinRegistry.FindFolder(skinName); for (int i = 0, isize = (int)skinFolder.files.size(); i < isize; ++i) { InsertMenu(variantsMenu, i, MF_BYPOSITION, skinFolder.baseID + i, skinFolder.files[i].c_str()); @@ -549,7 +549,7 @@ void ContextMenu::AppendSkinCustomMenu( int ContextMenu::CreateAllSkinsMenuRecursive(HMENU skinMenu, int index) { - SkinRegistry& skinRegistry = GetRainmeter().m_SkinRegistry; + SkinRegistry& skinRegistry = Rainmeter::GetInstance().m_SkinRegistry; const int initialLevel = skinRegistry.GetFolder(index).level; int menuIndex = 0; @@ -604,7 +604,7 @@ int ContextMenu::CreateAllSkinsMenuRecursive(HMENU skinMenu, int index) void ContextMenu::CreateLayoutMenu(HMENU layoutMenu) { - const auto& layouts = GetRainmeter().m_Layouts; + const auto& layouts = Rainmeter::GetInstance().m_Layouts; for (size_t i = 0, isize = layouts.size(); i < isize; ++i) { InsertMenu(layoutMenu, (UINT)i, MF_BYPOSITION, ID_THEME_FIRST + i, layouts[i].c_str()); diff --git a/Library/DialogAbout.cpp b/Library/DialogAbout.cpp index cda90bab..7f0c04a4 100644 --- a/Library/DialogAbout.cpp +++ b/Library/DialogAbout.cpp @@ -62,7 +62,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), - GetRainmeter().GetWindow()); + Rainmeter::GetInstance().GetWindow()); // Fake WM_NOTIFY to change tab NMHDR nm; @@ -752,7 +752,7 @@ void DialogAbout::TabSkins::UpdateSkinList() // Add entries for each skin std::wstring::size_type maxLength = 0; - const std::map& windows = GetRainmeter().GetAllMeterWindows(); + const std::map& windows = Rainmeter::GetInstance().GetAllMeterWindows(); std::map::const_iterator iter = windows.begin(); bool found = false; for ( ; iter != windows.end(); ++iter) @@ -806,7 +806,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 = GetRainmeter().GetAllMeterWindows(); + const std::map& windows = Rainmeter::GetInstance().GetAllMeterWindows(); std::map::const_iterator iter = windows.begin(); while (selected && iter != windows.end()) { @@ -1143,10 +1143,10 @@ void DialogAbout::TabPlugins::Initialize() FindClose(hSearch); }; - findPlugins(GetRainmeter().GetPluginPath()); - if (GetRainmeter().HasUserPluginPath()) + findPlugins(Rainmeter::GetInstance().GetPluginPath()); + if (Rainmeter::GetInstance().HasUserPluginPath()) { - findPlugins(GetRainmeter().GetUserPluginPath()); + findPlugins(Rainmeter::GetInstance().GetUserPluginPath()); } m_Initialized = true; @@ -1242,15 +1242,15 @@ void DialogAbout::TabVersion::Initialize() SetWindowText(item, Platform::GetPlatformFriendlyName().c_str()); item = GetControl(Id_PathLabel); - std::wstring text = L"Path: " + GetRainmeter().GetPath(); + std::wstring text = L"Path: " + Rainmeter::GetInstance().GetPath(); SetWindowText(item, text.c_str()); item = GetControl(Id_IniFileLabel); - text = L"IniFile: " + GetRainmeter().GetIniFile(); + text = L"IniFile: " + Rainmeter::GetInstance().GetIniFile(); SetWindowText(item, text.c_str()); item = GetControl(Id_SkinPathLabel); - text = L"SkinPath: " + GetRainmeter().GetSkinPath(); + text = L"SkinPath: " + Rainmeter::GetInstance().GetSkinPath(); SetWindowText(item, text.c_str()); m_Initialized = true; @@ -1291,11 +1291,11 @@ INT_PTR DialogAbout::TabVersion::OnCommand(WPARAM wParam, LPARAM lParam) text += L'\n'; text += Platform::GetPlatformFriendlyName(); text += L"\nPath: "; - text += GetRainmeter().GetPath(); + text += Rainmeter::GetInstance().GetPath(); text += L"\nIniFile: "; - text += GetRainmeter().GetIniFile(); + text += Rainmeter::GetInstance().GetIniFile(); text += L"\nSkinPath: "; - text += GetRainmeter().GetSkinPath(); + text += Rainmeter::GetInstance().GetSkinPath(); System::SetClipboardText(text); } break; diff --git a/Library/DialogManage.cpp b/Library/DialogManage.cpp index eff83e47..47902bb5 100644 --- a/Library/DialogManage.cpp +++ b/Library/DialogManage.cpp @@ -88,7 +88,7 @@ void DialogManage::Open(int tab) 0, 0, 500, 322, DS_CENTER | WS_POPUP | WS_MINIMIZEBOX | WS_CAPTION | WS_SYSMENU, WS_EX_APPWINDOW | WS_EX_CONTROLPARENT | ((*GetString(ID_STR_ISRTL) == L'1') ? WS_EX_LAYOUTRTL : 0), - GetRainmeter().GetWindow()); + Rainmeter::GetInstance().GetWindow()); // Fake WM_NOTIFY to change tab NMHDR nm; @@ -290,11 +290,11 @@ INT_PTR DialogManage::OnCommand(WPARAM wParam, LPARAM lParam) switch (LOWORD(wParam)) { case Id_RefreshAllButton: - GetRainmeter().RefreshAll(); + Rainmeter::GetInstance().RefreshAll(); break; case Id_EditSettingsButton: - GetRainmeter().EditSettings(); + Rainmeter::GetInstance().EditSettings(); break; case Id_OpenLogButton: @@ -606,7 +606,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 (!GetRainmeter().m_SkinRegistry.IsEmpty()) + if (!Rainmeter::GetInstance().m_SkinRegistry.IsEmpty()) { PopulateTree(item, tvi); } @@ -644,7 +644,7 @@ void DialogManage::TabSkins::SetControls() EnableWindow(item, TRUE); item = GetControl(Id_DraggableCheckBox); - if (GetRainmeter().GetDisableDragging()) + if (Rainmeter::GetInstance().GetDisableDragging()) { EnableWindow(item, FALSE); Button_SetCheck(item, BST_UNCHECKED); @@ -684,7 +684,7 @@ void DialogManage::TabSkins::SetControls() item = GetControl(Id_LoadOrderEdit); EnableWindow(item, TRUE); - _itow_s(GetRainmeter().GetLoadOrder(m_SkinFolderPath), buffer, 10); + _itow_s(Rainmeter::GetInstance().GetLoadOrder(m_SkinFolderPath), buffer, 10); SetWindowText(item, buffer); item = GetControl(Id_OnHoverDropDownList); @@ -797,10 +797,10 @@ void DialogManage::TabSkins::ReadSkin() item = GetControl(Id_EditButton); EnableWindow(item, TRUE); - std::wstring file = GetRainmeter().GetSkinPath() + m_SkinFolderPath; + std::wstring file = Rainmeter::GetInstance().GetSkinPath() + m_SkinFolderPath; file += L'\\'; file += m_SkinFileName; - m_SkinWindow = GetRainmeter().GetMeterWindowByINI(file); + m_SkinWindow = Rainmeter::GetInstance().GetMeterWindowByINI(file); if (!m_SkinWindow) { DisableControls(); @@ -917,12 +917,12 @@ std::wstring DialogManage::TabSkins::GetTreeSelectionPath(HWND tree) */ int DialogManage::TabSkins::PopulateTree(HWND tree, TVINSERTSTRUCT& tvi, int index) { - int initialLevel = GetRainmeter().m_SkinRegistry.GetFolder(index).level; + int initialLevel = Rainmeter::GetInstance().m_SkinRegistry.GetFolder(index).level; - const size_t max = GetRainmeter().m_SkinRegistry.GetFolderCount(); + const size_t max = Rainmeter::GetInstance().m_SkinRegistry.GetFolderCount(); while (index < max) { - const auto& skinFolder = GetRainmeter().m_SkinRegistry.GetFolder(index); + const auto& skinFolder = Rainmeter::GetInstance().m_SkinRegistry.GetFolder(index); if (skinFolder.level != initialLevel) { return index - 1; @@ -937,7 +937,7 @@ int DialogManage::TabSkins::PopulateTree(HWND tree, TVINSERTSTRUCT& tvi, int ind // Add subfolders if ((index + 1) < max && - GetRainmeter().m_SkinRegistry.GetFolder(index + 1).level == initialLevel + 1) + Rainmeter::GetInstance().m_SkinRegistry.GetFolder(index + 1).level == initialLevel + 1) { index = PopulateTree(tree, tvi, index + 1); } @@ -1042,9 +1042,9 @@ INT_PTR DialogManage::TabSkins::OnCommand(WPARAM wParam, LPARAM lParam) HMENU menu = CreatePopupMenu(); // Add active skins to menu - std::map::const_iterator iter = GetRainmeter().GetAllMeterWindows().begin(); + std::map::const_iterator iter = Rainmeter::GetInstance().GetAllMeterWindows().begin(); int index = 0; - for ( ; iter != GetRainmeter().GetAllMeterWindows().end(); ++iter) + for ( ; iter != Rainmeter::GetInstance().GetAllMeterWindows().end(); ++iter) { std::wstring name = ((*iter).second)->GetFolderPath() + L'\\'; name += ((*iter).second)->GetFileName(); @@ -1075,7 +1075,7 @@ INT_PTR DialogManage::TabSkins::OnCommand(WPARAM wParam, LPARAM lParam) case Id_CreateSkinPackageButton: { - std::wstring file = GetRainmeter().GetPath() + L"SkinInstaller.exe"; + std::wstring file = Rainmeter::GetInstance().GetPath() + L"SkinInstaller.exe"; CommandHandler::RunFile(file.c_str(), L"/Packager"); } break; @@ -1086,11 +1086,11 @@ INT_PTR DialogManage::TabSkins::OnCommand(WPARAM wParam, LPARAM lParam) { // Skin not active, load const SkinRegistry::Indexes indexes = - GetRainmeter().m_SkinRegistry.FindIndexes(m_SkinFolderPath, m_SkinFileName); + Rainmeter::GetInstance().m_SkinRegistry.FindIndexes(m_SkinFolderPath, m_SkinFileName); if (indexes.IsValid()) { m_HandleCommands = false; - GetRainmeter().ActivateSkin(indexes.folder, indexes.file); + Rainmeter::GetInstance().ActivateSkin(indexes.folder, indexes.file); m_HandleCommands = true; // Fake selection change to update controls @@ -1104,7 +1104,7 @@ INT_PTR DialogManage::TabSkins::OnCommand(WPARAM wParam, LPARAM lParam) else { m_HandleCommands = false; - GetRainmeter().DeactivateSkin(m_SkinWindow, -1); + Rainmeter::GetInstance().DeactivateSkin(m_SkinWindow, -1); } } break; @@ -1117,7 +1117,7 @@ INT_PTR DialogManage::TabSkins::OnCommand(WPARAM wParam, LPARAM lParam) break; case Id_EditButton: - GetRainmeter().EditSkinFile(m_SkinFolderPath, m_SkinFileName); + Rainmeter::GetInstance().EditSkinFile(m_SkinFolderPath, m_SkinFileName); break; case Id_XPositionEdit: @@ -1184,15 +1184,15 @@ 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, GetRainmeter().GetIniFile().c_str()); - const SkinRegistry::Indexes indexes = GetRainmeter().m_SkinRegistry.FindIndexes( + WritePrivateProfileString(m_SkinFolderPath.c_str(), L"LoadOrder", buffer, Rainmeter::GetInstance().GetIniFile().c_str()); + const SkinRegistry::Indexes indexes = Rainmeter::GetInstance().m_SkinRegistry.FindIndexes( m_SkinWindow->GetFolderPath(), m_SkinWindow->GetFileName()); if (indexes.IsValid()) { - GetRainmeter().SetLoadOrder(indexes.folder, value); + Rainmeter::GetInstance().SetLoadOrder(indexes.folder, value); std::multimap windows; - GetRainmeter().GetMeterWindowsByLoadOrder(windows); + Rainmeter::GetInstance().GetMeterWindowsByLoadOrder(windows); System::PrepareHelperWindow(); @@ -1306,17 +1306,17 @@ INT_PTR DialogManage::TabSkins::OnCommand(WPARAM wParam, LPARAM lParam) case IDM_MANAGESKINSMENU_OPENFOLDER: { HWND tree = GetControl(Id_SkinsTreeView); - GetRainmeter().OpenSkinFolder(GetTreeSelectionPath(tree)); + Rainmeter::GetInstance().OpenSkinFolder(GetTreeSelectionPath(tree)); } break; default: if (wParam >= ID_CONFIG_FIRST && wParam <= ID_CONFIG_LAST) { - std::map::const_iterator iter = GetRainmeter().GetAllMeterWindows().begin(); + std::map::const_iterator iter = Rainmeter::GetInstance().GetAllMeterWindows().begin(); int index = (int)wParam - ID_CONFIG_FIRST; int i = 0; - for ( ; iter != GetRainmeter().GetAllMeterWindows().end(); ++iter) + for ( ; iter != Rainmeter::GetInstance().GetAllMeterWindows().end(); ++iter) { if (i == index) { @@ -1356,7 +1356,7 @@ INT_PTR DialogManage::TabSkins::OnNotify(WPARAM wParam, LPARAM lParam) case NM_CLICK: if (nm->idFrom == Id_AddMetadataLink) { - std::wstring file = GetRainmeter().GetSkinPath() + m_SkinFolderPath; + std::wstring file = Rainmeter::GetInstance().GetSkinPath() + m_SkinFolderPath; file += L'\\'; file += m_SkinFileName; const WCHAR* str = L"\r\n" // Hack to add below [Rainmeter]. @@ -1586,7 +1586,7 @@ void DialogManage::TabLayouts::Initialize() { HWND item = GetControl(Id_List); ListBox_ResetContent(item); - const std::vector& layouts = GetRainmeter().GetAllLayouts(); + const std::vector& layouts = Rainmeter::GetInstance().GetAllLayouts(); for (size_t i = 0, isize = layouts.size(); i < isize; ++i) { ListBox_AddString(item, layouts[i].c_str()); @@ -1654,7 +1654,7 @@ INT_PTR DialogManage::TabLayouts::OnCommand(WPARAM wParam, LPARAM lParam) item = GetControl(Id_EditButton); EnableWindow(item, TRUE); - const std::vector& layouts = GetRainmeter().GetAllLayouts(); + const std::vector& layouts = Rainmeter::GetInstance().GetAllLayouts(); item = GetControl(Id_List); int sel = ListBox_GetCurSel(item); @@ -1671,7 +1671,7 @@ INT_PTR DialogManage::TabLayouts::OnCommand(WPARAM wParam, LPARAM lParam) Edit_GetText(item, buffer, MAX_PATH); std::wstring layout = buffer; - std::wstring path = GetRainmeter().GetLayoutPath(); + std::wstring path = Rainmeter::GetInstance().GetLayoutPath(); CreateDirectory(path.c_str(), 0); path += layout; @@ -1679,7 +1679,7 @@ INT_PTR DialogManage::TabLayouts::OnCommand(WPARAM wParam, LPARAM lParam) if (alreadyExists) { std::wstring text = GetFormattedString(ID_STR_THEMEALREADYEXISTS, layout.c_str()); - if (GetRainmeter().ShowMessage(m_Window, text.c_str(), MB_ICONWARNING | MB_YESNO) != IDYES) + if (Rainmeter::GetInstance().ShowMessage(m_Window, text.c_str(), MB_ICONWARNING | MB_YESNO) != IDYES) { // Cancel break; @@ -1696,10 +1696,10 @@ INT_PTR DialogManage::TabLayouts::OnCommand(WPARAM wParam, LPARAM lParam) item = GetControl(Id_SaveEmptyThemeCheckBox); if (Button_GetCheck(item) != BST_CHECKED) { - if (!System::CopyFiles(GetRainmeter().GetIniFile(), path)) + if (!System::CopyFiles(Rainmeter::GetInstance().GetIniFile(), path)) { std::wstring text = GetFormattedString(ID_STR_THEMESAVEFAIL, path.c_str()); - GetRainmeter().ShowMessage(m_Window, text.c_str(), MB_OK | MB_ICONERROR); + Rainmeter::GetInstance().ShowMessage(m_Window, text.c_str(), MB_OK | MB_ICONERROR); break; } @@ -1741,7 +1741,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()); - GetRainmeter().ShowMessage(m_Window, text.c_str(), MB_OK | MB_ICONERROR); + Rainmeter::GetInstance().ShowMessage(m_Window, text.c_str(), MB_OK | MB_ICONERROR); break; } @@ -1753,7 +1753,7 @@ INT_PTR DialogManage::TabLayouts::OnCommand(WPARAM wParam, LPARAM lParam) item = GetControl(Id_List); ListBox_AddString(item, layout.c_str()); - GetRainmeter().ScanForLayouts(); + Rainmeter::GetInstance().ScanForLayouts(); } } break; @@ -1762,7 +1762,7 @@ INT_PTR DialogManage::TabLayouts::OnCommand(WPARAM wParam, LPARAM lParam) { HWND item = GetControl(Id_List); int sel = ListBox_GetCurSel(item); - GetRainmeter().LoadLayout(GetRainmeter().m_Layouts[sel]); + Rainmeter::GetInstance().LoadLayout(Rainmeter::GetInstance().m_Layouts[sel]); } break; @@ -1770,13 +1770,13 @@ INT_PTR DialogManage::TabLayouts::OnCommand(WPARAM wParam, LPARAM lParam) { HWND item = GetControl(Id_List); int sel = ListBox_GetCurSel(item); - const std::vector& layouts = GetRainmeter().GetAllLayouts(); + const std::vector& layouts = Rainmeter::GetInstance().GetAllLayouts(); - std::wstring args = L"\"" + GetRainmeter().GetLayoutPath(); + std::wstring args = L"\"" + Rainmeter::GetInstance().GetLayoutPath(); args += layouts[sel]; args += L"\\Rainmeter.ini"; args += L'"'; - CommandHandler::RunFile(GetRainmeter().GetSkinEditor().c_str(), args.c_str()); + CommandHandler::RunFile(Rainmeter::GetInstance().GetSkinEditor().c_str(), args.c_str()); } break; @@ -1784,16 +1784,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&>(GetRainmeter().GetAllLayouts()); + std::vector& layouts = const_cast&>(Rainmeter::GetInstance().GetAllLayouts()); std::wstring text = GetFormattedString(ID_STR_THEMEDELETE, layouts[sel].c_str()); - if (GetRainmeter().ShowMessage(m_Window, text.c_str(), MB_ICONQUESTION | MB_YESNO) != IDYES) + if (Rainmeter::GetInstance().ShowMessage(m_Window, text.c_str(), MB_ICONQUESTION | MB_YESNO) != IDYES) { // Cancel break; } - std::wstring folder = GetRainmeter().GetLayoutPath(); + std::wstring folder = Rainmeter::GetInstance().GetLayoutPath(); folder += layouts[sel]; if (System::RemoveFolder(folder)) @@ -1907,7 +1907,7 @@ void DialogManage::TabSettings::Initialize() // Scan for languages HWND item = GetControl(Id_LanguageDropDownList); - std::wstring files = GetRainmeter().GetPath() + L"Languages\\*.dll"; + std::wstring files = Rainmeter::GetInstance().GetPath() + L"Languages\\*.dll"; WIN32_FIND_DATA fd; HANDLE hSearch = FindFirstFile(files.c_str(), &fd); if (hSearch != INVALID_HANDLE_VALUE) @@ -1932,7 +1932,7 @@ void DialogManage::TabSettings::Initialize() int index = ComboBox_AddString(item, text.c_str()); ComboBox_SetItemData(item, index, (LPARAM)lcid); - if (lcid == GetRainmeter().GetResourceLCID()) + if (lcid == Rainmeter::GetInstance().GetResourceLCID()) { ComboBox_SetCurSel(item, index); } @@ -1944,23 +1944,23 @@ void DialogManage::TabSettings::Initialize() FindClose(hSearch); } - Button_SetCheck(GetControl(Id_CheckForUpdatesCheckBox), !GetRainmeter().GetDisableVersionCheck()); - Button_SetCheck(GetControl(Id_LockSkinsCheckBox), GetRainmeter().GetDisableDragging()); + Button_SetCheck(GetControl(Id_CheckForUpdatesCheckBox), !Rainmeter::GetInstance().GetDisableVersionCheck()); + Button_SetCheck(GetControl(Id_LockSkinsCheckBox), Rainmeter::GetInstance().GetDisableDragging()); Button_SetCheck(GetControl(Id_LogToFileCheckBox), GetLogger().IsLogToFile()); - Button_SetCheck(GetControl(Id_VerboseLoggingCheckbox), GetRainmeter().GetDebug()); + Button_SetCheck(GetControl(Id_VerboseLoggingCheckbox), Rainmeter::GetInstance().GetDebug()); BOOL isLogFile = (_waccess(GetLogger().GetLogFilePath().c_str(), 0) != -1); EnableWindow(GetControl(Id_ShowLogFileButton), isLogFile); EnableWindow(GetControl(Id_DeleteLogFileButton), isLogFile); - Edit_SetText(GetControl(Id_EditorEdit), GetRainmeter().GetSkinEditor().c_str()); + Edit_SetText(GetControl(Id_EditorEdit), Rainmeter::GetInstance().GetSkinEditor().c_str()); - bool iconEnabled = GetRainmeter().GetTrayWindow()->IsTrayIconEnabled(); + bool iconEnabled = Rainmeter::GetInstance().GetTrayWindow()->IsTrayIconEnabled(); Button_SetCheck(GetControl(Id_ShowTrayIconCheckBox), iconEnabled); if (IsWindowsVistaOrGreater()) { - Button_SetCheck(GetControl(Id_UseD2DCheckBox), GetRainmeter().GetUseD2D()); + Button_SetCheck(GetControl(Id_UseD2DCheckBox), Rainmeter::GetInstance().GetUseD2D()); } else { @@ -1995,18 +1995,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 != GetRainmeter().m_ResourceLCID) + if (lcid != Rainmeter::GetInstance().m_ResourceLCID) { WCHAR buffer[16]; _ultow(lcid, buffer, 10); - WritePrivateProfileString(L"Rainmeter", L"Language", buffer, GetRainmeter().GetIniFile().c_str()); + WritePrivateProfileString(L"Rainmeter", L"Language", buffer, Rainmeter::GetInstance().GetIniFile().c_str()); - std::wstring resource = GetRainmeter().GetPath() + L"Languages\\"; + std::wstring resource = Rainmeter::GetInstance().GetPath() + L"Languages\\"; resource += buffer; resource += L".dll"; - FreeLibrary(GetRainmeter().m_ResourceInstance); - GetRainmeter().m_ResourceInstance = LoadLibraryEx(resource.c_str(), nullptr, DONT_RESOLVE_DLL_REFERENCES | LOAD_LIBRARY_AS_DATAFILE); - GetRainmeter().m_ResourceLCID = lcid; + FreeLibrary(Rainmeter::GetInstance().m_ResourceInstance); + Rainmeter::GetInstance().m_ResourceInstance = LoadLibraryEx(resource.c_str(), nullptr, DONT_RESOLVE_DLL_REFERENCES | LOAD_LIBRARY_AS_DATAFILE); + Rainmeter::GetInstance().m_ResourceLCID = lcid; if (DialogAbout::GetDialog()) { @@ -2014,42 +2014,42 @@ INT_PTR DialogManage::TabSettings::OnCommand(WPARAM wParam, LPARAM lParam) SendMessage(DialogAbout::GetDialog()->GetWindow(), WM_CLOSE, 0, 0); if (sel == 0) { - GetRainmeter().DelayedExecuteCommand(L"!About"); + Rainmeter::GetInstance().DelayedExecuteCommand(L"!About"); } else if (sel == 1) { - GetRainmeter().DelayedExecuteCommand(L"!About Skins"); + Rainmeter::GetInstance().DelayedExecuteCommand(L"!About Skins"); } else if (sel == 2) { - GetRainmeter().DelayedExecuteCommand(L"!About Plugins"); + Rainmeter::GetInstance().DelayedExecuteCommand(L"!About Plugins"); } else //if (sel == 3) { - GetRainmeter().DelayedExecuteCommand(L"!About Version"); + Rainmeter::GetInstance().DelayedExecuteCommand(L"!About Version"); } } SendMessage(c_Dialog->GetWindow(), WM_CLOSE, 0, 0); - GetRainmeter().DelayedExecuteCommand(L"!Manage Settings"); + Rainmeter::GetInstance().DelayedExecuteCommand(L"!Manage Settings"); } } break; case Id_CheckForUpdatesCheckBox: - GetRainmeter().SetDisableVersionCheck(!GetRainmeter().GetDisableVersionCheck()); + Rainmeter::GetInstance().SetDisableVersionCheck(!Rainmeter::GetInstance().GetDisableVersionCheck()); break; case Id_LockSkinsCheckBox: - GetRainmeter().SetDisableDragging(!GetRainmeter().GetDisableDragging()); + Rainmeter::GetInstance().SetDisableDragging(!Rainmeter::GetInstance().GetDisableDragging()); break; case Id_ResetStatisticsButton: - GetRainmeter().ResetStats(); + Rainmeter::GetInstance().ResetStats(); break; case Id_ShowLogFileButton: - GetRainmeter().ShowLogFile(); + Rainmeter::GetInstance().ShowLogFile(); break; case Id_DeleteLogFileButton: @@ -2079,7 +2079,7 @@ INT_PTR DialogManage::TabSettings::OnCommand(WPARAM wParam, LPARAM lParam) break; case Id_VerboseLoggingCheckbox: - GetRainmeter().SetDebug(!GetRainmeter().GetDebug()); + Rainmeter::GetInstance().SetDebug(!Rainmeter::GetInstance().GetDebug()); break; case Id_EditorEdit: @@ -2088,7 +2088,7 @@ INT_PTR DialogManage::TabSettings::OnCommand(WPARAM wParam, LPARAM lParam) WCHAR buffer[MAX_PATH]; if (GetWindowText((HWND)lParam, buffer, _countof(buffer)) > 0) { - GetRainmeter().SetSkinEditor(buffer); + Rainmeter::GetInstance().SetSkinEditor(buffer); } } break; @@ -2098,7 +2098,7 @@ INT_PTR DialogManage::TabSettings::OnCommand(WPARAM wParam, LPARAM lParam) WCHAR buffer[MAX_PATH]; buffer[0] = L'\0'; - std::wstring editor = GetRainmeter().GetSkinEditor(); + std::wstring editor = Rainmeter::GetInstance().GetSkinEditor(); editor = editor.substr(0, editor.find_last_of(L"/\\")).c_str(); OPENFILENAME ofn = { sizeof(OPENFILENAME) }; @@ -2122,11 +2122,11 @@ INT_PTR DialogManage::TabSettings::OnCommand(WPARAM wParam, LPARAM lParam) break; case Id_ShowTrayIconCheckBox: - GetRainmeter().GetTrayWindow()->SetTrayIcon(!GetRainmeter().GetTrayWindow()->IsTrayIconEnabled()); + Rainmeter::GetInstance().GetTrayWindow()->SetTrayIcon(!Rainmeter::GetInstance().GetTrayWindow()->IsTrayIconEnabled()); break; case Id_UseD2DCheckBox: - GetRainmeter().SetUseD2D(!GetRainmeter().GetUseD2D()); + Rainmeter::GetInstance().SetUseD2D(!Rainmeter::GetInstance().GetUseD2D()); break; default: diff --git a/Library/Export.cpp b/Library/Export.cpp index 75fa7dea..8e297001 100644 --- a/Library/Export.cpp +++ b/Library/Export.cpp @@ -86,7 +86,7 @@ void* __stdcall RmGet(void* rm, int type) case RMG_SETTINGSFILE: { - return (void*)GetRainmeter().GetDataFile().c_str(); + return (void*)Rainmeter::GetInstance().GetDataFile().c_str(); } case RMG_SKINNAME: @@ -113,7 +113,7 @@ void __stdcall RmExecute(void* skin, LPCWSTR command) if (command) { // WM_RAINMETER_EXECUTE used instead of ExecuteCommand for thread-safety - SendMessage(GetRainmeter().GetWindow(), WM_RAINMETER_EXECUTE, (WPARAM)mw, (LPARAM)command); + SendMessage(Rainmeter::GetInstance().GetWindow(), WM_RAINMETER_EXECUTE, (WPARAM)mw, (LPARAM)command); } } @@ -122,7 +122,7 @@ BOOL LSLog(int level, LPCWSTR unused, LPCWSTR message) NULLCHECK(message); // Ignore Debug messages from plugins unless in debug mode. - if (level != (int)Logger::Level::Debug || GetRainmeter().GetDebug()) + if (level != (int)Logger::Level::Debug || Rainmeter::GetInstance().GetDebug()) { GetLogger().Log((Logger::Level)level, L"", message); } @@ -137,7 +137,7 @@ void __stdcall RmLog(void* rm, int level, LPCWSTR message) MeasurePlugin* measure = (MeasurePlugin*)rm; // Ignore Debug messages from plugins unless in debug mode. - if (level != (int)Logger::Level::Debug || GetRainmeter().GetDebug()) + if (level != (int)Logger::Level::Debug || Rainmeter::GetInstance().GetDebug()) { GetLogger().LogSection((Logger::Level)level, measure, message); } @@ -150,7 +150,7 @@ void RmLogF(void* rm, int level, LPCWSTR format, ...) MeasurePlugin* measure = (MeasurePlugin*)rm; // Ignore Debug messages from plugins unless in debug mode. - if (level != (int)Logger::Level::Debug || GetRainmeter().GetDebug()) + if (level != (int)Logger::Level::Debug || Rainmeter::GetInstance().GetDebug()) { va_list args; va_start(args, format); @@ -166,7 +166,7 @@ LPCWSTR ReadConfigString(LPCWSTR section, LPCWSTR option, LPCWSTR defValue) NULLCHECK(option); NULLCHECK(defValue); - ConfigParser* parser = GetRainmeter().GetCurrentParser(); + ConfigParser* parser = Rainmeter::GetInstance().GetCurrentParser(); if (parser) { return parser->ReadString(section, option, defValue, false).c_str(); @@ -187,7 +187,7 @@ LPCWSTR PluginBridge(LPCWSTR command, LPCWSTR data) if (_wcsicmp(command, L"GetConfig") == 0) { - MeterWindow* meterWindow = GetRainmeter().GetMeterWindowByINI(data); + MeterWindow* meterWindow = Rainmeter::GetInstance().GetMeterWindowByINI(data); if (meterWindow) { g_Buffer = L"\""; @@ -206,7 +206,7 @@ LPCWSTR PluginBridge(LPCWSTR command, LPCWSTR data) { const std::wstring& config = subStrings[0]; - MeterWindow* meterWindow = GetRainmeter().GetMeterWindow(config); + MeterWindow* meterWindow = Rainmeter::GetInstance().GetMeterWindow(config); if (meterWindow) { WCHAR buf1[64]; @@ -226,7 +226,7 @@ LPCWSTR PluginBridge(LPCWSTR command, LPCWSTR data) { const std::wstring& config = subStrings[0]; - MeterWindow* meterWindow = GetRainmeter().GetMeterWindow(config); + MeterWindow* meterWindow = Rainmeter::GetInstance().GetMeterWindow(config); if (meterWindow) { const std::wstring& variable = subStrings[1]; @@ -247,7 +247,7 @@ LPCWSTR PluginBridge(LPCWSTR command, LPCWSTR data) if (subStrings.size() == 3) { - MeterWindow* meterWindow = GetRainmeter().GetMeterWindow(subStrings[0]); + MeterWindow* meterWindow = Rainmeter::GetInstance().GetMeterWindow(subStrings[0]); if (meterWindow) { meterWindow->SetVariable(subStrings[1], subStrings[2]); diff --git a/Library/IfActions.cpp b/Library/IfActions.cpp index 320168e7..0f219a81 100644 --- a/Library/IfActions.cpp +++ b/Library/IfActions.cpp @@ -161,7 +161,7 @@ void IfActions::DoIfActions(Measure& measure, double value) if (!m_EqualCommitted) { m_EqualCommitted = true; // To avoid infinite loop from !Update - GetRainmeter().ExecuteCommand(m_EqualAction.c_str(), measure.GetMeterWindow()); + Rainmeter::GetInstance().ExecuteCommand(m_EqualAction.c_str(), measure.GetMeterWindow()); } } else @@ -178,7 +178,7 @@ void IfActions::DoIfActions(Measure& measure, double value) if (!m_AboveCommitted) { m_AboveCommitted = true; // To avoid infinite loop from !Update - GetRainmeter().ExecuteCommand(m_AboveAction.c_str(), measure.GetMeterWindow()); + Rainmeter::GetInstance().ExecuteCommand(m_AboveAction.c_str(), measure.GetMeterWindow()); } } else @@ -195,7 +195,7 @@ void IfActions::DoIfActions(Measure& measure, double value) if (!m_BelowCommitted) { m_BelowCommitted = true; // To avoid infinite loop from !Update - GetRainmeter().ExecuteCommand(m_BelowAction.c_str(), measure.GetMeterWindow()); + Rainmeter::GetInstance().ExecuteCommand(m_BelowAction.c_str(), measure.GetMeterWindow()); } } else @@ -240,7 +240,7 @@ void IfActions::DoIfActions(Measure& measure, double value) if (m_ConditionMode || !item.tCommitted) { item.tCommitted = true; - GetRainmeter().ExecuteCommand(item.tAction.c_str(), measure.GetMeterWindow()); + Rainmeter::GetInstance().ExecuteCommand(item.tAction.c_str(), measure.GetMeterWindow()); } } else if (result == 0.0f) // "False" @@ -250,7 +250,7 @@ void IfActions::DoIfActions(Measure& measure, double value) if (m_ConditionMode || !item.fCommitted) { item.fCommitted = true; - GetRainmeter().ExecuteCommand(item.fAction.c_str(), measure.GetMeterWindow()); + Rainmeter::GetInstance().ExecuteCommand(item.fAction.c_str(), measure.GetMeterWindow()); } } } @@ -314,7 +314,7 @@ void IfActions::DoIfActions(Measure& measure, double value) if (m_MatchMode || !item.tCommitted) { item.tCommitted = true; - GetRainmeter().ExecuteCommand(item.tAction.c_str(), measure.GetMeterWindow()); + Rainmeter::GetInstance().ExecuteCommand(item.tAction.c_str(), measure.GetMeterWindow()); } } else // Not Match @@ -324,7 +324,7 @@ void IfActions::DoIfActions(Measure& measure, double value) if (m_MatchMode || !item.fCommitted) { item.fCommitted = true; - GetRainmeter().ExecuteCommand(item.fAction.c_str(), measure.GetMeterWindow()); + Rainmeter::GetInstance().ExecuteCommand(item.fAction.c_str(), measure.GetMeterWindow()); } } } diff --git a/Library/Library.vcxproj b/Library/Library.vcxproj index 45306893..53b31838 100644 --- a/Library/Library.vcxproj +++ b/Library/Library.vcxproj @@ -24,7 +24,8 @@ comctl32.lib;Wininet.lib;UxTheme.lib;Winmm.lib;gdiplus.lib;Iphlpapi.lib;shlwapi.lib;d2d1.lib;dwrite.lib;windowscodecs.lib;Version.lib;%(AdditionalDependencies) Winmm.dll;Version.dll;d2d1.dll;dwrite.dll;$(DelayLoadTestDLL) - Exports.def + + diff --git a/Library/Litestep.cpp b/Library/Litestep.cpp index 6e83c537..b832ff26 100644 --- a/Library/Litestep.cpp +++ b/Library/Litestep.cpp @@ -31,7 +31,7 @@ UINT GetUniqueID() WCHAR* GetString(UINT id) { LPWSTR pData; - int len = LoadString(GetRainmeter().GetResourceInstance(), id, (LPWSTR)&pData, 0); + int len = LoadString(Rainmeter::GetInstance().GetResourceInstance(), id, (LPWSTR)&pData, 0); return len ? pData : L""; } diff --git a/Library/Logger.cpp b/Library/Logger.cpp index 4f077ed4..242d12e1 100644 --- a/Library/Logger.cpp +++ b/Library/Logger.cpp @@ -65,7 +65,7 @@ void Logger::StartLogFile() else { const std::wstring text = GetFormattedString(ID_STR_LOGFILECREATEFAIL, filePath); - GetRainmeter().ShowMessage(nullptr, text.c_str(), MB_OK | MB_ICONERROR); + Rainmeter::GetInstance().ShowMessage(nullptr, text.c_str(), MB_OK | MB_ICONERROR); SetLogToFile(false); return; } @@ -85,7 +85,7 @@ void Logger::DeleteLogFile() if (_waccess(filePath, 0) != -1) { const std::wstring text = GetFormattedString(ID_STR_LOGFILEDELETE, filePath); - const int res = GetRainmeter().ShowMessage(nullptr, text.c_str(), MB_YESNO | MB_ICONQUESTION); + const int res = Rainmeter::GetInstance().ShowMessage(nullptr, text.c_str(), MB_YESNO | MB_ICONQUESTION); if (res == IDYES) { SetLogToFile(false); @@ -98,7 +98,7 @@ void Logger::SetLogToFile(bool logToFile) { m_LogToFile = logToFile; WritePrivateProfileString( - L"Rainmeter", L"Logging", logToFile ? L"1" : L"0", GetRainmeter().GetIniFile().c_str()); + L"Rainmeter", L"Logging", logToFile ? L"1" : L"0", Rainmeter::GetInstance().GetIniFile().c_str()); } void Logger::LogInternal(Level level, ULONGLONG timestamp, const WCHAR* source, const WCHAR* msg) diff --git a/Library/Measure.cpp b/Library/Measure.cpp index fb615314..acbe6c29 100644 --- a/Library/Measure.cpp +++ b/Library/Measure.cpp @@ -721,7 +721,7 @@ void Measure::DoChangeAction(bool execute) { if (m_OldValue->IsChanged(newValue, newStringValue)) { - GetRainmeter().ExecuteCommand(m_OnChangeAction.c_str(), m_MeterWindow); + Rainmeter::GetInstance().ExecuteCommand(m_OnChangeAction.c_str(), m_MeterWindow); } } else diff --git a/Library/MeasureNet.cpp b/Library/MeasureNet.cpp index a6fad3ba..8a29ac85 100644 --- a/Library/MeasureNet.cpp +++ b/Library/MeasureNet.cpp @@ -76,7 +76,7 @@ void MeasureNet::UpdateIFTable() logging = true; } - if (GetRainmeter().GetDebug() && logging) + if (Rainmeter::GetInstance().GetDebug() && logging) { LogDebug(L"------------------------------"); LogDebugF(L"* NETWORK-INTERFACE: Count=%i", c_NumOfTables); @@ -169,7 +169,7 @@ void MeasureNet::UpdateIFTable() logging = true; } - if (GetRainmeter().GetDebug() && logging) + if (Rainmeter::GetInstance().GetDebug() && logging) { LogDebug(L"------------------------------"); LogDebugF(L"* NETWORK-INTERFACE: Count=%i", c_NumOfTables); @@ -463,17 +463,17 @@ void MeasureNet::ReadOptions(ConfigParser& parser, const WCHAR* section) if (m_Net == NET_IN) { netName = L"NetInSpeed"; - value = GetRainmeter().GetGlobalOptions().netInSpeed; + value = Rainmeter::GetInstance().GetGlobalOptions().netInSpeed; } else if (m_Net == NET_OUT) { netName = L"NetOutSpeed"; - value = GetRainmeter().GetGlobalOptions().netOutSpeed; + value = Rainmeter::GetInstance().GetGlobalOptions().netOutSpeed; } else // if (m_Net == NET_TOTAL) { netName = L"NetTotalSpeed"; - value = GetRainmeter().GetGlobalOptions().netInSpeed + GetRainmeter().GetGlobalOptions().netOutSpeed; + value = Rainmeter::GetInstance().GetGlobalOptions().netInSpeed + Rainmeter::GetInstance().GetGlobalOptions().netOutSpeed; } double maxValue = parser.ReadFloat(section, L"MaxValue", -1); @@ -491,7 +491,7 @@ void MeasureNet::ReadOptions(ConfigParser& parser, const WCHAR* section) m_Cumulative = parser.ReadBool(section, L"Cumulative", false); if (m_Cumulative) { - GetRainmeter().SetNetworkStatisticsTimer(); + Rainmeter::GetInstance().SetNetworkStatisticsTimer(); } if (maxValue == 0.0) @@ -705,7 +705,7 @@ void MeasureNet::InitializeStatic() } } - if (GetRainmeter().GetDebug()) + if (Rainmeter::GetInstance().GetDebug()) { UpdateIFTable(); } diff --git a/Library/MeasurePlugin.cpp b/Library/MeasurePlugin.cpp index 584780b7..be072c14 100644 --- a/Library/MeasurePlugin.cpp +++ b/Library/MeasurePlugin.cpp @@ -127,15 +127,15 @@ void MeasurePlugin::ReadOptions(ConfigParser& parser, const WCHAR* section) } // First try from program path - std::wstring pluginFile = GetRainmeter().GetPluginPath(); + std::wstring pluginFile = Rainmeter::GetInstance().GetPluginPath(); pluginFile += pluginName; m_Plugin = System::RmLoadLibrary(pluginFile.c_str()); if (!m_Plugin) { - if (GetRainmeter().HasUserPluginPath()) + if (Rainmeter::GetInstance().HasUserPluginPath()) { // Try from settings path - pluginFile = GetRainmeter().GetUserPluginPath(); + pluginFile = Rainmeter::GetInstance().GetUserPluginPath(); pluginFile += pluginName; m_Plugin = System::RmLoadLibrary(pluginFile.c_str()); } diff --git a/Library/Meter.cpp b/Library/Meter.cpp index b1d99acb..68219b13 100644 --- a/Library/Meter.cpp +++ b/Library/Meter.cpp @@ -556,7 +556,7 @@ bool Meter::ReplaceMeasures(std::wstring& str, AUTOSCALE autoScale, double scale void Meter::CreateToolTip(MeterWindow* meterWindow) { HWND hMeterWindow = m_MeterWindow->GetWindow(); - HINSTANCE hInstance = GetRainmeter().GetModuleInstance(); + HINSTANCE hInstance = Rainmeter::GetInstance().GetModuleInstance(); DWORD style = WS_POPUP | TTS_NOPREFIX | TTS_ALWAYSTIP; if (m_ToolTipType) diff --git a/Library/MeterButton.cpp b/Library/MeterButton.cpp index 190f1297..7a7cb687 100644 --- a/Library/MeterButton.cpp +++ b/Library/MeterButton.cpp @@ -258,7 +258,7 @@ bool MeterButton::MouseUp(POINT pos, bool execute) { if (execute && m_Clicked && m_Focus && HitTest2(pos.x, pos.y)) { - GetRainmeter().ExecuteCommand(m_Command.c_str(), m_MeterWindow); + Rainmeter::GetInstance().ExecuteCommand(m_Command.c_str(), m_MeterWindow); } m_State = BUTTON_STATE_NORMAL; m_Clicked = false; diff --git a/Library/MeterString.cpp b/Library/MeterString.cpp index f07848f5..62320fd7 100644 --- a/Library/MeterString.cpp +++ b/Library/MeterString.cpp @@ -668,7 +668,7 @@ void MeterString::EnumerateInstalledFontFamilies() void MeterString::InitializeStatic() { - if (GetRainmeter().GetDebug()) + if (Rainmeter::GetInstance().GetDebug()) { LogDebug(L"------------------------------"); LogDebug(L"* Font families:"); diff --git a/Library/MeterWindow.cpp b/Library/MeterWindow.cpp index a44b3411..901f488f 100644 --- a/Library/MeterWindow.cpp +++ b/Library/MeterWindow.cpp @@ -160,7 +160,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 = GetRainmeter().GetModuleInstance(); + wc.hInstance = Rainmeter::GetInstance().GetModuleInstance(); wc.hCursor = nullptr; // The cursor should be controlled by using SetCursor() when needed. wc.lpszClassName = METERWINDOW_CLASS_NAME; RegisterClassEx(&wc); @@ -179,7 +179,7 @@ MeterWindow::~MeterWindow() if (!m_OnCloseAction.empty()) { - GetRainmeter().ExecuteCommand(m_OnCloseAction.c_str(), this); + Rainmeter::GetInstance().ExecuteCommand(m_OnCloseAction.c_str(), this); } Dispose(false); @@ -188,7 +188,7 @@ MeterWindow::~MeterWindow() if (c_InstanceCount == 0) { - UnregisterClass(METERWINDOW_CLASS_NAME, GetRainmeter().GetModuleInstance()); + UnregisterClass(METERWINDOW_CLASS_NAME, Rainmeter::GetInstance().GetModuleInstance()); if (c_DwmInstance) { @@ -287,7 +287,7 @@ void MeterWindow::Initialize() CW_USEDEFAULT, nullptr, nullptr, - GetRainmeter().GetModuleInstance(), + Rainmeter::GetInstance().GetModuleInstance(), this); setlocale(LC_NUMERIC, "C"); @@ -383,8 +383,8 @@ void MeterWindow::Deactivate() if (m_State == STATE_CLOSING) return; m_State = STATE_CLOSING; - GetRainmeter().RemoveMeterWindow(this); - GetRainmeter().AddUnmanagedMeterWindow(this); + Rainmeter::GetInstance().RemoveMeterWindow(this); + Rainmeter::GetInstance().AddUnmanagedMeterWindow(this); HideFade(); SetTimer(m_Window, TIMER_DEACTIVATE, m_FadeDuration + 50, nullptr); @@ -399,7 +399,7 @@ void MeterWindow::Refresh(bool init, bool all) if (m_State == STATE_CLOSING) return; m_State = STATE_REFRESHING; - GetRainmeter().SetCurrentParser(&m_Parser); + Rainmeter::GetInstance().SetCurrentParser(&m_Parser); LogNoticeF(this, L"Refreshing skin"); @@ -414,7 +414,7 @@ void MeterWindow::Refresh(bool init, bool all) if (!ReadSkin()) { - GetRainmeter().DeactivateSkin(this, -1); + Rainmeter::GetInstance().DeactivateSkin(this, -1); return; } @@ -461,13 +461,13 @@ void MeterWindow::Refresh(bool init, bool all) SetTimer(m_Window, TIMER_MOUSE, INTERVAL_MOUSE, nullptr); - GetRainmeter().SetCurrentParser(nullptr); + Rainmeter::GetInstance().SetCurrentParser(nullptr); m_State = STATE_RUNNING; if (!m_OnRefreshAction.empty()) { - GetRainmeter().ExecuteCommand(m_OnRefreshAction.c_str(), this); + Rainmeter::GetInstance().ExecuteCommand(m_OnRefreshAction.c_str(), this); } } @@ -625,7 +625,7 @@ void MeterWindow::ChangeZPos(ZPOSITION zPos, bool all) break; case ZPOSITION_NORMAL: - if (all || !GetRainmeter().IsNormalStayDesktop()) break; + if (all || !Rainmeter::GetInstance().IsNormalStayDesktop()) break; case ZPOSITION_ONDESKTOP: if (System::GetShowDesktop()) { @@ -676,7 +676,7 @@ void MeterWindow::ChangeZPos(ZPOSITION zPos, bool all) */ void MeterWindow::ChangeSingleZPos(ZPOSITION zPos, bool all) { - if (zPos == ZPOSITION_NORMAL && GetRainmeter().IsNormalStayDesktop() && (!all || System::GetShowDesktop())) + if (zPos == ZPOSITION_NORMAL && Rainmeter::GetInstance().IsNormalStayDesktop() && (!all || System::GetShowDesktop())) { m_WindowZPosition = zPos; @@ -1884,7 +1884,7 @@ void MeterWindow::ReadOptions() const WCHAR* section = m_FolderPath.c_str(); ConfigParser parser; - parser.Initialize(GetRainmeter().GetIniFile(), nullptr, section); + parser.Initialize(Rainmeter::GetInstance().GetIniFile(), nullptr, section); INT writeFlags = 0; auto addWriteFlag = [&](INT flag) @@ -1962,7 +1962,7 @@ void MeterWindow::ReadOptions() */ void MeterWindow::WriteOptions(INT setting) { - const WCHAR* iniFile = GetRainmeter().GetIniFile().c_str(); + const WCHAR* iniFile = Rainmeter::GetInstance().GetIniFile().c_str(); if (*iniFile) { @@ -2063,7 +2063,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()); - GetRainmeter().ShowMessage(m_Window, message.c_str(), MB_OK | MB_ICONEXCLAMATION); + Rainmeter::GetInstance().ShowMessage(m_Window, message.c_str(), MB_OK | MB_ICONEXCLAMATION); return false; } @@ -2076,7 +2076,7 @@ bool MeterWindow::ReadSkin() m_Parser.Initialize(iniFile, this, nullptr, &resourcePath); m_Canvas = Gfx::Canvas::Create( - m_UseD2D && GetRainmeter().GetUseD2D() ? Gfx::Renderer::PreferD2D : Gfx::Renderer::GDIP); + m_UseD2D && Rainmeter::GetInstance().GetUseD2D() ? Gfx::Renderer::PreferD2D : Gfx::Renderer::GDIP); m_Canvas->SetAccurateText(m_Parser.ReadBool(L"Rainmeter", L"AccurateText", false)); // Gotta have some kind of buffer during initialization @@ -2096,7 +2096,7 @@ bool MeterWindow::ReadSkin() } std::wstring text = GetFormattedString(ID_STR_NEWVERSIONREQUIRED, m_FolderPath.c_str(), m_FileName.c_str(), buffer); - GetRainmeter().ShowMessage(m_Window, text.c_str(), MB_OK | MB_ICONEXCLAMATION); + Rainmeter::GetInstance().ShowMessage(m_Window, text.c_str(), MB_OK | MB_ICONEXCLAMATION); return false; } @@ -2234,7 +2234,7 @@ bool MeterWindow::ReadSkin() do { // Try program folder first - std::wstring szFontFile = GetRainmeter().GetPath() + L"Fonts\\"; + std::wstring szFontFile = Rainmeter::GetInstance().GetPath() + L"Fonts\\"; szFontFile += localFont; if (!m_FontCollection->AddFile(szFontFile.c_str())) { @@ -2310,7 +2310,7 @@ bool MeterWindow::ReadSkin() if (m_Meters.empty()) { std::wstring text = GetFormattedString(ID_STR_NOMETERSINSKIN, m_FolderPath.c_str(), m_FileName.c_str()); - GetRainmeter().ShowMessage(m_Window, text.c_str(), MB_OK | MB_ICONEXCLAMATION); + Rainmeter::GetInstance().ShowMessage(m_Window, text.c_str(), MB_OK | MB_ICONEXCLAMATION); return false; } @@ -2794,7 +2794,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 (GetRainmeter().IsRedrawable()) + if (Rainmeter::GetInstance().IsRedrawable()) { Redraw(); } @@ -2805,7 +2805,7 @@ void MeterWindow::Update(bool refresh) if (!m_OnUpdateAction.empty()) { - GetRainmeter().ExecuteCommand(m_OnUpdateAction.c_str(), this); + Rainmeter::GetInstance().ExecuteCommand(m_OnUpdateAction.c_str(), this); } } @@ -2862,7 +2862,7 @@ LRESULT MeterWindow::OnTimer(UINT uMsg, WPARAM wParam, LPARAM lParam) break; case TIMER_MOUSE: - if (!GetRainmeter().IsMenuActive() && !m_Dragging) + if (!Rainmeter::GetInstance().IsMenuActive() && !m_Dragging) { ShowWindowIfAppropriate(); @@ -2967,7 +2967,7 @@ LRESULT MeterWindow::OnTimer(UINT uMsg, WPARAM wParam, LPARAM lParam) if (m_FadeStartTime == 0) { KillTimer(m_Window, TIMER_DEACTIVATE); - GetRainmeter().RemoveUnmanagedMeterWindow(this); + Rainmeter::GetInstance().RemoveUnmanagedMeterWindow(this); delete this; } break; @@ -3392,7 +3392,7 @@ LRESULT MeterWindow::OnCommand(UINT uMsg, WPARAM wParam, LPARAM lParam) switch (wParam) { case IDM_SKIN_EDITSKIN: - GetRainmeter().EditSkinFile(m_FolderPath, m_FileName); + Rainmeter::GetInstance().EditSkinFile(m_FolderPath, m_FileName); break; case IDM_SKIN_REFRESH: @@ -3400,7 +3400,7 @@ LRESULT MeterWindow::OnCommand(UINT uMsg, WPARAM wParam, LPARAM lParam) break; case IDM_SKIN_OPENSKINSFOLDER: - GetRainmeter().OpenSkinFolder(m_FolderPath); + Rainmeter::GetInstance().OpenSkinFolder(m_FolderPath); break; case IDM_SKIN_MANAGESKIN: @@ -3466,7 +3466,7 @@ LRESULT MeterWindow::OnCommand(UINT uMsg, WPARAM wParam, LPARAM lParam) case IDM_CLOSESKIN: if (m_State != STATE_CLOSING) { - GetRainmeter().DeactivateSkin(this, -1); + Rainmeter::GetInstance().DeactivateSkin(this, -1); } break; @@ -3556,13 +3556,13 @@ LRESULT MeterWindow::OnCommand(UINT uMsg, WPARAM wParam, LPARAM lParam) if (!action.empty()) { - GetRainmeter().ExecuteCommand(action.c_str(), this); + Rainmeter::GetInstance().ExecuteCommand(action.c_str(), this); } } else { // Forward to tray window, which handles all the other commands - HWND tray = GetRainmeter().GetTrayWindow()->GetWindow(); + HWND tray = Rainmeter::GetInstance().GetTrayWindow()->GetWindow(); if (wParam == IDM_QUIT) { @@ -3780,7 +3780,7 @@ LRESULT MeterWindow::OnExitSizeMove(UINT uMsg, WPARAM wParam, LPARAM lParam) */ LRESULT MeterWindow::OnNcHitTest(UINT uMsg, WPARAM wParam, LPARAM lParam) { - if (m_WindowDraggable && !GetRainmeter().GetDisableDragging()) + if (m_WindowDraggable && !Rainmeter::GetInstance().GetDisableDragging()) { POINT pos; pos.x = GET_X_LPARAM(lParam); @@ -3820,7 +3820,7 @@ LRESULT MeterWindow::OnWindowPosChanging(UINT uMsg, WPARAM wParam, LPARAM lParam if (m_State != STATE_REFRESHING) { - if (m_WindowZPosition == ZPOSITION_NORMAL && GetRainmeter().IsNormalStayDesktop() && System::GetShowDesktop()) + if (m_WindowZPosition == ZPOSITION_NORMAL && Rainmeter::GetInstance().IsNormalStayDesktop() && System::GetShowDesktop()) { if (!(wp->flags & (SWP_NOOWNERZORDER | SWP_NOACTIVATE))) { @@ -3865,7 +3865,7 @@ LRESULT MeterWindow::OnWindowPosChanging(UINT uMsg, WPARAM wParam, LPARAM lParam } // Snap to other windows - for (auto iter = GetRainmeter().GetAllMeterWindows().cbegin(); iter != GetRainmeter().GetAllMeterWindows().cend(); ++iter) + for (auto iter = Rainmeter::GetInstance().GetAllMeterWindows().cbegin(); iter != Rainmeter::GetInstance().GetAllMeterWindows().cend(); ++iter) { if ((*iter).second != this) { @@ -4348,14 +4348,14 @@ LRESULT MeterWindow::OnSetWindowFocus(UINT uMsg, WPARAM wParam, LPARAM lParam) case WM_SETFOCUS: if (!m_OnFocusAction.empty()) { - GetRainmeter().ExecuteCommand(m_OnFocusAction.c_str(), this); + Rainmeter::GetInstance().ExecuteCommand(m_OnFocusAction.c_str(), this); } break; case WM_KILLFOCUS: if (!m_OnUnfocusAction.empty()) { - GetRainmeter().ExecuteCommand(m_OnUnfocusAction.c_str(), this); + Rainmeter::GetInstance().ExecuteCommand(m_OnUnfocusAction.c_str(), this); } break; } @@ -4398,7 +4398,7 @@ LRESULT MeterWindow::OnContextMenu(UINT uMsg, WPARAM wParam, LPARAM lParam) } } - GetRainmeter().ShowContextMenu(pos, this); + Rainmeter::GetInstance().ShowContextMenu(pos, this); return 0; } @@ -4439,7 +4439,7 @@ bool MeterWindow::DoAction(int x, int y, MOUSEACTION action, bool test) { if (!test) { - GetRainmeter().ExecuteCommand(command.c_str(), this); + Rainmeter::GetInstance().ExecuteCommand(command.c_str(), this); } return true; @@ -4475,7 +4475,7 @@ bool MeterWindow::DoMoveAction(int x, int y, MOUSEACTION action) if (!m_Mouse.GetOverAction().empty()) { UINT currCounter = m_MouseMoveCounter; - GetRainmeter().ExecuteCommand(m_Mouse.GetOverAction().c_str(), this); + Rainmeter::GetInstance().ExecuteCommand(m_Mouse.GetOverAction().c_str(), this); return (currCounter == m_MouseMoveCounter); } } @@ -4512,7 +4512,7 @@ bool MeterWindow::DoMoveAction(int x, int y, MOUSEACTION action) if (!mouse.GetOverAction().empty()) { UINT currCounter = m_MouseMoveCounter; - GetRainmeter().ExecuteCommand(mouse.GetOverAction().c_str(), this); + Rainmeter::GetInstance().ExecuteCommand(mouse.GetOverAction().c_str(), this); return (currCounter == m_MouseMoveCounter); } } @@ -4538,7 +4538,7 @@ bool MeterWindow::DoMoveAction(int x, int y, MOUSEACTION action) const Mouse& mouse = (*j)->GetMouse(); if (!mouse.GetLeaveAction().empty()) { - GetRainmeter().ExecuteCommand(mouse.GetLeaveAction().c_str(), this); + Rainmeter::GetInstance().ExecuteCommand(mouse.GetLeaveAction().c_str(), this); return true; } } @@ -4561,7 +4561,7 @@ bool MeterWindow::DoMoveAction(int x, int y, MOUSEACTION action) if (!m_Mouse.GetOverAction().empty()) { UINT currCounter = m_MouseMoveCounter; - GetRainmeter().ExecuteCommand(m_Mouse.GetOverAction().c_str(), this); + Rainmeter::GetInstance().ExecuteCommand(m_Mouse.GetOverAction().c_str(), this); return (currCounter == m_MouseMoveCounter); } } @@ -4581,7 +4581,7 @@ bool MeterWindow::DoMoveAction(int x, int y, MOUSEACTION action) if (!m_Mouse.GetLeaveAction().empty()) { - GetRainmeter().ExecuteCommand(m_Mouse.GetLeaveAction().c_str(), this); + Rainmeter::GetInstance().ExecuteCommand(m_Mouse.GetLeaveAction().c_str(), this); return true; } } @@ -4658,7 +4658,7 @@ LRESULT MeterWindow::OnWake(UINT uMsg, WPARAM wParam, LPARAM lParam) { if (wParam == PBT_APMRESUMEAUTOMATIC && !m_OnWakeAction.empty()) { - GetRainmeter().ExecuteCommand(m_OnWakeAction.c_str(), this); + Rainmeter::GetInstance().ExecuteCommand(m_OnWakeAction.c_str(), this); } return 0; @@ -4783,10 +4783,10 @@ LRESULT MeterWindow::OnCopyData(UINT uMsg, WPARAM wParam, LPARAM lParam) if (pCopyDataStruct && (pCopyDataStruct->dwData == 1) && (pCopyDataStruct->cbData > 0)) { - if (GetRainmeter().HasMeterWindow(this)) + if (Rainmeter::GetInstance().HasMeterWindow(this)) { const WCHAR* command = (const WCHAR*)pCopyDataStruct->lpData; - GetRainmeter().ExecuteCommand(command, this); + Rainmeter::GetInstance().ExecuteCommand(command, this); } else { @@ -4841,8 +4841,8 @@ void MeterWindow::MakePathAbsolute(std::wstring& path) else { std::wstring absolute; - absolute.reserve(GetRainmeter().GetSkinPath().size() + m_FolderPath.size() + 1 + path.size()); - absolute = GetRainmeter().GetSkinPath(); + absolute.reserve(Rainmeter::GetInstance().GetSkinPath().size() + m_FolderPath.size() + 1 + path.size()); + absolute = Rainmeter::GetInstance().GetSkinPath(); absolute += m_FolderPath; absolute += L'\\'; absolute += path; @@ -4852,7 +4852,7 @@ void MeterWindow::MakePathAbsolute(std::wstring& path) std::wstring MeterWindow::GetFilePath() { - std::wstring file = GetRainmeter().GetSkinPath() + m_FolderPath; + std::wstring file = Rainmeter::GetInstance().GetSkinPath() + m_FolderPath; file += L'\\'; file += m_FileName; return file; @@ -4871,7 +4871,7 @@ std::wstring MeterWindow::GetRootName() std::wstring MeterWindow::GetRootPath() { - std::wstring path = GetRainmeter().GetSkinPath(); + std::wstring path = Rainmeter::GetInstance().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 68bc5084..ae7b8720 100644 --- a/Library/Rainmeter.cpp +++ b/Library/Rainmeter.cpp @@ -47,50 +47,8 @@ enum INTERVAL */ int RainmeterMain(LPWSTR cmdLine) { - // Avoid loading a dll from current directory - SetDllDirectory(L""); - - const WCHAR* layout = nullptr; - - if (cmdLine[0] == L'!' || cmdLine[0] == L'[') - { - HWND wnd = FindWindow(RAINMETER_CLASS_NAME, RAINMETER_WINDOW_NAME); - if (wnd) - { - // Deliver bang to existing Rainmeter instance - COPYDATASTRUCT cds; - cds.dwData = 1; - cds.cbData = (DWORD)((wcslen(cmdLine) + 1) * sizeof(WCHAR)); - cds.lpData = (PVOID)cmdLine; - SendMessage(wnd, WM_COPYDATA, 0, (LPARAM)&cds); - return 0; - } - - // Disallow everything except !LoadLayout. - if (_wcsnicmp(cmdLine, L"!LoadLayout ", 12) == 0) - { - layout = cmdLine + 12; // Skip "!LoadLayout ". - } - else - { - return 1; - } - } - else if (cmdLine[0] == L'"') - { - // Strip quotes - ++cmdLine; - WCHAR* pos = wcsrchr(cmdLine, L'"'); - if (pos) - { - *pos = L'\0'; - } - } - - const WCHAR* iniFile = (*cmdLine && !layout) ? cmdLine : nullptr; - - auto& rainmeter = GetRainmeter(); - int ret = rainmeter.Initialize(iniFile, layout); + auto& rainmeter = Rainmeter::GetInstance(); + int ret = rainmeter.Initialize(nullptr, nullptr); if (ret == 0) { ret = rainmeter.MessagePump(); @@ -100,6 +58,31 @@ int RainmeterMain(LPWSTR cmdLine) return ret; } +/* +** Initializes Rainmeter. +** +*/ +void* Rainmeter_Initialize() +{ + int res = Rainmeter::GetInstance().Initialize(nullptr, nullptr); + + // Success? + if (res == 0) + return &Rainmeter::GetInstance(); + + return nullptr; +} + +/* +** Finalizes Rainmeter. +** +*/ +void Rainmeter_Finalize(void* ptr) +{ + Rainmeter* rainmeter = (Rainmeter*)ptr; + rainmeter->Finalize(); +} + /* ** Constructor ** @@ -205,12 +188,6 @@ int Rainmeter::Initialize(LPCWSTR iniPath, LPCWSTR layout) } } - if (IsAlreadyRunning()) - { - // Instance already running with same .ini file - return 1; - } - WNDCLASS wc = {0}; wc.lpfnWndProc = (WNDPROC)MainWndProc; wc.hInstance = m_Instance; @@ -441,65 +418,6 @@ void Rainmeter::Finalize() if (m_Mutex) ReleaseMutex(m_Mutex); } -bool Rainmeter::IsAlreadyRunning() -{ - typedef struct - { - ULONG i[2]; - ULONG buf[4]; - unsigned char in[64]; - unsigned char digest[16]; - } MD5_CTX; - - typedef void (WINAPI * FPMD5INIT)(MD5_CTX* context); - typedef void (WINAPI * FPMD5UPDATE)(MD5_CTX* context, const unsigned char* input, unsigned int inlen); - typedef void (WINAPI * FPMD5FINAL)(MD5_CTX* context); - - bool alreadyRunning = false; - - // Create MD5 digest from command line - HMODULE cryptDll = System::RmLoadLibrary(L"cryptdll.dll"); - if (cryptDll) - { - FPMD5INIT MD5Init = (FPMD5INIT)GetProcAddress(cryptDll, "MD5Init"); - FPMD5UPDATE MD5Update = (FPMD5UPDATE)GetProcAddress(cryptDll, "MD5Update"); - FPMD5FINAL MD5Final = (FPMD5FINAL)GetProcAddress(cryptDll, "MD5Final"); - if (MD5Init && MD5Update && MD5Final) - { - std::wstring data = m_IniFile; - _wcsupr(&data[0]); - - MD5_CTX ctx = {0}; - MD5Init(&ctx); - MD5Update(&ctx, (LPBYTE)&data[0], (UINT)data.length() * sizeof(WCHAR)); - MD5Final(&ctx); - FreeLibrary(cryptDll); - - // Convert MD5 digest to mutex string (e.g. "Rainmeter0123456789abcdef0123456789abcdef") - const WCHAR hexChars[] = L"0123456789abcdef"; - WCHAR mutexName[64] = L"Rainmeter"; - WCHAR* pos = mutexName + (_countof(L"Rainmeter") - 1); - for (size_t i = 0; i < 16; ++i) - { - *(pos++) = hexChars[ctx.digest[i] >> 4]; - *(pos++) = hexChars[ctx.digest[i] & 0xF]; - } - *pos = L'\0'; - - m_Mutex = CreateMutex(nullptr, FALSE, mutexName); - if (GetLastError() == ERROR_ALREADY_EXISTS) - { - alreadyRunning = true; - m_Mutex = nullptr; - } - } - - FreeLibrary(cryptDll); - } - - return alreadyRunning; -} - int Rainmeter::MessagePump() { MSG msg; @@ -539,7 +457,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)) { - GetRainmeter().DelayedExecuteCommand(data); + Rainmeter::GetInstance().DelayedExecuteCommand(data); } } } @@ -550,12 +468,12 @@ LRESULT CALLBACK Rainmeter::MainWndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPA { MeasureNet::UpdateIFTable(); MeasureNet::UpdateStats(); - GetRainmeter().WriteStats(false); + Rainmeter::GetInstance().WriteStats(false); } break; case WM_RAINMETER_DELAYED_REFRESH_ALL: - GetRainmeter().RefreshAll(); + Rainmeter::GetInstance().RefreshAll(); break; case WM_RAINMETER_DELAYED_EXECUTE: @@ -563,15 +481,15 @@ LRESULT CALLBACK Rainmeter::MainWndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPA { // Execute bang WCHAR* bang = (WCHAR*)lParam; - GetRainmeter().ExecuteCommand(bang, nullptr); + Rainmeter::GetInstance().ExecuteCommand(bang, nullptr); free(bang); // _wcsdup() } break; case WM_RAINMETER_EXECUTE: - if (GetRainmeter().HasMeterWindow((MeterWindow*)wParam)) + if (Rainmeter::GetInstance().HasMeterWindow((MeterWindow*)wParam)) { - GetRainmeter().ExecuteCommand((const WCHAR*)lParam, (MeterWindow*)wParam); + Rainmeter::GetInstance().ExecuteCommand((const WCHAR*)lParam, (MeterWindow*)wParam); } break; diff --git a/Library/Rainmeter.h b/Library/Rainmeter.h index c19caf6f..ace6a09b 100644 --- a/Library/Rainmeter.h +++ b/Library/Rainmeter.h @@ -66,7 +66,6 @@ public: int Initialize(LPCWSTR iniPath, LPCWSTR layout); void Finalize(); - bool IsAlreadyRunning(); int MessagePump(); void SetNetworkStatisticsTimer(); @@ -273,15 +272,14 @@ private: GlobalOptions m_GlobalOptions; }; -// Convenience function. -inline Rainmeter& GetRainmeter() { return Rainmeter::GetInstance(); } - #ifdef LIBRARY_EXPORTS -#define EXPORT_PLUGIN EXTERN_C +#define EXPORT_PLUGIN EXTERN_C __declspec(dllexport) #else #define EXPORT_PLUGIN EXTERN_C __declspec(dllimport) #endif EXPORT_PLUGIN int RainmeterMain(LPWSTR cmdLine); +EXPORT_PLUGIN void* Rainmeter_Initialize(); +EXPORT_PLUGIN void Rainmeter_Finalize(void* ptr); #endif diff --git a/Library/Section.cpp b/Library/Section.cpp index 6b7a879c..fc3013e3 100644 --- a/Library/Section.cpp +++ b/Library/Section.cpp @@ -82,6 +82,6 @@ void Section::DoUpdateAction() { if (!m_OnUpdateAction.empty()) { - GetRainmeter().ExecuteCommand(m_OnUpdateAction.c_str(), m_MeterWindow); + Rainmeter::GetInstance().ExecuteCommand(m_OnUpdateAction.c_str(), m_MeterWindow); } } diff --git a/Library/System.cpp b/Library/System.cpp index 3b4341c4..7de52d9b 100644 --- a/Library/System.cpp +++ b/Library/System.cpp @@ -158,7 +158,7 @@ BOOL CALLBACK MyInfoEnumProc(HMONITOR hMonitor, HDC hdcMonitor, LPRECT lprcMonit info.cbSize = sizeof(MONITORINFOEX); GetMonitorInfo(hMonitor, &info); - if (GetRainmeter().GetDebug()) + if (Rainmeter::GetInstance().GetDebug()) { LogDebug(info.szDevice); LogDebugF(L" Flags : %s(0x%08X)", (info.dwFlags & MONITORINFOF_PRIMARY) ? L"PRIMARY " : L"", info.dwFlags); @@ -240,7 +240,7 @@ size_t System::GetMonitorCount() void System::SetMultiMonitorInfo() { std::vector& monitors = c_Monitors.monitors; - bool logging = GetRainmeter().GetDebug(); + bool logging = Rainmeter::GetInstance().GetDebug(); c_Monitors.vsT = GetSystemMetrics(SM_YVIRTUALSCREEN); c_Monitors.vsL = GetSystemMetrics(SM_XVIRTUALSCREEN); @@ -528,7 +528,7 @@ void System::UpdateWorkareaInfo() (*iter).work = info.rcWork; - if (GetRainmeter().GetDebug()) + if (Rainmeter::GetInstance().GetDebug()) { LogDebugF(L"WorkArea@%i : L=%i, T=%i, R=%i, B=%i (W=%i, H=%i)", i, @@ -633,7 +633,7 @@ HWND System::GetBackmostTopWindow() // Skip all ZPOSITION_ONDESKTOP, ZPOSITION_BOTTOM, and ZPOSITION_NORMAL windows while (winPos = ::GetNextWindow(winPos, GW_HWNDPREV)) { - MeterWindow* wnd = GetRainmeter().GetMeterWindow(winPos); + MeterWindow* wnd = Rainmeter::GetInstance().GetMeterWindow(winPos); if (!wnd || (wnd->GetWindowZPosition() != ZPOSITION_NORMAL && wnd->GetWindowZPosition() != ZPOSITION_ONDESKTOP && @@ -666,7 +666,7 @@ bool System::BelongToSameProcess(HWND hwndA, HWND hwndB) */ BOOL CALLBACK MyEnumWindowsProc(HWND hwnd, LPARAM lParam) { - bool logging = GetRainmeter().GetDebug() && DEBUG_VERBOSE; + bool logging = Rainmeter::GetInstance().GetDebug() && DEBUG_VERBOSE; const int classLen = _countof(METERWINDOW_CLASS_NAME) + (DEBUG_VERBOSE ? 32 : 1); WCHAR className[classLen]; MeterWindow* Window; @@ -674,11 +674,11 @@ BOOL CALLBACK MyEnumWindowsProc(HWND hwnd, LPARAM lParam) if (GetClassName(hwnd, className, classLen) > 0 && wcscmp(className, METERWINDOW_CLASS_NAME) == 0 && - (Window = GetRainmeter().GetMeterWindow(hwnd))) + (Window = Rainmeter::GetInstance().GetMeterWindow(hwnd))) { ZPOSITION zPos = Window->GetWindowZPosition(); if (zPos == ZPOSITION_ONDESKTOP || - (zPos == ZPOSITION_NORMAL && GetRainmeter().IsNormalStayDesktop()) || + (zPos == ZPOSITION_NORMAL && Rainmeter::GetInstance().IsNormalStayDesktop()) || zPos == ZPOSITION_ONBOTTOM) { if (lParam) @@ -717,7 +717,7 @@ BOOL CALLBACK MyEnumWindowsProc(HWND hwnd, LPARAM lParam) */ void System::ChangeZPosInOrder() { - bool logging = GetRainmeter().GetDebug() && DEBUG_VERBOSE; + bool logging = Rainmeter::GetInstance().GetDebug() && DEBUG_VERBOSE; std::vector windowsInZOrder; if (logging) LogDebug(L"1: ----- BEFORE -----"); @@ -738,7 +738,7 @@ void System::ChangeZPosInOrder() } }; - if (GetRainmeter().IsNormalStayDesktop()) + if (Rainmeter::GetInstance().IsNormalStayDesktop()) { resetZPos(ZPOSITION_NORMAL); } @@ -765,7 +765,7 @@ void System::ChangeZPosInOrder() */ void System::PrepareHelperWindow(HWND WorkerW) { - bool logging = GetRainmeter().GetDebug() && DEBUG_VERBOSE; + bool logging = Rainmeter::GetInstance().GetDebug() && DEBUG_VERBOSE; SetWindowPos(c_Window, HWND_BOTTOM, 0, 0, 0, 0, ZPOS_FLAGS); // always on bottom @@ -848,7 +848,7 @@ bool System::CheckDesktopState(HWND WorkerW) { c_ShowDesktop = !c_ShowDesktop; - if (GetRainmeter().GetDebug()) + if (Rainmeter::GetInstance().GetDebug()) { LogDebugF(L"System: \"Show %s\" has been detected.", c_ShowDesktop ? L"desktop" : L"open windows"); @@ -943,10 +943,10 @@ LRESULT CALLBACK System::WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lPa case TIMER_RESUME: KillTimer(hWnd, TIMER_RESUME); - if (GetRainmeter().IsRedrawable()) + if (Rainmeter::GetInstance().IsRedrawable()) { - std::map::const_iterator iter = GetRainmeter().GetAllMeterWindows().begin(); - for ( ; iter != GetRainmeter().GetAllMeterWindows().end(); ++iter) + std::map::const_iterator iter = Rainmeter::GetInstance().GetAllMeterWindows().begin(); + for ( ; iter != Rainmeter::GetInstance().GetAllMeterWindows().end(); ++iter) { (*iter).second->RedrawWindow(); } @@ -970,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 = GetRainmeter().GetAllMeterWindows().begin(); - for ( ; iter != GetRainmeter().GetAllMeterWindows().end(); ++iter) + std::map::const_iterator iter = Rainmeter::GetInstance().GetAllMeterWindows().begin(); + for ( ; iter != Rainmeter::GetInstance().GetAllMeterWindows().end(); ++iter) { PostMessage((*iter).second->GetWindow(), WM_METERWINDOW_DELAYED_MOVE, (WPARAM)uMsg, (LPARAM)0); } @@ -1147,7 +1147,7 @@ void System::SetWallpaper(const std::wstring& wallpaper, const std::wstring& sty Bitmap bitmap(wallpaper.c_str()); if (bitmap.GetLastStatus() == Ok) { - std::wstring file = GetRainmeter().GetSettingsPath() + L"Wallpaper.bmp"; + std::wstring file = Rainmeter::GetInstance().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 9ae6f355..5f79cd26 100644 --- a/Library/TrayWindow.cpp +++ b/Library/TrayWindow.cpp @@ -87,7 +87,7 @@ void TrayWindow::Initialize() { WNDCLASS wc = {0}; wc.lpfnWndProc = (WNDPROC)WndProc; - wc.hInstance = GetRainmeter().GetModuleInstance(); + wc.hInstance = Rainmeter::GetInstance().GetModuleInstance(); wc.lpszClassName = L"RainmeterTrayClass"; wc.hIcon = GetIcon(IDI_RAINMETER); @@ -337,7 +337,7 @@ void TrayWindow::SetTrayIcon(bool enabled) m_IconEnabled = enabled; // Save to Rainmeter.ini. - const std::wstring& iniFile = GetRainmeter().GetIniFile(); + const std::wstring& iniFile = Rainmeter::GetInstance().GetIniFile(); WritePrivateProfileString(L"Rainmeter", L"TrayIcon", enabled ? nullptr : L"0", iniFile.c_str()); } @@ -370,8 +370,8 @@ void TrayWindow::ReadOptions(ConfigParser& parser) if (!measureName.empty()) { - ConfigParser* oldParser = GetRainmeter().GetCurrentParser(); - GetRainmeter().SetCurrentParser(&parser); + ConfigParser* oldParser = Rainmeter::GetInstance().GetCurrentParser(); + Rainmeter::GetInstance().SetCurrentParser(&parser); m_Measure = Measure::Create(measureName.c_str(), nullptr, L"TrayMeasure"); if (m_Measure) @@ -379,7 +379,7 @@ void TrayWindow::ReadOptions(ConfigParser& parser) m_Measure->ReadOptions(parser); } - GetRainmeter().SetCurrentParser(oldParser); + Rainmeter::GetInstance().SetCurrentParser(oldParser); } const WCHAR* type = parser.ReadString(L"TrayMeasure", L"TrayMeter", m_Measure ? L"HISTOGRAM" : L"NONE").c_str(); @@ -402,7 +402,7 @@ void TrayWindow::ReadOptions(ConfigParser& parser) // Load the bitmaps if defined if (!imageName.empty()) { - imageName.insert(0, GetRainmeter().GetSkinPath()); + imageName.insert(0, Rainmeter::GetInstance().GetSkinPath()); const WCHAR* imagePath = imageName.c_str(); if (_wcsicmp(imagePath + (imageName.size() - 4), L".ico") == 0) { @@ -457,7 +457,7 @@ void TrayWindow::ReadOptions(ConfigParser& parser) LRESULT CALLBACK TrayWindow::WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { - TrayWindow* tray = GetRainmeter().GetTrayWindow(); + TrayWindow* tray = Rainmeter::GetInstance().GetTrayWindow(); switch (uMsg) { @@ -481,11 +481,11 @@ LRESULT CALLBACK TrayWindow::WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM break; case IDM_REFRESH: - PostMessage(GetRainmeter().GetWindow(), WM_RAINMETER_DELAYED_REFRESH_ALL, (WPARAM)nullptr, (LPARAM)nullptr); + PostMessage(Rainmeter::GetInstance().GetWindow(), WM_RAINMETER_DELAYED_REFRESH_ALL, (WPARAM)nullptr, (LPARAM)nullptr); break; case IDM_SHOWLOGFILE: - GetRainmeter().ShowLogFile(); + Rainmeter::GetInstance().ShowLogFile(); break; case IDM_STARTLOG: @@ -501,15 +501,15 @@ LRESULT CALLBACK TrayWindow::WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM break; case IDM_DEBUGLOG: - GetRainmeter().SetDebug(!GetRainmeter().GetDebug()); + Rainmeter::GetInstance().SetDebug(!Rainmeter::GetInstance().GetDebug()); break; case IDM_DISABLEDRAG: - GetRainmeter().SetDisableDragging(!GetRainmeter().GetDisableDragging()); + Rainmeter::GetInstance().SetDisableDragging(!Rainmeter::GetInstance().GetDisableDragging()); break; case IDM_EDITCONFIG: - GetRainmeter().EditSettings(); + Rainmeter::GetInstance().EditSettings(); break; case IDM_QUIT: @@ -517,7 +517,7 @@ LRESULT CALLBACK TrayWindow::WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM break; case IDM_OPENSKINSFOLDER: - GetRainmeter().OpenSkinFolder(); + Rainmeter::GetInstance().OpenSkinFolder(); break; default: @@ -528,21 +528,21 @@ LRESULT CALLBACK TrayWindow::WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM { int pos = mID - ID_THEME_FIRST; - const std::vector& layouts = GetRainmeter().GetAllLayouts(); + const std::vector& layouts = Rainmeter::GetInstance().GetAllLayouts(); if (pos >= 0 && pos < (int)layouts.size()) { - GetRainmeter().LoadLayout(layouts[pos]); + Rainmeter::GetInstance().LoadLayout(layouts[pos]); } } else if (mID >= ID_CONFIG_FIRST && mID <= ID_CONFIG_LAST) { - GetRainmeter().ToggleSkinWithID(mID); + Rainmeter::GetInstance().ToggleSkinWithID(mID); } else { // Forward the message to correct window int index = (int)(wParam >> 16); - const std::map& windows = GetRainmeter().GetAllMeterWindows(); + const std::map& windows = Rainmeter::GetInstance().GetAllMeterWindows(); if (index < (int)windows.size()) { @@ -573,19 +573,19 @@ LRESULT CALLBACK TrayWindow::WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM switch (uMouseMsg) { case WM_MBUTTONDOWN: - bang = GetRainmeter().GetTrayExecuteM().c_str(); + bang = Rainmeter::GetInstance().GetTrayExecuteM().c_str(); break; case WM_RBUTTONDOWN: - bang = GetRainmeter().GetTrayExecuteR().c_str(); + bang = Rainmeter::GetInstance().GetTrayExecuteR().c_str(); break; case WM_MBUTTONDBLCLK: - bang = GetRainmeter().GetTrayExecuteDM().c_str(); + bang = Rainmeter::GetInstance().GetTrayExecuteDM().c_str(); break; case WM_RBUTTONDBLCLK: - bang = GetRainmeter().GetTrayExecuteDR().c_str(); + bang = Rainmeter::GetInstance().GetTrayExecuteDR().c_str(); break; default: @@ -596,7 +596,7 @@ LRESULT CALLBACK TrayWindow::WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM if (*bang && !IsCtrlKeyDown()) // Ctrl is pressed, so only run default action { - GetRainmeter().ExecuteCommand(bang, nullptr); + Rainmeter::GetInstance().ExecuteCommand(bang, nullptr); tray->m_TrayContextMenuEnabled = (uMouseMsg != WM_RBUTTONDOWN); break; } @@ -612,7 +612,7 @@ LRESULT CALLBACK TrayWindow::WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM if (tray->m_TrayContextMenuEnabled) { POINT pos = System::GetCursorPosition(); - GetRainmeter().ShowContextMenu(pos, nullptr); + Rainmeter::GetInstance().ShowContextMenu(pos, nullptr); } break; @@ -656,19 +656,19 @@ LRESULT CALLBACK TrayWindow::WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM switch (wParam) { case RAINMETER_QUERY_ID_SKINS_PATH: - sendCopyData(GetRainmeter().GetSkinPath()); + sendCopyData(Rainmeter::GetInstance().GetSkinPath()); return 0; case RAINMETER_QUERY_ID_SETTINGS_PATH: - sendCopyData(GetRainmeter().GetSettingsPath()); + sendCopyData(Rainmeter::GetInstance().GetSettingsPath()); return 0; case RAINMETER_QUERY_ID_PLUGINS_PATH: - sendCopyData(GetRainmeter().GetPluginPath()); + sendCopyData(Rainmeter::GetInstance().GetPluginPath()); return 0; case RAINMETER_QUERY_ID_PROGRAM_PATH: - sendCopyData(GetRainmeter().GetPath()); + sendCopyData(Rainmeter::GetInstance().GetPath()); return 0; case RAINMETER_QUERY_ID_LOG_PATH: @@ -676,12 +676,12 @@ LRESULT CALLBACK TrayWindow::WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM return 0; case RAINMETER_QUERY_ID_CONFIG_EDITOR: - sendCopyData(GetRainmeter().GetSkinEditor()); + sendCopyData(Rainmeter::GetInstance().GetSkinEditor()); return 0; case RAINMETER_QUERY_ID_IS_DEBUGGING: { - BOOL debug = GetRainmeter().GetDebug(); + BOOL debug = Rainmeter::GetInstance().GetDebug(); SendMessage((HWND)lParam, WM_QUERY_RAINMETER_RETURN, (WPARAM)hWnd, (LPARAM)debug); } return 0; @@ -695,7 +695,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 = GetRainmeter().GetMeterWindow(folderPath); + MeterWindow* mw = Rainmeter::GetInstance().GetMeterWindow(folderPath); return (mw) ? (LRESULT)mw->GetWindow() : 0; } } diff --git a/Library/UpdateCheck.cpp b/Library/UpdateCheck.cpp index fdf9fffd..bf67db5b 100644 --- a/Library/UpdateCheck.cpp +++ b/Library/UpdateCheck.cpp @@ -70,17 +70,17 @@ void CheckVersion(void* dummy) if (availableVersion > RAINMETER_VERSION || (revision_beta && availableVersion == RAINMETER_VERSION)) { - GetRainmeter().SetNewVersion(); + Rainmeter::GetInstance().SetNewVersion(); WCHAR buffer[32]; - const WCHAR* dataFile = GetRainmeter().GetDataFile().c_str(); + const WCHAR* dataFile = Rainmeter::GetInstance().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) { - GetRainmeter().GetTrayWindow()->ShowUpdateNotification(version); + Rainmeter::GetInstance().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 ab8bc204..fd8c405e 100644 --- a/Library/lua/glue/LuaMeterWindow.cpp +++ b/Library/lua/glue/LuaMeterWindow.cpp @@ -38,7 +38,7 @@ static int Bang(lua_State* L) if (top == 2) // 1 argument { parser.ReplaceVariables(bang); - GetRainmeter().ExecuteCommand(bang.c_str(), self); + Rainmeter::GetInstance().ExecuteCommand(bang.c_str(), self); } else { @@ -54,7 +54,7 @@ static int Bang(lua_State* L) args.push_back(tmpSz); } - GetRainmeter().ExecuteBang(bangSz, args, self); + Rainmeter::GetInstance().ExecuteBang(bangSz, args, self); } } diff --git a/RainmeterEditor.exe.config b/RainmeterEditor.exe.config new file mode 100644 index 00000000..57c0f2cb --- /dev/null +++ b/RainmeterEditor.exe.config @@ -0,0 +1,3 @@ + + + diff --git a/Rainmeter.sln b/RainmeterEditor.sln similarity index 58% rename from Rainmeter.sln rename to RainmeterEditor.sln index 873f5895..930fe685 100644 --- a/Rainmeter.sln +++ b/RainmeterEditor.sln @@ -1,16 +1,10 @@  Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio 2013 -VisualStudioVersion = 12.0.21005.1 +VisualStudioVersion = 12.0.30110.0 MinimumVisualStudioVersion = 10.0.40219.1 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Application", "Application\Application.vcxproj", "{D2A0903C-E760-4134-AE61-3D55BF8F760C}" -EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Common", "Common\Common.vcxproj", "{19312085-AA51-4BD6-BE92-4B6098CCA539}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Common_Test", "Common\Common_Test.vcxproj", "{442084A6-2069-4927-B0C9-51525A720CB2}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DllExporter", "Build\DllExporter\DllExporter.csproj", "{49D56CA5-54AB-45C9-A245-EAE588FCBFE1}" -EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Installer", "Installer\Installer.vcxproj", "{2FCFBFD2-2720-4BDD-B620-4BDD3DBB8D3D}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Language", "Language\Language.vcxproj", "{6BE6F228-B741-4DA9-9FBC-E9F2A7BD483A}" @@ -43,9 +37,6 @@ EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PluginFolderInfo", "Plugins\PluginFolderInfo\PluginFolderInfo.vcxproj", "{A221819D-4263-42AA-B22A-C022924842A7}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PluginInputText", "Plugins\PluginInputText\PluginInputText.csproj", "{2CFEC79A-E39E-4FFD-ABC2-C4A69DD1E44D}" - ProjectSection(ProjectDependencies) = postProject - {49D56CA5-54AB-45C9-A245-EAE588FCBFE1} = {49D56CA5-54AB-45C9-A245-EAE588FCBFE1} - EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PluginiTunes", "Plugins\PluginiTunes\PluginiTunes.vcxproj", "{A2DD3CBE-B140-4892-A875-24107FA52518}" EndProject @@ -81,272 +72,448 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PluginWin7Audio", "Plugins\ EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PluginWindowMessage", "Plugins\PluginWindowMessage\PluginWindowMessage.vcxproj", "{B9184DBA-C6B7-44FE-8BBD-0852DB22D2E4}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RainmeterEditor", "RainmeterEditor\RainmeterEditor.csproj", "{438D0136-4A27-4E4D-A617-FFACE4554236}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Debug|Mixed Platforms = Debug|Mixed Platforms Debug|Win32 = Debug|Win32 Debug|x64 = Debug|x64 + Release|Any CPU = Release|Any CPU + Release|Mixed Platforms = Release|Mixed Platforms Release|Win32 = Release|Win32 Release|x64 = Release|x64 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution - {D2A0903C-E760-4134-AE61-3D55BF8F760C}.Debug|Win32.ActiveCfg = Debug|Win32 - {D2A0903C-E760-4134-AE61-3D55BF8F760C}.Debug|Win32.Build.0 = Debug|Win32 - {D2A0903C-E760-4134-AE61-3D55BF8F760C}.Debug|x64.ActiveCfg = Debug|x64 - {D2A0903C-E760-4134-AE61-3D55BF8F760C}.Debug|x64.Build.0 = Debug|x64 - {D2A0903C-E760-4134-AE61-3D55BF8F760C}.Release|Win32.ActiveCfg = Release|Win32 - {D2A0903C-E760-4134-AE61-3D55BF8F760C}.Release|Win32.Build.0 = Release|Win32 - {D2A0903C-E760-4134-AE61-3D55BF8F760C}.Release|x64.ActiveCfg = Release|x64 - {D2A0903C-E760-4134-AE61-3D55BF8F760C}.Release|x64.Build.0 = Release|x64 + {19312085-AA51-4BD6-BE92-4B6098CCA539}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {19312085-AA51-4BD6-BE92-4B6098CCA539}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {19312085-AA51-4BD6-BE92-4B6098CCA539}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {19312085-AA51-4BD6-BE92-4B6098CCA539}.Debug|Win32.ActiveCfg = Debug|Win32 {19312085-AA51-4BD6-BE92-4B6098CCA539}.Debug|Win32.Build.0 = Debug|Win32 {19312085-AA51-4BD6-BE92-4B6098CCA539}.Debug|x64.ActiveCfg = Debug|x64 {19312085-AA51-4BD6-BE92-4B6098CCA539}.Debug|x64.Build.0 = Debug|x64 + {19312085-AA51-4BD6-BE92-4B6098CCA539}.Release|Any CPU.ActiveCfg = Release|Win32 + {19312085-AA51-4BD6-BE92-4B6098CCA539}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {19312085-AA51-4BD6-BE92-4B6098CCA539}.Release|Mixed Platforms.Build.0 = Release|Win32 {19312085-AA51-4BD6-BE92-4B6098CCA539}.Release|Win32.ActiveCfg = Release|Win32 {19312085-AA51-4BD6-BE92-4B6098CCA539}.Release|Win32.Build.0 = Release|Win32 {19312085-AA51-4BD6-BE92-4B6098CCA539}.Release|x64.ActiveCfg = Release|x64 {19312085-AA51-4BD6-BE92-4B6098CCA539}.Release|x64.Build.0 = Release|x64 + {2FCFBFD2-2720-4BDD-B620-4BDD3DBB8D3D}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {2FCFBFD2-2720-4BDD-B620-4BDD3DBB8D3D}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {2FCFBFD2-2720-4BDD-B620-4BDD3DBB8D3D}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {2FCFBFD2-2720-4BDD-B620-4BDD3DBB8D3D}.Debug|Win32.ActiveCfg = Debug|Win32 {2FCFBFD2-2720-4BDD-B620-4BDD3DBB8D3D}.Debug|x64.ActiveCfg = Debug|Win32 + {2FCFBFD2-2720-4BDD-B620-4BDD3DBB8D3D}.Release|Any CPU.ActiveCfg = Release|Win32 + {2FCFBFD2-2720-4BDD-B620-4BDD3DBB8D3D}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {2FCFBFD2-2720-4BDD-B620-4BDD3DBB8D3D}.Release|Mixed Platforms.Build.0 = Release|Win32 {2FCFBFD2-2720-4BDD-B620-4BDD3DBB8D3D}.Release|Win32.ActiveCfg = Release|Win32 {2FCFBFD2-2720-4BDD-B620-4BDD3DBB8D3D}.Release|x64.ActiveCfg = Release|Win32 + {6BE6F228-B741-4DA9-9FBC-E9F2A7BD483A}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {6BE6F228-B741-4DA9-9FBC-E9F2A7BD483A}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {6BE6F228-B741-4DA9-9FBC-E9F2A7BD483A}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {6BE6F228-B741-4DA9-9FBC-E9F2A7BD483A}.Debug|Win32.ActiveCfg = Debug|Win32 {6BE6F228-B741-4DA9-9FBC-E9F2A7BD483A}.Debug|Win32.Build.0 = Debug|Win32 {6BE6F228-B741-4DA9-9FBC-E9F2A7BD483A}.Debug|x64.ActiveCfg = Debug|x64 {6BE6F228-B741-4DA9-9FBC-E9F2A7BD483A}.Debug|x64.Build.0 = Debug|x64 + {6BE6F228-B741-4DA9-9FBC-E9F2A7BD483A}.Release|Any CPU.ActiveCfg = Release|Win32 + {6BE6F228-B741-4DA9-9FBC-E9F2A7BD483A}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {6BE6F228-B741-4DA9-9FBC-E9F2A7BD483A}.Release|Mixed Platforms.Build.0 = Release|Win32 {6BE6F228-B741-4DA9-9FBC-E9F2A7BD483A}.Release|Win32.ActiveCfg = Release|Win32 {6BE6F228-B741-4DA9-9FBC-E9F2A7BD483A}.Release|Win32.Build.0 = Release|Win32 {6BE6F228-B741-4DA9-9FBC-E9F2A7BD483A}.Release|x64.ActiveCfg = Release|x64 {6BE6F228-B741-4DA9-9FBC-E9F2A7BD483A}.Release|x64.Build.0 = Release|x64 + {BE9D2400-7F1C-49D6-8498-5CE495491AD6}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {BE9D2400-7F1C-49D6-8498-5CE495491AD6}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {BE9D2400-7F1C-49D6-8498-5CE495491AD6}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {BE9D2400-7F1C-49D6-8498-5CE495491AD6}.Debug|Win32.ActiveCfg = Debug|Win32 {BE9D2400-7F1C-49D6-8498-5CE495491AD6}.Debug|Win32.Build.0 = Debug|Win32 {BE9D2400-7F1C-49D6-8498-5CE495491AD6}.Debug|x64.ActiveCfg = Debug|x64 {BE9D2400-7F1C-49D6-8498-5CE495491AD6}.Debug|x64.Build.0 = Debug|x64 + {BE9D2400-7F1C-49D6-8498-5CE495491AD6}.Release|Any CPU.ActiveCfg = Release|Win32 + {BE9D2400-7F1C-49D6-8498-5CE495491AD6}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {BE9D2400-7F1C-49D6-8498-5CE495491AD6}.Release|Mixed Platforms.Build.0 = Release|Win32 {BE9D2400-7F1C-49D6-8498-5CE495491AD6}.Release|Win32.ActiveCfg = Release|Win32 {BE9D2400-7F1C-49D6-8498-5CE495491AD6}.Release|Win32.Build.0 = Release|Win32 {BE9D2400-7F1C-49D6-8498-5CE495491AD6}.Release|x64.ActiveCfg = Release|x64 {BE9D2400-7F1C-49D6-8498-5CE495491AD6}.Release|x64.Build.0 = Release|x64 + {BC25C5DC-AEFB-49F9-8188-3C1B8C8929E6}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {BC25C5DC-AEFB-49F9-8188-3C1B8C8929E6}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {BC25C5DC-AEFB-49F9-8188-3C1B8C8929E6}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {BC25C5DC-AEFB-49F9-8188-3C1B8C8929E6}.Debug|Win32.ActiveCfg = Debug|Win32 {BC25C5DC-AEFB-49F9-8188-3C1B8C8929E6}.Debug|Win32.Build.0 = Debug|Win32 {BC25C5DC-AEFB-49F9-8188-3C1B8C8929E6}.Debug|x64.ActiveCfg = Debug|x64 {BC25C5DC-AEFB-49F9-8188-3C1B8C8929E6}.Debug|x64.Build.0 = Debug|x64 + {BC25C5DC-AEFB-49F9-8188-3C1B8C8929E6}.Release|Any CPU.ActiveCfg = Release|Win32 + {BC25C5DC-AEFB-49F9-8188-3C1B8C8929E6}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {BC25C5DC-AEFB-49F9-8188-3C1B8C8929E6}.Release|Mixed Platforms.Build.0 = Release|Win32 {BC25C5DC-AEFB-49F9-8188-3C1B8C8929E6}.Release|Win32.ActiveCfg = Release|Win32 {BC25C5DC-AEFB-49F9-8188-3C1B8C8929E6}.Release|Win32.Build.0 = Release|Win32 {BC25C5DC-AEFB-49F9-8188-3C1B8C8929E6}.Release|x64.ActiveCfg = Release|x64 {BC25C5DC-AEFB-49F9-8188-3C1B8C8929E6}.Release|x64.Build.0 = Release|x64 + {6D61FBE9-6913-4885-A95D-1A8C0C223D82}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {6D61FBE9-6913-4885-A95D-1A8C0C223D82}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {6D61FBE9-6913-4885-A95D-1A8C0C223D82}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {6D61FBE9-6913-4885-A95D-1A8C0C223D82}.Debug|Win32.ActiveCfg = Debug|Win32 {6D61FBE9-6913-4885-A95D-1A8C0C223D82}.Debug|Win32.Build.0 = Debug|Win32 {6D61FBE9-6913-4885-A95D-1A8C0C223D82}.Debug|x64.ActiveCfg = Debug|x64 {6D61FBE9-6913-4885-A95D-1A8C0C223D82}.Debug|x64.Build.0 = Debug|x64 + {6D61FBE9-6913-4885-A95D-1A8C0C223D82}.Release|Any CPU.ActiveCfg = Release|Win32 + {6D61FBE9-6913-4885-A95D-1A8C0C223D82}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {6D61FBE9-6913-4885-A95D-1A8C0C223D82}.Release|Mixed Platforms.Build.0 = Release|Win32 {6D61FBE9-6913-4885-A95D-1A8C0C223D82}.Release|Win32.ActiveCfg = Release|Win32 {6D61FBE9-6913-4885-A95D-1A8C0C223D82}.Release|Win32.Build.0 = Release|Win32 {6D61FBE9-6913-4885-A95D-1A8C0C223D82}.Release|x64.ActiveCfg = Release|x64 {6D61FBE9-6913-4885-A95D-1A8C0C223D82}.Release|x64.Build.0 = Release|x64 + {6F5D4C4A-C8C3-41DA-BF44-6D42B76464DA}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {6F5D4C4A-C8C3-41DA-BF44-6D42B76464DA}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {6F5D4C4A-C8C3-41DA-BF44-6D42B76464DA}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {6F5D4C4A-C8C3-41DA-BF44-6D42B76464DA}.Debug|Win32.ActiveCfg = Debug|Win32 {6F5D4C4A-C8C3-41DA-BF44-6D42B76464DA}.Debug|Win32.Build.0 = Debug|Win32 {6F5D4C4A-C8C3-41DA-BF44-6D42B76464DA}.Debug|x64.ActiveCfg = Debug|x64 {6F5D4C4A-C8C3-41DA-BF44-6D42B76464DA}.Debug|x64.Build.0 = Debug|x64 + {6F5D4C4A-C8C3-41DA-BF44-6D42B76464DA}.Release|Any CPU.ActiveCfg = Release|Win32 + {6F5D4C4A-C8C3-41DA-BF44-6D42B76464DA}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {6F5D4C4A-C8C3-41DA-BF44-6D42B76464DA}.Release|Mixed Platforms.Build.0 = Release|Win32 {6F5D4C4A-C8C3-41DA-BF44-6D42B76464DA}.Release|Win32.ActiveCfg = Release|Win32 {6F5D4C4A-C8C3-41DA-BF44-6D42B76464DA}.Release|Win32.Build.0 = Release|Win32 {6F5D4C4A-C8C3-41DA-BF44-6D42B76464DA}.Release|x64.ActiveCfg = Release|x64 {6F5D4C4A-C8C3-41DA-BF44-6D42B76464DA}.Release|x64.Build.0 = Release|x64 + {2D8F1DDB-6470-45A1-B95A-3E2960641314}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {2D8F1DDB-6470-45A1-B95A-3E2960641314}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {2D8F1DDB-6470-45A1-B95A-3E2960641314}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {2D8F1DDB-6470-45A1-B95A-3E2960641314}.Debug|Win32.ActiveCfg = Debug|Win32 {2D8F1DDB-6470-45A1-B95A-3E2960641314}.Debug|Win32.Build.0 = Debug|Win32 {2D8F1DDB-6470-45A1-B95A-3E2960641314}.Debug|x64.ActiveCfg = Debug|x64 {2D8F1DDB-6470-45A1-B95A-3E2960641314}.Debug|x64.Build.0 = Debug|x64 + {2D8F1DDB-6470-45A1-B95A-3E2960641314}.Release|Any CPU.ActiveCfg = Release|Win32 + {2D8F1DDB-6470-45A1-B95A-3E2960641314}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {2D8F1DDB-6470-45A1-B95A-3E2960641314}.Release|Mixed Platforms.Build.0 = Release|Win32 {2D8F1DDB-6470-45A1-B95A-3E2960641314}.Release|Win32.ActiveCfg = Release|Win32 {2D8F1DDB-6470-45A1-B95A-3E2960641314}.Release|Win32.Build.0 = Release|Win32 {2D8F1DDB-6470-45A1-B95A-3E2960641314}.Release|x64.ActiveCfg = Release|x64 {2D8F1DDB-6470-45A1-B95A-3E2960641314}.Release|x64.Build.0 = Release|x64 - {49D56CA5-54AB-45C9-A245-EAE588FCBFE1}.Debug|Win32.ActiveCfg = Debug|x86 - {49D56CA5-54AB-45C9-A245-EAE588FCBFE1}.Debug|Win32.Build.0 = Debug|x86 - {49D56CA5-54AB-45C9-A245-EAE588FCBFE1}.Debug|x64.ActiveCfg = Debug|x64 - {49D56CA5-54AB-45C9-A245-EAE588FCBFE1}.Debug|x64.Build.0 = Debug|x64 - {49D56CA5-54AB-45C9-A245-EAE588FCBFE1}.Release|Win32.ActiveCfg = Release|x86 - {49D56CA5-54AB-45C9-A245-EAE588FCBFE1}.Release|Win32.Build.0 = Release|x86 - {49D56CA5-54AB-45C9-A245-EAE588FCBFE1}.Release|x64.ActiveCfg = Release|x64 - {49D56CA5-54AB-45C9-A245-EAE588FCBFE1}.Release|x64.Build.0 = Release|x64 + {EE8EC522-8430-4B46-86A3-D943D77F9E4B}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {EE8EC522-8430-4B46-86A3-D943D77F9E4B}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {EE8EC522-8430-4B46-86A3-D943D77F9E4B}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {EE8EC522-8430-4B46-86A3-D943D77F9E4B}.Debug|Win32.ActiveCfg = Debug|Win32 {EE8EC522-8430-4B46-86A3-D943D77F9E4B}.Debug|Win32.Build.0 = Debug|Win32 {EE8EC522-8430-4B46-86A3-D943D77F9E4B}.Debug|x64.ActiveCfg = Debug|x64 {EE8EC522-8430-4B46-86A3-D943D77F9E4B}.Debug|x64.Build.0 = Debug|x64 + {EE8EC522-8430-4B46-86A3-D943D77F9E4B}.Release|Any CPU.ActiveCfg = Release|Win32 + {EE8EC522-8430-4B46-86A3-D943D77F9E4B}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {EE8EC522-8430-4B46-86A3-D943D77F9E4B}.Release|Mixed Platforms.Build.0 = Release|Win32 {EE8EC522-8430-4B46-86A3-D943D77F9E4B}.Release|Win32.ActiveCfg = Release|Win32 {EE8EC522-8430-4B46-86A3-D943D77F9E4B}.Release|Win32.Build.0 = Release|Win32 {EE8EC522-8430-4B46-86A3-D943D77F9E4B}.Release|x64.ActiveCfg = Release|x64 {EE8EC522-8430-4B46-86A3-D943D77F9E4B}.Release|x64.Build.0 = Release|x64 + {F32FA418-8DF4-4E94-B92B-EBD502F5DC07}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {F32FA418-8DF4-4E94-B92B-EBD502F5DC07}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {F32FA418-8DF4-4E94-B92B-EBD502F5DC07}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {F32FA418-8DF4-4E94-B92B-EBD502F5DC07}.Debug|Win32.ActiveCfg = Debug|Win32 {F32FA418-8DF4-4E94-B92B-EBD502F5DC07}.Debug|Win32.Build.0 = Debug|Win32 {F32FA418-8DF4-4E94-B92B-EBD502F5DC07}.Debug|x64.ActiveCfg = Debug|x64 {F32FA418-8DF4-4E94-B92B-EBD502F5DC07}.Debug|x64.Build.0 = Debug|x64 + {F32FA418-8DF4-4E94-B92B-EBD502F5DC07}.Release|Any CPU.ActiveCfg = Release|Win32 + {F32FA418-8DF4-4E94-B92B-EBD502F5DC07}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {F32FA418-8DF4-4E94-B92B-EBD502F5DC07}.Release|Mixed Platforms.Build.0 = Release|Win32 {F32FA418-8DF4-4E94-B92B-EBD502F5DC07}.Release|Win32.ActiveCfg = Release|Win32 {F32FA418-8DF4-4E94-B92B-EBD502F5DC07}.Release|Win32.Build.0 = Release|Win32 {F32FA418-8DF4-4E94-B92B-EBD502F5DC07}.Release|x64.ActiveCfg = Release|x64 {F32FA418-8DF4-4E94-B92B-EBD502F5DC07}.Release|x64.Build.0 = Release|x64 + {64FDEE97-6B7E-40E5-A489-ECA322825BC8}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {64FDEE97-6B7E-40E5-A489-ECA322825BC8}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {64FDEE97-6B7E-40E5-A489-ECA322825BC8}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {64FDEE97-6B7E-40E5-A489-ECA322825BC8}.Debug|Win32.ActiveCfg = Debug|Win32 {64FDEE97-6B7E-40E5-A489-ECA322825BC8}.Debug|Win32.Build.0 = Debug|Win32 {64FDEE97-6B7E-40E5-A489-ECA322825BC8}.Debug|x64.ActiveCfg = Debug|x64 {64FDEE97-6B7E-40E5-A489-ECA322825BC8}.Debug|x64.Build.0 = Debug|x64 + {64FDEE97-6B7E-40E5-A489-ECA322825BC8}.Release|Any CPU.ActiveCfg = Release|Win32 + {64FDEE97-6B7E-40E5-A489-ECA322825BC8}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {64FDEE97-6B7E-40E5-A489-ECA322825BC8}.Release|Mixed Platforms.Build.0 = Release|Win32 {64FDEE97-6B7E-40E5-A489-ECA322825BC8}.Release|Win32.ActiveCfg = Release|Win32 {64FDEE97-6B7E-40E5-A489-ECA322825BC8}.Release|Win32.Build.0 = Release|Win32 {64FDEE97-6B7E-40E5-A489-ECA322825BC8}.Release|x64.ActiveCfg = Release|x64 {64FDEE97-6B7E-40E5-A489-ECA322825BC8}.Release|x64.Build.0 = Release|x64 + {A221819D-4263-42AA-B22A-C022924842A7}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {A221819D-4263-42AA-B22A-C022924842A7}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {A221819D-4263-42AA-B22A-C022924842A7}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {A221819D-4263-42AA-B22A-C022924842A7}.Debug|Win32.ActiveCfg = Debug|Win32 {A221819D-4263-42AA-B22A-C022924842A7}.Debug|Win32.Build.0 = Debug|Win32 {A221819D-4263-42AA-B22A-C022924842A7}.Debug|x64.ActiveCfg = Debug|x64 {A221819D-4263-42AA-B22A-C022924842A7}.Debug|x64.Build.0 = Debug|x64 + {A221819D-4263-42AA-B22A-C022924842A7}.Release|Any CPU.ActiveCfg = Release|Win32 + {A221819D-4263-42AA-B22A-C022924842A7}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {A221819D-4263-42AA-B22A-C022924842A7}.Release|Mixed Platforms.Build.0 = Release|Win32 {A221819D-4263-42AA-B22A-C022924842A7}.Release|Win32.ActiveCfg = Release|Win32 {A221819D-4263-42AA-B22A-C022924842A7}.Release|Win32.Build.0 = Release|Win32 {A221819D-4263-42AA-B22A-C022924842A7}.Release|x64.ActiveCfg = Release|x64 {A221819D-4263-42AA-B22A-C022924842A7}.Release|x64.Build.0 = Release|x64 + {2CFEC79A-E39E-4FFD-ABC2-C4A69DD1E44D}.Debug|Any CPU.ActiveCfg = Debug|x86 + {2CFEC79A-E39E-4FFD-ABC2-C4A69DD1E44D}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 + {2CFEC79A-E39E-4FFD-ABC2-C4A69DD1E44D}.Debug|Mixed Platforms.Build.0 = Debug|x86 {2CFEC79A-E39E-4FFD-ABC2-C4A69DD1E44D}.Debug|Win32.ActiveCfg = Debug|x86 {2CFEC79A-E39E-4FFD-ABC2-C4A69DD1E44D}.Debug|Win32.Build.0 = Debug|x86 {2CFEC79A-E39E-4FFD-ABC2-C4A69DD1E44D}.Debug|x64.ActiveCfg = Debug|x64 {2CFEC79A-E39E-4FFD-ABC2-C4A69DD1E44D}.Debug|x64.Build.0 = Debug|x64 + {2CFEC79A-E39E-4FFD-ABC2-C4A69DD1E44D}.Release|Any CPU.ActiveCfg = Release|x86 + {2CFEC79A-E39E-4FFD-ABC2-C4A69DD1E44D}.Release|Mixed Platforms.ActiveCfg = Release|x86 + {2CFEC79A-E39E-4FFD-ABC2-C4A69DD1E44D}.Release|Mixed Platforms.Build.0 = Release|x86 {2CFEC79A-E39E-4FFD-ABC2-C4A69DD1E44D}.Release|Win32.ActiveCfg = Release|x86 {2CFEC79A-E39E-4FFD-ABC2-C4A69DD1E44D}.Release|Win32.Build.0 = Release|x86 {2CFEC79A-E39E-4FFD-ABC2-C4A69DD1E44D}.Release|x64.ActiveCfg = Release|x64 {2CFEC79A-E39E-4FFD-ABC2-C4A69DD1E44D}.Release|x64.Build.0 = Release|x64 + {A2DD3CBE-B140-4892-A875-24107FA52518}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {A2DD3CBE-B140-4892-A875-24107FA52518}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {A2DD3CBE-B140-4892-A875-24107FA52518}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {A2DD3CBE-B140-4892-A875-24107FA52518}.Debug|Win32.ActiveCfg = Debug|Win32 {A2DD3CBE-B140-4892-A875-24107FA52518}.Debug|Win32.Build.0 = Debug|Win32 {A2DD3CBE-B140-4892-A875-24107FA52518}.Debug|x64.ActiveCfg = Debug|x64 {A2DD3CBE-B140-4892-A875-24107FA52518}.Debug|x64.Build.0 = Debug|x64 + {A2DD3CBE-B140-4892-A875-24107FA52518}.Release|Any CPU.ActiveCfg = Release|Win32 + {A2DD3CBE-B140-4892-A875-24107FA52518}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {A2DD3CBE-B140-4892-A875-24107FA52518}.Release|Mixed Platforms.Build.0 = Release|Win32 {A2DD3CBE-B140-4892-A875-24107FA52518}.Release|Win32.ActiveCfg = Release|Win32 {A2DD3CBE-B140-4892-A875-24107FA52518}.Release|Win32.Build.0 = Release|Win32 {A2DD3CBE-B140-4892-A875-24107FA52518}.Release|x64.ActiveCfg = Release|x64 {A2DD3CBE-B140-4892-A875-24107FA52518}.Release|x64.Build.0 = Release|x64 + {EB48A04A-657E-41B8-B2F5-D47F8C30B2B4}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {EB48A04A-657E-41B8-B2F5-D47F8C30B2B4}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {EB48A04A-657E-41B8-B2F5-D47F8C30B2B4}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {EB48A04A-657E-41B8-B2F5-D47F8C30B2B4}.Debug|Win32.ActiveCfg = Debug|Win32 {EB48A04A-657E-41B8-B2F5-D47F8C30B2B4}.Debug|Win32.Build.0 = Debug|Win32 {EB48A04A-657E-41B8-B2F5-D47F8C30B2B4}.Debug|x64.ActiveCfg = Debug|x64 {EB48A04A-657E-41B8-B2F5-D47F8C30B2B4}.Debug|x64.Build.0 = Debug|x64 + {EB48A04A-657E-41B8-B2F5-D47F8C30B2B4}.Release|Any CPU.ActiveCfg = Release|Win32 + {EB48A04A-657E-41B8-B2F5-D47F8C30B2B4}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {EB48A04A-657E-41B8-B2F5-D47F8C30B2B4}.Release|Mixed Platforms.Build.0 = Release|Win32 {EB48A04A-657E-41B8-B2F5-D47F8C30B2B4}.Release|Win32.ActiveCfg = Release|Win32 {EB48A04A-657E-41B8-B2F5-D47F8C30B2B4}.Release|Win32.Build.0 = Release|Win32 {EB48A04A-657E-41B8-B2F5-D47F8C30B2B4}.Release|x64.ActiveCfg = Release|x64 {EB48A04A-657E-41B8-B2F5-D47F8C30B2B4}.Release|x64.Build.0 = Release|x64 + {C7FECFCD-E6C6-4F95-BB9A-E1762B043969}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {C7FECFCD-E6C6-4F95-BB9A-E1762B043969}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {C7FECFCD-E6C6-4F95-BB9A-E1762B043969}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {C7FECFCD-E6C6-4F95-BB9A-E1762B043969}.Debug|Win32.ActiveCfg = Debug|Win32 {C7FECFCD-E6C6-4F95-BB9A-E1762B043969}.Debug|Win32.Build.0 = Debug|Win32 {C7FECFCD-E6C6-4F95-BB9A-E1762B043969}.Debug|x64.ActiveCfg = Debug|x64 {C7FECFCD-E6C6-4F95-BB9A-E1762B043969}.Debug|x64.Build.0 = Debug|x64 + {C7FECFCD-E6C6-4F95-BB9A-E1762B043969}.Release|Any CPU.ActiveCfg = Release|Win32 + {C7FECFCD-E6C6-4F95-BB9A-E1762B043969}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {C7FECFCD-E6C6-4F95-BB9A-E1762B043969}.Release|Mixed Platforms.Build.0 = Release|Win32 {C7FECFCD-E6C6-4F95-BB9A-E1762B043969}.Release|Win32.ActiveCfg = Release|Win32 {C7FECFCD-E6C6-4F95-BB9A-E1762B043969}.Release|Win32.Build.0 = Release|Win32 {C7FECFCD-E6C6-4F95-BB9A-E1762B043969}.Release|x64.ActiveCfg = Release|x64 {C7FECFCD-E6C6-4F95-BB9A-E1762B043969}.Release|x64.Build.0 = Release|x64 + {5344B52B-BAC3-479C-B41D-D465B8BDA1AD}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {5344B52B-BAC3-479C-B41D-D465B8BDA1AD}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {5344B52B-BAC3-479C-B41D-D465B8BDA1AD}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {5344B52B-BAC3-479C-B41D-D465B8BDA1AD}.Debug|Win32.ActiveCfg = Debug|Win32 {5344B52B-BAC3-479C-B41D-D465B8BDA1AD}.Debug|Win32.Build.0 = Debug|Win32 {5344B52B-BAC3-479C-B41D-D465B8BDA1AD}.Debug|x64.ActiveCfg = Debug|x64 {5344B52B-BAC3-479C-B41D-D465B8BDA1AD}.Debug|x64.Build.0 = Debug|x64 + {5344B52B-BAC3-479C-B41D-D465B8BDA1AD}.Release|Any CPU.ActiveCfg = Release|Win32 + {5344B52B-BAC3-479C-B41D-D465B8BDA1AD}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {5344B52B-BAC3-479C-B41D-D465B8BDA1AD}.Release|Mixed Platforms.Build.0 = Release|Win32 {5344B52B-BAC3-479C-B41D-D465B8BDA1AD}.Release|Win32.ActiveCfg = Release|Win32 {5344B52B-BAC3-479C-B41D-D465B8BDA1AD}.Release|Win32.Build.0 = Release|Win32 {5344B52B-BAC3-479C-B41D-D465B8BDA1AD}.Release|x64.ActiveCfg = Release|x64 {5344B52B-BAC3-479C-B41D-D465B8BDA1AD}.Release|x64.Build.0 = Release|x64 + {C862B662-5CC6-4E79-B1B3-905E0B98D627}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {C862B662-5CC6-4E79-B1B3-905E0B98D627}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {C862B662-5CC6-4E79-B1B3-905E0B98D627}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {C862B662-5CC6-4E79-B1B3-905E0B98D627}.Debug|Win32.ActiveCfg = Debug|Win32 {C862B662-5CC6-4E79-B1B3-905E0B98D627}.Debug|Win32.Build.0 = Debug|Win32 {C862B662-5CC6-4E79-B1B3-905E0B98D627}.Debug|x64.ActiveCfg = Debug|x64 {C862B662-5CC6-4E79-B1B3-905E0B98D627}.Debug|x64.Build.0 = Debug|x64 + {C862B662-5CC6-4E79-B1B3-905E0B98D627}.Release|Any CPU.ActiveCfg = Release|Win32 + {C862B662-5CC6-4E79-B1B3-905E0B98D627}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {C862B662-5CC6-4E79-B1B3-905E0B98D627}.Release|Mixed Platforms.Build.0 = Release|Win32 {C862B662-5CC6-4E79-B1B3-905E0B98D627}.Release|Win32.ActiveCfg = Release|Win32 {C862B662-5CC6-4E79-B1B3-905E0B98D627}.Release|Win32.Build.0 = Release|Win32 {C862B662-5CC6-4E79-B1B3-905E0B98D627}.Release|x64.ActiveCfg = Release|x64 {C862B662-5CC6-4E79-B1B3-905E0B98D627}.Release|x64.Build.0 = Release|x64 + {C30E7EB6-9655-4AF4-98AE-D6E6B14631AF}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {C30E7EB6-9655-4AF4-98AE-D6E6B14631AF}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {C30E7EB6-9655-4AF4-98AE-D6E6B14631AF}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {C30E7EB6-9655-4AF4-98AE-D6E6B14631AF}.Debug|Win32.ActiveCfg = Debug|Win32 {C30E7EB6-9655-4AF4-98AE-D6E6B14631AF}.Debug|Win32.Build.0 = Debug|Win32 {C30E7EB6-9655-4AF4-98AE-D6E6B14631AF}.Debug|x64.ActiveCfg = Debug|x64 {C30E7EB6-9655-4AF4-98AE-D6E6B14631AF}.Debug|x64.Build.0 = Debug|x64 + {C30E7EB6-9655-4AF4-98AE-D6E6B14631AF}.Release|Any CPU.ActiveCfg = Release|Win32 + {C30E7EB6-9655-4AF4-98AE-D6E6B14631AF}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {C30E7EB6-9655-4AF4-98AE-D6E6B14631AF}.Release|Mixed Platforms.Build.0 = Release|Win32 {C30E7EB6-9655-4AF4-98AE-D6E6B14631AF}.Release|Win32.ActiveCfg = Release|Win32 {C30E7EB6-9655-4AF4-98AE-D6E6B14631AF}.Release|Win32.Build.0 = Release|Win32 {C30E7EB6-9655-4AF4-98AE-D6E6B14631AF}.Release|x64.ActiveCfg = Release|x64 {C30E7EB6-9655-4AF4-98AE-D6E6B14631AF}.Release|x64.Build.0 = Release|x64 + {05203741-CD80-4060-8218-EC5D1120FE3E}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {05203741-CD80-4060-8218-EC5D1120FE3E}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {05203741-CD80-4060-8218-EC5D1120FE3E}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {05203741-CD80-4060-8218-EC5D1120FE3E}.Debug|Win32.ActiveCfg = Debug|Win32 {05203741-CD80-4060-8218-EC5D1120FE3E}.Debug|Win32.Build.0 = Debug|Win32 {05203741-CD80-4060-8218-EC5D1120FE3E}.Debug|x64.ActiveCfg = Debug|x64 {05203741-CD80-4060-8218-EC5D1120FE3E}.Debug|x64.Build.0 = Debug|x64 + {05203741-CD80-4060-8218-EC5D1120FE3E}.Release|Any CPU.ActiveCfg = Release|Win32 + {05203741-CD80-4060-8218-EC5D1120FE3E}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {05203741-CD80-4060-8218-EC5D1120FE3E}.Release|Mixed Platforms.Build.0 = Release|Win32 {05203741-CD80-4060-8218-EC5D1120FE3E}.Release|Win32.ActiveCfg = Release|Win32 {05203741-CD80-4060-8218-EC5D1120FE3E}.Release|Win32.Build.0 = Release|Win32 {05203741-CD80-4060-8218-EC5D1120FE3E}.Release|x64.ActiveCfg = Release|x64 {05203741-CD80-4060-8218-EC5D1120FE3E}.Release|x64.Build.0 = Release|x64 + {C029E0CF-F203-41D0-9608-A3EA2CF0ED1F}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {C029E0CF-F203-41D0-9608-A3EA2CF0ED1F}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {C029E0CF-F203-41D0-9608-A3EA2CF0ED1F}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {C029E0CF-F203-41D0-9608-A3EA2CF0ED1F}.Debug|Win32.ActiveCfg = Debug|Win32 {C029E0CF-F203-41D0-9608-A3EA2CF0ED1F}.Debug|Win32.Build.0 = Debug|Win32 {C029E0CF-F203-41D0-9608-A3EA2CF0ED1F}.Debug|x64.ActiveCfg = Debug|x64 {C029E0CF-F203-41D0-9608-A3EA2CF0ED1F}.Debug|x64.Build.0 = Debug|x64 + {C029E0CF-F203-41D0-9608-A3EA2CF0ED1F}.Release|Any CPU.ActiveCfg = Release|Win32 + {C029E0CF-F203-41D0-9608-A3EA2CF0ED1F}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {C029E0CF-F203-41D0-9608-A3EA2CF0ED1F}.Release|Mixed Platforms.Build.0 = Release|Win32 {C029E0CF-F203-41D0-9608-A3EA2CF0ED1F}.Release|Win32.ActiveCfg = Release|Win32 {C029E0CF-F203-41D0-9608-A3EA2CF0ED1F}.Release|Win32.Build.0 = Release|Win32 {C029E0CF-F203-41D0-9608-A3EA2CF0ED1F}.Release|x64.ActiveCfg = Release|x64 {C029E0CF-F203-41D0-9608-A3EA2CF0ED1F}.Release|x64.Build.0 = Release|x64 + {4F8C4C09-431C-45C4-830B-32006E783C3A}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {4F8C4C09-431C-45C4-830B-32006E783C3A}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {4F8C4C09-431C-45C4-830B-32006E783C3A}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {4F8C4C09-431C-45C4-830B-32006E783C3A}.Debug|Win32.ActiveCfg = Debug|Win32 {4F8C4C09-431C-45C4-830B-32006E783C3A}.Debug|Win32.Build.0 = Debug|Win32 {4F8C4C09-431C-45C4-830B-32006E783C3A}.Debug|x64.ActiveCfg = Debug|x64 {4F8C4C09-431C-45C4-830B-32006E783C3A}.Debug|x64.Build.0 = Debug|x64 + {4F8C4C09-431C-45C4-830B-32006E783C3A}.Release|Any CPU.ActiveCfg = Release|Win32 + {4F8C4C09-431C-45C4-830B-32006E783C3A}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {4F8C4C09-431C-45C4-830B-32006E783C3A}.Release|Mixed Platforms.Build.0 = Release|Win32 {4F8C4C09-431C-45C4-830B-32006E783C3A}.Release|Win32.ActiveCfg = Release|Win32 {4F8C4C09-431C-45C4-830B-32006E783C3A}.Release|Win32.Build.0 = Release|Win32 {4F8C4C09-431C-45C4-830B-32006E783C3A}.Release|x64.ActiveCfg = Release|x64 {4F8C4C09-431C-45C4-830B-32006E783C3A}.Release|x64.Build.0 = Release|x64 + {17D3BD92-6F5D-438C-A89B-88F4CE06DB94}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {17D3BD92-6F5D-438C-A89B-88F4CE06DB94}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {17D3BD92-6F5D-438C-A89B-88F4CE06DB94}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {17D3BD92-6F5D-438C-A89B-88F4CE06DB94}.Debug|Win32.ActiveCfg = Debug|Win32 {17D3BD92-6F5D-438C-A89B-88F4CE06DB94}.Debug|Win32.Build.0 = Debug|Win32 {17D3BD92-6F5D-438C-A89B-88F4CE06DB94}.Debug|x64.ActiveCfg = Debug|x64 {17D3BD92-6F5D-438C-A89B-88F4CE06DB94}.Debug|x64.Build.0 = Debug|x64 + {17D3BD92-6F5D-438C-A89B-88F4CE06DB94}.Release|Any CPU.ActiveCfg = Release|Win32 + {17D3BD92-6F5D-438C-A89B-88F4CE06DB94}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {17D3BD92-6F5D-438C-A89B-88F4CE06DB94}.Release|Mixed Platforms.Build.0 = Release|Win32 {17D3BD92-6F5D-438C-A89B-88F4CE06DB94}.Release|Win32.ActiveCfg = Release|Win32 {17D3BD92-6F5D-438C-A89B-88F4CE06DB94}.Release|Win32.Build.0 = Release|Win32 {17D3BD92-6F5D-438C-A89B-88F4CE06DB94}.Release|x64.ActiveCfg = Release|x64 {17D3BD92-6F5D-438C-A89B-88F4CE06DB94}.Release|x64.Build.0 = Release|x64 + {D10AB316-0F7A-4551-BE4F-385E04CCF1E8}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {D10AB316-0F7A-4551-BE4F-385E04CCF1E8}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {D10AB316-0F7A-4551-BE4F-385E04CCF1E8}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {D10AB316-0F7A-4551-BE4F-385E04CCF1E8}.Debug|Win32.ActiveCfg = Debug|Win32 {D10AB316-0F7A-4551-BE4F-385E04CCF1E8}.Debug|Win32.Build.0 = Debug|Win32 {D10AB316-0F7A-4551-BE4F-385E04CCF1E8}.Debug|x64.ActiveCfg = Debug|x64 {D10AB316-0F7A-4551-BE4F-385E04CCF1E8}.Debug|x64.Build.0 = Debug|x64 + {D10AB316-0F7A-4551-BE4F-385E04CCF1E8}.Release|Any CPU.ActiveCfg = Release|Win32 + {D10AB316-0F7A-4551-BE4F-385E04CCF1E8}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {D10AB316-0F7A-4551-BE4F-385E04CCF1E8}.Release|Mixed Platforms.Build.0 = Release|Win32 {D10AB316-0F7A-4551-BE4F-385E04CCF1E8}.Release|Win32.ActiveCfg = Release|Win32 {D10AB316-0F7A-4551-BE4F-385E04CCF1E8}.Release|Win32.Build.0 = Release|Win32 {D10AB316-0F7A-4551-BE4F-385E04CCF1E8}.Release|x64.ActiveCfg = Release|x64 {D10AB316-0F7A-4551-BE4F-385E04CCF1E8}.Release|x64.Build.0 = Release|x64 + {6EBCA4DA-8CC7-42FE-8F45-878ABE165078}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {6EBCA4DA-8CC7-42FE-8F45-878ABE165078}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {6EBCA4DA-8CC7-42FE-8F45-878ABE165078}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {6EBCA4DA-8CC7-42FE-8F45-878ABE165078}.Debug|Win32.ActiveCfg = Debug|Win32 {6EBCA4DA-8CC7-42FE-8F45-878ABE165078}.Debug|Win32.Build.0 = Debug|Win32 {6EBCA4DA-8CC7-42FE-8F45-878ABE165078}.Debug|x64.ActiveCfg = Debug|x64 {6EBCA4DA-8CC7-42FE-8F45-878ABE165078}.Debug|x64.Build.0 = Debug|x64 + {6EBCA4DA-8CC7-42FE-8F45-878ABE165078}.Release|Any CPU.ActiveCfg = Release|Win32 + {6EBCA4DA-8CC7-42FE-8F45-878ABE165078}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {6EBCA4DA-8CC7-42FE-8F45-878ABE165078}.Release|Mixed Platforms.Build.0 = Release|Win32 {6EBCA4DA-8CC7-42FE-8F45-878ABE165078}.Release|Win32.ActiveCfg = Release|Win32 {6EBCA4DA-8CC7-42FE-8F45-878ABE165078}.Release|Win32.Build.0 = Release|Win32 {6EBCA4DA-8CC7-42FE-8F45-878ABE165078}.Release|x64.ActiveCfg = Release|x64 {6EBCA4DA-8CC7-42FE-8F45-878ABE165078}.Release|x64.Build.0 = Release|x64 + {4640AB3A-5A8B-2DA0-980C-A70BCAB3A7F1}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {4640AB3A-5A8B-2DA0-980C-A70BCAB3A7F1}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {4640AB3A-5A8B-2DA0-980C-A70BCAB3A7F1}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {4640AB3A-5A8B-2DA0-980C-A70BCAB3A7F1}.Debug|Win32.ActiveCfg = Debug|Win32 {4640AB3A-5A8B-2DA0-980C-A70BCAB3A7F1}.Debug|Win32.Build.0 = Debug|Win32 {4640AB3A-5A8B-2DA0-980C-A70BCAB3A7F1}.Debug|x64.ActiveCfg = Debug|x64 {4640AB3A-5A8B-2DA0-980C-A70BCAB3A7F1}.Debug|x64.Build.0 = Debug|x64 + {4640AB3A-5A8B-2DA0-980C-A70BCAB3A7F1}.Release|Any CPU.ActiveCfg = Release|Win32 + {4640AB3A-5A8B-2DA0-980C-A70BCAB3A7F1}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {4640AB3A-5A8B-2DA0-980C-A70BCAB3A7F1}.Release|Mixed Platforms.Build.0 = Release|Win32 {4640AB3A-5A8B-2DA0-980C-A70BCAB3A7F1}.Release|Win32.ActiveCfg = Release|Win32 {4640AB3A-5A8B-2DA0-980C-A70BCAB3A7F1}.Release|Win32.Build.0 = Release|Win32 {4640AB3A-5A8B-2DA0-980C-A70BCAB3A7F1}.Release|x64.ActiveCfg = Release|x64 {4640AB3A-5A8B-2DA0-980C-A70BCAB3A7F1}.Release|x64.Build.0 = Release|x64 + {8B820B9F-C154-417C-A090-42198F2AF496}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {8B820B9F-C154-417C-A090-42198F2AF496}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {8B820B9F-C154-417C-A090-42198F2AF496}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {8B820B9F-C154-417C-A090-42198F2AF496}.Debug|Win32.ActiveCfg = Debug|Win32 {8B820B9F-C154-417C-A090-42198F2AF496}.Debug|Win32.Build.0 = Debug|Win32 {8B820B9F-C154-417C-A090-42198F2AF496}.Debug|x64.ActiveCfg = Debug|x64 {8B820B9F-C154-417C-A090-42198F2AF496}.Debug|x64.Build.0 = Debug|x64 + {8B820B9F-C154-417C-A090-42198F2AF496}.Release|Any CPU.ActiveCfg = Release|Win32 + {8B820B9F-C154-417C-A090-42198F2AF496}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {8B820B9F-C154-417C-A090-42198F2AF496}.Release|Mixed Platforms.Build.0 = Release|Win32 {8B820B9F-C154-417C-A090-42198F2AF496}.Release|Win32.ActiveCfg = Release|Win32 {8B820B9F-C154-417C-A090-42198F2AF496}.Release|Win32.Build.0 = Release|Win32 {8B820B9F-C154-417C-A090-42198F2AF496}.Release|x64.ActiveCfg = Release|x64 {8B820B9F-C154-417C-A090-42198F2AF496}.Release|x64.Build.0 = Release|x64 + {45A34285-56DD-4521-912B-3F884D36FA35}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {45A34285-56DD-4521-912B-3F884D36FA35}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {45A34285-56DD-4521-912B-3F884D36FA35}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {45A34285-56DD-4521-912B-3F884D36FA35}.Debug|Win32.ActiveCfg = Debug|Win32 {45A34285-56DD-4521-912B-3F884D36FA35}.Debug|Win32.Build.0 = Debug|Win32 {45A34285-56DD-4521-912B-3F884D36FA35}.Debug|x64.ActiveCfg = Debug|x64 {45A34285-56DD-4521-912B-3F884D36FA35}.Debug|x64.Build.0 = Debug|x64 + {45A34285-56DD-4521-912B-3F884D36FA35}.Release|Any CPU.ActiveCfg = Release|Win32 + {45A34285-56DD-4521-912B-3F884D36FA35}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {45A34285-56DD-4521-912B-3F884D36FA35}.Release|Mixed Platforms.Build.0 = Release|Win32 {45A34285-56DD-4521-912B-3F884D36FA35}.Release|Win32.ActiveCfg = Release|Win32 {45A34285-56DD-4521-912B-3F884D36FA35}.Release|Win32.Build.0 = Release|Win32 {45A34285-56DD-4521-912B-3F884D36FA35}.Release|x64.ActiveCfg = Release|x64 {45A34285-56DD-4521-912B-3F884D36FA35}.Release|x64.Build.0 = Release|x64 + {6D032D6B-7656-4743-B454-3388E2921EB0}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {6D032D6B-7656-4743-B454-3388E2921EB0}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {6D032D6B-7656-4743-B454-3388E2921EB0}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {6D032D6B-7656-4743-B454-3388E2921EB0}.Debug|Win32.ActiveCfg = Debug|Win32 {6D032D6B-7656-4743-B454-3388E2921EB0}.Debug|Win32.Build.0 = Debug|Win32 {6D032D6B-7656-4743-B454-3388E2921EB0}.Debug|x64.ActiveCfg = Debug|x64 {6D032D6B-7656-4743-B454-3388E2921EB0}.Debug|x64.Build.0 = Debug|x64 + {6D032D6B-7656-4743-B454-3388E2921EB0}.Release|Any CPU.ActiveCfg = Release|Win32 + {6D032D6B-7656-4743-B454-3388E2921EB0}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {6D032D6B-7656-4743-B454-3388E2921EB0}.Release|Mixed Platforms.Build.0 = Release|Win32 {6D032D6B-7656-4743-B454-3388E2921EB0}.Release|Win32.ActiveCfg = Release|Win32 {6D032D6B-7656-4743-B454-3388E2921EB0}.Release|Win32.Build.0 = Release|Win32 {6D032D6B-7656-4743-B454-3388E2921EB0}.Release|x64.ActiveCfg = Release|x64 {6D032D6B-7656-4743-B454-3388E2921EB0}.Release|x64.Build.0 = Release|x64 + {B9184DBA-C6B7-44FE-8BBD-0852DB22D2E4}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {B9184DBA-C6B7-44FE-8BBD-0852DB22D2E4}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {B9184DBA-C6B7-44FE-8BBD-0852DB22D2E4}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {B9184DBA-C6B7-44FE-8BBD-0852DB22D2E4}.Debug|Win32.ActiveCfg = Debug|Win32 {B9184DBA-C6B7-44FE-8BBD-0852DB22D2E4}.Debug|Win32.Build.0 = Debug|Win32 {B9184DBA-C6B7-44FE-8BBD-0852DB22D2E4}.Debug|x64.ActiveCfg = Debug|x64 {B9184DBA-C6B7-44FE-8BBD-0852DB22D2E4}.Debug|x64.Build.0 = Debug|x64 + {B9184DBA-C6B7-44FE-8BBD-0852DB22D2E4}.Release|Any CPU.ActiveCfg = Release|Win32 + {B9184DBA-C6B7-44FE-8BBD-0852DB22D2E4}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {B9184DBA-C6B7-44FE-8BBD-0852DB22D2E4}.Release|Mixed Platforms.Build.0 = Release|Win32 {B9184DBA-C6B7-44FE-8BBD-0852DB22D2E4}.Release|Win32.ActiveCfg = Release|Win32 {B9184DBA-C6B7-44FE-8BBD-0852DB22D2E4}.Release|Win32.Build.0 = Release|Win32 {B9184DBA-C6B7-44FE-8BBD-0852DB22D2E4}.Release|x64.ActiveCfg = Release|x64 {B9184DBA-C6B7-44FE-8BBD-0852DB22D2E4}.Release|x64.Build.0 = Release|x64 - {442084A6-2069-4927-B0C9-51525A720CB2}.Debug|Win32.ActiveCfg = Debug|Win32 - {442084A6-2069-4927-B0C9-51525A720CB2}.Debug|Win32.Build.0 = Debug|Win32 - {442084A6-2069-4927-B0C9-51525A720CB2}.Debug|x64.ActiveCfg = Debug|x64 - {442084A6-2069-4927-B0C9-51525A720CB2}.Debug|x64.Build.0 = Debug|x64 - {442084A6-2069-4927-B0C9-51525A720CB2}.Release|Win32.ActiveCfg = Release|Win32 - {442084A6-2069-4927-B0C9-51525A720CB2}.Release|x64.ActiveCfg = Release|x64 + {438D0136-4A27-4E4D-A617-FFACE4554236}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {438D0136-4A27-4E4D-A617-FFACE4554236}.Debug|Any CPU.Build.0 = Debug|Any CPU + {438D0136-4A27-4E4D-A617-FFACE4554236}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {438D0136-4A27-4E4D-A617-FFACE4554236}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {438D0136-4A27-4E4D-A617-FFACE4554236}.Debug|Win32.ActiveCfg = Debug|Any CPU + {438D0136-4A27-4E4D-A617-FFACE4554236}.Debug|x64.ActiveCfg = Debug|Any CPU + {438D0136-4A27-4E4D-A617-FFACE4554236}.Release|Any CPU.ActiveCfg = Release|Any CPU + {438D0136-4A27-4E4D-A617-FFACE4554236}.Release|Any CPU.Build.0 = Release|Any CPU + {438D0136-4A27-4E4D-A617-FFACE4554236}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {438D0136-4A27-4E4D-A617-FFACE4554236}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {438D0136-4A27-4E4D-A617-FFACE4554236}.Release|Win32.ActiveCfg = Release|Any CPU + {438D0136-4A27-4E4D-A617-FFACE4554236}.Release|x64.ActiveCfg = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/RainmeterEditor.vshost.exe.config b/RainmeterEditor.vshost.exe.config new file mode 100644 index 00000000..57c0f2cb --- /dev/null +++ b/RainmeterEditor.vshost.exe.config @@ -0,0 +1,3 @@ + + + diff --git a/RainmeterEditor/App.xaml b/RainmeterEditor/App.xaml new file mode 100644 index 00000000..aad2ee1f --- /dev/null +++ b/RainmeterEditor/App.xaml @@ -0,0 +1,8 @@ + + + + + diff --git a/RainmeterEditor/App.xaml.cs b/RainmeterEditor/App.xaml.cs new file mode 100644 index 00000000..dff941ce --- /dev/null +++ b/RainmeterEditor/App.xaml.cs @@ -0,0 +1,16 @@ +using System; +using System.Collections.Generic; +using System.Configuration; +using System.Data; +using System.Linq; +using System.Windows; + +namespace RainmeterEditor +{ + /// + /// Interaction logic for App.xaml + /// + public partial class App : Application + { + } +} diff --git a/RainmeterEditor/Interop/NativeLibrary.cs b/RainmeterEditor/Interop/NativeLibrary.cs new file mode 100644 index 00000000..0b30ef24 --- /dev/null +++ b/RainmeterEditor/Interop/NativeLibrary.cs @@ -0,0 +1,53 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Runtime.InteropServices; +using System.Text; + +namespace RainmeterEditor.Interop +{ + public class NativeLibrary : IDisposable + { + #region Imports + + [DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)] + private static extern IntPtr LoadLibrary(string libname); + + [DllImport("kernel32.dll", CharSet = CharSet.Ansi)] + private static extern bool FreeLibrary(IntPtr hModule); + + [DllImport("kernel32.dll", CharSet = CharSet.Ansi)] + private static extern IntPtr GetProcAddress(IntPtr hModule, string lpProcName); + + #endregion + + public string DllName { get; private set; } + private IntPtr _handle; + + public NativeLibrary(string dllName) + { + // Set properties + DllName = dllName; + + // Load library + _handle = LoadLibrary(DllName); + if (_handle == IntPtr.Zero) + { + int errorCode = Marshal.GetLastWin32Error(); + throw new BadImageFormatException(string.Format("Failed to load library (ErrorCode: {0})", errorCode)); + } + } + + public void Dispose() + { + if (_handle != IntPtr.Zero) + FreeLibrary(_handle); + } + + public Delegate GetFunctionByName(string name, Type delegateType) + { + IntPtr addr = GetProcAddress(_handle, name); + return Marshal.GetDelegateForFunctionPointer(addr, delegateType); + } + } +} diff --git a/RainmeterEditor/LICENSE b/RainmeterEditor/LICENSE new file mode 100644 index 00000000..fe5f7ed6 --- /dev/null +++ b/RainmeterEditor/LICENSE @@ -0,0 +1,20 @@ +The MIT License (MIT) + +Copyright (c) 2008 Ricardo Amores Hernández + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/RainmeterEditor/Model/RainmeterConfig.cs b/RainmeterEditor/Model/RainmeterConfig.cs new file mode 100644 index 00000000..86a23a16 --- /dev/null +++ b/RainmeterEditor/Model/RainmeterConfig.cs @@ -0,0 +1,11 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace RainmeterEditor.Model +{ + public class RainmeterConfig + { + } +} diff --git a/RainmeterEditor/Properties/AssemblyInfo.cs b/RainmeterEditor/Properties/AssemblyInfo.cs new file mode 100644 index 00000000..111b0a67 --- /dev/null +++ b/RainmeterEditor/Properties/AssemblyInfo.cs @@ -0,0 +1,55 @@ +using System.Reflection; +using System.Resources; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using System.Windows; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("RainmeterEditor")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("RainmeterEditor")] +[assembly: AssemblyCopyright("Copyright © 2014")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +//In order to begin building localizable applications, set +//CultureYouAreCodingWith in your .csproj file +//inside a . For example, if you are using US english +//in your source files, set the to en-US. Then uncomment +//the NeutralResourceLanguage attribute below. Update the "en-US" in +//the line below to match the UICulture setting in the project file. + +//[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)] + + +[assembly: ThemeInfo( + ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located + //(used if a resource is not found in the page, + // or application resource dictionaries) + ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located + //(used if a resource is not found in the page, + // app, or any theme specific resource dictionaries) +)] + + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/RainmeterEditor/Properties/Resources.Designer.cs b/RainmeterEditor/Properties/Resources.Designer.cs new file mode 100644 index 00000000..76b1fffe --- /dev/null +++ b/RainmeterEditor/Properties/Resources.Designer.cs @@ -0,0 +1,63 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.34014 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace RainmeterEditor.Properties { + using System; + + + /// + /// A strongly-typed resource class, for looking up localized strings, etc. + /// + // This class was auto-generated by the StronglyTypedResourceBuilder + // class via a tool like ResGen or Visual Studio. + // To add or remove a member, edit your .ResX file then rerun ResGen + // with the /str option, or rebuild your VS project. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() { + } + + /// + /// Returns the cached ResourceManager instance used by this class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager { + get { + if (object.ReferenceEquals(resourceMan, null)) { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("RainmeterEditor.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// Overrides the current thread's CurrentUICulture property for all + /// resource lookups using this strongly typed resource class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + } +} diff --git a/RainmeterEditor/Properties/Resources.resx b/RainmeterEditor/Properties/Resources.resx new file mode 100644 index 00000000..ffecec85 --- /dev/null +++ b/RainmeterEditor/Properties/Resources.resx @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/RainmeterEditor/Properties/Settings.Designer.cs b/RainmeterEditor/Properties/Settings.Designer.cs new file mode 100644 index 00000000..5c2289cb --- /dev/null +++ b/RainmeterEditor/Properties/Settings.Designer.cs @@ -0,0 +1,26 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.34014 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace RainmeterEditor.Properties { + + + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "12.0.0.0")] + internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { + + private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); + + public static Settings Default { + get { + return defaultInstance; + } + } + } +} diff --git a/RainmeterEditor/Properties/Settings.settings b/RainmeterEditor/Properties/Settings.settings new file mode 100644 index 00000000..8f2fd95d --- /dev/null +++ b/RainmeterEditor/Properties/Settings.settings @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/RainmeterEditor/Rainmeter.cs b/RainmeterEditor/Rainmeter.cs new file mode 100644 index 00000000..6eddbec1 --- /dev/null +++ b/RainmeterEditor/Rainmeter.cs @@ -0,0 +1,59 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Runtime.InteropServices; +using System.Text; +using RainmeterEditor.Interop; + +namespace RainmeterEditor +{ + class Rainmeter + { + #region Imports + + [DllImport("Rainmeter.dll", CallingConvention = CallingConvention.Cdecl)] + private static extern IntPtr Rainmeter_Initialize(); + + [DllImport("Rainmeter.dll", CallingConvention = CallingConvention.Cdecl)] + private static extern void Rainmeter_Finalize(IntPtr handle); + + #endregion + + private static Rainmeter _instance = null; + + /// + /// Gets the single instance of this class + /// + public static Rainmeter Instance + { + get + { + if (_instance == null) + _instance = new Rainmeter(); + + return _instance; + } + } + + private IntPtr _handle; + + #region Constructor, finalizer + + private Rainmeter() + { + _handle = Rainmeter_Initialize(); + + if (_handle == IntPtr.Zero) + throw new Exception("Failed to initialize native library."); + } + + ~Rainmeter() + { + Rainmeter_Finalize(_handle); + } + + #endregion + + public IntPtr Handle { get { return _handle; } } + } +} diff --git a/RainmeterEditor/RainmeterEditor.csproj b/RainmeterEditor/RainmeterEditor.csproj new file mode 100644 index 00000000..3fb8e5eb --- /dev/null +++ b/RainmeterEditor/RainmeterEditor.csproj @@ -0,0 +1,131 @@ + + + + + Debug + AnyCPU + {438D0136-4A27-4E4D-A617-FFACE4554236} + WinExe + Properties + RainmeterEditor + RainmeterEditor + v4.0 + 512 + {60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + 4 + + + + x86 + true + full + false + ..\x32-Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + ..\packages\ini-parser.2.1.1\lib\INIFileParser.dll + + + + + + + + + + + + + ..\packages\AvalonDock.2.0.2000\lib\net40\Xceed.Wpf.AvalonDock.dll + + + ..\packages\AvalonDock.2.0.2000\lib\net40\Xceed.Wpf.AvalonDock.Themes.Aero.dll + + + ..\packages\AvalonDock.2.0.2000\lib\net40\Xceed.Wpf.AvalonDock.Themes.Expression.dll + + + ..\packages\AvalonDock.2.0.2000\lib\net40\Xceed.Wpf.AvalonDock.Themes.Metro.dll + + + ..\packages\AvalonDock.2.0.2000\lib\net40\Xceed.Wpf.AvalonDock.Themes.VS2010.dll + + + + + MSBuild:Compile + Designer + + + + + + + SkinsPanel.xaml + + + MSBuild:Compile + Designer + + + App.xaml + Code + + + MainWindow.xaml + Code + + + Designer + MSBuild:Compile + + + + + Code + + + True + True + Resources.resx + + + True + Settings.settings + True + + + ResXFileCodeGenerator + Resources.Designer.cs + + + + + + SettingsSingleFileGenerator + Settings.Designer.cs + + + + + + \ No newline at end of file diff --git a/RainmeterEditor/Storage/SkinDirectory.cs b/RainmeterEditor/Storage/SkinDirectory.cs new file mode 100644 index 00000000..a617ab4e --- /dev/null +++ b/RainmeterEditor/Storage/SkinDirectory.cs @@ -0,0 +1,25 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Runtime.InteropServices; +using System.Text; + +namespace RainmeterEditor.Storage +{ + public static class SkinDirectory + { + private static string _path = null; + + public static string Path + { + get + { + return ""; + } + set + { + + } + } + } +} diff --git a/RainmeterEditor/UI/MainWindow.xaml b/RainmeterEditor/UI/MainWindow.xaml new file mode 100644 index 00000000..ec88b06e --- /dev/null +++ b/RainmeterEditor/UI/MainWindow.xaml @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Ready + + + diff --git a/RainmeterEditor/UI/MainWindow.xaml.cs b/RainmeterEditor/UI/MainWindow.xaml.cs new file mode 100644 index 00000000..64e22c5e --- /dev/null +++ b/RainmeterEditor/UI/MainWindow.xaml.cs @@ -0,0 +1,27 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace RainmeterEditor +{ + /// + /// Interaction logic for MainWindow.xaml + /// + public partial class MainWindow : Window + { + public MainWindow() + { + InitializeComponent(); + } + } +} diff --git a/RainmeterEditor/UI/SkinsPanel.xaml b/RainmeterEditor/UI/SkinsPanel.xaml new file mode 100644 index 00000000..de379aab --- /dev/null +++ b/RainmeterEditor/UI/SkinsPanel.xaml @@ -0,0 +1,16 @@ + + + + + + + + + + diff --git a/RainmeterEditor/UI/SkinsPanel.xaml.cs b/RainmeterEditor/UI/SkinsPanel.xaml.cs new file mode 100644 index 00000000..0b9c96bb --- /dev/null +++ b/RainmeterEditor/UI/SkinsPanel.xaml.cs @@ -0,0 +1,31 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; +using RainmeterEditor.Interop; +using RainmeterEditor.Storage; + +namespace RainmeterEditor.UI +{ + /// + /// Interaction logic for SkinsPanel.xaml + /// + public partial class SkinsPanel : UserControl + { + public SkinsPanel() + { + InitializeComponent(); + + var x = Rainmeter.Instance.Handle; + } + } +} diff --git a/RainmeterEditor/app.config b/RainmeterEditor/app.config new file mode 100644 index 00000000..57c0f2cb --- /dev/null +++ b/RainmeterEditor/app.config @@ -0,0 +1,3 @@ + + + diff --git a/RainmeterEditor/packages.config b/RainmeterEditor/packages.config new file mode 100644 index 00000000..f523d41a --- /dev/null +++ b/RainmeterEditor/packages.config @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/packages/AvalonDock.2.0.2000/AvalonDock.2.0.2000.nupkg b/packages/AvalonDock.2.0.2000/AvalonDock.2.0.2000.nupkg new file mode 100644 index 00000000..0b3d5101 Binary files /dev/null and b/packages/AvalonDock.2.0.2000/AvalonDock.2.0.2000.nupkg differ diff --git a/packages/AvalonDock.2.0.2000/AvalonDock.2.0.2000.nuspec b/packages/AvalonDock.2.0.2000/AvalonDock.2.0.2000.nuspec new file mode 100644 index 00000000..89e0af8f --- /dev/null +++ b/packages/AvalonDock.2.0.2000/AvalonDock.2.0.2000.nuspec @@ -0,0 +1,19 @@ + + + + AvalonDock + 2.0.2000 + AvalonDock + Xceed Software Inc. + Xceed Software Inc. + http://avalondock.codeplex.com/license + http://avalondock.codeplex.com/ + false + AvalonDock is a docking windows control for WPF that lets you create customizable layouts using a full featured window docking system similar to what is found in many popular integrated development environements (IDEs) such as Visual Studio. It includes themes and samples to get you started. + Powerful and free WPF docking windows control. + v2.0.2000 is a bug-fix release + Copyright (c) 2007-2013 Xceed Software Inc. + en-US + WPF Docking + + \ No newline at end of file diff --git a/packages/AvalonDock.2.0.2000/lib/net40/Xceed.Wpf.AvalonDock.Themes.Aero.dll b/packages/AvalonDock.2.0.2000/lib/net40/Xceed.Wpf.AvalonDock.Themes.Aero.dll new file mode 100644 index 00000000..18ebf372 Binary files /dev/null and b/packages/AvalonDock.2.0.2000/lib/net40/Xceed.Wpf.AvalonDock.Themes.Aero.dll differ diff --git a/packages/AvalonDock.2.0.2000/lib/net40/Xceed.Wpf.AvalonDock.Themes.Aero.pdb b/packages/AvalonDock.2.0.2000/lib/net40/Xceed.Wpf.AvalonDock.Themes.Aero.pdb new file mode 100644 index 00000000..11d1792d Binary files /dev/null and b/packages/AvalonDock.2.0.2000/lib/net40/Xceed.Wpf.AvalonDock.Themes.Aero.pdb differ diff --git a/packages/AvalonDock.2.0.2000/lib/net40/Xceed.Wpf.AvalonDock.Themes.Expression.dll b/packages/AvalonDock.2.0.2000/lib/net40/Xceed.Wpf.AvalonDock.Themes.Expression.dll new file mode 100644 index 00000000..ff2cc3f4 Binary files /dev/null and b/packages/AvalonDock.2.0.2000/lib/net40/Xceed.Wpf.AvalonDock.Themes.Expression.dll differ diff --git a/packages/AvalonDock.2.0.2000/lib/net40/Xceed.Wpf.AvalonDock.Themes.Expression.pdb b/packages/AvalonDock.2.0.2000/lib/net40/Xceed.Wpf.AvalonDock.Themes.Expression.pdb new file mode 100644 index 00000000..d9c51188 Binary files /dev/null and b/packages/AvalonDock.2.0.2000/lib/net40/Xceed.Wpf.AvalonDock.Themes.Expression.pdb differ diff --git a/packages/AvalonDock.2.0.2000/lib/net40/Xceed.Wpf.AvalonDock.Themes.Metro.dll b/packages/AvalonDock.2.0.2000/lib/net40/Xceed.Wpf.AvalonDock.Themes.Metro.dll new file mode 100644 index 00000000..4e391d41 Binary files /dev/null and b/packages/AvalonDock.2.0.2000/lib/net40/Xceed.Wpf.AvalonDock.Themes.Metro.dll differ diff --git a/packages/AvalonDock.2.0.2000/lib/net40/Xceed.Wpf.AvalonDock.Themes.Metro.pdb b/packages/AvalonDock.2.0.2000/lib/net40/Xceed.Wpf.AvalonDock.Themes.Metro.pdb new file mode 100644 index 00000000..cd0dea62 Binary files /dev/null and b/packages/AvalonDock.2.0.2000/lib/net40/Xceed.Wpf.AvalonDock.Themes.Metro.pdb differ diff --git a/packages/AvalonDock.2.0.2000/lib/net40/Xceed.Wpf.AvalonDock.Themes.VS2010.dll b/packages/AvalonDock.2.0.2000/lib/net40/Xceed.Wpf.AvalonDock.Themes.VS2010.dll new file mode 100644 index 00000000..71a35f58 Binary files /dev/null and b/packages/AvalonDock.2.0.2000/lib/net40/Xceed.Wpf.AvalonDock.Themes.VS2010.dll differ diff --git a/packages/AvalonDock.2.0.2000/lib/net40/Xceed.Wpf.AvalonDock.Themes.VS2010.pdb b/packages/AvalonDock.2.0.2000/lib/net40/Xceed.Wpf.AvalonDock.Themes.VS2010.pdb new file mode 100644 index 00000000..bcb0c501 Binary files /dev/null and b/packages/AvalonDock.2.0.2000/lib/net40/Xceed.Wpf.AvalonDock.Themes.VS2010.pdb differ diff --git a/packages/AvalonDock.2.0.2000/lib/net40/Xceed.Wpf.AvalonDock.dll b/packages/AvalonDock.2.0.2000/lib/net40/Xceed.Wpf.AvalonDock.dll new file mode 100644 index 00000000..a7d76cdd Binary files /dev/null and b/packages/AvalonDock.2.0.2000/lib/net40/Xceed.Wpf.AvalonDock.dll differ diff --git a/packages/AvalonDock.2.0.2000/lib/net40/Xceed.Wpf.AvalonDock.pdb b/packages/AvalonDock.2.0.2000/lib/net40/Xceed.Wpf.AvalonDock.pdb new file mode 100644 index 00000000..483c6a1d Binary files /dev/null and b/packages/AvalonDock.2.0.2000/lib/net40/Xceed.Wpf.AvalonDock.pdb differ diff --git a/packages/AvalonDock.2.0.2000/lib/net40/Xceed.Wpf.AvalonDock.xml b/packages/AvalonDock.2.0.2000/lib/net40/Xceed.Wpf.AvalonDock.xml new file mode 100644 index 00000000..abf092f2 --- /dev/null +++ b/packages/AvalonDock.2.0.2000/lib/net40/Xceed.Wpf.AvalonDock.xml @@ -0,0 +1,4044 @@ + + + + Xceed.Wpf.AvalonDock + + + + + Provides derived classes an opportunity to handle execute code before to the Parent property changes. + + + + + Provides derived classes an opportunity to handle changes to the Parent property. + + + + + Removes any empty container not directly referenced by other layout items + + + + + BackgroundWhileDragging Dependency Property + + + + + OpacityWhileDragging Dependency Property + + + + + Gets or sets the BackgroundWhileDragging property. This dependency property + indicates .... + + + + + Gets or sets the OpacityWhileDragging property. This dependency property + indicates .... + + + + + A static class for retail validated assertions. + Instead of breaking into the debugger an exception is thrown. + + + + + Ensure that the current thread's apartment state is what's expected. + + + The required apartment state for the current thread. + + + The message string for the exception to be thrown if the state is invalid. + + + Thrown if the calling thread's apartment state is not the same as the requiredState. + + + + + Ensure that an argument is neither null nor empty. + + The string to validate. + The name of the parameter that will be presented if an exception is thrown. + + + + Ensure that an argument is neither null nor does it consist only of whitespace. + + The string to validate. + The name of the parameter that will be presented if an exception is thrown. + + + Verifies that an argument is not null. + Type of the object to validate. Must be a class. + The object to validate. + The name of the parameter that will be presented if an exception is thrown. + + + Verifies that an argument is not null. + Type of the object to validate. Must be a class. + The object to validate. + The name of the parameter that will be presented if an exception is thrown. + + + Verifies that an argument is null. + Type of the object to validate. Must be a class. + The object to validate. + The name of the parameter that will be presented if an exception is thrown. + + + + Verifies the specified statement is true. Throws an ArgumentException if it's not. + + The statement to be verified as true. + Name of the parameter to include in the ArgumentException. + + + + Verifies the specified statement is true. Throws an ArgumentException if it's not. + + The statement to be verified as true. + Name of the parameter to include in the ArgumentException. + The message to include in the ArgumentException. + + + + Verifies that the specified value is within the expected range. The assertion fails if it isn't. + + The lower bound inclusive value. + The value to verify. + The upper bound exclusive value. + + + The native RGB macro. + + + + + Convert a native integer that represent a color with an alpha channel into a Color struct. + The integer that represents the color. Its bits are of the format 0xAARRGGBB. + A Color representation of the parameter. + + + From a list of BitmapFrames find the one that best matches the requested dimensions. + The methods used here are copied from Win32 sources. We want to be consistent with + system behaviors. + + + + Simple guard against the exceptions that File.Delete throws on null and empty strings. + + The path to delete. Unlike File.Delete, this can be null or empty. + + Note that File.Delete, and by extension SafeDeleteFile, does not throw an exception + if the file does not exist. + + + + GDI's DeleteObject + + + GDI+'s DisposeImage + + + + + Utility to help classes catenate their properties for implementing ToString(). + + The StringBuilder to catenate the results into. + The name of the property to be catenated. + The value of the property to be catenated. + + + + Generates ToString functionality for a struct. This is an expensive way to do it, + it exists for the sake of debugging while classes are in flux. + Eventually this should just be removed and the classes should + do this without reflection. + + + + + + + + Encodes a URL string. Duplicated functionality from System.Web.HttpUtility.UrlEncode. + + + + + Duplicated from System.Web.HttpUtility because System.Web isn't part of the client profile. + URL Encoding replaces ' ' with '+' and unsafe ASCII characters with '%XX'. + Safe characters are defined in RFC2396 (http://www.ietf.org/rfc/rfc2396.txt). + They are the 7-bit ASCII alphanumerics and the mark characters "-_.!~*'()". + This implementation does not treat '~' as a safe character to be consistent with the System.Web version. + + + + + Is this using WPF4? + + + There are a few specific bugs in Window in 3.5SP1 and below that require workarounds + when handling WM_NCCALCSIZE on the HWND. + + + + + Documents Read-Only Dependency Property + + + + + Provides a secure method for setting the Documents property. + This dependency property indicates the list of documents. + + The new value for the property. + + + + Anchorables Read-Only Dependency Property + + + + + Provides a secure method for setting the Anchorables property. + This dependency property indicates the list of anchorables. + + The new value for the property. + + + + SelectedDocument Dependency Property + + + + + Handles changes to the SelectedDocument property. + + + + + Provides derived classes an opportunity to handle changes to the SelectedDocument property. + + + + + SelectedAnchorable Dependency Property + + + + + Handles changes to the SelectedAnchorable property. + + + + + Provides derived classes an opportunity to handle changes to the SelectedAnchorable property. + + + + + Gets the Documents property. This dependency property + indicates the list of documents. + + + + + Gets the Anchorables property. This dependency property + indicates the list of anchorables. + + + + + Gets or sets the SelectedDocument property. This dependency property + indicates the selected document. + + + + + Gets or sets the SelectedAnchorable property. This dependency property + indicates the selected anchorable. + + + + + IsDragging Read-Only Dependency Property + + + + + Provides a secure method for setting the IsDragging property. + This dependency property indicates that this floating window is being dragged. + + The new value for the property. + + + + Handles changes to the IsDragging property. + + + + + Provides derived classes an opportunity to handle changes to the IsDragging property. + + + + + IsMaximized Read-Only Dependency Property + + + + + Provides a secure method for setting the IsMaximized property. + This dependency property indicates if the window is maximized. + + The new value for the property. + + + + Gets the IsDragging property. This dependency property + indicates that this floating window is being dragged. + + + + + Gets the IsMaximized property. This dependency property + indicates if the window is maximized. + + + + + Content Dependency Property + + + + + Handles changes to the Content property. + + + + + Provides derived classes an opportunity to handle changes to the Content property. + + + + + Gets or sets the Content property. This dependency property + indicates .... + + + + + Model Dependency Property + + + + + Handles changes to the Model property. + + + + + Provides derived classes an opportunity to handle changes to the Model property. + + + + + LayoutItem Read-Only Dependency Property + + + + + Provides a secure method for setting the LayoutItem property. + This dependency property indicates the LayoutItem attached to this tag item. + + The new value for the property. + + + + Gets or sets the Model property. This dependency property + indicates model attached to the anchorable tab item. + + + + + Gets the LayoutItem property. This dependency property + indicates the LayoutItem attached to this tag item. + + + + A static class for verifying assumptions. + + + + Executes the specified argument. + + The function to execute. + + + Obsolete: Use Standard.Assert.AreEqual instead of Assert.Equals + The generic type to compare for equality. + The first generic type data to compare. This is is the expected value. + The second generic type data to compare. This is the actual value. + + + + Verifies that two generic type data are equal. The assertion fails if they are not. + + The generic type to compare for equality. + The first generic type data to compare. This is is the expected value. + The second generic type data to compare. This is the actual value. + This breaks into the debugger in the case of a failed assertion. + + + + Verifies that two generic type data are not equal. The assertion fails if they are. + + The generic type to compare for inequality. + The first generic type data to compare. This is is the value that's not expected. + The second generic type data to compare. This is the actual value. + This breaks into the debugger in the case of a failed assertion. + + + + Verifies that if the specified condition is true, then so is the result. + The assertion fails if the condition is true but the result is false. + + if set to true [condition]. + + A second Boolean statement. If the first was true then so must this be. + If the first statement was false then the value of this is ignored. + + This breaks into the debugger in the case of a failed assertion. + + + + Lazy evaluation overload. Verifies that if a condition is true, then so is a secondary value. + + The conditional value. + A function to be evaluated for truth if the condition argument is true. + + This overload only evaluates the result if the first condition is true. + + + + + Verifies that a string has content. I.e. it is not null and it is not empty. + + The string to verify. + + + + Verifies that a string has content. I.e. it is not null and it is not purely whitespace. + + The string to verify. + + + + Verifies the specified value is not null. The assertion fails if it is. + + The generic reference type. + The value to check for nullness. + This breaks into the debugger in the case of a failed assertion. + + + + Verifies that the specified condition is false. The assertion fails if it is true. + + The expression that should be false. + This breaks into the debugger in the case of a failed assertion. + + + + Verifies that the specified condition is false. The assertion fails if it is true. + + The expression that should be false. + The message to display if the condition is true. + This breaks into the debugger in the case of a failed assertion. + + + + Verifies that the specified condition is true. The assertion fails if it is not. + + A condition that is expected to be true. + This breaks into the debugger in the case of a failed assertion. + + + + Verifies that the specified condition is true. The assertion fails if it is not. + + A condition that is expected to be true. + The message to write in case the condition is false. + This breaks into the debugger in the case of a failed assertion. + + + + This line should never be executed. The assertion always fails. + + This breaks into the debugger in the case of a failed assertion. + + + + This line should never be executed. The assertion always fails. + + The message to display if this function is executed. + This breaks into the debugger in the case of a failed assertion. + + + + Verifies that the specified object is null. The assertion fails if it is not. + + The item to verify is null. + + + + Verifies that the specified value is within the expected range. The assertion fails if it isn't. + + The lower bound inclusive value. + The value to verify. + The upper bound inclusive value. + + + + Verifies that the specified value is within the expected range. The assertion fails if it isn't. + + The lower bound inclusive value. + The value to verify. + The upper bound exclusive value. + + + + Verify the current thread's apartment state is what's expected. The assertion fails if it isn't + + + The expected apartment state for the current thread. + + This breaks into the debugger in the case of a failed assertion. + + + A function signature for Assert.Evaluate. + + + A function signature for Assert.Implies. + Returns the truth of a predicate. + + + + Get the input element that was focused before user left the layout element + + Element to look for + Input element + + + + Get the last window handle focused before user left the element passed as argument + + + + + + + Given a layout element tries to set the focus of the keyword where it was before user moved to another element + + + + + + Provides derived classes an opportunity to handle changes to the IsSelected property. + + + + + Provides derived classes an opportunity to handle changes to the IsActive property. + + + + + Test if the content can be closed + + + + + + Close the content + + Please note that usually the anchorable is only hidden (not closed). By default when user click the X button it only hides the content. + + + + Float the content in a popup window + + + + + Dock the content as document + + + + + Re-dock the content to its previous container + + + + + Event fired when the content is closed (i.e. removed definitely from the layout) + + + + + Event fired when the content is about to be closed (i.e. removed definitely from the layout) + + Please note that LayoutAnchorable also can be hidden. Usually user hide anchorables when click the 'X' button. To completely close + an anchorable the user should click the 'Close' menu item from the context menu. When an LayoutAnchorable is hidden its visibility changes to false and + IsHidden property is set to true. + Hanlde the Hiding event for the LayoutAnchorable to cancel the hide operation. + + + + Background Dependency Property + + + + + AnchorableStyle Dependency Property + + + + + Gets or sets the Background property. This dependency property + indicates background of the autohide childwindow. + + + + + Gets or sets the AnchorableStyle property. This dependency property + indicates the style to apply to the LayoutAnchorableControl hosted in this auto hide window. + + + + + SingleContentLayoutItem Dependency Property + + + + + Handles changes to the SingleContentLayoutItem property. + + + + + Provides derived classes an opportunity to handle changes to the SingleContentLayoutItem property. + + + + + Gets or sets the SingleContentLayoutItem property. This dependency property + indicates the layout item of the selected content when is shown a single anchorable pane. + + + + ShellItem attribute flags. SIATTRIBFLAGS_* + + + + Flags for SetTabProperties. STPF_* + + The native enum was called STPFLAG. + + + + Flags for Setting Taskbar Progress state. TBPF_* + + + The native enum was called TBPFLAG. + + + + + THUMBBUTTON mask. THB_* + + + + + THUMBBUTTON flags. THBF_* + + + + + GetPropertyStoreFlags. GPS_*. + + + These are new for Vista, but are used in downlevel components + + + + + KNOWNDESTCATEGORY. KDC_* + + + + Objects can be copied + DROPEFFECT_COPY + + + Objects can be moved + DROPEFFECT_MOVE + + + Objects can be linked + + DROPEFFECT_LINK. + + If this bit is set on an item in the shell folder, a + 'Create Shortcut' menu item will be added to the File + menu and context menus for the item. If the user selects + that command, your IContextMenu::InvokeCommand() will be called + with 'link'. + That flag will also be used to determine if 'Create Shortcut' + should be added when the item in your folder is dragged to another + folder. + + + + supports BindToObject(IID_IStorage) + + + Objects can be renamed + + + Objects can be deleted + + + Objects have property sheets + + + Objects are drop target + + + Object is encrypted (use alt color) + + + 'Slow' object + + + Ghosted icon + + + Shortcut (link) + + + Shared + + + Read-only + + + Hidden object + + + May contain children with SFGAO_FILESYSTEM + + + Support BindToObject(IID_IShellFolder) + + + Is a win32 file system object (file/folder/root) + + + May contain children with SFGAO_FOLDER (may be slow) + + + Invalidate cached information (may be slow) + + + Is this removeable media? + + + Object is compressed (use alt color) + + + Supports IShellFolder, but only implements CreateViewObject() (non-folder view) + + + Is a non-enumerated object (should be hidden) + + + Should show bold in explorer tree + + + Obsolete + + + Obsolete + + + Supports BindToObject(IID_IStream) + + + May contain children with SFGAO_STORAGE or SFGAO_STREAM + + + For determining storage capabilities, ie for open/save semantics + + + + Attributes that are masked out for PKEY_SFGAOFlags because they are considered + to cause slow calculations or lack context + (SFGAO_VALIDATE | SFGAO_ISSLOW | SFGAO_HASSUBFOLDER and others) + + + + + IShellFolder::EnumObjects grfFlags bits. Also called SHCONT + + + + + IShellFolder::GetDisplayNameOf/SetNameOf uFlags. Also called SHGDNF. + + + For compatibility with SIGDN, these bits must all sit in the LOW word. + + + + + SHELLITEMCOMPAREHINTF. SICHINT_*. + + + + iOrder based on display in a folder view + + + exact instance compare + + + iOrder based on canonical name (better performance) + + + + ShellItem enum. SIGDN_*. + + + + + STR_GPS_* + + + When requesting a property store through IShellFolder, you can specify the equivalent of + GPS_DEFAULT by passing in a null IBindCtx parameter. + + You can specify the equivalent of GPS_READWRITE by passing a mode of STGM_READWRITE | STGM_EXCLUSIVE + in the bind context + + Here are the string versions of GPS_ flags, passed to IShellFolder::BindToObject() via IBindCtx::RegisterObjectParam() + These flags are valid when requesting an IPropertySetStorage or IPropertyStore handler + + The meaning of these flags are described above. + + There is no STR_ equivalent for GPS_TEMPORARY because temporary property stores + are provided by IShellItem2 only -- not by the underlying IShellFolder. + + + + + WPARAM value for a THUMBBUTTON being clicked. + + + + fmtid + + + pid + + + PKEY_Title + + + PKEY_AppUserModel_ID + + + PKEY_AppUserModel_IsDestListSeparator + + + PKEY_AppUserModel_RelaunchCommand + + + PKEY_AppUserModel_RelaunchDisplayNameResource + + + PKEY_AppUserModel_RelaunchIconResource + + + Unknown Object Array + + + + Shell Namespace helper + + + + + Shell Namespace helper 2 + + + + + This function must be called first to validate use of other members. + + + + + This function adds a tab for hwnd to the taskbar. + + The HWND for which to add the tab. + + + + This function deletes a tab for hwnd from the taskbar. + + The HWND for which the tab is to be deleted. + + + + This function activates the tab associated with hwnd on the taskbar. + + The HWND for which the tab is to be actuvated. + + + + This function marks hwnd in the taskbar as the active tab. + + The HWND to activate. + + + + Marks a window as full-screen. + + The handle of the window to be marked. + A Boolean value marking the desired full-screen status of the window. + + Setting the value of fFullscreen to true, the Shell treats this window as a full-screen window, and the taskbar + is moved to the bottom of the z-order when this window is active. Setting the value of fFullscreen to false + removes the full-screen marking, but does not cause the Shell to treat the window as though it were + definitely not full-screen. With a false fFullscreen value, the Shell depends on its automatic detection facility + to specify how the window should be treated, possibly still flagging the window as full-screen. + + + + + Allows an application to retrieve the most recent and frequent documents opened in that app, as reported via SHAddToRecentDocs + + + + + Set the App User Model ID for the application retrieving this list. If an AppID is not provided via this method, + the system will use a heuristically determined ID. This method must be called before GetList. + + App Id. + + + + Retrieve an IEnumObjects or IObjectArray for IShellItems and/or IShellLinks. + Items may appear in both the frequent and recent lists. + + + + + + + Provides access to the App User Model ID on objects supporting this value. + + + + + Provides access to the ProgID associated with an object + + + + + Title Dependency Property + + + + + Handles changes to the Title property. + + + + + Provides derived classes an opportunity to handle changes to the Title property. + + + + + IconSource Dependency Property + + + + + Handles changes to the IconSource property. + + + + + Provides derived classes an opportunity to handle changes to the IconSource property. + + + + + ContentId Dependency Property + + + + + Handles changes to the ContentId property. + + + + + Provides derived classes an opportunity to handle changes to the ContentId property. + + + + + IsSelected Dependency Property + + + + + Handles changes to the IsSelected property. + + + + + Provides derived classes an opportunity to handle changes to the IsSelected property. + + + + + IsActive Dependency Property + + + + + Handles changes to the IsActive property. + + + + + Provides derived classes an opportunity to handle changes to the IsActive property. + + + + + CanClose Dependency Property + + + + + Handles changes to the CanClose property. + + + + + Provides derived classes an opportunity to handle changes to the CanClose property. + + + + + CanFloat Dependency Property + + + + + Handles changes to the CanFloat property. + + + + + Provides derived classes an opportunity to handle changes to the CanFloat property. + + + + + CloseCommand Dependency Property + + + + + Handles changes to the CloseCommand property. + + + + + Provides derived classes an opportunity to handle changes to the CloseCommand property. + + + + + Coerces the CloseCommand value. + + + + + FloatCommand Dependency Property + + + + + Handles changes to the FloatCommand property. + + + + + Provides derived classes an opportunity to handle changes to the FloatCommand property. + + + + + Coerces the FloatCommand value. + + + + + DockAsDocumentCommand Dependency Property + + + + + Handles changes to the DockAsDocumentCommand property. + + + + + Provides derived classes an opportunity to handle changes to the DockAsDocumentCommand property. + + + + + Coerces the DockAsDocumentCommand value. + + + + + CloseAllButThisCommand Dependency Property + + + + + Handles changes to the CloseAllButThisCommand property. + + + + + Provides derived classes an opportunity to handle changes to the CloseAllButThisCommand property. + + + + + Coerces the CloseAllButThisCommand value. + + + + + ActivateCommand Dependency Property + + + + + Handles changes to the ActivateCommand property. + + + + + Provides derived classes an opportunity to handle changes to the ActivateCommand property. + + + + + Coerces the ActivateCommand value. + + + + + NewVerticalTabGroupCommand Dependency Property + + + + + Handles changes to the NewVerticalTabGroupCommand property. + + + + + Provides derived classes an opportunity to handle changes to the NewVerticalTabGroupCommand property. + + + + + NewHorizontalTabGroupCommand Dependency Property + + + + + Handles changes to the NewHorizontalTabGroupCommand property. + + + + + Provides derived classes an opportunity to handle changes to the NewHorizontalTabGroupCommand property. + + + + + MoveToNextTabGroupCommand Dependency Property + + + + + Handles changes to the MoveToNextTabGroupCommand property. + + + + + Provides derived classes an opportunity to handle changes to the MoveToNextTabGroupCommand property. + + + + + MoveToPreviousTabGroupCommand Dependency Property + + + + + Handles changes to the MoveToPreviousTabGroupCommand property. + + + + + Provides derived classes an opportunity to handle changes to the MoveToPreviousTabGroupCommand property. + + + + + Gets or sets the Title property. This dependency property + indicates the title of the element. + + + + + Gets or sets the IconSource property. This dependency property + indicates icon associated with the item. + + + + + Gets or sets the ContentId property. This dependency property + indicates the content id used to retrive content when deserializing layouts. + + + + + Gets or sets the IsSelected property. This dependency property + indicates if the item is selected inside its container. + + + + + Gets or sets the IsActive property. This dependency property + indicates if the item is active in the UI. + + + + + Gets or sets the CanClose property. This dependency property + indicates if the item can be closed. + + + + + Gets or sets the CanFloat property. This dependency property + indicates if user can move the layout element dragging it to another position. + + + + + Gets or sets the CloseCommand property. This dependency property + indicates the command to execute when user click the document close button. + + + + + Gets or sets the FloatCommand property. This dependency property + indicates the command to execute when user click the float button. + + By default this command move the anchorable inside new floating window. + + + + Gets or sets the DockAsDocumentCommand property. This dependency property + indicates the command to execute when user click the DockAsDocument button. + + By default this command move the anchorable inside the last focused document pane. + + + + Gets or sets the CloseAllButThisCommand property. This dependency property + indicates the 'Close All But This' command. + + + + + Gets or sets the ActivateCommand property. This dependency property + indicates the command to execute when user wants to activate a content (either a Document or an Anchorable). + + + + + Gets or sets the NewVerticalTabGroupCommand property. This dependency property + indicates the new vertical tab group command. + + + + + Gets or sets the NewHorizontalTabGroupCommand property. This dependency property + indicates the new horizontal tab group command. + + + + + Gets or sets the MoveToNextTabGroupCommand property. This dependency property + indicates move to next tab group command. + + + + + Gets or sets the MoveToPreviousTabGroupCommand property. This dependency property + indicates move to rpevious tab group command. + + + + + Side Read-Only Dependency Property + + + + + Provides a secure method for setting the Side property. + This dependency property indicates the anchor side of the control. + + The new value for the property. + + + + Gets the Side property. This dependency property + indicates the anchor side of the control. + + + + The extent of the top of the window to treat as the caption. + + + + Gets or sets the ShowSystemMenu property. This dependency property + indicates if the system menu should be shown at right click on the caption. + + + + + Convert a point in device independent pixels (1/96") to a point in the system coordinates. + + A point in the logical coordinate system. + Returns the parameter converted to the system's coordinates. + + + + Convert a point in system coordinates to a point in device independent pixels (1/96"). + + A point in the physical coordinate system. + Returns the parameter converted to the device independent coordinate system. + + + The Window that's chrome is being modified. + + + Underlying HWND for the _window. + + + Object that describes the current modifications being made to the chrome. + + + Add and remove a native WindowStyle from the HWND. + The styles to be removed. These can be bitwise combined. + The styles to be added. These can be bitwise combined. + Whether the styles of the HWND were modified as a result of this call. + + + + Get the WindowState as the native HWND knows it to be. This isn't necessarily the same as what Window thinks. + + + + + Get the bounding rectangle for the window in physical coordinates. + + The bounding rectangle for the window. + + + + Update the items in the system menu based on the current, or assumed, WindowState. + + + The state to assume that the Window is in. This can be null to query the Window's state. + + + We want to update the menu while we have some control over whether the caption will be repainted. + + + + + Matrix of the HT values to return when responding to NC window messages. + + + + IID_IEnumIDList + + + IID_IEnumObjects + + + IID_IHTMLDocument2 + + + IID_IModalWindow + + + IID_IObjectArray + + + IID_IObjectCollection + + + IID_IPropertyNotifySink + + + IID_IPropertyStore + + + IID_IServiceProvider + + + IID_IShellFolder + + + IID_IShellLink + + + IID_IShellItem + + + IID_IShellItem2 + + + IID_IShellItemArray + + + IID_ITaskbarList + + + IID_ITaskbarList2 + + + IID_IUnknown + + + IID_IApplicationDestinations + + + IID_IApplicationDocumentLists + + + IID_ICustomDestinationList + + + IID_IObjectWithAppUserModelID + + + IID_IObjectWithProgID + + + IID_ITaskbarList3 + + + IID_ITaskbarList4 + + + CLSID_TaskbarList + IID_ITaskbarList + + + CLSID_EnumerableObjectCollection + IID_IEnumObjects. + + + CLSID_ShellLink + IID_IShellLink + + + CLSID_DestinationList + IID_ICustomDestinationList + + + CLSID_ApplicationDestinations + IID_IApplicationDestinations + + + CLSID_ApplicationDocumentLists + IID_IApplicationDocumentLists + + + + IsDraggingOver Attached Dependency Property + + + + + Gets the IsDraggingOver property. This dependency property + indicates if user is dragging a window over the target element. + + + + + Sets the IsDraggingOver property. This dependency property + indicates if user is dragging away a window from the target element. + + + + + DropDownContextMenu Dependency Property + + + + + DropDownContextMenuDataContext Dependency Property + + + + + Gets or sets the DropDownContextMenu property. This dependency property + indicates context menu to show when a right click is detected over the area occpied by the control. + + + + + Gets or sets the DropDownContextMenuDataContext property. This dependency property + indicates data context to attach when context menu is shown. + + + + + DropDownContextMenu Dependency Property + + + + + Handles changes to the DropDownContextMenu property. + + + + + Provides derived classes an opportunity to handle changes to the DropDownContextMenu property. + + + + + DropDownContextMenuDataContext Dependency Property + + + + + Gets or sets the DropDownContextMenu property. This dependency property + indicates drop down menu to show up when user click on an anchorable menu pin. + + + + + Gets or sets the DropDownContextMenuDataContext property. This dependency property + indicates data context to set for drop down context menu. + + + + + Model Dependency Property + + + + + Handles changes to the Model property. + + + + + Provides derived classes an opportunity to handle changes to the Model property. + + + + + LayoutItem Read-Only Dependency Property + + + + + Provides a secure method for setting the LayoutItem property. + This dependency property indicates the LayoutItem attached to this tag item. + + The new value for the property. + + + + Gets or sets the Model property. This dependency property + indicates the model attached to this view. + + + + + Gets the LayoutItem property. This dependency property + indicates the LayoutItem attached to this tag item. + + + + Display the system menu at a specified location. + The location to display the system menu, in logical screen coordinates. + + + + Private constructor. The public way to access this class is through the static Current property. + + + + + Hide this contents + + Add this content to collection of parent root. + + + + Show the content + + Try to show the content where it was previously hidden. + + + + Add the anchorable to a DockingManager layout + + + + + + + Get a value indicating if the anchorable is anchored to a border in an autohide status + + + + + Layout Dependency Property + + + + + Handles changes to the Layout property. + + + + + Provides derived classes an opportunity to handle changes to the property. + + + + + Coerces the value. + + + + + LayoutUpdateStrategy Dependency Property + + + + + DocumentPaneTemplate Dependency Property + + + + + Handles changes to the DocumentPaneTemplate property. + + + + + Provides derived classes an opportunity to handle changes to the DocumentPaneTemplate property. + + + + + AnchorablePaneTemplate Dependency Property + + + + + Handles changes to the AnchorablePaneDataTemplate property. + + + + + Provides derived classes an opportunity to handle changes to the AnchorablePaneDataTemplate property. + + + + + AnchorSideTemplate Dependency Property + + + + + AnchorGroupTemplate Dependency Property + + + + + AnchorTemplate Dependency Property + + + + + DocumentPaneControlStyle Dependency Property + + + + + Handles changes to the DocumentPaneControlStyle property. + + + + + Provides derived classes an opportunity to handle changes to the DocumentPaneControlStyle property. + + + + + AnchorablePaneControlStyle Dependency Property + + + + + Handles changes to the AnchorablePaneControlStyle property. + + + + + Provides derived classes an opportunity to handle changes to the AnchorablePaneControlStyle property. + + + + + DocumentHeaderTemplate Dependency Property + + + + + Handles changes to the DocumentHeaderTemplate property. + + + + + Provides derived classes an opportunity to handle changes to the DocumentHeaderTemplate property. + + + + + Coerces the DocumentHeaderTemplate value. + + + + + DocumentHeaderTemplateSelector Dependency Property + + + + + Handles changes to the DocumentHeaderTemplateSelector property. + + + + + Provides derived classes an opportunity to handle changes to the DocumentHeaderTemplateSelector property. + + + + + Coerces the DocumentHeaderTemplateSelector value. + + + + + DocumentTitleTemplate Dependency Property + + + + + Handles changes to the DocumentTitleTemplate property. + + + + + Provides derived classes an opportunity to handle changes to the DocumentTitleTemplate property. + + + + + Coerces the DocumentTitleTemplate value. + + + + + DocumentTitleTemplateSelector Dependency Property + + + + + Handles changes to the DocumentTitleTemplateSelector property. + + + + + Provides derived classes an opportunity to handle changes to the DocumentTitleTemplateSelector property. + + + + + Coerces the DocumentTitleTemplateSelector value. + + + + + AnchorableTitleTemplate Dependency Property + + + + + Handles changes to the AnchorableTitleTemplate property. + + + + + Provides derived classes an opportunity to handle changes to the AnchorableTitleTemplate property. + + + + + Coerces the AnchorableTitleTemplate value. + + + + + AnchorableTitleTemplateSelector Dependency Property + + + + + Handles changes to the AnchorableTitleTemplateSelector property. + + + + + Provides derived classes an opportunity to handle changes to the AnchorableTitleTemplateSelector property. + + + + + AnchorableHeaderTemplate Dependency Property + + + + + Handles changes to the AnchorableHeaderTemplate property. + + + + + Provides derived classes an opportunity to handle changes to the AnchorableHeaderTemplate property. + + + + + Coerces the AnchorableHeaderTemplate value. + + + + + AnchorableHeaderTemplateSelector Dependency Property + + + + + Handles changes to the AnchorableHeaderTemplateSelector property. + + + + + Provides derived classes an opportunity to handle changes to the AnchorableHeaderTemplateSelector property. + + + + + LayoutRootPanel Dependency Property + + + + + Handles changes to the LayoutRootPanel property. + + + + + Provides derived classes an opportunity to handle changes to the LayoutRootPanel property. + + + + + RightSidePanel Dependency Property + + + + + Handles changes to the RightSidePanel property. + + + + + Provides derived classes an opportunity to handle changes to the RightSidePanel property. + + + + + LeftSidePanel Dependency Property + + + + + Handles changes to the LeftSidePanel property. + + + + + Provides derived classes an opportunity to handle changes to the LeftSidePanel property. + + + + + TopSidePanel Dependency Property + + + + + Handles changes to the TopSidePanel property. + + + + + Provides derived classes an opportunity to handle changes to the TopSidePanel property. + + + + + BottomSidePanel Dependency Property + + + + + Handles changes to the BottomSidePanel property. + + + + + Provides derived classes an opportunity to handle changes to the BottomSidePanel property. + + + + + AutoHideWindow Read-Only Dependency Property + + + + + Provides a secure method for setting the AutoHideWindow property. + This dependency property indicates the currently shown autohide window. + + The new value for the property. + + + + Handles changes to the AutoHideWindow property. + + + + + Provides derived classes an opportunity to handle changes to the AutoHideWindow property. + + + + + LayoutItemTemplate Dependency Property + + + + + Handles changes to the AnchorableTemplate property. + + + + + Provides derived classes an opportunity to handle changes to the AnchorableTemplate property. + + + + + LayoutItemTemplateSelector Dependency Property + + + + + Handles changes to the LayoutItemTemplateSelector property. + + + + + Provides derived classes an opportunity to handle changes to the LayoutItemTemplateSelector property. + + + + + DocumentsSource Dependency Property + + + + + Handles changes to the DocumentsSource property. + + + + + Provides derived classes an opportunity to handle changes to the DocumentsSource property. + + + + + DocumentContextMenu Dependency Property + + + + + AnchorablesSource Dependency Property + + + + + Handles changes to the AnchorablesSource property. + + + + + Provides derived classes an opportunity to handle changes to the AnchorablesSource property. + + + + + ActiveContent Dependency Property + + + + + Handles changes to the ActiveContent property. + + + + + Provides derived classes an opportunity to handle changes to the ActiveContent property. + + + + + AnchorableContextMenu Dependency Property + + + + + Theme Dependency Property + + + + + Handles changes to the Theme property. + + + + + Provides derived classes an opportunity to handle changes to the Theme property. + + + + + GridSplitterWidth Dependency Property + + + + + GridSplitterHeight Dependency Property + + + + + DocumentPaneMenuItemHeaderTemplate Dependency Property + + + + + Handles changes to the DocumentPaneMenuItemHeaderTemplate property. + + + + + Provides derived classes an opportunity to handle changes to the DocumentPaneMenuItemHeaderTemplate property. + + + + + Coerces the DocumentPaneMenuItemHeaderTemplate value. + + + + + DocumentPaneMenuItemHeaderTemplateSelector Dependency Property + + + + + Handles changes to the DocumentPaneMenuItemHeaderTemplateSelector property. + + + + + Provides derived classes an opportunity to handle changes to the DocumentPaneMenuItemHeaderTemplateSelector property. + + + + + Coerces the DocumentPaneMenuItemHeaderTemplateSelector value. + + + + + IconContentTemplate Dependency Property + + + + + IconContentTemplateSelector Dependency Property + + + + + LayoutItemContainerStyle Dependency Property + + + + + Handles changes to the LayoutItemContainerStyle property. + + + + + Provides derived classes an opportunity to handle changes to the LayoutItemContainerStyle property. + + + + + LayoutItemContainerStyleSelector Dependency Property + + + + + Handles changes to the LayoutItemContainerStyleSelector property. + + + + + Provides derived classes an opportunity to handle changes to the LayoutItemContainerStyleSelector property. + + + + + Return the LayoutItem wrapper for the content passed as argument + + LayoutContent to search + Either a LayoutAnchorableItem or LayoutDocumentItem which contains the LayoutContent passed as argument + + + + ShowSystemMenu Dependency Property + + + + + AllowMixedOrientation Dependency Property + + + + + Gets or sets the Layout property. This dependency property + indicates layout tree. + + + + + Event fired when property changes + + + + + Event fired when property is about to be changed + + + + + Gets or sets the LayoutUpdateStrategy property. This dependency property + indicates the strategy class to call when AvalonDock needs to positionate a LayoutAnchorable inside an existing layout. + + Sometimes it's impossible to automatically insert an anchorable in the layout without specifing the target parent pane. + Set this property to an object that will be asked to insert the anchorable to the desidered position. + + + + Gets or sets the DocumentPaneDataTemplate property. This dependency property + indicates . + + + + + Gets or sets the AnchorablePaneTemplate property. This dependency property + indicates .... + + + + + Gets or sets the AnchorSideTemplate property. This dependency property + indicates .... + + + + + Gets or sets the AnchorGroupTemplate property. This dependency property + indicates the template used to render the AnchorGroup control. + + + + + Gets or sets the AnchorTemplate property. This dependency property + indicates .... + + + + + Gets or sets the DocumentPaneControlStyle property. This dependency property + indicates .... + + + + + Gets or sets the AnchorablePaneControlStyle property. This dependency property + indicates the style to apply to AnchorablePaneControl. + + + + + Gets or sets the DocumentHeaderTemplate property. This dependency property + indicates data template to use for document header. + + + + + Gets or sets the DocumentHeaderTemplateSelector property. This dependency property + indicates the template selector that is used when selcting the data template for the header. + + + + + Gets or sets the DocumentTitleTemplate property. This dependency property + indicates the datatemplate to use when creating the title for a document. + + + + + Gets or sets the DocumentTitleTemplateSelector property. This dependency property + indicates the data template selector to use when creating the data template for the title. + + + + + Gets or sets the AnchorableTitleTemplate property. This dependency property + indicates the data template to use for anchorables title. + + + + + Gets or sets the AnchorableTitleTemplateSelector property. This dependency property + indicates selctor to use when selecting data template for the title of anchorables. + + + + + Gets or sets the AnchorableHeaderTemplate property. This dependency property + indicates the data template to use for anchorable templates. + + + + + Gets or sets the AnchorableHeaderTemplateSelector property. This dependency property + indicates the selector to use when selecting the data template for anchorable headers. + + + + + Gets or sets the LayoutRootPanel property. This dependency property + indicates the layout panel control which is attached to the Layout.Root property. + + + + + Gets or sets the RightSidePanel property. This dependency property + indicates right side anchor panel. + + + + + Gets or sets the LeftSidePanel property. This dependency property + indicates the left side panel control. + + + + + Gets or sets the TopSidePanel property. This dependency property + indicates top side control panel. + + + + + Gets or sets the BottomSidePanel property. This dependency property + indicates bottom side panel control. + + + + + Gets the AutoHideWindow property. This dependency property + indicates the currently shown autohide window. + + + + + Gets or sets the AnchorableTemplate property. This dependency property + indicates the template to use to render anchorable and document contents. + + + + + Gets or sets the LayoutItemTemplateSelector property. This dependency property + indicates selector object to use for anchorable templates. + + + + + Gets or sets the DocumentsSource property. This dependency property + indicates the source collection of documents. + + + + + Event fired when a document is about to be closed + + Subscribers have the opportuniy to cancel the operation. + + + + Event fired after a document is closed + + + + + Gets or sets the DocumentContextMenu property. This dependency property + indicates context menu to show for documents. + + + + + Gets or sets the AnchorablesSource property. This dependency property + indicates source collection of anchorables. + + + + + Gets or sets the ActiveContent property. This dependency property + indicates the content currently active. + + + + + Gets or sets the AnchorableContextMenu property. This dependency property + indicates the context menu to show up for anchorables. + + + + + Gets or sets the Theme property. This dependency property + indicates the theme to use for AvalonDock controls. + + + + + Gets or sets the GridSplitterWidth property. This dependency property + indicates width of grid splitters. + + + + + Gets or sets the GridSplitterHeight property. This dependency property + indicates height of grid splitters. + + + + + Gets or sets the DocumentPaneMenuItemHeaderTemplate property. This dependency property + indicates the header template to use while creating menu items for the document panes. + + + + + Gets or sets the DocumentPaneMenuItemHeaderTemplateSelector property. This dependency property + indicates the data template selector to use for the menu items show when user select the DocumentPane document switch context menu. + + + + + Gets or sets the IconContentTemplate property. This dependency property + indicates the data template to use while extracting the icon from model. + + + + + Gets or sets the IconContentTemplateSelector property. This dependency property + indicates data template selector to use while selecting the datatamplate for content icons. + + + + + Gets or sets the LayoutItemContainerStyle property. This dependency property + indicates the style to apply to LayoutDocumentItem objects. A LayoutDocumentItem object is created when a new LayoutDocument is created inside the current Layout. + + + + + Gets or sets the LayoutItemContainerStyleSelector property. This dependency property + indicates style selector of the LayoutDocumentItemStyle. + + + + + Gets or sets the ShowSystemMenu property. This dependency property + indicates if floating windows should show the system menu when a custom context menu is not defined. + + + + + Gets or sets the AllowMixedOrientation property. This dependency property + indicates if the manager should allow mixed orientation for document panes. + + + + + Converts a value. + + The value produced by the binding source. + The type of the binding target property. + The converter parameter to use. + The culture to use in the converter. + + A converted value. If the method returns null, the valid null value is used. + + + + + Converts a value. + + The value that is produced by the binding target. + The type to convert to. + The converter parameter to use. + The culture to use in the converter. + + A converted value. If the method returns null, the valid null value is used. + + + + + Wraps a managed stream instance into an interface pointer consumable by COM. + + + + + Initializes a new instance of the ManagedIStream class with the specified managed Stream object. + + + The stream that this IStream reference is wrapping. + + + + + Creates a new stream object with its own seek pointer that + references the same bytes as the original stream. + + + When this method returns, contains the new stream object. This parameter is passed uninitialized. + + + For more information, see the existing documentation for IStream::Clone in the MSDN library. + This class doesn't implement Clone. A COMException is thrown if it is used. + + + + + Ensures that any changes made to a stream object that is open in transacted + mode are reflected in the parent storage. + + + A value that controls how the changes for the stream object are committed. + + + For more information, see the existing documentation for IStream::Commit in the MSDN library. + + + + + Copies a specified number of bytes from the current seek pointer in the + stream to the current seek pointer in another stream. + + + A reference to the destination stream. + + + The number of bytes to copy from the source stream. + + + On successful return, contains the actual number of bytes read from the source. + (Note the native signature is to a ULARGE_INTEGER*, so 64 bits are written + to this parameter on success.) + + + On successful return, contains the actual number of bytes written to the destination. + (Note the native signature is to a ULARGE_INTEGER*, so 64 bits are written + to this parameter on success.) + + + + + Restricts access to a specified range of bytes in the stream. + + + The byte offset for the beginning of the range. + + + The length of the range, in bytes, to restrict. + + + The requested restrictions on accessing the range. + + + For more information, see the existing documentation for IStream::LockRegion in the MSDN library. + This class doesn't implement LockRegion. A COMException is thrown if it is used. + + + + + Reads a specified number of bytes from the stream object into memory starting at the current seek pointer. + + + When this method returns, contains the data read from the stream. This parameter is passed uninitialized. + + + The number of bytes to read from the stream object. + + + A pointer to a ULONG variable that receives the actual number of bytes read from the stream object. + + + For more information, see the existing documentation for ISequentialStream::Read in the MSDN library. + + + + + Discards all changes that have been made to a transacted stream since the last Commit call. + + + This class doesn't implement Revert. A COMException is thrown if it is used. + + + + + Changes the seek pointer to a new location relative to the beginning of the + stream, to the end of the stream, or to the current seek pointer. + + + The displacement to add to dwOrigin. + + + The origin of the seek. The origin can be the beginning of the file, the current seek pointer, or the end of the file. + + + On successful return, contains the offset of the seek pointer from the beginning of the stream. + (Note the native signature is to a ULARGE_INTEGER*, so 64 bits are written + to this parameter on success.) + + + For more information, see the existing documentation for IStream::Seek in the MSDN library. + + + + + Changes the size of the stream object. + + + The new size of the stream as a number of bytes. + + + For more information, see the existing documentation for IStream::SetSize in the MSDN library. + + + + + Retrieves the STATSTG structure for this stream. + + + When this method returns, contains a STATSTG structure that describes this stream object. + This parameter is passed uninitialized. + + + Members in the STATSTG structure that this method does not return, thus saving some memory allocation operations. + + + + + Removes the access restriction on a range of bytes previously restricted with the LockRegion method. + + The byte offset for the beginning of the range. + + + The length, in bytes, of the range to restrict. + + + The access restrictions previously placed on the range. + + + For more information, see the existing documentation for IStream::UnlockRegion in the MSDN library. + This class doesn't implement UnlockRegion. A COMException is thrown if it is used. + + + + + Writes a specified number of bytes into the stream object starting at the current seek pointer. + + + The buffer to write this stream to. + + + The number of bytes to write to the stream. + + + On successful return, contains the actual number of bytes written to the stream object. + If the caller sets this pointer to null, this method does not provide the actual number + of bytes written. + + + + + Releases resources controlled by this object. + + + Dispose can be called multiple times, but trying to use the object + after it has been disposed will generally throw ObjectDisposedExceptions. + + + + + HIGHCONTRAST flags + + + + + BITMAPINFOHEADER Compression type. BI_*. + + + + + CombingRgn flags. RGN_* + + + + + Creates the intersection of the two combined regions. + + + + + Creates the union of two combined regions. + + + + + Creates the union of two combined regions except for any overlapping areas. + + + + + Combines the parts of hrgnSrc1 that are not part of hrgnSrc2. + + + + + Creates a copy of the region identified by hrgnSrc1. + + + + + For IWebBrowser2. OLECMDEXECOPT_* + + + + + For IWebBrowser2. OLECMDF_* + + + + + For IWebBrowser2. OLECMDID_* + + + + + For IWebBrowser2. READYSTATE_* + + + + + DATAOBJ_GET_ITEM_FLAGS. DOGIF_*. + + + + Use the system default, which is to display all error dialog boxes. + + + + The system does not display the critical-error-handler message box. + Instead, the system sends the error to the calling process. + + + + + 64-bit Windows: The system automatically fixes memory alignment faults and makes them + invisible to the application. It does this for the calling process and any descendant processes. + After this value is set for a process, subsequent attempts to clear the value are ignored. + + + + + The system does not display the general-protection-fault message box. + This flag should only be set by debugging applications that handle general + protection (GP) faults themselves with an exception handler. + + + + + The system does not display a message box when it fails to find a file. + Instead, the error is returned to the calling process. + + + + + Non-client hit test values, HT* + + + + + GetClassLongPtr values, GCLP_* + + + + + GetWindowLongPtr values, GWL_* + + + + + SystemMetrics. SM_* + + + + + SystemParameterInfo values, SPI_* + + + + + SystemParameterInfo flag values, SPIF_* + + + + + CS_* + + + + + WindowStyle values, WS_* + + + + + Window message values, WM_* + + + + + Window style extended values, WS_EX_* + + + + + GetDeviceCaps nIndex values. + + + + Number of bits per pixel + + + + + Number of planes + + + + + Logical pixels inch in X + + + + + Logical pixels inch in Y + + + + + "FILEOP_FLAGS", FOF_*. + + + + + EnableMenuItem uEnable values, MF_* + + + + + Possible return value for EnableMenuItem + + + + Specifies the type of visual style attribute to set on a window. + + + Non-client area window attributes will be set. + + + + DWMFLIP3DWINDOWPOLICY. DWMFLIP3D_* + + + + + DWMNCRENDERINGPOLICY. DWMNCRP_* + + + + + DWMWINDOWATTRIBUTE. DWMWA_* + + + + + WindowThemeNonClientAttributes + + + + Prevents the window caption from being drawn. + + + Prevents the system icon from being drawn. + + + Prevents the system icon menu from appearing. + + + Prevents mirroring of the question mark, even in right-to-left (RTL) layout. + + + A mask that contains all the valid bits. + + + + SetWindowPos options + + + + + ShowWindow options + + + + + SCF_ISSECURE + + + + + GDI+ Status codes + + + + + MSGFLT_*. New in Vista. Realiased in Windows 7. + + + + + Shell_NotifyIcon messages. NIM_* + + + + + SHAddToRecentDocuments flags. SHARD_* + + + + + Shell_NotifyIcon flags. NIF_* + + + + + Vista only. + + + + + Vista only. + + + + + Shell_NotifyIcon info flags. NIIF_* + + + + XP SP2 and later. + + + XP and later. + + + Vista and later. + + + Windows 7 and later + + + XP and later. Native version called NIIF_ICON_MASK. + + + + AC_* + + + + + The state of the icon. There are two flags that can be set independently. + NIS_HIDDEN = 1. The icon is hidden. + NIS_SHAREDICON = 2. The icon is shared. + + + + The idlist for the shell item that should be added to the recent docs folder. + + + The id of the application that should be associated with this recent doc. + + + Defines options that are used to set window visual style attributes. + + + + A combination of flags that modify window visual style attributes. + Can be a combination of the WTNCA constants. + + + + + A bitmask that describes how the values specified in dwFlags should be applied. + If the bit corresponding to a value in dwFlags is 0, that flag will be removed. + If the bit is 1, the flag will be added. + + + + Width of left border that retains its size. + + + Width of right border that retains its size. + + + Height of top border that retains its size. + + + Height of bottom border that retains its size. + + + Delegate declaration that matches native WndProc signatures. + + + Delegate declaration that matches native WndProc signatures. + + + Delegate declaration that matches managed WndProc signatures. + + + + Sets attributes to control how visual styles are applied to a specified window. + + + Handle to a window to apply changes to. + + + Value of type WINDOWTHEMEATTRIBUTETYPE that specifies the type of attribute to set. + The value of this parameter determines the type of data that should be passed in the pvAttribute parameter. + Can be the following value: + WTA_NONCLIENT (Specifies non-client related attributes). + pvAttribute must be a pointer of type WTA_OPTIONS. + + + A pointer that specifies attributes to set. Type is determined by the value of the eAttribute value. + + + Specifies the size, in bytes, of the data pointed to by pvAttribute. + + + + Overload of SystemParametersInfo for getting and setting NONCLIENTMETRICS. + + + Overload of SystemParametersInfo for getting and setting HIGHCONTRAST. + + + + Sets the User Model AppID for the current process, enabling Windows to retrieve this ID + + + + + + Retrieves the User Model AppID that has been explicitly set for the current process via SetCurrentProcessExplicitAppUserModelID + + + + + + Description Dependency Property + + + + + Handles changes to the Description property. + + + + + Provides derived classes an opportunity to handle changes to the Description property. + + + + + Gets or sets the Description property. This dependency property + indicates the description to display for the document item. + + + + + Model Dependency Property + + + + + Handles changes to the Model property. + + + + + Provides derived classes an opportunity to handle changes to the Model property. + + + + + LayoutItem Read-Only Dependency Property + + + + + Provides a secure method for setting the LayoutItem property. + This dependency property indicates the LayoutItem attached to this tag item. + + The new value for the property. + + + + Gets or sets the Model property. This dependency property + indicates the layout content model attached to the tab item. + + + + + Gets the LayoutItem property. This dependency property + indicates the LayoutItem attached to this tag item. + + + + + IsLeftSide Read-Only Dependency Property + + + + + Provides a secure method for setting the IsLeftSide property. + This dependency property indicates this control is anchored to left side. + + The new value for the property. + + + + IsTopSide Read-Only Dependency Property + + + + + Provides a secure method for setting the IsTopSide property. + This dependency property indicates this control is anchored to top side. + + The new value for the property. + + + + IsRightSide Read-Only Dependency Property + + + + + Provides a secure method for setting the IsRightSide property. + This dependency property indicates this control is anchored to right side. + + The new value for the property. + + + + IsBottomSide Read-Only Dependency Property + + + + + Provides a secure method for setting the IsBottomSide property. + This dependency property indicates if this panel is anchored to bottom side. + + The new value for the property. + + + + Gets the IsLeftSide property. This dependency property + indicates this control is anchored to left side. + + + + + Gets the IsTopSide property. This dependency property + indicates this control is anchored to top side. + + + + + Gets the IsRightSide property. This dependency property + indicates this control is anchored to right side. + + + + + Gets the IsBottomSide property. This dependency property + indicates if this panel is anchored to bottom side. + + + + + DoubleUtil uses fixed eps to provide fuzzy comparison functionality for doubles. + Note that FP noise is a big problem and using any of these compare + methods is not a complete solution, but rather the way to reduce + the probability of repeating unnecessary work. + + + + + Epsilon - more or less random, more or less small number. + + + + + AreClose returns whether or not two doubles are "close". That is, whether or + not they are within epsilon of each other. + There are plenty of ways for this to return false even for numbers which + are theoretically identical, so no code calling this should fail to work if this + returns false. + + The first double to compare. + The second double to compare. + The result of the AreClose comparision. + + + + LessThan returns whether or not the first double is less than the second double. + That is, whether or not the first is strictly less than *and* not within epsilon of + the other number. + There are plenty of ways for this to return false even for numbers which + are theoretically identical, so no code calling this should fail to work if this + returns false. + + The first double to compare. + The second double to compare. + The result of the LessThan comparision. + + + + GreaterThan returns whether or not the first double is greater than the second double. + That is, whether or not the first is strictly greater than *and* not within epsilon of + the other number. + There are plenty of ways for this to return false even for numbers which + are theoretically identical, so no code calling this should fail to work if this + returns false. + + The first double to compare. + The second double to compare. + The result of the GreaterThan comparision. + + + + LessThanOrClose returns whether or not the first double is less than or close to + the second double. That is, whether or not the first is strictly less than or within + epsilon of the other number. + There are plenty of ways for this to return false even for numbers which + are theoretically identical, so no code calling this should fail to work if this + returns false. + + The first double to compare. + The second double to compare. + The result of the LessThanOrClose comparision. + + + + GreaterThanOrClose returns whether or not the first double is greater than or close to + the second double. That is, whether or not the first is strictly greater than or within + epsilon of the other number. + There are plenty of ways for this to return false even for numbers which + are theoretically identical, so no code calling this should fail to work if this + returns false. + + The first double to compare. + The second double to compare. + The result of the GreaterThanOrClose comparision. + + + + Test to see if a double is a finite number (is not NaN or Infinity). + + The value to test. + Whether or not the value is a finite number. + + + + Test to see if a double a valid size value (is finite and > 0). + + The value to test. + Whether or not the value is a valid size value. + + + + Direct insert/remove operation has been perfomed to the group + + + + + An element below in the hierarchy as been added/removed + + + + + Converts a value. + + The value produced by the binding source. + The type of the binding target property. + The converter parameter to use. + The culture to use in the converter. + + A converted value. If the method returns null, the valid null value is used. + + + + + Converts a value. + + The value that is produced by the binding target. + The type to convert to. + The converter parameter to use. + The culture to use in the converter. + + A converted value. If the method returns null, the valid null value is used. + + + + + Model Dependency Property + + + + + Handles changes to the Model property. + + + + + Provides derived classes an opportunity to handle changes to the Model property. + + + + + LayoutItem Read-Only Dependency Property + + + + + Provides a secure method for setting the LayoutItem property. + This dependency property indicates the LayoutItem attached to this tag item. + + The new value for the property. + + + + Gets or sets the Model property. This dependency property + indicates the model attached to this view. + + + + + Gets the LayoutItem property. This dependency property + indicates the LayoutItem attached to this tag item. + + + + + Wrapper for common Win32 status codes. + + + + The operation completed successfully. + + + Incorrect function. + + + The system cannot find the file specified. + + + The system cannot find the path specified. + + + The system cannot open the file. + + + Access is denied. + + + The handle is invalid. + + + Not enough storage is available to complete this operation. + + + There are no more files. + + + The process cannot access the file because it is being used by another process. + + + The parameter is incorrect. + + + The data area passed to a system call is too small. + + + Cannot nest calls to LoadModule. + + + Illegal operation attempted on a registry key that has been marked for deletion. + + + Element not found. + + + There was no match for the specified key in the index. + + + An invalid device was specified. + + + The operation was canceled by the user. + + + The window class was already registered. + + + The specified datatype is invalid. + + + + Create a new Win32 error. + + The integer value of the error. + + + Performs HRESULT_FROM_WIN32 conversion. + The Win32 error being converted to an HRESULT. + The equivilent HRESULT value. + + + Performs HRESULT_FROM_WIN32 conversion. + The Win32 error being converted to an HRESULT. + The equivilent HRESULT value. + + + Performs the equivalent of Win32's GetLastError() + A Win32Error instance with the result of the native GetLastError + + + + Compare two Win32 error codes for equality. + + The first error code to compare. + The second error code to compare. + Whether the two error codes are the same. + + + + Compare two Win32 error codes for inequality. + + The first error code to compare. + The second error code to compare. + Whether the two error codes are not the same. + + + FACILITY_NULL + + + FACILITY_RPC + + + FACILITY_DISPATCH + + + FACILITY_STORAGE + + + FACILITY_ITF + + + FACILITY_WIN32 + + + FACILITY_WINDOWS + + + FACILITY_CONTROL + + + MSDN doced facility code for ESE errors. + + + FACILITY_WINCODEC (WIC) + + + Wrapper for HRESULT status codes. + + + S_OK + + + S_FALSE + + + E_PENDING + + + E_NOTIMPL + + + E_NOINTERFACE + + + E_POINTER + + + E_ABORT + + + E_FAIL + + + E_UNEXPECTED + + + STG_E_INVALIDFUNCTION + + + REGDB_E_CLASSNOTREG + + + DESTS_E_NO_MATCHING_ASSOC_HANDLER. Win7 internal error code for Jump Lists. + There is no Assoc Handler for the given item registered by the specified application. + + + DESTS_E_NORECDOCS. Win7 internal error code for Jump Lists. + The given item is excluded from the recent docs folder by the NoRecDocs bit on its registration. + + + DESTS_E_NOTALLCLEARED. Win7 internal error code for Jump Lists. + Not all of the items were successfully cleared + + + E_ACCESSDENIED + Win32Error ERROR_ACCESS_DENIED. + + + E_OUTOFMEMORY + Win32Error ERROR_OUTOFMEMORY. + + + E_INVALIDARG + Win32Error ERROR_INVALID_PARAMETER. + + + INTSAFE_E_ARITHMETIC_OVERFLOW + + + COR_E_OBJECTDISPOSED + + + WC_E_GREATERTHAN + + + WC_E_SYNTAX + + + + Create an HRESULT from an integer value. + + + + + + Get a string representation of this HRESULT. + + + + + + Convert the result of Win32 GetLastError() into a raised exception. + + + + + retrieve HRESULT_FACILITY + + + + + retrieve HRESULT_CODE + + + + + HideCommand Dependency Property + + + + + Handles changes to the HideCommand property. + + + + + Provides derived classes an opportunity to handle changes to the HideCommand property. + + + + + Coerces the HideCommand value. + + + + + AutoHideCommand Dependency Property + + + + + Handles changes to the AutoHideCommand property. + + + + + Provides derived classes an opportunity to handle changes to the AutoHideCommand property. + + + + + Coerces the AutoHideCommand value. + + + + + DockCommand Dependency Property + + + + + Handles changes to the DockCommand property. + + + + + Provides derived classes an opportunity to handle changes to the DockCommand property. + + + + + Coerces the DockCommand value. + + + + + CanHide Dependency Property + + + + + Handles changes to the CanHide property. + + + + + Provides derived classes an opportunity to handle changes to the CanHide property. + + + + + Gets or sets the HideCommand property. This dependency property + indicates the command to execute when an anchorable is hidden. + + + + + Gets or sets the AutoHideCommand property. This dependency property + indicates the command to execute when user click the auto hide button. + + By default this command toggles auto hide state for an anchorable. + + + + Gets or sets the DockCommand property. This dependency property + indicates the command to execute when user click the Dock button. + + By default this command moves the anchorable inside the container pane which previously hosted the object. + + + + Gets or sets the CanHide property. This dependency property + indicates if user can hide the anchorable item. + + + + + Model Dependency Property + + + + + Provides derived classes an opportunity to handle changes to the Model property. + + + + + LayoutItem Read-Only Dependency Property + + + + + Provides a secure method for setting the LayoutItem property. + This dependency property indicates the LayoutItem attached to this tag item. + + The new value for the property. + + + + Gets or sets the Model property. This dependency property + indicates model attached to this view. + + + + + Gets the LayoutItem property. This dependency property + indicates the LayoutItem attached to this tag item. + + + + + Special window handles + + + + + Changes an attribute of the specified window. The function also sets the 32-bit (long) value at the specified offset into the extra window memory. + + A handle to the window and, indirectly, the class to which the window belongs.. + The zero-based offset to the value to be set. Valid values are in the range zero through the number of bytes of extra window memory, minus the size of an integer. To set any other value, specify one of the following values: GWL_EXSTYLE, GWL_HINSTANCE, GWL_ID, GWL_STYLE, GWL_USERDATA, GWL_WNDPROC + The replacement value. + If the function succeeds, the return value is the previous value of the specified 32-bit integer. + If the function fails, the return value is zero. To get extended error information, call GetLastError. + + + + The MonitorFromRect function retrieves a handle to the display monitor that + has the largest area of intersection with a specified rectangle. + + Pointer to a RECT structure that specifies the rectangle of interest in + virtual-screen coordinates + Determines the function's return value if the rectangle does not intersect + any display monitor + + If the rectangle intersects one or more display monitor rectangles, the return value + is an HMONITOR handle to the display monitor that has the largest area of intersection with the rectangle. + If the rectangle does not intersect a display monitor, the return value depends on the value of dwFlags. + + + + + The MonitorFromWindow function retrieves a handle to the display monitor that has the largest area of intersection with the bounding rectangle of a specified window. + + A handle to the window of interest. + Determines the function's return value if the window does not intersect any display monitor. + If the window intersects one or more display monitor rectangles, the return value is an HMONITOR handle to the display monitor that has the largest area of intersection with the window. + If the window does not intersect a display monitor, the return value depends on the value of dwFlags. + + + + + The GetMonitorInfo function retrieves information about a display monitor. + + Handle to the display monitor of interest. + Pointer to a MONITORINFO or MONITORINFOEX structure that receives + information about the specified display monitor + If the function succeeds, the return value is nonzero. + If the function fails, the return value is zero. + + + + SetWindowPos Flags + + + + If the calling thread and the thread that owns the window are attached to different input queues, + the system posts the request to the thread that owns the window. This prevents the calling thread from + blocking its execution while other threads process the request. + SWP_ASYNCWINDOWPOS + + + Prevents generation of the WM_SYNCPAINT message. + SWP_DEFERERASE + + + Draws a frame (defined in the window's class description) around the window. + SWP_DRAWFRAME + + + Applies new frame styles set using the SetWindowLong function. Sends a WM_NCCALCSIZE message to + the window, even if the window's size is not being changed. If this flag is not specified, WM_NCCALCSIZE + is sent only when the window's size is being changed. + SWP_FRAMECHANGED + + + Hides the window. + SWP_HIDEWINDOW + + + Does not activate the window. If this flag is not set, the window is activated and moved to the + top of either the topmost or non-topmost group (depending on the setting of the hWndInsertAfter + parameter). + SWP_NOACTIVATE + + + Discards the entire contents of the client area. If this flag is not specified, the valid + contents of the client area are saved and copied back into the client area after the window is sized or + repositioned. + SWP_NOCOPYBITS + + + Retains the current position (ignores X and Y parameters). + SWP_NOMOVE + + + Does not change the owner window's position in the Z order. + SWP_NOOWNERZORDER + + + Does not redraw changes. If this flag is set, no repainting of any kind occurs. This applies to + the client area, the nonclient area (including the title bar and scroll bars), and any part of the parent + window uncovered as a result of the window being moved. When this flag is set, the application must + explicitly invalidate or redraw any parts of the window and parent window that need redrawing. + SWP_NOREDRAW + + + Same as the SWP_NOOWNERZORDER flag. + SWP_NOREPOSITION + + + Prevents the window from receiving the WM_WINDOWPOSCHANGING message. + SWP_NOSENDCHANGING + + + Retains the current size (ignores the cx and cy parameters). + SWP_NOSIZE + + + Retains the current Z order (ignores the hWndInsertAfter parameter). + SWP_NOZORDER + + + Displays the window. + SWP_SHOWWINDOW + + + + The MONITORINFO structure contains information about a display monitor. + + + + + The size of the structure, in bytes. + + + + + A RECT structure that specifies the display monitor rectangle, expressed + in virtual-screen coordinates. + Note that if the monitor is not the primary display monitor, + some of the rectangle's coordinates may be negative values. + + + + + A RECT structure that specifies the work area rectangle of the display monitor, + expressed in virtual-screen coordinates. Note that if the monitor is not the primary + display monitor, some of the rectangle's coordinates may be negative values. + + + + + A set of flags that represent attributes of the display monitor. + + + + + A strongly-typed resource class, for looking up localized strings, etc. + + + + + Returns the cached ResourceManager instance used by this class. + + + + + Overrides the current thread's CurrentUICulture property for all + resource lookups using this strongly typed resource class. + + + + + Looks up a localized string similar to Auto Hide. + + + + + Looks up a localized string similar to Auto Hide. + + + + + Looks up a localized string similar to Hide. + + + + + Looks up a localized string similar to Window Position. + + + + + Looks up a localized string similar to Dock. + + + + + Looks up a localized string similar to Dock as Tabbed Document. + + + + + Looks up a localized string similar to Float. + + + + + Looks up a localized string similar to Hide. + + + + + Looks up a localized string similar to Close. + + + + + Looks up a localized string similar to Close All But This. + + + + + Looks up a localized string similar to Window Position. + + + + + Looks up a localized string similar to Dock as Tabbed Document. + + + + + Looks up a localized string similar to Float. + + + + + Looks up a localized string similar to Move To Next Tab Group. + + + + + Looks up a localized string similar to Move To Previous Tab Group. + + + + + Looks up a localized string similar to New Horizontal Tab Group. + + + + + Looks up a localized string similar to New Vertical Tab Group. + + + + + Looks up a localized string similar to Maximize. + + + + + Looks up a localized string similar to Restore. + + + + + IconTemplate Dependency Property + + + + + Handles changes to the IconTemplate property. + + + + + Provides derived classes an opportunity to handle changes to the IconTemplate property. + + + + + IconTemplateSelector Dependency Property + + + + + Handles changes to the IconTemplateSelector property. + + + + + Provides derived classes an opportunity to handle changes to the IconTemplateSelector property. + + + + + Gets or sets the IconTemplate property. This dependency property + indicates the data template for the icon. + + + + + Gets or sets the IconTemplateSelector property. This dependency property + indicates the DataTemplateSelector for the Icon. + + + + diff --git a/packages/AvalonDock.2.0.2000/lib/net40/de/Xceed.Wpf.AvalonDock.resources.dll b/packages/AvalonDock.2.0.2000/lib/net40/de/Xceed.Wpf.AvalonDock.resources.dll new file mode 100644 index 00000000..3005ea9a Binary files /dev/null and b/packages/AvalonDock.2.0.2000/lib/net40/de/Xceed.Wpf.AvalonDock.resources.dll differ diff --git a/packages/AvalonDock.2.0.2000/lib/net40/es/Xceed.Wpf.AvalonDock.resources.dll b/packages/AvalonDock.2.0.2000/lib/net40/es/Xceed.Wpf.AvalonDock.resources.dll new file mode 100644 index 00000000..ab6641b3 Binary files /dev/null and b/packages/AvalonDock.2.0.2000/lib/net40/es/Xceed.Wpf.AvalonDock.resources.dll differ diff --git a/packages/AvalonDock.2.0.2000/lib/net40/fr/Xceed.Wpf.AvalonDock.resources.dll b/packages/AvalonDock.2.0.2000/lib/net40/fr/Xceed.Wpf.AvalonDock.resources.dll new file mode 100644 index 00000000..8d3b7c4c Binary files /dev/null and b/packages/AvalonDock.2.0.2000/lib/net40/fr/Xceed.Wpf.AvalonDock.resources.dll differ diff --git a/packages/AvalonDock.2.0.2000/lib/net40/hu/Xceed.Wpf.AvalonDock.resources.dll b/packages/AvalonDock.2.0.2000/lib/net40/hu/Xceed.Wpf.AvalonDock.resources.dll new file mode 100644 index 00000000..b09aea98 Binary files /dev/null and b/packages/AvalonDock.2.0.2000/lib/net40/hu/Xceed.Wpf.AvalonDock.resources.dll differ diff --git a/packages/AvalonDock.2.0.2000/lib/net40/it/Xceed.Wpf.AvalonDock.resources.dll b/packages/AvalonDock.2.0.2000/lib/net40/it/Xceed.Wpf.AvalonDock.resources.dll new file mode 100644 index 00000000..86c9ea90 Binary files /dev/null and b/packages/AvalonDock.2.0.2000/lib/net40/it/Xceed.Wpf.AvalonDock.resources.dll differ diff --git a/packages/AvalonDock.2.0.2000/lib/net40/pt-BR/Xceed.Wpf.AvalonDock.resources.dll b/packages/AvalonDock.2.0.2000/lib/net40/pt-BR/Xceed.Wpf.AvalonDock.resources.dll new file mode 100644 index 00000000..8c9eb599 Binary files /dev/null and b/packages/AvalonDock.2.0.2000/lib/net40/pt-BR/Xceed.Wpf.AvalonDock.resources.dll differ diff --git a/packages/AvalonDock.2.0.2000/lib/net40/ro/Xceed.Wpf.AvalonDock.resources.dll b/packages/AvalonDock.2.0.2000/lib/net40/ro/Xceed.Wpf.AvalonDock.resources.dll new file mode 100644 index 00000000..1099d206 Binary files /dev/null and b/packages/AvalonDock.2.0.2000/lib/net40/ro/Xceed.Wpf.AvalonDock.resources.dll differ diff --git a/packages/AvalonDock.2.0.2000/lib/net40/ru/Xceed.Wpf.AvalonDock.resources.dll b/packages/AvalonDock.2.0.2000/lib/net40/ru/Xceed.Wpf.AvalonDock.resources.dll new file mode 100644 index 00000000..4c77c97e Binary files /dev/null and b/packages/AvalonDock.2.0.2000/lib/net40/ru/Xceed.Wpf.AvalonDock.resources.dll differ diff --git a/packages/AvalonDock.2.0.2000/lib/net40/sv/Xceed.Wpf.AvalonDock.resources.dll b/packages/AvalonDock.2.0.2000/lib/net40/sv/Xceed.Wpf.AvalonDock.resources.dll new file mode 100644 index 00000000..481ce9bb Binary files /dev/null and b/packages/AvalonDock.2.0.2000/lib/net40/sv/Xceed.Wpf.AvalonDock.resources.dll differ diff --git a/packages/AvalonDock.2.0.2000/lib/net40/zh-Hans/Xceed.Wpf.AvalonDock.resources.dll b/packages/AvalonDock.2.0.2000/lib/net40/zh-Hans/Xceed.Wpf.AvalonDock.resources.dll new file mode 100644 index 00000000..c52a6daa Binary files /dev/null and b/packages/AvalonDock.2.0.2000/lib/net40/zh-Hans/Xceed.Wpf.AvalonDock.resources.dll differ diff --git a/packages/ini-parser.2.1.1/README.md b/packages/ini-parser.2.1.1/README.md new file mode 100644 index 00000000..e189676e --- /dev/null +++ b/packages/ini-parser.2.1.1/README.md @@ -0,0 +1,56 @@ +# INI File Parser + +A Mono-compatible .NET library for reading/writing INI data from IO streams, file streams, and strings. + +[![Build Status](https://travis-ci.org/rickyah/ini-parser.png?branch=master)](https://travis-ci.org/rickyah/ini-parser) + +## Installation + +The library is published to [NuGet](https://www.nuget.org/packages/ini-parser/) and can be installed on the command-line from the directory containing your solution. + +```bat +> nuget install ini-parser +``` + +Or, from the [Package Manager Console](http://docs.nuget.org/docs/start-here/using-the-package-manager-console) in Visual Studio + +```powershell +PM> Install-Package ini-parser +``` + +Or from the [NuGet Package Manager](http://visualstudiogallery.msdn.microsoft.com/27077b70-9dad-4c64-adcf-c7cf6bc9970c) extension built available for most flavors of Visual Studio! + +## Getting Started + +INI data is stored in nested dictionaries, so accessing the value associated to a key in a section is straightforward. Load the data using one of the provided methods. + +```csharp +var data = parser.ReadFile("Configuration.ini"); +``` + +Retrieve the value for a key inside of a named section. Values are always retrieved as `string`s. + +```csharp +var useFullScreen = data["UI"]["fullscreen"]; +``` + +Modify the value in the dictionary, not the value retrieved, and save to a new file or overwrite. + +```csharp +data["UI"]["fullscreen"] = "true"; +parser.WriteFile("Configuration.ini", data); +``` + +See the [wiki](https://github.com/rickyah/ini-parser/wiki) for more usage examples. + +## Contributing + +Do you have an idea to improve this library, or did you happen to run into a bug. Please share your idea or the bug you found in the issues page, or even better: feel free to fork and [contribute](https://github.com/rickyah/ini-parser/wiki/Contributing) to this project! + +## Version 2.0! +Since the INI format isn't really a "standard", this version introduces a simpler way to customize INI parsing: + + * Pass a configuration object to an `IniParser`, specifying the behaviour of the parser. A default implementation is used if none is provided. + + * Derive from `IniDataParser` and override the fine-grained parsing methods. + diff --git a/packages/ini-parser.2.1.1/content/LICENSE b/packages/ini-parser.2.1.1/content/LICENSE new file mode 100644 index 00000000..fe5f7ed6 --- /dev/null +++ b/packages/ini-parser.2.1.1/content/LICENSE @@ -0,0 +1,20 @@ +The MIT License (MIT) + +Copyright (c) 2008 Ricardo Amores Hernández + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/packages/ini-parser.2.1.1/ini-parser.2.1.1.nupkg b/packages/ini-parser.2.1.1/ini-parser.2.1.1.nupkg new file mode 100644 index 00000000..92c0c00b Binary files /dev/null and b/packages/ini-parser.2.1.1/ini-parser.2.1.1.nupkg differ diff --git a/packages/ini-parser.2.1.1/ini-parser.2.1.1.nuspec b/packages/ini-parser.2.1.1/ini-parser.2.1.1.nuspec new file mode 100644 index 00000000..d958ff15 --- /dev/null +++ b/packages/ini-parser.2.1.1/ini-parser.2.1.1.nuspec @@ -0,0 +1,17 @@ + + + + ini-parser + 2.1.1 + INI Parser + Ricardo Amores Hernández + Ricardo Amores Hernández + https://github.com/rickyah/ini-parser/master/blob/LICENSE.txt + https://github.com/rickyah/ini-parser + false + A Mono compatible .NET open source library for managing data from an INI file format. Allows reading/writing INI data to and from I/O streams, file streams, and/or plain strings. + A simple C# library for reading and writing INI files + + ini + + \ No newline at end of file diff --git a/packages/ini-parser.2.1.1/lib/INIFileParser.dll b/packages/ini-parser.2.1.1/lib/INIFileParser.dll new file mode 100644 index 00000000..7a088d18 Binary files /dev/null and b/packages/ini-parser.2.1.1/lib/INIFileParser.dll differ diff --git a/packages/ini-parser.2.1.1/lib/INIFileParser.pdb b/packages/ini-parser.2.1.1/lib/INIFileParser.pdb new file mode 100644 index 00000000..ae7f2603 Binary files /dev/null and b/packages/ini-parser.2.1.1/lib/INIFileParser.pdb differ diff --git a/packages/repositories.config b/packages/repositories.config new file mode 100644 index 00000000..40a89028 --- /dev/null +++ b/packages/repositories.config @@ -0,0 +1,4 @@ + + + + \ No newline at end of file