Lee Geertsen
c00db25c23
Don't lock graph and node editor while computing nodes
...
Add possibilty to, while computing nodes:
add more nodes to the task manager,
edit, duplicate and remove nodes without breaking the tasks that are submitted
2019-11-29 11:34:10 +01:00
Lee Geertsen
51d6c18840
Create TaskManager with a task overview
...
Create a seperate class to handle the logic of computing nodes
+ An UI overview with all submitted nodes
2019-11-29 11:34:10 +01:00
Fabien Castan
a53940d29f
[core] graph: variable rename
2019-09-25 21:07:28 +02:00
Fabien Castan
06543f89a9
[core] use more explicit argument name: setupFileRef
2019-09-21 18:19:17 +02:00
Fabien Castan
979ee4ba94
[bin] meshroom_photogrammetry: setup cache folder according to --save path
...
except if --cache is set explicitly
2019-09-12 21:36:36 +02:00
Fabien Castan
231125efdf
[ui] improve meshroom command line
...
- "meshroom -h / --help": now provides command line documentation (so
argparse is done before GUI creation)
- new positional argument to set project file or input folder
- new "--pipeline" option to set a default pipeline, also support an
environment variable
2019-09-12 21:14:52 +02:00
Fabien Castan
9d8e3648b2
[core] submitters: if there is only one submitter, use it!
...
More explicit error messages when the submitter is not found.
2019-08-21 21:48:03 +02:00
Yann Lanthony
026cd36ff4
[core.graph] update graph after load
...
Ensure graph internal data is updated after loading.
2019-01-29 16:04:39 +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
400835d8f8
[core] Attribute: expose 'fullName' as property
2018-11-19 15:17:36 +01:00
Yann Lanthony
fa631d8e7a
[core] core: use pyCompatibility basestring instead of str
2018-07-28 13:09:16 +02:00
Yann Lanthony
41ea5a5423
[core][graph] store duplication result in an OrderedDict
...
allows to keep the order in which duplicated nodes were created
2018-07-27 19:05:25 +02:00
Yann Lanthony
830173047c
[ui][commands] Duplicate/UpgradeNode: return created Node instances
2018-07-26 22:43:48 +02:00
Yann Lanthony
62dbf7df95
[core][io] return file features as tuple
2018-07-26 18:01:11 +02:00
Yann Lanthony
e2155ba962
[core][io] store nodes position in graph file
...
* increment file minor version (no incompatibility)
* nodeFactory: reload file position if available
2018-07-26 18:01:11 +02:00
Yann Lanthony
dfb0934ef4
[core] add node position property
...
Nodes can now be placed at a certain position
* add Position namedtuple
* expose 'position', 'x' and 'y' properties on BaseNode
2018-07-26 18:01:10 +02:00
Yann Lanthony
5843c36435
[core][io] add io version 'Features' mechanism
...
* centralize available features based on file version in 'IO' class
* add IO.Features enum
2018-07-26 18:01:10 +02:00
Yann Lanthony
ec08de812e
[core][io] move file keys to an inner 'Keys' class
2018-07-26 17:45:03 +02:00
Yann Lanthony
93dd055f72
[clean] fix variable names and typos
...
* node_factory & attribute_factory to camelCase
* fix depths variable in updateNodesTopologicalData
2018-07-26 12:11:43 +02:00
Yann Lanthony
dd3d9cd54b
[core][ui] add upgradeAllNodes methods
...
+ check if node is upgradable in UpgradeNodeCommand
2018-07-20 17:55:30 +02:00
Yann Lanthony
8679fd8bf7
[core] maintain a model with CompatibilityNodes on topology change
2018-07-20 17:52:30 +02:00
Yann Lanthony
3417f58335
[graph] add GraphModification inside upgradeNode method
2018-07-20 15:35:55 +02:00
Yann Lanthony
f5820b3eb1
[graph] expose fileReleaseVersion as property
...
+ clear header in Graph.clear method
2018-07-20 15:30:27 +02:00
Yann Lanthony
ae716602ab
[core] update nodes topological data after nodes status update
...
evaluate nodes computability requires up-to-date status
2018-07-19 16:08:00 +02:00
Yann Lanthony
30cd8001fd
[core][graph] update nodes computability on topology change
...
CompatibilityNodes introduce a new notion of computability per node.
An uncomputed (and therefore uncomputable) CompatibilityNode blocks the computation of all its successor.
* update nodes computability on topology change (in addition to min/max depth)
* evaluate leaves computability to determine if the whole graph can be processed
2018-07-19 13:50:45 +02:00
Yann Lanthony
89dd55f43b
[core] dfsToProcess: stop branch visit when discovering a computed node
2018-07-19 13:50:45 +02:00
Yann Lanthony
ab4e82aa88
[core] add GraphVisitMessage exceptions mecanism
...
allow to stop branch or graph visit by throwing specific exceptions in visitor callbacks
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
33eb7f3a7f
[core] introduce CompatibilityNode for improved scene compatibilities
...
Improve node serialization/deserialization to be able to recreate the exact same node in the graph when loading a meshroom project, even if the corresponding node's description has changed or does not exist anymore. This allows to recover already computed data on disk, without being impacted by changed uids. CompatibilityNode also provides an on-demand upgrade system to turn into a Node that meets the current node description (if possible).
* new abstract class BaseNode, base class for Node and CompatibiliyNode
* Node: serialize everything needed to spawn a CompatibilityNode with precomputed outputs: inputs, uids, parallelization settings, unresolved internal folders and outputs
* node_factory: handles node deserialization and compatibility issues to create either a Node or a CompatibilityNode
* add compatibility unit tests
2018-07-19 13:50:45 +02:00
Yann Lanthony
a9e61108ab
[core][io] save header with versions metadata in graph file
...
* save a header with versions metadata:
* meshroom release
* file format
* node types used in the graph
* save the graph in a dedicated "graph" category
* multiview: store pipeline version in graph header
2018-07-19 13:50:45 +02:00
Yann Lanthony
5d14189206
[graph] convert cache directory to unix-style filepath in cacheDir setter
2018-07-19 13:50:45 +02:00
Yann Lanthony
1f675a0e42
[core] split graph.py into separate modules
...
core.graph is now splitted into:
* graph.py
* node.py
* attribute.py
2018-06-26 12:19:14 +02:00
Yann Lanthony
3ad2146e06
[core] remove links when clearing ListAttribute
2018-06-18 14:58:37 +02:00
Yann Lanthony
4d8a177ae3
[core] ListAttribute: don't call 'validateValue' on links
...
Links (Attribute reference or link expression) should not go through value confirmity checker
2018-06-18 14:58:36 +02:00
Yann Lanthony
168866aed0
[core] rename 'graph.isLink' to 'graph.isLinkExpression'
...
avoid confusion with Attribute.isLink method
2018-06-18 14:58:36 +02:00
Yann Lanthony
99d6068250
[graph] make ListAttribute connectable at root level
...
ListAttribute can now be connected :
* at root level to another ListAttribute (new)
* at child level to basic Attributes
2018-06-18 14:58:35 +02:00
Yann Lanthony
2cd724f957
[graph] ListAttribute: replace '__getitem__ by 'at'
...
__getitem__ is spuriously called when the object is used inside a Qt model and exposed to QML, leading to unexpected behaviors
2018-06-18 14:43:18 +02:00
Fabien Castan
d83022714f
[core] add pyCompatibility module
...
For python 2 / 3 compatibility
2018-05-21 17:12:22 +02:00
Fabien Castan
fb549ff3df
[python] use items instead of iteritems for python2/3 compatibility
2018-05-21 16:13:43 +02:00
Yann Lanthony
0adc4d8cc6
[core] add low-level retro-compatibility for attribute changes
...
First version of retrocompatibility, allowing to load files referencing removed or type-incompatible attributes.
* add node_factory to centralize node instantiation
* discard invalid attributes (i.e. not part of the node description anymore or with incompatible value type) when loading a file
* raise on unknown nodes
* add 'core.exception' module to declare Meshroom's exception types
2018-04-13 22:10:13 +02:00
Yann Lanthony
f401ca7c8b
[core] fix and use 'validateValue' for ListAttribute and GroupAttribute
2018-04-13 21:51:13 +02:00
Yann Lanthony
8ed0d0a7a2
[graph] add 'asLinkExpr' method
2018-03-21 15:53:34 +01:00
Yann Lanthony
995c18961b
[graph] init chunks upon node creation
2018-03-21 15:53:34 +01:00
Yann Lanthony
39abaf657a
[graph] add 'isLink' helper method
...
evaluates if the given value matches the link expression pattern
2018-02-12 17:58:47 +01:00
Yann Lanthony
9aca41be27
[graph] fix command line invalidation for "no-uid" attributes
...
mark node dirty even if no uid is impacted by the attribute change, since updateInternals must be called to update the command line.
2018-02-08 19:11:47 +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
2b76266fe7
[graph] GroupAttribute: emit valueChanged when children values change
...
make sure 'isDefault' property is re-evaluated when a child value changes
2018-02-05 18:22:56 +01:00
Yann Lanthony
75f33bdba0
[graph] add Attribute.defaultValue() method
2018-02-05 18:21:25 +01:00
Yann Lanthony
c1e9675fee
[graph] expose Attribute.isDefault as a property
2018-02-05 15:10:36 +01:00