Kexi 1.0: Detailed Changes
(since 0.9 version)
See also: 1.0 Beta 1 Announcement.
- fixed possible crash when an object has beed saved with a different name than proposed
- 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
- applications/x-kexi-connectiondata MIME type defined
- internal BLOB storage framework added
- Fixed autogenerating object names (e.g. tables, queries) based on caption: latin1 base name can be now chosen by translator
- Plugins: added servicetype property: X-Kexi-SupportsDataExport (boolean); true for tables and queries
- 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
- custom "Identifier" property type and editor added (allows only entering identifiers); used in Table/Form/Report Designers
- possibility of adding non-db-aware windows/tabs in Kexi
- fix for 'subType' combo box
- avoid possible infinite recursion
- selecting non-integer type group using 'type combo' clears PKEY flag, if set
- fixed retrieving field captions and descriptions
- 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
- avoid asking twice for saving changes to the design on window closing
- find unique name for autogenerated primary key fields
- a few bugs for relationships creation fixed
- 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 the Property Pane; the combo now reacts on deleting/creating/renaming of table or query
- fixed redrawing (in an unoptimized way)
- 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
- 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
- fixed possible crash when switching back from SQL View to Design View
- fixed displaying criteria if WHERE section contains '('
- tables' positions are preserved if possible when relations view updating is needed
- "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
- fixed crash when there're missing widgets
- record is properly fetched on subsequent switching to Data View mode, specially after data source changes
- data aware 'text editor' widget added
- we're not creating additional (blue) resize handle set, but just change color of existing set thus resizing works well even if we're during inline editing
- copy 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 to its 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
- Data source tab in the Property Pane implemented
- fixed switching property buffers when switching between child windows
- record navigator is now hidden if there's no data source assigned for a form
- fixed i18n for property captions
- fixed filling enum values
- better handling multiple widget selection; fixes for widget info label
- 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
- inline editing enabled for checkbox widget
- width of inserted widgets' size hint increased a bit to for better usability
- better support for Auto Fields, including drag&drop
- editor inside Auto Field is visible at design time
- version information is loaded/saved within form's UI string
- field editor's default focus policy is now inherited from internal editor
- autocaption is set properly for field editor on design time
- field editor's labelCaption is no longer needed
- avoid adding accelerators
- properties like "iconText" are properly hidden
- when a widget is deleted or cut, its parent container become selected
- added possibility of inserting autofields using 'Insert fields' button from Data Source tab
- 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
- "other widgets" toolbar popup added for clarity
- data-aware image box widget": "insertFromFile", "saveAs", "cut", "copy", "paste", "delete", "properties" popup actions added
- "readOnly" property added for image, spinboxes and dbfield widgets
- widget's look&feel can differ depending on the view mode
- support for static and data-aware images boxes; properties implemented: scaling (aspect ration can be kept), horizontal/vertical alignment
- 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.
- 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.
- handle Kexi-specific property editor items
- accessibility: allow changing the tab order of widgets in the Edit Tab Order dialog using keyboard
- AutoField widget: update label for font/palette change, display "Unbounded Auto Field" text when no data source is set (in design time, like for image box); 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 frame widget "KexiFrame", will provide more features; backward compatible with QFrame
- do not allow to move top-level widget's position using arrow keys
- memory for data is now properly freed before closing a form
- infinite loop removed when updating multiple selection
- "Assign Action" dialog cleaned
- versioning added for widget library plugins; this can also avoid conflicts between plugins as we've just renamed them
- Data source pane: disable widget's data source combo box when there is no form's data source is defined
- Open, edit, save and execute scripting code.
- Catch stdout and stderr and display them. On exceptions jump to the line of code where it got thrown.
- Switch between supported interpreter bindings via propertyeditor.
- Configure interpreter-dependend options via property editor.
Scripting Library (KROSS)
- Framework: Let everything, interpreters and wrappers, be a plugin.
- Framework: Load plugins only on demand.
- Framework: Call scripting functions from within native code.
- Framework: Callback of native functionality from within scripting code.
- Framework: Integrate handling of classes and instances.
- Embedding: Wrap KexiDB to access the whole database-functionality Kexi provides.
- Embedding: Wrap the Kexi application to access Kexi runtime-stuff like the KexiMainWindow.
- Embedding: Support QObject, signals and slots and Q_PROPERTY's.
- Extending: Enable using of GUI-toolkits like TKinter or PyQt.
- Extending: Add some example scripts to demonstrate how scripting could be used to extend Kexi.
- Security: Integrate Zope RestrictedPython to provide a restricted python environment to execute python scripting code in a secure sandbox.
- Interpreter: implement Python binding
Data and Project Migration
Data and Project Migration Wizard
- 'back' button works well on "dest. type" page when file-based driver is used
- user is warned when no source filename was specified
- usability: after successful import, the project is opened
- 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
- Implemented moving kexi projects from database servers to database files. 'kexi_ _objects' table contents are properly copied if existed in source database, so queries, forms etc. are properly imported.
- GUI improvements
- 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.
- "All Supported Files" filter added to Kexi file dialogs
- 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
- added "Always use this encoding in similar situations" option to "Advanced options" dialog (saved to Kexi config file).
- if a destination for imported project is a server, it is also opened after import, if user wanted this
- hide Kexi file extensions in source connection file dialog's filter
CSV Data Import and Export
- 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
- floating-point values are properly parsed
- empty cells are supported
- new table name is based on provided filename
- deadlock removed when importing CSV text like ","
- 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).
- usability: integer spin box used for "Start at line" option instead of a combo box
- CSV Export dialog added (also for copying to clipboard) with storable export options
- fixed handling line endings inside strings
- importing and detection of time and date/time types added
- Export: CRLF characters are used as in RFC 4180
- Export: quote characters are escaped inside strings
- Export: date/time values are exported without "T" inside (from ISO format)
- optimalization for large data: only about 100 rows are loaded for preview
- import dialog's layout fixed
- missing column with primary key is added if user wants it
- optimized importing large (many thousands of rows) tables: Table GUI is not used to store entire table before importing; only current record is kept in memory buffer
- progress dialog added on importing large data; importing can be cancelled
- tabulator is default field delimiter for clipboard data
MS Access Database Import
- 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)
MySQL Database Import
Data Table Widget
- update combobox items after change of list data
- combo box popup behaves more like a normal combo (highlighting, selecting)
- added "what's this" support for table columns
- fixed possible crashes for comboboxes within non-db-aware table views
- row repainting fixed when currently highlighted row has changed
- Alt+Down shortcut can be used to drop down combo box (previously only F4 worked)
- Bug #114697: crash fixed in combo box
- Fixed bug for switching sort order
- better sorting: NULL values are smaller than everything else; special sorting for date, time, date/time, boolean, integer and floating-point data types
- clearing text removes value in combo box field for "enum" mode
- failed accepting of row editing now cancels window closing
- fixes for updating row data (this was sometimes visible in Table Designer)
- fixed entering row number in the row navigator (the same within forms)
- Usability: Date, Date/Time and Time cell editors completely reimplemented
- data for large table view is destroyed without blocking GUI (the same within forms)
- date, time and date/time values are displayed using KDE settings
Property Editor Pane and Property Library
- KexiProperty library moved to more generic KoProperty
- widget class is displayed above property editor
- blinking reduced on property buffer switching
- added 2 custom tabs: Data Source, Widgets
- editor within property panel is accepted before buffer switching
- 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.
- properties now have 'sortingKey', so the order of properies is maintained
- 'list data' introduced to clearly define 'keys' and 'strings' for combobox-like editors
- cursor editor fixed
- 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
- Editor: possible crashes fixed
- show preview box in visible area
- fixed entering text into string-type editors with 'autoSync' flag
- repaint fixes when column width changes or when persistent selection is set
- better 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
- preserve "changed" flags (marked with BOLD) between property set switching
- 'close all' works well if there are more than one yes/no/cancel dialogs required to show
- missing icons added: small icons cleaned up; added better query/form/report/script icons
- crash fixed in 'detach window' action (Childframe mode)
- Navigator: when items renaming, treat "*" ("changed" flag) as a special character, not a part of the item's name
- better readibility: new project type selector uses listview, not icon view
- Toplevel (buggy) and Tabbed (redundant) KMDI modes hidden in Window menu; Changing MDI mode now requires application restart
- 'Create' menu renamed to more typical 'Insert'; 'Data' menu moved after 'Format'
- project navigator: usability fixes
- project navigator visibility flag is now stored in config file (usable for IDEAl mode)
- many i18n'd messages fixed
- "File->Export->Data Table" and "Edit->Copy Special->As Data Table" actions added
- 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 appriopriate setting to kexirc for changing this)
- 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
- "Dangerous" flag set for potentially destructive dialogs
- 'single click opens' mode is off by default, can be turned on
- added Simple Printouts with Print Preview and Page Setup windows
- 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 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
- do not paint invalid values of type time, date or date/time
KexiDB (Database Support Library)
- field names converted to lowercase in memory to avoid problems with comparisons
- TableOrQuerySchema helper class added
- Database Properties utility class added to API
- More verbose error messages: Error messages and result numbers can be now inherited, so less information will be lost while displaying message e.g. on failed cursor opening.
- 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".
- testing connection executes "USE DATABASE" if needed (e.g. for PostgreSQL)
- MySQL, SQLite drivers: avoid double memory freeing.
- fixed crash for SQLite2 driver
- Update for the current KexiDB API.
- Update for the current KexiDB API.
- connection data editor improved; connection data is now storable; added support for adding/deleting/editing connection data
- "-type connection" command line arg added (i.e. support for applications/x-kexi-connectiondata mime type)
- 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.
- Better usablity of 'Open Existing' tab page and 'New Project' wizard
- Files like MS Access .mdb can be clicked and then Import Wizard will pop up with preselected parameters. This also works using the command line options.
- check for existence of a file user has selected to open
- added --print and --print-preview command line options
- Project Migration Wizard is proposed if a server-based database is incompatible with Kexi and cannot be opened
- "--skip-dialog" command line option added. Skips displaying connection dialog 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.
- opened files are now locked for writing by default; related error messages improved