/********************************************************************* * * Function : OnLogCommand * * Description : Handler for WM_COMMAND messages. * * Parameters : * 1 : nCommand = the command portion of the menu selection event * * Returns : N/A * *********************************************************************/ void OnLogCommand(int nCommand) { switch (nCommand) { case ID_TOGGLE_SHOWWINDOW: g_bShowLogWindow = !g_bShowLogWindow; ShowLogWindow(g_bShowLogWindow); break; case ID_FILE_EXIT: PostMessage(g_hwndLogFrame, WM_CLOSE, 0, 0); break; case ID_EDIT_COPY: SendMessage(g_hwndLogBox, WM_COPY, 0, 0); break; case ID_VIEW_CLEARLOG: SendMessage(g_hwndLogBox, WM_SETTEXT, 0, (LPARAM) ""); break; case ID_VIEW_LOGMESSAGES: g_bLogMessages = !g_bLogMessages; /* SaveLogSettings(); */ break; case ID_VIEW_MESSAGEHIGHLIGHTING: g_bHighlightMessages = !g_bHighlightMessages; /* SaveLogSettings(); */ break; case ID_VIEW_LIMITBUFFERSIZE: g_bLimitBufferSize = !g_bLimitBufferSize; /* SaveLogSettings(); */ break; case ID_VIEW_ACTIVITYANIMATION: g_bShowActivityAnimation = !g_bShowActivityAnimation; /* SaveLogSettings(); */ break; #ifdef FEATURE_TOGGLE case ID_TOGGLE_ENABLED: global_toggle_state = !global_toggle_state; log_error(LOG_LEVEL_INFO, "Now toggled %s", global_toggle_state ? "ON" : "OFF"); /* * Leverage TIMER_ANIMSTOP_ID to set the idle icon through the * "application queue". According to MSDN, 10 milliseconds are * the lowest value possible and seem to be close enough to * "instantly". */ SetTimer(g_hwndLogFrame, TIMER_ANIMSTOP_ID, 10, NULL); break; #endif /* def FEATURE_TOGGLE */ case ID_TOOLS_EDITCONFIG: EditFile(configfile); break; case ID_TOOLS_EDITDEFAULTACTIONS: EditFile(g_default_actions_file); break; case ID_TOOLS_EDITUSERACTIONS: EditFile(g_user_actions_file); break; case ID_TOOLS_EDITDEFAULTFILTERS: EditFile(g_default_filterfile); break; case ID_TOOLS_EDITUSERFILTERS: EditFile(g_user_filterfile); break; #ifdef FEATURE_TRUST case ID_TOOLS_EDITTRUST: EditFile(g_trustfile); break; #endif /* def FEATURE_TRUST */ case ID_HELP_GPL: ShellExecute(g_hwndLogFrame, "open", "LICENSE.txt", NULL, NULL, SW_SHOWNORMAL); break; case ID_HELP_FAQ: ShellExecute(g_hwndLogFrame, "open", "doc\\faq\\index.html", NULL, NULL, SW_SHOWNORMAL); break; case ID_HELP_MANUAL: ShellExecute(g_hwndLogFrame, "open", "doc\\user-manual\\index.html", NULL, NULL, SW_SHOWNORMAL); break; case ID_HELP_STATUS: ShellExecute(g_hwndLogFrame, "open", CGI_PREFIX "show-status", NULL, NULL, SW_SHOWNORMAL); break; case ID_HELP_ABOUT: MessageBox(g_hwndLogFrame, win32_blurb, "About Privoxy", MB_OK); break; default: /* DO NOTHING */ break; } }
void CMainFrame::OnViewLogwindow() { ShowLogWindow(TRUE); }
/********************************************************************* * * Function : LogWindowProc * * Description : Windows call back routine handles events on the log window. * * Parameters : * 1 : hwnd = handle of the logging window * 2 : uMsg = message number * 3 : wParam = first param for this message * 4 : lParam = next param for this message * * Returns : Appropriate M$ window message handler codes. * *********************************************************************/ LRESULT CALLBACK LogWindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { switch (uMsg) { case WM_CREATE: return 0; case WM_CLOSE: /* This is the end - my only friend - the end */ DestroyWindow(g_hwndLogBox); DestroyWindow(g_hwndLogFrame); return 0; case WM_DESTROY: PostQuitMessage(0); return 0; case WM_SHOWWINDOW: g_bShowLogWindow = wParam; case WM_SIZE: /* Resize the logging window to fit the new frame */ if (g_hwndLogBox) { RECT rc; GetClientRect(g_hwndLogFrame, &rc); SetWindowPos(g_hwndLogBox, NULL, rc.left, rc.top, rc.right - rc.left, rc.bottom - rc.top, SWP_NOZORDER); } return 0; case WM_INITMENU: OnLogInitMenu((HMENU) wParam); return 0; case WM_TIMER: OnLogTimer(wParam); return 0; case WM_COMMAND: OnLogCommand(LOWORD(wParam)); return 0; case WM_SYSCOMMAND: switch (wParam) { case SC_CLOSE: if (g_bCloseHidesWindow) { ShowLogWindow(FALSE); return 0; } break; case SC_MINIMIZE: ShowLogWindow(FALSE); return 0; } break; case WM_CHAR: if ((GetKeyState(VK_CONTROL) != 0) && (wParam == 4)) /* ctrl+d */ { OnLogCommand(ID_VIEW_CLEARLOG); return 0; } break; } return DefWindowProc(hwnd, uMsg, wParam, lParam); }
/********************************************************************* * * Function : OnLogCommand * * Description : Handler for WM_COMMAND messages. * * Parameters : * 1 : nCommand = the command portion of the menu selection event * * Returns : N/A * *********************************************************************/ void OnLogCommand(int nCommand) { switch (nCommand) { case ID_TOGGLE_SHOWWINDOW: g_bShowLogWindow = !g_bShowLogWindow; ShowLogWindow(g_bShowLogWindow); break; case ID_FILE_EXIT: PostMessage(g_hwndLogFrame, WM_CLOSE, 0, 0); break; case ID_EDIT_COPY: SendMessage(g_hwndLogBox, WM_COPY, 0, 0); break; case ID_VIEW_CLEARLOG: SendMessage(g_hwndLogBox, WM_SETTEXT, 0, (LPARAM) ""); break; case ID_VIEW_LOGMESSAGES: g_bLogMessages = !g_bLogMessages; /* SaveLogSettings(); */ break; case ID_VIEW_MESSAGEHIGHLIGHTING: g_bHighlightMessages = !g_bHighlightMessages; /* SaveLogSettings(); */ break; case ID_VIEW_LIMITBUFFERSIZE: g_bLimitBufferSize = !g_bLimitBufferSize; /* SaveLogSettings(); */ break; case ID_VIEW_ACTIVITYANIMATION: g_bShowActivityAnimation = !g_bShowActivityAnimation; /* SaveLogSettings(); */ break; #ifdef FEATURE_TOGGLE /* by haroon - change toggle to its opposite value */ case ID_TOGGLE_ENABLED: global_toggle_state = !global_toggle_state; if (global_toggle_state) { log_error(LOG_LEVEL_INFO, "Now toggled ON."); } else { log_error(LOG_LEVEL_INFO, "Now toggled OFF."); } SetIdleIcon(); break; #endif /* def FEATURE_TOGGLE */ case ID_TOOLS_EDITCONFIG: EditFile(configfile); break; case ID_TOOLS_EDITDEFAULTACTIONS: EditFile(g_default_actions_file); break; case ID_TOOLS_EDITUSERACTIONS: EditFile(g_user_actions_file); break; case ID_TOOLS_EDITFILTERS: EditFile(g_re_filterfile); break; #ifdef FEATURE_TRUST case ID_TOOLS_EDITTRUST: EditFile(g_trustfile); break; #endif /* def FEATURE_TRUST */ case ID_HELP_GPL: ShellExecute(g_hwndLogFrame, "open", "LICENSE.txt", NULL, NULL, SW_SHOWNORMAL); break; case ID_HELP_FAQ: ShellExecute(g_hwndLogFrame, "open", "doc\\faq\\index.html", NULL, NULL, SW_SHOWNORMAL); break; case ID_HELP_MANUAL: ShellExecute(g_hwndLogFrame, "open", "doc\\user-manual\\index.html", NULL, NULL, SW_SHOWNORMAL); break; case ID_HELP_STATUS: ShellExecute(g_hwndLogFrame, "open", CGI_PREFIX "show-status", NULL, NULL, SW_SHOWNORMAL); break; case ID_HELP_ABOUT: MessageBox(g_hwndLogFrame, win32_blurb, "About Privoxy", MB_OK); break; default: /* DO NOTHING */ break; } }