📄 buttons_menu.c
字号:
update_gpr_window(); update_sram_window(); update_io_window(); update_main(); full_update_memory_window();}void *run_thread(void *foo){ int time,old_time; char buf[12]; memset(mem_file_changed,0,size_mem_file); memset(eeprom_changed,0,size_eeprom); thread_stop=0; change_sensitive_run(); do{ exec_command(); if(pc>=controllers[type_micro].size_flash) pc=0; if(list_commands[pc].flags&BREAKPOINT) break; time=(int)(clocks*1000.0/frequency); if(time%10==0&&old_time!=time) { switch(type_time) { case uS: sprintf(buf,"%f:6",1.0/frequency*1E6*clocks);break; case mS: sprintf(buf,"%f:6",1.0/frequency*1E3*clocks);break; case S: sprintf(buf,"%f:6",1.0/frequency*clocks);break; } XmTextFieldSetString(edit_time,buf); } old_time=time; if(thread_stop) break; }while(1); drawarea.current_line_deb=list_commands[pc].number_line; debug=TRUE; draw(); debug=FALSE; update_gpr_window(); update_sram_window(); update_io_window(); update_main(); full_update_memory_window(); change_sensitive_stop(); return NULL;}void run_callback(Widget w,XtPointer client_data, XtPointer call_data){ if(pc==-1) reset(); else { if(pthread_create(&thread,&attr_thread,run_thread,NULL)) perror("pthread_create"); }}void stop_callback(Widget w,XtPointer client_data, XtPointer call_data){ thread_stop=1;}void load_eeprom_callback(Widget w,XtPointer client_data,XtPointer call_data){ load_memory=EEPROM; XtManageChild(*((Widget *)client_data));}void load_flash_callback(Widget w,XtPointer client_data,XtPointer call_data){ load_memory=FLASH; XtManageChild(*((Widget *)client_data));}void toggle_gpr_callback(Widget w,XtPointer client_data,XtPointer call_data){ if(((XmToggleButtonCallbackStruct *)call_data)->set==XmSET) { XtManageChild(*((Widget *)client_data)); update_gpr_window(); } else XtUnmanageChild(*((Widget *)client_data)); return;}void toggle_io_callback(Widget w,XtPointer client_data,XtPointer call_data){ if(((XmToggleButtonCallbackStruct *)call_data)->set==XmSET) { XtManageChild(*((Widget *)client_data)); full_update_io_window(); } else XtUnmanageChild(*((Widget *)client_data)); return;}void toggle_sram_callback(Widget w,XtPointer client_data,XtPointer call_data){ if(((XmToggleButtonCallbackStruct *)call_data)->set==XmSET) { XtManageChild(*((Widget *)client_data)); full_update_sram_window(); } else XtUnmanageChild(*((Widget *)client_data)); return;}void toggle_eeprom_callback(Widget w,XtPointer client_data,XtPointer call_data){ if(((XmToggleButtonCallbackStruct *)call_data)->set==XmSET) { XtManageChild(*((Widget *)client_data)); full_update_eeprom_window(); } else XtUnmanageChild(*((Widget *)client_data)); return;}void toggle_memory_callback(Widget w,XtPointer client_data,XtPointer call_data){ Widget *window=(Widget *)client_data; if(((XmToggleButtonCallbackStruct *)call_data)->set==XmSET) { if(!*window) { create_memory_window(); } else { draw_memory_window(); XtManageChild(*window); } } else XtUnmanageChild(*window); return;}void reset_callback(Widget w,XtPointer client_data,XtPointer call_data){ reset();}void step_out_callback(Widget w,XtPointer client_data,XtPointer call_data){ int n; memset(mem_file_changed,0,size_mem_file); memset(eeprom_changed,0,size_eeprom); if(pc==-1) reset(); if(!num_call) {trace_into_callback(w,client_data,call_data);return;} else { n=0; do{ exec_command(); n++; if(list_commands[pc].flags&BREAKPOINT) break; }while(strncmp(list_commands[pc].mnemocode,"ret",3)&&n<2000); if(!(list_commands[pc].flags&BREAKPOINT)) exec_command(); drawarea.current_line_deb=list_commands[pc].number_line; debug=TRUE; draw(); debug=FALSE; if(pc>=controllers[type_micro].size_flash) pc=0; } update_gpr_window(); update_sram_window(); update_io_window(); update_main(); full_update_memory_window();}void multi_step_callback(Widget w,XtPointer client_data,XtPointer call_data){ int n; memset(mem_file_changed,0,size_mem_file); memset(eeprom_changed,0,size_eeprom); if(pc==-1) reset(); else { n=0; do{ exec_command(); if(pc>=controllers[type_micro].size_flash) pc=0; n++; if(list_commands[pc].flags&BREAKPOINT) break; }while(n<multi_step); drawarea.current_line_deb=list_commands[pc].number_line; debug=TRUE; draw(); debug=FALSE; } update_gpr_window(); update_sram_window(); update_io_window(); update_main(); full_update_memory_window();}void *auto_step_thread(void *foo){ int n; int time,old_time; char buf[12]; memset(mem_file_changed,0,size_mem_file); memset(eeprom_changed,0,size_eeprom); thread_stop=0; change_sensitive_run(); n=clocks; do{ exec_command(); if(pc>=controllers[type_micro].size_flash) pc=0; if(list_commands[pc].flags&BREAKPOINT) break; time=(clocks-n)*1000/frequency; if(time%10==0&&old_time!=time) { switch(type_time) { case uS: sprintf(buf,"%f:6",1.0/frequency*1E6*clocks);break; case mS: sprintf(buf,"%f:6",1.0/frequency*1E3*clocks);break; case S: sprintf(buf,"%f:6",1.0/frequency*clocks);break; } XmTextFieldSetString(edit_time,buf); } old_time=time; if(thread_stop) break; }while(auto_step>time); drawarea.current_line_deb=list_commands[pc].number_line; debug=TRUE; draw(); debug=FALSE; update_gpr_window(); update_sram_window(); update_io_window(); update_main(); full_update_memory_window(); change_sensitive_stop(); return NULL;}void auto_step_callback(Widget w,XtPointer client_data,XtPointer call_data){ memset(mem_file_changed,0,size_mem_file); memset(eeprom_changed,0,size_eeprom); if(pc==-1) reset(); else { if(pthread_create(&thread,&attr_thread,auto_step_thread,NULL)) perror("pthread_create"); }}void logging_callback(){ int n; ports_window_flag=0; for(n=0;n<6;n++) if(data_port_log[n].state!=-1) { XtSetSensitive(data_port_window[n].button1,True); XtVaSetValues(data_port_window[n].button1,XmNset, data_port_log[n].state,NULL); XmTextFieldSetString(data_port_window[n].data, data_port_log[n].filename); if(data_port_log[n].state==XmSET) { XtSetSensitive(data_port_window[n].data,True); XtSetSensitive(data_port_window[n].button2,True); } else { XtSetSensitive(data_port_window[n].data,False); XtSetSensitive(data_port_window[n].button2,False); } } else { XtSetSensitive(data_port_window[n].button1,False); XtSetSensitive(data_port_window[n].data,False); XtSetSensitive(data_port_window[n].button2,False); } XtVaSetValues(XtParent(ports_window),XmNtitle,_("Logging ports"),NULL); XtManageChild(ports_window);}void stimuli_callback(){ int n; ports_window_flag=1; for(n=0;n<6;n++) if(data_port_sti[n].state!=-1) { XtSetSensitive(data_port_window[n].button1,True); XtVaSetValues(data_port_window[n].button1,XmNset, data_port_sti[n].state,NULL); XmTextFieldSetString(data_port_window[n].data, data_port_sti[n].filename); if(data_port_sti[n].state==XmSET) { XtSetSensitive(data_port_window[n].data,True); XtSetSensitive(data_port_window[n].button2,True); } else { XtSetSensitive(data_port_window[n].data,False); XtSetSensitive(data_port_window[n].button2,False); } } else { XtSetSensitive(data_port_window[n].button1,False); XtSetSensitive(data_port_window[n].data,False); XtSetSensitive(data_port_window[n].button2,False); } XtVaSetValues(XtParent(ports_window),XmNtitle,_("Stimuli ports"),NULL); XtManageChild(ports_window);}void change_sensitive_run(void){ XtSetSensitive(buttons[STOP].widget,True); XtSetSensitive(buttons[RELOAD].widget,False); XtSetSensitive(buttons[TRACE_INTO].widget,False); XtSetSensitive(buttons[STEP_OVER].widget,False); XtSetSensitive(buttons[STEP_OUT].widget,False); XtSetSensitive(buttons[MULTI_STEP].widget,False); XtSetSensitive(buttons[AUTO_STEP].widget,False); XtSetSensitive(buttons[RUN].widget,False); XtSetSensitive(buttons[LOAD].widget,False); XtSetSensitive(buttons[RESET_].widget,False);/* XtSetSensitive(menu[DEBUG_MENU].sub_menu[STOP_BUTTON].button,True); *//* XtSetSensitive(menu[DEBUG_MENU].sub_menu[TRACE_INTO_BUTTON].button,False); *//* XtSetSensitive(menu[DEBUG_MENU].sub_menu[STEP_OVER_BUTTON].button,False); *//* XtSetSensitive(menu[DEBUG_MENU].sub_menu[MULTI_STEP_BUTTON].button,False); *//* XtSetSensitive(menu[DEBUG_MENU].sub_menu[AUTO_STEP_BUTTON].button,False); *//* XtSetSensitive(menu[DEBUG_MENU].sub_menu[RUN_BUTTON].button,False); *//* XtSetSensitive(menu[DEBUG_MENU].sub_menu[RESET_BUTTON].button,False); *//* XtSetSensitive(menu[DEBUG_MENU].sub_menu[STEP_OUT_BUTTON].button,False); */ XtSetSensitive(menu[FILE_MENU].button,False); XtSetSensitive(menu[OPTIONS_MENU].button,False);}void change_sensitive_stop(void){ XtSetSensitive(buttons[STOP].widget,False); XtSetSensitive(buttons[RELOAD].widget,True); XtSetSensitive(buttons[TRACE_INTO].widget,True); XtSetSensitive(buttons[STEP_OVER].widget,True); XtSetSensitive(buttons[STEP_OUT].widget,True); XtSetSensitive(buttons[MULTI_STEP].widget,True); XtSetSensitive(buttons[AUTO_STEP].widget,True); XtSetSensitive(buttons[RUN].widget,True); XtSetSensitive(buttons[LOAD].widget,True); XtSetSensitive(buttons[RESET_].widget,True); XtSetSensitive(menu[FILE_MENU].button,True); XtSetSensitive(menu[OPTIONS_MENU].button,True);/* XtSetSensitive(menu[DEBUG_MENU].sub_menu[STOP_BUTTON].button,False); *//* XtSetSensitive(menu[2].sub_menu[3].button,True); *//* XtSetSensitive(menu[DEBUG_MENU].sub_menu[STEP_OVER_BUTTON].button,True); *//* XtSetSensitive(menu[DEBUG_MENU].sub_menu[MULTI_STEP_BUTTON].button,True); *//* XtSetSensitive(menu[DEBUG_MENU].sub_menu[AUTO_STEP_BUTTON].button,True); *//* XtSetSensitive(menu[DEBUG_MENU].sub_menu[RUN_BUTTON].button,True); *//* XtSetSensitive(menu[DEBUG_MENU].sub_menu[RESET_BUTTON].button,True); *//* XtSetSensitive(menu[DEBUG_MENU].sub_menu[STEP_OUT_BUTTON].button,True); */}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -