														 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



