📄 windows.c
字号:
/*****************************************************************************
*** Project: GUI for a Computer Network Simulator ***
*** Date: September 9, 1994 ***
*** File: windows.c ***
*** A library of Motif widgets encapsulated in C++ classes ***
*****************************************************************************/
#include "windows.h"
widget::widget() { // Set clors for all widgets to be black forground &
// white background
ac = 0;
XtSetArg(al[ac], XmNforeground, 1); ac++;
XtSetArg(al[ac], XmNbackground, 0); ac++;
XtSetArg(al[ac], XmNtopShadowColor, 0); ac++;
};
menuItem::menuItem(Widget parent, char* name, XtCallbackProc callback) {
// Adds an item into a menu
// and set the callback function
itemName = new char[40];
itemName = name;
XtSetArg(al[ac], XmNlabelString,
XmStringCreateLtoR(itemName, XmSTRING_DEFAULT_CHARSET)); ac++;
w = XmCreatePushButton(parent, itemName, al, ac);
XtManageChild(w);
XtAddCallback(w, XmNactivateCallback, callback, NULL);
};
menu::menu(char *mn, Widget bar) {
// Creates a menu on the menu bar
Widget cascade;
menuName = new char[30];
menuName = mn;
w = XmCreatePulldownMenu(bar, menuName, NULL, 0);
XtSetArg(al[ac], XmNsubMenuId, w); ac++;
XtSetArg(al[ac], XmNlabelString,
XmStringCreateLtoR(menuName, XmSTRING_DEFAULT_CHARSET)); ac++;
cascade = XmCreateCascadeButton(bar, menuName, al, ac);
XtManageChild(cascade);
};
menuItem menu::addItem(char *name, XtCallbackProc callback) {
// adds an item to a menu
menuItem i(w, name, callback);
return(i);
};
menuBar::menuBar(Widget form) {
// Creates an initial empty menu bar
w = XmCreateMenuBar(form, "MenuBar", al, ac);
XtManageChild(w);
};
menu menuBar::addMenu(char* menuName) {
// adds a menu to the menu bar
menu m(menuName, w);
return(m);
};
menu menu::addMenu(char* name) {
// adds a submenu to the menu
menu m(name, w);
return(m);
};
drawingArea::drawingArea(Widget form) {
// Creates a drawing area
// and adds and eventhandler procedures to handle mouse actions
w = XmCreateDrawingArea(form, "DrawingArea", al, ac);
XtManageChild(w);
XtAddEventHandler(w, ButtonPressMask, False,
(XtEventHandler)drawingHandler, NULL);
XtAddCallback(w, XmNexposeCallback, (XtCallbackProc)refreshCB, NULL);
};
messageBar::messageBar(Widget form) {
// Creates a message bar
char *s = new char[25];
s = "MULTICASTSIM Version 1.0";
XtSetArg(al[ac], XmNshadowThickness, 0); ac++;
XtSetArg(al[ac], XmNborderWidth, 0); ac++;
XtSetArg(al[ac], XmNhighlightThickness, 0); ac++;
XtSetArg(al[ac], XmNhighlightColor, 0); ac++;
XtSetArg(al[ac], XmNeditable, False); ac++;
XtSetArg(al[ac], XmNcursorPositionVisible, False); ac++;
w = XmCreateText(form, "MessageBar", al, ac);
XtManageChild(w);
XmTextSetString(w, s);
delete [] s;
};
void messageBar::message(char* msg) {
// displays a message on the message bar
XmTextRemove(w);
XmTextSetString(w, msg);
delete [] msg;
};
commandBar::commandBar(Widget form) {
// Creates a command bar
XtSetArg(al[ac], XmNshadowThickness, 0); ac++;
XtSetArg(al[ac], XmNborderWidth, 0); ac++;
XtSetArg(al[ac], XmNhighlightThickness, 0); ac++;
XtSetArg(al[ac], XmNeditable, False); ac++;
XtSetArg(al[ac], XmNhighlightColor, 0); ac++;
w = XmCreateText(form, "CommandBar", al, ac);
XtAddCallback(w, XmNactivateCallback, (XtCallbackProc)Activate, NULL);
XtManageChild(w);
};
void commandBar::message(char* msg, int edit) {
// displays a message on the command bar
XmTextRemove(w);
XmTextSetEditable(w, edit);
ac = 0;
XtSetArg(al[ac], XmNcursorPositionVisible, edit); ac++;
XtSetValues(w, al, ac);
XmTextSetString(w, msg);
};
char *commandBar::getString() {
return(XmTextGetString(w));
};
separator::separator(Widget form) {
// Creates a separator
w = XmCreateSeparator(form, "Separator", al, ac);
XtManageChild(w);
};
dialog::dialog(Widget form, char* message, XtCallbackProc callback) {
// Creates a dialog box but doesn't manage it
char *msg = new char[50];
msg = message;
XtSetArg(al[ac], XmNmessageString,
XmStringCreateLtoR(msg, XmSTRING_DEFAULT_CHARSET)); ac++;
w = XmCreatePromptDialog(form, "Dialog", al, ac);
XtAddCallback(w, XmNokCallback, callback, (XtPointer)OK);
XtAddCallback(w, XmNcancelCallback, callback, (XtPointer)CANCEL);
XtUnmanageChild(XmSelectionBoxGetChild(w, XmDIALOG_HELP_BUTTON));
};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -