/* ------------ log .c ------------ */ #include #include "dflat.h" #ifdef INCLUDE_LOGGING #undef TE #define TE(m) #m static char *class[] = { #include "classes.h" ,NULL }; #undef TE #define TE(m) " " #m static char *message[] = { #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 ? class[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 i; for (i = 0; mn[i] != NULL; i++) { char *cp = TextLine(cwnd, i); mn[i][0] = *cp; } } break; default: break; } return DefaultWndProc(wnd, msg, p1, p2); } void MessageLog(WINDOW wnd) { if (DialogBox(wnd, &Log, LogProc)) { if (CheckBoxSetting(&Log, ID_LOGGING)) log = fopen("DFLAT.LOG", "wt"); else if (log != NULL) { fclose(log); log = NULL; } } } #endif