Company Info Download Peter Gulutzan's blog screenshots Books by employees Glossary Home |
ocelotgui
Version 2.4.0 The ocelotgui GUI, a database client, allows users to connect to a MySQL or MariaDB DBMS server, enter SQL statements, and receive results. Some of its features are: syntax highlighting, user-settable colors and fonts for each part of the screen, result-set displays with multi-line rows and resizable columns, and a debugger. Copyright (c) 2024 by Peter Gulutzan. All rights reserved. For the GPL license terms see https://github.com/ocelot-inc/ocelotgui/blob/master/LICENSE.GPL. For instructions for end users see the User Manual. For ocelotgui screenshots see http://ocelot.ca/screenshots.htm. For ocelotgui/debugger screenshots see http://ocelot.ca/blog/the-ocelotgui-debugger. This README file has installation instructions, screenshots, and the user manual. ContentsInstalling... Prerequisites ... Getting the Qt library ... Getting the libmysqlclient.so library ... Getting the ocelotgui executable package ... Starting the programIllustrating... Some screenshotsUsing... User Manual ... Executive Summary ... The developer, the product, and the status ... Downloading, installing, and building ... Starting ... Statement widget ... Client statements ... History widget ... Result widget ... Menu ... Debugger ... Special effects ... Explorer widget ... ERDiagram ... Charts ... Make your own menus ... Make your own plugins/A> ... ContactAppendixes... Appendix 1 Details about ocelotgui options ... Appendix 2 Reference for the ocelotgui debugger ... Appendix 3 Tarantool ... Appendix 4 windows ... Appendix 5 Getting and using the ocelotgui sourcePrerequisitesThe installation instructions in this section are for Linux. If you prefer to run on Windows, read the installation instructions in Appendix 4 windows and come back to read the User Manual section. The basic prerequisites for installation are Linux, and the Qt library. The libmysqlclient library will also be necessary, at runtime. Getting the Qt libraryYou probably will find that the Qt package is already installed, since other common packages depend on it. If not, your Linux distro's repositories will provide a Qt package. For example, on some platforms you can say "sudo apt-get install libqt5core5a libqt5widgets5" , on others you can say "dnf install qt qt-x11", on others you can say "dnf install qt5-qtbase qt5-qtbase-gui". The Qt version number can be found with find /usr/lib -name "libQt*Gui.so*", or find /usr/lib64 -name "libQt*Gui.so*". If the response starts with libQtGui.so.4 then you have Qt4, if the response starts with libQt5Gui.so.5 then you have Qt5. Alternatively it sometimes can be found with qmake -v. Peter Gulutzan supplies executables only for Qt version 5, but often appropriate files are downloaded automatically during ocelotgui installation. To force use of a different Qt version you can build from source. The Qt library is necessary for ocelotgui installation. Getting the libmysqlclient.so libraryYou may find that the libmysqlclient.so library is already installed, if you have used a MySQL or MariaDB client program before. If not, your Linux distro's repositories will contain it, usually with a package name like "libmysqlclient-dev" or "libmysqlclient-devel". With Fedora the package name may be "mariadb-devel" and the library name may be "libmariadb.so" or "libmariadbclient.so".A tip for Mageia 5: You can use "urpmf A tip for openSUSE 13.1: if neither Qt nor libmysqlclient libraries exist, say: sudo zypper install libqt5-devel sudo zypper install mariadb-client sudo zypper install libmysqlclient-devel The important file is named "libmysqlclient.so" or something similar. If it is not already on the default path, then an error or warning will appear when you try to run ocelotgui. Find it, and say something like export LD_RUN_PATH=[path to directory that contains libmysqlclient.so]Several other directories are searched; for details start ocelotgui after installation and choose Help | libmysqlclient. The libmysqlclient library is not necessary for ocelotgui installation; however, it is necessary at runtime in order to connect to a MySQL or MariaDB server. Getting the ocelotgui executable packageThere are ocelotgui binary packages for platforms such as Ubuntu/Mint/MX where "Debian-like" packages are preferred, or platforms such as Mageia/SUSE/Fedora (but not CentOS 7) where "RPM-like" packages are preferred. If one of the following ocelotgui binary packages is compatible with your platform, cut and paste the corresponding pair of instructions onto your computer and you can be up and running in about 15 seconds. For 32-bit, Debian-like, Qt5 wget https://github.com/ocelot-inc/ocelotgui/releases/download/2.4.0/ocelotgui_2.4.0-1_i386.deb sudo apt install ./ocelotgui_2.4.0-1_i386.debFor 64-bit, Debian-like, Qt5 wget https://github.com/ocelot-inc/ocelotgui/releases/download/2.4.0/ocelotgui_2.4.0-1_amd64.deb sudo apt install ./ocelotgui_2.4.0-1_amd64.debFor 64-bit, RPM-like, Qt5 wget https://github.com/ocelot-inc/ocelotgui/releases/download/2.4.0/ocelotgui-2.4.0-1.x86_64.rpm sudo rpm -i ocelotgui-2.4.0-1.x86_64.rpmFor 64-bit, any Linux, Qt5 wget https://github.com/ocelot-inc/ocelotgui/releases/download/2.4.0/ocelotgui-2.4.0.tar.gz tar zxvf ocelotgui-2.4.0.tar.gz ocelotgui/ocelotgui-qt5For 64-bit, any Linux, Qt4 (deprecated) wget https://github.com/ocelot-inc/ocelotgui/releases/download/2.4.0/ocelotgui-2.4.0.tar.gz tar zxvf ocelotgui-2.4.0.tar.gz ocelotgui/ocelotgui-qt4 Starting the programAfter installing and making sure that ocelotgui is on the path, start it with ocelotguior use options, for example ocelotgui --host=127.0.0.1 --user=joe --password=secret-- if the program starts, and menu items such as Help|Manual work, then installation is successful. Stop again with File|Exit or control-Q. Some screenshotsUser ManualVersion 2.4.0, June 4 2024 Copyright (c) 2024 by Peter Gulutzan. All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA Executive SummaryThe ocelotgui application, previously called 'The Ocelot Graphical User Interface', allows users to connect to a MySQL or MariaDB DBMS server, enter SQL statements, and receive results. Some of its features are: syntax highlighting, user-settable colors and fonts for each part of the screen, and result-set displays with multi-line rows and resizable columns, plugins, and a debugger. The developer, the product, and the statusPeter Gulutzan is a Canadian who has specialized in database products for thirty years, as an employee of Ocelot Computer Services Inc. and MySQL AB and Sun Microsystems and Oracle and HP, or as a contractor for a large company in eastern Europe. The ocelotgui program is a front end which connects to MySQL (tm) or MariaDB (tm). In some ways it is like the basic mysql client program, with added GUI features: full-screen editing, syntax highlighting, tabular display, customized fonts and colors. It differs from some other front-end GUI products because it is open source (GPL), it is written in C++, and it makes use of the Qt multi-platform widget library. The product status is: stable. It has been known to work as described in this manual on several Linux distros. It is stable, in the sense that there are no known severe errors and the features are frozen until the next version. Peter Gulutzan will address any bug reports and will answer any questions. Downloading, installing, and buildingTo download the product go to https://github.com/ocelot-inc/ocelotgui. Instructions for installation will be in the README.md file. This location may change, or alternate locations may appear. If so there will either be an announcement on github or on ocelot.ca. The package contains source code and an executable file named ocelotgui-qt5. StartingThere must be an instance of MySQL or MariaDB running somewhere.
If connection is possible with the mysql client and does not require
unusual options, then connection is possible with ocelotgui. If there is
a my.cnf file, ocelotgui will read it, just as the mysql client would.
If there are connection-related options on the command line, ocelotgui
will accept them just as the mysql client would. Therefore the typical
way to start the program is to say
ocelotgui [--option [--option...]]
If a password is required but not supplied, a dialog box will appear.
Or, if the initial attempt to connect fails, an error message will appear
saying it is necessary to choose File|Connect, which will cause the dialog
box to appear. The dialog box has many possible settings
(see the list in Appendix 1;
however, for getting started, the ones that matter most are the ones
at the top: host, port, user, socket, password, protocol.
If the connection still fails, then ocelotgui will still come up,
but only non-DBMS tasks such as screen customizing will be possible.
In any case, an initial screen will appear. After some activity has
taken place, the screen will have four parts, from top to bottom: Again, this should be reminiscent of the way the mysql client works: statements are typed at the bottom of the screen, and appear to scroll off the top after they are executed, with results in the middle. Statement widgetThe statement widget is an editable multi-line text box. The usual control keys that work on other text editors will work here too; see the later description of Menu Item: Edit. The program includes a syntax checker and can recognize the parts of speech in MySQL grammar. It will do syntax highlighting by changing the color, for example comments will appear in light green, identifiers in green, operators in dark gray, and so on. The colors can be customized, see the later description of Menu Item: Settings. The left side of the statement widget is reserved for the prompt, and cannot be typed over. Initially the prompt will be 'mysql>' but this can be changed, see the later description of Client Statements: Prompt.
For example, this screenshot shows the statement widget
after the user has changed the default prompt and
entered an SQL statement.
The statement has keywords in magenta, literals in dark green,
operators in light green, and comments in red.
The prompt on the left has a gray background.
Major Feature Alert: this is not merely a GUI that only will highlight words that are in a list of keywords. This GUI will parse the complete MySQL or MariaDB grammar, without needing to ask the server. So the highlighting will be correct, syntax errors will be underlined in red, and -- since the parsing method is predictive -- there will be continuous hints about what word is expected next, and optionally an error message explaining suspected syntax problems before they go to the server. Once a statement has been entered and is ready to be executed, the user can hit control-E, choose menu item Run|Execute, or place the cursor at the end of the text (after the ';' or other delimiter) and type Enter. It is legal to enter multiple statements, separated by semicolons, and then execute them in a single sequence. Client statementsA client statement is a statement which changes some behavior of the client (that is, of the ocelotgui front end) but does not necessarily go to the MySQL/MariaDB server. Of the statements that the MySQL Reference manual describes in section 'mysql client commands' https://dev.mysql.com/doc/refman/8.0/en/mysql-commands.html the ocelotgui program has working equivalents for: clear, delimiter, exit, prompt, source, tee, and warnings. For example, entering 'quit;' followed by Enter will cause the program to stop. It is sometimes not mandatory to end a client statement with ';', but is strongly recommended. There are some enhancements affecting the PROMPT statement. The special sequence '\2' means 'repeat the prompt on all lines', and the special sequence '\L' means 'show line numbers'. For example, 'PROMPT \2\Lmariadb;' will change the prompt so that each line begins with '[line number] mariadb>'. History widgetOnce a statement has been executed, a copy of the statement text and the diagnostic result (for example: 0.04 seconds, OK) will be placed in the history widget. Everything in the history widget is editable including the prompt, and it simply fills up so that after a while the older statements are scrolled off the screen. Thus its main function is to show what recent statements and results were. Statements in the history can be retrieved while the focus is on the statement widget, by selecting 'Previous statement' or 'Next statement' menu items. Initially the history widget will show some statements from past sessions which are stored in a history file. Result widgetIf a statement is SELECT or SHOW or some other statement that returns a result set, it will appear in the result widget in the middle area of the screen. The result widget is split up into columns. Each column has a header and details taken from what the DBMS returns. The width of the column depends on the result set's definition, but extremely wide columns will be split onto multiple lines. That is, one result-set row may take up to five lines. If the data still is too wide or too tall to fit in the cell, then the row will get a vertical scroll bar. The user can change the width of a column by dragging the column's right border to the right to make the column wider, or to the left to make it narrower. The result widget as a whole may have a horizontal and a vertical scroll bar. The vertical scroll bar moves a row at a time rather than a pixel at a time -- this makes large result sets more manageable, but makes the vertical scroll bar unresponsive if each row has multiple lines and the number of rows is small.
For example, this screenshot shows the whole screen after the
user has typed the statement "select * from information_schema.tables;"
on the statement widget and then executed it. The statement text
has been copied to the history widget, the statement widget has
been cleared, the result widget has the rows. The user has
dragged the border of the fourth column to the left, causing
a scroll bar to appear.
MenuThe menu at the top of the screen has File, Edit, Run, Settings, Options, Debug and Help.
File|Connect, or Ctrl+O, starts the Connect dialog box.
File|Exit, or Ctrl+Q, stops the program.
File|Export brings up a dialog box for exporting selections.
Edit|Undo or Ctrl+Z, Edit|Redo or Ctrl+Shift+Z, Edit|Cut or Ctrl+X,
Edit|Cut or Ctrl+X, Edit|Copy or Ctrl+C, Edit|Paste or Ctrl+V,
and Edit|Select or Ctrl+A, all work in the conventional manner.
Edit|Redo can only redo the last change.
Previous Statement or Ctrl+P and Next Statement or Ctrl+N will
copy earlier statements from the history widget into the statement
widget, so that they can be edited or re-executed with Run|Execute
or Ctrl+E.
Format or Alt+Shift+F changes what is in the statement
widget according to a simple style guide. Autocomplete or Tab will
be discussed later.
Run|Execute or Ctrl+E or Ctrl+Enter causes execution of whatever is in the
statement widget.
Run|Kill or Ctrl+C tries to stop execution -- this
menu item is enabled only when a long-running statement
needs to be aborted by user intervention.
Settings|Menu, Settings|History Widget, Settings|Grid Widget,
Settings|Statement, and Settings|Extra Rule 1 are
items which affect the behavior of each
individual widget. The color settings affect foregrounds,
backgrounds, borders, and (for the statement widget only)
the syntax highlights. The font settings affect font family,
boldness, italics, and size.
There may be additional choices affecting appearance,
for example the width of the border used to drag columns
in the result widget.
Settings|Extra Rule 1 is conditional -- for example, to specify
that BLOBs should be displayed as images on a pink background,
set Grid Background Color Pink, set Condition = data_type LIKE
'%BLOB', set Display As = image, then click OK.
Options|detach history widget,
Options|detach result grid widget,
Options|detach debug widget are
for turning the respective widgets into independent windows,
so that they can be moved away from the statement widget,
or resized. A detached widget is always kept on top of the
other widgets in the application screen. When a widget is
already detached, the menu item text will change to "attached"
and clicking it will put the widget back in its original position.
The items on the Debug menu are enabled only when a debug session
is in progress. The way to debug SQL stored procedures or functions
will be explained in a later section.
Help|About will show the license and copyright and version.
Help|The Manual will show the contents of README.md (the manual that you are reading) if README.md is on the same path as
the ocelotgui program; otherwise it will show a copyright, a GPL license, and a pointer to README.md.
Help|libmysqlclient will advise about finding and loading the libmysqlclient.so library.
Help|settings will advise about how to use the Settings menu items.
Debugger
It is possible to debug stored procedures and functions.
This version of ocelotgui incorporates MDBug
(read about MDBug at http://bazaar.launchpad.net/~hp-mdbug-team/mdbug/trunk/view/head:/debugger.txt).
All debugger instructions can be entered on the ocelotgui command line;
some operations can also be done via the Debug menu or by clicking on the stored-procedure display.
Currently-supported instructions are: For a walk through a debugger example, with screenshots, see this blog post: http://ocelot.ca/blog/the-ocelotgui-debugger. For reference, read: Appendix 2 Reference for the ocelotgui debugger (ocelotgui)">. Special Effects
Vertical: If a user starts the program with ocelotgui --vertical=1
or ends a statement with backslash G, results come up with one column per row.
Images: If a user chooses Settings | Extra Rule 1 from the menu,
and sets the Condition and Display As boxes as described earlier,
and selects rows which contain LONGBLOB columns, and the column values are
images (such as PNG or JPEG or BMP or GIF format data), ocelotgui will display
the result as images.
Result-set editing: If a user clicks on a column in the result set and makes a change, an update statement will appear in the statement widget. For example, if a result set is the result from SELECT column1, column2 FROM t;, and the column1 value is 5, and the column2 value is 'ABC', and the user changes the column2 value to 'AB', then the statement widget will show UPDATE t SET column2 = 'AB' WHERE column1 = 5 AND column2 = 'AB';. The user then has the choice of ignoring the update statement or executing it.
Detaching: If a user chooses Options | detach history widget or
Options | detach result grid widget, then the widget will become a separate window
which can be moved or resized.
Colors: The Colors and fonts dialog boxes have a simple way to choose
colors, by selecting from a choice of 148 color names / color icons. Users can also
change colors by saying SET object_name_color = color-name | hex-rgb-value.
In fact ocelotgui mixes the modes: for example if a user chooses Settings | Grid Text Color,
then clicks on the 'Red' icon, then clicks OK, ocelotgui generates a
statement "SET ocelot_grid_text_color = 'Red';". This makes the instruction
easy to repeat or put in a script.
RE: SQL_MODE. To distinguish between literals and identifiers enclosed in double quotes, ocelotgui needs to know the value of sql_mode (ansi_quotes). It calculates this automatically; however, in rare circumstances it can fail to detect changes on the server. If that appears to be the case, say SET SESSION SQL_MODE = @@SESSION.SQL_MODE; to update it. RE: AUTOCOMPLETION. While a user is entering an SQL statement,
ocelotgui will display a list of possible words that may follow.
Hitting the Tab key will cause the first word in the list to be
displayed and accepted.
Users can use arrow keys to select other words,
and can use "set ocelot_shortcut_autocomplete='...'; to choose a different key instead of the Tab key,
and can use "set ocelot_completer_timeout=...'; to choose how many seconds the list will be visible,
and can use "rehash;" to update the list. RE: HINTING FOR COLUMN NAMES. Although hints for syntax appear by default, hints for table / column identifiers might not. In order to make identifiers appear on the hint list: (1) ensure the setting for auto_rehash has not been turned off, and/or (2) enter the statement "REHASH;" to make the client ask the server for a list of identifiers in the current database; (3) when entering an SQL statement, type ` (backtick) at the point where an identifier is expected. RE: FONT. By default, ocelotgui uses a fixed-pitch (mono) font that has similar attributes to whatever font was in use at the time it started. This may be a bad choice. We recommend trying out other fonts with the Settings menu for each widget. RE: PERMANENT CUSTOMIZING. Changes to settings can be done with the Settings menu items, but such changes are not permanent. So note the commands that ocelotgui performs when settings are changed, and paste them into a file. Later this file can be executed (for example with SOURCE file-name), whenever ocelotgui is started again. Alternatively, settings can be placed in an options file such as my.cnf.
RE: CONDITIONAL SETTINGS. To override the ordinary settings
for result set displays there is a special SET statement with a WHERE clause: RE: DEBUGGING WITH MYSQL 5.7. Oracle has made a significant incompatible behavior change in version 5.7, which affects the debugger. The originally recommended workaround was to say "set global show_compatibility_56=on;". We believe we made a more permanent fix for this problem in ocelotgui version 1.0.8. RE: CONNECTION DIALOG. As stated earlier, if a password is necessary to connect, it is sufficient to start ocelotgui with "--password=password" or by choosing File|Connect and typing a password in the Password field (the sixth field in the Connection Dialog Box). Also on the Connection Dialog Box, if the server is running on the same computer as the ocelotgui client, it is sometimes a good idea to enter '127.0.0.1' in the host field, instead of 'localhost'. RE: ROW NUMBERS. ocelotgui will replace the value 'row_number() over ()'
with the row number within the result set. For example, try RE: HOVERING. Use the mouse to hover over a word in the statement widget, and ocelotgui will display what kind of word it is, for example "table identifier". RE: FORMAT. Click Edit|Format, and ocelotgui will change the contents of the statement widget so that keywords are upper case and sub-clauses or sub-statements are indented. RE: HISTORY. By default the history does not contain any rows from result sets of previous statements. To change this, click Settings|History and enter a number for Max Row Count. Also users can change the history file name with HISTFILE=name, change what statements should not go to the ihstory file with HISTIGNORE=regexp, change whether the history file will include system-generated comments with OCELOT_HISTFILEFLAGS='L'|'LP', change how large the history file can become with OCELOT_HISTFILESIZE=number, change how large the initial history can become with OCELOT_HISTSIZE=number. RE: EXPORT. A result set can be dumped to a file as text, as table, or as html. RE: SHOW. There is a way to make SHOW (and similar statements like ANALYZE or CHECK or CHECKSUM or DESCRIBE or EXPLAIN or HELP) accept SELECT-style clauses and return SELECT-style result sets. Details are in the blog post Make SHOW as good as SELECT. RE: TARANTOOL. By default ocelotgui is a client for MySQL or MariaDB. To use it as a client for Tarantool, read Appendix 3 Tarantool.
Explorer widgetEXPLORER NAME. Explorer. A similar feature in other GUI clients may be named "object explorer" or "navigator". Compare the name "Windows explorer". EXPLORER SETTINGS.
To change some significant settings, click on the menu bar: Settings|Explorer. Ordinarily the explorer widget appears on the left while the other main widgets (history, grid, statement) appear vertically on the right. EXPLORER STYLE. It is a result grid with text columns.
Therefore users get some features without needing to learn anything new: EXPLORER COLUMNS. There are three text columns. EXPLORER ROWS. Rows are in a hierarchy: S, T or V, C or I, etc. Within the hierarchy, rows are in order by creation time. EXPLORER POSSIBLE USER ACTIONS EXPLORER CONTEXT MENU.
This is the menu that will appear when the user uses the right mouse button to click
over a row in the explorer display.
It is called a context menu because the menu is different for each object type.
For example if it's over a table, then table-related menu items will appear. Copy to Clipboard Equivalent of "Copy" Send to SQL editor Copy, then put in statement widget, then execute Select rows Execute a statement to select 100 rows Export Dialog - Text Dialog box for export, then do the export if OK Export Dialog - Table Dialog box for export, then do the export if OK Export Dialog - Html Dialog box for export, then do the export if OK Import - Text Generate INSERTs for a file's contents, no options Create table Generate SHOW CREATE TABLE ... Create table like Generate CREATE TABLE ... LIKE ... Drop table Generate DROP TABLE Truncate table Generate TRUNCATE TABLE Reset Back to default state with nothing expanded Refresh Big SELECT to recreate the widget (this can be slow) EXPLORER EXAMPLE.
The user makes the explorer visible with Settings|Explorer Widget, it looks like this: EXPLORER SET STATEMENTS.
The user can enter SET statements on the select widget.
Or, some SET statements will be generated when the user clicks OK on the Settings menu. EXPLORER CONDITIONAL SET STATEMENTS.
There is an optional clause ... WHERE VALUE operator 'literal' [{AND|OR} value operator 'literal' ...].
Statements with WHERE clauses affect only rows which match the expression.
Example: EXPLORER REFRESH STATEMENT. REFRESH is a bit similar to REHASH, but it gets all schemas (databases) -- so has an effect on the server. REFRESH is necessary because we don't know when other users might change data definitions. And it's slow. Whenever users say REFRESH, the explorer tables are redone. EXPLORER IN OPTIONS MENU. Choosing Options|Detach explorer widget,
and rearranging widgets, could result in something like this: EXPLORER ADVANCED-LEVEL CUSTOMIZING.
As explained earlier, customizing the appearance of the explorer widget
and the context menu, or specific rows on them, is simple
and somewhat like the customizing of the other widgets.
However, one can do more with the context menu -- change the text and
action and shortcut. ERDiagram
An entity relationship diagram ("ERDiagram") is a graphic display of tables (in rectangles) and foreign-key relationships
(as lines). The prerequisite is the existence of an explorer widget, that is, The optional clause COLUMNS PRIMARY means "show only the columns which are part of a primary key instead of all columns", the optional clause LINES IN BACKGROUND means "draw lines underneath tables instead of over them", the optional clause TABLES (table-list) means "show only the tables in this list instead of all tables". The table list should be a comma-delimited list of table names and each name can be followed by x and y coordinates, for example "TABLES (customer 0 1, address 1 1" means "display customer in column 0 row 1 and display address in column 1 row 1". Customize the display fonts and colors with SET OCELOT_GRID_... statements, for example SET OCELOT_GRID_FONT_WEIGHT='bold' WHERE value REGEXP '_id'; will cause column names which end with _id (the primary keys) to be displayed with a bold font. Move a mouse over a line to see the foreign key name. ChartsWhile a result set is visible, if some columns are numeric, press Alt+Shift+B to display as a bar chart, Alt+Shift+P to display as a pie chart, Alt+Shift+L to display as a line chart. No plugins or separate programs are necessary. But to customize the look of the charts, you will need client statements.
The basic statement syntax is
Shortcut key combinations are:
GROUPS: Charts make sense when representing numbers.
A "group" is any uninterrupted series of numbers in a result-set row.
For example, in SUBGROUPS. A group may be divided into subgroups.
Subgrouping is what decides how sampling is done within a group.
Different methods of subgrouping are appropriate for different
types of chart. LAYOUT OF A CELL. (After header, not including cell border.) +--------------------------------------------------+ | TOP | |L | L| |E | CANVAS E| |F | G| |T | E| | | N| | | D| | _____________________________________________ | | BOTTOM | +--------------------------------------------------+But if cell size is small ocelotgui might cancel everything except the canvas. CANVAS: is a non-optional component, it has the actual bar/line/pie chart. LEGEND: is on the RIGHT. Icons and very short text. TOP: text (not shown by default). LEFT: For vertical-bar or line has "values axis", for horizontal-bar has "samples axis". Text, rotated 90 degrees. LEFT LINE: a straight line between LEFT and canvas. BOTTOM: For horizontal-bar or line has "values axis", for vertical-bar has "samples axis". Text. BOTTOM LINE: a straight line between canvas and BOTTOM. Values axis: Becomes next to LEFT or BOTTOM in a bar or line. Samples axis: Becomes next to LEFT or BOTTOM in a bar or line. It is possible to cancel or change any item except the canvas. So a fuller statement of the SET syntax can be SET ocelot_grid_chart = ' {BAR|LINE|PIE} currently default=bar if this is missing, but don't do it [VERTICAL] default is horizontal [STACKED] default is grouping [TOP=value] default is null [RIGHT=value|LEGEND|NULL] default is LEGEND [LEFT=value|DEFAULT|NULL] default is DEFAULT [BOTTOM=value|DEFAULT|NULL] default is DEFAULT [AXIS=NULL|ALL] default is ALL, anything but NULL will make axes appear ' WHERE condition];For example, to suppress everything except the canvas with a vertical bar chart: SET ocelot_grid_chart='BAR VERTICAL RIGHT=NULL LEFT=NULL BOTTOM=NULL AXIS=NULL'; For example, to add a top line along with the other components with a pie: SET ocelot_grid_chart='PIE TOP=TOPPER';
EFFECTS OF OTHER SETTINGS: ILLUSTRATIONS. Pictures showing effects are in a blog post: Charts. The current output may look slightly different from the illustrations there, and the Qwt library is no longer necessary. Make your own menusThere are SQL-like statements for manipulating the main menus. They all begin with SET ocelot_query =, and they are all client statements. You can execute them without being connected to a DBMS server. SET ocelot_query = SELECT * FROM menus; SET ocelot_query = DELETE FROM menus WHERE id = 'id'; SET ocelot_query = UPDATE menus SET menuitem | shortcut | action = 'literal' WHERE id = 'id'; SET ocelot_query = INSERT INTO menus VALUES ('id', 'menu-title', 'menu-item', 'action'); SELECT result columns are ID (a unique value which you need to know for the WHERE clause in other menu statements), MENU_TITLE (the name of a menu), MENU_ITEM (the name of a menu item within a menu), ACTION (what happens when you select a menu item), SHORTCUT (a keysequence that does the same thing as selecting the menu item). Initially the ACTION column will have "[menu]" for a menu, "[separator]" for a line that sometimes is drawn between menu items, and function names for every menu item. (You would see the same function names if you looked at the ocelotgui source code.) Suppose you want to remove the File|Exit menu item. You would first use SELECT to see that the ID is action_file_exit. Then SET ocelot_query = DELETE FROM menus WHERE id = 'action_file_exit'; will remove it. But you could put it back later with SET ocelot_query = INSERT INTO menus VALUES ('action_file_exit', 'File', 'Exit', 'action_file_exit');. Suppose you want to change the Edit|Cut menu item to Edit|Couper. You would first use SELECT to find that the ID is action_edit_cut. Then SET ocelot_query = UPDATE menus SET menu_item = 'Couper' WHERE id = 'action_edit_cut'; will change it. Then you can change the shortcut, with SET ocelot_query = UPDATE menus SET shortcut = 'Ctrl+Shift+X' WHERE id = 'action_edit_cut'; as described earlier.
Suppose you want to make a completely new menu with your own names and actions.
You don't need to insert a "[menu]" row, that will happen automatically when you insert a menu item.
So SET ocelot_query = INSERT INTO menus VALUES ('new_cut', 'NEW', 'Cut!', 'action_edit_cut'); will
make a new menu and a new menu item NEW|Cut! with an action that does the same thing as Edit|cut.
Then SET ocelot_query = INSERT INTO menus VALUES ('new_sql', 'NEW', 'SQL!', 'SELECT 5 AS five, 6 AS six UNION ALL SELECT 5, 6;'); will make a new menu item NEW|SQL! that causes an SQL statement.
So now the menu looks like this: You can also make a menu whose action is a plugin. Plugins are described in the next section. Make your own pluginsA plugin is a routine in a library. There are SQL-like statements for manipulating the plugins. They all begin with SET ocelot_query =, and they are all client statements. You can execute them without being connected to a DBMS server. SET ocelot_query = SELECT * FROM plugins; SET ocelot_query = DELETE FROM plugins WHERE action = 'action'; SET ocelot_query = INSERT INTO plugins VALUES ('library', 'action');... where ACTION is the name of the routine in the library. What the routine does is up to you, you have to write it, in C or C++. The description here is only about the SQL-like statements. Again, SELECT is useful for seeing what plugins have been inserted, and DELETE is useful for undoing. The INSERT will cause ocelotgui to search for a library (called a .so with Linux or a .dll with Windows), and within that to search for a routine. There are two kinds of plugins: "trigger plugins" and "menu plugins". When ocelotgui reaches one of a certain set of preset points in its code, it calls a trigger plugin with a structured parameter that contains a lot of information about state, values of current variables, and permanent settings. The trigger plugin can act on the information, and in some cases can change it. For example, ocelotgui can call a trigger plugin whenever it is about to pass an SQL statement to the server, and the plugin can log the request then change the SQL statement to something completely different. When a menu item has an action that is not one of the 'action_*' routines within the ocelotgui code, and is not an SQL statement ending with ';', it looks for a menu plugin and calls it. For example, after SET ocelot_query = INSERT INTO plugins VALUES ('/home/pgulutzan/plugin/libplugin.so', 'menu_action'); and after SET ocelot_query = INSERT INTO menus VALUES ('menu_action', 'NEW', 'The Example', 'menu_action'); and after SET ocelot_query = UPDATE menus SET shortcut = 'Shift+F12' WHERE id = 'menu_action'; and after the user either clicks the NEW/The Example menu item or types Shift+F12, the menu_action function in libplugin.so will run. This is not a manual about C/C++ coding so the rest is up to you. But to make it as simple as possible, ocelotgui is packaged with a file named plugin.c. It contains several example functions and several hundred words of commentary. ContactWe need feedback! Registered github users can simply go to https://github.com/ocelot-inc/ocelotgui and click the "Star" button. Send bug reports and feature requests to https://github.com/ocelot-inc/ocelotgui/issues. Or send a private note to pgulutzan at ocelot.ca. There may be announcements from time to time on Ocelot's web page (ocelot.ca) or on the employee blog (http://ocelot.ca/blog). Any contributions will be appreciated. Appendix 1 Details about ocelotgui optionsAn option is a named value which affects connecting and behavior. Most [ocelot] options are very similar to options of the mysql client. The places that an option might be specified are: within the program for example the default port value is 3306, in an environment variable for example "export MYSQL_TCP_PORT=3306", in a configuration file for example "port=3306" in $HOME/.my.cnf, on the command line for example "./ocelotgui --port=3306", or on the File|Connect dialog box. Environment Variables. The ocelotgui program will look at these variables: HOME, LD_RUN_PATH, MYSQL_GROUP_SUFFIX, MYSQL_HISTFILE, MYSQL_HISTIGNORE, MYSQL_HOST, MYSQL_PS1, MYSQL_PWD. MYSQL_TCP_PORT, MYSQL_UNIX_PORT, MYSQL_TEST_LOGIN_FILE. Option Files: The ocelotgui program will look in these option files: /etc/my.cnf, /etc/mysql/my.cnf, [SYSCONFDIR]/my.cnf, [defaults-extra-file], $HOME/.my.cnf, $HOME/.mylogin.cnf. Within option files, the ocelotgui program will look in these groups: [client], [mysql], [client-server], [ocelot], as well as [client-mariadb] if --ocelot_dbms=mariadb is specified, as well as groups with those names plus suffix X if --default_groups_suffix=X is specified. On Windows, the order is different: %system, %windir, [application-directory], %MYSQL_HOME%, [defaults-extra-file]. Command Line: The ocelotgui program will look at command-line arguments which are specified in short form such as "-P 3306", or which are specified in long form such as "--port=3306". Dialog Box: A dialog box will appear if the user enters a user statement "CONNECT;" or if the user chooses menu item File|Connect. The user will be advised to do this at startup time if an initial attempt to connect fails. Example The default value for "port" is 3306, this is hard coded in the ocelotgui source. The environment variable value for "port" is 3307, this is set by "export MYSQL_TCP_PORT=3307" before starting ocelotgui. The option file value for "port" is 3308, this is set by putting "PORT=3308" in the [mysql] group in the $HOME/.mysql.cnf file. The command-line value for "port" is 3309, this is set by putting "--port=3309" on the command line when starting the ocelotgui program. The dialog-box value for "port" is 3310, this is set by choosing File|Connect, entering "3310" in the widget labelled "Port", and clicking "OK". The ocelotgui program reads the settings in the above order, therefore the port number is 3310. Options in the following table are in the same order that one sees on the File|Connect dialog box: first come the 8 important connect options (host, port, user, database, socket, password, protocol, init_command), then all the other options in alphabetical order. Unless otherwise stated, options are specifiable by saying [option_name] = [value] in an option file or --[option_name] = [value] on the command line (sometimes --[option_name] alone is sufficient for true|false values), or in the dialog box. If an option value is irrelevant or invalid, the ocelotgui program ignores it without displaying an error message.
Appendix 2 Reference for the ocelotgui debugger (ocelotgui)Before trying to read this reference, it is a good idea to become familiar with the ocelotgui client and try out the simple demonstration on the ocelot.ca blog. Temporary warning: for debugging MySQL version 8.0 routines, you need a recent ocelotgui version as pushed to source on or after June 2018. Use ocelotgui version 1.0.7 or later.
All debug statements can be entered on the Statement widget,
optionally ending with ";".
Debug WidgetThe Debug Widget appears at the bottom of the window after execution of $debug, and disappears after execution of $exit. It is a tabbed widget, that is, if $setup was done for multiple routines, then the debug widget has multiple tabs and the user can look at a particular routine by clicking its tab. Above the widget is a line with information about current state.
The state information includes the current position (what routine
and line number is currently being executed), the result of the
last debug statement, and whether the execution is currently halted
(it will show "stopped at breakpoint" initially because there is
automatically a temporary breakpoint at the start) (it will show
"executing" if it is running) (it will show "routine end" at end).
For example the line may contain Below the tab is a display of the routine source, with line numbers on the left. This will appear to be editable; however, the only reason for that is so that $breakpoint and $clear will work. The line which is currently being executed will be highlighted. A line which has a breakpoint will have a mark on the left. The Debug Widget shares the settings of the Statement Widget. For example, if the user clicks Settings | Statement Widget and changes the background color to yellow, then the Debug Widget will also have a yellow background. MaintenanceThe $install statement places many routines and tables in the xxxmdbug database; to uninstall, simply drop the database. The $setup statement places copies of routines in the same databases that the original routines are in. These are not dropped automatically; users or administrators should watch for obsolete setup results. The $refresh statements make temporary tables, which may become large but which should disappear at session end. PrivilegesTo do $install, one needs authorization to create a new database, xxxmdbug, and populate it. The user who does $install may then choose to grant or revoke privileges on the procedures of xxxmdbug so that debugging is limited to certain users. To do $setup routine_name(s), one needs authorization to execute the named routines and to create routines in the same database. To do $debug, one needs authorization to execute both the original routine and the copy that was made by $setup. Also, one needs READ or EXECUTE authorization for objects in xxxmdbug. Also, one needs the SUPER privilege. SecurityBefore allowing ocelotgui in production systems, administrators should know: The SUPER privilege allows ordinary users to do a few things which ordinarily they can't. For anyone who knows the workings of the system, it is possible to monitor or disrupt debugger activity. This means, for example, that if a debugger user asks what is the current value of variable X, some other user (with SUPER privilege) could see that the request was made and could see the value. The debugger runs in a separate thread, this separate thread will attempt to do a CONNECT every time the user calls $debug, with the same options and credentials as the one used for the main thread. For passing messages between the debugger thread and the main thread, the debugger makes heavy use of a system variable named @@init_connect. It is our belief that the debugger will not interfere with the ordinary usage of @@init_connect (for specifying what to do when connecting); however, the reverse is definitely not true. That is, if someone changes @@init_connect while the debugger is running, the debugger could return unexpected results or even hang. SimultaneityIt is designed, but not tested in the field, that the debugger should operate while others are simultaneously accessing the same data with the same DBMS instance. Naturally the debugger will slow down other operations if (say) a user chooses to stop at a breakpoint while a table is locked -- but that is a user fault not a product flaw. Although the debugger is not terribly fast, the majority of the time in a stored procedure is probably taken up by the SQL statements rather than the debugger's processing. Therefore it should be possible to run a long routine for hours or days, occasionally monitoring it to see what the state of the variables is. Further informationThe low-level part of the debugger is based on a product from Hewlett-Packard called MDBug. An interesting early document is http://bazaar.launchpad.net/~hp-mdbug-team/mdbug/trunk/view/head:/debugger.txt. Appendix 3 TarantoolNB: There is a better description of ocelotgui for Tarantool in https://github.com/ocelot-inc/ocelotgui-tarantool. Ordinarily ocelotgui is a client for MySQL/MariaDB, and some documentation assumes that. However, it is possible to connect to Tarantool 2.x or 3.x (with SQL) instead. You get all the same features except the debugger. The ocelotgui connection to Tarantool is not produced or approved by Tarantool. You need the latest Tarantool "SQL" server.
The official "SQL" release is available now,
look for it on https://github.com/tarantool/tarantool/releases.
Download it according to the instructions
in the Tarantool manual,
the version number must be 2.1.2 or later.
For a more current version, download from github.com/tarantool/tarantool Usually you do not need to install the Tarantool client (libtarantool.so) library, but it is possible to use it if you build ocelotgui with "cmake ... -DOCELOT_THIRD_PARTY=0". If you did that, then this is how to get tarantool.so. The tarantool-dev package does not have it any more. Clone and follow the instructions at github.com/tarantool/tarantool-c ... cd ~ git clone https://github.com/tarantool/msgpuck.git tarantool-msgpuck cd tarantool-msgpuck cmake . make sudo make install cd ~ git clone https://github.com/tarantool/tarantool-c tarantool-c cd tarantool-c cp ~/tarantool-msgpuck/msgpuck.h third_party/msgpuck/msgpuck.h cmake . make sudo make installWARNING: in the past the tarantool-c folks have changed structs in the public API. If they do it again, ocelotgui will crash. WARNING: On some distros the installation will be to a directory that is not on the distro's default path. For example, if libtarantool.so ends up on /usr/local/lib, you will have to say this before you start ocelotgui: export LD_RUN_PATH=/usr/local/lib Or you can add --ld_run_path=/usr/local/lib on the command line where you start ocelotgui. On Windows you do not need to install a Tarantool library, its code is embedded in ocelotgui.exe. You need the latest ocelotgui client. The Release 2.4.0 version is okay at the time of release, but some things might not be up to date. It may be better to build it from source. Download from github.com/ocelot-inc/ocelotgui. For this example we assume Tarantool 2.x. Start the Tarantool server, and say: Start ocelotgui thus: Type some SQL statements in the statement widget at the bottom of the screen. CREATE TABLE test1 (s1 INT PRIMARY KEY, s2 VARCHAR(5)); INSERT INTO test1 VALUES (1,'a'),(2,'b'),(3,'c'); UPDATE test1 set s2 = s2 || '!'; SELECT * FROM test1;You'll see the usual hints appearing as you type. You'll see the usual grid display when you type Enter, or control-E. Now type any other SQL statements, as described in the Tarantool manual. The tutorial SQL statements work.) Now type Bonus feature: A client statement, On #1 (server/lua): box.cfg{listen=3301} box.schema.user.grant('guest','read,write,create,execute','universe') box.execute([[create table a (s1 int primary key, s2 varchar(15));]]) box.execute([[insert into a values (1,'wombat');]]) On #2 (server/lua) box.cfg{listen=3302} box.schema.user.grant('guest','read,write,create,execute','universe') box.execute([[CREATE TABLE t2 (x1 INT PRIMARY key, x2 VARCHAR(15));]]) box.execute([[INSERT INTO t2 VALUES (0, 'Hi!');]]) On ocelotgui connection: CREATE SERVER id FOREIGN DATA WRAPPER ocelot_tarantool OPTIONS (PORT 3302, HOST 'localhost', USER 'guest'); CREATE TABLE y4 SERVER id LUA 'return box.space._space:select()'; SELECT * FROM y4; -- It does not have to be a second server, so simplify the example. -- It does not have to be LUA '...', it can be RETURN lua-expression. -- We can have MariaDB=main and Tarantool=remote, or Tarantool=main and Tarantool=remote Images: -- Lua function to set a variable to a file contents: based on fio_read.lua: function load_file(file_name) local fio = require('fio') local errno = require('errno') local f = fio.open(file_name, {'O_RDONLY' }) if not f then error("Failed to open file: "..errno.strerror()) end local data = f:read(1000000) f:close() return data end; DROP TABLE "timages"; create table "timages" (s1 int PRIMARY KEY, s2 scalar, s3 varchar(5)); box.space.timages:insert{1, load_file('/usr/share/doc/ocelotgui/shot1.jpg'), 'shot1'}; box.space.timages:insert{2, load_file('/usr/share/doc/ocelotgui/shot2.jpg'), 'shot2'}; box.space.timages:insert{3, load_file('/usr/share/doc/ocelotgui/shot3.png'), 'shot3'}; SET ocelot_extra_rule_1_display_as = 'image'; SET ocelot_extra_rule_1_condition = 'data_type LIKE ''%BLOB'''; SELECT * FROM "timages"; Alternative: (details are left to the reader's imagination) We could instead use: a Lua function.
Rules concerning ocelotgui when connecting to tarantool: If the Tarantool server version release date is after the date of the ocelotgui release, then there will probably be problems because the parsers are different. Sometimes this can be solved by downloading ocelotgui source and building again. Appendix 4 WindowsThese are extra instructions for ocelotgui for Microsoft Windows (TM). The Windows ocelotgui program has the same functionality as the Linux ocelotgui program, but is newer and has only been tested with basic Windows 10 64-bit machinery. We believe that on some other Windows platforms it won't start. Connection should work to any modern MySQL or MariaDB server.
How to get it: How to test it: Full instructions are in the main documentation.
The following notes are specifically for ocelotgui for Windows. The rest of this appendix is for advanced users only. Building ocelotgui.exe from sourceThe instructions for building ocelotgui.exe -- for Windows only -- are in https://github.com/ocelot-inc/ocelotgui/blob/master/README.md#Appendix-4.Appendix 5 Getting and using the ocelotgui sourceThe ocelotgui source package has everything necessary to compile and link and install for any Linux distribution, or FreeBSD. If the typical developer packages such as cmake and the gcc c/c++ compiler have been installed already, building an executable usually takes less than fifteen minutes. The official location of the project is on github: https://github.com/ocelot-inc/ocelotgui. This is where the latest source files are. This is what can be "cloned". Typically, to get it, one would install git, cd to a download directory, then git clone https://github.com/ocelot-inc/ocelotgui A clone has the latest source, but not executables. A clone may contain patches which are not yet part of a release. Ordinarily users are advised to use a release rather than a clone, until they have used ocelotgui for a while. The releases for ocelot-inc/ocelotgui are also on github: https://github.com/ocelot-inc/ocelotgui/releases. A release includes the source files as of the release time. Although the release does not have the "latest" source which is in ocelot-inc/ocelotgui, it usually is more stable. A release file is highlighted in green by github and is named ocelotgui-[version].tar.gz. Since version 1.0.9, there is also a release file named ocelotgui_[version].orig.tar.gz which is preferable because it does not contain unnecessary executables. Thus release 2.4.0 is at https://github.com/ocelot-inc/ocelotgui/releases/download/2.4.0/ocelotgui_2.4.0.orig.tar.gz. Typically, to get it, one would cd to a download directory, then wget https://github.com/ocelot-inc/ocelotgui/releases/download/2.4.0/ocelotgui_2.4.0.orig.tar.gzor use a browser to go to https://github.com/ocelot-inc/ocelotgui/releases and click ocelotgui_2.4.0.orig.tar.gz. On Debian-like systems some packages must be installed first. For example on Ubuntu: sudo apt-get install build-essential gcc cmake make #The name of the following package (containing mysql.h) varies, #it might be libmariadbclient-dev or libmariadb-dev sudo apt-get install libmysqlclient-dev #Do the following if and only if build is for use with Qt4 sudo apt-get install qt4-dev-tools #Do the following if and only if build is for use with Qt5 #It is okay if qt5-default is absent sudo apt-get install qt5-default qtbase5-dev qt5-qmake qtbase5-dev-tools #Do the following if and only if build is for use with Qt6 #It might be qt-6-base-dev and qt-6-base-dev-tools sudo apt-get install qt6-base-dev qt6-base-dev-tools On RPM-like systems some packages must be installed first with "yum install" or "dnf install" or "urpmi". For example on Mageia: urpmi gcc gcc-c++ make cmake git #The name of the following package (containing mysql.h) varies, #it might be lib64mariadb-devel or libmysqlclient-devel or mariadb-devel urpmi mysql-devel urpmi rpm-build #Do the following if and only if build is for use with Qt4 urpmi libqt4-devel #Do the following if and only if build is for use with Qt5 #The name of the following package varies, #it might be qt5-qtbase-devel urpmi libqt5-devel On Fedora 35 which is an RPM-like system but might have Qt6 not Qt4 or Qt5: sudo dnf install qt6-qtbase qt-devel qt6-qtbase-devel On Manjaro which is an ArchLinux-like system: # Some people would recommend sudo pacman -S base-devel sudo pacman -S binutils make gcc cmake sudo pacman -S mariadb-clients (Package builds on ArchLinux-like systems can also be done with the PKGBUILD file in the ocelotgui github repository.) Unpack all the source files by saying: tar -zxvf ocelotgui_2.4.0.orig.tar.gz cd ocelotgui-2.4.0At this point it is a good idea to examine the file CMakeLists.txt. This file has comments about options which are available to customize the build process: CMAKE_PREFIX_PATH, CMAKE_INSTALL_PREFIX, MYSQL_INCLUDE_DIR, WITH_QT4, OCELOT_THIRD_PARTY, QT_VERSION. For explanation of these flags, read the comments in the CMakeLists.txt file. If no customizing is necessary, the typical build process is: make clean # unnecessary the first time rm CMakeCache.txt # unnecessary the first time cmake . make sudo make installThe above instructions will usually put the ocelotgui program and directories in subdirectories of /usr/local, so if /usr/local/bin is on your PATH then after this saying ocelotgui will start the program. However, it is sometimes better to make and install a package, which will cause a few additional steps to be performed, such as registering so that ocelotgui can be started from the launcher. Peter Gulutzan provides scripts that will create .deb or .rpm packages. Please read the comments in the scripts before using them. For Debian-like platforms say ./deb_build.sh sudo apt install /tmp/debian3/ocelotgui_2.4.0-1_amd64.deb #or sudo apt install /tmp/debian3/ocelotgui_2.4.0-1_i386.debFor RPM-like platforms say ./rpm_build.sh sudo rpm -i ~/ocelotgui_rpm//rp/rpmbuild/RPMS/x86_64/ocelotgui-2.4.0-1.x86_64.rpm #or sudo rpm -i ~/ocelotgui_rpm//rp/rpmbuild/RPMS/x86_64/ocelotgui-2.4.0-1.i686.rpmUsually the result will go to subdirectories of /usr, in which case, if /usr/bin is on your PATH, then saying ocelotgui will start the program. Some other facts about the source package, for users who like to explore code ... files with the extension *.png or *.htm or *.md or *.txt or *.jpg are for documentation, the file LICENSE.GPL is for legal requirements, and files with the extension *.cpp or *.pro or *.h are source code. The main() code is in ocelotgui.cpp. All the source code has comments. Since ocelotgui is a Qt-using program, it is also possible to use Qt Creator as an IDE editor/compiler and qmake to build -- the file ocelotgui.pro exists for this purpose, and the comments at the end of ocelotgui.pro have more explanation. For example, on Ubuntu 14.04, if the intent is to rebuild for Qt 4 from source, these instructions have been known to work: sudo apt-get install qt4-qmake sudo apt-get install libqt4-dev cd [path to ocelotgui source files] make clean /usr/bin/qmake-qt4 -config release makeFor more commentary about compiling and building, read an ocelotgui.cpp comment that begins with the words "General comments". For instructions to build from source on Microsoft Windows, see Appendix 4 Windows. Send enquiries or suggestions to Peter Gulutzan by commenting on the github site. |