Version 10.2.0 b26 (released June 15, 2022)

This is a major release, hopefully leading soon into the final 10.2 release! In addition to the long list of changes below, a major internal change is that Panorama X is now built using Apple’s macOS 11 SDK. Previous versions were built using the OS X 10.12 SDK, so this is a big change that necessitated a multitude of code changes not listed below. The primary reason for the long gestation time for this release was the need to track down all of the new problems caused by this SDK shift. (Note that this shift is a prerequisite for creating Apple Silicon native code.)

- Panorama X is now native on Apple Silicon, including the server and Apache CGI plug-in.
- Image Display objects now print in all scaling modes, on all supported versions of macOS.
- Panorama is now cognizant of the brave new world without built-in scripting languages in recent versions of macOS. Panorama now allows you to configure what scripting languages you use, for example you can use languages installed by HomeBrew or MacPorts. The Preferences window now has a nice status display indicating what scripting languages are available.
- In graphics mode, the Copy command now copies the blueprint code (text) as well as the objects themselves. If you paste text that contains valid blueprint code, Panorama will create new objects with that code.
- Panorama now allows up to 25 pages to be printed per record (extra data tiles 2–24). The extrapages( now supports using a delimiter in between page numbers, may be comma, space, tab, carriage return or linefeed. This allows two digit page numbers to be included in the list.
- Greatly improved support for alias files, including new function aliaspath( that returns the target of an alias. The opendatabase and opensecret statements now properly handle alias files, so do the filecatalog(, filedate(, filedisplayname(, fileinfo(, fileload(, fileloadpartial(, filesize(, filesuperdate(, filetime(, filetypecreator( and listfiles( function. Various places where images may be specified by path now also support alias files - alertmodal, alertsheet, dragtext, Image Display objects and Rich Text.
- New ability to validate the connection between client and server. New info(“serverconnectionstatus”) function returns the “right now” status of the connection to the server. New pop-up menu attached to sharing icon in toolbar, with common sharing operations. New Check Server Connection command, new preferences to periodically monitor the connection to the server. Timer Monitor modified to handle this. New statement DisconnectedServer takes the database offline without contacting the server. When connecting/disconnecting from server, Panorama now offers to perform the same operation on all other databases associated with the same server. The sharing icon can now appear in the body of a form (in addition to the toolbar).
- The ability to disable editing of individual fields has been extended to forms as well as the data sheet. All types of form objects can be disabled except for text lists and matrixes. Fields can now be disabled and enabled in code by the disablefieldediting statement (or lockfields), and the current status can be determined using info(“disabledfields”), info(“enabledfields”), and dbinfo(. If present, the .BlockedEdit procedure will be triggered if an attempt is made to edit a disabled field.
- Resolved unimplemented behavior in regard to opening & closing databases on the server: 1) Implemented the OpenServerFile and CloseServerFile statements. 2) The .InitializeServer procedure is called when a database is opened on the server (any errors that occur in this code are trapped and logged). 3) The server now opens databases when it launches (of course only for databases that have this option specified).
- Panorama now checks to make sure the specified http port is available before launching Panorama X Server. (If the port is not available, the user is warned not to continue launching the server.)
- Fixed mangled data display/crash when editing using data sheet and form at the same time, which was reported by several users.
- Panorama now allows a database to close even if the current record has been modified and is still locked. This problem was encountered by many users, it also would prevent Panorama from quitting if the current record was still locked.
- When a form window is closed, any editing in progress will be wrapped up before the window is closed. In other words, you will no longer lose data if you close a form window while editing text.
- Fixed the Find/Select dialog when using the Return or Enter keys to initiate the search (instead of clicking on Find or Select).
- Clicking on a data sheet column title now always gives focus to the data sheet. (This was a significant problem because if you were editing a field property and clicked the title of another field, the edited field property would be lost.)
- Panorama is now much smarter about editing the same field in multiple windows. In Panorama X, you have always been able to have editing sessions open in multiple windows (Panorama 6 would immediately stop editing if the parent window was not the key window any more). The only problem was – what if you edited the same field in two or more windows at once? Panorama X now handles this situation. If you try to edit a field that is already being edited in another window, the editing session in the other window will be cancelled, and the edited text will transfer to the current window! For example, suppose you have a mailing list and you are editing the City field in a form. Then you go to the data sheet. You can edit other fields in the data sheet, and the form will continue to have the City field open for editing. You could go back to it at any time. But if you double click on the City field in the data sheet (or tab to it), the edited text in the form will be transferred to the input window associated in the data sheet. You can now continue editing, but in the data sheet instead of the form. Or you can do the reverse, start editing in the Data Sheet but then transfer the editing to the form.
- Input patterns with leading characters now work again (they were broken in b25).
- The Header tile now prints data from the first record of the page, instead of the currently selected record.
- In a form, the up/down arrows now work correctly after finishing editing with Return, Enter, Escape, etc. (In previous versions, you had to click on a blank spot in the form to get the up/down arrows to work again.)
- Saving a database no longer cancels custom window titles.
- When a form has only a vertical scroll bar, it will not scroll horizontally in response to the track pad or scroll wheel. (Or if a form has only a horizontal scroll bar, it will not scroll vertically.)
- Data buttons are now display only in View-as-List forms (instead of crashing when clicked on).
- There is now better reporting if a user tries to access a server record that has been deleted. If the server can’t find a record requested by the client (lock, commit, delete, download), it checks to see if that record has been deleted. If it has, it reports that fact. If not, it reports that the database may be damaged (could be client or server damage, insufficient information to tell).
- The new ClipboardImageSave statement will save an image on the clipboard into a file. The new ClipboardImageSize( function will return the dimensions of an image on the clipboard (if any). (Note: These new features were developed for ProVUE’s internal use to make it easier to add images to the Panorama documentation, but they are available for anyone’s use.)
- New fileattributes( function and modifyfileattributes statement. These allow accessing and modifying file attributes like the creation and modification date, permissions, etc.
- The Edit>Use Selection for Find menu command (Command-E) now works.
- The banner icon that indicates sharing status no longer disappears when you switch to graphics mode and back.
- Object colors now update properly when changed, no matter what version of macOS you are using.
- The SuperAlert stop, caution and note icons now work. Also fixed up the default font and geometry a bit.
- The filecatalog( function now includes packages in the output, and has new options INCLUDEFOLDERS and EXCLUDEFILES.
- The copyfolder statement now correctly copies packages inside the folder.
- The various show statements no longer cause data display errors and/or corruption if used on a locked record.
- Multiple levels of try/catch in subroutines now works.
- When uploading a database to the server, Panorama now offers to delete any existing server database with the same name.
- Fixed the Delete from Server option when un-sharing a database, it was incorrectly checking if the database was online.
- If a server is set up as a remote server and is also currently available via bonjour, it is no longer listed twice. The server will only be listed via bonjour. However, the “eject” button will appear, so that it can be removed from the list of remote servers.
- Fixed the Start/Stop Apache button in the Apache Preferences panel when running Big Sur or later. Also, installing the CGI plug in now works even if there is a space in the path name containing the Panorama X application.
- Fixed new generation update of shared databases opened “daisy chained” (if database a opens b opens c, all of the databases will now open correctly even if one or more of the databases requires a new generation update as it is opened).
- Fixed the password option of the ShellScript statement in recent versions of macOS (to run the script using sudo).
- Fixed define statement to work with declared global variables that don’t have a value. This was supposedly fixed in b22, but that fix was incorrect.
- The right statement now honors the max # of displayed fields in a data sheet. When in a data sheet and already on the rightmost visible field (because we are already at the max displayed column), the info(“stopped”) flag will be set to true. The active column will not change.
- Fixed total, count, etc. when the database starts out with no summary records. This was reported as a problem with removesummaries, but that statement wasn’t where the actual bug was.
- Copy/Paste/Duplicate of summary records is now blocked.
- Moving summary records up or down now works correctly.
- Fixed the «Current Field» option in the Morph dialog.
- Fixed the colorwheel statement (it would ignore all clicks and keys, requiring a force quit).
- Choosing a Find/Select favorite is now properly recorded if the procedure recorder is running.
- The WebMerge statement now works if an HFS path is passed in parameter 1.
- The Preferences>Logging panel now has an option to prefix all server log lines sent to the terminal with the date and time. The date and time were already included in the log files, now they can optionally be included in the terminal output as well.
- New dbinfo( options: bannermessage and bannericon.
- New hostedfiles( function returns a list of open databases that are associated with a specified server.
- New timer option: Connected (appears as RunIfConnected in timerinfo). If set, the timer will only run when a connected database is active.
- The color well in the procedure properties panel now works properly.
- Functions with ten or more parameters now work properly (lookupquintuplet(, lookupsextet(, etc.).
- Panorama no longer chokes if asked to construct a zero width line item. Also, there are new and tags that allow you to generate a partial subset of line items, for example <firstitem:11><lastitem:20>.
- Panorama Help now works correctly even if PanoramaX.app has been renamed with characters that are not allowed in a URL (or if it is contained in a folder that has characters that aren’t valid in a URL).
- New commands in the graphics mode Blueprint tool menu: Copy/Paste Constructor Code.
- New StartStopRecorder statement, does the exact same thing as clicking on the microphone tool in the procedure window.
- Server Admin will now continue to work even if the window name changes to Server Administration:Main. (A separate fix ensures that this window name change never happens any more, but if it did, the window would still function.)
- Fixed `panoramax://addremotehost` so that it works even if the URL already has an http:// or https:// prefix.
- Improved client/server error handling if server returns a completely invalid response (for example if the server is not running).
- With Code Triggers Instrumentation Log enabled, the log no longer shows that .ModifyRecord was triggered if the database doesn’t contain a .ModifyRecord procedure.
- Panorama now displays the correct alert if the user tries to launch server but they haven’t purchased the Deploying Server course.
- The PanoramaX menu is now the Panorama X menu (with a space).
- Fixed geometry and operation of the SuperGetPassword statement.
- Propagate is now smarter when the database contains summary records, in which case data records aren’t modified by propagation, and propagation starts over after a summary record.
- It is now impossible to rename a form or procedure with multiple lines, or with control characters.
- Panorama now always use light mode, no matter what the system setting is.
- Better error checking in the code for `panoramax://hostdownload x-callback` url.
- Fixed spurious errors that could (very rarely) appear when Server Administration window is open.
- Insertion of today’s date into a literal string (Text Display) is now more flexible. Now allows dd/mm formats in addition to mm/dd, and allows DATE: to be fully capitalized.
- Using the superalert statement with a background color no longer hides the buttons. Also small tweaks to button positioning.
- The supergettext statement now correctly handles options for scroll bars.
- If the database referenced by the grabdata(/fieldvalue( function is not open, it now reports the requested database name instead of “(null)”.
- Fixed elastic geometry of the Split Field dialog.
- Fixed spurious false errors reported when using urlfunction( with the “HEAD” method.
- Updated documentation for info(“formevent”) to explain that this function is now obsolete.
- There is no longer a spurious error message if you close the Constructor window after you close the associated form window.
- The Panorama 6 Installer Wizard now displays a warning if running on macOS 10.15 or later. (The warning tells you that Panorama 6 is not compatible with the version of macOS on the computer.)
- Documentation corrections from Chris Watts, David Thompson, Peter Newble, Robert Ameeti and Eric Bolden.