extern void GlobMenuItem( a_window *wnd, unsigned id, int row, int piece ) { glob_window *glob = WndGlob( wnd ); address addr; char buff[TXT_LEN]; piece=piece; addr = NameListAddr( NameList( glob ), row ); switch( id ) { case MENU_INITIALIZE: if( IS_NIL_ADDR( addr ) ) { WndMenuGrayAll( wnd ); } else { WndMenuEnableAll( wnd ); } WndMenuEnable( wnd, MENU_GLOB_D2_ONLY, TRUE ); WndMenuCheck( wnd, MENU_GLOB_D2_ONLY, glob->d2_only ); break; case MENU_GLOB_INSPECT_MEMORY: WndAddrInspect( addr ); break; case MENU_GLOB_WATCH: NameListName( NameList( glob ), row, buff, SN_QUALIFIED ); WndVarInspect( buff ); break; case MENU_GLOB_D2_ONLY: glob->d2_only = !glob->d2_only; GlobInit( wnd ); break; default: break; } }
static void FuncMenuItem( a_window *wnd, gui_ctl_id id, int row, int piece ) { address addr; func_window *func = WndFunc( wnd ); piece=piece; addr = ( row == WND_NO_ROW ) ? NilAddr : NameListAddr( NameList( func ), row ); switch( id ) { case MENU_INITIALIZE: if( IS_NIL_ADDR( addr ) ) { WndMenuGrayAll( wnd ); } else { WndMenuEnableAll( wnd ); WndMenuEnable( wnd, MENU_FUNCTIONS_SOURCE, HasLineInfo( addr ) ); } WndMenuEnable( wnd, MENU_FUNCTIONS_D2_ONLY, TRUE ); WndMenuCheck( wnd, MENU_FUNCTIONS_D2_ONLY, func->d2_only ); break; case MENU_FUNCTIONS_SOURCE: WndSrcInspect( addr ); break; case MENU_FUNCTIONS_ASSEMBLY: WndAsmInspect( addr ); break; case MENU_FUNCTIONS_BREAK: DlgBreak( addr ); break; case MENU_FUNCTIONS_D2_ONLY: func->d2_only = !func->d2_only; FuncNewOptions( wnd ); break; } }
static void ModMenuItem( a_window *wnd, unsigned id, int row, int piece ) { address addr; mod_handle handle; mod_window *mod = WndMod( wnd ); piece=piece; handle = NO_MOD; addr = NilAddr; if( ModListNumRows( ModList( mod ) ) != 0 && row >= 0 ) { handle = ModListMod( ModList( mod ), row ); if( handle != NO_MOD ) { addr = ModFirstAddr( handle ); } } switch( id ) { case MENU_INITIALIZE: WndMenuGrayAll( wnd ); if( handle != NO_MOD ) { WndMenuEnable( wnd, MENU_MODULES_BREAK_SET_ALL, TRUE ); WndMenuEnable( wnd, MENU_MODULES_BREAK_CLEAR_ALL, TRUE ); WndMenuEnable( wnd, MENU_MODULES_ASSEMBLY, !IS_NIL_ADDR( addr ) ); WndMenuEnable( wnd, MENU_MODULES_FUNCTIONS, TRUE ); if( ModHasSourceInfo( handle ) ) { WndMenuEnable( wnd, MENU_MODULES_SOURCE, TRUE ); } } WndMenuEnable( wnd, MENU_MODULES_SHOW_ALL, TRUE ); WndMenuCheck( wnd, MENU_MODULES_SHOW_ALL, mod->all_modules ); break; case MENU_MODULES_BREAK_SET_ALL: BreakAllModEntries( handle ); break; case MENU_MODULES_BREAK_CLEAR_ALL: ClearAllModBreaks( handle ); break; case MENU_MODULES_SOURCE: if( IS_NIL_ADDR( addr ) ) { ModName( handle, TxtBuff, TXT_LEN ); WndFileInspect( TxtBuff, FALSE ); } else { WndSrcInspect( addr ); } break; case MENU_MODULES_ASSEMBLY: WndAsmInspect( addr ); break; case MENU_MODULES_FUNCTIONS: WndFuncInspect( handle ); break; case MENU_MODULES_SHOW_ALL: mod->all_modules = !mod->all_modules; ModInit( wnd ); break; } }
static void RegMenuItem( a_window *wnd, gui_ctl_id id, int row, int piece ) { reg_window *reg = WndReg( wnd ); int i; unsigned bit; mad_modify_list const *possible; int num_possible; address addr; bool valid_reg; i = GetRegIdx( reg, row, piece >>1 ); switch( id ) { case MENU_INITIALIZE: valid_reg = i != -1 && reg->info[i].info != NULL && MADRegSetDisplayModify( reg->data, reg->info[i].info, &possible, &num_possible ) == MS_OK; WndMenuEnable( wnd, MENU_REGISTER_MODIFY, valid_reg ); WndMenuEnable( wnd, MENU_REGISTER_INSPECT, valid_reg ); bit = MADRegSetDisplayToggle( reg->data, 0, 0 ); for( i = 0; i < reg->num_toggles; ++i ) { WndMenuCheck( wnd, MENU_REGISTER_TOGGLES + i, ( bit & 1 ) != 0 ); bit >>= 1; } break; case MENU_REGISTER_INSPECT: if( MADRegInspectAddr( reg->info[i].info, &DbgRegs->mr, &addr ) == MS_OK ) { PushAddr( addr ); WndInspectExprSP( "" ); } break; case MENU_REGISTER_MODIFY: RegModify( wnd, row, piece ); break; default: bit = 1 << ( id - MENU_REGISTER_TOGGLES ); MADRegSetDisplayToggle( reg->data, bit, bit ); RegResize( wnd ); WndZapped( wnd ); } }
static void VarInitPopup( a_window *wnd, var_window *var, var_node *v ) { type_kind class; bool pointer; bool noedit; WndMenuGrayAll( wnd ); WndMenuEnable( wnd, MENU_VAR_OPTIONS, TRUE ); WndMenuEnable( wnd, MENU_VAR_CLASS, TRUE ); WndMenuEnable( wnd, MENU_VAR_TYPE, TRUE ); WndMenuEnable( wnd, MENU_VAR_SHOW_MEMBER, TRUE ); WndMenuEnable( wnd, MENU_VAR_SHOW_WHOLE_EXPR, TRUE ); noedit = ( var->vtype == VAR_LOCALS || var->vtype == VAR_FILESCOPE ); WndMenuIgnore( wnd, MENU_VAR_EDIT_EXPRESSION, noedit ); WndMenuIgnore( wnd, MENU_VAR_NEW_EXPRESSION, noedit ); WndMenuIgnore( wnd, MENU_VAR_DELETE, noedit ); if( !noedit ) { WndMenuEnable( wnd, MENU_VAR_EDIT_EXPRESSION, v != NULL && v->parent == NULL ); WndMenuEnable( wnd, MENU_VAR_NEW_EXPRESSION, TRUE ); WndMenuEnable( wnd, MENU_VAR_DELETE, v != NULL && v->parent == NULL ); } WndMenuEnable( wnd, MENU_VAR_WATCH, v != NULL ); WndMenuEnable( wnd, MENU_VAR_INSPECT, v != NULL ); if( v != NULL && !VarError ) { VarGetStackClass( &class ); pointer = VarIsPointer( class ); WndMenuEnable( wnd, MENU_VAR_TYPE, TRUE ); WndMenuEnable( wnd, MENU_VAR_SHOW, TRUE ); WndMenuEnable( wnd, MENU_VAR_CLASS, TRUE ); WndMenuEnable( wnd, MENU_VAR_OPTIONS, TRUE ); // WndMenuEnable( wnd, MENU_VAR_SHOW_ROOT, v->parent != NULL ); WndMenuEnable( wnd, MENU_VAR_ARRAY_EXPAND, pointer && v->expand == NULL ); WndMenuEnable( wnd, MENU_VAR_INSPECT_POINTER, pointer ); WndMenuEnable( wnd, MENU_VAR_INSPECT_CODE, pointer ); WndMenuEnable( wnd, MENU_VAR_FIELD_TOP, v->node_type == NODE_FIELD ); WndMenuEnable( wnd, MENU_VAR_INSPECT_MEMORY, VarIsLValue() ); WndMenuEnable( wnd, MENU_VAR_WATCH, TRUE ); WndMenuEnable( wnd, MENU_VAR_INSPECT, TRUE ); #ifdef I_EVER_SOLVE_THE_THORNY_HIDE_PROBLEM WndMenuEnable( wnd, MENU_VAR_HIDE, v->node_type == NODE_FIELD ); WndMenuEnable( wnd, MENU_VAR_UNHIDE, v->expand != NULL ); #endif WndMenuEnable( wnd, MENU_VAR_SHOW_TYPE, TRUE ); WndMenuEnable( wnd, MENU_VAR_POINTER, pointer ); WndMenuEnable( wnd, MENU_VAR_STRING, pointer ); if( v->expand == NULL ) { if( !VarExpandable( class ) ) { WndMenuEnable( wnd, MENU_VAR_MODIFY, TRUE ); WndMenuEnable( wnd, MENU_VAR_BREAK, TRUE ); WndMenuEnable( wnd, MENU_VAR_ALLHEX, VarParentIsArray( v ) ); WndMenuEnable( wnd, MENU_VAR_ALLDECIMAL, VarParentIsArray( v ) ); WndMenuEnable( wnd, MENU_VAR_HEX, !pointer ); WndMenuEnable( wnd, MENU_VAR_DECIMAL, !pointer ); WndMenuEnable( wnd, MENU_VAR_CHAR, !pointer ); } } /* Enable even if already expanded */ if( VarExpandable( class ) ) { WndMenuEnable( wnd, MENU_VAR_EXPAND_ALL, TRUE ); } if( VarDisplayIsStruct( v ) ) { WndMenuEnable( wnd, MENU_VAR_SHOW_CODE, TRUE ); WndMenuEnable( wnd, MENU_VAR_SHOW_INHERIT, TRUE ); WndMenuEnable( wnd, MENU_VAR_SHOW_COMPILER, TRUE ); WndMenuEnable( wnd, MENU_VAR_SHOW_PRIVATE, TRUE ); WndMenuEnable( wnd, MENU_VAR_SHOW_PROTECTED, TRUE ); WndMenuEnable( wnd, MENU_VAR_SHOW_STATIC, TRUE ); WndMenuCheck( wnd, MENU_VAR_SHOW_CODE, !VarDisplayIsHidden( v, VARNODE_CODE ) ); WndMenuCheck( wnd, MENU_VAR_SHOW_INHERIT, !VarDisplayIsHidden( v, VARNODE_INHERIT ) ); WndMenuCheck( wnd, MENU_VAR_SHOW_COMPILER, !VarDisplayIsHidden( v, VARNODE_COMPILER ) ); WndMenuCheck( wnd, MENU_VAR_SHOW_PRIVATE, !VarDisplayIsHidden( v, VARNODE_PRIVATE ) ); WndMenuCheck( wnd, MENU_VAR_SHOW_PROTECTED, !VarDisplayIsHidden( v, VARNODE_PROTECTED ) ); WndMenuCheck( wnd, MENU_VAR_SHOW_STATIC, !VarDisplayIsHidden( v, VARNODE_STATIC ) ); } }
STATIC void sampleMenuItem( a_window * wnd, gui_ctl_id id, int row, int piece ) /*****************************************************************************/ { sio_data * curr_sio; int sort_type; piece=piece; curr_sio = WndExtra( wnd ); row += STATUS_ROW + 1; switch( id ) { case MENU_INITIALIZE: if( row <= STATUS_ROW ) { WndMenuGrayAll( wnd ); if( row < 0 || row-1 >= curr_sio->level_open ) break; WndMenuEnable( wnd, MENU_SAMP_ZOOM_IN, true ); break; } WndMenuEnableAll( wnd ); WndMenuCheck( wnd, MENU_SAMP_GATHER, GetCurrentGather( curr_sio ) ); WndMenuCheck( wnd, MENU_SAMP_BAR_MAX_TIME, GetCurrentMaxBar( curr_sio ) ); WndMenuCheck( wnd, MENU_SAMP_ABS, GetCurrentAbsBar( curr_sio ) ); WndMenuCheck( wnd, MENU_SAMP_REL, GetCurrentRelBar( curr_sio ) ); sort_type = GetCurrentSort( curr_sio ); WndMenuCheck( wnd, MENU_SORT_COUNT, sort_type==SORT_COUNT ); WndMenuCheck( wnd, MENU_SORT_NAME, sort_type==SORT_NAME ); if( row <= STATUS_ROW || curr_sio->level_open >= LEVEL_ROUTINE ) { WndMenuEnable( wnd, MENU_SAMP_GATHER, false ); WndMenuEnable( wnd, MENU_SAMP_SORT, false ); WndMenuEnable( wnd, MENU_SORT_COUNT, false ); WndMenuEnable( wnd, MENU_SORT_NAME, false ); if( row <= STATUS_ROW ) { WndMenuEnable( wnd, MENU_SAMP_BAR_MAX_TIME, false ); WndMenuEnable( wnd, MENU_SAMP_ABS, false ); WndMenuEnable( wnd, MENU_SAMP_REL, false ); } } break; case MENU_SAMP_ZOOM_IN: WPZoomIn( wnd, row ); break; case MENU_SAMP_BACK_OUT: WPBackOut( wnd ); break; // case MENU_SAMP_DATA: // WPSImageOpen( curr_sio ); // break; case MENU_SAMP_GATHER: FlipCurrentGather( curr_sio ); WndMenuCheck( wnd, MENU_SAMP_GATHER, GetCurrentGather( curr_sio ) ); gatherSort( curr_sio ); setDisplay( wnd, curr_sio, true ); break; case MENU_SAMP_BAR_MAX_TIME: FlipCurrentMaxBar( curr_sio ); WndMenuCheck( wnd, MENU_SAMP_BAR_MAX_TIME, GetCurrentMaxBar( curr_sio ) ); setDisplay( wnd, curr_sio, false ); break; case MENU_SAMP_ABS: FlipCurrentAbsBar( curr_sio ); WndMenuCheck( wnd, MENU_SAMP_ABS, GetCurrentAbsBar( curr_sio ) ); setDisplay( wnd, curr_sio, false ); break; case MENU_SAMP_REL: FlipCurrentRelBar( curr_sio ); WndMenuCheck( wnd, MENU_SAMP_ABS, GetCurrentRelBar( curr_sio ) ); setDisplay( wnd, curr_sio, false ); break; case MENU_SORT_COUNT: case MENU_SORT_NAME: WndMenuCheck( wnd, MENU_SORT_COUNT, ( id == MENU_SORT_COUNT ) ); WndMenuCheck( wnd, MENU_SORT_NAME, ( id == MENU_SORT_COUNT ) ); if( id == MENU_SORT_COUNT ) { SetCurrentSort( curr_sio, SORT_COUNT ); } else { SetCurrentSort( curr_sio, SORT_NAME ); } SortCurrent( curr_sio ); setDisplay( wnd, curr_sio, true ); break; } }