pod.c
来自「ftam等标准协议服务器和客户端的源代码。」· C语言 代码 · 共 2,398 行 · 第 1/5 页
C
2,398 行
"Requested data unavailable at present.\nClick on this window to continue"); break; case duaerror: dnseq = 0; displayError (outer, "Internal error. Sorry!\nClick on this window to continue"); break; case security: dnseq = 0; displayError (outer, "You do not have the access privileges required\n\to make this request!\nClick on this window to continue"); break; case namerror: dnseq = 0; displayError (outer, "Invalid directory position!\nClick on this window to continue"); break; case attributerror: dnseq = 0; displayError (outer, "Faulty data found in database!\nClick on this window to continue"); break; case serviceerror: dnseq = 0; displayError (outer, "Directory Service Error!\nClick on this window to continue"); break; case updaterror: dnseq = 0; displayError (outer, "Update Error!\nClick on this window to continue"); break; case error_string_given: dnseq = 0; (void) sprintf(show_message, "%sClick on this window to continue", dir_error_message); displayError(outer, show_message); break; }}void displayError(refto, mess) Widget refto; String mess;{ Arg args[MAXARGS]; int count; Widget text; text = XtNameToWidget(error_popup, "error_popup"); count = 0; XtSetArg(args[count], XtNlabel, mess); count++; XtSetValues(text, args, count); PopupMessage(error_popup, refto, text, mess, XtGrabExclusive); XBell(dpy, 100);}void displayStartupError(mess) String mess;{ Arg args[MAXARGS]; int count; Widget text; text = XtNameToWidget(error_popup, "error_popup"); XtRemoveAllCallbacks(text, XtNcallback); XtAddCallback(text, XtNcallback, Quit, (XtPointer) 0); count = 0; XtSetArg(args[count], XtNlabel, mess); count++; XtSetValues(text, args, count); PopupMessage(error_popup, (Widget) 0, text, mess, XtGrabExclusive);}/*ARGSUSED*/static void killError(w, closure, calldata) Widget w; XtPointer closure, calldata;{ kill_error();}static void kill_error(){ Arg args[MAXARGS]; int count; Pixmap pixmap_resource; Widget text = XtNameToWidget(error_popup, "error_popup"); XtPopdown(error_popup); count = 0; XtSetArg(args[count], XtNbackgroundPixmap, &pixmap_resource); count++; XtGetValues(text, args, count); count = 0; XtSetArg(args[count], XtNbackgroundPixmap, XtUnspecifiedPixmap); count++; XtSetValues(text, args, count); if (pixmap_resource != XtUnspecifiedPixmap) XFreePixmap(dpy, pixmap_resource);}void message(refto, mess) Widget refto; char *mess;{ Arg args[MAXARGS]; int count; Widget text; XEvent event; text = XtNameToWidget(standby, "standby"); count = 0; XtSetArg(args[count], XtNlabel, mess); count++; XtSetValues(text, args, count); PopupMessage(standby, refto, text, mess, XtGrabNonexclusive); while (!XCheckTypedWindowEvent(dpy, XtWindow(text), Expose, &event)); XtDispatchEvent(&event); XFlush(dpy);}void kill_message(){ Arg args[MAXARGS]; int count; Pixmap pixmap_resource; Widget text = XtNameToWidget(standby, "standby"); XtPopdown(standby); count = 0; XtSetArg(args[count], XtNbackgroundPixmap, &pixmap_resource); count++; XtGetValues(text, args, count); count = 0; XtSetArg(args[count], XtNbackgroundPixmap, XtUnspecifiedPixmap); count++; XtSetValues(text, args, count); if (pixmap_resource != XtUnspecifiedPixmap) XFreePixmap(dpy, pixmap_resource);} static void CreateHelpPopup(){ Widget popup_help, popup_help_button, popup_quit_button, popup_help_form, popup_help_scrolwin; Arg args[MAXARGS]; int count; count = 0; popup_help = XtCreatePopupShell("Pod Help Screen", topLevelShellWidgetClass, toplevel, args, count); count = 0; popup_help_form = XtCreateManagedWidget("popup_help_form", formWidgetClass, popup_help, args, count); count = 0; XtSetArg(args[count], XtNheight, Close_height); count++; XtSetArg(args[count], XtNwidth, Close_width); count++; popup_quit_button = XtCreateManagedWidget("popup_help_quit", commandWidgetClass, popup_help_form, args, count); XtAddCallback(popup_quit_button, XtNcallback, QuitFromHelp, (XtPointer) 0); count = 0; XtSetArg(args[count], XtNheight, About_height); count++; XtSetArg(args[count], XtNwidth, About_width); count++; popup_help_button = XtCreateManagedWidget("popup_help_general", commandWidgetClass, popup_help_form, args, count); XtAddCallback(popup_help_button, XtNcallback, ShowVersion, (XtPointer) NULL); count = 0; popup_help_scrolwin = XtCreateManagedWidget("popup_help_scrolwin", viewportWidgetClass, popup_help_form, args, count); count = 0; (void) XtCreateManagedWidget("popup_help_text", asciiTextWidgetClass, popup_help_scrolwin, args, count); XtRealizeWidget(popup_help); CreateBackgroundPixmap(popup_help_button, About_bits, About_width, About_height); CreateBackgroundPixmap(popup_quit_button, Close_bits, Close_width, Close_height); if (DefaultDepthOfScreen(screen) == 1) { CreateBackgroundPixmap(popup_help_form, gray_bits, gray_width, gray_height); }}/*ARGSUSED*/static void Help(w, closure, calldata) Widget w; XtPointer closure, calldata;{ Widget help_popup; help_popup = XtNameToWidget(toplevel, "Pod Help Screen"); XtPopup(help_popup, XtGrabNone); InsertHelp((Widget) 0, (XtPointer) "help", (XtPointer) 0); XFlush(dpy); help_up = TRUE;}/*ARGSUSED*/static void QuitFromHelp(w, closure, calldata) Widget w; XtPointer closure, calldata;{ Widget help_popup; help_up = FALSE; help_popup = XtNameToWidget(toplevel, "Pod Help Screen"); XtPopdown(help_popup); HideVersion((Widget) NULL, (XEvent *) NULL, (String *) NULL, 0);}/*ARGSUSED*/static void InsertHelp(w, closure, calldata) Widget w; XtPointer closure, calldata;{ Widget text, scrolwin; FILE *file; char filename[STRINGLEN], help_buf[RESBUF]; int count; Arg args[MAXARGS]; Dimension width, height; XFontStruct *font; scrolwin = XtNameToWidget(toplevel, "Pod Help Screen.popup_help_form.popup_help_scrolwin"); text = XtNameToWidget(scrolwin, "popup_help_text"); count = 0; XtSetArg(args[count], XtNwidth, &width); count++; XtGetValues(scrolwin, args, count); (void) strcpy(filename, dua_help_dir); (void) strcat(filename, (String) closure); count = 0; XtSetArg(args[count], XtNfont, &font); count++; XtGetValues(text, args, count); height = FONTHEIGHT(font); count = 0; XtSetArg(args[count], XtNheight, height); count++; XtSetValues(text, args, count); height = 0; if (!(file = fopen(filename, "r"))) { (void) strcpy(filename, "./Xd/podHelpdir/"); (void) strcat(filename, (String) closure); if (!(file = fopen(filename, "r"))) { (void) fprintf(stderr, "Helpfile '%s%s' not found\n", dua_help_dir, closure); return; } } if (file) { (void) strcpy(help_buf, "\0"); while (fgets(help_string, STRINGLEN - 1, file)) { height += (FONTHEIGHT(font)); (void) strcat(help_buf, help_string); } (void) fclose(file); count = 0; XtSetArg(args[count], XtNstring, ""); count++; XtSetValues(text, args, count); count = 0; XtSetArg(args[count], XtNwidth, width - 18); count++; XtSetArg(args[count], XtNheight, height); count++; XtSetArg(args[count], XtNstring, help_buf); count++; XtSetValues(text, args, count); }}static void CreateBackgroundPixmap(widget, bits, width, height) Widget widget; char bits[]; Cardinal width, height;{ Arg args[MAXARGS]; int count; Pixmap bitmap; bitmap = XCreatePixmapFromBitmapData(dpy, XtWindow(widget), bits, width, height, BlackPixelOfScreen(screen), WhitePixelOfScreen(screen), DefaultDepthOfScreen(screen)); count = 0; XtSetArg(args[count], XtNheight, height); count++; XtSetArg(args[count], XtNwidth, width); count++; XtSetArg(args[count], XtNbackgroundPixmap, bitmap); count++; XtSetArg(args[count], XtNresizable, FALSE); count++; XtSetValues(widget, args, count); XtAddCallback(widget, XtNdestroyCallback, FreeWidgetPixmap, (XtPointer) bitmap);}/*ARGSUSED*/static void ListDestroy(w, list_seq, calldata) Widget w; XtPointer calldata, list_seq;{ free_seq((str_seq) list_seq);}/*ARGSUSED*/static void destroyList(w, shellwidget, calldata) Widget w; XtPointer shellwidget, calldata;{ if (curr_list_popup == (Widget) shellwidget) curr_list_popup = 0; XtPopdown((Widget) shellwidget); XtUnmanageChild((Widget) shellwidget); XtDestroyWidget((Widget) shellwidget); XFlush(dpy);}/*ARGSUSED*/static void keepList(w, shellwidget, calldata) Widget w; XtPointer calldata, shellwidget;{ if (curr_list_popup == (Widget) shellwidget) curr_list_popup = 0;}static void CreateHistoryPopup(list_seq, mess) str_seq list_seq; char *mess;{ int count = 0; Widget shell, swindow, HistoryForm, ListWindow, closeButton; Arg args[MAXARGS]; count = 0; shell = XtCreatePopupShell("Session History", topLevelShellWidgetClass, toplevel, args, 0); count = 0; HistoryForm = XtCreateManagedWidget("HistoryForm", formWidgetClass, shell, args, count); count = 0; XtSetArg(args[count], XtNheight, Close_height); count++; XtSetArg(args[count], XtNwidth, Close_width); count++; closeButton = XtCreateManagedWidget("closeButton", commandWidgetClass, HistoryForm, args, count); XtAddCallback(closeButton, XtNcallback, (XtCallbackProc) popdownHistory, (XtPointer) shell); count = 0; XtSetArg(args[count], XtNlabel, "History Window"); count++; (void) XtCreateManagedWidget("HistoryTitle", labelWidgetClass, HistoryForm, args, count); count = 0; swindow = XtCreateManagedWidget("ListScrolledWindow", viewportWidgetClass, HistoryForm, args, count); count = 0; ListWindow = XtCreateManagedWidget("ListWindow", formWidgetClass, swindow, args, count); count = 0; XtSetArg(args[count], XtNlabel, mess); count++; (void) XtCreateManagedWidget("ListMessage", labelWidgetClass, HistoryForm, args, count); XtAddCallback(ListWindow, XtNdestroyCallback, ListDestroy, (XtPointer) list_seq); AddNewList(ListWindow, list_seq, (unsigned) entry_number); XtRealizeWidget(shell); CreateBackgroundPixmap(closeButton, Close_bits, Close_width, Close_height); if (DefaultDepthOfScreen(screen) == 1) CreateBackgroundPixmap(HistoryForm, gray_bits, gray_width, gray_height);}/*ARGSUSED*/static void popupHistory(w, closure, calldata) Widget w; XtPointer closure, calldata;{ Widget history_popup; history_popup = XtNameToWidget(toplevel, "Session History"); XtPopup(history_popup, XtGrabNone); XRaiseWindow(dpy, XtWindow(history_popup));}/*ARGSUSED*/static void popdownHistory(w, closure, calldata) Widget w; XtPointer closure, calldata;{ Widget history_popup; history_popup = XtNameToWidget(toplevel, "Session History"); XtPopdown(history_popup);}/*ARGSUSED*/static void ChangeHelp(w, event, params, num_params) Widget w; XEvent *event; String *params; Cardinal num_params;{ if ((help_up) && strcmp(params[0], curr_help)) { InsertHelp((Widget) 0, (XtPointer) params[0], (XtPointer) 0); (void) strcpy(curr_help, params[0]); }}/*ARGSUSED*/static void buttonPress(w, event, params, num_params) Widget w; XEvent *event; String *params; Cardinal num_params;{ char *buttonName = params[0]; if (!strcmp(buttonName, "search")) CreateBackgroundPixmap(w, SearchPress_bits, SearchPress_width, SearchPress_height); else if (!strcmp(buttonName, "help")) CreateBackgroundPixmap(w, HelpPress_bits, HelpPress_width, HelpPress_height); else if (!strcmp(buttonName, "quit")) CreateBackgroundPixmap(w, QuitPress_bits, QuitPress_width, QuitPress_height); else if (!strcmp(buttonName, "list")) CreateBackgroundPixmap(w, ListPress_bits, ListPress_width, ListPress_height); else if (!strcmp(buttonName, "history")) CreateBackgroundPixmap(w, HistoryPress_bits, HistoryPres
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?