Commit graph

1503 commits

Author SHA1 Message Date
Candice Bentéjac
3e6aabc795 [qml] Handle cases where a chunk is undefined 2025-02-14 17:29:04 +01:00
Candice Bentéjac
b7716ef1bd [GraphEditor] Remove "common.js" and use Utils.Colors instead 2025-02-14 17:19:11 +01:00
Yann Lanthony
ccc77c3153 [ui] FilterComboBox: rework filtering behavior
Reverse relationship between combobox and filter field.
- Make textfield filter the main active focus item
that forwards its key event to the combobox.
- Make sure highlighted item is always valid.
- Block combobox validation when the filter is invalid.
2025-02-13 18:42:58 +01:00
Yann Lanthony
583088035b [ui] FilterComboBox: fix issue clicking on last menu item
Disable the horizontal scrollbar in the popup menu that was
interfering with mouse click selection on the last item.
Also, remove the unneeded Layout policy on the root ColumLayout
of this popup's contentItem.
2025-02-13 11:40:09 +01:00
Yann Lanthony
212384bd1c [ui] GraphEditor: redesign non exclusive ChoiceParam control
* Move the control to its own file.
* Add support for displaying custom values (elements outside the predefined possible values).
2025-02-13 11:40:09 +01:00
Yann Lanthony
ba272eddc7 [ui] GraphEditor: Move ChoiceParam control to its own file
Start modularization of attribute controls for better readability
and maintenance.
Make Choice control independent from the MeshroomUI API.
2025-02-13 11:40:09 +01:00
Yann Lanthony
cfc2979653 [ui] Redesign exclusive ChoiceParam UI component
Simplify the FilterComboBox to rely on the default behavior
provided by the ComboBox control.
Improve the filtering system and the ability to set a custom value.
Turn to a more declarative approach with regard to handling
value update and its mapping to the combobox's current index.
2025-02-13 11:40:09 +01:00
Yann Lanthony
d54ba012a0 [ui] Refactor node pasting using graph partial serialization
Re-implement node pasting by relying on the graph partial serializer,
to serialize only the subset of selected nodes.
On pasting, use standard graph deserialization and import the content
of the serialized graph in the active graph instance.

Simplify the positioning of pasted nodes to only consider mouse position
or center of the graph, which works well for the major variety of use-cases.
Compute the offset to apply to imported nodes by using the de-serialized
graph content's bounding box.
2025-02-06 16:46:04 +01:00
Yann Lanthony
7eab289d30 [core] Graph: initial refactoring of graph loading API and logic
* API
Instead of having a single `load` function that exposes in its API
some elements only applicable to initializing a graph from a templates,
split it into 2 distinct functions: `load` and `initFromTemplate`.
Apply those changes to users of the API (UI, CLI), and simplify Graph
wrapper classes to better align with those concepts.

* Deserialization
Reduce the cognitive complexity of the deserizalization process
by splitting it into more atomic functions, while maintaining the
current behavior.
2025-02-06 16:46:04 +01:00
Yann Lanthony
cf189fd57b
Merge pull request #2637 from alicevision/dev/optimRecentProjects
[ui] Refactor the access to the list of recent project files
2025-01-30 17:34:34 +01:00
Yann Lanthony
e51bb93bf0
Merge pull request #2650 from alicevision/fix/CrashingEdge
[ui][fix] Edge: Fixing an issue with mouse event on Custom EdgeMouseArea causing Crash
2025-01-27 12:22:42 +01:00
waaake
870dcf4edb [ui] Edge: Updated curveScale to use standard property binding for EdgeMouseArea 2025-01-27 16:48:00 +05:30
Fabien Castan
2eb30fec15
Merge pull request #2652 from alicevision/dev/NodeLayout
Enable Fitting of selected Nodes in the Graph Editor when Fit is invoked
2025-01-27 08:40:59 +01:00
waaake
49ceb6e78c [ui] Edge: Removed Qt.binding on curveScale 2025-01-23 10:42:28 +05:30
Candice Bentéjac
7c9a869d99 [ImageGallery] Use palette's colors for the text of the intrinsics display 2025-01-22 20:14:20 +01:00
Candice Bentéjac
f1a83628a6 [ImageGallery] Do not fill intrinsics model until it has been instantiated
In some cases, like when opening the most recent file from the command
line, switching the color palette or hot reloading, the intrinsics
might be parsed and ready to populate the intrinsics' `TableModel` while
the model itself is being instantiated.

To prevent crashes, we forbid operations on the `TableModel` until it has
been fully instantiated.
2025-01-22 20:09:23 +01:00
Candice Bentéjac
935f5d07db [ImageGallery] Remove version number from Qt.labs.qmlmodels import 2025-01-22 20:03:48 +01:00
Candice Bentéjac
edfe872227 [ui] Homepage: Only request thumbnails update if Homepage is active view 2025-01-22 14:50:26 +01:00
Candice Bentéjac
73de823eb4 [ui] app: Add a slot to refresh the thumbnails of recent project files
When the list of recent project files is updated, there is no attempt
to retrieve its thumbnail as the update is said to be "minimal".

