void Display::LoadSettings() { Settings *settings = Settings::Instance(); LanguageTranslator *translator = settings->Translator(); /* Translations */ _allMonitorStr = translator->Translate(_allMonitorStr); _primaryMonitorStr = translator->Translate(_primaryMonitorStr); _customPositionStr = translator->Translate(_customPositionStr); _noAnimStr = translator->Translate(_noAnimStr); /* Visibility Settings */ _onTop->Checked(settings->AlwaysOnTop()); _hideFullscreen->Checked(settings->HideFullscreen()); _hideDirectX->Checked(settings->HideDirectX()); /* Position on Screen*/ for (std::wstring position : settings->OSDPosNames) { _position->AddItem(translator->Translate(position)); } _position->Select((int) settings->OSDPosition()); /* Custom positions/offsets */ _positionX->Text(settings->OSDX()); _positionY->Text(settings->OSDY()); _customDistance->Checked( settings->OSDEdgeOffset() != DefaultSettings::OSDOffset); _edgeSpinner->Text(settings->OSDEdgeOffset()); _edgeSpinner->Range(MIN_EDGE, MAX_EDGE); /* Display Devices */ _displayDevice->AddItem(_primaryMonitorStr); _displayDevice->AddItem(_allMonitorStr); std::list<DISPLAY_DEVICE> devices = DisplayManager::ListAllDevices(); for (DISPLAY_DEVICE dev : devices) { std::wstring devString(dev.DeviceName); _displayDevice->AddItem(devString); } std::wstring monitorName = settings->Monitor(); if (monitorName == L"") { monitorName = _primaryMonitorStr; } else if (monitorName == L"*") { monitorName = _allMonitorStr; } _displayDevice->Select(monitorName); /* Animation Settings */ for (std::wstring anim : AnimationTypes::HideAnimationNames) { _hideAnimation->AddItem(translator->Translate(anim)); } _hideAnimation->Select((int) settings->HideAnim()); _hideDelay->Range(MIN_MS, MAX_MS); _hideDelay->Text(settings->HideDelay()); _hideSpeed->Range(MIN_MS, MAX_MS); _hideSpeed->Text(settings->HideSpeed()); /* Refresh control states */ OnPositionChange(); OnCustomCheckChange(); OnAnimationChange(); }
bool General::CheckForUpdates() { _checkNow->Enabled(false); HCURSOR waitCursor = LoadCursor(NULL, IDC_WAIT); if (waitCursor) { SetCursor(waitCursor); } if (Updater::NewerVersionAvailable()) { Settings *settings = Settings::Instance(); LanguageTranslator *translator = settings->Translator(); Version vers = Updater::RemoteVersion(); int msgResult = MessageBox( DialogHandle(), translator->TranslateAndReplace( L"A new version of 3RVX ({1}) is available. Install now?", vers.ToString()).c_str(), translator->Translate(L"Update Available").c_str(), MB_YESNO | MB_ICONQUESTION); if (msgResult == IDYES) { ProgressWindow *pw = new ProgressWindow(vers); } } else { MessageBox( DialogHandle(), L"Your copy of 3RVX is up-to-date.", L"Update Check", MB_OK | MB_ICONINFORMATION); } HCURSOR arrowCursor = LoadCursor(NULL, IDC_ARROW); if (arrowCursor) { SetCursor(arrowCursor); } _checkNow->Enabled(true); return true; }
int APIENTRY wWinMain( _In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance, _In_ LPTSTR lpCmdLine, _In_ int nCmdShow) { UNREFERENCED_PARAMETER(hPrevInstance); UNREFERENCED_PARAMETER(lpCmdLine); Logger::Start(); CLOG(L"Starting SettingsUI..."); mutex = CreateMutex(NULL, FALSE, L"Local\\3RVXSettings"); if (GetLastError() == ERROR_ALREADY_EXISTS) { if (mutex) { ReleaseMutex(mutex); } HWND settingsWnd = FindWindow(CLASS_3RVX_SETTINGS, CLASS_3RVX_SETTINGS); CLOG(L"A settings instance is already running. Moving window [%d] " L"to the foreground.", (int) settingsWnd); SetForegroundWindow(settingsWnd); SendMessage(settingsWnd, WM_3RVX_SETTINGSCTRL, MSG_ACTIVATE, NULL); #if defined(ENABLE_3RVX_LOG) && (defined(ENABLE_3RVX_LOGTOFILE) == FALSE) CLOG(L"Press [enter] to terminate"); std::cin.get(); #endif return EXIT_SUCCESS; } Settings *settings = Settings::Instance(); settings->Load(); WNDCLASSEX wcex = { 0 }; wcex.cbSize = sizeof(WNDCLASSEX); wcex.lpfnWndProc = WndProc; wcex.hInstance = hInstance; wcex.hIcon = LoadIcon(NULL, MAKEINTRESOURCE(IDI_SETTINGS)); wcex.hbrBackground = (HBRUSH) (COLOR_WINDOW); wcex.lpszClassName = CLASS_3RVX_SETTINGS; if (RegisterClassEx(&wcex) == 0) { CLOG(L"Could not register class: %d", GetLastError()); return EXIT_FAILURE; } mainWnd = CreateWindowEx( NULL, CLASS_3RVX_SETTINGS, CLASS_3RVX_SETTINGS, NULL, 0, 0, 0, 0, NULL, NULL, hInstance, NULL); PROPSHEETPAGE psp[4]; LanguageTranslator *lt = settings->Translator(); std::wstring genTitle = lt->Translate(std::wstring(L"General")); std::wstring dispTitle = lt->Translate(std::wstring(L"Display")); std::wstring hkTitle = lt->Translate(std::wstring(L"Hotkeys")); std::wstring aboutTitle = lt->Translate(std::wstring(L"About")); psp[0] = { 0 }; psp[0].dwSize = sizeof(PROPSHEETPAGE); psp[0].dwFlags = PSP_USETITLE; psp[0].hInstance = hInstance; psp[0].pszTemplate = MAKEINTRESOURCE(IDD_GENERAL); psp[0].pszIcon = NULL; psp[0].pfnDlgProc = (DLGPROC) GeneralTabProc; psp[0].pszTitle = &genTitle[0]; psp[0].lParam = NULL; psp[1] = { 0 }; psp[1].dwSize = sizeof(PROPSHEETPAGE); psp[1].dwFlags = PSP_USETITLE; psp[1].hInstance = hInstance; psp[1].pszTemplate = MAKEINTRESOURCE(IDD_DISPLAY); psp[1].pszIcon = NULL; psp[1].pfnDlgProc = (DLGPROC) DisplayTabProc; psp[1].pszTitle = &dispTitle[0]; psp[1].lParam = 0; psp[2] = { 0 }; psp[2].dwSize = sizeof(PROPSHEETPAGE); psp[2].dwFlags = PSP_USETITLE; psp[2].hInstance = hInstance; psp[2].pszTemplate = MAKEINTRESOURCE(IDD_HOTKEYS); psp[2].pszIcon = NULL; psp[2].pfnDlgProc = (DLGPROC) HotkeyTabProc; psp[2].pszTitle = &hkTitle[0]; psp[2].lParam = 0; psp[3] = { 0 }; psp[3].dwSize = sizeof(PROPSHEETPAGE); psp[3].dwFlags = PSP_USETITLE; psp[3].hInstance = hInstance; psp[3].pszTemplate = MAKEINTRESOURCE(IDD_ABOUT); psp[3].pszIcon = NULL; psp[3].pfnDlgProc = (DLGPROC) AboutTabProc; psp[3].pszTitle = &aboutTitle[0]; psp[3].lParam = 0; PROPSHEETHEADER psh = { 0 }; psh.dwSize = sizeof(PROPSHEETHEADER); psh.dwFlags = PSH_PROPSHEETPAGE | PSH_USEICONID | PSH_USECALLBACK; psh.hwndParent = mainWnd; psh.hInstance = hInstance; psh.pszIcon = MAKEINTRESOURCE(IDI_SETTINGS); psh.pszCaption = L"3RVX Settings"; psh.nStartPage = 0; psh.nPages = sizeof(psp) / sizeof(PROPSHEETPAGE); psh.ppsp = (LPCPROPSHEETPAGE) &psp; psh.pfnCallback = (PFNPROPSHEETCALLBACK) PropSheetProc; /* Position the window */ POINT pt = { 0 }; GetCursorPos(&pt); MoveWindow(mainWnd, pt.x - XOFFSET, pt.y - YOFFSET, 0, 0, TRUE); CLOG(L"Launching modal property sheet."); return PropertySheet(&psh); }