Cool main window for KEXI 3.2

Authored by staniek on Mar 29 2018, 9:20 AM.


R71:79bba0281309: GIT_SILENT Remove possible nullptr dereference
R71:28d1b5d16a58: TRIVIAL: kexiformview: check results of initilization and loading of forms
R71:ebdabee77e64: Cool main window for KEXI 3.2
R71:cf238763a241: Be more consistent: Rename KexiDBReportData to KexiDBReportDataSource, rename…
R71:6174ad06910e: Make local toolbar actions hardcoded as icons-only
R71:bcfb5ab18f34: debug--
R71:6b223e2eb542: Global mode selector: disallow deselecting using drag or CTRL+click; on…
R71:86bcaff7e5bf: Add standard menu to the main window, remove custom help popup
R71:e707a1a93f2f: GIT_SILENT Remove unused variables
R71:ec8bfda2deac: Mode selector: allow to disable items, refactor KexiListView a bit
R71:af270f767ddb: SVN_SILENT made messages (.desktop file) - always resolve ours
R71:e9de578c3097: SVN_SILENT made messages (.desktop file) - always resolve ours
R71:5d9cbbdc4acb: GIT_SILENT warnings-- after the recent KProperty 3.1 API change
R71:cdd7411223ff: Merge branch 'master' into cool_main_window-staniek6
R71:c0631b50b406: Make "clear" button smaller in property pane's line edits
R71:c8354adec0d9: Form widgets: hide "objectName" property, it's available in the…
R71:35b9e6e6ef98: Remove CTRL+R shortcut from "Relationships", it would conflict
R71:6b3314fd1446: Switch to KPropertyWidgets 2.99.0 to improve size hint of editor
R71:9a917e582957: GIT_SILENT Some more calligra -> kexi renames
R71:d48e3400be64: KexiWindow: use application-menu icon for the view's context menu
R71:3df240fcac09: 3.0.x: Check if Kexi libs are not newer than 3.0.x
R71:daa3374a767a: Make some of the the project migration data owned to avoid leaks
R71:0022e2147c9e: SVN_SILENT made messages (.desktop file) - always resolve ours
R71:bcabbb88a65d: Fix build for macOS: keep empty definitions of slots
R71:4b51df8615ce: KexiPartInfo: add support for styled object icons, and use them in the GUI
R71:16670685d558: SVN_SILENT made messages (.desktop file) - always resolve ours
R71:822ed8f3a9de: Add support for disabled color in styled icons
R71:976ecda32a10: Merge remote-tracking branch 'origin/master' into cool_main_window-staniek6
R71:ee52902edbb5: GIT_SILENT Add notes and todos for KexiDBReportData::addCondition()
R71:4cbe7f74e71a: SVN_SILENT made messages (.desktop file) - always resolve ours
R71:be475388be7a: GIT_SILENT Fix simple coverity warnings, about dereference of pointers or…
R71:6b11d4dcfff9: Improve searching for the MySQL migration build dependencies
R71:afd03e540433: TRIVIAL: Install private (plugin's) resources to…
R71:7b6d9491ff95: KexiFormView: don't alter actions on destruction (caused "dirty" == true when…
R71:896eea30121a: Port the KexiDataSourcePage to the new style, away from…
R71:5ecd41afd20f: Don't look into subdirectories for plugins because there may be 3.x dirs from…
R71:61414c34fb1e: KexiObjectInfoWidget: fix geometry when object name box is hidden, hide icon if…
R71:0d4c4e2cc114: KexiStyle::darkIcon(): return null icon is the original icon is missing
R71:9da9989f7b18: Fix memory leak in ImportWizard
R71:cafe4b5ea357: KexiDataSourceComboBox: signal/make changes only when really needed
R71:be8a41917c3c: Query designer: add spacer to the property pane, needed at least for now
R71:871b763bff30: Move KexiStyle to kexiutils/style/, add KexiStyle::propertyPane(), add…
R71:eba2de9fc511: Limit number of qDebugs, change some of them to qWarning
R71:7421c9c624b4: Property pane: Allow to set custom text when property current set is missing
R71:09d2c8ad916c: Update after KDb API change: Move KDbLookupFieldSchema::RecordSource to…
R71:34417e8915f2: Use KStandardGuiItem in few more cases
R71:d29faa79be81: Merge branch 'cool_main_window-staniek3' into cool_main_window-staniek5
R71:8fdec2ff7710: Report designer: add this:visibleObjectNameProperty property to property sets
R71:9fc7439b4d51: Add check for being a real Kexi instance
R71:b55b96b2f4f4: GIT_SILENT Avoid nullptr dereferences
R71:0c5f193387ae: Add more sizes for design and edit mode icons
R71:cedbcd2d923c: Update for the new API of KProperty 3.1.0
R71:968084914b81: Improve discovery of PostgreSQL library on Windows
R71:3c95c5298584: Merge remote-tracking branch 'origin/cool_main_window-staniek6' into…
R71:526c0d62efc8: Property pane: replace tabs with tool box
R71:24011e1e9193: Table View: properly find icon for the "QIcon" cell editor factory
R71:73f597e6a710: SVN_SILENT made messages (.desktop file) - always resolve ours
R71:97d6ca62bd09: Forms & property pane: update widget name when changed in the propety pane…
R71:f1bb6430c287: Add support for icon resources to form widget plugins and port the plugins
R71:8f226a1386ba: Main Window: fix slot name: slotShowNavigator -> slotToggleProjectNavigator
R71:16ff05d94880: When in USER MODE: hide property pane, mode selector, fix crashes, don't save…
R71:972ca4d5fdb9: Remove unused KexiPropertyPaneViewBase
R71:e55cd0835c49: Global mode selector: follow view design/data/text mode of windows
R71:c9d9a8667fc5: Add KexiStyle helper with a few specific presets for palette, margins or fonts
R71:b77a92d1ae05: Remove Data/External Data/Tools tabs from the tabbed toolbar
R71:e57172e3a571: Use "list-add" (+) icon for "create new object" action
R71:8befa86153c8: SVN_SILENT made messages (.desktop file) - always resolve ours
R71:6427b1cd5362: SVN_SILENT made messages (.desktop file) - always resolve ours
R71:d3fc10f234f4: Add charcoalGreyDarker
R71:9476fd1a8727: Improve property pane's vertical spacing
R71:fa8f94d8f7d5: fix building the documentation
R71:7f0233a09676: GIT_SILENT Update for the KDbQuerySchemaParameter API change
R71:8fc97ebe4a1d: Table scroll area's column offset can be just -1 in Qt 5, it seems
R71:6b03e418abfa: Forms: use the "imagebox" icon to display in the image box' background, works…
R71:968ac353409c: GIT_SILENT Fix names for tab switching actions
R71:e876f67f378a: Kexi mode selector: use dedicated sidebar icons; add remaining modes: Data…
R71:528264fdd9ac: KexiModeSelector -> KexiGlobalViewModeSelector (make it more specific)
R71:5992e31b8f2a: GIT_SILENT Add missing initializations
R71:ab86a8505ada: Fix minor typos
R71:13470686e955: KexiModeSelector: add shadow and arrow (via KexiStyle)
R71:d8abaf6baf6d: Simplify action names: Save Record -> Accept, Cancel Record Changes -> Cancel
R71:9089afa231d9: Limit application icon size on Mac
R71:cc8ce0cb41c7: GIT_SILENT MDB: Check result of fstat(), lseek() and length of strings
R71:17cbf7725c72: Improve margins of WidgetTreeWidget
R71:26ccd942a210: TRIVIAL: update Kexi app desktop file: icon, service types, categories, remove…
R71:22e17f20de1e: Use KexiObjectViewWidget/KexiObjectViewTabWidget in the main window, remove…
R71:a079ef5dde28: Fix handling mouse release in forms
R71:6c91a19f609d: GIT_SILENT made messages (after extraction)
R71:781a916247a1: TRIVIAL Disable translation of unused/unported code
R71:5bd3d4408133: Add breeze icon for SQL view and use it, and customize "Open in text view"…
R71:b6853bbe1d31: Simplify the query's visual/sql switcher: don't display icons
R71:6a23cd510b8f: Keep apps in the same bin dir so resources that are kept relative to this dir…
R71:eee4f0bb8a17: Improve icon macros and use them
R71:675c7ce52177: TRIVIAL: use KDbUtils::squeezedValue for KexiFormDataProvider::fillDataItems
R71:2ac57cd28ae2: SVN_SILENT made messages (.desktop file) - always resolve ours
R71:3677740affc6: Set breeze as the default widget style that matches current Kexi theme
R71:dfb8d539ba99: Update after KDb API change (added overloads to KDbQuerySchema, removed use of…
R71:cf03988d951f: Fix warnings: rename obsolete QStyleOption*V[2-4] to QStyleOption*
R71:8bbca521a0c4: Action selection dialog: fix layout of top labels
R71:b64e2775286a: Support right-to-left in the Kexi mode selector (arrow, shadow)
R71:0f6cb1d0f6db: GIT_SILENT MDB: Check result of lseek()
R71:cebae061b371: Main menu: don't show paste special, import data/table actions in user mode
R71:8eb18f7e65ff: Fix KUIT messages
R71:d0d48c101d3c: SVN_SILENT made messages (.desktop file) - always resolve ours
R71:a82d09d80c1c: Mode selector: fix 'current item changed' handling
R71:6f23348dbe38: Update after the recent KProperty 3.1 API changes
R71:98273c422ccd: GIT_SILENT: add metadata and app icon files to the visible project files
R71:4dd0f517e3e2: TRIVIAL: check result of FormIO
R71:7f8204a199a5: SVN_SILENT made messages (.desktop file) - always resolve ours
R71:be01c2198f64: Add distribution version to kexi .desktop and appdata.xml files
R71:0a74f7d10c80: GIT_SILENT Check result of KReportRendererBase::render call for printing
R71:63fc159f2f2d: GIT_SILENT typo
R71:61bd70a2f5fc: Improve geometry of the global Locate bar
R71:391202b94be6: KexiWindow: use application-menu icon for the view's context menu
R71:4583168119b1: iconNameForViewMode: add dependency on plugin type (for now the only special…
R71:c9f67ce4910a: Add a width animating KexiWidgetWidthAnimator class
R71:32195981c131: Main window: highlight object: show navigator pane, not toggle
R71:7000e2523763: Add textToDisplayForNullSet attr to KexiView, add this…
R71:c98dbb7edaac: Use document-edit or mode-selector-edit/design icons for edit/design actions
R71:1e42e4b6faea: Improve KexiFadeWidgetEffect so it works OK for property pane too, use it for…
R71:08728b509c05: GIT_SILENT Remove dead code
R71:edddb0a79b96: Update after KDb API change: Remove abbreviations from KDbResultInfo
R71:b5e98e1158eb: KexiPropertyPaneWidget: don't disable property editor
R71:5a53e5588b66: Update after a 'Move KDbQueryAsterisk to separate files' change
R71:7d8382576a16: Don't look into subdirectories for plugins because there may be 3.x dirs from…
R71:0007afb493df: Include KDECompilerSettings and KDECompilerSettings with NO_POLICY_SCOPE as…
R71:1a4e44451132: KexiWidgetWidthAnimator: clear cached pixmap as soon as not needed
R71:65b3f7d1b8f5: Add KexiUtils::askForFileOverwriting()
R71:75554a063004: Separate KexiObjectViewWidget, KexiObjectViewTabWidget and KexiWindowContainer…
R71:ebf8c64032f6: Port to kreport 3.1
R71:0e97fbf139e7: GIT_SILENT Remove unused devtools
R71:50719987705a: GIT_SILENT qDebug() does not need whitespace between args
R71:62f57170b8ea: GIT_SILENT Remove unused code: comparing an array to null is not useful
R71:475cd80561c5: Simplify and improve main application object creation
R71:b1a495d761f7: GIT_SILENT made messages (after extraction)
R71:2544cf9acce5: KexiModeSelector: move private code out of header, add dpointer, add global…
R71:07f8f95a32a5: Documents tab: switch off expanding (like in KEXI 3.1)
R71:c69696834494: GIT_SILENT update year
R71:92161abd3578: Fix 0bf2adee61da2d5e - don't use GLOB if not really needed so we can have…
R71:c9a9459bf4f6: Property pane's object info widget: display icon suitable for dark background
R71:bd0e43ffd09c: GIT_SILENT Minor fixes needed after merge
R71:dc004a71313a: Improve "view navigator"/"view property pane" actions & animations
R71:80a130e9f413: KexiStyle: Add KexiStyledIconParameters helper struct, use QIconEngine for…
R71:ac67ded4827e: GIT_SILENT fix indent
R71:6a345e2934ab: Make order of menu entries more standard: Data, Tools, Settings, Window
R71:2ba9fa921c63: Make Kexi fully co-installable within the major.minor version, app binary is…
R71:0c85d0fb1ae4: Make single click activation work for items on Windows
R71:f9fa91efa012: Move from tabs to property pane
R71:2d91ecefa2a1: TRIVIAL disable translation for unused spreadsheet migration module
R71:e9dd335ad35a: Merge branch 'master' into cool_main_window-staniek6
R71:c8f709c49160: GIT_SILENT fix memory leak for KexiPropertyPaneLineEditProxyStyleGlobal
R71:b26484c5d6d4: TRIVIAL: Make Kexi form widget plugins version follow Kexi version, fix version…
R71:ece6d82e9a7e: When in USER MODE: hide all actions from File except Save, Close tab, Quit
R71:502ab433984c: SVN_SILENT made messages (.desktop file) - always resolve ours
R71:ff40aaf9e15b: Views: keep only design and text view buttons; data view is now part of the…
R71:d28573ad8414: Don't show the visual/sql switcher for query data view
R71:a995e5045e11: Data view mode -> Edit view mode (more generic)
R71:d7b874a9e51c: Make project navigator and property panes animated on show/hide, improve…
R71:6c154284a28c: GIT_SILENT fix doc
R71:bb0d9728134f: Revert "Don't look into subdirectories for plugins because there may be 3.x…
R71:1ed4105fc0a3: SVN_SILENT made messages (.desktop file) - always resolve ours
R71:ca95772bebe2: Merge branch 'cool_main_window-staniek3' into cool_main_window-staniek5
R71:5cb107bcaaed: SVN_SILENT made messages (.desktop file) - always resolve ours
R71:e23646761c08: GIT_SILENT Update after KDb API change: Fix constructors of KDbQueryAsterisk…
R71:7e77d0c4a49e: Fix build for macOS: Q_OS_MAC -> Q_OS_MACOS
R71:f32d245f9d54: SVN_SILENT made messages (.desktop file) - always resolve ours
R71:dec66c5ccd7e: Make KexiView's toolbar more compact
R71:c4460fae979e: Add some support for RTL in the property pane
R71:9e483e1726b2: Port from SmallIcon which no longer works
R71:8b23657cd07b: Update for the recent KDbTableSchemaChangeListener API changes
R71:4b7ca33e7d61: Fix possible crash for this sequence: design new table, go to data view, go to…
R71:01d7fbfda250: Remove garbage from some SVG icons
R71:2e6c15ba412f: TRIVIAL: Add routines to KexiRegisterResource_p.h that can be used to load in…
R71:cda699c3408e: Action selection dialog: explicitly handle double clicking instead of single…
R71:33bb01dadafe: PropertyCommand: don't re-select form on undo
R71:46cbdb93554e: Add KexiModeSelector (WIP)
R71:8c7ad2c72864: Move "close tab", "close all tabs" actions to the global scope
R71:b4ce5ad25858: Add breeze icons for data source tag
R71:ded9eeaa6309: Project Navigator: use "full line" to draw selections
R71:66b1e2a743b6: GIT_SILENT Remove unused variable
R71:3a96939f3620: Update after KDb API change: add d-pointer to KDbOrderByColumn, use enum class…
R71:194fc8c3177f: GIT_SILENT Add some ifdefs in KexiRegisterResource_p.h to disable warnings…
R71:8170c28256ca: Update to new KReport API TRIVIAL

Cool main main window as described at

  • Qt Creator-like global view selector
  • better suited for Mac and Windows versions (native menus are back!) and for wide screens
  • high degree of customization will allow to use the GUI in own "apps" by hiding unnecessary elements
  • superflat style with 1990's paddings removed but with with some "material" touch
  • content-is-king approach: darker side panes don't stay in the way
  • QWidget-based but styled beyond what QWidgets typically can do
  • Breeze style and icons-optimized (planned as the default on all OSes for 100% of portability)
  • icons styling beyond Breeze: some icons lighten and get colorful on dark backgrounds
  • the Kexi/Create/Design button bar will be replaced with something else
  • property pane uses real widgets for more natural experience (think UX Pin or Krita...)
  • cool animations for hiding/showing project navigator (Alt+0) and Property editor (Alt+3)

Placeholders so far:

  • File->Open Recent needs implementation
  • modernization of the tabbed toolbar:
    • KEXI button is totally out of place, its functionality would be moved to the Welcome mode button
    • Create tab would go to a special "+" menu exposed somewhere close to the project navigator
    • Design tabs of the tabbed toolbars would move to individual object windows, what would limit the need of switching the gui mode a lot
    • Classic menu would also contain the Create actions in Insert menu or File menu
  • Locale (Ctrl+K) text box would loose its place when we remove the line of KEXI/Create button so it needs a new place, one idea is on the right of the main menu (would it work with Mac's native menu?) or on the bottom line as in Qt Creator
  • Help mode (?) button, not sure me enable it for 3.2, can be eventually like the help in Creator
  • Project mode button: needs some design, it's a place where user can configure project-wide aspects conveniently (think: Projects pane of Creator)
  • unsure about the mode button of SQL view of queries, still present as a switched in the query designer itself; it can be also a Text or SQL mode button below the Design mode, problem is that the mode make sense for queries and scripts for now
  • Scripts view need porting to the new layout
  • Property pane's layout needs further layout cleanups and stylization, ultimately a move from list view to form for all properties, for now we have a form for data related properties only; the functionality would be coded in KProperty 3.2 though
Test Plan

Build and try the new GUI

Development started in 2016 so number of commits is big. Please look at individual commits if needed.

Diff Detail

R71 Kexi
Automatic diff as part of commit; lint not applicable.
Automatic diff as part of commit; unit tests not applicable.
staniek requested review of this revision.Mar 29 2018, 9:20 AM
staniek created this revision.
staniek edited the test plan for this revision. (Show Details)Mar 29 2018, 9:21 AM
staniek edited the summary of this revision. (Show Details)Mar 29 2018, 9:35 AM
staniek edited the summary of this revision. (Show Details)Mar 29 2018, 9:45 AM
staniek edited the summary of this revision. (Show Details)
staniek edited the summary of this revision. (Show Details)Mar 29 2018, 10:08 AM
staniek updated this revision to Diff 34002.May 11 2018, 9:19 PM
staniek edited the summary of this revision. (Show Details)
  • Merge remote-tracking branch 'origin/master' into cool_main_window-staniek6
  • Merge branch 'master' into cool_main_window-staniek6
  • Merge remote-tracking branch 'origin/cool_main_window-staniek6' into cool_main_window-staniek6
Restricted Application added a subscriber: Kexi-Devel-list. · View Herald TranscriptMay 11 2018, 9:19 PM
piggz accepted this revision.May 16 2018, 6:18 AM

Should get into master for stability testing before 3.2

This revision is now accepted and ready to land.May 16 2018, 6:18 AM
This revision was automatically updated to reflect the committed changes.

Thanks Adam!