Commit graph

109 commits

Author SHA1 Message Date
Fabien Castan
40c3430707 [ui] StatViewer: do not display uninitialied values 2019-09-10 18:56:23 +02:00
Fabien Castan
4cc78ad5ec [ui] StatViewer: more compatibility with previous "statistics" files
* compute max peak ram if no total ram info
* hide GPU chart if the file is from a previous version
2019-09-10 18:56:22 +02:00
Fabien Castan
8f630d5c09 [ui] StatViewer: compatibility with previous "statistics" files 2019-09-10 17:52:37 +02:00
Yann Lanthony
07ced073f3
[ui] StatViewer: introduce custom ChartViewLegend system
* add a generic ChartViewLegend component that provides an interactive legend for ChartViews
* rely more on data bindings to control Series visibility and display
2019-08-06 10:39:39 +02:00
Yann Lanthony
aedf10c838
[ui] StatViewer: fix "Toggle CPU" button
use MaterialLabel instead of Text
2019-08-06 10:31:39 +02:00
Yann Lanthony
001d9a3de8
[ui] StatViewer: fix average computation 2019-08-06 10:28:12 +02:00
Yann Lanthony
bedda0c5b6
[ui] simplify loading of statistics file
* NodeLog: remove intermediate property for Loader
* StatViewer
   * keep only one function to load source file
   * only send request only after the previous one fully completed
  * update deltaTime before initializing charts
  * reset "sourceModified" property when source changes
2019-08-06 10:23:59 +02:00
Lee Geertsen
1822bbe13d Dynamically load TextFileViewer or StatViewer depending on selected tab 2019-07-26 11:35:44 +02:00
Lee Geertsen
e48039bb2f Add StatViewer component to view statistics charts 2019-07-26 11:34:43 +02:00
Yann Lanthony
eb8023e02c
[ui] NodeEditor: display AttributeEditor by default 2019-06-26 12:57:30 +02:00
Yann Lanthony
d7f8311dcf
[ui] NodeLog: set TextFileViewer source when chunks ListView is ready
Avoid going through an empty source when switching from one node to another (currentChunk being invalid the time the ListView is being constructed).
2019-05-15 20:17:09 +02:00
Yann Lanthony
17556427fd
[ui] NodeLog: PySide2 5.11 compatibility fixes
* downgrade imports to work with versions prior to 5.12
* remove ES7 syntax
2019-05-09 18:18:48 +02:00
Yann Lanthony
55dba55d19
[ui] New TextFileViewer for displaying log files
Introduce a new TextFileViewer component with auto-reload feature based on a ListView instead of a TextArea for performance reasons. Uses the text content split on line breaks as ListView's model.
Features: 
 * auto-scroll to bottom
 * display line numbers
 * customizable line delegates (e.g.: display a real progress bar)
 * color lines according to log level
