Version 0.9.001 (released July 18th, 2017)
This release takes care of many details in preparation for the official launch of Panorama X.

- Added 7-day free trial to Site License wizard.

- An invitation code is no longer required to create a new Panorama X account.

- Fixed menu operation when no database windows are open. Then fixed several other features that turned out to not work with no windows open, including the Find & Open dialog, dialogs in general, info( functions that return window information, the windowinfo( function, and the showrectangle and showwindowvariables statement.

- Panorama no longer opens an empty database automatically when launching, or when switching from another app when no database is already open. Instead, Panorama just opens with no windows when double clicking on the application icon.

- Data sheet now prints correctly when fields are hidden, only visible fields are printed.

- Display problems with Revert to Saved fixed, now works with any kind of window open.

- Revised File menu to include a Revert submenu with Revert to Last Saved Version and Revert to Browse All Versions.

- Implemented the revert statement. This reverts the database to the last explicitly saved version.

- Added New Database from Text File menu items to File>Import submenu (they are also still in File>New submenu).

- Renamed Text Import Wizard menu item to Import Text File into Current Database, and moved it down to the bottom of the submenu.

- Renamed Import Database menu item to Import Panorama Database into Current Database.

- Renamed Text Export Wizard menu item to Custom Text Export, and moved it down to the bottom of the submenu.

- Shape, Text, and Image objects that don’t contain code are now transparent to mouse clicks. In other words, you can place them on top of another object that does accept mouse clicks, and the object underneath will still get the mouse clicks.

- A transparent Push Button object now correctly sets the trigger from the button title, even though the button title is invisible. If the button title is not set, the trigger is set from the object name.

- The info(“modifiers”) function now correctly returns the status of the modifier keys when an Action menu is triggered. (However, it does not register that the right mouse button was clicked instead of the left.)

- Approximately 40% speed improvement for the lookup(, lookuplast(, lookupselected(, and lookuplastselected( functions. Note: the superlookup( function is not affected by this optimization.

- In Panorama Help, added a little downward pointing triangle on the right edge of the “Realm” pop-up, hopefully will make it more clear that this is a pop-up menu.

- No longer generates duplicate see also links on some documentation pages, thanks to Gary Yonaites for the fix.

- The Field menu now includes menu items Autoset Field Width and Autoset ALL Field Widths.

- When using the context menu to insert a form name or procedure name into procedure code (right click), Panorama will now properly quote the form name or procedure name.

- The Text Import wizard now adjust sample data based on the user’s country. Any dates in the sample data are converted to the proper date format, and decimal points and thousands separators are also converted into the proper format for the current region.

- In both data sheet and forms, pressing the Enter key now opens the current data field for editing, like it did in Panorama 6.

- The Fields & Variables constructor now allows you to specify a title for checkbox and radio buttons that is separate from the field name (for individual checkboxes) or the data value (for groups of checkboxes or radio buttons). To do this, add a colon followed by the title, for example `Rush<checkbox:Y:Rush Order>`. For complete documentation see the Automatic Form Construction help page, or the ConstructFormDataEditors page.

- Added preference options that control whether Select Within, Select Additional, and Find appear in the Find/Select favorites menu. The default is for all three of these to appear, but you can eliminate to reduce clutter in the search tool menu.

- If locked, a record is now unlocked before deleting it.

- The precedence of boolean operators has been revised. In past versions of Panorama X, AND, OR and XOR all had the same precedence. Now AND is the highest, followed by XOR, followed by OR. Note: For existing formulas, this change doesn’t take effect until they are “recompiled”. For example, if the formula is in a procedure, you must press “Check Procedure”, or make a change to the procedure, for this change to take effect. For a formula in a graphics object, you must edit the formula. This is true even if you close and reopen the database.

- Implemented the info(“mousedown”) function.

- Added the info(“thousandsseparator”) function, which returns the currently in use thousands separator (a comma in the U.S.).

- Fixed the jsonimport( function so that it correctly produces a dictionary that can be modified. It was producing an immutable NSDictionary that would crash if you attempted to modify it.

- Fixed the urltask( function so that it works correctly even if no code was specified (in the past, this would cause an error and nothing would download).

- Fixed the post statement.

- Fixed the fill and emptyfill statements so that they automatically convert text into dates or numbers as needed, just as Panorama 6 did.

- The round( function now works correctly even if the value and step have opposite signs. Thanks to David Thompson for this fix.

- Pop up menu superobjects are now correctly imported from Panorama 6 even if the CSONAME is “Popup Menu” instead of “PopUp Menu” – a customer submitted a database that had objects with this configuration, possibly created with a beta version of Panorama 3.

- The removeunselected statement now continues without an error if there are no selected records – it simply does nothing. It was not documented, but this is the same thing that Panorama 6 did.

- Automatic Form Constructor now allows the separator value to be `"comma"` instead of `","`, for example `<sep:comma>` (for popup menus, etc.)

- Fixed memory leak when closing a database. This was a new bug introduced in 0.9 when I fixed the problem where closing, then cancelling the close, would partially close the database.

- Wizard windows no longer display the Panorama icon next to the name, and the user can no longer hold down the command key and click on the name to bring up a pop-up menu of the enclosing paths (including inside the bundle).

- Removed notification from SuperChoice dialog, had been added for debugging and was never removed.

- Added Distance and Bearing to the list of common fields. Both are assumed to be floating point.

- Updated the 515 Sample Checks sample data (used in the tutorials) with corrections submitted by Michael Kellock.

- Many user submitted documentation corrections.

Brand new features implemented in this release (features that were not included in Panorama 6):

- info("thousandsseparator") -- The info("thousandsseparator") function returns the current thousands separator character (period or comma).
- procedureinsertformname -- The procedureinsertformname statement inserts a form name into a procedure, adding quotes.
- procedureinsertprocedurename -- The procedureinsertprocedurename statement inserts a procedure name into a procedure, adding quotes if necessary.
- Using Panorama X with Internet Monitoring Software -- configuring network mintoring/blocking software (Little Snitch, Hands Off, etc.) for proper Panorama X operation.

Features implemented in this release that work differently than they did in Panorama 6.

- revert -- The revert statement reloads the last saved version of the database from the disk.

Features implemented in this release that work exactly the same as they did in Panorama 6.

- info("mousedown") -- The info("mousedown") function returns true or false depending on whether the mouse is currently down.

ALL features that were added or changed in this release:

- constructformdataeditors -- The constructformdataeditors statement creates a column of form elements for editing data fields (or variables).
- fileerase -- The fileerase statement erases a disk file or a folder, removing it from the hard disk.
- info("mousedown") -- The info("mousedown") function returns true or false depending on whether the mouse is currently down.
- info("thousandsseparator") -- The info("thousandsseparator") function returns the current thousands separator character (period or comma).
- procedureinsertfieldname -- The procedureinsertfieldname statement inserts a field name into a procedure, adding chevrons if necessary.
- procedureinsertformname -- The procedureinsertformname statement inserts a form name into a procedure, adding quotes.
- procedureinsertprocedurename -- The procedureinsertprocedurename statement inserts a procedure name into a procedure, adding quotes if necessary.
- proceduresearch -- The proceduresearch statement searches for text in a procedure.
- proceduresearchexact -- The proceduresearchexact statement searches for text in a procedure.
- proceduresearchnext -- The proceduresearchnext statement searches for text in a procedure, starting from the current location.
- proceduresearchnextexact -- The proceduresearchnextexact statement searches for text in a procedure, starting from the current location.
- Using Panorama X with Internet Monitoring Software -- configuring network mintoring/blocking software (Little Snitch, Hands Off, etc.) for proper Panorama X operation.

See Also

- Version 0.1.001 (released July 7th, 2012) -- Summary of Version 0.1.001 (released 7/7/2012)
- Version 0.1.002 (released August 12th, 2012) -- Summary of Version 0.1.002 (released 8/12/2012)
- Version 0.1.003 (released December 2nd, 2012) -- Summary of Version 0.1.003 (released 12/2/2012)
- Version 0.1.004 (released December 10th, 2012) -- Summary of Version 0.1.004 (released 12/10/2012)
- Version 0.1.005 (released December 21st, 2012) -- Summary of Version 0.1.005 (released 12/21/2012)
- Version 0.1.006 (released December 26th, 2012) -- Summary of Version 0.1.006 (released 12/26/2012)
- Version 0.1.007 (released May 1st, 2013) -- Summary of Version 0.1.007 (released 5/1/2013)
- Version 0.1.008 (released May 22nd, 2013) -- Summary of Version 0.1.008 (released 5/22/2013)
- Version 0.1.009 (released July 9th, 2013) -- Summary of Version 0.1.009 (released 7/9/2013)
- Version 0.1.010 (released October 14th, 2013) -- Summary of Version 0.1.010 (released 10/14/2013)
- Version 0.1.011 (released December 6th, 2013) -- Summary of Version 0.1.011 (released 12/6/2013)
- Version 0.1.012 (released August 29th, 2015) -- Summary of Version 0.1.012 (released 8/29/2015)
- Version 0.1.013 (released September 6th, 2015) -- Summary of Version 0.1.013 (released 9/6/2015)
- Version 0.1.014 (released September 14th, 2015) -- Summary of Version 0.1.014 (released 9/14/2015)
- Version 0.1.015 (released September 29th, 2015) -- Summary of Version 0.1.015 (released 9/29/2015)
- Version 0.1.016 (released October 12th, 2015) -- Summary of Version 0.1.016 (released 10/12/2015)
- Version 0.1.017 (released November 11th, 2015) -- Summary of Version 0.1.017 (released 11/11/2015)
- Version 0.1.018 (released December 7th, 2015) -- Summary of Version 0.1.018 (released 12/7/2015)
- Version 0.1.019 (released January 28th, 2016) -- Summary of Version 0.1.019 (released 1/28/2016)
- Version 0.1.020 (released February 15th, 2016) -- Summary of Version 0.1.020 (released 2/15/2016)
- Version 0.1.021 (released February 29th, 2016) -- Summary of Version 0.1.021 (released 2/29/2016)
- Version 0.1.022 (released March 1st, 2016) -- Summary of Version 0.1.022 (released 3/1/2016)
- Version 0.1.023 (released May 27th, 2016) -- Summary of Version 0.1.023 (released 5/27/2016)
- Version 0.1.024 (released June 12th, 2016) -- Summary of Version 0.1.024 (released 6/12/2016)
- Version 0.1.025 (released July 21st, 2016) -- Summary of Version 0.1.025 (released 7/21/2016)
- Version 0.1.026 (released August 29th, 2016) -- Summary of Version 0.1.026 (released 8/29/2016)
- Version 0.1.027 (released September 18th, 2016) -- Summary of Version 0.1.027 (released 9/18/2016)
- Version 0.1.028 (released November 9th, 2016) -- Summary of Version 0.1.028 (released 11/9/2016)
- Version 0.1.029 (released December 31st, 2016) -- Summary of Version 0.1.029 (released 12/31/2016)
- Version 0.1.030 (released February 12th, 2017) -- Summary of Version 0.1.030 (released 2/12/2017)
- Version 0.1.031 (released March 3rd, 2017) -- Summary of Version 0.1.031 (released 3/3/2017)
- Version 0.1.032 (released April 3rd, 2017) -- Summary of Version 0.1.032 (released 4/3/2017)
- Version 0.9 (released May 15th, 2017) -- Summary of Version 0.9 (released 5/15/2017)
- Version 0.9.002 (released July 27th, 2017) -- Summary of Version 0.9.002 (released 7/27/2017)
- Version 0.9.003 (released September 10th, 2017) -- Summary of Version 0.9.003 (released 9/10/2017)
- Version 0.9.004 (released September 14th, 2017) -- Summary of Version 0.9.004 (released 9/14/2017)
- Version 0.9.005 (released September 19th, 2017) -- Summary of Version 0.9.005 (released 9/19/2017)
- Version 0.9.006 (released September 27th, 2017) -- Summary of Version 0.9.006 (released 9/27/2017)
- Version 0.9.007 (released October 3rd, 2017) -- Summary of Version 0.9.007 (released 10/3/2017)
- Version 0.9.008 (released October 12th, 2017) -- Summary of Version 0.9.008 (released 10/12/2017)
- Version 10.0.0 (released October 18th, 2017) -- Summary of Version 10.0.0 (released 10/18/2017)
- Version 10.0.01 (released December 10th, 2017) -- Summary of Version 10.0.01 (released 12/10/2017)
- Version 10.1 (released August 6th, 2018) -- Summary of Version 10.1 (released 8/6/2018)
- Version 10.1.1 (released August 30th, 2018) -- Summary of Version 10.1.1 (released 8/30/2018)
- Version 10.1.2 (released November 15th, 2018) -- Summary of Version 10.1.2 (released 11/15/2018)
- Version 10.2 (released October 7th, 2021) -- Summary of Version 10.2 (released 10/7/2021)