This minimal update is justified by the lack of use for the thumbnails
in the Application part of Meshroom. Thumbnails are only useful when
displaying the Homepage, hence their retrieval during Meshroom's
initialization. There is only a need to update them once we want to
display the Homepage again.

The Homepage thus requests an update of the thumbnails before setting
its model. If there have been some updates to the list of recent project
files, the reading of the QSettings is performed again and thumbnails
are retrieved whenever it is possible. Otherwise, nothing happens to
prevent useless readings.
2025-01-22 14:50:25 +01:00
waaake
a5e6d61730 [ui] GraphEditor: Added Fit to Selected Nodes in the Graph
Pressing F or invoking GraphEditor.fit() now considers the selected nodes and fits/focusses on the overall selection if present, else fits/focusses all of available nodes
2025-01-21 09:45:46 +05:30
Candice Bentéjac
6071a914bc
Merge pull request #2646 from alicevision/dev/AutoLayoutMenu
[ui] Moved Auto-Layout Depth Settings under Graph Editor Menu
2025-01-17 14:42:54 +00:00
waaake
bf857bc6e4 [ui] GraphEditor: Setting the drag.smoothed property of the MouseArea to false when the selection is started
Setting the drag.smoothed to false ensures that the target will be moved straight to the current mouse position
2025-01-15 16:20:38 +05:30
waaake
c9b85ce137 [ui] Graph Editor: With the Auto-Layout Depth setting moved to the graph editor menu, the quick setting in the floating pane is removed 2025-01-15 09:14:33 +05:30
waaake
a843486996 [ui] Application Menu: Setting of Auto-Layout Depth has been moved to the menu along the graph editor 2025-01-15 09:14:03 +05:30
Fabien Castan
3e8b736cf9
Merge pull request #2587 from alicevision/dev/PythonScriptEditor
[ui] Python Script Editor Improvements
2025-01-10 22:30:46 +01:00
waaake
7384db89e3 [ui] ScriptEditor: Updated to Use Horizontal MSplitView 2025-01-10 08:18:43 +01:00
waaake
1b963ab1f2 [ui] ScriptEditor: Adjusted Icon Size and Layout 2025-01-10 07:44:45 +01:00
waaake
a90d5c4d38 [ui] ScriptEditor: Updated the content width of the input and output flickables
Formatted the input and output text for output display text area
2025-01-08 09:47:37 +05:30
Fabien Castan
c69704275a
Merge pull request #2639 from alicevision/dev/updateCopyrights
Update version number and copyrights
2025-01-07 22:08:18 +01:00
Fabien Castan
e5b0dbda8e
Merge pull request #2640 from alicevision/fix/aboutDialog
[ui] "About" dialog: Fix some display issues
2025-01-07 22:01:47 +01:00
waaake
49052dfc0f [ui] ScriptEditor: ScriptEditor gets new icons
Updated Icons for ScriptEditor

Script Editor shows a confirmation dialog before clearing history
2025-01-07 09:37:33 +05:30
waaake
8207e84a41 [ui] ScriptEditor: ScriptEditor gets a RowLayout
A Row Layout is more practical for using script editor with the current placement of meshroom GUI.
2025-01-07 09:32:14 +05:30
waaake
2e577274e6 [ui] ScriptEditor: Added syntax colorization for the script editor
Python syntax within the script editor is now highlighted making it easier to understand and write smaller code in it.
2025-01-07 09:32:12 +05:30
waaake
4464cdf799 [ui] ScriptEditor: Updated Script Editor layout
ScriptEditor is now part of a ColumnLayout in an MSplitView allowing more control over what is being viewed.
2025-01-07 09:32:07 +05:30
Candice Bentéjac
70dd025623 [ui] "About" dialog: Update copyrights 2025-01-06 16:05:52 +01:00
Candice Bentéjac
728f2ea22f [ui] "About" dialog: Update GitHub links to Meshroom's repo 2025-01-06 15:40:42 +01:00
Candice Bentéjac
170c683db5 [ui] "About" dialog: Harmonize colors across all icons 2025-01-06 15:32:11 +01:00
Candice Bentéjac
efb1d80032 [ui] "About" dialog: Use correct MaterialIcon for website icon 2025-01-06 15:31:35 +01:00
Candice Bentéjac
f14b496869 [ui] "About" dialog: Replace 32x32px GitHub icon by SVG file 2025-01-06 15:31:01 +01:00
Fabien Castan
e43cd62f79
Merge pull request #2627 from alicevision/fix/jsParamInjection
[GraphEditor] Fix injections into signal handlers with JS functions
2025-01-06 15:14:39 +01:00
Candice Bentéjac
05863369f5
Merge pull request #2624 from alicevision/fix/NodeEditorTab
[ui] NodeEditor: Addressed Tab Retention when switching Node selection
2024-12-31 13:30:10 +01:00
waaake
3f47c54595 [ui] Application: Changing the current project refreshes the NodeEditor to reset the current Tab index 2024-12-31 09:56:48 +05:30
waaake
a2f4ac560f [ui] NodeEditor: Added refresh function to update the currentIndex of the tabBar 2024-12-31 09:43:27 +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
Candice Bentéjac
cb301b2aaa [GraphEditor] Fix injections into signal handlers with JS functions 2024-12-26 15:44:11 +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
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
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