2019-05-07 11:47:09 +02:00
Yann Lanthony
45faa860c9 [ui] AttributeEditor: remove SortFilterDelegateModel
Usage of DelegateModel for model filtering has not proven to be the most stable solution, and might be responsible for random crashes happening during engine's garbage collection.  Implement Loader-based alternative:
* first delegate is a Loader which creates the AttributeItemDelegate if necessary
* compensate spacing using negative height when element is hidden
2019-02-08 15:37:06 +01:00
Fabien Castan
e63725c4e0
Merge pull request #379 from alicevision/dev_unsavedDialog
Show unsaved project warning dialog also when computing from GraphEditor
2019-01-30 10:02:54 +01:00
Yann Lanthony
28e7e64f3d [ui] show unsaved project warning dialog also when computing from GraphEditor 2019-01-30 09:48:37 +01:00
Yann Lanthony
4d6195cf81 [ui] Node: use TextMetrics to expand elided attribute pins at hover 2019-01-29 16:12:19 +01:00
Yann Lanthony
2990129e0f [ui] GraphEditor: display ClosedHandCursor while dragging 2019-01-07 18:47:20 +01:00
Yann Lanthony
b46a2dbba1 [ui] Controls: add SearchBar component + better keyboard focus handling
* use it in MetadataListView and GraphEditor 'add Node' menu
* GraphEditor: forward MenuItem key events to searchBar to be able to continue editing the filter even if it lost active focus
2019-01-07 16:48:17 +01:00
Yann Lanthony
b5c985b3fb [ui] GraphEditor: solo 3D media with Double Click + Control modifier
* allow to solo a 3D media from the GraphEditor by double clicking on a node or an attribute with the Control modifier pressed
* consistent with Viewer3D.MediaLibrary behavior (solo on Ctrl+Click on visibility button)
* handle supported file extensions in Viewer3DSettings
2019-01-07 16:19:42 +01:00
Yann Lanthony
4541d825ad [ui] GraphEditor: consistent readOnly mode when computing
* lock edit actions when graph is being computed
* add an advanced option to control this behavior and unlock it (stored in persistent settings)
2019-01-07 15:39:47 +01:00
Yann Lanthony
34ca607261 [ui] GraphEditor : add "Clear Pending Status" tool at Graph level
* allow to clear status of all submitted nodes in the graph
* unify wording
2019-01-07 10:47:25 +01:00
Yann Lanthony
b09068dc68 [ui] Node: add "Clear Data From Here" menu entry + confirmation dialog 2019-01-07 10:47:25 +01:00
Yann Lanthony
d1bf04bdf5 [ui] Node: gather single and "From Here" actions in the same menu entry
* add a ToolButton for duplicating/removing following nodes in corresponding entries instead of having a separate item
* change text when those button are hovered to reflect the change of action
* wording: rename "Delete Node" to "Remove Node"
2019-01-07 10:47:25 +01:00
Yann Lanthony
d10c779914 [ui] GraphEditor: add "Delete From Here" in node contextual menu
* ease the deletion of a branch from a given starting point
* accessible with alt+del on a node
* re-order menu to put the most destructive operation (Clear Data) at the very end
2019-01-07 10:47:25 +01:00
Yann Lanthony
b50f9fb44d [ui] GraphEditor: only display "Submit" in node menu if available 2019-01-07 10:47:25 +01:00
Yann Lanthony
5a38295184 [ui][AttributeEditor] display attribute technical name in tooltip
+ convert attribute description from plain text to html
2019-01-04 17:30:38 +01:00
Yann Lanthony
6ac4a9d712 [desc][qt] use QVariantList for list-type properties
* required for PySide2 > 5.11.1 (and compatible with 5.11.1)
* AttributeItemDelegate: test for list length to determine whether to create a slider component (if range is set to None on Python side, it will be an empty list on the QML/JS side)
2019-01-04 17:30:38 +01:00
Yann Lanthony
e7b49f31c7 [ui][GraphEditor] use 'C' locale for FloatParam validator + minor fixes
* using 'C' locale to ensure floating point values can be written using '.' decimal separator
* make TextField larger by default for numbers and fill width when slider is not defined
* avoid binding loop on height for ListAttributes by using contentHeight as implicitHeight
* add explicitly id for Connections in ComboBox
2019-01-04 17:30:37 +01:00
Yann Lanthony
00feb46667 [ui] extract NodeEditor from AttributeEditor
* NodeEditor
    * exposes Node parameters: compatibility, attributes and logs
    * provides a placeholder when no active Node
* AttributeEditor
    * only displays the list of Attributes
    * use 'AttributeEditor' for GroupAttributes in AttributeItemDelegate
* Layout
   * move NodeEditor on the same SplitView level as GraphEditor
   * move current node name and menu to the Panel's header
