<?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 2008-01-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 2008-01-31</p> <a name="version20080131" /> <h2>Version 2008-01-31</h2> <p>This release is a maintenance release. No new features. Just bug fixes and some code cleanup.</p> <ol> <li><span class="nav">PostgreSQL</span> - Various bugs discovered and fixed as we went live with PostgreSQL with our main app (Venor)</li> <li><span class="nav">oPaths</span> - Added some new property methods and flexibility for setting the parent folder name for some of the special StudioWorks folders.</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>Open your StudioWorks app.</li> <li>Rename the <span class="code">oPaths</span> object class in your library to <span class="code">X_oPaths</span>.</li> <li>Copy the <span class="code">oPaths</span> object from <span class="code">swBase4/Tools</span> to your main library.</li> <li>If you had any added methods or code changes to X_oPaths, copy them to the new oPaths object in your main library.</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="mysysadmin" /> <h3>mySysAdmin</h3> No modifications <a name="swbase4" /> <h3>swBase4</h3> <p><span class="code">oAppPrefs/$_init_prepareCachedlistTable</span> <span class="moddateby">(2007-12-28 Doug K.)</span><br /> Added case for PGSQLDAM to set the datatype to BYTEA instead of BLOB.</p> <p><span class="code">oAppleScripts/$#About</span> <span class="moddateby">(2008-01-02 Doug K.)</span><br /> Created new object class for applescript methods.</p> <p><span class="code">oAppleScripts/$createAliasOnDesktop</span> <span class="moddateby">(2008-01-02 Doug K.)</span><br /> Created method which creates an alias of any file or folder on the desktop.</p> <p><span class="code">oConstants/$:AppLibsList</span> <span class="moddateby">(2007-12-06 Doug K.)</span><br /> Added option for 'demos' folder to be included inside the libraries folder.</p> <p><span class="code">oDBAdminMethods_POSTGRESQL/$retDAMTablesAndViewsList</span> <span class="moddateby">(2008-01-22 Doug K.)</span><br /> Overrode PostgreSQL method to work around bug. kStatementServerAll only returns tables.</p> <p><span class="code">oDBAdminMethods_POSTGRESQL/$setPrimaryKeyCounterValue</span> <span class="moddateby">(2007-12-24 Doug K.)</span><br /> Use low(TableName) to ensure consistency for the sequence field naming convention.</p> <p><span class="code">oDBAdminMethods_SQLSERVER/$_retFKeysList</span> <span class="moddateby">(20070601 whole method added by TBS)</span></p> <p><span class="code">oDBAdminMethods_abstract/$_copyTableData</span> <span class="moddateby">(2007-12-13 Doug K. per Josh L.)</span><br /> Changed fetch from 1 to 5000. (Was at 1 for testing purposes, I forgot to switch back to 5000)</p> <p><span class="code">oDBAdminMethods_abstract/$copyData</span> <span class="moddateby">(2007-12-13 Doug K per Josh L.)</span><br /> Added error checking for the schema class in case the library is closed or the schema class was removed.</p> <p><span class="code">oDBAdminMethods_abstract/$initialize</span> <span class="moddateby">(2008-01-22 Doug K.)</span><br /> Moved $openSession towards top of the method and $closeSession to the end because some methods depend on an open session.</p> <p><span class="code">oDBAdminMethods_abstract/$retDAMTablesAndViewsList</span> <span class="moddateby">(2008-01-22 Doug K.)</span><br /> Removed the SQLServer bug work around. The bug work around is in the overridden subclass method. Removed early exit and fixed the error message.</p> <p><span class="code">oDBAdminSQLText_SQLSERVER/$retSQL_GetFKeys</span> <span class="moddateby">(20070601 method added)</span></p> <p><span class="code">oEmail/$sendEmail</span> <span class="moddateby">(2008-01-21 Doug K.)</span><br /> Carriage returns were getting messed up in the sent/received email. (Omnis 4.3 with Mac OS X 10.5) Switched to using MIMEList for all emails.</p> <p><span class="code">oEmail/$sendEmail</span> <span class="moddateby">(2008-01-30 Doug K.)</span><br /> Check the MIMEList returned. If an error occurred the list will be undefined.</p> <p><span class="code">oEmail/convertEnclosuresToMIMEList</span> <span class="moddateby">(2008-01-30 Doug K. per Mike M.)</span><br /> Bug fix. Changed pEnclosuresList.filename in the loop to EnclosuresList.filename. Added error checking and logging to the method.</p> <p><span class="code">oErrorHandler/$logSQLError</span> <span class="moddateby">(2007-12-13 Doug K.)</span><br /> Removed $statementobject from the notation. (was accidentally copied from tBase $sqlerror method)</p> <p><span class="code">oFunctions/$deleteEnclosedFilesAndFolders</span> <span class="moddateby">(2007-12-18 Doug K.)</span><br /> Added method which drills deletes enclosed files and folder inside a specified directory.</p> <p><span class="code">oFunctions/retEnclosedFoldersList</span> <span class="moddateby">(2007-12-17 Doug K.)</span><br /> Added FileOps Tool method.</p> <p><span class="code">oPaths/$:OmnisName</span> <span class="moddateby">(2008-01-10 Doug K.)</span><br /> Added assignable $:OmnisName property. This property method value will be used to replace the word 'Omnis' where ever it is used in a folder name by oPaths.</p> <p><span class="code">oPaths/$:PREFERENCESPARENTFOLDERNAME</span> <span class="moddateby">(2008-01-10 Doug K.)</span><br /> Deprecated the $:PreferencesParentFolderName property methods in favor of the $:OmnisName property which has been added.</p> <p><span class="code">oPaths/$:PathApplicationsFolder</span> <span class="moddateby">(2008-01-02 Doug K.)</span><br /> Added method which returns the path to the 'Program Files' or 'Applications' directory, based on the operating system.</p> <p><span class="code">oPaths/$:PathOmnisSharedFolder</span> <span class="moddateby">(2008-01-10 Doug K.)</span><br /> Added method to return path to 'Omnis Shared' folder, a subfolder of the 'Program Files' (Win) or 'Applications' (Mac) folder.</p> <p><span class="code">oPaths/$:PathOmnisStartupFolder</span> <span class="moddateby">(2008-01-02 Doug K.)</span><br /> If the 'Omnis Startup' folder is not found, automatically create it in the 'Program Files' or 'Applications' folder.</p> <p><span class="code">oPaths/$:PathOmnisStartupFolder</span> <span class="moddateby">(2008-01-02 Doug K.)</span><br /> Use sys(215), if available, rather than sys(115) to indicate the Omnis Studio executable directory... the tree which which we will search. This ensures that on Vista it will look through the real 'Program Files' directory for the Omnis Startup folder.</p> <p><span class="code">oPaths/$:PathOmnisStudioFolder</span> <span class="moddateby">(2008-01-02 Doug K.)</span><br /> Use sys(215), if available, rather than sys(115) to indicate the Omnis Studio executable directory. This ensures that on Vista that we will be in the real 'Program Files' directory for the Omnis Studio executable parent folder.</p> <p><span class="code">oPaths/$:PathProgramFilesFolder</span> <span class="moddateby">(2008-01-02 Doug K.)</span><br /> Added method which returns the path to the 'Program Files' or 'Applications' directory, based on the operating system.</p> <p><span class="code">oPaths/$:PathUserAppPreferencesFolder</span> <span class="moddateby">(2008-01-10 Doug K.)</span><br /> Added $:UserAppPreferencesFolder method which returns the path to an 'AppName' folder located inside the $:UserOmnisPreferences folder.</p> <p><span class="code">oPaths/$:PathUserOmnisPreferencesFolder</span> <span class="moddateby">(2008-01-10 Doug K.)</span><br /> Added $:UserOmnisPreferencesFolder method which returns the path to an 'Omnis' folder located inside the user preferences folder.</p> <p><span class="code">oPaths/$:PathUserPreferencesFolder</span> <span class="moddateby">(2008-01-10 Doug K.)</span><br /> Added $:UserAppPreferencesFolder method which replaces this method. Redefined this method to return the path to the base user preferences folder.</p> <p><span class="code">oPaths/retApplicationsOrProgramFilesFolderPath</span> <span class="moddateby">(2008-01-02 Doug K.)</span><br /> Added method which returns the path to the 'Program Files' or 'Applications' directory, based on the operating system.</p> <p><span class="code">oPrefs_abstract/$_init_preparePrefsTable</span> <span class="moddateby">(2007-12-31 Doug K.)</span><br /> Added cases for MYSQLDAM and PGSQLDAM</p> <p><span class="code">oSQLLists/$:ForeignKeyColsList</span> <span class="moddateby">(2008-01-02 Doug K.)</span><br /> Added parameter pbRebuildIfEmpty default kTrue so that $destructMethod of oStartTaskDefaultMethods can prevent rebuild on shutdown.</p> <p><span class="code">oSQLLists/buildForeignKeysList</span> <span class="moddateby">(2008-01-30 Doug K per Will Adkin)</span><br /> Added 'cascadedelete' and 'listcolname' back to the foreign keys list. These are needed for the oSQLChildRecords object.</p> <p><span class="code">oSessionMethods_base/setUniqueSessionName</span> <span class="moddateby">(2007-12-13 Doug K.)</span><br /> If the sessionname is empty use the first 5 letters of the damname + the first 7 letters of the database name. Use the rpos() function which was introduced in Omnis Studio v4.1</p> <p><span class="code">oStartupTaskDefaultMethods/_closeLibrariesInFolder</span> <span class="moddateby">(2008-01-22 Doug K.)</span><br /> Added code to drill down recursively and close libraries in subfolders as well. Removed early exits.</p> <p><span class="code">oStartupTaskDefaultMethods/_openLibrariesInFolder</span> <span class="moddateby">(2008-01-22 Doug K.)</span><br /> Removed early exits.</p> <p><span class="code">oStartupTaskDefaultMethods/autoSignIn</span> <span class="moddateby">(2008-01-02 Doug K.)</span><br /> Continuing problems with the method stack. Use a timer object to call $signInOKContinue and clear the method stack and quit all methods.</p> <p><span class="code">oStartupTaskDefaultMethods/openLibraries</span> <span class="moddateby">(2007-12-06 Doug K.)</span><br /> Just open libraries in the modules folder rather than the libraries folder. Allows for '/libraries/demos' folder to be left unopened.</p> <p><span class="code">oStartupTaskDefaultMethods/saveCachedLists</span> <span class="moddateby">(2008-01-02 Doug K.)</span><br /> Added parameter bRebuildIfEmpty=kFalse to prevent rebuild of foreign keys list on $destructMethod.</p> <p><span class="code">oStringTables/loadStringTablesFromTextFile</span> <span class="moddateby">(2008-01-22 Doug K. per Andy H.)</span><br /> Corrected the working message to text. Was 'Loading string tables from meta-data' s/b 'from text file'</p> <p><span class="code">oStringTables/retStringTablesFromTextFile</span> <span class="moddateby">(2008-01-22 Doug K.)</span><br /> Bug fix. Moved the default FlagOK as true to the beginning of the method.</p> <p><span class="code">oTableMethods/$dodeletesBatch</span> <span class="moddateby">(2007-12-27 Doug K.)</span><br /> Move $dodeletesBatch method to oTableMethods so that the method can be customized for different backends.</p> <p><span class="code">oTableMethods_FRONTBASE/$setSQLText_InsDateTime</span> <span class="moddateby">(2008-01-30 Doug K per Josh L.)</span><br /> Check len(iInsDateColName) before doing anything.</p> <p><span class="code">oTableMethods_FRONTBASE/$setSQLText_ModDateTime</span> <span class="moddateby">(2008-01-30 Doug K per Josh L.)</span><br /> Check len(iModDateColName) before doing anything.</p> <p><span class="code">oTableMethods_MYSQL/$setSQLText_InsDateTime</span> <span class="moddateby">(2008-01-30 Doug K per Josh L.)</span><br /> Check len(iInsDateColName) before doing anything.</p> <p><span class="code">oTableMethods_MYSQL/$setSQLText_ModDateTime</span> <span class="moddateby">(2008-01-30 Doug K per Josh L.)</span><br /> Check len(iModDateColName) before doing anything.</p> <p><span class="code">oTableMethods_POSTGRESQL/$checkfixSQLText_LIKE</span> <span class="moddateby">(2007-12-24 Josh L.)</span><br /> Changed pfrTableClassInst to pfSQLText.</p> <p><span class="code">oTableMethods_POSTGRESQL/$dodeletesBatch</span> <span class="moddateby">(2007-12-27 Doug K.)</span><br /> PostgreSQLDAM bug. Prepared statements are lost. Override superclass method and use $execdirect(SQLText) instead of $execute() in the loop.</p> <p><span class="code">oTableMethods_POSTGRESQL/$doinsertsBatch</span> <span class="moddateby">(2007-12-27 Doug K.)</span><br /> Overrode the $doinsertsBatch method and use $execdirect instead of $execute() to work arounnd PostgreSQL bug which loses prepared statements.</p> <p><span class="code">oTableMethods_POSTGRESQL/$retNextPrimaryKey</span> <span class="moddateby">(2007-12-24 Doug K.)</span><br /> Bug fix. len() test missing '=0' Bug fix. Changed sequence field name to con('pkeyseq_',low(basetablename)) to match the DBAdmin method that sets the pkey sequence counter.</p> <p><span class="code">oTableMethods_POSTGRESQL/$setSQLText_InsDateTime</span> <span class="moddateby">(2008-01-30 Doug K per Josh L.)</span><br /> Check len(iInsDateColName) before doing anything.</p> <p><span class="code">oTableMethods_POSTGRESQL/$setSQLText_ModDateTime</span> <span class="moddateby">(2008-01-30 Doug K per Josh L.)</span><br /> Check len(iModDateColName) before doing anything.</p> <p><span class="code">oWebBrowser/$createEmail</span> <span class="moddateby">(2008-01-30 Doug K.)</span><br /> Formatting problem fix. Replace special characters in the subject and body with ASCII hex escape characters. The format "mailto:PersonName &lt;email@domain.com&gt;" format was causing trouble. Extract and use the email address only.</p> <p><span class="code">tBase/$dodeletesBatch</span> <span class="moddateby">(2007-12-27 Doug K.')</span><br /> Moved $dodeletesBatch to oTableMethods so that the method could be specifically modified for PostgreSQL</p> <p><span class="code">tBase/$dodeletesBatch_20071227</span> <span class="moddateby">(2007-12-27 Doug K.)</span><br /> Switched from $execute() to $execdirect(SQLText) to solve a PostgreSQL bug which loses the prepared SQL. This is a compromise on performance to solve the bug. When tBase is restructured this will be isolated to the PostgreSQL table methods object.</p> <span class="code">wDBAdminPrimaryKeys/$setCounterValues</span> <span class="moddateby">(2007-12-06 Doug K.)</span><br /> Don't rebuild the pkeys list after resetting a value. Instead work directly with the list and update it as we go through it. Don't allow the new pkey value to be lower than the current max value. <a name="swdocs4" /> <h3>swDocs4</h3> <p><span class="code">@20 Quick Start Tutorial/@07 Adding a Table</span> <span class="moddateby">(2008-01-30 Doug K per Andrew Pavey)</span><br /> Added tip regarding the 'Class Filter (on)' in case a type of class can't be found.</p> <p><span class="code">@50 Observers/@00 About</span> <span class="moddateby">(2007-12-05 Doug K.)</span><br /> Added a documentation on observers.</p> <p><span class="code">oPaths/$:OmnisName</span> <span class="moddateby">(2008-01-10 Doug K.)</span><br /> Added assignable $:OmnisName property. This property method value will be used to replace the word 'Omnis' where ever it is used in a folder name by oPaths.</p> <p><span class="code">oPaths/$:PREFERENCESPARENTFOLDERNAME</span> <span class="moddateby">(2008-01-10 Doug K.)</span><br /> Deprecated the $:PreferencesParentFolderName property methods in favor of the $:OmnisName property which has been added.</p> <p><span class="code">oPaths/$:PathApplicationsFolder</span> <span class="moddateby">(2008-01-02 Doug K.)</span><br /> Added method which returns the path to the 'Program Files' or 'Applications' directory, based on the operating system.</p> <p><span class="code">oPaths/$:PathOmnisSharedFolder</span> <span class="moddateby">(2008-01-10 Doug K.)</span><br /> Added method to return path to 'Omnis Shared' folder, a subfolder of the 'Program Files' (Win) or 'Applications' (Mac) folder.</p> <p><span class="code">oPaths/$:PathOmnisStartupFolder</span> <span class="moddateby">(2008-01-02 Doug K.)</span><br /> If the 'Omnis Startup' folder is not found, automatically create it in the 'Program Files' or 'Applications' folder.</p> <p><span class="code">oPaths/$:PathOmnisStartupFolder</span> <span class="moddateby">(2008-01-02 Doug K.)</span><br /> Use sys(215), if available, rather than sys(115) to indicate the Omnis Studio executable directory... the tree which which we will search. This ensures that on Vista it will look through the real 'Program Files' directory for the Omnis Startup folder.</p> <p><span class="code">oPaths/$:PathOmnisStudioFolder</span> <span class="moddateby">(2008-01-02 Doug K.)</span><br /> Use sys(215), if available, rather than sys(115) to indicate the Omnis Studio executable directory. This ensures that on Vista that we will be in the real 'Program Files' directory for the Omnis Studio executable parent folder.</p> <p><span class="code">oPaths/$:PathProgramFilesFolder</span> <span class="moddateby">(2008-01-02 Doug K.)</span><br /> Added method which returns the path to the 'Program Files' or 'Applications' directory, based on the operating system.</p> <p><span class="code">oPaths/$:PathUserAppPreferencesFolder</span> <span class="moddateby">(2008-01-10 Doug K.)</span><br /> Added $:UserAppPreferencesFolder method which returns the path to an 'AppName' folder located inside the $:UserOmnisPreferences folder.</p> <p><span class="code">oPaths/$:PathUserOmnisPreferencesFolder</span> <span class="moddateby">(2008-01-10 Doug K.)</span><br /> Added $:UserOmnisPreferencesFolder method which returns the path to an 'Omnis' folder located inside the user preferences folder.</p> <p><span class="code">oPaths/$:PathUserPreferencesFolder</span> <span class="moddateby">(2008-01-10 Doug K.)</span><br /> Added $:UserAppPreferencesFolder method which replaces this method. Redefined this method to return the path to the base user preferences folder.</p> <span class="code">oPaths/retApplicationsOrProgramFilesFolderPath</span> <span class="moddateby">(2008-01-02 Doug K.)</span><br /> Added method which returns the path to the 'Program Files' or 'Applications' directory, based on the operating system. <a name="swgui4" /> <h3>swGui4</h3> <p><span class="code">oConcretizer/$createDeveloperWinClass</span> <span class="moddateby">(2007-12-04 Doug K.)</span><br /> Save the developerized class to that it is permanently written to the disk.</p> <p><span class="code">oConcretizer/$createRuntimeWinClass</span> <span class="moddateby">(2007-12-04 Doug K.)</span><br /> Save the runtime class to that it is permanently written to the disk. Josh was having problems with runtimized classes losing all their fields.</p> <p><span class="code">oMenus/$retNavMenusLinesList</span> <span class="moddateby">(2007-12-06 Doug K.)</span><br /> Remove any menu lines where the homelibname library is not currently open.</p> <p><span class="code">oWindows/sortWindowsList</span> <span class="moddateby">(2007-12-04 Doug K.)</span><br /> Use uppercase sorting.</p> <p><span class="code">owcWindowMenusListEditor/setDisplayFields</span> <span class="moddateby">(2008-01-22 Doug K.)</span><br /> Added VCS warning if the sMn_stb schema class is not checked out in the same library as the observer's home library.</p> <p><span class="code">wBase_ToolbarTitlebar_abstract/$_constructToolbar</span> <span class="moddateby">(2008-01-30 Doug K. per Chuck Martin.)</span><br /> Check the iWinsListRow.toolbarvisible property. If null default bToolbarVisible to true, otherwise use the toolbarvisible property.</p> <p><span class="code">wBase_abstract/$_retActiveCmndsList_winslist</span> <span class="moddateby">(2008-01-30 Doug K. per Josh L request.)</span><br /> Added code to commands which have 'activemodescsv' property and are in the current mode.</p> <p><span class="code">wBase_abstract/$updateActiveCmnds</span> <span class="moddateby">(2008-01-30 Doug K per Josh L)</span><br /> Removed the code which compared the old and new command factors row so that the 'activemodescsv' property would be respected. There might be a slight performance hit. One offset is that the $:CmdFactorsRow property method is no longer called by this method.</p> <p><span class="code">wContainer_List_ListChildren_abstract/$setupWindow</span> <span class="moddateby">(2008-01-22 Doug K per Andy H)</span><br /> Bug fix. Changed rswListChild to irswListChild. (missing the 'i')</p> <p><span class="code">wContainer_abstract/$_constructToolbar</span> <span class="moddateby">(2008-01-30 Doug K. per Chuck Martin.)</span><br /> Check the iWinsListRow.toolbarvisible property. If null default bToolbarVisible to true, otherwise use the toolbarvisible property.</p> <p><span class="code">wContainer_abstract/$_retActiveCmndsList_winslist</span> <span class="moddateby">(2008-01-30 Doug K. per Josh L request.)</span><br /> Added code to commands which have 'activemodescsv' property and are in the current mode.</p> <p><span class="code">wContainer_abstract/$updateActiveCmnds</span> <span class="moddateby">(2008-01-30 Doug K per Josh L)</span><br /> Removed the code which compared the old and new command factors row so that the 'activemodescsv' property would be respected. There might be a slight performance hit. One offset is that the $:CmdFactorsRow property method is no longer called by this method.</p> <p><span class="code">wPromptFindMultiCriteria/$initialize</span> <span class="moddateby">(2007=07-11 Doug K.)</span><br /> Check the columns for hasfetchall and add if required.</p> <p><span class="code">wTotals/addField</span> <span class="moddateby">(2008-01-30 Doug K per Chuck M.)</span><br /> Set $horzscroll to kFalse, just to be sure. If set to true with kRightJst the text will not be visible.</p> <span class="code">wWindowInstancesListEditor/modifySelectedWinInstClass</span> <span class="moddateby">(2007-12-04 Doug K.)</span><br /> Added Alt/Opt+Click option to the 'Modify' button to look at the runtimized window class. <a name="swicons4" /> <h3>swIcons4</h3> No modifications <a name="swrefs4" /> <h3>swRefs4</h3> No modifications <a name="swreports4" /> <h3>swReports4</h3> <p><span class="code">oReportBuilder/$createReportClass</span> <span class="moddateby">(2008-01-22 Doug K. per Andy H.)</span><br /> Added code to check for an existing report instance and not bother to create a new report if one exists.</p> <span class="code">oReportBuilder/createReportClass</span> <span class="moddateby">(2008-01-22 Doug K.)</span><br /> Added code to check for and log errors. Removed the non-visual Yes/No message prompt which asked the user if they wanted to delete the old report instance. <a name="swweb4" /> <h3>swWeb4</h3> <span class="code">oSearchPage/addSQLCLassToPublicSearchSQLClasses</span> <span class="moddateby">(200707-21 Doug K.)</span><br /> Moved code which finds and sets a reference to the web module to a separate method and call the method. <p class="footer">StudioWorks Documentation - Copyright 2005 Vencor Software </p></div> </body> </html>