diff options
Diffstat (limited to 'plugins/MagneticWindows/src/Options.cpp')
-rw-r--r-- | plugins/MagneticWindows/src/Options.cpp | 128 |
1 files changed, 128 insertions, 0 deletions
diff --git a/plugins/MagneticWindows/src/Options.cpp b/plugins/MagneticWindows/src/Options.cpp new file mode 100644 index 0000000000..d070f40d56 --- /dev/null +++ b/plugins/MagneticWindows/src/Options.cpp @@ -0,0 +1,128 @@ +#include "MagneticWindowsCore.h"
+
+HANDLE hInitOptionsHook;
+TOptions Options = {
+ true,
+ cDefaultSnapWidth,
+ false
+};
+
+
+int 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);
+
+ wsprintf(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, 64, 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: {
+ WORD idCtrl = LOWORD(wParam), wNotifyCode = HIWORD(wParam);
+
+ switch(idCtrl) {
+ case IDC_CHK_SNAP: {
+ if (wNotifyCode == 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 (wNotifyCode == 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;
+ }
+
+ break;
+
+ }
+ default:
+
+ break;
+ }
+ return 0;
+
+}
+
+int InitOptions(WPARAM wParam, LPARAM) {
+ OPTIONSDIALOGPAGE Opt = { 0 };
+
+ Opt.cbSize = sizeof(Opt);
+// Opt.position = 0;
+ Opt.pfnDlgProc = OptionsDlgProc;
+ Opt.pszTemplate = MAKEINTRESOURCEA(IDD_OPT_MAGNETICWINDOWS);
+ Opt.hInstance = hInst;
+// Opt.hIcon = 0;
+ Opt.pszGroup = LPGEN("Customize");
+ Opt.pszTitle = LPGEN("Magnetic Windows");
+// Opt.groupPosition = 0;
+// Opt.hGroupIcon = 0;
+ Opt.flags = ODPF_BOLDGROUPS;
+// Opt.nIDBottomSimpleControl = 0;
+// Opt.nIDRightSimpleControl = 0;
+// Opt.expertOnlyControls = NULL;
+// Opt.nExpertOnlyControls = 0;
+
+ Options_AddPage(wParam, &Opt);
+
+ return 0;
+}
+
+void LoadOptions() {
+ Options.DoSnap = db_get_b(NULL, MODULE_NAME, "DoSnap", TRUE);
+ Options.SnapWidth = db_get_b(NULL, MODULE_NAME, "SnapWidth", cDefaultSnapWidth);
+ Options.ScriverWorkAround = db_get_b(NULL, MODULE_NAME, "ScriverWorkAround", FALSE);
+}
\ No newline at end of file |