⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 menu_options.c

📁 linux上实现的多种型号的AVR模拟器
💻 C
📖 第 1 页 / 共 2 页
字号:
/* File        : menu_options.c Author      : Sergiy Uvarov - Copyright (C) 2001 Description : creating option menu. Copyright notice: avr_simulator - A GNU/Linux simulator for the Atmel AVR series of microcontrollers. Copyright (C) 2001 Sergey Uvarov This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.  This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more details.  You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.  Sergiy Uvarov E-mail : colonel@ff.dsu.dp.ua*/#include <stdio.h>#include <stdlib.h>#include <string.h>#include <errno.h>#include <libintl.h>#include <Xm/XmAll.h>#include "types.h"#include "global.h"#include "menu_options.h"#define _(x) gettext(x)void use_debugger_callback();void close_debugger_callback();void use_ports_callback();void close_ports_callback();void toggle_ports_callback();void popup_file_selection_callback();void watchdog_unprog_callback();void watchdog_prog_callback();void close_project_callback();int  check_port_file();void init_ports_window();void file_selection_ok_port();void create_project_selection();Widget ports_window,debugger_window,project_window,  freq_field,                  /* field where you enter frequency         */  watchdog_freq_field,         /* field where you enter watchdog frequency*/  combo_proc,                  /* widgets for choose processor            */    file_selection_port,  prog_option_menu,            /* option menu for set reset delay */  prog_button[2];              /* buttons from previous menu */  int multi_step=10,    /* number of command is executed by multi step */  auto_step=100,      /* it's time while a command are executed by auto step */  debug_flag=0,       /* */  ports_window_flag,  /* show what buttons was pressed logging or stimuli */  number_edit_line,   /* in port logging and stimuli window */  wacthdog_timeout_temp=UNPROGRAMMED;Line_port_window data_port_window[6];Data_port_window data_port_log[6],data_port_sti[6];void create_ports_window(void){  Widget shell,frame,button,form,separator;  XmString string;  int n;  char buf[10];    /* create Selection File */  string=XmStringGenerate(_("Selection of file"),XmFONTLIST_DEFAULT_TAG,			  XmCHARSET_TEXT,_MOTIF_DEFAULT_LOCALE);  file_selection_port=XmCreateFileSelectionDialog(toplevel,						  "selection_file",NULL,0);  XtVaSetValues(file_selection_port,XmNdialogTitle,string,		XmNheight,400,XmNwidth,400,		XmNdialogStyle,XmDIALOG_PRIMARY_APPLICATION_MODAL,NULL);  XmStringFree(string);  XtAddCallback(file_selection_port,XmNcancelCallback,                (XtCallbackProc)unmanage,                (XtPointer)&file_selection_port);  XtAddCallback(file_selection_port,XmNokCallback,                (XtCallbackProc)file_selection_ok_port,NULL);  XtUnmanageChild(XmFileSelectionBoxGetChild(file_selection_port,                                             XmDIALOG_HELP_BUTTON));  /* end creation of file selection */  shell=XtVaCreateWidget("Shell",xmDialogShellWidgetClass,toplevel,NULL);  ports_window=XtVaCreateWidget("form",xmFormWidgetClass,shell,				XmNautoUnmanage,False,XmNdialogStyle,				XmDIALOG_FULL_APPLICATION_MODAL,				XmNresizePolicy,XmRESIZE_NONE,				XmNfractionBase,5,NULL);  frame=XtVaCreateManagedWidget("Frame",xmFrameWidgetClass,ports_window,				XmNtopAttachment,XmATTACH_FORM,				XmNtopOffset,5,				XmNleftAttachment,XmATTACH_FORM,				XmNleftOffset,5,				XmNrightAttachment,XmATTACH_FORM,				XmNrightOffset,5,				NULL);    form=XtVaCreateManagedWidget("form",xmFormWidgetClass,frame,NULL);    for(n=0;n<6;n++)    {      sprintf(buf,"%s %c",_("Port"),'A'+n);      string=XmStringGenerate(buf,XmFONTLIST_DEFAULT_TAG,			      XmCHARSET_TEXT,_MOTIF_DEFAULT_LOCALE);      data_port_window[n].button1=	XtVaCreateManagedWidget(" ",xmToggleButtonGadgetClass,				form,XmNleftAttachment,XmATTACH_FORM,				XmNleftOffset,4,XmNtopOffset,4,				XmNlabelString,string,NULL);      XmStringFree(string);     XtAddCallback(data_port_window[n].button1,XmNvalueChangedCallback,		   toggle_ports_callback,NULL);      data_port_window[n].data=	XtVaCreateManagedWidget("field",xmTextFieldWidgetClass,form,				XmNtopOffset,4,				XmNleftAttachment,XmATTACH_WIDGET,				XmNleftWidget,data_port_window[n].button1,				XmNleftOffset,4,				XmNcolumns,50,XmNmaxLength,15,				XmNcursorPositionVisible,False,NULL);           data_port_window[n].button2=	XtVaCreateManagedWidget("...",xmPushButtonGadgetClass,form,				XmNtopOffset,4,				XmNrightAttachment,XmATTACH_FORM,				XmNrightOffset,4,NULL);            XtAddCallback(data_port_window[n].button2,XmNactivateCallback,		    (XtCallbackProc)popup_file_selection_callback,NULL);      XtVaSetValues(data_port_window[n].data,XmNrightAttachment,		    XmATTACH_WIDGET,XmNrightOffset,4,		    XmNrightWidget,data_port_window[n].button2,NULL);      if(n==0)	{	  XtVaSetValues(data_port_window[n].button1,			XmNtopAttachment,XmATTACH_FORM,NULL);	  XtVaSetValues(data_port_window[n].data,			XmNtopAttachment,XmATTACH_FORM,NULL);	  XtVaSetValues(data_port_window[n].button2,			XmNtopAttachment,XmATTACH_FORM,NULL);	}      else 	{	  XtVaSetValues(data_port_window[n].button1,XmNtopAttachment,			XmATTACH_WIDGET,XmNtopWidget,separator,NULL);	  XtVaSetValues(data_port_window[n].data,XmNtopAttachment,			XmATTACH_WIDGET,XmNtopWidget,separator,NULL);	  XtVaSetValues(data_port_window[n].button2,XmNtopAttachment,			XmATTACH_WIDGET,XmNtopWidget,separator,NULL);	}      if(n!=5)	    separator=	      XtVaCreateManagedWidget("separator",xmSeparatorGadgetClass,form,				      XmNtopAttachment,XmATTACH_WIDGET,				      XmNtopWidget,data_port_window[n].button1,				      XmNtopOffset,4,    				      XmNleftAttachment,XmATTACH_FORM,				      XmNrightAttachment,XmATTACH_FORM,				      NULL);    }  XtVaSetValues(data_port_window[5].button1,XmNbottomOffset,4,		XmNbottomAttachment,XmATTACH_FORM,NULL);  XtVaSetValues(data_port_window[5].data,XmNbottomOffset,4,XmNbottomAttachment,		XmATTACH_FORM,NULL);  XtVaSetValues(data_port_window[5].button2,XmNbottomOffset,4,		XmNbottomAttachment,XmATTACH_FORM,NULL);  string=XmStringGenerate(_("OK"),XmFONTLIST_DEFAULT_TAG,			  XmCHARSET_TEXT,_MOTIF_DEFAULT_LOCALE);  button=XtVaCreateManagedWidget("OK",xmPushButtonGadgetClass,				 ports_window,				 XmNtopAttachment,XmATTACH_WIDGET,				 XmNtopOffset,7,XmNtopWidget,frame,				 XmNleftAttachment,XmATTACH_POSITION,				 XmNleftPosition,1,XmNlabelString,string,				 XmNrightAttachment,XmATTACH_POSITION,				 XmNrightPosition,2,				 XmNbottomAttachment,XmATTACH_FORM,				 XmNbottomOffset,7,NULL);  XtAddCallback(button,XmNactivateCallback,		(XtCallbackProc)use_ports_callback,ports_window);  XmStringFree(string);    string=XmStringGenerate(_("Cancel"),XmFONTLIST_DEFAULT_TAG,			  XmCHARSET_TEXT,_MOTIF_DEFAULT_LOCALE);  button=XtVaCreateManagedWidget("Close",xmPushButtonGadgetClass,				 ports_window,				 XmNtopAttachment,XmATTACH_WIDGET,				 XmNtopOffset,7,XmNtopWidget,form,				 XmNrightAttachment,XmATTACH_POSITION,				 XmNrightPosition,4,XmNlabelString,string,				 XmNleftAttachment,XmATTACH_POSITION,				 XmNleftPosition,3,				 XmNbottomAttachment,XmATTACH_FORM,				 XmNbottomOffset,7,NULL);    XtAddCallback(button,XmNactivateCallback,		(XtCallbackProc)close_ports_callback,ports_window);  XmStringFree(string);  XtAddCallback(shell,XmNpopupCallback,(XtCallbackProc)set_size_static_window,		NULL);}void file_selection_ok_port(Widget w,Widget *client_data,			    XmFileSelectionBoxCallbackStruct *call_data){  Data_port_window *data;  char *filename;  if(ports_window_flag) data=data_port_sti;  else data=data_port_log;  XtUnmanageChild(file_selection_port);  filename=XmCvtXmStringToCT(call_data->value);  XmTextFieldSetString(data_port_window[number_edit_line].data,filename);  XtFree(filename);}void popup_file_selection_callback(Widget w,Widget *client_data,				   XtPointer call_data){  int n;  XmString string;    n=0;  while(w!=data_port_window[n].button2) n++;  number_edit_line=n;  XtManageChild(file_selection_port);    if(ports_window_flag)    string=XmStringGenerate("*.sti",XmFONTLIST_DEFAULT_TAG,			    XmCHARSET_TEXT,_MOTIF_DEFAULT_LOCALE);  else    string=XmStringGenerate("*.log",XmFONTLIST_DEFAULT_TAG,			    XmCHARSET_TEXT,_MOTIF_DEFAULT_LOCALE);  XtVaSetValues(file_selection_port,XmNpattern,string,NULL);  XmStringFree(string);  }void close_ports_callback(Widget w,Widget *client_data,XtPointer call_data){  int n;  Data_port_window *data;  if(ports_window_flag) data=data_port_sti;  else data=data_port_log;  XtUnmanageChild(*client_data);  for(n=0;n<6;n++)    {      XtVaSetValues(data_port_window[n].button1,XmNset,data[n].state,NULL);      XmTextFieldSetString(data_port_window[n].data,data[n].filename);      if(data[n].state==XmUNSET)	{	  XtSetSensitive(data_port_window[n].data,False);	  XtSetSensitive(data_port_window[n].button2,False);	}      else	{	  XtSetSensitive(data_port_window[n].data,True);	  XtSetSensitive(data_port_window[n].button2,True);	}    }}void use_ports_callback(Widget w,Widget *client_data,XtPointer call_data){  int n;  Data_port_window *data;  XtUnmanageChild(*client_data);  if(ports_window_flag) data=data_port_sti;  else data=data_port_log;  for(n=0;n<6;n++)    if(data[n].state!=-1)      {	XtVaGetValues(data_port_window[n].button1,XmNset,&data[n].state,NULL);	XtFree(data[n].filename);	data[n].filename=XmTextFieldGetString(data_port_window[n].data);	if(data[n].state==XmSET&&ports_window_flag==1)	  if(check_port_file(data[n].filename))	    {	      XtFree(data[n].filename);	      data[n].filename=XtMalloc(1);	      data[n].filename[0]=0;	      show_error();	    }      }}void toggle_ports_callback(Widget w,Widget *client_data,			   XmToggleButtonCallbackStruct *call_data){  int n;    n=0;  while(data_port_window[n].button1!=w) n++;  if(call_data->set==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);    }}void create_debugger_window(void){  Widget shell,frame1,frame2,frame3,label,form,option_form,button;  static Widget data[3];  XmString string;  char number[10];  shell=XtVaCreateWidget("Shell",xmDialogShellWidgetClass,toplevel,			 XmNtitle,_("Debugger's options"),			 NULL);  debugger_window=XtVaCreateWidget("form",xmFormWidgetClass,shell,				   XmNautoUnmanage,False,				   XmNdialogStyle,				   XmDIALOG_FULL_APPLICATION_MODAL,				   XmNresizePolicy,XmRESIZE_NONE,				   XmNfractionBase,5,NULL);  option_form=XtVaCreateManagedWidget("form",xmFormWidgetClass,debugger_window,				      XmNtopAttachment,XmATTACH_FORM,				      XmNleftAttachment,XmATTACH_FORM,				      XmNrightAttachment,XmATTACH_FORM,NULL);    frame1=XtVaCreateManagedWidget("Frame",xmFrameWidgetClass,option_form,				 XmNtopAttachment,XmATTACH_FORM,				 XmNtopOffset,5,				 XmNleftAttachment,XmATTACH_FORM,				 XmNleftOffset,5,				 XmNmarginWidth,2,XmNmarginHeight,2,NULL);    string=XmStringGenerate(_("Multi Step"),XmFONTLIST_DEFAULT_TAG,          			  XmCHARSET_TEXT,_MOTIF_DEFAULT_LOCALE);   XtVaCreateManagedWidget("label",xmLabelGadgetClass,frame1,                          XmNlabelString,string,                          XmNframeChildType,XmFRAME_TITLE_CHILD,                          XmNchildHorizontalAlignment,XmALIGNMENT_CENTER,                          XmNchildVerticalAlignment,XmALIGNMENT_CENTER,                          NULL);  XmStringFree(string);    form=XtVaCreateManagedWidget("form",xmFormWidgetClass,frame1,NULL);  string=XmStringGenerate(_("Number of Single Steps"),XmFONTLIST_DEFAULT_TAG,			  XmCHARSET_TEXT,_MOTIF_DEFAULT_LOCALE);   label=XtVaCreateManagedWidget("label",xmLabelGadgetClass,form,				XmNlabelString,string,XmNbottomOffset,4,				XmNtopAttachment,XmATTACH_FORM,				XmNleftAttachment,XmATTACH_FORM,				XmNbottomAttachment,XmATTACH_FORM,NULL);  XmStringFree(string);  sprintf(number,"%d",multi_step);  data[0]=XtVaCreateManagedWidget("field",xmTextFieldWidgetClass,form,				  XmNtopAttachment,XmATTACH_FORM,

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -