ebabab8c26
which included commits to RCS files with non-trunk default branches. git-svn-id: svn://10.65.10.50/trunk@5762 c028cbd2-c16b-5b4b-a496-9718f37d4682
475 lines
11 KiB
C
Executable File
475 lines
11 KiB
C
Executable File
|
|
/*******************************************************************************
|
|
* Copyright 1991-1996 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
|
|
#define XI_R3_COMPAT
|
|
#include "xi.h"
|
|
#include "xiutils.h"
|
|
|
|
#define UNDEFINED 1000
|
|
#define BUFFERLEN 200
|
|
|
|
static char *
|
|
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,
|
|
k;
|
|
int j;
|
|
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_XIN_EVENT, "XIE_XIN_EVENT "
|
|
},
|
|
{
|
|
XIE_XIN_POST_EVENT, "XIE_XIN_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 "
|
|
},
|
|
{
|
|
XIE_POST_NAVIGATION, "XIE_POST_NAVIGATION"
|
|
},
|
|
{
|
|
UNDEFINED, "Unknown XI Event"
|
|
}
|
|
};
|
|
|
|
static struct
|
|
{
|
|
XinEventType type;
|
|
char *desc;
|
|
} xin_event_text[] =
|
|
{
|
|
{
|
|
XinEventCreate, "XinEventCreate"
|
|
},
|
|
{
|
|
XinEventDestroy, "XinEventDestroy"
|
|
},
|
|
{
|
|
XinEventFocus, "XinEventFocus"
|
|
},
|
|
{
|
|
XinEventResize, "XinEventResize"
|
|
},
|
|
{
|
|
XinEventPaint, "XinEventPaint"
|
|
},
|
|
{
|
|
XinEventCloseButton, "XinEventCloseButton"
|
|
},
|
|
{
|
|
XinEventMouseDown, "XinEventMouseDown"
|
|
},
|
|
{
|
|
XinEventMouseUp, "XinEventMouseUp"
|
|
},
|
|
{
|
|
XinEventMouseMove, "XinEventMouseMove"
|
|
},
|
|
{
|
|
XinEventMouseDouble, "XinEventMouseDouble"
|
|
},
|
|
{
|
|
XinEventCharacter, "XinEventCharacter"
|
|
},
|
|
{
|
|
XinEventVScroll, "XinEventVScroll"
|
|
},
|
|
{
|
|
XinEventHScroll, "XinEventHScroll"
|
|
},
|
|
{
|
|
XinEventMenuCommand, "XinEventMenuCommand"
|
|
},
|
|
{
|
|
XinEventControl, "XinEventControl"
|
|
},
|
|
{
|
|
XinEventTimer, "XinEventTimer"
|
|
},
|
|
{
|
|
XinEventQuit, "XinEventQuit"
|
|
},
|
|
{
|
|
XinEventHelp, "XinEventHelp"
|
|
},
|
|
{
|
|
XinEventFont, "XinEventFont"
|
|
},
|
|
{
|
|
(XinEventType)UNDEFINED, "Unknown Xin 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 )
|
|
{
|
|
#ifdef XI_USE_XVT
|
|
case XIE_XVT_EVENT:
|
|
case XIE_XVT_POST_EVENT:
|
|
sprintf( str2, " %s", XinXvtEventTextGet( &xiev->v.xvte ) );
|
|
break;
|
|
#endif
|
|
case XIE_XIN_EVENT:
|
|
case XIE_XIN_POST_EVENT:
|
|
for ( j = 0; xin_event_text[j].type != xiev->v.xin_event.type &&
|
|
xin_event_text[j].type != UNDEFINED; ++j )
|
|
;
|
|
sprintf( str2, " %s", xin_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 XI_KEY_CLEAR:
|
|
strcpy( char_str, "XI_KEY_CLEAR" );
|
|
break;
|
|
case XI_KEY_DEL:
|
|
strcpy( char_str, "XI_KEY_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 alt %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, xiev->v.chr.alt );
|
|
break;
|
|
case XIT_FIELD:
|
|
sprintf( str2, " cid %3d type %s ch %s shft %d ctrl %d alt %d", xi_obj->cid,
|
|
object_type[k].desc, char_str, xiev->v.chr.shift,
|
|
xiev->v.chr.control, xiev->v.chr.alt );
|
|
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 );
|
|
}
|