/* ------------ log .c ------------ */ #include "dflat.h" #ifdef INCLUDE_LOGGING static char *message[] = { #undef DFlatMsg #define DFlatMsg(m) " " #m, #include "dflatmsg.h" NULL }; static FILE *log = NULL; extern DBOX Log; void LogMessages (WINDOW wnd, MESSAGE msg, PARAM p1, PARAM p2) { if (log != NULL && message[msg][0] != ' ') fprintf(log, "%-20.20s %-12.12s %-20.20s, %5.5ld, %5.5ld\n", wnd ? (GetTitle(wnd) ? GetTitle(wnd) : "") : "", wnd ? ClassNames[GetClass(wnd)] : "", message[msg]+1, p1, p2); } static int LogProc(WINDOW wnd, MESSAGE msg, PARAM p1, PARAM p2) { WINDOW cwnd = ControlWindow(&Log, ID_LOGLIST); char **mn = message; switch (msg) { case INITIATE_DIALOG: AddAttribute(cwnd, MULTILINE | VSCROLLBAR); while (*mn) { SendMessage(cwnd, ADDTEXT, (PARAM) (*mn), 0); mn++; } SendMessage(cwnd, SHOW_WINDOW, 0, 0); break; case COMMAND: if ((int) p1 == ID_OK) { int item; int tl = GetTextLines(cwnd); for (item = 0; item < tl; item++) if (ItemSelected(cwnd, item)) mn[item][0] = LISTSELECTOR; } break; default: break; } return DefaultWndProc(wnd, msg, p1, p2); } void MessageLog(WINDOW wnd) { if (DialogBox(wnd, &Log, TRUE, LogProc)) { if (CheckBoxSetting(&Log, ID_LOGGING)) { log = fopen("DFLAT.LOG", "wt"); SetCommandToggle(&MainMenu, ID_LOG); } else if (log != NULL) { fclose(log); log = NULL; ClearCommandToggle(&MainMenu, ID_LOG); } } } #endif