campo-sirio/xi/xidbg.c
alex 18c8e52948 This commit was generated by cvs2svn to compensate for changes in r5757,
which included commits to RCS files with non-trunk default branches.

git-svn-id: svn://10.65.10.50/trunk@5758 c028cbd2-c16b-5b4b-a496-9718f37d4682
1997-12-17 10:43:31 +00:00

305 lines
9.2 KiB
C
Executable File

/*******************************************************************************
* Copyright 1991-1995 by ORCA Software, Inc. *
* *
* All rights reserved. May not be reproduced or distributed, in printed or *
* electronic form, without permission of ORCA Software, Inc. May not be *
* distributed as object code, separately or linked with other object modules, *
* without permission. *
*******************************************************************************/
#define XI_INTERNAL
#include "xiextend.h"
#include "xi.h"
#include "xiutils.h"
#define UNDEFINED 1000
#define BUFFERLEN 200
static char * near
bool_to_str(BOOLEAN b)
{
if (b)
return "TRUE";
else
return "FALSE";
}
void
xi_event_debug(char *tag, XI_EVENT *xiev, char *s, int len)
{
char *tmp;
char str[BUFFERLEN], str2[BUFFERLEN];
int i, j, k;
XI_OBJ *xi_obj;
static struct
{
int type;
char *desc;
} event_text[] =
{
{
XIE_CHAR_FIELD, "XIE_CHAR_FIELD "},
{XIE_DBL_FIELD, "XIE_DBL_FIELD "},
{XIE_CHG_FIELD, "XIE_CHG_FIELD "},
{XIE_OFF_FIELD, "XIE_OFF_FIELD "},
{XIE_ON_FIELD, "XIE_ON_FIELD "},
{XIE_OFF_GROUP, "XIE_OFF_GROUP "},
{XIE_ON_GROUP, "XIE_ON_GROUP "},
{XIE_OFF_FORM, "XIE_OFF_FORM "},
{XIE_ON_FORM, "XIE_ON_FORM "},
{XIE_VIR_PAN, "XIE_VIR_PAN "},
{XIE_XVT_EVENT, "XIE_XVT_EVENT "},
{XIE_XVT_POST_EVENT,"XIE_XVT_POST_EVENT"},
{XIE_INIT, "XIE_INIT "},
{XIE_BUTTON, "XIE_BUTTON "},
{XIE_CHAR_CELL, "XIE_CHAR_CELL "},
{XIE_CLEANUP, "XIE_CLEANUP "},
{XIE_CLOSE, "XIE_CLOSE "},
{XIE_COMMAND, "XIE_COMMAND "},
{XIE_DBL_CELL, "XIE_DBL_CELL "},
{XIE_GET_FIRST, "XIE_GET_FIRST "},
{XIE_GET_LAST, "XIE_GET_LAST "},
{XIE_GET_NEXT, "XIE_GET_NEXT "},
{XIE_GET_PERCENT, "XIE_GET_PERCENT "},
{XIE_GET_PREV, "XIE_GET_PREV "},
{XIE_CELL_REQUEST, "XIE_CELL_REQUEST"},
{XIE_CHG_CELL, "XIE_CHG_CELL "},
{XIE_OFF_CELL, "XIE_OFF_CELL "},
{XIE_ON_CELL, "XIE_ON_CELL "},
{XIE_OFF_ROW, "XIE_OFF_ROW "},
{XIE_ON_ROW, "XIE_ON_ROW "},
{XIE_OFF_COLUMN, "XIE_OFF_COLUMN "},
{XIE_ON_COLUMN, "XIE_ON_COLUMN "},
{XIE_OFF_LIST, "XIE_OFF_LIST "},
{XIE_ON_LIST, "XIE_ON_LIST "},
{XIE_REC_ALLOCATE, "XIE_REC_ALLOCATE"},
{XIE_REC_FREE, "XIE_REC_FREE "},
{XIE_ROW_SIZE, "XIE_ROW_SIZE "},
{XIE_SELECT, "XIE_SELECT "},
{XIE_UPDATE, "XIE_UPDATE "},
{XIE_COL_DELETE, "XIE_COL_DELETE "},
{XIE_COL_MOVE, "XIE_COL_MOVE "},
{XIE_COL_SIZE, "XIE_COL_SIZE "},
{UNDEFINED, "Unknown XI Event" }
};
static struct
{
int type;
char *desc;
} xvt_event_text[] =
{
{E_MOUSE_UP, "E_MOUSE_UP"},
{E_MOUSE_DOWN, "E_MOUSE_DOWN"},
{E_CREATE, "E_CREATE"},
{E_MOUSE_MOVE, "E_MOUSE_MOVE"},
{E_MOUSE_DBL, "E_MOUSE_DBL"},
{E_CHAR, "E_CHAR"},
{E_UPDATE, "E_UPDATE"},
{E_ACTIVATE, "E_FOCUS"},
{E_KILL_WINDOW, "E_DESTROY"},
{E_VSCROLL, "E_VSCROLL"},
{E_HSCROLL, "E_HSCROLL"},
{E_COMMAND, "E_COMMAND"},
{E_CLOSE, "E_CLOSE"},
{E_SIZE, "E_SIZE"},
{E_FONT, "E_FONT"},
{E_QUIT, "E_QUIT"},
{E_CONTROL, "E_CONTROL"},
{UNDEFINED, "Unknown XVT Event"}
};
static struct
{
int type;
char *desc;
} object_type[] =
{
{
XIT_BTN, "XIT_BTN"},
{XIT_CONTAINER, "XIT_CONTAINER"},
{XIT_FORM, "XIT_FORM"},
{XIT_FIELD, "XIT_FIELD"},
{XIT_GROUP, "XIT_GROUP"},
{XIT_LINE, "XIT_LINE"},
{XIT_RECT, "XIT_RECT"},
{XIT_TEXT, "XIT_TEXT"},
{XIT_CELL, "XIT_CELL"},
{XIT_COLUMN, "XIT_COLUMN"},
{XIT_ITF, "XIT_ITF"},
{XIT_LIST, "XIT_LIST"},
{XIT_ROW, "XIT_ROW"},
{UNDEFINED, "Unknown XI Object Type" }
};
for (i = 0; event_text[i].type != xiev->type &&
event_text[i].type != UNDEFINED; ++i)
;
sprintf(str, "%s: %s", tag, event_text[i].desc);
*str2 = '\0';
switch (xiev->type)
{
case XIE_XVT_EVENT:
case XIE_XVT_POST_EVENT:
for (j = 0; xvt_event_text[j].type != xiev->v.xvte.type &&
xvt_event_text[j].type != UNDEFINED; ++j)
;
sprintf(str2, " %s", xvt_event_text[j].desc);
break;
case XIE_COMMAND:
sprintf(str2, " tag %d, shift %s, control %s", xiev->v.cmd.tag,
bool_to_str(xiev->v.cmd.shift), bool_to_str(xiev->v.cmd.control));
break;
case XIE_INIT:
case XIE_BUTTON:
case XIE_CLOSE:
case XIE_DBL_CELL:
case XIE_DBL_FIELD:
case XIE_CHG_FIELD:
case XIE_OFF_FIELD:
case XIE_ON_FIELD:
case XIE_OFF_GROUP:
case XIE_ON_GROUP:
case XIE_OFF_FORM:
case XIE_ON_FORM:
case XIE_CHG_CELL:
case XIE_OFF_CELL:
case XIE_ON_CELL:
case XIE_OFF_ROW:
case XIE_ON_ROW:
case XIE_OFF_COLUMN:
case XIE_ON_COLUMN:
case XIE_OFF_LIST:
case XIE_ON_LIST:
case XIE_CLEANUP:
xi_obj = xiev->v.xi_obj;
for (k = 0; object_type[k].type != xi_obj->type &&
object_type[k].type != UNDEFINED; ++k)
;
switch (xi_obj->type)
{
case XIT_CELL:
sprintf(str2, " cid %3d, type %s r %d c %d v %d",
xi_obj->cid, object_type[k].desc, xi_obj->v.cell.row,
xi_obj->v.cell.column, !xi_obj->v.cell.is_vert_scrolled);
break;
case XIT_ROW:
sprintf(str2, " cid %3d, type %s r %d", xi_obj->cid,
object_type[k].desc, xi_obj->v.row);
break;
default:
sprintf(str2, " cid %3d, type %s", xi_obj->cid,
object_type[k].desc);
break;
}
break;
case XIE_CHAR_CELL:
case XIE_CHAR_FIELD:
{
char char_str[20];
int ch;
ch = xiev->v.chr.ch;
switch (ch)
{
case K_CLEAR:
strcpy(char_str, "K_CLEAR");
break;
case K_DEL:
strcpy(char_str, "K_DEL");
break;
case '\b':
strcpy(char_str, "BS");
break;
default:
char_str[0] = (char)ch;
char_str[1] = '\0';
break;
}
xi_obj = xiev->v.chr.xi_obj;
for (k = 0; object_type[k].type != xi_obj->type &&
object_type[k].type != UNDEFINED; ++k)
;
switch (xi_obj->type)
{
case XIT_CELL:
sprintf(str2,
" cid %3d type %s r %d c %d ch %s shft %d ctrl %d",
xi_obj->cid, object_type[k].desc, xi_obj->v.cell.row,
xi_obj->v.cell.column, char_str, xiev->v.chr.shift,
xiev->v.chr.control);
break;
case XIT_FIELD:
sprintf(str2, " cid %3d type %s ch %s shft %d ctrl %d", xi_obj->cid,
object_type[k].desc, char_str, xiev->v.chr.shift,
xiev->v.chr.control);
break;
}
break;
}
case XIE_GET_FIRST:
case XIE_GET_LAST:
sprintf(str2, " data_rec %08.8lx", (long)xiev->v.rec_request.data_rec);
break;
case XIE_GET_NEXT:
case XIE_GET_PREV:
sprintf(str2, " spec_rec %08.8lx, data_rec %08.8lx",
(long)xiev->v.rec_request.spec_rec, (long)xiev->v.rec_request.data_rec);
break;
case XIE_CELL_REQUEST:
sprintf(str2, " c %2d, rec %08.8lx, len %3d",
(int)xiev->v.cell_request.col_nbr, (long)xiev->v.cell_request.rec,
xiev->v.cell_request.len);
break;
case XIE_GET_PERCENT:
sprintf(str2, " list->cid %d, record %08.8lx",
xiev->v.get_percent.list->cid,
(long)xiev->v.get_percent.record);
break;
case XIE_SELECT:
sprintf(str2, " row %d, selected %d, dbl_click %d shift %d control %d column %d",
xiev->v.select.xi_obj->v.row, xiev->v.select.selected,
xiev->v.select.dbl_click, xiev->v.select.shift, xiev->v.select.control, xiev->v.select.column);
break;
case XIE_REC_ALLOCATE:
sprintf(str2, " list cid %d", xiev->v.rec_allocate.list->cid);
break;
case XIE_REC_FREE:
sprintf(str2, " list cid %d, record %08.8lx", xiev->v.rec_free.list->cid, xiev->v.rec_free.record);
break;
case XIE_ROW_SIZE:
sprintf(str2, " row %d, new_size %d", xiev->v.row_size.xi_obj->v.row, xiev->v.row_size.new_row_height);
break;
case XIE_VIR_PAN:
sprintf(str2, " delta_x %d, delta_y %d, before_pan %d",
xiev->v.vir_pan.delta_x, xiev->v.vir_pan.delta_y,
xiev->v.vir_pan.before_pan);
break;
case XIE_COL_DELETE:
sprintf(str2, " list cid %d, col_nbr %d",
xiev->v.column.list->cid, xiev->v.column.col_nbr);
break;
case XIE_COL_MOVE:
sprintf(str2, " list cid %d, col_nbr %d, new_col_nbr %d",
xiev->v.column.list->cid, xiev->v.column.col_nbr,
xiev->v.column.new_col_nbr);
break;
case XIE_COL_SIZE:
sprintf(str2,
" list cid %d, col_nbr %d, new_col_width %d new_col_pixel_width %d",
xiev->v.column.list->cid, xiev->v.column.col_nbr,
xiev->v.column.new_col_width, xiev->v.column.new_col_pixel_width);
break;
}
tmp = (char *)xi_tree_malloc(strlen(str) + strlen(str2) + 2, NULL);
strcpy(tmp, str);
strcat(tmp, str2);
if ((int)strlen(tmp) >= len)
tmp[len] = '\0';
strcpy(s, tmp);
xi_tree_free(tmp);
}