reactos/rosapps/dflat32/log.c
2003-06-19 02:48:13 +00:00

76 lines
1.9 KiB
C

/* ------------ log .c ------------ */
#include "dflat.h"
#ifdef INCLUDE_LOGGING
static char *message[] = {
#undef DFlatMsg
#define DFlatMsg(m) " " #m,
#include "dflatmsg.h"
NULL
};
static FILE *logfile = NULL;
extern DF_DBOX Log;
void DfLogMessages (DFWINDOW wnd, DFMESSAGE msg, DF_PARAM p1, DF_PARAM p2)
{
if (logfile != NULL && message[msg][0] != ' ')
fprintf(logfile,
"%-20.20s %-12.12s %-20.20s, %5.5ld, %5.5ld\n",
wnd ? (DfGetTitle(wnd) ? DfGetTitle(wnd) : "") : "",
wnd ? DfClassNames[DfGetClass(wnd)] : "",
message[msg]+1, p1, p2);
}
static int LogProc(DFWINDOW wnd, DFMESSAGE msg, DF_PARAM p1, DF_PARAM p2)
{
DFWINDOW cwnd = DfControlWindow(&Log, DF_ID_LOGLIST);
char **mn = message;
switch (msg) {
case DFM_INITIATE_DIALOG:
DfAddAttribute(cwnd, DF_MULTILINE | DF_VSCROLLBAR);
while (*mn) {
DfSendMessage(cwnd, DFM_ADDTEXT, (DF_PARAM) (*mn), 0);
mn++;
}
DfSendMessage(cwnd, DFM_SHOW_WINDOW, 0, 0);
break;
case DFM_COMMAND:
if ((int) p1 == DF_ID_OK) {
int item;
int tl = DfGetTextLines(cwnd);
for (item = 0; item < tl; item++)
if (DfItemSelected(cwnd, item))
mn[item][0] = DF_LISTSELECTOR;
}
break;
default:
break;
}
return DfDefaultWndProc(wnd, msg, p1, p2);
}
void DfMessageLog(DFWINDOW wnd)
{
if (DfDialogBox(wnd, &Log, TRUE, LogProc))
{
if (DfCheckBoxSetting(&Log, DF_ID_LOGGING))
{
logfile = fopen("DFLAT.LOG", "wt");
DfSetCommandToggle(&DfMainMenu, DF_ID_LOG);
}
else if (logfile != NULL)
{
fclose(logfile);
logfile = NULL;
DfClearCommandToggle(&DfMainMenu, DF_ID_LOG);
}
}
}
#endif
/* EOF */