| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203 | #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;}
 |