1
0
Files
irix-657m-src/irix/cmd/netman/netgraph/paramControl.c++
2022-09-29 17:59:04 +03:00

293 lines
8.2 KiB
C++

/*
* Copyright 1992 Silicon Graphics, Inc. All rights reserved.
*
* Netgraph Parameters control panel
*
* $Revision: 1.5 $
* $Date: 1992/10/20 17:46:36 $
*
* This is UNPUBLISHED PROPRIETARY SOURCE CODE of Silicon Graphics, Inc.;
* the contents of this file may not be disclosed to third parties, copied or
* duplicated in any form, in whole or in part, without the prior written
* permission of Silicon Graphics, Inc.
*
* RESTRICTED RIGHTS LEGEND:
* Use, duplication or disclosure by the Government is subject to restrictions
* as set forth in subdivision (c)(1)(ii) of the Rights in Technical Data
* and Computer Software clause at DFARS 252.227-7013, and/or in similar or
* successor clauses in the FAR, DOD or NASA FAR Supplement. Unpublished -
* rights reserved under the Copyright Laws of the United States.
*/
#include <stdio.h>
#include <string.h>
#include <osfcn.h>
#include <tuCallBack.h>
#include <tuCheckBox.h>
#include <tuMultiChoice.h>
#include <tuRowColumn.h>
#include <tuTextField.h>
#include <tuUnPickle.h>
#include <tuWindow.h>
#include "arg.h"
#include "constants.h"
#include "paramControl.h"
#include "paramLayout.h"
#include "netGraph.h"
tuDeclareCallBackClass(ParamControlCallBack, ParamControl);
tuImplementCallBackClass(ParamControlCallBack, ParamControl);
ParamControl::ParamControl(NetGraph *ng, const char* instanceName,
tuTopLevel* othertoplevel, const char* appGeometry)
: tuTopLevel(instanceName, othertoplevel, False, appGeometry)
{
// Save name
setName(instanceName);
setIconName("Parameters");
// Save pointer to netgraph
netgraph = ng;
// Set up callbacks
/*****
(new ParamControlCallBack(this, ParamControl::accept))->
registerName("__ParamControl_accept");
******/
(new ParamControlCallBack(this, ParamControl::closeIt))->
registerName("__ParamControl_close");
(new ParamControlCallBack(this, ParamControl::whatTime))->
registerName("_whatTime");
(new ParamControlCallBack(this, ParamControl::keepMax))->
registerName("_keepMax");
(new ParamControlCallBack(this, ParamControl::lockPercScales))->
registerName("_lockPercScales");
(new ParamControlCallBack(this, ParamControl::syncScales))->
registerName("_syncScales");
(new ParamControlCallBack(this, ParamControl::interfaceType))->
registerName("_interfaceType");
(new ParamControlCallBack(this, ParamControl::intervalType))->
registerName("_intervalType");
(new ParamControlCallBack(this, ParamControl::avgPerType))->
registerName("_avgPerType");
(new ParamControlCallBack(this, ParamControl::perType))->
registerName("_perType");
(new ParamControlCallBack(this, ParamControl::updateTimeType))->
registerName("_updateTimeType");
(new tuFunctionCallBack(NetGraph::doHelp, PARAM_HELP_CARD))->
registerName("__ParamControl_help");
catchDeleteWindow((new ParamControlCallBack(this, ParamControl::closeIt)));
// Unpickle UI
TUREGISTERGADGETS;
ui = tuUnPickle::UnPickle(this, layoutstr);
interfaceDeck = (tuDeck*) findGadget("interfaceDeck");
intervalDeck = (tuDeck*) findGadget("intervalDeck");
if (netgraph->getHistory() || netgraph->getRecording()) {
interfaceGadget = (tuLabel*) interfaceDeck->findGadget("interfaceLabel");
intervalGadget = (tuLabel*) intervalDeck->findGadget("intervalLabel");
interfaceDeck->setVisibleChild(interfaceDeck->findGadget("interfaceLabel"));
intervalDeck->setVisibleChild(intervalDeck->findGadget("intervalLabel"));
findGadget("updateLabel")->markDelete();
findGadget("updateRC")->markDelete();
// we'll use updateField to keep track of whether history or recording
updateField = NULL;
} else {
interfaceGadget = (tuTextField*) interfaceDeck->findGadget("interfaceField");
intervalGadget = (tuTextField*) intervalDeck->findGadget("intervalField");
interfaceDeck->setVisibleChild(interfaceDeck->findGadget("interfaceFrame"));
intervalDeck->setVisibleChild(intervalDeck->findGadget("intervalRC"));
updateField = (tuTextField*) findGadget("updateField");
}
maxButton = (tuCheckBox*) findGadget("maxButton");
percButton = (tuCheckBox*) findGadget("percButton");
syncButton = (tuCheckBox*) findGadget("syncButton");
avgPeriodField = (tuTextField*) findGadget("avgPeriodField");
periodField = (tuTextField*) findGadget("periodField");
arg = new Arg(netgraph);
arg->initValues();
} // constructor
void
ParamControl::open() {
// set current values everywhere
tuMultiChoice *m = tuMultiChoice::Find("timeMulti");
tuGadget *b = ui->findGadget(timeTypes[arg->timeType]);
m->setCurrentButton((tuButton*)b, False);
maxButton->setSelected(arg->maxValues);
percButton->setSelected(arg->lockPercentages);
syncButton->setSelected(arg->sameScale);
interfaceGadget->setText(arg->interface);
char tempStr[20];
if (updateField) {
sprintf(tempStr, "%.1f", arg->updateTime/10.0);
updateField->setText(tempStr);
sprintf(tempStr, "%.1f", arg->interval/10.0);
} else {
sprintf(tempStr, "%.1f seconds", arg->interval/10.0);
}
intervalGadget->setText(tempStr);
sprintf(tempStr, "%.1f", arg->avgPeriod/10.0);
avgPeriodField->setText(tempStr);
sprintf(tempStr, "%.1f", arg->period/10.0);
periodField->setText(tempStr);
tuTopLevel::open();
}
void
ParamControl::closeIt(tuGadget *) {
unmap();
}
void
ParamControl::whatTime(tuGadget* g) {
const char *currentName = g->getInstanceName();
for (int t = 0; t < NUM_TIME_TYPES; t++) {
if (!strcmp(currentName, timeTypes[t])) {
arg->timeType = t;
break;
}
} // find selected type
netgraph->setTimeType(t);
}
void
ParamControl::keepMax(tuGadget* g) {
arg->maxValues = g->getSelected();
netgraph->setMaxVals(arg->maxValues);
}
void
ParamControl::lockPercScales(tuGadget* g) {
arg->lockPercentages = g->getSelected();
netgraph->setLockPercentages(arg->lockPercentages);
}
void
ParamControl::syncScales(tuGadget* g) {
arg->sameScale = g->getSelected();
netgraph->setSameScale(arg->sameScale);
}
void
ParamControl::interfaceType(tuGadget*) {
if (arg->interface)
delete [] arg->interface;
arg->interface = strdup(interfaceGadget->getText());
requestFocus(intervalGadget, tuFocus_explicit);
netgraph->handleNewArgs(arg);
// xxxx replace w/ netgraph->set
}
void
ParamControl::intervalType(tuGadget*) {
arg->interval = (int) (atof(intervalGadget->getText()) * 10.0 + 0.5 );
requestFocus(avgPeriodField, tuFocus_explicit);
netgraph->handleNewArgs(arg);
// xxxx replace w/ netgraph->set
}
void
ParamControl::avgPerType(tuGadget*) {
// multiply by 10 and round off to get nearest integer # of tenths
arg->avgPeriod = (int) (atof(avgPeriodField->getText()) * 10.0 + 0.5 );
requestFocus(periodField, tuFocus_explicit);
netgraph->handleNewArgs(arg);
// xxxx replace w/ netgraph->set
}
void
ParamControl::perType(tuGadget*) {
// multiply by 10 and round off to get nearest integer # of tenths
arg->period = (int) (atof(periodField->getText()) * 10.0 + 0.5 );
if (updateField)
requestFocus(updateField, tuFocus_explicit);
else
requestFocus(avgPeriodField, tuFocus_explicit);
netgraph->handleNewArgs(arg);
// xxxx replace w/ netgraph->set
}
void
ParamControl::updateTimeType(tuGadget*) {
arg->updateTime = (int) (atof(updateField->getText()) * 10.0 + 0.5 );
requestFocus(interfaceGadget, tuFocus_explicit);
netgraph->handleNewArgs(arg);
// xxxx replace w/ netgraph->set
}
void
ParamControl::setInterfaceField(char* text) {
interfaceGadget->setText(text);
arg->interface = strdup(text);
}
void
ParamControl::setIntervalField(char* text) {
intervalGadget->setText(text);
arg->interval = (int) (atof(text) * 10.0 + 0.5 );
}
void
ParamControl::setPeriodField(char* text) {
periodField->setText(text);
arg->period = (int) (atof(text) * 10.0 + 0.5 );
}
void
ParamControl::setAvgPeriodField(char* text) {
avgPeriodField->setText(text);
arg->avgPeriod = (int) (atof(text) * 10.0 + 0.5 );
}
void
ParamControl::setUpdateField(char* text) {
updateField->setText(text);
arg->updateTime = (int) (atof(text) * 10.0 + 0.5 );
}