📄 setrans.c
字号:
/* * This file is part of the Seyon, Copyright (c) 1992-1993 by Muhammad M. * Saggaf. All rights reserved. * * See the file COPYING (1-COPYING) or the manual page seyon(1) for a full * statement of rights and permissions for this program.*/#include <X11/Intrinsic.h>#include <X11/StringDefs.h>#include <X11/Xaw/Dialog.h>#include <X11/Xaw/Viewport.h>#include "MultiList.h"#include <math.h>#include "seyon.h"#include "SeDecl.h"int ReadParseProtFile();void DoTransfer(), DoUpload(), exec_upload(), ReReadProtFile(), SeTransfer();struct _protItem { char name[LIT_BUF]; char command[REG_BUF]; Boolean reqName;};struct _protItem *protItems[MAX_ENT];XfwfMultiListWidget mlw;int transCurItemIndex;voidTopTransfer(widget, clientData) Widget widget; XtPointer clientData;{ void EditFile(); Widget popup, mBox, uBox, lBox, view, list; static char protocolsFile[REG_BUF]; static String disItems[MAX_ENT + 1] = {NULL}; ErrorIfBusy(); if (disItems[0] == NULL) { strcpy(protocolsFile, qres.protocolsFile); if (ReadParseProtFile(protocolsFile, disItems) < 0) return; } popup = AddSimplePopup("transfer", widget); mBox = SeAddPaned("mBox", popup); uBox = AddBox("uBox", mBox); lBox = AddBox("lBox", mBox); view = XtCreateManagedWidget("view", viewportWidgetClass, uBox, NULL, 0); list = XtVaCreateManagedWidget("list", xfwfMultiListWidgetClass, view, XtNlist, disItems, XtNmaxSelectable, 1, NULL); mlw = (XfwfMultiListWidget) list; SeSetViewportDimFromList(view, list, 10); XtAddCallback(list, XtNcallback, DoTransfer, clientData); AddButton("dismiss", lBox, DestroyShell, NULL); AddButton("ok", lBox, DoTransfer, clientData); AddButton("edit", lBox, EditFile, (XtPointer)protocolsFile); AddButton("reread", lBox, ReReadProtFile, (XtPointer)disItems); if (clientData) DoTransfer(list, clientData, NULL); else PopupCentered(popup, widget);}char lastUploadFile[REG_BUF];voidDoTransfer(widget, clientData, callData) Widget widget; XtPointer clientData, callData;{ XfwfMultiListReturnStruct *item; Widget popup; String* actionData = (String*)clientData; char fullCommand[LRG_BUF]; if (clientData) {if ((transCurItemIndex = atoi(actionData[0]) - 1) < 0 || transCurItemIndex > MAX_ENT - 1) SimpleError("Invalid Entry Number");} else { if ((item = XfwfMultiListGetHighlighted(mlw))->num_selected == 0) SimpleError("No Item Selected"); transCurItemIndex = item->selected_items[0]; } strcpy(fullCommand, protItems[transCurItemIndex]->command); if (protItems[transCurItemIndex]->reqName) if (actionData == NULL || actionData[1] == NULL) { popup = GetShell(PopupDialogGetValue("upload", widget, exec_upload, NULL, lastUploadFile)); PopupCentered(popup, (clientData) ? XtParent(GetShell(widget)) : widget); return; } else strcat(strcat(fullCommand, " "), actionData[1]); DestroyShell(widget); ShellCommand(fullCommand);}voidReReadProtFile(widget, disItems) Widget widget; XtPointer disItems[];{ Widget protWidget = XtParent(GetShell(widget)); FreeList(disItems); DestroyShell(widget); TopTransfer(protWidget, NULL);}voidexec_upload(widget) Widget widget;{ Widget dialog = XtParent(widget); static char cmd[REG_BUF]; strcpy(lastUploadFile, XawDialogGetValueString(dialog)); sprintf(cmd, "%s %s", protItems[transCurItemIndex]->command, lastUploadFile); DestroyShell(XtParent(GetShell(widget))); ShellCommand(cmd);}voidupload_acc_ok(widget) Widget widget;{ exec_upload(widget);}voidDoShellCommand(widget, command) Widget widget; XtPointer command;{ ShellCommand((String)command);}voidTopShell(widget) Widget widget;{ void GetValueByPopup(); ErrorIfBusy(); GetValueByPopup(widget, "shellCommand", DoShellCommand);}intReadParseProtFile(fname, disItems) String fname; String disItems[];{ FILE *fp; String rawItems[MAX_ENT + 1]; char *buf, reqName[10]; int i, n; if ((fp = open_file(fname, qres.defaultDirectory)) == NULL) return -1; ReadCommentedFile(fp, rawItems); fclose(fp); FreeList(protItems); for (i = 0; (buf = rawItems[i]); i++) { /* * allocate the record */ protItems[i] = XtNew(struct _protItem); /* * find the name */ GetWord(buf, protItems[i]->name); /* * find the command */ GetWord(lptr, protItems[i]->command); /* * find other stuff */ GetWord(lptr, reqName); if (reqName[0] == 'y' || reqName[0] == 'Y') protItems[i]->reqName = True; else protItems[i]->reqName = False; } protItems[i] = (struct _protItem *)NULL; FreeList(rawItems); FreeList(disItems); for (n = 0; n < i; n++) disItems[n] = XtNewString(protItems[n]->name); disItems[n] = NULL; return 0;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -