TUI:Version History
Compatibility
- Mac: the Mac binary works with MacOS X 10.6 - 10.10, though on 10.9 or later you should disable app nap: select Get Info on TUI; if you see a checkbutton labelled "Disable App Nap" then check it. The Mac version is not signed, so MacOS may complain when you try to launch it. If that happens simply right-click on the application and select "Open...".
- Unix: runs from source, so is compatible with all flavors of unix. See the installation instructions for the required version of Python and other libraries.
- Windows: works with Windows 7 and Vista. Thanks to Joseph Huehnerhoff for producing the Windows builds.
2.5.1 2016-01-29
Visible changes:
- Added "Set Full Frame" button alongside ARCTIC window panel.
- Selecting "Quad" amp readout automatically updates the CCD Window to full frame.
- Binning by 3 results in even rows/columns. This allows for image size to remain consistent whether reading from one amp or 4.
2.5.0 2015-11-10
Visible changes:
- Added support for the ARCTIC imager.
- You may now open gzipped FITS images using the Choose... button of Guide windows. Warning: due to a limitation of Tk you can select any file whose name ends in ".gz", even if it's not a FITS image.
- PR 1613 add 10um step size to secondary focus window.
Bug fixes:
- If a FITS image has no data in HDU 0 and you open it in a Guide window using the Choose... button you will see a warning in the guider window. Formerly this caused a traceback to be written to the error log.
- Documentation fix: the Scripting Manual listed the wrong precedence order for scripts; the correct order is that built-in scripts take precedence over user scripts, which take precedence over shared scripts.
Internal changes:
- The Mac application is built with the official ActiveState Tck/TK 8.5.18 installer instead of a slightly older home built version and now includes matplotlib 1.5.0 (up from 1.3.1) and numpy 1.10.1 (up from 1.7.2).
- Changed equality comparisons with None, True and False to use "is" or "is not" instead of "==" or "!=" to modernize the code and eliminate some numpy warnings.
2.4.0 2015-06-03
Visible changes:
- Updated for the new DIS slitviewer (CCD size changed from 512x512 to 1024x1024).
Bug fixes:
- The nudger window mis-handled Guide and Guide XY offsets because it applied a cos(alt) correction that is not appropriate for the new TCC.
2.3.3 2015-04-03
Internal changes:
- The Mac version includes Tcl/Tk 8.5.18, 2015-03-24 build, which fixes many bugs (though a known issue is that sometimes windows will not close).
- The Mac version includes RO 3.6.5 which removes some workarounds for buggy Tcl/TK display on MacOS that are no longer needed and includes a new workaround for overly cramped buttons.
Bug fixes:
- MacOS: a duplicate TUI Help item was shown and only one worked.
Documentation changes:
- Added a software license (BSD-3 in doc/license.txt) and changed readMe.txt to ReadMe.md.
2.3.2 2014-10-28
Visible changes:
- Telescope:Pointing Data script: now shows information about each data entry, both in the script and as a comment in the data file. Also, the window argument is specified for each exposure, to work around a bug in the guider that caused incorrect windowing.
Bug fixes:
- The Mac version's Help menu had two entries for TUI Help, but only the second one worked.
Internal changes:
- The Mac build includes a release candidate of Tcl/Tk 8.5.17; this should be a significant improvement over the ancient 8.5.11 I had to use previously, especially for users on MacOS 10.9.
- The Mac version is once again a 64-bit application (made possible by the Tcl/Tk upgrade).
- Modernized some syntax.
- Now uses astropy instead of pyfits, if available (thanks to George Privon for suggesting and testing this).
2.3.1 2014-09-16
Visible changes:
- Preferences: improved help string for Keep Guide Images. Also, the latest version of RO adds Help contextual menu to the three controls along the bottom (the other controls already had this feature).
- Telescope:Pointing Data script: now broadcasts what it is doing. Also the script no longer commands a collimation update after each slew, because the TCC now commands a collimation shortly before the end of each slew.
Bug fixes:
- Fixed TUI crashes in DIS:Drift and Echelle:Trail. (Both scripts had unwanted tight loops that made TUI unstable, at least on MacOS X).
- Changed STUI to TUI in a few places and noted that "Disable App Nap" is not visible for all users on 10.9.
Internal changes:
- Moved from svn to git and updated releaseNewVersion.py and documentation accordingly.
- Added RO to the ups table for TUI (this only affects people who are using eups to manage TUI, which is rare for users, since source code releases already include RO).
2.3.0 2014-08-18
Visible changes:
- Updated for non-backwards-compatible changes to GIFS.
- The Presets menus now shows the name of the preset in config half of the instrument window, if a named preset matches the selected configuration. If more than one named preset matches, the first match is shown. There is no similar display in the status half of the instrument window (because it would require too much code). However, you can see the preset that corresponds to the current state of the instrument by pressing the Current button.
- TUI logs are now stored in a subdirectory "tui_logs" and each log starts with a time stamp and TUI version.
- Log window: timestamps now includes the date.
- Mirror Status window: updated for new TCC.
- Status window: reordered axis controller error bits, so: "motor current limit" and "motion error" are now shown before "stop button". (Unfortunately the "stop button" bit is used for too many things, and it was obscuring other, more useful information).
- Slew Window: corrected displayed units of distance from parsecs to au (thanks to Russet for noticing).
- The Drift Scan panel of the Slew window now uses units of arcsec/hour for velocity and sends more digits to the TCC. Note that the GUI displays the units as "/hr" and the " is hard to distinguish from the degree symbol, but the help string says "(arcsec/hour)" so I hope this will be sufficiently clear.
- Status window: the instrument name is red if the instrument is "?" (unknown).
- Added a script Telescope: Pointing Data to take pointing data.
- Added a wait command to Run_Commands:
tcc wait sec
. This is a copy of an enhancement to STUI by Elena Malanushenko.
- Updated the installation instructions.
- Improved the scripting manual's description of where to put scripts.
Bug fixes:
- Enclosure window tertiary rotation was unusable. This was due to a bug in RO.Wdg.OptionMenu and a crude way of detecting that a tertiary rotation command was currently executing, both of which I fixed.
- Status window: the coordinate system should no longer be truncated, and the date for Topocentric and Observed coordinates is now shown correctly for the new TCC (in the very unlikely event that somebody specifies a date).
- Message window: typing certain characters in the upper window would cause a traceback in the log. Also navigation keys now work correctly in the upper pane.
- ScriptRunner's value field was set to None by pause/resume, thus losing the returned value.
Internal changes:
- Removed obsolete warning "halting countdown timer due to AxisCmdState" (the condition this was testing is now a normal condition).
- Updated the TCC model to include new keywords for the new TCC and to use a more robust method to determine if an instrument has a rotator.
- GIFSModel allows an extra value for various stage keywords, since Jon is adding one.
2.2.0 2014-03-14
Visible changes:
- Added full GIFS support.
- Added a Presets menu to the config window of most instruments. This allows the user to save and manage named presets. If an instrument comes with standard presets (only GIFS at this point) then these will also be listed.
- Scripts that were open when Save Window Positions was selected are reopened at startup.
- Updated the MacOS instructions here and in the introduction.
- Improved compatibility with MacOS 10.9: the application now runs in 32-bit mode, though you should still manually disable app nap.
Bug fixes:
- CmdVar objects were sending the command "None" when aborted, due to careless casting. Fixed by changing the default from None to "" in CmdVar and ScriptRunner, and by also testing for None in CmdVar when casting (for backwards compatibility, though no code in TUI specifies None).
Internal changes
- Minor corrections to the TUI:Introduction document.
- PermsTableWdg.py: two cosmetic changes to remove lint warnings.
- NICFPS and SPIcam: made stateTracker an explicit argument of StatusConfigInputWdg.py. Updated demo code to supply that argument and to use TUI.Base.TestDispatcher.
2.1.0 2013-09-16
Visible changes:
- Added minimal GIFS support (exposure control only, so far)
- Removed the Shack-Hartmann instrument, as it is no longer used.
- The computer platform is now listed in the error log (or stdout on unix).
Bug fixes:
- The MacOS X version can display images when running in 32-bit mode. (Formerly the included PIL was missing some 32-bit components).
Internal changes:
- Changed "import Image" to "from PIL import Image" for compatibility with Pillow (a modern replacement for PIL).
2.0.0 2013-01-04
Warning: your old font preferences will be ignored (from TUI 1.9.6b5 or earlier) with a warning in the error log file. If you do not like the default font sizes, open Preferences>Fonts, update as desired and Save to update your preferences.
Visible changes:
- Disable the ability to change slits; a temporary hack while TSpec's slit changer is broken.
- All checkbuttons are now displayed as a checkbox (formerly some were shown as a raised or lowered button, but that is no longer supported under Tcl/Tk 8.5 on MacOS).
- Overhauled the font preferences to make the appearance more standard. Now you can only set font size; the default font typefaces are always used.
- Nudger window: removed Calibration offsets. This reduces the danger of accidentally applying sticky offsets.
- DIS now reports CCD temperature in K, not C; TUI's display updated accordingly.
- Enclosure widget: removed BC eyelid (which no longer exists) and changed the controls so that the status and command checkbuttons are separate widgets. This fixes some display issues on MacOS X and allows displaying state = unknown.
Bug fixes:
- TUI showed the wrong time if the computer was not keeping good UTC time. TUI now shows the correct time even if the user's clock is keeping TAI or has drifted. However, displayed time may be off by a second or two unless the computer's clock is keeping accurate UTC or TAI.
- On MacOS X: eliminated the duplicate Preferences menu item; cmd-comma now opens preferences.
- The units for proper motion in RA/longitude were incorrectly listed as seconds/century; they really are arcsec/century. I fixed this in the proper motion entry widget in the Slew window, and in various help pages.
- The proper motion entry boxes had no help and the labels were incomplete (because a callback function was not being called when the coordinate system changed).
Internal changes:
- The Mac version now uses Aqua Tcl/Tk 8.5.
- Modified to use RO 3.0. This contains many workarounds for Aqua (MacOS) Tcl/Tk 8.5 bugs.
- Now has the ability to use Twisted framework for communications, though this is off by default. Change a flag in Main.py to use Twisted.
- Removed use of update_idletasks to eliminate a source of subtle bugs.
- Most timers now use RO.TkUtil.Timer; this simplifies the code a bit and eliminates the need for some Tk widgets.
- Removed use of deprecated dict method has_key.
- Changed line endings of html files from the old Mac standard to the new Mac/unix standard.
1.9.5 2012-03-09
Bug fixes:
- PR 1306 Focus loop fails. The problem was that each focus script reloaded a shared module (BaseFocusScript) which caused the id of shared classes to change. Thanks to Arnaud Delobelle for identifying the cause.
- The ECam focus script would fail to take a final exposure, due to undefined name 'doRestoreBoresight'.
1.9.4 2011-12-20
Visible changes:
- Focus script enhancements:
- Instrument focus scripts restore original bin factor at the end (if the instrument supports binning).
- TSpec Focus script restore 2x2 binning at the end. (There is no robust way to restore the original bin factor until guiders report bin factor as a keyword).
1.9.3 2011-10-12
Bug fixes:
- The Permissions window Purge and Sort buttons messed up the display.
1.9.2 2011-09-12
Bug fixes:
- Log window Actor and Actors filters did not show commands sent to the actors.
- Windows in TUIAdditions were not being loaded.
- Permissions window: improved resize behavior and alignment.
1.9.1 2011-08-19
Warning to unix users and others running from source: if you are using a Python older than 2.6 then you must install the simplejson module.
Internal changes:
- Improved compatibility with versions of Python older than 2.6 (thanks to Leigh Koven).
1.9.0 2011-08-16
This version requires Python 2.6 or later (due to use of the json module; you can also install simplejson as json).
Visible changes:
- Guider window changes:
- Changed ctrl-click to eliminate the danger of accidental offsets. Now ctrl-click simply sets the selection at the cursor. You then have to press Center Sel to center that point on the boresight.
- Made it easier to cancel normal dragging and ctrl-click dragging. Just release the mouse button while the mouse pointer is off the image. As a visual cue the drag rectangle or ctrl-click selection point disappears while the mouse pointer is off the image.
- Displays an arrow from the current selection to the boresight if there is a selection and Center Up is enabled (which requires that guiding be off, a boresight, a selection, and that no command such as Center Up is running).
- Modified Hold/Current and history behavior to reduce confusion between user-chosen FITS files and images received from the guider:
- Current always shows an image from the guider, if one is available, else nothing. Formerly if you used Choose... to view a FITS file and you had never received any images from the guider, then the image you were viewing would stay up when you pressed Current.
- The image history is reserved for images received from the guider. Images viewed using Choose... are not added to the image history.
- Log window changes:
- Added new filters: "Commands", "Commands and Replies", "My Commands and Replies" and "Custom" (which is explained in the Log Window manual page).
- Added new messages CmdStarted and CmdDone (based on messages from the cmds actor).
- Increased log message length.
- Many windows now save state when you select Save Window Positions.
- Log windows save filter information
- Instrument configuration windows save which detail panels are open
- Shack-Hartmann: added preliminary support for the Shack-Hartmann instrument. Further refinements are awaiting documentation.
- Status window: added support for the axis controller's new amplifier overcurrent bit (bit 18). The text displayed is "Amplifier too hot" and it is a warning (as Fritz requested).
- DIS: Drift script now can drift across the slit or along it.
- TSpec: Nod script now allows the user to specify the offset (useful for extended objects).
- Focus scripts: reduced minimum step size from 25um to 10um.
- Permissions window: added automatic highlighting to make it easier to see what you are pointing at.
Bug fixes:
- Focus scripts would not take a final exposure if cancelled during the first exposure.
- Guider windows: selecting stars was hard because you had to click much too close to the center of the star.
- Guider Thresh and RadMult backgrounds were sometimes incorrectly pink.
Internal changes:
- Moved HubModel and PermsModel into TUI.Models and added CmdsModel there. Other models will eventually move there, but that will be a more disruptive change.
- Changed "type" to "msgType" in parsed message dictionaries to reduce conflict with Python built in function.
1.8.7 2011-04-08
Visible changes:
- Permissions window: organize permissions by category and clean up the alignment.
1.8.6 2011-02-22
Visible changes:
- Slew window: reinstated the Stop button. It sends "axis stop", which will stop the telescope quickly but gently, thanks to the graceful handling of stop commands by Fritz' axis controllers.
- Slew window: hide the Calibrate panel, since it is not well set up for automated operation.
- Status window: display Calib and Guide offsets. Reordered two panels to improve readability.
- Nudger now nudges "on sky" for all offset types. Formerly Calibration and Guide offsets were simply added to the axis position.
- Added a new sound cue "Exposure Failed" sound, which is played if an exposure sequence fails. (Warning: Agile presently outputs "aborted", not "failed" when an exposure fails. A fix is in the works, but until it appears, Agile will NOT play this new sound cue.)
Bug fixes:
- PR 1240 Data entry bug in certain windows.
- PR 1188 unwanted ctrl-click in slitviewer windows.
1.8.5+2_Windows 2011-02-03
Windows-only release. Further compatibility fixes; now tested on XP, Vista and Windows 7. Thanks to Joseph Huehnerhoff for fixing the problem and creating a new release.
1.8.5+1_Windows 2011-01-28
Windows-only release. Made to work on more versions of Windows by doing something with win32com. Thanks to Joseph Huehnerhoff for fixing the problem and creating a new release.
1.8.5+1_Mac 2010-12-20
Mac-only release. Built with matplotlib 1.0.0 because of a problem with my build of the prerelease version used in 1.8.5.
1.8.5 2010-12-20
Visible changes:
- Added target axis position and UTC date to the Status window.
- Added Calibration offsets to the Nudger window.
- Renamed Object offsets to Object Arc offsets in the Offset, Nudger and Status windows and reorganized the associated help files to better consolidate information about types of offsets.
- Enclosure window: added eyelids summary status (which tells you if the eyelid for the current port is open) and Open All and Close All buttons.
Internal changes:
- Reduced rate of memory leakage by 10x by shifting the guide monitor's time axis every 20 seconds instead of every 2 seconds. The display will be jerkier but you will still see all data. I'll restore the old behavior once the matplotlib memory leak is fixed.
- The Mac version now includes matplotlib trunk rev 8843 (is a prerelease of 1.0.1) and unix users may wish to install a similar prerelease. This offers two important benefits:
- TUI will no longer exit at startup if matplotlib's font cache is outdated.
- Matplotlib's memory leak in canvas.draw is reduced by a factor of 10.
Bug fixes:
- PR 1211 NA2 focus script changes secondary focus instead of gmech on failure.
1.8.4 2010-10-21
Visible changes:
- Guider windows: added Center button to slitviewers that will center the selected star.
- Combined the Guide Monitor and Seeing Monitor into one window and changed the displayed time span to one hour. Added a brief description to the main Guiding help page.
- Focus scripts: enhanced error handling and status reporting. They now show cleanup actions in the log. They will wait for cleanup actions to finish if possible, and if not then will show a warning in the log.
- Improved description of motor current limit status bit and removed descriptions for unused bits (thanks to Fritz for updating the controller status documentation).
Internal changes:
- The guider models for the <n>focus actors no longer try to auto-refresh the expState keyword because these actors don't output it. (I left it in the model for uniformity). This eliminates some warnings from the keys actor at startup.
Bug fixes:
- PR 1189 Focus script does not move boresight back if focus not found
- Guider Windows: minor enhancements to drag-to-centroid event handling:
- The selection rectangle is immediately removed if one presses the ctrl key (instead of only after a drag).
- The selection rectangle must be displayed for the centroid command to be sent. Formerly the centroid command could sometimes be sent even if the rectangle was not shown (potentially confusing, but harmless).
- The crosshair cursor is now only shown when the ctrl-drag arrow is also shown. Thus it is an indicator that a center command will be sent if you release the mouse button.
- Changed the Guide Monitor to only show the brightness of guide stars; formerly it would also display manually centroided stars which would likely be confusing.
- Corrected a few external links in this version history document.
1.8.3 2010-10-08
This is only intended to fix an error in the Mac build. It was not fully compatible with Mac OS X 10.4 (I was apparently using an broken installation of PIL). There are also a few tweaks to the help files but no code changes from version 1.8.2.
1.8.2 2010-10-06
Visible changes:
- Added guiding and seeing monitors (in the Guide menu).
- Agile PR 1093: added a Stop button. Also removed the nonfunctional Pause button.
- Added support for new axis controller status bit: 15=slip detected
- TSpec and NICFPS Expose windows now show Pause Seq and Stop Seq and Agile shows Stop Seq. "Seq" indicates that the action occurs after the current exposure finishes normally.
Bug fixes:
- PR 1172 Cannot display guider images in MacOS X 10.4.
- PR 993 agileExpose gets wedged and subsequent exposure commands are ignored. I worked around the bug instead of fixing it by sending the stop and abort commands directly to the agile actor rather than agileExpose. Fortunately this seems to work well.
1.8.1 2010-08-05
Visible changes:
- If you lose your connection or put your computer to sleep for long enough, TUI will test the connection and, if good, will attempt to refresh the data.
Bug fixes:
- The Refresh Display command was broken.
1.8.0 2010-07-12
Visible changes:
- Multiple log windows.
- Added Keep Guide Images preference.
Internal changes:
- Added logSource to the TUI model; this is a central repository for log data to support multiple log windows.
Bug fixes:
- Log window
- New lines are not highlighted when highlighting Actor or Actors.
- Copied text includes filtered-out data.
- Scrolling is irregular if there is a lot of filtered-out data.
1.7.4 2010-06-18
Bug fixes:
- PR 1135 New PR for spurious "command completed" sounds.
1.7.3 2010-05-27
Visible changes:
- Re-added None to the Log window's severity filter menu
- Windows are displayed within the visible screen area, even if the saved positions is not (as can easily happen if you sometimes connect a laptop to an external monitor). The code assumes your visible screen is a rectangle, so it can be fooled by strange screen arrangements.
- The unix version requires Python 2.5 or later (but not 3.x).
Bug fixes:
- PR 1111 TUI makes the Command Done sound every 5 secs while tcam is guiding on a bright star. (More precisely: TUI may execute a findStars command whenever a new guide image is received, depending on how Thresh or RadMult are set.)
1.7.2 2010-04-23
Visible changes:
- Added Agile Guider, a guider that works from science images. This is somewhat of a hack, so be sure to read the help page (open the guider, point to a control, right-click and select Help) before using it.
- The About TUI window now shows the paths to special files such as preferences and TUIAdditions directories.
- On unix, the shared TUIAdditions directory is now up one level (to the parent of the parent of the directory named TUI), so that it is independent of the TUI source tree and is shared by all versions of TUI.
Internal changes:
- Added guider information for the "afocus" actor.
- TUI.TUIPaths: added functions getGeomFile and getPrefsFile and added ifExists argument to getAddPaths.
1.7.1 2010-03-15
Visible changes:
- The Users window now shows additional information about each user. If you can't see it, make the window wider.
Bug fixes:
- Save As is broken in The Run_Commands script.
- Fixed a bug in tracking command severity in status bars.
- NA2 Guider Image: some help strings said Echelle.
Internal changes:
- Includes RO package 2.3.4.
- Compatible with the experimental Agile guider (which requires RO package 2.3.2 or later).
- The log window code was simplified by taking advantage of new capabilities in RO.Wdg.LogWdg in RO version 2.3.4.
- Modified to send the hub the version # without the date at connect time, to simplify the version display in the Users window.
1.7.0 2010-01-11
Visible changes:
- Added "Play Sounds" preference. This turns off all sounds except "Command Done" and "Command Failed" in response to your own commands. This allows users to quietly monitor what is going, and allows running multiple TUIs in the same room with only one playing sound cues.
- Implemented PR 1060: in the Enclosure window, reorder the tertiary ports so they are listed from the (new) minimum to maximum position.
- Status window: changed axis controller bit 14 description from "Servo error too large" to "Motion error too large".
Internal changes:
- Uses pygame to play sounds instead of snack. Unix users must install the python package pygame to hear sound cues.
- Focus scripts: reduces the minimum focus correction from 50 µm to 25 µm.
Bug fixes:
- PR 131 TUI sound cues get later over time.
- PR 675 TUI sometimes missing message beeps, other sounds.
1.6.2 2009-10-06
Visible changes:
- The Status window is now listed under the TCC menu instead of the TUI menu.
- Axis controller status display has been updated for the new axis controllers.
Bug fixes:
- Log window: if an actor disappeared from the hub then it was no longer possible to filter messages for that actor.
- Status window: the minimum and maximum software position limit messages were swapped.
Internal changes:
- Collecting information from the hub when connecting is now much more efficient and will not repeat commands when information is missing.
- Window names are now module constants, to make changing window names safer.
1.6.1 2009-07-20
Bug fixes:
- PR 1022 if an actor disappears from the hub then it is no longer possible to filter on that actor in the Log window.
1.6 2009-07-09
Visible changes:
- Added support for Agile.
- Overhauled image download:
- Users now have two new options for image download: only download every Nth exposure or only download current exposures (skip intermediate exposures if the connection is too slow to keep up). At present all this is controlled with a single integer: 0 for no download, N to download every Nth image (N=1 to download all of them) or -1 to download only current images. I have some ideas for improving the user interface if this is felt to be too tricky.
- Images are now downloaded sequentially (though DIS images are downloaded in red/blue pairs). This should speed up download and prevent out-of-sequence download.
- Please update your exposure prefs to set the desired default download behavior.
- The TUI menu now has an entry for the Status window, in case you minimize it or somehow succeed in closing it.
- Slew window: removed the Stop button at request of APO because it is hard on the current telescope axis drives. Alternatives include: command a new slew (to supersede the current one), wait for the current slew to finish, or ask the obs specs for help. The Stop button will be restored when we upgrade to the new axis controllers.
- Version History: updated links to 3.5m problem reports to point to new server.
Bug fixes:
- PR 965 SPIcam focus script fails.
- PR 946 Permissions window does not handle new actors properly.
- PR 931 cmd-W closes Status window on Mac OS X.
- PR 905 TUI not displaying tspec critical alarm state.
- NA2 Guider:Focus GMech script: fixed a bug that prevented it from restoring the original focus at the end if the script fails (it was trying to read original focus from the wrong BaseFocusScript member variable).
Internal changes:
- TUI error log files are named by date and the 10 most recent previous log files are saved.
- TUI error log files now include data sent to stdout as well as stderr. This means that the extra diagnostic information for PR 777 will now appear in the error log.
1.5.1 2008-09-26
Visible changes:
- CR 854: Removed Array Power from TSpec window.
- CR 851: TripleSpec slitviewer: changed default bin factor to 2 (from 1).
- CR 818: Make the Gmech Focus script take a final full-frame image when finished.
- CR 809: Added "x" and "y" labels to SPIcam CCD info.
Bug fixes:
- PR 859 NICFPS Dither scripts do not return to original boresight.
- PR 855 TUI asks for nonexistent tcamera keywords.
- PR 852 Tspec NOD script does not reliably return to original boresight upon abort.
1.5 2008-07-17
Visible changes:
- Added support for TripleSpec (called TSpec in TUI).
- NICFPS Improvements
- Modified NICFPS:Dither:Point Source to include a randomization option (thanks to Corey Wood) and to show the order and status of each dither point. Updated the documentation accordingly (including nice graphics by Corey Wood).
- Added NICFPS:Dither:Extended Source (thanks to Corey Wood).
- CR 744: Change default exposure time in NICFPS:Focus script to 6 seconds.
- Guider/Slitviewer Improvements
- Guider windows: added deeper cuts (58-95%) to the range menu and ignore masked pixels when computing the brightness "stretch". This makes it easier to see low signal in the TripleSpec guide images.
- Added exposure status display to the guide widget. But at present this only works for TSpec because the hub does not report the information for other guiders.
- Improved guiding support for slow connections. Once TUI starts downloading a guide image it ignores all subsequent guide images until the download is finished. Then it starts downloading the last image taken. For slow connections this makes the display more deterministic and uses bandwidth more efficiently. Users on fast connections will not see any change.
- The Mac version now includes Tcl/Tk 8.4.19. This should clean up some visual glitches in the Mac version, though it comes at the cost that Mac OS X 10.3.9 users cannot save window positions.
- NA2 scripts Focus Sec and Focus GMech both now use windowing (now that PRs 739 and 740 are both fixed).
- The Enclosure window now has one Cancel button that can cancel all executing commands. Also each widget is disabled while the command it sent is executing.
- CR 692 Added a umask preference (under Exposures).
- Updated status bit descriptions for new axis controller.
- Updated instrument documentation links to take advantage of brand new index.html files (thanks Gabrelle).
Bug fixes:
- PR 836 Secondary Focus window can't display -####
- PR 833 Set focus window from the NA2 guider says "New Secondary Focus"
- PR 799 Focus script issues traceback if range is 0. More generally, logging exceptions was not unicode-safe and I fixed that in quite a few locations, though in practice I think it would only show up while running scripts.
- PR 797 Guide images can be displayed out of order.
- PR 796 Traceback when tertiary rotation at home.
- PR 667 Enclosure widget lets user double-click on mirror cover controls
- PR 601 + symbol for rotation in slew window causes error.
Internal changes:
- Added focusOffset, minFocus and maxFocus to gmech model.
- User-added scripts can now figure out where they are, making it practical to support html help files. In particular you can now right-click on the autofocus script to bring up its help file.
1.4.5 2008-02-14
Users on Mac OS X 10.3.9 please see the Mac warning.
Visible changes:
- Guider Windows:
- The NA2 Guider window can control the filter and focus.
- Changed default scale to Linear and range to 99.9% to 99.5%
- Scripts:
- Added NA2 Guider script "Focus GMech". Renamed NA2 Guider script Focus to "Focus Sec".
- Focus scripts now require the focus step size to be at least 50 microns. This prevents wasting time with unreasonably tiny steps.
- The guider status in the Status window shows the camera as well as the state (unless the state is Off or unknown) and shows Manual as a separate state, in blue, to help identify failed autoguiding.
- Cosmetic changes:
- Renamed Cancel to X in most windows (but not yet scripts). This makes many windows narrower.
- Properly enable/disable buttons in all instrument windows, Secondary Focus and Connect.
- Added a cancel button (X) to the Secondary Focus and Echelle windows.
- The Mac version is once again a universal Binary. This version uses the native Tcl/Tk because that seems to work best for Mac OS X 10.5 (though it has cosmetic issues: some buttons may not appear until you press them, other buttons may be shown as disabled even if they are enabled).
Bug fixes:
- PR 739 NA2 Guider Focus GMech script subframing is wrong. This appears to be due to gcam subframing wrong; I submitted PR 740 to this effect and worked around the problem by disabling subframing.
- PR 724 gfocus values do not display/update in TUI status window. This broke in all prior versions of TUI when control of the NA2 guider mechanicals was removed from the TCC to a new hub actor.
- PR 720 SPIcam focus script failed, funky error message. Note that I think I worked around the problem but still don't understand how it could cause these symptoms so this may not yet be fully fixed.
- Rotation type is once again displayed in the Status window.
- PR 701 Enclosure window heater All On/All Off buttons are reversed.
Internal changes:
- All instruments now use a common "StatusConfigWdg" instead of each writing their own. This reduces replicated code and offers better commonality.
1.4.4 2008-01-03
Visible changes:
- Improved the guider control-click offset. The offset is displayed as an arrow. The offset may be modified by dragging the mouse, and may be cancelled by dragging the mouse off the image.
Occasionally the mouse position is reported incorrectly on Macs due to a Tcl/Tk bug. Formerly this caused mysteriously wrong control-click offsets. Now you will see the problem: the arrow will not start at the mouse pointer (or will not appear at all if the incorrectly reported mouse position is off the image). The arrow shows the offset you will really get. You may move the mouse until the arrow shows the offset you want, or cancel the offset by moving the mouse until the start of the arrow goes off the image (at which point the arrow will disappear, indicating that no offset will be sent).
- NICFPS improvements:
- Fowler Samples is a normal entry box instead of a menu. The menu was already very long and could have gotten longer someday.
- Fixed some layout problems in the NICFPS window.
- The "about box" now includes the version of various libraries used by TUI. This is useful information for diagnosing bugs.
Internal changes:
- NICFPS now reports the maximum number of Fowler samples allowed, so I modified TUI to use this information instead of hard-coding the maximum. This will be handy if NICFPS is ever modified to allow more Fowler samples.
Bug fix:
- TUI focus scripts were incompatible with matplotlib 0.91.1. Note to script writers: do not call matplotlib.use() because it raises an exception (in matplotlib 0.91.1) once matplotlib.backends has been imported. To work around this TUI now configures the matplotlib backend at startup.
1.4.3 2007-11-16
Visible changes:
- One may now specify a port after the hub host address (after a space).
- NICFPS now allows up to 15 fowler samples.
1.4.2 2007-11-09
This version is only for Macintoshes. It fixes two Mac-specific bugs by reverting to an older version of Aqua Tcl/Tk. As a result Mac TUI is once again not a universal binary.
Bug fixes:
1.4.1 2007-10-09
Visible changes:
- The Mac version is now a universal binary (now that Aqua Tcl/Tk 8.4.16 is available and appears to have a few serious bugs fixed). However, Save Window Positions does not work under Mac OS X 10.3.9.
- Enclosure window: tertiary rotation positions are now in order of rotation.
Bug fixes:
- PR 666 the Slew window commands a rotator type and angle even if the current instrument has no rotator.
1.4 2007-09-10
Visible changes:
- SPIcam control
- Improved the Focus scripts:
- Focus scripts have user-settable bin factor (instrument permitting). Note: the bin factor and windowing used by the focus script do not affect science exposures.
- Slitviewer focus scripts now take a final full-frame image (after restoring the boresight). Warning: it will be blurry if the script fails or was aborted.
- Focus scripts now make sure the actor that centroids is alive. This removes a source of silent errors.
- Instrument focus scripts now assign a sensible filename for focus images.
- Improved the Slew window:
- Option panels are hidden and disabled if they are not relevant for the currently selected coordinate system.
- Option panels are automatically opened or closed as appropriate when you select a star from the Catalog. This makes it much more useful to add special options to catalog objects (e.g. to retain a particular offset or select a certain axis wrap).
- Switched to numpy from numarray and Numeric. Unix users must install numpy 1.0 or later.
- You can no longer pause darks for any instrument. It makes no sense to pause a dark exposure, and pausing a dark sequence is not supported by the hub.
- Guide windows: improved the scale and range menus. Both the available options and the default setting are better.
- Increased length of Message history from 100 lines to 5000 lines.
- Command sound cues are now played for the Enclosure window, Permissions window and Truss Lamps window.
- The Enclosure window controls more devices and the controls are simpler.
Internal changes:
- Improved checking of the user's clock. TUI now requires a current UTC_TAI (instead of using a guess) before checking the clock. Also, TUI will now get that information soon enough to perform the check as the user connects (except under extremely unlikely circumstances).
- Added ccd temperature and ccd current to the DIS model.
- The Windows version now uses the latest version of Python and python packages.
- Modified the TelMech model to accept "?" as a value meaning "unknown state" instead of printing an error message to the log.
- Improved the fidelity of the debug mode for the focus scripts.
Bug fixes:
- PR 641 Enclosure GUI gives no sounds for command completion
- PR 620 Error log entry on connection due to nicfps keyword fp_z = -9999.
- PR 603 Pausing darks either needs to be disabled or redefined.
1.3 2007-02-20
Visible changes:
- Added CCD window (subframe) support for guiding.
- Added Russet's helpful Guiding User's Guide to the on-line help.
- Added DIS:Focus, Echelle:Focus and NA2 Guider:Focus scripts and overhauled the NICFPS:Focus script.
- Major improvements to the Log window. Filtering and search are improved and you can now highlight text of interest.
- Mirror Status window updated for new top end.
- Documented compatibility in the version history.
Known issues:
- The Echelle Slitviewer window will show the window control in pink for full frame images. This appears to be due to a bug in the guide image controller or the camera control library that prevents returning images larger than 511x511. We hope to either fix the bug or implement a workaround for 1.3 release.
- The Log window's Next/Prev control sometimes appears to do nothing. It is actually finding hidden (filtered out) highlighted text; keep pressing it until you get a visible result.
- The DIS:Focus and Echelle:Focus scripts move the boresight during operation and move it back and the end, but they do not take a final exposure. Thus the image shown in the slitviewer window will be outdated.
Bug fixes:
- PR 519 Nicfps Focus Script shows blank window for image.
- PR 518 DIS and Echelle Focus scripts raise: unexpected keyword argument 'scalex'.
- PR 515 NICFPS dither script does not stop exposure when stop button pressed.
- PR 511 Permission widget buttons poorly sized for fvwm2 window manager.
- PR 499 DIS masks with integer names cannot be selected.
- PR 493 NA2 Guider has Boresight (?!) for default mode.
- PR 451 NICFPS focus script plot (fails to plot if script is run more than once).
- PR 429 Sound prefs do not show their initial value.
- PR 428 No "guiding begins" sound cue with NA2 guider.
- Guide windows: an issue with Thresh and Rad Mult range checking could cause tracebacks in the error log.
- Floating entry widgets could indicate a non-default value for values numerically equal to the default.
- Updated some links to the APO web server.
- Fixed error in installation instructions claiming incompatibility with intel Macs.
- One page of the scripting tutorial showed source for the wrong script.
Internal changes:
- RO.KeyVariable: Added keyVars argument to CmdVar. This allows retrieving data returned as the result of a command.
- RO.Wdg.Entry: added doneFunc argument: a function to call when the user types <return> or the widget loses focus.
- RO.Wdg.LogWdg: totally overhauled. Now includes just the log area (users are expected to add the extra controls needed). Includes powerful new methods for filtering and searching.
- Changed the source code to use 4 spaces for indentation instead of tabs.
- Changed
#!/usr/local/bin/python
to #!/usr/bin/env python
in all executable python source files.
- Started work on bundling a linux package using pyinstaller (but it's tricky and I have no estimated time of completion).
- The RO package has a new layout; to accommodate this tuiroot/RO is now a symbolic link.
1.2 2006-06-06
Visible changes:
- Guiding overhaul:
- You may change most parameters of the guide loop while it is running, including exposure time, guide mode and guide star.
- The current guide mode is shown in the guide status at the top of the window.
- The boresight is shown in slitviewer images (as a +).
- The guide star is shown as a magenta circle with a big magenta plus (+) split into two parts: the outer part is the measured position and the inner part is the predicted position. The difference in location between the two portions of the plus is thus the raw guiding error.
- The color of various guide image annotations may be set in Preferences.
- The default exposure time is now 5 seconds (instead of 10 seconds).
- Instrument configuration controls that show the current value will now track the current value. In other words, if a configuration control is not pink, then it will not go pink if somebody else configures the instrument.
- Scripting improvements:
- Added script Run_Commands to run a set of commands.
- Added beta script NICFPS:Focus which takes a sequence of images at varying focus and attempts to predict the best focus. This script was generously contributed by Stephane Beland, with some adaptation on my part.
- Scripts may run subscripts.
- Scripts may be defined as classes, making it much easier to pass data without the use of global variables. All built-in scripts (except the first three tutorial scripts) were changed accordingly, to provide good examples.
- All built-in scripts now have reasonable support for off-line debugging. As a result, various bugs were found and squashed.
- Offsets are now computed (to protect the axis actuators) including:
- Nudger offsets
- The script NICFPS:Dither:Point Source
- Added an Enclosure window (in the Misc menu). It is somewhat crude, but will do for now.
- The Log window now shows UTC time of each entry.
- Plays the "Axis Halt" sound cue if an axis controller reports an error state (shown as red text in the axis controller status portion of the Status window).
- The Mac and windows versions now include matplotlib, so you can use scripts that create plots.
- Added a new help file TUI:Tidbits:Special Files, which lists the special files read and written by TUI and includes links for more information.
- On Mac and Windows error messages are now saved to a log file.
- The Windows executable is now called "TUI.exe".
- Multi-line commands pasted into the log window command area are now rejected.
- The Mac OS X version is now distributed as a disk image (.dmg file).
Bug fixes:
- PR 426 TUI wouldn't let user browse for catalogs.
- PR 401 An invalid message from the hub causes a traceback in TUI.
- PR 388 Guide windows initially use "Linear" scaling function but show "ASinh 0.1".
- PR 387 Quitting TUI on Windows raises an error.
- PR 386 Cannot copy data from the Message window.
- PR 365 Switching to Mount in the Slew window may abort, leaving Az in hours.
- PR 358 The slew countdown timer does not go away after an axis stop.
- PR 314 The Permissions window has missing checkboxes if a new actor is added.
- PR 311 Traceback in TUI.Guide.GuideWdg.doDragContinue.
- PR 289 Hub commands can inadvertantly be sent through the message window.
Internal changes:
- TUI now sends version and platform info at login. Soon I hope this will allow warning about outdated versions. Meanwhile, it allows collection of statistical data.
- Added RO.Wdg.CmdWdg (split off from RO.Wdg.CmdReplyWdg).
- The Mac OS X version includes python, making it more likely to be compatible with future versions of Mac OS X. Also, it is now built with py2app instead of bundlebuilder (py2app is the new way to build Mac distributions and slightly simplifies the build process).
Version 1.1 2005-10-24
Visible changes:
- Preferences:
- Added a new preference "View Image". This will display any automatically downloaded images in ds9. You must have ds9 and xpa installed to view images. If in doubt, try the DS9 button in any guide image viewer.
- Renamed "Auto FTP" to "Auto Get" because ftp is no longer used. Your existing preference will be used.
- Please open Preferences and select a preferred value for "View Image", then Save your preferences.
- Note that new preference files will work with older versions of TUI, but Auto FTP will have its default value and you will see a few warnings about unrecognized preferences.
- Exposure windows: redid the Prefs controls:
- You can now toggle Auto Get and View Image in exposure windows. These checkbuttons only control the specific instrument (unlike the corresponding global preferences, which control all instruments).
- Added a More... button which opens the global exposure preferences.
- Users logged in as program APO are now considered everybody's collaborator, for purposes of Auto Get. Thus the obs specs can more easily monitor the instruments and help the observers.
- NICFPS: added status and configuration for:
- Slit in/out of the beam
- Slit focus
- Fowler sampling
- Improved the way TUI talks to ds9:
- Corrected the installation instructions for ds9 and xpa on Mac OS X and Windows.
- Mac OS X: automatically launches X11 before trying to use ds9 to display images.
- Improved error handling when xpa or ds9 are not found.
- The minimum exposure time for guiders and slitviewers is now 0 (instead of 0.1 seconds). However, very short exposures may not be uniformly illuminated, or illuminated at all, depending on the camera.
- Added a self-contained Windows distribution.
- Mac OS X only: Command-Q now quits and Command-W now hides the front window. The former was displayed in the menu but was ignored. The latter is not (yet) in the menus.
Bug fixes:
- PR 292 DS9 typically not usable from Mac OS X.
- PR 276 Abort, Stop, Pause buttons don't work in exposure windows.
- PR 274 Cannot select other guide stars by clicking on a guider image.
- PR 272 standard scripts not available on Mac TUI.
- PR 269 once Seq By File is specified, it cannot be undone.
- PR 261 axis controller hardware problems reported as "stop button".
- PR 256 TUI does not always re-enable the Start button when an exposure fails.
- PR 209 gcam messages getting into paste buffer (not a sure fix; I have not been able to reproduce it, but I changed something that might possibly cause it on some platforms).
- PR 132 on Mac the Script menu is empty the first time it is selected. This is a tcl bug, but I found a workaround.
Version 1.0.1 2005-09-07
Visible changes:
- For each instrument's Expose windows: the Start button is disabled and the Pause, Abort and Stop buttons are enabled whenever a sequence is running (no matter who started the sequence).
- Message window: if you type in the output pane (top pane), the text goes into the input area. Also, you can now copy text from the output pane.
Internal changes:
- Reorganized the code to simplify packaging and speed up startup.
Bug fixes:
- Command replies shown in the status bar sometimes had unnecessary parenthesis.
- PR 240 Distance is ignored in Slew and unacceptable in catalogs.
- PR 229 On-line html help does not load on Windows.
- PR 224 The time field must be filled in before one can take a bias.
- PR 213 Very large offsets from ctrl-click with no function selected. (Fixed in Aqua Tcl/Tk 8.4.11.)
- PR 134 Mac TUI puts up an unwanted Console window.
- PR 61 TUI menus may show up in the wrong place under Mac. (Fixed in Aqua Tcl/Tk 8.4.11.)
- Fixed Secondary Focus html help. The Help entry on the contextual menus pointed to a nonexistent file (and the incremental menu had no contextual menu at all). Also the TUI:Telescope page had no reference to the help page. Thus the help page was well hidden.
- If the focus widget gets zero time for a mirror move it will not attempt to display a countdown timer. (Such a timer caused an exception; RO.Wdg.ProgressBar has also been modified to handle that more gracefully.)
Version 1.0 2005-07-19
Warnings:
- TUI 1.0 requires some additional packages to run (for guiding support). Non-Mac users must install the following packages as per the installation instructions:
- numarray
- pyfits
- Python Imaging Library (PIL)
- The Echelle instrument control computer has been replaced with an improved version (after the old one became flakey and unmaintainable). TUI 1.0 or later is required to talk to the new Echelle controller (Remark and earlier versions of TUI will not work).
Visible changes:
- Added guiding support (Guide menu). Please read the on-line help before trying to use this!
- Added a Nudger window (in the TCC menu).
- Added a sound for "no guide star found".
- The "FTP Log" window has been renamed "Downloads". Your preference for the location and size of this window, and whether it is initially visible, must be re-established. To do this, set the new window as you like it and select Save Window Positions.
- Image downloads are now done via http instead of ftp. This should simplify use from behind firewalls.
- The default "Save As" directory is now your standard documents directory.
- Added "Copy All" to the contextual menu for status bars and other read-only entry fields.
- Status bars should be less chatty while executing commands. Information messages are no longer shown unless they contain text (a Text keyword).
- Echelle changes:
- Modified to use new Echelle instrument control computer.
- Added display of shutter state.
- Minor tweaks to the Echelle window.
- NICFPS changes:
- The NICFPS Expose window no longer has the useless and confusing "bias" option.
- The NICFPS configure window now has a "Detector" section that allows you to change the window (with much thanks to Stephane Beland).
- Removed GRIM support.
- Sky window: modified to use TCC-reported azimuth limits (instead of hard-coded values).
- Slew window modified to use TCC-reported azimuth and altitude limits for Mount coordinates (instead of hard-coded values). Note that TCC-reported limits were already being used for mount rotation angle.
Known limitations as of 2005-06-27 include:
- Cannot change exposure time or filter while guiding (unless you send text commands).
- No windowing support for the various guiders (unless you send text commands).
- No support for the NA2 guider's filterwheel and focus (unless you send text commands).
- No display of boresight on slitviewer images.
- No display of guide corrections (though you can easily see a history of guide images). Graphs would be optimal, but may require installing yet another 3rd party python package.
- No display of the mask or masked data.
- The DS9 button will fail without a useful error message if xpa is not installed. This is due to a misfeature of xpa (though I still hope to figure out a workaround).
Bug fixes:
- PR 205 NICFPS exposure time of 0 rejected by Expose window and sends None in dither script.
- PR 199 Auto FTP may delete files.
- PR 196 the Choose... button in the guider windows can silently fail on Mac OS X.
- PR 188 guide window zoom can make TUI unresponsive.
- PR 180 ftp leaks memory.
- PR 154 Once you click on the status bar you cannot get rid of the cursor.
- PR 28 Guide on/off sound timing misplaced.
- If you scroll a guider image to the edge, it may zoom out slightly.
- The following are probably fixed because the download system has been entirely rewritten. However, I was not able to reproduce them and they remain mysteries.
- PR 186 Auto FTP stopped transferring.
- PR 174 Auto FTP occasionally does not transfer an image.
- The middle mouse button would paste the selection into the status bar (and other read-only entry widgets), at least on unix.
- Focal Plane window: if the rotator limits changed then the current and target positions might not be properly centered on the new spiral.
- If the rotator limits were both positive or both negative it would have been difficult or impossible to specify a rotation angle in mount coordinates.
- Help for Status window was a bit out of date.
Version 0.94 2005-02-18
Visible changes:
- Improved feedback as to what will change when configuring an instrument. Modified parameters have a pink background (Bad Background preference). The old "!" indicator is now only used in the Preferences window.
- Secondary Focus window overhauled. The delta-focus buttons now act immediately and the delta amount can be set via a pop-up menu.
- Users window: your program and user name are underlined.
- Permissions window: your program name has a leading asterisk (I plan to change it an underline if I can find an acceptable implementation). Also, for those who can set permissions, the "!" indicator is gone, replaced by the new pink background.
- Modified the tlamps widget to display changing lamp in pink. Also improved tlamps help to indicate more clearly what can go wrong if non-TUI users mess with the lamps.
- Modified the NICFPS:Dither script:
- Renamed to NICFPS:Dither:Point Source in preparation for adding more dither patterns.
- Changed Offset Size to Box Size. Box Size is the size of the dither box along one axis (x or y); thus it is twice as big as the old Offset Size; a Box Size of 20" has the same effect as an Offset Size of 10". This was done to make the parameter clearer (especially with a planned new dither pattern that will have X and Y offset in addition to box size).
- Changed the default box size to 20" (the old default was 30").
- Changed the dither order to ctr, UL, UR, LR, LL, to be more efficient.
- The dither pattern checkboxes are recorded when the script starts running. Thus changes during script execution are ignored (just like the other input widgets).
- Modified the GRIM:Square script dither order to ctr, UL, UR, LR, LL, to be more efficient.
Bug fixes:
- PR 129 The FPCalibrate and DataCube scripts are broken.
- PR 130 proper motion miscomputed when displaying catalog objects on the sky window.
- GRIM: a traceback occurred if one toggled the Dark checkbutton on and off before connecting.
Version 0.932 2004-12-22
Visible changes:
- NICFPS changes:
- Minimum exposure time reduced to 0.
- Overhauled the DataCube script. You can now restart a partial data cube and pick the number of passes in which to sample the z spacing (1, 2 or 3).
- Etalon response time and mode are ignored (no display, no controls).
- Added a basic debug mode to the script runner.
Bug fixes:
- PR 100 Can't select targets from the history list.
- NICFPS: Etalon Z spacing was not being automatically refreshed.
Internal changes:
- RO.DS9
- Bug fix in xpaset: if data does not end in \n, an \n is appended. This fixes an incompatily with older versions. Warning: dataFunc must supply a final \n if needed; fortunately when sending array data (the main use for which dataFunc was envisioned), a final \n does not appear to be needed.
- Modified to use the subprocess module (one is supplied from RO.Future if your python is too old to have one).
- RO.Future: subprocess module updated to the one from Python 2.4 release.
- RO.Wdg.GrayImageDispWdg added: this is a preliminary implementation of a grayscale image viewer. It is not yet imported into RO.Wdg (that will be done once it is released).
- RO.InputCont overhauled:
- Made ContList a subclass of WdgCont to clean up the code.
- WdgCont modified to be like ContList in the following ways:
- restoreDefault and setValueDict now make just one callback,instead of one callback per input container.
- Added removeCallback.
- Renamed doEnable to setEnable to match RO.Wdg widgets.
- Eliminated formatNow argument (it was not being used and was broken).
- RO.Wdg.InputContFrame: added removeCallback; added callNow argument to addCallback.
- RO.Wdg.OptionButton: renamed doEnable to setEnable to match RO.Wdg widgets.
- RO.Wdg.OptionMenu: rearranged a few methods into alphabetical order.
- RO.Wdg.RadioButtonSet: renamed doEnable to setEnable to match RO.Wdg widgets.
- RO.Wdg.ScrolledWdg: corrected a doc string error.
- RO.Wdg.StatusConfigGridder: ConfigCat is now a class constant.
Version 0.931 2004-11-19
Bug fixes:
- Images were being mis-transferred (as text, not binary). Fixed in RO.Comm.FTPLib.
- A mal-formed prog-username (missing a ".") from the hub could cause a nasty traceback.
Internal changes:
- Modified Mac app builder script to use the associated RO and TUI instead of the main copy, to avoid including svn files.
Version 0.93 2004-11-18
Visible changes:
- Modified to ftp 2 files simultaneously (e.g. both blue and red DIS images), taking advantage of APO's new fast link.
- Added preliminary NICFPS control, including two scripts. Before trying to use NICFPS, be sure to contact APO about limitations and which version of TUI is required.
Bug fixes:
- PR 82 The Open... item in the Scripts menu was broken.
- Mac OS X: graphics in the Sky and Focal Plane window were somewhat out of position due to a workaround for a tk bug that was no longer needed. That workaround has been removed.
Internal changes:
- RO.Comm.GetFile renamed to RO.Comm.FTPGet; the UI changed because I started using ftplib instead of urllib to avoid a bug in urllib, and so only ftp is now supported.
- RO.DS9 bug fix: could only communicate with one ds9; fixed by specifying port=0 when opening ds9.
- RO.Wdg.Checkbutton: more sensible defaults; if showValue true then defaults to indicatoron false. If indicatoron false then defaults to padx = 5, pady = 2.
- RO.Wdg.FTPLogWdg: getFile arguments overhauled to match the changes in RO.Comm.GetFile -> RO.Comm.FTPGet mentioned above.
- RO.Wdg.Label: renamed method _setStatus to setStatus (it is a useful public method).
- RO.Wdg.PatchedCanvas: the corrections applied by this module are no longer needed and have been disabled. This module now issues a deprecation warning when used, and really doesn't do anything else. Please use Tkinter.Canvas instead.
Version 0.92 2004-10-13
Visible changes:
- Catalog error handling improved:
- If TUI could not parse the catalog, it gave no indication; it just kept saying "Loading file...".
- If an object was missing its name, TUI rejected the catalog, rather than skipping that object and listing it in the bad object report.
Bug fixes:
- TUI 0.91 needlessly required Tk 8.4.
- Improved the performance while disconnected. TUI was spending a fair amount of time repeatedly updating KeyVariables.
Internal changes:
- RO.Comm.TkSocket: fixed documentation for setReadCallback.
- RO.Comm.TCPConnection: fixed documentation for addReadCallback and addStateCallback.
- RO.KeyDispatcher modified to refresh KeyVariables once when disconnected, rather than repeatedly while disconnected. This should significantly reduce CPU load while disconnected.
- RO.Wdg.TkUtil.getWindowingSystem supports Tk 8.3 (? approx.) and earlier, by using an educated guess if "tk windowingsystem" is not supported.
Version 0.91 2004-10-11
Visible changes:
- The menu bar is more standard. On the Mac, TUI's menus show up in the menu bar, not in the Status window.
- Script file names cannot start with ".".
- Catalogs improvements:
- TUI is more responsive when large catalogs are displayed in the Sky window (at the expense of some delay in display). Note that loading huge catalogs still ties up TUI, but once they are loaded TUI should be responsive.
- The Open Catalog dialog box remembers the last directory and file. Also, on unix this dialog box used to show invisible files; it no longer does so unless you explicitly ask to see them.
- The Mac application now puts its version number in the standard location (e.g. Get Info shows it). As a result I no longer include the version number in the file name.
Bug fixes:
- PR 46 TUI locks up while launching a user's web browser.
- PR 69 Truss Lamps controls misbehave if user does not have permission to control the lamps.
- Corrected the Windows installation instructions in the Installation manual.
- Updated the Introduction for the preferences changes in 0.90.
- The units for offsets had ' and " reversed (reported by Russet McMillan).
- Performance was poor when a position was entered into the Slew window, due to inefficient use of callbacks.
Internal changes:
- Added RO.Comm.BrowseURL, which opens a URL in the user's default web browser. The launching is done in a background thread.
- RO.ScriptRunner bug fix: waitThread could fail for very short threads (basically it would try to restart the script before it had started waiting). Unfortunately, this proves that event_generate is not thread-safe, so I now poll for thread completion.
- RO.Entry.DMSEntry: units for relative dms fields had ' and " swapped.
- Added RO.Wdg.TkUtil.
Version 0.90 2004-10-01
Visible changes:
- Warning: TUI now requires Python 2.3! Python 2.2.x will no longer work. This is a result of the mechanism used to implement user scripts.
- Added user scripts.
- Scripts show up in the new Scripts menu.
- Built in scripts DIS:Drift, Echelle:Trail and GRIM:Square plus tutorial scripts.
- See TUI:Scripts for documentation, including a tutorial.
- Exposure and automatic ftp changes:
- File numbering is now always automatic, and thus more robust (formerly it was possible for an exposure to fail because the file already existed). You have two choices (set in Preferences): by file name or by directory. Read the Preferences help for more info.
- File numbering and automatic ftp are now controlled by preferences (in the Exposures category). This was done so exposures taken by scripts work as expected.
- The file name displayed in exposure status windows is now for the current exposure (or the most recent exposure if not exposing). Formerly it was always for the most recently completed exposure.
- The destination directory for automatic ftp now includes the program and date subdirectories, e.g. ftpSaveToDir/Q1UW01/UT04081/....
- Added a window to control the truss lamps (Truss Lamps in the Misc menu).
- Better feedback for commands typed in the log window. The appropriate sound queue plays when the command succeeds or fails.
- Added Clear, Cut, Copy, Paste and Select All to the contextual menus for text and entry widgets (read-only widgets only have Copy).
- All users now have a Permissions window. Only operatators can change permissions, but everybody can see them.
- TUI is now fully windows compatible. There is no Windows binary, so installation is nontrivial, but a binary installer may happen eventually.
- Improved the responsiveness of TUI while connecting.
- If an axis controller is not responding, the controller status now says "Not responding". Formerly it was left blank with a pink background (and an error message about invalid data was printed to the console).
- The Users window shows only real users (the hub recently added some automated users that were showing up as regular users).
- Slew window improvements:
- Added az, alt, airmass display. Alt is red if out of bounds.
- Added Defaults button and missing help strings to the Drift Scan window and corrected the units (/sec was missing from velocity controls).
- Removed the Restart Axes option panel from the Slew window; it didn't work (due to limitations in the TCC).
- Improved responsiveness while typing positions.
Bug fixes:
- PR 32 Refresh Display may cause the slew countdown timer to start.
- PR 40 Contextual help broken on Mac OS X (at least in many cases; see "internal changes" or the PR for more info).
- PR 42 Two sounds don't play on Solaris: AxisHalt and MessageReceived.
- PR 48 Focus problem with file and directory preferences.
- PR 52 If the user tried to deselect both cameras in the DIS Expose window (which is illegal), the last camera deselected was re-selected, but unfortunately it still showed up as deselected.
- PR 54 Mac TUI does not include the snack sound package.
- PR 57 Slew window Mag/PM panel does not show magnitude.
- PR 58 The "value changed" indicator was not displayed for most preferences.
- PR 60 Prefs menus can unexpectedly change color on the Mac.
- The comment for the current exposure is now displayed (formerly it was always blank). (I'm not sure how long the hub has been outputting this information; initially it was not.)
Internal changes:
- Added RO.ScriptRunner and RO.Wdg.ScriptWdg modules to run user-generated scripts that can wait for events without blocking and without needing to use callbacks in the user's script.
- RO.AddCallback: bug fix: used sys and traceback for error reporting but did not import them.
- RO.CnvUtil: added asBoolOrNone (for NICFPS).
- RO.Comm.TkSocket now works at the tcl level using fileevents and tcl sockets. This fixes a Windows incompatibility.
- RO.InputCont.ContList: the callback gets the entire ContList, not just the changed container(s), and only one callback is issued for setValueDict and restoreDefault, rather than one callback per container.
- RO.KeyVariable: major overhaul, including renaming KeyVar to CmdVar, adding abort capability and adding refreshOptional argument to KeyVarFactory.
- RO.KeyDispatcher: many improvements, including: Pending commands are aborted when disconnected. Improved the multitasking while refreshing variables and checking for command timouts. Added _replyCmdVar method to unify the sending of replies to command variables.
- RO.Prefs.PrefVar: DirectoryPrefVar and FilePrefVar modified to have no text entry field. This solves a focus infinite loop issue: if the user typed in an invalid value and then tried to use Choose..., the dialog box would never get focus because the edit field would take it back. This left the user no choice but to close the dialog box.
- The RO.Wdg package no longer includes unintended modules such as Tkinter. This was accomplished by adding __all__ to all modules that are automatically imported. (I was already used the _ prefix to excluded private constants, functions and classes, but the modules imported by each module were also showing up.)
- Renamed RO.Wdg constants by adding prefixes as follows:
- State constants have a prefix st_: st_Normal, st_Warning, st_Error
- Toplevel closeMode constants have prefix tl_: tl_CloseDestroys, tl_CloseWithdraws, tl_CloseDisabled
- RO.Wdg.Constants added to centralize widely used RO.Wdg constants.
- RO.Wdg.Entry: removed DirectoryEntry and FileEntry. Dir and file preferences no longer use entry widgets (see RO.Prefs discussion above), so they are no longer useful.
- Renamed RO.Wdg.ScriptWindow to RO.Wdg.PythonWdg to better reflect what it does and to avoid confusion with the new RO.ScriptRunner and RO.Wdg.ScriptWdg modules. Also modified to add a contextual menu.
- Renamed RO.Wdg.PythonTk to RO.Wdg.PythonTk for the same reason.
- RO.Wdg.StatusBar changes:
- No longer shows informational messages while executing commands. Just showns warnings, errors and completion. This was done to make the display easier to read.
- Added a helpText argument. Warning: if specified, this prevents the status bar from trying to show help and entry errors for other widgets in the same toplevel. helpText is typically only specified if you have more than one status bar in a toplevel, in which case one status bar should show help (as usual) and the others should have helpText strings (and thus not show help).
- Inherits from RO.Wdg.CtxMenu, making it easier to customize its contextual menu.
- Message levels documented to use RO.Wdg.st_Normal, st_Warning and st_Error constants. The numerical values have not changed, so old code will still work.
- RO.Wdg.CmdReplyWdg: added support for the command message callback to report an error. Renamed event callbacks with leading _ to indicate they are internal functions. Deleted the old and redundant method showCmd.
- RO.Wdg.CtxMenu changes:
- Renamed AddCtxMenu to addCtxMenu, since it is a function.
- Changed ctxShowHelp so that if a file: URL with an anchor cannot be loaded, it tries the same URL with the anchor stripped. This works around a limitation in Mac OS X and possibly other platforms. (Note: in some earlier versions of Mac OS X the anchor was silently ignored, but in 10.3.3 the file is not found.)
- CtxMenu no longer checks if the widget already has a contextual menu. This was done to allow RO.Wdg.StatusBar to inherit from CtxMenuMixin.
- Help url base handling moved to new RO.Wdg.Constants module.
- RO.Wdg.DMSEntry: added unitsSuffix (for velocity).
- RO.Wdg.LogWdg: the contextual menu now includes Copy.
- RO.Wdg.RadiobuttonSet two bug fixes: set and setDefault could reject valid values and set invalid values because they were checking the new value against textList (the list of button names) not valueList (the list of button values). Also, the module was using importing RO.AddCallback but not importing it.
- RO.Wdg.Text added to simplify read-only and contextual menu support.
- RO.Wdg.Toplevel changes:
- If wdgFunc fails, Toplevel propogates the error. As a result, ToplevelSet.createToplevel no longer creates an erroneous entry to a nonexistent toplevel if wdgFunc fails.
- bug fix: toplevels that were distroyed were not handled well. Now getToplevel returns None if a toplevel has been destroyed (or does not exist). Also, a name can be reused if the old toplevel has been destroyed.
- closeMode constants have prefix tl_: tl_CloseDestroys, tl_CloseWithdraws, tl_CloseDisabled
- Added RO.Wdg.WdgPrefs to handle internal RO.Wdg prefs. This combines code that was formerly in RO.Wdg.Label and RO.Wdg.CxtMenu.
- TUI.LogWindow: modified user command handling to complain when the user omits the actor (gives the usual audio cue and prints a message to the log window).
- TUI.TUIModel: added logMsg method. This is the new standard way to report errors.
- TUI quit made more robust: If an error occurred in disconnecting the hub connection while quitting TUI, quit would abort, leaving TUI running. This showed up during rewriting socket code (i.e. due to a temporary bug in sockets) and should never have affected users.
- URL for tcl/tk updated in installation instructions.
Version 0.85 2004-05-18
Visible changes:
- Unix users may now use right-click to obtain contextual menus. (The introduction already claimed this was so, and it turned out there was no good reason not to do it).
Visible bug fixes:
- Automatic ftp would hang while connecting. (This was due to an error in the way runtui.py was running TUI, causing contention for the "import lock". Thus only users using runtui saw the problem.).
- The main help page had a broken link to an obsolete page "Overview". Thanks to Oliver Fraser for the report.
- The Focal Plane window did not fill the space well when enlarged.
Bugs discovered by pychecker (or in one case while debugging the ftp problem). I suspect most of these were invisible or had only very obscure and subtle side effects.
- TUI.Inst.ExposeInputWdg had code that referred to a nonexistent class variable.
- TUI.Inst.DIS.DISModel: unbin had one reference to unbinnedCoors instead of unbinnedCoords.
- TUI.TCC.StatusWdg.OffsetWdg._updObjXYOff used "except a, b:" instead of "except (a, b):" to catch two classes of exception, so the second class was being treated as a variable.
- RO.Comm.GetFile and RO.Wdg.StatusBar: used sys.stderr to report some errors but did not import sys.
- RO.SeqUtil: flatten was called flattenList in a few places, breaking the flatten function.
- RO.Wdg.CmdReplyWdg: did not create self.cmdText if helpURL not supplied.
- RO.Wdg.Toplevel.ToplevelSet: referred to defGeomFixDict instead of defGeomVisDict
Version 0.843 2004-05-03
Bug fixes:
- The following fixes are for the Calibrate panel of the Slew window:
- PR 34 the Calibrate panel did nothing if the default options were used (altering any checkbox from its default value would make the calibrate command work). Thanks to Russet McMillan for reporting this.
- PR 37 the Find Ref Slew checkbox could cause the entire slew command to be rejected if unchecked (because it was sending the wrong keyword).
- PR 38 the calibrate options in the slew window would usually cause the slew command to time out (because the time limit was not expecting an integration).
- The following fixes are for the FTP Log window (only noticeable if ftp is working so badly that you probably cannot use it anyway):
- Abort button not shown while connecting.
- Aborting connections were counted as running and thus blocked new connections from starting.
Version 0.842 2004-03-11
Bug fixes:
- PR 30 the catalog menu was broken in 0.84 and 0.841. Thanks to Bill Ketzeback for reporting this.
- PR 31 focus commands from the Secondary Focus window could time out if somebody else was moving the secondary. (The command assumed the mirror would start moving within 10 seconds). Fixed by eliminating the time limit.
Version 0.841 2004-03-09
Bug fixes:
- TUI 0.84 failed to start under unix due to a bug in Main.py. Thanks to Craig Loomis for both reporting and diagnosing the problem.
Version 0.84 2004-03-08
Visible changes:
- User Catalog improvements
- Multiple user catalogs may be open at the same time.
- Long user catalogs are divided into manageable pieces in the Catalog menu in the Slew window.
- You can control whether a catalog is displayed in the Sky window and if displayed, the color used. For now this can only be set by editing the catalog, but I hope to add a more direct interface at some point.
- User catalogs and preference files may use any standard newline character (\n, \r or \r\n), but only for users with Python 2.3 or later (because universal newline support is not available in Python 2.2.x). The Mac OS X prebuilt executable uses Python 2.3, so Mac users are all set.
- All windows except Message, Log and APO's Permissions now play the "Command Done" and "Command Failed" sounds at the appropriate times. This was added to Focus, Offset, Slew and the various Expose windows.
- TUI additions can now have windows listed in the TUI menu. These appear in alphabetical order below Refresh Display. This enabled the next change...
- APO's Permissions window now appears in the TUI menu instead of the Misc menu. Unfortunately, this change means the window's current size and location will be forgotten. You must set it again and select Save Window Positions, or edit the TUIGeom file and change Misc.Permissions to TUI.Permissions to preserve your old setting.
- The Refresh Display menu item is now disabled when the you are not connected.
- It is now easier to launch TUI. Simply set up an alias or shell script that performs: python tui_root/runtui.py. There is no longer any need to mess with the PYTHONPATH.
Bug fixes:
- PR 26 the status bar text sometimes stays red, even though things are back to normal. This occurs after you try to execute a command with invalid inputs (i.e. start an exposure without specifying exposure time). Thanks to Bill Ketzeback for reporting this.
- This version history document had a title of "Overview".
Internal changes:
- Modified RO.Wdg.Toplevel to read geometry files using universal newline support (but only on Python 2.3 or later, because universal newline support is not available in Python 2.2.x).
- Modified RO.Prefs.PrefVar to read prefs files using universal newline support (but only on Python 2.3 or later).
- Simplified the script that generates the Mac executable.
- Modified RO.Wdg.StatusBar to optionally play "Command Done" and "Command Failed" sounds as appropriate.
- Fixed a bug in RO.Wdg.StatusBar that caused the text to sometimes not be reset to the normal color.
Version 0.831 2004-02-06
Bug fixes:
- The file RO/OS/getWinDirs.py had Mac line endings, making it fail under some versions of Python earlier than 2.3 (thanks to Jon Holtzman for the report). People using Python 2.3 or later do not need to upgrade. There will not be a Mac binary since 0.83 works fine.
Version 0.83 2004-02-05
Visible changes:
- The TUI prefs and geometry files are now located
in the standard location on Mac and Windows (using proper
system calls to find these directories even on non-English systems). There has been no change on unix. The file names and locations are documented here. Mac users must rename and move their files for them to be seen in the new location.
- The locations for TUI additions have been changed to better support double-clickable applications (e.g. Mac OS X). This affects all users with TUI additions (e.g. APO).
- TUI shows what it's doing in the log window as it searches for additions and loads them (during startup).
- Added an icon to the Mac OS X executable.
Bug fixes:
- PR 20 The Choose... button in Preferences:Auto FTP:Save To did not work. (A typo in RO.Prefs.PrefVar.py). Thanks to Bill Ketzeback for reporting this.
- PR 24 The positions from the user's catalog displayed in the Sky window do not automatically update. (The code was there but had a minor bug). Thanks to Bill Ketzeback for reporting this.
- The Mac application build script had a hard-coded link to one of my directories.
Internal changes:
Version 0.82 2004-01-29
Visible changes:
- The first version with a double-clickable executable for Mac OS X (10.3 only). See the installation instructions for the download address and Mac-specific notes.
Bug fixes:
- Exposure countdown timer would restart and files might be (re)transferred if anyone connected or refreshed their display. This was introduced in 0.80 and was caused by using the "keys" cache to refresh exposure data. Fixed by avoiding certain actions if data is from the cache.
Internal changes:
- Modifies Main.py to make it easier to create a Mac standalone executable (it no longer assumes it is in the TUI directory) and improved error reporting (to simplify building future standalone versions).
- Included a link to the TUI distributions in the installation instructions.
Version 0.81 2004-01-09
Visible changes:
- Added a Secondary Focus window (under the TCC menu).
Bug fixes:
Internal changes:
- The TCC displays are refreshed from data cached in the hub. This may speed refresh when connecting.
- Added setKeysRefreshCmd to RO.KeyVariable.KeyVarFactory. This makes it easy to get just the desired data and no other.
- Removed refreshKeys arg from KeyVar; use KeyVarFactory.setKeysRefreshCmd instead.
- Most keywords that refresh via "keys" (reading from the hub's cache) now explicitly specify the desired keywords (via KeyVarFactory.setKeysRefreshCmd). This avoids asking for extra unwanted data.
Version 0.80 2003-12-29
Visible changes:
- Added an Echelle configuration window. (Note: it has no "expert mode"; a separate window for collimating the Echelle is planned for the future.)
- Instrument displays (but not yet telescope displays) are now refreshed from data cached in the hub. This will speed up refresh when connecting (especially for instruments that are in use!).
- (APO only) added a Permissions window. Warning this only controls permissions for users connected to the new hub. Remark users (and users of the developmental hub) are not affected.
- Simplified adding widgets to TUI. Now any windows code placed in packages TUISharedAdditions or TUIUserAdditions are loaded so long as they are on the python path. Thus your additions no longer have to be in the TUI release directory tree (and in fact the "Local" directory is now ignored). See the Programming manual for details.
Bug fixes:
- Sounds play more reliably. I converted the sounds from .aiff to .wav format because the snack sound library seems to handle wav files more reliably. I still sometimes hear odd extra pops and such, and may end up switching to a different sound library.
Internal changes:
- Reorganized the source code and HTML help files for items in the TUI menu (by adding a TUIMenu subdirectory for help and another one for source). Also, I replaced TUIWindow.py (which loaded all windows in the TUI menu) with separate files for each window.
- Improved RO.Wdg.Checkbutton:
- set and setDefault are now compatible with KeyVariable addROWdg.
- Added showValue parameters.
- Added BoolLabel to RO.Wdg.Label.
- Extended RO.Wdg.OptionMenu.getIndex so one can supply an item name.
- Added RO.Wdg.ScrolledWdg.
- Improved RO.Wdg.Toplevel so the size of a window that can only be resized in one dimension is saved and restored. (Tk does not make this easy, but I finally figured out a way to do it.)
Version 0.77 2003-12-08
Visible changes:
- Added improved sound cues (especially if the snack sound library is installed). You can specify your own sounds using the Sounds panel in Preferences.
- Added a Users window (under the TUI menu).
- Added guiding status to Status window.
- Added a history menu to the Offset window.
- The Offset button is disabled while the command executes.
Bug fixes:
- PR 15: Slew option panels cannot be opened.
- PR 8: Offsets may claim they timed out (though in fact they do complete).
- PR 10: When TUI received a single keyword with an = and no values, it would go into an infinite loop.
- The user catalog documentation had a residual claim that the default coordinate system is ICRS (it is FK5, as the same document said elsewhere).
- If DIS was not initialized, TUI got fairly upset with some of the data returned (lots of messages logged to the console).
- While making a connection, the message "Connecting" was repeated in the log several times.
- The status bar sometimes showed old status after a new command started.
Internal changes:
- Added TUI/Sounds/, a directory in which sounds can be placed (and which also contains a sound player, moved from TUI/Sound.py).
- Added RO.Wdg.DirectoryEntry and FileEntry.
- Added RO.Prefs.PrefVar.FilePrefVar and SoundPrefVar.
- Modified RO.KeyVariable to support variables with varying numbers of values.
- Fixed a bug in RO.PVT that allowed generating invalid PVT objects (set checked the data but __init__ did not).
Version 0.76 2003-11-04
Visible changes:
- Added a Catalog menu to the Slew window. Catalogs have a very similar format to Remark catalogs, but are more flexible. See User Catalogs for details.
- The default coordinate system in the Slew window has been changed to FK5. This was done by request and to match Remark catalogs.
- Overhauled the Sky window (formerly called Telescope):
- Objects from the user catalog are displayed.
- Double click an object to set it up in the Slew window.
- I flipped the display so east is on the left, because that is the usual standard for displaying stars.
- Added automatic scrolling to the FTP Log window.
- If a History or Catalog item has proper motion or drift scan velocity data, the appropriate option panel is automatically opened, so the data will be used. The other (more obscure) option panels still don't open automatically; you have to open them manually to use special settings.
Bug fixes:
- The Config... button was broken in the GRIM Expose window.
- The DIS Config window could report a few errors while reconnecting.
Internal changes:
- Added the "potential" object and the user's catalog to TUI.TCC.UserModel. All communication between different TCC toplevel windows is now done via the userModel, allowing me to simplify the code that opens TCC windows.
- Modified RO.Wdg.OptionPanelControl to allow panels to open or close themselves.
- Fixed a bug in RO.Wdg.Entry setRange: it was trying to make sure the default was in range, even if there was no default. That caused the DIS COnfig bug mentioned above.
- Modified RO.InputCont containers to not restore defaults during creation. It is unnecessary for RO.Wdg widgets and can cause trouble by prematurely triggering callbacks.
Version 0.75 2003-10-22
Warning: this version of TUI uses a new version of the hub. The new hub will not work with older versions of TUI!
Visible changes:
- Offsets are now always computed. This is by observatory request; immediate offsets turn out to cause violent and potentially harmful motion of the telescope. As a consequence, offsets will take longer, but you will see a slew countdown timer for each offset.
- Instruments:
- You will not be notified immediately if you specify too short an exposure time.
- Changed the DIS configure window to use binned pixels for the CCD window.
- If the configuration controls are visible when you connect, the controls are automatically updated as the current configuration data comes in (but fields you have already filled in are left alone).
- Modified file name entry field to prevent invalid names.
- Connect dialog box:
- Added status bar help.
- If the User Name field is blank (as is usual for a new user) then it is updated "live" if you set the User Name preference.
- The Cancel button now leaves dialog open, so you can easily try again.
- The password field is always cleared when you close the window rather than after any attempt to connect.
- Changed Program Name to Program ID to match a new, unified naming convention.
- Preferences:
- Preferences are faster to apply and save, because only preferences that you change are now applied. Font and color preferences are still rather slow to apply.
- Preferences show status as you apply or save them. (Formerly some of these messages were sent to the console.)
- Two documents: "TUI:Overview" and "TUI:Changes from Remark" have been combined into "TUI:Introduction". This is the recommended quick start guide for new TUI users.
Bug fixes:
- Slew Window bugs
- Long slews always timed out.
- The history menu in the Slew window was broken.
- The Slew button in the Slew window was not disabled when a slew was started.
- Instrument-related bugs
- GRIM darks failed (the word "darK" was not being sent).
- DIS Expose mis-handled the case of a camera not being used. The associated filename was reported as subdir/None and auto ftp would then try to fetch that file.
- DIS overscan was incorrectly identified as being in unbinned pixels.
- Auto FTP bugs
- Auto ftp would fail if the local directory did not exist. (Note: Preference only allows selecting a local directory that does exist, so this bug was not likely to affect many people.)
- Automatic ftp would fail unless the "Get Collab" checkbox was checked.
Internal changes:
- Rewrote the underlying socket library. Connections now occur in the background, meaning your TUI won't freeze while the hub is being found.
- Changed to match changes in the hub. In particular:
- Every message is tagged with progID.cmdr instead of just cmdr.
- The expose commands have changed from
expose inst=inst
to instExpose
. This is a side effect of splitting the expose code into one process for each instrument, making the system potentially more robust (not that the old system was giving trouble, but it's still a welcome change; thanks, Craig!).
- Adapted to new, improved versions of expose keywords instFiles and instNextPath, instexpState and instseqState.
- Authorization keyword changed from username to cmdrID.
- Modified message parser to allow a leading period in the commander (which is now how unsolicited messages are transmitted.) Thanks to Craig for the tip.
- Running auto ftp no longer stalls while quitting. However, any files being written will be incomplete. (Note: I intend to overhaul the ftp library in the same fashion as the socket library, but that is for some future version.) Thanks to Craig for help with this.
- Stopped stripping leading slashes from the name parameter for expose commands; the hub no longer requires this.
- Totally overhauled the internal handling of CCD window (only relevant for DIS, so far). This was necessary to do a good job with supporting specifying the window in binned coordinates.
- RO.Wdg.Entry widgets handle final value checking more aggressively by pulling focus back to the widget on error.
- The beep signalling an entry error was moved from the entry error event generator to the event handler in RO.Wdg.StatusBar. This is in preparation for handling errors in user catalogs.
- Changed RO.Wdg.RadiobuttonSet's definition of "enabled". Now a RadiubuttonSet is assumed to be enabled if any of the buttons is enabled. This seems to match reality better and it fixed the GRIM dark bug mentioned below. Note that the programmer is responsible for making sure only enabled choices are selected.
- Connect dialog box overhauled to use RO.Wdg.Gridder and RO.Wdg.StatusBar, thereby simplifying the code and making it possible to add status bar help.
- RO.Wdg.Entry widgets modified so that setDefValue updates the displayed value if blank (can be turned off via defIfBlank flag).
- Changed RO.KeyVariable.KeyCommand.addCallback to force message types to lowercase. This avoids a class of problem that was represented by long slews always timing out.
Version 0.70 2003-09-30
Visible changes:
- Added automatic ftp of images.
- DIS Expose, GRIM Expose and Echelle Expose windows and a GRIM window for status and configuration. The Echelle still has no status and configuration window.
- Save Window Positions now also saves whether the window is open or closed. Thus you can have your favorite windows open when you launch the program. (Still to do: update the manual entry and hot help for Save Window Position)
- Errors that TUI generates (such as command timeouts) are now fully standard and so look more normal in the log window.
- Simplified the drift scan widget. Instead of a menu to choose between RA/Dec or Vel/Angle entry, both ways of looking at the data are always shown and you can set whichever you like (the other is automatically updated). Also, entry is in d:m:s instead of decimal degrees.
- The DIS configuration panel always opens to the current configuration. Thus you can reset the controls to the current configuration by hiding them and showing them again, if you prefer that to pushing the Current button.
- Fixed text input widgets to only accept ASCII. This is all the system supports and trying to send non-ascii characters causes myriad problems.
Internal changes:
- Overhauled RO.InputCont. The class itself is much simpler and formatting functions are more powerful. However, I reduced the maze of options, so you may have to write your own formatting functions more often. The value dictionaries have also been simplified, which is something I wanted for implementing user catalogs.
Bug fixes:
- Some DIS configure controls came up blank and so were shown as modified.
- The drift scan widget was not always properly restored from the history menu.
- The "bad background" color was not affected by the
relevant preference. (Thanks to Russet McMillan.)
Version 0.67 2003-06-19
Visible changes:
- Added Refresh Display command to the TUI menu.
- Hour angle is shown in the range (-12, 12] insted of [0,24).
- Added "hot help" strings to Status, Slew, Offset and DIS windows (and added a status bar to the Status window to show the new help).
- Improved the html help for the DIS window.
- Swapped Abs and Rel buttons in the Offset window so as to match Remark.
- Net position, offsets, etc. are upated 1/second if they have nonzero velocity. One exception is axis position (axis controller velocity is not regularly sent to TUI, so fixing this would be a big job).
Bug fixes:
- The slew countdown timer was not shown for all slews (due to TCCStatus sometimes issuing one last "tracking" report after SlewDuration seen). Thanks to Bill and Russet.
- The log window was not initially scrolled to the bottom (due to a change in the graphics library, i.e. this used to work fine).
Internal changes:
- Overhauled the DIS status/config window code, as planned. It now makes a reasonable model for other instruments (though I would still like to overhaul RO.InputCont to make it easier to use).
- Added TUIModel, which contains the dispatcher, prefs, etc., and refactored the code accordingly. This is analogous to the TCCModel and DISModel and saves passing fundamental application globals around.
- Updated and expanded the programming manual.
- The keyword dispatcher is no longer sensitive to the case of the keywords.
- The keyword dispatcher checks command replies purely by commander and message ID (no longer by actor). This means if the hub rejects a message (e.g. due to the hub not being connected to the TCC) the message will be reported as failed right away instead of having to time out.
- Finished changes for Python 2.3b1 compatibility.
- Fixed several common cases where a coding error would cause a brief error message on the console but no traceback (making debugging a pain).
Version 0.66 2003-04-29
- Added very basic sound cues: 2 beeps for end of slew,
3 beeps for the failure of a long command (presently only
configuring DIS).
- Slew window improvements: rotator angle limits are now correctly read from the TCC if rotation type = mount, and the rotator angle is correctly disabled if rotation type = none.
- Simple Offset renamed to Offset
- Settled on DIS control style 2: status and config combined in one window, exposure controls and status in another. Note: the code for the status/config widget is still rather messy and wants refractoring.
- Added a prototype (nonfunctional) DIS exposure window. Making it operational awaits nexpose support in the hub.
- Contextual menu improvements: control-click works for any button on unix; control-click was not working on Mac and now works for any button.
- Fixed the bug that read-only entry widgets had a "clear" contextual menu item by default. Now they never have any value-setting entries. Same for disabled widgets.
- Fixed known bug that DIS config "!" would not update if somebody else changed the DIS configuration.
- Preliminary changes to make TUI compatible with Python 2.3
(while retaining compatibility with Python 2.2.1). More changes and more testing are required.
Version 0.65 2003-04-18
- The offset control and display have been updated as agreed on a phone con.
- Status bars show short help strings, if present. All prefs have this help. Some other regular data entry widgets (where I thought it would help) also have it. Not all windows have status bars, but they are easy to add if we decide some extra help is wantd.
- Preferences improved: the pop-up menus have been replaced by contextual menus. Also there is now a linkage to the html help (though the new short one-liner help strings are more likely to be useful).
- Refinements to the DIS windows. Please try both systems (while thinking about where the exposure controls will go) and let me know which one you prefer. I also plan to run these by some local DIS users.
- Renamed the font preferences in an attempt to make them clearer. As a result, you may have to reapply your font preferences.
- Modified the "keep offsets" pane in the slew window to use the new offset naming scheme. Ditched tcc-style (additive) object offsets from this panel--thus they are never saved.
- Removed radial velocity from the proper motion panel.
- Bug fix: I finally figured out how to stop ButtonRelease-2 from pasting the selection on Mac OS X. Yaay!
Version 0.61 2003-04-07
- Bug fix: instrument scale in the telescope model was not being updated, which made the Focal Plane display have the wrong handedness for many instruments.
Version 0.60 2003-04-04
- Added Simple Offset widget (in TCC menu).
- Added display of arc/sky offset and boresight to the Status window.
- The Focal Plane window now displays instrument x and y; still working on fine tuning it (user-adjustable colors are coming). I gave up on having the the different arms of an axis different lengths, but may have another try at that. The problem is that having the two labels at a different radii and trying to get the labels of the various axes to not stomp on each other really eats space, and the problem gets worse with more axes.
- Added an experimental second DIS configure window to try out. This one has no checkboxes. Please give me feedback, but please be sure you actually understand each widget and use it before passing judgement. I hope a consensus emerges, but if not, I'll make the final choice.
- Improved the layout in the DIS windows.
- Labels and units now have the same help pop-up menu is their data items.
- Entry widgets now have Clear and Default pop-up menu items. I intend further improvements here (Default is not always the best label and is simply confusing clutter if the default is always "").
- Internal change: replaced all use of RO.Wdg.LabelledWdg with RO.Wdg.Gridder. Although further internal cleanup will certainly occur, this completes the main work. At this point the existing code is a good model for writing new widgets.
- Internal change: replaced all use of RO.CmdMonitor with the new RO.Wdg.StatusWdg. In a future version I plan to display error messages about invalid input in the status window and also may hook up hot help (hold the mouse over a control for a short description in the status window).
- Bug fix: messaging window repeatedly showed most recent message after disconnect (thanks, Bill Ketzback)
- Bug fix: the automatic window loading code was broken on Windows (thanks, Craig Loomis).
- Bug fix: DMS strings were missing their minus sign for small negative values.
Version 0.50 2003-03-28
- Added an "instant messaging" window (in the Misc menu).
- Added a mirror status window (in the TCC menu).
- Windows are now automatically found and loaded at startup. This makes it easy to add custom windows. See the programming manual for details.
- DIS change: made CCD window and overscan details in DIS Config, and made window a detail in DIS status (overscan was already a detail in that panel).
- Improved the dispatcher's handling of automatic refresh commands: if a refresh command fails, it is not repeated (until one disconnects and reconnects); if a refresh command succeeds but does not update its keyword variable, an error is reported and that keyword variable's refresh command is erased.
- Added a TCC model to simplify TCC-related widgets.
- The rotator controls in the Slew window are disabled if there is no instrument rotator.
- Bug fix: the Slew window History menu sometimes failed (for mount or phys coords, due to restoring position before coord sys and thus applying the wrong azimuth limits).
- Bug fix: the DIS Config window was not linked to its help.
- Bug fix: no unix binding for contextual menus (due to expecting the wrong value for sys.platform).
- Bug fix: Mac button 2 sometimes pasted text (fixed in Bindings.py).
Version 0.45 2003-03-21
- Prototype implementation of DIS support. The main omission is lack of exposure control (which awaits hub support for nexpose).
- Added help to the Status window; the one window still missing help is Prefs.
- Bug fix: the help system was broken on some unix.
Version 0.40 2003-03-05
- Implemented Craig's security model. You can now connect from anywhere with a suitable "program name" and associated password. Note that your chosen username will now be used to tag your messages (though the Hub may alter it a bit, if necessary, to make it unique).
- Add a "General" category to the help files and moved some existing documents there.
- Fixed cmd-A = "Select All" on Mac OS X (the keyboard shortcuts had to be changed for aqua Tk); I have not attempted to add this feature to other platforms, but would be happy to do so if somebody tells me the standard keyboard shortcut.
- Two fixes to read only widgets (such as the log window): keyboard shortcuts for Copy and Select All (if any exist) now work, and Paste Selection has been blocked.
Version 0.30 2002-12-27
- Incompatible Changes:
- Renamed the main script
TUI/TUI.py
to TUI/Main.py
. This eliminates an ambiguity between the TUI module and the TUI script. This change requires you to run TUI by executing Main.py instead of TUI.py. If you have an alias set up (highly recommended), you will have to change it.
- This is the first version that talks to the hub (which at the moment only talks to the DIS and the TCC). Before connecting, you must change the host setting in your preferences. Talk to Craig Loomis or Russell Owen for details.
Version 0.24 2002-12-05
- Incompatible Change:
- The settings files .TUIPrefs and .TUIGeom are now stored in your home directory, if you have one (e.g. on unix and Mac OS X). Formerly they were stored in whatever directory you used to launch TUI. If you have settings you wish to preserve, please move these two files.
- On-Line Help:
- Added on-line help via contextual menus and a new Help menu in the Status window menu bar.
- Most controls have a help contextual menu; others will gain it over time.
- Due to limitations in Tk, you will not get the help contextual menu if you click on a window background (frames don't produce the necessary events). Fortunately, this is not an issue in graphic displays (e.g. the Telescope and Focal Plane windows).
- The old manual is superceded by this new help system.
- Command Status:
- Added a command status display to the Slew window. This is a preliminary implementation. I hope to use this display to show data entry error messages and/or allow the user to obtain greater detail for the command status. These enhancements may conflict with each other and so I've not quite figured out how to proceed.
- Fixes:
- Bug fix: object position 2 could never be less than 0, which was wrong for most coordinate systems. (Thanks to Bill Ketzeback.)
- Bug fix: entering a command in the log window would not reliably cause the log window to scroll to the bottom. Fixed by adding an update_idletasks to CmdLogWdg; we'll see if this is a complete fix. (Thanks to Russet McMillan.)
- Bug fix: command history recall in the log window would append an extra character to the recalled command (possibly only in Mac OS X aqua Tk since I don't remember ever seeing this before). Fixed by not propogating key events for previous and next command.
- Bug fix: certain windows (including About TUI and Preferences) would not come to the front when first requested. This was probably only in Mac OS X aqua Tk since I don't remember seeing it before. Fixed by doing a lift after wm_deiconify.
- Changed the log display to be read only. It may not be
bulletproof; if you find some way to modify the text that
should not be allowed, please let me know.
- Removed the debug info that was printed whenever an object position was changed in the Slew window.
Version 0.23 2002-11-22
- Sexagesimal fields after the first must be less than 60.
- Changed rotator mount angle to be 0 up, + to the right, as requested by Russet; the sign matches the NA2 rotator (as seen by the operator and instrument); the 0 point is irrelevant so long as it makes sense.
- Bug fix: the focal plane display was always right-handed; IImScale was being ignored, though all the hooks were in place.
Version 0.22 2002-08-09
- When running on the Mac platform, added standard key bindings for cmd-X (cut), cmd-C (copy), cmd-V (paste) and cmd-A (select all). The same module makes it very easy to add bindings for other platforms (though I assume the defaults are already fine on unix).
- Implemented automatic enabling and disabling of the Slew button based on whether a valid slew position has been entered and whether the object has been slewed to. The button is disabled after a slew, to indicate you've already gone to this position. To re-enable the current object, select it from the history or change any field and change it back (the name field is handy for this).
- Ditched the "Enable" button in the Slew widget. This is an experiment; all code for the button is still present, I am simply not painting it. With the automatic enabling of the slew button it didn't seem very useful.
- Proposed position is now shown on the Telescope display (as a yellow X). I also hope to add display of likely azimuth wrap and at least an approximation of the rotation angle. However, rotation angle will take a lot of additional code.
- Bug fix: if no rotator, could repeatedly ask for axis status.
Version 0.21 2002-06-12
- Commands that you send or refresh commands sent automatically are now reported to the log window. You can filter out refresh or all commands.
- Command timeout is reported as an error.
- Commands in Slew window have reasonable time limits. In particular, the slewing time limit is updated when the SlewDuration keyword is seen for that specific slew and no other.
- Changed the orientation of the rotator wrap spiral to match the azimuth wrap spiral (0 down, + to the right) and made its appearance more similar.
- The choice of rotation types is now properly restricted based on coordinate system. If the current rotation type is incompatible with the new coordinate system, the rotation type is set to None.
- Added "N" and "E" labels to the sky widget.
- Changed the axis labels in the FocalPlane widget to the standard data font. (Note: if you change the font the axis labels are updated but their positions are not; they will not be recalculated until you quit and restart the program.
Version 0.20 2002-04-29
- Window positions may now be saved.
- Added the TCC menu (an Inst menu will follow in due
course).
- You can now reopen any window you can close (using the TUI and TCC menus).
- You can no longer close the Status window (formerly you could, but it killed TUI to do so). To quit TUI, select Quit from the TUI menu.
- The Python script window is now hidden by default.
Version 0.19 2002-04-23
- Added partial preferences implementation. It handles colors and fonts, but not window positions.
- Improve reliability of connecting and disconnecting.
- Improve handling of the case of no instrument rotator.
- Re-enabled active update of rotator limits (requires TCC 2.6 or later).
- Added display of secondary and guide camera focus.
- Various minor bug fixes (handles coordsys=None, handles coordsys background color, rotator position not always displayed as soon as it could be...).
Version 0.182 2002-01-25
- Improved handling of background color in numeric displays.
Version 0.181 2001-12-26
- Corrected temporary fixed rotator limits for NA2: were [-180, 360], corrected to [-360, 360].
Version 0.18 2001-12-19
- Added axis status display.
- Added a progress bar for slews.
- Entering a command in the log window scrolls the log to the end (suggested by Russet).
- The rotator wrap is now displayed for the maximum range of the NA2 rotator. This may not be the full range for all instruments, but is better than nothing. It will be fully correct once TCC 2.6 is available.
Version 0.17 2001-11-29; manual updated 2001-12-08(?)
- Improved initial window placement.
- Added remaining window titles.
- Minor bug fix: LMST could be >24.
- Slew button comes up disabled.
- Disabled rotator wrap display until TCC 2.6 released (it can be viewed when talking to tccdev with a bit of reconfiguration).
- Known limitations updated based on feedback from Russet (2002-12-08?).
Version 0.16 2001-11-15
- Greatly improved the log window, including:
- Auto-scroll is disabled if the thumb is not at the bottom (so you can stare at something of interest while new data comes in)
- You can now search for text
- If the insertion cursor is in a particular location in the log window and you then show or hide categories of messages, the window scrolls to keep the cursor visible. Hence if you want to examine a particular error, you could hide informational messages (to make it easier to locate the error of interest), click in the error text, then click on the checkbox to show informational messages again. You will now see the error message in context, i.e. surrounded by its informational messages.
- The script window and connection/log window now automatically put the focus in the right initial location
- The Sky widget no longer displays debugging messages to the log window.
Version 0.15 2001-11-06
- The first version that was documented and made publicly available for comments.