Rebuilt after standard.action file removal.
[privoxy.git] / w32log.c
index 732c0a3..9c92131 100644 (file)
--- a/w32log.c
+++ b/w32log.c
@@ -1,7 +1,7 @@
-const char w32log_rcs[] = "$Id: w32log.c,v 1.25.2.5 2003/04/04 12:48:51 oes Exp $";
+const char w32log_rcs[] = "$Id: w32log.c,v 1.29 2008/12/20 15:27:40 ler762 Exp $";
 /*********************************************************************
  *
- * File        :  $Source: /cvsroot/ijbswa/current/Attic/w32log.c,v $
+ * File        :  $Source: /cvsroot/ijbswa/current/w32log.c,v $
  *
  * Purpose     :  Functions for creating and destroying the log window,
  *                ouputting strings, processing messages and so on.
@@ -32,6 +32,25 @@ const char w32log_rcs[] = "$Id: w32log.c,v 1.25.2.5 2003/04/04 12:48:51 oes Exp
  *
  * Revisions   :
  *    $Log: w32log.c,v $
+ *    Revision 1.29  2008/12/20 15:27:40  ler762
+ *    The crunch log message format changed, so update the strings to highlight
+ *    in the log window.
+ *
+ *    Revision 1.28  2008/11/02 14:37:47  ler762
+ *    commit the part of the patches I've been using that were written by torford and gjmurphy
+ *      [ 1824315 ] Minor code cleanup
+ *      [ 1781135 ] Patch - Add clear log, select all, and Accelerators for w32
+ *        http://sourceforge.net/tracker/?func=detail&atid=311118&aid=1781135&group_id=11118
+ *    The full patch adds control keys A(select all), C(copy) and D(delete all) to the
+ *    Privoxy log window menu.  Select all and copy work for me without the patch
+ *    (albeit without showing the accelerator keys on the menu), so the only part of the
+ *    patch I've been using for the last year or so has been the ctrl-d to delete
+ *    everything in the Privoxy log window.
+ *
+ *    Revision 1.27  2006/07/18 14:48:48  david__schmidt
+ *    Reorganizing the repository: swapping out what was HEAD (the old 3.1 branch)
+ *    with what was really the latest development (the v_3_0_branch branch)
+ *
  *    Revision 1.25.2.5  2003/04/04 12:48:51  oes
  *    Fixed bug #711865:
  *     - Made tray menu correctly reflect initial window visibility state
@@ -299,7 +318,16 @@ static struct _Pattern
    { RE_URL,                STYLE_LINK },
 /* { "[a-zA-Z0-9]+\\.[a-zA-Z0-9]+\\.[a-zA-Z0-9]+\\.[^ \n\r]*", STYLE_LINK }, */
    /* interesting text to highlight */
-   { "crunch!",           STYLE_HIGHLIGHT },
+   /*   see jcc.c crunch_reason for the full list */
+   { "Crunch: Blocked:",            STYLE_HIGHLIGHT },
+   { "Crunch: Untrusted",           STYLE_HIGHLIGHT },
+   { "Crunch: Redirected:",         STYLE_HIGHLIGHT },
+   { "Crunch: DNS failure",         STYLE_HIGHLIGHT },
+   { "Crunch: Forwarding failed",   STYLE_HIGHLIGHT },
+   { "Crunch: Connection failure",  STYLE_HIGHLIGHT },
+   { "Crunch: Out of memory",       STYLE_HIGHLIGHT },
+   /* what are all the possible error strings?? */
+   { "Error:",                      STYLE_HIGHLIGHT },
    /* http headers */
    { "referer:",            STYLE_HEADER },
    { "proxy-connection:",   STYLE_HEADER },
@@ -343,6 +371,7 @@ static HWND g_hwndLogBox;
 static WNDPROC g_fnLogBox;
 static HICON g_hiconAnim[ANIM_FRAMES];
 static HICON g_hiconIdle;
