Commit graph

237 commits

Author SHA1 Message Date
Candice Bentéjac
f2767aec33 [ui] GraphEditor: Add a "preview" icon when the node's output can be loaded
If the node has been computed (i.e. its status is `SUCCESS`) and has at
least one output that can be loaded in the 2D viewer, then display an icon
with a tooltip that indicates that double-clicking the node allows to load
it and its outputs in the 2D Viewer.
2023-06-09 17:32:05 +02:00
Fabien Castan
63bb3fcf2a
Merge pull request #1812 from alicevision/dev/fileWatcherStatus
Add new file watcher behaviours
2023-03-05 14:08:05 +01:00
Candice Bentéjac
614f831457 [ui] Force nodes' status update before performing a submit/compute/delete
This ensures that each node's status is correct before being computed,
submitted, or before having its data deleted. This is especially useful
when the File Poller is in minimal node, and only monitors the nodes that
are currently submitted or running.

If a graph is being opened in two different instances of Meshroom, and
computations are started on it in one of the instances, the other one will
not be aware of it (as the signals indicating computations have started
will have been emitted in the first instance, so no chunk will be added
to the monitoring in the second one). By forcing the update of the statuses
before actually starting computations or deleting data, we ensure that
there will not be any computational conflicts (same nodes submitted twice
in farm, for example) and that the users can know at all times what they
are doing without manually triggering a refresh.

This is not critical for the "Delete Data" part, as the action can already
be triggered even with there is no data to delete, but is still useful
to keep the displayed nodes as up-to-date with their actual status as
possible.
2023-03-02 19:13:00 +01:00
Candice Bentéjac
6381371e7d Display the invalidation and comment messages in the internal attributes' tooltip
The tooltip now displays both the invalidation message, followed by the
comments. The invalidation message is displayed first in bold font,
followed by an empty line and the comments in regular font.

The tooltip now appears if at least one of the invalidation or comment
messages exists.

The invalidation and comment messages are formatted with HTML tags prior
to their display. The descriptions of both attributes is also updated
to indicate which one is displayed in bold or regular font.
2023-02-15 08:36:16 +00:00
Candice Bentéjac
4b7a548687 Notify changes in internal attributes' properties
The "label", "color" and "comment" properties are not constant anymore,
their changes in value are notified with the internalAttributesChanged()
signal, like the "invalidation" property.

