Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Improve Graph Editor UX #612

Merged
merged 115 commits into from
Dec 3, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
115 commits
Select commit Hold shift + click to select a range
51d6c18
Create TaskManager with a task overview
lgeertsen Aug 12, 2019
c00db25
Don't lock graph and node editor while computing nodes
lgeertsen Aug 12, 2019
01974c2
Make Task Manager with Nodes submitted to a render farm
lgeertsen Aug 27, 2019
fe3c55e
Add ability to select node in the task manager tab
lgeertsen Aug 27, 2019
f4e5e84
Redesign node UI, added state icons and separate inputs and outputs
lgeertsen Aug 27, 2019
6d83985
Lock Nodes and Edges during computing
lgeertsen Aug 27, 2019
34a9056
Update TaskManager when node is removed
lgeertsen Sep 6, 2019
3c32aae
Fix problem for removing edge while computing
lgeertsen Sep 6, 2019
5aea330
Add nodes computed in renderfarm to Taksmanager on open scene
lgeertsen Sep 6, 2019
5fd0045
Update Taskmanager when graph is loaded
lgeertsen Sep 6, 2019
31c46f1
Remove loader for GraphEditor so it isn't reset when switching tabs
lgeertsen Sep 6, 2019
72c0606
[UI] Add node name to top bar, push icons right + add radius on node
lgeertsen Sep 11, 2019
0d01a22
[Fix] TaskManager: delete logging error
lgeertsen Sep 11, 2019
7e6436c
[UI] Change node width
lgeertsen Sep 11, 2019
3ff5ba8
[core] Submit and Compute buttons are disabled if needed
lgeertsen Sep 11, 2019
502e912
[UI] change node attributePin ui
lgeertsen Sep 11, 2019
9f5775c
[ui]Do not allow to start a new connection on an already connected input
lgeertsen Sep 11, 2019
f083309
AttributePin: move drag functionality to state
lgeertsen Sep 11, 2019
c88881e
Delete print
lgeertsen Sep 11, 2019
70509f5
Delete old readOnly property on GraphEditor
lgeertsen Sep 11, 2019
c128080
Fix disable nodeEditor when computing nodes
lgeertsen Sep 11, 2019
bbe40e0
[ui] GraphEditor: use node label in duplicates tooltip
fabiencastan Sep 12, 2019
72e0e64
[ui] GraphEditor: fix QML errors
fabiencastan Sep 12, 2019
65c472f
[ui] GraphEditor: change node background color
fabiencastan Sep 12, 2019
48b11b5
[ui] main: fix: graph can be null
fabiencastan Sep 12, 2019
5f28a8f
[ui] main: remove trailing commented code
fabiencastan Sep 12, 2019
f1267d7
[core] Attribute: avoid accessing member function of an invalid object
fabiencastan Sep 12, 2019
fcb2b23
[core] add "Attribute.hasOutputConnections" property
yann-lty Jan 24, 2020
e2ef652
[ui] Node: improve attribute display
yann-lty Jan 24, 2020
6186670
[ui] Node: improve node UI
yann-lty Jan 24, 2020
efb8e1e
[ui] Edge: fix control points distance
yann-lty Jan 24, 2020
ac149e1
[nodes][aliceVision] use user-friendly atribute labels
yann-lty Jan 24, 2020
79d35ac
[ui] Node: display Attribute labels instead of technical names
yann-lty Jan 24, 2020
16c9e0c
[ui] TaskManager: minor QML fix
yann-lty Jan 24, 2020
991aca9
Merge develop into dev/nodesAndTaskManager
yann-lty Jan 24, 2020
b883bd1
[core] taskManager: code cleanup
yann-lty Jan 24, 2020
bab908d
Merge branch 'develop' into dev/nodesAndTaskManager
fabiencastan Jul 29, 2020
68162e1
[root] fix add env to path
julien-hdev Aug 11, 2020
8a9499a
[core] taskManager: add check before pop
julien-hdev Aug 11, 2020
ff7f8b3
[core/ui] add a locked property on nodes
julien-hdev Aug 11, 2020
041cb8b
[ui] GraphEditor: fix delete key issue
julien-hdev Aug 12, 2020
8a5f493
[ui] Graph: add a 'Force Unlock Nodes' option
julien-hdev Aug 12, 2020
fd51237
[core] Node: add duplicate nodes list property
julien-hdev Aug 12, 2020
de83294
[ui] Node: change how duplicate nodes are displayed
julien-hdev Aug 12, 2020
02b9e34
[ui] GraphEditor: fix delete data issue with duplicate nodes
julien-hdev Aug 12, 2020
d838e78
[ui] Node: fix slowness due to QML function calls with a lot of nodes
julien-hdev Aug 13, 2020
0af2f32
[core] Node: fix locked when stopped
julien-hdev Aug 13, 2020
a3e0d53
[core/ui] fix typo and syntax
julien-hdev Aug 20, 2020
2083d83
[core] Node: add globalExecMode property
julien-hdev Aug 20, 2020
d6f9ee1
[core] TaskManager: fix issue and undeclared member
julien-hdev Aug 20, 2020
723e007
[core] TaskManager: removeNode method
julien-hdev Aug 20, 2020
b71832e
[core] Node: stopComputation method
julien-hdev Aug 20, 2020
f41565f
[ui] Graph: stop and cancel node computation
julien-hdev Aug 20, 2020
11e68e7
[core] Graph/Node: getInputNodes and getOutputNodes methods
julien-hdev Aug 24, 2020
ba1994d
[core/ui] replace and remove depending/required nodes methods
julien-hdev Aug 24, 2020
57bb9a4
[core] TaskManager: fix issue when a used node is destroyed
julien-hdev Aug 24, 2020
79e1c69
Merge remote-tracking branch 'origin/develop' into dev/nodesAndTaskMa…
julien-hdev Aug 24, 2020
ae7daf0
[ui] GraphEditor: fix binding warnings
julien-hdev Aug 24, 2020
ed83532
[core] Node: do not lock duplicates
julien-hdev Aug 24, 2020
044ef17
[ui] GraphEditor: enable stop/cancel computation only on locked nodes
julien-hdev Aug 25, 2020
2099bad
[core] TaskManager: forceStatus parameter
julien-hdev Aug 26, 2020
be49e37
[core] TaskManager: improve log message in the compute method
julien-hdev Aug 26, 2020
32a7005
[ui] Main: display compute errors in a Dialog popup
julien-hdev Aug 26, 2020
a00c82c
[ui] GraphEditor: check sessionUid for stop/cancel computation
julien-hdev Aug 26, 2020
44821a1
[ui] GraphEditor: move stop/cancel computation check into a Python slot
julien-hdev Aug 26, 2020
3e82a21
[core] TaskManager: fix issue in contains() / Node: add a Slot decorator
julien-hdev Aug 27, 2020
3e5e4cf
[common] PySignal file
julien-hdev Aug 27, 2020
3033e79
[common] PySignal: allow to disconnect another signal
julien-hdev Aug 27, 2020
9316b82
[common] Core: replace CoreSignal with PySignal
julien-hdev Aug 27, 2020
6eeea3b
[common] Core: add destroyed signal to CoreObject
julien-hdev Aug 27, 2020
201ab0b
[bin] replace the executeGraph method by a task manager
julien-hdev Aug 27, 2020
fb477d4
[core] Graph: remove useless getAlreadySubmittedChunks method
julien-hdev Aug 27, 2020
eaad870
[ui] Graph: remove useless _execute method
julien-hdev Aug 27, 2020
e64c66e
[core] Graph: remove warning logs from dfsToProcess method
julien-hdev Aug 27, 2020
91bd464
[ui] Main: fix action triggered by "Quit" button
julien-hdev Aug 27, 2020
8281f8c
[core] Node: improve updateDuplicates and add hasDuplicates property
julien-hdev Aug 27, 2020
06b8213
[ui] Node: duplicates button improvement but still perf issues
julien-hdev Aug 27, 2020
74fa302
[core] Graph: avoid double update while adding/removing an edge
julien-hdev Aug 27, 2020
b5e126c
[core] add values method to CoreListModel
julien-hdev Aug 28, 2020
5d63d02
[core] Node: update duplicate nodes' status without any latency
julien-hdev Aug 31, 2020
11bf682
[core] Node: avoid submitting already running nodes
julien-hdev Aug 31, 2020
f502625
[core] TaskManager: change removeNode() and add containsNodeName()
julien-hdev Aug 31, 2020
58790e3
[core] TaskManager: restart/block thread when stop computing
julien-hdev Aug 31, 2020
e0389ad
[ui] move UndoStack and TaskManager instantiations into app.py
julien-hdev Aug 31, 2020
5f444e6
[ui] Commands: handle undo stack while computing and submitting
julien-hdev Sep 2, 2020
eb52459
[core] Graph: raise error in dfs() with longestPathFirst
julien-hdev Sep 2, 2020
5722ef5
[tests] Graph: add new test with nodesFromNode()
julien-hdev Sep 2, 2020
95c7a9b
[ui] Node: move compatibility badge inside the node icon bar
julien-hdev Sep 2, 2020
78f7feb
[ui] ErrorHandler: analyse error (only used by computation for now)
julien-hdev Sep 3, 2020
3f3a6c0
[core/bin] Submitting: remove a duplicate function and move another one
julien-hdev Sep 3, 2020
3fc09dd
[core] TaskManager: handle compatibility error outside dfsToProcess()
julien-hdev Sep 3, 2020
a19ef35
[ui] Main: handle compatibility issues with a Dialog
julien-hdev Sep 3, 2020
bdf96e2
[core] TaskManager: fix issue with checkCompatibilityNodes()
julien-hdev Sep 3, 2020
49e33fb
[core] Node: fix locked issue
julien-hdev Sep 4, 2020
f8bd40a
[core] Graph: rename nodesFromNode() to dfsOnDiscover()
julien-hdev Sep 4, 2020
208749d
[core] Graph: change signature of dfsOnDiscover()
julien-hdev Sep 4, 2020
b567d8f
[core] Graph: change default reverse direction in dfsOnDiscover()
julien-hdev Sep 4, 2020
e4a95e8
[core] Graph: change signature of dfsOnFinish()
julien-hdev Sep 4, 2020
44d019b
[core] Graph: move reverse property from dfs() to Visitor class
julien-hdev Sep 4, 2020
8499431
[core] Graph: add getRootNodes()
julien-hdev Sep 4, 2020
deaf1e3
[core] Graph: fix reverse issue in dfs()
julien-hdev Sep 4, 2020
37c758c
[core/tests] Graph: default startNodes parameter in dfsOnDiscover()
julien-hdev Sep 4, 2020
0693af5
[core] Node: fix locked issue when computation is canceled
julien-hdev Sep 4, 2020
0345672
[core] TaskManager: raise Error if computing/submitting duplicates
julien-hdev Sep 4, 2020
c8978cd
[core] Graph.findNode: if multiple candidates, do not raise an error …
fabiencastan Sep 4, 2020
69e9495
[bin] compute: No warning if we are computing as EXTERN and the node …
fabiencastan Sep 4, 2020
dba781a
[common] CoreObject: Cannot use ClassSignal in __del__
fabiencastan Sep 4, 2020
635f362
[core] Attribute.isLink: fix unreachable return
julien-hdev Sep 5, 2020
827e98a
[ui] Node: improve duplicates' button ToolTip
julien-hdev Sep 5, 2020
bd4c816
[ui] GraphEditor: fix edges removing when nodes are locked
julien-hdev Sep 5, 2020
9403873
[core] TaskManager: handle simultaneous computing in LOCAL and EXTERN
julien-hdev Sep 5, 2020
e91dab1
[core] Graph.canSubmitOrCompute: add documentation
julien-hdev Sep 5, 2020
1102ce8
Merge branch 'develop' of github.com:alicevision/meshroom into dev/no…
fabiencastan Dec 1, 2020
a0206a8
[core] graph: fix retrieve first submitter
fabiencastan Dec 2, 2020
bfdf2ea
[ui] GraphEditor: use globalExecMode method
fabiencastan Dec 2, 2020
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 10 additions & 3 deletions bin/meshroom_compute
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import meshroom
meshroom.setupEnvironment()