+static HICON g_hiconOff;
 static int g_nAnimFrame;
 static BOOL g_bClipPending = FALSE;
 static int g_nRichEditVersion = 0;
@@ -360,6 +389,7 @@ static void LogClipBuffer(void);
 static void LogCreatePatternMatchingBuffers(void);
 static void LogDestroyPatternMatchingBuffers(void);
 static int LogPutStringNoMatch(const char *pszText, int style);
+static void SetIdleIcon(void);
 
 
 /*********************************************************************
@@ -379,6 +409,7 @@ BOOL InitLogWindow(void)
 
    /* Load the icons */
    g_hiconIdle = LoadIcon(g_hInstance, MAKEINTRESOURCE(IDI_IDLE));
+   g_hiconOff  = LoadIcon(g_hInstance, MAKEINTRESOURCE(IDI_OFF));
    for (i = 0; i < ANIM_FRAMES; i++)
    {
       g_hiconAnim[i] = LoadIcon(g_hInstance, MAKEINTRESOURCE(IDI_ANIMATED1 + i));
@@ -421,6 +452,7 @@ void TermLogWindow(void)
    TrayDeleteIcon(g_hwndTray, 1);
    DeleteObject(g_hiconApp);
    DeleteObject(g_hiconIdle);
+   DeleteObject(g_hiconOff);
    for (i = 0; i < ANIM_FRAMES; i++)
    {
       DeleteObject(g_hiconAnim[i]);
@@ -1135,6 +1167,7 @@ void OnLogCommand(int nCommand)
          {
             log_error(LOG_LEVEL_INFO, "Now toggled OFF.");
          }
+         SetIdleIcon();
          break;
 #endif /* def FEATURE_TOGGLE */
 
@@ -1247,7 +1280,7 @@ void OnLogTimer(int nTimer)
 
       case TIMER_ANIMSTOP_ID:
          g_nAnimFrame = 0;
-         TraySetIcon(g_hwndTray, 1, g_hiconIdle);
+         SetIdleIcon();
          KillTimer(g_hwndLogFrame, TIMER_ANIM_ID);
          KillTimer(g_hwndLogFrame, TIMER_ANIMSTOP_ID);
          break;
@@ -1268,6 +1301,31 @@ void OnLogTimer(int nTimer)
 }
 
 
+/*********************************************************************
+ *
+ * Function    :  SetIdleIcon
+ *
+ * Description :  Sets the tray icon to either idle or off
+ *
+ * Parameters  :  none
+ *
+ * Returns     :  N/A
+ *
+ *********************************************************************/
+void SetIdleIcon()
+{
+#ifdef FEATURE_TOGGLE
+         if (!global_toggle_state)
+         {
+            TraySetIcon(g_hwndTray, 1, g_hiconOff);
+            /* log_error(LOG_LEVEL_INFO, "Privoxy OFF icon selected."); */
+         }
+         else
+#endif /* def FEATURE_TOGGLE */
+         TraySetIcon(g_hwndTray, 1, g_hiconIdle);
+}
+
+
 /*********************************************************************
  *
  * Function    :  LogRichEditProc
@@ -1294,8 +1352,16 @@ LRESULT CALLBACK LogRichEditProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lPa
          pt.y = HIWORD(lParam);
          ClientToScreen(hwnd, &pt);
          OnLogRButtonUp(wParam, pt.x, pt.y);
+         return 0;
+      }
+      case WM_CHAR:
+      {
+         if ((GetKeyState(VK_CONTROL) != 0) && (wParam == 4)) /* ctrl+d */
+         {
+             OnLogCommand(ID_VIEW_CLEARLOG);
+             return 0;
+         }
       }
-      return 0;
    }
    return CallWindowProc(g_fnLogBox, hwnd, uMsg, wParam, lParam);
 
@@ -1373,6 +1439,14 @@ LRESULT CALLBACK LogWindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lPara
                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);