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

📄 windows.c

📁 一个linux下的各种组播路由算法编程
💻 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 + -