Introduction ------------ This is a beta version of the new MySQLGUI version 1.6 Unlike few previous releases, this is a release with several new features, but it also contains few minor bug fixes. What follows is short instructions for building it under Unix. You can also read INSTALL.TXT on the subject. README contains few instructions on installation. Building MySQLGUI 1.6 --------------------- In short, building this version requires fltk lib, fl_editor, mysql++, Flvw widgets, mysqlgui sources and development tools and libs. Building of mysqlgui is now possible only under Unix versions. FLTK should be 1.0.7, standard version from www.fltk.org fl_editor, should be a special version, built just for mysqlgui and available from the same URL, as mysqlgui: http://www.mysql.com/download_clients.html If you already have FLTK installed, if it is version 1.0.1, you do not need to upgrade to more recent version, although it is recommended as there are numerous bug fixes. You require mysql++ lib and include files, OBLIGATORY version 1.5 or higher , available at www.mysql.com/mysql++. Read README in that lib for compilation instruction. You can build with version 1.6 , but the only difference will be in somewhat smaller code. Mysql++ is available from: http://www.mysql.com/download_mysql++.html You also require flvw widgets, made by Larry Charlton and available from either: http://flvw.sourceforge.net OR http://fwidget.netpedia.net After you build a lib, just copy it to mysqlgui directory. Flvw Include files are already in FL/ subdirectory of mysqlgui source directory, so there is no need to copy them too. Regarding configuring for mysqlgui, there are no changes, just follow the instructions on creating [client_fltk] entries in /etc/my.cnf or my.cnf or c:\my.cnf under Win32. In all distributions of MySQLGUI there is always an example of my.cnf file. Two entries are minimal in [client_fltk] chapter. They are client_file and help_file. Take a look at the example. New features ------------ The most important new feature of this version is completely new and rewritten spreadsheet widget, used for displaying result sets on the screen. Just as with any other dialog in mysqlgui, it can be run as many times as there are system resources. Main advantages of the new widget are: - Capability of displaying, scrolling, navigating and viewing very large result sets. Actually, with this spreadsheet widget you can view as big result sets as virtual memory of the system will allow it. Very few programs of this sort have this very important feature. - Low memory usage. as there is no more double memory allocation - High speed of viewing and scrolling - It has excellent support for styles and themes, which are not yet implemented in mysqlgui (see TODO below). - It has features that will enable several other functions that will be implemented with mysqlgui (see TODO below). Beside implementing this widget, mysqlgui has many other features implemented, both in the spreadsheet itself as well as in other areas. First of all, spreadsheet has been so designed and implemented to enable running of N different spreadsheets displaying different (or same) result sets at the same moment. This is a feature of all other mysqlgui dialogues. Within spreadsheet, mysqlgui has much easier navigation and data viewing, plus a distinguished annotation of the current row and current column. Current column can be chosen by clicking on it's header, while current row, beside clicking on it's header, can be chosen by normal navigation keys. Beside that there is a group of buttons and one input field at the left bottom corner of dialog. Left most button is used for moving a cursor to the first row. Second button is used for moving a cursor to previous row, and next button is used for moving a cursor to the next row. Last button is used for moving a cursor to the last row. In the middle of those buttons is the input field which is used for both displaying a number of current row, plus it can be used for entering a number of row to jump to. This is especially useful for large result sets. Current row, the row where a cursor is, is distinctly marked with different background and with an arrow on the column header, left to it. Current column is distinguished by being put below others. Current cell is marked with distinguished borders. Control+Home/End First cell /Last cell (Seems to be broken) Control+Page up/down First/Last Row Control+Right/Left First/Last Column Home/End First/Last Row in current column (Seems to be broken) Horizontal scrolling within cell is enabled when a cell is clicked on, in which case that cell becomes a current one and it's contents can be scrolled horizontally. The same effect can be achieved by pressing CTRL + `E' key. Then, scrolling will be enabled in the current cell. Carriage return (Enter) key finishes scrolling and returns to normal navigation. Beside standard navigation keys, Enter beside finishing editing, also moves to the next row. Data in columns are aligned according to their type, and columns can be easily resized by clicking on their boundary in the row header. This spreadsheet, like the proveious one, has a sorting feature. Sorting is started by clicking with a left mouse button (and no keys pressed) on the column which should be first in a scrolling sequence. Upon clicking on the column, the entire result set is resorted to be in ascending order for the values of that column. Sorting is done by column type. Next click on the same column changes sort order to descending and third click reverses the entire set to the original, unsorted ordering of rows. When a first column in sort order is chosen, next column(s) can be added to the sorting sequence, by clicking on them while holding shift key on the keyboard down. Further clicking on the same column (with shift key pressed) has similar effects as with first column, that is changing sort order to descending and deleting a column from the sort sequence. Clicking on the right mouse button, brings down dialog menu, with all the functions of the dialog available. Beside navigation and exit there is also file save option, which performs save function of directing result set to a text file. A small difference from the global file save function, is that each spreadsheet window saves it's own data. In this version of mysqlgui there are also column-related menus. These menus are activated by clicking medium mouse button or by clicking both left and right mouse buttons simultaneously, or by clicking left mouse buttons while CTRL key is hold. Large number of variants is introduced due to the possible constraints of some window managers. Depending on the column type these menus have functions for calculating average or total for the column, for numeric and derived types. There is also a possibility of searching for the string. In that case a search dialogue is popped up with it's options. This dialogue is not modal, like all others in mysqlgui, so you could open N spreadsheets with it's result sets, each with it's own Search dialogue. Beside using dialog, next substring occurrence can be reached by using spreadsheets global menu (right mouse button) or by conveniently pressing Ctrl L. Beside new spreadsheet widget, there is a new page in the Options dialogue. This page contains a font list box, which is used for choosing a font for all important texts. It is used in query edit widget, in queries history list-box, in spreadsheets, search dialogues, editor and few others. It is recommendable not to choose a bold font, as boded fonts are utilized in a spreadsheet. The main purpose of this option is to enable viewing of non-Latin1 character sets, but it can be also used for a change of the `look and feel'. If user wishes to revert to default fort setup, as designed by developers, he/she should choose "None" as a default font. This option is located at the very bottom of the font listbox. Beside font list box, new page, 'Style' page contains a choice of the default style for the spreadsheet widget, but this feature has yet to be done. See TODO chapter. There can be a latency in the opening the options dialogue for the first time, as mysqlgui scans for all system fonts available. Several bugs are fixed also, like the one that plagued saving and loading of mysqlgui options. Also, closing down all windows on the exit from the main window is fixed under Win32. TODO or Short review of the future plans with mysqlgui and related stuff --------------------------------------------------------------- This TODO has the objective of providing an insight to the path for the future development of mysqlgui and some of the server and client features related to mysqlgui. This list of development has been made in the approximate order of development, although amendments. are possible. So, in the future development in this field will follow these steps: - Introduction of "Memory Save" mode for the spreadsheet. This mode of viewing result sets is very much needed for the viewing of the very large result sets or tables. Unlike present approach,in which entire result set is placed in a memory, a limited amount of memory will be allocated for the presentation of the result sets of any size. - Table editing, which will utilize the same spreadsheet widget, with additional control widgets - Server side cursors, based on the standard, with some additional features and a concept that will not jeopardize speed and concurrency - Implementation of the above in "Memory Save" mode in spreadsheet, and for editing. which will improve performance / security - Introduction of the global, row and column styles in the spreadsheet widget. Saving of default style will be made too. - Client-side cursors with similar enhancement as server-side cursors - Optional introduction of client-side cursors in the spreadsheet. - Version of mysqlgui for MacOS and MacOSX Larnaka, February 8, 2000