This file describes significant changes made to Igor Pro and supporting files since the release of Igor Pro 6.0. Here are the updates in reverse chronological order:
Fixed a bug where the cursor did not change to a finger while over the right side of a special action in a notebook or help file.
Macintosh: Worked around a bug in Leopard (Mac OS X 10.5) that prevented operation of the scroll bars in ListBox controls, when those scroll bars were located in the control bar area above a graph's plot area.
A reversed color table specified by ModifyGraph zColor wasn't being reflected in the associated ColorScale.
Fixed bug created in 5.04B03 where resaving the main procedure window using File->Save Procedure no longer worked.
Fixed problem where LoadWave /B did not set output wave name when loading matrix and when skipping columns using /L.
Fixed the annotation dialog's lack of hiding the Adj Line Spacing control and the error frame when the text entry area is zoomed.
Fixed improper name conflict error in macro variables.
Fixed a bug involving the translation between Macintosh and Windows characters sets in a formatted notebook or help file. Under certain circumstances, the translation of high-ASCII characters did not occur, causing the wrong character to appear on the platform other than the one where editing was done. This bug also could cause Japanese text to be garbled on the other platform. This fix was done for Igor Pro 6.03J (Japanese) which shipped after 6.03 (English).
Windows: Put in a workaround for a problem that could cause lines of text in a formatted notebook or help file to fail to wrap. This occured if you ran on an English Windows system but set the "Language for non-Unicode programs" to Japanese, Chinese or Korean. Under this circumstance, Windows returns "MS Shell Dlg" when asked for the default GUI font (GetStockObject(DEFAULT_GUI_FONT)). MS Shell Dlg is a fake font that Windows maps to a real font. However, when MS Shell Dlg is used, Windows incorrectly returns zero for the width of Asian characters. This causes lines of text to fail to wrap. The workaround is to detect when Windows returns "MS Shell Dlg" and instead use another real font. This fix was done for Igor Pro 6.03J (Japanese) which shipped after 6.03 (English).
Macintosh: Worked around a bug in Mac OS X 10.5. When saving an unpacked experiment, if you clicked the Create Folder and Go button, experiment files were not saved in the experiment folder but in its parent.
Updated GizmoRotation.ipf to properly set the X and Y sides.
Updated GizmoRotation.pxp to use the panel created by the Igor 6 GizmoRotation.ipf procedure.
Changed in Gizmo the order of Euler angle rotation from ZYX to XYZ. The change only affects the rotation transformation created by the command ModifyGizmo Euler={a,b,c}.
Increased the maximum number of help template characters that will be inserted in a procedure file from 120 to 400.
Relaxed plot size limits when exporting graphs using special plot size modes.
ModifyImage plane now indexes through higher dims (doesn't stop at end of chunk 0).
Fixed creating arrow markers using Modify Trace Appearance dialog. It had been generating a command setting barbSide to none.
The ValDisplay control erases to the label background color once again (it didn't in Igor 6.02 or 6.02A).
Controls in a graph's window and plot areas now erase their backgrounds more sensibly.
In compiled code, KillControl/W=winName would not find the specified window if winName specified a child window path having a total length longer than 31 characters.
Fixed bug in CurveFit: if the input data vertical axis had manual range, the residual axis copied that range.
Previously the Search Topics and Subtopics Only checkbox affected searches of procedure files but it is relevant only to help files. This is now fixed.
Fixed a failure to return a compile error if you called a non-thread-safe external operation from a thread-safe user function.
Fixed a crash if you called a thread-safe external operation from a non-thread-safe user function.
Fixed rare crash involving remove wave and cursor hooks.
Fixed crash in ModifyGraph with some keyword when graph name is wrong.
When cursors are removed as a consequence of removing a trace or an image, the user's window hook function is no longer called because it can cause a crash.
Fixed complex beta function. Was non-functional and created BUG messages.
Fixed export as PDF or EPS with cityscape mode with gaps or offscale data.
Fixed update in button panel area of a graph when a button is killed just before GraphWaveDraw or GraphWaveEdit.
Fixed cursor speed and direction when cursors beyond A and B are the only ones active.
Fixed rare crash with ModifyFreeAxis given bad keyword.
The graph marquee isn't dismissed if the user clicks in an exterior panel button.
Fixed PDF line disappearance after zero thick line.
Fixed PDF export bug involving filled markers with zero thick lines.
ThreadGroupCreate now checks for reasonable input.
Fixed clipping problem in Panels, especially internal tools palette on Windows.
Windows: Early copies of Igor 6.02A would crash if any ThreadSafe functions were run. Later copies (10/23/2007 or later) were corrected. Igor 6.03 ThreadSafe functions work correctly, too.
Windows: Fixed BUG message when unfinished floating panel was present and user clicked on Data Browser.
Windows: Made PauseForUser suppress clicks on most non-target windows.
Windows: Fixed problem in which experiment recreation macros operate on the wrong windows when external subwindows along with minimized or hidden windows are used.
Windows: Fixed mouse wheel support for exterior subwindows.
Macintosh: Fixed CreateAliasShortcut to allow trailing colon in the path to the target when the target is a directory.
Macintosh: Fixed a number of control native GUI appearance issues with user-defined controls on Mac OS X 10.5 (Leopard), especially with SetVariable, Slider, and GroupBox controls.
Macintosh: timer values from SetIgorOption debugTimer had mistakenly been in microseconds. Changed to seconds as it is on Windows and Igor 5.
Macintosh: forward delete key now works in control text edit items such as SetVariable.
Macintosh: We have had several reports of "error #-9589" when doing an experiment save. Apple's only documentation for this is "kPMKeyNotFound, -9589, Could not find the key" which tells us nothing of use. We suspect the error stems from an Apple routine named PMSessionMakeOldPrintRecord which converts Carbon page setup records to pre-Carbon page setup records. Igor stores both Carbon and pre-Carbon page setup records in experiments because the Windows version of Igor reads page setup information, such as page orientation, from the pre-Carbon page setup record. Previously this error caused the experiment save to fail which was too drastic. Now if there is an error we try to use a default pre-Carbon page setup. This allows the save to continue but has the downside that, if the experiment is opened on Windows, page orientation information will be lost. If this error occurs, Igor emits a warning to the history area and continues the save. If you see this warning, you may be able to fix it by executing Reset Printing System from Apple's Printer Setup Utility. This removes all printer objects from the system so you will need to add your printers back. This warning message is emitted once per Igor session.
TintedWindowBackground.ipf's panel now remembers settings between invocations. PieChart.ipf: unchecking the labels now actually removes the labels. Updates to the data, label, and color waves less than one second apart no longer go unnoticed.
New Polar Graphs.ipf: Fixed theta rotation symbol in Range tab, fixed old too-short panel heights.
ColorWaveEditor.ipf: Added controls to create a new color wave. Added a client mode to allow client code to put up a color wave editor to edit one specific wave (used by PieChart.ipf for Custom Colors).
The HDF Loader XOP, which loads older HDF4 files, is now available on Mac OS X, both PowerPC and Intel. It is in "Igor Pro Folder/More Extensions/File Loaders".
Macintosh (OS X 10.5.x): Fixed a Data Browser crash and some cosmetic problems.
NewImage now chooses the initial size of the graph window to fit the rectangle on the main screen available for windows (that is, the rectangle excluding any visible dock). Previously it was based on the rectangle that encloses all screens, often generating a window that was too big.
New SetWindow hook eventCodes 18-21 are: "showTools", "hideTools", "showInfo" and "hideInfo". They are sent when the tools or info have just been shown or hidden.
AutoPositionWindow avoids overlapping a graph's external info window.
Added support for #ifdef and the like to help (e.g., right-clicking #ifdef offers to take you to help for #ifdef).
FuncFit, when doing a sum-of-fit-functions fit, now generates a series of error waves, W_sigma_n where n is a number 0 to..., one for each function.
Added titleWave keyword to ListBox controls to allow more than 31 characters for title cells. Particularly important if you use styled text.
Restored hilighting of checkbox cells in ListBox controls when the cell is marked as selected. That allows you to navigate to checkbox cells using arrow keys, and to be able to see where you are even when navigating over checkbox cells. Note that clicking a checkbox cell still does not cause it to be selected.
FontSizeHeight and FontSizeStringWidth have new appearanceStr parameters for use in measuring native GUI string sizes.
Macintosh: a native GUI checked Checkbox no longer leaves pixels behind when it gets hidden, and a Button using a foreground color is drawn properly when a nearby button is updated. The Button and PopupMenu controls also draw only 4 pixels of shadow outside of its rectangle even if the button is tall. The PopupupMenu's title background is erased if text is smoothed so that the text doesn't increasingly darken.
Windows: Fixed disappearing arrows on native GUI SetVariable controls.
Windows: Fixed user-defined help entries when the built-in Special Coursework menu item was present.
Now Igor's menu items are correctly disabled when a dialog comes up, even with a wave browser activated.
Changed convergence test for the Romberg integration method of Integrate1D(). CreateAliasShortcut works again.
Curve fitting: restored warning about fitting with minimum absolute deviations.
Curve fitting: the new curve fit annotation (/TBOX flag) is named by adding "CF_" to the Y data wave name. If the result was longer than 31 characters, it put up a dialog asking if it was OK to truncate the name. It now automatically and silently truncates the name.
Fixed bug in ListBox controls: column titles didn't reset styled text after rendering a title so things like text color carried over from one title to the next, and into the first list cell.
Fixed bug in Optimize that screwed up the order of execution, so that a normal optimization was attempted after simulated annealing was done. This, naturally, had the potential to give wrong answers, and bad error messages.
Fixed a bug introduced in IP 6.02B01 that caused some threadsafe operations to fail to compile when used in threadsafe functions.
Updated help files and manual with some items missing from the 6.02 release.
Fixed a bug in Graph Magnifier.ipf that caused an error the second and subsequent time you made a new graph magnifier for a graph displaying waves from a data folder other than root:.
XYZtoMatrix.ipf has a new XYGridandZtoMatrix macro that rearranges three waves containing X, Y, and Z values that comprise a regularly-spaced grid of X and Y values (already sorted in either column-major or row-major order) into a matrix of Z values that spans the min and max X and Y.
Gizmo works on Mac OS X 10.3.9.
Changed native Mac OS X GUI GroupBox control to not draw the group box frame dropped down if the simple line frame is used. This makes the simple line frame a good choice for cross-platform portability.
Multiple selections of drawing objects and user-defined controls are now allowed for Bring To Front, etc. The controls and drawing objects are re-ordered in separate layer spaces.
Windows only: added Igor Command Line-based license registration (for system administrators).
Added /CUM flag to the Histogram operation to ask for a cumulative histogram in which each bin contains the total counts for all the bins less than the current bin, plus the current bin's counts. Combine with the /P flag to get a cumulate distribution function.
Added Fisher's exact test to StatsContingencyTable.
Fixed a crash in FuncFitMD that occurred if your mask wave or weight wave eliminated all the data points.
Changed Native GUI control appearance to draw Slider controls properly when drawing objects are also present in the panel.
Fixed a crash that occurred if you deleted a control manually, then called KillControl on the same control.
ImageUnwrapPhase now initializes M_UnwrappedPhase to NaN so that values corresponding to branch cuts and residues are properly marked.
Changed StatsWilcoxonRankTest to support large waves. Note that it is still not a good idea to use this operation with large waves unless /APRX flag is set to 1 or 2.
Changed StatsWaldPDF and StatsWaldCDF to support infinite mu value.
Changed StatsExpCDF to support mu=0.
Fixed a bug in lists in certain dialogs (the various control properties dialogs are prime examples) that caused Ctrl-C to copy all the text in a cell in the list instead of copying only the selected text.
Fixed a failure of FuncFit to mark the coefficient wave as modified after a curve fit was finished. That prevented graphs and tables that depended on the coefficient wave from updating. Note that you probably have to not use /D or /R in order to see the problem.
Fixed a bug in LoadWave that intermittently caused a crash if you use /W to load column names and the file contained more column names than actual columns.
Fixed a bug whereby clicking on a special character (e.g., picture) at the end of a wrapped line in a notebook did not select the special character.
A natively-drawn Mac OS X GUI Slider control no longer shows drawing objects from the top left corner of the enclosing panel.
Changed recreation macro generation to support subwindow guides with liberal names (DefineGuide has been allowing liberal names).
Fixed a crash involving recursion of subwindow guides.
Fixed a crash on overly-long name in Window Control dialog with 32-character style macro name.
Removed ".ShapeRange.ConvertToInlineShape" from CallMicrosoftWord.ipf. For some reason, this causes Windows Script Host to crash.
Modified Multi-peak fitting 1.4.ipf for native GUI controls. Made Edit Peak panel float, all panels are fixed sized and they no longer show the Panel menu.
Changed ImageSlider.ipf to automatically scale the colortable relative to the exterma of the whole stack.
Fixed a couple of problems with QTGrabber that caused a crash when trying to save video input to a movie to file.
Added an "Enable Fling Mode" checkbox to the Miscellaneous Settings dialog's Graph tab.
Added Don't Smooth Fonts smaller than nn points to the Miscellaneous Settings dialog; most user-defined controls honor that setting.
Separated disabling of floating info palettes from disabling of floating tool palettes in Miscellaneous Settings dialog.
Holding down the Shift or option or Alt key while clicking an enabled breakpoint disables the breakpoint instead of removing it. Similarly, clicking a disabled breakpoint with any of those keys held down enables the breakpoint instead of removing it.
Licensing checking is more compatible with site licensing installers that pre-register Igor.
Macintosh: Changed printing code to NOT request Laserwriter 8 compatibility mode by default. This mode is needed if you have any EPS pictures in your graphics but it appeared to cause font problems for some people so it was turned off. If you do have EPS graphics in your Layout or Graph windows, you will need to execute:
before printing to a Postscript printer. This will all become moot in an upcoming release.SetIgorOption WantLW8Compatibility=1
Added to ImageInterpolate a new interpolation method for handling matrices scaled by 1D X and Y Waves.
Added support for Structure Fit Functions when fitting to sums of fit functions. See documentation for the FuncFit operation and Fitting Sums of Fit Functions.
FontList takes a new optional parameter that limits the returned fonts to only "scalable" (not bitmap) fonts.
Added ability to create a cumulative histogram; that is, one in which the bin values are the total counts for all the bins to the left of the current bin, plus the counts for the current bin. See Histogram. Also added Cumulative checkbox to the Histogram dialog.
Fixed a bug that caused SaveExperiment with a full path to display a Save File dialog if the experiment was untitled.
Changed Native GUI control appearance to draw properly when controls are on top of drawing objects like filled rectangles.
Fixed disabled appearance of Window native GUI user-defined checkbox (and radio button) controls, eliminated other "controls drawing as if disabled" bugs. Many other Native GUI adjustments, too.
Fixed a crash that occured when the Debugger's breakpoint was disabled, enabled, and then triggered.
Fixed Resample crash when input waves were of different length.
Fixed CmpStr to return results the same as Igor 6.01 when the string parameters contain zeros (\0, not "0") in them.
Fixed LoadData not marking loaded variables as modified. If the variable was attached to a control in a control panel, the control did not update.
Macintosh: fixed PlaySound sample rate problem.
Fixed rare problem where dimension labels grow without bounds.
Fixed rare crash when forming a graph recreation macro when many cursors are used.
Revised New Polar Graphs.ipf to work better with both native and Igor 5 GUI appearances.
Revised many Gizmo procedures to work better with both native and Igor 5 GUI appearances and to work better together without stepping on eachother's hook functions.
PopupWaveSelector.ipf: Fixed bug in PopupWS_MatchOptions (wrong sense of ParamIsDefault test for matchStr).
HierarchicalListWidget.ipf now allows you to add your own listbox action procedure. Also added function WMHL_ChangeItem function to allow you to change the name and displayed string of an item.
Changed Gizmo so that named hook functions are executed independent of the values of hook events. Added hook calls in response to rotation commands.
User-created controls now (by default) use "native GUI appearance". This can be disabled in the new Compatibility tab of the Miscellaneous Settings dialog. The native GUI control appearance has many ramifications described in the new DefaultGUIControls command. See the "All Controls Demo.pxp" experiment for examples.
Also in the Compatibility tab is a checkbox to revert the Info and Tool palettes to non-floating windows.
Showing the tool palette (command-T or Ctrl+T) switches to the arrow tool (which puts the window into drawing mode).
SetWindow's renamed event is sent to the host window when a child (sub-) window is renamed. Previously, renamed subwindows generated no renamed event.
Kill events are now sent to controls in sub-windows when a sub-window is killed. Previously, these events were sent to controls only when the root window was killed.
New events have been added to the SetWindow window hook function:
subwindowKill (event code 14) is sent to the root window when a child window is killed.
hide (event code 15) is sent to the root window when it or any of its children is about to be hidden.
show (event code 16) is sent to the root window when it or any of its children is about to be made visible.
killVote (event code 17) is sent to the root window when it or any of its children is about to be killed. Unlike the kill (event code 2), killVote is sent before the window close dialog appears. Like the kill event, returning 2 for the killVote event will prevent the window's closing. See Example 3 in the SetWindow documentation.
The handling of multiple window hooks (SetWindow) has changed. Previously all named hooks were called regardless of their return values. As of Igor 6.02, all named hooks will be run only if they all return 0 (or by failing to have a return statement return NaN). This means that as soon as a named hook returns say, 1 or 2, further hooks are not called.
This change allows the killVote (and the deprecated kill) event to work with named hooks: any hook returning 2 prevents the windows from being killed. Previously this functionality worked if there was only one unnamed hook or one named hook since subsequent hook return values overwrote earlier hook return values.
There are other tricky details - see the documentation for SetWindow.
In a page layout, you can now kill the marquee by clicking in the margin area, outside the dotted box that outlines the printing part of the page.
You can now use arrow keys to change the selection in certain lists in dialogs. Use shift- or cmd- (Macintosh) or Ctrl- (Windows) with the arrow keys to extend the selection.
In Igor Pro 5 and before, we displayed just the window title in the Windows menu and its submenus. In Igor Pro 6, we changed it to display name:title if the name was not already in the title. A few users complained because they were depending on the sort order of the window titles in the menus. So we have made this user-configurable via the Misc Setting dialog, Misc Settings category. The default now behaves like Igor Pro 5 - displaying just the title.
As of Igor Pro 6.00, if you try to set the format of a table column to date or date/time using ModifyTable and if the wave associated with the column is not double-precision, Igor returns an error telling you to redimension the wave. This test is now disabled during experiment load.
Changed horizontal autoscrolling in text files to make Igor give less preference to the unscroll position. Previously, if you typed and if Igor could autoscroll to the unscrolled position while still keeping the newly-typed character in view, it did so.
In the Error Bars dialog (sub-dialog to the Modify Trace Appearance dialog) added "Same as Y+" and "Same as X+" items to the wave menus for the Y- and X- error bar waves. These are the default.
Made following functions ThreadSafe: ei, equalWaves, imag, interp, PolygonArea, str2num, stringCRC, StudentA, StudentT, WaveCRC. See ThreadSafe Functions and Multitasking.
Added optional parameter to CmpStr to request case-sensitive comparisons. Now, CmpStr(str1, str2, 1) does a case-sensitive comparison, CmpStr(str1, str2) or CmpStr(str1, str2, 0) does the usual case-insensitive comparison.
Changed behavior of StatsTukeyTest, StatsDunnettTest, StatsScheffeTest and StatsNPMCTest to no longer attempt to enter row labels for full names of the input waves. Instead row labels now consist of the format i_vs_j where i and j are zero-based integer counts of the inputs. Also added to the four operation a new flag /SWN to save a text wave containing the full names of the compared waves. The wave would be displayed in the last column of the displayed table.
Changed ImageAnalyzeParticles so that the last entry in W_BoundaryIndex corresponds to the last valid boundary pixel.
It is now possible to activate a 60-day demo license even if it would immediately expire into a limited-functionality mode. This allows de-activating an installed license without having to uninstall Igor. Contact WaveMetrics for your specific 60-day demo code.
(The new native GUI controls appearance feature is described under Changed Features, above.)
New extended Tag arrow line settings:
/TL= 0, 1 or {keyword=val,...} // Tag Line extended settings
0 turns off all extended settings (and 1 turns back on if done before graph is closed)keywords are:
len=l, length of arrow head in points (zero= auto)
fat=f, width to length ratio of arrow head (zero= default= 0.5)
style=s, if not zero, side mode, see SetDrawEnv astyle
sharp=s, sharpness param. -1 to 1, default = 0
frame=f, if not zero, outline mode used with this frame thickness
lThick=l, line thickness in points (zero is default = 0.5)
lineRGB=(r,g,b), color for lines (all zero (black) means default — same as tag frame)
dash=d, code for one the standard dash patterns
Revised the Annotation dialog to support the new Advanced Tag Line/Arrow options (Tag's new /TL={keyword=value,...} flag).
Revised the New Image Plot dialog to support the NewImage command.
Revised the Modify Image Appearance dialog to support the new Autoscale Subset of Image Wave feature (ModifyImage's new ctabAutoscale keyword).
Added a "Thread-Safe" indicator to the Command Help tab of the Help Browser.
ModifyImage has a new ctabAutoscale keyword: ctabAutoscale=autoBits
Sets the range of data used for autoscaling ctab * values.
Bit 0:autoscales only the XY subset being displayed.
Bit 1:autoscales only the current plane being displayed.If neither bit is set (if autoBits = 0, which is the default), then all of the data in the image wave is used to autoscale the *'d zMin, zMax values for ctab.
Added a Horizontal Index setting for tables. Use this if you want to show numeric indices horizontally and dimension labels vertically or vice versa. For example, if you want dimension labels vertically and numeric indices horizontally, append the wave's dimension label column to the table and then choose Table->Horizontal Index->Numeric Indices.
Added to MatrixOP: the functions SumCols() and VarCols().
Added P-values to a number of statistical tests.
Macintosh: Improved performance on the Shen algorithm for ImageEdgeDetection.
GetRTStackInfo(selector) now accepts selector = 1 and = 2:
If selector is 1, GetRTStackInfo returns the name of the currently executing function or macro.
If selector is 2, GetRTStackInfo returns the name of the calling function or macro.
If selector is 3, GetRTStackInfo returns more detailed information about the chain of currently executing procedures.
In the LoadWave operation, if you omit the /L flag or if the numLines parameter is zero, and if you are loading a file greater than 500,000 bytes, and if you are running on Windows, LoadWave will automatically count the lines of data in the file so that the entire wave can be allocated before data loading starts. This acts as if you used /L and set numLines to the exact correct value. For very large files on Windows, this can speed the loading process considerably. For small files on Windows and for files of any size on Macintosh, it actually makes the load slower. That's why this feature takes effect only on Windows and only for files of greater than 500,000 bytes. You can disable this feature by using the /V flag and setting bit 2 to 1.
If the procedure file containing a relative #include statement is the built-in procedure file or a packed procedure file, the search for the included file is relative to the experiment file. Previously the included file would not be found.
Added a new flag (/LR3D) to ImageLoad. The flag allows loading partial TIFF stacks as 3D waves. Note that by default the operation creates one wave per image read from the stack.
Added to ImageStats a new flag (/BEAM) for computing the statistics of 2D ROI on each layer of the 3D source wave. The new flag results in 3 waves which contain the average, minimum and maximum pixel values in the ROI region for each layer of the 3D source. Another new flag (/RECT) allows you to limit the ROI search to a specified rectangle.
Mac Intel: Fixed usage of wave[inf].
Mac Intel: Fixed a crash in axis labeling code when a font size of 1 point was used. This caused the Colorscale dialog to crash when trying to enter any font size that began with the digit 1.
Fixed PDF export of subwindow frame thickness.
GetFileFolderInfo always creates V_isFile, etc in a macro or Proc.
Macintosh: Fixed GetFileFolderInfo command to prompt for file if no parameters were given.
Grep/LIST no longer replaces the last character in S_Value with 0.
Grep no longer sets V_Flag to the same number as V_Value.
Fixed CurveFit bug: poly2d put residuals in wrong places when there were NaN's in the dataset.
It was possible to add a graph containing controls and subpanels to a page layout, and then use the contextual menu in the layout to convert the graph to an embedded subwindow (see Embedding and Subwindows). But the recreation macro for the layout could not be run, giving an error that controls or subpanels are not allowed in embedded graphs. This affected re-opening an experiment containing such a layout even if you never explicitly saved the recreation macro. The contextual menu action now checks for controls and subpanels and will not allow you to embed such a graph.
In tables, if you applied a custom column title to a column of a multi-dimensional wave, the column was not always correctly updated and the table recreation macro was not always correct.
When doing a line curve fit, the history report of the values V_Rab, V_q, and V_Pr lacked the ";" separator.
When calling CurveFit from a macro to do a line fit with /ODR=<non-zero>, three BUG messages were printed in the curve fit history report, one for each of V_Rab, V_q, and V_Pr. These variables are not created for ODR line fits, but the history report code wasn't checking for ODR fitting.
A command like "Edit jack.i, jack.l" left the table thinking both the index and label columns were displayed which is disallowed. Now this would be equivalent to "Edit jack.l".
Fixed bug in calling a thread-safe external function through a FUNCREF.
Fixed bugs in calling thread-safe external functions from the FuncFit operation.
Fixed a bug that caused Igor to fail to detect when it was trying to update a window recreation macro in a read-only procedure file.
Fixed a bug: the New Image dialog failed to properly quote liberal names in ModifyImage commands.
Fixed a bug in CurveFit and FuncFit that extracted incorrect X data from the second (or more) independent variable if the mask wave had zeroes at the start.
Graphs using ModifyGraph zColor={zWave,zMin,zMax,ctName ,0,ciWave} now generate the proper ModifyGraph command in their recreation macros (the 0 was missing).
Disallowed Smooth/M=num 0, wave (a 0-width median window has no meaning, but produced bug messages).
Windows: The Ctrl+D text was missing from the Duplicate command in the Edit menu.
Fixed problem in CurveFit and FuncFitMD that caused residuals and explicit destination wave values to go into the wrong places when using a mask wave with multidimensional gridded fits.
Fixed a bug that caused a crash after a Textbox or Legend command with a /W flag that operated on a page layout other than the top layout.
Properly implemented curve fit confidence band calculation for user-defined fit functions.
FindLevels now works with integer types in a function.
Fixed a crash that occured after closing an experiment with an experiment-only font substitution.
Modernized the X Scaling Tutorial in Igor Pro Folder:Learning Aids:Tutorials.
Modernized the Data Folder Tutorial in Igor Pro Folder:Learning Aids:Tutorials.
Fixed a bug in ColorsMarkersLinesPatterns.pxp that occured when clicking in the Color Test Pattern graph.
Added LogHistBins() in Log Histogram.ipf.
Fixed WM_ImageColorLookupWave() in WMImageInfo.ipf.
Fixed some bugs in Pole And Zero Filter Design.ipf and FilterDialog.ipf.
Added a new procedure to create QuickTime movies from image stacks.
Fixed the "Smoothing Control Panel.ipf" file to work with liberal wave names.
HierarchicalListWidget.ipf: Added support for adding columns to contain arbitrary data.
PopupWaveSelector.ipf: Added PopupWS_SetGetSortOrder; just like WS_SetGetSortOrder in WaveSelectorWidget.ipf. Fixed bugs: title-in-title buttons weren't. Added support for the Renamed window event to allow the WaveSelector to keep working when the containing window's name changes.
WaveSelectorWidget.ipf: Added support for the Renamed window event to allow the WaveSelector to keep working when the containing window's name changes.
Added procedure to calculate Cronbach alpha.
Added a new procedure for creating a movie from a stack of images.
Updated the Tutorial Engine WaveMetrics procedure which is used in the X Scaling Tutorial (in Igor Pro Folder:Learning Aids:Tutorials).
Fixed errors in VISA.xop that were asymptomatic in Igor Pro 5.
Fixed Image Particle Panel.ipf so that cross-cursor identifying of particles works with the last particle.
Updated XYZToTripletToXYZ.ipf and GizmoUtils.ipf to add subrange parameters to the X, Y, Z wave to triplet wave routines.
Fixed bug in Append Calibrator introduced by change to HVAxisList no longer accepting "" to mean top graph. Adjusted spacing of controls to suit DefaultGuiControls native on Macintosh.
Changed PeakAreasUnipolar.ipf (TN020-C), SetAxisRangeToVisibleData.ipf, and Wave Arithmetic Panel.ipf to no longer gratuitously pass "" to Axis Utilties.ipf.
Fixed Axis Utilities.ipf to accept "" to mean top graph for most routines, used PixelFromAxisVal for PixelFromLinearAxisVal() function.
Modified Scatter Plot Matrix package to add new features:
ColorsMarkersLinesPatterns.ipf now uses different waves for WMColorKeyGraph (M_colorKey) and WMAllColorTables (M_colors).
Macintosh: Added a Macintosh-only XOP named HFSAndPosix for converting between HFS names (limited to 31 characters, colon separators) and Posix (limited to 255 characters, forward slash separators) paths. Most users will not need this. See HFS And Posix for details.
It is now possible for XOP programmers to write thread-safe external functions and operations which can be called from thread-safe user-defined functions. However, there are severe restrictions on doing callbacks to Igor from a thread-safe routine. The thread-safe capability is not yet in the shipping version of the XOP Toolkit so contact WaveMetrics support if you want to try it.
Fixed a problem in Gizmo Axes dialog where user-label waves and user-level waves were not loaded. See Axes.
Added to Gizmo commands to change object and attribute names. See ModifyGizmo setAttributeName.
Fixed a couple of problems with ModifyGizmo MakeColorWave.
Macintosh: The XLLoadWave XOP, which loads Excel files, now runs on Intel Macintosh as well as PowerPC.
Fixed bug in saving unpacked experiments containing multiple waves with dots in their names and wave names were identical up to the dot. Igor would overwrite wave files with other wave files.
Fixed PDF and EPS export of clipped histogram bars.
Fixed PDF export CMYK default colors.
Imported transparent PNGs and TIFFs now draw correctly (but still not transparent). If new code causes problems with PNGs, can revert using SetIgorOption RevertPictAlpha= 1.
Fixed the enabling and use of Edit menu with text entry controls such as SetVariable and editible ListBoxes when in subwindows.
Windows: Fixed Smoothing dialog bug where end-effect settings weren't present in the generated Smooth command.
Fixed bug that could cause a crash in CurveFit when doing a line, poly or poly2d fit using a mask wave. It was usually not symptomatic.
Fixed a crash in FuncFit when doing an implicit fit (/ODR=3) and no X waves were specified (no /X={xwave list} flag).
Fixed a crash when waveMin or waveMax were called with NULL wave references.
Fixed some aspects of using curve fitting in threadsafe functions. Note that curve fitting on Windows with constraints is still not threadsafe. If you try to use constraints with curve fit called from a function running in a preemptive thread, Igor will crash.
Fixed an incorrect derivative for the built-in Gauss2D curve fitting function; some Gauss2D fits should work more reliably.
Windows: the informational text in the Histogram Dialog that shows the binning information didn't move correctly when the dialog was resized.
Can now use StrConstants with $ in places where previously it would give an error when compiling functions, mainly for the user controls (Button, etc) font keyword where the actual font needs to be known at compile time. The string constant should be in the same procedure in which it is used to avoid dependencies on the order of procedure window compile.
The main window for PauseForUser can now be a subwindow.
Added "renamed" (13) window hook event to SetWindow. Unnamed hook functions can access the window's old name using the "OLDWINDOW" key. Named hook functions use the added oldWinName member of WMWinHookStruct.
Added new flags for GraphWaveEdit:
/T=t Trace mode, t=0 (default) uses lines and small square markers, t=1 leaves user settings alone.
/NI No insert mode. Suppresses auto insert of new point when clicking between two points.
Changed AppendImageToContour.ipf to work with contours created with AppendMatrixContour and using zWave vs {xWave, yWave}.
Fixed external subwindow title saving in recreation macros.
Fixed graph cursor drawing in wrong window due to SetVariable in external subwindow.
Fixed Cursor command positioning on complex trace when in non-complex display mode.
Fixed a crash that occurred if you #included a procedure file, then manually deleted the #include statement from the builtin procedure window, then activate the #included procedure file's window, then right-clicked.
Fixed a contour-plot-with-color-index-waves bug that rebuilt the contour traces every time a global variable was updated.
Calling WinRecreation in a macro or function no longer marks an experiment as "unsaved".
Prevented zero-sized object when user just clicks in draw mode.
Fixed display of a table column as time if the column really contains date/time data. Previously it displayed AM/PM but the documentation for ModifyTable says it always uses 24 hour format so now it works as the documentation says.
Macintosh: Fixed a bug that caused abbreviated month and day-of-week names used in tables and as tick mark labels to be incorrect.
Intel Macintosh: SplitString no longer crashes.
Added a new operation: StatsSignTest.
Commands using subrange syntax no longer give error for out of bounds values. I.e., values are not checked against wave dimensions and labels. This was never done for compiled code and now is also not done for interpreted code. Recreation macros now use the original user-supplied subrange values and are not affected by the current wave dimensions. In addition, traces with completely out-of-bounds subranges now act as if they have zero points and are not displayed and do not take part in autoscaling calculations. Previously, they sometimes affected autoscaling. See Indexing and Subranges.
Change to SetWindow/GetWindow with hide keyword: For SetWindow, hide can now be 2 to unhide without restoring minimized windows. This works only on Windows -- bit 1 is ignored on Macintosh at present. For GetWIndow, hide returns minimized state in bit 1 of V_Value and hidden state in bit 0.
Added /DL flag to Concatenate. Enables setting dimension labels. If doing promotion, source wave names are used for new dimension labels otherwise existing labels are used. Use with care: it could use a lot of memory if dimension is large.
Cursor x or y readout on images with non-uniform axes due to use of x or y wave and/or log mode now return actual location of cursor in center of pixel.
The message "Killed #included file <file name> which is no longer needed" is no longer displayed in the history. We felt that it was more clutter than useful.
Added the /iNaN flag to StatsQuantiles to ignore NaNs in the input data. By default NaNs sort to the end of the array. Also added the /STBL flag for running a stable sort instead of the standard sort. This should speed up the default execution of StatsQuantiles because in most applications a stable sort is not required.
Fixed autoscale of traces with negative mulOffset.
Fixed a bug in the date/time manual ticks code that caused any canonic tick after 3:14 AM on 1/19/72 to be truncated to 2^31-1, resulting in major ticks at 14 minutes past the hour.
Fixed a bug in curve fitting: restored error reporting when you hold and constrain the same fit coefficient.
Added the AfterWindowCreatedHook(windowNameStr, winType ) function to the collection of Functions (User-Defined Hook Functions). AfterWindowCreatedHook is a user-defined function that Igor calls when any target window is first created. The return value is ignored.
hcsr and vcsr no longer post an error if cursor is not present. This can be used to test if the cursor is on the graph.
Edit menu Copy for graph now uses same settings as last Export Graphics.
Export Graphics (clipboard) and Save Graphics (File) now remember graphics format in preferences.
Edit menu Copy is now enabled for page layouts even when nothing is selected and there is no Marquee. In this situation, a Copy is the same as Export Graphics but without the dialog.
Updated Image Calibration Panels.ipf.
Added a new marquee menu "MarqueeToTable" in Marquee2Mask.ipf.
Fixed a bug in the Interpolate XOP that caused incorrect results when in "X From Dest" mode with a waveform (not XY) when the X scaling of the dest wave was reversed.
New example experiment: Critical Values Demo.pxp.
Fixed crash converting cursors beyond B to free.
Fixed problem with Concatenate where it inappropriately was copying a source wave's dependency to the destination.
Fixed bug involving removing #define in main proc win.
The documentation for CurveFit and FuncFit show commas between the function name and coefficient wave name, and between coefficient wave and Y wave name. But in fact, the parsing was inconsistent about requiring that the comma be included, sometimes requiring that it not be there. It wasn't necessarily even consistent between compiled and interpreted versions. All of those commas are now optional.
Button pos={left,top} values are now limited to 32767 instead of 2000.
Changed to faster algorithm in StatsMedian().
FunctionInfo's PROCLINE value now correctly returns the function's local line number in the procedure window/file.
Added WaveCRC function and fixed a memory leak in the stringCRC function.
Executing ControlUpdate for a TitleBox not using variable=stringVariable caused the old and new values to be overprinted.
Fixed bug that prevented help sub-subtopics (subtopics with leading tabs) from being found on Windows when you clicked Show Selected Topic in the Help Browser.
Fixed bugs introduced in MoveFolder/D and CopyFolder/D in a previous beta.
Added a ToCommandLine stringExpression operation, which is useful for those "dialogs" made out of Panels that have "To Cmd Line" buttons in them.
Added PDF, JPEG and TIFF export to clipboard on both Mac and Windows. However we know of no programs on Windows that can import these formats from the clip except that Igor itself can import JPEG and TIFF (but not PDF.) Related to this, the format popup menus in the Export Graphics and Save Graphics dialogs have been rearranged and the obsolete PostScript PICT (Mac) and Postscript Enhanced Metafile (Win) formats have been removed (let us know if this causes problems.)
PDF export now sports high resolution fill patterns and uses compression.
Added support to the FuncFit operation for user-defined fit functions residing in an independent module (see The IndependentModule Pragma). That means that the names of user-defined fit functions can use the IndependentModuleName#functionName syntax.
New operation: StatsDIPTest which implements Hartigan test for unimodality.
Added convertToPNG=<x> keyword to Notebook operation. This converts all selected pictures to the cross-platform PNG format. <x> is a resolution expansion factor (1..16).
Fixed crash converting cursors beyond A or B to free.
Fixed a bug in the Curve Fit dialog: if the dialog has a wave already selected as the Y data wave, and the top graph uses that wave as the X wave, when you turn on the From Target check box it would not correctly select the X and Y waves from a trace in the graph.
Added PDF Export of Graphs, Tables and Page Layouts. No documentation yet, but considerations are similar to EPS export. You should either use font embedding or use only Helvetica, Times, Symbol and Zapf Dingbats. Yet to do: compression, high resolution fill patterns, warn when doing font substitution.
Improved the speed of keyboard shortcuts, especially editing keyboard shortcuts for Copy, Paste, Cut, Undo, Find Selection and Find Again.
QTGrabber XOP has been updated to support IIDC features.
The new Median XY Smoothing Dialog.ipf implements a full-out Median XY Smoothing dialog.
Median.ipf's MedianEO function now properly computes the median of an even number of values. PopupWaveSelector.ipf now supports data folders.
Axis Utilities.ipf's HVAxisList(graphName,...) no longer fails if the graph doesn't exist.
DoWindow/F on a hidden notebook left it in a confused state where newly-typed text was invisible.
Fixed DoWindow/F to return V_flag=2 instead of 1 for hidden windows.
Fixed a crash related to editing procedure files in independent modules.
Windows: Fix for PauseForUpdate when the target window has external tool or info palette.
MacIntel: Fix for blue TIFF images.
Macintosh: fixed help tags showing all the time in the Modify Trace Appearance dialog.
Fix for curve fitting crashes. QuickFit now handles traces from subranges correctly. Fixed format of curve fitting history report.
SetAxis/Z crash fixed.
Allowed /N=1 for the Resample operation. This allows decimation-by-omission without a procedure file.
Median.ipf now has a Median XY Smoothing function (and a simple menu interface) and a MedianEO function which properly computes the median of an even number of values.
Changed the draw object dialog to support setting dashed lines for Rectangles, Rounded Rectangles and Ovals.
New function GuideInfo to get information about subwindow guidelines in a host window.
Added a checkbox to the Modify Axis dialog's Axis tab to set the axisOnTop attribute of axes.
Added a None item to the Resample dialog's window popup.
Changed Draw Rectangles, Rounded Rectangles and Ovals to not use arrows when arrow mode is the saved state.
You can now turn off graph fling mode using: SetIgorOption SetFlingMode=0
Changed behavior of DeletePoints and InsertPoints to not reduce higher dimensions equal to 1 to zero. Previously, deleting or inserting rows in a 1 column matrix converted it to a vector (zero columns.)
Previously you could either enable or disable operations which overwrite or delete folders (MoveFolder, CopyFolder, DeleteFolder) using the Miscellaneous Settings dialog (Misc menu). This has been changed to give three choices: Ask The User, Give Permission, Deny Permission. Ask The User is the default setting and means that Igor will display a dialog to ask permission each time a folder is about to be overwritten or deleted.
On Macintosh, Igor no longer sets the stationery bit in a file's Finder information when saving stationery. This is because the Finder now misinterprets this bit and creates a duplicate file when you open a stationery file. For details, see:
http://www2.wavemetrics.com/Support/item.lasso?id=569
Windows: Added a retry in case of a "File Already Open" error when trying to open a file. This is an attempt to work around problems caused by virus scanners, backup programs and other programs that open files at inopportune times. This retry mechanism is recommended in Microsoft's Knowledge Base article Q316609.
Fixed a bug in the Curve Fit dialog could cause the Graph Now button to use the wrong X range when you fit to and XY pair of waves.
Curve Fitting with constraints cannot be done in a thread-safe function by the usual method that uses a text wave with constraint expressions. An attempt to do this will now return an error. Use the very inconvenient method that involves creating a matrix and a 1D wave, using /C={matrix, 1Dwave} instead of /C=textwave
Fixed a bug in curve fitting with constraints: if you specified the constraints using the very inconvenient /C={matrix, 1Dwave}, Igor incorrectly told you that you were using an incompatible number type.
Cleaned up some errors in making curve fitting work from a thread-safe function. Among other things, Igor will now print a history report when called from a thread-safe function as long as the function is called from the main thread.
Fixed a possible curve fit crash: if you selected confidence bands or predition bands, there is a graph present, but the graph doesn't contain your input data, Igor would crash.
A user-defined menu item of "*FONT*(initiallySelectedFontName [, <short list of fonts for Windows>])" no longer causes error if initiallySelectedFontName isn't installed.
Windows: Fixed problem that caused an experiment to report an error on load if you minimized a window and then hid that window, then saved and reopened the experiment.
Fixed a possible crash if you hid a window then did a new experiment and then hid another window within 30 seconds.
Fixed a crash that occurred after a breakpoint was set in a procedure file belonging to an independent module, the procedure was changed and recompiled, the breakpoint was encountered, and the Run/Go button was pressed in the Debugger.
The Subscript and Superscript menu items in the Control Dialog's title popup were reversed.
SetAxis bottom <some number>,* would report "Date/time axes do not support reversed scaling" even when <some number> was smaller than the auto upper limit on the axis.
The Modify Axis dialog, Axis Range tab now does proper error checking when you select auto scaling for one end of an axis and manual scaling for the other end.
Fixed a problem in the Data Browser when renaming waves with names exceeding 31 characters.
Gizmo: Added new keywords (xStep and yStep) to control surface grid density. Added new property for Axes ("visible").
Fixed printing problem in PC Gizmo.
Mac Intel: SndLoadSaveWave.xop's SndSaveAiff command now properly sets the sampling rate in saved AIFF files.
Fixed a bug in Igor that caused the MousePosition function in the GetInputState XOP to always return global coordinates even when you asked for local.
Changed AppendContourToGizmo.ipf to no longer create an emissive color material object.
Changed Gizmo Box Axes.ipf to use the new visible property for axes objects. Requires the Gizmo.xop that ships with Igor 6.01 and later (and included in 6.01B04).
Updated the WMFitFunctions.ipf file. Several of the functions are now obsolete. See comments at the top of the file if you are interested.
Transparent PNG export using new flag for WritePICT: /TRAN[=1 or 0] when used with native PNG export of graphs or page layouts, causes white background areas to be marked as transparent using an RGBA type PNG. In layouts, only embedded graphs and textboxes marked as transparent will be transparent. Non-embedded graphs, pictures and tables will be opaque. The transparency of PNGs is not honored when placed in Igor.
New built-in functions LaguerreA, LaguerreGauss and MarcumQ.
Help tags (Macintosh) or Tool Tips (Windows) giving information about graph traces and table data columns are now more easily available. Previously you had to know about a magic key combination; now there are menu items: Show Trace Info Tags in the Graph menu or Show Column Info Tags in the Table menu. When selected, these items turn on a mode in which hovering the mouse over a trace or table column will put up the tag or tip with information.
Contour plot recreation macros use Tag/C/N instead of only Tag/N. This prevents errors that happen if the user changes the contour labels (tags) but doesn't disable contour label updating.
Fixed hang invovling wave assignment with wave containing invalid dimensions.
Fixed crash related to listboxes in a panel whose kill-event window hook deleted the listbox's wave.
Fixed FindDimLabel to not return a value outside of the range of the wave.
Fixed problem with external tools/info panel and send behind.
Curve fitting operations were creating certain output variables as globals even when called from a user-defined procedure. The variables were V_startLayer, V_endLayer, V_startChunk, V_endChunk and the string variable S_info.
Pressing enter in an empty table without typing anything in the entry line selected an invalid column which could cause a crash.
A CurveFit or FuncFit command would not compile if anything followed the /F parameter flag (confidence interval flag).
Fixed a crash if you tried to do a curve fit with all the fit coefficients held. This now reports an error.
Fixed a crash in the Replace Wave dialog if you selected Images and had nothing selected in the list of images.
Fixed bugs in the range editing and command generation in the Replace Wave dialog.
Fixed erroneous error reported by the Display Waves dialog if you selected a two-dimensional wave and selected a single row and a range in the second dimension.
Fixed a bug in the Wave Stats dialog: if you clicked the cursors button, the range edit boxes were filled with calls to pcsr, but the command generated used /R=() instead of /R=[]. Changed the label on the Range box to "Point Range" to reflect the fact that the command generated is appropriate for points, not scaled X values.
The Modify Axis dialog, Range tab failed to generate the correct commands for multiple selected axes for the Autoscale Visible Data checkbox.
Many contextual menus were missing their Igor Tips or status line help.
Windows: Fixed problem of extra icons when restoring graph using external tools/info.
Windows: the contextual menu for procedure windows was missing the Clear All Breakpoints item.
Windows: the Smooth dialog was generating commands with /M=(1.#QNAN) instead of /M=(NaN). Same for /R.
Fixed bug that prevented updating of Igor object pictures in notebooks on Intel Macintosh. If you have pasted a picture of an Igor graph, table or layout into notebooks on Intel Macintosh, you will need to manually update the picture once manually. Then you will be able to update it using the Notebook->Special menu.
Fixed a bug in HDF5 XOP that caused a crash when loading certain null string attributes.
Made HDF5 XOP universal so it can run on Intel Macintosh. Thanks to Bela Farago for his help porting to Intel.
Fixed a bug in Gizmo XOP which affected the position of z-axis labels.
Added Getting Started and License items to the Help menu. On Macintosh, added About Igor Pro to the Help menu to make it consistent with Windows.
Windows: Infinite window activation loop when tiling graphs with at least two minimized graphs with tools or info panels.
Windows: The Dialog Wave Browser and certain lists were missing tool tips giving expanded information about waves.
Windows: Fixed a problem where the license activation wouldn't be remembered the next time Igor launched.
Windows: Disabled controls no longer disappear or cause other controls drawing problems.
If last draw action in a graph was a delete and the experiment was then saved when the graph was not topmost, the object would become undeleted.
Fixed a crash that would occur if you used the Graph Now button in the Curve Fitting dialog with a built-in fit function selected.
Fixed a bug in FindLevel with the new /EDGE=1 or =2 flag that prevented finding level crossings directly after another level crossing in the other direction.
Curve Fits from user-defined functions would tell you that your mask wave does not match the data wave, when in fact it was the residual wave that had the problem.
Fixed a crash in curve fitting that resulted from trying to fit a subrange of the Y data if the subrange had zero points. This could result from having a start index larger than the number of points in the wave.
Fixed a bug in parsing of Curve Fit Y data subrange that disallowed subrange syntax like [number,] or [,number].
Previously, ListBox controls with editable cells and checkboxes/disclosure buttons didn't display the edit boxes or checkboxes in selection mode 0 (even though they worked!); in modes 1-4 they showed up in every cell of a row. Now they show in mode 0 and are independent along rows in mode 1-4. One benefit: you can have a listbox in which clicking a checkbox or an edit box doesn't select the cell or row.
Updated Data Browser.
Updated Marquee Demo.pxp.
Updated Igor Reference.ihf.