Commit graph

3839 commits

Author SHA1 Message Date
waaake
a2f4ac560f [ui] NodeEditor: Added refresh function to update the currentIndex of the tabBar 2024-12-31 09:43:27 +05:30
waaake
535f2f06b3 [core] Graph: Introduced 'isSaving' flag
The 'isSaving' flag is a way to identify if the project is currently being saved and serves as a way to correctly distinguish whether the current filepath change is due to a save or a new scene or a load operation
2024-12-30 10:25:56 +05:30
waaake
d142a745d0 [fix][ui] StatViewer: Updated Layouts for Stat Viewer
The sub column layouts in the parent column layouts were causing polish loop during show/resize ops
2024-12-30 09:28:36 +05:30
Fabien Servant
17a0d9f9d7 add camera init type 2024-12-27 12:36:40 +01:00
Candice Bentéjac
cb301b2aaa [GraphEditor] Fix injections into signal handlers with JS functions 2024-12-26 15:44:11 +01:00
Candice Bentéjac
faff99f963
Merge pull request #2625 from alicevision/fix/validateSavePermissions
[ui] Add Validation for Save file path accessibility
2024-12-23 19:07:00 +01:00
Candice Bentéjac
e8d177e28e
Merge pull request #2579 from alicevision/dev/nukeExport
[nodes] `ExportDistortion`: Add animated distortion option
2024-12-23 18:34:13 +01:00
Candice Bentéjac
65cd6dc394 [pipelines] Update ExportDistortion version for all nodes 2024-12-23 18:24:56 +01:00
Fabien Servant @ TCS
139dba8e8d
Update ExportDistortion version number 2024-12-23 11:03:48 +01:00
waaake
2f0996f7bf [ui] NodeEditor: Addressed the issue with retaining tabs when switching node selection
Updated the event trigger to be onVisibleChanged and the condition to check whether the current selected node is an incomputable node and the current tab index does not exist for it before resetting the index to 0
2024-12-23 09:07:29 +05:30
waaake
21b5080dcb [ui] Application: Save now validates user access to the save directory
File and template save as validation includes an access check to ensure that a given directory exists and the user has access for writing to it
2024-12-23 09:03:41 +05:30
waaake
9b96cfcc99 [helper] Filepath: Added accessibility helper method
Accessibility method helps identify whether a given save path directory is accessible for the user to write to.
2024-12-23 09:01:56 +05:30
Yann Lanthony
c20ecaadd2 [app] Add --env-help command line option
Add a new CLI option to print the available Meshroom environment
variables and their descriptions.
2024-12-20 18:26:30 +01:00
Yann Lanthony
968a5d0471 [app] Add support for enabling QML debugging
Introduce new environment variable to enable and configure
QML debugging when starting Meshroom GUI app.

Introduce a new EnvVar class to centralize the management of
environment variables across Meshroom.
2024-12-20 18:26:30 +01:00
Yann Lanthony
a790ac8f21 [app] Set Fusion style using API
Instead of passing the style via QApplication arguments,
use the QQuickStyle API.
2024-12-20 18:26:30 +01:00
waaake
b31da19e66 [ui] GraphEditor: Fixed Key handling for Node creation Menu
Keys.AfterItem as the priority ensures the Item's own key events are handled before Forwarding it to specified items. This handles all defined Enter and Return key presses
2024-12-19 06:05:11 +01:00
Fabien Castan
6e99f9daeb
Merge pull request #2619 from alicevision/dev/sfmBootstraping
Sfm Bootstraping parameterization
2024-12-18 09:17:00 +01:00
Candice Bentéjac
ebbd000714 [Viewer3D] MediaLoader: Send pointSize as is
`pointSize` was divided by 100 before being sent to the shader that
rendered the programmable points, and was used as is to set the size of
the "fixed size" points implicitly in the QML.

