summaryrefslogtreecommitdiff
path: root/plugins/NewStory/src/options.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/NewStory/src/options.cpp')
-rw-r--r--plugins/NewStory/src/options.cpp161
1 files changed, 161 insertions, 0 deletions
diff --git a/plugins/NewStory/src/options.cpp b/plugins/NewStory/src/options.cpp
new file mode 100644
index 0000000000..fb5283223a
--- /dev/null
+++ b/plugins/NewStory/src/options.cpp
@@ -0,0 +1,161 @@
+#include "stdafx.h"
+
+Options options;
+int OptShowPage = 0;
+
+#undef MODULENAME
+#define MODULENAME "PopUp"
+
+void LoadOptions()
+{
+ return;
+}
+
+static int OptionsInitialize(WPARAM wParam, LPARAM lParam);
+
+void InitOptions()
+{
+ HookEvent(ME_OPT_INITIALISE, OptionsInitialize);
+}
+
+BOOL CALLBACK OptionsDlgProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam);
+
+static int OptionsInitialize(WPARAM wParam, LPARAM lParam)
+{
+ OPTIONSDIALOGPAGE odp = { 0 };
+ odp.cbSize = sizeof(odp);
+ odp.position = 100000000;
+ odp.hInstance = hInst;
+ odp.pszTemplate = MAKEINTRESOURCEA(IDD_OPTIONS);
+ odp.pszTitle = Translate("Newstory");
+// odp.pszGroup = Translate("PopUps");
+ odp.groupPosition = 910000000;
+ odp.flags=ODPF_BOLDGROUPS;
+ odp.pfnDlgProc = OptionsDlgProc;
+ CallService(MS_OPT_ADDPAGE,wParam,(LPARAM)&odp);
+ return 0;
+}
+
+static void ThemeDialogBackground(HWND hwnd) {
+ if (IsWinVerXPPlus()) {
+ static HMODULE hThemeAPI = NULL;
+ if (!hThemeAPI) hThemeAPI = GetModuleHandle(_T("uxtheme"));
+ if (hThemeAPI) {
+ HRESULT (STDAPICALLTYPE *MyEnableThemeDialogTexture)(HWND,DWORD) = (HRESULT (STDAPICALLTYPE*)(HWND,DWORD))GetProcAddress(hThemeAPI,"EnableThemeDialogTexture");
+ if (MyEnableThemeDialogTexture)
+ MyEnableThemeDialogTexture(hwnd,0x00000002|0x00000004); //0x00000002|0x00000004=ETDT_ENABLETAB
+ }
+ }
+}
+
+BOOL CALLBACK OptionsDlgProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
+{
+ switch(msg)
+ {
+ case WM_INITDIALOG:
+ {
+ TCITEM tci;
+ RECT rc;
+
+ tci.mask = TCIF_PARAM|TCIF_TEXT;
+ tci.lParam = (LPARAM)CreateDialog(hInst,MAKEINTRESOURCE(IDD_OPT_PASSWORDS),GetDlgItem(hwnd, IDC_TAB),OptPasswordsDlgProc);
+ tci.pszText = TranslateT("Passwords (not ready yet)");
+ if (tci.lParam) TabCtrl_InsertItem(GetDlgItem(hwnd,IDC_TAB),0,&tci);
+ GetClientRect(GetDlgItem(hwnd, IDC_TAB), &rc);
+ TabCtrl_AdjustRect(GetDlgItem(hwnd, IDC_TAB), FALSE, &rc);
+ ThemeDialogBackground((HWND)tci.lParam);
+ MoveWindow((HWND)tci.lParam, rc.left, rc.top, rc.right-rc.left, rc.bottom-rc.top, TRUE);
+ ShowWindow((HWND)tci.lParam,(OptShowPage==2)?SW_SHOW:SW_HIDE);
+
+ tci.mask = TCIF_PARAM|TCIF_TEXT;
+ tci.lParam = (LPARAM)CreateDialog(hInst,MAKEINTRESOURCE(IDD_OPT_TEMPLATES),GetDlgItem(hwnd, IDC_TAB),OptTemplatesDlgProc);
+ tci.pszText = TranslateT("Templates");
+ if (tci.lParam) TabCtrl_InsertItem(GetDlgItem(hwnd,IDC_TAB),0,&tci);
+ GetClientRect(GetDlgItem(hwnd, IDC_TAB), &rc);
+ TabCtrl_AdjustRect(GetDlgItem(hwnd, IDC_TAB), FALSE, &rc);
+ ThemeDialogBackground((HWND)tci.lParam);
+ MoveWindow((HWND)tci.lParam, rc.left, rc.top, rc.right-rc.left, rc.bottom-rc.top, TRUE);
+ ShowWindow((HWND)tci.lParam,(OptShowPage==1)?SW_SHOW:SW_HIDE);
+
+ tci.mask = TCIF_PARAM|TCIF_TEXT;
+ tci.lParam = (LPARAM)CreateDialog(hInst,MAKEINTRESOURCE(IDD_OPT_GENERAL),GetDlgItem(hwnd, IDC_TAB), 0);
+ tci.pszText = TranslateT("General");
+ if (tci.lParam) TabCtrl_InsertItem(GetDlgItem(hwnd,IDC_TAB),0,&tci);
+ GetClientRect(GetDlgItem(hwnd, IDC_TAB), &rc);
+ TabCtrl_AdjustRect(GetDlgItem(hwnd, IDC_TAB), FALSE, &rc);
+ ThemeDialogBackground((HWND)tci.lParam);
+ MoveWindow((HWND)tci.lParam, rc.left, rc.top, rc.right-rc.left, rc.bottom-rc.top, TRUE);
+ ShowWindow((HWND)tci.lParam,(OptShowPage==0)?SW_SHOW:SW_HIDE);
+
+ TabCtrl_SetCurSel(GetDlgItem(hwnd, IDC_TAB), OptShowPage);
+ OptShowPage = 0;
+ return FALSE;
+ }
+
+ case PSM_CHANGED:
+ {
+ SendMessage(GetParent(hwnd), PSM_CHANGED, 0, 0);
+ break;
+ }
+
+ case WM_DESTROY:
+ {
+ OptShowPage = 0;
+ break;
+ }
+
+ case WM_NOTIFY:
+ {
+ switch(((LPNMHDR)lParam)->idFrom)
+ {
+ case 0:
+ {
+ switch (((LPNMHDR)lParam)->code)
+ {
+ case PSN_RESET:
+ case PSN_APPLY:
+ {
+ TCITEM tci;
+ int i,count;
+ tci.mask = TCIF_PARAM;
+ count = TabCtrl_GetItemCount(GetDlgItem(hwnd,IDC_TAB));
+ for (i=0;i<count;i++)
+ {
+ TabCtrl_GetItem(GetDlgItem(hwnd,IDC_TAB),i,&tci);
+ SendMessage((HWND)tci.lParam,WM_NOTIFY,wParam,lParam);
+ }
+ break;
+ }
+ }
+ break;
+ }
+
+ case IDC_TAB:
+ {
+ switch (((LPNMHDR)lParam)->code)
+ {
+ case TCN_SELCHANGING:
+ {
+ TCITEM tci;
+ tci.mask = TCIF_PARAM;
+ TabCtrl_GetItem(GetDlgItem(hwnd,IDC_TAB),TabCtrl_GetCurSel(GetDlgItem(hwnd,IDC_TAB)),&tci);
+ ShowWindow((HWND)tci.lParam,SW_HIDE);
+ break;
+ }
+ case TCN_SELCHANGE:
+ {
+ TCITEM tci;
+ tci.mask = TCIF_PARAM;
+ TabCtrl_GetItem(GetDlgItem(hwnd,IDC_TAB),TabCtrl_GetCurSel(GetDlgItem(hwnd,IDC_TAB)),&tci);
+ ShowWindow((HWND)tci.lParam,SW_SHOW);
+ break;
+ }
+ }
+ break;
+ }
+ }
+ break;
+ }
+ }
+ return FALSE;
+}