aboutsummaryrefslogtreecommitdiff
path: root/Src/omBrowser/optionsDebug.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Src/omBrowser/optionsDebug.cpp')
-rw-r--r--Src/omBrowser/optionsDebug.cpp203
1 files changed, 203 insertions, 0 deletions
diff --git a/Src/omBrowser/optionsDebug.cpp b/Src/omBrowser/optionsDebug.cpp
new file mode 100644
index 00000000..2f798493
--- /dev/null
+++ b/Src/omBrowser/optionsDebug.cpp
@@ -0,0 +1,203 @@
+#include "main.h"
+#include "./options.h"
+#include "./resource.h"
+
+#include "./obj_ombrowser.h"
+#include "./ifc_omconfig.h"
+#include "./ifc_omdebugconfig.h"
+
+#include <windows.h>
+#include <commctrl.h>
+#include <shlwapi.h>
+#include <strsafe.h>
+
+
+#define INVERTHRESULT(__result)\
+ ((S_OK == (__result)) ? S_FALSE : ((S_FALSE == (__result)) ? S_OK : (__result)))
+
+#define BOOL2HRESULT(__result)\
+ ((FALSE != (__result)) ? S_OK : S_FALSE)
+
+static INT_PTR CALLBACK OptionsDebug_DialogProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
+
+
+HWND CALLBACK OptionsDebug_CreatePage(HWND hParent, UINT style)
+{
+ if (0 == (BOSTYLE_SHOWDEBUG & style))
+ return NULL;
+
+ return Plugin_CreateDialogParam(MAKEINTRESOURCE(IDD_OPTIONS_DEBUG), hParent, OptionsDebug_DialogProc, 0L);
+}
+
+static void OptionsDebug_UpdateFilterMenu(HWND hwnd, HRESULT enable)
+{
+ Options_SetCheckbox(hwnd, IDC_FILTERMENU, INVERTHRESULT(enable));
+}
+
+static void OptionsDebug_UpdateShowError(HWND hwnd, HRESULT enable)
+{
+ Options_SetCheckbox(hwnd, IDC_SHOWERROR, enable);
+}
+
+static void OptionsDebug_UpdateShowDebugger(HWND hwnd, HRESULT enable)
+{
+ Options_SetCheckbox(hwnd, IDC_SHOWDEBUGGER, enable);
+}
+
+
+static INT_PTR OptionsDebug_OnInitDialog(HWND hwnd, HWND hFocus, LPARAM param)
+{
+ WCHAR szBuffer[512] = {0};
+ Plugin_LoadString(IDS_OPTIONS_DEBUG, szBuffer, ARRAYSIZE(szBuffer));
+ SetWindowText(hwnd, szBuffer);
+
+ HWND hParent = GetParent(hwnd);
+
+ obj_ombrowser *browserManager;
+ if (FALSE == SendMessage(hParent, BOM_GETBROWSER, 0, (LPARAM)&browserManager))
+ browserManager = NULL;
+
+ ifc_omdebugconfig *debugConfig;
+
+ if (NULL != browserManager &&
+ SUCCEEDED(browserManager->GetConfig(&IFC_OmDebugConfig, (void**)&debugConfig)))
+ {
+ OptionsDebug_UpdateFilterMenu(hwnd, debugConfig->GetMenuFilterEnabled());
+ OptionsDebug_UpdateShowError(hwnd, debugConfig->GetScriptErrorEnabled());
+ OptionsDebug_UpdateShowDebugger(hwnd, debugConfig->GetScriptDebuggerEnabled());
+ debugConfig->Release();
+ }
+ else
+ {
+ OptionsDebug_UpdateFilterMenu(hwnd, E_FAIL);
+ OptionsDebug_UpdateShowError(hwnd, E_FAIL);
+ OptionsDebug_UpdateShowDebugger(hwnd, E_FAIL);
+ }
+
+ return 0;
+}
+
+static void OptionsDebug_OnDestroy(HWND hwnd)
+{
+}
+
+static void OptionsDebug_OnFilterMenu(HWND hwnd)
+{
+ HWND hControl = GetDlgItem(hwnd, IDC_FILTERMENU);
+ if (NULL == hControl) return;
+
+ HWND hParent = GetParent(hwnd);
+ if (NULL == hParent) return;
+
+ BOOL checked = (BST_CHECKED == (UINT)SendMessage(hControl, BM_GETCHECK, 0, 0L));
+
+ obj_ombrowser *browserManager;
+ if (FALSE != SendMessage(hParent, BOM_GETBROWSER, 0, (LPARAM)&browserManager))
+ {
+ ifc_omdebugconfig *debugConfig;
+ if (SUCCEEDED(browserManager->GetConfig(&IFC_OmDebugConfig, (void**)&debugConfig)))
+ {
+ debugConfig->EnableMenuFilter(!checked);
+ debugConfig->Release();
+ }
+ browserManager->Release();
+ }
+}
+
+static void OptionsDebug_OnShowError(HWND hwnd)
+{
+ HWND hControl = GetDlgItem(hwnd, IDC_SHOWERROR);
+ if (NULL == hControl) return;
+
+ HWND hParent = GetParent(hwnd);
+ if (NULL == hParent) return;
+
+ BOOL checked = (BST_CHECKED == (UINT)SendMessage(hControl, BM_GETCHECK, 0, 0L));
+
+ obj_ombrowser *browserManager;
+ if (FALSE != SendMessage(hParent, BOM_GETBROWSER, 0, (LPARAM)&browserManager))
+ {
+ ifc_omdebugconfig *debugConfig;
+ if (SUCCEEDED(browserManager->GetConfig(&IFC_OmDebugConfig, (void**)&debugConfig)))
+ {
+ debugConfig->EnableScriptError(checked);
+ debugConfig->Release();
+ }
+ browserManager->Release();
+ }
+}
+
+static void OptionsDebug_OnShowDebugger(HWND hwnd)
+{
+ HWND hControl = GetDlgItem(hwnd, IDC_SHOWDEBUGGER);
+ if (NULL == hControl) return;
+
+ HWND hParent = GetParent(hwnd);
+ if (NULL == hParent) return;
+
+ BOOL checked = (BST_CHECKED == (UINT)SendMessage(hControl, BM_GETCHECK, 0, 0L));
+
+ obj_ombrowser *browserManager;
+ if (FALSE != SendMessage(hParent, BOM_GETBROWSER, 0, (LPARAM)&browserManager))
+ {
+ ifc_omdebugconfig *debugConfig;
+ if (SUCCEEDED(browserManager->GetConfig(&IFC_OmDebugConfig, (void**)&debugConfig)))
+ {
+ debugConfig->EnableScriptDebugger(checked);
+ debugConfig->Release();
+ }
+ browserManager->Release();
+ }
+}
+
+static void OptionsDebug_OnConfigChanged(HWND hwnd, BOMCONFIGCHANGED *configData)
+{
+ if (NULL == configData || NULL == configData->configUid ||
+ FALSE == IsEqualIID(IFC_OmDebugConfig, *configData->configUid))
+ {
+ return;
+ }
+
+
+ switch(configData->valueId)
+ {
+ case CFGID_DEBUG_FILTERMENU: OptionsDebug_UpdateFilterMenu(hwnd, BOOL2HRESULT(configData->value)); break;
+ case CFGID_DEBUG_SCRIPTERROR: OptionsDebug_UpdateShowError(hwnd, BOOL2HRESULT(configData->value)); break;
+ case CFGID_DEBUG_SCRIPTDEBUGGER: OptionsDebug_UpdateShowDebugger(hwnd, BOOL2HRESULT(configData->value)); break;
+ }
+
+}
+static void OptionsDebug_OnCommand(HWND hwnd, INT commandId, INT eventId, HWND hControl)
+{
+ switch(commandId)
+ {
+ case IDC_FILTERMENU:
+ if (BN_CLICKED == eventId)
+ OptionsDebug_OnFilterMenu(hwnd);
+ break;
+ case IDC_SHOWERROR:
+ if (BN_CLICKED == eventId)
+ OptionsDebug_OnShowError(hwnd);
+ break;
+ case IDC_SHOWDEBUGGER:
+ if (BN_CLICKED == eventId)
+ OptionsDebug_OnShowDebugger(hwnd);
+ break;
+ }
+
+}
+
+
+
+static INT_PTR CALLBACK OptionsDebug_DialogProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
+{
+ switch(uMsg)
+ {
+ case WM_INITDIALOG: return OptionsDebug_OnInitDialog(hwnd, (HWND)wParam, lParam);
+ case WM_DESTROY: OptionsDebug_OnDestroy(hwnd); return 0;
+ case WM_COMMAND: OptionsDebug_OnCommand(hwnd, LOWORD(wParam), HIWORD(wParam), (HWND)lParam); return TRUE;
+
+ case BOM_CONFIGCHANGED: OptionsDebug_OnConfigChanged(hwnd, (BOMCONFIGCHANGED*)lParam); return TRUE;
+ }
+ return 0;
+} \ No newline at end of file