📄 omati.c
字号:
#include <stdio.h>#include <unistd.h>#include <errno.h>#include "system.h"#include "kyotu_t.h"/*-------------------------------------------------------------------*/#define DEBUG 0/*#define MIN_MSGLENGTH 20*/#define MIN_MSGLENGTH 36#define MAX_MAPLENGTH 256#define INTERVAL 1000L#define FONTSIZE 24#define WIDTH 300#define HEIGHT 60#define ICONSIZE_X 32#define ICONSIZE_Y 32#define START_X 5#define START_Y 5/*-------------------------------------------------------------------*/extern int errno;char work[MAXPATHLEN];void win_cre();void interval_func();struct _bm_tbl { int id; char name[MAXPATHLEN]; Pixmap pixmap; unsigned int width; unsigned int height;};struct _label_tbl { Display *dpy; Screen *screen; Window win; GC gc; char *str; Pixmap pixmap; unsigned int width; unsigned int height;};Display *display;Screen *screen;GC gc;Pixmap draw_pixmap, msg_pixmap;Position x = START_X, y = START_Y;XtAppContext appcon;Widget topshell;Widget main_w;Widget rc0, rc1;Widget form, bb, drawing_a;Widget label0, label1;Widget pb;XtIntervalId interval_id;unsigned long interval = INTERVAL;static int offset = 0;static int current = INITIAL;static int maplength = 0;static char mapfname[MAX_MAPLENGTH][MAXPATHLEN];static char *message = NULL;static struct _bm_tbl *mapdata = NULL;static struct _label_tbl label_tbl;main(argc, argv)int argc;char *argv[];{ char fname[MAXPATHLEN]; char buff[ALIGN(MIN_MSGLENGTH+1)]; XFontStruct *font_info;/*-------------------------------------------------------------------*/ setlocale(LC_ALL,""); XtSetLanguageProc(NULL,(XtLanguageProc)NULL,NULL); topshell = XtAppInitialize(&appcon, "Wait2", NULL, 0, &argc, argv, NULL, NULL, 0); message = (char*)XtMalloc(ALIGN(MIN_MSGLENGTH+1)); if (argc >= 2) { /* メッセ〖ジの回年がある眷圭 */ message = (char*)XtRealloc(message, strlen(argv[1]) + 1); strcpy(message, argv[1]); if (argc >= 3) { /* タイマ粗持の回年がある眷圭 */ interval = (unsigned long)atoi(argv[2]) * 100L; if (interval < 0) { interval = INTERVAL; } } } else { message[0] = 0; }#if DEBUG printf("メッセ〖ジ[%s]\n",(message!=NULL)?message:"null");#endif /* メッセ〖ジが没い眷圭は鄂球 */ /* を输う */ if (message[0] != 0 && strlen(message) < MIN_MSGLENGTH) { sprintf(buff, "%*s", MIN_MSGLENGTH, " "); strncpy(buff, message, strlen(message)); message = (char*)XtRealloc(message, strlen(buff)+1); strcpy(message, buff); } win_cre(topshell); /* 茶烫侯喇 */ sprintf(fname, "%s/f_waitdisp", (char*)getenv("SYSDIR")); load_pixmap(label0, fname);#if 0 create_msgpixmap(label1, message);#endif XtRealizeWidget(topshell); if (mapdata != NULL && mapdata[0].id > 0) { XtVaSetValues(label0, XmNlabelPixmap, mapdata[0].pixmap, NULL); } XFlush(XtDisplay(topshell)); /* タイマ肋年 */ interval_id = XtAppAddTimeOut(appcon, 1000L, interval_func, NULL); XtAppMainLoop(appcon);}void win_cre(shell)Widget shell;{ int length; char buff[BUFSIZ]; Widget frm, sep, rc; XmString mstr; void quit(), destroy_it();/*-------------------------------------------------------------------*/ XtVaSetValues(shell, XmNmwmDecorations, (MWM_DECOR_BORDER | MWM_DECOR_TITLE), NULL); rc0 = XtVaCreateManagedWidget("rc0", xmRowColumnWidgetClass, shell, XmNmarginWidth, 0, XmNmarginHeight, 0, NULL); form = XtVaCreateManagedWidget("form", xmFormWidgetClass, rc0, XmNmarginWidth, 10, XmNmarginHeight, 10, NULL); rc = XtVaCreateManagedWidget("rc", xmRowColumnWidgetClass, form, XmNmarginWidth, 0, XmNmarginHeight, 0, XmNleftAttachment, XmATTACH_FORM, XmNleftOffset, 30, XmNorientation, XmHORIZONTAL, NULL); frm = XtVaCreateManagedWidget("frm", xmFrameWidgetClass, rc, NULL); label0 = XtVaCreateManagedWidget("label0", xmLabelWidgetClass, frm, XmNlabelType, XmPIXMAP,/***/ XmNwidth, ICONSIZE_X, XmNheight, ICONSIZE_Y,/***/ NULL); /* メッセ〖ジ山绩脱ラベル */ sprintf(buff, "%*s", MIN_MSGLENGTH, " "); mstr = XmStringCreateLtoR(buff, XmSTRING_DEFAULT_CHARSET); label1 = XtVaCreateManagedWidget("label1", xmLabelWidgetClass, rc, XmNwidth, 240, XmNheight, 30, XmNlabelString, mstr, XmNmarginWidth, 0, XmNmarginHeight, 0, XmNalignment, XmALIGNMENT_BEGINNING,/* XmNlabelType, XmPIXMAP,*/ NULL); XmStringFree(mstr); drawing_a = XtVaCreateManagedWidget("drawing_a", xmDrawingAreaWidgetClass, form, XmNtopAttachment, XmATTACH_WIDGET, XmNtopWidget, rc, XmNtopOffset, 20, XmNbottomAttachment, XmATTACH_FORM, XmNbottomOffset, 10, XmNleftAttachment, XmATTACH_FORM, XmNleftOffset, 20, XmNrightAttachment, XmATTACH_FORM, XmNrightOffset, 20, XmNwidth, WIDTH, XmNheight, (HEIGHT*2) - (HEIGHT/2) + 5, XmNmarginWidth, 0, XmNmarginHeight, 0, NULL); /* ∩ˇ∩肋年脱デ〖タ侯喇 */ display = XtDisplay(drawing_a); screen = XtScreen(drawing_a); gc = XCreateGC(display, RootWindowOfScreen(screen), 0, NULL); XtVaSetValues(drawing_a, XmNuserData, gc, NULL); XSetForeground(display, gc, WhitePixelOfScreen(screen)); draw_pixmap = XCreatePixmap(display, RootWindowOfScreen(screen), WIDTH, HEIGHT, DefaultDepthOfScreen(screen)); XFillRectangle(display, draw_pixmap, gc, 0, 0, WIDTH, HEIGHT); XSetForeground(display, gc, BlackPixelOfScreen(screen)); sep = XtVaCreateManagedWidget("sep", xmSeparatorGadgetClass, rc0, NULL); rc1 = XtVaCreateManagedWidget("rc1", xmRowColumnWidgetClass, rc0, XmNisAligned, True, XmNentryAlignment, XmALIGNMENT_CENTER, XmNmarginWidth, 30, NULL); /* 澄千ボタン */ pb = XtVaCreateManagedWidget("澄千", xmPushButtonWidgetClass, rc1, XmNtraversalOn, False, NULL); XtAddCallback(pb, XmNactivateCallback, quit, NULL); XtAddCallback(label1, XmNdestroyCallback, destroy_it, NULL);}int load_pixmap(parent, fname)Widget parent;char *fname;{ int sts = ABNORMAL; int idx; unsigned int width, height; char buff[BUFSIZ]; char *p; FILE *fp_r; Pixmap pixmap; if (fname != NULL) { /* pixmap年盗ファイルオ */ /* 〖プン */ if ((fp_r = fopen(fname, "r")) != NULL) { /* 1乖ずつ粕み哈み */ while(fgets(buff, sizeof(buff), fp_r) != NULL) { /* 猖乖を猴近 */ if ((p = strchr(buff, '\n')) != NULL) {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -