Commit graph

403 commits

Author SHA1 Message Date
Yann Lanthony
e9682a8ce9 [ui] Viewer3D: load all urls from an external file drop 2018-12-07 16:07:41 +01:00
Yann Lanthony
97fcdf67bf [ui] Viewer3D: multi 3D media support
* use new media loading backend through MediaLibrary
* Inspector3D: new overlay UI that displays and allows to manipulate MediaLibrary content
2018-12-07 16:07:41 +01:00
Yann Lanthony
e35076ef97 [ui] Viewer3D: improved frame graph
* enable PrimitivePicking to enable picking on point clouds
* use OnDemand render policy
* activate FrustrumCulling + increase far plane
* add management of rasterized OpenGL points via a PointSize render
2018-12-07 15:57:58 +01:00
Yann Lanthony
e5fa9f1087 [ui] Viewer3D: centralize render modes model in Viewer3DSettings 2018-12-07 15:57:57 +01:00
Yann Lanthony
109b980ae5 [ui] Viewer3D: introduce new 3D media loading backend
This commit adds several components to centralize and extend 3D media loading. They are not yet integrated into Viewer3D. The entry point to this system is the MediaLibrary component that:
    * can load N medias based on a filepath or load-and-watch node attributes
    * provides a cache mechanism to instant-reload medias that were unloaded under certain conditions
    * gives access to statistics (vertex/face/camera/textureCount) through a unified interface
2018-12-07 15:57:57 +01:00
Yann Lanthony
2f50587904 [ui] introduce Scene3DHelper object
Expose missing QEntity methods and helper functions to QML via this Python class.
2018-12-07 15:55:48 +01:00
Yann Lanthony
f6365c5607 [ui] Viewer3D: fix wrong keyboard modifier state
Keyboard Actions are never deactivated when focus is lost, leading to picking being enabled on a single click when Control was pressed in the 3D viewer and focus was lost to another Item.
* keep track of focus loss inside the DefaultCameraController
* use it to disable picking while Keyboard has not been pressed back in the 3D viewer
* do the same for 'moving' state with Alt modifier
2018-12-07 15:54:46 +01:00
Yann Lanthony
7a8e1c689f [ui] Reconstruction: expose end node instead of mesh filepath
In preparation for massive Viewer3D refactoring.
2018-11-23 20:20:08 +01:00
Yann Lanthony
7415c1d391 [ui] split 2D and 3D viewers into separate modules
+ remove historical MayaCameraController
2018-11-23 14:26:57 +01:00
Yann Lanthony
7db4beea89 [ui] use Node label in GraphEditor 2018-11-19 15:17:37 +01:00
Yann Lanthony
3b656d97fd [ui] NodeLog: load file only if visible
* when visibility changes, only load current file if log is actually visible
* set 'keepCursorPosition' default value to false in 'loadCurrentFile' method
2018-09-06 15:56:52 +02:00
Yann Lanthony
143b519dbd [ui] NodeLog: cross-platform monospace display
Specify multiple fixed size font families:
- Linux: "Monospace" 
- Windows: "Consolas" 
- OSX: "Monaco"
2018-09-06 15:56:52 +02:00
Yann Lanthony
52c99a803e [ui] ComputeUnsaved: set a more straightforward text for Discard button
avoid potentially ambiguous platform-dependent text
2018-08-09 00:11:35 +02:00
Yann Lanthony
9864093568
Merge pull request #167 from alicevision/fix_boundingBox
GraphLayout: fix bouding box computation
2018-08-06 11:18:47 +02:00
Yann Lanthony
a93976451b [ui] ImageGallery: use MaterialLabel for image status
* wrap them into Loaders
2018-08-06 10:50:29 +02:00
Yann Lanthony
fc8ea7ca18 [ui] GraphLayout: fix bouding box computation
correctly initialize width and height with first item
2018-08-06 10:37:45 +02:00
Yann Lanthony
62961dedd9 [ui] MaterialIcons: add MaterialLabel
preset Component to create a Label with MaterialIcons font + optional tooltip
2018-08-05 22:20:30 +02:00
Fabien Castan
51995f47e4 [ui] ImageGallery: display metadata and lens status flag 2018-08-05 20:44:02 +02:00
Yann Lanthony
0bcf59e4ce [ui] prompt warning when computing unsaved project
* warn the user that the data will be computed in the default cache folder
* allow to save the scene from this Dialog
* fix whitespaces in texts
2018-08-03 17:24:04 +02:00
Yann Lanthony
494cb71d3f [ui] shortcuts: add Ctrl+N for new + allow Ctrl+S for initial save 2018-08-03 17:24:04 +02:00
Yann Lanthony
30f99b01f2 [ui] MessageDialog: add presets and options
* add Info, Warning and Error presets
* add canCopy options to display/hide copy to clipboard button
* tweak paddings and font size
2018-08-03 17:24:04 +02:00
Yann Lanthony
1007c37ba4 [ui] add footer with cache folder info 2018-08-03 17:24:04 +02:00
Yann Lanthony
6581886b46 [ui] store main Window size in persisting settings 2018-08-03 17:24:04 +02:00
Yann Lanthony
3438900b2b [ui] add "About" dialog
Accessible from main menu Help > About Meshroom, or by pressing "F1". Provides info about Meshroom version + useful links and related Open Source Licenses.

* load COPYING.md from Meshroom/AliceVision files (either provided with the standalone package or online) + translate them to HTML for display  (added `markdown` package in requirements)
* request.js: centralize function to open file urls
* provide system info from MeshroomApp (exposed as contextProperty)
2018-08-03 17:24:04 +02:00
Yann Lanthony
c0c28b5dcf [ui] Viewer3D: minor fixes
* remove unneeded hack to clear the SceneLoader
* don't display sfm checkbox if alembicPlugin is not available
2018-08-03 17:24:04 +02:00
Yann Lanthony
72a657ec48 [ui] hide 'Submit' button if no submitter available 2018-08-03 17:24:04 +02:00
Fabien Castan
44e34d7eb3 [ui] use shift to pan (instead of Ctrl) 2018-08-03 14:38:08 +02:00
Yann Lanthony
94cba653d5 [ui] GraphEditor: improved ToolBar
* replace text buttons with MaterialToolButtons
* hide advanced min/max depth settings to a Settings menu
2018-07-27 19:12:55 +02:00
Yann Lanthony
9303fb7491 [ui] add MaterialToolButton
preset ToolButton with MaterialIcons font
2018-07-27 19:12:54 +02:00
Yann Lanthony
713ca7c6a3 [ui] GraphEditor: simplify attributes connection
* make Drag/DropArea overflow on the attribute's label to be more tolerant when connecting attributes
* add visual feedback when hovering interactive areas
* tweak spacings between attributes
2018-07-27 19:12:53 +02:00
Yann Lanthony
e95c88292e [ui] GraphEditor: improve node selection
* deselect node background click
* always select node when pressed
* fix 'mouse.button/s' testing
2018-07-27 19:05:53 +02:00
Yann Lanthony
754a4360a3 [ui] AttributeEditor: set attribute when edited TextField is destroyed
ensure attribute is correctly set when the AttributeItemDelegate is abruptly destroyed (e.g: when another node is selected)
2018-07-27 19:05:53 +02:00
Yann Lanthony
c3464fa4e8 [ui] GraphEditor: trigger fit on project opening
* fit when the underlying graph has changed (new/open project)
* add 'F' shortcut to fit
* trigger fit after UI has been fully initialized (correct sizes)
2018-07-27 19:05:53 +02:00
Yann Lanthony
53be806019 [ui] GraphEditor: improve Edge UI
* increase EdgeMouseArea thickness for easier picking
* EdgeMouseArea: propagate modifiers on pressed
* increase edge visual thickness when hovered
* add edge contextual menu on right click
* Alt+RighClick shortcut to delete an edge
2018-07-27 19:05:53 +02:00
Yann Lanthony
e6e2c18aa8 [ui] Node: add selected property + selection border
* use more efficient selection border instead of slightly changing header's color
* require activeFocus when selected
2018-07-26 22:50:42 +02:00
Yann Lanthony
06f3d140df [ui] GraphEditor: faster animation for node movement 2018-07-26 22:48:30 +02:00
Yann Lanthony
f415745a4a [ui] make Nodes moves undoable
Handle nodes move and auto-layout on Python side by using GraphLayout and MoveNodeCommand.

