-const char w32log_rcs[] = "$Id: w32log.c,v 1.19 2002/01/17 21:04:17 jongfoster Exp $";
+const char w32log_rcs[] = "$Id: w32log.c,v 1.25.2.5 2003/04/04 12:48:51 oes Exp $";
/*********************************************************************
*
- * File : $Source: /cvsroot/ijbswa/current/w32log.c,v $
+ * File : $Source: /cvsroot/ijbswa/current/Attic/w32log.c,v $
*
* Purpose : Functions for creating and destroying the log window,
* ouputting strings, processing messages and so on.
*
* Copyright : Written by and Copyright (C) 2001-2002 members of
- * the Privoxy team. http://privoxy.org/
+ * the Privoxy team. http://www.privoxy.org/
*
* Written by and Copyright (C) 1999 Adam Lock
* <locka@iol.ie>
*
* Revisions :
* $Log: w32log.c,v $
+ * Revision 1.25.2.5 2003/04/04 12:48:51 oes
+ * Fixed bug #711865:
+ * - Made tray menu correctly reflect initial window visibility state
+ * - Hopefully fixed problem where log window contents wasn't visible
+ * until vertical scroll bar was clicked. Thanks to Guy for the fix!
+ *
+ * Revision 1.25.2.4 2003/03/11 11:53:59 oes
+ * Cosmetic: Renamed cryptic variable
+ *
+ * Revision 1.25.2.3 2002/11/20 14:39:05 oes
+ * Fixed compiler warning
+ *
+ * Revision 1.25.2.2 2002/09/25 15:23:10 oes
+ * Uncheck the "Show Privoxy Window" taskbar menu item when window gets minimized. Fixes bug #606804
+ *
+ * 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 1.25 2002/04/04 00:36:36 gliptak
+ * always use pcre for matching
+ *
+ * Revision 1.24 2002/03/31 17:19:00 jongfoster
+ * Win32 only: Enabling STRICT to fix a VC++ compile warning.
+ *
+ * Revision 1.23 2002/03/26 22:57:10 jongfoster
+ * Web server name should begin www.
+ *
+ * Revision 1.22 2002/03/24 12:48:23 jongfoster
+ * Fixing doc links
+ *
+ * Revision 1.21 2002/03/24 12:07:35 jongfoster
+ * Consistern name for filters file
+ *
+ * Revision 1.20 2002/03/24 12:03:47 jongfoster
+ * Name change
+ *
* Revision 1.19 2002/01/17 21:04:17 jongfoster
* Replacing hard references to the URL of the config interface
* with #defines from project.h
#include <assert.h>
#include <stdio.h>
+#ifndef STRICT
+#define STRICT
+#endif
#include <windows.h>
#include <richedit.h>
/* Indicates whether task bar shows activity animation */
BOOL g_bShowActivityAnimation = 1;
+/* 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;
/* FIXME: this is a kludge */
-const char * g_actions_file = NULL;
+const char * g_default_actions_file = NULL;
+const char * g_user_actions_file = NULL;
const char * g_re_filterfile = NULL;
#ifdef FEATURE_TRUST
const char * g_trustfile = NULL;
/* FIXME: end kludge */
-
-#ifdef REGEX
/* Regular expression for detected URLs */
#define RE_URL "http:[^ \n\r]*"
/* this is the terminator statement - do not delete! */
{ NULL, STYLE_NONE }
};
-#endif /* def REGEX */
-
/*
* Public variables
*/
HWND g_hwndLogFrame;
+HICON g_hiconApp;
/*
* Private variables
static WNDPROC g_fnLogBox;
static HICON g_hiconAnim[ANIM_FRAMES];
static HICON g_hiconIdle;
-static HICON g_hiconApp;
static int g_nAnimFrame;
static BOOL g_bClipPending = FALSE;
static int g_nRichEditVersion = 0;
*********************************************************************/
void LogCreatePatternMatchingBuffers(void)
{
-#ifdef REGEX
int i;
for (i = 0; patterns_to_highlight[i].str != NULL; i++)
{
regcomp(&patterns_to_highlight[i].buffer, patterns_to_highlight[i].str, REG_ICASE);
}
-#endif
-
}
*********************************************************************/
void LogDestroyPatternMatchingBuffers(void)
{
-#ifdef REGEX
int i;
for (i = 0; patterns_to_highlight[i].str != NULL; i++)
{
regfree(&patterns_to_highlight[i].buffer);
}
-#endif
-
}
char *LogGetURLUnderCursor(void)
{
char *szResult = NULL;
-#ifdef REGEX
regex_t re;
POINT ptCursor;
POINTL ptl;
regfree(&re);
}
-#endif
return szResult;
}
* Function : LogPutString
*
* Description : Inserts text into the logging window. This is really
- * a REGEXP aware wrapper function to `LogPutStringNoMatch'.
+ * a regexp aware wrapper function to `LogPutStringNoMatch'.
*
* Parameters :
* 1 : pszText = pointer to string going to the log window
*********************************************************************/
int LogPutString(const char *pszText)
{
-#ifdef REGEX
int i;
-#endif
int result = 0;
if (pszText == NULL || strlen(pszText) == 0)
*/
EnterCriticalSection(&g_criticalsection);
-#ifdef REGEX
if (g_bHighlightMessages)
{
regmatch_t match;
}
}
}
-#endif
result = LogPutStringNoMatch(pszText, STYLE_NONE);
-#ifdef REGEX
end:
-#endif
LeaveCriticalSection(&g_criticalsection);
return result;
SendMessage(g_hwndLogBox, EM_REPLACESEL, FALSE, (LPARAM) "");
SendMessage(g_hwndLogBox, EM_SETOPTIONS, ECOOP_XOR, ECO_AUTOVSCROLL);
- /* Restore old selection */
+ /* reposition (back to) the end of the log content */
+ range.cpMin = SendMessage (g_hwndLogBox, WM_GETTEXTLENGTH, 0, 0);
+ range.cpMax = -1;
+ SendMessage(g_hwndLogBox, EM_EXSETSEL, 0, (LPARAM) &range);
+
+ /* restore vertical ScrollBar stuff (messed up by AUTOVSCROLL) */
+ SendMessage (g_hwndLogBox, EM_SCROLL, SB_LINEDOWN, 0);
+
}
-}
+}
/*********************************************************************
nCmdShow == SW_MINIMIZE ||
nCmdShow == SW_SHOWMINNOACTIVE))
{
+ g_bShowLogWindow = FALSE;
nCmdShow = SW_HIDE;
}
ShowWindow(hwnd, nCmdShow);
UpdateWindow(hwnd);
+
GetClientRect(g_hwndLogFrame, &rcClient);
SetWindowPos(g_hwndLogBox, NULL, rcClient.left, rcClient.top, rcClient.right - rcClient.left, rcClient.bottom - rcClient.top, SWP_NOZORDER);
{
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:
#ifdef FEATURE_TOGGLE
/* by haroon - change toggle to its opposite value */
case ID_TOGGLE_ENABLED:
- g_bToggleIJB = !g_bToggleIJB;
- if (g_bToggleIJB)
+ global_toggle_state = !global_toggle_state;
+ if (global_toggle_state)
{
log_error(LOG_LEVEL_INFO, "Now toggled ON.");
}
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_EDITPERLRE:
+ case ID_TOOLS_EDITFILTERS:
EditFile(g_re_filterfile);
break;
#endif /* def FEATURE_TRUST */
case ID_HELP_GPL:
- ShellExecute(g_hwndLogFrame, "open", "doc/gpl.html", NULL, NULL, SW_SHOWNORMAL);
+ ShellExecute(g_hwndLogFrame, "open", "LICENSE.txt", NULL, NULL, SW_SHOWNORMAL);
break;
case ID_HELP_FAQ:
- ShellExecute(g_hwndLogFrame, "open", "doc/ijbfaq.html", NULL, NULL, SW_SHOWNORMAL);
+ ShellExecute(g_hwndLogFrame, "open", "doc\\faq\\index.html", NULL, NULL, SW_SHOWNORMAL);
break;
case ID_HELP_MANUAL:
- ShellExecute(g_hwndLogFrame, "open", "doc/ijbman.html", NULL, NULL, SW_SHOWNORMAL);
+ ShellExecute(g_hwndLogFrame, "open", "doc\\user-manual\\index.html", NULL, NULL, SW_SHOWNORMAL);
break;
case ID_HELP_STATUS:
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_EDITPERLRE, MF_BYCOMMAND | (g_re_filterfile ? 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));
#endif /* def FEATURE_TRUST */
CheckMenuItem(hmenu, ID_VIEW_ACTIVITYANIMATION, MF_BYCOMMAND | (g_bShowActivityAnimation ? MF_CHECKED : MF_UNCHECKED));
#ifdef FEATURE_TOGGLE
/* by haroon - menu item for Enable toggle on/off */
- CheckMenuItem(hmenu, ID_TOGGLE_ENABLED, MF_BYCOMMAND | (g_bToggleIJB ? MF_CHECKED : MF_UNCHECKED));
+ CheckMenuItem(hmenu, ID_TOGGLE_ENABLED, MF_BYCOMMAND | (global_toggle_state ? 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)