Ribbon UI , Korat UI
Hello, i've hesitated to put this blog post on KDE, afraid being told this is a crazy idea.Finally i'm open for challenges, at least this post shows an idea.
Plasma is maturing, more widgets have been added. As a result it enables some other possiblites.
Recently i've seen the beauty of Ribbon UI in Office 14 and Windows 7.
And googling the Ribbon UI on Linux, found two implementations:
GTK# version in Mono:
It seems to be (maybe intended to be) 1-1 copy of M$'s Ribbon UI, where's their creativities?
Vtk designer's menustrip:
Looks OK ,and that's all. It's just bigger icons on a bar.....
Not satisfied with the above two, i'm writing my own:
My Korat::MenuBar's Features:
- Adaptive layout according to width (use own greedy relaxing algorithm), similar to M$'s Ribbon UI.
- Users are very easy to wrap their graphics widgets to be adaptive layoutable. You just need to provide only three other functions (typedef QList
WeightList;): - QList
availableWidths(); - qreal getWidth(const WeightList &);
- void adjustWidth(const WeightList &);
- QList
- Use plasma extensively: theme, palette, Plasma::IconWidget, Plasma::LineEdit etc....,
Widest:
Medium:
Narrow:
Too narrow, scroll button appears:
Also i'm thinking of bringing more powers and beauties of plasma and graphics model/view to normal widget based application, so i start a Korat UI project(plan):
Its goal is to provide a normal QWidget - Korat::MainWindow,
which correctly provide a view on a QGraphicsWidget - Korat::MainWindowGraphics
Feature plan of Korat::MainWindow:
- Fully QGraphicsWidget based, goes deeper on the way that Plasma::Dialog do, correctly manage the layout for you (handle spacing, margins, theme change etc...), It's auto themed according to your plasma theme, provide animated layout(Kinetic ?), and other animation effects.
- Integrate KRunner into the main window. Application and its plugins can provide its own krunner plugin, the main window manage/merge them, To quickly search this application's actions, help info, quickly tag the document etc... anything that krunner can do. (You can see from my above pics, there's a filter button and a lineedit besides the tabbar, that's it).
- Ribbon like menubar as i mentioned above, but merge the application and its plugins' sub actions( maybe need to extend kde's xml gui somehow )
- Provide optional Drawers on four corners of central graphics widget, optional Docks on four edges of central graphics widget. Manage their position,size,layout to ease your programming .
- A statusbar(notification area) on bottom.
The Korat::MainWindow's base architecture is done and the Ribbon like Menubar is nearly finished (some scrolling bugs not fixed yet).
Future plan:
- brainstorm and implement the Drawer, Dock, StatusBar.
- Port(hack) my own version of KJots to use this UI, since it's one of my favourite KDE application, so it deserves to have a beautiful and easy to use GUI.
- Experiment XML Gui support.
Thanks for reading, finally a pic for "korat“ , kudos for plasma developers.