#@(#) vuespec.gui 2.20 # # vuespec gui # reset-server appInitialize vuespec VUESPEC { *objects:\ toplevel Layout workSpace\ \ workSpace Frame menuBarFrame\ menuBarFrame Layout menuBar\ menuBar MenuButton fileMenuButton\ menuBar MenuButton editMenuButton\ menuBar MenuButton viewMenuButton\ menuBar MenuButton winsMenuButton\ menuBar MenuButton funcMenuButton\ menuBar MenuButton optsMenuButton\ \ workSpace Frame buttonFrame\ buttonFrame Layout buttonBox\ buttonBox Command openSpButton\ buttonBox Command openDbButton\ buttonBox Command spListButton\ buttonBox Command compButton\ buttonBox Command fitButton\ buttonBox Command undoButton\ buttonBox Command quitButton\ buttonBox Command helpButton\ \ workSpace Frame paletteFrame\ paletteFrame Layout paletteBox\ paletteBox Icon paletteLogo\ paletteBox Group modeButtonGroup\ modeButtonGroup TextToggle zoomModeButton\ modeButtonGroup TextToggle compModeButton\ modeButtonGroup TextToggle rangeModeButton\ \ workSpace Paned plotPane\ plotPane Frame fullPlotFrame\ fullPlotFrame Gterm fullPlot\ plotPane Layout workPlotLayout\ workPlotLayout Frame workPlotFrame\ workPlotFrame Gterm workPlot\ workPlotLayout Scrollbar2 workVscroll\ plotPane Layout auxPlotLayout\ auxPlotLayout Frame auxPlotFrame\ auxPlotFrame Gterm auxPlot\ auxPlotLayout Scrollbar2 auxVscroll\ workSpace Layout hScrollLayout\ hScrollLayout Scrollbar2 wHScroll\ hScrollLayout Frame hsfiller\ \ workSpace Layout statusMsgLayout\ statusMsgLayout Frame xCoordFrame\ xCoordFrame Label xCoordText\ statusMsgLayout Frame yCoordFrame\ yCoordFrame Label yCoordText\ statusMsgLayout Frame csHelpFrame\ csHelpFrame Label csHelpText\ \ toplevel TopLevelShell openShell\ openShell Layout osLayout\ osLayout Frame osEnterFrame\ osEnterFrame Layout osEnter\ osEnter TextBox osDirLabel\ osEnter TextBox osFiltLabel\ osEnter TextBox osFileLabel\ osEnter AsciiText osDir\ osEnter AsciiText osFilt\ osEnter AsciiText osFile\ osLayout Group osSubDirGroup\ osSubDirGroup Viewport osSubDir\ osSubDir List osSubDirList\ osLayout Group osFilesGroup\ osFilesGroup Viewport osFiles\ osFiles List osFilesList\ osLayout Frame osButtonFrame\ osButtonFrame Layout osButtons\ osButtons TextButton osOK\ osButtons TextButton osCancel\ osButtons TextButton osRescan\ osButtons TextButton osHelp\ \ toplevel TopLevelShell specListPopup\ specListPopup Layout specListLayout\ \ specListLayout Group specListGroup\ specListGroup Viewport specListView\ specListView Frame specListFrame\ specListFrame List specList\ \ specListLayout Frame specListActFrame\ specListActFrame Layout specListActLayout\ specListActLayout TextButton specListActAdd\ specListActLayout TextButton specListActDelete\ specListActLayout TextButton specListActActive\ specListActLayout TextButton specListActInactive\ \ specListLayout Frame specListBtnFrame\ specListBtnFrame Layout specListButtons\ specListButtons TextButton specListCancel\ specListButtons TextButton specListHelp\ \ toplevel TopLevelShell plotUnitsPopup\ plotUnitsPopup Layout plotUnitsLayout\ \ plotUnitsLayout Group dispUnitsGroup\ dispUnitsGroup TextToggle dispUnitsPixel\ dispUnitsGroup TextToggle dispUnitsAngstrom\ dispUnitsGroup TextToggle dispUnitsMicron\ dispUnitsGroup TextToggle dispUnitsHz\ dispUnitsGroup TextToggle dispUnitsMHz\ dispUnitsGroup TextToggle dispUnitsGHz\ dispUnitsGroup TextToggle dispUnitsVelocity\ \ plotUnitsLayout Group fluxUnitsGroup\ fluxUnitsGroup TextToggle fluxUnitsCounts\ fluxUnitsGroup TextToggle fluxUnitsFlambda\ fluxUnitsGroup TextToggle fluxUnitsFNu\ fluxUnitsGroup TextToggle fluxUnitsPhotLam\ fluxUnitsGroup TextToggle fluxUnitsPhotNu\ fluxUnitsGroup TextToggle fluxUnitsJy\ fluxUnitsGroup TextToggle fluxUnitsMJy\ fluxUnitsGroup TextToggle fluxUnitsLamFlam\ fluxUnitsGroup TextToggle fluxUnitsNuFNu\ \ plotUnitsLayout Frame plotUnitsBtnFrame\ plotUnitsBtnFrame Layout plotUnitsBtnLayout\ plotUnitsBtnLayout Command plotUnitsOK\ plotUnitsBtnLayout Command plotUnitsCancel\ plotUnitsBtnLayout Command plotUnitsReset\ plotUnitsBtnLayout Command plotUnitsHelp\ \ toplevel TopLevelShell compFuncPopup\ compFuncPopup Layout compFuncLayout\ \ compFuncLayout Group compFuncsGroup\ compFuncsGroup Label contFuncsLabel\ compFuncsGroup TextToggle contFuncsLINEAR\ compFuncsGroup TextToggle contFuncsPLANCK\ compFuncsGroup TextToggle contFuncsPWRLAW\ compFuncsGroup TextToggle contFuncsBPWRLAW\ compFuncsGroup TextToggle contFuncsPOLY\ compFuncsGroup Label lineFuncsLabel\ compFuncsGroup TextToggle lineFuncsGAUSSIAN\ compFuncsGroup TextToggle lineFuncsABGAUSS\ compFuncsGroup TextToggle lineFuncsEXPONEN\ compFuncsGroup TextToggle lineFuncsLORENTZ\ \ compFuncLayout Frame compFuncBtnFrame\ compFuncBtnFrame Layout compFuncBtnLayout\ compFuncBtnLayout Command compFuncCancel\ compFuncBtnLayout Command compFuncHelp\ \ toplevel TopLevelShell componentPopup\ componentPopup Layout componentLayout\ \ componentLayout Frame compActGroup\ compActGroup Layout compActLayout\ compActLayout TextButton compFuncButton\ compActLayout Frame compFuncTextFrame\ compFuncTextFrame AsciiText compFuncText\ \ compActLayout TextButton compImportButton\ compActLayout TextButton compNewButton\ compActLayout TextButton compNewCopyButton\ compActLayout TextButton compEditButton\ compActLayout TextButton compChangeButton\ compActLayout TextButton compDeleteButton\ \ compActLayout Label compViewLabel\ compActLayout Group compViewGroup\ compViewGroup TextToggle compValueButton\ compViewGroup TextToggle compConstrButton\ compViewGroup TextToggle compAllButton\ \ componentLayout Group compListGroup\ compListGroup Viewport compListView\ compListView Frame compListFrame\ compListFrame List compList\ \ componentLayout Group compFamilyGroup\ compFamilyGroup Frame compFamilyFrame\ compFamilyFrame AsciiText compFamily\ \ componentLayout Group compAttrGroup\ compAttrGroup Box compAttrBox\ compAttrBox Form compAttrNameBox\ compAttrNameBox Label compTitleName\ compAttrNameBox Label compCoef1Name\ compAttrNameBox Label compCoef2Name\ compAttrNameBox Label compCoef3Name\ compAttrNameBox Label compCoef4Name\ compAttrNameBox Label compCoef5Name\ compAttrNameBox Label compCoef6Name\ compAttrNameBox Label compCoef7Name\ compAttrNameBox Label compCoef8Name\ \ compAttrBox Box compAttrValBox\ compAttrValBox Label compTitleVal\ compAttrValBox Frame compCoef1ValFr\ compCoef1ValFr AsciiText compCoef1Val\ compAttrValBox Frame compCoef2ValFr\ compCoef2ValFr AsciiText compCoef2Val\ compAttrValBox Frame compCoef3ValFr\ compCoef3ValFr AsciiText compCoef3Val\ compAttrValBox Frame compCoef4ValFr\ compCoef4ValFr AsciiText compCoef4Val\ compAttrValBox Frame compCoef5ValFr\ compCoef5ValFr AsciiText compCoef5Val\ compAttrValBox Frame compCoef6ValFr\ compCoef6ValFr AsciiText compCoef6Val\ compAttrValBox Frame compCoef7ValFr\ compCoef7ValFr AsciiText compCoef7Val\ compAttrValBox Frame compCoef8ValFr\ compCoef8ValFr AsciiText compCoef8Val\ \ compAttrBox Box compAttrConstrBox\ compAttrConstrBox Label compTitleConstr\ compAttrConstrBox Frame compCoef1ConstrFr\ compCoef1ConstrFr AsciiText compCoef1Constr\ compAttrConstrBox Frame compCoef2ConstrFr\ compCoef2ConstrFr AsciiText compCoef2Constr\ compAttrConstrBox Frame compCoef3ConstrFr\ compCoef3ConstrFr AsciiText compCoef3Constr\ compAttrConstrBox Frame compCoef4ConstrFr\ compCoef4ConstrFr AsciiText compCoef4Constr\ compAttrConstrBox Frame compCoef5ConstrFr\ compCoef5ConstrFr AsciiText compCoef5Constr\ compAttrConstrBox Frame compCoef6ConstrFr\ compCoef6ConstrFr AsciiText compCoef6Constr\ compAttrConstrBox Frame compCoef7ConstrFr\ compCoef7ConstrFr AsciiText compCoef7Constr\ compAttrConstrBox Frame compCoef8ConstrFr\ compCoef8ConstrFr AsciiText compCoef8Constr\ \ compAttrBox Box compAttrExprBox\ compAttrExprBox Label compTitleExpr\ compAttrExprBox Frame compCoef1ExprFr\ compCoef1ExprFr AsciiText compCoef1Expr\ compAttrExprBox Frame compCoef2ExprFr\ compCoef2ExprFr AsciiText compCoef2Expr\ compAttrExprBox Frame compCoef3ExprFr\ compCoef3ExprFr AsciiText compCoef3Expr\ compAttrExprBox Frame compCoef4ExprFr\ compCoef4ExprFr AsciiText compCoef4Expr\ compAttrExprBox Frame compCoef5ExprFr\ compCoef5ExprFr AsciiText compCoef5Expr\ compAttrExprBox Frame compCoef6ExprFr\ compCoef6ExprFr AsciiText compCoef6Expr\ compAttrExprBox Frame compCoef7ExprFr\ compCoef7ExprFr AsciiText compCoef7Expr\ compAttrExprBox Frame compCoef8ExprFr\ compCoef8ExprFr AsciiText compCoef8Expr\ \ compAttrBox Box compAttrMinBox\ compAttrMinBox Label compTitleMin\ compAttrMinBox Frame compCoef1MinFr\ compCoef1MinFr AsciiText compCoef1Min\ compAttrMinBox Frame compCoef2MinFr\ compCoef2MinFr AsciiText compCoef2Min\ compAttrMinBox Frame compCoef3MinFr\ compCoef3MinFr AsciiText compCoef3Min\ compAttrMinBox Frame compCoef4MinFr\ compCoef4MinFr AsciiText compCoef4Min\ compAttrMinBox Frame compCoef5MinFr\ compCoef5MinFr AsciiText compCoef5Min\ compAttrMinBox Frame compCoef6MinFr\ compCoef6MinFr AsciiText compCoef6Min\ compAttrMinBox Frame compCoef7MinFr\ compCoef7MinFr AsciiText compCoef7Min\ compAttrMinBox Frame compCoef8MinFr\ compCoef8MinFr AsciiText compCoef8Min\ \ compAttrBox Box compAttrMaxBox\ compAttrMaxBox Label compTitleMax\ compAttrMaxBox Frame compCoef1MaxFr\ compCoef1MaxFr AsciiText compCoef1Max\ compAttrMaxBox Frame compCoef2MaxFr\ compCoef2MaxFr AsciiText compCoef2Max\ compAttrMaxBox Frame compCoef3MaxFr\ compCoef3MaxFr AsciiText compCoef3Max\ compAttrMaxBox Frame compCoef4MaxFr\ compCoef4MaxFr AsciiText compCoef4Max\ compAttrMaxBox Frame compCoef5MaxFr\ compCoef5MaxFr AsciiText compCoef5Max\ compAttrMaxBox Frame compCoef6MaxFr\ compCoef6MaxFr AsciiText compCoef6Max\ compAttrMaxBox Frame compCoef7MaxFr\ compCoef7MaxFr AsciiText compCoef7Max\ compAttrMaxBox Frame compCoef8MaxFr\ compCoef8MaxFr AsciiText compCoef8Max\ \ compAttrBox Box compAttrStepBox\ compAttrStepBox Label compTitleStep\ compAttrStepBox Frame compCoef1StepFr\ compCoef1StepFr AsciiText compCoef1Step\ compAttrStepBox Frame compCoef2StepFr\ compCoef2StepFr AsciiText compCoef2Step\ compAttrStepBox Frame compCoef3StepFr\ compCoef3StepFr AsciiText compCoef3Step\ compAttrStepBox Frame compCoef4StepFr\ compCoef4StepFr AsciiText compCoef4Step\ compAttrStepBox Frame compCoef5StepFr\ compCoef5StepFr AsciiText compCoef5Step\ compAttrStepBox Frame compCoef6StepFr\ compCoef6StepFr AsciiText compCoef6Step\ compAttrStepBox Frame compCoef7StepFr\ compCoef7StepFr AsciiText compCoef7Step\ compAttrStepBox Frame compCoef8StepFr\ compCoef8StepFr AsciiText compCoef8Step\ \ compAttrBox Box compAttrTolBox\ compAttrTolBox Label compTitleTol\ compAttrTolBox Frame compCoef1TolFr\ compCoef1TolFr AsciiText compCoef1Tol\ compAttrTolBox Frame compCoef2TolFr\ compCoef2TolFr AsciiText compCoef2Tol\ compAttrTolBox Frame compCoef3TolFr\ compCoef3TolFr AsciiText compCoef3Tol\ compAttrTolBox Frame compCoef4TolFr\ compCoef4TolFr AsciiText compCoef4Tol\ compAttrTolBox Frame compCoef5TolFr\ compCoef5TolFr AsciiText compCoef5Tol\ compAttrTolBox Frame compCoef6TolFr\ compCoef6TolFr AsciiText compCoef6Tol\ compAttrTolBox Frame compCoef7TolFr\ compCoef7TolFr AsciiText compCoef7Tol\ compAttrTolBox Frame compCoef8TolFr\ compCoef8TolFr AsciiText compCoef8Tol\ \ compAttrBox Box compAttrSigBox\ compAttrSigBox Label compTitleSig\ compAttrSigBox Frame compCoef1SigFr\ compCoef1SigFr AsciiText compCoef1Sig\ compAttrSigBox Frame compCoef2SigFr\ compCoef2SigFr AsciiText compCoef2Sig\ compAttrSigBox Frame compCoef3SigFr\ compCoef3SigFr AsciiText compCoef3Sig\ compAttrSigBox Frame compCoef4SigFr\ compCoef4SigFr AsciiText compCoef4Sig\ compAttrSigBox Frame compCoef5SigFr\ compCoef5SigFr AsciiText compCoef5Sig\ compAttrSigBox Frame compCoef6SigFr\ compCoef6SigFr AsciiText compCoef6Sig\ compAttrSigBox Frame compCoef7SigFr\ compCoef7SigFr AsciiText compCoef7Sig\ compAttrSigBox Frame compCoef8SigFr\ compCoef8SigFr AsciiText compCoef8Sig\ \ componentLayout Frame componentBtnFrame\ componentBtnFrame Layout componentButtons\ componentButtons TextButton componentCancel\ componentButtons TextButton componentReset\ componentButtons Frame compCsHelpFrame\ compCsHelpFrame Label compCsHelp\ componentButtons TextButton componentHelp\ \ toplevel TopLevelShell fitOptsPopup\ fitOptsPopup Layout fitOptsLayout\ fitOptsLayout Group fitTypeGroup\ fitTypeGroup TextToggle fitTypeSimplex\ fitTypeGroup TextToggle fitTypeMarquadt\ \ fitOptsLayout Group fitParmsGroup\ fitParmsGroup Layout fitParmsLayout\ fitParmsLayout Label fitNiterLabel\ fitParmsLayout Command fitNiterMin\ fitParmsLayout Command fitNiterLdecr\ fitParmsLayout Command fitNiterSdecr\ fitParmsLayout Command fitNiterSincr\ fitParmsLayout Command fitNiterLincr\ fitParmsLayout Frame fitNiterFrame\ fitNiterFrame AsciiText fitNiterText\ fitParmsLayout Label fitTolerLabel\ fitParmsLayout Frame fitTolerFrame\ fitTolerFrame AsciiText fitTolerText\ fitParmsLayout Command fitTolerMin\ fitParmsLayout Command fitTolerLdecr\ fitParmsLayout Command fitTolerSdecr\ fitParmsLayout Command fitTolerSincr\ fitParmsLayout Command fitTolerLincr\ fitParmsLayout Command fitTolerMax\ \ fitOptsLayout Frame fitApplyFrame\ fitApplyFrame Layout fitApplyLayout\ fitApplyLayout Command fitApplyButton\ fitApplyLayout Frame chisqPlotFrame\ chisqPlotFrame Gterm chisqPlot\ fitApplyLayout Label chisqValLab\ fitApplyLayout Frame chisqFrame\ chisqFrame AsciiText chisqVal\ fitApplyLayout Label niterValLab\ fitApplyLayout Frame niterFrame\ niterFrame AsciiText niterVal\ \ fitOptsLayout Group fitSaveGroup\ fitSaveGroup Layout fitSaveLayout\ fitSaveLayout Label fitNptsLabel\ fitSaveLayout Frame fitNptsFrame\ fitNptsFrame AsciiText fitNptsText\ fitSaveLayout Command fitSaveButton\ \ fitOptsLayout Frame fitOptsButtonFrame\ fitOptsButtonFrame Layout fitOptsButtons\ fitOptsButtons Command fitOptsCancel\ fitOptsButtons Command fitOptsReset\ fitOptsButtons Command fitOptsHelp\ \ toplevel TopLevelShell wsPrefsPopup\ wsPrefsPopup Layout wsPrefsLayout\ \ wsPrefsLayout Group wsPrefsGroup\ wsPrefsGroup TextToggle wsAutoScale\ wsPrefsGroup TextToggle wsDispCur\ wsPrefsGroup TextToggle wsPopMan\ \ wsPrefsLayout Frame wsPrefsButtonFrame\ wsPrefsButtonFrame Layout wsPrefsButtons\ wsPrefsButtons Command wsPrefsApply\ wsPrefsButtons Command wsPrefsCancel\ wsPrefsButtons Command wsPrefsReset\ wsPrefsButtons Command wsPrefsHelp\ \ toplevel TopLevelShell tclCmdPopup\ tclCmdPopup Layout tclPopLayout\ tclPopLayout Frame tclCmdFrame\ tclCmdFrame Layout tclCmdLayout\ tclCmdLayout TextBox tclCmdLabel\ tclCmdLayout Frame tclCmdTxtFrame\ tclCmdTxtFrame AsciiText tclCommand\ tclPopLayout Frame tclBtnFrame\ tclBtnFrame Layout tclBtnLayout\ tclBtnLayout Command tclBtnOK\ tclBtnLayout Command tclBtnCancel\ tclBtnLayout Command tclBtnHelp\ \ toplevel TransientShell warning \ warning Layout warn \ warn Frame warnFrame \ warnFrame Layout WFlayout \ WFlayout Icon warnIcon \ WFlayout TextBox warnText \ warn TextButton warnOK \ warn TextButton warnCancel \ warn TextButton warnHelp\ \ toplevel TransientShell busy \ busy TextBox busyText\ \ toplevel Parameter uiParams\ uiParams Parameter uiContinueFit\ uiParams Parameter uiCurDir\ uiParams Parameter uiError\ uiParams Parameter uiFiles\ uiParams Parameter uiOpenStat\ uiParams Parameter uiSetDir\ uiParams Parameter uiSetHScroll\ uiParams Parameter uiSetVScroll\ uiParams Parameter uiSetWorkViewMarker\ uiParams Parameter uiSubDirs\ uiParams Parameter uiSwitchGterm\ uiParams Parameter uiNewWorkPlot\ uiParams Parameter uiCreateRangeMarker\ uiParams Parameter uiWCSTrans\ uiParams Parameter uiCompList\ uiParams Parameter uiCmpSet\ uiParams Parameter uiCmpSetType\ uiParams Parameter uiCmpSetParams\ uiParams Parameter uiCmpMark\ uiParams Parameter uiCompFuncParms\ uiParams Parameter uiUndo\ uiParams Parameter uiInitialize\ uiParams Parameter uiSpSet\ uiParams Parameter uiFit \ uiParams Parameter uiBusy \ uiParams Parameter uiSetParam *borderWidth: 0 *Command.highlightThickness: 1 *Group.innerOffset: 3 *Group.outerOffset: 7 *MenuButton*shadowWidth: 0 *TextToggle.frameWidth: 0 *TextToggle.alignment: left *TextToggle.offIcon: diamond0s *TextToggle.onIcon: diamond1s *TextToggle.highlightColor: green *Toggle.highlightThickness: 1 *MenuButton.highlightThickness: 1 *font: *helvetica*medium-r*14* *Group.font: *helvetica*bold*14* *Frame.innerOffset: 3 *Frame.outerOffset: 5 *Frame.frameWidth: 2 *workSpace.debug: False *workSpace.layout:\ vertical { 3 \ menuBarFrame < +inf -inf * > 3 \ buttonFrame < +inf -inf * > 3 \ horizontal { \ paletteFrame < * +inf - inf > \ 1 < -1 > \ vertical { \ plotPane < +inf - inf * +inf - inf > \ hScrollLayout < +inf -inf * > \ statusMsgLayout < +inf -inf * > \ }\ }\ } *menuBarFrame.frameType: raised *menuBarFrame.frameWidth: 2 *menuBarFrame.outerOffset: 0 *menuBarFrame.innerOffset: 0 *menuBar.layout: \ horizontal { 5 \ fileMenuButton 5 \ editMenuButton 5 \ viewMenuButton 5 \ winsMenuButton 5 \ funcMenuButton 5 \ optsMenuButton 50 < +inf -100% > \ } *menuBar*borderWidth: 0 *menuBar*MenuButton.borderWidth: 0 *menuBar*MenuButton.resize: false *menuBar*MenuButton.internalWidth: 2 *menuBar*SimpleMenu.borderWidth: 1 *SmeBSB.vertSpace: 10 *fileMenuButton.label: \ File\ *fileMenuButton.width: 70 *fileMenuButton.menuName: fileMenu *editMenuButton.label: \ Edit\ *editMenuButton.width: 70 *editMenuButton.menuName: editMenu *optsMenuButton.label: Options *optsMenuButton.width: 70 *optsMenuButton.menuName: optsMenu *funcMenuButton.label: Functions *funcMenuButton.width: 70 *funcMenuButton.menuName: funcMenu *viewMenuButton.label: \ View\ *viewMenuButton.width: 70 *viewMenuButton.menuName: viewMenu *winsMenuButton.label: \ Windows\ *winsMenuButton.width: 70 *winsMenuButton.menuName: winsMenu *helpMenuButton.label: \ Help\ *helpMenuButton.width: 70 *helpMenuButton.menuName: helpMenu *buttonBox.layout: \ horizontal { \ 1 \ openSpButton 0 \ openDbButton 0 \ spListButton 0 \ compButton 0 \ fitButton 0 \ undoButton 0 \ 24 \ quitButton 0 \ 8 \ helpButton \ } *buttonFrame.frameWidth: 0 *buttonFrame.outerOffset: 0 *buttonFrame.innerOffset: 0 *buttonBox*OuterOffset: 0 *buttonBox*InnerOffset: 0 *buttonBox*Command.font: *helvetica*bold-r*12* *openSpButton.label: Open\nSpectrum *openSpButton.width: 68 *openSpButton.height: 42 *openDbButton.label: Open\nComp. DB *openDbButton.width: 68 *openDbButton.height: 42 *spListButton.label: Manage\nSpectra *spListButton.width: 65 *spListButton.height: 42 *compButton.label: Manage\nComponents *compButton.width: 75 *compButton.height: 42 *fitButton.label: Manage\nFitting *fitButton.width: 65 *fitButton.height: 42 *undoButton.label: Undo *undoButton.width: 45 *undoButton.height: 42 *undoButton.sensitive: false *quitButton.label: Quit *quitButton.width: 45 *quitButton.height: 42 *helpButton.label: Help *helpButton.width: 45 *helpButton.height: 42 *paletteBox.layout: \ vertical { \ paletteLogo 4 \ modeButtonGroup 10 \ } *paletteFrame.frameType: chiseled *paletteFrame.frameWidth: 2 *paletteFrame.outerOffset: 1 *paletteFrame.innerOffset: 2 *modeButtonGroup.label: *modeButtonGroup.innerOffset: 0 *modeButtonGroup.outerOffset: 25 *modeButtonGroup*width: 50 *modeButtonGroup*height: 150 *modeButtonGroup*selectionStyle: one *modeButtonGroup*selection: 0 *modeButtonGroup.frameWidth: 0 *modeButtonGroup*TextToggle.frameWidth: 0 *modeButtonGroup*TextToggle.width: 34 *modeButtonGroup*TextToggle.height: 34 *modeButtonGroup*TextToggle.highlightThickness: 1 *paletteLogo.location: 0 0 91 42 *paletteLogo.image: ^BITMAPS/ASpecLogoC85x.xpm *zoomModeButton.label: *zoomModeButton.onIcon: ^BITMAPS/ZoomOn32.pm *zoomModeButton.offIcon: ^BITMAPS/ZoomOff32.pm *compModeButton.label: *compModeButton.onIcon: ^BITMAPS/BlocksOn32.pm *compModeButton.offIcon: ^BITMAPS/BlocksOff32.pm *rangeModeButton.label: *rangeModeButton.onIcon: ^BITMAPS/RangeOn32.pm *rangeModeButton.offIcon: ^BITMAPS/RangeOff32.pm *wsCompFuncTextLabel.label: "Component Function" *wsCompFuncTextFrame.innerOffset: 0 *wsCompFuncTextFrame.outerOffset: 0 *wsCompFuncTextFrame.frameWidth: 1 *wsCompFuncTextFrame.frameType: sunken *wsCompFuncTextFrame.borderWidth: 0 *wsCompFuncText.width: 150 *wsCompFuncText.height: 25 *wsCompFuncText.string: "" *fullPlotFrame.minsize: 20 *fullPlotFrame.frameType: sunken *fullPlotFrame.frameWidth: 1 *fullPlotFrame.borderWidth: 0 *fullPlotFrame.resizable: true *fullPlotFrame*OuterOffset: 1 *fullPlotFrame.width: 640 *fullPlotFrame.height: 54 *fullPlot.width: 640 *fullPlot.height: 40 *fullPlot.ginmodeCursor: circle *workPlotLayout.layout: \ horizontal { \ workPlotFrame < +inf -inf * +inf -inf > \ workVscroll < * +inf -inf > \ } *workPlotLayout*Minsize: 20 *workPlotLayout*FrameType: sunken *workPlotLayout*FrameWidth: 1 *workPlotLayout*BorderWidth: 0 *workPlotLayout*Resizable: true *workPlotLayout*OuterOffset: 1 *workPlotFrame.width: 640 *workPlotFrame.height: 240 *workPlot.width: 640 *workPlot.height: 240 *workVscroll.location: 0 0 20 20 *workVscroll.vertical: True *auxPlotLayout.layout: \ horizontal { \ auxPlotFrame < +inf -inf * +inf -inf > \ auxVscroll < * +inf -inf > \ } *auxPlotLayout*Minsize: 20 *auxPlotLayout*FrameType: sunken *auxPlotLayout*FrameWidth: 1 *auxPlotLayout*BorderWidth: 0 *auxPlotLayout*Resizable: true *auxPlotLayout*OuterOffset: 1 *auxPlotFrame.width: 640 *auxPlotFrame.height: 60 *auxPlot.width: 640 *auxPlot.height: 60 *auxVscroll.location: 0 0 20 20 *auxVscroll.vertical: True *hScrollLayout.layout: \ horizontal { \ wHScroll < +inf -inf * > \ hsfiller \ } *hScrollLayout.showGrip: false *hScrollLayout*Minsize: 20 *hScrollLayout*Maxsize: 20 *hScrollLayout*FrameType: sunken *hScrollLayout*FrameWidth: 2 *hScrollLayout*Resizable: false *hScrollLayout*BorderWidth: 0 *hScrollLayout*OuterOffset: 1 *wHScroll.location: 0 0 0 20 *wHScroll.vertical: false *wHScroll.height: 20 *hsfiller.width: 20 *hsfiller.height: 20 *hsfiller.frameWidth: 0 *openShell.geometry: +600+150 *openShell.title: Open File *osLayout*TextBox*shrinkToFit: true *osLayout.layout:\ vertical {\ osEnterFrame\ 5\ horizontal {\ osSubDirGroup <* +inf -0>\ osFilesGroup <+inf -0 * +inf -0>\ }\ osButtonFrame \ } *osEnterFrame.innerOffset: 3 *osEnterFrame.outerOffset: 3 *osEnterFrame.frameWidth: 2 *osEnterFrame.frameType: chiseled *osDir.height: 30 *osFilt.height: 30 *osFile.height: 30 *osEnter.layout: vertical {\ horizontal {\ osDirLabel\ osDir < +inf -inf * > \ }\ sp1 = (width osDirLabel - width osFiltLabel)\ horizontal {\ $sp1\ osFiltLabel\ osFilt < +inf -inf * > \ }\ sp2 = (width osDirLabel - width osFileLabel)\ horizontal {\ $sp2\ osFileLabel\ osFile < +inf -inf * > \ }\ } *osLabelRowCol.alignment: right *osLabelRowCol.columns: 1 *osLabelRowCol.frameWidth: 2 *osLabelRowCol.shrinkToFit: true *osDirLabel.alignment: right *osDirLabel.label: Directory: *osFiltLabel.alignment: right *osFiltLabel.label: Filter: *osFileLabel.alignment: right *osFileLabel.label: File: *osEnter*Text*scrollHorizontal: whenNeeded *osEnter*Text*Thickness: 10 *osEnter*Text*Width: 400 *osFilt*editType: edit *osFilt*string: * *osFile*editType: edit *osSubDirGroup.label: Directories *osSubDirGroup.location: 0 0 200 0 *osSubDirGroup.shrinkToFit: True *osSubDir.allowHoriz: true *osSubDir.allowVert: true *osSubDir.forceBars: false *osSubDir.height: 200 *soSubdir.resizable: false *osSubDir.useBottom: true *osSubDir.width: 100 *osSubDirList.defaultColumns: 1 *osSubDirList.forceColumns: true *osSubDirList.translations: #override\ : Set()\n\ (2): Notify()\n\ : call(noop) *osSubDirList.verticalList: true *osFilesGroup.label: Files *osFilesGroup.location: 0 0 200 0 *osFilesGroup.shrinkToFit: True *osFiles.allowHoriz: true *osFiles.allowVert: true *osFiles.forceBars: false *osFiles.height: 200 *soFiles.resizable: false *osFiles.useBottom: true *osFiles.width: 100 *osFilesList.defaultColumns: 1 *osFilesList.forceColumns: true *osFilesList.translations: #override\ : Set() call(setFileFromList)\n\ (2): Notify()\n\ : call(noop) *osFilesList.verticalList: true *osButtonFrame.outerOffset: 3 *osButtonFrame.innerOffset: 3 *osButtonFrame.frameWidth: 2 *osButtonFrame.frameType: chiseled *osButtons.layout: horizontal { \ 1 \ osOK 3 \ osCancel 3 \ osRescan \ 80 < +inf -100% > \ osHelp \ 1 \ } *osOK.label: OK *osCancel.label: Cancel *osRescan.label: Rescan *osHelp.label: Help *osHelp.sensitive: false *osButtons*TextButton.width: 65 *osButtons*TextButton.height: 25 *specListPopup.geometry: 300x200+250+150 *specListPopup.title: Working Spectra *specListLayout.debug: false *specListLayout.layout:\ vertical { \ 8 \ horizontal { \ specListGroup < +inf -inf * +inf -inf> \ specListActFrame < * +inf -inf> \ } \ specListBtnFrame \ } *specListGroup.label: Spectra *specListGroup.shrinkToFit: True *specListView.allowHoriz: True *specListView.allowVert: True *specListView.forceBars: True *specListView.height: 200 *specListView.resizable: True *specListView.useBottom: True *specListView.width: 750 *specListFrame.frameType: sunken *specListFrame.frameWidth: 1 *specList.defaultColumns: 1 *specList.forceColumns: True *specList.translations: #override\ : Set() call(sel_spec_from_list)\n\ (2): Set() call(act_spec_from_list)\n\ : Unset() call(inact_spec_from_list)\n *specList.verticalList: True *specListActFrame.frameType: chiseled *specListActFrame*TextButton.width: 65 *specListActFrame*TextButton.height: 25 *specListActLayout.layout: \ vertical { \ 2 \ specListActAdd \ specListActDelete \ specListActActive \ specListActInactive \ } *specListBtnFrame.frameType: chiseled *specListButtons*TextButton.width: 65 *specListButtons*TextButton.height: 25 *specListActAdd.label: Add *specListActDelete.label: Delete *specListActDelete.sensitive: False *specListActActive.label: Active *specListActActive.sensitive: False *specListActActive.width: 65 *specListActActive.height: 25 *specListActInactive.label: Inactive *specListActInactive.sensitive: False *specListActInactive.width: 65 *specListActInactive.height: 25 *specListButtons.layout: \ horizontal { \ 1 \ specListCancel \ 80 < +inf -100% > \ specListHelp \ 1 \ } *specListCancel.label: Cancel *specListHelp.label: Help *plotUnitsPopup.geometry: 310x380+300+450 *plotUnitsPopup.title: Plot Units *plotUnitsLayout.debug: false *plotUnitsLayout.layout:\ vertical { \ 8 \ horizontal { \ dispUnitsGroup < * -inf > \ fluxUnitsGroup < * -inf > \ } \ 5 <+inf -inf> \ plotUnitsBtnFrame \ } *plotUnitsPopup*Group.frameWidth: 2 *plotUnitsPopup*Group.frameType: chiseled *plotUnitsPopup*Group.width: 155 *plotUnitsPopup*Group.height: 345 *dispUnitsGroup.label: Dispersion Units *fluxUnitsGroup.label: Flux Units *dispUnitsGroup*width: 130 *dispUnitsGroup*height: 30 *dispUnitsGroup*selectionStyle: one *dispUnitsGroup*selection: 1 *dispUnitsPixel.label: Pixels *dispUnitsPixel.sensitive: False *dispUnitsAngstrom.label: Angstroms *dispUnitsMicron.label: Microns *dispUnitsHz.label: Hz *dispUnitsMHz.label: MHz *dispUnitsGHz.label: GHz *dispUnitsVelocity.label: Velocity *dispUnitsVelocity.sensitive: False *fluxUnitsGroup*width: 130 *fluxUnitsGroup*height: 30 *fluxUnitsGroup*selectionStyle: one *fluxUnitsGroup*selection: 1 *fluxUnitsCounts.label: Counts *fluxUnitsCounts.sensitive: False *fluxUnitsFlambda.label: F-Lambda *fluxUnitsFNu.label: F-Nu *fluxUnitsPhotLam.label: Phot-Lambda *fluxUnitsPhotNu.label: Phot-Nu *fluxUnitsJy.label: Jy *fluxUnitsMJy.label: MJy *fluxUnitsLamFlam.label: Lam-F-Lambda *fluxUnitsLamFlam.sensitive: False *fluxUnitsNuFNu.label: Nu-F-Nu *fluxUnitsNuFNu.sensitive: False *plotUnitsBtnFrame.outerOffset: 3 *plotUnitsBtnFrame.innerOffset: 2 *plotUnitsBtnFrame.frameWidth: 2 *plotUnitsBtnFrame.frameType: chiseled *plotUnitsBtnLayout*Command.resize: false *plotUnitsBtnLayout*Command.width: 80 *plotUnitsBtnLayout.layout: horizontal { \ 1 \ plotUnitsOK \ 3 \ plotUnitsCancel \ 3 \ plotUnitsReset \ 80 < +inf -100% > \ plotUnitsHelp \ 1 \ } *plotUnitsOK.label: \ Apply\ *plotUnitsCancel.label: Cancel *plotUnitsReset.label: \ Reset\ *plotUnitsHelp.label: \ Help\ \ *plotUnitsHelp.sensitive: false *componentPopup.geometry: 600x580+50+50 *componentPopup.title: Component Definitions *componentLayout.debug: false *componentLayout.layout:\ vertical { \ 5 \ horizontal { \ compActGroup < * +inf -inf > \ compListGroup < +inf -inf * +inf -inf > \ } \ compFamilyGroup \ compAttrGroup < +inf -inf * +inf -inf > \ componentBtnFrame \ } *compActLayout.layout: \ vertical { \ 10 \ horizontal { \ compFuncButton \ compFuncTextFrame \ 10 < +inf -100% > \ } \ 10 \ horizontal { \ compImportButton \ compNewButton \ compNewCopyButton \ } \ horizontal { \ compEditButton \ compChangeButton \ compDeleteButton \ } \ 15 \ compViewLabel \ compViewGroup \ } *compActGroup.frameType: chiseled *compActGroup.width: 400 *compActGroup.height: 190 *compImportButton.label: Import *compImportButton.sensitive: True *compNewButton.label: New *compNewButton.sensitive: True *compNewCopyButton.label: New Copy *compNewCopyButton.sensitive: False *compNewCopyButton*width: 80 *compEditButton.label: Edit *compEditButton.sensitive: False *compApplyButton.label: Apply *compApplyButton.sensitive: False *compChangeButton.label: Apply *compChangeButton.sensitive: False *compDeleteButton.label: Delete *compDeleteButton.sensitive: False *compViewGroup.Label: "" *compViewGroup.frameWidth: 0 *compViewGroup.frameType: chiseled *compViewGroup.outerOffset: 0 *compViewGroup.innerOffset: 0 *compViewGroup.selection: 0 *compViewGroup*height: 30 *compViewGroup*frameWidth: 0 *compViewGroup*innerOffset: 1 *compViewGroup*outerOffset: 1 *compViewGroup*selectionStyle: one *compViewGroup*width: 88 *compViewLabel.label: View Attribute Fields: *compValueButton.label: Value *compConstrButton.label: Constraints *compAllButton.label: All Fields *compActLayout*TextButton*width: 80 *compActLayout*TextButton*height: 25 *compFuncLabel.label: Function: *compFuncTextFrame.innerOffset: 0 *compFuncTextFrame.outerOffset: 0 *compFuncTextFrame.frameWidth: 1 *compFuncTextFrame.frameType: sunken *compFuncTextFrame.borderWidth: 0 *compFuncText.width: 150 *compFuncText.height: 25 *compFuncText.string: "" *compFuncButton.label: Function... *compFuncMenuButton.borderWidth: 0 *compFuncMenuButton.menuName: funcButtonMenu *compFuncMenuButton*SimpleMenu.borderWidth: 1 *compFuncPopup.geometry: 225x350+300+20 *compFuncPopup.title: Component Functions *compFuncLayout.debug: false *compFuncLayout.layout:\ vertical { \ 8 \ compFuncsGroup \ compFuncBtnFrame \ } *compFuncsGroup.label: Component\ Functions *compFuncsGroup.frameWidth: 2 *compFuncsGroup.frameType: chiseled *compFuncsGroup.width: 222 *compFuncsGroup.height: 300 *compFuncsGroup*TextToggle*width: 200 *compFuncsGroup*TextToggle*height: 22 *compFuncsGroup*selectionStyle: one *compFuncsGroup.selection: 0 *contFuncsLabel.label: Continuum\ Functions *contFuncsLINEAR.label: Linear *contFuncsPLANCK.label: Blackbody *contFuncsPWRLAW.label: Powerlaw *contFuncsBPWRLAW.label: Broken\ Powerlaw *contFuncsPOLY.label: Polynomial *lineFuncsLabel.label: Line\ Functions *lineFuncsGAUSSIAN.label: Gaussian\ Emission *lineFuncsABGAUSS.label: Gaussian\ Absorption *lineFuncsEXPONEN.label: Exponential *lineFuncsLORENTZ.label: Modified\ Lorentzian *compFuncBtnFrame.outerOffset: 3 *compFuncBtnFrame.innerOffset: 2 *compFuncBtnFrame.frameWidth: 2 *compFuncBtnFrame.frameType: chiseled *compFuncBtnLayout*Command.resize: false *compFuncBtnLayout*Command.width: 80 *compFuncBtnLayout.layout: horizontal { \ 1 \ compFuncCancel \ 80 < +inf -100% > \ compFuncHelp \ 1 \ } *compFuncOK.label: \ Apply\ *compFuncCancel.label: Cancel *compFuncReset.label: \ Reset\ *compFuncHelp.label: \ Help\ \ *compFuncHelp.sensitive: false *compListGroup.label: Components *compListGroup.shrinkToFit: True *compListGroup.height: 190 *compListView.allowHoriz: True *compListView.allowVert: True *compListView.forceBars: True *compListView.height: 600 *compListView.resizable: True *compListView.useBottom: True *compListView.width: 750 *compListFrame.frameType: sunken *compListFrame.frameWidth: 1 *compList.defaultColumns: 1 *compList.forceColumns: True *compList.translations: #override\ : Set() call(sel_comp_from_list)\n\ (2): Set() call(edit_comp_from_list)\n\ : Unset() call(desel_comp_from_list)\n *compList.verticalList: True *componentBtnFrame.frameType: chiseled *componentBtnFrame.frameWidth: 2 *componentBtnFrame.height: 25 *componentButtons*TextButton.width: 65 *componentButtons*TextButton.height: 25 *componentButtons.layout: \ horizontal { \ 1 \ componentCancel \ 1 \ componentReset \ 1 \ compCsHelpFrame < +inf -100% *> \ componentHelp \ 1 \ } *compCsHelpFrame.frameType: Sunken *compCsHelpFrame.frameWidth: 1 *compCsHelpFrame.innerOffset: 0 *compCsHelpFrame.outerOffset: 0 *compCsHelpFrame.width: 400 *compCsHelpFrame.height: 25 *compCsHelp.justify: left *compCsHelp.height: 25 *compCsHelp.label: *componentCancel.label: Cancel *componentReset.label: Reset *componentReset.sensitive: False *componentHelp.label: Help *compFamilyGroup.label: Family *compFamilyGroup*shrinkToFit: False *compFamilyGroup.frameWidth: 2 *compFamilyGroup.frameType: chiseled *compFamilyGroup.width: 750 *compFamilyGroup.height: 60 *compFamilyGroup.innerOffset: 0 *compFamilyFrame.frameType: sunken *compFamilyFrame.frameWidth: 1 *compFamilyFrame.height: 30 *compFamilyFrame.outerOffset: 2 *compFamily*width: 750 *compFamily*height: 55 *compFamily*editType: edit *compAttrGroup.width: 250 *compAttrGroup.height: 275 *compAttrGroup*AsciiText*editType: edit *compAttrBox.width: 750 *compAttrBox.height: 150 *compAttrBox*Frame*innerOffset: 0 *compAttrBox*Frame*outerOffset: 0 *compAttrBox*Frame*frameWidth: 1 *compAttrBox*Frame*frameType: sunken *compAttrBox*Frame*borderWidth: 0 *compAttrBox*Label*justify: right *compAttrBox*AsciiText*width: 80 *compAttrBox*AsciiText*height: 30 *compAttrBox*AsciiText*editType: edit *compAttrBox*Frame.resize: false *compAttrBox*AsciiText.resize: false *compAttrBox.hSpace: 0 *compAttrValBox.vSpace: 0 *compAttrMinBox.vSpace: 0 *compAttrMaxBox.vSpace: 0 *compAttrStepBox.vSpace: 0 *compAttrTolBox.vSpace: 0 *compAttrSigBox.vSpace: 0 *compAttrConstrBox.vSpace: 0 *compAttrExprBox.vSpace: 0 *compAttrValBox*InnerOffset: 0 *compAttrValBox*OuterOffset: 0 *compAttrValBox*Frame*frameWidth: 1 *compAttrValBox*Frame*frameType: sunken *compAttrValBox*Frame*borderWidth: 0 *compAttrValBox*AsciiText*width: 80 *compAttrValBox*AsciiText*height: 30 *compAttrValBox*AsciiText.editType: edit *compAttrNameBox*Label*justify: right *compTitleName*label*width: 95 *compTitleName*label*height: 23 *compCoef1Name*height: 23 *compCoef1Name.fromVert: compTitleName *compCoef2Name*height: 23 *compCoef2Name.fromVert: compCoef1Name *compCoef3Name*height: 23 *compCoef3Name.fromVert: compCoef2Name *compCoef4Name*height: 23 *compCoef4Name.fromVert: compCoef3Name *compCoef5Name*height: 23 *compCoef5Name.fromVert: compCoef4Name *compCoef6Name*height: 23 *compCoef6Name.fromVert: compCoef5Name *compCoef7Name*height: 23 *compCoef7Name.fromVert: compCoef6Name *compCoef8Name*height: 23 *compCoef8Name.fromVert: compCoef7Name *compTitleVal.justify: left *compTitleMin.justify: left *compTitleMax.justify: left *compTitleStep.justify: left *compTitleTol.justify: left *compTitleSig.justify: left *compTitleConstr.justify: left *compTitleExpr.justify: left *compCoef1Val.width: 75 *compCoef1Min.width: 75 *compCoef1Max.width: 75 *compCoef1Step.width: 75 *compCoef1Tol.width: 75 *compCoef1Sig.width: 75 *compCoef1Constr.width: 75 *compCoef1Expr.width: 175 *compCoef1ValFr.width: 75 *compCoef1MinFr.width: 75 *compCoef1MaxFr.width: 75 *compCoef1StepFr.width: 75 *compCoef1TolFr.width: 75 *compCoef1SigFr.width: 75 *compCoef1ConstrFr.width: 75 *compCoef1ExprFr.width: 175 *compCoef2Val.width: 75 *compCoef2Min.width: 75 *compCoef2Max.width: 75 *compCoef2Step.width: 75 *compCoef2Tol.width: 75 *compCoef2Sig.width: 75 *compCoef2Constr.width: 75 *compCoef2Expr.width: 175 *compCoef2ValFr.width: 75 *compCoef2MinFr.width: 75 *compCoef2MaxFr.width: 75 *compCoef2StepFr.width: 75 *compCoef2TolFr.width: 75 *compCoef2SigFr.width: 75 *compCoef2ConstrFr.width: 75 *compCoef2ExprFr.width: 175 *compCoef3Val.width: 75 *compCoef3Min.width: 75 *compCoef3Max.width: 75 *compCoef3Step.width: 75 *compCoef3Tol.width: 75 *compCoef3Sig.width: 75 *compCoef3Constr.width: 75 *compCoef3Expr.width: 175 *compCoef3ValFr.width: 75 *compCoef3MinFr.width: 75 *compCoef3MaxFr.width: 75 *compCoef3StepFr.width: 75 *compCoef3TolFr.width: 75 *compCoef3SigFr.width: 75 *compCoef3ConstrFr.width: 75 *compCoef3ExprFr.width: 175 *compCoef4Val.width: 75 *compCoef4Min.width: 75 *compCoef4Max.width: 75 *compCoef4Step.width: 75 *compCoef4Tol.width: 75 *compCoef4Sig.width: 75 *compCoef4Constr.width: 75 *compCoef4Expr.width: 175 *compCoef4ValFr.width: 75 *compCoef4MinFr.width: 75 *compCoef4MaxFr.width: 75 *compCoef4StepFr.width: 75 *compCoef4TolFr.width: 75 *compCoef4SigFr.width: 75 *compCoef4ConstrFr.width: 75 *compCoef4ExprFr.width: 175 *compCoef5Val.width: 75 *compCoef5Min.width: 75 *compCoef5Max.width: 75 *compCoef5Step.width: 75 *compCoef5Tol.width: 75 *compCoef5Sig.width: 75 *compCoef5Constr.width: 75 *compCoef5Expr.width: 175 *compCoef5ValFr.width: 75 *compCoef5MinFr.width: 75 *compCoef5MaxFr.width: 75 *compCoef5StepFr.width: 75 *compCoef5TolFr.width: 75 *compCoef5SigFr.width: 75 *compCoef5ConstrFr.width: 75 *compCoef5ExprFr.width: 175 *compCoef6Val.width: 75 *compCoef6Min.width: 75 *compCoef6Max.width: 75 *compCoef6Step.width: 75 *compCoef6Tol.width: 75 *compCoef6Sig.width: 75 *compCoef6Constr.width: 75 *compCoef6Expr.width: 175 *compCoef6ValFr.width: 75 *compCoef6MinFr.width: 75 *compCoef6MaxFr.width: 75 *compCoef6StepFr.width: 75 *compCoef6TolFr.width: 75 *compCoef6SigFr.width: 75 *compCoef6ConstrFr.width: 75 *compCoef6ExprFr.width: 175 *compCoef7Val.width: 75 *compCoef7Min.width: 75 *compCoef7Max.width: 75 *compCoef7Step.width: 75 *compCoef7Tol.width: 75 *compCoef7Sig.width: 75 *compCoef7Constr.width: 75 *compCoef7Expr.width: 175 *compCoef7ValFr.width: 75 *compCoef7MinFr.width: 75 *compCoef7MaxFr.width: 75 *compCoef7StepFr.width: 75 *compCoef7TolFr.width: 75 *compCoef7SigFr.width: 75 *compCoef7ConstrFr.width: 75 *compCoef7ExprFr.width: 175 *compCoef8Val.width: 75 *compCoef8Min.width: 75 *compCoef8Max.width: 75 *compCoef8Step.width: 75 *compCoef8Tol.width: 75 *compCoef8Sig.width: 75 *compCoef8Constr.width: 75 *compCoef8Expr.width: 175 *compCoef8ValFr.width: 75 *compCoef8MinFr.width: 75 *compCoef8MaxFr.width: 75 *compCoef8StepFr.width: 75 *compCoef8TolFr.width: 75 *compCoef8SigFr.width: 75 *compCoef8ConstrFr.width: 75 *compCoef8ExprFr.width: 175 *compTitleStep*justify: left *compTitleTol*justify: left *compTitleSig*justify: left *compTitleConstr*justify: left *compTitleExpr*justify: left *compTitleName.label: \ *compTitleName*width: 80 *compTitleVal.label: Value *compTitleMin.label: Minimum *compTitleMin*width: 80 *compTitleMin*justify: left *compTitleMax.label: Maximum *compTitleMax*width: 80 *compTitleMax*justify: left *compTitleStep.label: Step Size *compTitleStep*width: 80 *compTitleTol.label: Tolerance *compTitleTol*width: 80 *compTitleSig.label: Sigma Err. *compTitleSig*width: 80 *compTitleConstr.label: Constraint *compTitleConstr*width: 80 *compTitleExpr.label: Expression *compTitleExpr*width: 80 *fitOptsPopup.geometry: 440x420+300+200 *fitOptsPopup.title: Fitting Options *fitOptsLayout.layout:\ vertical {\ 5 \ fitTypeGroup \ fitParmsGroup \ fitApplyFrame <+inf -inf * +inf -inf> \ fitSaveGroup \ 3 <+inf -inf> \ fitOptsButtonFrame \ } *fitApplyLayout.layout: \ horizontal { \ vertical { 5 fitApplyButton 5 } \ 5 \ chisqPlotFrame <+inf -inf * +inf -inf> \ vertical { \ horizontal { chisqValLab chisqFrame } \ horizontal { niterValLab niterFrame } \ } \ } *fitOptsLayout*Group.frameWidth: 2 *fitOptsLayout*Group.frameType: chiseled *fitOptsLayout*Group.width: 425 *fitOptsLayout*Group.outerOffset: 7 *fitOptsLayout*Group.innerOffset: 5 *fitApplyFrame.frameType: Chiseled *fitApplyFrame.frameWidth: 2 *fitApplyFrame.outerOffset: 7 *fitApplyFrame.width: 425 *fitApplyFrame.height: 115 *fitApplyFrame.innerOffset: 5 *chisqPlotFrame.frameType: Sunken *chisqPlotFrame.frameWidth: 1 *chisqPlotFrame.outerOffset: 0 *chisqPlot.height: 50 *chisqPlot.width: 225 *chisqFrame.frameType: Sunken *chisqFrame.frameWidth: 1 *chisqFrame.outerOffset: 0 *chisqFrame.width: 50 *chisqFrame.height: 35 *chisqValLab.label: Chi Sq. *chisqValLab.width: 40 *chisqVal.width: 50 *chisqVal.height: 25 *niterFrame.frameType: Sunken *niterFrame.frameWidth: 1 *niterFrame.outerOffset: 0 *niterFrame.width: 50 *niterFrame.height: 35 *niterValLab.label: # Iter. *niterValLab.width: 40 *niterVal.width: 50 *niterVal.height: 25 *fitSaveLayout.layout: \ horizontal { \ vertical { 3 fitSaveButton 3 } 5 \ fitNptsLabel \ fitNptsFrame \ } *fitApplyFrame.height: 100 *fitApplyFrame*shrinkToFit: True *fitApplyButton.label: Perform\nFit *fitApplyButton.sensitive: true *fitSaveGroup.label: Save Fit as Spectrum *fitSaveGroup*shrinkToFit: True *fitSaveGroup.height: 70 *fitNptsLabel.label: \Number of Points: *fitNptsLabel.width: 80 *fitNptsFrame.frameWidth: 1 *fitNptsFrame.outerOffset: 0 *fitNptsFrame.innerOffset: 0 *fitNptsFrame.frameType: Sunken *fitNptsFrame.shrinkToFit: True *fitNptsFrame.height: 35 *fitNptsText.width: 60 *fitNptsText*editType: edit *fitNptsText.height: 25 *fitSaveButton.label: Save *fitSaveButton.sensitive: true *fitTypeGroup.label: Fit Type *fitTypeGroup.height: 60 *fitTypeGroup*shrinkToFit: True *fitTypeGroup*selectionStyle: one *fitTypeGroup.selection: 0 *fitTypeSimplex.label: \ Simplex *fitTypeSimplex*width: 100 *fitTypeSimplex*height: 30 *fitTypeMarquadt.label: \ Marquadt *fitTypeMarquadt*width: 100 *fitTypeMarquadt*height: 30 *fitParmsLayout.layout: \ vertical {\ 3\ horizontal {\ 3\ fitNiterLabel 3\ fitNiterFrame 1 \ vertical { 3 horizontal { \ fitNiterMin 1 \ fitNiterLdecr 1 \ fitNiterSdecr 1 \ fitNiterSincr 1 \ fitNiterLincr 3 \ 3 } } \ }\ 3\ horizontal {\ 3\ fitTolerLabel 3\ fitTolerFrame 1 \ vertical { 3 horizontal { \ fitTolerMin 1 \ fitTolerLdecr 1 \ fitTolerSdecr 1 \ fitTolerSincr 1 \ fitTolerLincr 1 \ fitTolerMax 3\ 3 } } \ }\ 3\ } *fitParmsGroup.label: Fit Parameters *fitParmsGroup*shrinkToFit: True *fitParmsGroup.height: 120 *fitParmsLayout*Frame*outerOffset: 0 *fitParmsLayout*Frame*frameType: Sunken *fitParmsLayout*Frame*frameWidth: 1 *fitNiterFrame.width: 60 *fitNiterFrame.height: 35 *fitNiterLabel.label: Max. Iter.:\ *fitNiterLabel.width: 70 *fitNiterText.width: 60 *fitNiterText*editType: edit *fitNiterText.height: 25 *fitTolerFrame.width: 60 *fitTolerFrame.height: 35 *fitTolerLabel.label: Tolerance: *fitTolerLabel.width: 70 *fitTolerText.width: 60 *fitTolerText*editType: edit *fitTolerText.height: 25 *fitOptsButtonFrame.frameType: Chiseled *fitOptsButtonFrame.frameWidth: 2 *fitOptsButtonFrame.outerOffset: 7 *fitOptsButtonFrame.width: 425 *fitOptsButtonFrame.innerOffset: 2 *fitOptsButtons*Command.resize: false *fitOptsButtons*Command.width: 80 *fitOptsButtons.layout: horizontal { \ 1 \ fitOptsCancel \ 3 \ fitOptsReset \ 80 < +inf -100% > \ fitOptsHelp \ 1 \ } *fitOptsCancel.label: Cancel *fitOptsReset.label: \ Reset\ *fitOptsHelp.label: \ Help\ *fitOptsHelp.sensitive: false *wsPrefsPopup.geometry: 250x250+300+200 *wsPrefsPopup.title: Workspace Preferences *wsPrefsLayout.layout:\ vertical {\ 5 \ wsPrefsGroup \ 10 <+inf -inf>\ wsPrefsButtonFrame \ } *wsPrefsGroup.label: *wsPrefsGroup.frameWidth: 2 *wsPrefsGroup.frameType: chiseled *wsPrefsGroup.width: 300 *wsPrefsGroup.height: 150 *wsPrefsGroup.outerOffset: 7 *wsPrefsGroup.innerOffset: 5 *wsPrefsGroup*selectionStyle: multi *wsAutoScale.label: \ Autoscale on visible data? *wsAutoScale*width: 200 *wsAutoScale*height: 30 *wsDispCur.label: \ Update cursor coordinates? *wsDispCur*width: 200 *wsDispCur*height: 30 *wsPopMan.label: \ Pop up mode managers? *wsPopMan*width: 200 *wsPopMan*height: 30 *wsPrefsButtons.layout: horizontal { \ 1 \ wsPrefsApply \ 3 \ wsPrefsCancel \ 3 \ wsPrefsReset \ 80 < +inf -100% > \ wsPrefsHelp \ 1 \ } *wsPrefsButtonFrame.frameType: Chiseled *wsPrefsButtonFrame.frameWidth: 2 *wsPrefsButtonFrame.outerOffset: 7 *wsPrefsButtonFrame.width: 200 *wsPrefsButtonFrame.innerOffset: 2 *wsPrefsButtons*Command.resize: false *wsPrefsButtons*Command.width: 80 *wsPrefsApply.label: Apply *wsPrefsCancel.label: Cancel *wsPrefsReset.label: Reset *wsPrefsHelp.label: Help *wsPrefsHelp.sensitive: false *tclCmdPopup.geometry: +350+250 *tclCmdPopup.title: Tcl Command *tclCmdFrame.innerOffset: 3 *tclCmdFrame.outerOffset: 3 *tclCmdFrame.frameWidth: 2 *tclCmdFrame.frameType: chiseled *tclBtnFrame.innerOffset: 3 *tclBtnFrame.outerOffset: 3 *tclBtnFrame.frameWidth: 2 *tclBtnFrame.frameType: chiseled *tclPopLayout.layout:\ vertical {\ tclCmdFrame\ tclBtnFrame\ } *tclCmdLayout.layout:\ horizontal {\ tclCmdLabel\ tclCmdTxtFrame\ } *tclBtnLayout.layout:\ horizontal {\ 3\ tclBtnOK\ 3\ tclBtnCancel\ 10 <+inf -inf>\ tclBtnHelp\ 3\ } *tclCmdTxtFrame.frameWidth: 1 *tclCmdTxtFrame.frameType: sunken *tclCmdLabel.label: Tcl Command: *tclCmdLabel.shrinkToFit: true *tclCommand*editType: edit *tclCommand*scrollHorizontal: whenNeeded *tclCommand*string: *tclCommand*Thickness: 5 *tclCommand*width: 600 *tclCommand*height: 30 *tclBtnOK.label: OK *tclBtnOK.width: 65 *tclBtnCancel.label: Cancel *tclBtnHelp.label: Help *tclBtnHelp.sensitive: false *busy.geometry: +400+300 *warning.geometry: +400+300 *warning*Layout.debug: False *warning*TextBox.frameWidth: 0 *warning*TextBox.background: gray *warning*TextButton.frameWidth: 2 *warning*TextButton.width: 40 *warning*TextButton.height: 25 *warn.layout: vertical { \ 5 < -5 > \ horizontal { \ 5 < -5 > \ warnFrame < +inf * +inf > \ 5 < -5 > \ } \ 1 < -1 > \ horizontal { \ 5 < -5 > \ warnOK < +inf * > \ 5 < +inf -5 > \ warnCancel < +inf * > \ 5 < +inf -5 > \ warnHelp < +inf * > \ 5 < -5 > \ } \ 1 < -1 > \ } *WFlayout.layout: \ horizontal { \ 5 < -5 > \ vertical { \ 5 < +inf -5 > \ warnIcon \ 5 < +inf -5 > \ } \ 5 < -5 > \ warnText < +inf -inf * +inf -inf > \ 5 < -5 > \ } *warnLabel.label: Warning *warnLabel.width: 280 *warnLabel.height: 20 *warnFrame.frameType: sunken *warnFrame.frameWidth: 2 *warnIcon.location: 0 0 40 40 *warnIcon.image: WARNING *warnText.label: generic warning text *warnText.width: 250 *warnText.height: 60 *warnOK.label: OK *warnCancel.label: Cancel *warnHelp.label: Help *warnHelp.sensitive: False *busyText.label: Busy *busyText.width: 60 *busyText.height: 60 *Gterm*color0: white *Gterm*color1: black *Gterm*color2: red *Gterm*color3: green *Gterm*color4: blue *Gterm*color5: yellow *Gterm*color6: cyan *Gterm*color7: magenta *Gterm*color8: gray *Gterm*color9: maroon *statusMsgLayout*Frame.shrinkToFit: False *statusMsgLayout*Frame.frameWidth: 1 *statusMsgLayout*Frame.frameType: sunken *statusMsgLayout*Frame.outerOffset: 1 *statusMsgLayout.layout: \ horizontal {\ xCoordFrame\ yCoordFrame\ csHelpFrame <+inf -100% *> \ } *xCoordTextFrame.resize: false *xCoordText.label: X Coord *xCoordText.justify: left *xCoordText.resize: false *xCoordText.width: 90 *yCoordTextFrame.resize: false *yCoordText.label: Y Coord *yCoordText.justify: left *yCoordText.resize: false *yCoordText.width: 90 *csHelpFrame*width: 480 *csHelpText.label: Help *csHelpText*height: 18 *csHelpText*width: 400 *csHelpText.justify: left *workPlot.translations: \#override \ : call(show_wcs,$x,$y) track-cursor()\n\ : call(change_gterm,$name) *auxPlot.translations: \#override \ : call(show_wcs,$x,$y) track-cursor()\n\ : call(change_gterm,$name) *fullPlot.translations: \#override \ : call(change_gterm,$name)\n\ : track-cursor() } # Create the Objects createObjects # Initialize icons. createBitmap logo 80 38 { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x01,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x03,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x18,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x06,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0c,0x04,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x0c,0x0c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x08,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x08,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x06,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x10,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x30,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x02,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x20,0x00, 0xf8,0x03,0x00,0x00,0x00,0x00,0x00,0x03,0x60,0x00,0xff,0x07,0x00,0x00,0x00, 0x00,0x00,0x01,0x60,0x80,0x07,0x0c,0x00,0x00,0x00,0x00,0x00,0x01,0x40,0xe0, 0x01,0x06,0x00,0x00,0x00,0x00,0x80,0x01,0xc0,0x70,0x80,0x03,0x00,0x00,0x00, 0x00,0x80,0x01,0xc0,0x38,0xf0,0x01,0x00,0x00,0x00,0x00,0x80,0x00,0x80,0x18, 0x3e,0x60,0x0f,0x0e,0x0c,0x00,0xc0,0x00,0x80,0xf9,0x0f,0xe0,0x0d,0x0f,0x0f, 0x00,0xc0,0x00,0x80,0xff,0x3f,0xf0,0x88,0x8d,0x09,0x00,0x40,0x00,0xfc,0x03, 0xfc,0x70,0xcc,0xcc,0x0c,0x00,0x60,0xe0,0x0f,0x02,0xc0,0x31,0x6c,0x66,0x08, 0x00,0x60,0x7f,0x00,0xf6,0x81,0x19,0xf6,0x23,0x00,0x00,0xf8,0x03,0x00,0xfe, 0x81,0x19,0xf3,0x31,0x00,0xc0,0x3f,0x00,0x80,0x0f,0xc0,0x8d,0x73,0x10,0x00, 0xfe,0x18,0x00,0xc0,0x09,0xe0,0xcc,0x18,0x18,0x00,0x06,0x08,0x00,0xc0,0x18, 0x7c,0x7e,0x18,0x0b,0x00,0x00,0x0c,0x00,0xc0,0xb0,0x0f,0x3e,0x98,0x89,0x01, 0x00,0x06,0x00,0x80,0xff,0x03,0x0f,0xf8,0xf8,0x00,0x00,0x03,0x00,0x00,0xfe, 0x01,0x03,0x30,0x70,0x00,0x80,0x01,0x00,0x00,0x00,0x87,0x01,0x00,0x00,0x00, 0xc0,0x00,0x00,0x00,0x00,0xfc,0x01,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x00, 0xf0,0xff,0xff,0xff,0x7f,0x1c,0x00,0x00,0x00,0x00,0xc0,0xfc,0xff,0xff,0x7f, 0x06,0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00} #send paletteLogo set bitmap logo createBitmap menuButton 11 9 { 0xff,0x07,0xfe,0x03,0xfc,0x01,0xf8,0x00,0x70,0x00,0x20,0x00,0x00,0x00,0xfe, 0x03,0xfe,0x03} createBitmap minVal 17 17 { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x30, 0x18, 0x00, 0x30, 0x1c, 0x00, 0x30, 0x1e, 0x00, 0x30, 0x1f, 0x00, 0xb0, 0x1f, 0x00, 0x30, 0x1f, 0x00, 0x30, 0x1e, 0x00, 0x30, 0x1c, 0x00, 0x30, 0x18, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00} send fitNiterMin set bitmap minVal send fitTolerMin set bitmap minVal createBitmap rewind 17 17 { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x00, 0xc0, 0x60, 0x00, 0xe0, 0x70, 0x00, 0xf0, 0x78, 0x00, 0xf8, 0x7c, 0x00, 0xfc, 0x7e, 0x00, 0xf8, 0x7c, 0x00, 0xf0, 0x78, 0x00, 0xe0, 0x70, 0x00, 0xc0, 0x60, 0x00, 0x80, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00} send fitNiterLdecr set bitmap rewind send fitTolerLdecr set bitmap rewind createBitmap reverse 17 17 { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x06, 0x00, 0x00, 0x07, 0x00, 0x80, 0x07, 0x00, 0xc0, 0x07, 0x00, 0xe0, 0x07, 0x00, 0xc0, 0x07, 0x00, 0x80, 0x07, 0x00, 0x00, 0x07, 0x00, 0x00, 0x06, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00} send fitNiterSdecr set bitmap reverse send fitTolerSdecr set bitmap reverse createBitmap forward 17 17 { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0xc0, 0x00, 0x00, 0xc0, 0x01, 0x00, 0xc0, 0x03, 0x00, 0xc0, 0x07, 0x00, 0xc0, 0x0f, 0x00, 0xc0, 0x07, 0x00, 0xc0, 0x03, 0x00, 0xc0, 0x01, 0x00, 0xc0, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00} send fitNiterSincr set bitmap forward send fitTolerSincr set bitmap forward createBitmap fastForward 17 17 { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x0c, 0x06, 0x00, 0x1c, 0x0e, 0x00, 0x3c, 0x1e, 0x00, 0x7c, 0x3e, 0x00, 0xfc, 0x7e, 0x00, 0x7c, 0x3e, 0x00, 0x3c, 0x1e, 0x00, 0x1c, 0x0e, 0x00, 0x0c, 0x06, 0x00, 0x04, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00} send fitNiterLincr set bitmap fastForward send fitTolerLincr set bitmap fastForward createBitmap maxVal 17 17 { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x30, 0x18, 0x00, 0x70, 0x18, 0x00, 0xf0, 0x18, 0x00, 0xf0, 0x19, 0x00, 0xf0, 0x1b, 0x00, 0xf0, 0x19, 0x00, 0xf0, 0x18, 0x00, 0x70, 0x18, 0x00, 0x30, 0x18, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00} send fitTolerMax set bitmap maxVal set workPlotTrans(comphide) {#override ,: call(new_component_marker,$name,$x,$y) m_create() : call(noop) track-cursor() : call(change_gterm,$name) c: call(specify_components) f: call(popup_compfunc) h: call(refresh_plots) s: call(popupSpecList) u: call(popup_units) w: call(wsprefs_popup) } set workPlotTrans(compshow) {#override ,: call(new_component_marker,$name,$x,$y) m_create() : call(show_wcs,$x,$y) track-cursor() : call(change_gterm,$name) c: call(specify_components) f: call(popup_compfunc) h: call(refresh_plots) s: call(popupSpecList) u: call(popup_units) w: call(wsprefs_popup) } set workPlotTrans(zoomhide) {#override : call(noop) ,: call(make_viewmarker,$name,$x,$y) m_create() ,: call(zoom_full) ,: call(zoom_in,$x,$y) ,: call(zoom_out,$x,$y) : call(change_gterm,$name) : call(noop) track-cursor() a: call(zoom_auto) h: call(refresh_plots) r: call(zoom_full) o: call(zoom_out,$x,$y) s: call(popupSpecList) u: call(popup_units) w: call(wsprefs_popup) z: call(zoom_in,$x,$y) } set workPlotTrans(zoomshow) {#override : call(noop) ,: call(make_viewmarker,$name,$x,$y) m_create() ,: call(zoom_full) ,: call(zoom_in,$x,$y) ,: call(zoom_out,$x,$y) : call(change_gterm,$name) : call(show_wcs,$x,$y) track-cursor() a: call(zoom_auto) h: call(refresh_plots) r: call(zoom_full) o: call(zoom_out,$x,$y) s: call(popupSpecList) u: call(popup_units) w: call(wsprefs_popup) z: call(zoom_in,$x,$y) } set workPlotTrans(rangehide) {#override ,: call(new_interval_marker,$name,$x,$y) m_create() : call(noop) track-cursor() : call(change_gterm,$name) h: call(refresh_plots) s: call(popupSpecList) u: call(popup_units) w: call(wsprefs_popup) } set workPlotTrans(rangeshow) {#override ,: call(new_interval_marker,$name,$x,$y) m_create() : call(show_wcs,$x,$y) track-cursor() : call(change_gterm,$name) s: call(popupSpecList) u: call(popup_units) w: call(wsprefs_popup) } set workPlotTrans(selsphide) {#override : call(noop) : call(noop) track-cursor() : call(change_gterm,$name) s: call(popupSpecList) u: call(popup_units) w: call(wsprefs_popup) } set workPlotTrans(selspshow) {#override : call(noop) : call(show_wcs,$x,$y) track-cursor() : call(change_gterm,$name) s: call(popupSpecList) u: call(popup_units) w: call(wsprefs_popup) } # Text for the File Menus set fileMenuCont(init) { {"Open Spectrum..." f.exec "popupOpenSpect"} {"Open Comp. DB..." f.exec "popupOpenDB" sensitive false} {blank f.line} {"Save Spectrum..." f.exec "popupSaveSpec" sensitive false} {"Save Database" f.exec "saveDB" sensitive false} {"Save DB As..." f.exec "popupSaveDB" sensitive false} {"Save Fit As..." f.exec "popupSaveFit" sensitive false} {blank f.line} {blank f.line} {Quit f.exec "quit" accelerator q} } set fileMenuCont(spopen) { {"Open Spectrum..." f.exec "popupOpenSpect"} {"Open Comp. DB..." f.exec "popupOpenDB"} {blank f.line} {"Save Spectrum..." f.exec "popupSaveSpec" sensitive false} {"Save Database" f.exec "saveDB" sensitive false} {"Save DB As..." f.exec "popupSaveDB" sensitive false} {"Save Fit As..." f.exec "popupSaveFit" sensitive false} {blank f.line} {blank f.line} {Quit f.exec "quit"} } set fileMenuCont(dbopen) { {"Open Spectrum..." f.exec "popupOpenSpect"} {"Open Comp. DB..." f.exec "popupOpenDB"} {blank f.line} {"Save Spectrum..." f.exec "popupSaveSpec" sensitive false} {"Save Database" f.exec "saveDB"} {"Save DB As..." f.exec "popupSaveDB"} {"Save Fit As..." f.exec "popupSaveFit" sensitive false} {blank f.line} {blank f.line} {Quit f.exec "quit"} } set fileMenuCont(compdef) { {"Open Spectrum..." f.exec "popupOpenSpect"} {"Open Comp. DB..." f.exec "popupOpenDB"} {blank f.line} {"Save Spectrum..." f.exec "popupSaveSpec" sensitive false} {"Save Database" f.exec "saveDB"} {"Save DB As..." f.exec "popupSaveDB"} {"Save Fit As..." f.exec "popupSaveFit"} {blank f.line} {blank f.line} {Quit f.exec "quit"} } #set fileMenuCont(fit) { # {"Open Spectrum..." f.exec "popupOpenSpect"} # {"Open Comp. DB..." f.exec "popupOpenDB"} # {blank f.line} # {"Save Spectrum..." f.exec "popupSaveSpec" sensitive false} # {"Save Database" f.exec "saveDB"} # {"Save DB As..." f.exec "popupSaveDB"} # {"Save Fit As..." f.exec "popupSaveFit"} # {blank f.line} # {blank f.line} # {Quit f.exec "quit"} # } createMenu fileMenu fileMenuButton $fileMenuCont(init) # Create the Edit Menu. createMenu editMenu editMenuButton { {"Undo" f.exec "apply_undo" sensitive false} {blank f.line} {Tcl... f.exec "tclCom_popup"} } # Create the Options Menu set optsMenuContents { {Units... f.exec "popup_units"} {Workspace... f.exec "wsprefs_popup"} } createMenu optsMenu optsMenuButton $optsMenuContents # Create the Manager Windows Menu set winsMenuContents { {"Spectrum List..." f.exec "popupSpecList"} {Components... f.exec "specify_components"} {Fitting... f.exec "popupFitOpts"} } createMenu winsMenu winsMenuButton $winsMenuContents # Create the View Menu createMenu viewMenu viewMenuButton { {"Fit to Window" f.exec "zoom_full"} {"Zoom In" f.exec "zoom_in 0 0"} {"Zoom Out" f.exec "zoom_out"} {"Autoscale Visible" f.exec "zoom_auto"} {blank f.line} {"Refresh Plots" f.exec "refresh_plots"} } # Create the Help Menu #createMenu helpMenu helpMenuButton { # {"Overview" f.exec "browse_help homepage"} # {"Introduction" f.exec "browse_help introduction" sensitive false} # {"Examples" f.exec "browse_help examples" sensitive false} # {"Tutorial" f.exec "browse_help tutorial" sensitive false} # {"Reference" f.exec "browse_help reference" sensitive false} #} proc browse_help {section args} { # print $section $args exec ^BROWSER } set funcMenuContents { {"Select Function..." f.exec popup_compfunc} {blank f.line} {"Continuum Functions" f.menu contFuncMenu} {"Line Features" f.menu lineFeaturesMenu} } # Component Function Menu createMenu funcMenu funcMenuButton $funcMenuContents set lineMenuContents { {"Gaussian Emission" f.exec "send uiCompFuncParms setValue GAUSSIAN"} {"Gaussian Absorption" f.exec "send uiCompFuncParms setValue ABGAUSS"} {"Exponential" f.exec "send uiCompFuncParms setValue EXPONEN"} {"Modified Lorentzian" f.exec "send uiCompFuncParms setValue LORENTZ"} } createMenu lineFeaturesMenu funcMenu $lineMenuContents set contMenuContents { {"Linear" f.exec "send uiCompFuncParms setValue LINEAR"} {"Blackbody" f.exec "send uiCompFuncParms setValue PLANCK"} {"Powerlaw" f.exec "send uiCompFuncParms setValue PWRLAW"} {"Broken Powerlaw" f.exec "send uiCompFuncParms setValue BPWRLAW"} {"Polynomial" f.exec "send uiCompFuncParms setValue POLY"} } createMenu contFuncMenu funcMenu $contMenuContents ## Open File I/O # Popup the Open Spectrum Dialog proc popupOpenSpect {args} { global fileReqMode send openShell set title "Open Spectrum" send osOK set label Open set fileReqMode OpenSpectrum send osFile set string "" send specListPopup popup send openShell popup } # Popup the Save Spectrum Dialog proc popupSaveSpec {args} { global fileReqMode send openShell set title "Save Spectrum" send osOK set label Save set fileReqMode SaveSpectrum send osFile set string "" send openShell popup GrabExclusive } # Popup the Open Database Dialog proc popupOpenDB {args} { global fileReqMode db_filter send openShell set title "Open Component DB" set fileReqMode OpenCompDB send osFilt set string $db_filter send osFile set string "" send openShell popup } # Popup the Save As Database Dialog proc popupSaveDB {args} { global fileReqMode send openShell set title "Save Component DB" send osOK set label Save set fileReqMode SaveCompDB send osFile set string "" send openShell popup GrabExclusive } # Save the Database proc saveDB {args} { set file [send osFile get string] send client gcmd "db save $file" } # Popup the Save Fit as Spectrum Dialog proc popupSaveFit {args} { global fileReqMode send openShell set title "Save Fit as Spectrum" send osOK set label Save set fileReqMode SaveFit send osFile set string "" send openShell popup GrabExclusive } proc change_directory {x1 x2 dir args} { send client gcmd "file chdir ${dir}" directory [send osFilt get string] } proc rescan_dir {args} { change_directory indef indef "." 0 } proc set_subdirs {x1 x2 list args} { send osSubDirList setList $list resize } proc set_files {x1 x2 list args} { send osFilesList setList $list resize } proc set_curdir {x1 x2 new args} { send osDir set string $new } proc change_filter {x1 x2 value args} { global db_filter directory $value set db_filter $value } proc open_file {x1 x2 file args} { global fileReqMode case $fileReqMode in { "OpenSpectrum" { send client gcmd "sp set input flux $file" send client gcmd "sp open" } "SaveSpectrum" { send client gcmd "sp save $file" } "OpenCompDB" { send client gcmd "db open $file" } "SaveCompDB" { send client gcmd "db save $file" } "SaveFit" { set npts [send fitNptsText get string] send client gcmd "sp clear output" send client gcmd "sp set output file $file" send client gcmd "sp set output npts $npts" send client gcmd "sp save" } } } proc open_stat {x1 x2 status args} { case [lindex $status 0] in { isdir { change_directory indef indef [lindex $status 1] send osFile set string "" } done { global fileReqMode fileMenuCont case $fileReqMode in { "OpenSpectrum" { send compButton setSensitive True send openDbButton setSensitive True editMenu fileMenu fileMenuButton $fileMenuCont(spopen) } "OpenCompDB" { send fitButton setSensitive True editMenu fileMenu fileMenuButton $fileMenuCont(dbopen) } } send openShell popdown } } } proc open_ok {args} { set file [send osFile get string] if {$file != ""} { open_file indef indef $file } else { set file [send osFilesList getItem itemno] if { $itemno == "none" } { open_file indef indef "" } else { open_file indef indef $file } } send openShell popdown } proc setFileFromList {args} { set file [send osFilesList getItem itemno] send osFile set string $file # print $file } proc openFileFromList {args} { set file [send osFilesList getItem itemno] send osFile set string $file open_file indef indef $file } proc open_cancel {args} { send openShell popdown } # Recognized component functions set CompFuncs { LINEAR PLANCK PWRLAW BPWRLAW POLY GAUSSIAN ABGAUSS EXPONEN LORENTZ } # Recognized component function coefficients set CompParamsL { WAVE OPDEPTH Z EQWIDTH FWHM FLUX INDEX INDEX1 INDEX2 COLDENS GAMMA MAGNITUDE EXTFUNC SKEW SLOPE VARIENCE KURTOSIS TEMP NORM SHIFT KEY ORDER COEF0 COEF1 COEF2 COEF3 COEF4 COEF5 } set CompAttrLabel(DISPERS_REF) "Disp. Ref." set CompAttrLabel(CENTER) "Center" set CompAttrLabel(WAVE) "Center" set CompAttrLabel(BREAK) "Break" set CompAttrLabel(OPDEPTH) "Optical Depth" set CompAttrLabel(Z) "Z" set CompAttrLabel(EQWIDTH) "Eqiv. Width" set CompAttrLabel(FWHM) "FWHM" set CompAttrLabel(FWHM_D) "FWHM_D" set CompAttrLabel(FWHM_L) "FWHM_L" set CompAttrLabel(FLUX) "Flux" set CompAttrLabel(INDEX) "Index" set CompAttrLabel(INDEX1) "Index 1" set CompAttrLabel(INDEX2) "Index 2" set CompAttrLabel(COLDENS) "Column Density" set CompAttrLabel(GAMMA) "Gamma" set CompAttrLabel(MAGNITUDE) "Magnitude" set CompAttrLabel(EXTFUNC) "Extinct. Func." set CompAttrLabel(SKEW) "Skew" set CompAttrLabel(SLOPE) "Slope" set CompAttrLabel(VARIENCE) "Varience" set CompAttrLabel(KURTOSIS) "Kurtosis" set CompAttrLabel(TEMPERATURE) "Temperature" set CompAttrLabel(NORM) "Normalization" set CompAttrLabel(SHIFT) "Shift" set CompAttrLabel(KEY) "Key" set CompAttrLabel(ORDER) "Order" set CompAttrLabel(COEF0) "Coeff. 0" set CompAttrLabel(COEF1) "Coeff. 1" set CompAttrLabel(COEF2) "Coeff. 2" set CompAttrLabel(COEF3) "Coeff. 3" set CompAttrLabel(COEF4) "Coeff. 4" set CompAttrLabel(COEF5) "Coeff. 5" set CompParams(LINEAR) {FLUX SLOPE DISPERS_REF} set CompParams(PLANCK) {FLUX TEMP} set CompParams(PWRLAW) {FLUX INDEX} set CompParams(BPWRLAW) {BREAK FLUX INDEX1 INDEX2} set CompParams(POLY) {COEF0 COEF1 COEF2 COEF3 COEF4 COEF5 DISPERS_REF} set CompParams(GAUSSIAN) {CENTER FLUX FWHM SKEW} set CompParams(ABGAUSS) {CENTER EQWIDTH FWHM} set CompParams(EXPONEN) {CENTER EQWIDTH FWHM} set CompParams(LORENTZ) {CENTER FLUX FWHM INDEX} set CompFuncName(LINEAR) "Linear Cont." set CompFuncName(PLANCK) "Blackbody Cont." set CompFuncName(PWRLAW) "Power-law Cont." set CompFuncName(BPWRLAW) "Broken Powerlaw Cont." set CompFuncName(POLY) "Polynomial Cont." set CompFuncName(GAUSSIAN) "Gaussian Em. Line" set CompFuncName(ABGAUSS) "Gaussian Abs. Line" set CompFuncName(EXPONEN) "Exponential line" set CompFuncName(LORENTZ) "Mod. Lorentzian" set CompFuncAbbrev("Gaussian\ Em.\ Line") "GAUSSIAN" set CompFuncAbbrev("Gaussian\ Abs.\ Line") "ABGAUSS" set CompFuncAbbrev("Mod.\ Lorentzian") "LORENTZ" set CompFuncAbbrev("Linear\ Cont.") "LINEAR" set CompFuncAbbrev("Blackbody\ Cont.") "PLANCK" set CompFuncAbbrev("Power-law\ Cont.") "PWRLAW" set CompFuncAbbrev("Broken\ Powerlaw\ Cont.") "BPWRLAW" set CoeffAttribs {Val Min Max Step Tol Sig Constr Expr} # Change the component function # build the function coefficients dialog proc comp_set_func {p old new} { global CompParams CompFuncName CompAttrLabel CoeffAttribs # print comp_set_func $p $old $new send compAttrGroup set label $CompFuncName($new) send compFuncText set string $CompFuncName($new) } proc edit_comp_from_list {args} { # Select a component from the list and make it the active component global CompFuncAbbrev # print $args set item [send compList getItem itemno] # print $item $itemno set compnum [lindex $item 0] set marker pComponent$compnum set compfunc [string trimright [lindex $item 1] ,] # print $compnum $marker $compfunc send client gcmd "cmp inq $compnum" send client gcmd "fit show" # send compImportButton setSensitive false #send compNewButton setSensitive false send compNewCopyButton setSensitive false send compEditButton setSensitive false send compChangeButton setSensitive true send compDeleteButton setSensitive false } proc sel_comp_from_list {args} { # Highlight a component in the list # Activate the appropriate buttons global CompFuncAbbrev # print $args set item [send compList getItem itemno] # print $item $itemno set compnum [lindex $item 0] set marker pComponent$compnum set compfunc [string trimright [lindex $item 1] ,] # print $compnum $marker $compfunc #send compImportButton setSensitive false #send compNewButton setSensitive false send compNewCopyButton setSensitive true send compEditButton setSensitive true send compChangeButton setSensitive false send compDeleteButton setSensitive true } proc desel_comp_from_list {args} { # Un-Highlight a component in the list # Activate the appropriate buttons global CompFuncAbbrev # print $args set item [send compList getItem itemno] # print $item $itemno set compnum [lindex $item 0] set marker pComponent$compnum set compfunc [string trimright [lindex $item 1] ,] # print $compnum $marker $compfunc #send compImportButton setSensitive true #send compNewButton setSensitive true send compNewCopyButton setSensitive false send compEditButton setSensitive false send compChangeButton setSensitive false send compDeleteButton setSensitive false } proc change_component {args} { global CurCompon CompParams # print $args # print $CurCompon set CompNum [lindex $CurCompon 0] set CompFunc [lindex $CurCompon 1] # print "Comp. Num.:" $CompNum "Function:" $CompFunc set index 1 set ci 0 foreach param $CompParams($CompFunc) { incr ci set CoeffName [lindex $CurCompon [incr index]] incr index 8 set CoeffVal [send compCoef${ci}Val get string] set CoeffLower [send compCoef${ci}Min get string] set CoeffUpper [send compCoef${ci}Max get string] set CoeffStep [send compCoef${ci}Step get string] set CoeffTol [send compCoef${ci}Tol get string] set CoeffSig [send compCoef${ci}Sig get string] set CoeffConstr [send compCoef${ci}Constr get string] set CoeffExpr [send compCoef${ci}Expr get string] if {$CoeffExpr == {}} {set CoeffExpr {""}} if {$CoeffName == "DISPERS_REF"} { set Compon "$CompNum $CompFunc $CoeffName $CoeffVal" } else { set Compon "$CompNum $CompFunc $CoeffName $CoeffVal $CoeffLower $CoeffUpper $CoeffStep $CoeffTol $CoeffSig $CoeffConstr $CoeffExpr" } # print $Compon # Modify the component coefficient in the task send client gcmd "cmp set $Compon" } send client gcmd "cmp set $CompNum $CompFunc FAMILY \"[send compFamily get string]\"" send client gcmd "cmp inq $CompNum" send client gcmd "fit show" #send compImportButton setSensitive false #send compNewButton setSensitive false send compNewCopyButton setSensitive true send compEditButton setSensitive true send compChangeButton setSensitive false send compDeleteButton setSensitive true } proc noop {args} { # print No Op $args } proc new_component_copy {args} { # global CurCompon # print $args # print $CurCompon #set Compon [lreplace $CurCompon 0 0 "new_copy"] # print $Compon # Add the component in the task #send client gcmd "cmp set $Compon" send client gcmd "cmp set new_copy" send client gcmd "cmp inq current" send client gcmd "fit show" #send compImportButton setSensitive false #send compNewButton setSensitive false send compNewCopyButton setSensitive false send compEditButton setSensitive false send compChangeButton setSensitive true send compDeleteButton setSensitive false } proc set_comp_from_marker {marker event args} { global ComponentList # print $marker $event $args scan $marker "component%d" compnum set itemno [lsearch $ComponentList "$compnum - " # print $compnum $itemno } proc popup_component {args} { send componentPopup popup } proc component_cancel {args} { send componentPopup popdown } proc popupSpecList {args} { send specListPopup popup } proc specListCancel {args} { send specListPopup popdown } proc specListActDelete {args} { send specListPopup popdown } proc popup_compfunc {args} { send compFuncPopup popup } proc comp_func_apply {args} { global CompFuncs set funcnum [send compFuncsGroup get selection] set funcnam [lindex $CompFuncs $funcnum] # print Component Function: $funcnum $funcnam send uiCompFuncParms setValue $funcnam } proc comp_func_reset {args} { send compFuncsGroup set selection 0 } proc compfunc_cancel {args} { send compFuncPopup popdown } ## Plot Units Dialog proc popup_units {args} { send plotUnitsPopup popup } set fluxStrings {COUNTS ERGS/CM**2/S/A ERGS/CM**2/S/HZ PHOTONS/CM**2/S/A PHOTONS/CM**2/S/HZ JANSKY MILLIJANSKY LAMFLAM NUFNU} set dispStrings {PIXEL ANGSTROMS MICRON HZ MHZ GHZ KM/S} proc units_apply {args} { global fluxStrings dispStrings set unit [send fluxUnitsGroup get selection] set unit [lindex $fluxStrings $unit] send client gcmd "gterm set flux_units $unit" set unit [send dispUnitsGroup get selection] set unit [lindex $dispStrings $unit] send client gcmd "gterm set disp_units $unit" send client gcmd "client refresh" # send plotUnitsPopup popdown } proc units_default {args} { send dispUnitsGroup set selection 1 send fluxUnitsGroup set selection 1 } proc units_cancel {args} { send plotUnitsPopup popdown } ## Fitting Options callbacks proc popupFitOpts {args} { send fitOptsPopup popup } proc fit_niter_ldecr {args} { set niter [send fitNiterText get string] # print $niter set niter [incr niter -100] if {$niter < 1} { set niter 1 } # print $niter send fitNiterText set string $niter } proc fit_niter_min {args} { send fitNiterText set string 1 } proc fit_niter_sdecr {args} { set niter [send fitNiterText get string] # print $niter set niter [format "%d" [incr niter -10]] if {$niter < 1} { set niter 1 } # print $niter send fitNiterText set string $niter } proc fit_niter_lincr {args} { set niter [send fitNiterText get string] # print $niter set niter [format "%g" [incr niter 100]] # print $niter send fitNiterText set string $niter } proc fit_niter_sincr {args} { set niter [send fitNiterText get string] # print $niter set niter [format "%g" [incr niter 10]] # print $niter send fitNiterText set string $niter } proc fit_toler_min {args} { global min_toler send fitTolerText set string $min_toler } proc fit_toler_max {args} { global max_toler send fitTolerText set string $max_toler } proc fit_toler_ldecr {args} { global min_toler set toler [send fitTolerText get string] # print $toler set toler [format "%g" [expr {$toler / 10}]] if {$toler < $min_toler} { set toler $min_toler } # print $toler send fitTolerText set string $toler } proc fit_toler_sdecr {args} { global min_toler set toler [send fitTolerText get string] # print $toler set toler [format "%g" [expr {$toler / 2}]] if {$toler < $min_toler} { set toler $min_toler } # print $toler send fitTolerText set string $toler } proc fit_toler_sincr {args} { global max_toler set toler [send fitTolerText get string] # print $toler set toler [format "%g" [expr {$toler * 2}]] if {$toler > $max_toler} { set toler $max_toler } # print $toler send fitTolerText set string $toler } proc fit_toler_lincr {args} { global max_toler set toler [send fitTolerText get string] # print $toler set toler [format "%g" [expr {$toler * 10}]] if {$toler > $max_toler} { set toler $max_toler } # print $toler send fitTolerText set string $toler } # Set the fitting parameters in the task proc fitopt_ok {args} { set niter [send fitNiterText get string] send client gcmd "fit set niter $niter" set toler [send fitTolerText get string] send client gcmd "fit set tolerance $toler" set typex [send fitTypeGroup get selection] set typen [format "%d" $typex] # print $typex # print $typen case $typen in { 0 {set type simplex} 1 {set type marquadt} } send client gcmd "fit set type $type" } proc fitopt_cancel {args} { send fitOptsPopup popdown send client gkey s } proc fitopt_default {args} { send fitNiterText set string 300 send fitNptsText set string 500 send fitTolerText set string 1e-4 send fitTypeGroup set selection 0 } ## Do the Fit proc doFitting {args} { global continue_fit set continue_fit y fitopt_ok send client gcmd "fit execute" } ## WorkSpace Preferences callbacks proc wsprefs_popup {args} { send wsPrefsPopup popup } proc wsprefs_cancel {args} { send wsPrefsPopup popdown } proc wsprefs_default {args} { send wsAutoScale set on 0 send wsDispCur set on 1 send wsPopMan set on 0 } proc wsprefs_apply {args} { if {[send wsAutoScale get on]} { send client gcmd "gterm set autoscale yes" } else { send client gcmd "gterm set autoscale no" } worktrans send wsPrefsPopup popdown } ## Tcl Command Dialog proc tclCom_popup {args} { send tclCmdPopup popup } proc tclCom_popdown {args} { send tclCmdPopup popdown } proc tclCom_exec {widget cbtype {value {}}} { if {$cbtype == "callback"} { set value [send tclCommand get string] } eval $value } ## Gterm manipulations. proc switch_gterm {x1 x2 gterm} { send $gterm setGterm } proc change_gterm {gterm} { global cur_gterm cursor_mode set cur_gterm $gterm send client gcmd "gterm change $gterm" if {$gterm == "workPlot"} { case $cursor_mode in { selsp selSpMode zoom zoomMode comp compMode range rangeMode } } } proc set_hscroll {x1 x2 size} { global hThumbSize set hThumbSize [expr {[lindex $size 1]-[lindex $size 0]}] if {$hThumbSize == 1.} { send wHScroll setScrollbar 0. $hThumbSize } else { send wHScroll setScrollbar \ [expr {[lindex $size 0] / (1. - $hThumbSize)}] \ $hThumbSize } } proc hscroll_scroll {widget ctype position} { global hThumbSize set x1 [expr {$position*(1-$hThumbSize)}] set x2 [expr {$x1+$hThumbSize}] send client gcmd "gterm work_redraw $x1 $x2 INDEF INDEF SPECTRUM" } proc set_vscroll {x1 x2 size} { global vThumbSize set vThumbSize [expr {[lindex $size 1]-[lindex $size 0]}] if {$vThumbSize == 1.} { send workVscroll setScrollbar 0. $vThumbSize } else { set pos [expr {1-[lindex $size 1]}] send workVscroll setScrollbar \ [expr {$pos / (1. - $vThumbSize)}] \ $vThumbSize } } proc vscroll_scroll {widget ctype position} { global vThumbSize set x2 [expr {1-($position*(1-$vThumbSize))}] set x1 [expr {$x2-$vThumbSize}] send client gcmd "gterm work_redraw INDEF INDEF $x1 $x2 SPECTRUM" } # Zoom in spectrum in work pane proc zoom_in {x y} { # print zoom_in 1 $x $y set dx [send workPlot get width].0 set dy [send workPlot get height].0 if {$x == 0} { set nx 0.56 } else { set nx [expr {$x / $dx}] } if {$y == 0} { set ny 0.455 } else { set ny [expr {($dy - $y) / $dy}] } set nx1 [expr {$nx - 0.2}] set nx2 [expr {$nx + 0.2}] set ny1 [expr {$ny - 0.2}] set ny2 [expr {$ny + 0.2}] # print zoom_in: 2 $nx $nx1 $nx2 # print zoom_in: 3 $ny $ny1 $ny2 send client gcmd "gterm work_redraw $nx1 $nx2 $ny1 $ny2 workPlot" } proc zoom_out {args} { global x_coord y_coord # print zoom_out $args send client gcmd "gterm work_redraw -.35 1.5 -0.4 1.3 workPlot" } # Replot full spectrum in work pane proc zoom_full {args} { # print zoom_full $args send client gcmd "gterm work_redraw 0. 1. 0. 1. SPECTRUM" } # Autoscale to currently visible part of spectrum proc zoom_auto {args} { # print zoom_auto $args send client gcmd "gterm set autoscale yes" send client gcmd "gterm work_redraw INDEF INDEF INDEF INDEF" send client gcmd "gterm set autoscale no" } # Refresh graphics proc refresh_plots {args} { send client gcmd "client refresh" } ## Library utilities. proc directory {filter} { send client gcmd "file ls $filter" } proc busy {widget x1 state} { global is_busy set is_busy $state if {$state == "yes"} { postTimedCallback busy_up 500 } else { send busy popdown postTimedCallback busy_up 1000 } } proc busy_up {args} { global is_busy if {$is_busy == "yes"} { send busy popup GrabExclusive } else { send busy popdown send busy unmap } } proc error {widget x1 message} { send warnText set label $message send warning popup GrabExclusive } proc error_done args { send warning popdown } proc quit {args} { deactivate unmap send client gkey q } proc set_param {widget old new} { global fit_types # Get each pair of values and handle appropriately. set l [llength $new] for {set i -1} {$i < $l} {} { set param [lindex $new [incr i]] set val [lindex $new [incr i]] # Dependening on the parameter, take appropriate actions case $param in { fit_tol {send fitTolerText set string $val} fit_niter {send fitNiterText set string $val} fit_type {send fitTypeGroup set selection [lsearch $fit_types $val]} } } } # Use mouse/markers to zoom the plot # Use mouse/markers to specify components proc specify_components {args} { send componentPopup popup } # Use mouse/markers to specify intervals proc specify_intervals {args} { } ## Marker routines set markerTranslations { \ : m_moveResize() : m_raise() m_markposAdd() : m_redraw() m_destroyNull() BackSpace: m_deleteDestroy() Delete: m_deleteDestroy() : track-cursor() } set intervalMarkerTranslations { \ : m_moveResize() : m_moveResize() : call(pend_del_interval,$x) m_raise() m_moveResize() : call(pend_del_interval,$x) m_raise() m_moveResize() : m_redraw() : m_redraw() BackSpace: m_deleteDestroy() Delete: call(delete_interval,$x) m_deleteDestroy() : track-cursor() } set componentMarkerTranslations { \ : m_moveResize() : m_raise() m_markposAdd() : m_raise() : m_redraw() BackSpace: m_deleteDestroy() Delete: m_deleteDestroy() : track-cursor() } set workViewMarkerTranslations { \ : m_moveResize() : m_raise() m_markposAdd() : m_redraw() m_destroyNull() : track-cursor() } # Callback from cursor motion in gterm proc show_wcs {x y} { global x_coord y_coord # print show_wcs: 1 $x $y $x_coord $y_coord set dx [send workPlot get width].0 set dy [send workPlot get height].0 set nx [expr {$x / $dx}] set ny [expr {($dy - $y) / $dy}] send client gcmd "gterm wcs_trans fromndc $nx $ny" # print show_wcs: 2 $nx $ny $x_coord $y_coord send xCoordText set label [format %.5g $x_coord] send yCoordText set label [format %.5g $y_coord] } # Callback from uiWCSTrans UI parameter # Returns translated coordinates proc wcs_trans {p old new} { global x_coord y_coord # print wcs_trans: $x_coord $y_coord $p $old $new set x_coord [lindex $new 0] set y_coord [lindex $new 1] } proc make_viewmarker {parent x y} { global markerTranslations send $parent createMarker viewMarker\ type rectangle\ createMode interactive\ translations $markerTranslations\ x $x\ y $y send viewMarker addCallback viewmarker_done moveResize } proc viewmarker_done {widget ctype loc} { # print viewmarker_done $widget $ctype $loc redraw_workplot $widget $ctype $loc send $widget destroy } proc set_work_view_marker {x1 x2 loc} { # Convert NDC to physical coordinates. Also convert to center position # and width/height. send fullPlot getPhysRes px py set cx [expr {$px*([lindex $loc 0]+[lindex $loc 1])/2}] set cy [expr {$py*(1-([lindex $loc 2]+[lindex $loc 3])/2)}] set dx [expr {$px*([lindex $loc 1]-[lindex $loc 0])/2}] set dy [expr {$py*([lindex $loc 3]-[lindex $loc 2])/2}] set my [expr {$py/2}] # Resize the marker. Turn off the resize call back # and reinstate it when done. send workViewMarker deleteCallback redraw_workplot send workViewMarker move $cx $my send workViewMarker resize $dx $my send workViewMarker set visible true send workViewMarker set activated true send workViewMarker set sensitive true send workViewMarker addCallback redraw_workplot moveResize } # Callback from create interval marker event in work plot proc new_interval_marker {parent x y} { global intervalMarkerTranslations global IntervalNum incr IntervalNum set marker interval$IntervalNum # print Create interim marker: $marker x: $x y: $y send $parent createMarker $marker\ type rectangle \ lineColor red \ highlightColor magenta \ createMode interactive\ translations $intervalMarkerTranslations\ x $x y 20 send $marker addCallback set_interval_marker moveResize } proc set_interval_marker {marker event region} { global IntervalNum Pend_Del_X # print Set Interval: $marker $event $region set range [send $marker getRegion ndc] # print Set Interval: $marker $range set left [expr {[lindex $range 2]-[lindex $range 4]}] set right [expr {[lindex $range 2]+[lindex $range 4]}] # print Set Interval NDC: $left $right set nx [expr {($left + $right) / 2.0}] send $marker destroy if {$Pend_Del_X != ""} { send client gcmd "fit range del $Pend_Del_X" set Pend_Del_X {} } send client gcmd "fit range add $left $right" } # Callback for UI parameter uiCreateRangeMarker # Creates a fit interval marker proc create_range_marker {p old new} { global intervalMarkerTranslations global IntervalNum # print Create Interval: $p $old $new incr IntervalNum set x1 [lindex $new 0] set x2 [lindex $new 1] # print Create interval marker: $x1 $x2 set marker interval$IntervalNum set dx [send workPlot get width] set px1 [expr {$dx * $x1}] set px2 [expr {$dx * $x2}] set x [expr {($px1 + $px2) / 2}] set dpx [expr {($px2 - $px1) / 2}] # print Interval: $marker $px1 $px2 set dy [send workPlot get height] # set y [expr {$dy * .475}] # set dpy [expr {$dy * .425}] set y [expr {$dy * .02}] # print $y $dy $dpy send workPlot createMarker $marker\ type rectangle \ lineColor green \ highlightColor yellow \ createMode noninteractive\ translations $intervalMarkerTranslations\ x $x y $y width $dpx height 1 send $marker move $x $y send $marker resize $dpx 1 send $marker set visible true send $marker set activated true send $marker set sensitive true send $marker addCallback set_interval_marker moveResize worktrans } proc int {val} { set t [expr {$val + 0.5}] set r [format %d $t] return $r } proc delete_interval {x args} { set dx [send workPlot get width].0 set nx [expr {$x / $dx}] # print Delete: $x $dx $nx send client gcmd "fit range del $nx" } proc pend_del_interval {x args} { global Pend_Del_X set dx [send workPlot get width].0 set nx [expr {$x / $dx}] # print Pending Delete: $x $dx $nx set Pend_Del_X $nx } proc update_fit {id old new} { # print $id $old $new send chisqVal set string [lindex $new 0] send niterVal set string [lindex $new 1] } proc add_spec_to_list {id old new} { global SpectrumList # print $id $old $new lappend SpectrumList $new send specList setList $SpectrumList } proc sel_spec_from_list {args} { # Select a spectrum from the list and make it the active component # print $args # set item [send specList getItem itemno] # print $item $itemno # set specnum [lindex $item 0] # print $specnum # send client gcmd "sp current $specnum" send specListActDelete setSensitive true send specListActActive setSensitive true send specListActInactive setSensitive false } proc act_spec_from_list {args} { # Highlight a spectrum in the list # Activate the appropriate buttons # print $args set item [send specList getItem itemno] # print $item $itemno set specnum [lindex $item 1] # print $specnum send specListActDelete setSensitive true send specListActActive setSensitive true send specListActInactive setSensitive true send client gcmd "sp current $specnum" send client gcmd "gterm set highlight_current_spec yes" send client gcmd "client refresh" } proc inact_spec_from_list {args} { # Un-Highlight a spectrum in the list # De-Activate the appropriate buttons # print $args # set item [send specList getItem itemno] # print $item $itemno # set specnum [lindex $item 1] # print $specnum send specListActDelete setSensitive false send specListActActive setSensitive false send specListActInactive setSensitive false # set item [send specList getItem itemno] # send client gcmd "sp current $specnum" send client gcmd "gterm set highlight_current_spec no" send client gcmd "client refresh" send specList unhighlight } # sp current - Make spectrum current. # sp delete - Delete spectrum proc delete_spectrum_from_list {args} { global SpectrumList # print $args # print $SpectrumList set item [send specList getItem itemno] # print $item $itemno set specnum [lindex $item 1] # print $specnum set newlist [lreplace $SpectrumList $itemno $itemno] send specList setList $newlist set SpectrumList $newlist send specListActDelete setSensitive false send specListActActive setSensitive false send specListActInactive setSensitive false send client gcmd "sp delete $specnum" zoom_full send client gcmd "client refresh" } #--------------------------------------------------------------- proc new_component {args} { global ComponentList CompParams FuncParms # Give the new component a number set CompNum new print $CompNum # Find the function set CompFunc [send uiCompFuncParms getValue] # Create the component in the task send client gcmd "cmp set $CompNum $CompFunc" send client gcmd "cmp inq current" # call(lay_out_comp_attr_all) ??? send componentPopup set width 600 send compAttrNameBox unmap send compAttrValBox unmap send compAttrMinBox unmap send compAttrMaxBox unmap send compAttrStepBox unmap send compAttrTolBox unmap send compAttrSigBox unmap send compAttrConstrBox unmap send compAttrExprBox unmap #send compImportButton setSensitive false #send compNewButton setSensitive false send compNewCopyButton setSensitive false send compEditButton setSensitive false send compChangeButton setSensitive true send compDeleteButton setSensitive false } #--------------------------------------------------------------- proc new_component_marker {parent x y} { global componentMarkerTranslations global component_num ComponentList set func [send compFuncText get string] if {$func == ""} { error junk junk "Specify a component function" return } incr component_num set marker tComponent$component_num # print "$parent x: $x y: $y Interim component $marker" send $parent createMarker $marker\ type rectangle \ lineColor blue \ highlightColor cyan \ createMode interactive\ translations $componentMarkerTranslations\ x $x y $y send $marker addCallback set_component_marker moveResize # send $marker addCallback delete_component destroy # send $marker addCallback set_comp_from_marker raise # set nregion [send $marker getRegion ndc] # set center [lindex $nregion 2] # print $nregion $center $func # lappend ComponentList "$component_num - $func $center" # send compList setList $ComponentList #send compImportButton setSensitive false #send compNewButton setSensitive false send compNewCopyButton setSensitive true send compEditButton setSensitive true send compChangeButton setSensitive false send compDeleteButton setSensitive true } proc delete_component {marker event args} { global ComponentList # print $marker $event $args scan $marker "component%d" compnum set entry [comp_entry $ComponentList $compnum] # set newlist [lreplace $ComponentList $entry $entry] # send compList setList $newlist # set ComponentList $newlist #send compImportButton setSensitive true #send compNewButton setSensitive true send compNewCopyButton setSensitive false send compEditButton setSensitive false send compChangeButton setSensitive false send compDeleteButton setSensitive false } proc delete_component_from_list {args} { global ComponentList # print $args # print $ComponentList set item [send compList getItem itemno] # print $item $itemno set compnum [lindex $item 0] # print $compnum # set marker component$compnum # send $marker destroy set newlist [lreplace $ComponentList $itemno $itemno] send compList setList $newlist set ComponentList $newlist #send compImportButton setSensitive true #send compNewButton setSensitive true send compNewCopyButton setSensitive false send compEditButton setSensitive false send compChangeButton setSensitive false send compDeleteButton setSensitive false send client gcmd "cmp del $compnum" send client gcmd "fit show" } proc comp_entry {list compnum} { set listl [llength $list] for {set entry 0} {$entry < $listl} {incr entry} { set item [lindex $list $entry] set cn [lindex $item 0] if {$compnum == $cn} break } # print "Component:" $compnum "Entry:" $entry return $entry } # Update component marker on a move/resize proc set_component_marker {marker event region} { global ComponentList CompParams FuncParms # print $marker $event $region set c [string index $marker 0] if {$c == "t"} { # Interim marker -- new component set CompNum new } else { # Permanent marker; find the component number scan $marker "pComponent%d" CompNum } # print $CompNum set nregion [send $marker getRegion ndc] # print $nregion set xcen [lindex $nregion 2] set ycen [lindex $nregion 3] set width [lindex $nregion 4] set height [lindex $nregion 5] # print $xcen $ycen $width $height set left [expr {$xcen - $width}] set right [expr {$xcen + $width}] set bottom [expr {$ycen - $height}] set top [expr {$ycen + $height}] # Find the function set CompFunc [send uiCompFuncParms getValue] # print $CompFunc $left $right $bottom $top # Create the component in the task send client gcmd "cmp set_from_box $CompNum $CompFunc $left $right $bottom $top" send client gcmd "cmp inq current" send client gcmd "fit show" } proc comp_set {p old new} { # Receives the coefficients of a component # Create the marker for the component # Callback for uiCmpSet global NumComp CompParams CompFuncName FuncParms global ComponentList global CurCompon # print $p $old $new # print $new set CurCompon $new set CompNum [lindex $new 0] set CompFunc [lindex $new 1] # print "Comp. Num.:" $CompNum "Function:" $CompFunc set Compon "$CompNum $CompFunc" if {[send compFuncText get string] != $CompFuncName($CompFunc)} { send uiCompFuncParms setValue $CompFunc } set index 1 set ci 0 global CoeffAttribs CompAttrLabel while {[set param [lindex $new [incr index]]] != {}} { incr ci # print $index $ci $param if {$param == "DISPERS_REF"} { send compCoef${ci}Name set label $CompAttrLabel($param) set value [lindex $new [incr index]] if {$value != "INDEF"} { set value [format %.5g $value] } send compCoef${ci}Val set string $value append Compon ", Disp. Ref. $value" send compCoef${ci}Name map foreach attrib $CoeffAttribs { # UnMap unused fields send compCoef${ci}${attrib}Fr unmap } send compCoef${ci}ValFr map } else { if {$param == "FAMILY"} { set value [lindex $new [incr index]] send compFamily set string $value } else { send compCoef${ci}Name set label $CompAttrLabel($param) foreach attrib $CoeffAttribs { set value [lindex $new [incr index]] if {$value != "INDEF"} { if {$attrib != "Expr"} { set value [format %.5g $value] } } send compCoef${ci}${attrib} set string $value send compCoef${ci}Name map send compCoef${ci}${attrib}Fr map } set coefname [send compCoef${ci}Name get label] set coefval [send compCoef${ci}Val get string] append Compon ", ${coefname} $coefval" } } } # print $Compon # Make sure name and value fields show send compAttrNameBox map send compAttrValBox map # Hide unused fields # print comp_set $ci for {} {$ci <= 8} {incr ci} { send compCoef${ci}Name unmap foreach attrib $CoeffAttribs { send compCoef${ci}${attrib}Fr unmap } } set CompNumList 0 set ItemNum 0 set found 0 foreach item $ComponentList { set CompNumList [lindex $item 0] # print $CompNum $CompNumList $ItemNum if {$CompNum == $CompNumList} { # Existing component; replace it set newlist [lreplace $ComponentList $ItemNum $ItemNum $Compon] set ComponentList $newlist set found 1 break } incr ItemNum } if {!$found} { # New component; add to list lappend ComponentList "$Compon" set lsize [llength $ComponentList] # print $lsize incr NumComp set ItemNum [expr {$lsize - 1}] } # print $ComponentList send compList setList $ComponentList send compList highlight $ItemNum # Change sensitivity of component buttons # Change sensitivity of component buttons # send compImportButton setSensitive false # #send compNewButton setSensitive false # send compNewCopyButton setSensitive true # send compEditButton setSensitive true # send compChangeButton setSensitive false # send compDeleteButton setSensitive true # send fitButton setSensitive true global fileMenuCont editMenu fileMenu fileMenuButton $fileMenuCont(compdef) worktrans } proc comp_set_type {p old new} { # print $p $old $new } proc comp_set_params {p old new} { # print comp_set_params $p $old $new } proc comp_mark {p old new} { # print comp_mark $p $old $new } proc set_comp_list {x y list args} { send compList setList $list resize } proc set_spec_list {x y list args} { send specList setList $list resize } proc redraw_workplot {widget ctype loc} { global cur_gterm # print redraw_workplot $widget $ctype $loc set region [send $widget getRegion ndc] set left [expr {[lindex $region 2]-[lindex $region 4]}] set right [expr {[lindex $region 2]+[lindex $region 4]}] set bottom [expr {[lindex $region 3]-[lindex $region 5]}] set top [expr {[lindex $region 3]+[lindex $region 5]}] # print $region $left $right $bottom $top if {$widget == "workViewMarker"} { set bottom INDEF set top INDEF } send client gcmd "gterm work_redraw $left $right $bottom $top $cur_gterm" # worktrans } proc plot_resize {widget width height} { send client gcmd "gterm resize $widget" } proc worktrans {} { # Set Work Plot tranlations global cursor_mode workPlotTrans # print worktrans $cursor_mode # print worktrans $cursor_mode $workPlotTrans($cursor_mode) if {[send wsDispCur get on]} { # print Show WCS set sh show } else { # print Hide WCS set sh hide send xCoordText set label "" send yCoordText set label "" } send workPlot set translations $workPlotTrans($cursor_mode$sh) } # Callback for UI parameter uiNewWorkPlot # Redrawing the work plot proc new_work_plot {args} { # print "New work plot $args" send workPlot markerInit worktrans } ## Gui initialization proc gui_init {args} { # print $args global workViewMarkerTranslations cur_gterm hThumbSize vThumbSize global min_toler max_toler db_filter IntervalNum global component_num NumComp CurCompon ComponentList global x_coord y_coord Pend_Del_X # Initialize fullPlot markers send fullPlot markerInit send fullPlot createMarker workViewMarker\ type rectangle\ lineColor blue \ highlightColor cyan \ createMode nonInteractive\ translations $workViewMarkerTranslations\ x 1 y 1 width 1 height 1 send workViewMarker addCallback redraw_workplot moveResize # Initialize the workPlot markers send workPlot markerInit set compMode 0 # Various other inits. set cur_gterm "" set hThumbSize 1. set vThumbSize 1. set min_toler 2.0e-7 set max_toler 0.01 set db_filter *.tab rescan_dir set IntervalNum 0 set component_num 0 set NumComp 0 set CurCompon {} set ComponentList {} send compList setList $ComponentList global SpectrumList set SpectrumList {} send specList setList $SpectrumList set x_coord 0 set y_coord 0 set Pend_Del_X {} fitopt_default units_default comp_func_reset send uiCompFuncParms setValue LINEAR send compActGroup set width 300 lay_out_comp_attr_none # Initial sensitivity send openSpButton setSensitive True send openDbButton setSensitive False send fitButton setSensitive False send compButton setSensitive False send undoButton setSensitive False send quitButton setSensitive True global fileReqMode set fileReqMode OpenSpectrum global fileMenuCont optsMenuContents editMenu fileMenu fileMenuButton $fileMenuCont(init) send hsfiller set frameWidth 0 zoomMode send modeButtonGroup set selection 0 wsprefs_default } proc ui_continue_fit {args} { global continue_fit send client gkey $continue_fit } proc stop_fit {} { global continue_fit set continue_fit s } ## Define the callbacks # Button Box send openSpButton addCallback popupOpenSpect send openDbButton addCallback popupOpenDB send spListButton addCallback popupSpecList send fitButton addCallback popupFitOpts send compButton addCallback specify_components send undoButton addCallback apply_undo send quitButton addCallback quit send helpButton addCallback browse_help # Mode Palette send zoomModeButton addCallback zoomMode send compModeButton addCallback compMode send rangeModeButton addCallback rangeMode proc selSpMode {args} { # print $args send workPlot set ginmodeCursor left_ptr send workPlot setCursorType ginMode global cursor_mode set cursor_mode selsp worktrans global wsHelpText set wsHelpText(workPlot) $wsHelpText(workPlotSelSp) if {[send wsPopMan get on]} { } else { } } proc zoomMode {args} { # print $args send workPlot set ginmodeCursor circle send workPlot setCursorType ginMode global cursor_mode set cursor_mode zoom worktrans global wsHelpText set wsHelpText(workPlot) $wsHelpText(workPlotZoom) } proc compMode {args} { # print $args send workPlot setCursorType ginMode send workPlot set ginmodeCursor full_crosshair global cursor_mode set cursor_mode comp worktrans global wsHelpText set wsHelpText(workPlot) $wsHelpText(workPlotComp) if {[send wsPopMan get on]} { specify_components } } proc rangeMode {args} { # print $args send workPlot set ginmodeCursor top_side send workPlot setCursorType ginMode global cursor_mode set cursor_mode range worktrans global wsHelpText set wsHelpText(workPlot) $wsHelpText(workPlotRange) if {[send wsPopMan get on]} { popupFitOpts } } # File Requestor send osSubDirList addCallback change_directory send osFilt addCallback change_filter send osCancel addCallback open_cancel send osRescan addCallback rescan_dir send osFilesList addCallback open_file send osFile addCallback open_file send osOK addCallback open_ok # Spectrum List send specListCancel addCallback specListCancel send specListActAdd addCallback popupOpenSpect send specListActDelete addCallback delete_spectrum_from_list send specListActActive addCallback act_spec_from_list send specListActInactive addCallback inact_spec_from_list # # Component Editor # send compFuncButton addCallback popup_compfunc send compFuncCancel addCallback compfunc_cancel #send compFuncReset addCallback comp_func_reset #send compFuncOK addCallback comp_func_apply send compImportButton addCallback popupOpenDB send compEditButton addCallback edit_comp_from_list send compChangeButton addCallback change_component send compNewButton addCallback new_component send compNewCopyButton addCallback new_component_copy send compDeleteButton addCallback delete_component_from_list send compValueButton addCallback lay_out_comp_attr_value send compConstrButton addCallback lay_out_comp_attr_constr send compAllButton addCallback lay_out_comp_attr_all send componentCancel addCallback component_cancel # Functions send contFuncsLINEAR addCallback comp_func_apply send contFuncsPLANCK addCallback comp_func_apply send contFuncsPWRLAW addCallback comp_func_apply send contFuncsBPWRLAW addCallback comp_func_apply send contFuncsPOLY addCallback comp_func_apply send lineFuncsGAUSSIAN addCallback comp_func_apply send lineFuncsABGAUSS addCallback comp_func_apply send lineFuncsEXPONEN addCallback comp_func_apply send lineFuncsLORENTZ addCallback comp_func_apply # Fit Options send fitNiterMin addCallback fit_niter_min send fitNiterLdecr addCallback fit_niter_ldecr send fitNiterSdecr addCallback fit_niter_sdecr send fitNiterSincr addCallback fit_niter_sincr send fitNiterLincr addCallback fit_niter_lincr send fitTolerMin addCallback fit_toler_min send fitTolerLdecr addCallback fit_toler_ldecr send fitTolerSdecr addCallback fit_toler_sdecr send fitTolerSincr addCallback fit_toler_sincr send fitTolerLincr addCallback fit_toler_lincr send fitTolerMax addCallback fit_toler_max send fitApplyButton addCallback doFitting send fitSaveButton addCallback popupSaveFit send fitOptsCancel addCallback fitopt_cancel send fitOptsReset addCallback fitopt_default send wsPrefsApply addCallback wsprefs_apply send wsPrefsCancel addCallback wsprefs_cancel send wsPrefsReset addCallback wsprefs_default send plotUnitsOK addCallback units_apply send plotUnitsCancel addCallback units_cancel send plotUnitsReset addCallback units_default # Tcl Command send tclBtnCancel addCallback tclCom_popdown send tclBtnOK addCallback tclCom_exec send tclCommand addCallback tclCom_exec send warnCancel addCallback error_done send warnOK addCallback error_done send wHScroll addCallback hscroll_scroll send workVscroll addCallback vscroll_scroll send uiBusy addCallback busy send uiError addCallback error send uiOpenStat addCallback open_stat send uiCurDir addCallback set_curdir send uiFiles addCallback set_files send uiSetHScroll addCallback set_hscroll send uiSetVScroll addCallback set_vscroll send uiSubDirs addCallback set_subdirs send uiSetWorkViewMarker addCallback set_work_view_marker send uiSwitchGterm addCallback switch_gterm send uiNewWorkPlot addCallback new_work_plot send uiCreateRangeMarker addCallback create_range_marker send uiWCSTrans addCallback wcs_trans send uiCompList addCallback set_comp_list send uiCmpSet addCallback comp_set send uiCmpSetType addCallback comp_set_type send uiCmpSetParams addCallback comp_set_params send uiCmpMark addCallback comp_mark send uiCompFuncParms addCallback comp_set_func send uiUndo addCallback ui_undo send uiInitialize addCallback gui_init send uiContinueFit addCallback ui_continue_fit send uiSpSet addCallback add_spec_to_list send uiFit addCallback update_fit send fullPlot addCallback plot_resize resize send workPlot addCallback plot_resize resize send auxPlot addCallback plot_resize resize send uiSetParam addCallback set_param proc ui_undo {p old new} { # print $p $old $new if {$p == "no"} { send undoButton set label Undo send undoButton setSensitive false } else { send undoButton set label Undo\n$new send undoButton setSensitive true } } proc apply_undo {args} { # print $args send client gcmd "client undo" } proc lay_out_comp_attr_constr {args} { send componentPopup set width 600 send compAttrConstrBox map send compAttrExprBox map send compAttrMinBox unmap send compAttrMaxBox unmap send compAttrStepBox unmap send compAttrTolBox unmap send compAttrSigBox unmap } proc lay_out_comp_attr_none {args} { send componentPopup set width 600 send compAttrNameBox unmap send compAttrValBox unmap send compAttrMinBox unmap send compAttrMaxBox unmap send compAttrStepBox unmap send compAttrTolBox unmap send compAttrSigBox unmap send compAttrConstrBox unmap send compAttrExprBox unmap } proc lay_out_comp_attr_value {args} { send componentPopup set width 600 send compAttrNameBox map send compAttrValBox map send compAttrMinBox unmap send compAttrMaxBox unmap send compAttrStepBox unmap send compAttrTolBox unmap send compAttrSigBox unmap send compAttrConstrBox unmap send compAttrExprBox unmap } proc lay_out_comp_attr_all {args} { send componentPopup set width 1000 send compAttrNameBox map send compAttrValBox map send compAttrMinBox map send compAttrMaxBox map send compAttrStepBox map send compAttrTolBox map send compAttrSigBox map send compAttrConstrBox map send compAttrExprBox map } ## Context-sensitive help set wsHelpText(fileMenuButton) "Read/Write files" set wsHelpText(editMenuButton) "" set wsHelpText(viewMenuButton) "Change view of data" set wsHelpText(winsMenuButton) "Pop up additional dialog windows" set wsHelpText(funcMenuButton) "Specify component function" set wsHelpText(optsMenuButton) "Change workspace/window properties" set wsHelpText(helpMenuButton) "Get additional help" set wsHelpText(openSpButton) "Read an input spectrum" set wsHelpText(openDbButton) "Read a component database" set wsHelpText(spListButton) "Manage open spectra" set wsHelpText(compButton) "Manage model components" set wsHelpText(fitButton) "Modify fitting parameters and perform a fit" set wsHelpText(undoButton) "Undo last change" set wsHelpText(quitButton) "Terminate this session" set wsHelpText(helpButton) "Get additional help" set wsHelpText(paletteLogo) "View information about vuespec" set wsHelpText(zoomModeButton) "Change view of spectrum using cursor" set wsHelpText(compModeButton) "Specify and modify model components" set wsHelpText(rangeModeButton) "Specify and modify fit ranges" set wsHelpText(fullPlot) "Move/resize marker to scroll/zoom" set wsHelpText(workPlot) "View spectra, components and fit" set wsHelpText(auxPlot) "View auxiliary data" set wsHelpText(workPlotSelSp) "Click on a spectrum to select it" set wsHelpText(workPlotZoom) "Click and drag to zoom; click to plot full range" set wsHelpText(workPlotComp) "Click and drag to create model component" set wsHelpText(workPlotRange) "Click and drag to define a fit domain" set wsHelpText(xCoordText) "X coordinate of pointer" set wsHelpText(yCoordText) "Y coordinate of pointer" set workSpaceWidgets { fileMenuButton editMenuButton viewMenuButton winsMenuButton funcMenuButton optsMenuButton openSpButton openDbButton spListButton compButton fitButton undoButton quitButton helpButton paletteLogo zoomModeButton compModeButton rangeModeButton fullPlot workPlot auxPlot yCoordText xCoordText } proc wsHelpCallback { widget event args } { global wsHelpText # print $widget $event $args if {$event == "enterNotify"} { send csHelpText set label $wsHelpText($widget) send csHelpFrame set width 500 } if {$event == "leaveNotify"} { send csHelpText set label {} } } foreach widget $workSpaceWidgets { send $widget addEventHandler wsHelpCallback enterWindowMask send $widget addEventHandler wsHelpCallback leaveWindowMask } set CompCsHelpText(compFuncButton) "Select component function from dialog" set CompCsHelpText(compFuncMenuButton) "Select Component Function from Menu" set CompCsHelpText(compImportButton) "Import components from database" set CompCsHelpText(compNewButton) "Create new component from plot" set CompCsHelpText(compNewCopyButton) "Copy existing component" set CompCsHelpText(compEditButton) "Modify existing component" set CompCsHelpText(compChangeButton) "Modify existing component" set CompCsHelpText(compDeleteButton) "Delete component" set CompCsHelpText(compValueButton) "View component attribute values only" set CompCsHelpText(compConstrButton) "View component attribute values and constraints" set CompCsHelpText(compAllButton) "View all component attributes" set CompCsHelpText(componentCancel) "Remove this window" set CompCsHelpText(componentReset) "Revert to defaults" set CompCsHelpText(componentHelp) "See more information" set compWidgets { compFuncButton compImportButton compNewButton compNewCopyButton compEditButton compChangeButton compDeleteButton compValueButton compConstrButton compAllButton componentCancel componentReset componentHelp } proc compCsHelpCallback { widget event args } { global CompCsHelpText # print $widget $event $args if {$event == "enterNotify"} { send compCsHelp set label $CompCsHelpText($widget) send compCsHelpFrame set width 500 } if {$event == "leaveNotify"} { send compCsHelp set label {} } } foreach widget $compWidgets { send $widget addEventHandler compCsHelpCallback enterWindowMask send $widget addEventHandler compCsHelpCallback leaveWindowMask } ## Initilizations of the interface foreach attr $CoeffAttribs { for {set num 1} {$num <= 8} {incr num} { send compCoef${num}${attr} set editType edit } # send compTitle${attr} set width 80 send compTitle${attr} set justify left } #set workViewMarkerTranslations {} set cur_gterm {} set hThumbSize {} set vThumbSize {} set min_toler {} set max_toler {} set db_filter {} set IntervalNum {} set component_num {} set NumComp {} set Curcompon {} set ComponentList {} set x_coord {} set y_coord {} set Pend_Del_X {} set continue_fit {} set compMode 0 set cursor_mode {zoom} set is_busy {no} set fit_types {simplex marquadt} # Activate the interface activate