sofa-framework / SofaQtQuick

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Roadmap for SofaQtQuick

hugtalbot opened this issue · comments

commented

Further to discussions with the company Anatoscope, it has been proposed to share the administration with the SOFA consortium in order to support the maintenance and improvement of this work. The original repository can be found here.

Our purpose with SofaQtQuick is to propose by the end of 2018 (at the latest) a new GUI for SOFA based on this work.

This issue aims at describing the roadmap of the next months (2018):

  • from January 2018, push in SOFA the cmake feature "external project" allowing for pulling automatically the SofaQtQuick repository within the applications/project folder, if the experimental option is activated in SOFA
  • separate the code between the library itself (SofaQtQuick) and the executable (runSofa2)
  • implement tests and improve existing codes
  • export the libraries depending on optional plugins (ex: ImageQtQuickWidget)
  • when stable (target 18.06 release), merge finally into SOFA

Advantages of the approach: easy to use, easy to contribute, visible, experimental period, possibility to benefit from the improvements made on the code until merge.

Any feedback is obviously welcome.
Interested to contribute, contact us, we are waiting for you!

There is so much to do :)

So my list:

  • renames the views
  • rename all the widgets
  • the models (SofaDataListModel, SofaSceneListMode, SofaInspectorData, SofaScene) are all implementing hard-coded filtering schema. Those should be extracted and putted in dedicated filtering code as QSortFilterProxyModel is implemented in Qt.
  • control the organization of the widget in the widget menu
  • add a mechanism to show some extra widgets (for developpers ? )
  • add support for component specific widget in the inspector view.
  • refactor the SofaViewer code so we can properly implement the ControllerSofaView & SofaViewer
  • restore the live coding widget that was in the livecoding branch
  • have an unified color scheme instead of hard coded values all around.
  • redo the SceneGraph view so we can up hide the components.
  • Remove from SofaScene.cpp what has nothing to do with sofa scene like manipulator&selected element, put that into a MainEditor object instead.
  • DisplayFlags should be configurable element "per 3D view" and not for the whole application. (@marques-bruno)
  • The BackgroundSetting should be connected to a Camera object.
  • Darg & drop from scene to links (DAMIEN)
  • Drag & drop from the scene to text editor
  • Add new object from the GUI
  • Save scene (when loaded with the PSL loader)
  • Export scene (when loaded with sofa)
  • Refactor the application so that we can handle more of the old arguments
  • Implements a minimal sofa player which only show the CameraView and scene specific UI.
  • Implements scene-specific UI as a CameraView overlay
  • Forward keyboard & mouse event that happens in the CameraView to the sofa scene graph
  • Do not forward keyboard & mouse event that happens in the EditView to the sofa scene graph.
  • Switch to QtQuick.Controls 2
  • Move the quaternion* stuff out of SofaApplication.cpp/.h

New windows:

  • Add an help windows (with description, scene having the components, etc)
  • Add a "search component" windows similar to the one that was in the modeller
  • Add a "plugin store" windows

Messages:

  • Console.h/cpp is a singleton that should be connected to a SofaApplication instead of be "free"
  • Messages should be moved out of the inspector (@damien)
  • Per component messages should be accessible from popup menu
  • Per component messages should be visible in a message window.

SceneGraph:

  • Clean the view
  • The scenegraph model is broken when adding/removing nodes & component, the views does not update properly.
  • Do the (TODO) in the pop-up menu for Object
  • Do the (TODO) in the pop-up menu for the Node
  • Restore the small warning sign when there is messages.

@marques-bruno, @fredroy how do we proceed to move forward on this ?
I will work on several items of my whish list today & tomorrow.

I guess I will (try to) fill some checkboxes before the end of the week.
Should we create a group on gitter ? (just to sync on who does what)

Good idea

I don't know if it is related to the first task you mentioned @damienmarchal, but:
I find it quite confusing, the list of widgets available. They don't always have very explicit names, and introduce a lot of extra GUI vocabulary for a noob willing to add a widget to his interface
AffineTransformationController - ColorSelector - ImageViewer - Inspector - Message - PythonConsole - QmlLiveCoding - SofaDataListView - SofaDataView - SofaSceneGraphView - SofaSceneToolPanel - SofaSceneViewer - SofaSimulationControl - SofaViewer - SofaVisualizationControl
I think it would be nice to filter out those widgets according to:

  • Whether or not they are part of the "default widgets" (GUI components vs inspector / datalistview etc.)
  • Whether or not they are already opened
  • Whether or not they are actually relevant to the current scene (e.g. if there is not ImageViewer in the scene graph, we don't need the ImageViewer widget in the list)

I totally agree with you.

To me:

  • all Sofa* widget should be at least renamed :)
  • SofaViewer is to remove (replace by EditView)
  • the could be splitted in two with first the widget for users, then the widget for the developpers

Currently the menu content is loading the list autmatically from the content of the SofaWidget directory. To me should be able to control the content of this list with smaller granularity (to order things and hide/show entries) and this have to be implemented.

Then there is the role of scene specific widget. Which as you said shouldn't be visible unless the scene
is requiring it.

Additionally I would find useful to have component specific widget to replace the Inspector view.

@marques-bruno, @fredroy, @hugtalbot

For those I know are working on some of the item I put your name in front of the corresponding lines.
If you want to contribute please tell us.

@marques-bruno, @fredroy any progress on your side ?