import meshroom.core.graph
import meshroom.core.taskManager
from meshroom.core.node import Status


Expand Down Expand Up @@ -39,15 +40,19 @@ graph.update()
if args.node:
# Execute the node
node = graph.findNode(args.node)
submittedStatuses = [Status.SUBMITTED, Status.RUNNING]
submittedStatuses = [Status.RUNNING]
if not args.extern:
# If running as "extern", the task is supposed to have the status SUBMITTED.
# If not running as "extern", the SUBMITTED status should generate a warning.
submittedStatuses.append(Status.SUBMITTED)
if not args.forceStatus and not args.forceCompute:
if args.iteration != -1:
chunks = [node.chunks[args.iteration]]
else:
chunks = node.chunks
for chunk in chunks:
if chunk.status.status in submittedStatuses:
print('Error: Node is already submitted with status "{}". See file: "{}"'.format(chunk.status.status.name, chunk.statusFile))
print('Warning: Node is already submitted with status "{}". See file: "{}"'.format(chunk.status.status.name, chunk.statusFile))
# sys.exit(-1)
if args.iteration != -1:
chunk = node.chunks[args.iteration]
Expand All @@ -61,5 +66,7 @@ else:
toNodes = None
if args.toNode:
toNodes = graph.findNodes([args.toNode])
meshroom.core.graph.executeGraph(graph, toNodes=toNodes, forceCompute=args.forceCompute, forceStatus=args.forceStatus)

taskManager = meshroom.core.taskManager.TaskManager()
taskManager.compute(graph, toNodes=toNodes, forceCompute=args.forceCompute, forceStatus=args.forceStatus)

7 changes: 5 additions & 2 deletions bin/meshroom_photogrammetry
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import meshroom
meshroom.setupEnvironment()

import meshroom.core.graph
import meshroom.core.taskManager
from meshroom import multiview

parser = argparse.ArgumentParser(description='Launch the full photogrammetry or Panorama HDR pipeline.')
Expand Down Expand Up @@ -197,7 +198,9 @@ if args.submit:
if not args.save:
raise ValueError('Need to save the project to file to submit on renderfarm.')
# submit on renderfarm
meshroom.core.graph.submit(args.save, args.submitter, toNode=toNodes)
taskManager = meshroom.core.taskManager.TaskManager()
taskManager.submitFromFile(args.save, args.submitter, toNode=toNodes)
elif args.compute:
# start computation
meshroom.core.graph.executeGraph(graph, toNodes=toNodes, forceCompute=args.forceCompute, forceStatus=args.forceStatus)
taskManager = meshroom.core.taskManager.TaskManager()
taskManager.compute(graph, toNodes=toNodes, forceCompute=args.forceCompute, forceStatus=args.forceStatus)
4 changes: 3 additions & 1 deletion bin/meshroom_submit
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import meshroom
meshroom.setupEnvironment()

import meshroom.core.graph
import meshroom.core.taskManager

parser = argparse.ArgumentParser(description='Submit a Graph of processes on renderfarm.')
parser.add_argument('meshroomFile', metavar='MESHROOMFILE.mg', type=str,
Expand All @@ -18,4 +19,5 @@ parser.add_argument('--submitter',
help='Execute job with a specific submitter.')

args = parser.parse_args()
meshroom.core.graph.submit(args.meshroomFile, args.submitter, toNode=args.toNode)
taskManager = meshroom.core.taskManager.TaskManager()
taskManager.submitFromFile(args.meshroomFile, args.submitter, toNode=args.toNode)
7 changes: 6 additions & 1 deletion meshroom/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,12 @@ def addToEnvPath(var, val, index=-1):
if not isinstance(val, (list, tuple)):
val = [val]

paths[index:index] = val
if index == -1:
paths.extend(val)
elif index == 0:
paths = val + paths
else:
raise ValueError("addToEnvPath: index must be -1 or 0.")
os.environ[var] = os.pathsep.join(paths)

# setup root directory (override possible by setting "MESHROOM_INSTALL_DIR" environment variable)
Expand Down
Loading