18c8e52948
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
305 lines
9.2 KiB
C
Executable File
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);
|
|
}
|
|
|