diff options
author | tpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2010-01-20 01:29:50 +0000 |
---|---|---|
committer | tpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2010-01-20 01:29:50 +0000 |
commit | 8362bf63dea22bbf6736609b0f49c152f975eb63 (patch) | |
tree | 0eea3928e39e50fae91d4e68b21b1e6cbae25604 /kexi/doc/dev | |
download | koffice-8362bf63dea22bbf6736609b0f49c152f975eb63.tar.gz koffice-8362bf63dea22bbf6736609b0f49c152f975eb63.zip |
Added old abandoned KDE3 version of koffice
git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/applications/koffice@1077364 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'kexi/doc/dev')
27 files changed, 8548 insertions, 0 deletions
diff --git a/kexi/doc/dev/CHANGELOG-Kexi-js b/kexi/doc/dev/CHANGELOG-Kexi-js new file mode 100755 index 00000000..9b74a65d --- /dev/null +++ b/kexi/doc/dev/CHANGELOG-Kexi-js @@ -0,0 +1,5867 @@ +----------------------------------------------------------------------------- + Kexi Development CHANGELOG Document + From jstaniek's Point of View + + Copyright (C) 2003-2007 Jaroslaw Staniek js at iidea.pl / OpenOffice Polska + Kexi home page: http://www.kexi-project.org/ +----------------------------------------------------------------------------- + +For most important commits use: CCMAIL:kexi-devel@kde.org +For interesting commits use: +FEATURE: <desctiption> +CCMAIL:danny@commit-digest.org +For bugfixes use CCMAIL:###-done@bugs.kde.org +Legend: += -a fix for recently introduced bug or a minor/too technical fix not worth + mentioning in the public changelog + +TODO: fix displaying default values in comboboxes (form and tableview) +TODO: use KCompletionBox in (editable/noneditable) comboboxes + +2007-04-11 +Forms +- forms having parameter query as data source now ask for parameters +2.0: merged + +2007-03-21, 22 +Table Designer +- clear command history after successful saving of the design +- on switching to data view, do not warn about removing data, + if the data will stay untouched +2.0: merged +Query Designer +- removed possible crash in data view +2.0: merged + +2007-03-16 +Query Designer +- fixed table sizes in the Design View +- fixed displaying relation connection lines when connected field is not visible +- fixed mouse drop position when target points on a field of table with + scrolled-down contents +- do not show internal relationships for visible lookup fields (JOINs) in SQL view +2.0: merged +Table View +- make column readonly if query-based data source itself is stored (i.e. has connection) + and lookup column is defined +2.0: merged + +2007-03-15 +KexiDB +- SQL parser can work recursively now (needed when multiple parsers are used + in the same thread, removed possible crash) +2.0: merged + +2007-03-12..14 +Main Window +- main window is activated after closing "Insert image" file dialog += "find" action: restart searching from start for "Search all rows" mode if: +== user has changed the value to find since previous searching, or +== user has recently changed direction to "Search all rows" +- searching is performed within lookup values as well +Simple Printouts +- fixed problem with records printed between page boundaries +- fixed problem with updating print preview's page navigator when number of pages differs + compared to previous preview +2.0: merged + +Table View +- usability: within cells of type "Image" pressing Tab, Shift+Tab, Left + or Right keys now closes the popup and moves the cursor +2.0: merged + +2007-03-07 +Simple Printouts +- fixed refreshing print preview after table data or query results changed +2.0: merged + +2007-03-02 +Simple Printouts +- added support for printing and previewing images +- improved previewing quality +- fixed landscape mode +2.0: merged + +2007-02-27 +Forms +- hide popup in combo box or image box as soon as it loses focus +- changes made to combo box selection is cancelled if the popup + loses focus without accepting +- hide popup in combo box or image box as soon as user moves + to other record (usually with a shortcut) +- fixed handling page down/page up keys within combo box popups + (previously it moved to other record) +2.0: merged + +2007-02-23 +Forms +- for buttons, left/up and right/down keys act like tab/backtab +2.0: merged + +2007-02-19 +Forms +- fixed displaying margin for image boxes +- fixed assigning static images to image boxes without saving form's design; + the images can now be saved also in data view mode +- fixed handling tab key for image boxes +- automatic tab order: +-- fixed ordering for widgets within containers (e.g. a group box) +-- widgets within tab widget pages are ordered by page number +-- widgets inside tab widget that are not visible are skipped when moving + focus using Tab/Shift+Tab key +- Ctrl+Tab shortcut (for switching between tabs) works on windows + if multiline text editor is focused +2.0: merged + +2007-02-12 +Forms +- fields dragging & dropping works for containers (tab widgets, frames and group boxes) +2.0: merged + +2007-02-09..14 +Main Window +- Edit->Find action added, works within table, query and form views as a global, + context-dependent tool window. +2.0: merged + +~~~~~~~~~~~~~~~~ 1.1.2 bugfix release (with KOffice 1.6.2) ~~~~~~~~~~~~~~~~ + +2007-02-09 +Table View +- added more actions to the context menu in data view + +2007-02-08 +Tools +- added "Delete column" tool for deleting table columns without removing data; + translation enabled; with GUI wrapper +- fixes for "Add column" tool +2.0: merged + +2007-02-07 +KexiDB += fixed possible crash when running a query without primary key included + (encountered e.g. when a form contains static images) +2.0: merged +Tools +- added GUI version of "Add column" tool (with translation enabled) +- the tool is now installed +2.0: merged + +2007-02-06 +KexiDB +- queries are supported as row source for lookup fields +- sort query results by primary key fields if there is no explicit sorting specified + (especially useful when there are complex joins) +2.0: merged + +2007-02-05 +Query Designer +- fixed crash if column being removed has sorting set up +2.0: merged + +2007-01-26..2007-02-05 +Table Designer +- added support for multiple visible columns in the combo box editor + (the same for forms) +- on altering table, remove old lookup field schema objects; + make sure you do not save empty type/name fields to XML +- fixed updating "lookup column" tab's contents +2.0: merged + +2007-01-24..25 +Table Designer +- fixed altering table schema when lookup column has been changed +2.0: merged +Forms +- align autofield's label to left if it is on the top +- do not show popup after clicking on combo box +- fixed popup position of combo boxes inside a container +- fixed saving property values of type "enum" for subwidgets +2.0: merged + +2007-01-23 +Table Designer +- fixed crash on saving design with lookup columns defined +2.0: merged +Forms +- fixed handling "align" property for image boxes when scaling is off +2.0: merged + +2007-01-09 +Table Designer +- some changes do not require table removing now: + e.g. field's caption, description, text width, defaultValue, + visibleDecimalPlaces +- fixed updating default value when field type changes +2.0: merged +Forms +- floating point values: +-- values are now formatted in the same way as in table view, + so "decimal places" property of the field is honoured +-- locale-dependent decimal symbol can be entered instead of '.' +2.0: merged + +2007-01-08 +Build system += fixed generating examples when Kexi binaries are not installed + (it's the case for fresh compilation) +2.0: merged +General +- Fixed crash related to QtCurve widget style. +2.0: merged + +2007-01-03 +Kexi +- use transliteration table generated by a shell script + to generate identifiers out of unicode characters; + plus some adjustments made by hand +BUG: 133170 +2.0: merged + +2007-01-02 +Startup +- Command line option "--show-navigator" added - shows the Project Navigator + side pane even if Kexi runs in User Mode. +2.0: merged +Kexi += Example files are generated usign a standard automake rule and are installed +to the Kexi's data dir (so packagers can ship it). +2.0: merged + +2006-12-21..28 +Kexi 2.0 += formeditor lib ported to KDE4 (not tested) +Startup, Main Window +- "User Mode" implemented; command line option --final-mode replaced with --user-mode + as described at http://kexi-project.org/wiki/wikiview/index.php?UserMode; + all actions related to design are hidden as well as property editor and navigator panes +2.0: merged +General += removed usage of KEXI_SERVER_SUPPORT macro +2.0: merged + +2006-12-18..20 +Forms +- "Assign Action" dialog: +-- added 'create new' and 'close view' actions with a given context +-- "Current form" actions category added with actions like + "go to next record", "go to new record" +-- more design actions like 'undo' moved to the global category +2.0: merged +Main Window +- action tooltips made generic (not only for tables), + e.g. "Save changes made to the current row" +2.0: merged + +2006-12-13..15 +Startup += do not recreate kexi__blobs table when connection is readonly; +- projects created with older Kexi versions can be now opened + in readonly mode too +2.0: merged +Project Migration +- fixed copying existing objects to the destination database +- MySQL and PostgreSQL +-- fixed importing unicode text and static images if present in the source database (BLOBs) +-- data types are better handled for import +2.0: merged +Forms +- action selection dialog: +-- the list of menu commands now contains tooltips instead of action texts to improve + readability and is displayed with full width +-- actions are now categorized, so actions that have no practical use are hidden +2.0: merged + +General += typos fixed in API docs +BUG:138542 +2.0: merged + +2006-12-07 +Tools +- added 'add column' utility: + This script adds a new empty column to a table in a .kexi (SQLite 3) + database file without removing data from the table. +2.0: merged + +2006-12-06..12 +Forms +- action selection dialog: +-- moved "Macros" and "Scripts" to "category" list, + which also supports opening tables/queries/forms, running macros/scripts +-- added "Action type" column so it is possible to assign printing + and opening in objects design view +-- added "Execute form's action" category +2.0: merged +Main Window +- Project Navigator: +== widget moved to widgets/ for reuse +-- double/single clicking on executable objects (macro, script) executes them +2.0: merged + +2006-12-05 +General +- missing i18n() +2.0: merged +Query Designer +- display "(All Columns)" near the "*" +- SQL editor on Unix: initially, clear undo/redo buffer + (otherwise Ctrl+Z clears the contents) +2.0: merged +KexiDB +- fixed problem with constructing SQL statements: + for multi-table queries "ORDER BY column" prepends "table" only if "column" + is not a name of alias +2.0: merged + +~~~~~~~~~~~~~~~~ 2007 (OOPL) ~~~~~~~~~~~~~~~~ + +2006-11-28..29 +Examples +- added parametrized query 'Owners by age' += update the parameter query: remove joins because there's still one related bug +2.0: merged + +2006-11-27 +Examples +- "Simple Database" example updated: added "Ownership" form and a macro +- "Simple Database": added "write_simple_text_report" Python script +2.0: merged + +2006-11-21 +Table View +- fixed crash when combo box drop down button is clicked but bound column + is not defined for lookup field +2.0: merged +Forms +- fixed possible crash when auto field is used for field with lookup + column defined +- sane icon for the Auto Field widget and Label, improved button icon +2.0: merged + +2006-11-17 +CSV Export +- export visible values for lookup columns instead of internal values +Simple Printouts +- print visible values for lookup columns instead of internal values +2.0: merged +KexiDB +- generate aliases for lookup table names to avoid errors because + of ambiguous table names when the same lookup table is used more than once; + For example, use persons1 and persons1 aliases here: + SELECT service.id, service.emploee, service.service_man, persons1.surname, + persons2.surname, service.OID FROM service + LEFT OUTER JOIN persons AS persons1 ON service.emploee=persons1.id + LEFT OUTER JOIN persons AS persons2 ON service.service_man=persons2.id; +2.0: merged + +~~~~~~~~~~~~~~~~ 1.1.1 bugfix release (with KOffice 1.6.1) ~~~~~~~~~~~~~~~~ +Query Designer +- propery initialize newly appended rows +2.0: merged + +2006-11-16 +Table View +- fixed updating contents of the combobox's internal text editor after + pressing F2 or Enter key +- fixed possible crash on application's close +- fixed copying/pasting values from the combo box (visible text is now copied/pasted) +2.0: merged + +2006-11-15 +Query Designer +- fixed setting up sorting in the design view +- fixed setting up string constants as criteria +2.0: merged +Table View +- fixed copying time and date/time values to clipboard +- fixed pasting time, date and date/time values from clipboard +2.0: merged + +2006-11-14 +Forms +- fixed displaying Date/Time values +- fixed crash when "Esc" key is pressed to "cancel row changes" + and a combobox widget is focused +- fixed handling Ctrl+Delete key for "Delete current row" action +- fixed crash when an autofield's subwidget is painted but the parent + is about to be deleted +2.0: merged +Table View +- fixed displaying visible values (usually a text) for lookup columns + when there's a default value defined in the referenced table +- visible values of types other than text or numbers are properly + displayed (including images) +2.0: merged +Queries +- fixed retrieving parameters of type Text +2.0: merged + +2006-11-07..13 +Main Window +- switch contents of custom property tabs after switching the current tab/window + (needed for Table Designer's tab) +- added a warning message box with "Errors encountered during loading plugins" + message, controled by dontShowWarningsRelatedToPluginsLoading configuration setting. +- groups and items for nonexisting plugins are not visible now +2.0: merged +Query Designer +- show more error messages on opening query in design view + (e.g. for unsupported column expressions) +- fixed saving relationships: removed too strict checking for datatypes when creating + relationships (signedness) +2.0: merged +KexiDB +- Parser: improved types evaluation for expressions +- kexi__objectdata.o_data field type changed from BLOB to LongText (backward compatible) + to improve human-readability +2.0: merged +Forms +- fixed problem with setting "invalid" flag for fields with invalid data source +2.0: merged +Core += fixed possible crash on application exit when data changes listener is removed +2.0: merged +General +- Simple_Database.kexi example updated: combo boxes are now used; example data looks better +2.0: merged + +~~~~~~~~~~~~~~~~ 1.1.1-pre ~~~~~~~~~~~~~~~~ + +2006-10-30..2006-11-06 +Table View +- better displaying tooltips for columns with lookup data +- sorting columns with lookup data works += various improvements for combo boxes +2.0: merged +Forms +- database-aware combo box form widget works, improved data displaying, + mouse and keyboard handling +- fixed bug #136688 - displaying dates (e.g. with dd.mm.yyyy format) += do not block Escape key if there are no data changes to cancel; + do not block shortcuts like Shift+Left arrow +2.0: merged + +2006-10-27 +Forms +- display proper record when a new row was saved and user moved to previous record += fixed possible crash inside the row buffer +2.0: merged +Table View += fixed handling data in lookup fields and cursor moving += fixed adjusting width of column containing lookup field +2.0: merged + +2006-10-24..26 +Query Designer +- New: Added support for parameter queries in design and SQL view. + User is asked for entering value of a parameter in a dialog window. + Paramers can be of any type except Object. + (see also: MSA 2002 Bible, p. 767) +2.0: merged +Table Designer +- Byte datatype is always set to unsigned now +- "Double precision" datatype is now the default for the floating point + type group instead of Float (so we get better precision by default) +2.0: merged +Table View +- fixed validating Big Integer numbers +2.0: merged +Forms +- fixed validating Big Integer numbers +2.0: merged + +2006-10-20 +Forms += fixed default size of combo box widgets += removed crash when a combobox without a data source was clicked +2.0: merged +Main Window +- accessibility: property editor can be focused using an accelerator key; + moreover, Alt+2 now focuses main area and Alt+3 focuses Property Editor +2.0: merged +Table Designer +- "combo" icon is displayed near the field name that have lookup column defined +2.0: merged + +2006-10-16 +Query Designer +- refresh design view after a sequence of switches: + text view -> data view -> design view +2.0: merged +KexiDB += saving "lookup column" metadata supported +2.0: merged + +2006-10-12 +Forms +- fixed displaying contents "Data Source" property for multiple selections; + unnecessary updates removed (GUI is updated only after adding + the last widget to the selection) +2.0: merged +Table Designer +- "Lookup column" property tab added to the property pane +2.0: merged + +2006-10-11 +KFormDesigner +- removed crash on close and problems with displaying properties +2.0: merged +Forms +- do not update the property editor for every form (only one is active anyway) +2.0: merged + +2006-10-09..10 +Table View +- fixed drawing selection highlighting for the horizontal header immediately after + scrolling the table +2.0: merged +Query Designer +- column sorting is also supported for columns with cleared "visible" flag +- SQL view's section header now provides an accelerator +2.0: merged + +~~~~~~~~~~~~~~~~ 1.1 stable (with KOffice 1.6) ~~~~~~~~~~~~~~~~ + +2006-10-06 +KexiDB += fixed constructing ORDER BY part of SQL statements (ambiguous fields) += when creating "columns by name" cache, also remeber "table.alias" identifiers += QuerySchema: retrieving infromation about columns much improved + (needed by the parser and designer) +2.0: merged +Query Designer += fixes for handling ordering information in design mode when there're asterisks + in the query +2.0: merged +Forms +- fixed bug #134976: Yes/No field default value does not work properly + (for required field: if you add a checkbox that points to a Yes/No + field that has a default value the default value is not accepted) +2.0: merged +Table View +- fixed problem with editing floating-point values when there's default + value set to 0.0 +2.0: merged + +2006-10-04, 05 +Table View += fixed displaying values for combobox fields += it is now possible to have empty combobox item: selecting it clears + the value of combobox +2.0: merged +Query Designer +- invalid input (e.g. criteria or sorting) now displays a message box with + "Correct" and "Discard Changes" buttons +- added support for setting order of columns in Design and SQL views (ORDER BY) +- fields were sometimes added twice +2.0: merged +KexiDB += fixed handling information about columns ordering +2.0: ported +KoProperty += Property: added a method for clearing "modified" flag +2.0: ported + +2006-10-03 +Forms +- solution for bug #134773: hide "Editor type" property for auto fields + Kexi 2.0 will have it unhidden. +2.0: ported +- fixed updating property values of enum type +2.0: merged +Core +- fixed bug #134977: enabling/disabling of actions in query editor +2.0: merged +Main Window +- fixed bug #134975: "Data actions do not appear on first open" + workaround used before Kexi 2.0: the Data toolbar is always visible +2.0: merged + +~ ~ ~ ~ End of aKademy 2006, Dublin ~ ~ ~ ~ + +2006-09-30 +KexiDB += support for ORDER BY while generating SQL statements +2.0: ported + +2006-09-29 +Form +- fixed bug #134504 "Several glitches in Kexi GUI" +2.0: ported +Docs +- fixed bug #134503 "Typos in several Kexi docs" + +2006-09-28 +KexiDB += use COUNT(*), not COUNT() -- fixes MySQL support += missing ORDER BY usage while generating SQL statements +2.0: ported +2.0: 'parser' target added + +2006-09-25 +Forms +- The first widget of a given kind should be named "widget" by default, + the second - "widget2" and so on. (thanks to Natalie) +2.0: ported + +2006-09-21..27 +KexiDB +- added support for ORDER BY clause +2.0: ported + +~ ~ ~ ~ aKademy 2006, Dublin ~ ~ ~ ~ + +2006-09-19 +Forms +- double clicking items of "Available fields" list inserts a new auto field +- fixed form's selecting data source via the data source pane +2.0: merged +KexiDB += fixed retrieving autonumber data +2.0: merged + +~~~~~~~~~~~~ 1.1 RC1 release (with KOffice 1.6 RC1) ~~~~~~~~~~~~ + +2006-09-14 +KoProperty +- property is not changed when new and old value are both null +- spin boxes for integer and double values: deleting the contents + now sets null value += consider unsigner long long and long long values as compatible +2.0: merged +KexiDB +- do not try to insert default values into a column with unique + flag declared (or even PK) +2.0: merged +Table View +- Fixed repainting after "Edit->Clear Table Contents" action += display question mark for null values in boolean column even + if it has to be "notNull" +2.0: merged +Table Designer +- set "false" as default value for columns with Yes/No types +- when column type changes, default value is updated to match the new type + (e.g. casted from integer to text; incompatible values are removed) +2.0: merged + +2006-09-11..13 +KoProperty += fixed group widget's height +2.0: merged +Table View += fixed drawing drop-down arrow for styles like ThinKeramik +2.0: merged +- more shortcuts added, shortcuts are now usable and a bit MSA-like +-- CTRL+End now moves to the last field in the last record + (previously: the last record) +-- CTRL+Home now moves to the first field in the first record + (previously: the first record) +-- CTRL+PgDown now moves to the next record +-- CTRL+PgUp now moves to the previous record +-- CTRL+Plus or CTRL+= now moves to the new record += some common code moved to KexiDataAwareObjectInterface from KexiTableView, + thus allowing to reuse it in forms +2.0: merged +Forms +- fixed tab/backtab key handling +- fixed displaying custom label text when "Auto Label" property is off +- handling of global shortcuts like CTRL+PgDown is now shared with + Table View (accesibility: it is now possible to move to next/previous + record using keyboard) +- moving to new row sets the focus in the first data-aware widget + (in tab order) +- fixed leaving from "editing" state on "accept row changes" or moving + to other record +2.0: merged + +2006-09-08 +Table Designer +- fixed inserting fields of type "Object" += "subType" has no longer a special meaning for BLOB types, + "objectType" is used for this purpose +2.0: merged +KexiDB += fixed saving custom property values +2.0: merged + +2006-09-07 +Forms +- custom widget factories can be now loaded properly += X-KFormDesigner-XMLGUIFileName variable added + to the KFormDesigner/WidgetFactory service type, so it's now + possible to specify XMLGUI file for defining toolbar actions + for custom widget factories +2.0: merged +KexiDB += Added SimpleCommandLineApp class - an utility for writing small + command line programs and tests that support database connections + out of the box and provide required arguments. += debug areas fixed +2.0: merged + +2006-09-04 +Kexi docs +- things like 'e.g.' moved to ⪚ +- use <procedure> where appropriate +- a chapter about forms translated to english +i18n += Stephan Binner's fixes #579553 and #579330 ported to 2.0 +Forms +- hide QRadioButton widget - current implementation is no-op + +~~~~~~~~~~~~ 1.1 beta 1 release (with KOffice 1.6 beta 1) ~~~~~~~~~~~~ + +2006-09-01 +Forms += added KEXI_DB_COMBOBOX_WIDGET define required + to add support for combobox form widget (disabled by default for beta 1) +2.0: merged +KexiDB += dependency on newer (>=4.1) client library removed: + MySQL driver now uses 'SELECT @@version' SQL statement instead of dedicated + API function += added possibility for switching off "LIMIT 1" optmization + for methods like Connection::querySingleString() + (e.g. needed for 'SELECT @@version') +2.0: merged + +2006-08-29 +General +- Added unicode->latin1 mappings for Czech characters +2.0: merged + +2006-08-25 +Table View += tooltips are displayed also for "insert" row, if needed +Forms += fixed displaying widget names for unbound auto fields + and image boxes while in design mode += fixed setting data source for auto field +- initial version of the combo box widget (will be disabled for beta 1) +2.0: merged + +2006-08-24 +Table View += displaying cell's selection background fixed for nonstandard font +2.0: merged + +2006-08-22..23 +Forms +- display default values in the new row; + default text is displayed with a special style (italic blue) as in table view; + cancelling changes in a widget reverts its contents to default value + (if available); the special style is removed as soon as the editing starts +- "redo" action removed from the data-aware widgets' context menu + (to avoid problems with data handling) +2.0: merged +Table Designer += fixed setting subtype by user +2.0: merged + +2006-08-21 +CSV Import Dialog += fixed delimiter change using the combo box (introduced by the prev commit) += unnecessary rows are removed after delimiter changes +2.0: merged +Table View +- do not display default values for autonumbered fields +- do not fill default values for already filled fields += boolean editor in tristate mode: fixed switching between true/false/NULL values +- display default boolean values in blue +- display tooltip with row number when the vertical scrollbar is dragged += fixed displaying tooltips for default values in the "insert" row +2.0: merged + +2006-08-17 +Table View +- tooltips are displayed for cells with too large contents +2.0: merged +CSV Import Dialog +- delimiter detection is now even more clever, allowing to import more complex data: + characters outside quotes have higher priority; additional algorithm counting + number of candidates for delimiters is used. +2.0: merged + +2006-08-14 +Table View +- default values are displayed and work properly with editing +- current row and column are marked as selection on the vertical + and horizontal header sections +2.0: merged +KexiDB += improved table name altering += row edit buffer now handles default values +2.0: merged + +2006-08-11 +KoProperty += "3rdState" option for boolean types now uses a combo box with 3 items += removed unmaintained QT_ONLY code +2.0: merged += 2.0: some dependency on Qt3 removed + +CSV Export += fixed crash on exporting to clipboard +- time and object values: fixed exporting or copying to clipboard +2.0: merged +Main Window += "copy special" action is available after switching back to table data view +2.0: merged + +2006-08-09 +KoProperty += "3rdState" option added for BoolEdit - i18n'd QString, if not empty, + the the editor's button accept third "null" state with name equal to this string. + When this value is selected, Widget::value() returns null QVariant. + This option is used for example in the "defaultValue" property for a field + of type boolean (in Kexi Table Designer). Third, "null" value of the property + means there is no "defaultValue" specified. +Table Designer +- Added "defaultValue" property to the designer += Alter Table Test Suite: added "i" variable support (including operator++), + closeWindow command, quit command, and optional "clipboard" flag + for showSchema, showActions, showTableData. Improved showTableData command. + Added "defaultvalues" test. +2.0: merged +KexiDB += added BLOB-encoding/decoding-related functions += improved storing and retrieving "defaultValue" property of table field +2.0: merged + +2006-08-08 +General += operator tristate::bool() removed (unsafe, comparison with false was broken) +2.0: merged +Table Designer, KexiDB +- fields of type yes/no have default value set to false (by default) += schema editing improved; on table altering, default values are inserted + and not-empty values are used is there's no default +2.0: merged + +2006-08-07 +KexiDB += improved version-related parts of the API += server version information is retrieved +2.0: merged + +2006-08-03 +KexiDB += PostgreSQL: use TIMESTAMP, not DATETIME for date/time data type +2.0: merged + +2006-08-02 +CSV Export += GUI-less exporting is supported in the API (usable for tests) +2.0: merged +General +- "skip-startup-dialog" command line option added +2.0: merged +KexiDB += Field::typeForString() and Field::typeGroupForString() are now case-insensitive. += added missing support for "indexed" and "type" properties for functions + like KexiDB::setFieldProperty() +2.0: merged +KoProperty += Property::oldValue() should not return value() if no value is available. +2.0: merged +Table Designer += fixed setting types and subtypes += fixed a crash when there are more than 50 "alter table" actions +2.0: merged + +2006-08-01 +Table Designer += A test suite added for table altering +2.0: merged + +~~~~~~~~~~~~ 1.1 alpha 1 release (with KOffice 1.6 alpha 1) ~~~~~~~~~~~~ + +2006-07-31 +KexiDB += custom properties can be set for Field objects +2.0: merged +Table View +- deleting cell contents containing Yes/No values +- do not display drop-down buttons for read-only data +2.0: merged +Query Designer +- possible crash fixed when new design is saved in the data view: + only rebuild schema if it has not been rebuilt previously +1.0/2.0: ported + +2006-07-28 +Table Designer +- fields of Yes/No type have "not null" set by default +- fixed clearing "not null" property +2.0: merged +Table View +- boolean "not null" field displays "false" instead of null in the new row += fixed column width adjustment += unused code removed +2.0: merged + +2006-07-26..27 +Property Editor +- fixed image scaling in the image editor +2.0: merged +Forms +- image box: (in data view) do not allow to show context menu using keyboard + for static image (i.e. if no data source is assigned); + such a widget also ignores focus events (effective focus policy is NoFocus then); + focus frame is painted when needed +2.0: merged + +2006-07-24 +Main Window +- fixed setting focus after switching between views +2.0: merged + +2006-07-18..2006-07-25 +KexiDB +- added support for db-aware lookup fields +2.0: merged +Table View +- added support for db-aware combobox fields +- displaying values in combo box popup fixed +2.0: merged +CSV Import Dialog +- leading 0xFEFF "BOM" unicode character is skipped + (http://www.unicode.org/charts/PDF/UFFF0.pdf) +- added "Strip leading and trailing blanks off of text values" option +- fixed changing options +2.0: merged + +2006-07-17 +Forms +- fixed maintaining focus when menu has been clicked +- fixed tab/backtab for button widget (non-db-aware widgets in general) +2.0: merged + +2006-07-10..14 +Forms +- context menus now have consistent title: "<objectname> : <objecttype>" +- cut/copy/paste shared actions work for form widgets in data view +2.0: merged +Table View +- context menu from image box reused in the Table View's cell editor +- cut/copy/paste/clear actions work for the image cells, including shortcuts +- cut/copy/paste/clear actions work for text/number/boolean cells +- fractional character ("," or ".") can be entered as the first character for + floating-point data types, what means 0.xxxxx +- fixed updating row number info in the record navigator and updating the current + cell after column sorting +- BLOB data is sorted by size +2.0: merged +KexiDB +- SQLite driver: read only connections work again +2.0: merged + +2006-07-07 +Forms +- AutoField, Image Box: fixed setting background color; + drop-down button keeps its default color +2.0: merged +Table View +- added drop down button as image cell editor +2.0: merged + +~~~~~~~~~~~~~~~~ 1.0.2 bugfix release (with KOffice 1.5.2) ~~~~~~~~~~~~~~~~ +~ Now, as 1.0.x is closed for changes, all the changes are merged into 2.0 only ~~ + +2006-07-06 +Forms +- Data Source tab of the Property Pane: fixed entering field or table/query + name by hand: pressing return accepts selection; focus-out accepts selection; + entering in-progress clears previous selection +2.0: merged +- displaying images optimized: no background is cached or painted +2.0: merged +- text box widget now displays text aligned to the left after loosing the focus +2.0: merged +- possible crash removed when changing property of enum type +1.0/2.0: ported +Table View +- Image cell editor: appearance improved, tooltip with a thumbnail added, + dropdown button with context menu added (the same as in Image Box form widget) +2.0: merged +KoProperty +- fixed handling groups +(1.0.2) +Forms +- improvements related to data editing within forms backported from 1.1 +(1.0.2) + +2006-07-05 +Forms +- AutoField: fixed handling foreground and background colors; + added "foregroundLabelColor" and "backgroundLabelColor" properties; + subproperties coming from super classes are now visible; + better handling internal layout depending on label's position +2.0: merged +- "tristate" property for check box widget redefined: + supports DefaultTristate, TristateYes, TristateNo values. + Thus, for bound widgets null values can be set + and for unbound widgets only Yes or No values can be set (by default). +2.0: merged +- fixed creating modified property objects of enum type +2.0: merged +KoProperty +- fixed possible crash when clicking "undo" button causing + the full property set's reload (it was the case for "Editor Type" + property of the AutoField widget) +1.0/2.0: ported + +2006-07-04 +KexiDB +- fixed copying index and table objects +1.0/2.0: ported + +2006-07-03 +Forms +- AutoField: focus label's associated widget (editor) + when user clicked the label +2.0: merged +- AutoField: update data source and values for subproperties on form loading + also when we're switching from design to data view +1.0/2.0: ported +- AutoField: removed crash when table field has been renamed in the data source +1.0/2.0: ported + +2006-06-28 +KexiDB +- SQLite 3.2: fixed opening databases with non-latin1 pathnames +2.0: merged +CSV Import Dialog +- parsing data improved: values without leading zeros, like 1/2/2006 work; + Since apps like MS Access in the USA creates csv files with date + format month/day/year, (and without leading zeros), text with "/" + inside is assumed to be in this format. +1.0/2.0: ported + +2006-06-27 +Forms +- Image Box widget: now supports saving data in the database! + Fixed filling duplicated data widgets; fixed editing; + "Drop-Down Button Visible" property added. +2.0: merged + +2006-06-26 +Forms +- AutoField widget: changing value of "Widget Type" property reloads the entire + property set, so new properties can appear and unused properties can be hidden + in the Property Editor. +2.0: merged +KoProperty +- delayed deleting of editors on setting a new property set +1.0/2.0: ported +- added additional, internal "property change" signal so it will be always emitted + _before_ the public one; thus e.g. it is legal to reload the property set within + the "property change" handler +2.0: merged + +2006-06-19..23 +Forms +- ImageBox widget: drop-down button moved to bottom-right, usability improved + (e.g. keyboard handling for popup), db-awareness added, + frame-related properties added, tab/backtab handling fixed, + fixed updating position of image when the frame changes +2.0: merged +- AutoField widget: added support for Image (Object) type, + fixed handling color properties, internal editor's properties are + automatically inherited by the AutoField widget as so-called subproperties +2.0: merged +- removed flickering of the Property Pane after dropping a new field + onto the form +2.0: merged + +2006-06-06 +CSV Import Dialog +- fixed recursion when importing clipboard data +1.0/2.0: ported +- allow to change the delimiter when importing clipboard data +1.0/2.0: ported +Migration +- improved usability for selecting type of destination database + (no mention of SQLite for now) +2.0: merged +KexiDB +- renaming table fields works, table schema is recreated when needed, + and just altered in-place when it's enough to do so +2.0: merged +Table View +- cell editor: the contents are marked as changed only when the original + value differs from the current +1.0/2.0: ported +Table Designer +- changing field's description is supported by undo/redo commands + and by alter table actions. +2.0: merged +- Internal Debugger: added "Real alter table" button, + for convenience, "save" action now uses the old alter table code +2.0: merged + +2006-06-05 +KoProperty +- clear all properties and group names when using operator = +1.0/2.0: ported +KexiDB +- SQLite library upgraded from 3.0.7 to 3.2.8 (backward compatible), + to get "table renaming" function. +2.0: merged +- optimization: "rename table" action now uses "ALTER TABLE RENAME TO" + SQL statement, O(1). +2.0: merged +- X-Kexi-DoNotAllowProjectImportingTo KexiDB driver property added, false by defaut +2.0: merged + +2006-06-02 +KexiDB +- fixed setting database filename when relative path has been provided +1.0/2.0: ported +- minor utilities added usable for altering +2.0: merged +- table altering improved for SQLite: changing data types will be possible soon +2.0: merged + +2006-05-31 +KoProperty +- methods in Set::Iterator are now const +2.0: merged +- added propertyValues(const Set& set) utility function +2.0: merged + +2006-05-30 +Table View +- spreadsheet mode: fixed inserting empty rows and deleting rows +1.0/2.0: ported +Table Designer +- improved undo/redo actions: deleting and redoing actions fixed +2.0: merged +- added title to the context menu +2.0: merged +KexiDB +- improved alter table machinery; now fields are identified by UIDs + to avoid problems with multiple fields sharing the same name +2.0: merged + +2006-05-29 +KoProperty +- animate clicking on the group title's area +2.0: merged +- added a container widget that can be used to split information into hideable sections +2.0: merged +Form Designer +- data source pane splitted vertically into two sections for clarity +2.0: merged +Table Designer +- clear PK when selecting non-integer type +2.0: merged + +2006-05-27 +KoProperty +- Possible fix for crash. Not sure this is the definitive fix for bug 124917. + Thanks to Jaime Torres +2.0: merged +- group items now have rather pretty appearance styled with KDE style +2.0: merged +- fixed groups order, API changed: now it's possible to get order of groups +2.0: merged +- sorting disabled when groups are present +2.0: merged +- icons can be defined and displayed within the group items +2.0: merged + +2006-05-26 +KexiDB +- improved handling extended table schema information +- improved alter table +2.0: merged +Table Designer +- improved undo/redo actions; prepared for reuse + in the table-altering machinery of KexiDB +2.0: merged + +2006-05-25 +Forms +- set the data source readonly if it comes from query +1.0/2.0: ported +- "Read only" property is now supported by all data-aware widgets, + and form itself +2.0: merged +- background color of the line edit in read-only mode is blended with white + to get lighter gray +2.0: merged +- accessibility+usability: read only line edit widget now shows the caret +2.0: merged +- display field caption as title for editor's context menu +2.0: merged + +~~~~~~~~~~~~~~~~ 2006.1.1 (OOPL, bugfix) ~~~~~~~~~~~~~~~~ + +2006-05-18 +Table Designer +- improved support Undo/Redo actions +2.0: merged +Forms +- fixed saving data changes for db-aware checkboxes + (fixed by setting StrongFocus policy as default) +1.0/2.0: ported + +~~~~~~~~~~~~~~~~ 1.0.1 bugfix release (with KOffice 1.5.1) ~~~~~~~~~~~~~~~~ + +2006-05-17 +Main Window +- Project Navigator: remove Enter and CTRL+Enter accels, + as these blocks other actions +- Project Navigator: fix setting focus +1.0/2.0: ported + +2006-05-16 +Migration +- display error for not found import/export driver +1.0/2.0: ported +Startup +- (temporary) do not propose importing broken SQLite databases files + as there is no import driver implemented yet; display error message instead +1.0/2.0: ported +Table Designer +- fixed saving boolean types for table design +1.0/2.0: ported + +2006-05-15 +General +- -execute command line option added; useful for executing macros, scripts, etc. +2.0: merged +Table View +- small API and source code improvements (s/buf/set) +2.0: merged +KoProperty +- fixed making a deep copy of Set object containing custom properties +- deep copy of Set object now maintains the original order +- fixed possible crash on deleting Set object created by copy constructor +1.0/2.0: ported + +2006-05-09 +KoProperty +- API changed: a few methods are now const; optimization +2.0: merged + +2006-05-08 +KexiDB +- fixed converting floating-point values to SQL-compatible strings when the number + was provided as string QVariant +1.0/2.0: ported +Forms +- fixed entering floating-point values for locales where ',', not '.' is the fractional point +1.0/2.0: ported +Query Designer +- show error message when switching to other view failed (i18n-safe) +- just show empty editor when opening a design in text view and there is no sql + statement found in the backend +1.0/2.0: ported +MDB Import +- fixed importing decimal (numeric) values + (by fixing setting fractional point's position and adding negative sign when needed) +1.0: ported + +2006-05-05 +Table Designer +- Undo/Redo actions added and integrated with table altering +Internal +- "AlterTable" tab added to the "Kexi Internal Debugger" window + +~~~~~~~~~~~~~~~~ 2006.1 (OOPL) ~~~~~~~~~~~~~~~~ + +2006-05-04 +Main Window +- fixed crash when double (or single, depending on the settings) clicking + on the empty area of the Project Browser +1.0/2.0: ported +Query Designer +- fix saving design changes while in Data View +1.0/2.0: ported + +2006-05-02 +CSV Import Dialog +- fixed importing floating-point values where there are integer + and floating-point values mixed +1.0/2.0: ported +MDB Import +- fixed importing floating-point or decimal values (there is still a bug in mdbtools + with fetching decimal values) +KexiDB +- fixed building SQL INSERT statements for "prepared statement" +1.0/2.0: ported + +2006-05-01 +KexiDB +- ported to Qt4; tests/newapi works + +2006-04-28 +KexiDB +- SQLite3 driver: report error when closing database failed +1.0/2.0: ported +Core +- KexiProject: report error when closing database failed +Query Data View +- properly destroy cursor on view removing; this also fixes the problem + with compacting Kexi database when it cannot be reopened read/write when + there was opened view with query data because of db cursor blocking the database +- properly close as soon as the data is fetched (temporary solution) +General +- "Kexi Internal Debugger" introduced to help in Kexi development; + "showKexiDBDebuger" in [General] should be set to true and KEXI_DEBUG_GUI defined + to use this. +Form Designer +- fixed possible crash on closing form +1.0/2.0: ported + +2006-04-27 +KexiDB +- "visibleDecimalPlaces" property added for table fields of type floating point + (will be added for decimal and currency too); "Auto" state is supported + as default so only meaningful fractional digits are be displayed +Table Designer +- "visibleDecimalPlaces" property supported for floating point types +Table View +- "visibleDecimalPlaces" property supported when displaying and editing + floating point values +MDB Import +- on importing table rows: report failure when inserting row failed + +2006-04-25 +CSV Import +- simplify whitespace of text in cells (for preview only) +- fixed delimiter detecting +- priority in delimiter detection changed: now ";" has priority over "," +1.0/2.0: ported +Form Designer +- hide minimumSize and maximumSize widget properties +1.0/2.0: ported + +2006-04-13 +Kexi 2.0 +- merged changes since revision 523723 +KexiDB +- fixed loading length of text fields within table schema +0.9/1.0/2.0: ported + +2006-04-12 +CSV Import +- fixed problem with importing data with more than 100 columns (for default settings) +1.0/2.0: ported +- only the first 10KiB of data is loaded for the preview by default; can be adjusted + by setting ImportExport/MaximumBytesForPreviewInImportDialog option in kexirc +1.0/2.0: ported +- display rows number on the top of the window +2.0: merged + +2006-04-11 +Forms Designer +- fixed prossible crash while clearing "data source" field name; + now setting the autofield to unbound state works + +2006-04-10 +KexiDB +- QuerySchema(TableSchema* tableSchema) ctor: + To avoid problems (e.g. with fields added outside of Kexi using ALTER TABLE) + we do not use "all-tables query asterisk" (see QueryAsterisk) item + but instead we add all the fields explicity. +0.9/1.0/2.0: ported +- PostgreSQL driver: fixed crash when a new field has been added to existing + table outside of Kexi +0.9/1.0/2.0: ported +Table Designer +- More intrusive warning when altering table design +1.0: ported (except the message) +2.0: merged +Forms Designer +- fixed possible crash when switching to data view mode unbound autofield widgets +- while in data mode, do not display "(unbound)" text for unbound autofield widgets + +2006-04-08 +KexiDB +- use SQL-compliant TRUE and FALSE constants for PostgreSQL + (1 and 0 are unsupported) +0.9/1.0/2.0: ported + +2006-04-07 +Table View & Form View +- "invalid data warning" tool tip improved and reused in Kexi forms +- many fixes related to handling date, time and date/time values + +2006-04-05 +Form Designer +- KexiDBDoubleSpinBox and KexiDBIntSpinBox replaced line edit with validator because + of problems with handling null data and signalling changes. + (there's no backward compatibility problems as these two widgets were used internally + in the AutoField data widget) +- fixed saving data changes made within auto field widgets +- fixed support for tab/backtab key within auto field widgets +- fixed problem when sometimes form was not filled with data after change of the design +1.0/2.0: ported + +2006-04-04 +CSV Import +- possible crash fixed after switching character encoding +1.0/2.0: ported +Main Window +- "Compact Database": now closing the current project is required; + if there's no project is opened, user is asked for picking one +Property Editor +- possible crash fixed when bool editor's state is quickly switched +1.0/2.0: ported + +2006-03-29 +Main Window +- "Compact Database" admin action added +KexiDB +- API version increased to 1.8 +- "Compact Database" implemented for SQLite3 databases + +2006-03-28 +Startup +- --readonly command line option added +TableView +- boolean editor: only accept clicking on the [x] rect +1.0/2.0: ported + +TODO: merge trunk with revision 523723 + +~~~~~~~~~~~~~~~~ 1.0 stable (with KOffice 1.5) ~~~~~~~~~~~~~~~~ +~~~~~~~~~~~~~~~~ 1.0 rc1 (with KOffice 1.5 rc1) ~~~~~~~~~~~~~~~~ + +2006-03-20 +KexiDB +- use local sockets by default for local server connections, if possible + +2006-03-16 +KexiDB +- added simple encryption for stored passwords +- allow to save empty password in .kexis and .kexic files +Startup +- ask for password (without storing it) for connection data without stored password + +~~~~~~~~~~~~~~~~ 1.0 beta 2 (with KOffice 1.5) ~~~~~~~~~~~~~~~~ + +2006-02-28, 03-03 +PostgreSQL driver +- fix for displaying unicode error messages +- fixed escaping binary data (octal values are used for special characters) +- fixed loading and saving BLOB data (images within forms work now) + +~~~~~~~~~~~~~~~~ 2006 (OOPL) ~~~~~~~~~~~~~~~~ + +2006-02-22 +CSV Import Dialog +- fixed updating "primary key" checkbox + +2006-02-21 +Table View +- row highlighting fixed for combo box popup, now it's used for any table view + +2006-02-20 +Project Import Wizard +- do not ask about overwriting file if server-based destination has been selected + +2006-02-17 +Query Designer +- fixed crash on saving new query design +Main Window +- disabled complex and redundant action 'View -> Tool Docks' menu. + This comes from KMDI, not Kexi itself and will be completely removed + in KDE4 version. IIRC, we could not hide it now as this may cause crashes. + +Form Designer +- text label widgets: "word wrap" is turned on by default +- fixed update "word wrap" property for label widgets +- fixed random cursor setting for the form surface +- fixed problems with inserting widgets in a random position + and random rectangles painting problems + (all this due to MouseButtonRelease event coming BEFORE MouseButtonPress event) + +2006-02-16 +Query Designer +- Row editing within the "Columns" area is accepted before saving. + If the editing cannot be accepted, saving is aborted. +Table Designer +- set property editor to read-only mode for read-only database connections +Data Table +- disable combobox editor's dropdown button for read-only database connections +Property Editor +- fix for read-only mode: support it also globally at property set level +- disable editing for read-only widgets +- fix for displaying double values for current locale + +2006-02-15 +General +- when query design has been changed and saved, subsequent openings of a form using + it will reload its definition. The same for 'page setup' dialogs, etc. +- fixed crash when 'page setup' dialog is opened, closed, and opened again for + the same data object + +2006-02-10, 14 +Main Window +- closing dialog is now marked as 'pending job', the same as for opening +- When there are pending jobs, 'quit' and 'close project' actions are + delayed and executed after last pending job finishes. This removed possible + crashes when user closed application's main window (or closed project) + when there are pending jobs. + +2006-02-03,07 +Forms +- fixed painting "geometry" rectangle when inserting new widget +- update tab stops information before displaying "Tab Stops" dialog +- fixed invalid resizing for widget's inline editor +- 'edit->tab order' action is available also when form design is not focused + +2006-02-01 +KexiDB +- MySQL: added temporary (unoptimized) implementation of Prepared Statement +- MySQL, SQLite: fixed inserting BLOB data (without Prepared Statements) +- MySQL: fixed fetching BLOB data (without Prepared Statements) +- MySQL, PostgreSQL: fixed entering strings containing characters like ' \ " +- most debug lines commented out +CSV Import Dialog +- fixed importing for MySQL backend +Form Designer +- fixed saving images (binary data) to MySQL backend + +2006-01-31 +CSV Export Wizard +- When data is copied to clipboard, default delimiter is tabulator + and options are hidden. + +2006-01-30 +Form Designer +- fixed saving new forms for MySQL databases +CSV Import Dialog +- fixed crash when importing CSV files smaller than 200 bytes + +2006-01-25,26 +KexiDB +- SQLite3 driver & kexisql3: fixes for read-only opening +Main Window +- fixed usability: read-only flag of the db connection is now visible + in the statusbar +- added question about opening db file as read-only when it is already opened +- disable actions that require write access to the db if it's opened as readonly +Startup +- fixed support for "-print-preview" command line option +Simple Printing +- enlarge default zoom +Property Editor +- fixed editor refreshing after contents loading +Table View +- 'inserting enabled' flag is always false for read-only objects + +2006-01-24 +KexiDB +- Unicode support fixed for MySQL + +2006-01-23 +Table View +- fixed acceping am/pm for entering time values +- various fixes for entering date, time and date/time values +- time can be entered without seconds +- small passive warning box is displayed when entered value is invalid + (currently for date, time and date/time types) + +~~~~~~~~~~~~~~~~ 1.0 beta 1 (with KOffice 1.5) ~~~~~~~~~~~~~~~~ + +Main Window +- 'single click opens' is mode is off by default, can be turned on +Table Designer +- Object type hidden for beta1 +Table View +- date, time and date/time values are displayed using KDE settings + +2006-01-20 +General +- examples/ directory in the source code tree now contains + example database(s) +Form Designer +- Data source pane: disable widget's data source combo box + when there is no form's data source defined +- temporary disable AutoField +- temporary disable cursor property +Query Designer +- fixed displaying criteria if WHERE section contains '(' +- tables positions are preserved if possible when + relations view updating is needed + +2006-01-18, 19 +Form Designer +- widget library naming made more verbose to avoid potential + conflicts between packages +- versioning added for widget library plugins; this can also + avoid conflicts between plugins as we've just renamed them +Query Designer +- fixed displaying criteria for table view rows when 'visible' + column is set to false +- all-tables-asterisk is also hidden when last table is hidden +- temporary data member isolated; fixed possible crash when + switching back from SQL View to Design View + +2006-01-17 +KexiDB +- even more verbose error messages for failed SQL statement execution +CSV Import Dialog +- tabulator is default field delimiter for clipboard data +- delimiter detection improved +General +- "Dangerous" flag set for potentially destructive dialogs +- a few redundant i18n strings removed +Table View +- data for large table view is destroyed without blocking GUI + +2006-01-16 +Project Import Wizard +- hide Kexi file extensions in source connection file dialog's filter +Main Window +- fixed saving Project Navigator Side Panel's visibility +- do not allow to open the same dialog twice - it was possible + for slowly loading dialogs with large data (e.g. a table view with 10^4 rows); + pending 'open' actions are now known +Simple Printing +- do not paint invalid values of type time, date or date/time +Table Designer +- fixed selecting subtypes +KexiDB +- SQLite driver: missing {} in PreparedStatement +- testing connection executes "USE DATABASE" if needed (e.g. for PostgreSQL) + +2006-01-12 +Table View +- Usability: Date, Date/Time and Time cell editors reimplemented + +2006-01-11 +Migration +- fixed opening project after import if user wanted this + +2006-01-09 +Form Designer +- infinite loop removed when updating multiple selection +0.9: backported +0.8: backported +- "Assign Action" dialog cleaned +KexiDB +- generate cleaner query statements: + if there's single table in query schema, skip "table." prefix in resulting + SQL string, e.g. build "SELECT a, b FROM t" instead of "SELECT t.a, t.b from t". +Query Designer +- "Totals" column hidden as it is not implemented + +2006-01-05..6, 10 +CSV Import Dialog +- optimalization for large data: only about 100 rows are loaded for preview +- progress dialog added on dialog creation (opening can be cancelled) +- layout fixes +- missing column with primary key is added if user wants it +- optimized importing large (many thousands of rows) tables: + GUI is not used to store entire table before importing; + only current record is kept in memory buffer +- progress dialog added on importing (importing can be cancelled) + +2006-01-02..04 +Startup +- "--skip-dialog" command line option added. + Skips displaying connection dialog\n" + and connects directly. Available when opening .kexic + or .kexis shortcut files. +- opening server-based projects works in File->Open when + there's already project opened. +- "--connection <shortcut_filename>" command line option added. + Specifies a database connection shortcut .kexic file containing + connection data. Can be used with --createdb or --create-opendb + for convenience instead of using options like --user, --host + or --port. Note: Options like --user, --host have precedence + over settings defined in the shortcut file. +- creating server-based projects works in File->New when + there's already project opened. +Migration +- Project Migration Wizard is proposed if a server-based database + is incompatible with Kexi and cannot be opened +- if a destination for imported project is a server, it is also + opened after import, if user wanted this + +2005-12-23, 29 +General +- (data forms, table view): fixed entering row number in the row navigator +- win32: fixed saving recently displayed directories in file dialogs +KexiDB +- SQLite: opened files are now locked for read/write by default; + related error messages improved +Simple Printouts +- pages to print can be selected +- number of copies can be entered +- pages collation switch on or off (i.e. 1-2..n; 1-2..n.... for collation + and 1-1-...1; 2-2..2; .. for "no collation") +- page count is properly computed and printed on the footer as "Page x of y" +- "Page Setup" action added; + now it's window is only presented when user really wants this +- text of the page title properly updated + +2005-12-12..22 +Simple Printouts +- added Simple Printouts window with print preview and settings +Table View +- failed accepting of row editing now cancels window closing +- fixes for updating row data (this was sometimes visible in Table Designer) +Table Designer +- avoid asking twice for saving changes to the design on window closing +- find unique name for autogenerated primary key fields +Kexi Core +- possibility of adding non-db-aware windows/tabs in Kexi +General +- added --print and --print-preview command line options +- (temporary) mini-kolibs added to get print settings stuff and remain + independent on kolibs + +2005-12-09 +Forms +- memory for data is now properly freed before closing a form +0.9: backported +0.8: backported +CSV Export +- CRLF characters are used as in RFC 4180 +- fixed gcc compiler-specific crash +- quote characters are escaped inside strings +- date/time values are exported without "T" inside (from ISO format) +CSV Import +- fixed handling line endings inside strings +- time and date/time types import and detection added + +2005-12-05..08 +Property Editor +- repaint fixes when column width changes or when persistent selection is set +- Property::captionForDisplaying() added: beter support for multiline property captions +- method names improved in Factory +- do not steal focus when selection is preserved +- possible crashes fixed when property values are changed in an instant reaction + on changing a property value in the editor; this is the case e.g. in Kexi Table Designer +- API docs updated +General +- custom "Identifier" property type and editor added (allows only entering identifiers); + used in Table/Form/Report Designers +Table Designer +- Field captions can be now entered by users instead of names. + Field names are then automatically generated. +- fixed problem with undo button for subtype combo box +- support for BLOB (Object) type; "Image" is now the only subtype of this type +- "unique" and "indexed" properties hidden for BLOB type +Table View +- clearing text removes value in combo box field for "enum" mode + +2005-12-02 +Main Window +- usability: for IDEAl mode tabs are also visible when one window is opened + (otherwise user could not know what the window's caption is) +- usability: added "close" button to the tab widget for IDEAl mode +- 'hover close button' is now turned off by default for IDEAl mode + (added HoverCloseButtonForTabs setting to kexirc for changing this) + +2005-11-29..12-01 +General +- file dialog's filters now contain only filters that make sense, + e.g. there's no "mdb" filter when we're writing to a file. +- usability: file dialogs now store recent directory paths + in the config file, and this is now used everywhere in Kexi +- default extension is properly added when there's multiple filters set + in the file dialog +Startup Dialog +- check for existence of a file user has selected to open +CSV Files Export +- CSV Export dialog added (also for copying to clipboard) + with storable export options +CSV Files Import +- usability: integer spin box used for "Start at line" option instead + of a combo box + +2005-11-28 +Main Window +- "File->Export->Data Table" and "Edit->Copy Special->As Data Table" + actions added +Parts +- X-Kexi-PartVersion increased to 2 +- added boolean servicetype property: X-Kexi-SupportsDataExport; + true for tables and queries +CSV Import +- space saved: radio buttons replaced by combo boxes +- added "Always use this encoding when importing CSV data files" option + to "CSV Import Options" dialog (saved to Kexi config file). + +2005-11-26 +Project Migration +- added "Always use this encoding in similar situations" option + to "Advanced options" dialog (saved to Kexi config file). + +2005-11-25 +Project Migration +(API CHANGED) +- Added versioning for migration drivers (current one is 1.1) +- Added properties support for migration drivers +- All error messages are displayed on the last "Failure" page +- Added "Advanced options" button and dialog, currently with "Encoding" parameter + for source database. Currently used by MDB driver for MSJet3 files. +General +- KexiCharacterEncodingComboBox added - a combobox widget providing + a list of possible character encodings + +2005-11-22..23 +Project Migration +- "All Supported Files" filter added to Kexi file dialogs +- Files like MS Access .mdb can be now clicked and then Import Wizard will pop up + with preselected parameters. This also works using command line. +- Import Wizard's GUI: improved messages, added real Finish page +- No need to select source driver, it's enought to select a filename or db connection +Startup +- Better usablity of 'Open Existing' tab page +- Better usablity of 'New project wizard' + +General +- compile fix for some compilers +0.9: backported +0.8: backported + +2005-11-15 +Forms +- AutoField widget: update m_label for font/palette change +- AutoField widget: display "Unbounded Auto Field" text when + no data source is set (in design time, like for image box) + +2005-11-09..14 +Forms +- AutoField widget: improved behaviour in design time + (setting caption/type/label position) +- frameColor property added for widgets like text label or frame: + behaves well also for "raised" frame shapes +- new widget KexiFrame, will provide more features; backward compatible + with QFrame +- do not allow to move top-level widget's position using arrow keys +Property Editor +- fix entering text into string-type editors with 'autoSync' flag + +2005-11-07 +Startup +- When opening connection (most often using .kexic file), connection dialog is shown + so user can adjust connetion parameters, (optionally save them) and finally perform + the connection to see available databases. If connection failed, connection dialog + is popping up again. + +2005-11-02..04 +2005-10-31 +Project Migration +- call KexiProject is used to create destination database instead of KexiDB::Connection + because tables like kexi__parts and kexi__blobs have to be created. +- Moving kexi projects from database servers to database files works. + kexi__objects table contents are properly copied if existed in source database, + so queries, forms etc. are properly imported +- Wizard's GUI improvements +KexiDB +- More verbose error messages: + Error messages and result numbers can be now inherited by using + Object::setError( KexiDB::Object *obj, const QString& prependMessage ), + so less information will be lost while displaying message e.g. + on failed cursor opening. +- mysql/pgsql/sqlite/mdb drivers updated for the current API + +- Tables: fixed retrieving field captions and descriptions + 0.9: backported + 0.8: backported + +2005-10-27 +KexiDB +- kexi__parts internal table is now created within KexiProject, + not KexiDB::Connection +- kexi__useractions and kexi__final are no longer created +Project Migration +- speedup: table creation and data copying is performed within transactions +- Added possibility of migrating Kexi projects from one backend to another + (e.g. from MySql server to SQLite file) internal kexi__ tables are properly recreated; + data, e.g. for kexi__parts and kexi__blobs is properly copied + +2005-10-24..26 +Forms +- Property editor widget for pixmaps now uses KexiBLOBBuffer +- forms manager turned into singleton, + and two widget libraries are now created: one for forms and one for reports +Property Editor +- show preview box in visible area +KexiDB +- DatabaseProperties utility class added to API +Table View +- Fixed ugly bug for switching sorting order (thanks Aaron) + 0.9: backported + 0.8: backported +- Better sorting: +-- NULL values are smaller than everything else +-- Special sorting for data/time/datetime/bin integers/floating point numbers + 0.9: backported + 0.8: backported + +2005-10-19 +Forms +- image box doesn't provide popup in data view mode when + no data source is assigned +- Kexi Form widgets code splitted + +2005-10-18 +KexiDB +- Connection::querySingleRecord() improved +- QuerySchema::addToWhereExpression() added +- SQLite driver: fixed BLOBs retrieval + +2005-10-15 +Table View +- crash fixed in combo box + CCBUG: 114697 + 0.9: backported + 0.8: backported +- alt+down shortcut can be used to drop down combo box (previously only F4 worked) + 0.9: backported + 0.8: backported +- combo box editor's popup: + row repainting fixed after current highlighted row has changed + 0.9: backported + 0.8: backported +Table Designer +- avoid possible infinite recursion +- selecting non-integer type group using 'type combo' clears PKEY flagm, if set + +2005-10-14 +Forms +- It was not possible to change the tab order of +widgets in the Edit Tab Order dialog with keyboard. + +2005-10-12 +Project Import Wizard +- usability++: after successful import, the project is opened + +Query Designer +- conditions: ambiguous expressions fixed: + "t1.id > 100" is used instead of "id > 100" in queries like + SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.id > 100 +- fixed possible crash when invalid query design is loaded in design view +- fixed switching to design mode after invalid query was opened directly in text mode +- eat parentheses on criteria loading, in WHERE conditions like (a.id = value) +- also accept tableName.fieldName on criteria loading, not only tableName +- also accept e.g. "2 = variable" as condition, not only "variable = 2" +- graphical representation of joins is generated back from SQL statement not only + based on explicit query schema's relations but are also retrieved + from "[t1.]f1 = [t2.]f2" expressions within WHERE section + +TODO: joins are not visible when switching from design to text mode (and conversely) + when there are no columns selected in FROM section, eg. "select from a, b" + +2005-10-06 +KexiCore +- Fixed autogenerating object names (e.g. tables, queries) based on caption: + latin1 base name can be now chosen by translator +BUG: 104858 + +2005-10-05 +KexiDB +- PreparedStatement introduced +- mysql, sqlite drivers: avoid double freeing data member in ConnectionInternal implementations + +2005-09-27..29 +Forms +- Images are stored in memory in original form, converting to QPixmap is only performed + for displayoing purposes. Such original pixmap can be saved back to file. + Original file name is also kept. KexiImageBox handles pixmap data with QByteArray member +- KexiBLOBBuffer introduced: Application-wide buffer for local (static) BLOB data like pixmaps. + For now only pixmaps are supported. Used on design time before objects are stored. + This allows to copy multimegabyte pixmaps within Kexi without unnecessary memory loss. +- KexiCustomPropertyFactory introduced: handles Kexi-specific property editor items + +2005-09-26 +KoProperty lib +- Editor: possible crash fixed +- Property: guarded ptrs are used to store pointers to Set objects + to avoid dangling pointers + +2005-09-24 +General +- KEXI_STANDALONE compile time definition added +- description in 'about data' mentions whether it is a standalone or 'bundled' + Kexi version +- .po files are now prefixed with "standalone_" for standalone versions + to avoid conflicts with KOffice installations +- yes, 1.0 is marked as standalone version +- custom defines cleaned up + +2005-09-21..22 +MDB Driver +- all strings are now properly decoded (object names and data): + MDB(UCS2)->MDBTOOLS(UTF8, using libiconv)->KEXI_MDB(QString) +- non latin1 filenames handling fixed +- fixed date, date/time types handling (including Y2k problem for years >=1930) +- fixed currency handling (double type is assumed for now) +Table View; Data Interface +- fixed possible crashes for comboboxes within non-db-aware table views +Table Designer +- fixed 'subtype' combo refreshing within property editor +KexiDB +- DriverManager: to avoid conflicts with other copies of KexiDB, + eg. in ShowImg application, "kexidb_" prefix is required for KexiDB + driver files (KDE modules) +- some docs and above information added for Doxygen + +2005-09-17..20 +KexiProject +- createInternalStructures() added; semi-internal (not well suited for kexidb itself) + structures like kexi__blobs table are created now if not yet exist +- internal kexi__blobs table introduced: for BLOB storage +General +- some i18n strings fixed +- KEXI_NO_AUTOFIELD_WIDGET, KEXI_NO_IMAGEBOX_WIDGET temp. compile time options added + +2005-09-16 +Forms +- FormIO: some fixes in method's naming +KexiDB +- tristate type is used in some more methods, so it's now possible + to catch "no data" cases, not only "server errors" +- InternalTableSchema class added (to avoid polluting TableSchema/Conenction APIs) + +2005-09-15 +Kexi supports static and data-aware images boxes +- properties implemented: scaling (aspect ration can be kept), + horizontal/vertical alignment +Project Migration +- cleaned up the code a bit +- 'back' button works well on "dest. type" page when file-based driver is used +- user is warned when no source filename was specified +Forms +- view mode (design/preview) is now also passed as option + to WidgetFactory::createWidget() so widget's look&feel can differ depending + on the view mode + +2005-09-14 +Property Editor +- PixmapEditor improved displaying, and value changes support +- Editor's widgets have proper geometry set a bit earlier + +2005-09-06 (aKademy) +2005-09-08..13 +Forms +- data-aware image box widget +(partial implementation started during flight back from Girona to Warsaw) +-- "insertFromFile", "saveAs", "cut", "copy", "paste", "delete", "properties" + popup actions added +- "readOnly" property added for image, spinboxes and dbfield widgets + +2005-09-03 (aKademy) +Relations view +- fixed redrawing (in an unoptimized way) +Property Editor +- updating combobox items after change of list data +TableView +- combo box popup behaves more like a normal combo (highlighting, selecting) +- added "what's this" support for table columns + +2005-08-27 +Forms +- a fix for 'value changed' flag and datachangeslistener in autofields + +2005-08-19 +Startup +- "-type connection" command line arg added + (i.e. support for applications/x-kexi-connectiondata mime type) +Main Window +- project navigator visibility flag is now stored in config file (usable for IDEAl) + +2005-08-16..18 +Main Window +- Toplevel (buggy) and Tabbed (redundant) KMDI modes hidden in Window menu; + Changing MDI mode now requires application restart (the lesser of two evils) +- 'Create' menu renamed to more typical 'Insert'; 'Data' menuu moved after 'Format' +- project navigator: usability fixes +Widgets +- KexiSmallToolButton helper class added +- fixes for KexiFlowLayout +Forms +- "other widgets" toolbar popup added for clarity + +2005-08-12 +Form Designer +- possible crashes fixed + +2005-08-10, 11 +Form Designer +- added possibility of inserting autofields using 'Insert fields' button + from Data Source tab +- CommandGroup usability improved: it's now possible to addCommand() + with flag telling that it will not be executed on CommandGroup::execute() +- above CommandGroup's feature is used to make a single command + out of 'inserting multiple autoFields' task +- top-level form surface is resized when inserted autoField(s) couldn't fit +- inserting autofields is atomic command supporting undo/redo +General +- applications/x-kexi-connectiondata MIME type defined + +2005-08-09 +Form Designer +- data source tab: usability improved for field list +Widgets +- KexiFieldListView is now displaying unique fields list for queries +KexiDB +- 'bool unique' arg supported for QuerySchema::fieldsExpanded() + and TableOrQuerySchema::columns() +Query Designer +- fixes for recent API change of KexiFieldListView + +2005-08-08 +Main +- better readibility: new project type selector uses listview, not icon view + +2005-08-05 +Property Editor +- '-flat' arg added for test app +- painting improved for both flat and groupped mode + +2005-07-29..2005-08-02 +Form Designer +- field editor's types list reuses KexiDB::fieldName() for i18n +- autocaption is set properly for field editor on design time +- field editor's labelCaption is no longer needed +- propeditor: preserve "changed" flags (marked with BOLD) between property set switching +- KAcceleratorManager::setNoAccel(QWidget*) is used for widgets in design mode + to avoid adding accelerators (for FormIO and for new widgets inserting) +- factories: isPropertyVisibleInternal() is now called for superclass when needed + (thus, properties like "iconText" are properly hidden) +- when a widget is deleted or cut, its parent container become selected +KoProperty library +- fix for spin box editor's width +- better display for composed editors for types like Rect +- fixed undo button's size in Editor +- font editor fixed +- Editor: expand/collapse boxes painted using styles; whitespace added on the left hand +- Editor: editor widget's focusing fixed +Table Designer +- a fix for 'subType' combo +Main Window +- Navigator: when items renaming, treat "*" ("changed" flag) as a special character, + not a part of the item's name + +2005-07-28 +Form Designer +- field editor's default focus policy is now inherited from internal editor + +2005-07-25..27 +Form Designer +- better support for Auto Fields, including drag&drop +- DesignTimeDynamicChildWidgetHandler added - interface for adding + dynamically created (at design time) widget to event eater +- editor inside KexiDBFieldEdit is visible at design time +- KexiDataItemInterface::field() changed to columnInfo() + -> more information can be now reused for visual field (i.e. query alias) +- dbwidgets moved to libformutils as we're reusing many + of them outside of dbwidgets factory +- version information is loaded/saved within form's UI string + +2005-07-23 +Core +- management related to Part's ID improved; fixed related bug + +2005-07-22 +KexiDB +- support for PostgreSQL on win32 +- PostgreSQL driver's transactions handling improved + +2005-07-21 +Form Designer +- checkbox inline editing enabled +- width of inserted widgets' size hint increased a bit to for better usability + +2005-07-13..20 +General +- @internal added for private classes to make api docs more readable +Startup / Server Support +- connection data editor improved +- connection data is now storable +- added support for adding/deleting/editing connection data +KexiDB +- BIC CHANGE (witin v1.7): bool ConnectionData::savePassword flag added +- KexiDB::connectionTestDialog() added for performing test connections + +TODO::::::: +-fix shared actions availability for ideal mode! (reported by ccpasteur) +-fix "edit tab order" action: not working when prj browser is focused... + +TODO: koproperty: us ListData-like struct instead of QMap, because data combo boxes should be sorted + +2005-07-10 +KexiDB +- BIC CHANGE TO v1.7: (portability fix) pkeyfieldsorder and fieldsorder mapping + now use int instead of uint + +2005-07-08 +KoProperty +- 'list data' introduced to clearly define 'keys' and 'strings' for combobox-like editors +- cursor editor fixed +- other minor fixes + +2005-07-05..07 +Form Designer +- Data source fields can be dragged from Data Source Pane + and dropped on the form's surface to create data-aware line edit widgets +- on new form empty creation, undo/redo history is cleared + and undo/redo actions are not available +- on design time, 'dataSource' properties for forms and dataaware widgets + are synced with data source combo boxes + +2005-07-04 +Property Editor +- properties now have 'sortingKey', so the order of properies is maintained +- fixed bug in Set::clear() +Form Designer's Property Editor +- better handling multiple widget selection +- fixes for widget info label + +2005-07-02 +Form Designer +- fixed i18n for property captions +- fixed filling enum values + +2005-06-20..30 +- * KexiProperty library made more generic as KoProperty * +- Kexi now uses KoProperty + +Form Designer +- Data source tab in the Property Pane implemented +- 'dataSourceMimeType' property added for data-aware widgets, so it can be explicity + defined whether an object pointed by 'dataSource' property is a table of query. + This change is backward compatible. +- fixed switching property buffers when switching between child windows +- record navigator is now hidden if there's no data source assigned for a form +Query Designer +- object combo box now also contain queries (supporting queries is not implemented yet though) + the list within the combo is property sorted and grouped; it's reused in 'Data source' tab + of Prop. Pane; the combo now reacts on deleting/creating/renaming of table or query +KexiDB +- TableOrQuerySchema helper class added +Main Window +- crash fixed in 'detach window' action +Core +- Field draging: API improved, now both query and table fields/columns can be dragged; + added support for multiple fields dragging +- added 'higlight object' action for KexiProject (available from property pane) +- improved API for reaction on object creation/deletion/renaming +General +- small icons cleaned up; added better query/form/report/script icons +- 'X-Kexi-GroupIcon' property no longer used; such icons are too hard to design and recognize +- KexiFieldListView and KexiFieldComboBox added +- "kfd:customHeader" element added for inserting custom information like kexiformdesigner's version +- Number of currently selected tab of the Property Pane is preserved when switching back + to dialog for a particular part (in design mode). So if a user have looked at "data source" tab, + it's no longer necessary to click this tab again. + +2005-06-10..16 +General +- more utility functions and clases moved to kexiutils library +Form Designer +- data aware 'text editor' widget added +- inline editor pointer is now being kept only within parent factory +- we're not creating additional (blue) resize handle set, but just changes color + of existing set thus resizing works well even if we're during inline editing +- inconsistences with storing pointers to currently edited widget removed + (m_widget, m_editor members are now private) +- we're copying common properties from an editing widget to an inline editor + (e.g. "margin") +- fixed resetting cursor after editing +- on creating a new spring, splitter and line widget, orientation is set according + its to aspect ratio; if the ratio is undefined, popup menu with vertical/horizontal/cancel + options is displayed +- fixed crash when pressing Tab key on form surface in design mode +- added 2 custom tabs to property pane: Data Source (mockup for now), Widgets +Property Pane +- widget class is displayed above property editor +- blinking reduced on property buffer switching + +2005-06-08 +KexiDB +- fixed crash for SQLite2 driver +CSV Import Dialog +- deadlock removed when importing CSV text like "," +Form Designer +- (all branches) temp. fix: QTabWidget used instead of KTabWidget ('&' bug) + +2005-06-01 +General +- (all branches) missing icons added +KexiDB +- (all branches) field names converted to lowercase in memory to avoid problems with comparisons + +2005-05-31 +Core +- editor within property panel is accepted before buffer switching +Form Designer +- record is properly fetched on subsequent switching to Data View mode, + especially after data source changes + +2005-05-25 +2005-05-27 +Form Designer +- fixed crash when there're missing widgets +Query Designer +- bug for relationships creation fixed + +2005-05-23 +CSV Import Dialog +- "Start at line" parameter in now better updated + +2005-05-13, 14 +Form Designer +- "vAlign" property is now invisible for lineedit widgets (it's noop there) +- "(autonumber)" label is (identical to the one in tableview) is displayed + in lineedit and label widgets assigned to autonumbered fields +- shadow in label widgets is properly set for altered indenting, margins and alignment +- double focusing of text field fixed +- "format_font" action added; it's now possible setting font for one or multiple widget's + standard using font dialog +Core +- fixed possible crash when an object has beed saved with a different name than proposed +TODO: +- in "kexi" mode, "font" property is not visible e.g. for top-level form widget, + and other widgets that doesn't display text +- fix data src updating in the data view when it has been changed in design view +CSV Import Dialog +- support for setting primary key (including autodetection) +- support for 'first row contains column names' flag (including autodetection) +- column types are autodetected +- import is performed within a single transaction +- characted encoding fixes; different encoding can be selected +- delimiting character is autodetected +- clipboard support re-added +- floating-point values are properly parsed +- empty cells are supported +- new table name is based on provided filename +Main Window +- 'close all' works well if there are more than one yes/no/cancel dialogs required to show + +~~~~~~~~~~~~~~~~ 0.9 ~~~~~~~~~~~~~~~~ +~~~~~~~~~~~~~~~~ 0.8 (excluding updated i18n; with KOffice 1.4) ~~~~~~~~~~~~~~~~ + +2005-05-10 +Project Migration +- MS Access filename filter added for convenience (it's autoselected when needed) +- SQLite3 type is selected as default for destination engine type (for convenience) + +2005-05-09 +Forms +- fixed crash because main window didn't notice property buffer change + form's property buffer is shared (ObjPropertyBuffer instance) +- setting and clearing 'formName' property value for subform fixed +- fixed problems with data in subforms: data provider only sets data + for own items, not inside subforms (data-awarness is disabled in subforms for now) + +2005-05-06 +Core, Property Editor, Form Designer +- powerfull "property options" added to kexi properties: + can change behaviour of property editor's items +- properties: for integer types it's now possible to set "min", "max", and "minValueText" + options; "minValueText", if available, is properly displayed: + e.g. see:"indent" property of Kexi's label widget +Form Designer +- shadow doesn't blink; properly refreshed on 'indent' property change +KexiDB +- inserting rows with autoinc values > than 0x7fffffff supported + +2005-05-05 +Form Designer +- basic data type validating added to lineedit widget +- spring drawing improved + +TODO: fix KIntValidator::validate()? + +2005-05-04 +Form Designer +- row deleting and inserting implemented +- when started new row editing, 'next' btn is enabled (code shared with table view) +- "+ button" code shared with table view + +2005-05-02 +KexiDB +- we're handling application/x-sqlite2 and application/x-sqlite3 +(those mime types are defined within kexi but we'll also add them for another KDE +release) + +2005-04-30 +KexiDB +- magic data is now defined for application/x-sqliteX, not for + application/x-kexiproject-sqliteX (X == 2 or 3) +- file-based drivers can now define a list of supported mimetypes, not just + one mime type (added all known mimetypes thee, including Knoda's mimes, for + compatibility) + +2005-04-29 +Form Designer +- fixed many crashes appearing when a widget name was changed +- setting duplicated or invalid widget name is now impossible + +2005-04-28 +Form Designer +- all known property and enum names are translated; names are simplified +- more properties turned to advanced set and thus made invisible in Kexi +- kexiproperty object is created only once for on propbuffer creation + for every QWidget's property. This fixes problems like + 'toggleButton' property being added twice to propeditor +- looking for i18n'd property description or enum value description: + on failure, we're also asking parent widget factory for this, if one exists + +~~~~~~~~~~~~~~~~ 0.8 beta 1 (with KOffice 1.4) ~~~~~~~~~~~~~~~~ + +2005-04-27 +Form Designer +- KexiGradientWidget ifdef'd out for 0.1 release + (using KEXI_USE_GRADIENT_WIDGET macro) due to problems with performance + and child widget's palettes +- added possibility of forcing particular class to be hidden + (eg. because it's not ready to use yet or makes no sense in current context) +- fixed creating KexiProperties for enum values +- property buffer: sometimes enums are remembered as casted to ints, + sometimes as string representations... +- a few properties are now hidded due to inmaturity or senseless + +2005-04-25 +Main Window +- fixed possible crash of the property editor on detached window closing +KexiDB/SQL Parser +- SQL Parser now accepts unicode characters for identifiers and strings +Project Migration +- drop existing database before if user configmed overwriting +- close connection on failures +- fixes for mdb driver + + +2005-04-22..23 +Table View +- Ctrl+Delete (delete row) shortcut also works inside cell's lineedit editor + (default shortcut is overriden) +Table Designer +- on switching to design mode, row buffers are initialized after old buffers + are cleared, not before (this fixes bug with disappearing property buffer) +Form Designer +- fix for setting background (gradient widget cleared background color value) + +2005-04-21 +Main Window +- 'edit > select all' global shared action added +Core +- Active window can be found even if it's detached (as in KMDI). + This fixes shared actions availability for detached windows. +Form Designer, Report Designer +- KexiFormManager reused for reporting +- we can now assign any kexi action to a button, not only shared one.. + +2005-04-20 +Form Designer +- we're not plugging to data-related actions for design view mode + +2005-04-19 +Project Wizard +- 'finish' button disabled on 'select project type' page +Form Designer +- 'delete' key removes selected widget(s); except for top level form widget +- 'menu' key works +- avoid redundancy in action-creation code +- better context menu +- actions can interoperate with shared actions +TableView +- 'menu' key code taken from global settings +Main Window +- on startup propeditor is hidden if no project is opened +Startup +- Connection Selector: added information how to create connections + +2005-04-18 +Core +- KexiProperty::setValue(): QCString type is now compatible with QString type +Form Designer +- assigning predefined Kexi actions to buttons +- WidgetLibrary::setAdvancedPropertiesVisible() added, so advanced properties + can be hidden in Kexi. +- WidgetLibrary::isPropertyVisible() improved +- 'edit pixmap collection' and 'edit connections' + disabled for current version of Kexi Forms +- using QString changed to QCString in maaany places + +2005-04-15..16 +Main +- Navigator: double clicking on item which has no data view mode available, + opens it in design mode; Unavailable actions for given object types + are hidden in popup menu. +- main window: navigator's layout management fixes, again... +Form Designer +- initial version of 'assigning actions to push buttons' +- resizing main form widget is undoable and considered in setting dirty flag +- initial size of form surface fixed +- various fixes for form surface resizing and "Outer Area" text +Core +- Dialogs: new objects are not dirty by default but this is changed for forms + +2005-04-13 +Form Designer +- On loading, top level form widgets with negative X or Y are moved to 0 + to avoid weird behaviour. + +2005-04-12 +KexiDB +- Scale property added for floating-point field types. + Now types like NUMERIC(precision,scale) are possible to declare. +Core +- String "Design of object \"%1\" has been modified." made well translatable + at plugins level. + +2005-04-11 +Form Designer +- it's now possible to inherit features of a widget class from a different factory + +2005-04-07 +Query Designer +- properies for rows were not cleared on switching back to design view + when statement changed + + +2005-04-01..04 +* Many improvements added for Kexi Forms, + including editable query results. * +KexiDB +- BIC CHANGE: +-- FieldList: field(const QString&) added +-- QuerySchema: field(const QString&) added; + insertField() and fieldsExpanded() improved; +- documentation improved +Forms +- setting (predefined) queries as form's dataSource works +- editing data for _editable_ queries works (but not rows adding or removing) +- setting "tablename.fieldname" for data-aware widget's dataSource works +- setting "queryname.fieldname" for data-aware widget's dataSource works +- when a table is set as form's data source, all primary key's fields + are always fetched (so editing works well with autonumbers) +- autoSync set to false for dataSource properties (using KexiDataAwareWidgetInfo) +- improved support for invalid dataSource property +- data-aware widgets with invalid dataSource property are now removed from tab-focus cycle + (setInvalidState() now implies setting ClickFocus flag) +- on form opening: first data-aware widget with TabFocus is focused (if available) +- void KexiFormDataProvider::fillDuplicatedDataItems() works well + also if there are data sources like "tablename.fieldname" +Forms Library +- autoSync flag can be overriden independently within every widget factory + for every single class, using WidgetInfo::setAutoSyncForProperty() +- when deselecting a widget with autoSync set to false property value is now set properly +Main +- KexiBrowser: pressing Enter key to accept item renaming won't execute "open" action + + +2005-03-30 +Forms +- setting form's background color property fixed +KexiDB +- BIC CHANGE: a few dtors made virtual +- Connection: data inserting/updating/deleting: +-- more error messages and codes added +-- we're checking if master table's primary key is available +- QuerySchema: pkeyFieldsOrder() improved, pkeyFieldsCount() added. +- FieldList::indexOf() added + +2005-03-29 +Main Window +- dock windows' width is managed for TabPageMode in the same way as for ChildframeMode +- hiding property editor's dock when not needed +Table/Form Views +- database cursor deleted when not needed +Forms +- writing data changes implemented + +2005-03-25 +Forms +- "cancel cell editing" and "cancel row editing" implemented + +2005-03-10..24 +Forms, TableViews +- APIs for Forms and TableViews more integrated: +-- KexiTableEdit now inherits KexiDataItemInterface +-- KexiDataItemInterface is now used in KexiDataAwareObjectInterface, + not KexiTableEdit +-- KexiFormScrollView and KexiDBForm now uses KexiDataAwareObjectInterface API + for dealing with r/w data +- data-aware widgets with duplicated data source are updated concurently + on editing one of them +- within forms, "column" term is now related not to column within data model, + but to order of data-aware widget. This "column" value is translated to + column number within data model when needed. This allows to duplicate data + widgets, hide them, change their ordering, etc. For example, tab order + (and visual order) of data-aware widgets is independant of column ordering + within data model. +KexiDB +- BIC CHANGE: QuerySchema::parentTable() renamed to masterTable() +- QuerySchema::masterTable() now tries to return a table + if there's only one defined +- Connection::createTable() - on error, existing table schema object + is not destroyed (i.e. it is still available e.g. + using within Connection::tableSchema(const QString& ), + even if the table was physically dropped. + This fixes crash for "alter table dialog" when recreating table failed + (the dialog expects that old table schema won't be destroyed). +- Connection::resultExists() avoid appending optimizing "LIMIT 1" suffix when + the query statement is not "SELECT". +- Connection::createTableStatement(): length parameter is now only used + for text and not long text field types. +Alter Table Dialog +- changing subType to LongText hides "length" property; + changing subType to Text shows "length" property. + +2005-03-04 +KexiDataAwareObjectInterface (TableView) +- fixed setting cursor position (and iterator) when changing selected + row after row editing + +2005-03-03 +- doc/dev/compile_time_options.txt document added +KexiDB +- API CHANGED - version 1.5 +- KexiMessageHandler moved to KexiDB::MessageHandler, KexiDB::Title added + as public available, KexiDB::Object now uses MessageHandler. +KexiProject +- KexiProject now uses recent KexiDB additions +Migration (Import Project Wizard) +- fixed accepting entered target db filename +- user is asked for confirming overwrites +Main +- KEXI_CUSTOM_HARDCODED_CONNDATA temp. compile-time option added, + see doc/dev/compile_time_options.txt +KexiStartupFileDialog +- Esc key is filtered-out so it's not hidden and + dialogs using this widget can bahave properly + +2005-02-27 +KexiDB +- mysql/sqlite drivers: fixed problem with xxxxConnection::value(int) + when we're using raw sql statements (so expanded field list is empty) +- MySQL Driver: a hack to enable local connections without using + a local socket file: if user doesn't want to use local socket file, + host name is automatically set (internally) to "127.0.0.1" + before connecting. This is especially usable when we're using SSH tunneling. + +2005-02-26 +Widgets +- KexiTableRM moved to KexiRecordMarker in libguiutils +Forms +- "pen" icon is displayed on editing within a standard form, see: + www.kexi-project.org/wiki/wikiview/index.php?Forms%20embedded%20inside%20Kexi#3.5._ +- fixed Tab/BackTab ordering when there're widgets without TabFocus focus policy set +- TabOrder dialog: "dirty" flag is always set to the curent form when the dialog is accepted +KexiDB +- Connection::dropTable(): be sure that we handle the correct TableSchema object +- Connection::storeObjectSchemaData() if we already have stored a schema data + with the same name and type - just update it's properties as it would be existing object + +KexiRecordMarker +2005-02-23..25 +Forms +- fixed Tab/BackTab ordering within form's fields, including cycles + and problems after detaching/attaching windows for Child Frame Mode. + QApplication::sendEvent() used instead setFocus() for more realistic + (especially for QLineEdits) focusing effects when tabulator is pressed. +- QLabel and KexiPixmapLabel available again in KFD +Main +- useful Statusbar debug info about focused widget added + (enable this using KEXI_STATUSBAR_DEBUG compile-time macro) + +2005-02-21 +Kexi Startup +- "useLocalSocketFile" option for .kexis file implemented +Forms +- "autoTabStops" property added. + It is synced with changed made by TabStopDialog's checkbox. + +2005-02-11...2005-02-20 +Kexi Startup +- Support for ".kexis" shortcut files added. You can now easily create + a shortcut file once, and connect to your remote database server with + just one click :) +- "-type" command line option added + (specifies a type of a file provided as argument) +- opened file types are additionally checked by name extension + (if mimetype was not detected) -- this is useful for shortcut files +- KexiDBShortcutFile class added +- database/connection dialog reimplemented +- KexiDBDriverComboBox added: a combo box for selecting a database driver + +2005-02-17 +Forms +- Avoid errors and handle invalid dataSource property values within forms +- show errors as "#NAME?" in line edits and other data-aware widgets + +2005-02-04 +KexiDB +- DateTime values: back to ISO 8601 datetime format: + http://www.w3.org/TR/NOTE-datetime + (ie. "1994-11-05T13:15:30" not "1994-11-05 13:15:30") + --backward compatible + +2005-02-02 +Tables/Forms +- navigating within rows optimized by using iterators +Forms +- navigating readded (still read-only) + + +2005-01-29..31 +Forms +- KexiGradientWidget introduced: + new special effects within form surface; + Shadow Labels introduced + (by Christian Nitschkowski; segfault_ii at web.de) +- "show ui xml code" debug function added to forms +- 1st attempt to port Forms to updated data-awarness API + +2005-01-27..29 +Widgets +- fixed several blind slot-signal connections +Forms +- fixed slots/signals signatures with namespaces +- better resizing new forms contents + +2005-01-26 +Widgets +- fixed focusing-out record navigator's line edit + +2005-01-20 +Core +- On failed plugins loading, proper error message is associated with KexiPart::Info + and available later; instead of only assigning it globally to KexiPart::Manager. + +2005-01-17 +SQL Editor +- focus is correctly to editor widget +API, Utils +- KexiDataAwareView, KexiDataAwareObjectInterface introduced +- API and GUI Consistency highly improved: + KexiTableView and subclasses use the same api + as KexiFormView and all friends + +2005-01-14 +General +- KEXI_REPORTS_SUPPORT compile-time define added +Core +- new Part Item added after saving to KexiProject object's structure + and removed from temporary list of unsaved items. + +2005-01-10 +Forms +- KexiDataItemChangesListener added to allow signaling changes + from widgets implementing KexiDataItemInterface + +2005-01-08 +KexiDB +- TableSchema: table names should be lower case to ease comparisons +- we're using "lower(o_name)='givenobjname'" comparison in kexi__objects table + to avoid problems even if somebody hacked this table with upper case letters; + thanks to Martin Ellis for mentioning the problem +Kexi Data-aware Widgets +- KexiRecordNavigatorHandler interface introduced -handles requests + generated by KexiRecordNavigator +Forms +- Database-aware forms finally introduced +Core +- KexiDataItemInterface: An interface for declaring + widgets to be data-aware + +2005-01-06 +MainWindow +- maximized child window (dialog) state is preserved + (a fix after recent KMDI behaviour changed) + +2005-01-04 +PropertyEditor +- prevent scrolling to previously selected item on mouse click + +2004-12-22 +Reports +- data view mode: record navigator is now "page navigator" + (it has also [+] button hidden) + +2004-12-21 +Core +- KexiProperty - added 'fixed' flag for 'list' types + (the flag is used in Property Editor in most cases) +- KexiPart::ObjectTypes introduced +- KexiProperty: + property is unchanged if we're moving from null value to a null pixmap, etc. +Form Designer +- some fixes for efficiency +- WidgetFactory can now define custom i18n'd: + -property descriptions + -property value descriptions + +2004-12-20 +SQLite Drivers (2 and 3) +*DATABSE FORMAT CHANGED to 1.4* +- date-time data type is now stored as "YYYY-MM-DD HH:MM:SS", not as + "YYYY-MM-DDTHH:MM:SS". This is compatible with SQLite format + http://www.sqlite.org/cvstrac/wiki?p=DateAndTimeFunctions + The change is backward compatible. + (thanks for reporting: Richard Groult) +KexiDB +- Connection: queryStringList() convenience function added +- information about "possible problems" is displayed in details sections + of error message on failed loading db driver +Migration +- wizard fixed a bit +- kexi__* tables are not copied on high-level +- MySQL Migration driver, contributed by Martin Ellis <m.a.ellis@ncl.ac.uk> +KexiDB Drivers +- MySQL driver better splitted to internal and public part, + so migration driver can easier use it + + +2004-12-18 +Forms +- WidgetLibrary: check for duplicated factories added +- factory groups introduced +- factories loading splitted for lookup/loading stages +- added 'override' flag for alternate widget class names +- minor optimizations +Form Plugin +- fixed showing form's property right after form's window loading +- record navigator added in data view + +2004-12-17 +KPropertyEditor +- fixed editor positioning +- bool editor height fixed +- test: more property types + +2004-12-14 +Form Plugin +- handling form's boundaries improved +- after switching to/from form in data view mode, its contents position is preserved +- fixed form's size setting in data view mode +- two form's resize modes introduced, see + http://www.kexi-project.org/wiki/wikiview/index.php?Forms#Form_Resize_Modes_for_form_windows_inside_Kexi +- in data view mode, scrollview is properly resized to avoid showing + outer area and without scrollbars flickering +General +- version info moved to kexi_version.h; kexi_global.h is auto-included + +2004-12-13 +Widgets +- libkexiguiutils added (KexiDB-independent widgets) +- KexiRecordNavigator widget added (the old one was unused) +Core +- Part::openInstance(): dlg->registerDialog() moved after successful dialog opening + to avoid focusing non-exisitng dialog and/or flickering + in a case of obj. loading errors + +2004-12-02 +KexiDB +- version field added to kexidb driver's service files + +2004-11-29 +Plugins +- Migration plugin added (this removed main<->migration circular dependency) +Kexi Internal Parts +- API improved + +~~~~ 2004 LT ~~~~ + +2004-11-24 +Main +- unix: fixed problem with SIGPIPE on running another Kexi process + (stdin/err/out is closed now) + +2004-11-22 +I18N +- pl translation updated +Main +- disabling forms support fixed +KexiDB +- fixed setting relationships within query +Query Designer +- criteria handling fixed +- information syncing fixed a bit more + +2004-11-20 +KexiDB +- TableSchemaChangeListenerInterface added to signal changes + in tableschema set +Query Designer +- registers usage of table schema +- fixes in GUI editor +- more checks for schema changes +Main +- on table schema altering or removing, user if now asked + for closing windows using this table +win32 File Dialog +- make 'My Documents' folder as default +Query Designer, SQL Parser +- fixed invalid parsing string constants + +2004-11-19 +Query Designer +- clearing "PK" flag is not needed in few cases +- it's now possible to enter "alias_name: simple_expression" + in the column #1 +Table View +- fixed repainting visible rows below a deleted row + (required if no confirmation box is displayed) +- record navigator's rec # indicator field: +-- fixed value validation on number entering +-- fixed focus out +- added support for editable comboboxes +Main +- always ask for removing objects +Property Editor +- do not steal Key_Home and Key_End key presses from editor item +- Key_Tab and Key_BackTab work like down/up keys + +2004-11-17 +Startup dialogs +- win32: fixed problem with changing directory for a new db file +Kexi Utils +- string2Identifier() : non-latin1 characters converted to latin1 + eg. 'oacute' to 'o' + +2004-11-16 +Relations Widget +- fixed updating tables combo box on table adding +- on new table creation, combo box is updated with a new item +Main Window +- fixed setting non-latin1 characters (e.g. db name) for the title + +2004-11-15 +Main Window +- close_project action's shortcut removed + (to avoid conflict with KMDI's 'close current child window') +- CTRL+F4 key closes child window on win32 +Table View +- KexiComboBoxPopup: selection is changed on mouse release event, + not on press, to avoid weird effect when selection is dragged +- dropdown button placement fixed after clicking for KexiComboBoxTableEdit +- fixed race condition in GUI on fast row inserting + (due to QApplication::precessEvents()) +- fixed vheader offset on row inserting +Query Designer +- user is warned about empty 'column' item while 'table' item is not empty +- simple criterias are loaded to GUI +KexiDB +- expression classes optimized for space and speed (NArgExpr is not used) + +2004-11-13 +Property Editor +- fixed moving selection (esp. using Home key) +Query Designer +- never ending story: fixed actions availability os switching back to design more +- setting column aliases available using GUI +- "caption" property hidden for KEXI_NO_UNFINISHED +- wait cursor enabled for query executing +Kexi Browser +- CTRL+Enter shortcut handling fixed +Main Window +- property editor is shown before opening dialog (not after) + to allow initialize proper size inside the dialog. + E.g. this fixes column widths in query designer's view. +Table View +- sorting settings are cleared on setData() + +2004-11-12 +Kexi +- 2 icons fixed +KexiDB +- Support for Generic SQL Keywords Escaping + contributed by Martin Ellis <m.a.ellis@ncl.ac.uk> + +2004-11-11, 12 +Property Editor +- 'undo changes' button improved (icon, tooltip) +- Esc key now properly undoes changes using KexiProperty::resetValue() +- setWidget() usage fixed for spin box editors, and similar: this fixes problems with + key press event filtering for these editors +- Home and End keys now moves to first/last row, also for nested properties +- moving selection using keyboard now ensures an item is visible +Properties +- KexiProperty::resetValue() does nothing if property is unchanged + +2004-11-10 +Property Editor +- on focus +--previously focused editor is activated; +--first visible item is activated if no item was active +- fixed buffer switching (focus is not set) +- focusing for combo box (list) editor fixed +- focus is set again if was set before +Table View Prop. Buffer +- fixed memory leak and possible crash +Table Designer +- switching from design view to data view: it's now posible to discard changes +- typo in prop name fixed +Main +- Key_F6/F7/F8 added for data/design/text modes + +2004-11-09 +Main +- fix conflict of CTRL+Tab with tabbed/ideal mode on win32 +Query Designer +- 'check query' action is now avaialble under Key_F9 (was CTRL+Key_Enter) + to avoid conflict with editor + +2004-11-08 +Main +- a fix for saving main windows settings (now mdimode is saved to proper + section) +- window_next, window_previous actions added +KexiDB +- DriverBehaviour::AUTO_INCREMENT_TYPE added + +2004-11-05 +Main +- fixes for actions + +2004-11-04 +Migration +- fixed compilation (problems due to curcular libs dependencies) +KexiDB +- alterTableName() +--works better with already started transactions +--finally works even for SQLite! +- lowlevel Connection: drv_containsTable(), drv_getTablesList() added; + impelemnted for all 3 drivers +- Connection::dropTable(): No error is raised if the table does not exist physically + -its schema is removed even in this case. +Core +- Kexi::setWaitCursor(), Kexi::removeWaitCursor() do nothing for non-GUI-aware apps. +- KexiGUIMessageHandler now calls Kexi::removeWaitCursor() +- If an object could not be opened in design/data view, + user is asked to let it to be opened in text mode (if available) +- KexiDialogBase: temp data handling improved +Main +- "Open in Text View" added to the Browser +Query Designer +- SQL Editor is now able to open also invalid SQL statements, + so user can now open (and probably fix) statements. + +2004-11-03 +KexiSQLite 2, 3 +- crashes fixed for architectures where sizeof(char*) != 4 +Core +- Property, PropertyBuffer: some methods made explicity inline +- warnings added when trying to set a value to a null property + or when property not found. Setting value to null property disabled) +TableView +- in KexiTableView::acceptEditor(): + there might be called cancelEditor() in updateRowEditBuffer() handler, + if this is true, d->pEditor is NULL. So we're checking + d->pEditor and calling startEditCurrentCell() only if it's present +- Empty row is appended on row deletion when 'spreadsheet mode' is on. +- fixed setting row numbers in record navigator for empty data sets +- fixed editing large FP numbers (removed scientific mode) +SQL Parser +- added Date/DateTime/Time types support to ConstExpr + (parser does not operate on these constants yet) +Query Designer +- added support for Date/DateTime/Time criterias +Table Designer +- some properties are hidden for KEXI_NO_UNFINISHED +Main +- BUG: 89381 proposed fix, please test +- Browser: added override for Key_Delete (items removing) +KexiDB +- DriverBehaviour: QString AUTO_INCREMENT_PK_FIELD_OPTION and + bool AUTO_INCREMENT_REQUIRES_PK added. This fixes problem with + pgsql sequences. +- Connection: +--fixed generationg 'create table' statements. +--added drv_dropTable(), drv_alterTableName(). + +2004-11-02 +Main +- fixes for kexi__parts +Query Designer +- fixed adding fields by entering column names by hand +- entering (simple) criteria now is working +KexiDB +- DriverBehaviour: SELECT_1_SUBQUERY_SUPPORTED added, + used in Connection::resultExists() +Forms +- on failed saving new form's data, all saving is rolled back +- fixed saving form data for mysql (and probably pgsql) + +2004-10-29 +Query Designer +- fixed focusing +Table View +- fixes for combo box + +===================== Kexi 0.1 Beta 5 "Halloween" ===================== + +2004-10-27 +Kexi +- a little speedup: QValueList::Iterator changed to QValueList::ConstIterator +TableView +- never-ending-story: fixed repaint of "insert row" for empty tables; + fixed setting contents size based on tableSize() on table view creation + (delayed slotUpdate() is used) +- setBottomMarginInternal() added e.g. for popups +- Appearance class introduced: defines table view's detailed appearance settings +- "row highlighting" option added, comboboxpopup uses it +- fixed doubled empty row inserting (edit_insert_empty_row action) +- ensureCellVisible() fixed when record navigator is hidden +- many improvements in combo box editor and popup +Query Designer +- "*" are better handled on schema building + +2004-10-25..26 +- defines moved from Makefile.global +- minor compile fixes and some warnings removed +I18N +- pl translation updated +Forms +- fixed crash in connection editor +TableView +- datatimeedit hack disabled for !win32 +- "edit_clear_table" action added +- KexiTableViewDataBase made protected in KexiTableViewData for safety +- on row inserting, enable "next" button +- record navigator +-- now takes full width, painting fixed +-- update width when number of digits in rows counter changes +Main +- preferences and configureToolbars actions ifdefed using KEXI_SHOW_UNIMPLEMENTED +Plugins +- Default implementation of Part::remove() added again. + This is enough eg. for Form plugin. +- table and query plugin: Connection::eemoveObject() is called even + if object's could not be loaded, what allows to remove invalid objects. + +2004-10-22 +TableView +- KexiDateTimeTableEdit, KexiTimeTableEdit implemented +Table Designer +- BLOB types ifdefed using KEXI_SHOW_UNIMPLEMENTED +KexiDB +- DriverManager does not list derver-based projects + when KEXI_SERVER_SUPPORT is undefined +Startup +- added error message when explicity provided db driver name not found + +2004-10-21 +Core +- shared action's "enabler" introduced +Startup +- KexiStartupFileDialog: filename handling fixed for win32; fixed focusing +- avoid asking for conversion when '--dbdriver sqlite2' + or '--createdb' CL option is present +TableView +- highlighting for int and float types fixed +- fixed initializing for date picker +- added 'datetime' and 'time' types support +- adding empty rows when possible also for db-aware table views + (ie. RowEditoBuffer can be empty on insert) +- it's now allowed to click "+" button in record navigator to insert rows + (current editing is accepted) +- on failed row insert/update, user is informed + about "data_cancel_row_changes" action availability +- on invalid value entered in a cell (after a msg box is closed), + the cell's editor is focused again +Compile-time switches +- KEXI_STARTUP_SHOW_TEMPLATES, KEXI_STARTUP_SHOW_RECENT, + KEXI_SERVER_SUPPORT, KEXI_FORMS_SUPPORT added (currently all enabled by default) +Main +- copy/paste/cut on navigator items enabled only for KEXI_SHOW_UNIMPLEMENTED +- toolbars redesigned: now "design" toolbar is for kexipart's design view + and "data" is for data view. This avoids toolbars duplication. +- propeditor dock window is hidden when a window in data view mode is active + (or no window is present). This feature is partially disabled + (using PROPEDITOR_VISIBILITY_CHANGES), though, + --REENABLE when blinking and dock width changes will be removed in KMDI +- "data_cancel_row_changes" action added +KexiDB +- FORMAT CHANGED: SQLite Driver: 'date', 'datetime' and 'time' + types support fixed: Qt::ISODate format is used +- FieldList: simple methods made inline; fixed bug in hasField() +- findRef() instead of find() used in few places for speedup +- a hack needed because QVariant(QTime) has broken isNull(): + Internally: null time value is now null QDateTime(), not-null time value + is now QDateTime(QDate(0,1,2),time); This allows to store 00:00:00 times. + See also stringToHackedQTime(const QString& s). +Table Designer +- "tablepart_toggle_pkey" action temporary removed from toolbar + (will be re-added after shared toggle actions fix); +- "tablepart_toggle_pkey" action added to popup menu and to Edit menu + + +2004-10-20 +Main +- "file_open" and "file_new" actions now start a new process + for creating/opening database, if needed. +- KEXI_SHOW_UNIMPLEMENTED macro added +KexiDB Parser +- fixed handling large integer constants +Table Designer +- primary-key-fields: BigInteger type is enforced; subtypes are hidden +Kexi Properties +- KexiPropertyEditor::setBuffer() can be now safely called even from + KexiPropertyBuffer::propertyChanged() signal handlers (refreshing is delayed). +Core +- KexiViewBase::propertyBufferReloaded(): bool preservePrevSelection added + +2004-10-19 +Main +- "delete_row" action shortcut is now CTRL+Delete, to avoid conflict with edit_cut (Shift Delete) +- fixes for KexiBrowser +TableView +- KexiComboBoxTableEdit improved +- KexiTableViewColumn: try harder to get a column name +Startup +- --password option removed +- --create-opendb CL option added + +2004-10-18 +KexiDB Parser, KexiDB +- Field::Type type() introduced for expression classes +- type(): integer subtypes (Integer, BigInteger, ..) + are detected for int constants; the same for strings +- Field::type(): If there's expression assigned, + type of the expression is returned instead. +- Field::Type::Null added +Query View +- Expressions are now displayed, with header names +Core +- KexiDialogBase::activate() -another focus-related fix + +2004-10-16 +Core +- KexiSharedActionConnector introduced +SQL Editor +- double clicking on a history item selects it for editing + +2004-10-15 +- small speedup for Kexi global objects on startup +- fixes for KexiStartupFileDialog +- tests/newapi is compield by default. Other tests disabled. +Core, Plugins +- SPEEDUP OF STARTUP: + Part::initActions() splitted to Part::initPartActions() (default one) + and Part::initInstanceActions() (lazy one) +Kexi +- name argument is now passed to KGenericFactory to avoid runtime warnings +KexiDB Parser, KexiDB +- Expression: +-- former type renamed to token +-- 'type' member added; typechecks added to validate() +- more SQL statements are supported + +2004-10-14 +Kexi +- more debug areas added +- KexiStartupFileDialog wrapped for win32 again +TODO: move some things to kdeui/win32 +KexiDB Parser, KexiDB +- WHERE expression is supported +- operators like "IS SIMILAR TO" and "IS NOT NULL" better supported +- brackets better supported +- both <> and != supported + +2004-10-11 +Parser: +- ER004 supported + +2004-10-09 +Kexi Startup +- ksqlite2to3 script added for unices. It's used instead of two QProcesses. +- ksqlite2: -verbose-dump added for ksqlite2to3 + +2004-10-06 +3rd Party +- kexisql migrated to SQLite 3.0.7 (new kexisql3/ directory added); + former libkexisql is now libkexisql2 (updated to 2.8.15, by the way) +KexiDB Drivers +- "SQLite3" driver introduced. "SQLite" driver is now removed; + use "SQLite2" driver for comaptibility. +KexiDB +- static QString Driver::defaultFileBasedDriverMimeType() + and static QString Driver::defaultFileBasedDriverName() added, + so let's don't compare driver names against "sqlite" string when looking for default. +Startup +- sqlite version is now autodetected on startup +- sqlite2 to sqlite3 format autoconversion added (with progress dialog) + +2004-10-04 +- command line options added: --user (-u), --port, + --host (-h), --password, --local-socket +- password can be now entered using dialog, if it's a server-based conn. + +2004-10-01..02 +Kexi Startup +- server-based (mysql, postgresql) projects are now available from command line + (usable since gui is not yet ready): + --createdb, --dropdb, --dbdriver command line options added +- db creation and dropping from command line works without starting entire gui + see http://www.kexi-project.org/wiki/wikiview/index.php?CommandLineOptions +Core +- KexiMessageHandler introduced: receives messages e.g. from KexiProject +- KexiGUIMessageHandler added +KexiDB +- improved error handling +MySQL Driver +- MySqlConnectionInternal added (like for SQLite) +General +- KMessageBox::warning**() used instead of question**() for dangerous messages. +- 'tristate' helper class introduced. This reduces a need for adding + bool& cancelled parameters. +- tristate class used where possible instead of 'bool& cancel' params + +2004-09-29 +2004-09-30 +SQL Parser highly improved +- reduce/reduce conflicts solved: operators in expressions have now 9 valid precedence levels +- expressions are now parsed quite well: e.g. identifier checking is recursive +- better debugging +- ParseInfo introduced: Data used on parsing +- invalid use of reserver keywords are now detected: + '"KEYWORD" is reserved keyword: identifier was expected' message is now returned + instead of dumb "syntax error" +KexiDB +- Field: expressions are better supported +- Connection: expressions are visible in selectStatement() + +2004-09-28 +KexiDB +- Field: documentation added +Kexi +- ConstIterators used where possible + +2004-09-27 +SQL Parser +- ER102, ER103, OK104 SQL Issues resolved (see statements.txt) +- several bugfixes + +2004-09-17 +KexiDB +- Connection::selectStatement(): alias is used insetead of table name, + if available +- QuerySchema: 'index' term replaced by 'position' ; insertField(), addField() + overloads added allowing tables binding by position; addTable() now allows + to specify table alias; tablePositionForAlias(), tablePositions() added; + many docs and examples added +SQL Parser +- many improvements and checks: + -- ERR: there's no "persons" table in this query (alias "p" covers it) + select persons.id from persons p; + -- alias "p" for table "persons" is used + select p.id from persons p; + -- multiple aliases for the same table + select persons.id from persons, persons p, persons p2 + + +2004-09-15..16 +SQL Parser +- select statements are now parser in more functional way, instead + of using global pointers. This enables nested statements in the future. +- field alias support fixed +- table alias support added +KexiDB +- (API CHANGED) QuerySchema: +--"Field" in isFieldVisible(), setFieldVisible() renamed to "Column" +--alias() renamed to columnAlias(), and so on +--Table aliases are now supported: tableAlias() added, and so on +--QueryFieldInfo class renamed to QueryColumnInfo + +2004-09-14 +TableView +- hack added for KDownArrowPushButton for drawing with thinkeramik style. +- convenient ctor added for KexiTableViewData +KexiDB +- Driver::escapeIdentifier() : "" are only added if there is a space inside the name. + This keeps SQL statements more readable, especially in SQL View. +- DriverBehaviour::QUOTATION_MARKS_FOR_IDENTIFIER added +- Driver::drv_escapeIdentifier() added: + This method is used by escapeIdentifier(). + Implement escaping for any character like " or ' as your + database engine requires. Do not append or prepend any quotation + marks characters - it is automatically done by escapeIdentifier() using + DriverBehaviour::QUOTATION_MARKS_FOR_IDENTIFIER. +Parser +- tokens like '123abc' are now reported as invalid by lexer to parser + + +2004-08-25 +Core +- KexiSharedActionHost::invalidateSharedActions(QObject *o) + if o is not KexiDialogBase or its child, + only invalidate actions if these come from mainwindow's KActionCollection + (thus part-actions are untouched when the focus is e.g. in the Property Editor. +- KexiViewBase::setDirty() -do not signal 'dirty' flag's changes if no change +- ObjectStatus now also stores related KexiDB::Obeject's, for more verbose errors +KexiDB +- Field::isAutoIncrementEnabled() added + some checks for 'autoincrement' flag +- fixed saving SQL statements for possible later error messages. + Object class now also better handles previous server error messages and numbers. +- KexiDB::getHTMLErrorMesage() improved, it's more verbose in certain cases +- Driver::escapeIdentifier() added; used in Connection in every place + where SQL statements are generated. Thanks to Martin Ellis. +CC_MAIL: m.a.ellis@ncl.ac.uk +TableView +- "yes" button for "do you want to delete row?" dlg has "Delete row" text + (as KDE HIG requires) +- cell-cursor's is position not reset after initDataContents() on show() + if it was set before KexiTableView widget showing. +Table Designer +- many validations added related to primary key and autonumber properties +- On table creation (or altering), if there is no primary key, user is asked + if it should be added (automatically). + Useful setting "dont show this again" added for this as well. + + +2004-08-24 +Table View +- redraw fixed -very special case: If you're during editing a new row, and click + on last (empty) row, and your newly entered row has no data in its cells, + (what ends up with cancelRowEdit()), cursor is now moved one line up. +- unknown, non-printable key events are not ignored now, but passed to superclass; + this e.g. fixes blocking ESC key in dialogs +- fixed setting cursor on row removing +Kexi Properties, Property Editor +- icon added as optional property member +Form Designer +- Connection editor implementation cleaned a bit (bug #44) +Table Designer +- "autonumber" property is now visible +- icons added to propertybuffer +Form Module +- kexidbwidgets.so ported to win32 + +2004-08-23 +Table Designer +- fixed code because of new column has been prepended +KexiDB +- KexiDB::Field::Type defaultTypeForGroup(KexiDB::Field::TypeGroup typeGroup) + added and used in Table Designer. +- KexiDB::idForObjectName() convenience function added +Table View +- fixed methods for 'visible' flag in KexiTableViewColumn + +2004-08-21 +Table View +- Key_Left, Key_Right now by default behaves like Key_BackTab, Key_Tab +- KexiTableViewData::deleteRows(): refresh is requested only + if at least one row has been removed. This also magically fixed + a bug with missing vheaders in the Query Designer :) +Main Window +- opening object: if object is already opened but in other view, + its activated and switchToViewMode() is simply called. + This fixes switching GUIClient for "design" action called from the Navigator. +- Kexi::ViewMode is repaced with int type in most places + to ease future extensibility. + +2004-08-20 +KexiDB, Table View +- Kexi now supports and shows autonumber (sequences) column, see + http://www.iidea.pl/~js/kexi/shots/beta5/unicode_chars_and_autonumber.png +Table View +- autoincremented field can be omitted (left as null or empty) + if we're inserting a new row +- fixed displaying "autonumber" cell on row inserting +- row editing is accepted on sorting +- on failed sorting, sort indicator is reverted +- Key_Tab, Key_BackTab work again; + skipping to next/previous row added +- when the user doubleclicks on the edge (handle) + of horizontal header's section, column's width + is adjusted to widest cell size +Table Designer +- before switching to design view, row editing is accepted +Main +- PropertyEditor/FontSize setting is now stored + +2004-08-19 +KexiDB +- DriverPrivate added to avoid binary incompatibilities +- driver (QCString keys, QVariant values) properties added + (some prdefined properties added as well) +Table View +- optimizations in KexiTableViewData::saveRow() +New API Tests +- "dr_prop" test added +SQLITE Driver +- Kexi file driver now supports UTF8 storage for text fields +Shared Actions +- data_sort_az, data_sort_za, data_filter actions are now shared & volatile, + KexiTableView and KexiDataTable now use these + +2004-08-17..18 +Core +- added KexiViewBase::setAvailable() overload. This one and sharedAction() + now call parent's method, when needed. +- Shared actions: some fixes for plugging/unplugging +KexiBrowser +- "rename" action is now shared as "edit_edititem" action +KexiTableView +- "start edit" action (for F2/Enter key) is now shared + as "edit_edititem" action +- KexiKIconTableEdit introduced: Cell editor for displaying kde icon + (using icon name provided as string). +- TableViewHeader (inherits QHeader) introduced: supports tooltips + when needed (for column description of if column is not wide enough) +KexiTableView ComboBox +- QStyle primitives are better used for drawing combo button +- button is depressed after popup hidding +Table Designer +- "tablepart_toggle_pkey" shared action added for design view +- "Not empty" field's property is now called "Allow Zero Size" + (and has opposite meaning) +- 1st column with "key" icon (for pkey) added (using KexiKIconTableEdit) +KexiDB +- QString Field::subType() added +- QuerySchema::autoIncrementFields() fixed (caused crash sometimes) + +2004-08-06 +Table Designer +- some rules added: e.g. setting 'indexed' property to false clears 'primaryKey'; + setting 'primaryKey' to true sets 'indexed', 'unique', etc. to true +Core +- KexiProperty, KexiPropertyBuffer: some operators added, operator [QCString] now + returns KexiProperty, convenient operator = (QVariant) added; KexiProperty::null added +TODO: KexiProperty: add support for positive integers, "Auto" values e.g. for integer ==0 + like defined in QSpinBox. Reuse this in PropIntSpinBox. + +2004-08-05 +PropertyEditor +- Bool Editor: toggle button has now without ugly focus (space key still works) +- KexiPropertySubEditor:setWidget() focus proxy is set only if the widget has + non-zero focus policy. +- [+][-] branch box is better positioned; treeStepSize is now narrower +- font size is decreased to a reasonable minimum +Core +- generateIconSetWithStar() not used, static icons added insted (icon cache was confused) +MainWindow +- right dock width is now stored in config file + +2004-08-04 +MySQL Driver +- introduced again! thanks to Martin Ellis +CC_MAIL: m.a.ellis@ncl.ac.uk +KexiDB +- alterTable() added (now only drops and recreates table) +- createTable() 'zombie' rows from 'kexi__fields' table is removed for safety +- Connection::storeObjectSchemaData() identifier is not obtained if + it's already provided +- DriverManagerInternal::aboutDelete() added: called from Driver dtor + (because sometimes KLibrary is destroyed before DriverManagerInternal) +- DriverBehaviour::ROW_ID_FIELD_RETURNS_LAST_AUTOINCREMENTED_VALUE added + True if the value (fetched from field (or function) + defined by ROW_ID_FIELD_NAME member) is EXACTLY the value if autoincremented field, + not just an implicit (internal) row number. Default value is false. + --used in Connection::lastInsertedAutoIncValue() +Table Designer +- saving changes to tables works now (data is just dropped, though); + user is warned about this, when needed +- DataTable view is updated after saving table's design +- temporary data added; KexiAlterTable_DataView implemented + (this fixes lack of updating datatable view after schema changes) + +2004-07-28..2004-08-03 +KexiDB +- ProjectDB FORMAT CHANGED (remains backward compatible): +- kexi__query* tables removed (to complicated, not needed since we + are primarily using kexi__objectdata and xml) +- Driver::IgnoreTransactions flag added: transactions are silently bypassed, + (temporary, useful for current mysql driver implementation) +- Query Schema: QueryFieldInfo introduced: + "select a as one, a as two from table" is now possible + (two different aliases for the same field); + this also maintains field visibility. +- Most needed expression classes added (BaseExpr-derived) +- most debugs removed +- more debugString() methods added for few classes +- FieldList: removeField(), insertField() (at position) implemented + addField() now uses insertField() +KexiDB/parser +- 'bison -dv' used instead of yacc +- single-char tokens are now used as chars: symbols are dropped for better + code readability +- more safe and readable code: $$ is now used instead of changing global variables +- realType added +- loadDataBlock(), storeDataBlock(), removeDataBlock() moved to Connection class +- Connection::querySchema() methods now use parser +- Connection::createTable() now also allows table replacing +- Connection::storeObjectSchemaData() now reuses schema's id if > 0 +NEWAPI Test +- now KCmdLineOptions are used, see README +- "parser" test added +KexiTableView +- KexiTableViewPropertyBuffer: a fix for maintaining `dirty' flag +- updates for QueryFieldInfo +- compiler warnings removed +Core, Widget, Plugins +- updates for QueryFieldInfo +- compiler warnings removed + +2004-07-24 +Form Designer +- added icons for ajust/align icons + +2004-07-23 +Core +- KexiViewBase::removeDataBlock() and KexiDialogBase::removeDataBlock() added. +- more error messages added +Main +- Startup dialog re-enabled +KexiDB +- Utils: most smaller functions are now inline +- optimizations: + * Connection::querySingleRecord(), querySingleString(): + " LIMIT 1" is added to the statement + * Connection::resultExists(): "SELECT 1 FROM (<statement>) LIMIT 1" + statement is executed + * Connection::resultCount() added: "SELECT COUNT() FROM (<statement>)" + statement is executed +- Cursor::open(): sets error message when needed +Query Designer +- KexiQueryView: shows error on failed execution + +2004-07-22 +Main +- Kexi Browser: "create new" action added to browser's mini-toolbar; + icons for particular "create" actions are generated in a funny way +- "project_new" and "project_open" actions removed from the main toolbar + +2004-07-20..21 +Kexi Browser +- "rename object" action added (inline editor uses IdentifierValidator) +- popup menu for group nodes now have a title +Core +- KexiProject, KexiPart supports object renaming +- KexiProject::removeObject() and KexiProject::renameObject() + now operate within transaction. +- KexiProject: more error mesages added. +KexiDB +- Connection::drv_executeSQL() is now protected. Connection::executeSQL() public + method added which remembers last executed sql statement for better error handling. +Main +- KexiBrowser: After item's successful rename, it's resorted, + and if it's dialog is opened, it's caption is updated as well. + +2004-07-19 +Kexi +- We've now --final-mode and --design-mode CL-options for completness. +KexiCore, KexiMain +- KexiStartupHandler introduced: handles startup actions, that + are new performed independently from Main Window's stuff. + We're now prepared to having 'startup mode' + database's property, which can be overriden by --final-* CL-options. +Form Designer +- A small fix to reduce widget flickering on resizing: + when we're dragging left, top-left or top + handle, both size and position of widget changes. We're now hiding + the widget and showing it again after transformation. + +2004-07-16 +Form Designer +- some strings fixed + +===================== Kexi 0.1 Beta 4 "FireDuck" ===================== + +2004-07-15 +Forms +- form's initial sizeHint is now hardcoded to (400,300), will be fixed later +Query Designer +- saving existing queries work in SQL View +Core +- after successful storeData() or storeNewData(): 'dirty' flag is cleared + for _every_ dialog's view + +2004-07-14 +Kexi +- polish translation updated (also for KFormDesigner) +Core +- "current mode" member is now reverted if afterSwitchFrom() failed +- removed one (I hope unnecessary?) shared-action invalidation +- storeNewData() and storeData() new have 'bool &cancel' parameter +Query Designer +- storing and mode switching fixed +- KexiQueryDesignerSQLView::storeNewData(): + we won't store query layout: it is recreated 'by hand' in GUI Query Editor +Table Designer +- temporary behaviour: altering data is cancelled +- fixed switching between Data and Design view + +2004-07-12..13 +KexiDB +- Connection: selectStatement(): "SELECT FROM ..." queries (ie. without columns) + are allowed (needed for desiger); omitting "FROM" allowed +KexiDB/Parser +- "SELECT FROM " rule added +Core +- KexiPart::Part::openInstance(): now virtual KexiDialogBase::loadSchemaData() is called + what allows to reimplement stored schema data loading (reimpelemnted for queries) +- KexiDialogBase::dirty() now is true if any view is dirty +KexiTableView +- If ensureCellVisible() is called before table view is visible, it's (col,row) arguments are + stored and ensureCellVisible() is called just after show event. This fixes invalid scrolling. +Query editor, Table Editor +- storage/ loading/ view switching/ dirty flag updating - improved + +2004-07-10 +TableView +- "edit_delete" action is disabled for read-only tables + +2004-07-09 +KexiDB +- It's possible to define relationships for QuerySchema + (with Relationship objects) +- Connection: optimization: QString::reserve() used + before generationg SQL statements +- Connection::selectStatement() now generates joining rules + (i.e. relationships using WHERE) +Query Designer +- joins defined by GUI are now visible in SQL View + +2004-07-08 +Query Designer +- switching between design modes improved +- on generating sql from GUI: "*" added if no fields are picked +KexiMainWindow +- neverending-story: actions availability updating fixed +TableView +- KexiTableViewPropertyBuffer: all buffers are cleared when view's + data is cleared (using clear()) +Relation Widget +- view clearing supported +Core +- KexiViewBase: 'dirty' flag is now better signaled to a dialog +KexiDB/SQL Parser +- lexer: USER_DEFINED_NAME now accepts also [0-9] (after 1st char) +- optional ';' is allowed at the end of top level statement +- dummy table is removed from query after parsing + +2004-07-07 +Core +- KexiDialogBase: Never Ending Story: Shared actions are invalidated on activate() +- ObjectStatus general purpose class introduced. KexiDialogBase now uses this + to indicate errors. +- KexiPart::Part: if newly opened dialog (KexiDialogBase) cannot display 1st view, it's closed + (via close()) and error message is set up +- KexiPart, KexiProject: + const Kexi::ObjectStatus& lastOperationStatus() added for not-kexidb errors +KexiMainWindow +- formpart is now available by default; menu for switching it off is hidden +- more errors taken from KexiProject are friendly displayed :) +Query GUI Editor +- saved layout (etc.) is loaded in afterSwitchFrom() for mode==Kexi::NoViewMode, + instead of doing it in the ctor +SQL View +- switching to other views improved: msgbox is displayed for invalid sql texts +- Intelligence Built In: we're doing our best to avoid regenerate the same +query from almost unchanged sql text + +2004-07-02..05 +XMLGUI +- Tools menu added +- undo/redo global actions added +- tolbar setup consistent with ui_standards.rc and incoming katepart +Main Window +- hack: `window' menu moved right before settings menu +Widgets +- KexiSectionHeader: adding buttons connected to actions allowed on the right hand +- Relation View: saved table widgets' geometries are better setup on loading + (fix for differences between font sizes on differens computers) +- SQL Editor: better integration with katepart's actions using new shared action's API +Core +- KexiDialogBase now has activate(), deactivate() handlers, + KexiViewBase::updateActions(bool activated) is called for a current view +- Workaround found for integrating katepart's actions with Kexi's shared actions: + - katepart KXMLGUIClient's KActions are now pluggable to KexiActionProxy + - KXMLGUIClient's KAction::enabled(bool) signals are now automatically mapped + to KexiActionProxy::setAvailable(bool) +<TODO>: introduce KexiSharedXMLGUIClient class: + ctor: KexiSharedXMLGUIClient(KexiSharedActionHost *host, KXMLGUIClient *client). + A single instance is created for particular xml file (eg. katepartui.rc) and inserted + int KexiMainWindow's internal dictionary. This GUI client will be attached when needed + (ie. when given KexiViewBase object that is activated asks for this) and detached + when not needed. + showOnlyActions(QCStringList) - declares custom action list that will only be available + In any time, no KActions will be created if these already are available globally + within KexiMainWindow. +</TODO> +SQL View +- history behaviour reverted to previous +- added "clear history" and "select this query text" buttons in KexiSectionHeader +- added popup menu with above actions + +2004-07-01 +SQL View +- kate part now better integrates its actions with kexi menus/toolbars +TODO fix it: actions, shortcuts +- 'Tools' menu added, 'Window' menu is now repositioned before 'settings' menu + +2004-06-30 +SQL View +- fully implemented history/status mode switching +- both modes work with "check SQL" action +Core +- KexiViewBase::updateActions() virt. method added for convenience + +2004-06-28 +KexiCore +- KexiViewBase now knows own view mode +SQL Parser, SQL View +- fixed error handling (syntax error is only set when no detailed error is known) +- on error: fixed jumping to proper character (even where are more lines and tabulators) +- status label's height is properly increased, when needed +- jumping to proper character impelmented also for QT_ONLY_SQL_EDITOR +- fixed crash for parsing empty SQL string +Main Window +- removed redundant MDI Mode option from View menu +Core +- some docs added +- KexiSharedActionHost::createSharedAction() : subclassName arg added + +2004-06-25 +KexiCore +- fixed switching for other mode + (formpart behaviour was really weird because of that) + +2004-06-24 +KexiCore +- Some doxygen docs added. +- Fixed activeView() when we're just switched to other view in KexiDialogBase +Widgets +- SQL Editor: now properly emits signal about text changes. +- SQL Editor: now has QT_ONLY_SQL_EDITOR compile-time option (both modes works on win32) +Utils +- Kexi::setWaitCursor(), Kexi::removeWaitCursor() -for delayed cursors added (eg. user on view opening) +KexiMain +- --edittext [<object_type>:]<object_name> C.L. option added: + like --open, but the object will\nbe opened in Text Mode +KexiDB +- Parser::query() public function added; select() is now internal +SQL Editor +- CTRL+Return shortcut; added information what to do to validate query text + +2004-06-23 +KexiCore +- Fixed focusing previously selected dialog after Kexi main window's activation +- KatePart is working on win32 as well + +2004-06-21 +KexiActionProxy +- activateSharedAction(), isAvailable() now have alsoCheckInChildren arg. +KexiDialogBase +- actions availability is invalidated on view switching +KexiPart::Part +- proper integration with SharedActionHost +- actions creating simplified with Part::createSharedAction() +- finally: initPartActions() and initInstanceActions() + replaced with single call of initActions(). + createSharedPartAction() and createSharedAction() added +Parts +- all parts code updated for API changes + +2004-06-19 +KexiTableView +- added checks if column is >=0 (this avoid crashes) +FormDesigner +- TabStopDialog: + * was badly implemented: exec() in ctor. exec() moved from ctor to + TabStopDialog::exec(Form*) method + * fixed crash: QVBoxLayout was added twice! 1st via ctor, 2nd view QLayout::addLayout() + --removed 1st +Query Designer +- kexiquerypartinstui.rc added and some actions +Core +- sql parser is now allocated in KexiProject +KexiDB +- docs greatly improved, thx Martin! +- UNSIGNED INT -> INT UNSIGNED + +2004-06-18 +Query Designer +- SQL Editor: added KexiSectionHeader +- KexiQueryDesignerSQLView -> KexiQueryDesignerSQL +- KexiQueryDesignerSQLEditor: now inherits KexiViewBase +- Double clicking on table's field in Relation View allows to auto-add this field +- KexiQueryDocument no longer used, similar KexiQueryPart::TempData is used +- switching to SQL View working again +- added warning when switching to dataview with empty design +KexiTableView +- Editor's focus position is updated (moved down) + when new row is inserted above current row +KexiDialogBase +- returning without failure when KexiViewBase::beforeSwitchTo() + returned cancel==true and success==false + +2004-06-17 +KexiTableView +- Combobox's button is now in "toggle" mode; popping up is now better hidden/shown +KexiViewBase +- storeNewData(), storeDataBlock() simplified; parts code updated for this change +Query Designer +- relations widget: geometries for tables and connection lines are now stored +- 'dirty' flag better updated + + +2004-06-15 +2004-06-16 +TableView, Alter Table +- Table Cell Editor's Focus is cleared on slotRefreshRequested() +- fixed columns recreating on data resetting for a table +TableView +- fixed inserting row (empty or dropped) +- dropping indicator line is now painted with XOR mode +- more intuitive dragging and dropping rows: dropping on bottom 1/3 row's area means + dropping below this row +- dropping after the last row is now possible +- KexiTableViewData and KexiTableViewPropertyBuffer now supports multiple + rows deletion with cost O(n). KexiTableView is updated properly for this action. +Alter Table +- afted hiding table, rows (and prop. buffers) that are connected with it are deleted + +2004-06-14 +Core/Parts +- For all parts: Instance GUI Clients are now splitted for per-view + GUI clients (switched on view switching) and common GUI client + (not switched within given dialog). + +2004-06-10 +2004-06-12 +KFormDesigner +- rectangle on widget inserting, resize handles and grid's dots: + are now painted in white XORed color on top of all other widgets +- fixed widget raising to top on clicking: also container members + are raised (eg. for tab widget) +- more guarded ptrs added; fixed crash on ObjectTree destruction +- selection rectangle is drawn unclipped now, on top of all widgets + +2004-06-09 +KexiTableViewPropertyBuffer: +- slots' connections fixed +KFormDesigner, Kexi Forms +- "pointer" action: better icon added (from Karbon); action moved to "widgets" toolbar/menu +- all "widgets" actions and "pointer" action are mutually exclusive + + +2004-05-15 +KexiDB: +- fixed bug: Connection::resultExists() now properly closes temp. cursor + +===================== Kexi 0.1 Beta 3 "United Europe" ===================== + +2004-05-08 +Form Designer: Extra widgets +- fixes for kde3.1 compatibility +- implicit deleting is cleaner than explicit + +2004-05-06 +Main Window +- Messages are displayed on failed switching to othe view. +Lucijan's stuff +- Compile fixes, will be backported + +2004-05-03 +Kexi Main Window +- Dialog dictionary is properly cleared on project close (fixed possible crash) +- Not stored dialogs are properly removed from a dictionary +Kexi Startup +- fixed possible crash due to deleting not owned connection data, deep copy is now performed + +2004-05-01 +KexiDB +- QuerySchema: 'visible' field's property is now assigned to possition, not to field pointer, + because the same field can be added more than one time to a query +- Connection::selectStatement(): only visible fields are shown +Query Designer +- executing (switching to data view mode) is working again! + +2004-04-30 +TableView: +- dropdown button position properly updated when scrollview's x-offset is non-0 +Kexi Forms +- toolbar moved from 'part-wide' area to 'part-instance' area +Reationships/Query Editor +- master/detail sides of the realtionship are swapped when correction is needed +KexiViewBase +- added possibility of disable data storing on view switching; for some cases + +[INFOSYSTEM 2004] + +~~~~~~~~~~~~~~~~ beta3 pre2 ~~~~~~~~~~~~~~~~ + +2004-04-16 +Kexi Core +- introduced KexiDialogTempData +TODO: make KexiQueryDocument inherit KexiDialogTempData +- added 'Settings->Other->Enable Forms' menu switch (off by default) +Global +- version: beta3 pre2 +- updated readme_en +- Kexi backported to KDE3.1 and Qt3.1.1 +KexiDB +- setting length is only available for Text fields +Kexi Alter Table +- 'length' property is set to 0 on changing type from Text to any other, and set to default (200) + otherwise + +2004-04-15 +Kexi Main +- KexiNameWidget, KexiNameDialog: caption is now not required; geometry fixed +- Ugly bug fixed: active window sometimes changed to + other on menu clicking or leaving dialog's focus (because KexiTableView had NoFocus policy) + +2004-04-14..15 +Table Views +- insertEmptyRow() improved +- KexiTableViewPropertyBuffer introduced +- cell editors that have no editor widgets: current internal value is now displayed +- KexiDataTableView: fixed columns double initializing +Cell Editors +- Boolean cells are now treated as other types: validation and edit buffering works +- Boolean cell editor moved to separate KexiBoolTableEdit class +- Enter key also toggles boolean editor's value +- clickedOnContents() added -allows to toggle value without using + editor widget (used in boolean cells) +- hasFocusableWidget() added -allows cell editors that have no editor widgets (e.g. boolean type) +Query Designer +- many functional improvements +- property editor is now used, like in Alter Table Dialog (with KexiTableViewPropertyBuffer) +KexiDB +- Connection::useDatabase(): fix for non-sqlite dbases: + we're not checking for database inconsistencies when using temporary database. +- SQLite cursor: added decoding for boolean values +TODO: move this decoding somewhere to generic functions +- Connection::useDatabase() : kexiCompatible param. added to allow using native dbases + +2004-04-13 +Forms +- linkage fixes for win32 +- some null-checks added +- widget deletion is now delayed (because of problems with qt/win32 events) +Table Views +- KexiTableView::maximizeColumnsWidth() added +Relations Editor +- Combo box is updated on table hidding +- popup menu titles added +Query Designer +- columns' data is better updated + +2004-04-06..08 +KexiDB + - Reference class renamed to Relationship, documentation improved + - QuerySchema: added 'field visibility' flag +Table Views + - added 'column visibility' flag, inherited from QuerySchema's 'field visibility' + - many sanity checks added usable when data is destroyed + - added possibility of disabling vertical scrollbar's tooltip + - table can be refreshed if data model changed outside of this table +Combobox Table Columns + - key-based related data in columns added as an option (still of Field::Enum type) + - flickering removed when popping up for the first time +Query Designer + - table of fields ('field' and 'table' columns) is updated a bit on table adding; + not finished though + +2004-04-05 +Kexi Alter Table + - fixed possible crash when the view is initialized with no table schema specified + (ie. for designing a new table) + - a pointer to table schema is updated after creating a new table + - compilter warnings removed +KexiDB + - names and docs in Reference class improved + - Connection: major versions of database and kexidb is are compared on useDatabase(): + errors are presented if needed + +2004-04-02 +KexiDialogBase + - beforeSwitchTo(int mode, bool &cancelled) is called also on newly created view + +2004-03-29..2004-04-01 +Kexi Query Designer Editor + - KexiSectionHeader class introduced + - section's size hind fixed +Relations widget + - asterisks added to table boxes + - asterisks are not drag&drop enabled + - hiding tables implemented (connections are removable as well) +Table View + - Temporary FIX: BLOB editors are disabled + (in KexiBlobEditorFactoryItem::createEditor()) because of unstability. +TODO: reenable this + - setData(): when the same data object is passed, tableview is just refreshed + - setDropsAtRowEnabled() added; row-droping-indicator implemented + - KexiTableView::editor(): only if ignoreMissingEditor is false (the default), + and editor cannot be instantiated, current row editing (if present) is cancelled. + Thus: Now it's possible to edit data for tables where there are cells + that have no valid editors (yet?), such as BLOB now. + - paintCell(): if there is no editor defined, just a focus box is displayed, + filled with additional grayed diagonal pattern +Table View Editors + - clicking on date table popup selects current date + - QScrollView is passed on editors creation instead of QWidget + - QScrollView::moveChild() is used for moving external widgets, instead of QWidget::move() + - fixed uninitialized leftMargin value for FP-Number editor (on win32) +Alter Table Dialog + - Temporary: 'defaultValue' property hidden- we'll show this after we + get properly working editor for QVariant +Kexi + - Welcome screen now uses html 'welcome_<locale>' fiels. + These are Temporary! Do Not Translate! +Kexi Core + - KexiPartManager is now KexiDB::Object-derived; error texts are set now + - Action Proxies: child focus is better handled + - KexiViewBase: focus change tracking and actions updating improved + +2004-03-27 +Form Editor + - buggy deleting fixed: ResizeHandleSet::Dict defined, we're using that instead + of not-fully-defined QDict<ResizeHandleSet> +Kexi + - added 'Welcome' screen with hot informations for our users + +~~~~~~~~~~~~~~~~ beta3 pre1 ~~~~~~~~~~~~~~~~ + +2004-03-26 + - pl translate updated + - some I18N_NOOP turned to i18n + - fixed crash on Relationships window closing due to lack of Part Item +KexiTableView + - "dontAskBeforeDeleteRow" config key is better + - after removing a row, all rows below are updated + - repaint of bottom few pixels (empty) area fixed when scrolling and resizing +Kexi + - "-new <object_type>" CLI option added: "Start new object design of type <object_type>" + (also convenient for everyday tests) +Main Window + - MDI mode is now stored and restored + - fixed problems with property dock window when using IDEAl mode +KMDI + - Fixed memory leak & crash: + Tab/IDEAl mode: mdiview was never destroyed but just moved out of the tab widget + - KMdiChildFrm: Mouse button press filtering is checked against every client's child, + not just client +TODO: backport this to qextmdi??? + + +2004-03-25 +KexiTableView + - adjustColumnWidthToContents(-1) now mean that all columns' width is adjusted + - after calling adjustColumnWidthToContents(), editor width is updated, if needed + - setSpreadsheetMode() added +KexiQueryDesignerGuiEditor + - spreadsheet-like mode set + - more columns added: totals & sum + +2004-03-24 +Main Window + - Wrong behaviour fixed: + after switching to other MDI mode, pointer to current dialog needs to be updated + (property editor was empty) + - previous 'view mode' toggle action is checked back properly after cancelled switch +Table View + - fixed editing initializing with 'removeOld' mode +Alter Table Dialog + - Temporary workaround: + if data is dirty and table schema was saved before --user is asked + for discarding changes. + - switching to Data Mode is cancelled if current design is empty (never saved and !dirty) +KexiDialogBase + - switchToViewMode() has now option for cancelling switching + (if user is able to cancel in any case) + - switchToViewMode() calls saveObject() on main window before switching, if needed + - KexiViewBase::afterSwitchFrom() and beforeSwitchTo() have now bool &cancelled + parameter that allows to gently cancel switching + (probably after showing some info messages) + +2004-03-23 +2004-03-24 +Core, Main Window + - Volatile Actions introduced + - Menu updating and focusing fixed +Kexi TableView, Kexi Table Data + - Empty row inserting implemented +Kexi Alter Table + - Empty row inserting action added + +2004-03-22 +Main Window + - when toggling to other view mode (using radio action) failed, action for + previous mode is toggled back. + +2004-03-19 +2004-03-20 +KEXIDB: + <KEXIDB FORMAT CHANGED TO 1.2> + - 'kexi__objectdata' table introduced: contains object's data, such as form's xml def + SCHEMA: table kexi__objectdata + o_id integer REFERENCES kexi__objects(o_id), + o_data BLOB, + o_sub_id varchar(200) + </KEXIDB FORMAT CHANGED TO 1.2> + + - Field::typeForString(typeString) Field::typeGroupForString(typeGroupString) added + - Connection::querySingleString() and Connection::resultExists() added + - KexiDB::sqlWhere() utility function added +Alter Table Dialog + - Saving field types FIXED +CORE: + - KexiDialogBase::storeDataBlock() added +Table View + - fixed row's painting for empty table that have only row "for inserting" + - vertical record marker: fixed painting during inserting 1st row + - function for inserting an empty row above the cursor added (not finished yet) +CORE: + - Shared Actions: unplugSharedAction(action_name, widget) added +Main window: + - "Insert empty row" shared action added + - Shared actions are updated on switching between dialog view modes + +2004-03-17 + -KexiProperty: fix for fix :) changes from null string to "" string (or vice-versa) are ignored + -Kexi Property editor receives signal KexiPropertyBuffer::propertyReset() + (called from KexiProperty::resetValue()) so property is property visually reseted + even on calling resetValue() either by clicking "reset" button or by hand. + +2004-03-13 + -KexiProperty: changes from null string to "" string (or vice-versa) are ignored + +2004-03-12 +Table View + -Combo box editor: cursorAtEnd() and cursorAtStart() are just used + from KexiInputTableEdit + -Some debug disabled + -setColumnWidth() added +Alter Table Dialog + -now KexiDataTable is inherited instead of using KexiTableView internally. + Thus we have actions like 'row deleting' available. + -on table schema saving: checking for duplicated field names is now case insensitive + -convenient width set for 'type' column +Kexi Data Table widget + -Added ctor for not-db-aware version; docs updated +Kexi Core + -string2identifier(): fixed bug for strings started from not alphanumeric char + -New validator added: KexiDBObjectNameValidator for checking + for 'kexi__' name violations + -KexiMultiValidator added +Main Window + -KexiNameWidget now uses multivalidator, so it's easy to add additional validations + -above is used with KexiDBObjectNameValidator to check for violating 'kexidb__' names +KexiDB + -Driver::isKexiDBSystemObjectName() static function added; isSystemObjectName() + uses this now by default + +2004-03-11 +Main Window + -fix: object's name and caption entered by user is used to create this object + -brand new objects have changed part item id --this is updated in main window's + structs as well + -in removeObject(): if object's dialog is opened -it's quietly closed before removing + -added check/hack to avoid inf. recursion between removeObject() and closeDialog() + -crash fixed: on dialog closing, it's properly removed from dictionary. +Kexi Dialogs + -'neverSaved' flag is cleared on first successful saving + -active view is 0 on its parent dialog destruction + -Dialog's docID is not just id, and inherits part item's (KexiPart::Item) identifier +Alter Table Dialog + -'name' and 'description' properties are updated on change + -on table schema saving, user is warned about: 1) duplicated field names + 2) not added fields at all; 3) fields without names +Table View: + -'removeOld' flag is passed from TV to initializer, so given editor's implementation + can decide what to do + +2004-03-10 +Table View + -Combo box editor: after new row selecting (not hightlighting) editing is accepted + -setFilteringEnabled() added +KexiDB::Field + -forgotten: Byte is numeric type, of course +Alter Table Dialog + -anyway, subtype property is always created (may be needed later) + -subtype is properly opdated on type (group) changing +Properties + -fixed possible crash + -KexiProperty: now it's possible to change a list of values (in case + of property of type 'list') +KexiViewBase + -propertyBufferReloaded() added -called whenever current + property buffer is changed that few properties are now visible + and/or few other are invisible + +2004-03-09 +Main Window : some top level polishing + -most tooltips/what's this added for actions + -'save' action now works int the current dialog context + -message about more not impelmented features added + -proper quitting and project closing + -KMainWindow::queryExit() and queryClose() impelmented instad of closeEvent() + -"Create" menu is disabled when no project is loaded + -On last dialog closing, guiclient is removed (so dead toolbar are hidden now) + -Main Window: dock windows are disabled on project closing, for sanity + -some fixes for mime data (QString -> QCString) + -part manager's part lookup can be called only once now + (refreshing will be impl. one day) + -dock windows (navigator and propeditor) are properly handled on closing/reopening projects + -opening project after closing fixed + -caption is updated on dialog data saving; after saving brand new data, + item is added to the navigator +Property Editor + -fixed crash on changing invisible properties +Alter Table Dialog + -creating new tables works partially + +2004-03-08 +Table View + -'acceptsRowEditAfterCellAccepting' flag added +Main Window + -closeDialog(), saveObject(), closeProject() methods have now 'cancelled' + parameter, so they can tell you if user just cancelled operation or there was + rather a real error. + -Duplicate names are checked on new object saving; user is prompted for unique name. + -On dialog closing: 'Dirty' flag is cleared when user discards dialog saving +KexiDB::Field + -Connection::findObjectSchemaData() added for looking for objects by type and name + -INDEXED flag added to KexiDB::Field (now you can declare field to be indexed + even without any constraint) + -More implied rules added for methods like setPrimaryKey() + -More docs added +Alter Table Dialog + -most missing field properties are now visible in property editor + -Creating new table: table schema is (almost) created using current buffers' state + +2004-03-06 +2004-03-05 +KexiDB + -'helpText' for SchemaData and Field members renamed to 'description' + -KEXIDB METADATA FORMAT CHANGED (to 1.1): + helpText renamed to description in kexi__objects table + -Connection::storeObjectSchemaData() added -can be reused mostly for object storage +Core + -string2Identifier(): now created identifier is forced to lowercase +Kexi Parts + -part item's and part info's 'mime' is now of QCString type + -structures like items dicts are now case insensitive QAsciiDict +Kexi Dialogs + -storeData() and storeNewData() methods added + -currently used KexiDB::SchemaData object is pointed by KexiDialogBase + (useful for data saving) +Kexi Views + -storeData() and storeNewData() methods added; called by parent dialog +Kexi Project + -now keeps a list of never-stored part items (on 1st saving, a given + item is moved to a list of regular part items) + -createObject() -generic method for initiating object creation on the backend; + updates item's data when necessary, etc. +Kexi Properties + -QCString is used for property name instead of QString + -structure like properties dict (in the buffer) is now case insensitive QAsciiDict +KexiMainWindow + -saveObject() added, KexiNameDialog is used for prompting for object name and caption + -user is asked for object saving on dialog closing (and thus on app closing as well) +Kexi Alter Table + -storeNewObject() and storeObject() implementation started +Main + -KexiNameWidget and KexiNameDialog utility classes + (for entering both names and caption names) implemented + +2004-03-04 +Main Window + -Both on window close and application close: User is prompted for saving + unsaved data for each "dirty" dialog. Pressing "Cancel" + -cancels application closing. + -only stored objects are added to the Navigator + -few methods move to protected + -graphical notification about 'dirty'==unsaved data ("*" sign at the right hand) + added to the names on captions, taskbar and navigator + -API for saving kexi dialog's data added, plugged to the main window +Kexi Dialogs + -currently not only dialog is activated when focus come to any of its children, + but also when any children is clicked. + -KexiViews have now 'dirty' flag and parent KexiDialog reuses that + +2004-03-03 +2004-03-02 +Kexi Dialog / View + -fixed internal view's focusing: on click on a view, dialog is activated + -focus cell is now grayed for disabled table views, not for unfocused +KexiDB + -"kexi__parts" table is now filled with default (required) parts info + automatically in Connection::createDatabase(), not somewhere outside +TODO: add version info? +Main Window + -Part type name removed MDI Taskbar buttons' captions, to save some space + -User is now asked for saving object data on dialog closing (if it's dirty) + -Not stored objects are removed from memory and gui completely, + if user won't let to save them + -Not stored objects (part instances) have now identifiers < than -1 +Kexi Views/Dialogs + -"dirty" and "neverSaved" flags added +Parts / Kexi Project + -so-called "unstoredItems" introduced, so they can initially exist in memory only + and user may want to give up, not saving them +Table View + -Fixed focus-stealing from editor problem + +2004-02-27 +Kexi Property Editor, Kexi Property Framework + -propertyChanged() signal is received from assigned property buffer, + and values are visually updated (including children) + -changeProperty() code (for checking for changes) + moved from buffer to property setValue to avoid mistakes in class usage + -property editor class now has a dict of all items, based on its names + -each KexiProperty now has a pointer to its buffer, ans uses it to emit + signals on value changes + -fixed crash on moveEditor() when called from ctor + -KexiPropertyEditor is safely updated right before PropertyBuffer destroying +Kexi Validator + -allows to define whether empty values are ok or not +Alter Table Dialog: + -'name' and 'type' columns can be empty now (that just means the row is empty) + -buffer and 'type' column is cleared when 'name' column is cleared + -row deleting works (buffer is destroyed as well) +Table View's Data + -aboutToDeleteRow() signal is emited before row deleting and rowDeleted() -after +Table View + -contents size is updated after row deleting + + +2004-02-26 +Kexi Property Editor + -leaveTheSpaceForRevertButton introduced for subeditor class. + This removes confucion when user clicks on a spinbox arrow and it suddenly + moves left. + -parent item is updated on children updates + -editor position is updated when user collapses or expands a property node + -resetting composed property value also resets all children +Kexi Property Framework + -testiong for property change: for date and datetime types we're now comparing + values using strings, because there can be miliseconds difference in a time; + strings comparison fixed for null strings + -resetValue() added to KexiProperty for convenience + -for composed properties (like Rect): + * changing property child updates parent value + * setting property unchanged (eg. on resetting) updates parent's 'changed' flag + -QSizePolicy-type property helper improved + -setValue() renamed to setChildValue() to remove messy overload + +2004-02-24 +Table View: + -KexiTableViewData is now QObject-derived + -signals like aboutToChangeCell() or rowChanged() moved from KexiTableView + to KexiTableViewData, so it'll be easier to reuse KexiTableViewData + with a forms, and easier to share common data object between views. + -It's now allowed to call acceptRowEdit() from inside of cell-accept handlers + e.g.: KexiTableViewData::aboutToChangeCell() signal + (no infinite recursion is preformed but instead: the row is saved after + cell's acception). +KexiDB: + -ResultInfo introduced + -getHTMLErrorMesage() utility method introduced + -Cursor: now pointer to connection is guarded + -Connection, Cursor: error status is cleared before performing update/delete/insert + -Connection::recentSQLString() added (useful for debugging and on-screen + error messages + -Connection: further error message fixes +Alter Table Dialog: + -after 'name' field is entered, 'type' column as automatically filled + -"newrow" property is added for each new buffer to indicate for later processing + that these buffers are for newly added fields +Properties are now indexed using case insensitive names. + +2004-02-22 +KexiDB: +-copy constructors added for classes: table schema, field list, index schema, field +Alter Table Dialog: +-all changes are made to the deep copy of the table, not to the original + +TODO: KEXIDB: copy constructors: also copy references of the index schema + +2004-02-21 +Main Window: + -buffer in the property editor is properly cleared when current dialog is changed + or there is no dialog +Table View: + -clearSelection() and field(int) methods added + -on row deleting: cursor is moved up only if we're deleted the last row + and row-inserting is not enabled + -fixed selecting row after no row was selected + -messagees are displayed on failed row updating/inserting + -CONSTRAINTS: illegal null/empty fields are checked on updating/inserting + (msg boxes are used if required) + -the cursor is moved to faulty cell's value on record update/insert error +Combo box editor: + -selection on the popup table view is cleared then no test is entered + -up/down/left/right key presing leaves the lineedit if there is no + line selected on the popup table + -improved editing convenience +KexiDB: + -isEmptyValue() generic function added for checking if a value of QVariant + is empty but not null +Alter Table Dialog: + -"data type" column declared as NOT EMPTY + + +2004-02-20 +KexiDB::Field: +-setNonEmpty() fixed +-NOT EMPTY constraint is now implied by PRIMARY KEY constraint +Table View: +-on a table cell edit accepting: violating of the following: +--NOT NULL or NOT EMPTY constraints +--validation rules (using attached KexiValidator) + so LATER this may be also used for forms +--from-editor value getting errors (d->pEditor->value()) +..is now signaled using message box +Alter Table Dialog: +-"field name" field acts like a primary key + +2004-02-19 +KFormEditor lib: +-ported to win32 +-some sanity checks added + +2004-02-18 +KexiPropertyEditor: +-font editor item: description text moved to kexiproperty::format(); added weight & italic info +-new method of column sorting: instead ascending - default order, + instead descending - alpha order +- "revert to original value" button is automatically shown when property value is changed + and becames hidden when the value is reverted to original value +KexiTableView: added new signals: +-for checking validity of curent cell, before changing +-for checking validity of curent row, before updating +-for checking validity of a new row, before inserting +In a case when checking for validity failed, row edititing/inserting +(or cell updating) is cancelled --> editor is not removed +- KexiPropertyBuffer: clear() reimplemented for proper clearing the data +- KexiValidator class introduced +KexiTableView: +-acceptEditor() returns bool, so now it's checked if we can proceed with cursor moving, etc. +-KexiValidator is used to check whether cell editing should be accepted or not. +Alter Table Dialog: +-hidden "name" property added, ident. validator is now used +-added KexiDB::RowEditBuffer* argument to aboutToUpdate and aboutToInsert signals + +2004-02-17 +- KexiDB::typeStringsForGroup() ustility function added +- KexiDB::Field: array of field type names fixed +Kexi Property Framework improved: +- properties can be nested, e.g. for Rect type there are automatically + created two properties: x and y +- pointer to a parent property is kept, if present +- all data is stored in KexiProperty and KexiPropertyBuffer, not just in GUI objects +- editoritem text for composed values (like Rectangle) now displayed properly +- reverting to default works properly for properties of type 'list' +- By default, sorting is disabled (properties are in order of insert time) +- KexiPropertyEditor: fixed value changes for prop. children + +2004-02-12 +- typeName() added to KexiPropertyBuffer +- typeString(), typeGroupString() added to KexiDB::Field +- KexiDB Utils: typeNamesForGroup() and typesForGroup() utility functions added +- KexiPropertyEditorList crash fixed for StringList type + +2004-02-10 +- Property editor is now used globally in Kexi (property buffer's change comes from active KexiView) +- Alter Table Dialog connected to global property editor +- Kexi Main Window: removed unused code +- Action for Focusing Property editor (alt+2) added +- KexiProperty and KexiPropertyBuffer classes moved to core/ + from widget/propertyeditor +- KexiProperty has now oldValue() and changed() methods -- usable + since we've global property editor + +2004-02-09 +--design command-line option added, especially useful for developers +main window: +- dock/layout/geometries settings are stored/restored (a bit better, not complete though) +- table view: update width of a combobox popup on editor's resizing + +2004-02-08 +- libkeximain introduced (by splitting libkexicore) +Main Window settings: +- main window size stored and restored before showing +- "maximized childframes" setting stored/restored + +2004-02-04 +Table view: + -Generic Cell Editor Framework introduced + -selection background painting moved to editor's implementation + -for row-selection mode: Home/End keys always move to the 1st/last row + -page up/page down actions added as methods + +ComboBox Editor improoved: + +-we're completely dropping use of regular combobox +-new layout: a lineedit + dropdown button + popup tableview, when needed +-methods used (and few added) for tableview to enable adjusting + it for use it as dropdown tv: +--hidden vtoolbar +--hidden header (on user demand, and automatically, when only one + column is visible in the dropdown tv +--hidden the context menu +--hidden the record navigator +--added and used a method for selecting entire row, not just a cell +--tv's recordset made readonly, disable inserting +--sorting disabled + + +Property Editor: + pointer to current editor is now guarded, fixed crash (on sorting) + due to uninitialized member + +2004-01-29 +-KexiDB: crash fixed for records buffering, when a value is NULL +(for some targets strdup crashes on NULLs) +-KexiDB: i18n'd names for datatype groups added, just like datatype names. + This will be used eg. in Alter Table Dialog + +2004-01-28 +- Main Window: toggle actions are checked off before disabling + +- Table View: + -fixed size of Vertical header's item (record marker) used in Table View + (now also works ok with Windows style) + -don't paint contents of edited cell - painted editor is enough + -methods added for showing/hiding vertical and horizontal header + -framework for showing cell's focus depending on editor type added to cell + editor (eg. dropdown btn for combobox) + +- Main Window: + Fixed problem with autoincremented identifier in kexi__object + table on ObjectCreation for some backends + lucijan: what about using kexiDB API, not hardcoding? + +2004-01-27 +- Combo box editor + -key events fixed + +2004-01-26 +- Table View: + -KexiCellEditorFactory and KexiCellEditorFactoryItem introduced for generalized cell + editor creation and cell painting + -now, we don't try to recreate cell editors but store one editor instance for every + column and just show/hide/move it when needed + -column width is now adjustable with adjustColumnWidthToContents() and stretchable with + setColumnStretchEnabled() + + +===================== Kexi 0.1 Beta 2 "Warsaw By Night" ===================== + +2004-01-20 +- kmdi captions fix backported to kexi_compat +- kexistartupfiledialog: we're using paths unstead urls now for better compat. + +2004-01-19 +RESIZING HELL RESOLVED +- KexiDialogBase resizing fixed for maximize state: only resize a dialog if it is in normal state +- KexiMainWindow: for dialogs in normal state: decrease dialog's height if it exceeds area contents +- KexiViewBase: + -preferred size hint introduced; + -parentDialog() convenience method added for getting view's dialog parent. + +- KexiDB::Connection: + -tableNames() return only tables that have valid names + -the same for any other objects +- actions in 'Create' menu work +- PropertyEditor has cell borders' color like this used in table view +- closing() signal added to KexiViewBase - it works like in KexiDialogBase. + Effect: table view's data is saved on closing if editing is in progress + +- table view, kexidb: after row inserting, autoincremented fields have displayed values +- query removing works +- KexiMainWindow: shared actions are disabled when no proxy is available + +2004-01-17 +- KexiDialogBase: minimum height fixed: added height of its caption +- KexiTableView: repainting of bottom contents FINALLY FIXED +- ALTER TABLE Dialog impl. started +- query part: crashes removed when no sql string defined for query; by default "visible" column is true +- relation view: + -for global db relations -all tables are shown (will be customized later) + -open table/design table actions fixed +- bool Kexi::isIdentifier(QString) added for convenience +- KexiDB: Tables and queries with invalid names (that are not valid identifiers) are skipped on lookup +- KexiProject: The same for any objects and KexiProject level + +2004-01-14 +CORE API CHANGED: +- Kexi Dialogs : view modes functionality added -- KexiViewBase, and integrated with KexiMainWindow + and KexiDialogBase +- KexiDockBase removed because if KexiViewBase existence +- If a dialog is already opened in given mode and user have dbl-clicked on the Navigator, + the dialog is not switched to other mode + +- InternalParts and dialogs without multiple modes FIXED +- KexiTableView: when cursor is moved down and navigator covers the cursor's area, + area is scrolled up. + +2004-01-13 +KexiActionProxy: + - isSupported(const char* action_name) added -returns true, if action is supported by the proxy + - isAvailable() now lookups also in the childrens actions, if actual action proxy does + not support a given action +- Relation View: + some action availability updates + +- more icon sizes added: state_sql, table; state_text added for future "text view" mode + +- KexiMainWindow: actions are invalidated more accurate on dialogs switching/closing +- KexiDialogBase: added flags t ocheck if given dialog's implementation accepts given view mode + (data/design/sql modes) +- Kexi::ViewMode introduced - view modes for kexi dialogs (i.e. data/design/sql) + +2004-01-12 +- Relation View: + - tables focusing fixed + - actions 'remove table', 'remove relation' work (not impl) + - "relation view" widget extracted and moved from relations/ plugin to widget/relations/ + (because it's used also in queries) + - KexiRelationDialog renamed to KexiRelationWidget to avoid mistakes + - actions moved from KexiRelationView up to KexiRelationDialog (simplicity) + - added new actions: "open table", "design table" +- KexiActionProxy: + new plugSharedAction() overload added for easy creating alternative action names. + +2004-01-10 +- KexiDB::Field::isIntegerType() added. Now It's easier to detect if a field is integer. +- Fixed loading and saving values of type Float or Double in database tables. +- Row updating/inserting: Fixed converting decimal symbol from locale back to db backend format + +2004-01-09 +- PartManager: Parts are sorted using definition stored in kexirc + (code taken from the old API) +- .ui files can be now translated + +2004-01-08 +- KexiInternalPart introduced (as generalized KexiRelationPart): + produces internal Kexi dialogs and widgets ON DEMAND + (so: KexiRelationPart is removed) +- Kexi Relations (widget and dialog) is now produced by KexiInternalPart +- Tables in relation view: sizes fixed + +2004-01-07 +- Build fixes for gcc2.95 on kde3.1 +- Relations View: connection and viewtable focusing fixed and some actions added + +2004-01-06 +- KexiTableView: + -rowEditStarted(int) signal is emitted when row editing is started + (for updating or inserting) + -rowEditTerminated(int) emmited when row editing is terminated + (no matter if accepted or not) + -proper availability updates for "edit_delete_row" (disabled when tv is + readonly) and "data_save_row" (enabled only on row editing) +- KexiDialogBase/KexiPart : fixed caption icons setting for dialogs created by + parts +- Shared Actions: + - KexiSharedActionHost introduced - it's "action sharing" functionality extracted from KexiMainWindow. + - global default KexiSharedActionHost added for convenience + - KexiActionProxy now uses KexiSharedActionHost as it's host instead of explicity pointed KexiMainWindow + - on destruction, KexiSharedAction object is taken out of its KexiSharedActionHost + - int KexiMainWindow::generatePrivateDocID() added, so we can use this when we want to get unique doc id +e.g. for KexiDialogBase. + - generatePrivateDocID() is used in Relations dialog + +- KexiMainWindow: fixed bug in virtual function +- KexiSharedActionHost: fixed behaviour on destruction + +-KMDI: + -caption's icon is resized on setIcon() when needed + -default icon changed to SmallIcon("filenew"), + if not found - filenew.xpm is used + +2004-01-05 +- QueryAsterisk: + -setTable() added - a must for parser to work + -debug improoved +- Connection: dropTable() added +- Query Part ported to win32 +- KexiBrowser: nice title added for popup under part item +- KexiTableView: + -navigator showing/hiding implemented + -cursor setting a bit fixed for empty view + -cell's text has now proper color for read-only column +- KMDI: fixed bad QWidget filter lookup and unsafe identifier hiding in childview's eventfilter +- kexipropertyeditor ported to win32, kexiproperty and kexipropertybuffer moved from core + +2004-01-04 +- KexiActionProxy: "action" term in methods substituted by more readable: "sharedAction" +- some actions (in browser) marked as KEXI_UNFINISHED +- KexiMainWindow: KStdActions are now also acceptable as shared actions +- copy/cut/paste actions are shared now; added to edit menu +- "relations" action reintroduced +- closing() convenient signal added to KexiDialogBase +- on Table closing - any edits that are in progress are accepted (thx to lucijan for report) +- KexiTableView: + -fixed crash while counting minimum size for columnless tableview + -preventing from crash when no data is set before constructing is finished +- KexiProject: openObject() and removeObject() added so we will be able to catch kexidb errors + +- KexiPart items are now removable! (both from GUI and db backend) +- Kexi Browser is items are removed if required +- KexiDialog: now has itemIcon() possible for reimpl. and Kexi Relation View reimpl this, since + it has no KexiPart +- Kexi Relation View: small crash fixed + +2004-01-03 +- KexiDB, core: + -ConnectionData and KexiProjectData now inherit QObject + (useful for QGuardedPtr, sharing and for notifications about changes) + -project_caption, project_desc properties are now created and stored in projects + -some utility functions added in kexidb/utils.cpp +- KexiMainWindow: application's caption now also contain current project's caption (or name) + (this also works ok for maximized windows) +- mysql driver reenabled (may not work correctly) + +- ConnectionData + -conflict with QObject fixed + -"name" member is now: "connName" + +2004-01-02 +- table view: + -in key event - we give up with executing actions that are shared with main window, because + these actions are executed at main window's level. These actions are declared using +plugSharedAction(). + -row deleting works + -rows number is updated in tv navigator after row deletion +- actions: MSA-like "Delete Record" substituted by "Delete Row" + +TODO: show posible errors (as well as for INSERTs and UPDATEs)!!! + + +2003-12-30 +** Many cleanups and behavioral fixes +- KexiMainWindow: + -focusing fixed again (now menubar doesn't grab move focus from navigator) + -shared action set is now simplified, generalized + -getlogin() used at least on win32, cause lack of KUser :) +- KexiDockBase added as a base for docked widgets hat offer shared actions. + Now it is a pair with KexiDialogBase class (both inherit KexiActionProxy). +- "Data" menu entry introduced +- KexiTableView: + -added action for current cell removing + -added popup menu + -cell focus-marker is not grayed when popup menu is executed + -Key_Space pressing fixed + -added possibility for plugging shared actions to table view (using plugSharedAction()), + e.g. "data_save_row" action, so shortcuts are properly handled + -deleting row while new row is edited just cancels editing + -vscrollbar tooltip is not visible when corliing is dont using keyboard instead of a mouse + -stranger's key events (e.g. pressing up arrow in navigator's line edit) + aren't processed by table view (in keyPressEvent()) + +2003-12-22 +- KexiTableView most keyboard events are now only accesible without key modifiers (eg. CTRL+Key_Up now +doesn't work) + +2003-12-21 +- KexiActionProxy introduced +- New terms introduced: part's gui client and part instance's gui client. + The latter is removed from main window's guifactory when part instance is deactivated + e.g. "Filter" action of tablepart is hidden when needed), + while the former is premanent in main window (e.g. "New Table" action is always visible). + +- KexiMainWindow: + -dockwidgets' (like e.g. browser) focusing on main window's activate/deactivate + and on menu bar popups - fixed. + -removed toolbar item's fileckering when we're closing one kexidialog and another kexidialog + of the same type (guiclient) has to be activated (solution: guiclients are removed not + on kexidialog closing but before activating another, it new activated dialog has different client. + +- Global Action availability updates: 1) KexiMainWindow updates its actions on dialog switching, + or even on focusing dockwidget, like e.g. browser; 2) from dialog point of view - when required, + action availiability (true/false) is signalled from currently focused dialog to main window +- Browser: popup menu re-added, (there is also example how to plug + both custom and global actions to the popup) +- Opening part instances in design mode prepared (openInstance()) + +2003-12-20 +- KexiDialogBase remembers its creator (a KexiPart::Part object) +- KMdiChildFrm's icon is scaled when needed (e.g. when detached/attached) + +- KexiPart's classes: some methods are now protected +- Toolbar buttons are now flicker-free, because gui clients are now attached + to parts instead of part instances + + +2003-12-19 +- KexiDB::Field: + -many properties of type int are now of type uint + -WIDTH property added + -NOTEMPTY property added + -canBeEmpty(), typeGroup(), isDateTimeType() added + +- KexiDBTableViewColumn merged with KexiTableViewColumn, now column properties are always reused + from KexiDB::Field's properties + +- KexiTableView: full handling of NULL or EMPTY values on editor accepting, e.g.: + * cells are displayed as empty EVEN for numeric types, if null values are allowed + * cell value is forced to NULL if empty values are not allowed (e.g.: for numeric types) + +- Updating with NULL values fixed, and it's done only when needed. +- KexiTableView editors: pressing "left arrow" key at begginning of cell's text moves + to cell on the left hand; the same for end of text+right arrow key + +- Finally: new row inserting works (no data integrity checking or warnings added though). + +- KexiTableView: cells: fixed displaying of text (and text selection) longer than cell's width +- KexiDB: + -escapeString() and valueToSQL() moved from Connection to Driver + -escaping ' and " chars fixed + +2003-12-18 +2003-12-17 +2003-12-16 +2003-12-15 +- tableview: changes in keys behaviour: + -Ctrl+home moves to 1st row, Ctrl+end - to last row, + Home -to 1st col., End -to last col. + Ctrl+Shift+home moves to 1st row and col, Ctrl+Shift+end - to last row and col, + -Key_BackTab is also used to navigate cells + -row editing improoved: buffer containing changes for current + edited row introduced (KexiDB::RowEditBuffer) +- tableview cell editors / items: + -KexiTableItem simply inherits from KexiDB::RowData + -Tab and Shift+tab, Up, Down, Home, End, etc. keys work also when cell editor is visible +- FINALLY: row editing fully working: data is updated @ the backend using KexiDB + +- keximainwindow: + -Tab key pressed on navigator activates current child window + -Mainwindow's caption now contains (for Childframe Mode) child window's caption + as the prefix if the child is attached and maximized. This works well with attaching/detaching + and deactivating child windows. + +- KMdiChildArea: 2x crash fix for childframe mode + -when KMdiChildArea::setTopChild(0) is called and m_pZ is empty, pMaximizedChild is 0 + -in KMdiChildArea::manageChild(), first - we need to take old references to childwindow + that is added to m_pZ (crash reproduction: detach one childwindow, attach it, detach again) + +-KexiDB: + -IndexSchema's pkey retrieving for loaded project -fixed + -RowEditBuffer class introduced + -Object::debugError() shows more error info + -Connection::updateRow() and Cursor::updateRow() inttroduced for row updating + -some metods goes inline + -expanded list (obtained from QuerySchema::fieldsExpanded()) + of Cursor's all query fields is cached within cursor + -FieldList - fields lookup is now case insensitive + -results of QuerySchema::fieldsExpanded() is cached inside QuerySchema + -QuerySchema::pkeyFieldsOrder(), QuerySchema::fieldsOrder() methods introduced (results are cached) + +-Drivers: + -SQLite driver updated for current API + -MySQL driver just compiles + + +2003-12-13 +- browser: focusing fixed: doesn't lose focus when clicked + +2003-12-12 +- added caching to KexiProject::items() and KexiPartInfo +- objects lookup-and-opening functionality moved from navigator (KexiBrowser) to keximainwindow +- "-open" CLO reintroduced +- KexiMainWindow: error messaging generalized a bit +- KexiTableView - editors API and behaviour improoved + +- KexiPart::Part objects are cached +- pointers to KexiPart::Item are used instead of values +- KexiStartupFileDialog's file selection works on win32 + + +2003-12-11 +- Cursor::movePrev() impl. updated +- DriverManager: result names are available for KParts::ComponentFactory::ComponentLoadingError errors + +- Detached KexiDialogBase windows now have proper icons +- KexiTableView: + - size hint and minimum size hint fixed + - better widths for text fields in navigator + - cell redrawing & colors fixed +- KexiDataTable: size hint and minimum size hint is reused from KexiTableView +- Some fixes for KMDI taskbar +- KexiInputTableEdit: + - fixed adding first char on starting edit + - numeric field == 0 is cleared on edit +- KexiDialogBase, KexiPart::Part: creating part instances and registering generalized +- KexiMainWindow: foxusing improoved, added action for focusing navigator +- KexiMainWindow: members moved to d-pointer +- KexiPart::GUIClient is created by KexiPart on demand, if GUI window available + +2003-12-10 +- KexiMainWindow: + * "show navigator" action is auto-handled by kmdi + * fixed : pointer to current xmlgui is now cleared before closing kexidialog +- KexiTableView::paintRow() fixed crash when col number was ==-1 + +2003-12-08 +- Kexi MainWindows' settings are now stored and restored: + - toolbars, docks positions + - MDI mode + - added workaround for TaskBar positioning problem + +2003-12-06 +- sources synced with win32 target, again +- Kexi:: singletons are now accessed via functions, eg. Kexi::connset() + +2003-12-03 +- KMDI modes enabled +- KexiStatusBar introduced + +2003-11-30 +- KexiDB::Field::isFPNumericType() added +- KexiTableView now entirely uses KexiDB::Field::Type for types checking, not QVariant +- KexiTableView::paintCell() simplified + +2003-11-28 +- KexiStartupDialog: existing file opening fixed (problem with autocompletion); + "accept" aborting when no filename entered +- some minor fixes and TODOs + +2003-11-25 +Finally commited again +General: +- PostgreSQL-based projects: tables are now visible in Kexi +- KexiProjectSelectorWidget for "projectopen" action reused with KexiProjectSelectorDialog +- most KexiDB errors are connected to message boxes, even driver loading failures + +- after unsuccessfull Cursor::moveFirst() eof() and bof() now return true +- '..' substituted with ".." for message strings + +- pqxx driver: + - cursor's internal transaction is now destroyed on error in drv_open() + - cursor's internal transaction has an unique name for easy debugging + +- Kexi::detectProjectData() added for detecting file type both on startup and after + filename is selected in Kexi's file dialog +- KexiPart::Manager is now shared between project sessions +- KexiPart:: classes' implementation a bit refreshed +- QValidator and helper functions for identifiers added + +- Main Window: + - "Open Existing Project" action works both for file- and server-based projects + - "New Project" action works both for file- and server-based projects + - above actions now work also after startup, from toolbar + +- KexiPart::dbAvailable signal not needed since openProject() function returns boolean + +- KexiStartupDialog: + - KexiConnSelectorWidget reused + - if single page is configured, no tabs are visible, + so KexiStartupDialog is reused for projectopen and projectnew actions + +- KexiStartupFileDialog introduced as embeddable widget, + reusable for different file types (e.g. .kexi and .kexis) +- KexiNewProjectWizard introduced for creating empty projects (both file and server based) + it will be also reused for "project templates wizards" + +2003-11-24 +2003-11-23 +- KexiDB: Connection::databaseExists() now works correctly with file-based drivers + - just file existence is checked + +- KexiDB::Connection + - creating or dropping system database is not permitted + - databaseExists(): full file paths are compared for file-based drivers +- KexiDB::Driver i18n fix, thanks for Malcolm Hunter +CCMAIL: malcolm.hunter@gmx.co.uk + +- KexiPart::Manager is now shared +- KexiPart:: classes' implementation a bit refreshed + +TODO: keep ownership properly in KexiPart namespace!!!!!! + + +2003-11-22 +2003-11-21 +- drivermanager cleanup hack +- some improovements in kexidb clases +- KexiDB: + - Driver::isSystemDatabaseName() added + - some methods converted to const + - Connection::databaseNames() now has parameter for skipping system database names + - Driver::isValid() + - now checks driver's major version and compares against kexidb library major version + - now is called on createConnection() instead of Connection::connect() so errors + can be catch earlier + - KEXIDB_DRIVER (like Q_OBJECT) in driver.h and KEXIDB_DRIVER_INFO in driver_p.h macros + introduced for ease driver development and decrease error count + + +2003-11-19 +- KexiNewProjectWizard added +- KexiStartupFileDialog convenient KFileDialog subclass added/reused + +2003-11-17 +- KexiDB: buffered cursors: the first record was shown 2 times +- KexiDB::Connection: some internal query fixes +- newapi tests: -buffered-cursors switch added, non-internal cursor for all tests + are now unbuffered by default; fixed buggy behaviour on nonsuccessful t.v. test + +2003-11-15 +- small compiler issues fixed in pqxxconnection + +2003-11-14 +- Field: inlines fixed for newer compilers +- DriverManagerInternal::slotAppQuits() used to destroy all drivers + on QApplication quit, so even if there are DriverManager's static + instances that are destroyed on program "static destruction", + drivers are not kept after QApplication death. + +2003-11-12 +2003-11-13 +- Kexi startup procedure for both files and db connections introduced +- startup dialog integrated +- projectdata redesigned +- menu items improoved, polished; e.g. Changed "File" menu entry to "Database" +- ConnectionData: + -added id for connectiondata + -some const added + +2003-11-10 +- added global kexi version info, like in koffice +- configure.in.in: added checking for qextmdi if required + +2003-11-07 +2003-11-06 +2003-11-05 +- KexiTableView: + - Navigation bar added + - cell's focus indicator frame is now also visible after focusout + - before entering to edit mode, we ensure that current cell is visible + - vscrollbar tooltip added +- Cursor: some members made private or protected +- Cursor: m_beforeFirst is probably not needed anymore; m_at==0 is enough +- Field: isNumericType(), isTextType() added, etc.; + type names are now i18n'd in an array; + some methods inlined + +TODO: void KexiTableView::cancelRowEdit() still dont repaint properly!! +TODO: update on lostfocus + +- SQLiteConnection:: sqlite_freemem() used to free error message when needed; + do the same for SQLiteCursor +- serverResult(), etc. methods aded also to Cursor class, so finer grained error + info is available + + +2003-11-04 +- Documentation added for few newer and older methods. + +2003-10-31 +- KexiDB::Cursor: many code like drv_getNextRecord() moved from SQLiteCursor down + to Cursor class + +2003-10-29 +2003-10-30 +- KexiStartupDialog added. Now, although it is project-and-connection-oriented, + it is designed to be still consistent with conventional document-driver startup + dialogs used for other KOffice apps. +- KexiProjectSelectorWidget introduced +- KexiProjectData structure added +- KexiProjectSet structure added +- Test for new KexiStartupDialog. Code written here will be reused for + "fileopen" and "filenew" Kexi actions. + +2003-10-28 +- KexiStartupDialog introduced +- KexiDB::ConnectionData: now offers (optional) driverName info +- KexiDB::Driver::Info (short usefull structure) is now offered by DriverManager +- ConnectionData::localSocketFileName optional attribute added + +2003-10-23 +- new icons for few kexi-specific contexts; +- most icons are installed into Kexi app dir + +2003-10-22 +- KexiTableView: + - sorting works again + - before sorting, row editing is cancelled + - better "ensure visible" code when scrolling on small area + - inserting rows code completed + - vheader repaint fixed + +2003-10-21 +- tests/newapi : Now all test types accept <db_name> +- KexiTableView: + - page down key also move cursor to "insert row" if one is present + - double clicking on cell (opening cell editor) fixed + - fixed cell's repaint when autoscroll is performed after clicking cell at different row + - sorting by column enabled, full set of methods added for this + - new feature: empty row is appended right after start of editing new row (like in MSA), + to allow user to move to a next row +- KexiDB driver services' properties updated: + - X-Kexi-DriverType=[File|Network] + - and X-Kexi-FileDBDriverMime (for file-based drivers only; + for sqlite it is: application/x-sqlite) + -MimeType property removed +- startup speed improoved: drivers lookup in KexiDB::DriverManager is now on demand. +- Driver name now reuses QObject::name() +- Connection::lastInsertedAutoIncValue() introduced + +2003-10-19 +- Connection::useTemporaryDatabaseIfNeeded() now is also reused + for databaseExists() and databaseNames(), so these methods work when engine + needs used any database before asking for info +- ConnectionPrivate::m_skip_databaseExists_check_in_useDatabase used + to avoid endless recursion between useDatabase() and databaseExists() + when useTemporaryDatabaseIfNeeded() is working +- Connection::setupKexiDBSystemSchema() added check to prevent creating + system tables schema more that once per connection + +- Connection: reomved default values from useDatabase() and createDatabase() + because this might be confusing to use first-found database name here; (thanks piggz!) +- FieldList: cached string == comma-separated list of fields added +- Connection: valueToSQL() overload added, insertRecord() overload added so we can omit + some fields from inserting; this is also internally used when kexi__* tables are + filled what improoves backward compatibility +- FieldList now offers lookup by field name, list of field names, it can create + subLists, usable to define list of fields for data inserting +- fixed compiler-dependent bug in insertRecord() + +2003-10-18 +- Connection: + - useTemporaryDatabaseIfNeeded() added - Because some engines need to have + opened any database before executing administrative sql statements + like "create database" or "drop database", + this method is used to use appropriate, existing database for this connection. + - above method is now used in createDatabase() and dropDatabase() if needed. + - QString anyAvailableDatabaseName() - returns name of any (e.g. first found) + database for this connection, eg. "template1" for PostgreSQL. + - DriverBehaviour::ALWAYS_AVAILABLE_DATABASE_NAME added when hardcoded value + for above is enough. + - setAvailableDatabaseName(const QString& dbName) - This is option that e.g. + application that make use of KexiDB library can set to tune connection + behaviour when it need to temporary connect to any database + in the server to do some work (e.g. DROP DATABASE). + - Connection cleaning up bug fixed a bit. + - Naming Conventions document added + - drv_isDatabaseUsed() introduced for additional state-checks + +2003-10-17 +- Driver developers should not change values of several important Connection + class members, so these are now private. + +2003-10-16 +- KexiTableView: + - maany repainting, updating, resizing improoved, code simplifications + - editing row session introduced: edits for the same row is not accepted until move to another row + This allows multiple fields editing before row editing accept. + +2003-10-15 +- missing QuerySchema::addAsterisk(QueryAsterisk *asterisk) added +- KexiTableView headers and cells repainting improoved +- for mysql driver: beh->ROW_ID_FIELD_NAME="_ROWID", is this ok? + +2003-10-14 +- DriverBehaviour::ROW_ID_FIELD_NAME added +- bool Driver::isValid() invented, it is so clever that obsolete or bad driver + can not be easily harmfull for application. +- KexiTableView and KexiDataTableView reimplemented for new KexiDB API. +- few classes renamed, e.g. KexiTableViewData is here now instead KexiTableList +- KexiTableViewData is now mostly data structure, special rows like "inserter" will be handled + by KexiTableView code. +- KexiDataTableView now uses Cursor (a bit not efficient yet). + +2003-10-13 +- Cursor has now two ways for definition: 1) use raw statement 2) use QuerySchema +- Conenction: prepareQuery() accepting QuerySchema overload added +- TableSchema::query() convenience function added +- tableview: QuerySchema is now used a bit +- QuerySchema(TableSchema* tableSchema) is created by defining + "all-tables query asterisk" (see QueryAsterisk) item. +- Connection: implemented and selectStatement() replaced queryStatement() because + not only "select" queries will be implemented. +- QuerySchema::fieldsExpanded() convenient function added to expand query asterisks +- KexiDataTableView uses QuerySchema even smarter +- kexi/kexidb/tests moved to kexi/ to avoid curcular deps + +2003-10-12 +- Connection::isDatabaseUsed() fixed +- Connection: isConnected() is substituted with isDatabaseUsed() in some cases + and checkIsDatabaseUsed() is substituted with checkConnected() in many cases. +- kexidb/tests/newapi tableview now uses KexiDataTableView +- Connection:: many overloads like queryStatement( KexiDB::QuerySchema& querySchema ) or + executeQuery( QuerySchema& query, uint cursor_options = 0 ) added +- KexiDataTableView: simplified: setDataSet() -> setData(); record -> cursor + +2003-10-11 +- Transaction::isNull() fixed +- now tables creation seems to be ok ('tests/newapi sqlite tables' works) +- sources synced again with win32 target +- kexidb/parser and kexidb/tests/parser ported to win32 +- KexiDB::Expression introduced +- isSystemObjectName() now checks for "kexi__" prefixes +- checks on create table: if name is not system, if table is not empty, if fields are not system +- KexiDB::Reference introduced +- KexiDB::IndexSchema now contains informations about multiple related Reference objects +- kexidb/tests/newapi : now tests are functions, so can be called as subtests if needed; + gui tests group added; tableview gui test introduced + +2003-10-10 +- FIX: creating kexidb system tables schema objects on useDatabase() +- KexiDB::Object::debugError() added for convenience +- Object: serverErrorMsg(), serverResult(), serverResultName(), + drv_clearServerResult() added +- virtual Q_ULLONG Connection::drv_lastInsertRowID() added - returns unique + identifier of last inserted row. +- DriverBehaviour::AUTO_INCREMENT_FIELD_OPTION added; autoinc field's option is now + used in "CREATE TABLE" statement building; bool SPECIAL_AUTO_INCREMENT_DEF added +- fixed crash on mass transactions closing during closeDatabase() +- added tables creation subtest to kexidb/tests/newapi +- SQLite* classes: last operation's result is now stored for later checking + +2003-10-09 +KexiDB::Connection: +- "select * from ..." substituted by "select <field name(s)> from ..." + where possible, so after future kexi_* tables change it will still work. +- list of internally used kexi__* tables available with new static method +- bool TableSchema::isKexiDBSystem() added for tables that are internal for KexiDB +- bool SchemaData::isNative() added for objects that are native, ie. not contain additional + metadata information. + +- Connection::destroy() instead of Connection::disconnect() should be called + from xxxxConnection subclasses. +- ~TableSchema calls Connection::removeMe() so it is removed from tables list if needed +- ordering in Field object added +- quite hacky and thus effective insertRecord() overloads added +- some schema is added to kexi__* tables on createTable() + +2003-10-07 +- KexiDB::QueryAsterisk class introduced to define select queries with asterisks, like + "staff.*" in "SELECT staff.*, cars.model from staff, cars WHERE staff.car = cars.number" + (1st ttype) or "*" in "SELECT * from staff, cars WHERE staff.car = cars.number" (2nd type) +- Query schemas storage added +- using include path returned by 'mysql_config --mysql_config' as + is instead of eating mysql suffix +- Transaction::null and isNull() added +- Connection: Simulated AutoCommit feature implemented, + createTable() added - it uses autocommit if enabled. +- Driver: DriverBehaviour member added - Detailed definition + of driver's default behaviour. + +2003-10-06 +-KexiDB::QuerySchema: + - field aliases added and checking if there is alias + - list of tables used in query added + - debug() updated + +2003-10-05 +-KexiDB:: + - fields() now offered by fieldlist + - Field::Field( ) args order fixed (compiler didn't complain..) + - TableSchema: primary idx setting added + - TableSchema: autogenerated indices are added implicity on addField() + - IndexSchema: unique flag added, primary flag is now dependend on this + +2003-10-04 +-KexiDB:: addedd better access to creating schemas + +2003-10-03 +-KexiDB:: API extended for db transactions + - Transaction is now implicity shared container for storing transaction handle, + TransactionData is used as internal driver-dependent storage + - former Transaction class is now TransactionGuard + - "default transaction" added to Conenction + - SingleTransactions, MultipleTransactions and NestedTransactions added to KexiDB::Driver::Features + - autoCommit option added to Connection (can use both driver-specific feature ans simulate), + (not fully implemented yet) + - active transactions are rolled back on database close + - heavily commented :) + - index.* moved to indexschema.* + +2003-10-02 +-KexiDB:: + - IndexSchema now inherits also from SchemaData (its additional + properties will be used at least in gui) + - IndexSchema now points to a table that contains it, not connection + - fixed owning rules for FieldList: not only TableSchema owns its fileds, + while QuerySchema, IndexSchema not + - more methods moved to const + - QueryData offers now information about its parent table + + - some record inserting introduced in Connection + - yet more methods moved to const + - KexiDB version info added (both as functions and defines) + - global definitions file added + +2003-10-01 +-KexiDB:: + - Table and query schemas now can be looked up using its id or name using Connection::tableSchema() + and Connection::querySchema() + - Connection::querySingleRecord() added for easy retrieval single (first) record + from query's result set + - Cursor::storeCurrentRecord(RecordData &data) added: Puts current record's data into data + (makes a deep copy). + - update after moving query.*, table.* file to queryschema.*, tableschema.* + - Cursor buffering-related members moved from SQLiteCursor to Cursor + - Cursor::moveFirst() fixed for buffered cursors - reopen() is now not needed + - SQLiteCursor::drv_getNextRecord() we don't try to fetch records when + we know that buffer is already fully loaded. +- Uff, It is first time since ~3 moths I can see kexi main window after kexiDB change + +2003-09-28 +- KexiDB: + - Table, Query and Index classes renamed to TableSchema, QuerySchema and IndexSchema + - query schemas storage introduced + - kexi__table 'system table' renamed to kexi__objects and for it now will be used for + storing also other types of objects, eg. queries. Some properties added to this table. + - kexi__querydata added for query schemas + - kexi__db added for storing database properties, e.g. kexidb version + +2003-09-26 +- new kexidb/newapi test added: dbcreation +- KexiDB::Connection::databaseExists() has now arg. that allows ignoring error messages (deflt) +- params for createDatabase() and useDatabase() are now optional for more convenient + use file-based drivers + +2003-09-24 +bool buffering_completed added to SQLiteCursor: true if we have already all + records stored in the buffer + +2003-09-18 +- Buffered KexiDB::Cursor type introduced, for this type KexiDB::Cursor::isBuferred() is true; + this is "test" implementation for SQLiteConnection only [INCOMPLETE]. + Cursor options introduced (Cursor::options()). Cursor's buffered flag if one these options. + Options are now optional parameters both for protected Coursor's constructor and for + Conenction::executeQuery() and Conenction::prepareQuery() +- virtual bool Connection::drv_databaseExists( const QString &dbName ) added for optional + reimplementation. It is a pair with drv_getDatabasesList(), both are used in databaseExists() now. + See comments for details. +- Connection::useDatabase(dbName) now do not allows dbName that do not exists, + while for single-db-per-connection-engines (eg. file-based engines) Connection::databaseExists() + returns true only for single db name (eventually URL). +- for file drivers: file existence checks moved to databaseExists() +- in Conenction::useDatabase(dbName): closeDatabase() is called before other database should be used, + if there already was opened database. +- Connection::drv_getDatabasesList() has now default implementation that returns empty list. +- sources in drivers/mySQL/ updated just to work with kexidb API changes +- Connection::drv_databaseExists(dbName) is now by default just checking if dbName + is on the db names list +- Some code for bufering added - forward moving with buffered cursors looks + better. + +2003-09-17 +- KexiDB::Query introduced: Table::name() and Query::name() moved to FieldList. +- Field::ListIterator FieldList::fieldsIterator(), Field::FieldList::debug() and clear() added +- ERR_CURSOR_RECORD_FETCHING added + +TODO: add +-static cursor types +-scrollable cursor types + +2003-09-16 +- KexiDB::DriverManager: driver names accepted by KexiDB::DriverManager::driver(name) + and KexiDB::DriverManager::serviceInfo(name) methods are now case insensitive. +- 3rdparty/kexisql: added files needed by win32 target +- removed kexidb/drivers/sqlite/driver directory: now we include sqlite.h from 3rdparty/kexisql/src/ +- MySqlDriver's service name is "kexidb_mysqldriver", export macro is KEXIDB_MYSQL_DRIVER_EXPORT; + win32 compilation fixed. + +2003-09-15 +- KexiDB::Cursor: + - movePrev(), bof() added; + - drv_getRecord() splitted to drv_getNextRecord(), drv_getPrevRecord() + - fieldCount() added, not fully works yet + - on open() we have always bof()==true and eof()==false + - simplification: now bof() is computed as m_at==0 + - we are internally counting records from 1 and externally from 0 + (what is visible using at()). + - m_at and thus at() has now Q_LLONG type + +2003-09-14 +- KexiDB::Object::setErrorMsg renamed to setError +- KexiDB::DriverManager is now just a container for one reference + to Internal Library's Driver Manager, so all you are expected to do is to remember + about deleting KexiDB::DriverManager instance in your app. + You can create many KexiDB::DriverManager objects. +- KexiDB lib now handles automatic deletion of drivers after last + KexiDB::DriverManager object deletion (thus refcount==0). +- tests/newapi now looks more simply at the end of main.cpp file :) +TODO: do the same with DriverManager as Driver +- KexiDB::Connection::tableSchema() updated for new KexiDB::Connection::executeQuery() semantic. +- DriverManager::self() no longer needed +TODO: add fieldCount() to Cursor + +2003-09-13 +KexiDB: +- Connection::prepareQuery() added for creating not opened cursors. +- Connection::executeQuery() now automatically opens the query with created cursor. +- Connection::destroy() convenient method added for obligatory use + in Conenction subclasses' dctors. destroy() just disconnets() and takes the Connection + object out of parent (Driver). +- SQLiteConnection updated for above requirements +- cursors and tabledefs are now deleted not in ~Connection but + on every Connection::disconnect(). +- kexidb/tests/newapi also compiles with qmake and runs on unix +TODO: add auto removing Drivers on DriverManager deletion. + +2003-09-12 +Great day for KexiDB in cvs: +- Old KexiDB moved with actual Kexi version to non-default old_db_api branch. +- Current (HEAD) now contains new kexidb/ dir for with API +- kexidb/tests/ added to cvs with one 'newapi' test + +2003-09-11 +- Index::List and Field::List are now QPrrList<Field>, so Field objects are now stored as a pointers, + no as a values. These are owned by Table objects. + +2003-09-10 +- Html Doxygen-generated docs for KexiDB module configured +- KexiDB::Index introduced - definition of single table index (1 or multi-field) +- KexiDB::FieldList introduced - list of fields; base class for KexiDB::Index, KexiDB::Table +TODO: add KexiDB::Query and use this object eg. as argument for Cursor* Connection::executeQuery() + +2003-09-09 +kexidb: +- Every Connection object stores cursors opened with it. On Connection destruction, + cursors are deleted automatically. The same with table schemas within Connection object. + QPtrDict is used for storing cursor objects. +- Every Driver object stores connection using QPtrDict, not QPtrList. +- Driver::isSystemObjectName(), Driver::isSystemFieldName() are case insensitive. + +TODO: PROPOSAL: add compile-time option for kexidb to be kde-independent. + This could be quite easy. + +2003-09-08 +kexidb: +- QStringList Driver::systemNames() is now bool Driver isSystemObjectName() + -- Checks system object names, + eg. build-in system tables that cannot be used by user, + and in most cases user even shouldn't see these. Specific for + a given driver implementation. + For SQLITE driver system object names are these with prefix "sqlite_" +- QStringList isSystemFieldName( n ) added: return true if n is a system field names, + build-in system fields that cannot be used by user, + and in most cases user even shouldn't see this. Specific for + a given driver implementation. + For SQLITE driver this has one system field name: "_ROWID_" (see CHANGELOG-Kexi-SQLITE). +- QString Connection::valueToSQL( const Field::Type ftype, QVariant& v ) + added for encoding values for sql queries +- Connection::createTableStatement(): unique, default and not null flags are now added. + +TODO: also fields with UNIQUE flags should cause KexiDB::Table to have appropriate KexiDB::Index + +2003-09-06 +- new KexiDB is stored in "kexidb" subdir, old api in "kexiDB", on win32 in "kexidb_old" +- virtual QString escapeString(const QString& str) + virtual QCString escapeString(const QCString& str) added for Connection +- Field::setDefaultValue(const QCString& d) added. Default values are stored in 'f_default Text' + field of kexi__fields table and are string-encoded there. + +2003-09-04 +- kexidb CHANGES FROM JOWENN: No ; after namespac, some d Pointers, + littlebit different includes, littlebit modified destructors + +2003-09-01 + KexiDB:: + - Cursor:: moveFirst(), moveLast(), moveNext(), eof(), at(), QVariant value(int i) +TODO: Cursor::value(int i) should use schema information to convert types of values + (now all values are strings) + - Connection::tableSchema() - returns schema of given table retrieved + using connection's system kexi__* tables + - Connection::deleteCursor() + - Driver::sqlTypeName(int id_t) - returns sql type name for given driver + - static QString Driver::defaultSQLTypeName(int id_t) - returns sql type name for given +driver + (usable when we do not have Driver instance yet) + - Table::debug() +TODO: add default value storage + +2003-08-29 +- KexiDB::Cursor class, Cursor* KexiDB::Connection::executeQuery(statement) creates cursor +- KexiDB::Connection::drv_executeSQL(): executes query \a statement, but without returning resulting + rows (used mostly for functional queries). + +2003-08-28 +- KexiDB::Transaction helper class introduced, transaction-related methods added for KexiDB::Connection. +- drv_createTable() and createTableStatement() moved up to KexiDB::Connection + +2003-08-27 +- KexiDB::Table, KexiDB::Field classes introduced. + New DB-storage design started: kexi__table, kexi__fields system tables + (for db schema storage). + +2003-07-28 +- KexiDataTableView::tableSize() removed (wasn't this unnecessary?) + +2003-07-26 +- KexiRelationViewTableContainer: width is now based on maximum width of +the field name or header name. +- KexiDataTable do not stores members like KexiDB or KexiDBRecordSet bu +uses these from KexiDataTableView. + +2003-07-25 +- KexiDialogBase now also inherits from KXMLGUIClient for easy actions management. + Do not make KXMLGUIClient subclass but just call setXMLFile() in KexiDialogBase:: subclasses' ctor + and add actions to KexiDialogBase::actionColection(). +- KexiRelationDialog: + - now uses KXMLGUIClient to better utilize its actions + - right-click context menus fully works + - 'hide selected table', 'open selected table' actions added (unimpl.), kexirelationsview.rc +added. +- Main Kexi menu bar little more standarized: 'Edit' menu added, 'View' menu moved just after Edit menu. +TODO: implement selected table hiding +TODO: implement selected table opening +TODO: add drag from browser + +2003-07-24 +- --open command line option added for automatic opening objects at startup, this will help in our + testing (see 'kexi --help' or main.cpp for details). +- KexiDialogBase got sizeHint() now that make it fit to qworkspace if it is a in-workspace window. +- virtual QString KexiProjectHandler::groupName() added that offers store plurar form of part name, + while name() offers singular form. +- KexiRelationViewTable: + - list items (fields) without icons are aligned using transparent icons; + - moving TableViews back from outside of scroll view area automatically shrinks scroll view's + area to smallest possible size + - field that we drag over now is highlighted +TODO: fix KListView::viewportPaintEvent() like in KexiRelationViewTable::drawItemHighlighter() + and commit to cvs (kdeui) +- KexiRelationViewTableContainer got now focus/unfocus/z-order functionality. Colors of table headers + are consistent with focusing and OS settings +TODO: fix connection lines painting + +2003-07-23 +- KexiTableView: + - KexiTableViewPrivate d-pointer added with "kexitableview_p.h", "kexitableview_p.cpp" + - Fixed repainting empty areas (background) in KexiTableView: QColorGroup::Base color is used. + - editableOnDoubleClick(), setEmptyAreaColor() added + - For Qt::Key_Menu key, context menu is show below the current cell, if available. +- KexiDialogBase reorganized. Now it offers more generic properties and functionality, + so subclasses can be more cleanly written and consistent with API and behaviour. +- Relations window is registered with 'kexi/relations' id, + while relations window embedded in query designer has id 'kexi/query/<query_name>/relations' +TODO: implement sizeHint() for KexiDialogBase subclasses +TODO: make open, create, delete and edit functions in KexiProjectHandlerProxy subclasses more generic + +2003-07-22 +- scrollbars enabled in KexiWorkspaceMDI + +2003-07-21 +- Kexi project 'kexi_doc' icon added, on win32 it is added to kexi.exe resources (id=1) and registered for + .kexi extension on installation. +TODO: add "New document" (empty or from template) command-line option, so it can be registered + as "shell/new" in HKCR registry key on win32. +TODO: like above: "Print" and "Print to" + +2003-07-18 +- " " prepended to Project Browsers' list items' texts for better look (maybe add this feature + to KListView or make its generic subclass?) +- Some fixes with text positioning in tableview cells: float and date type y-offset, + date type editor frames removed +TODO: maybe optionally use KDateWidget (this needs to extend and improve this class)? + QDateEdit is good enough (but this need to follow date format for locale or settings + using QDateEdit::Order, etc.). +TODO: fix KDatePicker (in kdeui): accepting with Return key or dblclick, and setting focus. +- KexiTableEdit has now QColorGroup::Base (usually: white) background +- KexiInputTableEdit has now some space on the left, so strings look better. +TODO: add default hint for columns widths, based on type of field + +2003-07-17 +- actions for Form, Kugar, Relations, Script Parts updated using KexiPartItemAction, + KexiProjectHandlerProxy::groupContextMenu() and itemContextMenu() + like in Tables and Queries' Parts +- kexikugarhandlerui.rc moved to kexi/data/ +- 'Other Licenses' submenu made in 'Help' menu, 'Report Generator Licensing' + entry moved here from Kugar Part's popup menu +TODO: move this submenu after 'Error report' Entry (requires changes to koffice_shell.rc). +- kexirc added +- added option for KexiBrowserItem to be sorted in FIFO order (top level items - by default, + others are sorted in alpha order). Visible Parts' order is now specified (by library name) + in the Kexi's main config file "kexirc" ([Parts]/Order), because KTrader sorts parts + by name in aplha order. Unspecified Parts are appended at the end of list. + This order setting is loaded and used on parts loading (KexiProject::loadHandlers()). + +2003-07-16 +- fixed registering (registerAs) for query designer's windows, + query from project browser removing fixed +- project browser's groups items (tables, queries,..) are now non-selectable + as these are rather special constant containers +- added convenient hidden(), shown() signals to KexiDialogBase +- added KexiDialogBase::plugToggleAction(KToggleAction *toggle_action) for syncing window + visibility with toggle action's state + +2003-07-15 +- Kexi/win32 synced with cvs again after plugins/ rearrangement. +- New Kexi icon updated for win32 +- menubar and popupmenu entries in Query Part merged using KexiPartItemAction (new KAction subclass); + The same for Tables Part. KexiPartPopupMenu now collaborates with KexiPartItemAction to reuse its + action's information (avoid redundancy). +TODO: add delete_item action icon (equal "button_cancel" in crystalsvg) to the koffice/actions icons +TODO: like above, add "script" icon to kexi/actions ("moc_src" is used) + +2003-07-01 +- Some table view text positions painting fixes for x11, for dbl and int type, editor's position fixed. +TODO: add left margin for cells' text (at least for x11) + +2003-06-28 +- Project Wizard: fixed align for big picture, some widgets availability fixes, +big picture moved to KexiCreateProjectPage superclass. +- KEXI_ADD_EXAMPLE_ENGINES compile-time option added: if set, example engines will be added + to the drivers list in the Project wizard + +2003-06-22 +- Alter Table Window: info about not implemented rows removal added for KEXI_NO_UNFINISHED option + Redundant label with table name removed from top of the window. + Double click in KexiTableView reenabled. + PropertyEditor and KexiTableView size hints little fixed. +- KexiTableView: now clicking outside of a grid do not activates any cell; + (crash fixed) sorting disabled while in-cell editor is visible +- "Project properties" function disabled for KEXI_NO_UNFINISHED option + +2003-06-21 +- automatically set focus inside Alter Table Window and show cursor +- fixed crash on entering data in 2nd, 3rd, etc. columns in table added during current session + (table def struct wasn't created for new table) + +2003-06-17 +([JK] - fix proposed by Jakub Kubica) +[JK]- (in kofficecore): KoMainWindow::KoMainWindow: KStdAction::configureToolbars disabled: +TODO: enable this when configure window will work +[JK]- "Settings>Configure Kexi" action temporary disabled for KEXI_NO_UNFINISHED option +TODO: reenable this! +[JK]- "Save password" in authorization page of the Project wizard removed for KEXI_NO_UNFINISHED option +TODO: reenable this! +- <ActionList name="toolbarlist"> line removed from koffice_shell.rc (this removed redundant actions) +[JK]- now, after failed db connection Project wizard do not allow moving to DB selection page +- now it's not allowed to close alter table window for a table that do not contain fields + (message box is displayed then). The same is when user try to delete table (without fields) + that is currently opened +TODO: allow the user to give up and delete this table + + +2003-06-15 +- when KEXI_NO_UNFINISHED option is set, msgbox information is presented for unimplemented actions +- kexidb: added information about if database (given by name) is considered as system db +- projectwizard: only non-system databases are visible on the db list; db icon added +- propertyeditor in altertable window has narrower 2nd column + +2003-06-14 +- inserting queries into list fixed +- added KEXI_NO_FILTER_DLG compile-time option for incomplete filter dialog in query editor +- added KEXI_NO_UNFINISHED compile-time option for disabling unfinished features +- KexiTableView::DeletionPolicy is now (mostly) used for choose KexiTableView deletion method +TODO: KexiTableView::AskDelete flag is not implemented +TODO: do the same with KexiTableView::AdditionPolicy +- auto popup menu is added for KexiTableView when KexiTableView::DeletionPolicy != NoDelete + or the same is for KexiTableView::AdditionPolicy, so no more external (e.g. in KexiDataTable) + popup menu creation is required for just addition and deletion actions. +- fixed row deletion in query designer's table view +- fixed subwindows sizes: now these are resized to the workspace size +- tableview's cells text positioning fixed, synced with editors, cells size fixed, + numeric cells' editors are now right-aligned + +2003-06-13 +- Fixed crash on altering newly created table +- (temporary fix) MySqlRecord is now always set to r-w mode +TODO: MySqlRecord: get readonly flag from the database +TODO: IMPORTANT: Kaxi must automatically add primary key it is not added by user, + or at least propose this for user before saving altered table. If given table does not conatin + a PK, then it will be readonly.(or at least removing given row wont be possible if this row + is duplicated) + CURRENT STATE: removing rows works only for table having PK +- data table window's caption fixed +- Control+Delete shortcut added for current record removing +- fixed removing vertical header item after current record removing +- KexiTableEdit now uses layout for proper displaying its Editor +TODO: KexiTableEdit shouldnt have subwidget like KLineEdit but its subclasses should + inherit also from given editor widget (eg. from KLineEdit) +TODO: KexiTableView's vertical header isn't updated after several actions +- windows now have icons == KexiProjectHandler::itemPixmap() +- normal size for relations dialog's combobox +TODO: change method for adding tables to relations +- KexiDialogBase subclasses now registers to view with + identifier == KexiProjectHandlerItem::fullIdentifier(), not caption or title +- KexiRelationDialog is now registered to view as "kexi/relations", + so relations window is unique per view +TODO: disable altering when the same table is opened for data viewing +- avoid opening both alter view and data view for the same table +- avoid creating multiple tables with the same name +TODO: other objects too: move this to common method +TODO: avoid creating/altering table with no fields + +2003-06-12 +- Table View Editor keyboard actions fixed, double type validating fixed, + fixed Enter, Delete keys, added F2 key, disabled non-printable unused keys +TODO: use QValidator everywhere here! +- after opening KexiDataTable focus is set inside automatically + +2003-06-11 +- Kexi objects have now titles - user-visible text instead low-level names + +2003-06-09 +- calling KexiView::finalizeInit() moved to KexiProject, actions for toggling +dock windows visiblity fixed, simplified code +- some icons, actions fixed +- KexiProjectHandlerItem redesign + +2003-06-05 +- relation view's fixes and redesign + +2003-06-04 +- projectWizard: double click on dbases list opens selected db +- navigator: KEXI_NO_MULTI_TABS option added for disable showing redundant tabs + +2003-05-28 +- fixed problem with project window's increased width while clicking on the + tabs; multitabbar fonts improvements; code cleanups + +2003-05-27 +- i18n-pl finished for ui and servicenames +- kexi can load and save documents + +2003-05-17 +- kexi has icon on win32 +- kexi installer + +2003-05-08 +- kexi cvs merge: + KPath removed (qt/win32 will be patched instead) +- libkexifilters added +- core/kexisettings, core/kexiworkspaceSDI kexiDB/kexidbupdaterecord ported + +2003-04-28 +- fresh cvs and win32 version merge +- kexifilter added + +2003-04-22 +- partial (example) polish l18n for GUI + +2003-04-15 +- keximysqlinterface lib. ported +- updated servicetypes/kexidbdriver.desktop installed +- mysqlinterface.desktop removed: valid is keximysqlinterface.desktop + +2003-04-12 +- libraries ported: kexipart kexihandler_form kexihandler_query kexihandler_relation + kexihandler_table kexiprojectwizard + +- Kexi running with projectwizard (no db avaliable although) + +2003-04-07 +- now Kexi has visible menu, toolbar and 'welcome' dialog + +2003-04-02 +- application's start process is simply hacked inside main() instead of inside KoApplication::start() + so, Kexi application running on screen for the first time on win32 + +2003-04-01 +- kexi runs but is invisible + +2003-03-31 +- KEXI_NO_PRINT=1 (temporary) disables printing functionality +- kexiDB/kexidb.h: KexiDBDriver *m_currentDriver moved from public slots section to private +- kexicore and kexidb libs ported +- kexi at least now compiles (but crashes) + +2003-03-28 +- first touch on Kexi sources for porting + +2002-06-23, Sunday, 00:20:36 (Lucijan) +- First Kexi commit, SVN revision #162554 + details: http://websvn.kde.org/trunk/koffice/kexi/?rev=162554 diff --git a/kexi/doc/dev/INTERESTING b/kexi/doc/dev/INTERESTING new file mode 100644 index 00000000..cbcba162 --- /dev/null +++ b/kexi/doc/dev/INTERESTING @@ -0,0 +1,29 @@ +---------------------------------------------------------- + Interesting sources of information + - projects, docs, etc. that can help in Kexi development +---------------------------------------------------------- + +2003-10-06 js + +[SQL Translator and Text RecordParser] + +from README: + SQL::Translator is a group of Perl modules that converts + vendor-specific SQL table definitions into other formats, such as + other vendor-specific SQL, ER diagrams, documentation (POD and HTML), + XML, and Class::DBI classes. The main focus of SQL::Translator is + SQL, but parsers exist for other structured data formats, including + Excel spreadsheets and arbitrarily delimited text files. Through the + separation of the code into parsers and producers with an object model + in between, it's possible to combine any parser with any producer, to + plug in custom parsers or producers, or to manipulate the parsed data + via the built-in object model. Presently only the definition parts of + SQL are handled (CREATE, ALTER), not the manipulation of data (INSERT, + UPDATE, DELETE). + +http://search.cpan.org/src/KCLARK/ + +Note: can be usefull for KexiDB develoment +to see their parsers and converters + +---------------------------------------------------------- diff --git a/kexi/doc/dev/TODO-Kexi-js b/kexi/doc/dev/TODO-Kexi-js new file mode 100644 index 00000000..5974845c --- /dev/null +++ b/kexi/doc/dev/TODO-Kexi-js @@ -0,0 +1,1098 @@ +----------------------------------------------------------------------------- + Kexi Development TODO Document + From jstaniek's Point of View + + Also includes: win32 porting and multiplatform + features, planning, improving ideas, details + + Copyright (C) 2003-2007 Jaroslaw Staniek js at iidea.pl / OpenOffice Polska + Kexi home page: http://www.kexi-project.org/ +----------------------------------------------------------------------------- + +TODO: rename KexiTabBrowser to KexiProjectWindow +TODO: rename KexiBrowser to KexiProjectListView +TODO: rename KexiBrowserItem to KexiProjectListViewItem +TODO: rename KexiDialogBase to KexiWindowBase + +TODO: Kexi can use database as only medium for storing _all_ project's data + and then can treat .kexi files as: + -just export/import format for Kexi projects + -medium for storing projects that use sqlite driver + -simply: shortcut to project stored in database + +HINT: DO NOT USE signals/slots for lowlevel data manipulation (e.g. loading data for tableviews)! + +TODO: add kexiinclude_HEADERS and kexiincludedir to Makefile.ams to install headers, see: +http://developer.kde.org/documentation/other/makefile_am_howto.html + +TODO: after kexi main window is activated again (from minimized state), + always 1st opened subwindow is activated +TODO: when editor in table cell is active: after click outside of it, editor should be closed (accepted) + +TODO: FIX: QMetaObject::findSignal:KexiQueryPart: Conflict + with KexiProjectHandler::itemListChanged(KexiProjectHandler*) in KexiView + +TODO: FIX vertical alignment in table view's cells based on corrent QFontMetrics (make tests for + different font sizes and names) + +TODO: change texts in projectwizard to more descriptive: +"Authentication" --> "Database server's user authentication" +"Database Location" --> "Database Server Location" + +TODO: [complexity=big] add command line kexi tools + +TODO: install kexi-specific icons in apps/kexi/icons not as global + +TODO(GUI): +-add "Change data source" button in project wizard +-after pressing this button, show "connections selection dialog" +-create "connections selection dialog" instead of project wizard: +--add "Always show me this advanced dialog" checkbox to connections selection dialog +--add "Set selected connection as default" checkbox to connections selection dialog +-old project wizard is now "connection wizard" (for creating new connection); + "connection" created by user stores full info needed to get databases list +-connection data is a mime type of local xml file, so it can be used to create shortcuts +-kexi project is just connection extended with providing database name and user (local) + settings for this given database +-on startup: by default offer: +--creating empty temporary db on startup with name "New database" +--creating new database using database wizard +--opening existing Kexi projects +--importing existing non-kexi databases + +FIX: corrupted database can be created sometimes (eg. for tests/newapi sqlite dbcreation) + --reason: maybe file was not flushed and app too early exited? + +<SQLITE> +from: http://web.utk.edu/~jplyon/sqlite/SQLite_optimization_FAQ.html + +TODO: +"Although SQLite parses named transactions, the names are ignored. +SQLite does not support nested transactions. If you split the SQL statements in a transaction +over several sqlite_exec() calls, you must be prepared to handle failure in each of these calls. +If a failure occurs SQLite will return a non-zero value. After that, SQLite will revert to the +default behavior of giving each SQL statement its own transaction until a new transaction is started." +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +---so: check if any sqlite_exec() failed and if so - update connection state as if rollback has been done. + +TODO: use callbacks for fetching data (to avoid data copying) +TODO: "The SQLite library includes functions sqlite_encode_binary() and sqlite_decode_binary() +in "encode.c". They can be used to safely encode binary data in a string form suitable for storing +in SQLite, and safe for use in SQL queries. These functions are an "addition" to the SQLite library. +They are not compiled into the library by default, and are not present in the precompiled binaries +distributed on the download page." + +TODO: add possibility in cursor: "Operating in-place on data returned by sqlite_get_table()" + +TODO: add custom collation using sqlite3_create_collation() for: + - non-latin1 characters + - non-latin1 characters with NOCASE option +TODO: add option for use ":memory:" special file. + - Allow to use it also e.g. for migration, etc. + - Allow to attach it as special portion of db + +TODO: Use hints coming from "Understanding The Architecture Of SQLite" slides + (optimization, etc.), http://www.sqlite.org/php2004/slides-all.html + +TODO: table merge automaton: + Imagine you have a simple database with two tables, and a third to join them as a + many-to-many relationship. Someone sends me an SQLite database as a file which has the + same structure, but the data is different. I want to merge these two databases + together keeping all of the relationships intact, without duplicating data. + + For example, if the tables were "customers" and "products" and the one in between + "orders", there is the possibility that some customers and/or products might be the + same, but with different primary keys. The problem is that since the databases were + independently created, a simple union will break the relationships since the primary + keys will overlap. + + I can think of brute force ways to do this, but I was wondering if anyone might have a + good algorithm or technique to accomplish this efficiently. + +TODO: add support for PRAGMA page_size on new db creation, + and e.g. propose default values for win32 + http://www.sqlite.org/cvstrac/wiki?p=PerformanceTuningWindows + (see also other optimization mentioned here) + +TODO: In Memory database/tables: how to load an sqlite file to be entirely fit in the memory? + clever solution: "You could set the cache size as big as your database file (via pragma). + This should load all (used) data into memory. This is probably not a good solution + if your application does not run for a longer time. " +TODO: add autovacuum support on SQLite db creation? + +TODO: use sqlite3_set_authorizer() to get fine-grained access control support +TODO: use SQLite's > 3.3.6 ability to load new SQL functions and collating sequences from shared libraries and DLLs + http://www.sqlite.org/cvstrac/wiki?p=LoadableExtensions +TODO: use Virtual Tables to get external virtual data like CSV live queries + http://www.sqlite.org/cvstrac/wiki?p=VirtualTables +TODO: use triggers to get undo/redo: http://www.sqlite.org/cvstrac/wiki?p=UndoRedo + +TODO: implement autoincrement for any field (also multiple fields) using the triggers; example: + CREATE TABLE test (a integer, b integer, txt text); + CREATE TRIGGER test_a_seq_trigger AFTER INSERT ON test FOR EACH ROW BEGIN update test set a=(ifnull((select max(a)+1 from test), 1)) where rowid=new.rowid and new.a isnull; END; + CREATE TRIGGER test_b_seq_trigger AFTER INSERT ON test FOR EACH ROW BEGIN update test set b=(ifnull((select max(b)+1 from test), 1)) where rowid=new.rowid and new.b isnull; END; + insert into test values (null, null, 'foo'); + insert into test values (null, 7, 'bar'); + insert into test values (null, null, 'text'); + a|b|txt + 1|1|foo + 2|7|bar + 3|8|text + Then, support the following grammar in KEXISQL: + CREATE TABLE test (a integer autoincrement, b integer autoincrement, txt text); + ^^^^^^^^^^^^^ ^^^^^^^^^^^^^ + +</SQLITE> + +<RENAME_PROPOSALS> +ALSO TODO: move all simple widget classes (e.g. KexiSettings, KexiTabBrowser) +from core, to more detailed dirs, +and projectWizard/ to wizards/ (there will be more wizards soon) + +</RENAME_PROPOSALS> + +TODO: +- add kexi__parts (p_id integer, p_type) table and appropriate part objects in kexi__objects + + + +MOST RECENT TODO: +- reuse recent project tab as separate window for "More projects..." menu action [difficulty: 1] +- implement contents update for "recentprojects" menu action [difficulty: 2] +- implement: drag-and-drop of the project file to the outside of Kexi, [difficulty: 2] +- saveas== saving another shortcut to a project if it is server-based [difficulty: 2] + +TODO: improve security for password information in .kexis files +TODO: for .kexis files' conenction data - if password attr. is not present - ask for password +IDEA: integrate password information in .kexis files with KWallet + + +TODO: Put Connection::dropTable() and Conenction::dropQuery() INSIDE TRANSACTION!!!!!!! + +TOP REQUESTED FEATURES LIST @ PL EXPO 2004: +- ODBC driver (hello mattr!) +- Access -> Kexi migration tool (done) +- scripting + +=== Kexi Parts TODO === +- kexipart.h: add KexiPart::AboutData : public KAboutData + and + #define KEXIPART_EXPORT_COMPONENT_FACTORY( libname, partClass, aboutData ) \ + K_EXPORT_COMPONENT_FACTORY( libname, KGenericFactory<partClass>(aboutData) ) +- add gui for viewing full part information + +=== General TODO === +- avoid using veryvery long names for objects +- IDEA: Learning module. A special optional pane which shows what commands are sent to server + for learning purposes. +- IDEA: Server-side wrapper for db connections (very simple) that allows anonymous [1] + (or any predefined group of users [2]) + -- wrapper handles connections by validating *virtual* usernames and passwords for [1] case, + or providing unique virtual user names and passwords for [2] case + -- on the server side, wrapper connects to database server (it can be available locally or remotely) + using it's private user name and password. Thus, we only need one *physical* user name and password + for multiple users. Virtual names/passwords are mapped to physical one. + This is a solution for hosted database servers where it's hard to create as many users + as actually needed. + -- Priviledges are mapped as well, and translated. By default, user A could be able to create his/her + own database and drop it. He/she couldn't be able to do the same with user's B databases, + until user B allow this. The same for creating tables, and writing data. + -- wrapper secures server from too large data sets being sent to server + (parameters need to be configurable) + -- it's all dedicated for Kexi; so it's NOT a generic wrapper for any database client. +- add "ADVANCED" find dialog: like in Mozilla Advanced Address Book Search window + +=== USABILITY TODO === +-add "Simple/Advanced Usage" global option +--for simple usage: +--use captions everywhere possible, instead of names (tables, fiels, etc.); names should be autogenerated + +=== i18n === +- plugins/forms/kexiformpart.cpp "Best Fit" instead of "To Fit" (pl=Najlepsze dopasowanie) +- KexiQueryDesignerGuiEditor::initTableColumns(): i18n("Visible") --> i18n("Column visible", "Visible") +- add comment for translators: i18n("'empty' is an adjective here", "Empty database") +-"Could rename table \"%1\" using the same name." + --> "Could NOT rename table \"%1\" using the same name." + +I am using update_kexi_po to recreate kexi.po file. THis will run cd koffice/ && make -f admin/Makefile.common package-messages + + +=== Import/Export Framework TODO === +-KEXIDB: add lower level functions like: "getting table names list", "getting table schema", + "getting index schema" + +=== Combo box editor TODO ==== +-new layout: a lineedit + dropdown button + popup tableview, when needed +-use (and add few) methods for tableview to enable adjusting it for use it as dropdown tv +--add scrolling for mouse dragging +-dropdown tv has to contain: +--QSizeGrip at the bottom corner +-in kexidb: implement combobox settings for the foreign field: +--ordered set of fields that are visible in popup tableview (ie. just query that is bound with the column) +-use multi-key relations from kexidb +- copy should handle "displayed" value, not the real one + (maybe let's use a custom clipboard mimetype? (containing a bound value) -- otherwise + it will be not posible to paste the copied value) +- fix support for query as the row source +- (forms combo) repaint (remove focus rectangle) when other widget is focused using a mouse click + +=== Table View TODO ==== +- do not accept when enterind "-" for unsigned numeric types +- add a functions for moving/cutting/copying/pasting rows +- extended support for enums (combo boxes) +- add top-left button that allow select all rows +- enable clicked vheader button to select given row +- enable column dragging +- add action "restore original column order" +- add possibility of renaming column by 1) dbl-clicking header 2) "rename column" action +- more actions (as in Format and Insert menus of MSA2k3) +- add own impl. (based on Qt) for date/time editor because: +-- no focusSection(), etc. is available in current impl. +-- frames cannot be easily removed +-store last sorting column (and type) and load it on KexiTableView::setData() + (not it's only cleared) +- replace KexiDB::RowData usage in KexiTableItem with something faster +- TODO RELATED TO CELL EDITORS: + - signal on situation when user e.g. pressed alpha key when only numeric chars is allowed + - signal when null/empty value forcell isn't permitted + - signal when repeated value isn't permitted + - add support for cut, copy & paste of cell's contents (get shortcuts from KStdAccel) +HINT: removing Qt::WStaticContents from KexiTableView ctor fixed repaint problem + the problem was with repainting when hscrollbar disapperars.... +- KexiTableView loads all data from the table: very slow and consumes a lot of memory: + (e.g. for each record with 3 fields: 1 integer, 1 text and 1 float consumed ~350B) + - ctors and dtors are WAY TOO SLOW! + - add an option: for bigger tables load only part of the table data + - optimize MySQL record size +- add focus rectangles for cells: + http://mfc.dundas.com/mfc/grid/index.aspx?section=Grid&body=focusrectangles.htm +- add more cell types & options: + http://mfc.dundas.com/mfc/grid/index.aspx?section=Grid&body=celltypes.htm + --including: red corner with a note; sliders; radio buttons +- highlight sorted column's cells slightly darker, like in current KListView's impl. +- clicking on a header section (to sort), it ensures current cell is visible, but + only y-position should be changed, not x +- add support for crossed out rows - that can be used for results of DELETE queries + (see http://www.gnome-db.org/images/screenshots/mergeant_table_data.png) +- add combo boxes for fields filtering in column headers, + as in http://www.sqlmanager.net/i/scr/mysql/manager/Main%20100.gif +- display autonumber indicator in autonumbered column(s) +- reimplement header widget to better show sorting indicators +- display tooltip over cells that are to small to display entire contents +- Add icons for conditional formatting: http://blogs.msdn.com/excel/archive/2006/05/09/594200.aspx + (displaying icons is already possible using custom properties, BTW) +- display [null] values in boolean fields, e.g. as [?] +- allow to select entire rows, columns and grids as in a spreadsheet; + offer copy/cut/paste/copy-to-file/clear for such selections +- tooltips: +-- implement tooltip manager (this will allow to create custom tooltips) +-- use if ( QApplication::isEffectEnabled( UI_AnimateTooltip ) == FALSE ||.... + as in qtooltip.cpp:564 +-- implement custom tooltip for large texts and BLOB, add "zoom" option at the bottom of the tooltip + (zooming should not show a modal dialog but rather a widget inside the TV) +-- add the same zoom option to the context menu +-- also show tooltips when the content is only partially visible +- fix horizontal scrollbar's width updating: large tables like 'tabkodypocztowe1' hide the 'last' and 'new' buttons +- display default values for BLOB types + +- add "None" option for editors supporting 3rdState, e.g. int, string (needed for "default" + property of the Table Designer) +- fix repainting cells when moving down/up arrow at the window boundaries + (weird, win32 is not affected) + +- (e.g. in table designer): in an empty row 1. drop down a type combo. 2. do not select enything an click outside + of it. 3. +- do not autoscroll vertically the contents if the current column is wider than the view + (my example: 'microsoft_terminology' table's 1st column) because the text us unreadable + valid even when we use arow keys only + +- KexiComboBoxTableEdit::createInternalEditor(): + set d->internalEditor visible and use it to enable data entering by hand + (for now only types based that use KexiInputTableEdit (Text, Integer..) allows data entry using keyboard + +- display error message on top of table view if data fetching failed + +==== ALTER TABLE TODO: ============= +-add a function for editing indices (including multi-field indices) + 2 methods: 1) in additional dock 2) in property editor +-add all missing properties (even when most are not working) +-add "index" information icon @ the left hand of line with key(s) that is/are indexed +-in propeditor: auto-sync pkey, unique, required & indexed properties on changing; + add message boxes if needed +-for 'column width' property: add 'default' value at the beginning +-propose index key (ask for name) on saving tables without index (allow to bypass this message) +- re-add "tablepart_toggle_pkey" action after shared toggle actions fix: +--when propeditor is focused, there's a problem with syncing on/off state of toolbar button + of "tablepart_toggle_pkey" action + --> altertable view doesn't receive the signal about toggling (because it's not focused) + +==== Forms TODO ==== +-add "datasheet view" to db-aware forms +-add [NewFormDefaults] option group and: +--add "autoTabStop" (bool) +^^^ implement above so Form::autoAssignTabStops() will be called before form saving + and before switching to data mode (this is already performed in FormIO::saveFormToDom(). +- add setting expressions for data-aware widget's dataSource +- add setting anonymous (not stored) queries as form's dataSource +- display "Autonumber" string for data-aware widgets +- implement shared action categories to filter out them in 'assigning actions to push buttons' +- implement "restore default properties" action for widgets +- allow form's surface resizing when there's global layout defined +- fix repainting form's surface boundaries repainting when its size is changed by entering + value in the propeditor +- fix spring behaviour: it cannot be shrinked if its inside a layout +- KTextEdit doesn't allow to set custom cursor (also in Qt Designer) +- support for multiple widgets selection in the property editor (requires changes to kexiproperty) +- handle older and newer formats in FormIO::loadFormFromDom() +- KAcceleratorManager::setNoAccel(QWidget*) - use it in data mode, + define "auto accels" form's property and if it's false +- find a way to create more meaningfull default names for widgets than button1, button2. + Maybe convert widget text (if available) using string2Identifier()? + Maybe ask user to enter meaningfull name (+"do not ask this question again" checkbox)? + See also http://charlespetzold.com/etc/DoesVisualStudioRotTheMind.html +- For newer widget types, add information for compatible widgets that + can be used instead of them. For best flexibility save this information in a form XML. + Example use: We have Kexi version N and N+1. In N+1 there's KexiFrame widget introduced that + extends QFrame with more features. Kexi N has no KexiFrame implemented but only QFrame. + When KexiFrame witget type has been encountered in the form's XML string, + Kexi N it is able to insert QFrame instead of KexiFrame (unsupported properties will be just ignored). + The result of substitution may be not accurate, so thing twice before adding such information + for a given widget type. +- add "buttonStyle" property for pushbutton widget with following values: +-- Button - the deafult +-- Hiperlink - clickable hiperlink will be displayed instead of button itself +-- Image - an clickable image will be displayed instead of button itself + For this value, aditional properties will make sense: +--- image, mouseOverImage, mouseDownImage +-- Thus, we'll have more consistent solution than MSA, which allows to + mess the form by setting hiperlinks directly also in Image box and Label widgets +- add "icon" property for pushbutton +- For "OnCLick" property: +-- allow to set hiperlink (and anchor) as value (i.e. so called "target location") + (see MSA's hiperlinkaddress, hiperlinksubaddress properties) +- frame widget: +-- add such fancy frame: http://www.themaninblue.com/writing/perspective/2004/08/05/ +- tab widget: add color property for setting particular tab +- add a Scratchpad as in QtDesigner4, allows to drag&drop widgets between forms... +- Use RESET clause for Q_PROPERTY, eg. RESET unsetPalette for paletteBackgroundColor. + Then, use bool QMetaProperty::reset ( QObject * o ) const to reset property value in the propeditor. +- Autoforms: allow to define groups of fields so the fileds can be displayed with nice groupo boxes. + (e.g. http://www.glom.org/screenshots/glom_data_details.png) + This definition shgould be made during table design, so we can reuse groupping information also in + autoreports and auto web forms. Especially usable for tables with lots of fields. + We could even define the groupping levels so top-level groups can be splitted using Tab Wigget. +- fix support for blob visible values for the combo box widget + +==== Property Editor TODO: ========= +- text does not fit well inside combobox editor +- double editor should be klineedit with doublevalidator, not spinbox +- add a hint for propertybuffer to allow properties to be displayed side-by-side + e.g. width, height properties ca be displayed this way. See also property editor + at http://freshmeat.net/screenshots/41728/ +-KexiProperty: make it really shared (using QShared?) +-for each row (property) allow to define double-click-action dependent on property type, + * e.g. bool editor: toggle true/false, + * enum editor: select next value (circularly), + * fire selection dialog for filename editor, color editor, pixmap editor, etc. + * expand children for cells of type like "Rect" + * other types- by default: just move cursor to editor +- add support for "set" types (e.g. AlignTop|AlignBottom) and port form's objpropertybuffer to this +- add "description" label on the bottom of the property editor; + it should reuse Property::description() text +- support Variant type (needs update in Editor) so Property::setValue() won't show a "INCOMPATIBLE TYPES!" warning + (needed e.g. by KexiTableDesignerView for "defaultValue" property) + +==== Query Designer TODO: ====== +- add tables dropping from the browser +- add a dialog for inserting multiple tables at a time +- fix connections drawing +- make "1" and "inf" signs a bit larger (scalable) +- 'totals' are unused yet +- update query after change in Connection cache +- for queries like 'select * from a, b, c' allow to enter * in 'table' column +--this should also work when we're recreating field rows on switching from SQL view to design view +- query part: react on KexiProject::aboutItemDelete() and KexiProject::aboutItemRename() signals +- query parameters: +-- use a special dialog with validators compatible with the field type for getting query parameters + (currently KInputDialog is used) +-- use dialog like KInputDialog::getItemList() for supporting multiple values as query parameters +- support add "PARAMETERS [prompt1] datatype1, [prompt2] datatype2;" syntax to the parser, + and add query "Query parameters" dialog/pane, allowing to order parameters that user should + provide (Ks. eksp., p. 73) +- ADDINs: a tree dialog showing query dependencies, and query templates like these http://www.4tops.com/query_tree.htm + +==== SQL Editor TODO: ===== +- intergrate editor's (KPart) actions with KexiMainWindow's Actions +- win32: katepart on win32: void KateSyntaxDocument::setupModeList (bool force) + Works slowly for the 1st time because there is no cache. + Workaround: removed most of apps/katepart/syntax/*.xml files +- win32: fix freeze on 1st char entering +- win32: fix mmap for win9x (InterlockedCompareExchange() replacement is needed + -> see kdelibs/win/mmap.c) +- call qApp->processEvents() on highlighting schema loading, + so 'wait' cursor can be visible on 1st loading. +- allow saving invalid queries (KexiQueryDesignerSQLView::storeNewData()) + (for invelid queries, after opening SQL view should be shown automatically) +- allow to copy error message (e.g. using a copy button) + + allow to select message text (use active label?) + +==== Main window TODO ==== +- propeditor dock window is hidden when a window in data view mode is active + (or no window is present). This feature is partially disabled + (using PROPEDITOR_VISIBILITY_CHANGES), though, + --REENABLE when blinking and dock width changes will be removed in KMDI +- add sorting projects information using KexiProjectData::lastOpened +- also add this info as "Database>Open Recent" menu subentry +- display errors when plugin library could not be instantiated due to a broken lib +- Project Navigator: display multiline item names is needed +- display progress bar (in the statusbar?) to indicate there're pending jobs +- enlarge the default main window size, currently it's ~50% ofthe desktop size + - not convenient as user is forced to enlarge the window by hand (settings are stored though) +- add "File->Save All" action +- add settings dialog, KConfigXT based simple version + + about:config-like using kconfigeditor http://extragear.kde.org/apps/kconfigeditor/ + (possible reuse of koproperty) + +TODO: add SharedAction::setVisible() and use QMenuData::setItemVisible() where needed + +CCPASTEUR: + -perhaps we'd reuse KDE Menu editor GUI? + +=== KexiDB TODO === +- add to field's properties list: input mask, validation rule, column width +- improve Expression class, add code for generating expression + strings in Connection::queryStatement() +- add dynamic resize for dict members like Connection::m_tables +- make KexiDB really ASYNC, multithreaded! +- implement relationships (foreign key information) between tables + storage +-- Support tree standard types of integrity rules as described at http://allenbrowne.com/ser-64.html + plus: Cascade to Null Relations +- implement GROUP BY clause + storage +- add schema to kexi__* tables on createTable() +- add support for creation temporary databases +- look at Connection::isReadOnly() to see if we can perform certain operations + requiring write access (create db, update db props, etc.) +- reuse ConnectionData::useLocalSocketFile for connections using socket file +- Connection::alterTableName(): +--alter table name for server DB backends! +--what about objects (queries/forms) that use old name? +- PGSQL: use setval(sequence) to allow setting autonumber values by hand + http://www.postgresql.org/docs/7.4/interactive/functions-sequence.html +- optionally, introduce EDITABLE_AUTONUMBER_FIELDS driver flag +PiggZ_ js: and to ensure you always have id 1 and 2, well.....they would be anyway at db creation time as sequence = 0 + js PiggZ_: but users ofter want to enter it anyway + js eg. sqlite increments its autonumber to 1001 if you enter 1000 + js we want nothing more that that + js s/than that + PiggZ_ personally, i never want to enter a value into autonumber.....autonumber usually = pkey, so its best to let the db handle it + js If use want strict sequences to be used, he can: + js 1) hide autonumber column at all + js 2) set it not-editable + js 3) or just do not touch this column + PiggZ_ well then, its probably best to set the value of the sequence if a value is manually entered...if possible + +- add an QAsciiDict of (reserved) SQL keywords and use it in Driver::escapeIdentifier() +- add FieldType and move things like typeGroupString() there +- CRASH: removing tables when a query still uses it. + HOW TO FIX: Add TableSchema::Ptr, QuerySchema::Ptr, etc. +-- related to above: add a possibility to return all objects (and optionally all opened objects) + thad depend on a given table +-- we could also add a GUI tree to show these dependencies +- add permissions information to connection : and - for sqlite - check if file is RO + and then set RO flag +- add kexi__toremove table, and use it to remove objects on begin connection +- [Kexi 0.2?] sometimes a user has got only one database availaliable on a server + (eg. when server is commercially hosted). Somethime user isn't just able + to create database because of insuffficient privileges. + Solutions --> add a possibility of sharing multiple projects within the same database + * kexi__* tables will be shared + * prefixes can be needed for table names (add option to set or unset this) + * prefixes will be hidden (stripped out) by KexiDB from real names, eg. 'mydb_mytable' -> 'mytable' + * let's set default prefix equal to database name + * within a group of "projects sharing the same databse" it will be easier to: + ** mount (attach) external projects to an opened Kexi project + ** run queries using tables from many projects + * disadvantages: + ** decreased modularity and data encapsulation + ** possible problems with transactions and user access rights + ** custom table names can look weird outside Kexi + ** the feature adds another level of complexity to KexiDB +-define "login timeout" setting (in seconds) so connecting can rely on this value. + The setting could be assigned to a given connection data, + but could be also defined globally for the application. + (note: db:login-timeout is defined by opendocument spec.) +- take a look at agrep: http://www.tgries.de/agrep/ -- looks loke it manages to convert + non latin1 characters to latin1, eg. '' to 'a': + "* option -ia searches case-insensitive + ISO characters are mapped to the nearest lower ASCII equivalent." +- support for COMPOUND KEYS, ie. keys with 2+ fields; http://en.wikipedia.org/wiki/Compound_key +- OPTIMIZATION: use PREPARE and EXECUTE statements for some backends, eg. for pgsql: + (excerpt from http://www.postgresql.org/docs/8.0/interactive/sql-prepare.html) + 1. Create a prepared query for an INSERT statement, and then execute it: + PREPARE fooplan (int, text, bool, numeric) AS + INSERT INTO foo VALUES($1, $2, $3, $4); + EXECUTE fooplan(1, 'Hunter Valley', 't', 200.00); + 2. Create a prepared query for a SELECT statement, and then execute it: + PREPARE usrrptplan (int, date) AS + SELECT * FROM users u, logs l WHERE u.usrid=$1 AND u.usrid=l.usrid + AND l.date = $2; + EXECUTE usrrptplan(1, current_date); + 3. For completnedd, provide KexiDB API for "DEALLOCATE" as well +- Implement "copy table" feature. + To copy table t1 as t2 with data use: "create table t2 as select * from t1" + To copy table t1 as t2 without data use: "create table t2 as select * from t1 limit 0" + NOTE: pkeys, triggers, default values are not copied? + +- BLOBs in MySQL: max_allowed_packet is 1MiB; read http://dev.mysql.com/doc/mysql/en/blob.html + and http://dev.mysql.com/doc/mysql/en/server-parameters.html +-- http://bugs.mysql.com/bug.php?id=1605 "MySQL protocol (it does not send 'chunked streams' +for blobs...The client has to read the _entire_ blob into memory."; use: + "select substring(document, 1, 10240) from documents where docid='3'" this to get chunks: + "select substring(document, 10241, 10240) from documents where docid='3'" + .... +-- Other approach: store binary data using two tables 1st for metainfo about the data, + 2nd for data chunks (e.g. 64KiB each): http://php.dreamwerx.net/forums/viewtopic.php?t=6 + +????? is it possible to just use a database and store the kexi stuff in a .kexi file? + jstaniek ruurd: you just dont want to create kexi__* tables on your database? + ruurd yes, and use an existing database. + jstaniek ruurd: that's planned but note: + jstaniek this option doesn't offer you atomic changes to database schema, by definition, because two database conenctions are started concurrently. + jstaniek So we'll need to behave with care... + jstaniek ruurd: of course this is easier to do with read only databases or even databases where you don't plan to change schema (but just process db records) +- add Connection::ping() or so, using http://dev.mysql.com/doc/mysql/en/mysql-ping.html + and use it after being idle for a while (eg. call it every minute; also add an option for the delay) +- Move ObjectStatus to kexidb. Merge with Object. +- Support for opening .sql files: just import it on opening to in-memory database and dump it back into + .sql text on exisitng. Add optional compressing. +- Add support for compressed kexi files (better keep the same .kexi extension instead of .kexiz) +- Implement tree structures using idea #5 described here http://www.depesz.com/various-sqltrees.php + (does pgsql require this hack?) +- double values are still rounded: consider storing them in memory as a decimal type + (e.g. using a special Q_LLONG+decimalplace class); needed e.g. in KexiQueryParameters::getParameters() +- handle input mask using a special KexiDB::FieldInputMask class + --needed in forms (KexiDBLineEdit::setColumnInfo()) and table views +- add setValue() to cursors: this will REQUIRE a buffered cursor, since we cannot run sql + before fetching is done... See http://kexi-project.org/cgi-bin/irclogger_log/kexi?date=2006-08-03,Thu&sel=229#l225 +- use ThreadWeaver library for threaded KexiDB version +- tables can use queries as a row source for lookup fields, what can lead to infinite recursion; + FIX this by either: 1) not allowing to use such table in a query (see kexi/to_fix/Ksiazka_adresowa2_recursive_query_deadlock.kexi) + or 2) delayed loading of query column + +=== KexiDB Parser TODO === +- add a method for replacing a single given table name in the statement (useful on table renames) +- add clever query relatins parsing + (needed for switching back to GUI editor from text mode) +- add flexible support for date/time constants +- store text position information (line, column) for every token so it can be used + in SQL editor to place cursor in case of errors +- add translation method for SQL operators to driver, + so SQLite can return "CONCAT" and mysql return "||" for concatenation oeprator, and so on +- improvement in terms of data recovery: + assume you're entering a long record and db connection is dead before saving... + the record could be buffered locally before closing Kexi application... and on next startup, re-sent. + This can work in simple cases (when complex transactions are not involved). +- report "ambiguous field name 'id'" error for ambiguous queries like "SELECT a.id, b.id FROM a, b ORDER BY id" +- add types checking to **Expr::validate() +- consider switching from bison/flex to http://www.antlr.org/ +- make parser reentrant (for now we've used a workaround) + +=== KexiDB MySQL Driver TODO === +- use InnoDB instead of MyISAM tables because of transactions support + http://dev.mysql.com/doc/refman/5.0/en/ansi-diff-transactions.html + Kexi's MySQL driver uses MyISAM engine, but transaction support needs InnoDB + (there should be also an option available to set on CREATE TABLE, and on an default for CREATE DATABASE) + +=== KexiDB PostgreSQL Driver TODO === +- port to libpq +- set version information in drv_useDatabase() + There's connection_base::server_version() in libpqxx trunk - + http://thaiopensource.org/development/libpqxx/file/trunk/include/pqxx/connection_base.hxx + +=== KEXIDB TESTS=== +- add tests for DatabaseProperties +- add tests for PreparedStatement +- add tests for migration + +=== Startup TODO === +- reuse KexiNameWidget in KexiNewProjectWizard! +- use KPasswordDialog::disableCoreDumps() for security reasons +- IDEA for connection shortcuts: + Mysql Query Browser has a simple xml file defined: + http://dev.mysql.com/doc/query-browser/en/mysql-gui-appendix-store-connections.html +- allow to choose if the file should be locked (opened in EXCLUSIVE mode) or not + (THIS SHOULD BE DEFAULT BEHAVIOUR) +- (linux) remove stupid message 'Please select the file to open' + when opening exisiting server project and clicking 'OK' +- database files accessed remotely: make it work without copying a file to temp. dir. + (maybe even without copying entire file? - patching sqlite required) +- add "Open read only" checkbox to the file browser + (Driver::ReadOnlyConnection option already allows to open in read only mode) + +=== CLI TODO === +- add kexicmd as a symlink to kexi binary, for totally non-gui usage +- just drop all tables when database already exist + (so recreating database will be available even + if you have only access to one database). +- GRANT privileges for non-root (current?) user for newly created db + +=== Mimetypes/icons TODO === +- new mimetypes: + application/x-vnd.kexi.project.sqlite2 + application/x-vnd.kexi.project.sqlite3 + application/x-vnd.kexi.project.shortcut + other: + application/x-vnd.kexi.connections.shortcut + application/x-vnd.kexi.table.shortcut + application/x-vnd.kexi.query.shortcut +- remove x-vnd.kexi.desktop in kdelibs +- copy mimetypes and magic def. to kdelibs (keep it within Kexi for compat.) +- remake kexi mime type svg icons +- copy kexi mime icons to kdelibs, remove old one +** Ask SQLite devs for a possibility for adding a field to indicate kexi-sqlite + format without opening database + + +=== Docs TODO === + +-translate the current content from polish to english +-?? migrate english content to wiki format +-move polish content to .po translation file +-Add this to the preface http://encyklopedia.helion.pl/index.php/Kartotekowa_baza_danych +-www: mention what features are already available and what is planned in terms of: +-- general features, example: http://www.e-cen.pl/index.php?co=wiecej&id=26&dzial=8 +-- scripting, example: http://www.e-cen.pl/index.php?co=wiecej&id=22&dzial=6 +- add chapters for: +-- simple printouts +-- "assign action" to a button +-- CSV import/export/copy/paste (csv import is explained on kexi@kde.org ML; 2007-03-23) + +=== 2005 PRO TODO === +-greatly improve sql parser +-greatly improve sql gui designer +--totals (sum, avg) +-more docs +-more widgets for db-aware forms +-add simple reporting +-finish server support +--connection creator +--fix permission problems + + +=== after-0.9 TODO === +TODO: add time zones support: 1994-11-05T08:15:30-05:00 +TODO: update to sqlite3.1 and use it's features http://www.sqlite.org/releasenotes310.html +TODO: 0.2: reuse http://segfault.is-a-geek.net:8001/feedback-kinitiator/ + gfx can be found here: http://cvs.sourceforge.net/viewcvs.py/kinitiator/ + +TODO: look at recent Martin's stuff: http://homepages.cs.ncl.ac.uk/m.a.ellis/kexi/ + + +Core TODO: +- update shared actons availability ONLY AFTER we've switched to other kexidialog base, + not just on LOST FOCUS +- for now: clicking on empty menu bar's item (eg. "Format") causes to losing shared actions state +- make core/ non-gui lib. Move data creation code out of KexiDialogBase. + +Reports TODO +- reuse most of KexiFormPart code in KexiReportPart (eg. creating shared actions) +- line widget should use special resize handle set -- with only two rectangles (Forms too) + +KMDI TODO +- do not execute KMdiMainFrm::switchOffMaximizeModeForMenu() when true==QApplication::closingDown() + +QUICK TODO: +Forms: +-change form's object caption to "caption" property, when changed and conversely! + +TODO::::::: +1. test dipesh.kexi - ID column is not used on row updating!!! + +2. dipesh np, I also found a crasher witch is maybe related. + dipesh just change a value, go to design mode and switch back to dataview... + dipesh [KCrash handler] + dipesh #3 0xb59b156f in KexiFormScrollView::createEditor () + dipesh from /usr/lib/kde3/kexihandler_form.so + dipesh #4 0xb7e5f502 in KexiDataAwareObjectInterface::startEditCurrentCell () + dipesh from /usr/lib/libkexidatatable.so.0 + dipesh #5 0xb59b276a in KexiFormScrollView::valueChanged () + dipesh from /usr/lib/kde3/kexihandler_form.so + dipesh I look where the crasher is coming from. + dipesh oh, in KexiFormScrollView::createEditor + dipesh column( col ) returns NULL + jstaniek dipesh: it's only within your example project... + dipesh therefore column( col )->readOnly() crashes... + +reuse KWallet http://events.kde.org/info/kastle/presentations/kwallet-kastle-2003.ps + +=== Interesting features === +- Add random names/surnames generator: http://www.ruf.rice.edu/~pound/ + Good for generating good-looking random data for a given table. +-- Autodetect 'name' columns or ask user to describe what he wants. + Comply with data validation rules. +-- use famous 'Lorem ipsum dolor sit amet...' test text for longtext types + + +=== QUICK TODO === + +TODO: in KexiMainWindowImpl::slotProjectOpen() add support for starting new kexi instance for selected conn data + (we need to remember from what filename has been a conndata loaded) +TODO: move ConnectionData::savePassword to QMap<ConnectionData*,bool> KexiDBConnectionSet::savePasswordMap or so +TODO: Forms: fix label width resizing when entering text within inline editor +TODO: Forms copy more properties (like palette) to inline editor from e.g. text label +TODO: Forms: fix: double clicking unselected widget doesn't switch us to inline editing mode +TODO: Forms: object tree: enable sorting by name after clicking "name" header; + enable sorting by class,name by clicking "class" header + +Startup TODO: +- when using a startup item, touch the file for better sorting: +http://www.koders.com/c/fid97791600CA5D0A2EA559490BD9444B0775B2370A.aspx + +- add "Save Special->Shortcut file for this project" action +- add "Save Shortcut file for this connection" action +- FOR SLOW CONNECTIONS: show progress bar on: +-- retrieving a list of projects (in KexiProjectSelectorDialog) +-- opening a project (in status bar?) +- Also, add "cancel" button near the progress bar (reuse the one from KMail?) + + +TODO: If a form has no focus, FormManager::windowChanged() and KexiFormView::setFocusInternal() + don't work properly (setFocus() is not available...) + +FORMS: +-Image Box: +--pasting large images makes chooser button invisible; maybe place it on top of the widget? +--set better default for focusPolicy, implement setFocus() +--add filter property (using KImageEffect) +--make image-related actions undoable/redoable in design time +--add 'print' action +--add for movies/animations support using QMovie to KexiDBImageBox + or (most probably) inherit KexiDBImageBox as KexiDBMovieBox +---KexiBLOBBuffer::pixmap() shouldn't be used but data() should be used to create QMovie object + in each movie widget itself because even if the same QMovie was used in many movie widgets: + a) speeds can vary between movie widgets, b) different forms can be opended in different moments + so playing starts in different moments, c) one or more movies can be stopped while others not +---add following related properties: int playbackSpeed (in frames per second, 0==default), + bool autoStart (true==default), playbackControls (false==default), bool loopPlayback (true==default) + bool pauseAfterEnd (0==nothing==default) +-property pane: shrink widget name displayed at the top by adding "..." to avoid problems + with pane's size when selected widget has very long name +- resize handles are always black: this is bad on black background! +- use KURLLabel as an option for push button widget + + +Combo Box Editor +- ADD "restrict to list" OPTION: don't copy 1st row's value if there's no value in the combo + --> needed for 1st column of Query Designer + +KEXIDB: +- ConnectionData: make local sockets default for unix, instead of tcp/ip + +GENERAL: +- removed conflict between standalone and KOffice version by: +-- inserting "standalone" word into module names, + eg. kexidb_mysqldriver.so -> kexidb_mysqldriver_standalone.so +-- renaming kexi to kexi-standalone +- rename "data view mode" to "browse view mode" (as in Filemaker) +- add "File->Mail..." action (requires closing and copying of the sqlite file, if locked) + +MARKETING: +- add "Created With Kexi" page and a link to it from k-p.org and kexi.pl +- when releasing new Kexi version publish: A first look at Kexi x.y" page, like this: + http://software.newsforge.com/article.pl?sid=05/09/28/1345228 +- short reasoning for using db abstraction layers: + http://developers.slashdot.org/comments.pl?sid=164824&cid=13755151 + + +ACCESIBILITY - Mouseless Operation Problems (KOffice 1.4.1): +- MORE: http://accessibility.kde.org/reports/koffice-1.4.1-accessibility-assessment.pdf +- It is not possible to select the data type of a +field in the table editor. Alt+DownArrow does not work. +- When editing the fields of a table, it is not +obvious how to flag a field as a primary key. +WORKAROUND: Use Popup Context Menu (Menu key) and select Primary Key, OR use Edit | Primary +Key on the main menu, OR use Property Editor. +- In the Property Editor, is not obvious how to +change a boolean property. Alt+DownArrow does not work. +- It is not possible to change the value of a +property in the property editor that has a picklist of possible values, for example, +SubType. Alt+DownArrow does not work. +- When creating a query, it is not possible to add a table to the query. +- Not possible to select a column, table, +totals in Query Columns panel. Alt+DownArrow does not work. +- It is not possible to add a widget to a form. +- Pressing Tab key while focus is in the Form +Editor window, but not on any widgets on the form, crashes Kexi. +- It is not possible to change the size of a +widget in the form editor without the mouse. + +TODO: +- update conn dialog gui +example: http://www.ntpb.co.uk/kexi/msn.png + + +Migration (Import Project Wizard) TODO: +- change drivers comboboxes to KexiDBDriverList + (impl. this one with drv name and description columns) +- close currently opened file-based project if it's the same as imported one + (do not save anything) +- 'select source db type' page: change "sqlite/msa/mysql/pg" to "sqlite/msa/server database" + because type of server db is in fact selected on the next page (source conn selection) +- set the same path for "destination" file browser as for "source" one +- add "do not create system tables" option to the wizard +- reuse the migration framework to support "offline mode" - for instance usable while moving with + out of network with a laptop, by copying the relevant remote tables to a local temp db; + this is already implemnted e.g. in MSA 2k7: + http://blogs.msdn.com/access/archive/2006/10/13/sharepoint-apps-offline-and-intro-to-sharepoint-designer.aspx + coming back online requeres data merges what is not easy as resolving potential conflict may be needed + (example: http://clintc.officeisp.net/Blogs/2006/40%20-%20SharePoint%20Offline/10%20-%20Conflict%20Resolution%20UI.JPG) + +MDB Migration: +- add checks for "no space left on device" error (otherwise Kexi will crash) +- fix currency converting +- use MSysRelationdhips table to read MSA db relationships (easy, it's not encoded) + +=== Kexi Web Site TODO === +- move to mediawiki (JJ?) +- Add "Features" page like this http://www.agata.org.br/us/index.php?file=features.php +- Extend "Credits" page with Gold Users/Translators, etc. like here: + http://www.agata.org.br/us/index.php?file=thanks.php + +AUTOFIELD: +- copy/paste doesn't preserve caption text (maybe caption should be copied + to from QueryColumnInfo to a property) + +KexiFrame: +- fix highlight for data mode! (very old bug) + +Migration: +- fix: server as destination is broken + +CSV Import TODO: +- switch from dialog to wizard; add filedlg widget as the 1st page +- add better detection for CSV data with \t delimiters (needed for pasting from spreadsheets) +- add option for storing import settings +- always test using e.g. this file: http://cvs.sourceforge.net/viewcvs.py/*checkout*/wcuniverse/priv/units/units.csv +- change boolean "First row contains column names" to 3-value combo: + "Get column names:" ["None", "From the first row", "From the first imported row"] +- add "skip empty columns" and "skip empty rows" option +- (advanced) there can be a column that is a result of exporting combo box visible values; + in this case add option for normalizing the table using existing (or new) lookup table +- add clear message when : +-- primary key cannot be set because of non-unique values +-- number cannot be set because non-number values +-- etc. +- add "fix non-unique valuesID /add missing ID values" option for PK column +- add option for skipping particular columns +- add option for filtering import results afterwards: +-- to limit number of rows stored in db and +-- to process columns using expressions + +CSV Export TODO: +- add progress bar and wizard +- add "Include row count as first column - include row number in the first + column of each row" option +- add "Include column types on top" option +- add "Fixed columns width" option (can be extended to support "fixed width text" format) +- add "Set text to (null) on NULL value - use the string "(null)" to represent + a NULL value in the document" option +- add "Replace empty/Null fields with..." option +- add "Lines terminated with.." option (\n or \r\n or \r) +- add option for compression (gzip, zip, bzip2...) +- MORE TODOs here: http://www.aquafold.com/docs-qw-save-results.html +- by default, use delimiter=\t and quote=none for clipboard (needed for copying to spreadsheets) +- add "Strip leading and trailing blanks off of text values" option +- deal with lookup fields: for every such field +-- add option for exporting lookup tables as separate files +-- add option for exporting a) both visible values and indices b) indices only c) visible values only + -for now c) is supported + +XML Export TODO: +- consider export to at least these three formats: http://csv2xml.sourceforge.net/xmlmodes.html + (templates/XSLT could be also supported) + +General TODO: +- handle KApplication::shutDown() + +TODO: +- on opening detect whether a table exists (empty table view should not be displayed) +- Another Kexi instance started from KexiMainWindow using QProcess freezes after opening + 3rd table or so. Move to KProcess on Linux. + +TODO: +- if you place e.g. a label in a container like a tabwidget and doubleclick it to edit the content, + the label jumps around. ccpasteur said he fixed it last year ;) +- only change bg color of tab widget, not its outer area; fix changing tabs bg color + +Import +- error "BLOB/TEXT column 'isbn' used in key specification without a key length" + when importing books.mdb into a mysql db + +Forms: +- after setting "auto" tab order, we need to close and open the form to get tab stops to work properly + +TODO: +- use KLineEdit::displayText() to get partially filled date or time values like 20__-__-__; + then use this for checking data validity (?) + +TODOs from Jeff Denman: +- add command line option for performing a complete database import, especially for MSA files +- instead of always displaying "object names" in the project navigator: + display "captions" but offer an option to display "names" instead; + AND, optionally: offer a full-width window with the list of database objects +- import bug for MSA: no values for this field after import: + Field Size: Decimal + Precision: 10 + Scale: 2 + Decimal Places: Auto + +TODO Data Types +-Currency + MS Access: Currency values and numeric data used in mathematical calculations involving data + with one to four decimal places. Accurate to 15 digits on the left side of the decimal separator + and to 4 digits on the right side. +-Decimal Number (NUMERIC?) + MS Access: Decimal Stores numbers from -10^381 through 10^381 (.adp), + from -10^281 through 10^281 (.mdb); decimal precision: 28 B, storage size: 12 B + + +TODO Migration from Native SQLite3 +- use sqlite3_column_decltype() http://sqlite.org/capi3ref.html#sqlite3_column_decltype + and sqlite3_column_name() to know column names and types. + Add reasonable case-insensitive mappings like "INTEGER|integer|INT|int" -> [integer] + - or: for import data from native-sqlite databases: use "pragma table_info(tablename)" + -- maybe also use "pragma table_info" for sanity checking, or more in kexidb driver?? +- use "pragma user_version={32bit int}" (http://www.sqlite.org/pragma.html) to set, say, kexidb version. + This information is stored in a fixed place in the sqlite3 header, so it's possible to read it using + KDE Mime Type system (a magic data defined in share/mimelnk/magic). + +MDB Import +- FIXME sometimes order of imported fields is invalid: PKEY field jumps to end.. (books2.mdb) + +TODO: table view +- for FP numbers: allow to start entering value from "." or "," + +Forms TODO +- add "navigationCaption" property to table and form, so "Records:" Label in the record nav. becomes e.g. "Bananas:" + see: http://blogs.msdn.com/thirdoffive/archive/2006/04/06/560454.aspx + +Forms TODO +- Checkbox widget with focus policy set to Tab has problems with KexiDataAwareObjectInterface::acceptEditor() + because m_editor is set to _currently focused_ widget (problem where there are e.g. >1 checkboxes) + Partially fixed by setting StrongFocus policy as default; + FIX THIS for other focus policies too... + + +KDElibs4 TODO: +- wizard +- do not require .la in libltdl + +Kexi 2.0 TODOs: +- decrease # of shared libs, see Clarification at the bottom + of http://people.redhat.com/drepper/no_static_linking.html + +== April 1 2007 TODO == +- show the screenshot of kexi displaying yes/no/maybe-dialogs, as for the "Woman edition" + +TODO: +Kexi >2.0 (probably late 2007): Add SQLite >3.3 driver. Offer exporting similar to the one between 2.8->3.0. + Think about backporting the >3.3 driver to Kexi 1.1. + + + +- for table t1(a,b,c) delete column t1.c: + +CREATE TABLE t1_new(a,b); +INSERT INTO t1_new SELECT a,b FROM t1; +DROP TABLE t1; +ALTER TABLE t1_new RENAME TO t1; + +- for table t1(a,b,c) rename column t1.c to t1.d: + +CREATE TABLE t1_new(a,b,d); +INSERT INTO t1_new SELECT a,b,c FROM t1; +DROP TABLE t1; +ALTER TABLE t1_new RENAME TO t1; + + +== Forms TODO == +- enable edit->copy, actions, etc. for Data View +- ImageBox: show a tootip with large image and its name if the image was cropped + or only its name if the image is not cropped +- AutoField: highlighting the label when the buddy is focused +- AutoField: handle label editing after double clicking +- AutoField: draw required field in bold (or optionally add (*)) +- display default values in other widgets showing text +- new action for button widgets: open table/query + +with query parameters taken from a line edit +- provide "Edit->Clear Table Contents" action in forms too +- autofield: after setting form's data source to a valid value, + "unbound" mark should disappear in design time +- rename "Source field" to "Widget's data source" in the data source pane +- Designer bug: "Click a container widget (or a form surface itself), + where widgets are inserted and select one of the layout + types from the context menu item Layout Widgets. " + "I tried this with the Frame, the Group box and the Tab + widget, the menu item Layout Widgets is not available. You + have to select the widgets inserted in the contrainer widget + to make the menu item available. " +- unhide "Editor type" property for auto fields (it's hidden in 1.1 due to a crash) + +TODO: +- inform Raphael about koffice.org/1.5/ url, give him the php code + +Table Designer TODO +- i18n("Lookup") == Odnosnik (Ks. eksperta, s. 53) +- add setting for default length of the text type +- allow to set default values for BLOB types (requires a change in KoProperty as well) +- 2.0: Add drag-and-drop-to-create-lookup-column to the "lookup column" tab of the property pane. + This should be implemented by displaying a list of fields and allowing to drop one into the + table view. Then, lookup column properties should be autoconfigured. +- lookup column: support these properties of LookupFieldSchema: + columnWidths(), columnHeadersVisible(), maximumListRows(), limitToList(), displayWidget() +- show warning if there are no bound and visible columns defined (for now, this is just ignored + and user cannot select a value from the list in the data view) + +=== Simple Printouts TODO === +- cell contents can be too large for a single page - split it to man pages if needed (true for large texts, blobs..) +- add support for BLOBs +- fix printing and previewing for horizontal arragement + + +Form/TV Shortcuts: + ++To move to the record number box (record number box: A small box that displays the current record number + in the lower-left corner in Datasheet view and Form view. To move to a specific record, you can type + the record number in the box, and press ENTER.); then type the record number and press ENTER + F5 ++ Add moving to next record when Tab is pressed at the last field ++ Add moving to prev record when BackTab is pressed at the 1st field + + +== TODOs for 1.1.2 == +- support combo box within the autofield widget +(done?): notify and update data source after schema changes +- todo: fix things like SELECT *, cars.owner AS ab, 1.3 AS wyr1, persons.surname FROM cars LEFT OUTER JOIN persons ON cars.owner=persons.id WHERE cars.owner > 3 + (crash - see Simple_Database.kexi - persons_and_cars query has lookup fields and OUTER JOIN is NOT PARSED + -- we should generate the SQL in a different way for the Query Designer) +- fix horizontal scrollbar hiding in the "Available fields" list box (a problem with layouts?) +- display a message when connection is lost... + + +TODO: +- fix crashes when table schema referenced by a combo box changes +- replace QDate{Time}Edit in koproperty with KLineEdit, similar to the one in KexiTableView + +TODO: "Database "z3" created but could not be closed after creation." err. on win32 after creating a pgsql db +TODO: PqxxMigrate::drv_copyTable(): we've switched from BLOBs to LongText + ==KexiDB::Field::LongText part shoud be removed; add other backward-copatibility code (how?) + if (fieldsExpanded.at(index)->field->type()==KexiDB::Field::BLOB || fieldsExpanded.at(index)->field->type()==KexiDB::Field::LongText) + + +Startup templates +- TODO: : use main/startup/TemplateItem.ui and main/startup/TemplateWidget.h + http://lxr.kde.org/source/KDE/kdebase/kicker/kicker/ui/addapplet.cpp?v=3.5-branch#188 +- TODO look at schemas at http://www.databaseanswers.org/data_models/index.htm + +Find/Replace REPLACE +- use this for replace: virtual bool columnEditable(int col); diff --git a/kexi/doc/dev/advantages.txt b/kexi/doc/dev/advantages.txt new file mode 100644 index 00000000..31e15607 --- /dev/null +++ b/kexi/doc/dev/advantages.txt @@ -0,0 +1,17 @@ +--------------- +Kexi Advantages +--------------- + +I. Over MS Access + +1. Data Entry +1.1. Autonumber fields +Autonumber fields are editable. On a new record inserting, you can skip entering a value in autonumber field but you can also enter any (unique) value on your own (unavailable in MSA). For existing records, you can also change the number in the field (unavailable in MSA). + +Automatically generated values for autonumber fields are only generated on new row inserting. If you cancel row inserting, no value will be generated. This allows you to keep counting consistent. In MSA autonumber's counter (sequence) is increased just when you start entering data of a new record. + + +2. Data presentation +2.1. Tabular data view +Sorting by selected column is also available by simply clicking on the column. + diff --git a/kexi/doc/dev/alter_table_type_conversions.ods b/kexi/doc/dev/alter_table_type_conversions.ods Binary files differnew file mode 100644 index 00000000..5719d5b1 --- /dev/null +++ b/kexi/doc/dev/alter_table_type_conversions.ods diff --git a/kexi/doc/dev/auto_update_service.txt b/kexi/doc/dev/auto_update_service.txt new file mode 100644 index 00000000..eb9d6734 --- /dev/null +++ b/kexi/doc/dev/auto_update_service.txt @@ -0,0 +1,29 @@ +Installation / Update Service for QKW / KDE and apps + +Jaroslaw Staniek +started: 2003-07-22 + +OOPL-only: Create Update Service using kdecore/KMD5 and bzip2 lib. This would be used to automatic +updates for QKW and Kexi packages at the end-user side. Two options: +- offline update from local archives +- online update from the company ftp resources +Benefits: +- Updating would not longer require uninstal+install scheme. +- Settings could be stored safer between updates. +- User could be notified about new features and fixes installed. +- User could add/remove components. +- Everything using consistent gui on all platforms. +- 'Batch/net installation' options for enterprises. +- Smart 'Fix installation' option. +- Possibility of collecting user settings and infos about installations. These can optionally transferred +to developers with a bug report to help find a bug context. +- This is a step for making KDE apps packages distribution-neutral on Linux. +Notes: +- The Service guis and backend should be build from two parts: + - First: qt-only that is used to initialize the process and check the system, independently + from existing KDE sybsystem. + - Second: used when we already know we already have a working KDE subsystem. This part can use + KConfig, KLibLoader, etc. to change the KDE settings. +- To be able to do this, KDE needs get more guidelines for distributors of its binaries. +- To be usable for commercial use, there should be one packaging system for KDE + (maybe on top of tgz/rpm/deb/win32/mac?), "Meta Packaging". diff --git a/kexi/doc/dev/compile_time_options.txt b/kexi/doc/dev/compile_time_options.txt new file mode 100644 index 00000000..220cbca1 --- /dev/null +++ b/kexi/doc/dev/compile_time_options.txt @@ -0,0 +1,158 @@ +Compile-Time Options for Kexi +----------------------------- + +(c) 2005-2007, Jaroslaw Staniek, <js @ iidea . pl> + + +See http://www.kexi-project.org/wiki/wikiview/index.php?AdvancedBuildNotes +for explanation how to conveniently set compile-time options. + +List of available options +------------------------- + +* KEXI_STANDALONE +Type: defined/undefined +Default: - +Description: Can be defined globally in kexi_global.h. +Defined for standalone Kexi releases (without KOffice, e.g. 1.0) and undefined +for releases bundled with KOffice,. e.g. 1.1. + +* KEXI_NO_UNFINISHED +Type: defined/undefined +Default: defined in kexi_export.h if KEXI_OPTIONS is undefined +Description: If defined, unfinished Kexi features (for example a few features +within Table Designer) will be hidded for Kexi, to avoid user confusion. + +* KEXI_SHOW_UNIMPLEMENTED +Type: defined/undefined +Default: undefined +Description: If defined, forces to show menu entries and dialogs just to give +impression about development plans of Kexi Team. +Only recommended for test/development versions. + +* KEXI_FORMS_SUPPORT +Type: defined/undefined +Default: defined in kexi_export.h if KEXI_OPTIONS is undefined +Description: If defined, form plugin will be loaded; else: it will be +not loaded even if is compiled. + +* KEXI_REPORTS_SUPPORT +Type: defined/undefined +Like KEXI_FORMS_SUPPORT macro, but for enabling report plugin. +Default: undefined + +* KEXI_SCRIPTS_SUPPORT +Type: defined/undefined +Like KEXI_FORMS_SUPPORT macro, but for enabling scripts plugin. +Default: undefined + +* KEXI_KROSS_SUPPORT +Type: defined/undefined +If KEXI_SCRIPTS_SUPPORT is defined, this option defines that +Kross, located at kexi/scripting{core|plugins}, should be +compiled and used for scripting. +Default: same as KEXI_SCRIPTS_SUPPORT + +* KEXI_NO_MIGRATION +Type: defined/undefined +Default: undefined +Description: If defined, data/project migration support for Kexi +(available in Tools>Migration menu) will be disabled; else: support will +be enabled. + +* KEXI_CUSTOM_HARDCODED_CONNDATA +Type: defined/undefined +Default: undefined +Description: If defined, you are forcing to add custom hardcoded connections +to the KexiMigration::importWizard constructor and KexiStartupHandler::init(). +All you need is to create your own private "custom_connectiondata.h" file +in kexi/ directory, which will be included into Kexi source code and fill +it with code providing one or more hardcoded connections. +Example custom_connectiondata.h file for adding a single connection data: +---- custom_connectiondata.h, cut here ----- + conndata = new KexiDB::ConnectionData(); + conndata->connName = "My Custom Pgsql Connection"; + conndata->driverName = "postgresql"; //can be also "sqlite3", "sqlite2", "mysql" + conndata->hostName = "myhost.example.com"; + conndata->userName = "john"; + conndata->password = "secret"; + Kexi::connset().addConnectionData(conndata); //always call this to add +----- cut here ------------------------------ +Notes: +- security warning: if you provide your passwords in your code, it will + be available in compiled binaries, so think twice before providine the binaries + for somebody else. The custom_connectiondata.h file will not be available + in CVS, so don't worry. +- this hardcoding will be removed when full handling of connectiondata arrives. +- conndata is predefined as: KexiDB::ConnectionData* conndata; +- See KexiDB::ConnectionData deocumentation for more information. +- you can assign KUser().loginName() for username if you want to get current + login. + +* KEXI_USE_GRADIENT_WIDGET +Type: defined/undefined +Default: undefined +Description: If defined, KexiGradientWidget is used as form's background. +Currently disabled due to problems with performance and child widget's palettes. + + +* KEXI_NO_SUBFORM +Type: defined/undefined, temporary +Default: undefined +Description: If defined, subform widget will not be available + +* KEXI_NO_AUTOFIELD_WIDGET +Type: defined/undefined, temporary +Default: undefined +Description: If defined, atofield (KexiDBFieldEdit) widget will not be available, +nor dragging fields from "data source" will be available + +* KEXI_NO_IMAGEBOX_WIDGET +Type: defined/undefined, temporary +Default: undefined +Description: If defined, image box (KexiImageBox) widget will not be available + +* CUSTOM_VERSION +Type: defined/undefined +Default: undefined +Description: Defined means Kexi version compiled for standalone distribution +with some minor vendor-specific tweaks. Used for OOPL version. + +* KEXI_DEBUG_GUI +Type: defined/undefined +Default: defined (but should be undefined for final releases) +Description: If defined, showInternalDebugger=true (in [General] group) +can be specified to display KexiDB Debugger. +In the future the window will be probably used for debugging other features +like scripts or macros. This option is useful for Kexi Developers. + +Also shows additional "Show Form UI Code" action in form's design mode. +This is useful for debugging: after executing the action, +a dialog with current (after changes) and original form's +GUI XML code will be presented in a tabbed dialog, so you can compare what changed +and look for possible problems. The "current" XML code will be saved when "save" +action is executed. TODO: it will be merged with Internal Debuger window. + +* KEXI_DB_COMBOBOX_WIDGET +Type: defined/undefined +Default: undefined +Description: Defined means Kexi offers combo box form widget. + +* DB_TEMPLATES +Type: defined/undefined +Default: undefined +Description: Defined means Kexi offers "Templates" in the startup dialog. + +==== Obsolete, don't use ==== + +* KDOCKWIDGET_P +Type: defined/undefined +Default: undefined +Description: If defined, enables a hack for better handling property editor's +panel within KexiMainWindowImpl object. + +* KEXI_OPTIONS +Type: defined/undefined +Default: undefined +Description: Define this if you want override default compile time options +to use any of the options described below. diff --git a/kexi/doc/dev/kexi_alter_table.txt b/kexi/doc/dev/kexi_alter_table.txt new file mode 100644 index 00000000..4a6c851e --- /dev/null +++ b/kexi/doc/dev/kexi_alter_table.txt @@ -0,0 +1,110 @@ +----------------------- +KEXI ALTER TABLE ISSUES +----------------------- + +1. PROBLEMS +- different databases have different set of altering capabilities + (SQLite has no table altering capabilities at all; re-creation is needed: + this has high cost in time and disk space for large tables) +- we need to collect every detailed change made in Table Designer and apply + these changes to existing table schema +- in the case when a table is already filled with data, we need to perform + tasks to move that data to a new structure, + especially if database engine can't do it for us or if the engine + wants simply drop the data because convertion cannot be done automatically +- because of above issues, some work needs to be done at the client side + +2. What can be altered using ALTER TABLE: +2.1 Inserting columns + (into a specified position) + ADD COLUMN <column_definition> [FIRST | AFTER <col_name> ] + + (adding many colums at the end) + ADD COLUMN <column_definition>,... + +2.2 Adding constraints, indices + ADD INDEX [<index_name>] [<index_type>] (<index_col_name>,...) + + ADD CONSTRAINT [<symbol>] PRIMARY KEY [<index_type>] (<index_col_name>,...) + + ADD CONSTRAINT [<symbol>] UNIQUE [<index_name>] [<index_type>] (<index_col_name>,...) + + ADD CONSTRAINT [<symbol>] FOREIGN KEY [<index_name>] (<index_col_name>,...) + [<reference_definition>] + +2.3 Altering column properties + ALTER COLUMN <col_name> {SET DEFAULT <literal> | DROP DEFAULT} + + CHANGE COLUMN <old_col_name> column_definition [FIRST|AFTER <col_name>] + + (rename column) + CHANGE <old_column> <new_column> + + MODIFY COLUMN <column_definition> [FIRST | AFTER <col_name>] + +2.4 Dropping + DROP COLUMN <col_name> + + DROP PRIMARY KEY + + DROP INDEX <index_name> + + DROP FOREIGN KEY <fk_symbol> + +2.5 Renaming a table + RENAME TO <new_tbl_name> + + +3. How to perform table altering be re-creation: +SQLite: (taken from Ticket 236: Add RENAME TABLE + - will be easier to work around missing ALTER TABLE + http://www.sqlite.org/cvstrac/tktview?tn=236,8) + Currently the recommended method to ALTER TABLE is: + + 1. Create a temporary table. + 2. Copy all data from original table to temporary table. + 3. Drop the original table. + 4. Create a new table. + 5. Copy all data from the temporary table to the new table. + +For example, suppose you have a table named "t1" with columns +names "a", "b", and "c" and that you want to delete column "c" +from this table. The following steps illustrate how this could be done: + +BEGIN TRANSACTION; +CREATE TEMPORARY TABLE t1_backup(a,b); +INSERT INTO t1_backup SELECT a,b FROM t1; +DROP TABLE t1; +CREATE TABLE t1(a,b); +INSERT INTO t1 SELECT a,b FROM t1_backup; +DROP TABLE t1_backup; +COMMIT; + +If the table name also changes on altering, it's easier to do the +altering (no temp. table needed): + +BEGIN TRANSACTION; +CREATE TABLE t2(c,d); +INSERT INTO t2 (c,d) SELECT a,b FROM t1; +DROP TABLE t1; +COMMIT; + + If we had RENAME TABLE, we'd get easier alter table here: + 1. Rename original table to temp name. + 2. Create new table with ORIGINAL name. + 3. Move data from previous to new table. + 4. Drop previous table. + +4. PROPOSED ALGORITHM + + + +5. Useful documentation + http://dev.mysql.com/doc/mysql/en/ALTER_TABLE.html + + +6. Document History +2004-07-20 js + Started + Asked Richard Hipp about RENAME TABLE + diff --git a/kexi/doc/dev/kexi_final_mode.txt b/kexi/doc/dev/kexi_final_mode.txt new file mode 100644 index 00000000..7435eff3 --- /dev/null +++ b/kexi/doc/dev/kexi_final_mode.txt @@ -0,0 +1,21 @@ +---------------------- +Kexi Final Mode Design +---------------------- + +1. Questions / Proposals + +a) Do we need to store information about needed plugins? + The proposal: it's enough as is: needed plugin is checked on object loading. + +b) Instead having redundant kexi__final, we can easily + use kexi__db with for the same purpose? + +c) More than one startup item would be useful. + The proposal: introduce property "startup_items" with a value of ordered + int-list of IDs: "32,543,324,532". This is also probably better than a list of names? + +d) startup-related property (for kexi__db): + - "startup_mode", value: "0"==Design Mode, "1"==Final Mode + (default satartup mode; can be overriden by --final-mode and --design-mode) + "0" is the default + diff --git a/kexi/doc/dev/kexi_general_import_export.txt b/kexi/doc/dev/kexi_general_import_export.txt new file mode 100644 index 00000000..493349f7 --- /dev/null +++ b/kexi/doc/dev/kexi_general_import_export.txt @@ -0,0 +1,53 @@ +Main goals: + *) easy extendability + *) common look and feel for common tasks + +************************** + +Workflow importing : +Step 1: + a) + Project->Import + -> File + -> Connection + ==> All types + + b) + RMB item group in navigator->Import + -> File + -> Connection + ==> Only type of item group + +------ +File based: +Step 2: + *) Lookup of any ImportSource plugin capable handling any of the possible types + *) Filling of mime filter list on file dialog page + *) Loading of plugin previously looked up for handing specified file +Step 3: + *) Showing user all possible imports, eg all tables from a database + *) Allowing source specific configuration, eg range selection in a kspread document +Step 4: + *) loading import GUI plugin for destination kexi mimetype + *) Allow the user to choose how to import + eg for tables: import new table, + append data to an existing table + column remapping, renaming, ... +Step 5: + *) doing import + tables : handing the chosen configuration over to PiggZ's kexidb-import architecture + * : GUI plugin is responsible for importing directly or loading an additional, NON visual plugin +Step 6: + *) DONE + + +************************** + +Needed facilities: + Page Interface: Wizard<-> Source plugin + Wizard<-> Destination plugin + Source interfaces: Depending on destination type, eg table import interface, report import interface, .... + Needed for communication between Source and Destination GUI + + +JoWenn diff --git a/kexi/doc/dev/kexi_guidelines.txt b/kexi/doc/dev/kexi_guidelines.txt new file mode 100644 index 00000000..7c2dfaba --- /dev/null +++ b/kexi/doc/dev/kexi_guidelines.txt @@ -0,0 +1,35 @@ +PROPOSAL: Generic Guidlines For Kexi Development + +Jaroslaw Staniek +started: 2003-06-25 + +Idea 1 +Add tests for command line-only operations using kexiDB library. +These tests can be later turned to command line options for Kexi what will allow non +GUI operations o databases/projects. + +Idea 2 +Look at QSQL module from QT. E.g. there is efficient cursor feature (it works quite good with mysql). +We have KexiDBRecordSet instead, but this is just the same thing. +In fact many KexiDB features are compatible with QSQL. +Focus on: +- avoid loading all result data to client memory (fetch some records instead) +- avoid blocking operations (do asynchronously as many things as possible) +- avoid memory copying (at low level try to store original char* data instead of QString, + convert to QString only on data displaying) + +Idea 3 +Directories layout: +dialogs/ ++-altertable/ ++-datatable/ ++-queryeditor/ ++-sqleditor + +widgets/ ++-tableview/ ++-datatableview/ + +Idea 4 +Classes naming guidelines: +'Dialog' suffix for all classes diff --git a/kexi/doc/dev/kexi_i18n_guidelines.txt b/kexi/doc/dev/kexi_i18n_guidelines.txt new file mode 100644 index 00000000..2be1490d --- /dev/null +++ b/kexi/doc/dev/kexi_i18n_guidelines.txt @@ -0,0 +1,39 @@ +Kexi Translation Issues +----------------------- + +Many things can be found here: http://i18n.kde.org/translation-howto/index.html + + +Additional guidelines: + +#1. Let's not use "Do you really want" question. Use "Do you want" question instead. + + + +#2. Try do not overuse html formatting tags like <qt> in translated strings is you +do not need to. Eg. rather use + + "<qt>" + i18n("Connection error: <b>%</b>") + "</qt>" + +instead of + + i18n("<qt>Connection error: <b>%</b></qt>"); + + + +#3. Use " instead of ' , ie.: + + i18n("Object \"%1\" not found.") --GOOD + +instead of : + + i18n("Object '%1' not found.") --BAD + +Also, do not use <b> tags around "" ie. + + i18n("Object <b>\"%1\"</b> not found.") --BAD + + +-- +js@iidea.pl, july 2004 + diff --git a/kexi/doc/dev/kexi_import.txt b/kexi/doc/dev/kexi_import.txt new file mode 100644 index 00000000..be640ba1 --- /dev/null +++ b/kexi/doc/dev/kexi_import.txt @@ -0,0 +1,61 @@ +kexiImport proposal - piggz (www.piggz.co.uk) +============================================= + +This is a proposal for some import functionality for kexi. +As of this moment i have no idea how it will work, but ive +been thinking and figured i should get something down in +writing. Hopefully you will all improve on this and we can +get something working. + +The way i see it we need to do a few things: + +1) A common api to different import systems + This would be similar in concept to kexidb drivers, but would + only provide limited, specific functionality + +2) DB specific classes that provide import functionality + for postgres, mysql firebird etc... + + +For 1) we need to to: + +i) Connect to backend -| + | +ii) Get list of databases | All this is already catered for in + | kexidb +iii) Get list of tables -| + +iv) For a given table, get list of columns as stringlist + +v) For a given table/column combination, get extended information for + that column: + + type + +--If a known kexi type then ok + +--If unknown then driver may be able to automagically map to suitable type + +--Ask the user what to do (map to type, convert column, drop column) + + index (yes/no) + + pkex (yes/no) + + default value + + Alot of this is already catered for in old kexi api, so maybe some + chunks fo code could be reused, though a bit of a rewrite is inevitable + to limit the functionality to the above + +Once the table/column information is available then a tableschema object would be +created and standard kexidb api could create nescessary structure. For this there +would be 2 modes of operation + +A) Structure will be created under new db name, and kexidb api would be used as + normal + +B) Structure will be created in existing db. Kexi api would need a mode where + kexi__* structure is created, but tables are not created as they already exist + + +Ideas, suggestions and designs welcome :o) + +PiggZ
\ No newline at end of file diff --git a/kexi/doc/dev/kexi_issues.txt b/kexi/doc/dev/kexi_issues.txt new file mode 100644 index 00000000..62292f2d --- /dev/null +++ b/kexi/doc/dev/kexi_issues.txt @@ -0,0 +1,30 @@ +--------------------------------------------------------- + Kexi IDEAS, ISSUES, PROPOSALS + Copyright (C) 2003 Jaroslaw Staniek js at iidea dot pl + Started: 2003-08-01 + Kexi home page: http://www.koffice.org/kexi/ +--------------------------------------------------- + +| +| This document is expected to be independent of given KexiDB driver implementation, +| but proposals are described here after certain decisions: +| -drivers are (by current importance): SQLite (embedded), +| ODBC (universality reasons), Mysql (historical reasons), PostgreSQL +| + +1. EXTENSION: Inheriting properties + Kexi objects like tables, forms, reports can be put in sort of relation diagram: + Easy example: form and report depends on table/query (or more tables and queries). + + This dependency can be called inheriting when we wnat to reuse as many + as possible properties of parent 'object' in child 'object'. + + Examples of these properties: table colors, columns widths, etc. can be + reused in forms/reports that use this its data. + Inherited values can be of course changed for 'child' objects if needed. + + Other inherited properties example are custom error/warning messages + (see kexidb_issuses doc, #1). + + Properties inheritance makes database schema more rich and reduces required work + for later stages of the database project. diff --git a/kexi/doc/dev/kexidb_api_changes.txt b/kexi/doc/dev/kexidb_api_changes.txt new file mode 100644 index 00000000..9f40e7e4 --- /dev/null +++ b/kexi/doc/dev/kexidb_api_changes.txt @@ -0,0 +1,125 @@ +-------------------------------------------- + KexiDB Module API Changes + Doc started: 2003-07-08 by js@iidea.pl +-------------------------------------------- + +These changes are propsals for further disscussions. + + +1. *** RENAMING *** + +Some classes can be betted described with other names: + +class KexiDBInterfaceManager -> KexiDBDriverManager + +Motivation: 'Interface' is a more generic term. Thus, the class name is not a description. +'Driver Manager' term is also used in the iODBC package. + + +2. Now, KexiDB is just another ODBC-like layer. Probably there woudn't be too much drivers +for KexiDB if KexiDB will be still like it is. + +What to change? +KexiDB should be merged with non-visual (but db-related) parts of KexiProject. +KexiProject then should be renamed to KexiDBProject and be moved to KexiDB. +Visual (document-like) project container (formerly KexiProject) that inherits KoDocument +could be then named to something else and still exist since Kexi, as KOffice application, +needs to implement KoDocument. (KexiProjectHandler is also visual-related) + +What we got then? +After that move, KexiProject becames a non-visual general-purpose entity. SO it can be instantiated +not only as Kexi Koffice document window, but also: +- for batch (non-visual) data processing (equivalents of given features availabe from gui, e.g. data export) +- for easy use in Kexi plugins and/or other apps that would know about enchanced database properties +provided by Kexi projects' metadata +- to enable linking current Kexi project with external Kexi projects' data, in the future (these external +projects do not have to be visible as regular projects, but its metadata is loaded) + +Other motivation: +It's not necessary for KexiProject to be dependent on KOfficelibs. + + +3. KexiDBConnection should be moved to KexiDB module and it should be only connection data container. + + +4. Kexi uses KoStore as medium for storing project's meta data. + +What if we want to store even this data in the database? + +We need more generic class KexiDBProjectStore for this of extend KoStore. Note that extending +KoStore may not be possible (or nice) because of hierarchical (fs-like) structure of this medium, +while db store is relational. + +Why to store Kexi projects in the db? + +- We can utilize transactional, multiuser features of databases "for free" +- Using sqlite engine we can still store projects in local files. +So, maybe drop KoStore completely? Oh, maybe not, but we can treat this format as xml-exported, +mainly for external processing, migration and backups. + +Note that there can be one database location for storing project's user data and completely other location +for the database that has stored project's meta-data (see example below). + + +5. Example usage of db engine, to get both project metadata and raw db connection + +{ + kdDebug() << "DRIVERS:" << KexiDBEnginesManager::enginesNames() << endl; + KexiDBEngine *engine = KexiDBEngineManager::engine("mysql"); + if (!engine) { + kdDebug() << "no engine" << endl; + return 1; + } + + //we can also get the manager obj. with: KexiDBEnginesManager *manager = KexiDBEnginesManager::self(); + + //connection data that can be later reused + KexiDBConnectionData conn_data; + conn_data.host = "myhost"; + conn_data.password = "mypwd"; + + KexiDBConnection *conn = engine->createConnection(conn_data); + if (!conn->connect()) { + kdDebug() << "err. connect" << endl; + return 1; + } + kdDebug() << "DATABASES:" << conn->dbNames() << endl; + +//we want use this connection to load given Kexi Project: + + KexiDBProject *prj = new KexiDBProject( conn, "test" ); + /* connection 'conn' has been opened for project meta-data source: + KexiDBProjectStore *store = new KexiDBProjectStore( conn ) + Kexi then opens data base with KexiDBConnection::openDatabase( name ) + where 'name' comes from meta-data. + This new connection is for projects' data. + */ + /* we could also load project from a file: + KexiDBProject *prj = new KexiDBProject( "~/myprj.kexi" ); + Then, KexiProject will be loaded from the file: + KexiDBProjectStore *store = new KexiDBProjectStore( "~/myprj.kexi" ); + ..and data connection will be established as before. + */ + if (!prj) + kdDebug() << "err. open db" << endl; + return 1; + } + kdDebug() << "TABLE DEFS:" << prj->tableDefsNames() << endl; + kdDebug() << "QUERY DEFS:" << prj->queryDefsNames() << endl; + + KexiDBTableDef *tab_def = prj->tableDef("people") << endl; + if (!tab_def) + kdDebug() << "no table def" << endl; + return 1; + } + kdDebug() << "TABLE DEF FIELDS:" << tab_def->fieldsNames() << endl; + + KexiDBFieldDef *field = tab_def->field("age"); + if (!field) + kdDebug() << "no such field" << endl; + return 1; + } + kdDebug() << "FIELD TYPE:" << field->typeName() << endl; + + return 0; +}
\ No newline at end of file diff --git a/kexi/doc/dev/kexidb_issues.txt b/kexi/doc/dev/kexidb_issues.txt new file mode 100644 index 00000000..0dd945c6 --- /dev/null +++ b/kexi/doc/dev/kexidb_issues.txt @@ -0,0 +1,211 @@ +--------------------------------------------------------- + KexiDB module IDEAS, ISSUES, PROPOSALS + Copyright (C) 2003 Jaroslaw Staniek js at iidea dot pl + Started: 2003-08-01 + Kexi home page: Users: http://www.koffice.org/kexi/ Developers: http://kexi-project.org + + Changes: + 2005-09-16 Global BLOBs Storage +--------------------------------------------------------- + +| +| This document is expected to be independent of given KexiDB dirver implementation, +| but proposals are described here are after certain decisions has been made: +| -drivers are (by current importance): SQLite (embedded), +| ODBC (universality reasons ), Mysql (historical reasons), PostgreSQL +| + +----------------------------------------------------------------- + +1. EXTENSION: Option for setting user-defined error messages on selected error types. + +Since new KexiDB has fully i18n'd user-visible messages, it outperforms other products as MSA +(that often shows confusing message coming directly from the engine). There is possibility +to provide users with table of error messages that they can personalize. These settings can +be properties of table (query, form, etc.) and thus can be inherited (eg. by form from a table). +By default, i18n'd messages from KexiDB can be presented. + +<EXAMPLE> +Before we set our message for UNIQUE KEY conflict for table Cars (name varchar UNIQUE, price integer), +we have got this message when try to violate 'unique' restionction: +"There is already added one record with field 'name' set to 'Dodge' in table 'Cars'. +This field must be unique." +Now, we want more descriptive message: "There should be only one car named 'Dodge'!". +We write this not as above, but rather: "There should be only one car named %field%!", +since %field% is automatically substituted by given field value. After this we get message +that is easier to understand for everyday user. Of course Kexi (and competitors too) never will +be so clever as a human in building such messages automatically. +</EXAMPLE> + +<NOTE>Inheriting messages: it will be more conventient to set up custom messages (if required) +for table definition rather than just in form. If we set up given message in for a table, every +form that uses this table as data source (end every query that do so) can use this message when needed. +This note is also useful for other types of properties that can be inherited by extended objects from. +</NOTE> + +----------------------------------------------------------------- + +2. KexiDB classes inheritance diagram + +TODO TODO TODO TODO TODO TODO TODO TODO TODO TODO TODO TODO TODO TODO TODO TODO TODO TODO TODO + +Object + DriverManager + Driver + [DRIVER]Driver + Connection + [DRIVER]Connection + +[DRIVER] should be substituted by SQLite, MySQL, etc. +These are classess to reimplement in the drivers. + +ConnectionData +Field +Cursor + [DRIVER]Cursor +FieldList + TableSchema + QuerySchema + IndexSchema +Transaction +TransactionGuard +BaseExpr + NArgExpr + UnaryExpr + BinaryExpr + ConstExpr + VariableExpr + +----------------------------------------------------------------- + +3. Table schema, query schema, etc. storage + +Table or query schemas are extended with additional properties, +usually not available from most db engines or even related to gui. + +//This table contains list of kexi object stored within project (tables, queries, etc.) +kexi__objects + o_id integer unsigned primary key auto_increment, + o_type byte, //type id taken from KexiDB::ObjectTypes + o_name varchar(200), + o_caption varchar(200), //optional, enriched name, can contain non-latin1 characters + o_help varchar + +//This table contains object's data, such as form's xml def. +kexi__objectdata + o_id integer REFERENCES kexi__objects(o_id), + o_data varchar, + o_sub_id varchar(200) //sometimes single object can have more than one data + //-these can be identified by o_sub_id + //if not needed, leave it as NULL + + +//This table contains fields that are members of given kexi object. +//Not all object types should be allowed, now allowed are tables and queries +kexi__fields + t_id integer REFERENCES kexi__objects(o_id), + f_type byte, + f_name varchar(200), + f_length integer, + f_precision integer, + f_constraints integer, + f_options integer, + f_default varchar, +//these are additional properties: + f_order integer, + f_caption varchar(200), + f_help varchar + +//This table contains a list of parts defined for this database +kexi__parts + p_id integer unsigned primary key auto_increment, + p_name varchar(200), + p_mime varchar(200), + p_url varchar +TODO: add version? + +//This table contains global (predefined or not) properties for this database +kexi__db + db_property varchar(32), + db_value varchar + +//Predefined properties stored in kexi__db: +property="kexidb_major_ver", value=<major_version> + Where: <version> is a string containing integer in textual form that denotes + KexiDB implementation major version used to create or update this database. + This property is useful for KexiDB library and applications to denote + what KexiDB features could be available. This ensures backward compatibility + and (at least in some cases) -- forward compatibility. +property="kexidb_minor_ver", value=<minor_version> + like above -- minor KexiDB version +property="project_caption", value=<string> +property="project_desc", value=<string> + +TODO: put more props. todo - creator, created date, etc. (also to KexiProjectData) + +// Global BLOBs Storage (BLOB == BINARY LARGE OBJECT) +// Designed to store any kind of static images, sound and other binary data +//Table: +kexi__blobs + o_id integer unsigned primary key auto_increment, //unique project-wide identifier of a BLOB + o_data BLOB, + o_name varchar(200), //optional, name of the blob, + //can be e.g. a name of original file the data comes from, + //can contain non-latin1 characters + o_caption varchar(200), //optional, enriched name, can contain non-latin1 characters + o_mime varchar(200) NOT NULL, //MIME type of a BLOB, e.g. image/jpg + o_folder_id integer unsigned //references kexi__gallery_folders.f_id + //If null, the BLOB only points to virtual "All" folder + //WILL BE USED in Kexi >=1.1 + +//(not yet implemented, planned for 1.1) +//User-defined folders for better BLOBs categorizing. +//For simplification, folders have no lowlevel name but only caption. +//By default there are no physical folders, but only following virtual: +//-"All" folder +//-"Used" folder (computation of this takes some time because design of forms +// and reports needs to be parsed) +//-"Unused" folder (the same note as for "Used) +//-"By type" folder with "jpeg", "png" subfolders, etc. - available by grepping using BLOB's o_mime +kexi__gallery_folders + f_id integer unsigned primary key auto_increment, //unique id of a folder + f_parent_id integer unsigned //references f_id, can be null for top level folders + f_caption varchar(200), //optional, enriched name, can contain non-latin1 characters + f_notes varchar, //optional notes + +----------------------------------------------------------------- + +4. Extended table schema information: + +Docs available online: +- http://kexi-project.org/wiki/wikiview/index.php?ExtendedTableSchemaInformation +- Table Column Lookup: http://kexi-project.org/wiki/wikiview/index.php?KexiDBLookupColumns + +----------------------------------------------------------------- + +5. DEPRECATED TABLES + +//This table contains additional information for query schemas +kexi__querydata + q_id integer REFERENCES kexi__objects(o_id), + q_sql varchar, //raw sql text - stored in the unchanged form entered by a user (or generated) + q_valid boolean, //query schema may be invalid (syntactically or logically, + //but still can be stored) + q_parent_tab integer REFERENCES kexi__objects(o_id) //parent table of this query + +//This table contains information about fields defined in select queries +kexi__queryfields + q_id integer REFERENCES kexi__objects(o_id), + f_order integer, //order of this field in query schema + f_id integer REFERENCES kexi__objects(f_order), //may be NULL if a field is asterisk + f_tab_asterisk integer REFERENCES kexi__objects(o_id), //if this is "single-table" asterisk + //this member references to valid tables id, otherwise is NULL + f_alltab_asterisk boolean //true if this is "all-tables" asterisk, otherwise false + +//This table contains information about tables used by select queries +kexi__querytables + q_id integer REFERENCES kexi__objects(o_id), + t_id integer REFERENCES kexi__objects(o_id), //references to table used by given q_id + t_order integer //order of t_id table in query schema's tables list + + diff --git a/kexi/doc/dev/kexidb_sql.txt b/kexi/doc/dev/kexidb_sql.txt new file mode 100644 index 00000000..128bbae4 --- /dev/null +++ b/kexi/doc/dev/kexidb_sql.txt @@ -0,0 +1,36 @@ +--------------------------------------------------------- + KexiDB Common SQL definition + Copyright (C) 2003 Jaroslaw Staniek js at iidea dot pl + Started: 2003-09-10 + Kexi home page: http://www.koffice.org/kexi/ +--------------------------------------------------------- + +0. Preface +---------- +Below is definition (formal grammar and comments) for SQL used externally by KexiDB. +"Externally" means that this language is visible to the user and can be used +by her/him to define queries. + +Many attempts has been done to create common part of many SQL versions that +are currently in everyday use, mainly: +- SQLite +- MySQL +- PostgreSQL + + +1.1 CREATE TABLE +---------------- + +<CREATE_TABLE> ::= CREATE TABLE <table_name> ( + <field_def>[,<field_def>]* + [,<table_constraint>]* + ) +<field_def> ::= <field_name> <field_type> <field_constraint> + +Note +---- +CREATE TABLE statement could be added to KexiDBSQL for advanced users convenience, +although tables can be easier created with gui. CREATE TABLE for KexiDB have +non-standard options KexiDB-specific. + +TODO....... diff --git a/kexi/doc/dev/kexisql_grammar_notes.txt b/kexi/doc/dev/kexisql_grammar_notes.txt new file mode 100644 index 00000000..9f80ed69 --- /dev/null +++ b/kexi/doc/dev/kexisql_grammar_notes.txt @@ -0,0 +1,62 @@ +/* Jaroslaw Staniek: + TAKEN FROM his compiler's parser + AS EXAMPLE FOR LUCIJAN'S KEXISQL PARSER */ + + + +exp: exp3 { $$->prn(); } + | exp OR exp3 { $$ = new NOpLog($1,OR,$3); $$->prn(); } + ; +exp3: exp3n {/*default*/} + | exp3 AND exp3n { $$ = new NOpLog($1,AND,$3); } + ; +exp3n: exp2 {/*default*/} + | NOT exp3n { $$ = new NOp1arg(NOT,$2); } + ; +exp2: exp1 {/*default*/} + | exp1 op_rel exp1 { $$ = new NOpRel($1,$2,$3); } + ; +exp1: exp0 {/*default*/} + | exp1 op_ar1 exp0 { $$ = new NOpAr($1,$2,$3); } + ; +exp0: exp_poj {/*default*/} + | exp0 op_ar0 exp_poj { $$ = new NOpAr($1,$2,$3); } + ; + + + + +* prior.2 - relational oper. */ +op_rel: '=' { $$='='; } + | '<' { $$='<'; } + | '>' { $$='>'; } + | "<=" { $$=REL_LESS_EQ; } + | ">=" { $$=REL_GREAT_EQ; } + | "<>" { $$=REL_NOT_EQ; } + ; +/* prior.1 - arytmetic oper. +,- */ +op_ar1: '+' { $$='+'; } + | '-' { $$='-'; } + ; +/* prior.0 - arytmetic oper. *,/ */ +op_ar0: '*' { $$='*'; } + | '/' { $$='/'; } + ; +exp_single: single {/*default*/} + | '(' exp ')' { /*$$=new NOp1arg(0, $2);*/ $$=$2; } + | '-' exp_single %prec OP_MINUS { $$=new NOp1arg('-', $2); } + | '+' exp_single %prec OP_PLUS { $$=new NOp1arg('+', $2); } + ; +single: const {/*default*/} + | variable {/*default*/ } + | function_call {/*default*/} + +const: CONST_BOOL { $$ = new NConstBool(yylval.bval); } + | CONST_INT { $$ = new NConstInt(yylval.ival); } + | CONST_STR { $$ = new NConstStr(yylval.sval); } + ; + + + + + diff --git a/kexi/doc/dev/lib_dependency.odg b/kexi/doc/dev/lib_dependency.odg Binary files differnew file mode 100644 index 00000000..d3a72095 --- /dev/null +++ b/kexi/doc/dev/lib_dependency.odg diff --git a/kexi/doc/dev/lib_dependency.png b/kexi/doc/dev/lib_dependency.png Binary files differnew file mode 100644 index 00000000..29ed24a7 --- /dev/null +++ b/kexi/doc/dev/lib_dependency.png diff --git a/kexi/doc/dev/mysql_bugs.txt b/kexi/doc/dev/mysql_bugs.txt new file mode 100644 index 00000000..9e3a76f2 --- /dev/null +++ b/kexi/doc/dev/mysql_bugs.txt @@ -0,0 +1,6 @@ +2003-10-06 lucijan, mysql Ver 12.21 Distrib 4.0.14, for pc-linux-gnu (i686): + +parser doesn't allow "SELECT 1, 2, 3, * FROM fish" +but allows "SELECT *, 1, 2, 3 FROM fish" and "SELECT 1, 2, 3, fish.* FROM fish" + +sqlite and postgress support "SELECT 1, 2, 3, * FROM fish" thouugh diff --git a/kexi/doc/dev/naming_conventions.txt b/kexi/doc/dev/naming_conventions.txt new file mode 100644 index 00000000..8d34f97a --- /dev/null +++ b/kexi/doc/dev/naming_conventions.txt @@ -0,0 +1,137 @@ +--------------------------------------------------------- + Kexi Naming Conventions + + These rules apply to Kexi Team developers + There are also guidelines for future naming decissions. + + Started: 2003-10-17 + Copyright (C) 2003 Kexi Team + Kexi home page: http://www.kexi-project.org/ +--------------------------------------------------- + +1. Namespaces +To simplify class names and make these names shorter, we use namespaces. + +1.1. KexiDB namespace + +This denotes KexiDB module. All classes from kexidb/ directory are in KexiDB +namespace.KexiDB-compatible database drivers (from kexidb/drivers/ +subdirectories are not in this KexiDB namespace. + + +1.2. KexiWindow ??? + +#TODO + +2. Directories + +plugins/<subdirs> + any plugins like Kexi dialogs for table altering, query desinger, etc.; + one subdirectory per plugin; each subdirectory is a KDE module + +widgets/<subdirs> + any widgets that are not dependent on core nor kexidb, thus reusable + in other projects; one subdirectory per widget; all subdirectories are linked + together with static compilation to single common library + +3rdparty/<subdirs> + any modules that can be considered as external (not necessarily optional) + + +3. Creating documentation + +- Doxygen (www.doxygen.org) is used for generating Kexi developer documentation. +- default target directory of these docs in html format is: doc/html for all sources + and doc/kexidb/html for kexidb-only docs +- one step (..) up from mentioned dirs are places for .doxygen project files used + for docs generating +- Single-line comments are created begginning with: //! +- Multi-line comments are created begginning with /*! or /** +- Style of comments (/*! of /**) for given file should be preserved + +Example 3.1: Comments for non-void functions, adding information about parameters: + +/*! Displays value of \a x. + \return true if displaying is successfull */ +bool display(int x); + +Notes for example: +-\return special Doxygen's tag is used to describe that we return +something in the method (\returns will not work for Doxygen!). +-Clause should be started from capital letter and terminated with a dot. +-"\a" special tag should be used before inserting argument names (names are +equal to these from the method's definition) - the names will be therefore +highlighted by Doxygen. + +-For more sophisticated methods (with more arguments), you can as well +use \param tag, e.g.: + +/*! +\param x horizontal position +\param y vertical position +\param col color of the box +*/ + +-Methods/functions should be documented in header files (.h), not in implementation + files. This allows easier inspection for users of the source code. +-Comments from implementation files can be turned into + additional documentation, if really needed (when we use "/*!") + and this also will be included to generated docs if Doxygen project has enabled appropriate + option for doing this. +-Classes should be also documented -comments put just as the lines + before "class keyword. + +-to add reference to similar or related function, use \sa tag, e.g.: +/*! blablabla + \sa bleble +*/ + +-to mark a code fragment that someting is TO DO, you can use \todo tag, e.g.: + +/*! \todo (js) it is so hard to implement! +*/ + +-example above shows that adding e.g. own nick inside the brackets what can help +to recognise who marked given fragment. + +4. Indentation +4.1 We can use the rule as in the rest of KDE code. +example: + QString objectName(); //wrong + QString objectName(); //ok +rule: dont use tabs between words. + +4.2 To avoid many indentation levels, we can use: + +void mymethod() +{ + if (!something) + return; + if(!something_else && .....) + return + do_something(); +} + + instead of: + +void mymethod() +{ + if (something) { + if(something_else && .....) { + do_something; + } + } +} + +This is good, because made qt and kde sources readable. + +4.3 Indentation within classes declaration + +class MyClass { + public: + MyClass(); + void method(); + protected: +}; + +ANYWAY: we use indentation. diff --git a/kexi/doc/dev/pgsql_issues.txt b/kexi/doc/dev/pgsql_issues.txt new file mode 100644 index 00000000..9e21e4ac --- /dev/null +++ b/kexi/doc/dev/pgsql_issues.txt @@ -0,0 +1,7 @@ + +1. Dynamic (non-buffered cursors) in PostgreSQL +To avoid big memory consuming, we will need to use backend-side (native) cursors +with "DECLARE CURSOR" statement. Otherwise KexiDB::Cursor needs to be buffered. + +http://archives.postgresql.org/pgsql-interfaces/2000-09/msg00082.php + diff --git a/kexi/doc/dev/settings.txt b/kexi/doc/dev/settings.txt new file mode 100644 index 00000000..ef203cef --- /dev/null +++ b/kexi/doc/dev/settings.txt @@ -0,0 +1,168 @@ +f----------------------------------------------------------- +Settings stored in 'kexirc' config file + +This is official list. +All other settings are unofficial and are subject to change. + +Started: 2004-08-20, js +----------------------------------------------------------- + +Group: MainWindow +# percentage width of the Project Navigator pane +-LeftDockPosition [integer: 0..100] + +# True if the Project Navigator pane is visible after startup. +-ShowProjectNavigator [boolean] (default: true) + +# True if single click should open item in the Project Navigator. +# Otherwise double click should be used to open item. +# Meaningful when "single click to open files" option is set +# in the Control Center. +- SingleClickOpensItem [boolean] (default: false) + +# Percentage property editor's width +-RightDockPosition [integer: 0..100] + +# True if "hover close button" should be available for tabs in the main window. +# Only affects IDEAl user unterface mode. +-HoverCloseButtonForTabs [boolean] (default: false) + +Group: PropertyEditor +-FontSize [integer] + +Group: Notification Messages +-dontAskBeforeDeleteRow [boolean] (default: false) + +-askBeforeOpeningFileReadOnly [boolean] (default: true) + +# If true, warning messages related to plugins, e.g. +# "Errors encountered during loading plugins" +# will not be displayed on the application's startup. +-dontShowWarningsRelatedToPluginsLoading [boolean] (default: false) + +Group: General +# Especially useful for SQL-related messages +# default=true for advanced Kexi mode +NOT YET IMPLEMENTED: -alwaysShowDetailsInMsgBoxes [boolean] + +# If true, Kexi Debugger internal window will be displayed. +# In the future the window will be probably used for debugging other features +# like scripts or macros. This option is useful for Kexi Developers. +# Only available when KEXI_DEBUG_GUI compile time option is defined. +-showKexiDBDebugger [boolean] (default: false) + +Group: Recent Dirs +-lastVisitedImagePath [stringlist] # used for open/save dialogs for image files + # see KexiImageBox::slotInsertFromFile() and slotSaveAs(); + +Group: Startup +-OpenExistingType [File|Server] +-ShowStartupDialog [boolean] +#default file db driver name, used on file db creation: +TODO: -DefaultFileDBDriverName [string default="sqlite3", can be also "sqlite2"] + +Group: TableView +TODO: -add default values for KexiTableView::Appearance + +Group: TableDesigner +-autogeneratePrimaryKeysOnTableDesignSaving [boolean] +TODO: -defaultFieldType [the list of types], default=Text +TODO: -autoPrimaryKeyForFieldNames [stringlist] +TODO: -defaultTextFieldLength [uint, <255] default=50 +TODO: -defaultIntegerFieldSubtype [the list of types (byte, short, etc.)] default=long + +Group: QueryDesigner +TODO: -autoJoinOnTableInserting [boolean] + +Group: KeyboardNavigation +-cursorPlacementAfterLastOrFirstFormField [stringlist: nextOrPrevRecord|firstOrLastField(default)] + +Group: Forms +TODO:-overrideStyleName [string] (empty if do not override) +TODO:-doNotFocusAutonumberFields [boolean] (true by default; when this and autoTabStop for a form is true, + autonumber text fields are skipped) + implement this in KexiFormView::afterSwitchFrom() +TODO:-appendColonToAutoLabels [boolean] (true by default; when true, colon character is appended + to autolabel text) +TODO:-makeFirstCharacterUpperCaseInCaptions [boolean] (true by default; when true, first character + in autolabel or popup menu caption text is converted to upper case. + Usable especially when no field's caption is provided) +TODO:-labelPositionInAutoLabels [enum: Left, Top] (Left by default) + +TODO:-gridSize [uint] (10 by default) + +Group: NewFormDefaults +TODO:-styleName [string] +TODO:-autoTabStop [boolean] + +Group: ImportExport +# Default character encoding for MS Access MDB/MDE files (older than 2000). +# Currently used by in Advanced Options of Importing Wizard. +# Useful if you are performing many imports of MS Access databases. +# Valid values can be "cp 1250", "cp 1251", etc. Case insensitive. +# If not provided, system default will be is assumed. +-DefaultEncodingForMSAccessFiles [string] + +# Default character encoding for importing CSV (Comma-Separated Value) files. +# If not provided, system default will be is assumed. +-DefaultEncodingForImportingCSVFiles [string] + +# True if options should be visible in the "CSV Export dialog". +-ShowOptionsInCSVExportDialog [boolean] (false by default) + +# If provided, appropriate options for CSV Export Dialog will be loaded +-StoreOptionsForCSVExportDialog [boolean] (default: false) + +# Default delimiter used for exporting CSV (Comma-Separated Value) files. +-DefaultDelimiterForExportingCSVFiles [string] (default is ",") + +# Default text quote character used for exporting CSV (Comma-Separated Value) files. +-DefaultTextQuoteForExportingCSVFiles [string] (default is ") + +# Default character encoding for exporting CSV (Comma-Separated Value) files. +# If not provided, system default will be is assumed. +# Only used when StoreOptionsForCSVExportDialog option is true. +-DefaultEncodingForExportingCSVFiles [string] + +# Strip leading and trailing blanks off of text values when importing +# CSV (Comma-Separated Value) files. +-StripBlanksOffOfTextValuesWhenImportingCSVFiles [boolean] (default: true) + +# Default setting used to specify whether column names should be added as the first row +# for exporting CSV (Comma-Separated Value) files. +# Only used when StoreOptionsForCSVExportDialog option is true. +-AddColumnNamesForExportingCSVFiles [string] (default: true) + +# Maximum number of rows that can be displayed in the CSV import dialog. +# Used to decrease memory consumption. +-MaximumRowsForPreviewInImportDialog [int] (default: 100) + +# Maximum number of bytes that can be loaded to preview the data in the CSV +# import dialog. Used to decrease memory consumption and speed up the GUI. +-MaximumBytesForPreviewInImportDialog [int] (default: 10240) + +Group: Recent Dirs +# A list of recently displayed directories in file dialogs related to CSV + import/export. +-CSVImportExport [string list] + +# A list of recently displayed directories in "Source database" file dialog + of Project Migration +-ProjectMigrationSourceDir [string list] + +# A list of recently displayed directories in "Destination database" file + dialog of Project Migration +-ProjectMigrationDestinationDir [string list] + +# A list of recently displayed directories in "Open existing project" + and "Create new project" file dialog of Startup Dialog +-OpenExistingOrCreateNewProject [string list] + +# A list of recently displayed directories in file dialogs related to images + (e.g. images within forms). +-LastVisitedImagePath [string list] + +# A list of recent displayed directories in a file dialogs used for dowloading + example databases (Get Hot New Stuff) +-DownloadExampleDatabases [string list] + diff --git a/kexi/doc/dev/sql_engine_specifics.txt b/kexi/doc/dev/sql_engine_specifics.txt new file mode 100644 index 00000000..3db65fdf --- /dev/null +++ b/kexi/doc/dev/sql_engine_specifics.txt @@ -0,0 +1,22 @@ +SQL Engines - Specifics +----------------------- + +This document lists specifics among SQL engines. We need to remember about them when implementing features of KexiDB and designing KEXISQL. + +Legend: + == works, - == doesn't work, ? == not tested yet + +== 1. Ordering by computed column == +Examples: select rand() from T order by 1; + select 1 from T order by 1; +MySQL: + +SQLite: - +PostgreSQL: ? + +== 2. Using more than just "*" in the column list == +Example: select *, 1 from T; +MySQL: - +SQLite: + +PostgreSQL: ? + +Notes: select T.*, 1 from T; works everywhere + diff --git a/kexi/doc/dev/sqlite_issues.txt b/kexi/doc/dev/sqlite_issues.txt new file mode 100644 index 00000000..9e9ebf56 --- /dev/null +++ b/kexi/doc/dev/sqlite_issues.txt @@ -0,0 +1,200 @@ +--------------------------------------------------------- + SQLITE DRIVER IDEAS, ISSUES, PROPOSALS + Copyright (C) 2003 Jaroslaw Staniek js at iidea dot pl + Started: 2003-07-09 + Kexi home page: http://www.koffice.org/kexi/ +--------------------------------------------------- + + +1. In most situations (especially on massive data operations) we do not want get types of the columns, +so: + +PRAGMA show_datatypes = OFF; + + +2. SQLite automatically adds primary key to the table if there is no such key. +Such pkey column is not visible for statemets like 'select * from table', +'select oid,* from table' need to be executed to also get this special column. + +See section '3.1 The ROWID of the most recent insert' of c_interface.html file. + + +3. For smaller tables (how small? -- add configuration for this) sqlite_get_table() 'in memory' +function could be used to speed up rows retrieving. + + +4. Queries entered by user in the Query Designer should be checked for syntactically or logically validity and transformed to SQLite-compatible form befor execution. It is nonsense to ask SQLite engine if the given sql statement is valid, because then we wouldn't show too detailed error message to the user. + + +5. SQLite not only doesn't handles column types but also doesn't checks value sizes, eg. it is possible to insert string of length 100 to the column of size 20. +These checks should be made in KexiDB SQLite engine driver. In fact for each driver these checks could be made because user wants get a descriptive, localized, friendly message what's wrong. No single engine provides this of course. We need to store such a parameters like field size in project meta-data as sqlite doesn't stores that in any convenient way. It stores only 'CREATE TABLE' statement, as is. + + +6. Possible storage methods for SQLite database embedded in Kexi project: + A. Single SQLite-compatible database file (let's name it: .sqlite file) + - Advantages: Best deal for bigger databases - no need for rewriting data form SQLite file to another, + fastest open and save times. DB data consumes disk space only once. Other applications that uses SQLite library could also make use of standard format of .sqlite file's contents. Kexi project and data would be easily, defacto, separated, what is considered as good method in DB programming. + - Disadvantages: User (who may want to transfer a database) need to know that .kexi file doesn't stores his data but .sqlite is for that. + + B. Single SQLite-compatible database file embedded inside Kexi project .kexi file. + SQLite requires an access to a file in its own (raw) format to be available somewhere in the path. If SQLite storing layer could be patched to adding an option for seek to given file position, sqlite data can be stored after Kexi project data. When sqlite raw data file could be saved after a Kexi project's data, rewriting the project contents should be performed (and this is done quite frequently). So, finally storing both files concatenated during normal operations is risky, costly and difficult to implement cleanly. + - Advantages: User do not need to know that there is sqlite used in Kexi as embedded DB engine (and even if there is any sql engine). Transferring just one file between machines means successfully transferring data and project. + - Disadvantages: lack of everything described as advantages of A. method: difficult and costly open and save operations (unless SQLite storing layer could be patched). + + Extensions and compilations of the both above methods: + - .sqlite files are really good compressable, so compress option can be added (if not for regular saving, then at least for "Email project & data" or 'Save As' actions. For these actions concatenating the sqlite data with Kexi project's data would be another option convenient from user's point of view. + + CURRENT IMPLEMENTATION: B way is selected with above extensions added to the TODO list. + + +7. SQLite-builtin views are read-only. So the proposal is not to use them. Here is why: + We want have rw queries in Kexi if main table in a query is rw. + <DEFINITION>: Main table T in a query Q is a table that is not at 'many' side of query relations. + </DEFINITION> + <Example>: + table persons (name varchar, city integer); + table cities (id integer primary key, name varchar); + + DATA: [Jarek, 1]-------[1, Warsaw] + / + [Jakub, 1]-----/ + + query: select * from persons, cities + Now: 'cities' table is the main table (in other words it is MASTER table in this query). + 'cities' table is rw table in this query, while 'persons' table is read-only because it is at 'many' side + in persons-cities relation. Modifying cities.id field, appropriate persons.city values in related + records will be updated if there is cascade update enabled. + </Example> + IDEAS: + A) Query result view (table view, forms, etc.) should allow editing fields from + main (master) table of this query, so every field object KexiDB::Field should have a method: + bool KexiDB::Field::isWritable() to allow GUI check if editing is allowed. Look that given field object + should be allocated for given query independently from the same field allocated for table schema. + The first field object can disallow editing while the latter can allow editing (because it is + component of regular table). + B) Also add method for QString KexiDB::Field that returns i18n'd message about the reasons + of disallowing for editing given field in a context of given query. + + +---------------------------------------------------------------- +8. ERRORS Found +8.1 select * from (select name from persons limit 1) limit 2 + -should return 1 row; returns 2 + +---------------------------------------------------------------- + +HINTS: + +PRAGMA table_info(table-name); +For each column in the named table, invoke the callback function +once with information about that column, including the +column name, data type, whether or not the column can be NULL, +and the default value for the column. + + +--------------------------------------------------------------- +OPTIMIZATION: + +Re: [sqlite] Questions about sqlite's join translation +Od: +D. Richard Hipp <drh-X1OJI8nnyKUAvxtiuMwx3w@public.gmane.org> +Odpowiedz do: +sqlite-users-CzDROfG0BjIdnm+yROfE0A@public.gmane.org +Data: +sobota 9 pa¼dziernika 2004 02:59:06 +Grupy: +gmane.comp.db.sqlite.general +Nawi±zania: 1 + +Keith Herold wrote: +> The swiki says that making JOINs into a where clause is more efficient, +> since sqlite translates the join condition into a where clause. + +When SQLite sees this: + + SELECT * FROM a JOIN b ON a.x=b.y; + +It translate it into the following before compiling it: + + SELECT * FROM a, b WHERE a.x=b.y; + +Neither form is more efficient that the other. Both will generate +identical code. (There are subtle differences on an LEFT OUTER +JOIN, but those details can be ignored when you are looking at +things at a high level, as we are.) + + > It also +> says that you make queries more effiecient by minimizing the number of +> rows returned in the FROM clause as far to the left as possible in the +> join. Does the latter matter if you are translating everything into a +> where clause anyway? +> + +SQLite implements joins using nested loops with the outer +loop formed by the first table in the join and the inner loop +formed by the last table in the join. So for the example +above you would have: + + For each row in a: + For each row in b such that b.y=a.x: + Return the row + +If you reverse the order of the tables in the FROM clause like +this: + + SELECT * FROM b, a WHERE a.x=b.y; + +You should get an equivalent result on output, but SQLite will +implement the query differently. Specifically it does this: + + For each row in b: + For each row in a such that a.x=b.y: + Return the row + +The trick is that you want to arrange the order of tables so that +the "such that" clause on the inner loop is able to use an index +to jump right to the appropriate row instead of having to do a +full table scan. Suppose, for example, that you have an index +on a(x) but not on b(y). Then if you do this: + + SELECT * FROM a, b WHERE a.x=b.y; + + For each row in a: + For each row in b such that b.y=a.x: + Return the row + +For each row in a, you have to do a full scan of table b. So +the time complexity will be O(N^2). But if you reverse the order +of the tables in the FROM clause, like this: + + SELECT * FROM b, a WHERE b.y=a.x; + + For each row in b: + For each row in a such that a.x=b.y + Return the row + +No the inner loop is able to use an index to jump directly to the +rows in a that it needs and does not need to do a full scan of the +table. The time complexity drops to O(NlogN). + +So the rule should be: For every table other than the first, make +sure there is a term in the WHERE clause (or the ON or USING clause +if that is your preference) that lets the search jump directly to +the relavant rows in that table based on the results from tables to +the left. + +Other database engines with more complex query optimizers will +typically attempt to reorder the tables in the FROM clause in order +to give you the best result. SQLite is more simple-minded - it +codes whatever you tell it to code. + +Before you ask, I'll point out that it makes no different whether +you say "a.x=b.y" or "b.y=a.x". They are equivalent. All of the +following generate the same code: + + ON a.x=b.y + ON b.y=a.x + WHERE a.x=b.y + WHERE b.y=a.x +--------------------------------------------------------------- + diff --git a/kexi/doc/dev/tableview_issues.txt b/kexi/doc/dev/tableview_issues.txt new file mode 100644 index 00000000..568fc28e --- /dev/null +++ b/kexi/doc/dev/tableview_issues.txt @@ -0,0 +1,27 @@ +--------------------------------------------------------- + KexiTableView (and KexiDataTableView) Issues Document + + Started 2003-10-13 + + Copyright (C) 2003 Jaroslaw Staniek js at iidea dot pl + (C) OpenOffice Polska 2003 + Kexi home page: http://www.kexi-project.org/ +--------------------------------------------------- + +2003-10-13 +Assumptions +1. Now, I dont think about yet about features like data editing, sorting etc. + so, I try to forget about KexiTableList, until sorting will be readded. + +2. I will try to reimpl. KexiTableView to accept (reuse) raw data offered internally by KexiDB::Cursor: + const char ** recordData() const; + This is easy at least for buffered read-only data. So, we also consider that cursor used as datasource + is buffered. + It would be way more offective than using soooo many allocations and classes with KexiTableItem ; + btw, KexiTableItem is oversized: KexiTableView pointer is stored with each KexiTableItem :) + +result: for 1st step I keep KexiTableItem with some changes, code polishing +- KexiTableItem is internal class so accessors will be removed; + shortly speaking - KexiTableItem is just a data structure + + |