<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <title>StudioWorks - Version 2007-05-31</title> <meta name="keywords" content="omnis studio, raining data, studioworks documentation" /> <link rel="stylesheet" type="text/css" href="http://www.studiotips.net/css/codedoc.css" /> <link rel="stylesheet" type="text/css" href="http://www.studioworks-dev.net/css/codedoc.css" /> </head> <body> <div id="container"> <p><a href = ../index.html > Sw4 </a> &nbsp &gt; &nbsp <a href = index.html > About </a> &nbsp &gt; &nbsp Version 2007-05-31</p> <a name="version20070531" /> <h2>Version 2007-05-31</h2> <p>This release greatly reduces the size of the cached list of the SQL lists master list. It does so by no longer storing the pre-defined lists in the master list.</p> <p>This release is mostly just minor bug fixes and code tweaks. Look through the detailed modifications for each library in this section to see all of the modifications. The following is a summary of the more important changes.</p> <ol> <li><strong>SQL Master List Size Reduced</strong> - The cached list for the <span class="code">oSQLLists</span> master list was getting bloated because we were storing pre-defined lists for each schema and query class in the master list. (The defined lists created using the <span class="code">$definesfromqlclass</span> method.) This was becoming a problem for mega-apps as the cached list was growing to over 20MB. Elimating the definedlist column from the master list reduced the cached list size to 25% of its original size. This change greatly speeds up loading of cached lists during startup for runtime users.</li> <li><strong>Multiple Monitors</strong> - Support has been added for remembering the last window size and location on multiple monitors on Mac OS X computers.</li> <li><strong>MySQL</strong> - Minor changes to the preferences objects for working with MySQL databases.</li> <li><strong>Programmer Workbench</strong> - A window has been added which combines all of the popular programmer windows in a single shell window that uses a tab pane interface. <span class="nav">Programmer Workbench</span> has been added to the programmer menu with the shortcut key combination <kbd>Ctrl/Cmnd+Shift+Z</kbd>. All of the programmer windows now support restoring the window size and location for multiple monitors.</li> <li><strong>Programmer Toolbar</strong> - A programmer toolbar has been added. It can be installed/removed by checking/unchecking the <span class="nav">Programmer Toolbar</span> menu item on the <span class="nav">Programmer Menu</span>. The last setting is stored in the local preferences.</li> <li><strong>Lookup Droplist Column Headings</strong> - Column headings will now appear for any lookup droplist that has two or more columns.</li> <li><strong>Web Stats</strong> - Object classes <span class="code">oWebMonitor</span> and <span class="code">oWebStatsEmailTimer</span> have been added to swWeb4. These object can be used to perform non-visual web monitoring. A record is inserted into the Webappstat table for each web app request. Daily, weekly, monthly, and yearly web stats summary can be generated and automatically emailed to a specified user by the <span class="code">oWebStatsEmailTimer</span> object. See the StudioWorks > <span class="nav">Web</span> documentation for instructions on how to set up web monitoring.</li> <li><strong>Paths Object</strong> - Important bug fixes have been made to the <span class="code">oPaths</span> object class. It now supports storing your <span class="file">studioworks</span> folder in a common <span class="file">Omnis Startup</span> folder that can be located inside your <span class="file">Applications</span> or <span class="file">Program Files</span> folder. Methods have been added which return the path to the user's home directory, user's desktop directory, and user's documents directory. Be sure to copy <span class="code">oPaths</span> from <span class="code">swBase4</span> to your main library (see instructions below)</li> </ol> <p>To update to this new release:<br /> <ol> <li>Quit Omnis Studio.</li> <li>Backup your application.</li> <li>Replace your old <span class="file">studioworks</span> folder and contents with the new <span class="file">studioworks</span> folder included with this release.</li> <li>Delete the <span class="file">app_prefs.df1</span> in your <span class="code">APP/libraries/modules/</span> folder.</li> <li>Reopen your StudioWorks app and rebuild cached lists.</li> <li>Rename <span class="code">oPaths</span> in your main library to <kbd>X_oPaths_20070525</kbd></li> <li>Copy <span class="code">oPaths</span> from <span class="code">swBase4</span> to your main library.</li> <li>Quit OMSt and reopen your StudioWorks app.</li> <li>Test your app.</li> </ol></p> Each library and the modifications in the release are listed below. The modifications are compiled from the <span class="code">@MOD</span> tag comments found in the methods of the classes in the library. <a name="swbase4" /> <h3>swBase4</h3> <p><span class="code">mProgrammer/installProgrammerToolbar</span> <span class="moddateby">(2007-05-30 Doug K.)</span><br /> Added method to install the programmer toolbar when swBase4 is opened.</p> <p><span class="code">mProgrammer/removeProgrammerToolbar</span> <span class="moddateby">(2007-05-30 Doug K.)</span><br /> Added method to remove the programmer toolbar if the 'Programmer Toolbar' menu item is unchecked.</p> <p><span class="code">mProgrammer/setMenuLine_ShowHideProgrammerToolbar</span> <span class="moddateby">(2007-05-30 Doug K.)</span><br /> Added 'Programmer Toolbar' menu line and method to check/uncheck the item based on whether or not the toolbar is to be shown or hidden.</p> <p><span class="code">oAppPrefs/$_init_prepareCachedlistTable</span> <span class="moddateby">(2007-05-15 Doug K.)</span><br /> Added switch/case for MYSQLDAM and set datatype to MediumBlob.</p> <p><span class="code">oAppPrefs/$_init_prepareCachedlistTable</span> <span class="moddateby">(2007-05-22 Josh L.)</span><br /> Changed MYSQLDAM Syntax to set the datatype to MEDIUMBLOB instead of LARGEBLOB</p> <p><span class="code">oAppPrefs/$_saveCachedList</span> <span class="moddateby">(2007-05-15 Doug K.)</span><br /> Added check for cached list size greater than 16MB which is a problem for the MYSQLDAM.</p> <p><span class="code">oCreateLibrary/createSubLibClasses</span> <span class="moddateby">(2007-05-14 Doug K per enhancement request by Mike M.)</span><br /> Check for sSchema_template in the main library before using the default in swBase4.</p> <p><span class="code">oDBAdminMethods_SQLSERVER/$_retConstraintsList</span> <span class="moddateby">(2007-05-28 Doug K. per Andy H.)</span><br /> Modified the code so that a second $fetch is attempted if the first fetch fails. SQL Server quirk.</p> <p><span class="code">oLocalPrefs/$:ShowProgrammerToolbar</span> <span class="moddateby">(2007-05-30 Doug K.)</span><br /> Added 'showprogrammertoolbar' method to 'sLocalPrefs_listdfef' and the appropriate property method to oLocalPrefs.</p> <p><span class="code">oLogonMethods_MYSQLDAM/$logon</span> <span class="moddateby">(2007-05-17 Doug K.)</span><br /> MySQLDAM bug workaround with fields reporting data truncation. Set the $connectoption for kMySqlOptDataTruncation to kFalse.</p> <p><span class="code">oPaths/$:PathOmnisStartupFolder</span> <span class="moddateby">(2007-05-25 Doug K.)</span><br /> Added method which returns the path to special the 'Omnis Startup' folder if it exists. This folder, located in 'Applications' or 'Program Files' is an alternate, optional location for storing your 'studioworks' folder.</p> <p><span class="code">oPaths/$:PathStudioWorksFolder</span> <span class="moddateby">(2007-05-25 Doug K.)</span><br /> Modified method to also check the optional 'Omnis Startup' folder for a 'studioworks' folder. Developers can now locate their 'studioworks' folder in a central 'Omnis Startup' folder located in 'Applications' or 'Program Files'.</p> <p><span class="code">oPaths/$:PathUserDesktop</span> <span class="moddateby">(2007-05-25 Doug K.)</span><br /> Added method which returns the path to the current user's 'Desktop' directory, based on the operating system.</p> <p><span class="code">oPaths/$:PathUserDocuments</span> <span class="moddateby">(2007-05-25 Doug K.)</span><br /> Added method which returns the path to the current user's 'Documents' directory, based on the operating system.</p> <p><span class="code">oPaths/$:PathUserHome</span> <span class="moddateby">(2007-05-25 Doug K.)</span><br /> Added method which returns the path to the current user's home directory, based on the operating system.</p> <p><span class="code">oPaths/$initialize</span> <span class="moddateby">(2007-05-28 Doug K.)</span><br /> Added switch/case for 'htmltemp' to 'Do $cinst.$:PathHtmlTempFolder.$assign' Added switch/case for 'urlhtmltemp' to 'Do $cinst.$:URLHtmlTempFolder.$assign' Completed code missing in the 'Default' case.</p> <p><span class="code">oPaths/$retStartupItemsFilePropertiesList</span> <span class="moddateby">(2007-05-28 Doug K. per Mike M.)</span><br /> Remove code that considered a double slash // to be a comment. Causes problems with URLs (http://...) oPaths will need to be copied from swBase4 to the main library for this update to take effect.</p> <p><span class="code">oPrefs_abstract/$_init_preparePrefsTable</span> <span class="moddateby">(2007-05-14 Doug K.)</span><br /> Added switch/case in create table to use LONGBLOB for MYSQLDAM.</p> <p><span class="code">oRebuildCachedLists/$saveAppPrefs</span> <span class="moddateby">(2007-05-15 Josh L.)</span><br /> Add the missing returns FlagOK from each $assign method.</p> <p><span class="code">oRebuildCachedLists/$sortSchemaClassCols_stb</span> <span class="moddateby">(2007-05-31 Doug K.)</span><br /> Added method which sorts the _stb schema class columns into alphabetic order. The method can be called from the 'Rebuild Lists' programmer window.</p> <p><span class="code">oSQLLists/$#About</span> <span class="moddateby">(2007-05-15 Doug K.)</span><br /> Deleted the 'definedlist' column from the 'sSQLListsMaster_listdef' because it bloats the size of the cached list. Modified all code that was using the 'definedlist' column in master list.</p> <p><span class="code">oSQLLists/$buildLists</span> <span class="moddateby">(2007-05-15 Doug K.)</span><br /> Comment out the method called to 'buildDefinedLists' as this is no longer being done for the SQL lists master list.</p> <p><span class="code">oSQLLists/$retDefinedList</span> <span class="moddateby">(2007-05-15 Doug K.)</span><br /> Stop using the cached 'definedlist' and instead always call 'retDefinedListForCurrLine'.</p> <p><span class="code">oSQLLists/retDefinedListForCurrLine</span> <span class="moddateby">(2007-05-15 Doug K.)</span><br /> Created new method 'retDefinedListForCurrLine' to replace 'buildDefinedListForCurrLine' because the 'definedlist' column has been eliminated.</p> <p><span class="code">oSecurity/$signIn</span> <span class="moddateby">(2007-05-11 Doug K.)</span><br /> Added string table entries to sSecurity_stb for error messages so they support multiple languages.</p> <p><span class="code">oSecurity/$signIn</span> <span class="moddateby">(2007-05-31 Doug K.)</span><br /> Added string table entry to sSecurity_stb for the first error messages that was missed.</p> <p><span class="code">oStartupTaskDefaultMethods/$#About</span> <span class="moddateby">(2007-05-25 Doug K. per Birger R.)</span><br /> Added $cinst prefix to all calls to ioTaskVarsTool so that overridden subclass will work correctly.</p> <p><span class="code">oStartupTaskVarsTool/initializeStartupSettingsFileVar</span> <span class="moddateby">(2007-05-15 Doug K.)</span><br /> Changed the search to look for an exact file name match to 'startupsettings.txt'</p> <p><span class="code">tBase/$insertEmptyRecord</span> <span class="moddateby">(2007-05-09 Josh L.)</span><br /> Changed the SQL Keywords to uppercase.</p> <p><span class="code">tBase/$selectOperatorRecords</span> <span class="moddateby">(2007-05-14 Doug K per Andy H.)</span><br /> Added code to parse pColName if it has a dot in it (servertable.colname) and then search the iColsList for the colname. If unable to find the colname in the listcolname, then search the colname in schemacolname. Removed early exits, use 'If FlagOK' instead.</p> <p><span class="code">tProgrammer/$#About</span> <span class="moddateby">(2007-05-30 Doug K.)</span><br /> Created programmer toolbar with the toolbar buttons for the popular programmer windows. Developers can subclass this toolbar to their main library and add more buttons to it. When the 'swBase4.mProgrammer' menu is installed it will automatically find the correct 'tProgrammer' toolbar and install it, if the 'Programmer Toolbar' menu item is 'checked'. Note: If you have more than one StudioWorks app open, the toolbar will only work for the 1st StudioWorks app you opened.</p> <p><span class="code">wDBAdminDataMover/_moveTableData</span> <span class="moddateby">(2007-05-09 Josh L.)</span><br /> Changed the SQL Keywords to uppercase.</p> <p><span class="code">wProgrammerWorkbench/$#About</span> <span class="moddateby">(2007-05-29 Doug K.)</span><br /> Added new window for StudioWorks developers. The 'workbench' brings all the developer windows into a single tab interface shell.</p> <p><span class="code">wRebuildLists/$#About</span> <span class="moddateby">(2007-05-30 Doug K.)</span><br /> Removed the toolbar buttons from this window. Use either the Programmer Toolbar or the Programmer Workbench instead.</p> <p><span class="code">wRebuildLists/sortSchemas_stb</span> <span class="moddateby">(2007-05-31 Doug K.)</span><br /> Added button and method call for sorting the string table (_stb) schema class columns in the selected libraries.</p> <p><span class="code">wSecurity_GroupWindows/$event</span> <span class="moddateby">(2007-04-17 Josh L.)</span><br /> If the user cannot access the window, they shouldn't be able to view it. Just cleaning up the permissions.</p> <p><span class="code">wSecurity_GroupWindows/$event</span> <span class="moddateby">(2007-04-17 Josh L.)</span><br /> I like to end all methods, even events with something rational.</p> <p><span class="code">wSessionEdit/$control</span> <span class="moddateby">(2007-05-29 Doug K.)</span><br /> Added 'On evClipChangedData' to set modified to true if values are copy/pasted in to an entry field.</p> <p><span class="code">wSessionEdit/$event</span> <span class="moddateby">(2007-05-29 Doug K.)</span><br /> Removed the call to $save. User has to remember to click the save button.</p> <p><span class="code">wTools_abstract/$destruct</span> <span class="moddateby">(2007-05-29 Doug K.)</span><br /> Changed from setting the window class size and location on close, to saving the window size to the StudioWorks window properties list so that multiple monitors can be supported.</p> <span class="code">wTools_abstract/$setWindowSizeAndLocation</span> <span class="moddateby">(2007-05-29 Doug K.)</span><br /> Changed to setting restoring the window size and location from the StudioWorks window properties list. so that multiple monitors can be supported. <a name="swgui4" /> <h3>swGui4</h3> <p><span class="code">oConcretizer/$updateDeveloperWinClass</span> <span class="moddateby">(2007-05-29 Doug K.)</span><br /> Remove the 'MainScrollBox' from the ObjsList so it doesn't throw off the CurrTop calculate when adding new fields.</p> <p><span class="code">oWindows/$openProgrammerWindow</span> <span class="moddateby">(2007-05-29 Doug K.)</span><br /> Added case for 'programmerworkbench'.</p> <p><span class="code">oWindows/$openProgrammerWindow</span> <span class="moddateby">(2007-05-31 Doug K.)</span><br /> Added testinitializeDBAdmin before attempting to open DB Admin window.</p> <p><span class="code">oWindows/testinitializeDBAdminObject</span> <span class="moddateby">(2007-05-31 Doug K.)</span><br /> Added method to test initialize DBAdmin before attempting to open DB Admin window.</p> <p><span class="code">oWindowsProperties/$saveWindowSize</span> <span class="moddateby">(2007-05-29 Doug K.)</span><br /> Changed 'Do iWindowPropertiesList.$search(...' to 'If not(iWindowPropertiesList.$search(...'</p> <p><span class="code">oWindowsProperties/checkSizeAndFit_MacOS</span> <span class="moddateby">(2007-04-11 Andy Hilton)</span><br /> Applescript code added to figure out the location and size of external monitors.</p> <p><span class="code">oWindowsProperties/checkSizeAndFit_MacOS</span> <span class="moddateby">(2007-05-25 Doug K.)</span><br /> Modified code to allow for toolbar in either monitor &amp;amp; fixed some problems with $width &amp;amp; $height being restored incorrectly. Tested the modifications with external monitor on left and right, and toolbar in either location. Appears to be all okay.</p> <p><span class="code">oWindowsProperties/checkSizeAndFit_MacOS</span> <span class="moddateby">(2007-05-25 Doug K.)</span><br /> Added tests near the beginning of the method to check the window width and height and adjust if they are larger than the overall available width and height</p> <p><span class="code">wBase_abstract/$notifyDataObservers</span> <span class="moddateby">(2007-05-25 Doug K.)</span><br /> Added 2 optional field reference parameters which developers can use to pass additional information to data observers.</p> <p><span class="code">wContainer_Edit_ListChildren_abstract/$subwinCmnd</span> <span class="moddateby">(2007-05-25 Doug K. per Josh L.)</span><br /> Added Default to Switch/Case and log an error if pCmnd is not handled in the switch/case. Removed prompt error if flag false. The prompt can/should be handled by a higher level.</p> <p><span class="code">wEdit_abstract/$editRecord</span> <span class="moddateby">(2007-05-24 Josh L.)</span><br /> Removed early exit points.</p> <p><span class="code">wEdit_abstract/$editRecord</span> <span class="moddateby">(2007-05-24 Josh L.)</span><br /> Removed errhndlr.$promptOnceLastError(), they get reported when this method returns.</p> <p><span class="code">wLookupList/setPosition</span> <span class="moddateby">(2007-05-31 Doug K per Andy H.)</span><br /> Add the column header, if it is visible, to the desired height.</p> <p><span class="code">wLookupList/setSize</span> <span class="moddateby">(2007-05-31 Doug K.)</span><br /> Added code to set the $columnnames and show the header if there are more than 1 column in the lookup list.</p> <p><span class="code">wLookupList/setSize</span> <span class="moddateby">(2007-05-31 Doug K. per Tom Maher)</span><br /> Added $cando test for $:ColsList because Refs lookups do not have a columns list. No column headings for Refs lookups.</p> <p><span class="code">wPromptModelessShell/setWindowSizeAndLocation</span> <span class="moddateby">(2007-05-29 Doug K. as requested by Andy H.)</span><br /> Modified the code so that the prompt window will be centred over the top window of the current task, or else centred in the main screen.</p> <p><span class="code">wPromptShell/$_setWindowSizeAndLocation</span> <span class="moddateby">(2007-05-29 Doug K. as requested by Andy H.)</span><br /> Modified the code so that the prompt window will be centred over the top window of the current task, or else centred in the main screen.</p> <p><span class="code">wSignIn/$signIn</span> <span class="moddateby">(2007-05-29 Doug K per Andy H)</span><br /> Moved the $promptonceLastError from the end to the beginning of the last 'Else'.</p> <span class="code">wWindowInstancesBrowser/$event</span> <span class="moddateby">(2007-05-29 Doug K per Will Adkin)</span><br /> Bug fix. Call the 'rebuildTreelistSelectedWinInstIDs' method. It was calling a method that did not exist. <a name="swicons4" /> <h3>swIcons4</h3> <p><span class="code">wTools_abstract/$destruct</span> <span class="moddateby">(2007-05-29 Doug K.)</span><br /> Changed from setting the window class size and location on close, to saving the window size to the StudioWorks window properties list so that multiple monitors can be supported.</p> <span class="code">wTools_abstract/$setWindowSizeAndLocation</span> <span class="moddateby">(2007-05-29 Doug K.)</span><br /> Changed to setting restoring the window size and location from the StudioWorks window properties list. so that multiple monitors can be supported. <a name="swweb4" /> <h3>swWeb4</h3> <p><span class="code">oHTMLSecurity/$_signInSessionID</span> <span class="moddateby">(2007-05-11 Doug K.)</span><br /> Change 'Do secur.$signIn@TEST_logAllErrors' to Do.secur.$signIn'. Since originally writing this method the $signIn method has been modified to log all errors using $logMinorError.</p> <p><span class="code">oHTMLSecurity/$_signInUser</span> <span class="moddateby">(2007-05-11 Doug K.)</span><br /> Change 'Do secur.$signIn@TEST_logAllErrors' to Do.secur.$signIn'. Since originally writing this method the $signIn method has been modified to log all errors using $logMinorError.</p> <p><span class="code">oRemoteTaskMethods/$eventMethod</span> <span class="moddateby">(2007-05-11 Doug K.)</span><br /> Added test for null event code with send error message to trace log.</p> <p><span class="code">oWebMonitor/$#About</span> <span class="moddateby">(2007-05-30 Doug K.)</span><br /> Deleted the visual web monitoring object in the 'Server Monitor' folder. They are not supported by StudioWorks and were not very useful.</p> <p><span class="code">oWebMonitor/$addConnection</span> <span class="moddateby">(2007-05-30 Doug K.)</span><br /> Changed method code to use pEventCode_opt rather than pEventCode.</p> <p><span class="code">oWebMonitor/$sendWebStatsEmail</span> <span class="moddateby">(2007-05-11 Doug K.)</span><br /> Renamed $testEmailWebStats method to $sendWebStatsEmail and added parameters.</p> <p><span class="code">oWebStatsEmailTimer/$initialize</span> <span class="moddateby">(2007-05-11 Doug K.)</span><br /> Added ivars for end week, end month, end year.</p> <p><span class="code">oWebStatsEmailTimer/$sendWebStatsEmail</span> <span class="moddateby">(2007-05-22 Doug K.)</span><br /> Added optional parameter 'pInterval', and prefix it to the email subject if provided. (e.g. Daily, Weekly, Monthly, Custom)</p> <span class="code">oWebStatsEmailTimer/$timer</span> <span class="moddateby">(2007-05-11 Doug K.)</span><br /> Modified timer method to test for end week, end month, end year and send web stats summary email for each of those periods as they occur. <p class="footer">StudioWorks Documentation - Copyright 2005 Vencor Software </p></div> </body> </html>