Hi Grégoire All of this looks interesting, and the web integration is just awesome idea. We need more of Qt on the server!
On 28 September 2015 at 09:49, Grégoire Barbier <[email protected]> wrote: > Hi, > > As a base for a software of mine[1], I developed a few pieces of code > based on Qt that may be of interest for others. > > This is not as mature as the Qt framework itself, dramaticaly lacks > documentation, but it is currently working. > > If somebody is interested in seeing some part of this software > contributed/integrated into a Qt module, even some small subset, I would > be pleased to talk about it further. > > > 1) A Simple web application framework which main interest is to be able > to write HTML tables and CSV exports directly from the same > QAbstractItemModels than those used on a GUI. > > Let's be clear: the httpd and templating engine implementations are > quite primitive (304 implemented only with timestamps, only basic auth, > no scripting in html templates, etc.) and it is not so scalable, but it > works and enables QAbstractItemModel code sharing between GUI and WUI. > - The most interesting parts are probably the text views, i.e. > replacement for QAbstractItemView that can be plugged into > QAbstractItemModel just the same way. Although there are not plenty of > them, the HTML table view works and provides an item delegate able to > handle icons and classes fitting fine e.g. with Twitter Bootstrap: > https://gitlab.com/g76r/libqtssu/blob/master/textview/htmltableview.h > https://gitlab.com/g76r/libqtssu/blob/master/textview/htmlitemdelegate.h > example implementation: > https://gitlab.com/g76r/qron/blob/master/libqron/ui/htmlalertitemdelegate.cpp > > - A CSV view is also available for CSV/Excel exports: > https://gitlab.com/g76r/libqtssu/blob/master/textview/csvtableview.h > - The deeper layer consists of an HTTP server and HTML templating engine > with built-in support for basic authentication, upload or funny things > like graphviz auto-generated diagrams: > https://gitlab.com/g76r/libqtssu/tree/master/httpd > > > 2) A generic item pattern/framework over Qt's model/view framework that > supports generic display and edition of tuples-oriented items. > > Uses Qt's implicit sharing pattern to implement value classes and works > both with QtWidgets and the previously described web framework. > The tuples-oriented items have an arbitrary number of sections that are > interpreted as columns by table or tree models. > - The core class is the SharedUiItem: > https://gitlab.com/g76r/libqtssu/blob/master/modelview/shareduiitem.h > example implementation: > https://gitlab.com/g76r/qron/blob/master/libqron/config/cluster.h > https://gitlab.com/g76r/qron/blob/master/libqron/config/cluster.cpp > - Then come models (subclasses of QAbstractItemModel): > https://gitlab.com/g76r/libqtssu/blob/master/modelview/shareduiitemsmodel.h > https://gitlab.com/g76r/libqtssu/blob/master/modelview/shareduiitemstablemodel.h > https://gitlab.com/g76r/libqtssu/blob/master/modelview/shareduiitemstreemodel.h > example implementation: > https://gitlab.com/g76r/qron/blob/master/libqron/ui/clustersmodel.cpp > - And document managers, which are more or less DAOs: > https://gitlab.com/g76r/libqtssu/blob/master/modelview/shareduiitemdocumentmanager.h > example implementation: > https://gitlab.com/g76r/qron/blob/master/libqron/config/qronconfigdocumentmanager.cpp > > > 3) A "target" pattern/framework over QtWidgets (could probably be > adapted to QML) > > A "target" is an application-wide selection, accross widgets and > windows. It is strongly tied to previously described generic item > framework, especialy because items have application-wide unique ids, > which makes it possible to have consistent target references. > Thanks to target, actions can be performed on item regardless the view, > which is convenient when same items are present in several views at a > time (e.g. a table and a graphics view). > - The core classes are these ones: > https://gitlab.com/g76r/libh6ncsu/blob/master/dtp/dtpdocumentmanager.h > https://gitlab.com/g76r/libh6ncsu/blob/master/dtp/targetmanager.h > - There are generic actions to create or delete targeted items using > generic previsously described item framework: > https://gitlab.com/g76r/libh6ncsu/blob/master/dtp/createitemaction.h > https://gitlab.com/g76r/libh6ncsu/blob/master/dtp/deleteitemaction.h > https://gitlab.com/g76r/libh6ncsu/blob/master/dtp/deleteitemaction.cpp > - View and form widgets should extend this class to get convenient > behaviors such as ensuring visibility and starting edition of a newly > created item: > https://gitlab.com/g76r/libh6ncsu/blob/master/dtp/perspectivewidget.h > example implementation: > https://gitlab.com/g76r/libh6ncsu/blob/master/modelview/dtptreeview.cpp > > > 4) A few server-side utilities that are probably of lesser interest > > Such as a thread-safe circular buffer for implicitly shared objects and > other pointer-sized data. > https://gitlab.com/g76r/libqtssu/blob/master/thread/circularbuffer.h > https://gitlab.com/g76r/libqtssu/blob/master/thread/atomicvalue.h > https://gitlab.com/g76r/libqtssu/blob/master/modelview/textmatrixmodel.h > > > 5) A proof-of-concept of what could become a graphviz-powered > QGraphicsLayout implementation > > Processing a dot layout of QGraphicsItems nodes and edges works fine, > but the code is still limited, e.g. info like edge labels or edge > extremities locations are lost and it's too slow. > https://gitlab.com/g76r/libh6ncsu/blob/master/graphics/graphvizgraphicslayout.h > > > > Regards. > > > PS: I come to QTWS next week. > > > > [1]: an open source scheduler: http://qron.eu/ which needed these > software pieces for its web ui, and its (still work in progress) desktop > and mobile uis > > -- > Grégoire Barbier :: g à g76r.eu :: +33 6 21 35 73 49 > _______________________________________________ > Development mailing list > [email protected] > http://lists.qt-project.org/mailman/listinfo/development -- regards, Jaroslaw Staniek KDE: : A world-wide network of software engineers, artists, writers, translators : and facilitators committed to Free Software development - http://kde.org Calligra Suite: : A graphic art and office suite - http://calligra.org Kexi: : A visual database apps builder - http://calligra.org/kexi Qt Certified Specialist: : http://www.linkedin.com/in/jstaniek _______________________________________________ Development mailing list [email protected] http://lists.qt-project.org/mailman/listinfo/development
