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

📄 sewin.c

📁 功能丰富的串口通讯程序
💻 C
📖 第 1 页 / 共 2 页
字号:
/* * 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. *//*                               -*- Mode: C -*-  * SeWin.c --- Windows/widgets routines * Author          : Muhammad M. Saggaf * Created On      : sometime in 1992 * Last Modified By: system admin * Last Modified On: Sat Jun  5 16:57:06 1993 * Update Count    : 9 * Status          : Mostly OK, needs some cleaning up */#include <X11/Intrinsic.h>#include <X11/StringDefs.h>#include <X11/Shell.h>#include <X11/Xmu/CharSet.h>#include <X11/Xaw/Command.h>#include <X11/Xaw/List.h>#include "MultiList.h"#include <X11/Xaw/Toggle.h>#include <X11/Xaw/AsciiText.h>#include <X11/Xaw/Box.h>#include <X11/Xaw/Dialog.h>#include <X11/Xaw/Form.h>#include <X11/Xaw/Paned.h>#include <setjmp.h>#include "seyon.h"#include "SeDecl.h"extern Widget   topLevel;extern Widget   statusMessage;extern Pixmap   progIcon;void            SePopupMsg(),                EditSaveFile(),                StopMainLoop();Boolean         DoMainLoop;/* * does nothing */voidDoNothing(){  return;}/* * distroys a popup */voidDestroyShell(widget)     Widget          widget;{  Widget          shell = GetShell(widget);  XtPopdown(shell);  XtDestroyWidget(shell);}voidDestroyShellCallBack(widget, child)     Widget          widget;     XtPointer       child;{  DestroyShell((Widget)child);}voidDestroyParentPopup(widget, child)     Widget          widget;     XtPointer       child;{  DestroyShellCallBack(widget, child);}voidDismissPopup(widget, upFlag)     Widget          widget;     XtPointer       upFlag;{  *((Boolean*)upFlag) = False;  DestroyShell(widget);}voidResetFlag(widget, flag)     Widget          widget;     XtPointer       flag;{  *((Boolean*)flag) = False;}voidSetSensitiveOn(widget, callData)     Widget          widget;     XtPointer       callData;{  XtVaSetValues((Widget)callData, XtNsensitive, True, NULL);}/* * creates a button */WidgetSeAddButton(name, parent, call_back)     String          name;     Widget          parent;     void            (*call_back) ();{  Widget          widget;  widget = XtCreateManagedWidget(name, commandWidgetClass, parent, NULL, 0);  XtAddCallback(widget, XtNcallback, call_back, (XtPointer) parent);  return widget;}/* * similar to the above, but also passes client data to the call back * WCD = with client data */WidgetSeAddButtonWCD(name, parent, callBack, clientData)     String          name;     Widget          parent;     void            (*callBack) ();     XtPointer       clientData;{  return AddButton(name, parent, callBack, clientData);}WidgetAddButton(name, parent, callBack, clientData)     String          name;     Widget          parent;     void            (*callBack) ();     XtPointer       clientData;{  Widget          widget;  widget = XtCreateManagedWidget(name, commandWidgetClass, parent, NULL, 0);  if (callBack)	XtAddCallback(widget, XtNcallback, callBack, clientData);  return widget;}WidgetSeAddButtonWithClientData(name, parent, call_back, client_data)     String          name;     Widget          parent;     void            (*call_back) ();     XtPointer       client_data;{  return SeAddButtonWCD(name, parent, call_back, client_data);}/* * creates a label */WidgetSeAddLabel(name, parent)     String          name;     Widget          parent;{  return XtCreateManagedWidget(name, labelWidgetClass, parent, NULL, 0);}/* * sets a widget's label */voidSeSetLabel(widget, label)     Widget          widget;     String          label;{  XtVaSetValues(widget, XtNlabel, label, NULL);}/* * creates a toggle */WidgetSeAddToggleWCD(name, parent, call_back, clientData)     String          name;     Widget          parent;     void            (*call_back) ();     XtPointer       clientData;{  Widget          widget;  widget = XtCreateManagedWidget(name, toggleWidgetClass, parent, NULL, 0);  if (call_back) {    if (clientData == NULL)      clientData = (XtPointer) parent;	XtAddCallback(widget, XtNcallback, call_back, clientData);  }  return widget;}WidgetSeAddToggle(name, parent, call_back)     String          name;     Widget          parent;     void            (*call_back) ();{  return SeAddToggleWCD(name, parent, call_back, NULL);}/* * sets or unsets a toggle */voidSeSetUnsetToggle(widget, state)     Widget          widget;     Boolean         state;{  XtVaSetValues(widget, XtNstate, state, NULL);}/* * gets a toggle's state */BooleanSeGetToggleState(widget)     Widget          widget;{  Boolean         state;  XtVaGetValues(widget, XtNstate, &state, NULL);  return state;}WidgetSePopupRadio(popup_name, parent, name, active, call_back, clientData)     String          popup_name;     Widget          parent;     String          name[];     int             active;     void            (*call_back) ();     XtPointer       clientData;{  Widget          popup,                  mBox,                  uBox,                  lBox,                  toggle,                  widget;  long            i = 0;  popup = AddSimplePopup(popup_name, parent);  mBox = SeAddPaned("mBox", popup);  uBox = SeAddBox("Radio", mBox);  lBox = SeAddBox("lBox", mBox);  toggle =    XtVaCreateManagedWidget(name[i], toggleWidgetClass, uBox, XtNradioData,			    (XtPointer) (i + 1), NULL);  SeSetUnsetToggle(toggle, (active == i + 1));  XtAddCallback(toggle, XtNcallback, call_back, clientData);  for (i++; name[i]; i++) {    widget =      XtVaCreateManagedWidget(name[i], toggleWidgetClass, uBox, XtNradioGroup,			   toggle, XtNradioData, (XtPointer) (i + 1), NULL);    SeSetUnsetToggle(widget, (active == i + 1));    XtAddCallback(widget, XtNcallback, call_back, clientData);  }  SeAddButtonWCD("dismiss", lBox, DestroyParentPopup, (XtPointer) mBox);  PopupCentered(popup, parent);  return toggle;}/* * AddBox: creates a box. */WidgetAddBox(name, parent)     String          name;     Widget          parent;{  return XtCreateManagedWidget(name, boxWidgetClass, parent, NULL, 0);}WidgetSeAddBox(name, parent)     String          name;     Widget          parent;{  return AddBox(name, parent);}/* * AddDialog: creates a dialog widget. */WidgetAddDialog(name, parent)     String          name;     Widget          parent;{  return XtCreateManagedWidget(name, dialogWidgetClass, parent, NULL, 0);}WidgetSeAddDialog(name, parent)     String          name;     Widget          parent;{  return AddDialog(name, parent);}/* * sets a dialog's label */voidSeSetDialogValue(dialog, value)     Widget          dialog;     String          value;{  Arg             args;  XtSetArg(args, XtNvalue, value);  XtSetValues(dialog, &args, 1);}WidgetPopupDialogGetValue(name, parent, callBack, clientData, defVal)     String          name;     Widget          parent;     void            (*callBack)();     XtPointer       clientData;     String          defVal;{  Widget          popup,                  dialog;  popup = AddSimplePopup(name, parent);  dialog = AddDialog("dialog", popup);  XtVaSetValues(dialog, XtNvalue, (defVal ? defVal : ""), NULL);  if (clientData == NULL) clientData = (XtPointer)dialog;  XawDialogAddButton(dialog, "ok", callBack, clientData);  XawDialogAddButton(dialog, "cancel", DestroyShell, (XtPointer)dialog);  return dialog;}char   getValueDefValue[REG_BUF];void   (*getValueExecProc)();voidGetValueDispatchProc(valueWidget)     Widget          valueWidget;{  Widget          dialog = XtParent(valueWidget);  strcpy(getValueDefValue, XawDialogGetValueString(dialog));  DestroyShell(dialog);  (*getValueExecProc)(XtParent(GetShell(valueWidget)), getValueDefValue);}voidGetValueByPopupOKAction(widget)  Widget          widget;{  GetValueDispatchProc(widget);}voidGetValueByPopup(widget, name, callback)     Widget          widget;     String          name;	 XtCallbackProc  callback;{  Widget          popup,                  dialog;    getValueExecProc = (void (*)())callback;  popup = GetShell((dialog = PopupDialogGetValue(name, widget,							   GetValueDispatchProc, NULL, 							   getValueDefValue)));  PopupCentered(popup, widget);}WidgetSePopupDialogGetStringE(popup_name, parent, ok_callback,			ok_client_data, def_val, UL)     String          popup_name;     Widget          parent;     void            (*ok_callback) ();     XtPointer       ok_client_data;     String          def_val;     Boolean         UL;{  Widget          dialog;  dialog = PopupDialogGetValue(popup_name, parent, ok_callback,								ok_client_data, def_val);  PopupCentered(GetShell(dialog), parent);  return dialog;}WidgetSePopupDialogGetString(popup_name, parent, ok_callback,		       ok_client_data)     String          popup_name;     Widget          parent;     void            (*ok_callback) ();     XtPointer       ok_client_data;{  return SePopupDialogGetStringE(popup_name, parent, ok_callback,				 ok_client_data, NULL, False);}/* * creates a from */WidgetSeAddForm(name, parent)     String          name;     Widget          parent;{  return XtCreateManagedWidget(name, formWidgetClass, parent, NULL, 0);}WidgetAddPaned(name, parent)     String          name;     Widget          parent;{  return XtCreateManagedWidget(name, panedWidgetClass, parent, NULL, 0);}WidgetSeAddPaned(name, parent)     String          name;     Widget          parent;{  return AddPaned(name, parent);}/* * sets a viewport's dimensions */voidSeSetViewportDimensions(viewport, child, max_height)     Widget          viewport,                     child;     Dimension       max_height;{  SeSetWidgetWidth(viewport, SeWidgetWidth(child) + 14);  if (SeWidgetHeight(child) > max_height)    SeSetWidgetHeight(viewport, max_height);}/* * sets a viwport's dimensions according to a child list */voidSeSetViewportDimFromList(viewport, list, rows)     Widget          viewport,                     list;     Cardinal        rows;{  XFontStruct    *font;  Dimension       height,                  internalHeight,                  rowSpacing,                  borderWidth;  XtVaGetValues(list, XtNfont, &font, XtNinternalHeight, &internalHeight,				XtNrowSpacing, &rowSpacing, XtNborderWidth, &borderWidth, 				NULL);  height = font->ascent + font->descent;  height = height * rows + rowSpacing * (rows - 1) +    2 * (internalHeight + borderWidth);  SeSetViewportDimensions(viewport, list, height);}/* * sets a viwport's dimensions according to a child multi-list */voidSeSetViewportDimFromMultiList(viewport, list, rows)     Widget          viewport,                     list;     Cardinal        rows;{  Dimension       rowHeight,                  borderWidth;  XtVaGetValues(list, XtNrowHeight, &rowHeight, XtNborderWidth, &borderWidth,				NULL);  SeSetViewportDimensions(viewport, list,			  rowHeight * rows + 2 * borderWidth);}WidgetGetShell(widget)     Widget          widget;{  while ((widget != NULL) && !XtIsShell(widget))    widget = XtParent(widget);  return (widget);}intIconifyShell(widget)     Widget          widget;{  widget = GetShell(widget);  return (int)XIconifyWindow(XtDisplay(widget), XtWindow(widget), 							 XScreenNumberOfScreen(XtScreen(widget)));}/* *   Creates a popup with a bit more control on geometry. *   WG = With Geometry */

⌨️ 快捷键说明

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