2019-01-04 17:30:37 +01:00
Yann Lanthony
dc8be1efae [ui] Attribute: display icon on advanced parameters 2018-12-20 11:17:23 +01:00
Yann Lanthony
1c935b6b5a [ui] GraphEditor: show/hide advanced Attributes
* use SortFilterModels to filter out  advanced attributes when hidden
* add GraphEditorSettings with persistent settings related to the GraphEditor
2018-12-20 11:17:23 +01:00
Yann Lanthony
05854ed897 [ui] UIGraph: add hoveredNode property + node hovering visual feedback
* keep track of currently hovered node in UIGraph on Python side
* Node: show border on hover + make MouseArea contain everything else to always get hover events, even when cursor is over children attribute pins
2018-12-07 16:07:42 +01:00
Yann Lanthony
5b991053a8 [ui] UIGraph: add selectedNode property
move node selection management to the Python side
2018-12-07 16:07:42 +01:00
Yann Lanthony
717b4f8b37 [ui] GraphEditor: display compatible attributes in Viewer3D on double click 2018-12-07 16:07:41 +01:00
Yann Lanthony
7db4beea89 [ui] use Node label in GraphEditor 2018-11-19 15:17:37 +01:00
Yann Lanthony
3b656d97fd [ui] NodeLog: load file only if visible
* when visibility changes, only load current file if log is actually visible
* set 'keepCursorPosition' default value to false in 'loadCurrentFile' method
2018-09-06 15:56:52 +02:00
Yann Lanthony
143b519dbd [ui] NodeLog: cross-platform monospace display
Specify multiple fixed size font families:
- Linux: "Monospace" 
- Windows: "Consolas" 
- OSX: "Monaco"
2018-09-06 15:56:52 +02:00
Yann Lanthony
fc8ea7ca18 [ui] GraphLayout: fix bouding box computation
correctly initialize width and height with first item
2018-08-06 10:37:45 +02:00
Fabien Castan
44e34d7eb3 [ui] use shift to pan (instead of Ctrl) 2018-08-03 14:38:08 +02:00
Yann Lanthony
94cba653d5 [ui] GraphEditor: improved ToolBar
* replace text buttons with MaterialToolButtons
* hide advanced min/max depth settings to a Settings menu
2018-07-27 19:12:55 +02:00
Yann Lanthony
713ca7c6a3 [ui] GraphEditor: simplify attributes connection
* make Drag/DropArea overflow on the attribute's label to be more tolerant when connecting attributes
* add visual feedback when hovering interactive areas
* tweak spacings between attributes
2018-07-27 19:12:53 +02:00
Yann Lanthony
e95c88292e [ui] GraphEditor: improve node selection
* deselect node background click
* always select node when pressed
* fix 'mouse.button/s' testing
2018-07-27 19:05:53 +02:00
Yann Lanthony
754a4360a3 [ui] AttributeEditor: set attribute when edited TextField is destroyed
ensure attribute is correctly set when the AttributeItemDelegate is abruptly destroyed (e.g: when another node is selected)
2018-07-27 19:05:53 +02:00
Yann Lanthony
c3464fa4e8 [ui] GraphEditor: trigger fit on project opening
* fit when the underlying graph has changed (new/open project)
* add 'F' shortcut to fit
* trigger fit after UI has been fully initialized (correct sizes)
2018-07-27 19:05:53 +02:00
Yann Lanthony
53be806019 [ui] GraphEditor: improve Edge UI
* increase EdgeMouseArea thickness for easier picking
* EdgeMouseArea: propagate modifiers on pressed
* increase edge visual thickness when hovered
* add edge contextual menu on right click
* Alt+RighClick shortcut to delete an edge
2018-07-27 19:05:53 +02:00
Yann Lanthony
e6e2c18aa8 [ui] Node: add selected property + selection border
* use more efficient selection border instead of slightly changing header's color
* require activeFocus when selected
2018-07-26 22:50:42 +02:00
Yann Lanthony
06f3d140df [ui] GraphEditor: faster animation for node movement 2018-07-26 22:48:30 +02:00
Yann Lanthony
f415745a4a [ui] make Nodes moves undoable
Handle nodes move and auto-layout on Python side by using GraphLayout and MoveNodeCommand.

* Node QML component relies on underlying core.Node object's position
* MoveNodeCommand is called after a Node has been dragged
* partial/full auto-layout for specific graph operations (Duplication, Augmentation...) are now part of those operations
* serialized position in node data allows to properly restore nodes coordinates on undo/redo
* remove all layout/node moving code from QML
2018-07-26 22:46:22 +02:00
Fabien Castan
bb0155ba42
Merge pull request #150 from alicevision/dev_versionCompatibility
Introduce version compatibility handling
2018-07-26 12:50:15 +02:00