You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by mt...@apache.org on 2003/10/02 09:21:29 UTC

cvs commit: jakarta-commons/daemon/src/native/nt/procrun procgui.c

mturk       2003/10/02 00:21:29

  Modified:    daemon/src/native/nt/procrun procgui.c
  Log:
  Improve listview parsing and display.
  Make sure that the console window popups to foreground
  on try dblclick
  
  Revision  Changes    Path
  1.7       +70 -34    jakarta-commons/daemon/src/native/nt/procrun/procgui.c
  
  Index: procgui.c
  ===================================================================
  RCS file: /home/cvs/jakarta-commons/daemon/src/native/nt/procrun/procgui.c,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- procgui.c	1 Oct 2003 18:06:20 -0000	1.6
  +++ procgui.c	2 Oct 2003 07:21:29 -0000	1.7
  @@ -100,7 +100,6 @@
   #define CONWRAP_ENOARGS        1
   #define CONWRAP_EARG           2
   #define CONWRAP_EFATAL         3
  -#define TIMEOUT_TIME           20000    /* startup timeout (ms) */
   
   #ifndef PSH_NOCONTEXTHELP
   #define PSH_NOCONTEXTHELP       0x02000000
  @@ -116,34 +115,43 @@
   int                    ac_use_dlg = 0;
   int                    ac_use_show = 0;
   int                    ac_use_props = 0;
  -int                    ac_use_lview = 0;
  -
  +int                    ac_use_lview = 1;
  +/* default splash timeout 5 seconds */
  +int                    ac_splash_timeout = 5000;
  +int                    ac_lview_current = 0;
   HINSTANCE              ac_instance;
  -static procrun_t       *ac_env = NULL;
  -static HICON           ac_main_icon;
  -static HICON           ac_try_icon;
  -static HICON           ac_try_stop;
  -static UINT            ac_taskbar_created;
   HWND                   ac_main_hwnd;
   HWND                   ac_list_hwnd;
  -static HWND            ac_console_hwnd = NULL;
  -static char            *ac_stdout_lines[MAX_LISTCOUNT + 1];
   char                   *ac_cmdline;
   char                   *ac_cmdname;
   char                   *ac_splash_msg = NULL;
   
   RECT                   ac_winpos = {-1, 0, 640, 480};
  +
  +static procrun_t       *ac_env = NULL;
  +static HICON           ac_main_icon;
  +static HICON           ac_try_icon;
  +static HICON           ac_try_stop;
  +static UINT            ac_taskbar_created;
  +static HWND            ac_console_hwnd = NULL;
  +static char            *ac_stdout_lines[MAX_LISTCOUNT + 1];
   static HWND            ac_splash_hwnd = NULL;
   static HWND            ac_splist_hwnd;
  +static int             ac_lv_iicon = 0;
   
  -int                    ac_lview_current = 0;
   
  -prcrun_lview_t lv_columns[] = {
  -    {   "Status",   60      },
  -    {   "Message",  552     },
  +static prcrun_lview_t lv_columns[] = {
  +    {   "Type",     80      },
  +    {   "Message",  532     },
       {   NULL,       0       },
   };
   
  +static char *lv_infos[] = {
  +    "Info",
  +    "Warning",
  +    "Error"
  +};
  +
   prcrun_lview_t *ac_columns = &lv_columns[0];
   
   INT_PTR ac_show_properties(HWND owner);
  @@ -156,7 +164,7 @@
       HICON hicon;
       prcrun_lview_t *col = ac_columns;
   
  -    imlist = ImageList_Create(16, 16, ILC_COLORDDB | ILC_MASK, 3, 0);
  +    imlist = ImageList_Create(16, 16, ILC_COLORDDB | ILC_MASK, 4, 0);
       hicon = LoadImage(ac_instance, MAKEINTRESOURCE(IDI_ICOI),
                         IMAGE_ICON, 16, 16, LR_DEFAULTCOLOR);
       ImageList_AddIcon(imlist, hicon);
  @@ -166,6 +174,7 @@
       hicon = LoadImage(ac_instance, MAKEINTRESOURCE(IDI_ICOS),
                         IMAGE_ICON, 16, 16, LR_DEFAULTCOLOR);
       ImageList_AddIcon(imlist, hicon);
  +    ImageList_AddIcon(imlist, hicon);
       
       ac_list_hwnd = CreateWindowEx(0L, WC_LISTVIEW, "", 
                                     WS_VISIBLE | WS_CHILD |
  @@ -194,35 +203,57 @@
       
   }
   
  -static int  ac_lv_iicon = 0;
  +/*
  + * Find the first occurrence of find in s.
  + */
  +static char *
  +stristr(register const char *s, register const char *find)
  +{
  +    register char c, sc;
  +    register size_t len;
   
  +    if ((c = *find++) != 0) {
  +        len = strlen(find);
  +        do {
  +            do {
  +                if ((sc = *s++) == 0)
  +                    return (NULL);
  +            } while (sc != toupper(c));
  +        } while (strnicmp(s, find, len) != 0);
  +        s--;
  +    }
  +    return ((char *)s);
  +} 
   
  -void parse_list_string(const char *str)
  +void parse_list_string(const char *str, int from)
   {
       int row = 0x7FFFFFFF;
       LV_ITEM lvi;
   
  -    if (str) {
  -        if (STRN_COMPARE(str, "INFO:")) {
  +    if (!from) {
  +        /* some general messages 
  +         * chnage to suit the particular app.
  +         */
  +        if (stristr(str, "INFO"))
               ac_lv_iicon = 0;
  -        }
  -        else if (STRN_COMPARE(str, "WARNING:")) {
  +        else if (stristr(str, "WARNING"))
               ac_lv_iicon = 1;
  -        }
  -        else if (STRN_COMPARE(str, "ERROR:")) {
  -            ac_lv_iicon = 2;
  -        }
  -        else if (STRN_COMPARE(str, "SEVERE:")) {
  +        else if (stristr(str, "WARN "))
  +            ac_lv_iicon = 1;
  +        else if (stristr(str, "ERROR"))
               ac_lv_iicon = 2;
  -        }
  +        else if (stristr(str, "SEVERE"))
  +            ac_lv_iicon = 2;       
       }
  +    else /* if this is from stderr set the error icon */
  +        ac_lv_iicon = 2;
   
       memset(&lvi, 0, sizeof(LV_ITEM));
       lvi.mask        = LVIF_IMAGE | LVIF_TEXT;
       lvi.iItem       = ac_lview_current;
       lvi.iImage      = ac_lv_iicon;
  -    lvi.pszText     = "";
  -    lvi.cchTextMax  = 0;
  +    lvi.pszText     = lv_infos[ac_lv_iicon];
  +    lvi.cchTextMax  = 8;
       row = ListView_InsertItem(ac_list_hwnd, &lvi);
       if (row == -1)
           return;
  @@ -263,7 +294,7 @@
       Shell_NotifyIcon(message, &nid);
   }
   
  -void ac_add_list_string(const char *str, int len)
  +void ac_add_list_string(const char *str, int len, int from)
   {
       static int nqueue = 0;
       static int nlen = 0, olen = 0;
  @@ -296,7 +327,7 @@
           return;
       if (ac_use_lview) {
           for (i = 0; i < nqueue; i++) {
  -            (*lv_parser)(ac_stdout_lines[i]);
  +            (*lv_parser)(ac_stdout_lines[i], from);
               if (litems++ > MAX_LIST_ITEMS)
                   ListView_DeleteItem(ac_list_hwnd, 0);
           }
  @@ -553,7 +584,10 @@
              else
                  lv_create_view(hdlg, &m, &r);
   
  -           ac_add_list_string(NULL, 0);
  +           ac_add_list_string(NULL, 0, 0);
  +           SetForegroundWindow(ac_console_hwnd);
  +           SetActiveWindow(ac_console_hwnd);
  +
              break;
           case WM_SIZE:
               switch (LOWORD(wparam)) { 
  @@ -1073,7 +1107,7 @@
               /* add the 20 s timer for startup to avoid zombie spash 
                * if something goes wrong.
                */
  -            SetTimer(hwnd, WM_TIMER_TIMEOUT, TIMEOUT_TIME, NULL);
  +            SetTimer(hwnd, WM_TIMER_TIMEOUT, ac_splash_timeout, NULL);
               if (ac_use_try) {
                   DialogBox(ac_instance, MAKEINTRESOURCE(IDD_DLGSPLASH),
                       hwnd, (DLGPROC)ac_splash_dlg_proc);
  @@ -1108,7 +1142,9 @@
                      }
                      else
                          DialogBox(ac_instance, MAKEINTRESOURCE(IDD_DLGCONSOLE),
  -                                 hwnd, (DLGPROC)ac_console_dlg_proc);                   
  +                                 hwnd, (DLGPROC)ac_console_dlg_proc); 
  +                   SetForegroundWindow(ac_console_hwnd);
  +                   SetActiveWindow(ac_console_hwnd);
                   break;
                   case WM_RBUTTONUP:
                       ac_show_try_menu(hwnd);
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org