* Node QML component relies on underlying core.Node object's position
* MoveNodeCommand is called after a Node has been dragged
* partial/full auto-layout for specific graph operations (Duplication, Augmentation...) are now part of those operations
* serialized position in node data allows to properly restore nodes coordinates on undo/redo
* remove all layout/node moving code from QML
2018-07-26 22:46:22 +02:00
Fabien Castan
bb0155ba42
Merge pull request #150 from alicevision/dev_versionCompatibility
Introduce version compatibility handling
2018-07-26 12:50:15 +02:00
Yann Lanthony
93dd055f72 [clean] fix variable names and typos
* node_factory & attribute_factory to camelCase
* fix depths variable in updateNodesTopologicalData
2018-07-26 12:11:43 +02:00
Yann Lanthony
3615f641fd [ui][dialogs] improve wording
+ use MessageDialog for unsaved project dialog
2018-07-25 20:05:37 +02:00
Yann Lanthony
bf55d1e7f6 [ui] MessageDialog: title suffix with application name and version 2018-07-25 19:32:39 +02:00
Yann Lanthony
99167b7152 [ui] CompatibilityManager: issues summary in clipboard message copying
override MessageDialog.getAsString to add compatibility report
2018-07-25 16:52:51 +02:00
Yann Lanthony
02dc58f144 [ui] MessageDialog: add "Copy Message to Clipboard" button
Add a button to copy the textual content of a MessageDialog to the clipboard.
* use hidden TextEdit to perform the copy operation
* add function to modify this text in inherited components
* move icon to title
2018-07-25 16:47:08 +02:00
Yann Lanthony
d9caa70b3e
Merge pull request #153 from alicevision/dev_mouseNavigation
[ui] mouse: add "Ctrl+Left click" as an alternative to Middle click
2018-07-24 19:09:56 +02:00
Yann Lanthony
d3885331b2 [ui] AttributeEditor: fix value setting by slider + avoid scientific notation
* fix reference to non-existing slider.value 
* convert values to string to avoid e+XX notation on large numbers
* fix number of decimals based on stepSize to avoid floating point approximations
2018-07-24 15:14:31 +02:00
Fabien Castan
10026e3281 [ui] mouse: add "Ctrl+Left click" as an alternative to Middle click 2018-07-21 14:54:28 +02:00
Yann Lanthony
fd8c275203 [ui] add CompatibilityManager component
* display and allow to upgrade incompatible nodes after project loading
* add a ToolButton in main toolbar to open CompatibilityManager in case of compatibility issues
2018-07-20 17:57:53 +02:00
Yann Lanthony
5ddf138554 [ui] bind start/submit button 'enabled' property to graph computability 2018-07-19 14:50:58 +02:00
Yann Lanthony
7dfb750407 [ui] move node menu to GraphEditor + ensure computability of node
use core.graph.canCompute on current node to check if node can be computed; enable computation related MenuItem accordingly
2018-07-19 14:50:58 +02:00
Yann Lanthony
0128cd56f0 [ui] add CompatibilityBadge on CompatibilityNodes
* add badge icon on nodes in GraphEditor
* add badge banner in AttributeEditor with upgrade button when available
2018-07-19 13:50:45 +02:00