Commit graph

3674 commits

Author SHA1 Message Date
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
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
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
waaake
32a493d026 [ui] FileSaveDialog: Added Validation to the file save process
Validating the filename to ensure that the file does not gets saved with just the extension
2024-12-02 17:42:02 +05:30
waaake
c2c32c8c14 [ui] ImageGallery: Implementation of Toggle based Search. 2024-11-30 20:20:32 +05:30
waaake
9404b73845 [ui] NodeEditor: Implementation of Toggle based Search.
Node Editor search can now be toggled making it take lesser space by default.
2024-11-30 20:17:06 +05:30
waaake
3a04ce668f [ui] GraphEditor: Search filtering fix
Fixed the issue where navigation arrows on the Filtering was allowing to set an index even when the search had null as the result.

Accepted signal on the Seach invokes the function rather than invoking the sigal for the button
2024-11-30 20:14:13 +05:30
waaake
b0ed5e465e [ui] GraphEditor: Graph Editor gets the toggle based search
Search bar is now placed in the bottom pane of the Graph Editor making it non-obstructing for navigating nodes across Graph Editor
2024-11-30 20:09:04 +05:30
waaake
f78ee9bb67 [ui] SearchBar: Search bar can now be toggled to become visible with the search button.
SearchBar gets the clear text feature allowing text to be cleared with a single click.

Added accepted signal for the Searchbar with Return and Enter key Press
2024-11-30 19:53:46 +05:30
Fabien Castan
2a27f4c6fe
Merge pull request #2578 from alicevision/fix/unexposedEdges
[GraphEditor] Node: Check if unexposed `ListAttributes` contain links
2024-11-29 21:58:49 +01:00
Candice Bentéjac
9c0938a7da [nodes] CameraInit: Update SfMData version 2024-11-29 11:53:39 +01:00
Candice Bentéjac
5a294feae7 [nodes] Add Global Rotation Estimating node 2024-11-29 11:53:24 +01:00
Yann Lanthony
e800cd4e31
Merge pull request #2604 from alicevision/dev/NodeColoring
[ui] Graph Editor Update: Quick Node Coloring with the Color Selector Tool
2024-11-29 11:16:25 +01:00
waaake
225f4dc7e5 [ui] Color Selector Shortcut Fix: Fixed the shortcut clash with node copy 2024-11-29 09:51:13 +05:30
Candice Bentéjac
d797692a25
Merge pull request #2533 from alicevision/dev/anamorphicFocal
[Viewer3D] Apply the pixel aspect ratio for the Frame Overlay
2024-11-28 18:28:55 +01:00
Candice Bentéjac
705d00b8b2
Merge pull request #2609 from alicevision/fix/image3dViewer
[ui] Fix field of view functions for tall images
2024-11-28 17:37:52 +01:00
waaake
233bbb76c8 [ui] Graph: Updating the way how color gets set on the selected nodes
Coloring the nodes now uses setAttribute command instead of relying on refrences to Nodes within the graph.
2024-11-28 09:28:36 +05:30