Commit graph

42 commits

Author SHA1 Message Date
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
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
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
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
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
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
Fabien Castan
10026e3281 [ui] mouse: add "Ctrl+Left click" as an alternative to Middle click 2018-07-21 14:54:28 +02:00
Yann Lanthony
7dfb750407 [ui] move node menu to GraphEditor + ensure computability of node
use core.graph.canCompute on current node to check if node can be computed; enable computation related MenuItem accordingly
2018-07-19 14:50:58 +02:00
Yann Lanthony
0128cd56f0 [ui] add CompatibilityBadge on CompatibilityNodes
* add badge icon on nodes in GraphEditor
* add badge banner in AttributeEditor with upgrade button when available
2018-07-19 13:50:45 +02:00
Yann Lanthony
fc8a3f5f0b [ui] GraphEditor: add helper functions to move and select nodes 2018-07-19 13:50:45 +02:00
Yann Lanthony
2952e11691 [core] move duplicateNode methods to core.graph
handle this low-level operation engine side

* fix ListAttribute children links duplication
* handle CompatibilityNode duplication
* move corresponding unit test in test_graph.py
* [ui] add DuplicateNodeCommand
2018-07-19 13:50:45 +02:00
Yann Lanthony
20ef9b5a05 [ui] GraphEditor: unregister AttributePins when destroyed 2018-06-18 14:43:18 +02:00
Yann Lanthony
2f2390e465 [ui] fix Palette propagation
* bugfix: in latest PySide2 versions, application palette is not properly applied to all QtQuick Controls 2 components. Force this by exposing QApplication palette and bind it to the root ApplicationWindow.
* rename all "palette" ids to "activePalette" to avoid clashes with "palette" property on QtQuick Controls 2
* use parent component palette when it makes sense to propagate active/disabled style (instead of always using Active SystemPalette)
2018-05-28 15:30:09 +02:00
Yann Lanthony
029d4f2e7b [ui] GraphEditor: clamp zoom 2018-04-13 22:44:09 +02:00
Yann Lanthony
adf59e56fa [ui] GraphEditor: fix typo 2018-04-05 21:56:36 +02:00
Yann Lanthony
2e4d9b85e6 [ui] UIGraph: rename 'addNode' to 'addNewNode' to match core.graph API 2018-03-21 15:53:34 +01:00
Yann Lanthony
e0b72863ee [ui] GraphEditor: improve auto-layout related functions
* move graph boundingBox computation in a separate method
* perform autoLayout from "from" to "to" index (instead of "to"-1)
2018-03-21 15:53:34 +01:00
Yann Lanthony
53791cb7d8 [ui] GraphEditor: nodes duplication
* allow duplication of one node/all nodes following a node
* actions available from Node contextual menu and Alt+Click on node for multi-nodes duplication
2018-02-12 18:49:13 +01:00
Yann Lanthony
6455b7c5d8 [ui] GraphEditor: add partial autoLayout 2018-02-12 18:12:26 +01:00
Yann Lanthony
25992286d0 [ui] add partial graph submission up to a certain node 2018-02-07 14:35:50 +01:00
Yann Lanthony
907c9cbcba [ui] use signals instead of direct calls to context var '_reconstruction' 2018-02-07 14:33:30 +01:00
Yann Lanthony
ca8a70f367 [ui] GraphEditor: grab focus on background click 2018-02-06 12:20:22 +01:00
Yann Lanthony
254b945728 [ui] GraphEditor: expose nodes depth strategy for auto-layout
add a ComboBox to chose between node's min/max depth for graph auto-layout
2018-01-15 15:27:21 +01:00
Yann Lanthony
b8f61bf033 [ui] display output 3D files when double clicking on a node
* iterate over output attributes to find an "obj" file
* make default material brighter
2018-01-05 12:14:32 +01:00
Yann Lanthony
474e18ef4c [ui] GraphEditor: add filtering on node creation menu
* add TextField to filter node types by text
* node can be created by pressing enter/return when highlighted
* give active focus to selected node
* node can be deleted when selected by pressing Delete key
2017-12-19 11:54:09 +01:00
Yann Lanthony
69c2db4312 [ui] GraphEditor: use nodeTypesModel property in node creation menu
* was wrongly using global property _nodeTypes
2017-12-19 11:50:55 +01:00
Yann Lanthony
a26a3f9af5 [ui] GraphEditor: add node creation menu
* expose node types model as context property
* right clicking on an empty space inside the Graph Editor opens Node Creation menu with all available node types
2017-12-18 19:46:45 +01:00
Yann Lanthony
886ded7f19 [ui] create GraphEditor module 2017-12-12 17:47:27 +01:00
Renamed from meshroom/ui/qml/GraphEditor.qml (Browse further)