- Rename components with reasonable names
- Use caching mechanism from Childwin.FetchDBTableList to fill tables listbox
- Make form resizable, store and restore customized dimensions
- Keep form instance alive and recycle that instance as long as Mainform lives
- Fix confusion with action item (wasn't really used in both menuitems)
- Add documentation
- Give them their own icon in dbtree and ListTables
- Disable pure table actions (like "Alter table", "Optimize" etc.) in context menus when a view is selected
- Add new column in ListTables: "Type" which is filled either with "Base table" or "View"
- Introduce new property "NodeType" in TVTreeData record, used currently to store NODETYPE_VIEW or NODETYPE_TABLE. This new property is meant to be used for various purposes in other VirtualTrees in the future.
- Introduce Childwin.SelectedTableType, corresponding to Childwin.SelectedTable
- Make DropTable action fit for also dropping views (and surely a list with a mixture of views and tables)
- Don't fetch rowcount from views in DisplayRowCountStats to fix bug #1844952
- Fix wrong imageindexes in quickfilter menus for clipboard inserting and "Drop filter"
- Assign existing, fitting icons to all other quick filter menu items and "Insert date/time" items.
- Replace icon for "Query" tab by the big blue arrow which is also used for the "Play" button
- Replace icon for "View Data" buttons and "Data" tab with a more simplistic one from the Silk set. This makes the normal "table" icon more distinct as these both looked very similar previously.
- Edit the "Import CSV file" icon: add some lines which can be better associated with a "text file"
- Remove "Reload privileges" button on toolbar and leave it in the tools "flush" menu. Also remove confusing icon for this menu item as that was highly similar to the master refresh symbol.
- Assign a different (hopefully clearer) icon to "Export SQL" action
- Add seperator between database and table toolbuttons
Implements a simple dialog which tells the user if there is some new release or nightly build available. Parses http://www.heidisql.com/updatecheck.php as a .ini file. Download buttons just start the webbrowser currently.
Todo: Automatic invocation of this dialog at regular intervals (for example once a week)
Todo: Automatic download + update + restart
- Consequently use Mainform.GetRegValue() to read these values, an overloaded method with either Boolean, String or Integer result. These methods keep a global TRegistry object (regMain) open while the application runs, rather than creating a new one for each caller.
- Remove Mainform.SaveRegValue() which was used in one or two callers. Rather use a TRegistry object and do that by hand. There's no significant advantage in using a SaveRegValue method currently.
- Implement an alternative solution for handling sorted columns without usage of SMDBGrid's sortcolumns. Move relevant structures and functions from data_sorting.pas to childwin.pas and use them in both units.
- Upgrade some code parts to use WideStrings instead of Strings so they don't break with the new grid.
- Use Grid.OnDrawDataCell as an alternative to Grid.OnGetCellParams as the latter one is a feature of SMDBGrid
- Cosmetic: enhance screen real estate in viewdata()
* Bugfix: When methods are called recursively, they should push/pop altered event handlers on a LIFO stack instead of blindly setting and unsetting them.
* Cosmetic: Reclaim screen real estate in ReadDatabasesAndTables().
- File logging can be activated in preferences dialog, by default of course NOT active.
- One file per session is written to [Documents and settings]\[username]\Application data\HeidiSQL\Sessionlogs\
- Filename pattern: "[session name] [zeropadded session nr].log"
- Fetch more descriptive CSIDL_* constants for system folders from ShlObj unit rather than hardcoded hex values
- Give the user a prettier confirmation message with listed tables to drop.
- Add documentation
- Drop large WITH .. DO statement
- Correctly call refresh-procedures
- Consistency:
- Move all global preferences vars from mainform to childwin.
- Get rid of unused legacy vars NativeFieldTypes + LanguageOffset
- Readability:
- Add documentation
- Prefix preferences vars with "pref"
- Get rid of WITH .. DO statements
Additionally/Sideeffects:
- Fix vstFreeNode to delete the item from the array, not only free the item itself
- Change/Rename GetSelectedNodesFromVT to GetVTCaptions and give it the ability to return all captions, not only the selected. This function is very useful now and saves writing much redundant code.
A table with 500 columns needed 3 seconds to display in the TSortListView, now that takes less than a half second.
Additionally/Side effects:
- TVTreeData structure moved to helpers.pas to be able to use it in new function GetSelectedNodesFromVT.
- ListTablesEditing dropped. We don't need to disable any shortcut there because there is none set.
- Avoid potential AVs when accessing not created items in TVTreeData.Captions
- popupmenu in query memo
- query helpers
- SynCompletionProposal
Drops function.txt and parser for that file.
Pros:
- No dependency on this file anymore
- Much easier and safer coding
- File-parsing no longer needed
Notes:
The old function.txt was meant to be editable and extensible for users but I never saw or heard anyone who does that, most likely because it wasn't documented. Another problem was that the file resided in the programs-directory, where only administrators have write-access, so in these cases it couldn't be edited anyway.
The PHP file in /extras can be used for creating an up-to-date list for mysql.pas .
As not all functions of the new list are available in all mysql-versions, it would be the best if we would fetch the list by the use of HELP commands. Contra: Would result in poor performancing popupmenu and many servers don't have the help-tables filled.
As a benefit, function.txt is read into 3 stringlists at startup now: Names, Declarations and Descriptions. Used in SynCompletionProposal and to fill the above mentioned helpers-list.
Also fixes a minor issue in SynMemoQueryDragOver using an unset "Accept" var.
* Remove feature: columns listed in tree view (helps fix repeated queries; need to cache these and move to different GUI location)
* Remove feature: SELECT COUNT(*) on all tables with MySQL < 3.23 (performance killer)
* Add feature: Cache table lists for tree view (improves performance and fixes repeated queries)
* Add feature: Master refresh button clears entire table list cache.
* Add feature: Refresh button in table list view popup clear table list cache for database being viewed.
* Add feature: Restore active database after user queries.