This implies that the connection on "internalAttributesChanged" on the
QML side is not needed anymore.
2023-02-15 08:36:16 +00:00
Candice Bentéjac
1015ea448a [ui] Add an icon and tooltip on a node's header if it has a comment
If the "Comments" internal attribute is filled, add a corresponding
icon in the node's header, as well as a tooltip that contains the
comment.
2023-02-15 08:36:13 +00:00
Candice Bentéjac
930af07966 [core] Correctly load internalAttributes in compatibility mode 2023-02-15 08:36:11 +00:00
Candice Bentéjac
21d01acc9a Add "color" as an internal attribute
Setting this attribute allows the user to change the color
of a node, either by directly providing an SVG color name or an
hexadecimal color code, or by picking a color with the selector.
2023-02-15 08:36:11 +00:00
Candice Bentéjac
330382ab0c Add "label" as an internal attribute
Setting the "label" internal attribute allows to give a custom
label to replace the node's default label.
2023-02-15 08:36:10 +00:00
Candice Bentéjac
9bc9e2c129 Add "Notes" tab with "comment"/"invalid comment" attributes
Add two internal attributes, "Comment" and "Invalid comment", in
a specific "Notes" tab, which will contain any further internal
attribute. Internal attributes exist for all nodes.
2023-02-15 08:36:10 +00:00
Fabien Castan
d18e8397c6
Merge pull request #1862 from alicevision/dev/externComputeIcon
[ui] Display nodes computed in another Meshroom instance as "Computed Externally"
2023-01-22 18:10:16 +00:00
Sarah Brood
56fe514582
[ui] GraphEditor: use maxZoom to fit on nodes (#1865) 2023-01-18 11:49:03 +00:00
Candice Bentéjac
45d3f202fc Display the "Computed Externally" icon whenever the node runs externally
A node running externally used to mean it was running on a submitter.
This definition has been extended and a node is now considered to be
external if it is running on a submitter or running in another instance
of Meshroom. The "Computed Externally" is updated to reflect that
change.
2023-01-05 16:44:55 +01:00
Fabien Castan
a2f559f48a
Merge pull request #1839 from alicevision/dev/fixQmlWarnings
[ui] Fix all "TypeError" QML warnings
2022-12-06 11:38:16 +01:00
Candice Bentéjac
02383c68b3 [ui] Check that objects accessed by QML properties are not null before accessing them
Some QML properties access exposed Python objects that may or may not
be null upon their access. When these objects are accessed while null,
QML issues "TypeError" warnings. These warnings have no functional
impact as QML correctly handles trying to access null objects, but can
spam the logs.

This commit aims at fixing all these warnings by checking that the
Python objects are not null before being accessed.
2022-12-06 11:04:50 +01:00
Candice Bentéjac
6a36da61cf [ui] GraphEditor: select pipelines imported through the node menu
Add all the nodes from a pipeline imported through the node menu to the
node selection.
This involves changing the return value of ImportProjectCommand from a
boolean to a list of imported nodes.
2022-12-02 18:19:56 +01:00
Candice Bentéjac
9d88ad91d5 [ui] GraphEditor: clear node selection before adding new nodes from the menu
This commit is a bugfix.
When adding new nodes with the node menu, the selection was never
explicitly cleared and nodes were added to the selection rather than
being exclusively selected.

This behaviour used to be hidden when the node menu could only appear
with a right click, as the click would automatically empty the
selection. However, with the node menu being now openable with the TAB
key, there might not be a click to empty the selection. If new nodes
are added by opening the menu with the TAB key and using the arrow keys
to select the node to create, an infinite number of them can be created
and added to the selection.
2022-12-02 18:13:50 +01:00
Candice Bentéjac
aedf0ef4c1 [ui] GraphEditor: Add the pipelines in the node menu's search bar
Pipelines can be searched in the list of available node types / pipelines
like regular node types.
2022-12-02 18:13:50 +01:00
Candice Bentéjac
2e5f471b7b [ui] Add a "pipelineTemplateNames" property
This property simplifies and optimizes the addition of templates in
the node menu and their import into the graph, as it prevents us from
looping over the entire "pipelineTemplateFiles" dictionary to retrieve
the information we need.
2022-12-02 18:13:49 +01:00
Candice Bentéjac
c2570ca0fb [ui] GraphEditor: Import pipeline on the mouse's position with the node menu
If a pipeline is imported with the node menu instead of the "Import
Project" action from the File menu, the top-left "corner" of the graph
should be placed on the mouse's position.
The position of pipelines imported with the "Import Project" menu
remains unchanged: they are automatically placed below the lowest
node in the current graph.
2022-12-02 18:13:17 +01:00
Candice Bentéjac
04ab813cef [ui] GraphEditor: Add a "Pipelines" category in the node menu
Artificially add a "Pipelines" category in the node menu. The category
contains the list of available pipeline templates. Selecting a pipeline
instead of a regular node type "creates" the pipeline in the GraphEditor
(using the "import project" functionality). The imported pipeline is
by default placed under the current graph.

This commit does not include enabling the search for pipelines from the
"Pipelines" category in the search bar.
2022-11-29 18:14:30 +01:00
Loïc Vital
0795e40ef6 [ui] check mouse is in graph editor 2022-11-03 10:33:19 +01:00
Loïc Vital
cf3e2b3573 [ui] prevent default tab behavior (change focus to next element) 2022-11-02 15:25:24 +01:00
Loïc Vital
c5294eb364 [ui] open node menu with tab 2022-11-02 13:31:52 +01:00
Fabien Castan
ab0e132121
Merge pull request #1787 from alicevision/dev/lv/colorLog
[ui] Elapsed time indicators in log
2022-10-12 09:53:56 +02:00
Loïc Vital
5b973cb349 [ui] using coherent format for elapsed time 2022-10-03 16:26:57 +02:00
Candice Bentéjac
021770a424 [ui] Center pasted nodes in GraphEditor when it does not contain the mouse
When using the Edit > Paste menu, or when pressing Ctrl+V while the Graph
Editor has the focus but the mouse is not contained in it, there is no
current mouse position in the GraphEditor so the position that is provided
to the "pasteNodes" function is the last known mouse position, which is
oftentimes on the border of the GraphEditor.

This commit automatically sets the mouse's position to the center of
the GraphEditor, and "builds" the zone containing the pasted nodes around
it.
2022-10-03 11:13:52 +02:00
Candice Bentéjac
58784fb6ff [ui] Restrain the "copy/paste nodes" shortcuts to the GraphEditor
If a Ctrl+C or Ctrl+V shortcut is performed outside the GraphEditor,
the performed action should not be a copy or a paste of the nodes, but
the own copy/paste of the current element (e.g. if a Ctrl+C is made on
on the NodeEditor, then the copied element should be the one selected
in the NodeEditor, not the currently selected node).
2022-09-26 09:56:28 +02:00
Fabien Castan
ee20136f82
Merge pull request #1764 from alicevision/dev/displayComputeTime
[ui] Display computation time for "running" or "finished" nodes
2022-09-10 00:27:34 +02:00
Candice Bentéjac
5542516ba4 [ui] Display computation time for "running" or "finished" nodes 2022-09-09 16:36:43 +02:00
Candice Bentéjac
61e0482a21 Add an offset to the position of pasted nodes if a node is hovered
If a node is being hovered when the user performs the paste, an
offset is added to the mouse's position, both in the horizontal and
vertical directions. This aims at avoiding a complete overlap with
the nodes on top of which the clipboard content is pasted.
2022-09-08 15:21:57 +02:00
Candice Bentéjac
6bb0ad4508 Add a "Paste Node(s)" option in the nodes' right click menu
The "Paste Node(s)" option copies the selected nodes to the
clipboard (as does the "Copy Node(s)" option) and immediately
pastes them into the graph.
2022-09-06 11:20:25 +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
Candice Bentéjac
ede24713d0 Add "Copy" and "Paste" actions in the "Edit" menu
Also add a "Copy Node(s)" option in the nodes' right click menu.
2022-08-25 11:32:37 +02:00
Candice Bentéjac
e11452efdb Extend copy/paste support to selections containing multiple nodes 2022-08-25 11:08:57 +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
751bad96c6 Copy selected node's content to the clipboard when Ctrl+C is pressed
When Ctrl+C is pressed while a node selected, its content is formatted
to JSON and copied to the system's clipboard.
2022-08-19 11:31:31 +02:00
Fabien Castan
b291a9ed07
Merge pull request #1727 from alicevision/dev/externalPipelines
Use project files to define pipelines
2022-07-26 15:06:16 +02:00
Candice Bentéjac
8310b5c532 [ui] Highlight attributes' pins correctly
Harmonize the highlighting of the attributes' pins when they
are hovered and clicked on, may they already be connected to
other nodes or not.
2022-07-19 10:57:16 +02:00
Candice Bentéjac
352c8403e1 [ui] Fix vertical alignment of attributes' pins
The attributes' pins are now vertically aligned with their
matching labels.
2022-07-19 10:55:50 +02:00
Candice Bentéjac
47a99963fb [ui] Ensure the edge connecting two nodes is following the mouse
Moving the mouse rapidly when starting to connect two nodes'
attributes could lead to an unwanted offset between the tip of
the edge and the mouse's position; it forced the user to move
the mouse further than the attribute pin they wanted to connect
to in order to actually be able to connect to it.
2022-07-19 10:49:52 +02:00
Candice Bentéjac
708eb85c9c Evaluate variables in nodes' string parameters 2022-07-12 09:31:37 +02:00
luz paz
f4dcf6557f Fix various typos in the source code
## Description
Fix various typos in the source code. This includes user facing code, documentation, and source comments. This PR has not been tested.
Closes #1605
2022-01-22 07:39:05 -05:00
asoftbird
0d61ebd5f1
Update StatViewer.qml 2021-10-07 10:54:59 +02:00
Guillaume Buisson
67c4cf3c65 [attribute] hue semantic editor: add text editor and colored display 2021-07-19 12:03:11 +02:00
Fabien Castan
dc3f4dd2be [nodes] add semantic to customize attibute UI 2021-07-19 12:03:00 +02:00
ChemicalXandco
ecb1662b6b [ui] GraphEditor: highlight the edge that will be deleted when it is replaced with another edge 2021-06-04 19:59:49 +01: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