Now that both cases are handled by the same shader, we do not need to
perform this division here: it will be done directly in the shader (by
opposition, keeping it here would have meant performing a x100
multiplication in the shader for the "fixed size" case).
2024-12-17 19:07:40 +01:00
Candice Bentéjac
e3f1e27c68 [Viewer3D] MediaLoader: Bind fixedPointSize for the SfMLoader
The `fixedPointSize` parameter was used to determine whether the
point size was fixed or programmable from the QML (using a `PointSize`
render state). With Qt6, this render state is not correctly handled by
the RHI and we need to set directly within the shader whether the point
size is fixed or not, hence the binding.
2024-12-17 19:05:03 +01:00
Candice Bentéjac
9aa9e7fe6e [GraphEditor] Add missing import of Utils to access Format methods 2024-12-17 11:03:33 +00:00
Fabien Servant
9d06a467b3 Export Maya 2024-12-17 10:45:40 +01:00
Candice Bentéjac
92a4db40b0 [pipelines] Fix multi-view photometric stereo template
The template has been renamed to fit the automatic name parsing of
template files, it has been effectively converted to an actual template
and all the nodes have been aligned coherently.
2024-12-13 17:09:20 +01:00
Candice Bentéjac
d65b52a34f [nodes] SfMFilter: Add verbose level attribute 2024-12-13 17:09:20 +01:00
Fabien Castan
1f441b7c92 [nodes] SfMFilter: Adapt to node api changes (no more uid) 2024-12-13 17:09:19 +01:00
jmelou
47bbce4ddf [pipeline] Simplify MV-PS pipeline
Pose transfert in SfMTransfert
2024-12-13 17:09:19 +01:00
jmelou
2519a57e76 [node] Add SfMFilter node
Select views using regex
2024-12-13 17:09:19 +01:00
Candice Bentéjac
e565458131 [GraphEditor] AttributeItemDelegate: Use MaterialLabel for uncomputed components 2024-12-11 14:59:35 +01:00
Yann Lanthony
a0398c45c0
[core] Graph: fix Graph.load missing return value
Add missing return statement for the load function, used by the UI to determine whether the load was successful.
2024-12-11 14:10:43 +01:00
Fabien Castan
908312ad1c
Merge pull request #2610 from alicevision/dev/colorizePointCloud
New SfMColorizing Node
2024-12-10 09:29:19 +01:00
Yann Lanthony
944ff15002 [ui] Additive mode for select following Nodes
Implement additive selection behavior when selecting downstream
nodes from a node, using Alt+Shift+Click.
2024-12-09 11:16:33 +01:00
Yann Lanthony
fc85999011 [ui] GraphEditor: toggle node selected state on Ctrl+click
Closer to the standard behavior of the Ctrl modifier key for selection.
2024-12-09 10:18:48 +01:00
Yann Lanthony
87c0cef605 [ui] GraphEditor: fix indentation 2024-12-06 11:03:30 +01:00
Yann Lanthony
4a60e24c2e [ui] GraphEditor: Improve node selected status logic
Instead of connecting to onSelectionChanged, use ItemSelectionModel.hasSelection
property, that can be use for direct bindings with the same behavior.
https://doc.qt.io/qt-6/qml-qtqml-models-itemselectionmodel.html#hasSelection-prop
2024-12-06 10:47:20 +01:00
Yann Lanthony
a3268f456c [ui] Graph: cleanup unused function 2024-12-06 10:14:50 +01:00
Yann Lanthony
67bd43e040 [ui] Graph: remove selectedNodes model
Expose `getSelectedNode` that relies on the QItemSelectionModel
for imperative code in QML that still requires to access the
selected node instances.
2024-12-06 10:14:50 +01:00
Yann Lanthony
cdfa6186b1 [ui] Graph: Add clearSelectedNodesData method
Convenient function to directly work on the current node selection.
2024-12-06 10:14:50 +01:00
Yann Lanthony
8dbcfa392f [ui] Application: Simplify Cut/CopyNodes actions
Remove dynamic tooltip for cut/copy actions that displays all
selected node names:
- This inline textual information is hard to process as a user.
- Avoid binding to and iteration over the selection.
2024-12-06 10:14:50 +01:00
Yann Lanthony
d11a1f62cc [ui] Graph Editor: fix remaining use of deleted function 2024-12-06 10:14:50 +01:00
Yann Lanthony
107b1e959a [ui] GraphEditor: cache selected node computability status
Avoid to evaluate the computability/submitability status of each
node twice by caching the information when creating the node
context menu.
2024-12-06 10:14:50 +01:00
Yann Lanthony
ade1f87b8f [ui] GraphEditor: Centralize node selection computability status
Re-write the computability status of the current node selection
as properties within the node menu component.
Note that this should be further improved to better scale with the size
of the selection, as it requires to traverse the graph for each node.
2024-12-06 10:14:50 +01:00
Yann Lanthony
b5836d96ed [ui] GraphEditor: Create node context menu after selection update
Delay the loading of the node context menu once the node selection
has been updated, for it to consider the proper selection.
2024-12-06 10:14:50 +01:00
Yann Lanthony
b3a8c6a1f2 [ui] GraphEditor: move node context menu to a Loader
Avoid having the node context menu always evaluating the current
state of the selected nodes for its own display, by dynamically
creating it on demand with a Loader.
Use callbacks for recomputing/resubmitting actions, instead of
storing state in the UI components.
2024-12-06 10:14:50 +01:00
Yann Lanthony
686927a92d [ui] Graph: add removeSelectedNodes method
Add and use an explicit method to remove the currently selected nodes
in a graph.
2024-12-06 10:14:43 +01:00
Yann Lanthony
05eabb2b13 [ui] Graph: Node selection refactor (1)
Switch selection management backend to a QItemSelectionModel,
while keeping the current 'selectedNodes' API for now.
Use DelegateSectionBox for node selection in the graph, and
rewrite the handling of node selection / displacement.
2024-12-06 10:13:51 +01:00
Yann Lanthony
6d2e9a2ba9 [ui] Utils: add SelectionBox and DelegateSelectionBox
- SelectionBox: generic Selection box component.
- DelegateSelectionBox: specialized SelectionBox to select model delegates
  from an instantiator (Repeater, ListView).

Also Introduce a Geom2D helper class to provide missing features for
intersection testing in QML.
2024-12-06 10:12:11 +01:00
Yann Lanthony
dfe2166942 [ui] Node: expose additional mouse events
Forward mouse 'released' and 'clicked' events for giving
more control over node selection management.
2024-12-06 10:12:11 +01:00
Yann Lanthony
b21192282d QObjectListModel: implement 'index' method
Implementing this method allows to use QObjectListModel
in combination with other Qt classes that can act on a model
(eg: QSelectionItemModel, QSortFilterProxyModel...).
2024-12-06 10:12:11 +01:00
Yann Lanthony
df4ad22b6c
Merge pull request #2613 from alicevision/fix/edgeSelection
[GraphEditor] Edge: Correctly update the `EdgeMouseArea` when moving nodes
2024-12-03 12:48:05 +01:00
Candice Bentéjac
0dca19f158 [GraphEditor] Edge: Correctly update the EdgeMouseArea when moving nodes 2024-12-03 11:56:56 +01:00
Yann Lanthony
feedad4775
Merge pull request #2602 from alicevision/fix/ValidateSaveFile
[BugFix] File save dialog now requires a valid filename
2024-12-03 09:57:37 +01:00