Panorama 0.1.028 Release Notes

Panorama X 0.1.028 is now available. You can download this new version from the web site, or you can simply launch your current version of Panorama X and let it automatically update. If Panorama X is already running, choose Check for Updates in the Panorama menu.

This release includes dozens of fixes and features in response to feedback on the Panorama X forum. Thank you to everyone for your incredible engagement and participation over the past few weeks. In addition to the programming work, this release also includes about 250 pages of new documentation, with over 400 illustrations and animations. Visit the Graphics Mode help page for a directory of all the new material. Here are the changes to the code itself.

  • Implemented the Choice Palette for editing data with radio buttons instead of text editing. Unlike Panorama 6, the arrangement is always vertical, it does not arrange buttons horizontally. Also, manually edited exception values are not allowed.

  • Added the ability to change the Data Sheet text size via menus (Window>Text Size) and the size statement.

  • Added new Font Awesome Icons wizard in Help menu. It’s really cool, check it out! Also upgraded included Font Awesome to 4.7 with 41 new icons (675 total).

  • Now automatically loads custom statements from any databases found in /Application Support/PanoramaX/Libraries/. You can put databases in that folder manually, or you can ask the View Organizer to create one for you with the Libraries>Open User Name Custom Statements command. Later you can re-open with the same command, or with the Open View dialog or Open View wizard. Once you’ve created a library this way you can’t close it, the only way to get rid of it is to shut down Panorama and move it out of the folder. Procedures that are to be used as custom statements must have all UPPER CASE names. They can optionally have a comment block at the top that identifies the parameters, if that is present, Panorama X will check the number of parameters when the statement is used.

  • Implemented the RegisterCustomFunction statement. This function now allows the same function to be defined multiple times with different numbers of parameters.

  • New special procedure in custom statement libraries – .InitalizeFunctions. Any code in this procedure will be run automatically when Panorama starts up, and also when the Libraries>Register Functions and Libraries command in the View Organizer is used.

  • Implemented the printonemultiple statement.

  • Rich text now has new tags </color>, </bgcolor>, </font> and </size>. These set the text size back to the previous color, background color, or font. You could do this before with the <style></style> tags but this is much simpler.

  • A Text Display Object in Literal Mode now support substitution of «page#» and «date: pattern» tags. For the «date: pattern» tag, only the patterns listed on page 1103 of the Panorama 6 Handbook are supported. If some other unusual pattern is desired, this has to be done with a formula substitution and the datepattern( function.

  • Panorama now honors the system preferences for the first day of the week. There is a new function, firstdayofweek(, that can be used to determine the users preference. The week1st( function now returns whatever day the user specified as the first day, and group by week also uses the specified first day of the week. Changes take effect immediately when the system preferences are changed, you don’t have to quit and relaunch Panorama.

  • The Favorites dialog sheet now works correctly (in the Find/Select, Sort and other dialogs) – you can select favorites to edit or delete them.

  • Line item formulas and procedures no longer needed to be repeated for item 1, 2, 3, etc. Just make sure that there is a formula and/or procedure for item 1, and it will be used for all line items – you can leave the formulas and/or procedures for line items 2, 3, 4, etc. blank. This makes it a lot easier for editing, you only have to edit once.

  • Double clicking on a field title in data sheet now toggles field properties panel.

  • Adjusted Records menu so that the Delete All Records command is more clear (changed name from Delete All), also rearranged menu so that this is the last command and is less likely to be selected accidentally.

  • The Find & Open dialog now shows databases that are currently open in violet instead of black. Thanks to Gary Yonaites for this suggestion and the actual code!

  • Changed the Panorama X Video Training link in the Help menu to the faq/training page on instead of directly to Vimeo.

  • Added Sample Data submenu to Text Import wizard’s Import Data menu.

  • Text Editor Object now draws Bezel border correctly even when the object fill mode is set to Outline. This also fixes bug that borders weren’t drawn correctly in the Find/Select and Morph dialogs.

  • Deleting form objects now works correctly in a form that contains group objects, even if the group contains buttons, text objects, etc. The group objects no longer disappear.

  • Fixed formula parsing precedence problem. Problem occurred when two or more low priority operators were followed by a higher priority operator, for example a>b+c and x would incorrectly be parsed as if it was a>(b+c and x).

  • The Text Import wizard now correctly handles tab separated data that contain commas in the data.

  • Import statements (and the Text Import wizard) now set the current record to the first record of the imported data.

  • The importtext statement now correctly imports empty lines in the text as blank database records

  • Fixed exportline( so that carriage returns and line feeds are exported as vertical tabs, and fixed importtext and importline so that vertical tabs are imported as carriage returns.

  • Performance enhancement for display update when all fields have changed, for example when moving up or down between records.

  • Fixed Select All in View-As-List forms.

  • If user selects File>Database Options when there is no open database, they now get a polite notification instead of an error message.

  • Added a menu item Objects>Clear All Tab Panels in Graphics Mode that removes the contents of all tab panels on the current form, including any “orphan” tab panel objects (orphans can be caused by moving or deleting tab panel objects). Also added an optional tool bar item that does the same thing.

  • In situations where a string is being interpreted as a boolean, “-1” will be interpreted as true, in fact, for any case where val(SomeText) is true, SomeText will also be true.

  • Fixed the definehotkeys statement so that all numeric keys can be used, before, only 1 and 7 worked.

  • For compatibility with Panorama 6, the Field statement now has the alias Column, while the FormulaFill statement now has the alias Equation.

  • Fixed setwindow statement so that it will work correctly if the last parameter (options) was omitted.

  • Fixed splitmenutrigger statement, it seems to have gotten lost at some point.

  • Now properly generates an error message for a procedure with a case statement but no endcase statement.

  • Fixed initial selection in Find & Open dialog.

  • Fixed runtime error in opendatabase statement if database was already open but had no open windows.

  • The openfile statement will now open any saved windows if used when the database is open but with no visible windows. However, this is only for the openfile statement, not for the opendatabase statement, and not if the Find>Open dialog is used.

  • ImportDatabase statement was leaving openrecord locked at last record of imported data (until something else was edited).

  • Improved thread safety of LRUCache:cacheObject method. In real world terms, this reduces the likelyhood of a crash or hang when searching.

  • Fixed saveallprocedures so that it correctly generates a Panorama X dictionary.

  • The newformobject statement now tolerates blanks in class name of new object.

For those of you that downloaded 0.1.028 right away and ran into problems immediately when launching, I have uploaded a new version that fixes the problem. This was related to the new ability to set up custom statements, I left out an error check in case no custom statements were set up. On my system of course it worked because I set up custom statements during my testing, but none of you have custom statements yet. I should have caught this, usually I test new releases on a “virgin” system, but I’m afraid today I am not thinking very straight.

I have a swag of custom statements - am I going to have problems or is it OK to upgrade? It’s not a big deal to dump them and re-install them if I have to. In fact, I need to do that to take advantage of your new custom statement setup.

You’ll be fine – you don’t have one of the new custom statement libraries, so what you are doing will be completely independent of that. But as you say, I’m sure you’ll want to convert over to the new system, which should be pretty trivial. It’s just a question of putting them in a database in that folder so that Panorama will automatically load them when it launches. The code in each custom statement doesn’t change from what you have now. If you already have the custom statements in a separate database, you can probably just move that database into the /Application Support/PanoramaX/Libraries/ folder and then remove whatever code you are currently using to load the libraries.

What conditions cause the Check for Updates… to be dimmed in the Panorama menu?

I don’t know of any reason why Check for Updates… would be dimmed. The code that handles that is from a standard package called Sparkle that hundreds of apps use:

I looked in the documentation and headers for this project and couldn’t find any mention of a reason for the menu item to be dimmed :frowning: On my local copy of Panorama, it is not dimmed even though I already have the most up-to-date version.

On my laptop,(Sierra) the update notice popped up and installed according to plan. On my desktop machine (Yosemite), no notice appeared and the menu choice is dimmed as noted. It does show my account info properly, so …?

It’s easy enough to download and install, so consider it more of an FWIW at this point.

I’ve observed this behavior on probably 60% of the updates on one or the
other of my 2 machines. Nowadays, though, the updates often happen
without my intervention at all.


James Cook wrote:

I think you must have checked the auto-update option at some point.

When this is enabled, Sparkle automatically downloads the the update in the background. Apparently, until recently there was a bug that dimmed the Check for Updates menu while this auto-download takes place, see the links below. So I think if you wait the update will just happen.

It looks like this is a minor bug in Sparkle that may have been recently fixed, but Panorama X doesn’t have the latest version of Sparkle.

Your next question is going to be how to turn automatic download off once you have turned it on – I assume there must be a way, but 10 minutes of Google searching did not turn up a way to turn it off.

As a matter of fact, on the next launch it was updated. I never had any advisory or other sign that something was taking place.

Noticed some new tools available only in the custom tool bar items for Forms. The Data Sheet does not have them as an option. Any logic behind this?

Those aren’t new, they are really, really old. I think I removed them from the Data Sheet but neglected to do so for forms.

Glad to see you incorporated the Font Awesome Icons wizard. I’m sure you figured out a much better way to implement it than I did when I sent you my similar database back during our classes. Did you happen to catch the announcement for Font Awesome 5 on Kickstarter? Hopefully it will bring even more good things to Panorama X in the future.

Yes, I did, and I’m a backer. I was going to provide a link to that after I came out with the 0.1.028 release, but haven’t gotten to that yet. I also want to post a link about how that wizard was made – and the fact that it was created completely with stock Panorama X form objects. Nothing I did that couldn’t have been done by any other Panorama user.

I’m a backer too. I’d be interested to see how you did it. Are you pulling the icon list directly from the font file? When I built my version I had to manipulate the font data I grabbed from the Font Awesome website and then create a separate database.

You can check out Jim’s version in the Wizard folder of the Resources folder in the Panorama X app file. Here is the full path:

/Applications/ Awesome Icons.pandb

Or go to the Panorama Help menu and choose Font Awesome Icons

Gary’s into brute force today.

The trouble with doing it the easy way is you can’t get into the procedures with that method. If you open the file directly from the Wizard folder you get into everything. Sometimes brute force is the only way! :stuck_out_tongue: