-const char w32log_rcs[] = "$Id: w32log.c,v 1.25 2002/04/04 00:36:36 gliptak Exp $";
+const char w32log_rcs[] = "$Id: w32log.c,v 2.2 2002/09/05 08:43:11 oes Exp $";
/*********************************************************************
*
- * File : $Source: /cvsroot/ijbswa/current/w32log.c,v $
+ * File : $Source: /cvsroot/ijbswa/current/src/w32log.c,v $
*
* Purpose : Functions for creating and destroying the log window,
* ouputting strings, processing messages and so on.
*
* Revisions :
* $Log: w32log.c,v $
+ * Revision 2.2 2002/09/05 08:43:11 oes
+ * Synced with the stable branch:
+ * Revision 1.25.2.1 2002/08/21 17:59:05 oes
+ * - "Show Privoxy Window" now a toggle
+ * - Temp kludge to let user and default action file be edited through win32 GUI (FR 592080)
+ *
+ * Revision 2.1 2002/06/04 16:37:48 jongfoster
+ * Adding Doxygen-style comments to variables
+ *
+ * Revision 2.0 2002/06/04 14:34:21 jongfoster
+ * Moving source files to src/
+ *
* Revision 1.25 2002/04/04 00:36:36 gliptak
* always use pcre for matching
*
* configurable through the UI.
*/
-/* Indicates whether task bar shows activity animation */
+/** Indicates whether task bar shows activity animation */
BOOL g_bShowActivityAnimation = 1;
-/* Indicates if the log window appears on the task bar */
+/** Indicates whether the log window is shown */
+BOOL g_bShowLogWindow = 1;
+
+/** Indicates if the log window appears on the task bar */
BOOL g_bShowOnTaskBar = 0;
-/* Indicates whether closing the log window really just hides it */
+/** Indicates whether closing the log window really just hides it */
BOOL g_bCloseHidesWindow = 1;
-/* Indicates if messages are logged at all */
+/** Indicates if messages are logged at all */
BOOL g_bLogMessages = 1;
-/* Indicates whether log messages are highlighted */
+/** Indicates whether log messages are highlighted */
BOOL g_bHighlightMessages = 1;
-/* Indicates if buffer is limited in size */
+/** Indicates if buffer is limited in size */
BOOL g_bLimitBufferSize = 1;
-/* Maximum number of lines allowed in buffer when limited */
+/** Maximum number of lines allowed in buffer when limited */
int g_nMaxBufferLines = DEFAULT_MAX_BUFFER_LINES;
-/* Font to use */
+/** Font to use */
char g_szFontFaceName[255] = DEFAULT_LOG_FONT_NAME;
-/* Size of font to use */
+/** Size of font to use */
int g_nFontSize = DEFAULT_LOG_FONT_SIZE;
/* FIXME: this is a kludge */
-const char * g_actions_file = NULL;
+/** Second (=default, hopefully) Actions file name. */
+const char * g_default_actions_file = NULL;
+
+/** Third (=user, hopefully) Actions file name. */
+const char * g_user_actions_file = NULL;
+
+/** Filter file name. */
const char * g_re_filterfile = NULL;
+
#ifdef FEATURE_TRUST
+
+/** Trust file name. */
const char * g_trustfile = NULL;
+
#endif /* def FEATURE_TRUST */
/* FIXME: end kludge */
-/* Regular expression for detected URLs */
+
+/** Regular expression for detected URLs */
#define RE_URL "http:[^ \n\r]*"
-/*
- * Regular expressions that are used to perform highlight in the log window
+
+/**
+ * Regular expressions that are used to perform highlight in the log window.
*/
static struct _Pattern
{
- const char *str;
- int style;
- regex_t buffer;
+ const char *str; /**< The pattern to match. */
+ int style; /**< How to highlight it - one of the STYLE_xxx constants. */
+ regex_t buffer; /**< The compiled pattern to use for matching. Generated from str. */
} patterns_to_highlight[] =
{
/* url headers */
/*
* Public variables
*/
+
+/**
+ * Window handle for the log window.
+ */
HWND g_hwndLogFrame;
+
/*
* Private variables
*/
+
+/** Critical section used to serialize output to the log window. */
static CRITICAL_SECTION g_criticalsection;
+
+/** The window handle of the tray icon window. */
static HWND g_hwndTray;
+
+/** The window handle of the log window. */
static HWND g_hwndLogBox;
+
+/** The default window procedure for the rich edit control. Set when we
+ subclass this window. */
static WNDPROC g_fnLogBox;
+
+/** The icons for the activity animation. */
static HICON g_hiconAnim[ANIM_FRAMES];
+
+/** The icon to use when idle. */
static HICON g_hiconIdle;
+
+/** The main application icon. */
static HICON g_hiconApp;
+
+/** The index of the current animation frame. */
static int g_nAnimFrame;
+
+/** If a timer to call LogClipBuffer() has been started. */
static BOOL g_bClipPending = FALSE;
+
+/** The version of the rich edit control we're using. */
static int g_nRichEditVersion = 0;
+
/*
* Private functions
*/
* Function : LogClipBuffer
*
* Description : Prunes old lines from the log.
+ * This is called occasionally, from a timer callback.
*
* Parameters : None
*
{
SetForegroundWindow(g_hwndLogFrame);
SetWindowPos(g_hwndLogFrame, HWND_TOP, 0, 0, 0, 0, SWP_SHOWWINDOW | SWP_NOSIZE | SWP_NOMOVE);
+
}
else if (g_bShowOnTaskBar)
{
{
ShowWindow(g_hwndLogFrame, SW_HIDE);
}
-
}
{
switch (nCommand)
{
- case ID_SHOWWINDOW:
- ShowLogWindow(TRUE);
+ case ID_TOGGLE_SHOWWINDOW:
+ g_bShowLogWindow = !g_bShowLogWindow;
+
+ ShowLogWindow(g_bShowLogWindow);
break;
case ID_FILE_EXIT:
EditFile(configfile);
break;
- case ID_TOOLS_EDITACTIONS:
- EditFile(g_actions_file);
+ case ID_TOOLS_EDITDEFAULTACTIONS:
+ EditFile(g_default_actions_file);
+ break;
+
+ case ID_TOOLS_EDITUSERACTIONS:
+ EditFile(g_user_actions_file);
break;
case ID_TOOLS_EDITFILTERS:
void OnLogInitMenu(HMENU hmenu)
{
/* Only enable editors if there is a file to edit */
- EnableMenuItem(hmenu, ID_TOOLS_EDITACTIONS, MF_BYCOMMAND | (g_actions_file ? MF_ENABLED : MF_GRAYED));
+ EnableMenuItem(hmenu, ID_TOOLS_EDITDEFAULTACTIONS, MF_BYCOMMAND | (g_default_actions_file ? MF_ENABLED : MF_GRAYED));
+ EnableMenuItem(hmenu, ID_TOOLS_EDITUSERACTIONS, MF_BYCOMMAND | (g_user_actions_file ? MF_ENABLED : MF_GRAYED));
EnableMenuItem(hmenu, ID_TOOLS_EDITFILTERS, MF_BYCOMMAND | (g_re_filterfile ? MF_ENABLED : MF_GRAYED));
#ifdef FEATURE_TRUST
EnableMenuItem(hmenu, ID_TOOLS_EDITTRUST, MF_BYCOMMAND | (g_trustfile ? MF_ENABLED : MF_GRAYED));
/* by haroon - menu item for Enable toggle on/off */
CheckMenuItem(hmenu, ID_TOGGLE_ENABLED, MF_BYCOMMAND | (g_bToggleIJB ? MF_CHECKED : MF_UNCHECKED));
#endif /* def FEATURE_TOGGLE */
+ CheckMenuItem(hmenu, ID_TOGGLE_SHOWWINDOW, MF_BYCOMMAND | (g_bShowLogWindow ? MF_CHECKED : MF_UNCHECKED));
}
return 0;
case WM_SHOWWINDOW:
+ g_bShowLogWindow = wParam;
case WM_SIZE:
/* Resize the logging window to fit the new frame */
if (g_hwndLogBox)