Commit graph

218 commits

Author SHA1 Message Date
Candice Bentéjac
aa728919c8 [core] Explicitly set "template" key to false when saving as a regular file 2022-09-23 09:20:44 +02:00
Fabien Castan
27faf9f77c
Merge pull request #1758 from alicevision/dev/copyPasteNode
Support copying/pasting a node in the Graph Editor
2022-09-08 17:42:12 +02:00
Fabien Castan
267aff5a09
Merge pull request #1767 from alicevision/bugfix-tonode-submit
removed duplicated call to findnodes
2022-09-07 20:21:30 +02:00
Candice Bentéjac
d06acf6722 Reconnect copied/pasted nodes together but not to the graph
If several nodes are described in the clipboard and are supposed to
be connected with each other, reconnect them together, but do not
attempt to reconnect them to the graph they were copied from, even if
it is the current graph.
2022-09-06 11:13:29 +02:00
Matthieu Hog
f491b5a77b removed duplicated call to findnodes 2022-09-06 10:57:29 +02:00
Candice Bentéjac
c44b2a8c00 Add "minimal" mode for template files
Add a specific option to save a graph as a template ("Save As
Template") in "minimal" mode.

This mode only saves, for each node in the graph, the input and
output attributes whose values differ from the default ones. Any
attribute that is not serialized in the saved template file is
assumed to have its default value.
If a conflict is detected on a node when opening the template
file, it is logged but solved automatically.

The goal of this minimal mode is to prevent template files from
needing an update every single time a modification (may it be
minor or major) is done on a node description. Templates can
thus follow node changes and still be usable.
2022-09-06 09:43:19 +02:00
Candice Bentéjac
a33f79e4d7 Import a scene from an .mg file into the current graph
Add an "Import Scene" (Ctrl+Shift+I) option in the File menu
that allows to select an existing .mg file and import it in the
current graph.

The imported scene will automatically be placed below the lowest
existing node along the Y axis.
2022-08-31 10:50:35 +02:00
Candice Bentéjac
5b65866e49 [ui] Paste a node on the mouse's position
When creating a node with a "paste" operation, place the node
on the mouse's position in the graph instead of default position (0,0).

If the mouse is placed on an existing node, the pasted node will be
placed on the mouse's position plus an offset so that the pasted node
does not directly overlap with the existing node.
2022-08-19 12:02:09 +02:00
Candice Bentéjac
ddda62a652 Add node to graph with Ctrl+V if valid node content is in the clipboard
Attempt to paste the clipboard's content in the graph when Ctrl+V is
pressed. If the clipboard contains a valid node description, add the
corresponding node to the graph.
Otherwise, do nothing.
2022-08-19 12:00:16 +02:00
Candice Bentéjac
659c8a05ed Add abstract InitNode
InitNode is an abstract class which is meant to be inherited
by all the initialization nodes (such as CameraInit), included
those that might be created by the user.

InitNode contains methods that can be reimplemented by the
children classes if necessary.

This abstract class allows to keep on using scripts such as
meshroom_batch without having to modify them specifically or
being limited to using a CameraInit node.
2022-08-05 10:42:59 +02:00
Fabien Castan
dd5aadd875
Merge pull request #1738 from alicevision/fix/undoDuplicatedNodes
Fix node duplication/removal behaviour
2022-08-01 15:56:48 +02:00
Candice Bentéjac
b77274a027 Store all duplicates of a node correctly upon their creation
Duplicates used to be stored in a dictionary with an entry being
"parent node": "duplicated node". On occasions where a single
parent node was duplicated more than once, the latest duplicated
 node erased the previous one(s), and these older ones were
"lost": after being created, there was no trace left of their
existence in the duplication operation. Undoing that duplication
operation was thus leaving these duplicated nodes out and not
removing them.

Duplicated nodes are now stored as "parent node": [list of
duplicated nodes] to keep track of all the created nodes,
effectively removing them upon an "undo".
2022-07-28 14:13:31 +02:00
Candice Bentéjac
945f59e00c Retrieve file features for templates
When a project file is opened as such, its filepath is stored
and all its features are retrieved as a consequence. Templates
were hard-coded instead of opened as files, so there never was
any need to load their features.

Now that .mg files can be opened both as projects and pipelines,
we need to retrieve the features in both cases, whether the filepath
is stored (file opened as project) or not (file opened as template).
This can be useful to retrieve the layout contained in the .mg file
for the pipeline, for example.
2022-07-21 15:28:36 +02:00
Fabien Castan
ae0c65f563 [core] do not use the task manager in batch command line tools
Avoid usage of multi-threading to launch the computation in command line
tools without interactive needs
2021-10-19 15:48:07 +02:00
Fabien Castan
f44e834970 [core] fix batch 2021-09-13 10:17:39 +02:00
Landrodie
79955ddae6 [core] Change attribute name and label properties
Adding new properties and updating the call to previous ones.
Properties are now :
* label : getLabel
* fullLabel : getFullLabel
* fullLabelToNode : getFullLabelToNode
* fullLabelToGraph : getFullLabelToGraph

Same for the name.
2021-08-23 17:52:40 +02:00
Fabien Castan
18be350e6f
Merge pull request #1227 from ChemicalXandco/box_select
[ui] add support for selecting multiple nodes at once
2021-05-03 23:42:11 +02:00
ChemicalXandco
fdfabf0066 [ui] GraphEditor: use entire node selection when handling '_ from here' operations 2021-04-18 14:33:17 +01:00
ChemicalXandco
acf1bf2116 [ui] grapheditor: explicitly pass selected nodes argument 2021-01-26 21:13:16 +00:00
Fabien Castan
37d3008f9e [core] rename nodesOfType 2021-01-22 13:12:29 +01:00
ChemicalXandco
c253e7d363 [ui] add support for selecting multiple nodes at once 2021-01-15 18:16:45 +00:00
Fabien Castan
d291fcc39d [core] graph: use new dependenciesOnly option on graph operations
Input attribute to input attribute connection is not a real dependency between the nodes.
2020-12-14 19:02:49 +01:00
Fabien Castan
1102ce84e0 Merge branch 'develop' of github.com:alicevision/meshroom into dev/nodesAndTaskManager
Conflicts:
	meshroom/core/graph.py
	meshroom/ui/qml/main.qml
2020-12-01 20:02:43 +01:00
Julien-Haudegond
e91dab1a63 [core] Graph.canSubmitOrCompute: add documentation 2020-09-05 15:34:05 +02:00
Fabien Castan
44fe0620c7 [core] graph: fix retrieve first submitter 2020-09-05 01:18:03 +02:00
Fabien Castan
c8978cd792 [core] Graph.findNode: if multiple candidates, do not raise an error if one is the exact input 2020-09-04 19:51:07 +02:00
Julien-Haudegond
37c758c8da [core/tests] Graph: default startNodes parameter in dfsOnDiscover() 2020-09-04 15:39:27 +02:00
Julien-Haudegond
deaf1e3abb [core] Graph: fix reverse issue in dfs() 2020-09-04 15:35:48 +02:00
Julien-Haudegond
8499431dff [core] Graph: add getRootNodes() 2020-09-04 15:21:03 +02:00
Julien-Haudegond
44d019b7f0 [core] Graph: move reverse property from dfs() to Visitor class 2020-09-04 15:11:19 +02:00
Julien-Haudegond
e4a95e89dc [core] Graph: change signature of dfsOnFinish() 2020-09-04 13:05:18 +02:00
Julien-Haudegond
b567d8ff5c [core] Graph: change default reverse direction in dfsOnDiscover() 2020-09-04 12:42:05 +02:00
Julien-Haudegond
208749d897 [core] Graph: change signature of dfsOnDiscover() 2020-09-04 12:22:20 +02:00
Julien-Haudegond
f8bd40ad38 [core] Graph: rename nodesFromNode() to dfsOnDiscover() 2020-09-04 11:49:45 +02:00
Julien-Haudegond
3fc09ddade [core] TaskManager: handle compatibility error outside dfsToProcess() 2020-09-03 18:42:36 +02:00
Julien-Haudegond
3f3a6c0e83 [core/bin] Submitting: remove a duplicate function and move another one 2020-09-03 18:23:55 +02:00
Julien-Haudegond
eb52459bbf [core] Graph: raise error in dfs() with longestPathFirst 2020-09-02 12:37:40 +02:00
Julien-Haudegond
74fa3022fe [core] Graph: avoid double update while adding/removing an edge
Graph.markNodesDirty() is called in three different places:
- Attribute.requestGraphUpdate()
- Graph.addEdge()
- Graph.removeEdge()

However, addEdge() and removeEdge() are especially decorated to request a graph update so, with the old markNodesDirty() implementation, the update was done twice in a row.
2020-08-27 17:16:40 +02:00
Julien-Haudegond
e64c66e447 [core] Graph: remove warning logs from dfsToProcess method
Those warnings happen already in the Task Manager and should be handled only by the Task Manager.
2020-08-27 12:33:32 +02:00
Julien-Haudegond
fb477d486c [core] Graph: remove useless getAlreadySubmittedChunks method 2020-08-27 12:20:46 +02:00
Julien-Haudegond
79e1c69d5d Merge remote-tracking branch 'origin/develop' into dev/nodesAndTaskManager 2020-08-24 15:19:31 +02:00
Julien-Haudegond
ba1994deb9 [core/ui] replace and remove depending/required nodes methods 2020-08-24 11:59:03 +02:00
Julien-Haudegond
11e68e77ed [core] Graph/Node: getInputNodes and getOutputNodes methods 2020-08-24 11:35:32 +02:00
Julien-Haudegond
fe91d07a6a [core] Node: add alive property for QML 2020-08-17 11:39:22 +02:00
Julien-Haudegond
fd51237fa3 [core] Node: add duplicate nodes list property 2020-08-12 18:01:37 +02:00
Julien-Haudegond
8a5f4939b2 [ui] Graph: add a 'Force Unlock Nodes' option 2020-08-12 10:44:53 +02:00
Julien-Haudegond
ff7f8b3e36 [core/ui] add a locked property on nodes
Add locked property on core nodes and update UI in the same commit because both parts are very dependent for this change.
2020-08-11 13:08:47 +02:00
Fabien Castan
bab908d2eb Merge branch 'develop' into dev/nodesAndTaskManager 2020-07-30 10:56:19 +02:00
Fabien Castan
91f53341bc warning fixes 2020-07-16 11:04:43 +02:00
Fabien Castan
ec67c772fa [ui] new generic way to manage "active" nodes per node type 2020-07-07 22:05:53 +02:00