billbarker 2003/09/02 20:45:11 Modified: daemon/src/native/nt/procrun procgui.c daemon/src/native/nt/procrun/bin procrunw.exe tomcatw.exe Log: Implementing the Clipboard-Copy functionality for the new ListView Console. Also cleaned up the Console parsing a bit (so at least it doesn't eat lines). It could still use more cleanup. Fix for Bug #18220 Reported By: Marc Lehmann [EMAIL PROTECTED] Revision Changes Path 1.25 +67 -31 jakarta-commons-sandbox/daemon/src/native/nt/procrun/procgui.c Index: procgui.c =================================================================== RCS file: /home/cvs/jakarta-commons-sandbox/daemon/src/native/nt/procrun/procgui.c,v retrieving revision 1.24 retrieving revision 1.25 diff -u -r1.24 -r1.25 --- procgui.c 8 Aug 2003 13:09:34 -0000 1.24 +++ procgui.c 3 Sep 2003 03:45:09 -0000 1.25 @@ -183,16 +183,17 @@ { int row = 0x7FFFFFFF; LV_ITEM lvi; + int off = 0; if (isdigit(*str)) { char t[32]; - sscanf(str, "%s %s", ac_lv_stat, t); + sscanf(str, "%s %s %s", ac_lv_stat, t, ac_lv_class); strcat(ac_lv_stat, " "); strcat(ac_lv_stat, t); strcpy(ac_lv_class, str + strlen(ac_lv_stat) + strlen(t) + 2); + str += strlen(ac_lv_stat) + strlen(t) + strlen(ac_lv_class) + 3; } else { - int off = 0; if (STRN_COMPARE(str, "INFO:")) { ac_lv_iicon = 0; off = STRN_SIZE("INFO:") + 1; @@ -209,22 +210,22 @@ ac_lv_iicon = 2; off = STRN_SIZE("SEVERE:") + 1; } - memset(&lvi, 0, sizeof(LV_ITEM)); - lvi.mask = LVIF_IMAGE | LVIF_TEXT; - lvi.iItem = ac_lview_current; - lvi.iImage = ac_lv_iicon; - lvi.pszText = ac_lv_stat; - lvi.cchTextMax = strlen(ac_lv_stat) + 1; - row = ListView_InsertItem(ac_list_hwnd, &lvi); - if (row == -1) - return; - ListView_SetItemText(ac_list_hwnd, row, 1, ac_lv_class); - ListView_SetItemText(ac_list_hwnd, row, 2, (char *)(str + off)); - ListView_EnsureVisible(ac_list_hwnd, + } + memset(&lvi, 0, sizeof(LV_ITEM)); + lvi.mask = LVIF_IMAGE | LVIF_TEXT; + lvi.iItem = ac_lview_current; + lvi.iImage = ac_lv_iicon; + lvi.pszText = ac_lv_stat; + lvi.cchTextMax = strlen(ac_lv_stat) + 1; + row = ListView_InsertItem(ac_list_hwnd, &lvi); + if (row == -1) + return; + ListView_SetItemText(ac_list_hwnd, row, 1, ac_lv_class); + ListView_SetItemText(ac_list_hwnd, row, 2, (char *)(str + off)); + ListView_EnsureVisible(ac_list_hwnd, ListView_GetItemCount(ac_list_hwnd) - 1, FALSE); - } ac_lview_current++; } @@ -335,33 +336,67 @@ static int ac_copy_to_clipboard() { - HGLOBAL hglbcopy; + HGLOBAL hglbcopy = NULL; DWORD sel, i; char buf[MAX_PATH + 2], *str; - int *si; + int *si = NULL; if (!OpenClipboard(NULL)) return -1; EmptyClipboard(); - sel = SendMessage(ac_list_hwnd, LB_GETSELCOUNT, (WPARAM)0, (LPARAM)0); - if (sel != LB_ERR && sel > 0) { - si = (int *)malloc(sel * sizeof(int)); - hglbcopy = GlobalAlloc(GMEM_MOVEABLE, - (MAX_PATH + 2) * sel); - str = GlobalLock(hglbcopy); - str[0] = '\0'; - SendMessage(ac_list_hwnd, LB_GETSELITEMS, (WPARAM)sel, (LPARAM)si); - for (i = 0; i < sel; i++) { - SendMessage(ac_list_hwnd, LB_GETTEXT, (WPARAM)si[i], (LPARAM)buf); - strcat(buf, "\n"); - strcat(str, buf); + if (ac_use_lview) { + sel = ListView_GetSelectedCount(ac_list_hwnd); + if (sel != LB_ERR && sel > 0) { + int curr; + str = malloc((MAX_PATH+4)*sel); + str[0] = '\0'; + curr = ListView_GetNextItem(ac_list_hwnd, -1, LVNI_SELECTED); + for (i = 0; i < sel && curr >= 0; i++) { + int j; + for(j=0; j < 3; j++) { + ListView_GetItemText(ac_list_hwnd, curr, j, buf, MAX_PATH); + strcat(buf, j < 2 ? "\t" : "\r\n"); + strcat(str, buf); + } + curr = ListView_GetNextItem(ac_list_hwnd, curr, LVNI_SELECTED); + } + sel = strlen(str); + if(sel > 0) { + hglbcopy = GlobalAlloc(GMEM_MOVEABLE, sel+1); + strcpy(GlobalLock(hglbcopy), str); + } + free(str); + + } + } + else { + sel = SendMessage(ac_list_hwnd, LB_GETSELCOUNT, (WPARAM)0, (LPARAM)0); + if (sel != LB_ERR && sel > 0) { + si = (int *)malloc(sel * sizeof(int)); + str = malloc((MAX_PATH + 2) * sel); + str[0] = '\0'; + SendMessage(ac_list_hwnd, LB_GETSELITEMS, (WPARAM)sel, (LPARAM)si); + for (i = 0; i < sel; i++) { + SendMessage(ac_list_hwnd, LB_GETTEXT, (WPARAM)si[i], (LPARAM)buf); + strcat(buf, "\r\n"); + strcat(str, buf); + } + sel = strlen(str); + if(sel > 0) { + hglbcopy = GlobalAlloc(GMEM_MOVEABLE, sel+1); + strcpy(GlobalLock(hglbcopy), str); + } + free(str); + free(si); } + } + + if(hglbcopy != NULL) { GlobalUnlock(hglbcopy); SetClipboardData(CF_TEXT, hglbcopy); - - free(si); } + CloseClipboard(); return 0; } @@ -960,6 +995,7 @@ return FALSE; } + INT_PTR ac_show_properties(HWND owner) { 1.29 +40 -36 jakarta-commons-sandbox/daemon/src/native/nt/procrun/bin/procrunw.exe <<Binary file>> 1.24 +40 -36 jakarta-commons-sandbox/daemon/src/native/nt/procrun/bin/tomcatw.exe <<Binary file>>
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]