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

Reply via email to