Ejemplo n.º 1
0
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();
}
Ejemplo n.º 2
0
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;
}
Ejemplo n.º 3
0
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);
}