diff options
Diffstat (limited to 'plugins/MagneticWindows/src/Options.cpp')
-rw-r--r-- | plugins/MagneticWindows/src/Options.cpp | 96 |
1 files changed, 96 insertions, 0 deletions
diff --git a/plugins/MagneticWindows/src/Options.cpp b/plugins/MagneticWindows/src/Options.cpp new file mode 100644 index 0000000000..2c9de31cf1 --- /dev/null +++ b/plugins/MagneticWindows/src/Options.cpp @@ -0,0 +1,96 @@ +#include "stdafx.h" + +TOptions Options = { + true, + cDefaultSnapWidth, + false +}; + +INT_PTR CALLBACK OptionsDlgProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) +{ + TCHAR str[64]; + + switch (msg) { + case WM_INITDIALOG: + TranslateDialogDefault(hwndDlg); + + CheckDlgButton(hwndDlg, IDC_CHK_SNAP, Options.DoSnap?BST_CHECKED:BST_UNCHECKED); + SendDlgItemMessage(hwndDlg, IDC_SLIDER_SNAPWIDTH, TBM_SETRANGE, FALSE, MAKELONG(1,32)); + SendDlgItemMessage(hwndDlg, IDC_SLIDER_SNAPWIDTH, TBM_SETPOS, TRUE, Options.SnapWidth); + + mir_snwprintf(str, TranslateT("%d pix"), Options.SnapWidth); + SetDlgItemText(hwndDlg, IDC_TXT_SNAPWIDTH, str); + + EnableWindow(GetDlgItem(hwndDlg, IDC_SLIDER_SNAPWIDTH), Options.DoSnap); + EnableWindow(GetDlgItem(hwndDlg, IDC_TXT_SNAPWIDTH), Options.DoSnap); + + CheckDlgButton(hwndDlg, IDC_CHK_SCRIVERWORKAROUND, Options.ScriverWorkAround?BST_CHECKED:BST_UNCHECKED); + break; + + case WM_HSCROLL: + mir_snwprintf(str, TranslateT("%d pix"), SendDlgItemMessage(hwndDlg, IDC_SLIDER_SNAPWIDTH, TBM_GETPOS, 0, 0)); + SetDlgItemText(hwndDlg, IDC_TXT_SNAPWIDTH, str); + SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); + break; + + case WM_COMMAND: + switch( LOWORD(wParam)) { + case IDC_CHK_SNAP: + if (HIWORD(wParam) == BN_CLICKED) { + EnableWindow(GetDlgItem(hwndDlg, IDC_SLIDER_SNAPWIDTH), IsDlgButtonChecked(hwndDlg, IDC_CHK_SNAP)); + EnableWindow(GetDlgItem(hwndDlg, IDC_TXT_SNAPWIDTH), IsDlgButtonChecked(hwndDlg, IDC_CHK_SNAP)); + + SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); + } + break; + + case IDC_CHK_SCRIVERWORKAROUND: + if (HIWORD(wParam) == BN_CLICKED) + SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); + break; + } + break; + + case WM_NOTIFY: //Here we have pressed either the OK or the APPLY button. + switch(((LPNMHDR)lParam)->idFrom) { + case 0: + switch (((LPNMHDR)lParam)->code) { + case PSN_RESET: + LoadOptions(); + break; + + case PSN_APPLY: + Options.DoSnap = (IsDlgButtonChecked(hwndDlg, IDC_CHK_SNAP) == TRUE); + Options.SnapWidth = SendDlgItemMessage(hwndDlg, IDC_SLIDER_SNAPWIDTH, TBM_GETPOS, 0, 0); + Options.ScriverWorkAround = (IsDlgButtonChecked(hwndDlg, IDC_CHK_SCRIVERWORKAROUND) == TRUE); + + db_set_b(NULL, MODULE_NAME, "DoSnap", Options.DoSnap); + db_set_b(NULL, MODULE_NAME, "SnapWidth", Options.SnapWidth); + db_set_b(NULL, MODULE_NAME, "ScriverWorkAround", Options.ScriverWorkAround); + break; + } + } + break; + } + return 0; +} + +int InitOptions(WPARAM wParam, LPARAM) +{ + OPTIONSDIALOGPAGE Opt = { sizeof(Opt) }; + Opt.pfnDlgProc = OptionsDlgProc; + Opt.pszTemplate = MAKEINTRESOURCEA(IDD_OPT_MAGNETICWINDOWS); + Opt.hInstance = hInst; + Opt.szGroup.a = LPGEN("Customize"); + Opt.szTitle.a = LPGEN("Magnetic Windows"); + Opt.flags = ODPF_BOLDGROUPS; + Options_AddPage(wParam, &Opt); + return 0; +} + +void LoadOptions() +{ + Options.DoSnap = db_get_b(NULL, MODULE_NAME, "DoSnap", 1) != 0; + Options.SnapWidth = db_get_b(NULL, MODULE_NAME, "SnapWidth", cDefaultSnapWidth); + Options.ScriverWorkAround = db_get_b(NULL, MODULE_NAME, "ScriverWorkAround", 0) != 0; +} |