📄 test3.c
字号:
/* $Header: /cvsroot/lesstif/lesstif/test/Xm/label/test3.c,v 1.11 2002/05/01 15:39:21 amai Exp $ */#include <stdlib.h>#include <stdio.h>#include <string.h>#include <unistd.h>#include <Xm/Xm.h>#include <Xm/MainW.h>#include <Xm/ArrowB.h>#include <Xm/LabelG.h>#include <Xm/Label.h>#include <Xm/PushBG.h>#include <Xm/Form.h>#include <Xm/Frame.h>#include <Xm/RowColumn.h>#include <Xm/CascadeB.h>#include <Xm/ToggleBG.h>#include <Xm/BulletinB.h>#include <Xm/PushB.h>#include <Xm/Scale.h>#include <Xm/Text.h>#include "../../common/Test.h"#define SCREEN_NUMBER 0#define MAX_SWITCH 8#define SWITCH_MASK 0x80#define MAX_LED 10#define LED_WIDTH 10#define LED_HEIGHT 20#define LED_DISTANCE 5#define LED_HEIGHT_OFFSET 5#define MAX_ADC 4999 /* in milli Volt */unsigned char ICTP_IO_switch_state = 0; void exit_proc(Widget w,XtPointer client_data,XtPointer call_data);void toggled_proc(Widget w,XtPointer client_data,XtPointer call_data);void test_proc(Widget w,XtPointer client_data,XtPointer call_data);Widget led, lcd, off_switches[MAX_SWITCH],on_switches[MAX_SWITCH];Widget adc_slider;Widget test_switch_box[MAX_SWITCH];Widget on_off_box[MAX_SWITCH];Widget leds[MAX_LED];Pixel red_color_pixel;Pixmap led_off_pixmap,led_on_pixmap;static char *FallBack[] = { "*.geometrySlop: 2", NULL};intmain(int argc, char **argv){ int i; char number_string[5]; XtAppContext theApp; Widget toplevel,main_window,form; Widget menu_bar,file_button,file_menu,quit_button; Widget lcd_label,lcd_frame; Widget led_label; Widget switch_label[MAX_SWITCH]; Widget switches_label,switch_box,switch_on_label,switch_off_label; Widget led_frame,led_column; Widget adc_label; Display *display; Window root_window; GC graphics_context; XGCValues values; unsigned long value_mask; Font label_font; XColor closest_color,exact_color; Arg args[5]; XmString label_string,dummy_string; toplevel = XtVaAppInitialize(&theApp, "ICTP_examples", NULL, 0, &argc, argv, FallBack, NULL); XtSetArg(args[0],XtNtitle,"Simulator for Prof. Ang\'s I/O board"); XtSetValues(toplevel,args,1); display = XtDisplay(toplevel); root_window = DefaultRootWindow(display); label_font = XLoadFont(display, "-adobe-courier-medium-o-normal--10-100-*-*-m-60-*-*"); value_mask = GCForeground | GCBackground | GCFont; values.foreground = BlackPixel(display,SCREEN_NUMBER); values.background = WhitePixel(display,SCREEN_NUMBER); values.font = label_font; graphics_context = XCreateGC(display,root_window,value_mask,&values); XAllocNamedColor(display,DefaultColormap(display,SCREEN_NUMBER),"red", &closest_color,&exact_color); red_color_pixel = closest_color.pixel; XtSetArg(args[0],XmNshowSeparator,TRUE); main_window = XtCreateManagedWidget("main_window",xmMainWindowWidgetClass, toplevel,args,1); form = XtVaCreateManagedWidget("form",xmFormWidgetClass, main_window, XmNwidth,180,NULL);/* create pulldown menu*/ file_menu = XmCreatePulldownMenu(main_window, "file_menu",args,(Cardinal) 0); label_string = XmStringCreateLtoR("Quit",XmSTRING_DEFAULT_CHARSET); XtSetArg(args[0],XmNlabelString,label_string); quit_button = XtCreateManagedWidget("quit_button",xmPushButtonWidgetClass, file_menu,args,1); XtAddCallback(quit_button,XmNactivateCallback,exit_proc,NULL); XmStringFree(label_string); menu_bar = XmCreateMenuBar(main_window,"menu_bar",args,(Cardinal)NULL); label_string = XmStringCreateLtoR("File",XmSTRING_DEFAULT_CHARSET); XtSetArg(args[0],XmNlabelString,label_string); XtSetArg(args[1],XmNsubMenuId,file_menu); file_button = XtCreateManagedWidget("file_button", xmCascadeButtonWidgetClass, menu_bar,args,2); XmStringFree(label_string); XtSetArg(args[0],XmNmenuBar,menu_bar); XtSetValues(main_window,args,1); XtSetArg(args[0],XmNworkWindow,form); XtSetValues(main_window,args,1); XtManageChild(menu_bar); label_string = XmStringCreateLtoR("LCD Panel", XmSTRING_DEFAULT_CHARSET); lcd_label = XtVaCreateManagedWidget("lcd_label", xmLabelGadgetClass, form, XmNtopAttachment,XmATTACH_FORM, XmNtopOffset,30, XmNleftAttachment,XmATTACH_FORM, XmNleftOffset,30, XmNlabelString,label_string, NULL); XmStringFree(label_string); lcd_frame = XtVaCreateManagedWidget("lcd_frame", xmFrameWidgetClass,form, XmNtopAttachment,XmATTACH_WIDGET, XmNtopWidget,lcd_label, XmNleftAttachment,XmATTACH_FORM, XmNleftOffset,30, XmNshadowType,XmSHADOW_IN, NULL); label_string = XmStringCreateLtoR("Welcome ", XmSTRING_DEFAULT_CHARSET); lcd = XtVaCreateManagedWidget("lcd", xmLabelGadgetClass, lcd_frame, XmNlabelString,label_string, /*XmNfontList, "adobe-*-*-*-*-*-24-*-*-*-*-*-*-*-",*/ NULL); XmStringFree(label_string); label_string = XmStringCreateLtoR("LED Panel", XmSTRING_DEFAULT_CHARSET); led_label = XtVaCreateManagedWidget("led_label", xmLabelGadgetClass, form, XmNtopAttachment,XmATTACH_FORM, XmNtopOffset,30, XmNleftAttachment,XmATTACH_WIDGET, XmNleftWidget,lcd_frame, XmNleftOffset,30, XmNlabelString,label_string, NULL); XmStringFree(label_string); led_off_pixmap = XCreatePixmap(display, root_window, LED_WIDTH, LED_HEIGHT+2*LED_HEIGHT_OFFSET, DefaultDepth(display,SCREEN_NUMBER)); led_on_pixmap = XCreatePixmap(display, root_window, LED_WIDTH, LED_HEIGHT+2*LED_HEIGHT_OFFSET, DefaultDepth(display,SCREEN_NUMBER)); XSetForeground(display,graphics_context,WhitePixel(display,SCREEN_NUMBER)); XFillRectangle(display,led_off_pixmap,graphics_context, 0,0, LED_WIDTH, LED_HEIGHT+2*LED_HEIGHT_OFFSET); XSetForeground(display,graphics_context,red_color_pixel); XFillRectangle(display,led_on_pixmap,graphics_context, 0,0, LED_WIDTH, LED_HEIGHT+2*LED_HEIGHT_OFFSET); XSetForeground(display,graphics_context,BlackPixel(display,SCREEN_NUMBER)); led_frame = XtVaCreateManagedWidget("led_frame", xmFrameWidgetClass,form, XmNtopAttachment,XmATTACH_WIDGET, XmNtopWidget,led_label, XmNleftAttachment,XmATTACH_WIDGET, XmNleftWidget,lcd_frame, XmNleftOffset,30, XmNshadowType,XmSHADOW_OUT, NULL); led_column = XtVaCreateManagedWidget("led_clumn", xmRowColumnWidgetClass, led_frame, XmNorientation,XmHORIZONTAL, NULL); for (i=0;i<MAX_LED;i++) leds[i] = XtVaCreateManagedWidget("led", xmLabelWidgetClass,led_column, XmNlabelType,XmPIXMAP, XmNlabelPixmap,led_off_pixmap, XmNborderWidth,2, NULL); label_string = XmStringCreateLtoR("Switches", XmSTRING_DEFAULT_CHARSET); switches_label = XtVaCreateManagedWidget("switches_label", xmLabelGadgetClass, form, XmNtopAttachment,XmATTACH_WIDGET, XmNtopWidget,lcd_frame, XmNtopOffset,30, XmNleftAttachment,XmATTACH_FORM, XmNleftOffset,30, XmNlabelString,label_string, NULL); XmStringFree(label_string); switch_box = XtVaCreateManagedWidget( "switch_box", xmFormWidgetClass,form, XmNtopAttachment,XmATTACH_WIDGET, XmNtopWidget,switches_label, XmNleftAttachment,XmATTACH_FORM, XmNleftWidget,lcd_frame, XmNleftOffset,30, XmNorientation,XmVERTICAL, NULL); sprintf(number_string," %1d",MAX_SWITCH); label_string = XmStringCreateLtoR(number_string, XmSTRING_DEFAULT_CHARSET); dummy_string = XmStringCreateLtoR("", XmSTRING_DEFAULT_CHARSET); switch_label[0] = XtVaCreateManagedWidget( "switch_label", xmLabelGadgetClass,switch_box, XmNlabelString,label_string, NULL); on_off_box[0] = XtVaCreateManagedWidget( "on_off_box", xmRowColumnWidgetClass,switch_box, XmNtopAttachment,XmATTACH_WIDGET, XmNtopWidget,switch_label[0], XmNradioBehavior,TRUE, XmNorientation,XmVERTICAL, XmNpacking,XmPACK_TIGHT, NULL); on_switches[0] = XtVaCreateManagedWidget( "on_switches", xmToggleButtonGadgetClass,on_off_box[0], XmNlabelString,dummy_string, NULL); XtAddCallback(on_switches[0],XmNvalueChangedCallback,test_proc,NULL); off_switches[0] = XtVaCreateManagedWidget( "off_switches", xmToggleButtonGadgetClass,on_off_box[0], XmNset,TRUE, XmNlabelString,dummy_string, NULL); XtAddCallback(off_switches[0],XmNvalueChangedCallback,test_proc,NULL); for (i=1;i<MAX_SWITCH;i++) {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -