diff --git a/qmlui/CMakeLists.txt b/qmlui/CMakeLists.txt index 5c495b95c0..6a48cde5ea 100644 --- a/qmlui/CMakeLists.txt +++ b/qmlui/CMakeLists.txt @@ -84,928 +84,24 @@ if(WIN32) endif() if(QT_VERSION_MAJOR GREATER 5) - qt_add_qml_module(${module_name} - URI qlcplus_qml - VERSION ${PROJECT_VERSION} - QML_FILES - qml/ActionsMenu.qml - qml/BeatGeneratorsPanel.qml - qml/ChannelToolLoader.qml - qml/ChaserStepDelegate.qml - qml/ChaserWidget.qml - qml/ColorTool.qml - qml/ColorToolBasic.qml - qml/ColorToolFilters.qml - qml/ColorToolFull.qml - qml/ColorToolPrimary.qml - qml/ContextMenuEntry.qml - qml/CustomCheckBox.qml - qml/CustomComboBox.qml - qml/CustomScrollBar.qml - qml/CustomSlider.qml - qml/CustomSpinBox.qml - qml/CustomDoubleSpinBox.qml - qml/CustomTextEdit.qml - qml/CustomTextInput.qml - qml/DayTimeTool.qml - qml/DMXAddressTool.qml - qml/DMXAddressWidget.qml - qml/DMXPercentageButton.qml - qml/ExternalControls.qml - qml/ExternalControlDelegate.qml - qml/FixtureConsole.qml - qml/FixtureDelegate.qml - qml/FunctionDelegate.qml - qml/GenericButton.qml - qml/GenericMultiDragItem.qml - qml/FontAwesomeVariables.qml - qml/IconButton.qml - qml/IconPopupButton.qml - qml/IconTextEntry.qml - qml/InputChannelDelegate.qml - qml/KeyboardSequenceDelegate.qml - qml/KeyPad.qml - qml/MainView.qml - qml/MenuBarEntry.qml - qml/MultiColorBox.qml - qml/PaletteFanningBox.qml - qml/QLCPlusFader.qml - qml/QLCPlusKnob.qml - qml/RobotoText.qml - qml/SectionBox.qml - qml/SidePanel.qml - qml/SimpleDesk.qml - qml/SingleAxisTool.qml - qml/TimeEditTool.qml - qml/TreeNodeDelegate.qml - qml/UISettings.qml - qml/UsageList.qml - qml/WidgetDelegate.qml - qml/WindowLoader.qml - qml/ZoomItem.qml - qml/popup/CustomPopupDialog.qml - qml/popup/PopupAbout.qml - qml/popup/PopupChannelWizard.qml - qml/popup/PopupCreatePalette.qml - qml/popup/PopupDisclaimer.qml - qml/popup/PopupFolderBrowser.qml - qml/popup/PopupImportProject.qml - qml/popup/PopupPINRequest.qml - qml/popup/PopupPINSetup.qml - qml/popup/PopupRenameItems.qml - qml/popup/PopupDMXDump.qml - qml/popup/PopupMonitor.qml - qml/popup/PopupNetworkClient.qml - qml/popup/PopupNetworkConnect.qml - qml/popup/PopupNetworkServer.qml - qml/popup/PopupManualInputSource.qml - qml/fixturesfunctions/FixturesAndFunctions.qml - qml/fixturesfunctions/RightPanel.qml - qml/fixturesfunctions/LeftPanel.qml - qml/fixturesfunctions/BottomPanel.qml - qml/fixturesfunctions/IntensityTool.qml - qml/fixturesfunctions/PositionTool.qml - qml/fixturesfunctions/PresetsTool.qml - qml/fixturesfunctions/BeamTool.qml - qml/fixturesfunctions/PresetCapabilityItem.qml - qml/fixturesfunctions/FixtureChannelDelegate.qml - qml/fixturesfunctions/FixtureHeadDelegate.qml - qml/fixturesfunctions/FixtureBrowser.qml - qml/fixturesfunctions/FixtureProperties.qml - qml/fixturesfunctions/RGBPanelProperties.qml - qml/fixturesfunctions/FixtureDragItem.qml - qml/fixturesfunctions/FixtureBrowserDelegate.qml - qml/fixturesfunctions/FixtureGroupEditor.qml - qml/fixturesfunctions/FixtureGroupManager.qml - qml/fixturesfunctions/FixtureNodeDelegate.qml - qml/fixturesfunctions/FixtureSummary.qml - qml/fixturesfunctions/GridEditor.qml - qml/fixturesfunctions/UniverseGridView.qml - qml/fixturesfunctions/UniverseSummary.qml - qml/fixturesfunctions/DMXView.qml - qml/fixturesfunctions/FixtureDMXItem.qml - qml/fixturesfunctions/2DView.qml - qml/fixturesfunctions/SettingsView2D.qml - qml/fixturesfunctions/SettingsViewDMX.qml - qml/fixturesfunctions/Fixture2DItem.qml - qml/fixturesfunctions/ShutterAnimator.qml - qml/fixturesfunctions/FunctionManager.qml - qml/fixturesfunctions/AddFunctionMenu.qml - qml/fixturesfunctions/EditorTopBar.qml - qml/fixturesfunctions/AudioEditor.qml - qml/fixturesfunctions/VideoEditor.qml - qml/fixturesfunctions/VideoContext.qml - qml/fixturesfunctions/CollectionEditor.qml - qml/fixturesfunctions/CollectionFunctionDelegate.qml - qml/fixturesfunctions/SceneEditor.qml - qml/fixturesfunctions/SceneFixtureConsole.qml - qml/fixturesfunctions/ChaserEditor.qml - qml/fixturesfunctions/SequenceEditor.qml - qml/fixturesfunctions/RGBMatrixEditor.qml - qml/fixturesfunctions/RGBMatrixPreview.qml - qml/fixturesfunctions/EFXEditor.qml - qml/fixturesfunctions/EFXPreview.qml - qml/fixturesfunctions/ScriptEditor.qml - qml/fixturesfunctions/PaletteManager.qml - qml/fixturesfunctions/3DView/3DView.qml - qml/fixturesfunctions/3DView/3DViewUnsupported.qml - qml/fixturesfunctions/3DView/SettingsView3D.qml - qml/fixturesfunctions/3DView/DeferredRenderer.qml - qml/fixturesfunctions/3DView/Fixture3DItem.qml - qml/fixturesfunctions/3DView/LightEntity.qml - qml/fixturesfunctions/3DView/MultiBeams3DItem.qml - qml/fixturesfunctions/3DView/PixelBar3DItem.qml - qml/fixturesfunctions/3DView/Generic3DItem.qml - qml/fixturesfunctions/3DView/DepthTarget.qml - qml/fixturesfunctions/3DView/GBuffer.qml - qml/fixturesfunctions/3DView/FrameTarget.qml - qml/fixturesfunctions/3DView/SpotlightConeEntity.qml - qml/fixturesfunctions/3DView/SpotlightShadingEffect.qml - qml/fixturesfunctions/3DView/SpotlightScatteringEffect.qml - qml/fixturesfunctions/3DView/LightPassEffect.qml - qml/fixturesfunctions/3DView/GeometryPassEffect.qml - qml/fixturesfunctions/3DView/GammaCorrectEffect.qml - qml/fixturesfunctions/3DView/BlitEffect.qml - qml/fixturesfunctions/3DView/FXAAEffect.qml - qml/fixturesfunctions/3DView/GrabBrightEffect.qml - qml/fixturesfunctions/3DView/DownsampleEffect.qml - qml/fixturesfunctions/3DView/UpsampleEffect.qml - qml/fixturesfunctions/3DView/OutputFrontDepthEffect.qml - qml/fixturesfunctions/3DView/FillGBufferFilter.qml - qml/fixturesfunctions/3DView/DirectionalLightFilter.qml - qml/fixturesfunctions/3DView/SpotlightScatteringFilter.qml - qml/fixturesfunctions/3DView/SpotlightShadingFilter.qml - qml/fixturesfunctions/3DView/RenderSelectionBoxesFilter.qml - qml/fixturesfunctions/3DView/OutputFrontDepthFilter.qml - qml/fixturesfunctions/3DView/RenderShadowMapFilter.qml - qml/fixturesfunctions/3DView/GrabBrightFilter.qml - qml/fixturesfunctions/3DView/DownsampleFilter.qml - qml/fixturesfunctions/3DView/UpsampleFilter.qml - qml/fixturesfunctions/3DView/GammaCorrectFilter.qml - qml/fixturesfunctions/3DView/BlitFilter.qml - qml/fixturesfunctions/3DView/FXAAFilter.qml - qml/fixturesfunctions/3DView/SceneEntity.qml - qml/fixturesfunctions/3DView/ScreenQuadEntity.qml - qml/fixturesfunctions/3DView/ScreenQuadGammaCorrectEntity.qml - qml/fixturesfunctions/3DView/GenericScreenQuadEntity.qml - qml/fixturesfunctions/3DView/SelectionEntity.qml - qml/fixturesfunctions/3DView/SelectionGeometry.qml - qml/fixturesfunctions/3DView/StageSimple.qml - qml/fixturesfunctions/3DView/StageBox.qml - qml/fixturesfunctions/3DView/StageRock.qml - qml/fixturesfunctions/3DView/StageTheatre.qml - qml/inputoutput/InputOutputManager.qml - qml/inputoutput/IOLeftPanel.qml - qml/inputoutput/IORightPanel.qml - qml/inputoutput/UniverseIOItem.qml - qml/inputoutput/AudioIOItem.qml - qml/inputoutput/AudioCardsList.qml - qml/inputoutput/AudioDeviceItem.qml - qml/inputoutput/PluginsList.qml - qml/inputoutput/ProfilesList.qml - qml/inputoutput/PluginDragItem.qml - qml/inputoutput/OutputPatchItem.qml - qml/inputoutput/InputPatchItem.qml - qml/inputoutput/PatchWireBox.qml - qml/virtualconsole/VirtualConsole.qml - qml/virtualconsole/VCRightPanel.qml - qml/virtualconsole/VCPageArea.qml - qml/virtualconsole/VCPageProperties.qml - qml/virtualconsole/WidgetsList.qml - qml/virtualconsole/WidgetDragItem.qml - qml/virtualconsole/VCWidgetItem.qml - qml/virtualconsole/VCWidgetProperties.qml - qml/virtualconsole/VCFrameItem.qml - qml/virtualconsole/VCFrameProperties.qml - qml/virtualconsole/VCButtonItem.qml - qml/virtualconsole/VCButtonProperties.qml - qml/virtualconsole/VCLabelItem.qml - qml/virtualconsole/VCSliderItem.qml - qml/virtualconsole/VCSliderProperties.qml - qml/virtualconsole/VCClockItem.qml - qml/virtualconsole/VCClockProperties.qml - qml/virtualconsole/VCCueListItem.qml - qml/virtualconsole/VCCueListProperties.qml - qml/showmanager/ShowManager.qml - qml/showmanager/TrackDelegate.qml - qml/showmanager/ShowItem.qml - qml/showmanager/HeaderAndCursor.qml - qml/fixtureeditor/FixtureEditor.qml - qml/fixtureeditor/EditorView.qml - qml/fixtureeditor/PhysicalProperties.qml - qml/fixtureeditor/ChannelEditor.qml - qml/fixtureeditor/ModeEditor.qml - js/CanvasDrawFunctions.js - js/FixtureDrag.js - js/GenericHelpers.js - js/Math3DView.js - js/TimeUtils.js - RESOURCES - qml/qmldir - qml/fixturesfunctions/3DView/shaders/downsample.frag - qml/fixturesfunctions/3DView/shaders/upsample.frag - qml/fixturesfunctions/3DView/shaders/grab_bright.frag - qml/fixturesfunctions/3DView/shaders/directional.frag - qml/fixturesfunctions/3DView/shaders/gamma_correct.frag - qml/fixturesfunctions/3DView/shaders/blit.frag - qml/fixturesfunctions/3DView/shaders/fxaa.frag - qml/fixturesfunctions/3DView/shaders/fullscreen.vert - qml/fixturesfunctions/3DView/shaders/spotlight_shading.frag - qml/fixturesfunctions/3DView/shaders/geo.frag - qml/fixturesfunctions/3DView/shaders/geo.vert - qml/fixturesfunctions/3DView/shaders/spotlight_scattering.frag - qml/fixturesfunctions/3DView/shaders/spotlight.vert - qml/fixturesfunctions/3DView/shaders/output_front_depth.frag - qml/fixturesfunctions/3DView/shaders/output_depth.frag - qml/fixturesfunctions/3DView/shaders/output_depth.vert - NO_RESOURCE_TARGET_PATH + file(GLOB_RECURSE FILES_TO_ALIAS + "${CMAKE_CURRENT_SOURCE_DIR}/js/*.js" + "${CMAKE_CURRENT_SOURCE_DIR}/qml/*.qml" + "${CMAKE_CURRENT_SOURCE_DIR}/qml/fixturesfunctions/3DView/shaders/*.frag" + "${CMAKE_CURRENT_SOURCE_DIR}/qml/fixturesfunctions/3DView/shaders/*.vert" ) -endif() -set_source_files_properties("js/CanvasDrawFunctions.js" - PROPERTIES QT_RESOURCE_ALIAS "CanvasDrawFunctions.js" -) -set_source_files_properties("js/FixtureDrag.js" - PROPERTIES QT_RESOURCE_ALIAS "FixtureDrag.js" -) -set_source_files_properties("js/GenericHelpers.js" - PROPERTIES QT_RESOURCE_ALIAS "GenericHelpers.js" -) -set_source_files_properties("js/Math3DView.js" - PROPERTIES QT_RESOURCE_ALIAS "Math3DView.js" -) -set_source_files_properties("js/TimeUtils.js" - PROPERTIES QT_RESOURCE_ALIAS "TimeUtils.js" -) -set_source_files_properties("qml/ActionsMenu.qml" - PROPERTIES QT_RESOURCE_ALIAS "ActionsMenu.qml" -) -set_source_files_properties("qml/BeatGeneratorsPanel.qml" - PROPERTIES QT_RESOURCE_ALIAS "BeatGeneratorsPanel.qml" -) -set_source_files_properties("qml/ChannelToolLoader.qml" - PROPERTIES QT_RESOURCE_ALIAS "ChannelToolLoader.qml" -) -set_source_files_properties("qml/ChaserStepDelegate.qml" - PROPERTIES QT_RESOURCE_ALIAS "ChaserStepDelegate.qml" -) -set_source_files_properties("qml/ChaserWidget.qml" - PROPERTIES QT_RESOURCE_ALIAS "ChaserWidget.qml" -) -set_source_files_properties("qml/ColorTool.qml" - PROPERTIES QT_RESOURCE_ALIAS "ColorTool.qml" -) -set_source_files_properties("qml/ColorToolBasic.qml" - PROPERTIES QT_RESOURCE_ALIAS "ColorToolBasic.qml" -) -set_source_files_properties("qml/ColorToolFilters.qml" - PROPERTIES QT_RESOURCE_ALIAS "ColorToolFilters.qml" -) -set_source_files_properties("qml/ColorToolFull.qml" - PROPERTIES QT_RESOURCE_ALIAS "ColorToolFull.qml" -) -set_source_files_properties("qml/ColorToolPrimary.qml" - PROPERTIES QT_RESOURCE_ALIAS "ColorToolPrimary.qml" -) -set_source_files_properties("qml/ContextMenuEntry.qml" - PROPERTIES QT_RESOURCE_ALIAS "ContextMenuEntry.qml" -) -set_source_files_properties("qml/CustomCheckBox.qml" - PROPERTIES QT_RESOURCE_ALIAS "CustomCheckBox.qml" -) -set_source_files_properties("qml/CustomComboBox.qml" - PROPERTIES QT_RESOURCE_ALIAS "CustomComboBox.qml" -) -set_source_files_properties("qml/CustomDoubleSpinBox.qml" - PROPERTIES QT_RESOURCE_ALIAS "CustomDoubleSpinBox.qml" -) -set_source_files_properties("qml/CustomScrollBar.qml" - PROPERTIES QT_RESOURCE_ALIAS "CustomScrollBar.qml" -) -set_source_files_properties("qml/CustomSlider.qml" - PROPERTIES QT_RESOURCE_ALIAS "CustomSlider.qml" -) -set_source_files_properties("qml/CustomSpinBox.qml" - PROPERTIES QT_RESOURCE_ALIAS "CustomSpinBox.qml" -) -set_source_files_properties("qml/CustomTextEdit.qml" - PROPERTIES QT_RESOURCE_ALIAS "CustomTextEdit.qml" -) -set_source_files_properties("qml/CustomTextInput.qml" - PROPERTIES QT_RESOURCE_ALIAS "CustomTextInput.qml" -) -set_source_files_properties("qml/DMXAddressTool.qml" - PROPERTIES QT_RESOURCE_ALIAS "DMXAddressTool.qml" -) -set_source_files_properties("qml/DMXAddressWidget.qml" - PROPERTIES QT_RESOURCE_ALIAS "DMXAddressWidget.qml" -) -set_source_files_properties("qml/DMXPercentageButton.qml" - PROPERTIES QT_RESOURCE_ALIAS "DMXPercentageButton.qml" -) -set_source_files_properties("qml/DayTimeTool.qml" - PROPERTIES QT_RESOURCE_ALIAS "DayTimeTool.qml" -) -set_source_files_properties("qml/ExternalControlDelegate.qml" - PROPERTIES QT_RESOURCE_ALIAS "ExternalControlDelegate.qml" -) -set_source_files_properties("qml/ExternalControls.qml" - PROPERTIES QT_RESOURCE_ALIAS "ExternalControls.qml" -) -set_source_files_properties("qml/FixtureConsole.qml" - PROPERTIES QT_RESOURCE_ALIAS "FixtureConsole.qml" -) -set_source_files_properties("qml/FixtureDelegate.qml" - PROPERTIES QT_RESOURCE_ALIAS "FixtureDelegate.qml" -) -set_source_files_properties("qml/FontAwesomeVariables.qml" - PROPERTIES QT_RESOURCE_ALIAS "FontAwesomeVariables.qml" -) -set_source_files_properties("qml/FunctionDelegate.qml" - PROPERTIES QT_RESOURCE_ALIAS "FunctionDelegate.qml" -) -set_source_files_properties("qml/GenericButton.qml" - PROPERTIES QT_RESOURCE_ALIAS "GenericButton.qml" -) -set_source_files_properties("qml/GenericMultiDragItem.qml" - PROPERTIES QT_RESOURCE_ALIAS "GenericMultiDragItem.qml" -) -set_source_files_properties("qml/IconButton.qml" - PROPERTIES QT_RESOURCE_ALIAS "IconButton.qml" -) -set_source_files_properties("qml/IconPopupButton.qml" - PROPERTIES QT_RESOURCE_ALIAS "IconPopupButton.qml" -) -set_source_files_properties("qml/IconTextEntry.qml" - PROPERTIES QT_RESOURCE_ALIAS "IconTextEntry.qml" -) -set_source_files_properties("qml/InputChannelDelegate.qml" - PROPERTIES QT_RESOURCE_ALIAS "InputChannelDelegate.qml" -) -set_source_files_properties("qml/KeyPad.qml" - PROPERTIES QT_RESOURCE_ALIAS "KeyPad.qml" -) -set_source_files_properties("qml/KeyboardSequenceDelegate.qml" - PROPERTIES QT_RESOURCE_ALIAS "KeyboardSequenceDelegate.qml" -) -set_source_files_properties("qml/MainView.qml" - PROPERTIES QT_RESOURCE_ALIAS "MainView.qml" -) -set_source_files_properties("qml/MenuBarEntry.qml" - PROPERTIES QT_RESOURCE_ALIAS "MenuBarEntry.qml" -) -set_source_files_properties("qml/MultiColorBox.qml" - PROPERTIES QT_RESOURCE_ALIAS "MultiColorBox.qml" -) -set_source_files_properties("qml/PaletteFanningBox.qml" - PROPERTIES QT_RESOURCE_ALIAS "PaletteFanningBox.qml" -) -set_source_files_properties("qml/QLCPlusFader.qml" - PROPERTIES QT_RESOURCE_ALIAS "QLCPlusFader.qml" -) -set_source_files_properties("qml/QLCPlusKnob.qml" - PROPERTIES QT_RESOURCE_ALIAS "QLCPlusKnob.qml" -) -set_source_files_properties("qml/RobotoText.qml" - PROPERTIES QT_RESOURCE_ALIAS "RobotoText.qml" -) -set_source_files_properties("qml/SectionBox.qml" - PROPERTIES QT_RESOURCE_ALIAS "SectionBox.qml" -) -set_source_files_properties("qml/SidePanel.qml" - PROPERTIES QT_RESOURCE_ALIAS "SidePanel.qml" -) -set_source_files_properties("qml/SimpleDesk.qml" - PROPERTIES QT_RESOURCE_ALIAS "SimpleDesk.qml" -) -set_source_files_properties("qml/SingleAxisTool.qml" - PROPERTIES QT_RESOURCE_ALIAS "SingleAxisTool.qml" -) -set_source_files_properties("qml/TimeEditTool.qml" - PROPERTIES QT_RESOURCE_ALIAS "TimeEditTool.qml" -) -set_source_files_properties("qml/TreeNodeDelegate.qml" - PROPERTIES QT_RESOURCE_ALIAS "TreeNodeDelegate.qml" -) -set_source_files_properties("qml/UISettings.qml" - PROPERTIES QT_RESOURCE_ALIAS "UISettings.qml" -) -set_source_files_properties("qml/UsageList.qml" - PROPERTIES QT_RESOURCE_ALIAS "UsageList.qml" -) -set_source_files_properties("qml/WidgetDelegate.qml" - PROPERTIES QT_RESOURCE_ALIAS "WidgetDelegate.qml" -) -set_source_files_properties("qml/WindowLoader.qml" - PROPERTIES QT_RESOURCE_ALIAS "WindowLoader.qml" -) -set_source_files_properties("qml/ZoomItem.qml" - PROPERTIES QT_RESOURCE_ALIAS "ZoomItem.qml" -) -set_source_files_properties("qml/fixtureeditor/ChannelEditor.qml" - PROPERTIES QT_RESOURCE_ALIAS "ChannelEditor.qml" -) -set_source_files_properties("qml/fixtureeditor/EditorView.qml" - PROPERTIES QT_RESOURCE_ALIAS "EditorView.qml" -) -set_source_files_properties("qml/fixtureeditor/FixtureEditor.qml" - PROPERTIES QT_RESOURCE_ALIAS "FixtureEditor.qml" -) -set_source_files_properties("qml/fixtureeditor/ModeEditor.qml" - PROPERTIES QT_RESOURCE_ALIAS "ModeEditor.qml" -) -set_source_files_properties("qml/fixtureeditor/PhysicalProperties.qml" - PROPERTIES QT_RESOURCE_ALIAS "PhysicalProperties.qml" -) -set_source_files_properties("qml/fixturesfunctions/2DView.qml" - PROPERTIES QT_RESOURCE_ALIAS "2DView.qml" -) -set_source_files_properties("qml/fixturesfunctions/3DView/3DView.qml" - PROPERTIES QT_RESOURCE_ALIAS "3DView.qml" -) -set_source_files_properties("qml/fixturesfunctions/3DView/3DViewUnsupported.qml" - PROPERTIES QT_RESOURCE_ALIAS "3DViewUnsupported.qml" -) -set_source_files_properties("qml/fixturesfunctions/3DView/BlitEffect.qml" - PROPERTIES QT_RESOURCE_ALIAS "BlitEffect.qml" -) -set_source_files_properties("qml/fixturesfunctions/3DView/BlitFilter.qml" - PROPERTIES QT_RESOURCE_ALIAS "BlitFilter.qml" -) -set_source_files_properties("qml/fixturesfunctions/3DView/DeferredRenderer.qml" - PROPERTIES QT_RESOURCE_ALIAS "DeferredRenderer.qml" -) -set_source_files_properties("qml/fixturesfunctions/3DView/DepthTarget.qml" - PROPERTIES QT_RESOURCE_ALIAS "DepthTarget.qml" -) -set_source_files_properties("qml/fixturesfunctions/3DView/DirectionalLightFilter.qml" - PROPERTIES QT_RESOURCE_ALIAS "DirectionalLightFilter.qml" -) -set_source_files_properties("qml/fixturesfunctions/3DView/DownsampleEffect.qml" - PROPERTIES QT_RESOURCE_ALIAS "DownsampleEffect.qml" -) -set_source_files_properties("qml/fixturesfunctions/3DView/DownsampleFilter.qml" - PROPERTIES QT_RESOURCE_ALIAS "DownsampleFilter.qml" -) -set_source_files_properties("qml/fixturesfunctions/3DView/FXAAEffect.qml" - PROPERTIES QT_RESOURCE_ALIAS "FXAAEffect.qml" -) -set_source_files_properties("qml/fixturesfunctions/3DView/FXAAFilter.qml" - PROPERTIES QT_RESOURCE_ALIAS "FXAAFilter.qml" -) -set_source_files_properties("qml/fixturesfunctions/3DView/FillGBufferFilter.qml" - PROPERTIES QT_RESOURCE_ALIAS "FillGBufferFilter.qml" -) -set_source_files_properties("qml/fixturesfunctions/3DView/Fixture3DItem.qml" - PROPERTIES QT_RESOURCE_ALIAS "Fixture3DItem.qml" -) -set_source_files_properties("qml/fixturesfunctions/3DView/FrameTarget.qml" - PROPERTIES QT_RESOURCE_ALIAS "FrameTarget.qml" -) -set_source_files_properties("qml/fixturesfunctions/3DView/GBuffer.qml" - PROPERTIES QT_RESOURCE_ALIAS "GBuffer.qml" -) -set_source_files_properties("qml/fixturesfunctions/3DView/GammaCorrectEffect.qml" - PROPERTIES QT_RESOURCE_ALIAS "GammaCorrectEffect.qml" -) -set_source_files_properties("qml/fixturesfunctions/3DView/GammaCorrectFilter.qml" - PROPERTIES QT_RESOURCE_ALIAS "GammaCorrectFilter.qml" -) -set_source_files_properties("qml/fixturesfunctions/3DView/Generic3DItem.qml" - PROPERTIES QT_RESOURCE_ALIAS "Generic3DItem.qml" -) -set_source_files_properties("qml/fixturesfunctions/3DView/GenericScreenQuadEntity.qml" - PROPERTIES QT_RESOURCE_ALIAS "GenericScreenQuadEntity.qml" -) -set_source_files_properties("qml/fixturesfunctions/3DView/GeometryPassEffect.qml" - PROPERTIES QT_RESOURCE_ALIAS "GeometryPassEffect.qml" -) -set_source_files_properties("qml/fixturesfunctions/3DView/GrabBrightEffect.qml" - PROPERTIES QT_RESOURCE_ALIAS "GrabBrightEffect.qml" -) -set_source_files_properties("qml/fixturesfunctions/3DView/GrabBrightFilter.qml" - PROPERTIES QT_RESOURCE_ALIAS "GrabBrightFilter.qml" -) -set_source_files_properties("qml/fixturesfunctions/3DView/LightEntity.qml" - PROPERTIES QT_RESOURCE_ALIAS "LightEntity.qml" -) -set_source_files_properties("qml/fixturesfunctions/3DView/LightPassEffect.qml" - PROPERTIES QT_RESOURCE_ALIAS "LightPassEffect.qml" -) -set_source_files_properties("qml/fixturesfunctions/3DView/MultiBeams3DItem.qml" - PROPERTIES QT_RESOURCE_ALIAS "MultiBeams3DItem.qml" -) -set_source_files_properties("qml/fixturesfunctions/3DView/OutputFrontDepthEffect.qml" - PROPERTIES QT_RESOURCE_ALIAS "OutputFrontDepthEffect.qml" -) -set_source_files_properties("qml/fixturesfunctions/3DView/OutputFrontDepthFilter.qml" - PROPERTIES QT_RESOURCE_ALIAS "OutputFrontDepthFilter.qml" -) -set_source_files_properties("qml/fixturesfunctions/3DView/PixelBar3DItem.qml" - PROPERTIES QT_RESOURCE_ALIAS "PixelBar3DItem.qml" -) -set_source_files_properties("qml/fixturesfunctions/3DView/RenderSelectionBoxesFilter.qml" - PROPERTIES QT_RESOURCE_ALIAS "RenderSelectionBoxesFilter.qml" -) -set_source_files_properties("qml/fixturesfunctions/3DView/RenderShadowMapFilter.qml" - PROPERTIES QT_RESOURCE_ALIAS "RenderShadowMapFilter.qml" -) -set_source_files_properties("qml/fixturesfunctions/3DView/SceneEntity.qml" - PROPERTIES QT_RESOURCE_ALIAS "SceneEntity.qml" -) -set_source_files_properties("qml/fixturesfunctions/3DView/ScreenQuadEntity.qml" - PROPERTIES QT_RESOURCE_ALIAS "ScreenQuadEntity.qml" -) -set_source_files_properties("qml/fixturesfunctions/3DView/ScreenQuadGammaCorrectEntity.qml" - PROPERTIES QT_RESOURCE_ALIAS "ScreenQuadGammaCorrectEntity.qml" -) -set_source_files_properties("qml/fixturesfunctions/3DView/SelectionEntity.qml" - PROPERTIES QT_RESOURCE_ALIAS "SelectionEntity.qml" -) -set_source_files_properties("qml/fixturesfunctions/3DView/SelectionGeometry.qml" - PROPERTIES QT_RESOURCE_ALIAS "SelectionGeometry.qml" -) -set_source_files_properties("qml/fixturesfunctions/3DView/SettingsView3D.qml" - PROPERTIES QT_RESOURCE_ALIAS "SettingsView3D.qml" -) -set_source_files_properties("qml/fixturesfunctions/3DView/SpotlightConeEntity.qml" - PROPERTIES QT_RESOURCE_ALIAS "SpotlightConeEntity.qml" -) -set_source_files_properties("qml/fixturesfunctions/3DView/SpotlightScatteringEffect.qml" - PROPERTIES QT_RESOURCE_ALIAS "SpotlightScatteringEffect.qml" -) -set_source_files_properties("qml/fixturesfunctions/3DView/SpotlightScatteringFilter.qml" - PROPERTIES QT_RESOURCE_ALIAS "SpotlightScatteringFilter.qml" -) -set_source_files_properties("qml/fixturesfunctions/3DView/SpotlightShadingEffect.qml" - PROPERTIES QT_RESOURCE_ALIAS "SpotlightShadingEffect.qml" -) -set_source_files_properties("qml/fixturesfunctions/3DView/SpotlightShadingFilter.qml" - PROPERTIES QT_RESOURCE_ALIAS "SpotlightShadingFilter.qml" -) -set_source_files_properties("qml/fixturesfunctions/3DView/StageBox.qml" - PROPERTIES QT_RESOURCE_ALIAS "StageBox.qml" -) -set_source_files_properties("qml/fixturesfunctions/3DView/StageRock.qml" - PROPERTIES QT_RESOURCE_ALIAS "StageRock.qml" -) -set_source_files_properties("qml/fixturesfunctions/3DView/StageSimple.qml" - PROPERTIES QT_RESOURCE_ALIAS "StageSimple.qml" -) -set_source_files_properties("qml/fixturesfunctions/3DView/StageTheatre.qml" - PROPERTIES QT_RESOURCE_ALIAS "StageTheatre.qml" -) -set_source_files_properties("qml/fixturesfunctions/3DView/UpsampleEffect.qml" - PROPERTIES QT_RESOURCE_ALIAS "UpsampleEffect.qml" -) -set_source_files_properties("qml/fixturesfunctions/3DView/UpsampleFilter.qml" - PROPERTIES QT_RESOURCE_ALIAS "UpsampleFilter.qml" -) -set_source_files_properties("qml/fixturesfunctions/3DView/shaders/blit.frag" - PROPERTIES QT_RESOURCE_ALIAS "blit.frag" -) -set_source_files_properties("qml/fixturesfunctions/3DView/shaders/directional.frag" - PROPERTIES QT_RESOURCE_ALIAS "directional.frag" -) -set_source_files_properties("qml/fixturesfunctions/3DView/shaders/downsample.frag" - PROPERTIES QT_RESOURCE_ALIAS "downsample.frag" -) -set_source_files_properties("qml/fixturesfunctions/3DView/shaders/fullscreen.vert" - PROPERTIES QT_RESOURCE_ALIAS "fullscreen.vert" -) -set_source_files_properties("qml/fixturesfunctions/3DView/shaders/fxaa.frag" - PROPERTIES QT_RESOURCE_ALIAS "fxaa.frag" -) -set_source_files_properties("qml/fixturesfunctions/3DView/shaders/gamma_correct.frag" - PROPERTIES QT_RESOURCE_ALIAS "gamma_correct.frag" -) -set_source_files_properties("qml/fixturesfunctions/3DView/shaders/geo.frag" - PROPERTIES QT_RESOURCE_ALIAS "geo.frag" -) -set_source_files_properties("qml/fixturesfunctions/3DView/shaders/geo.vert" - PROPERTIES QT_RESOURCE_ALIAS "geo.vert" -) -set_source_files_properties("qml/fixturesfunctions/3DView/shaders/grab_bright.frag" - PROPERTIES QT_RESOURCE_ALIAS "grab_bright.frag" -) -set_source_files_properties("qml/fixturesfunctions/3DView/shaders/output_depth.frag" - PROPERTIES QT_RESOURCE_ALIAS "output_depth.frag" -) -set_source_files_properties("qml/fixturesfunctions/3DView/shaders/output_depth.vert" - PROPERTIES QT_RESOURCE_ALIAS "output_depth.vert" -) -set_source_files_properties("qml/fixturesfunctions/3DView/shaders/output_front_depth.frag" - PROPERTIES QT_RESOURCE_ALIAS "output_front_depth.frag" -) -set_source_files_properties("qml/fixturesfunctions/3DView/shaders/spotlight.vert" - PROPERTIES QT_RESOURCE_ALIAS "spotlight.vert" -) -set_source_files_properties("qml/fixturesfunctions/3DView/shaders/spotlight_scattering.frag" - PROPERTIES QT_RESOURCE_ALIAS "spotlight_scattering.frag" -) -set_source_files_properties("qml/fixturesfunctions/3DView/shaders/spotlight_shading.frag" - PROPERTIES QT_RESOURCE_ALIAS "spotlight_shading.frag" -) -set_source_files_properties("qml/fixturesfunctions/3DView/shaders/upsample.frag" - PROPERTIES QT_RESOURCE_ALIAS "upsample.frag" -) -set_source_files_properties("qml/fixturesfunctions/AddFunctionMenu.qml" - PROPERTIES QT_RESOURCE_ALIAS "AddFunctionMenu.qml" -) -set_source_files_properties("qml/fixturesfunctions/AudioEditor.qml" - PROPERTIES QT_RESOURCE_ALIAS "AudioEditor.qml" -) -set_source_files_properties("qml/fixturesfunctions/BeamTool.qml" - PROPERTIES QT_RESOURCE_ALIAS "BeamTool.qml" -) -set_source_files_properties("qml/fixturesfunctions/BottomPanel.qml" - PROPERTIES QT_RESOURCE_ALIAS "BottomPanel.qml" -) -set_source_files_properties("qml/fixturesfunctions/ChaserEditor.qml" - PROPERTIES QT_RESOURCE_ALIAS "ChaserEditor.qml" -) -set_source_files_properties("qml/fixturesfunctions/CollectionEditor.qml" - PROPERTIES QT_RESOURCE_ALIAS "CollectionEditor.qml" -) -set_source_files_properties("qml/fixturesfunctions/CollectionFunctionDelegate.qml" - PROPERTIES QT_RESOURCE_ALIAS "CollectionFunctionDelegate.qml" -) -set_source_files_properties("qml/fixturesfunctions/DMXView.qml" - PROPERTIES QT_RESOURCE_ALIAS "DMXView.qml" -) -set_source_files_properties("qml/fixturesfunctions/EFXEditor.qml" - PROPERTIES QT_RESOURCE_ALIAS "EFXEditor.qml" -) -set_source_files_properties("qml/fixturesfunctions/EFXPreview.qml" - PROPERTIES QT_RESOURCE_ALIAS "EFXPreview.qml" -) -set_source_files_properties("qml/fixturesfunctions/EditorTopBar.qml" - PROPERTIES QT_RESOURCE_ALIAS "EditorTopBar.qml" -) -set_source_files_properties("qml/fixturesfunctions/Fixture2DItem.qml" - PROPERTIES QT_RESOURCE_ALIAS "Fixture2DItem.qml" -) -set_source_files_properties("qml/fixturesfunctions/FixtureBrowser.qml" - PROPERTIES QT_RESOURCE_ALIAS "FixtureBrowser.qml" -) -set_source_files_properties("qml/fixturesfunctions/FixtureBrowserDelegate.qml" - PROPERTIES QT_RESOURCE_ALIAS "FixtureBrowserDelegate.qml" -) -set_source_files_properties("qml/fixturesfunctions/FixtureChannelDelegate.qml" - PROPERTIES QT_RESOURCE_ALIAS "FixtureChannelDelegate.qml" -) -set_source_files_properties("qml/fixturesfunctions/FixtureDMXItem.qml" - PROPERTIES QT_RESOURCE_ALIAS "FixtureDMXItem.qml" -) -set_source_files_properties("qml/fixturesfunctions/FixtureDragItem.qml" - PROPERTIES QT_RESOURCE_ALIAS "FixtureDragItem.qml" -) -set_source_files_properties("qml/fixturesfunctions/FixtureGroupEditor.qml" - PROPERTIES QT_RESOURCE_ALIAS "FixtureGroupEditor.qml" -) -set_source_files_properties("qml/fixturesfunctions/FixtureGroupManager.qml" - PROPERTIES QT_RESOURCE_ALIAS "FixtureGroupManager.qml" -) -set_source_files_properties("qml/fixturesfunctions/FixtureHeadDelegate.qml" - PROPERTIES QT_RESOURCE_ALIAS "FixtureHeadDelegate.qml" -) -set_source_files_properties("qml/fixturesfunctions/FixtureNodeDelegate.qml" - PROPERTIES QT_RESOURCE_ALIAS "FixtureNodeDelegate.qml" -) -set_source_files_properties("qml/fixturesfunctions/FixtureProperties.qml" - PROPERTIES QT_RESOURCE_ALIAS "FixtureProperties.qml" -) -set_source_files_properties("qml/fixturesfunctions/FixtureSummary.qml" - PROPERTIES QT_RESOURCE_ALIAS "FixtureSummary.qml" -) -set_source_files_properties("qml/fixturesfunctions/FixturesAndFunctions.qml" - PROPERTIES QT_RESOURCE_ALIAS "FixturesAndFunctions.qml" -) -set_source_files_properties("qml/fixturesfunctions/FunctionManager.qml" - PROPERTIES QT_RESOURCE_ALIAS "FunctionManager.qml" -) -set_source_files_properties("qml/fixturesfunctions/GridEditor.qml" - PROPERTIES QT_RESOURCE_ALIAS "GridEditor.qml" -) -set_source_files_properties("qml/fixturesfunctions/IntensityTool.qml" - PROPERTIES QT_RESOURCE_ALIAS "IntensityTool.qml" -) -set_source_files_properties("qml/fixturesfunctions/LeftPanel.qml" - PROPERTIES QT_RESOURCE_ALIAS "LeftPanel.qml" -) -set_source_files_properties("qml/fixturesfunctions/PaletteManager.qml" - PROPERTIES QT_RESOURCE_ALIAS "PaletteManager.qml" -) -set_source_files_properties("qml/fixturesfunctions/PositionTool.qml" - PROPERTIES QT_RESOURCE_ALIAS "PositionTool.qml" -) -set_source_files_properties("qml/fixturesfunctions/PresetCapabilityItem.qml" - PROPERTIES QT_RESOURCE_ALIAS "PresetCapabilityItem.qml" -) -set_source_files_properties("qml/fixturesfunctions/PresetsTool.qml" - PROPERTIES QT_RESOURCE_ALIAS "PresetsTool.qml" -) -set_source_files_properties("qml/fixturesfunctions/RGBMatrixEditor.qml" - PROPERTIES QT_RESOURCE_ALIAS "RGBMatrixEditor.qml" -) -set_source_files_properties("qml/fixturesfunctions/RGBMatrixPreview.qml" - PROPERTIES QT_RESOURCE_ALIAS "RGBMatrixPreview.qml" -) -set_source_files_properties("qml/fixturesfunctions/RGBPanelProperties.qml" - PROPERTIES QT_RESOURCE_ALIAS "RGBPanelProperties.qml" -) -set_source_files_properties("qml/fixturesfunctions/RightPanel.qml" - PROPERTIES QT_RESOURCE_ALIAS "RightPanel.qml" -) -set_source_files_properties("qml/fixturesfunctions/SceneEditor.qml" - PROPERTIES QT_RESOURCE_ALIAS "SceneEditor.qml" -) -set_source_files_properties("qml/fixturesfunctions/SceneFixtureConsole.qml" - PROPERTIES QT_RESOURCE_ALIAS "SceneFixtureConsole.qml" -) -set_source_files_properties("qml/fixturesfunctions/ScriptEditor.qml" - PROPERTIES QT_RESOURCE_ALIAS "ScriptEditor.qml" -) -set_source_files_properties("qml/fixturesfunctions/SequenceEditor.qml" - PROPERTIES QT_RESOURCE_ALIAS "SequenceEditor.qml" -) -set_source_files_properties("qml/fixturesfunctions/SettingsView2D.qml" - PROPERTIES QT_RESOURCE_ALIAS "SettingsView2D.qml" -) -set_source_files_properties("qml/fixturesfunctions/SettingsViewDMX.qml" - PROPERTIES QT_RESOURCE_ALIAS "SettingsViewDMX.qml" -) -set_source_files_properties("qml/fixturesfunctions/ShutterAnimator.qml" - PROPERTIES QT_RESOURCE_ALIAS "ShutterAnimator.qml" -) -set_source_files_properties("qml/fixturesfunctions/UniverseGridView.qml" - PROPERTIES QT_RESOURCE_ALIAS "UniverseGridView.qml" -) -set_source_files_properties("qml/fixturesfunctions/UniverseSummary.qml" - PROPERTIES QT_RESOURCE_ALIAS "UniverseSummary.qml" -) -set_source_files_properties("qml/fixturesfunctions/VideoContext.qml" - PROPERTIES QT_RESOURCE_ALIAS "VideoContext.qml" -) -set_source_files_properties("qml/fixturesfunctions/VideoEditor.qml" - PROPERTIES QT_RESOURCE_ALIAS "VideoEditor.qml" -) -set_source_files_properties("qml/inputoutput/AudioCardsList.qml" - PROPERTIES QT_RESOURCE_ALIAS "AudioCardsList.qml" -) -set_source_files_properties("qml/inputoutput/AudioDeviceItem.qml" - PROPERTIES QT_RESOURCE_ALIAS "AudioDeviceItem.qml" -) -set_source_files_properties("qml/inputoutput/AudioIOItem.qml" - PROPERTIES QT_RESOURCE_ALIAS "AudioIOItem.qml" -) -set_source_files_properties("qml/inputoutput/IOLeftPanel.qml" - PROPERTIES QT_RESOURCE_ALIAS "IOLeftPanel.qml" -) -set_source_files_properties("qml/inputoutput/IORightPanel.qml" - PROPERTIES QT_RESOURCE_ALIAS "IORightPanel.qml" -) -set_source_files_properties("qml/inputoutput/InputOutputManager.qml" - PROPERTIES QT_RESOURCE_ALIAS "InputOutputManager.qml" -) -set_source_files_properties("qml/inputoutput/InputPatchItem.qml" - PROPERTIES QT_RESOURCE_ALIAS "InputPatchItem.qml" -) -set_source_files_properties("qml/inputoutput/OutputPatchItem.qml" - PROPERTIES QT_RESOURCE_ALIAS "OutputPatchItem.qml" -) -set_source_files_properties("qml/inputoutput/PatchWireBox.qml" - PROPERTIES QT_RESOURCE_ALIAS "PatchWireBox.qml" -) -set_source_files_properties("qml/inputoutput/PluginDragItem.qml" - PROPERTIES QT_RESOURCE_ALIAS "PluginDragItem.qml" -) -set_source_files_properties("qml/inputoutput/PluginsList.qml" - PROPERTIES QT_RESOURCE_ALIAS "PluginsList.qml" -) -set_source_files_properties("qml/inputoutput/ProfilesList.qml" - PROPERTIES QT_RESOURCE_ALIAS "ProfilesList.qml" -) -set_source_files_properties("qml/inputoutput/UniverseIOItem.qml" - PROPERTIES QT_RESOURCE_ALIAS "UniverseIOItem.qml" -) -set_source_files_properties("qml/popup/CustomPopupDialog.qml" - PROPERTIES QT_RESOURCE_ALIAS "CustomPopupDialog.qml" -) -set_source_files_properties("qml/popup/PopupAbout.qml" - PROPERTIES QT_RESOURCE_ALIAS "PopupAbout.qml" -) -set_source_files_properties("qml/popup/PopupChannelWizard.qml" - PROPERTIES QT_RESOURCE_ALIAS "PopupChannelWizard.qml" -) -set_source_files_properties("qml/popup/PopupCreatePalette.qml" - PROPERTIES QT_RESOURCE_ALIAS "PopupCreatePalette.qml" -) -set_source_files_properties("qml/popup/PopupDMXDump.qml" - PROPERTIES QT_RESOURCE_ALIAS "PopupDMXDump.qml" -) -set_source_files_properties("qml/popup/PopupDisclaimer.qml" - PROPERTIES QT_RESOURCE_ALIAS "PopupDisclaimer.qml" -) -set_source_files_properties("qml/popup/PopupImportProject.qml" - PROPERTIES QT_RESOURCE_ALIAS "PopupImportProject.qml" -) -set_source_files_properties("qml/popup/PopupManualInputSource.qml" - PROPERTIES QT_RESOURCE_ALIAS "PopupManualInputSource.qml" -) -set_source_files_properties("qml/popup/PopupMonitor.qml" - PROPERTIES QT_RESOURCE_ALIAS "PopupMonitor.qml" -) -set_source_files_properties("qml/popup/PopupNetworkClient.qml" - PROPERTIES QT_RESOURCE_ALIAS "PopupNetworkClient.qml" -) -set_source_files_properties("qml/popup/PopupNetworkConnect.qml" - PROPERTIES QT_RESOURCE_ALIAS "PopupNetworkConnect.qml" -) -set_source_files_properties("qml/popup/PopupNetworkServer.qml" - PROPERTIES QT_RESOURCE_ALIAS "PopupNetworkServer.qml" -) -set_source_files_properties("qml/popup/PopupPINRequest.qml" - PROPERTIES QT_RESOURCE_ALIAS "PopupPINRequest.qml" -) -set_source_files_properties("qml/popup/PopupPINSetup.qml" - PROPERTIES QT_RESOURCE_ALIAS "PopupPINSetup.qml" -) -set_source_files_properties("qml/popup/PopupRenameItems.qml" - PROPERTIES QT_RESOURCE_ALIAS "PopupRenameItems.qml" -) -set_source_files_properties("qml/qmldir" - PROPERTIES QT_RESOURCE_ALIAS "qmldir" -) -set_source_files_properties("qml/showmanager/HeaderAndCursor.qml" - PROPERTIES QT_RESOURCE_ALIAS "HeaderAndCursor.qml" -) -set_source_files_properties("qml/showmanager/ShowItem.qml" - PROPERTIES QT_RESOURCE_ALIAS "ShowItem.qml" -) -set_source_files_properties("qml/showmanager/ShowManager.qml" - PROPERTIES QT_RESOURCE_ALIAS "ShowManager.qml" -) -set_source_files_properties("qml/showmanager/TrackDelegate.qml" - PROPERTIES QT_RESOURCE_ALIAS "TrackDelegate.qml" -) -set_source_files_properties("qml/virtualconsole/VCButtonItem.qml" - PROPERTIES QT_RESOURCE_ALIAS "VCButtonItem.qml" -) -set_source_files_properties("qml/virtualconsole/VCButtonProperties.qml" - PROPERTIES QT_RESOURCE_ALIAS "VCButtonProperties.qml" -) -set_source_files_properties("qml/virtualconsole/VCClockItem.qml" - PROPERTIES QT_RESOURCE_ALIAS "VCClockItem.qml" -) -set_source_files_properties("qml/virtualconsole/VCClockProperties.qml" - PROPERTIES QT_RESOURCE_ALIAS "VCClockProperties.qml" -) -set_source_files_properties("qml/virtualconsole/VCCueListItem.qml" - PROPERTIES QT_RESOURCE_ALIAS "VCCueListItem.qml" -) -set_source_files_properties("qml/virtualconsole/VCCueListProperties.qml" - PROPERTIES QT_RESOURCE_ALIAS "VCCueListProperties.qml" -) -set_source_files_properties("qml/virtualconsole/VCFrameItem.qml" - PROPERTIES QT_RESOURCE_ALIAS "VCFrameItem.qml" -) -set_source_files_properties("qml/virtualconsole/VCFrameProperties.qml" - PROPERTIES QT_RESOURCE_ALIAS "VCFrameProperties.qml" -) -set_source_files_properties("qml/virtualconsole/VCLabelItem.qml" - PROPERTIES QT_RESOURCE_ALIAS "VCLabelItem.qml" -) -set_source_files_properties("qml/virtualconsole/VCPageArea.qml" - PROPERTIES QT_RESOURCE_ALIAS "VCPageArea.qml" -) -set_source_files_properties("qml/virtualconsole/VCPageProperties.qml" - PROPERTIES QT_RESOURCE_ALIAS "VCPageProperties.qml" -) -set_source_files_properties("qml/virtualconsole/VCRightPanel.qml" - PROPERTIES QT_RESOURCE_ALIAS "VCRightPanel.qml" -) -set_source_files_properties("qml/virtualconsole/VCSliderItem.qml" - PROPERTIES QT_RESOURCE_ALIAS "VCSliderItem.qml" -) -set_source_files_properties("qml/virtualconsole/VCSliderProperties.qml" - PROPERTIES QT_RESOURCE_ALIAS "VCSliderProperties.qml" -) -set_source_files_properties("qml/virtualconsole/VCWidgetItem.qml" - PROPERTIES QT_RESOURCE_ALIAS "VCWidgetItem.qml" -) -set_source_files_properties("qml/virtualconsole/VCWidgetProperties.qml" - PROPERTIES QT_RESOURCE_ALIAS "VCWidgetProperties.qml" -) -set_source_files_properties("qml/virtualconsole/VirtualConsole.qml" - PROPERTIES QT_RESOURCE_ALIAS "VirtualConsole.qml" -) -set_source_files_properties("qml/virtualconsole/WidgetDragItem.qml" - PROPERTIES QT_RESOURCE_ALIAS "WidgetDragItem.qml" -) -set_source_files_properties("qml/virtualconsole/WidgetsList.qml" - PROPERTIES QT_RESOURCE_ALIAS "WidgetsList.qml" -) + list(APPEND FILES_TO_ALIAS "${CMAKE_CURRENT_SOURCE_DIR}/qml/qmldir") + + foreach(FILE_TO_ALIAS ${FILES_TO_ALIAS}) + if(NOT "${FILE_TO_ALIAS}" MATCHES "\\+qt5") + get_filename_component(FILE_NAME ${FILE_TO_ALIAS} NAME) + set_source_files_properties("${FILE_TO_ALIAS}" + PROPERTIES QT_RESOURCE_ALIAS "${FILE_NAME}" + ) + endif() + endforeach() +endif() target_include_directories(${module_name} PRIVATE ../engine/audio/src diff --git a/qmlui/app.cpp b/qmlui/app.cpp index ebfdf176cc..f287de3fa8 100644 --- a/qmlui/app.cpp +++ b/qmlui/app.cpp @@ -33,6 +33,7 @@ #include #include #include +#include #include #include "app.h" @@ -124,6 +125,11 @@ void App::startup() qmlRegisterType("org.qlcplus.classes", 1, 0, "ModelSelector"); qmlRegisterType("org.qlcplus.classes", 1, 0, "FolderBrowser"); +#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) + QQmlFileSelector* selector = new QQmlFileSelector(engine()); + selector->setExtraSelectors({"qt5"}); +#endif + setTitle(APPNAME); setIcon(QIcon(":/qlcplus.svg")); @@ -256,9 +262,14 @@ bool App::is3DSupported() const int glVersion = (openglContext()->format().majorVersion() * 10) + openglContext()->format().minorVersion(); return glVersion < 33 ? false : true; #else - // TODO: Qt6 - - return true; + if (rendererInterface()->isApiRhiBased(graphicsApi())) { + return true; + } + QOpenGLContext * openglContext = static_cast(rendererInterface()->getResource(const_cast(this), QSGRendererInterface::OpenGLContextResource)); + if (openglContext && openglContext->isValid() && openglContext->format().majorVersion() * 10 + openglContext->format().minorVersion() >= 33) { + return true; + } + return false; #endif } diff --git a/qmlui/inputprofileeditor.h b/qmlui/inputprofileeditor.h index df0a7e2ed4..a3f55a3032 100644 --- a/qmlui/inputprofileeditor.h +++ b/qmlui/inputprofileeditor.h @@ -48,8 +48,7 @@ class InputProfileEditor : public QObject * Initialization ************************************************************************/ public: - InputProfileEditor(QObject *parent = nullptr); - InputProfileEditor(QLCInputProfile *profile, Doc *doc, QObject *parent = nullptr); + explicit InputProfileEditor(QLCInputProfile *profile, Doc *doc, QObject *parent = nullptr); ~InputProfileEditor(); /* Get/Set the profile modified state */ diff --git a/qmlui/mainview3d.cpp b/qmlui/mainview3d.cpp index f6ca82d637..5c48d9998b 100644 --- a/qmlui/mainview3d.cpp +++ b/qmlui/mainview3d.cpp @@ -380,9 +380,9 @@ void MainView3D::initialize3DProperties() QMetaObject::invokeMethod(m_scene3D, "updateFrameGraph", Q_ARG(QVariant, true)); } -QString MainView3D::makeShader(QString str) { - - QString prefix = R"(#version 150 +QString MainView3D::makeGlShader(const QString &str) +{ + QString prefix = R"(#version 150 #define GL3 #ifdef GL3 @@ -416,6 +416,46 @@ QString MainView3D::makeShader(QString str) { return prefix + str; } +QString MainView3D::makeRhiShader(const QString &str) { + + QString prefix = R"(#version 450 core + +layout(std140, binding = 0) uniform qt3d_render_view_uniforms { + mat4 viewMatrix; + mat4 projectionMatrix; + mat4 uncorrectedProjectionMatrix; + mat4 clipCorrectionMatrix; + mat4 viewProjectionMatrix; + mat4 inverseViewMatrix; + mat4 inverseProjectionMatrix; + mat4 inverseViewProjectionMatrix; + mat4 viewportMatrix; + mat4 inverseViewportMatrix; + vec4 textureTransformMatrix; + vec3 eyePosition; + float aspectRatio; + float gamma; + float exposure; + float time; + float yUpInNDC; + float yUpInFBO; +}; + +layout(std140, binding = 1) uniform qt3d_command_uniforms { + mat4 modelMatrix; + mat4 inverseModelMatrix; + mat4 modelViewMatrix; + mat3 modelNormalMatrix; + mat4 inverseModelViewMatrix; + mat4 modelViewProjection; + mat4 inverseModelViewProjectionMatrix; +}; + +)"; + + return prefix + str; +} + void MainView3D::sceneReady() { qDebug() << "Scene entity ready"; diff --git a/qmlui/mainview3d.h b/qmlui/mainview3d.h index 477a3366b1..127aa9b271 100644 --- a/qmlui/mainview3d.h +++ b/qmlui/mainview3d.h @@ -195,7 +195,9 @@ protected slots: Q_INVOKABLE void initializeFixture(quint32 itemID, QEntity *fxEntity, QSceneLoader *loader); - Q_INVOKABLE QString makeShader(QString str); + Q_INVOKABLE QString makeGlShader(const QString &str); + + Q_INVOKABLE QString makeRhiShader(const QString &str); /** Update the fixture preview items when some channels have changed */ void updateFixture(Fixture *fixture, QByteArray &previous); diff --git a/qmlui/qml/+qt5/ActionsMenu.qml b/qmlui/qml/+qt5/ActionsMenu.qml new file mode 100644 index 0000000000..5d1efcc648 --- /dev/null +++ b/qmlui/qml/+qt5/ActionsMenu.qml @@ -0,0 +1,601 @@ +/* + Q Light Controller Plus + ActionsMenu.qml + + Copyright (c) Massimo Callegari + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0.txt + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +import QtQuick 2.0 +import QtQuick.Controls 2.1 +import QtQuick.Dialogs 1.2 +import QtQuick.Layouts 1.0 + +Popup +{ + id: menuRoot + padding: 0 + + property Item submenuItem: null + property int flagSize: UISettings.iconSizeDefault * 1.5 + + onClosed: submenuItem = null + + function handleSaveAction() + { + if (qlcplus.fileName()) + qlcplus.saveWorkspace(qlcplus.fileName()) + else + saveDialog.open() + } + + function saveBeforeExit() + { + saveFirstPopup.action = "#EXIT" + saveFirstPopup.open() + } + + function setLanguage(lang) + { + qlcplus.setLanguage(lang) + menuRoot.close() + } +/* + FileDialog + { + id: openDialog + visible: false + title: qsTr("Open a file") + folder: "file://" + qlcplus.workingPath + nameFilters: [ qsTr("QLC+ files") + " (*.qxw *.qxf)", qsTr("All files") + " (*)" ] + + onAccepted: + { + if (fileUrl.toString().endsWith("qxf") || fileUrl.toString().endsWith("d4")) + qlcplus.loadFixture(fileUrl) + else + qlcplus.loadWorkspace(fileUrl) + qlcplus.workingPath = folder.toString() + } + } +*/ + PopupFolderBrowser + { + id: openDialog + title: qsTr("Open a file") + standardButtons: Dialog.Cancel | Dialog.Open + + onAccepted: + { + if (fileUrl.toString().endsWith("qxf") || fileUrl.toString().endsWith("d4")) + qlcplus.loadFixture(fileUrl) + else + qlcplus.loadWorkspace(fileUrl) + qlcplus.workingPath = folder.toString() + } + } + + FileDialog + { + id: importDialog + visible: false + title: qsTr("Import from project") + folder: "file://" + qlcplus.workingPath + nameFilters: [ qsTr("Project files") + " (*.qxw)", qsTr("All files") + " (*)" ] + + onAccepted: + { + if (qlcplus.loadImportWorkspace(fileUrl) === true) + { + importLoader.source = "" + importLoader.source = "qrc:/PopupImportProject.qml" + } + } + } + + FileDialog + { + id: saveDialog + visible: false + title: qsTr("Save project as...") + selectExisting: false + nameFilters: [ qsTr("Project files") + " (*.qxw)", qsTr("All files") + " (*)" ] + + onAccepted: + { + console.log("You chose: " + fileUrl) + qlcplus.saveWorkspace(fileUrl) + + if (saveFirstPopup.action == "#EXIT") + qlcplus.exit() + } + } + + CustomPopupDialog + { + id: saveFirstPopup + title: qsTr("Your project has changes") + message: qsTr("Do you wish to save the current project first?\nChanges will be lost if you don't save them.") + standardButtons: Dialog.Yes | Dialog.No | Dialog.Cancel + + property string action: "" + + onClicked: function (role) { + if (role === Dialog.Yes) + { + if (qlcplus.fileName()) + { + qlcplus.saveWorkspace(qlcplus.fileName()) + if (action == "#EXIT") + qlcplus.exit() + } + else + { + saveDialog.open() + if (action == "#EXIT") + return + } + } + else if (role === Dialog.No) + { + if (action == "#OPEN") + openDialog.open() + else if (action == "#NEW") + qlcplus.newWorkspace() + else if (action == "#EXIT") + qlcplus.exit() + else + qlcplus.loadWorkspace(action) + } + else if (role === Dialog.Cancel) + { + console.log("Cancel clicked") + } + + action = "" + } + } + + background: + Rectangle + { + //radius: 2 + border.width: 1 + border.color: UISettings.bgStronger + color: UISettings.bgStrong + } + + Column + { + id: actionsMenuEntries + + ContextMenuEntry + { + id: fileNew + imgSource: "qrc:/filenew.svg" + entryText: qsTr("New project") + onClicked: + { + if (qlcplus.docModified) + { + saveFirstPopup.action = "#NEW" + saveFirstPopup.open() + } + else + qlcplus.newWorkspace() + + menuRoot.close() + } + onEntered: submenuItem = null + } + + ContextMenuEntry + { + id: fileOpen + imgSource: "qrc:/fileopen.svg" + entryText: qsTr("Open file") + onClicked: + { + if (qlcplus.docModified) + { + saveFirstPopup.action = "#OPEN" + saveFirstPopup.open() + } + else + openDialog.open() + + menuRoot.close() + } + onEntered: submenuItem = recentMenu + + Rectangle + { + id: recentMenu + x: menuRoot.width + width: recentColumn.width + height: recentColumn.height + color: UISettings.bgStrong + visible: submenuItem === recentMenu + + Column + { + id: recentColumn + Repeater + { + model: qlcplus.recentFiles + delegate: + ContextMenuEntry + { + entryText: modelData + onClicked: + { + if (qlcplus.docModified) + { + saveFirstPopup.open() + saveFirstPopup.action = entryText + } + else + { + menuRoot.close() + qlcplus.loadWorkspace(entryText) + } + } + } + } + } + } + } + + ContextMenuEntry + { + id: fileSave + imgSource: "qrc:/filesave.svg" + entryText: qsTr("Save project") + onEntered: submenuItem = null + + onClicked: + { + handleSaveAction() + menuRoot.close() + } + } + + ContextMenuEntry + { + id: fileSaveAs + imgSource: "qrc:/filesaveas.svg" + entryText: qsTr("Save project as...") + onEntered: submenuItem = null + + onClicked: + { + saveDialog.open() + menuRoot.close() + } + } + + ContextMenuEntry + { + id: fileImport + imgSource: "qrc:/import.svg" + entryText: qsTr("Import from project") + onEntered: submenuItem = null + + onClicked: + { + importDialog.open() + menuRoot.close() + } + + Loader + { + id: importLoader + onLoaded: item.open() + + Connections + { + target: importLoader.item + onClose: importLoader.source = "" + } + } + } + + RowLayout + { + height: UISettings.iconSizeDefault + width: parent.width + spacing: 0 + + ContextMenuEntry + { + Layout.fillWidth: true + imgSource: "qrc:/undo.svg" + entryText: qsTr("Undo") + onEntered: submenuItem = null + + onClicked: + { + menuRoot.close() + tardis.undoAction() + } + } + ContextMenuEntry + { + Layout.fillWidth: true + imgSource: "qrc:/redo.svg" + entryText: qsTr("Redo") + onEntered: submenuItem = null + + onClicked: + { + menuRoot.close() + tardis.redoAction() + } + } + } + ContextMenuEntry + { + imgSource: "qrc:/network.svg" + entryText: qsTr("Network") + onEntered: submenuItem = networkMenu + + onClicked: + { + if (Qt.platform.os === "android") + submenuItem = networkMenu + } + + Rectangle + { + id: networkMenu + x: menuRoot.width + width: networkColumn.width + height: networkColumn.height + color: UISettings.bgStrong + visible: submenuItem === networkMenu + + Column + { + id: networkColumn + + ContextMenuEntry + { + id: startServer + entryText: qsTr("Server setup") + + onClicked: + { + menuRoot.close() + pNetServer.open() + } + + PopupNetworkServer + { + id: pNetServer + implicitWidth: Math.min(UISettings.bigItemHeight * 4, mainView.width / 3) + } + } + + ContextMenuEntry + { + id: connectToServer + entryText: qsTr("Client setup") + + onClicked: + { + menuRoot.close() + pNetClient.open() + } + + PopupNetworkClient + { + id: pNetClient + implicitWidth: Math.min(UISettings.bigItemHeight * 4, mainView.width / 3) + } + } + } + } + } + + ContextMenuEntry + { + imgSource: "qrc:/diptool.svg" + entryText: qsTr("Address tool") + onEntered: submenuItem = null + onClicked: + { + close() + addrToolDialog.open() + } + + CustomPopupDialog + { + id: addrToolDialog + width: mainView.width / 3.5 + title: qsTr("DMX Address tool") + standardButtons: Dialog.Close + + contentItem: + DMXAddressTool { } + } + } + + ContextMenuEntry + { + id: uiConfig + imgSource: "qrc:/configure.svg" + entryText: qsTr("UI Settings") + onEntered: submenuItem = null + onClicked: + { + menuRoot.close() + mainView.loadResource("qrc:/UISettingsEditor.qml") + } + } + + ContextMenuEntry + { + id: fullScreen + imgSource: "qrc:/fullscreen.svg" + entryText: qsTr("Toggle fullscreen") + onEntered: submenuItem = null + onClicked: + { + menuRoot.close() + qlcplus.toggleFullscreen() + } + } + + ContextMenuEntry + { + imgSource: "qrc:/global.svg" + entryText: qsTr("Language") + onEntered: submenuItem = languageMenu + + onClicked: + { + if (Qt.platform.os === "android") + submenuItem = languageMenu + } + + Rectangle + { + id: languageMenu + x: menuRoot.width + y: -height + parent.height + width: languageColumn.width + height: languageColumn.height + color: UISettings.bgStrong + visible: submenuItem === languageMenu + + GridLayout + { + id: languageColumn + columns: 2 + columnSpacing: 0 + rowSpacing: 0 + + ContextMenuEntry + { + Layout.fillWidth: true + imgSource: "qrc:/flag_ca.svg" + iconWidth: flagSize + entryText: qsTr("Catalan") + onClicked: setLanguage("ca_ES") + } + ContextMenuEntry + { + Layout.fillWidth: true + imgSource: "qrc:/flag_nl.svg" + iconWidth: flagSize + entryText: qsTr("Dutch") + onClicked: setLanguage("nl_NL") + } + ContextMenuEntry + { + Layout.fillWidth: true + imgSource: "qrc:/flag_uk_us.svg" + iconWidth: flagSize + entryText: qsTr("English") + onClicked: setLanguage("en_EN") + } + ContextMenuEntry + { + Layout.fillWidth: true + imgSource: "qrc:/flag_fr.svg" + iconWidth: flagSize + entryText: qsTr("French") + onClicked: setLanguage("fr_FR") + } + ContextMenuEntry + { + Layout.fillWidth: true + imgSource: "qrc:/flag_de.svg" + iconWidth: flagSize + entryText: qsTr("German") + onClicked: setLanguage("de_DE") + } + ContextMenuEntry + { + Layout.fillWidth: true + imgSource: "qrc:/flag_it.svg" + iconWidth: flagSize + entryText: qsTr("Italian") + onClicked: setLanguage("it_IT") + } + ContextMenuEntry + { + Layout.fillWidth: true + imgSource: "qrc:/flag_jp.svg" + iconWidth: flagSize + entryText: qsTr("Japanese") + onClicked: setLanguage("ja_JP") + } + ContextMenuEntry + { + Layout.fillWidth: true + imgSource: "qrc:/flag_pl.svg" + iconWidth: flagSize + entryText: qsTr("Polish") + onClicked: setLanguage("pl_PL") + } + ContextMenuEntry + { + Layout.fillWidth: true + imgSource: "qrc:/flag_ru.svg" + iconWidth: flagSize + entryText: qsTr("Russian") + onClicked: setLanguage("ru_RU") + } + ContextMenuEntry + { + Layout.fillWidth: true + imgSource: "qrc:/flag_es.svg" + iconWidth: flagSize + entryText: qsTr("Spanish") + onClicked: setLanguage("es_ES") + } + ContextMenuEntry + { + Layout.fillWidth: true + imgSource: "qrc:/flag_ua.svg" + iconWidth: flagSize + entryText: qsTr("Ukrainian") + onClicked: setLanguage("uk_UA") + } + } + } + } + + ContextMenuEntry + { + id: info + imgSource: "qrc:/info.svg" + entryText: qsTr("About") + onEntered: submenuItem = null + onClicked: + { + menuRoot.close() + infoPopup.open() + } + + PopupAbout + { + id: infoPopup + } + } + } +} + + diff --git a/qmlui/qml/ActionsMenu.qml b/qmlui/qml/ActionsMenu.qml index d8ba7f3433..e13545ca12 100644 --- a/qmlui/qml/ActionsMenu.qml +++ b/qmlui/qml/ActionsMenu.qml @@ -19,11 +19,9 @@ import QtQuick 2.0 import QtQuick.Controls 2.1 -import QtQuick.Dialogs 1.2 +import QtQuick.Dialogs import QtQuick.Layouts 1.0 -import "." - Popup { id: menuRoot @@ -93,7 +91,7 @@ Popup id: importDialog visible: false title: qsTr("Import from project") - folder: "file://" + qlcplus.workingPath + currentFolder: "file://" + qlcplus.workingPath nameFilters: [ qsTr("Project files") + " (*.qxw)", qsTr("All files") + " (*)" ] onAccepted: @@ -111,7 +109,7 @@ Popup id: saveDialog visible: false title: qsTr("Save project as...") - selectExisting: false + fileMode: FileDialog.SaveFile nameFilters: [ qsTr("Project files") + " (*.qxw)", qsTr("All files") + " (*)" ] onAccepted: @@ -133,8 +131,7 @@ Popup property string action: "" - onClicked: - { + onClicked: function (role) { if (role === Dialog.Yes) { if (qlcplus.fileName()) diff --git a/qmlui/qml/BeatGeneratorsPanel.qml b/qmlui/qml/BeatGeneratorsPanel.qml index 6c2a4b9d59..22798f32c8 100644 --- a/qmlui/qml/BeatGeneratorsPanel.qml +++ b/qmlui/qml/BeatGeneratorsPanel.qml @@ -20,7 +20,6 @@ import QtQuick 2.6 import QtQuick.Controls 2.1 import QtQuick.Layouts 1.1 -import "." Rectangle { diff --git a/qmlui/qml/ChannelToolLoader.qml b/qmlui/qml/ChannelToolLoader.qml index 011b41d81a..b5eb573afa 100644 --- a/qmlui/qml/ChannelToolLoader.qml +++ b/qmlui/qml/ChannelToolLoader.qml @@ -21,7 +21,6 @@ import QtQuick 2.0 import QtQuick.Controls 2.5 import org.qlcplus.classes 1.0 -import "." Popup { diff --git a/qmlui/qml/ChaserStepDelegate.qml b/qmlui/qml/ChaserStepDelegate.qml index 4a0fa58c3a..46c89a06d0 100644 --- a/qmlui/qml/ChaserStepDelegate.qml +++ b/qmlui/qml/ChaserStepDelegate.qml @@ -20,7 +20,6 @@ import QtQuick 2.0 import QtQuick.Layouts 1.1 import org.qlcplus.classes 1.0 -import "." Rectangle { diff --git a/qmlui/qml/ChaserWidget.qml b/qmlui/qml/ChaserWidget.qml index 65f55ef238..f308c6764b 100644 --- a/qmlui/qml/ChaserWidget.qml +++ b/qmlui/qml/ChaserWidget.qml @@ -23,7 +23,6 @@ import QtQuick.Controls 2.1 import org.qlcplus.classes 1.0 import "TimeUtils.js" as TimeUtils -import "." Column { diff --git a/qmlui/qml/ColorTool.qml b/qmlui/qml/ColorTool.qml index 7cbd048994..ab5aa96f17 100644 --- a/qmlui/qml/ColorTool.qml +++ b/qmlui/qml/ColorTool.qml @@ -22,7 +22,6 @@ import QtQuick.Controls 2.1 import QtQuick.Layouts 1.1 import org.qlcplus.classes 1.0 -import "." Rectangle { diff --git a/qmlui/qml/ColorToolBasic.qml b/qmlui/qml/ColorToolBasic.qml index ac0c172a4a..15e6d5b6f8 100644 --- a/qmlui/qml/ColorToolBasic.qml +++ b/qmlui/qml/ColorToolBasic.qml @@ -18,7 +18,6 @@ */ import QtQuick 2.0 -import "." Rectangle { diff --git a/qmlui/qml/ColorToolFilters.qml b/qmlui/qml/ColorToolFilters.qml index d8c732bc08..7169d1b495 100644 --- a/qmlui/qml/ColorToolFilters.qml +++ b/qmlui/qml/ColorToolFilters.qml @@ -23,7 +23,6 @@ import QtQuick.Layouts 1.1 import org.qlcplus.classes 1.0 import "GenericHelpers.js" as Helpers -import "." Rectangle { diff --git a/qmlui/qml/ColorToolFull.qml b/qmlui/qml/ColorToolFull.qml index 1d9af3b3aa..21017cfc72 100644 --- a/qmlui/qml/ColorToolFull.qml +++ b/qmlui/qml/ColorToolFull.qml @@ -23,7 +23,6 @@ import QtQuick.Layouts 1.1 import org.qlcplus.classes 1.0 import "GenericHelpers.js" as Helpers -import "." Rectangle { diff --git a/qmlui/qml/ColorToolPrimary.qml b/qmlui/qml/ColorToolPrimary.qml index f3be683beb..cd42146837 100644 --- a/qmlui/qml/ColorToolPrimary.qml +++ b/qmlui/qml/ColorToolPrimary.qml @@ -21,7 +21,6 @@ import QtQuick 2.0 import org.qlcplus.classes 1.0 import "GenericHelpers.js" as Helpers -import "." Rectangle { diff --git a/qmlui/qml/ContextMenuEntry.qml b/qmlui/qml/ContextMenuEntry.qml index 748c6aaac6..601e44a71b 100644 --- a/qmlui/qml/ContextMenuEntry.qml +++ b/qmlui/qml/ContextMenuEntry.qml @@ -19,8 +19,6 @@ import QtQuick 2.2 -import "." - Rectangle { id: baseMenuEntry diff --git a/qmlui/qml/CustomCheckBox.qml b/qmlui/qml/CustomCheckBox.qml index 7c0218f26e..4c22f76f2f 100644 --- a/qmlui/qml/CustomCheckBox.qml +++ b/qmlui/qml/CustomCheckBox.qml @@ -20,8 +20,6 @@ import QtQuick 2.0 import QtQuick.Controls 2.14 -import "." - RadioButton { id: controlRoot diff --git a/qmlui/qml/CustomComboBox.qml b/qmlui/qml/CustomComboBox.qml index 6315eb22b4..45a5bb1fdd 100644 --- a/qmlui/qml/CustomComboBox.qml +++ b/qmlui/qml/CustomComboBox.qml @@ -20,7 +20,6 @@ import QtQuick 2.9 import QtQuick.Window 2.3 import QtQuick.Controls 2.14 -import "." ComboBox { @@ -113,7 +112,7 @@ ComboBox delegate: ItemDelegate { - width: parent.width + width: control.width implicitHeight: delegateHeight highlighted: control.highlightedIndex === index hoverEnabled: control.hoverEnabled diff --git a/qmlui/qml/CustomDoubleSpinBox.qml b/qmlui/qml/CustomDoubleSpinBox.qml index f60fe2a02b..516292f3c4 100644 --- a/qmlui/qml/CustomDoubleSpinBox.qml +++ b/qmlui/qml/CustomDoubleSpinBox.qml @@ -19,7 +19,6 @@ import QtQuick 2.3 import QtQuick.Controls 2.14 -import "." CustomSpinBox { diff --git a/qmlui/qml/CustomScrollBar.qml b/qmlui/qml/CustomScrollBar.qml index 797e45b09b..34fb5b4a38 100644 --- a/qmlui/qml/CustomScrollBar.qml +++ b/qmlui/qml/CustomScrollBar.qml @@ -20,7 +20,6 @@ import QtQuick 2.6 import QtQuick.Controls 2.1 -import "." ScrollBar { diff --git a/qmlui/qml/CustomSlider.qml b/qmlui/qml/CustomSlider.qml index d7ec8f5d06..28d52793e0 100644 --- a/qmlui/qml/CustomSlider.qml +++ b/qmlui/qml/CustomSlider.qml @@ -20,7 +20,6 @@ import QtQuick 2.9 import QtQuick.Controls 2.14 -import "." Slider { diff --git a/qmlui/qml/CustomSpinBox.qml b/qmlui/qml/CustomSpinBox.qml index 79e61598f9..a276a7f672 100644 --- a/qmlui/qml/CustomSpinBox.qml +++ b/qmlui/qml/CustomSpinBox.qml @@ -19,7 +19,6 @@ import QtQuick 2.3 import QtQuick.Controls 2.14 -import "." SpinBox { diff --git a/qmlui/qml/CustomTextEdit.qml b/qmlui/qml/CustomTextEdit.qml index 06b0053532..c00816b396 100644 --- a/qmlui/qml/CustomTextEdit.qml +++ b/qmlui/qml/CustomTextEdit.qml @@ -19,7 +19,6 @@ import QtQuick 2.7 import QtQuick.Controls 2.14 -import "." TextField { diff --git a/qmlui/qml/CustomTextInput.qml b/qmlui/qml/CustomTextInput.qml index de0f28483a..b9294bc3b9 100644 --- a/qmlui/qml/CustomTextInput.qml +++ b/qmlui/qml/CustomTextInput.qml @@ -18,7 +18,6 @@ */ import QtQuick 2.7 -import "." TextInput { diff --git a/qmlui/qml/DMXAddressTool.qml b/qmlui/qml/DMXAddressTool.qml index 3d1e92fbca..09d7a06fae 100644 --- a/qmlui/qml/DMXAddressTool.qml +++ b/qmlui/qml/DMXAddressTool.qml @@ -20,7 +20,6 @@ import QtQuick 2.0 import QtQuick.Layouts 1.2 -import "." GridLayout { diff --git a/qmlui/qml/DMXPercentageButton.qml b/qmlui/qml/DMXPercentageButton.qml index 7e7236ce22..42e19d3c61 100644 --- a/qmlui/qml/DMXPercentageButton.qml +++ b/qmlui/qml/DMXPercentageButton.qml @@ -18,7 +18,6 @@ */ import QtQuick 2.0 -import "." Rectangle { diff --git a/qmlui/qml/ExternalControlDelegate.qml b/qmlui/qml/ExternalControlDelegate.qml index ea01b2bc72..efb135ea7a 100644 --- a/qmlui/qml/ExternalControlDelegate.qml +++ b/qmlui/qml/ExternalControlDelegate.qml @@ -21,7 +21,6 @@ import QtQuick 2.0 import QtQuick.Layouts 1.1 import org.qlcplus.classes 1.0 -import "." Column { diff --git a/qmlui/qml/ExternalControls.qml b/qmlui/qml/ExternalControls.qml index fb38d1a6bb..9d6c3fb251 100644 --- a/qmlui/qml/ExternalControls.qml +++ b/qmlui/qml/ExternalControls.qml @@ -21,7 +21,6 @@ import QtQuick 2.0 import QtQuick.Layouts 1.1 import org.qlcplus.classes 1.0 -import "." Column { diff --git a/qmlui/qml/FixtureConsole.qml b/qmlui/qml/FixtureConsole.qml index 0ab730f138..fabc08bcd6 100644 --- a/qmlui/qml/FixtureConsole.qml +++ b/qmlui/qml/FixtureConsole.qml @@ -21,7 +21,6 @@ import QtQuick 2.2 import QtQuick.Layouts 1.0 import org.qlcplus.classes 1.0 -import "." Rectangle { diff --git a/qmlui/qml/FixtureDelegate.qml b/qmlui/qml/FixtureDelegate.qml index 2dc46f3d0e..f5a1ad2347 100644 --- a/qmlui/qml/FixtureDelegate.qml +++ b/qmlui/qml/FixtureDelegate.qml @@ -21,7 +21,6 @@ import QtQuick 2.0 import QtQuick.Layouts 1.0 import org.qlcplus.classes 1.0 -import "." Rectangle { diff --git a/qmlui/qml/FunctionDelegate.qml b/qmlui/qml/FunctionDelegate.qml index 3f59a39407..00714e0b6c 100644 --- a/qmlui/qml/FunctionDelegate.qml +++ b/qmlui/qml/FunctionDelegate.qml @@ -20,7 +20,6 @@ import QtQuick 2.0 import org.qlcplus.classes 1.0 -import "." Rectangle { @@ -103,9 +102,15 @@ Rectangle drag.target: dragItem - onPressed: funcDelegate.mouseEvent(App.Pressed, cRef.id, cRef.type, funcDelegate, mouse.modifiers) - onClicked: funcDelegate.mouseEvent(App.Clicked, cRef.id, cRef.type, funcDelegate, mouse.modifiers) - onDoubleClicked: funcDelegate.mouseEvent(App.DoubleClicked, cRef.id, cRef.type, funcDelegate, mouse.modifiers) + onPressed: function(mouse) { + funcDelegate.mouseEvent(App.Pressed, cRef.id, cRef.type, funcDelegate, mouse.modifiers) + } + onClicked: function(mouse) { + funcDelegate.mouseEvent(App.Clicked, cRef.id, cRef.type, funcDelegate, mouse.modifiers) + } + onDoubleClicked: function(mouse) { + funcDelegate.mouseEvent(App.DoubleClicked, cRef.id, cRef.type, funcDelegate, mouse.modifiers) + } } DropArea diff --git a/qmlui/qml/GenericButton.qml b/qmlui/qml/GenericButton.qml index ce56ada487..2966715df9 100644 --- a/qmlui/qml/GenericButton.qml +++ b/qmlui/qml/GenericButton.qml @@ -19,7 +19,6 @@ import QtQuick 2.0 -import "." Rectangle { diff --git a/qmlui/qml/GenericMultiDragItem.qml b/qmlui/qml/GenericMultiDragItem.qml index e3ca4e4759..8586f10c35 100644 --- a/qmlui/qml/GenericMultiDragItem.qml +++ b/qmlui/qml/GenericMultiDragItem.qml @@ -20,7 +20,6 @@ import QtQuick 2.0 import org.qlcplus.classes 1.0 -import "." Item { diff --git a/qmlui/qml/IconButton.qml b/qmlui/qml/IconButton.qml index 2cd64f1a94..80dde7105b 100644 --- a/qmlui/qml/IconButton.qml +++ b/qmlui/qml/IconButton.qml @@ -20,7 +20,6 @@ import QtQuick 2.2 import QtQuick.Controls 2.1 -import "." Button { @@ -153,23 +152,21 @@ Button } } ] - - MouseArea + } + MouseArea + { + id: ctrlMouseArea + anchors.fill: parent + onClicked: + { + if (control.checkable) { - id: ctrlMouseArea - anchors.fill: parent - onClicked: - { - if (checkable) - { - control.toggle() - control.toggled() - } - else - control.clicked() - } + control.toggle() + control.toggled() } + else + control.clicked() } - + } } diff --git a/qmlui/qml/IconPopupButton.qml b/qmlui/qml/IconPopupButton.qml index 806abb7b3c..aa350d6052 100644 --- a/qmlui/qml/IconPopupButton.qml +++ b/qmlui/qml/IconPopupButton.qml @@ -20,7 +20,6 @@ import QtQuick 2.0 import QtQuick.Controls 2.1 -import "." CustomComboBox { diff --git a/qmlui/qml/IconTextEntry.qml b/qmlui/qml/IconTextEntry.qml index e997a1dd5a..f92e659ea1 100644 --- a/qmlui/qml/IconTextEntry.qml +++ b/qmlui/qml/IconTextEntry.qml @@ -21,7 +21,6 @@ import QtQuick 2.0 import QtQuick.Layouts 1.1 import org.qlcplus.classes 1.0 -import "." Rectangle { diff --git a/qmlui/qml/InputChannelDelegate.qml b/qmlui/qml/InputChannelDelegate.qml index 9068c6c6ce..8096308790 100644 --- a/qmlui/qml/InputChannelDelegate.qml +++ b/qmlui/qml/InputChannelDelegate.qml @@ -21,7 +21,6 @@ import QtQuick 2.0 import QtQuick.Layouts 1.0 import org.qlcplus.classes 1.0 -import "." Rectangle { diff --git a/qmlui/qml/KeyPad.qml b/qmlui/qml/KeyPad.qml index 49bfdc6ba7..f863199a41 100644 --- a/qmlui/qml/KeyPad.qml +++ b/qmlui/qml/KeyPad.qml @@ -20,7 +20,6 @@ import QtQuick 2.0 import QtQuick.Layouts 1.1 -import "." Rectangle { diff --git a/qmlui/qml/KeyboardSequenceDelegate.qml b/qmlui/qml/KeyboardSequenceDelegate.qml index 6f61848ef5..2f25c0b997 100644 --- a/qmlui/qml/KeyboardSequenceDelegate.qml +++ b/qmlui/qml/KeyboardSequenceDelegate.qml @@ -21,7 +21,6 @@ import QtQuick 2.0 import QtQuick.Layouts 1.1 import org.qlcplus.classes 1.0 -import "." Column { diff --git a/qmlui/qml/MainView.qml b/qmlui/qml/MainView.qml index 58ef1fc426..e1650cfec6 100644 --- a/qmlui/qml/MainView.qml +++ b/qmlui/qml/MainView.qml @@ -22,7 +22,6 @@ import QtQuick.Layouts 1.1 import QtQuick.Controls 2.1 import org.qlcplus.classes 1.0 -import "." Rectangle { diff --git a/qmlui/qml/MenuBarEntry.qml b/qmlui/qml/MenuBarEntry.qml index 4702143d50..f34cb7f93a 100644 --- a/qmlui/qml/MenuBarEntry.qml +++ b/qmlui/qml/MenuBarEntry.qml @@ -20,7 +20,6 @@ import QtQuick 2.2 import QtQuick.Controls 2.1 -import "." Button { diff --git a/qmlui/qml/MultiColorBox.qml b/qmlui/qml/MultiColorBox.qml index 97174d4c1b..ade7a76aaf 100644 --- a/qmlui/qml/MultiColorBox.qml +++ b/qmlui/qml/MultiColorBox.qml @@ -19,7 +19,6 @@ import QtQuick 2.0 -import "." Rectangle { diff --git a/qmlui/qml/PaletteFanningBox.qml b/qmlui/qml/PaletteFanningBox.qml index 393b82fe63..406e035eed 100644 --- a/qmlui/qml/PaletteFanningBox.qml +++ b/qmlui/qml/PaletteFanningBox.qml @@ -22,7 +22,6 @@ import QtQuick.Controls 2.0 import QtQuick.Layouts 1.1 import org.qlcplus.classes 1.0 -import "." Item { diff --git a/qmlui/qml/QLCPlusFader.qml b/qmlui/qml/QLCPlusFader.qml index 511336566a..1bb3c385a8 100644 --- a/qmlui/qml/QLCPlusFader.qml +++ b/qmlui/qml/QLCPlusFader.qml @@ -20,7 +20,6 @@ import QtQuick 2.0 import QtQuick.Controls 2.2 -import "." Slider { diff --git a/qmlui/qml/QLCPlusKnob.qml b/qmlui/qml/QLCPlusKnob.qml index f9b1de0c46..757da64b80 100644 --- a/qmlui/qml/QLCPlusKnob.qml +++ b/qmlui/qml/QLCPlusKnob.qml @@ -21,7 +21,6 @@ import QtQuick 2.0 import QtQuick.Controls 2.0 import "CanvasDrawFunctions.js" as DrawFuncs -import "." Dial { diff --git a/qmlui/qml/RobotoText.qml b/qmlui/qml/RobotoText.qml index a5dd4a1b6a..8bc44625c1 100644 --- a/qmlui/qml/RobotoText.qml +++ b/qmlui/qml/RobotoText.qml @@ -18,7 +18,6 @@ */ import QtQuick 2.0 -import "." Rectangle { diff --git a/qmlui/qml/SectionBox.qml b/qmlui/qml/SectionBox.qml index c9dc4a4347..c2d478c9cb 100644 --- a/qmlui/qml/SectionBox.qml +++ b/qmlui/qml/SectionBox.qml @@ -18,7 +18,6 @@ */ import QtQuick 2.0 -import "." Rectangle { diff --git a/qmlui/qml/SidePanel.qml b/qmlui/qml/SidePanel.qml index 84df2897c0..e2238035f1 100644 --- a/qmlui/qml/SidePanel.qml +++ b/qmlui/qml/SidePanel.qml @@ -19,7 +19,6 @@ import QtQuick 2.14 -import "." Rectangle { diff --git a/qmlui/qml/SimpleDesk.qml b/qmlui/qml/SimpleDesk.qml index a9570025a8..ec39900e16 100644 --- a/qmlui/qml/SimpleDesk.qml +++ b/qmlui/qml/SimpleDesk.qml @@ -22,7 +22,6 @@ import QtQuick.Layouts 1.12 import QtQuick.Controls 2.13 import org.qlcplus.classes 1.0 -import "." Rectangle { @@ -39,7 +38,9 @@ Rectangle id: channelToolLoader z: 2 - onValueChanged: simpleDesk.setValue(fixtureID, channelIndex, value) + onValueChanged: function (fixtureID, channelIndex, value) { + simpleDesk.setValue(fixtureID, channelIndex, value) + } } SplitView @@ -85,7 +86,9 @@ Rectangle padding: 0 model: simpleDesk.universesListModel currValue: simpleDesk.universeFilter - onValueChanged: simpleDesk.universeFilter = value + onValueChanged: function (value) { + simpleDesk.universeFilter = value + } } // universe reset button diff --git a/qmlui/qml/SingleAxisTool.qml b/qmlui/qml/SingleAxisTool.qml index 965492cd8f..815e810343 100644 --- a/qmlui/qml/SingleAxisTool.qml +++ b/qmlui/qml/SingleAxisTool.qml @@ -21,7 +21,6 @@ import QtQuick 2.0 import QtQuick.Layouts 1.0 import org.qlcplus.classes 1.0 -import "." Rectangle { diff --git a/qmlui/qml/TimeEditTool.qml b/qmlui/qml/TimeEditTool.qml index 748996ac06..d67f450e57 100644 --- a/qmlui/qml/TimeEditTool.qml +++ b/qmlui/qml/TimeEditTool.qml @@ -23,7 +23,6 @@ import QtQuick.Layouts 1.0 import org.qlcplus.classes 1.0 import "TimeUtils.js" as TimeUtils -import "." GridLayout { diff --git a/qmlui/qml/TreeNodeDelegate.qml b/qmlui/qml/TreeNodeDelegate.qml index f421b52760..a7a102a3e4 100644 --- a/qmlui/qml/TreeNodeDelegate.qml +++ b/qmlui/qml/TreeNodeDelegate.qml @@ -20,7 +20,6 @@ import QtQuick 2.2 import org.qlcplus.classes 1.0 -import "." Column { @@ -125,10 +124,11 @@ Column drag.target: dragItem - onPressed: nodeContainer.mouseEvent(App.Pressed, cRef ? cRef.id : -1, nodeContainer.itemType, - nodeContainer, mouse.modifiers) - onClicked: - { + onPressed: function (mouse) { + nodeContainer.mouseEvent(App.Pressed, cRef ? cRef.id : -1, nodeContainer.itemType, + nodeContainer, mouse.modifiers) + } + onClicked: function (mouse) { nodeLabel.forceActiveFocus() nodeContainer.mouseEvent(App.Clicked, cRef ? cRef.id : -1, nodeContainer.itemType, nodeContainer, mouse.modifiers) diff --git a/qmlui/qml/UISettingsEditor.qml b/qmlui/qml/UISettingsEditor.qml index 664a6b9595..6aa1ee171d 100644 --- a/qmlui/qml/UISettingsEditor.qml +++ b/qmlui/qml/UISettingsEditor.qml @@ -22,7 +22,6 @@ import QtQuick.Layouts 1.1 import QtQuick.Controls 2.2 import org.qlcplus.classes 1.0 -import "." Rectangle { diff --git a/qmlui/qml/UsageList.qml b/qmlui/qml/UsageList.qml index b4656e4e48..24a189f2fa 100644 --- a/qmlui/qml/UsageList.qml +++ b/qmlui/qml/UsageList.qml @@ -21,7 +21,6 @@ import QtQuick 2.0 import QtQuick.Layouts 1.1 import org.qlcplus.classes 1.0 -import "." Rectangle { diff --git a/qmlui/qml/WidgetDelegate.qml b/qmlui/qml/WidgetDelegate.qml index f48be6b834..5cb5695719 100644 --- a/qmlui/qml/WidgetDelegate.qml +++ b/qmlui/qml/WidgetDelegate.qml @@ -20,7 +20,6 @@ import QtQuick 2.0 import org.qlcplus.classes 1.0 -import "." Rectangle { diff --git a/qmlui/qml/WindowLoader.qml b/qmlui/qml/WindowLoader.qml index 630df62b69..b5ff250ccf 100644 --- a/qmlui/qml/WindowLoader.qml +++ b/qmlui/qml/WindowLoader.qml @@ -19,7 +19,6 @@ import QtQuick 2.1 -import "." /** This is a wrapper item to achieve 3 things: * 1) load a detached context on a surface with the application background diff --git a/qmlui/qml/ZoomItem.qml b/qmlui/qml/ZoomItem.qml index 20e5eaa82b..f2860e9ca2 100644 --- a/qmlui/qml/ZoomItem.qml +++ b/qmlui/qml/ZoomItem.qml @@ -19,7 +19,6 @@ import QtQuick 2.0 -import "." Rectangle { diff --git a/qmlui/qml/fixtureeditor/ChannelEditor.qml b/qmlui/qml/fixtureeditor/ChannelEditor.qml index e338fe0e7d..ee6be85514 100644 --- a/qmlui/qml/fixtureeditor/ChannelEditor.qml +++ b/qmlui/qml/fixtureeditor/ChannelEditor.qml @@ -20,10 +20,9 @@ import QtQuick 2.14 import QtQuick.Layouts 1.14 import QtQuick.Controls 2.14 -import QtQuick.Dialogs 1.3 +import QtQuick.Dialogs import org.qlcplus.classes 1.0 -import "." GridLayout { diff --git a/qmlui/qml/fixtureeditor/EditorView.qml b/qmlui/qml/fixtureeditor/EditorView.qml index 12eb525884..b26fe6b5c5 100644 --- a/qmlui/qml/fixtureeditor/EditorView.qml +++ b/qmlui/qml/fixtureeditor/EditorView.qml @@ -22,7 +22,6 @@ import QtQuick.Layouts 1.12 import QtQuick.Controls 2.13 import org.qlcplus.classes 1.0 -import "." Rectangle { diff --git a/qmlui/qml/fixtureeditor/FixtureEditor.qml b/qmlui/qml/fixtureeditor/FixtureEditor.qml index 62303a12b0..d3c53cef6f 100644 --- a/qmlui/qml/fixtureeditor/FixtureEditor.qml +++ b/qmlui/qml/fixtureeditor/FixtureEditor.qml @@ -20,9 +20,8 @@ import QtQuick 2.2 import QtQuick.Layouts 1.1 import QtQuick.Controls 2.1 -import QtQuick.Dialogs 1.3 +import QtQuick.Dialogs import org.qlcplus.classes 1.0 -import "." Rectangle { diff --git a/qmlui/qml/fixtureeditor/ModeEditor.qml b/qmlui/qml/fixtureeditor/ModeEditor.qml index d3e05b8e1d..2d6673e86c 100644 --- a/qmlui/qml/fixtureeditor/ModeEditor.qml +++ b/qmlui/qml/fixtureeditor/ModeEditor.qml @@ -22,7 +22,6 @@ import QtQuick.Layouts 1.14 import QtQuick.Controls 2.14 import org.qlcplus.classes 1.0 -import "." Rectangle { diff --git a/qmlui/qml/fixtureeditor/PhysicalProperties.qml b/qmlui/qml/fixtureeditor/PhysicalProperties.qml index f7e6f5bfbd..4080a2176a 100644 --- a/qmlui/qml/fixtureeditor/PhysicalProperties.qml +++ b/qmlui/qml/fixtureeditor/PhysicalProperties.qml @@ -22,7 +22,6 @@ import QtQuick.Layouts 1.1 import QtQuick.Controls 2.4 import org.qlcplus.classes 1.0 -import "." GridLayout { diff --git a/qmlui/qml/fixturesfunctions/+qt5/RightPanel.qml b/qmlui/qml/fixturesfunctions/+qt5/RightPanel.qml new file mode 100644 index 0000000000..a4f4bfde88 --- /dev/null +++ b/qmlui/qml/fixturesfunctions/+qt5/RightPanel.qml @@ -0,0 +1,474 @@ +/* + Q Light Controller Plus + RightPanel.qml + + Copyright (c) Massimo Callegari + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0.txt + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +import QtQuick 2.0 +import QtQuick.Layouts 1.0 +import QtQuick.Dialogs 1.1 + +import org.qlcplus.classes 1.0 + +SidePanel +{ + id: rightSidePanel + objectName: "funcRightPanel" + + property int selectedItemsCount: functionManager.selectedFunctionCount + functionManager.selectedFolderCount + + function createFunctionAndEditor(fType) + { + var i + // reset the currently loaded item first + loaderSource = "" + + console.log("Requested to create function type " + fType) + + if (fType === QLCFunction.AudioType) + { + var extList = functionManager.audioExtensions + var exts = qsTr("Audio files") + " (" + for (i = 0; i < extList.length; i++) + exts += extList[i] + " " + exts += ")" + + openFileDialog.fType = fType + openFileDialog.nameFilters = [ exts, qsTr("All files") + " (*)" ] + openFileDialog.open() + return + } + else if (fType === QLCFunction.VideoType) + { + var videoExtList = functionManager.videoExtensions + var picExtList = functionManager.pictureExtensions + var vexts = qsTr("Video files") + " (" + for (i = 0; i < videoExtList.length; i++) + vexts += videoExtList[i] + " " + vexts += ")" + var pexts = qsTr("Picture files") + " (" + for (i = 0; i < picExtList.length; i++) + pexts += picExtList[i] + " " + pexts += ")" + + openFileDialog.fType = fType + openFileDialog.nameFilters = [ vexts, pexts, qsTr("All files") + " (*)" ] + openFileDialog.open() + return + } + + var newFuncID = functionManager.createFunction(fType, contextManager.selectedFixtureIDVariantList()) + var fEditor = functionManager.getEditorResource(newFuncID) + functionManager.setEditorFunction(newFuncID, false, false) + + if (fType === QLCFunction.ShowType) + { + showManager.currentShowID = newFuncID + mainView.switchToContext("SHOWMGR", fEditor) + } + else + { + itemID = newFuncID + loaderSource = fEditor + animatePanel(true) + addFunction.checked = false + funcEditor.checked = true + } + } + + function requestEditor(funcID, funcType) + { + if (!(qlcplus.accessMask & App.AC_FunctionEditing)) + return + + // reset the currently loaded item first + loaderSource = "" + itemID = funcID + loaderSource = functionManager.getEditorResource(funcID) + animatePanel(true) + } + + onContentLoaded: + { + if (item.hasOwnProperty("functionID")) + item.functionID = itemID + } + + FileDialog + { + id: openFileDialog + visible: false + selectMultiple: true + + property int fType + + onAccepted: + { + + var strArray = [] + for (var i = 0; i < fileUrls.length; i++) + strArray.push("" + fileUrls[i]) + + console.log("File list: " + strArray) + + if (strArray.length === 1) + { + itemID = functionManager.createAudioVideoFunction(fType, strArray) + functionManager.setEditorFunction(itemID, false, false) + loaderSource = functionManager.getEditorResource(itemID) + } + else + { + functionManager.createAudioVideoFunction(fType, strArray) + loaderSource = "qrc:/FunctionManager.qml" + } + + animatePanel(true) + addFunction.checked = false + funcEditor.checked = true + } + } + + Rectangle + { + width: collapseWidth + height: parent.height + color: "transparent" + z: 2 + + ColumnLayout + { + anchors.horizontalCenter: parent.horizontalCenter + height: parent.height + width: iconSize + spacing: 3 + + IconButton + { + id: funcEditor + z: 2 + width: iconSize + height: iconSize + imgSource: "qrc:/functions.svg" + tooltip: qsTr("Function Manager") + checkable: true + onToggled: + { + if (checked) + loaderSource = "qrc:/FunctionManager.qml" + else + { + functionManager.selectFunctionID(-1, false) + functionManager.setEditorFunction(-1, false, false) + } + animatePanel(checked) + } + } + IconButton + { + id: addFunction + visible: qlcplus.accessMask & App.AC_FunctionEditing + z: 2 + width: iconSize + height: iconSize + imgSource: "qrc:/add.svg" + tooltip: qsTr("Add a new function") + checkable: true + + AddFunctionMenu + { + id: addFunctionMenu + visible: addFunction.checked + x: -width + + onEntryClicked: + { + close() + createFunctionAndEditor(fType) + } + onClosed: addFunction.checked = false + } + } + IconButton + { + id: removeFunction + z: 2 + width: iconSize + height: iconSize + imgSource: "qrc:/remove.svg" + tooltip: qsTr("Delete the selected functions") + counter: selectedItemsCount && !functionManager.isEditing + onClicked: + { + var selNames = functionManager.selectedItemNames() + //console.log(selNames) + deleteItemsPopup.message = qsTr("Are you sure you want to delete the following items?") + "\n" + selNames + deleteItemsPopup.open() + } + + CustomPopupDialog + { + id: deleteItemsPopup + title: qsTr("Delete items") + onAccepted: + { + functionManager.deleteSelectedFolders() + functionManager.deleteFunctions(functionManager.selectedFunctionsID()) + } + } + } + IconButton + { + id: renameFunction + z: 2 + width: iconSize + height: iconSize + imgSource: "qrc:/rename.svg" + tooltip: qsTr("Rename the selected items") + counter: selectedItemsCount && !functionManager.isEditing + onClicked: + { + var selNames = functionManager.selectedItemNames() + if (selNames.length === 0) + return + if (selNames.length > 1) + renameFuncPopup.showNumbering = true + renameFuncPopup.editText = selNames[0] + renameFuncPopup.open() + } + + PopupRenameItems + { + id: renameFuncPopup + title: qsTr("Rename items") + onAccepted: + { + functionManager.renameSelectedItems(editText, numberingEnabled, startNumber, digits) + } + } + } + IconButton + { + id: cloneFunction + z: 2 + width: iconSize + height: iconSize + imgSource: "qrc:/edit-copy.svg" + tooltip: qsTr("Clone the selected functions") + counter: functionManager.selectedFunctionCount && !functionManager.isEditing + onClicked: functionManager.cloneFunctions() + } + + IconButton + { + z: 2 + width: iconSize + height: iconSize + faSource: FontAwesome.fa_sitemap + faColor: UISettings.fgMedium + tooltip: qsTr("Show function usage") + counter: functionManager.selectedFunctionCount + onClicked: + { + var idList = functionManager.selectedFunctionsID() + loaderSource = "" + itemID = idList[0] + loaderSource = "qrc:/UsageList.qml" + } + } + IconButton + { + z: 2 + width: iconSize + height: iconSize + imgSource: "qrc:/autostart.svg" + tooltip: qsTr("Set/Unset autostart function") + counter: functionManager.selectedFunctionCount + onClicked: + { + var idList = functionManager.selectedFunctionsID() + if (idList.length === 0) + return + functionManager.startupFunctionID = idList[0] + } + } + + IconButton + { + id: sceneDump + z: 2 + width: iconSize + height: iconSize + imgSource: "qrc:/dmxdump.svg" + tooltip: qsTr("Dump on a new Scene") + counter: contextManager ? contextManager.dumpValuesCount && (qlcplus.accessMask & App.AC_FunctionEditing) : 0 + + onClicked: + { + if (dmxDumpDialog.show) + { + dmxDumpDialog.sceneID = -1 + dmxDumpDialog.open() + dmxDumpDialog.focusEditItem() + } + else + { + contextManager.dumpDmxChannels("") + loaderSource = "qrc:/FunctionManager.qml" + animatePanel(true) + funcEditor.checked = true + } + } + + Rectangle + { + x: -3 + y: -3 + width: sceneDump.width * 0.4 + height: width + color: "red" + border.width: 1 + border.color: UISettings.fgMain + radius: 3 + clip: true + + RobotoText + { + anchors.centerIn: parent + height: parent.height * 0.7 + label: contextManager ? contextManager.dumpValuesCount : "" + fontSize: height + } + } + + MouseArea + { + id: dumpDragArea + anchors.fill: parent + propagateComposedEvents: true + drag.target: dumpDragItem + drag.threshold: 10 + onClicked: mouse.accepted = false + + property bool dragActive: drag.active + + onDragActiveChanged: + { + console.log("Drag active changed: " + dragActive) + if (dragActive == false) + { + dumpDragItem.Drag.drop() + dumpDragItem.parent = sceneDump + dumpDragItem.x = 0 + dumpDragItem.y = 0 + } + else + { + dumpDragItem.parent = mainView + } + + dumpDragItem.Drag.active = dragActive + } + } + + Item + { + id: dumpDragItem + z: 99 + visible: dumpDragArea.drag.active + + Drag.source: dumpDragItem + Drag.keys: [ "dumpValues" ] + + function itemDropped(id, name) + { + console.log("Dump values dropped on " + id) + dmxDumpDialog.sceneID = id + dmxDumpDialog.sceneName = name + dmxDumpDialog.open() + dmxDumpDialog.focusEditItem() + } + + Rectangle + { + width: UISettings.iconSizeMedium + height: width + radius: width / 4 + color: "red" + + RobotoText + { + anchors.centerIn: parent + label: contextManager ? contextManager.dumpValuesCount : "" + } + } + } + + PopupDMXDump + { + id: dmxDumpDialog + implicitWidth: Math.min(UISettings.bigItemHeight * 4, mainView.width / 3) + channelsMask: contextManager ? contextManager.dumpChannelMask : 0 + + property int sceneID: -1 + + onAccepted: + { + if (sceneID == -1) + contextManager.dumpDmxChannels(sceneName, getChannelsMask()) + else + contextManager.dumpDmxChannels(sceneID, getChannelsMask()) + loaderSource = "qrc:/FunctionManager.qml" + animatePanel(true) + funcEditor.checked = true + } + } + } + + IconButton + { + z: 2 + width: iconSize + height: iconSize + imgSource: "qrc:/play.svg" + tooltip: qsTr("Function Preview") + checkable: true + checked: functionManager.previewEnabled + counter: functionManager.selectedFunctionCount + onToggled: functionManager.previewEnabled = checked + } + + /* filler object */ + Rectangle + { + Layout.fillHeight: true + width: iconSize + color: "transparent" + } + + IconButton + { + z: 2 + width: iconSize + height: iconSize + faSource: FontAwesome.fa_times + tooltip: qsTr("Reset dump channels") + " (CTRL+R)" + onClicked: contextManager.resetDumpValues() + } + } + } +} + diff --git a/qmlui/qml/fixturesfunctions/+qt5/SettingsView2D.qml b/qmlui/qml/fixturesfunctions/+qt5/SettingsView2D.qml new file mode 100644 index 0000000000..f2379bd6df --- /dev/null +++ b/qmlui/qml/fixturesfunctions/+qt5/SettingsView2D.qml @@ -0,0 +1,391 @@ +/* + Q Light Controller Plus + SettingsView2D.qml + + Copyright (c) Massimo Callegari + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0.txt + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +import QtQuick 2.0 +import QtQuick.Layouts 1.1 +import QtQuick.Dialogs 1.3 + +import org.qlcplus.classes 1.0 + +Rectangle +{ + id: settingsRoot + width: mainView.width / 5 + height: parent.height + + color: UISettings.bgMedium + border.width: 1 + border.color: "#222" + + property vector3d envSize: contextManager ? contextManager.environmentSize : Qt.vector3d(0, 0, 0) + property int selFixturesCount: contextManager ? contextManager.selectedFixturesCount : 0 + property bool fxPropsVisible: selFixturesCount ? true : false + property vector3d fxRotation: selFixturesCount === 1 ? contextManager.fixturesRotation : lastRotation + property vector3d lastRotation + + onSelFixturesCountChanged: + { + if (selFixturesCount > 1) + lastRotation = Qt.vector3d(0, 0, 0) + } + + function updateRotation(degrees) + { + if (visible == false) + return; + + var rot + switch (View2D.pointOfView) + { + case MonitorProperties.LeftSideView: + case MonitorProperties.RightSideView: + rot = Qt.vector3d(degrees, fxRotation.y, fxRotation.z) + break; + case MonitorProperties.FrontView: + rot = Qt.vector3d(fxRotation.x, fxRotation.y, degrees) + break; + default: + rot = Qt.vector3d(fxRotation.x, degrees, fxRotation.z) + break; + } + + if (selFixturesCount == 1) + { + contextManager.fixturesRotation = Qt.vector3d(rot.x, rot.y, rot.z) + } + else + { + contextManager.fixturesRotation = Qt.vector3d(rot.x - lastRotation.x, rot.y - lastRotation.y, rot.z - lastRotation.z) + lastRotation = Qt.vector3d(rot.x, rot.y, rot.z) + } + } + + ColorTool + { + id: gelColorTool + parent: mainView + x: rightPanel.x - settingsRoot.width - width + y: UISettings.bigItemHeight + visible: false + + onColorChanged: contextManager.setFixturesGelColor(Qt.rgba(r, g, b, 1.0)) + onClose: visible = false + } + + Column + { + id: settingsColumn + width: parent.width + spacing: 2 + + SectionBox + { + width: parent.width + sectionLabel: qsTr("Environment") + sectionContents: + GridLayout + { + width: settingsRoot.width + columns: 2 + columnSpacing: 5 + rowSpacing: 5 + + // row 1 + RobotoText { height: UISettings.listItemHeight; label: qsTr("Width") } + CustomSpinBox + { + height: UISettings.listItemHeight + Layout.fillWidth: true + from: 1 + to: 50 + suffix: View2D.gridUnits === MonitorProperties.Meters ? "m" : "ft" + value: envSize.x + onValueModified: + { + if (settingsRoot.visible && contextManager) + contextManager.environmentSize = Qt.vector3d(value, envSize.y, envSize.z) + } + } + + // row 2 + RobotoText { height: UISettings.listItemHeight; label: qsTr("Height") } + CustomSpinBox + { + height: UISettings.listItemHeight + Layout.fillWidth: true + from: 1 + to: 50 + suffix: View2D.gridUnits === MonitorProperties.Meters ? "m" : "ft" + value: envSize.y + onValueModified: + { + if (settingsRoot.visible && contextManager) + contextManager.environmentSize = Qt.vector3d(envSize.x, value, envSize.z) + } + } + + // row 3 + RobotoText { height: UISettings.listItemHeight; label: qsTr("Depth") } + CustomSpinBox + { + height: UISettings.listItemHeight + Layout.fillWidth: true + from: 1 + to: 100 + suffix: View2D.gridUnits === MonitorProperties.Meters ? "m" : "ft" + value: envSize.z + onValueModified: + { + if (settingsRoot.visible && contextManager) + contextManager.environmentSize = Qt.vector3d(envSize.x, envSize.y, value) + } + } + + // row 4 + RobotoText { height: UISettings.listItemHeight; label: qsTr("Grid units") } + CustomComboBox + { + ListModel + { + id: unitsModel + ListElement { mLabel: qsTr("Meters"); mValue: MonitorProperties.Meters } + ListElement { mLabel: qsTr("Feet"); mValue: MonitorProperties.Feet } + } + + Layout.fillWidth: true + height: UISettings.listItemHeight + model: unitsModel + currentIndex: View2D.gridUnits + onCurrentIndexChanged: + { + if (settingsRoot.visible && View2D) + View2D.gridUnits = currentIndex + } + } + + // row 5 + RobotoText { height: UISettings.listItemHeight; label: qsTr("Point of view") } + CustomComboBox + { + ListModel + { + id: povModel + ListElement { mLabel: qsTr("Top view"); mValue: MonitorProperties.TopView } + ListElement { mLabel: qsTr("Front view"); mValue: MonitorProperties.FrontView } + ListElement { mLabel: qsTr("Right side view"); mValue: MonitorProperties.RightSideView } + ListElement { mLabel: qsTr("Left side view"); mValue: MonitorProperties.LeftSideView } + } + + Layout.fillWidth: true + height: UISettings.listItemHeight + model: povModel + currentIndex: View2D.pointOfView - 1 + onCurrentIndexChanged: + { + if (settingsRoot.visible && View2D) + View2D.pointOfView = currentIndex + 1 + } + } + } // GridLayout + } // SectionBox + + SectionBox + { + width: parent.width + sectionLabel: qsTr("Custom Background") + sectionContents: + GridLayout + { + IconButton + { + id: imgButton + width: UISettings.iconSizeMedium + height: width + imgSource: "qrc:/background.svg" + + onClicked: fileDialog.open() + + FileDialog + { + id: fileDialog + visible: false + title: qsTr("Select an image") + nameFilters: [ "Image files (*.png *.bmp *.jpg *.jpeg *.gif *.svg)", "All files (*)" ] + + onAccepted: + { + View2D.backgroundImage = fileDialog.fileUrl + } + } + } + + CustomTextEdit + { + Layout.fillWidth: true + height: UISettings.iconSizeMedium + text: View2D.backgroundImage + } + + IconButton + { + z: 2 + width: UISettings.iconSizeMedium + height: width + faSource: FontAwesome.fa_times + tooltip: qsTr("Reset background") + onClicked: View2D.backgroundImage = "" + } + } + } + + SectionBox + { + visible: fxPropsVisible + width: parent.width + isExpanded: fxPropsVisible + sectionLabel: qsTr("Selected fixtures") + + sectionContents: + GridLayout + { + width: parent.width + columns: 2 + columnSpacing: 5 + rowSpacing: 2 + + // row 1 + RobotoText + { + height: UISettings.listItemHeight + label: qsTr("Gel color") + } + Rectangle + { + Layout.fillWidth: true + height: UISettings.listItemHeight + color: gelColorTool.currentRGB + + MouseArea + { + anchors.fill: parent + onClicked: gelColorTool.visible = !gelColorTool.visible + } + } + + // row 2 + RobotoText + { + height: UISettings.listItemHeight + label: qsTr("Rotation") + } + CustomSpinBox + { + id: fxRotSpin + Layout.fillWidth: true + height: UISettings.listItemHeight + from: -359 + to: 359 + suffix: "°" + value: + { + switch (View2D.pointOfView) + { + case MonitorProperties.LeftSideView: + case MonitorProperties.RightSideView: + return fxRotation.x + + case MonitorProperties.FrontView: + return fxRotation.z + + default: + return fxRotation.y + } + } + onValueModified: updateRotation(value) + } + + // row 3 + RobotoText + { + height: UISettings.listItemHeight; + label: qsTr("Alignment") + } + + Row + { + Layout.fillWidth: true + + IconButton + { + id: alignLeftBtn + width: UISettings.iconSizeDefault + height: width + bgColor: UISettings.bgLighter + imgSource: "qrc:/align-left.svg" + tooltip: qsTr("Align the selected items to the left") + onClicked: contextManager.setFixturesAlignment(Qt.AlignLeft) + } + IconButton + { + id: alignTopBtn + width: UISettings.iconSizeDefault + height: width + bgColor: UISettings.bgLighter + imgSource: "qrc:/align-top.svg" + tooltip: qsTr("Align the selected items to the top") + onClicked: contextManager.setFixturesAlignment(Qt.AlignTop) + } + } + + // row 3 + RobotoText + { + height: UISettings.listItemHeight; + label: qsTr("Distribution") + } + + Row + { + Layout.fillWidth: true + + IconButton + { + id: distributeXBtn + width: UISettings.iconSizeDefault + height: width + bgColor: UISettings.bgLighter + imgSource: "qrc:/distribute-x.svg" + tooltip: qsTr("Equally distribute horizontally the selected items") + onClicked: contextManager.setFixturesDistribution(Qt.Horizontal) + } + IconButton + { + id: distributeYBtn + width: UISettings.iconSizeDefault + height: width + bgColor: UISettings.bgLighter + imgSource: "qrc:/distribute-y.svg" + tooltip: qsTr("Equally distribute vertically the selected items") + onClicked: contextManager.setFixturesDistribution(Qt.Vertical) + } + } + } // GridLayout + } // SectionBox + } // Column +} diff --git a/qmlui/qml/fixturesfunctions/2DView.qml b/qmlui/qml/fixturesfunctions/2DView.qml index 491c91ae81..3716fb46a9 100644 --- a/qmlui/qml/fixturesfunctions/2DView.qml +++ b/qmlui/qml/fixturesfunctions/2DView.qml @@ -21,7 +21,6 @@ import QtQuick 2.3 import QtQuick.Controls 2.1 import org.qlcplus.classes 1.0 -import "." Rectangle { @@ -222,8 +221,7 @@ Rectangle property int initialXPos property int initialYPos - onPressed: - { + onPressed: function (mouse) { console.log("button: " + mouse.button + ", mods: " + mouse.modifiers) var itemID = View2D.itemIDAtPos(Qt.point(mouse.x, mouse.y)) @@ -256,8 +254,7 @@ Rectangle } } - onPositionChanged: - { + onPositionChanged: function (mouse) { if (selectionRect.visible == true) { if (mouse.x !== initialXPos || mouse.y !== initialYPos) @@ -294,8 +291,7 @@ Rectangle } } - onReleased: - { + onReleased: function (mouse) { if (selectionRect.visible === true && selectionRect.width && selectionRect.height) { var rx = selectionRect.x @@ -317,8 +313,7 @@ Rectangle } } - onWheel: - { + onWheel: function (wheel) { //console.log("Wheel delta: " + wheel.angleDelta.y) if (wheel.angleDelta.y > 0) setZoom(0.5) @@ -353,8 +348,7 @@ Rectangle drag.threshold: 10 drag.target: parent - onReleased: - { + onReleased: function (mouse) { if (drag.active) { var units = View2D.gridUnits === MonitorProperties.Meters ? 1000.0 : 304.8 diff --git a/qmlui/qml/fixturesfunctions/3DView/+qt5/SettingsView3D.qml b/qmlui/qml/fixturesfunctions/3DView/+qt5/SettingsView3D.qml new file mode 100644 index 0000000000..a446d6bffb --- /dev/null +++ b/qmlui/qml/fixturesfunctions/3DView/+qt5/SettingsView3D.qml @@ -0,0 +1,732 @@ +/* + Q Light Controller Plus + SettingsView3D.qml + + Copyright (c) Massimo Callegari + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0.txt + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +import QtQuick 2.0 +import QtQuick.Layouts 1.1 +import QtQuick.Dialogs 1.3 +import QtQuick.Controls 2.1 + +import org.qlcplus.classes 1.0 + +Rectangle +{ + id: settingsRoot + width: mainView.width / 5 + height: parent.height + + color: UISettings.bgMedium + border.width: 1 + border.color: "#222" + + property vector3d envSize: contextManager ? contextManager.environmentSize : Qt.vector3d(0, 0, 0) + + property int selFixturesCount: contextManager ? contextManager.selectedFixturesCount : 0 + property int selGenericCount: View3D.genericSelectedCount + property bool fxPropsVisible: selFixturesCount + selGenericCount ? true : false + property vector3d currentPosition + property vector3d currentRotation + property vector3d currentScale + property vector3d lastPosition + property vector3d lastRotation + property vector3d lastScale + property bool isUpdating: false + + onSelFixturesCountChanged: + { + isUpdating = true + var pos = contextManager.fixturesPosition + var rot = contextManager.fixturesRotation + if (selFixturesCount + selGenericCount > 1) + { + lastPosition = Qt.vector3d(0, 0, 0) + lastRotation = Qt.vector3d(0, 0, 0) + pos = lastPosition + rot = lastRotation + } + + currentPosition = pos + currentRotation = rot + isUpdating = false + } + + onSelGenericCountChanged: + { + isUpdating = true + var pos = View3D.genericItemsPosition + var rot = View3D.genericItemsRotation + var scl = View3D.genericItemsScale + if (selFixturesCount + selGenericCount > 1) + { + lastPosition = Qt.vector3d(0, 0, 0) + lastRotation = Qt.vector3d(0, 0, 0) + lastScale = Qt.vector3d(100.0, 100.0, 100.0) + pos = lastPosition + rot = lastRotation + scl = lastScale + } + + currentPosition = pos + currentRotation = rot + currentScale = scl + isUpdating = false + } + + onCurrentScaleChanged: console.log("Current scale " + currentScale) + + function refreshPositionValues(generic) + { + isUpdating = true + currentPosition = generic ? View3D.genericItemsPosition : contextManager.fixturesPosition + isUpdating = false + } + + ModelSelector + { + id: giSelector + onItemsCountChanged: { } + } + + Flickable + { + x: 5 + width: settingsRoot.width - 10 + height: parent.height + contentHeight: settingsColumn.height + boundsBehavior: Flickable.StopAtBounds + + Column + { + id: settingsColumn + width: parent.width - (sbar.visible ? sbar.width : 0) + spacing: 2 + + SectionBox + { + width: parent.width + sectionLabel: qsTr("Environment") + sectionContents: + GridLayout + { + width: parent.width + columns: 2 + columnSpacing: 5 + rowSpacing: 2 + + // row 1 + RobotoText { height: UISettings.listItemHeight; label: qsTr("Type") } + CustomComboBox + { + Layout.fillWidth: true + height: UISettings.listItemHeight + + textRole: "" + model: View3D.stagesList + currentIndex: View3D.stageIndex + onCurrentIndexChanged: View3D.stageIndex = currentIndex + } + + // row 2 + RobotoText { height: UISettings.listItemHeight; label: qsTr("Width") } + CustomSpinBox + { + height: UISettings.listItemHeight + Layout.fillWidth: true + from: 1 + to: 50 + suffix: "m" + value: envSize.x + onValueModified: + { + if (settingsRoot.visible && contextManager) + contextManager.environmentSize = Qt.vector3d(value, envSize.y, envSize.z) + } + } + + // row 3 + RobotoText { height: UISettings.listItemHeight; label: qsTr("Height") } + CustomSpinBox + { + height: UISettings.listItemHeight + Layout.fillWidth: true + from: 1 + to: 50 + suffix: "m" + value: envSize.y + onValueModified: + { + if (settingsRoot.visible && contextManager) + contextManager.environmentSize = Qt.vector3d(envSize.x, value, envSize.z) + } + } + + // row 4 + RobotoText { height: UISettings.listItemHeight; label: qsTr("Depth") } + CustomSpinBox + { + height: UISettings.listItemHeight + Layout.fillWidth: true + from: 1 + to: 100 + suffix: "m" + value: envSize.z + onValueModified: + { + if (settingsRoot.visible && contextManager) + contextManager.environmentSize = Qt.vector3d(envSize.x, envSize.y, value) + } + } + } // GridLayout + } // Section box - Environment + + SectionBox + { + width: parent.width + isExpanded: false + sectionLabel: qsTr("Rendering") + sectionContents: + GridLayout + { + width: parent.width + columns: 2 + columnSpacing: 5 + rowSpacing: 2 + + Component.onCompleted: + { + ambIntSpin.value = View3D.ambientIntensity * 100 + smokeSpin.value = View3D.smokeAmount * 100 + } + + // row 1 + RobotoText { height: UISettings.listItemHeight; label: qsTr("Quality") } + CustomComboBox + { + Layout.fillWidth: true + height: UISettings.listItemHeight + + ListModel + { + id: qualityModel + ListElement { mLabel: qsTr("Low"); mValue: MainView3D.LowQuality } + ListElement { mLabel: qsTr("Medium"); mValue: MainView3D.MediumQuality } + ListElement { mLabel: qsTr("High"); mValue: MainView3D.HighQuality } + ListElement { mLabel: qsTr("Ultra"); mValue: MainView3D.UltraQuality } + } + + model: qualityModel + currentIndex: View3D.renderQuality + onCurrentIndexChanged: View3D.renderQuality = currentIndex + } + + // row 2 + RobotoText { height: UISettings.listItemHeight; label: qsTr("Ambient light") } + CustomSpinBox + { + id: ambIntSpin + Layout.fillWidth: true + height: UISettings.listItemHeight + from: 0 + to: 100 + suffix: "%" + onValueModified: View3D.ambientIntensity = value / 100 + } + + // row 3 + RobotoText { height: UISettings.listItemHeight; label: qsTr("Smoke amount") } + CustomSpinBox + { + id: smokeSpin + Layout.fillWidth: true + height: UISettings.listItemHeight + from: 0 + to: 100 + suffix: "%" + onValueModified: View3D.smokeAmount = value / 100 + } + + // row 4 + RobotoText { height: UISettings.listItemHeight; label: qsTr("Show FPS") } + CustomCheckBox + { + implicitHeight: UISettings.listItemHeight + implicitWidth: implicitHeight + onToggled: View3D.frameCountEnabled = checked + } + + } // GridLayout + } // SectionBox - Rendering + + SectionBox + { + width: parent.width + visible: fxPropsVisible + sectionLabel: qsTr("Position") + sectionContents: + GridLayout + { + width: parent.width + columns: 2 + columnSpacing: 5 + rowSpacing: 2 + + function updatePosition(x, y, z) + { + if (isUpdating) + return; + + if (selFixturesCount == 1 && selGenericCount == 0) + { + contextManager.fixturesPosition = Qt.vector3d(x, y, z) + } + else if (selFixturesCount == 0 && selGenericCount == 1) + { + View3D.genericItemsPosition = Qt.vector3d(x, y, z) + } + else + { + var newPos = Qt.vector3d(x - lastPosition.x, y - lastPosition.y, z - lastPosition.z) + contextManager.fixturesPosition = newPos + View3D.genericItemsPosition = newPos + lastPosition = Qt.vector3d(x, y, z) + } + } + + // row 1 + RobotoText + { + height: UISettings.listItemHeight + width: UISettings.bigItemHeight + textHAlign: Qt.AlignRight + label: "X" + } + CustomSpinBox + { + id: xPosSpin + height: UISettings.listItemHeight + Layout.fillWidth: true + from: -100000 + to: 100000 + stepSize: 10 + suffix: "mm" + value: currentPosition.x + onValueModified: updatePosition(value, yPosSpin.value, zPosSpin.value) + } + + // row 2 + RobotoText + { + height: UISettings.listItemHeight + width: UISettings.bigItemHeight + textHAlign: Qt.AlignRight + label: "Y" + } + CustomSpinBox + { + id: yPosSpin + height: UISettings.listItemHeight + Layout.fillWidth: true + from: -100000 + to: 100000 + stepSize: 10 + suffix: "mm" + value: currentPosition.y + onValueModified: updatePosition(xPosSpin.value, value, zPosSpin.value) + } + + // row 3 + RobotoText + { + height: UISettings.listItemHeight + width: UISettings.bigItemHeight + textHAlign: Qt.AlignRight + label: "Z" + } + CustomSpinBox + { + id: zPosSpin + height: UISettings.listItemHeight + Layout.fillWidth: true + from: -100000 + to: 100000 + stepSize: 10 + suffix: "mm" + value: currentPosition.z + onValueModified: updatePosition(xPosSpin.value, yPosSpin.value, value) + } + } // GridLayout + } // SectionBox - Position + + SectionBox + { + width: parent.width + isExpanded: false + visible: fxPropsVisible + sectionLabel: qsTr("Rotation") + sectionContents: + GridLayout + { + width: parent.width + columns: 2 + columnSpacing: 5 + rowSpacing: 2 + + function updateRotation(x, y, z) + { + if (isUpdating) + return; + + if (selFixturesCount == 1 && selGenericCount == 0) + { + contextManager.fixturesRotation = Qt.vector3d(x, y, z) + } + else if (selFixturesCount == 0 && selGenericCount == 1) + { + View3D.genericItemsRotation = Qt.vector3d(x, y, z) + } + else + { + var newRot = Qt.vector3d(x - lastRotation.x, y - lastRotation.y, z - lastRotation.z) + contextManager.fixturesRotation = newRot + View3D.genericItemsRotation = newRot + lastRotation = Qt.vector3d(x, y, z) + } + } + + // row 1 + RobotoText + { + height: UISettings.listItemHeight + width: UISettings.bigItemHeight + textHAlign: Qt.AlignRight + label: "X" + } + CustomSpinBox + { + id: xRotSpin + height: UISettings.listItemHeight + Layout.fillWidth: true + from: -359 + to: 359 + suffix: "°" + value: currentRotation.x + onValueModified: updateRotation(value, yRotSpin.value, zRotSpin.value) + } + + // row 2 + RobotoText + { + height: UISettings.listItemHeight + width: UISettings.bigItemHeight + textHAlign: Qt.AlignRight + label: "Y" + } + CustomSpinBox + { + id: yRotSpin + height: UISettings.listItemHeight + Layout.fillWidth: true + from: -359 + to: 359 + suffix: "°" + value: currentRotation.y + onValueModified: updateRotation(xRotSpin.value, value, zRotSpin.value) + } + + // row 3 + RobotoText + { + height: UISettings.listItemHeight + width: UISettings.bigItemHeight + textHAlign: Qt.AlignRight + label: "Z" + } + CustomSpinBox + { + id: zRotSpin + height: UISettings.listItemHeight + Layout.fillWidth: true + from: -359 + to: 359 + suffix: "°" + value: currentRotation.z + onValueModified: updateRotation(xRotSpin.value, yRotSpin.value, value) + } + } // GridLayout + } // SectionBox - Rotation + + SectionBox + { + width: parent.width + isExpanded: false + visible: selGenericCount ? true : false + sectionLabel: qsTr("Scale") + sectionContents: + GridLayout + { + width: parent.width + columns: 3 + columnSpacing: 5 + rowSpacing: 2 + + function updateScale(x, y, z) + { + if (isUpdating) + return; + + if (selGenericCount == 1) + { + View3D.genericItemsScale = Qt.vector3d(x, y, z) + } + else + { + var newScale = Qt.vector3d(x - lastScale.x, y - lastScale.y, z - lastScale.z) + View3D.genericItemsScale = newScale + lastScale = Qt.vector3d(x, y, z) + } + if (scaleLocked.checked) + currentScale = Qt.vector3d(x, x, x) + } + + // row 1 + RobotoText + { + height: UISettings.listItemHeight + width: UISettings.bigItemHeight + textHAlign: Qt.AlignRight + label: "X" + } + CustomSpinBox + { + id: xScaleSpin + height: UISettings.listItemHeight + Layout.fillWidth: true + from: 1 + to: 1000 + suffix: "%" + value: currentScale.x + onValueModified: + { + if (scaleLocked.checked) + updateScale(value, value, value) + else + updateScale(value, yScaleSpin.value, zScaleSpin.value) + } + } + + Rectangle + { + Layout.rowSpan: 3 + Layout.fillHeight: true + color: "transparent" + width: UISettings.iconSizeMedium + clip: true + + Rectangle + { + color: "transparent" + x: -width / 2 + y: UISettings.listItemHeight / 2 + width: parent.width + height: parent.height - UISettings.listItemHeight + border.width: 1 + border.color: "white" + } + + IconButton + { + id: scaleLocked + anchors.centerIn: parent + width: UISettings.iconSizeMedium + height: width + imgSource: "qrc:/lock.svg" + checkable: true + checked: true + } + } + + // row 2 + RobotoText + { + height: UISettings.listItemHeight + width: UISettings.bigItemHeight + textHAlign: Qt.AlignRight + label: "Y" + } + CustomSpinBox + { + id: yScaleSpin + height: UISettings.listItemHeight + Layout.fillWidth: true + from: 1 + to: 1000 + suffix: "%" + value: currentScale.y + onValueModified: + { + if (scaleLocked.checked) + updateScale(value, value, value) + else + updateScale(xScaleSpin.value, value, zScaleSpin.value) + } + } + + // row 3 + RobotoText + { + height: UISettings.listItemHeight + width: UISettings.bigItemHeight + textHAlign: Qt.AlignRight + label: "Z" + } + CustomSpinBox + { + id: zScaleSpin + height: UISettings.listItemHeight + Layout.fillWidth: true + from: 1 + to: 1000 + suffix: "%" + value: currentScale.z + onValueModified: + { + if (scaleLocked.checked) + updateScale(value, value, value) + else + updateScale(xScaleSpin.value, yScaleSpin.value, value) + } + } + } // GridLayout + } // SectionBox - Scale + + SectionBox + { + width: parent.width + isExpanded: false + sectionLabel: qsTr("Custom items") + + FileDialog + { + id: meshDialog + visible: false + title: qsTr("Select a mesh file") + folder: View3D.meshDirectory + nameFilters: [ qsTr("3D files") + " (*.obj *.dae *.3ds *.py *.stl *.blend)", qsTr("All files") + " (*)" ] + + onAccepted: View3D.createGenericItem(fileUrl, -1) + } + + sectionContents: + ColumnLayout + { + width: parent.width + + Rectangle + { + width: parent.width + height: UISettings.iconSizeMedium + + gradient: Gradient + { + GradientStop { position: 0; color: UISettings.toolbarStartSub } + GradientStop { position: 1; color: UISettings.toolbarEnd } + } + + RowLayout + { + width: parent.width + height: UISettings.iconSizeMedium + + IconButton + { + height: UISettings.iconSizeMedium + width: height + imgSource: "qrc:/add.svg" + tooltip: qsTr("Add a new item to the scene") + onClicked: meshDialog.open() + } + IconButton + { + enabled: selGenericCount + height: UISettings.iconSizeMedium + width: height + imgSource: "qrc:/remove.svg" + tooltip: qsTr("Remove the selected items") + onClicked: View3D.removeSelectedGenericItems() + } + IconButton + { + enabled: selGenericCount + height: UISettings.iconSizeMedium + width: height + faSource: FontAwesome.fa_compress + faColor: UISettings.fgMain + tooltip: qsTr("Normalize the selected items") + onClicked: View3D.normalizeSelectedGenericItems() + } + Rectangle + { + Layout.fillWidth: true + height: UISettings.iconSizeMedium + color: "transparent" + } + } + } + + ListView + { + id: itemsList + width: parent.width + height: UISettings.bigItemHeight * 4 + boundsBehavior: Flickable.StopAtBounds + model: View3D.genericItemsList + + delegate: + Rectangle + { + width: itemsList.width + height: UISettings.listItemHeight + color: isSelected ? UISettings.highlight : "transparent" + + IconTextEntry + { + width: parent.width + height: UISettings.listItemHeight + + tLabel: name + faSource: FontAwesome.fa_cube + faColor: UISettings.fgMain + + MouseArea + { + anchors.fill: parent + onClicked: + { + giSelector.selectItem(index, itemsList.model, mouse.modifiers) + View3D.setItemSelection(itemID, isSelected, mouse.modifiers) + } + } + } + } + } + } + } + } // Column + ScrollBar.vertical: CustomScrollBar { id: sbar } + } // Flickable +} diff --git a/qmlui/qml/fixturesfunctions/3DView/3DView.qml b/qmlui/qml/fixturesfunctions/3DView/3DView.qml index 393f6fb2cb..169788f0e9 100644 --- a/qmlui/qml/fixturesfunctions/3DView/3DView.qml +++ b/qmlui/qml/fixturesfunctions/3DView/3DView.qml @@ -17,13 +17,13 @@ limitations under the License. */ -import QtQuick 2.3 +import QtQuick 2.15 -import QtQuick.Scene3D 2.0 -import Qt3D.Core 2.0 -import Qt3D.Render 2.0 -import Qt3D.Input 2.0 -import Qt3D.Extras 2.0 +import QtQuick.Scene3D 2.15 +import Qt3D.Core 2.15 +import Qt3D.Render 2.15 +import Qt3D.Input 2.15 +import Qt3D.Extras 2.15 Rectangle { @@ -304,7 +304,7 @@ Rectangle { "inTexture": hdr0ColorTexture, "outRenderTarget": hdr1RenderTarget, - "screenQuadFXAALayer": screenQuadFXAAEntity.quadLayer + "screenQuadFXAALayer": screenQuadFXAAEntity.quadLayer }); component = Qt.createComponent("BlitFilter.qml"); @@ -340,7 +340,7 @@ Rectangle projectionType: CameraLens.PerspectiveProjection fieldOfView: 45 - aspectRatio: viewSize.width / viewSize.height + aspectRatio: lens.aspectRatio nearPlane: 1.0 farPlane: 1000.0 position: Qt.vector3d(0.0, 3.0, 7.5) @@ -370,16 +370,14 @@ Rectangle property int selGenericCount: View3D.genericSelectedCount sourceDevice: mDevice - onPressed: - { + onPressed: function (mouse) { directionCounter = 0 dx = 0 dy = 0 startPoint = Qt.point(mouse.x, mouse.y) } - onPositionChanged: - { + onPositionChanged: function (mouse) { if (directionCounter < 3) { dx += (Math.abs(mouse.x - startPoint.x)) @@ -454,7 +452,7 @@ Rectangle if (!mouse.modifiers || (mouse.modifiers & Qt.ShiftModifier && direction == Qt.Horizontal)) viewCamera.panAboutViewCenter(-xDelta, Qt.vector3d(0, 1, 0)) if (!mouse.modifiers || (mouse.modifiers & Qt.ShiftModifier && direction == Qt.Vertical)) - viewCamera.tiltAboutViewCenter(yDelta, Qt.vector3d(1, 0, 0)) + viewCamera.tiltAboutViewCenter(yDelta) } else if (mouse.buttons === Qt.MiddleButton) // camera translation { @@ -466,8 +464,7 @@ Rectangle startPoint = Qt.point(mouse.x, mouse.y) } - onWheel: - { + onWheel: function (wheel) { if (wheel.angleDelta.y > 0) viewCamera.setZoom(-1) else diff --git a/qmlui/qml/fixturesfunctions/3DView/3DViewUnsupported.qml b/qmlui/qml/fixturesfunctions/3DView/3DViewUnsupported.qml index db013b7db3..a2ccd8fa66 100644 --- a/qmlui/qml/fixturesfunctions/3DView/3DViewUnsupported.qml +++ b/qmlui/qml/fixturesfunctions/3DView/3DViewUnsupported.qml @@ -18,7 +18,6 @@ */ import QtQuick 2.8 -import "." Rectangle { diff --git a/qmlui/qml/fixturesfunctions/3DView/BlitEffect.qml b/qmlui/qml/fixturesfunctions/3DView/BlitEffect.qml index 8ef0957119..b2fdde911f 100644 --- a/qmlui/qml/fixturesfunctions/3DView/BlitEffect.qml +++ b/qmlui/qml/fixturesfunctions/3DView/BlitEffect.qml @@ -17,13 +17,11 @@ limitations under the License. */ -import Qt3D.Core 2.0 -import Qt3D.Render 2.0 +import Qt3D.Core 2.15 +import Qt3D.Render 2.15 -Effect -{ - techniques: - [ +Effect { + techniques: [ // OpenGL 3.1 Technique { @@ -37,11 +35,26 @@ Effect shaderProgram: ShaderProgram { - vertexShaderCode: View3D.makeShader(loadSource("qrc:/fullscreen.vert")) - fragmentShaderCode: View3D.makeShader(loadSource("qrc:/blit.frag")) + vertexShaderCode: View3D.makeGlShader(loadSource("qrc:/fullscreen.vert")) + fragmentShaderCode: View3D.makeGlShader(loadSource("qrc:/blit.frag")) } } ] + }, + // RHI 1.00 + Technique { + graphicsApiFilter { api: GraphicsApiFilter.RHI; profile: GraphicsApiFilter.NoProfile; majorVersion: 1; minorVersion: 0 } + renderPasses: [ + // Lights pass + RenderPass + { + filterKeys: FilterKey { name: "pass"; value: "blit" } + shaderProgram: ShaderProgram { + vertexShaderCode: View3D.makeRhiShader(loadSource("qrc:/fullscreen_rhi.vert")) + fragmentShaderCode: View3D.makeRhiShader(loadSource("qrc:/blit_rhi.frag")) + } + } + ] } ] } diff --git a/qmlui/qml/fixturesfunctions/3DView/BlitFilter.qml b/qmlui/qml/fixturesfunctions/3DView/BlitFilter.qml index e2dae34ef7..0f9ce928b4 100644 --- a/qmlui/qml/fixturesfunctions/3DView/BlitFilter.qml +++ b/qmlui/qml/fixturesfunctions/3DView/BlitFilter.qml @@ -17,10 +17,9 @@ limitations under the License. */ -import Qt3D.Core 2.0 -import Qt3D.Render 2.0 - -import QtQuick 2.0 +import QtQuick 2.15 +import Qt3D.Core 2.15 +import Qt3D.Render 2.15 TechniqueFilter { diff --git a/qmlui/qml/fixturesfunctions/3DView/DeferredRenderer.qml b/qmlui/qml/fixturesfunctions/3DView/DeferredRenderer.qml index 837cc27655..6ad2701a58 100644 --- a/qmlui/qml/fixturesfunctions/3DView/DeferredRenderer.qml +++ b/qmlui/qml/fixturesfunctions/3DView/DeferredRenderer.qml @@ -17,10 +17,9 @@ limitations under the License. */ -import Qt3D.Core 2.0 -import Qt3D.Render 2.0 - -import QtQuick 2.0 +import QtQuick 2.15 +import Qt3D.Core 2.15 +import Qt3D.Render 2.15 RenderSettings { diff --git a/qmlui/qml/fixturesfunctions/3DView/DepthTarget.qml b/qmlui/qml/fixturesfunctions/3DView/DepthTarget.qml index 585578a1e8..c2a8dc5230 100644 --- a/qmlui/qml/fixturesfunctions/3DView/DepthTarget.qml +++ b/qmlui/qml/fixturesfunctions/3DView/DepthTarget.qml @@ -17,8 +17,8 @@ limitations under the License. */ -import Qt3D.Core 2.0 -import Qt3D.Render 2.0 +import Qt3D.Core 2.15 +import Qt3D.Render 2.15 RenderTarget { diff --git a/qmlui/qml/fixturesfunctions/3DView/DirectionalLightFilter.qml b/qmlui/qml/fixturesfunctions/3DView/DirectionalLightFilter.qml index d6670723d7..8580297027 100644 --- a/qmlui/qml/fixturesfunctions/3DView/DirectionalLightFilter.qml +++ b/qmlui/qml/fixturesfunctions/3DView/DirectionalLightFilter.qml @@ -17,10 +17,9 @@ limitations under the License. */ -import Qt3D.Core 2.0 -import Qt3D.Render 2.0 - -import QtQuick 2.0 +import QtQuick 2.15 +import Qt3D.Core 2.15 +import Qt3D.Render 2.15 TechniqueFilter { diff --git a/qmlui/qml/fixturesfunctions/3DView/DownsampleEffect.qml b/qmlui/qml/fixturesfunctions/3DView/DownsampleEffect.qml index 769674d88f..096547d1f1 100644 --- a/qmlui/qml/fixturesfunctions/3DView/DownsampleEffect.qml +++ b/qmlui/qml/fixturesfunctions/3DView/DownsampleEffect.qml @@ -17,8 +17,8 @@ limitations under the License. */ -import Qt3D.Core 2.0 -import Qt3D.Render 2.0 +import Qt3D.Core 2.15 +import Qt3D.Render 2.15 Effect { @@ -36,11 +36,24 @@ Effect shaderProgram: ShaderProgram { - vertexShaderCode: View3D.makeShader(loadSource("qrc:/fullscreen.vert")) - fragmentShaderCode: View3D.makeShader(loadSource("qrc:/downsample.frag")) + vertexShaderCode: View3D.makeGlShader(loadSource("qrc:/fullscreen.vert")) + fragmentShaderCode: View3D.makeGlShader(loadSource("qrc:/downsample.frag")) } } ] + }, + Technique { + graphicsApiFilter { api: GraphicsApiFilter.RHI; profile: GraphicsApiFilter.NoProfile; majorVersion: 1; minorVersion: 0 } + renderPasses: [ + // Downsample pass + RenderPass { + filterKeys: FilterKey { name: "pass"; value: "downsample" } + shaderProgram: ShaderProgram { + vertexShaderCode: View3D.makeRhiShader(loadSource("qrc:/fullscreen_rhi.vert")) + fragmentShaderCode: View3D.makeRhiShader(loadSource("qrc:/downsample_rhi.frag")) + } + } + ] } ] } diff --git a/qmlui/qml/fixturesfunctions/3DView/DownsampleFilter.qml b/qmlui/qml/fixturesfunctions/3DView/DownsampleFilter.qml index 6685e6e67e..98449c931e 100644 --- a/qmlui/qml/fixturesfunctions/3DView/DownsampleFilter.qml +++ b/qmlui/qml/fixturesfunctions/3DView/DownsampleFilter.qml @@ -17,9 +17,9 @@ limitations under the License. */ -import Qt3D.Core 2.0 -import Qt3D.Render 2.0 -import QtQuick 2.0 +import QtQuick 2.15 +import Qt3D.Core 2.15 +import Qt3D.Render 2.15 TechniqueFilter { @@ -30,7 +30,7 @@ TechniqueFilter parameters: [ Parameter { name: "tex"; value: inTex }, - Parameter { name: "pixelSize"; value: pixelSize } + Parameter { name: "pixelSize"; value: pixelSize } ] RenderStateSet diff --git a/qmlui/qml/fixturesfunctions/3DView/FXAAEffect.qml b/qmlui/qml/fixturesfunctions/3DView/FXAAEffect.qml index e57aa3091d..2d97792539 100644 --- a/qmlui/qml/fixturesfunctions/3DView/FXAAEffect.qml +++ b/qmlui/qml/fixturesfunctions/3DView/FXAAEffect.qml @@ -17,13 +17,11 @@ limitations under the License. */ -import Qt3D.Core 2.0 -import Qt3D.Render 2.0 +import Qt3D.Core 2.15 +import Qt3D.Render 2.15 -Effect -{ - techniques: - [ +Effect { + techniques: [ // OpenGL 3.1 Technique { @@ -37,11 +35,25 @@ Effect shaderProgram: ShaderProgram { - vertexShaderCode: View3D.makeShader(loadSource("qrc:/fullscreen.vert")) - fragmentShaderCode: View3D.makeShader(loadSource("qrc:/fxaa.frag")) + vertexShaderCode: View3D.makeGlShader(loadSource("qrc:/fullscreen.vert")) + fragmentShaderCode: View3D.makeGlShader(loadSource("qrc:/fxaa.frag")) } } ] + }, + // RHI 1.0 + Technique { + graphicsApiFilter { api: GraphicsApiFilter.RHI; profile: GraphicsApiFilter.NoProfile; majorVersion: 1; minorVersion: 0 } + renderPasses: [ + // FXAA pass + RenderPass { + filterKeys: FilterKey { name: "pass"; value: "fxaa" } + shaderProgram: ShaderProgram { + vertexShaderCode: View3D.makeRhiShader(loadSource("qrc:/fullscreen_rhi.vert")) + fragmentShaderCode: View3D.makeRhiShader(loadSource("qrc:/fxaa_rhi.frag")) + } + } + ] } ] } diff --git a/qmlui/qml/fixturesfunctions/3DView/FXAAFilter.qml b/qmlui/qml/fixturesfunctions/3DView/FXAAFilter.qml index c02223a49b..8c8b0ddaa0 100644 --- a/qmlui/qml/fixturesfunctions/3DView/FXAAFilter.qml +++ b/qmlui/qml/fixturesfunctions/3DView/FXAAFilter.qml @@ -17,10 +17,9 @@ limitations under the License. */ -import Qt3D.Core 2.0 -import Qt3D.Render 2.0 - -import QtQuick 2.0 +import QtQuick 2.15 +import Qt3D.Core 2.15 +import Qt3D.Render 2.15 TechniqueFilter { diff --git a/qmlui/qml/fixturesfunctions/3DView/FillGBufferFilter.qml b/qmlui/qml/fixturesfunctions/3DView/FillGBufferFilter.qml index 051d1cbfca..2ad1489b02 100644 --- a/qmlui/qml/fixturesfunctions/3DView/FillGBufferFilter.qml +++ b/qmlui/qml/fixturesfunctions/3DView/FillGBufferFilter.qml @@ -18,10 +18,9 @@ limitations under the License. */ -import Qt3D.Core 2.0 -import Qt3D.Render 2.0 - -import QtQuick 2.0 +import QtQuick 2.15 +import Qt3D.Core 2.15 +import Qt3D.Render 2.15 LayerFilter { diff --git a/qmlui/qml/fixturesfunctions/3DView/Fixture3DItem.qml b/qmlui/qml/fixturesfunctions/3DView/Fixture3DItem.qml index 0f696de6d6..728309af01 100644 --- a/qmlui/qml/fixturesfunctions/3DView/Fixture3DItem.qml +++ b/qmlui/qml/fixturesfunctions/3DView/Fixture3DItem.qml @@ -18,15 +18,14 @@ limitations under the License. */ -import QtQuick 2.7 as QQ2 +import QtQuick 2.15 -import Qt3D.Core 2.0 -import Qt3D.Render 2.0 -import Qt3D.Extras 2.0 +import Qt3D.Core 2.15 +import Qt3D.Render 2.15 +import Qt3D.Extras 2.15 import org.qlcplus.classes 1.0 import "Math3DView.js" as Math3D -import "." Entity { @@ -228,14 +227,14 @@ Entity ShutterAnimator { id: sAnimator } - QQ2.NumberAnimation on panRotation + NumberAnimation on panRotation { id: panAnim running: false easing.type: Easing.Linear } - QQ2.NumberAnimation on tiltRotation + NumberAnimation on tiltRotation { id: tiltAnim running: false @@ -287,7 +286,7 @@ Entity } } - QQ2.NumberAnimation on goboRotation + NumberAnimation on goboRotation { id: goboAnim running: false @@ -295,7 +294,7 @@ Entity easing.type: Easing.Linear from: 0 to: 360 - loops: QQ2.Animation.Infinite + loops: Animation.Infinite } /* Cone meshes used for scattering. These get re-parented to @@ -323,8 +322,7 @@ Entity { id: eSceneLoader - onStatusChanged: - { + onStatusChanged: function (status) { if (status === SceneLoader.Ready) View3D.initializeFixture(itemID, fixtureEntity, eSceneLoader) } @@ -341,8 +339,7 @@ Entity property var lastPos - onClicked: - { + onClicked: function (pick) { console.log("3D item clicked") isSelected = !isSelected contextManager.setItemSelection(itemID, isSelected, pick.modifiers) @@ -366,5 +363,3 @@ Entity components: [ eSceneLoader, transform, eObjectPicker ] } - - diff --git a/qmlui/qml/fixturesfunctions/3DView/FrameTarget.qml b/qmlui/qml/fixturesfunctions/3DView/FrameTarget.qml index 5ecc741c02..32c48ae930 100644 --- a/qmlui/qml/fixturesfunctions/3DView/FrameTarget.qml +++ b/qmlui/qml/fixturesfunctions/3DView/FrameTarget.qml @@ -17,8 +17,8 @@ limitations under the License. */ -import Qt3D.Core 2.0 -import Qt3D.Render 2.0 +import Qt3D.Core 2.15 +import Qt3D.Render 2.15 RenderTarget { diff --git a/qmlui/qml/fixturesfunctions/3DView/GammaCorrectEffect.qml b/qmlui/qml/fixturesfunctions/3DView/GammaCorrectEffect.qml index 8304b54132..5f903b63a0 100644 --- a/qmlui/qml/fixturesfunctions/3DView/GammaCorrectEffect.qml +++ b/qmlui/qml/fixturesfunctions/3DView/GammaCorrectEffect.qml @@ -17,8 +17,8 @@ limitations under the License. */ -import Qt3D.Core 2.0 -import Qt3D.Render 2.0 +import Qt3D.Core 2.15 +import Qt3D.Render 2.15 Effect { @@ -36,11 +36,24 @@ Effect shaderProgram: ShaderProgram { - vertexShaderCode: View3D.makeShader(loadSource("qrc:/fullscreen.vert")) - fragmentShaderCode: View3D.makeShader(loadSource("qrc:/gamma_correct.frag")) + vertexShaderCode: View3D.makeGlShader(loadSource("qrc:/fullscreen.vert")) + fragmentShaderCode: View3D.makeGlShader(loadSource("qrc:/gamma_correct.frag")) } } ] + }, + Technique { + graphicsApiFilter { api: GraphicsApiFilter.RHI; profile: GraphicsApiFilter.NoProfile; majorVersion: 1; minorVersion: 0 } + renderPasses: [ + // Gamma correction pass + RenderPass { + filterKeys: FilterKey { name: "pass"; value: "gamma_correct" } + shaderProgram: ShaderProgram { + vertexShaderCode: View3D.makeRhiShader(loadSource("qrc:/fullscreen_rhi.vert")) + fragmentShaderCode: View3D.makeRhiShader(loadSource("qrc:/gamma_correct_rhi.frag")) + } + } + ] } ] } diff --git a/qmlui/qml/fixturesfunctions/3DView/GammaCorrectFilter.qml b/qmlui/qml/fixturesfunctions/3DView/GammaCorrectFilter.qml index b93de912e7..4e9e20f15d 100644 --- a/qmlui/qml/fixturesfunctions/3DView/GammaCorrectFilter.qml +++ b/qmlui/qml/fixturesfunctions/3DView/GammaCorrectFilter.qml @@ -17,10 +17,9 @@ limitations under the License. */ -import Qt3D.Core 2.0 -import Qt3D.Render 2.0 - -import QtQuick 2.0 +import QtQuick 2.15 +import Qt3D.Core 2.15 +import Qt3D.Render 2.15 TechniqueFilter { diff --git a/qmlui/qml/fixturesfunctions/3DView/Generic3DItem.qml b/qmlui/qml/fixturesfunctions/3DView/Generic3DItem.qml index 0113e6a4fc..9ba199fae7 100644 --- a/qmlui/qml/fixturesfunctions/3DView/Generic3DItem.qml +++ b/qmlui/qml/fixturesfunctions/3DView/Generic3DItem.qml @@ -17,14 +17,13 @@ limitations under the License. */ -import QtQuick 2.7 +import QtQuick 2.15 -import Qt3D.Core 2.0 -import Qt3D.Render 2.0 -import Qt3D.Extras 2.0 +import Qt3D.Core 2.15 +import Qt3D.Render 2.15 +import Qt3D.Extras 2.15 import org.qlcplus.classes 1.0 -import "." Entity { @@ -41,8 +40,7 @@ Entity { id: eSceneLoader - onStatusChanged: - { + onStatusChanged: function (status) { if (status === SceneLoader.Ready) View3D.initializeItem(itemID, genericEntity, eSceneLoader) } @@ -55,8 +53,7 @@ Entity id: eObjectPicker dragEnabled: true - onClicked: - { + onClicked: function (pick) { console.log("3D item clicked") isSelected = !isSelected View3D.setItemSelection(itemID, isSelected, pick.modifiers) diff --git a/qmlui/qml/fixturesfunctions/3DView/GenericScreenQuadEntity.qml b/qmlui/qml/fixturesfunctions/3DView/GenericScreenQuadEntity.qml index 1c1bb0d4c7..6f91a8398a 100644 --- a/qmlui/qml/fixturesfunctions/3DView/GenericScreenQuadEntity.qml +++ b/qmlui/qml/fixturesfunctions/3DView/GenericScreenQuadEntity.qml @@ -17,11 +17,11 @@ limitations under the License. */ -import QtQuick 2.7 +import QtQuick 2.15 -import Qt3D.Core 2.0 -import Qt3D.Render 2.0 -import Qt3D.Extras 2.0 +import Qt3D.Core 2.15 +import Qt3D.Render 2.15 +import Qt3D.Extras 2.15 Entity { @@ -48,6 +48,12 @@ Entity { id: quadMaterial effect: quadEffect + parameters: [ + Parameter { name: "tex"; value: Texture2D { format: Texture.RGBA32F } }, + Parameter { name: "colorTex"; value: Texture2D { format: Texture.RGBA32F } }, + Parameter { name: "albedoTex"; value: Texture2D { format: Texture.RGBA32F } }, + Parameter { name: "normalTex"; value: Texture2D { format: Texture.RGBA32F } } + ] } components: [ diff --git a/qmlui/qml/fixturesfunctions/3DView/GeometryPassEffect.qml b/qmlui/qml/fixturesfunctions/3DView/GeometryPassEffect.qml index 65457fa0bc..a2793576c5 100644 --- a/qmlui/qml/fixturesfunctions/3DView/GeometryPassEffect.qml +++ b/qmlui/qml/fixturesfunctions/3DView/GeometryPassEffect.qml @@ -17,16 +17,11 @@ limitations under the License. */ -import Qt3D.Core 2.0 -import Qt3D.Render 2.0 +import Qt3D.Core 2.15 +import Qt3D.Render 2.15 Effect { - function makeShader(s) - { - return View3D.makeShader(s) - } - techniques: [ Technique { @@ -38,8 +33,34 @@ Effect shaderProgram: ShaderProgram { - vertexShaderCode: View3D.makeShader(loadSource("qrc:/geo.vert")) - fragmentShaderCode: View3D.makeShader(loadSource("qrc:/geo.frag")) + vertexShaderCode: View3D.makeGlShader(loadSource("qrc:/geo.vert")) + fragmentShaderCode: View3D.makeGlShader(loadSource("qrc:/geo.frag")) + } + }, // render pass + RenderPass + { + filterKeys: FilterKey { name: "pass"; value: "shadows" } + shaderProgram: + ShaderProgram + { + vertexShaderCode: View3D.makeGlShader(loadSource("qrc:/output_depth.vert")) + fragmentShaderCode: View3D.makeGlShader(loadSource("qrc:/output_depth.frag")) + } + } // render pass + ] + }, + Technique + { + graphicsApiFilter { api: GraphicsApiFilter.RHI; profile: GraphicsApiFilter.NoProfile; majorVersion: 1; minorVersion: 0 } + renderPasses: [ + RenderPass + { + filterKeys: FilterKey { name: "pass"; value: "geometry" } + shaderProgram: + ShaderProgram + { + vertexShaderCode: View3D.makeRhiShader(loadSource("qrc:/geo_rhi.vert")) + fragmentShaderCode: View3D.makeRhiShader(loadSource("qrc:/geo_rhi.frag")) } }, // render pass RenderPass @@ -48,8 +69,8 @@ Effect shaderProgram: ShaderProgram { - vertexShaderCode: View3D.makeShader(loadSource("qrc:/output_depth.vert")) - fragmentShaderCode: View3D.makeShader(loadSource("qrc:/output_depth.frag")) + vertexShaderCode: View3D.makeRhiShader(loadSource("qrc:/output_depth_rhi.vert")) + fragmentShaderCode: View3D.makeRhiShader(loadSource("qrc:/output_depth_rhi.frag")) } } // render pass ] diff --git a/qmlui/qml/fixturesfunctions/3DView/GrabBrightEffect.qml b/qmlui/qml/fixturesfunctions/3DView/GrabBrightEffect.qml index a18d2c3cb5..fc271dd0e1 100644 --- a/qmlui/qml/fixturesfunctions/3DView/GrabBrightEffect.qml +++ b/qmlui/qml/fixturesfunctions/3DView/GrabBrightEffect.qml @@ -17,8 +17,8 @@ limitations under the License. */ -import Qt3D.Core 2.0 -import Qt3D.Render 2.0 +import Qt3D.Core 2.15 +import Qt3D.Render 2.15 Effect { @@ -36,11 +36,24 @@ Effect shaderProgram: ShaderProgram { - vertexShaderCode: View3D.makeShader(loadSource("qrc:/fullscreen.vert")) - fragmentShaderCode: View3D.makeShader(loadSource("qrc:/grab_bright.frag")) + vertexShaderCode: View3D.makeGlShader(loadSource("qrc:/fullscreen.vert")) + fragmentShaderCode: View3D.makeGlShader(loadSource("qrc:/grab_bright.frag")) } } ] + }, + Technique { + graphicsApiFilter { api: GraphicsApiFilter.RHI; profile: GraphicsApiFilter.NoProfile; majorVersion: 1; minorVersion: 0 } + renderPasses: [ + // Grab brightness pass + RenderPass { + filterKeys: FilterKey { name: "pass"; value: "grab_bright" } + shaderProgram: ShaderProgram { + vertexShaderCode: View3D.makeRhiShader(loadSource("qrc:/fullscreen_rhi.vert")) + fragmentShaderCode: View3D.makeRhiShader(loadSource("qrc:/grab_bright_rhi.frag")) + } + } + ] } ] } diff --git a/qmlui/qml/fixturesfunctions/3DView/GrabBrightFilter.qml b/qmlui/qml/fixturesfunctions/3DView/GrabBrightFilter.qml index 80a1f63f96..7ac95d46d5 100644 --- a/qmlui/qml/fixturesfunctions/3DView/GrabBrightFilter.qml +++ b/qmlui/qml/fixturesfunctions/3DView/GrabBrightFilter.qml @@ -17,10 +17,9 @@ limitations under the License. */ -import Qt3D.Core 2.0 -import Qt3D.Render 2.0 - -import QtQuick 2.0 +import QtQuick 2.15 +import Qt3D.Core 2.15 +import Qt3D.Render 2.15 TechniqueFilter { diff --git a/qmlui/qml/fixturesfunctions/3DView/LightEntity.qml b/qmlui/qml/fixturesfunctions/3DView/LightEntity.qml index 14fef26e52..b68f3d7d31 100644 --- a/qmlui/qml/fixturesfunctions/3DView/LightEntity.qml +++ b/qmlui/qml/fixturesfunctions/3DView/LightEntity.qml @@ -17,14 +17,13 @@ limitations under the License. */ -import QtQuick 2.7 +import QtQuick 2.15 -import Qt3D.Core 2.0 -import Qt3D.Render 2.0 -import Qt3D.Extras 2.0 +import Qt3D.Core 2.15 +import Qt3D.Render 2.15 +import Qt3D.Extras 2.15 import "Math3DView.js" as Math3D -import "." Entity { diff --git a/qmlui/qml/fixturesfunctions/3DView/LightPassEffect.qml b/qmlui/qml/fixturesfunctions/3DView/LightPassEffect.qml index cb6788c0c7..3b9ea93122 100644 --- a/qmlui/qml/fixturesfunctions/3DView/LightPassEffect.qml +++ b/qmlui/qml/fixturesfunctions/3DView/LightPassEffect.qml @@ -17,8 +17,8 @@ limitations under the License. */ -import Qt3D.Core 2.0 -import Qt3D.Render 2.0 +import Qt3D.Core 2.15 +import Qt3D.Render 2.15 Effect { @@ -36,11 +36,24 @@ Effect shaderProgram: ShaderProgram { - vertexShaderCode: View3D.makeShader(loadSource("qrc:/fullscreen.vert")) - fragmentShaderCode: View3D.makeShader(loadSource("qrc:/directional.frag")) + vertexShaderCode: View3D.makeGlShader(loadSource("qrc:/fullscreen.vert")) + fragmentShaderCode: View3D.makeGlShader(loadSource("qrc:/directional.frag")) } } ] + }, + Technique { + graphicsApiFilter { api: GraphicsApiFilter.RHI; profile: GraphicsApiFilter.NoProfile; majorVersion: 1; minorVersion: 0 } + renderPasses: [ + // Lights pass + RenderPass { + filterKeys: FilterKey { name: "pass"; value: "lights" } + shaderProgram: ShaderProgram { + vertexShaderCode: View3D.makeRhiShader(loadSource("qrc:/fullscreen_rhi.vert")) + fragmentShaderCode: View3D.makeRhiShader(loadSource("qrc:/directional_rhi.frag")) + } + } + ] } ] } diff --git a/qmlui/qml/fixturesfunctions/3DView/MultiBeams3DItem.qml b/qmlui/qml/fixturesfunctions/3DView/MultiBeams3DItem.qml index dfc6426e4e..89d8dfa485 100644 --- a/qmlui/qml/fixturesfunctions/3DView/MultiBeams3DItem.qml +++ b/qmlui/qml/fixturesfunctions/3DView/MultiBeams3DItem.qml @@ -18,15 +18,14 @@ limitations under the License. */ -import QtQuick 2.7 +import QtQuick 2.15 -import Qt3D.Core 2.0 -import Qt3D.Render 2.0 -import Qt3D.Extras 2.0 +import Qt3D.Core 2.15 +import Qt3D.Render 2.15 +import Qt3D.Extras 2.15 import org.qlcplus.classes 1.0 import "Math3DView.js" as Math3D -import "." Entity { @@ -222,8 +221,8 @@ Entity effect: sceneEffect parameters: [ - Parameter { name: "diffuse"; value: "gray" }, - Parameter { name: "specular"; value: "black" }, + Parameter { name: "diffuse"; value: Qt.rgba(211, 211, 211, 1) }, + Parameter { name: "specular"; value: Qt.rgba(0, 0, 0, 1) }, Parameter { name: "shininess"; value: 1.0 }, Parameter { name: "bloom"; value: 0 } ] @@ -274,8 +273,7 @@ Entity property var lastPos - onClicked: - { + onClicked: function (pick) { console.log("3D item clicked") isSelected = !isSelected contextManager.setItemSelection(itemID, isSelected, pick.modifiers) diff --git a/qmlui/qml/fixturesfunctions/3DView/OutputFrontDepthEffect.qml b/qmlui/qml/fixturesfunctions/3DView/OutputFrontDepthEffect.qml index 3b1615d5ba..e78c04cca2 100644 --- a/qmlui/qml/fixturesfunctions/3DView/OutputFrontDepthEffect.qml +++ b/qmlui/qml/fixturesfunctions/3DView/OutputFrontDepthEffect.qml @@ -17,8 +17,8 @@ limitations under the License. */ -import Qt3D.Core 2.0 -import Qt3D.Render 2.0 +import Qt3D.Core 2.15 +import Qt3D.Render 2.15 Effect { @@ -35,11 +35,23 @@ Effect shaderProgram: ShaderProgram { - vertexShaderCode: View3D.makeShader(loadSource("qrc:/spotlight.vert")) - fragmentShaderCode: View3D.makeShader(loadSource("qrc:/output_front_depth.frag")) + vertexShaderCode: View3D.makeGlShader(loadSource("qrc:/spotlight.vert")) + fragmentShaderCode: View3D.makeGlShader(loadSource("qrc:/output_front_depth.frag")) } } ] + }, + Technique { + graphicsApiFilter { api: GraphicsApiFilter.RHI; profile: GraphicsApiFilter.NoProfile; majorVersion: 1; minorVersion: 0 } + renderPasses: [ + RenderPass { + filterKeys: FilterKey { name: "pass"; value: "output_depth" } + shaderProgram: ShaderProgram { + vertexShaderCode: View3D.makeRhiShader(loadSource("qrc:/spotlight_rhi.vert")) + fragmentShaderCode: View3D.makeRhiShader(loadSource("qrc:/output_front_depth_rhi.frag")) + } + } + ] } ] } diff --git a/qmlui/qml/fixturesfunctions/3DView/OutputFrontDepthFilter.qml b/qmlui/qml/fixturesfunctions/3DView/OutputFrontDepthFilter.qml index 0cfff1aa48..993f437ba5 100644 --- a/qmlui/qml/fixturesfunctions/3DView/OutputFrontDepthFilter.qml +++ b/qmlui/qml/fixturesfunctions/3DView/OutputFrontDepthFilter.qml @@ -18,10 +18,9 @@ */ -import Qt3D.Core 2.0 -import Qt3D.Render 2.0 - -import QtQuick 2.0 +import QtQuick 2.15 +import Qt3D.Core 2.15 +import Qt3D.Render 2.15 // Lights pass technique TechniqueFilter diff --git a/qmlui/qml/fixturesfunctions/3DView/PixelBar3DItem.qml b/qmlui/qml/fixturesfunctions/3DView/PixelBar3DItem.qml index 86f9da80a9..66f23c1b78 100644 --- a/qmlui/qml/fixturesfunctions/3DView/PixelBar3DItem.qml +++ b/qmlui/qml/fixturesfunctions/3DView/PixelBar3DItem.qml @@ -18,15 +18,14 @@ limitations under the License. */ -import QtQuick 2.7 as QQ2 +import QtQuick 2.15 -import Qt3D.Core 2.0 -import Qt3D.Render 2.0 -import Qt3D.Extras 2.0 +import Qt3D.Core 2.15 +import Qt3D.Render 2.15 +import Qt3D.Extras 2.15 import org.qlcplus.classes 1.0 import "Math3DView.js" as Math3D -import "." Entity { @@ -81,8 +80,8 @@ Entity effect: sceneEffect parameters: [ - Parameter { name: "diffuse"; value: "gray" }, - Parameter { name: "specular"; value: "black" }, + Parameter { name: "diffuse"; value: Qt.rgba(211, 211, 211, 1) }, + Parameter { name: "specular"; value: Qt.rgba(0, 0, 0, 1) }, Parameter { name: "shininess"; value: 1.0 }, Parameter { name: "bloom"; value: 0 } ] @@ -101,8 +100,7 @@ Entity id: headsRepeater //model: fixtureEntity.headsNumber - onObjectAdded: - { + onObjectAdded: function (index, object) { console.log("Head " + index + " added ----------------") if (index == fixtureEntity.headsNumber - 1) View3D.initializeFixture(itemID, fixtureEntity, null) @@ -144,7 +142,7 @@ Entity name: "diffuse" value: Qt.rgba(lightColor.r * lightIntensity, lightColor.g * lightIntensity, lightColor.b * lightIntensity, 1) }, - Parameter { name: "specular"; value: "black" }, + Parameter { name: "specular"; value: Qt.rgba(0, 0, 0, 1) }, Parameter { name: "shininess"; value: 1.0 }, Parameter { name: "bloom"; value: 1 } ] @@ -167,8 +165,7 @@ Entity property var lastPos - onClicked: - { + onClicked: function (pick) { console.log("3D item clicked") isSelected = !isSelected contextManager.setItemSelection(itemID, isSelected, pick.modifiers) diff --git a/qmlui/qml/fixturesfunctions/3DView/RenderSelectionBoxesFilter.qml b/qmlui/qml/fixturesfunctions/3DView/RenderSelectionBoxesFilter.qml index 71657f1297..ec171fe4b3 100644 --- a/qmlui/qml/fixturesfunctions/3DView/RenderSelectionBoxesFilter.qml +++ b/qmlui/qml/fixturesfunctions/3DView/RenderSelectionBoxesFilter.qml @@ -17,10 +17,9 @@ limitations under the License. */ -import Qt3D.Core 2.0 -import Qt3D.Render 2.0 - -import QtQuick 2.0 +import QtQuick 2.15 +import Qt3D.Core 2.15 +import Qt3D.Render 2.15 LayerFilter { diff --git a/qmlui/qml/fixturesfunctions/3DView/RenderShadowMapFilter.qml b/qmlui/qml/fixturesfunctions/3DView/RenderShadowMapFilter.qml index 69690ab3c7..b5a15f5226 100644 --- a/qmlui/qml/fixturesfunctions/3DView/RenderShadowMapFilter.qml +++ b/qmlui/qml/fixturesfunctions/3DView/RenderShadowMapFilter.qml @@ -17,10 +17,9 @@ limitations under the License. */ -import Qt3D.Core 2.0 -import Qt3D.Render 2.0 - -import QtQuick 2.0 +import QtQuick 2.15 +import Qt3D.Core 2.15 +import Qt3D.Render 2.15 LayerFilter { diff --git a/qmlui/qml/fixturesfunctions/3DView/SceneEntity.qml b/qmlui/qml/fixturesfunctions/3DView/SceneEntity.qml index 29791bb3ce..c8b64d57fb 100644 --- a/qmlui/qml/fixturesfunctions/3DView/SceneEntity.qml +++ b/qmlui/qml/fixturesfunctions/3DView/SceneEntity.qml @@ -17,12 +17,12 @@ limitations under the License. */ -import QtQuick 2.0 +import QtQuick 2.15 -import Qt3D.Core 2.0 -import Qt3D.Render 2.0 -import Qt3D.Input 2.0 -import Qt3D.Extras 2.0 +import Qt3D.Core 2.15 +import Qt3D.Render 2.15 +import Qt3D.Input 2.15 +import Qt3D.Extras 2.15 Entity { diff --git a/qmlui/qml/fixturesfunctions/3DView/ScreenQuadEntity.qml b/qmlui/qml/fixturesfunctions/3DView/ScreenQuadEntity.qml index cd6e87710b..bd17df9958 100644 --- a/qmlui/qml/fixturesfunctions/3DView/ScreenQuadEntity.qml +++ b/qmlui/qml/fixturesfunctions/3DView/ScreenQuadEntity.qml @@ -51,6 +51,12 @@ Entity { Component.onCompleted: View3D.quadReady() effect: LightPassEffect { } + parameters: [ + Parameter { name: "albedoTex"; value: Texture2D { format: Texture.RGBA32F } }, + Parameter { name: "depthTex"; value: Texture2D { format: Texture.D32F } }, + Parameter { name: "normalTex"; value: Texture2D { format: Texture.RGBA32F } }, + Parameter { name: "specularTex"; value: Texture2D { format: Texture.RGBA32F } } + ] } ] } diff --git a/qmlui/qml/fixturesfunctions/3DView/ScreenQuadGammaCorrectEntity.qml b/qmlui/qml/fixturesfunctions/3DView/ScreenQuadGammaCorrectEntity.qml index 34babe5bc2..b49c00c37d 100644 --- a/qmlui/qml/fixturesfunctions/3DView/ScreenQuadGammaCorrectEntity.qml +++ b/qmlui/qml/fixturesfunctions/3DView/ScreenQuadGammaCorrectEntity.qml @@ -17,11 +17,11 @@ limitations under the License. */ -import QtQuick 2.7 +import QtQuick 2.15 -import Qt3D.Core 2.0 -import Qt3D.Render 2.0 -import Qt3D.Extras 2.0 +import Qt3D.Core 2.15 +import Qt3D.Render 2.15 +import Qt3D.Extras 2.15 Entity { @@ -48,6 +48,10 @@ Entity Material { effect: GammaCorrectEffect { } + parameters: [ + Parameter { name: "hdrTex"; value: Texture2D { format: Texture.RGBA32F } }, + Parameter { name: "bloomTex"; value: Texture2D { format: Texture.RGBA32F } } + ] } ] } diff --git a/qmlui/qml/fixturesfunctions/3DView/SelectionEntity.qml b/qmlui/qml/fixturesfunctions/3DView/SelectionEntity.qml index 1ea4986c92..39edb34c87 100644 --- a/qmlui/qml/fixturesfunctions/3DView/SelectionEntity.qml +++ b/qmlui/qml/fixturesfunctions/3DView/SelectionEntity.qml @@ -17,8 +17,8 @@ limitations under the License. */ -import Qt3D.Core 2.0 -import Qt3D.Render 2.0 +import Qt3D.Core 2.15 +import Qt3D.Render 2.15 Entity { @@ -49,7 +49,7 @@ Entity parameters: [ Parameter { name: "diffuse"; value: color }, - Parameter { name: "specular"; value: "black" }, + Parameter { name: "specular"; value: Qt.rgba(0, 0, 0, 1) }, Parameter { name: "shininess"; value: 1.0 }, Parameter { name: "bloom"; value: 0 } ] diff --git a/qmlui/qml/fixturesfunctions/3DView/SelectionGeometry.qml b/qmlui/qml/fixturesfunctions/3DView/SelectionGeometry.qml index 797f14fb19..bc3ca1c274 100644 --- a/qmlui/qml/fixturesfunctions/3DView/SelectionGeometry.qml +++ b/qmlui/qml/fixturesfunctions/3DView/SelectionGeometry.qml @@ -17,9 +17,9 @@ limitations under the License. */ -import Qt3D.Core 2.0 -import Qt3D.Render 2.0 -import Qt3D.Extras 2.0 +import Qt3D.Core 2.15 +import Qt3D.Render 2.15 +import Qt3D.Extras 2.15 GeometryRenderer { @@ -70,14 +70,12 @@ GeometryRenderer Buffer { id: vertexBuffer - type: Buffer.VertexBuffer data: vertexBufferData() } Buffer { id: indexBuffer - type: Buffer.IndexBuffer data: indexBufferData() } diff --git a/qmlui/qml/fixturesfunctions/3DView/SettingsView3D.qml b/qmlui/qml/fixturesfunctions/3DView/SettingsView3D.qml index ecf7340e15..b0bfb35a75 100644 --- a/qmlui/qml/fixturesfunctions/3DView/SettingsView3D.qml +++ b/qmlui/qml/fixturesfunctions/3DView/SettingsView3D.qml @@ -19,11 +19,10 @@ import QtQuick 2.0 import QtQuick.Layouts 1.1 -import QtQuick.Dialogs 1.3 +import QtQuick.Dialogs import QtQuick.Controls 2.1 import org.qlcplus.classes 1.0 -import "." Rectangle { @@ -626,7 +625,7 @@ Rectangle id: meshDialog visible: false title: qsTr("Select a mesh file") - folder: View3D.meshDirectory + currentFolder: View3D.meshDirectory nameFilters: [ qsTr("3D files") + " (*.obj *.dae *.3ds *.py *.stl *.blend)", qsTr("All files") + " (*)" ] onAccepted: View3D.createGenericItem(fileUrl, -1) diff --git a/qmlui/qml/fixturesfunctions/3DView/SpotlightConeEntity.qml b/qmlui/qml/fixturesfunctions/3DView/SpotlightConeEntity.qml index 735859574f..ca4bbf3984 100644 --- a/qmlui/qml/fixturesfunctions/3DView/SpotlightConeEntity.qml +++ b/qmlui/qml/fixturesfunctions/3DView/SpotlightConeEntity.qml @@ -17,12 +17,12 @@ limitations under the License. */ -import QtQuick 2.0 +import QtQuick 2.15 -import Qt3D.Core 2.0 -import Qt3D.Render 2.0 -import Qt3D.Input 2.0 -import Qt3D.Extras 2.0 +import Qt3D.Core 2.15 +import Qt3D.Render 2.15 +import Qt3D.Input 2.15 +import Qt3D.Extras 2.15 Entity { @@ -42,8 +42,8 @@ Entity property Entity fxItem: null parameters: [ - Parameter { name: "diffuse"; value: "blue" }, - Parameter { name: "specular"; value: "black" }, + Parameter { name: "diffuse"; value: Qt.rgba(0, 0, 1, 1) }, + Parameter { name: "specular"; value: Qt.rgba(0, 0, 0, 1) }, Parameter { name: "shininess"; value: 1.0 }, Parameter { name: "bloom"; value: 0 }, diff --git a/qmlui/qml/fixturesfunctions/3DView/SpotlightScatteringEffect.qml b/qmlui/qml/fixturesfunctions/3DView/SpotlightScatteringEffect.qml index 7d570702e5..c05a5b8174 100644 --- a/qmlui/qml/fixturesfunctions/3DView/SpotlightScatteringEffect.qml +++ b/qmlui/qml/fixturesfunctions/3DView/SpotlightScatteringEffect.qml @@ -17,8 +17,8 @@ limitations under the License. */ -import Qt3D.Core 2.0 -import Qt3D.Render 2.0 +import Qt3D.Core 2.15 +import Qt3D.Render 2.15 Effect { @@ -35,8 +35,25 @@ Effect shaderProgram: ShaderProgram { - vertexShaderCode: View3D.makeShader(loadSource("qrc:/spotlight.vert")) - fragmentShaderCode: View3D.makeShader(loadSource("qrc:/spotlight_scattering.frag")) + vertexShaderCode: View3D.makeGlShader(loadSource("qrc:/spotlight.vert")) + fragmentShaderCode: View3D.makeGlShader(loadSource("qrc:/spotlight_scattering.frag")) + } + } + ] + }, + Technique + { + graphicsApiFilter { api: GraphicsApiFilter.RHI; profile: GraphicsApiFilter.NoProfile; majorVersion: 1; minorVersion: 0 } + renderPasses: + [ + RenderPass + { + filterKeys: FilterKey { name: "pass"; value: "spotlight_scattering" } + shaderProgram: + ShaderProgram + { + vertexShaderCode: View3D.makeRhiShader(loadSource("qrc:/spotlight_rhi.vert")) + fragmentShaderCode: View3D.makeRhiShader(loadSource("qrc:/spotlight_scattering_rhi.frag")) } } ] diff --git a/qmlui/qml/fixturesfunctions/3DView/SpotlightScatteringFilter.qml b/qmlui/qml/fixturesfunctions/3DView/SpotlightScatteringFilter.qml index 2116d76fa4..95ab6f028d 100644 --- a/qmlui/qml/fixturesfunctions/3DView/SpotlightScatteringFilter.qml +++ b/qmlui/qml/fixturesfunctions/3DView/SpotlightScatteringFilter.qml @@ -17,10 +17,9 @@ limitations under the License. */ -import Qt3D.Core 2.0 -import Qt3D.Render 2.0 - -import QtQuick 2.0 +import QtQuick 2.15 +import Qt3D.Core 2.15 +import Qt3D.Render 2.15 // Lights pass technique TechniqueFilter diff --git a/qmlui/qml/fixturesfunctions/3DView/SpotlightShadingEffect.qml b/qmlui/qml/fixturesfunctions/3DView/SpotlightShadingEffect.qml index 96c00a4989..47c72872de 100644 --- a/qmlui/qml/fixturesfunctions/3DView/SpotlightShadingEffect.qml +++ b/qmlui/qml/fixturesfunctions/3DView/SpotlightShadingEffect.qml @@ -17,8 +17,8 @@ limitations under the License. */ -import Qt3D.Core 2.0 -import Qt3D.Render 2.0 +import Qt3D.Core 2.15 +import Qt3D.Render 2.15 Effect { @@ -35,8 +35,25 @@ Effect shaderProgram: ShaderProgram { - vertexShaderCode: View3D.makeShader(loadSource("qrc:/spotlight.vert")) - fragmentShaderCode: View3D.makeShader(loadSource("qrc:/spotlight_shading.frag")) + vertexShaderCode: View3D.makeGlShader(loadSource("qrc:/spotlight.vert")) + fragmentShaderCode: View3D.makeGlShader(loadSource("qrc:/spotlight_shading.frag")) + } + } + ] + }, + Technique + { + graphicsApiFilter { api: GraphicsApiFilter.RHI; profile: GraphicsApiFilter.NoProfile; majorVersion: 1; minorVersion: 0 } + renderPasses: + [ + RenderPass + { + filterKeys: FilterKey { name: "pass"; value: "spotlight_shading" } + shaderProgram: + ShaderProgram + { + vertexShaderCode: View3D.makeRhiShader(loadSource("qrc:/spotlight_rhi.vert")) + fragmentShaderCode: View3D.makeRhiShader(loadSource("qrc:/spotlight_shading_rhi.frag")) } } ] diff --git a/qmlui/qml/fixturesfunctions/3DView/SpotlightShadingFilter.qml b/qmlui/qml/fixturesfunctions/3DView/SpotlightShadingFilter.qml index a2f27b8de1..035b5d1d66 100644 --- a/qmlui/qml/fixturesfunctions/3DView/SpotlightShadingFilter.qml +++ b/qmlui/qml/fixturesfunctions/3DView/SpotlightShadingFilter.qml @@ -17,10 +17,9 @@ limitations under the License. */ -import Qt3D.Core 2.0 -import Qt3D.Render 2.0 - -import QtQuick 2.0 +import QtQuick 2.15 +import Qt3D.Core 2.15 +import Qt3D.Render 2.15 TechniqueFilter { diff --git a/qmlui/qml/fixturesfunctions/3DView/StageBox.qml b/qmlui/qml/fixturesfunctions/3DView/StageBox.qml index 3bf228f88b..3b04c74bb3 100644 --- a/qmlui/qml/fixturesfunctions/3DView/StageBox.qml +++ b/qmlui/qml/fixturesfunctions/3DView/StageBox.qml @@ -17,10 +17,10 @@ limitations under the License. */ -import Qt3D.Core 2.0 -import Qt3D.Render 2.0 -import Qt3D.Input 2.0 -import Qt3D.Extras 2.0 +import Qt3D.Core 2.15 +import Qt3D.Render 2.15 +import Qt3D.Input 2.15 +import Qt3D.Extras 2.15 Entity { @@ -37,8 +37,8 @@ Entity effect: stage.effect parameters: [ - Parameter { name: "diffuse"; value: "lightgray" }, - Parameter { name: "specular"; value: "black" }, + Parameter { name: "diffuse"; value: Qt.rgba(211, 211, 211, 1) }, + Parameter { name: "specular"; value: Qt.rgba(0, 0, 0, 1) }, Parameter { name: "shininess"; value: 1.0 }, Parameter { name: "bloom"; value: 0 } ] @@ -76,7 +76,9 @@ Entity ObjectPicker { id: groundPicker - onClicked: contextManager.setPositionPickPoint(pick.worldIntersection) + onClicked: function(pick) { + contextManager.setPositionPickPoint(pick.worldIntersection) + } } components: [ @@ -98,7 +100,9 @@ Entity ObjectPicker { id: leftPicker - onClicked: contextManager.setPositionPickPoint(pick.worldIntersection) + onClicked: function (pick) { + contextManager.setPositionPickPoint(pick.worldIntersection) + } } components: [ @@ -119,7 +123,9 @@ Entity ObjectPicker { id: rightPicker - onClicked: contextManager.setPositionPickPoint(pick.worldIntersection) + onClicked: function (pick) { + contextManager.setPositionPickPoint(pick.worldIntersection) + } } components: [ @@ -140,7 +146,9 @@ Entity ObjectPicker { id: backPicker - onClicked: contextManager.setPositionPickPoint(pick.worldIntersection) + onClicked: function (pick) { + contextManager.setPositionPickPoint(pick.worldIntersection) + } } components: [ diff --git a/qmlui/qml/fixturesfunctions/3DView/StageRock.qml b/qmlui/qml/fixturesfunctions/3DView/StageRock.qml index d9d4bc0eed..9de638905b 100644 --- a/qmlui/qml/fixturesfunctions/3DView/StageRock.qml +++ b/qmlui/qml/fixturesfunctions/3DView/StageRock.qml @@ -17,12 +17,12 @@ limitations under the License. */ -import QtQuick 2.7 +import QtQuick 2.15 -import Qt3D.Core 2.0 -import Qt3D.Render 2.0 -import Qt3D.Input 2.0 -import Qt3D.Extras 2.0 +import Qt3D.Core 2.15 +import Qt3D.Render 2.15 +import Qt3D.Input 2.15 +import Qt3D.Extras 2.15 Entity { @@ -42,8 +42,8 @@ Entity effect: stage.effect parameters: [ - Parameter { name: "diffuse"; value: "lightgray" }, - Parameter { name: "specular"; value: "black" }, + Parameter { name: "diffuse"; value: Qt.rgba(211, 211, 211, 1) }, + Parameter { name: "specular"; value: Qt.rgba(0, 0, 0, 1) }, Parameter { name: "shininess"; value: 1.0 }, Parameter { name: "bloom"; value: 0 } ] @@ -203,7 +203,9 @@ Entity ObjectPicker { id: stagePicker - onClicked: contextManager.setPositionPickPoint(pick.worldIntersection) + onClicked: function (pick) { + contextManager.setPositionPickPoint(pick.worldIntersection) + } } components: [ diff --git a/qmlui/qml/fixturesfunctions/3DView/StageSimple.qml b/qmlui/qml/fixturesfunctions/3DView/StageSimple.qml index 2d675dc0fd..4e2d0bdee2 100644 --- a/qmlui/qml/fixturesfunctions/3DView/StageSimple.qml +++ b/qmlui/qml/fixturesfunctions/3DView/StageSimple.qml @@ -17,10 +17,10 @@ limitations under the License. */ -import Qt3D.Core 2.0 -import Qt3D.Render 2.0 -import Qt3D.Input 2.0 -import Qt3D.Extras 2.0 +import Qt3D.Core 2.15 +import Qt3D.Render 2.15 +import Qt3D.Input 2.15 +import Qt3D.Extras 2.15 Entity { @@ -35,8 +35,8 @@ Entity { effect: stage.effect parameters: [ - Parameter { name: "diffuse"; value: "lightgray" }, - Parameter { name: "specular"; value: "black" }, + Parameter { name: "diffuse"; value: Qt.rgba(211, 211, 211, 1) }, + Parameter { name: "specular"; value: Qt.rgba(0, 0, 0, 1) }, Parameter { name: "shininess"; value: 1.0 }, Parameter { name: "bloom"; value: 0 } ] @@ -56,7 +56,9 @@ Entity ObjectPicker { id: stagePicker - onClicked: contextManager.setPositionPickPoint(pick.worldIntersection) + onClicked: function (pick) { + contextManager.setPositionPickPoint(pick.worldIntersection) + } } components: [ diff --git a/qmlui/qml/fixturesfunctions/3DView/StageTheatre.qml b/qmlui/qml/fixturesfunctions/3DView/StageTheatre.qml index 41409088bc..3999793a53 100644 --- a/qmlui/qml/fixturesfunctions/3DView/StageTheatre.qml +++ b/qmlui/qml/fixturesfunctions/3DView/StageTheatre.qml @@ -17,12 +17,12 @@ limitations under the License. */ -import QtQuick 2.7 +import QtQuick 2.15 -import Qt3D.Core 2.0 -import Qt3D.Render 2.0 -import Qt3D.Input 2.0 -import Qt3D.Extras 2.0 +import Qt3D.Core 2.15 +import Qt3D.Render 2.15 +import Qt3D.Input 2.15 +import Qt3D.Extras 2.15 Entity { @@ -45,8 +45,8 @@ Entity { effect: stage.effect parameters: [ - Parameter { name: "diffuse"; value: "lightgray" }, - Parameter { name: "specular"; value: "black" }, + Parameter { name: "diffuse"; value: Qt.rgba(211, 211, 211, 1) }, + Parameter { name: "specular"; value: Qt.rgba(0, 0, 0, 1) }, Parameter { name: "shininess"; value: 1.0 }, Parameter { name: "bloom"; value: 0 } ] @@ -167,7 +167,9 @@ Entity ObjectPicker { id: stagePicker - onClicked: contextManager.setPositionPickPoint(pick.worldIntersection) + onClicked: function (pick) { + contextManager.setPositionPickPoint(pick.worldIntersection) + } } components: [ diff --git a/qmlui/qml/fixturesfunctions/3DView/UpsampleEffect.qml b/qmlui/qml/fixturesfunctions/3DView/UpsampleEffect.qml index e6c8cd3bc2..f14d7b582c 100644 --- a/qmlui/qml/fixturesfunctions/3DView/UpsampleEffect.qml +++ b/qmlui/qml/fixturesfunctions/3DView/UpsampleEffect.qml @@ -17,8 +17,8 @@ limitations under the License. */ -import Qt3D.Core 2.0 -import Qt3D.Render 2.0 +import Qt3D.Core 2.15 +import Qt3D.Render 2.15 Effect { @@ -36,8 +36,26 @@ Effect shaderProgram: ShaderProgram { - vertexShaderCode: View3D.makeShader(loadSource("qrc:/fullscreen.vert")) - fragmentShaderCode: View3D.makeShader(loadSource("qrc:/upsample.frag")) + vertexShaderCode: View3D.makeGlShader(loadSource("qrc:/fullscreen.vert")) + fragmentShaderCode: View3D.makeGlShader(loadSource("qrc:/upsample.frag")) + } + } + ] + }, + Technique + { + graphicsApiFilter { api: GraphicsApiFilter.RHI; profile: GraphicsApiFilter.NoProfile; majorVersion: 1; minorVersion: 0 } + renderPasses: + [ + // Lights pass + RenderPass + { + filterKeys: FilterKey { name: "pass"; value: "upsample" } + shaderProgram: + ShaderProgram + { + vertexShaderCode: View3D.makeRhiShader(loadSource("qrc:/fullscreen_rhi.vert")) + fragmentShaderCode: View3D.makeRhiShader(loadSource("qrc:/upsample_rhi.frag")) } } ] diff --git a/qmlui/qml/fixturesfunctions/3DView/UpsampleFilter.qml b/qmlui/qml/fixturesfunctions/3DView/UpsampleFilter.qml index 6872cfa163..18ca1b8aa0 100644 --- a/qmlui/qml/fixturesfunctions/3DView/UpsampleFilter.qml +++ b/qmlui/qml/fixturesfunctions/3DView/UpsampleFilter.qml @@ -17,10 +17,9 @@ limitations under the License. */ -import Qt3D.Core 2.0 -import Qt3D.Render 2.0 - -import QtQuick 2.0 +import QtQuick 2.15 +import Qt3D.Core 2.15 +import Qt3D.Render 2.15 TechniqueFilter { @@ -34,7 +33,7 @@ TechniqueFilter Parameter { name: "tex"; value: inTex }, Parameter { name: "pixelSize"; value: pixelSize }, Parameter { name: "intensity"; value: {return index.x * View3D.smokeAmount * 0.8 } } - ] + ] RenderStateSet { diff --git a/qmlui/qml/fixturesfunctions/3DView/shaders/blit.frag b/qmlui/qml/fixturesfunctions/3DView/shaders/gl/blit.frag similarity index 100% rename from qmlui/qml/fixturesfunctions/3DView/shaders/blit.frag rename to qmlui/qml/fixturesfunctions/3DView/shaders/gl/blit.frag diff --git a/qmlui/qml/fixturesfunctions/3DView/shaders/directional.frag b/qmlui/qml/fixturesfunctions/3DView/shaders/gl/directional.frag similarity index 100% rename from qmlui/qml/fixturesfunctions/3DView/shaders/directional.frag rename to qmlui/qml/fixturesfunctions/3DView/shaders/gl/directional.frag diff --git a/qmlui/qml/fixturesfunctions/3DView/shaders/downsample.frag b/qmlui/qml/fixturesfunctions/3DView/shaders/gl/downsample.frag similarity index 100% rename from qmlui/qml/fixturesfunctions/3DView/shaders/downsample.frag rename to qmlui/qml/fixturesfunctions/3DView/shaders/gl/downsample.frag diff --git a/qmlui/qml/fixturesfunctions/3DView/shaders/fullscreen.vert b/qmlui/qml/fixturesfunctions/3DView/shaders/gl/fullscreen.vert similarity index 100% rename from qmlui/qml/fixturesfunctions/3DView/shaders/fullscreen.vert rename to qmlui/qml/fixturesfunctions/3DView/shaders/gl/fullscreen.vert diff --git a/qmlui/qml/fixturesfunctions/3DView/shaders/fxaa.frag b/qmlui/qml/fixturesfunctions/3DView/shaders/gl/fxaa.frag similarity index 100% rename from qmlui/qml/fixturesfunctions/3DView/shaders/fxaa.frag rename to qmlui/qml/fixturesfunctions/3DView/shaders/gl/fxaa.frag diff --git a/qmlui/qml/fixturesfunctions/3DView/shaders/gamma_correct.frag b/qmlui/qml/fixturesfunctions/3DView/shaders/gl/gamma_correct.frag similarity index 100% rename from qmlui/qml/fixturesfunctions/3DView/shaders/gamma_correct.frag rename to qmlui/qml/fixturesfunctions/3DView/shaders/gl/gamma_correct.frag diff --git a/qmlui/qml/fixturesfunctions/3DView/shaders/geo.frag b/qmlui/qml/fixturesfunctions/3DView/shaders/gl/geo.frag similarity index 100% rename from qmlui/qml/fixturesfunctions/3DView/shaders/geo.frag rename to qmlui/qml/fixturesfunctions/3DView/shaders/gl/geo.frag diff --git a/qmlui/qml/fixturesfunctions/3DView/shaders/geo.vert b/qmlui/qml/fixturesfunctions/3DView/shaders/gl/geo.vert similarity index 100% rename from qmlui/qml/fixturesfunctions/3DView/shaders/geo.vert rename to qmlui/qml/fixturesfunctions/3DView/shaders/gl/geo.vert diff --git a/qmlui/qml/fixturesfunctions/3DView/shaders/grab_bright.frag b/qmlui/qml/fixturesfunctions/3DView/shaders/gl/grab_bright.frag similarity index 100% rename from qmlui/qml/fixturesfunctions/3DView/shaders/grab_bright.frag rename to qmlui/qml/fixturesfunctions/3DView/shaders/gl/grab_bright.frag diff --git a/qmlui/qml/fixturesfunctions/3DView/shaders/output_depth.frag b/qmlui/qml/fixturesfunctions/3DView/shaders/gl/output_depth.frag similarity index 100% rename from qmlui/qml/fixturesfunctions/3DView/shaders/output_depth.frag rename to qmlui/qml/fixturesfunctions/3DView/shaders/gl/output_depth.frag diff --git a/qmlui/qml/fixturesfunctions/3DView/shaders/output_depth.vert b/qmlui/qml/fixturesfunctions/3DView/shaders/gl/output_depth.vert similarity index 100% rename from qmlui/qml/fixturesfunctions/3DView/shaders/output_depth.vert rename to qmlui/qml/fixturesfunctions/3DView/shaders/gl/output_depth.vert diff --git a/qmlui/qml/fixturesfunctions/3DView/shaders/output_front_depth.frag b/qmlui/qml/fixturesfunctions/3DView/shaders/gl/output_front_depth.frag similarity index 100% rename from qmlui/qml/fixturesfunctions/3DView/shaders/output_front_depth.frag rename to qmlui/qml/fixturesfunctions/3DView/shaders/gl/output_front_depth.frag diff --git a/qmlui/qml/fixturesfunctions/3DView/shaders/spotlight.vert b/qmlui/qml/fixturesfunctions/3DView/shaders/gl/spotlight.vert similarity index 100% rename from qmlui/qml/fixturesfunctions/3DView/shaders/spotlight.vert rename to qmlui/qml/fixturesfunctions/3DView/shaders/gl/spotlight.vert diff --git a/qmlui/qml/fixturesfunctions/3DView/shaders/spotlight_scattering.frag b/qmlui/qml/fixturesfunctions/3DView/shaders/gl/spotlight_scattering.frag similarity index 100% rename from qmlui/qml/fixturesfunctions/3DView/shaders/spotlight_scattering.frag rename to qmlui/qml/fixturesfunctions/3DView/shaders/gl/spotlight_scattering.frag diff --git a/qmlui/qml/fixturesfunctions/3DView/shaders/spotlight_shading.frag b/qmlui/qml/fixturesfunctions/3DView/shaders/gl/spotlight_shading.frag similarity index 100% rename from qmlui/qml/fixturesfunctions/3DView/shaders/spotlight_shading.frag rename to qmlui/qml/fixturesfunctions/3DView/shaders/gl/spotlight_shading.frag diff --git a/qmlui/qml/fixturesfunctions/3DView/shaders/upsample.frag b/qmlui/qml/fixturesfunctions/3DView/shaders/gl/upsample.frag similarity index 100% rename from qmlui/qml/fixturesfunctions/3DView/shaders/upsample.frag rename to qmlui/qml/fixturesfunctions/3DView/shaders/gl/upsample.frag diff --git a/qmlui/qml/fixturesfunctions/3DView/shaders/rhi/blit_rhi.frag b/qmlui/qml/fixturesfunctions/3DView/shaders/rhi/blit_rhi.frag new file mode 100644 index 0000000000..cc4bcccc28 --- /dev/null +++ b/qmlui/qml/fixturesfunctions/3DView/shaders/rhi/blit_rhi.frag @@ -0,0 +1,28 @@ +/* + Q Light Controller Plus + blit_rhi.frag + + Copyright (c) Eric Arnebäck + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0.txt + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +layout(location = 0) in vec2 fsUv; +layout(location = 0) out vec4 fragColor; +layout(binding = auto) uniform sampler2D colorTex; + +void main() +{ + vec3 finalColor = 1.0 * texture(colorTex, fsUv).rgb; + fragColor = vec4(finalColor, 1.0); +} diff --git a/qmlui/qml/fixturesfunctions/3DView/shaders/rhi/directional_rhi.frag b/qmlui/qml/fixturesfunctions/3DView/shaders/rhi/directional_rhi.frag new file mode 100644 index 0000000000..246583b366 --- /dev/null +++ b/qmlui/qml/fixturesfunctions/3DView/shaders/rhi/directional_rhi.frag @@ -0,0 +1,65 @@ +/* + Q Light Controller Plus + directional_rhi.frag + + Copyright (c) Eric Arnebäck + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0.txt + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +layout(location = 0) in vec2 fsUv; +layout(location = 0) out vec4 fragColor; + +layout(std140, binding = auto) uniform myUniforms { + float ambient; +}; + +layout(binding = auto) uniform sampler2D albedoTex; +layout(binding = auto) uniform sampler2D normalTex; +layout(binding = auto) uniform sampler2D specularTex; +layout(binding = auto) uniform sampler2D depthTex; + +void main() +{ + + vec3 position; + { + float z = texture(depthTex, fsUv).r; + + vec2 u = 2.0 * fsUv - vec2(1.0); + vec4 temp = inverseViewProjectionMatrix * vec4(u.x, u.y, -1.0 + 2.0 * z, 1.0); + temp.xyz = temp.xyz / temp.w; + position = temp.xyz; + } + + vec4 albedo = texture(albedoTex, fsUv).xyzw; + vec4 s = texture(specularTex, fsUv).xyzw; + vec4 specular = s.xyzw; + float shininess = s.w; + + vec3 finalColor = vec3(0.0); + vec3 l = normalize(vec3(1.05, 1.3, 0.9)); + vec3 n = normalize(texture(normalTex, fsUv).xyz); + float flag = normalize(texture(normalTex, fsUv).w); + + float isGuiElement = abs(albedo.w - 2.0) < 0.0001 ? 1.0 : 0.0; + finalColor += isGuiElement * albedo.rgb; + + vec3 v = normalize(eyePosition - position); + vec3 r = normalize(2.0 * dot(l, n.xyz) * n.xyz - l); + + if(flag < 2.1) + finalColor += (1.0 - isGuiElement) * ambient * ( albedo.rgb * max(0.0, dot(l, n)) + specular.rgb * pow(max(0.0, dot(r, v) ), shininess)); + + fragColor = vec4(finalColor, 1.0); +} diff --git a/qmlui/qml/fixturesfunctions/3DView/shaders/rhi/downsample_rhi.frag b/qmlui/qml/fixturesfunctions/3DView/shaders/rhi/downsample_rhi.frag new file mode 100644 index 0000000000..e6c4626402 --- /dev/null +++ b/qmlui/qml/fixturesfunctions/3DView/shaders/rhi/downsample_rhi.frag @@ -0,0 +1,56 @@ +/* + Q Light Controller Plus + downsample_rhi.frag + + Copyright (c) Eric Arnebäck + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0.txt + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +layout(location = 0) in vec2 fsUv; +layout(location = 0) out vec4 fragColor; + +layout(std140, binding = auto) uniform myUniforms { + vec4 pixelSize; +}; + +layout(binding = auto) uniform sampler2D tex; + +void main() +{ + vec2 halfpixel = 0.5 * vec2(pixelSize.x, pixelSize.y); + vec2 oneepixel = 1.0 * vec2(pixelSize.x, pixelSize.y); + + vec2 uv = fsUv; + + vec4 sum = vec4(0.0, 0.0, 0.0, 0.0); + + sum += (4.0/32.0) * texture(tex, uv).rgba; + + sum += (4.0/32.0) * texture(tex, uv + vec2(-halfpixel.x, -halfpixel.y) ); + sum += (4.0/32.0) * texture(tex, uv + vec2(+halfpixel.x, +halfpixel.y) ); + sum += (4.0/32.0) * texture(tex, uv + vec2(+halfpixel.x, -halfpixel.y) ); + sum += (4.0/32.0) * texture(tex, uv + vec2(-halfpixel.x, +halfpixel.y) ); + + sum += (2.0/32.0) * texture(tex, uv + vec2(+oneepixel.x, 0.0) ); + sum += (2.0/32.0) * texture(tex, uv + vec2(-oneepixel.x, 0.0) ); + sum += (2.0/32.0) * texture(tex, uv + vec2(0.0, +oneepixel.y) ); + sum += (2.0/32.0) * texture(tex, uv + vec2(0.0, -oneepixel.y) ); + + sum += (1.0/32.0) * texture(tex, uv + vec2(+oneepixel.x, +oneepixel.y) ); + sum += (1.0/32.0) * texture(tex, uv + vec2(-oneepixel.x, +oneepixel.y) ); + sum += (1.0/32.0) * texture(tex, uv + vec2(+oneepixel.x, -oneepixel.y) ); + sum += (1.0/32.0) * texture(tex, uv + vec2(-oneepixel.x, -oneepixel.y) ); + + fragColor = sum; +} diff --git a/qmlui/qml/fixturesfunctions/3DView/shaders/rhi/fullscreen_rhi.vert b/qmlui/qml/fixturesfunctions/3DView/shaders/rhi/fullscreen_rhi.vert new file mode 100644 index 0000000000..d285e4120b --- /dev/null +++ b/qmlui/qml/fixturesfunctions/3DView/shaders/rhi/fullscreen_rhi.vert @@ -0,0 +1,27 @@ +/* + Q Light Controller Plus + fullscreen_rhi.vert + + Copyright (c) Eric Arnebäck + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0.txt + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +layout(location = 0) in vec4 vertexPosition; +layout(location = 0) out vec2 fsUv; + +void main() +{ + fsUv = (modelMatrix * vertexPosition).xy * 0.5 + vec2(0.5); + gl_Position = (modelMatrix * vertexPosition); +} diff --git a/qmlui/qml/fixturesfunctions/3DView/shaders/rhi/fxaa_rhi.frag b/qmlui/qml/fixturesfunctions/3DView/shaders/rhi/fxaa_rhi.frag new file mode 100644 index 0000000000..b1c95a1485 --- /dev/null +++ b/qmlui/qml/fixturesfunctions/3DView/shaders/rhi/fxaa_rhi.frag @@ -0,0 +1,122 @@ +/* + Q Light Controller Plus + fxaa_rhi.frag + + Copyright (c) Eric Arnebäck + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0.txt + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +// MIT-licensed FXAA implementation taken from +// https://github.com/mattdesl/glsl-fxaa +// BEGINNING OF FXAA IMPLEMENTATION + +#ifndef FXAA_REDUCE_MIN + #define FXAA_REDUCE_MIN (1.0 / 128.0) +#endif +#ifndef FXAA_REDUCE_MUL + #define FXAA_REDUCE_MUL (1.0 / 8.0) +#endif +#ifndef FXAA_SPAN_MAX + #define FXAA_SPAN_MAX 8.0 +#endif + +//optimized version for mobile, where dependent +//texture reads can be a bottleneck +vec4 fxaa(sampler2D tex, vec2 fragCoord, vec2 resolution, + vec2 v_rgbNW, vec2 v_rgbNE, + vec2 v_rgbSW, vec2 v_rgbSE, + vec2 v_rgbM) { + vec4 color; + mediump vec2 inverseVP = vec2(1.0 / resolution.x, 1.0 / resolution.y); + vec3 rgbNW = texture(tex, v_rgbNW).xyz; + vec3 rgbNE = texture(tex, v_rgbNE).xyz; + vec3 rgbSW = texture(tex, v_rgbSW).xyz; + vec3 rgbSE = texture(tex, v_rgbSE).xyz; + vec4 texColor = texture(tex, v_rgbM); + vec3 rgbM = texColor.xyz; + vec3 luma = vec3(0.299, 0.587, 0.114); + float lumaNW = dot(rgbNW, luma); + float lumaNE = dot(rgbNE, luma); + float lumaSW = dot(rgbSW, luma); + float lumaSE = dot(rgbSE, luma); + float lumaM = dot(rgbM, luma); + float lumaMin = min(lumaM, min(min(lumaNW, lumaNE), min(lumaSW, lumaSE))); + float lumaMax = max(lumaM, max(max(lumaNW, lumaNE), max(lumaSW, lumaSE))); + + mediump vec2 dir; + dir.x = -((lumaNW + lumaNE) - (lumaSW + lumaSE)); + dir.y = ((lumaNW + lumaSW) - (lumaNE + lumaSE)); + + float dirReduce = max((lumaNW + lumaNE + lumaSW + lumaSE) * + (0.25 * FXAA_REDUCE_MUL), FXAA_REDUCE_MIN); + + float rcpDirMin = 1.0 / (min(abs(dir.x), abs(dir.y)) + dirReduce); + dir = min(vec2(FXAA_SPAN_MAX, FXAA_SPAN_MAX), + max(vec2(-FXAA_SPAN_MAX, -FXAA_SPAN_MAX), + dir * rcpDirMin)) * inverseVP; + + vec3 rgbA = 0.5 * ( + texture(tex, fragCoord * inverseVP + dir * (1.0 / 3.0 - 0.5)).xyz + + texture(tex, fragCoord * inverseVP + dir * (2.0 / 3.0 - 0.5)).xyz); + vec3 rgbB = rgbA * 0.5 + 0.25 * ( + texture(tex, fragCoord * inverseVP + dir * -0.5).xyz + + texture(tex, fragCoord * inverseVP + dir * 0.5).xyz); + + float lumaB = dot(rgbB, luma); + if ((lumaB < lumaMin) || (lumaB > lumaMax)) + color = vec4(rgbA, texColor.a); + else + color = vec4(rgbB, texColor.a); + return color; +} + +void texcoords(vec2 fragCoord, vec2 resolution, + out vec2 v_rgbNW, out vec2 v_rgbNE, + out vec2 v_rgbSW, out vec2 v_rgbSE, + out vec2 v_rgbM) { + vec2 inverseVP = 1.0 / resolution.xy; + v_rgbNW = (fragCoord + vec2(-1.0, -1.0)) * inverseVP; + v_rgbNE = (fragCoord + vec2(1.0, -1.0)) * inverseVP; + v_rgbSW = (fragCoord + vec2(-1.0, 1.0)) * inverseVP; + v_rgbSE = (fragCoord + vec2(1.0, 1.0)) * inverseVP; + v_rgbM = vec2(fragCoord * inverseVP); +} + +vec4 apply(sampler2D tex, vec2 fragCoord, vec2 resolution) { + mediump vec2 v_rgbNW; + mediump vec2 v_rgbNE; + mediump vec2 v_rgbSW; + mediump vec2 v_rgbSE; + mediump vec2 v_rgbM; + + //compute the texture coords + texcoords(fragCoord, resolution, v_rgbNW, v_rgbNE, v_rgbSW, v_rgbSE, v_rgbM); + + //compute FXAA + return fxaa(tex, fragCoord, resolution, v_rgbNW, v_rgbNE, v_rgbSW, v_rgbSE, v_rgbM); +} +// +// END OF FXAA IMPLEMENTATION +// + +layout(location = 0) in vec2 fsUv; +layout(location = 0) out vec4 fragColor; +layout(binding = auto) uniform sampler2D colorTex; + +void main() +{ + vec2 resolution = vec2(1024.0, 1024.0); + vec2 fragCoord = fsUv * resolution; + fragColor = apply(colorTex, fragCoord, resolution); +} diff --git a/qmlui/qml/fixturesfunctions/3DView/shaders/rhi/gamma_correct_rhi.frag b/qmlui/qml/fixturesfunctions/3DView/shaders/rhi/gamma_correct_rhi.frag new file mode 100644 index 0000000000..2bdaebba09 --- /dev/null +++ b/qmlui/qml/fixturesfunctions/3DView/shaders/rhi/gamma_correct_rhi.frag @@ -0,0 +1,33 @@ +/* + Q Light Controller Plus + gamma_correct_rhi.frag + + Copyright (c) Eric Arnebäck + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0.txt + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +layout(location = 0) in vec2 fsUv; +layout(location = 0) out vec4 fragColor; + +layout(binding = auto) uniform sampler2D hdrTex; +layout(binding = auto) uniform sampler2D bloomTex; + +void main() +{ + vec3 hdrColor = texture(hdrTex, fsUv).rgb; + hdrColor += 0.5 * texture(bloomTex, fsUv).rgb; + vec3 finalColor = vec3(1.0) - exp(-hdrColor * 1.0); + + fragColor = vec4(pow(finalColor, vec3(1.0 / 2.2)), 1.0); +} diff --git a/qmlui/qml/fixturesfunctions/3DView/shaders/rhi/geo_rhi.frag b/qmlui/qml/fixturesfunctions/3DView/shaders/rhi/geo_rhi.frag new file mode 100644 index 0000000000..789caa5e42 --- /dev/null +++ b/qmlui/qml/fixturesfunctions/3DView/shaders/rhi/geo_rhi.frag @@ -0,0 +1,35 @@ +/* + Q Light Controller Plus + geo_rhi.frag + + Copyright (c) Eric Arnebäck + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0.txt + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +layout(location = 0) in vec3 fsNormal; +layout(location = 1) in vec3 fsPos; +layout(location = 0) out vec4 [3] gOutput; +layout(std140, binding = auto) uniform myUniforms { + vec4 diffuse; + vec4 specular; + float shininess; + int bloom; +}; + +void main() +{ + gOutput[0] = vec4(diffuse.xyzw); + gOutput[1] = vec4(fsNormal.xyz, float(bloom) * 3.0); + gOutput[2] = vec4(specular.xyz, shininess); +} diff --git a/qmlui/qml/fixturesfunctions/3DView/shaders/rhi/geo_rhi.vert b/qmlui/qml/fixturesfunctions/3DView/shaders/rhi/geo_rhi.vert new file mode 100644 index 0000000000..c9e5d191e9 --- /dev/null +++ b/qmlui/qml/fixturesfunctions/3DView/shaders/rhi/geo_rhi.vert @@ -0,0 +1,31 @@ +/* + Q Light Controller Plus + geo_rhi.vert + + Copyright (c) Eric Arnebäck + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0.txt + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +layout(location = 0) in vec3 vertexPosition; +layout(location = 1) in vec3 vertexNormal; + +layout(location = 0) out vec3 fsNormal; +layout(location = 1) out vec3 fsPos; + +void main() +{ + fsNormal = (modelMatrix * vec4(vertexNormal, 0.0)).xyz; + gl_Position = projectionMatrix * viewMatrix * modelMatrix * vec4(vertexPosition, 1.0); + fsPos = (modelMatrix * vec4(vertexPosition, 1.0)).xyz; +} diff --git a/qmlui/qml/fixturesfunctions/3DView/shaders/rhi/grab_bright_rhi.frag b/qmlui/qml/fixturesfunctions/3DView/shaders/rhi/grab_bright_rhi.frag new file mode 100644 index 0000000000..aa9004f4f9 --- /dev/null +++ b/qmlui/qml/fixturesfunctions/3DView/shaders/rhi/grab_bright_rhi.frag @@ -0,0 +1,38 @@ +/* + Q Light Controller Plus + grab_bright_rhi.frag + + Copyright (c) Eric Arnebäck + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0.txt + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +layout(location = 0) in vec2 fsUv; +layout(location = 0) out vec4 fragColor; + +layout(binding = 2) uniform sampler2D albedoTex; +layout(binding = 3) uniform sampler2D normalTex; + +void main() +{ + vec4 albedo = texture(albedoTex, fsUv).xyzw; + float v = texture(normalTex, fsUv).w; + if (v > 2.0) + { + fragColor = vec4(albedo.rgb, 1.0); + } + else + { + fragColor = vec4(0.0, 0.0, 0.0, 0.0); + } +} diff --git a/qmlui/qml/fixturesfunctions/3DView/shaders/rhi/output_depth_rhi.frag b/qmlui/qml/fixturesfunctions/3DView/shaders/rhi/output_depth_rhi.frag new file mode 100644 index 0000000000..b3b5febf58 --- /dev/null +++ b/qmlui/qml/fixturesfunctions/3DView/shaders/rhi/output_depth_rhi.frag @@ -0,0 +1,20 @@ +/* + Q Light Controller Plus + output_depth_rhi.frag + + Copyright (c) Eric Arnebäck + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0.txt + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +void main(){} diff --git a/qmlui/qml/fixturesfunctions/3DView/shaders/rhi/output_depth_rhi.vert b/qmlui/qml/fixturesfunctions/3DView/shaders/rhi/output_depth_rhi.vert new file mode 100644 index 0000000000..7c738642b9 --- /dev/null +++ b/qmlui/qml/fixturesfunctions/3DView/shaders/rhi/output_depth_rhi.vert @@ -0,0 +1,30 @@ +/* + Q Light Controller Plus + output_depth_rhi.vert + + Copyright (c) Eric Arnebäck + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0.txt + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +layout(location = 0) in vec3 vertexPosition; +layout(std140, binding = auto) uniform myUniforms { + mat4 lightProjectionMatrix; + mat4 lightViewMatrix; +}; + +void main() +{ + gl_Position = lightProjectionMatrix * lightViewMatrix * modelMatrix * vec4(vertexPosition, 1.0); +} + diff --git a/qmlui/qml/fixturesfunctions/3DView/shaders/rhi/output_front_depth_rhi.frag b/qmlui/qml/fixturesfunctions/3DView/shaders/rhi/output_front_depth_rhi.frag new file mode 100644 index 0000000000..4497852cbb --- /dev/null +++ b/qmlui/qml/fixturesfunctions/3DView/shaders/rhi/output_front_depth_rhi.frag @@ -0,0 +1,26 @@ +/* + Q Light Controller Plus + output_front_depth_rhi.frag + + Copyright (c) Eric Arnebäck + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0.txt + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +layout(location = 0) in vec3 fsPos; +layout(location = 0) out vec4 fragColor; + +void main() +{ + fragColor = vec4(fsPos.xyz, 0.0); +} diff --git a/qmlui/qml/fixturesfunctions/3DView/shaders/rhi/spotlight_rhi.vert b/qmlui/qml/fixturesfunctions/3DView/shaders/rhi/spotlight_rhi.vert new file mode 100644 index 0000000000..e70c3dc961 --- /dev/null +++ b/qmlui/qml/fixturesfunctions/3DView/shaders/rhi/spotlight_rhi.vert @@ -0,0 +1,38 @@ +/* + Q Light Controller Plus + spotlight_rhi.vert + + Copyright (c) Eric Arnebäck + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0.txt + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +layout(location = 0) in vec3 vertexPosition; +layout(location = 0) out vec3 fsPos; + +layout(std140, binding = auto) uniform myUniforms { + mat4 customModelMatrix; + float coneTopRadius; + float coneBottomRadius; +}; + +void main() +{ + // the mesh is cylinder. We modulate the bottom and top radiuses in the vertex shader. + vec3 p = (vertexPosition.y > 0.0) ? + vertexPosition * vec3(coneTopRadius, 1.0, coneTopRadius): + vertexPosition * vec3(coneBottomRadius, 1.0, coneBottomRadius); + + fsPos = (customModelMatrix * vec4(p, 1.0)).xyz; + gl_Position = viewProjectionMatrix * customModelMatrix * vec4(p, 1.0); +} diff --git a/qmlui/qml/fixturesfunctions/3DView/shaders/rhi/spotlight_scattering_rhi.frag b/qmlui/qml/fixturesfunctions/3DView/shaders/rhi/spotlight_scattering_rhi.frag new file mode 100644 index 0000000000..fc859689d8 --- /dev/null +++ b/qmlui/qml/fixturesfunctions/3DView/shaders/rhi/spotlight_scattering_rhi.frag @@ -0,0 +1,140 @@ +/* + Q Light Controller Plus + spotlight_scattering_rhi.frag + + Copyright (c) Eric Arnebäck + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0.txt + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +layout(location = 0) in vec3 fsPos; +layout(location = 0) out vec4 fragColor; + +layout(std140, binding = auto) uniform myUniforms { + vec3 lightDir; + vec3 lightPos; + float lightIntensity; + int raymarchSteps; + float uLightTanCutoffAngle; + vec3 lightColor; + int useShadows; + vec4 goboRotation; + float coneTopRadius; + float coneBottomRadius; + float coneDistCutoff; + float smokeAmount; + mat4 lightViewProjectionScaleAndOffsetMatrix; + mat4 lightViewMatrix; + float headLength; +}; + +layout(binding = auto) uniform sampler2D depthTex; +layout(binding = auto) uniform sampler2D goboTex; +layout(binding = auto) uniform sampler2D shadowTex; +layout(binding = auto) uniform sampler2D frontDepthTex; + +float hash(float n) +{ + return fract(sin(n) * 43758.5453123); +} + +void main() +{ + + vec3 l = lightDir; + vec3 rd = normalize(fsPos - eyePosition); // ray marching direction. + + vec3 begP; + vec3 endP = fsPos; + + vec4 u = viewProjectionMatrix * vec4(fsPos, 1.0); + vec2 uv = (u.xy / u.w) * 0.5 + vec2(0.5); + + float z = texture(depthTex, uv).r; + + vec4 temp = inverseViewProjectionMatrix * vec4(u.x / u.w, u.y / u.w, -1.0 + 2.0 * z, 1.0); + + temp.xyz = temp.xyz / temp.w; + vec3 position = temp.xyz; + vec3 intersectBackgroundP = position; + + begP = texture(frontDepthTex, uv).xyz; + if (length(begP) < 0.0001) + { + begP = eyePosition; // camera is inside spotlight. + } + else + { + if(distance(intersectBackgroundP, eyePosition) < distance(begP, eyePosition)) + { + fragColor = vec4(0.0, 0.0, 0.0, 0.0); + return; + } + } + + endP = fsPos; + if(distance(begP,intersectBackgroundP) < distance(begP, fsPos)) + endP = intersectBackgroundP; + + float stepLength = distance(begP, endP) / float(raymarchSteps); + + vec3 p = begP; + + // add initial noise add beginning of ray. noise is removed by anti-aliasing later + vec2 j = gl_FragCoord.xy * 10.2; + p += rd * stepLength * hash(j.x + j.y * 47.0) * 0.3; + + float accum = 0.0; + int i; + float beta = 2.0e-5; + + // precalculate fixed math + float g = 0.67; + float pmFactor = ((1.0) / (4.0 * 3.14)) * ((3.0 * (1.0 - g * g)) / (2.0 * (2.0 + g * g))); + + for (i = 0; i < raymarchSteps; ++i) + { + float shadowMask = 1.0f; + if(useShadows == 1) + { + vec4 q = (lightViewProjectionScaleAndOffsetMatrix * vec4(p, 1.0)); + float curZ = q.z / q.w; + float refZ = texture(shadowTex, (q.xy / q.w)).r; + shadowMask = (curZ < refZ ? 1.0 : 0.0); + } + + float dist = distance(p, lightPos); + float cos_theta = dot(l, -rd); + float pm = pmFactor * ((1.0 + cos_theta * cos_theta) / (pow(1.0 + g * g - 2.0 * g * cos_theta, 3.0 / 2.0))); + vec3 pf = p * 0.5; + + vec4 myq = lightViewMatrix * vec4(p.xyz, 1.0); + float r = coneTopRadius + (coneBottomRadius - coneTopRadius) * ((abs(myq.z) - 0.5 * headLength) / coneDistCutoff); + vec2 tc = mat2x2(goboRotation.x, goboRotation.y, goboRotation.z, goboRotation.w) * (((-myq.xy) * (1.0 / r))) * 0.5 + 0.5; + + vec4 gSample = texture(goboTex, tc.xy); + + float goboMask = gSample.a * gSample.r; + + float contrib = (1.0 / (1.0 + 0.09 * dist + 0.032 * dist * dist)) * stepLength; + + contrib *= shadowMask; + contrib *= goboMask; + + accum += contrib; + + p += rd * stepLength; + } + fragColor = vec4(accum * lightIntensity * smokeAmount * lightColor, 0.0); + //fragColor = vec4(1.0, 0.0, 0.0, 0.0); +} diff --git a/qmlui/qml/fixturesfunctions/3DView/shaders/rhi/spotlight_shading_rhi.frag b/qmlui/qml/fixturesfunctions/3DView/shaders/rhi/spotlight_shading_rhi.frag new file mode 100644 index 0000000000..8f166d3132 --- /dev/null +++ b/qmlui/qml/fixturesfunctions/3DView/shaders/rhi/spotlight_shading_rhi.frag @@ -0,0 +1,79 @@ +/* + Q Light Controller Plus + spotlight_shading_rhi.frag + + Copyright (c) Eric Arnebäck + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0.txt + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +layout(location = 0) in vec3 fsPos; +layout(location = 0) out vec4 fragColor; + +layout(std140, binding = auto) uniform myUniforms { + uniform vec3 lightPos; + uniform vec3 lightDir; + uniform vec3 lightColor; + uniform float lightIntensity; + uniform int useShadows; + uniform vec4 goboRotation; + uniform float coneTopRadius; + uniform float coneBottomRadius; + uniform float coneDistCutoff; + uniform mat4 lightViewMatrix; + uniform mat4 lightViewProjectionMatrix; + uniform mat4 lightProjectionMatrix; + uniform float headLength; +}; + +layout(binding = auto) uniform sampler2D albedoTex; +layout(binding = auto) uniform sampler2D normalTex; +layout(binding = auto) uniform sampler2D depthTex; +layout(binding = auto) uniform sampler2D goboTex; +layout(binding = auto) uniform sampler2D shadowTex; + +void main() +{ + + vec3 albedo, normal, position; + + vec4 u = viewProjectionMatrix * vec4(fsPos, 1.0); + vec2 uv = (u.xy / u.w) * 0.5 + vec2(0.5); + albedo = texture(albedoTex, uv).rgb; + normal = texture(normalTex, uv).xyz; + float z = texture(depthTex, uv).r; + + vec4 temp = inverseViewProjectionMatrix * vec4(u.x / u.w, u.y / u.w, -1.0 + 2.0 * z, 1.0); + temp.xyz = temp.xyz / temp.w; + position = temp.xyz; + + float shadowMask = 1.0; + if (useShadows == 1) { + vec4 p = lightProjectionMatrix * lightViewMatrix * vec4(position.xyz, 1.0); + float curZ = (p.z / p.w) * 0.5 + 0.5; + float refZ = texture(shadowTex, ((p.xy) / p.w) * 0.5 + vec2(0.5)).r; + shadowMask = (curZ < refZ + 0.0003 ? 1.0 : 0.0); + } + + vec4 q = lightViewMatrix * vec4(position.xyz, 1.0); + float r = coneTopRadius + (coneBottomRadius - coneTopRadius) * ((abs(q.z) - 0.5 * headLength) / coneDistCutoff); + vec2 tc = (mat2x2(goboRotation.x, goboRotation.y, goboRotation.z, goboRotation.w) * ((-q.xy) * (1.0 / r))) * 0.5 + 0.5; + + vec4 gSample = texture(goboTex, tc.xy); + float goboMask = gSample.a * gSample.r; + + vec3 finalColor = shadowMask * goboMask * lightColor * lightIntensity * max(0, dot(normal, -lightDir)) * albedo; + + fragColor = vec4(finalColor, 1.0); + //fragColor = vec4(1.0, 0.0, 0.0, 1.0); +} diff --git a/qmlui/qml/fixturesfunctions/3DView/shaders/rhi/upsample_rhi.frag b/qmlui/qml/fixturesfunctions/3DView/shaders/rhi/upsample_rhi.frag new file mode 100644 index 0000000000..e4de2328bc --- /dev/null +++ b/qmlui/qml/fixturesfunctions/3DView/shaders/rhi/upsample_rhi.frag @@ -0,0 +1,50 @@ +/* + Q Light Controller Plus + upsample_rhi.frag + + Copyright (c) Eric Arnebäck + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0.txt + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +layout(location = 0) in vec2 fsUv; +layout(location = 0) out vec4 fragColor; + +layout(std140, binding = auto) uniform myUniforms { + vec4 pixelSize; + vec4 intensity; +}; + +layout(binding = auto) uniform sampler2D tex; + +void main() +{ + vec2 halfpixel = pixelSize.xy; + vec2 uv = fsUv; + + vec4 sum = vec4(0.0, 0.0, 0.0, 0.0); + + sum += (2.0 / 16.0) * texture(tex, uv + vec2(-halfpixel.x, 0.0) ); + sum += (2.0 / 16.0) * texture(tex, uv + vec2( 0.0, halfpixel.y) ); + sum += (2.0 / 16.0) * texture(tex, uv + vec2( halfpixel.x, 0.0) ); + sum += (2.0 / 16.0) * texture(tex, uv + vec2( 0.0, -halfpixel.y) ); + + sum += (1.0 / 16.0) * texture(tex, uv + vec2(-halfpixel.x, -halfpixel.y) ); + sum += (1.0 / 16.0) * texture(tex, uv + vec2(-halfpixel.x, halfpixel.y) ); + sum += (1.0 / 16.0) * texture(tex, uv + vec2( halfpixel.x, -halfpixel.y) ); + sum += (1.0 / 16.0) * texture(tex, uv + vec2( halfpixel.x, halfpixel.y) ); + + sum += (4.0 / 16.0) * texture(tex, uv); + + fragColor = intensity.x * sum; +} diff --git a/qmlui/qml/fixturesfunctions/AddFunctionMenu.qml b/qmlui/qml/fixturesfunctions/AddFunctionMenu.qml index 494392ae99..5a7fc430e0 100644 --- a/qmlui/qml/fixturesfunctions/AddFunctionMenu.qml +++ b/qmlui/qml/fixturesfunctions/AddFunctionMenu.qml @@ -21,7 +21,6 @@ import QtQuick 2.0 import QtQuick.Controls 2.1 import org.qlcplus.classes 1.0 -import "." Popup { diff --git a/qmlui/qml/fixturesfunctions/AudioEditor.qml b/qmlui/qml/fixturesfunctions/AudioEditor.qml index d08af47e40..278951ccd8 100644 --- a/qmlui/qml/fixturesfunctions/AudioEditor.qml +++ b/qmlui/qml/fixturesfunctions/AudioEditor.qml @@ -19,12 +19,11 @@ import QtQuick 2.0 import QtQuick.Layouts 1.1 -import QtQuick.Dialogs 1.1 +import QtQuick.Dialogs import QtQuick.Controls 2.1 import org.qlcplus.classes 1.0 import "TimeUtils.js" as TimeUtils -import "." Rectangle { diff --git a/qmlui/qml/fixturesfunctions/BeamTool.qml b/qmlui/qml/fixturesfunctions/BeamTool.qml index 086556ed7f..a8ef041367 100644 --- a/qmlui/qml/fixturesfunctions/BeamTool.qml +++ b/qmlui/qml/fixturesfunctions/BeamTool.qml @@ -21,7 +21,6 @@ import QtQuick 2.0 import QtQuick.Layouts 1.0 import org.qlcplus.classes 1.0 -import "." Rectangle { diff --git a/qmlui/qml/fixturesfunctions/BottomPanel.qml b/qmlui/qml/fixturesfunctions/BottomPanel.qml index 738eada858..506037205b 100644 --- a/qmlui/qml/fixturesfunctions/BottomPanel.qml +++ b/qmlui/qml/fixturesfunctions/BottomPanel.qml @@ -18,7 +18,6 @@ */ import QtQuick 2.0 -import "." Rectangle { diff --git a/qmlui/qml/fixturesfunctions/ChaserEditor.qml b/qmlui/qml/fixturesfunctions/ChaserEditor.qml index 11e0fa3312..4b30e28e77 100644 --- a/qmlui/qml/fixturesfunctions/ChaserEditor.qml +++ b/qmlui/qml/fixturesfunctions/ChaserEditor.qml @@ -23,7 +23,6 @@ import QtQuick.Controls 2.13 import org.qlcplus.classes 1.0 import "TimeUtils.js" as TimeUtils -import "." Rectangle { diff --git a/qmlui/qml/fixturesfunctions/CollectionEditor.qml b/qmlui/qml/fixturesfunctions/CollectionEditor.qml index c5563fdf0a..bc9cdea445 100644 --- a/qmlui/qml/fixturesfunctions/CollectionEditor.qml +++ b/qmlui/qml/fixturesfunctions/CollectionEditor.qml @@ -22,7 +22,6 @@ import QtQuick.Layouts 1.1 import QtQuick.Controls 2.13 import org.qlcplus.classes 1.0 -import "." Rectangle { diff --git a/qmlui/qml/fixturesfunctions/CollectionFunctionDelegate.qml b/qmlui/qml/fixturesfunctions/CollectionFunctionDelegate.qml index 1752136350..075aac5071 100644 --- a/qmlui/qml/fixturesfunctions/CollectionFunctionDelegate.qml +++ b/qmlui/qml/fixturesfunctions/CollectionFunctionDelegate.qml @@ -19,7 +19,6 @@ import QtQuick 2.0 import org.qlcplus.classes 1.0 -import "." Rectangle { diff --git a/qmlui/qml/fixturesfunctions/DMXView.qml b/qmlui/qml/fixturesfunctions/DMXView.qml index a4df0b86ab..7768871594 100644 --- a/qmlui/qml/fixturesfunctions/DMXView.qml +++ b/qmlui/qml/fixturesfunctions/DMXView.qml @@ -20,7 +20,6 @@ import QtQuick 2.0 import QtQuick.Controls 2.1 -import "." Rectangle { diff --git a/qmlui/qml/fixturesfunctions/EFXEditor.qml b/qmlui/qml/fixturesfunctions/EFXEditor.qml index 47a5561bc6..1078553646 100644 --- a/qmlui/qml/fixturesfunctions/EFXEditor.qml +++ b/qmlui/qml/fixturesfunctions/EFXEditor.qml @@ -24,7 +24,6 @@ import QtQuick.Controls 2.13 import org.qlcplus.classes 1.0 import "TimeUtils.js" as TimeUtils -import "." Rectangle { diff --git a/qmlui/qml/fixturesfunctions/EFXPreview.qml b/qmlui/qml/fixturesfunctions/EFXPreview.qml index aa9edbe6eb..106f38e7bd 100644 --- a/qmlui/qml/fixturesfunctions/EFXPreview.qml +++ b/qmlui/qml/fixturesfunctions/EFXPreview.qml @@ -20,7 +20,6 @@ import QtQuick 2.0 import "CanvasDrawFunctions.js" as DrawFuncs -import "." Rectangle { diff --git a/qmlui/qml/fixturesfunctions/EditorTopBar.qml b/qmlui/qml/fixturesfunctions/EditorTopBar.qml index 6c31141fa3..95f35e4c3f 100644 --- a/qmlui/qml/fixturesfunctions/EditorTopBar.qml +++ b/qmlui/qml/fixturesfunctions/EditorTopBar.qml @@ -21,7 +21,6 @@ import QtQuick 2.0 import QtQuick.Layouts 1.1 import org.qlcplus.classes 1.0 -import "." RowLayout { diff --git a/qmlui/qml/fixturesfunctions/Fixture2DItem.qml b/qmlui/qml/fixturesfunctions/Fixture2DItem.qml index 68259a271d..8c47841948 100644 --- a/qmlui/qml/fixturesfunctions/Fixture2DItem.qml +++ b/qmlui/qml/fixturesfunctions/Fixture2DItem.qml @@ -21,7 +21,6 @@ import QtQuick 2.10 import org.qlcplus.classes 1.0 import "CanvasDrawFunctions.js" as DrawFuncs -import "." Rectangle { @@ -301,8 +300,7 @@ Rectangle onEntered: fixtureLabel.visible = true onExited: showLabel ? fixtureLabel.visible = true : fixtureLabel.visible = false - onPressed: - { + onPressed: function (mouse) { // do not accept this event to propagate it to the drag rectangle mouse.accepted = false } diff --git a/qmlui/qml/fixturesfunctions/FixtureBrowser.qml b/qmlui/qml/fixturesfunctions/FixtureBrowser.qml index f644537b08..78549f9880 100644 --- a/qmlui/qml/fixturesfunctions/FixtureBrowser.qml +++ b/qmlui/qml/fixturesfunctions/FixtureBrowser.qml @@ -22,7 +22,6 @@ import QtQuick.Layouts 1.3 import QtQuick.Controls 2.1 import org.qlcplus.classes 1.0 -import "." Rectangle { @@ -132,8 +131,7 @@ Rectangle width: modelsList.width - (manufScroll.visible ? manufScroll.width : 0) isManufacturer: true textLabel: modelData - onMouseEvent: - { + onMouseEvent: function (type, iID, iType, qItem, mouseMods) { if (type == App.Clicked) { mfText.label = modelData @@ -239,8 +237,7 @@ Rectangle manufacturer: fixtureBrowser.selectedManufacturer textLabel: modelData - onMouseEvent: - { + onMouseEvent: function (type, iID, iType, qItem, mouseMods) { if (type == App.Clicked) { modelsList.currentIndex = index diff --git a/qmlui/qml/fixturesfunctions/FixtureBrowserDelegate.qml b/qmlui/qml/fixturesfunctions/FixtureBrowserDelegate.qml index b7fe91a0a7..512a4834a6 100644 --- a/qmlui/qml/fixturesfunctions/FixtureBrowserDelegate.qml +++ b/qmlui/qml/fixturesfunctions/FixtureBrowserDelegate.qml @@ -21,7 +21,6 @@ import QtQuick 2.0 import org.qlcplus.classes 1.0 import "FixtureDrag.js" as FxDragJS -import "." Item { @@ -111,12 +110,13 @@ Item id: fxMouseArea anchors.fill: parent hoverEnabled: true - onClicked: fxDraggableItem.mouseEvent(App.Clicked, 0, 0, fxDraggableItem, mouse.modifiers) + onClicked: function (mouse) { + fxDraggableItem.mouseEvent(App.Clicked, 0, 0, fxDraggableItem, mouse.modifiers) + } drag.target: FixtureDragItem { } drag.threshold: 30 - onPressed: - { + onPressed: function (mouse) { if (fxDraggableItem.isManufacturer == false) { fxDraggableItem.mouseEvent(App.Clicked, 0, 0, fxDraggableItem, mouse.modifiers) @@ -124,11 +124,13 @@ Item FxDragJS.initProperties() } } - onPositionChanged: + onPositionChanged: function (mouse) { if (fxDraggableItem.isManufacturer == false && drag.active == true) FxDragJS.handleDrag(mouse) - onReleased: + } + onReleased: function (mouse) { if (fxDraggableItem.isManufacturer == false && drag.active == true) FxDragJS.endDrag(mouse) + } } } diff --git a/qmlui/qml/fixturesfunctions/FixtureChannelDelegate.qml b/qmlui/qml/fixturesfunctions/FixtureChannelDelegate.qml index 1f11d4f784..102c4ceef2 100644 --- a/qmlui/qml/fixturesfunctions/FixtureChannelDelegate.qml +++ b/qmlui/qml/fixturesfunctions/FixtureChannelDelegate.qml @@ -22,7 +22,6 @@ import QtQuick.Layouts 1.0 import QtQuick.Controls 2.14 import org.qlcplus.classes 1.0 -import "." Rectangle { diff --git a/qmlui/qml/fixturesfunctions/FixtureDMXItem.qml b/qmlui/qml/fixturesfunctions/FixtureDMXItem.qml index 6cf0339c43..08bf1d4c1c 100644 --- a/qmlui/qml/fixturesfunctions/FixtureDMXItem.qml +++ b/qmlui/qml/fixturesfunctions/FixtureDMXItem.qml @@ -19,7 +19,6 @@ import QtQuick 2.2 import org.qlcplus.classes 1.0 -import "." Rectangle { diff --git a/qmlui/qml/fixturesfunctions/FixtureDragItem.qml b/qmlui/qml/fixturesfunctions/FixtureDragItem.qml index e0c4ae11d7..224b134931 100644 --- a/qmlui/qml/fixturesfunctions/FixtureDragItem.qml +++ b/qmlui/qml/fixturesfunctions/FixtureDragItem.qml @@ -18,7 +18,6 @@ */ import QtQuick 2.0 -import "." Item { diff --git a/qmlui/qml/fixturesfunctions/FixtureGroupEditor.qml b/qmlui/qml/fixturesfunctions/FixtureGroupEditor.qml index a2dd77cf8d..2fc2d06164 100644 --- a/qmlui/qml/fixturesfunctions/FixtureGroupEditor.qml +++ b/qmlui/qml/fixturesfunctions/FixtureGroupEditor.qml @@ -22,7 +22,6 @@ import QtQuick.Layouts 1.0 import QtQuick.Controls 2.1 import org.qlcplus.classes 1.0 -import "." Rectangle { diff --git a/qmlui/qml/fixturesfunctions/FixtureGroupManager.qml b/qmlui/qml/fixturesfunctions/FixtureGroupManager.qml index dc827b164d..26bf1273b3 100644 --- a/qmlui/qml/fixturesfunctions/FixtureGroupManager.qml +++ b/qmlui/qml/fixturesfunctions/FixtureGroupManager.qml @@ -22,7 +22,6 @@ import QtQuick.Layouts 1.1 import QtQuick.Controls 2.2 import org.qlcplus.classes 1.0 -import "." Rectangle { diff --git a/qmlui/qml/fixturesfunctions/FixtureHeadDelegate.qml b/qmlui/qml/fixturesfunctions/FixtureHeadDelegate.qml index b8f6f4719d..62d8a12567 100644 --- a/qmlui/qml/fixturesfunctions/FixtureHeadDelegate.qml +++ b/qmlui/qml/fixturesfunctions/FixtureHeadDelegate.qml @@ -20,7 +20,6 @@ import QtQuick 2.0 import org.qlcplus.classes 1.0 -import "." Rectangle { diff --git a/qmlui/qml/fixturesfunctions/FixtureNodeDelegate.qml b/qmlui/qml/fixturesfunctions/FixtureNodeDelegate.qml index 9a44a25cd9..24efdc74ea 100644 --- a/qmlui/qml/fixturesfunctions/FixtureNodeDelegate.qml +++ b/qmlui/qml/fixturesfunctions/FixtureNodeDelegate.qml @@ -21,7 +21,6 @@ import QtQuick 2.2 import QtQuick.Layouts 1.0 import org.qlcplus.classes 1.0 -import "." Column { diff --git a/qmlui/qml/fixturesfunctions/FixtureProperties.qml b/qmlui/qml/fixturesfunctions/FixtureProperties.qml index 8633e93f17..7027012b39 100644 --- a/qmlui/qml/fixturesfunctions/FixtureProperties.qml +++ b/qmlui/qml/fixturesfunctions/FixtureProperties.qml @@ -21,7 +21,6 @@ import QtQuick 2.3 import QtQuick.Controls 2.1 import QtQuick.Layouts 1.1 -import "." Rectangle { diff --git a/qmlui/qml/fixturesfunctions/FixtureSummary.qml b/qmlui/qml/fixturesfunctions/FixtureSummary.qml index d36e644f47..ab97308f08 100644 --- a/qmlui/qml/fixturesfunctions/FixtureSummary.qml +++ b/qmlui/qml/fixturesfunctions/FixtureSummary.qml @@ -21,7 +21,6 @@ import QtQuick 2.0 import QtQuick.Layouts 1.0 import org.qlcplus.classes 1.0 -import "." Rectangle { diff --git a/qmlui/qml/fixturesfunctions/FixturesAndFunctions.qml b/qmlui/qml/fixturesfunctions/FixturesAndFunctions.qml index 2593da1142..9c86dda185 100644 --- a/qmlui/qml/fixturesfunctions/FixturesAndFunctions.qml +++ b/qmlui/qml/fixturesfunctions/FixturesAndFunctions.qml @@ -21,7 +21,6 @@ import QtQuick 2.8 import QtQuick.Controls 2.1 import QtQuick.Layouts 1.1 -import "." Rectangle { @@ -205,7 +204,7 @@ Rectangle height: viewToolbar.height - 4 anchors.margins: 1 model: ioManager.universesListModel - currValue: contextManager.universeFilter + currValue: contextManager ? contextManager.universeFilter : -1 onValueChanged: { diff --git a/qmlui/qml/fixturesfunctions/FunctionManager.qml b/qmlui/qml/fixturesfunctions/FunctionManager.qml index bb703b19f5..f24734b05a 100644 --- a/qmlui/qml/fixturesfunctions/FunctionManager.qml +++ b/qmlui/qml/fixturesfunctions/FunctionManager.qml @@ -22,7 +22,6 @@ import QtQuick.Layouts 1.1 import QtQuick.Controls 2.1 import org.qlcplus.classes 1.0 -import "." Rectangle { diff --git a/qmlui/qml/fixturesfunctions/GridEditor.qml b/qmlui/qml/fixturesfunctions/GridEditor.qml index c8e2eac887..02673386cf 100644 --- a/qmlui/qml/fixturesfunctions/GridEditor.qml +++ b/qmlui/qml/fixturesfunctions/GridEditor.qml @@ -21,7 +21,6 @@ import QtQuick 2.0 import QtQuick.Layouts 1.2 import QtQuick.Controls 2.13 -import "." Rectangle { diff --git a/qmlui/qml/fixturesfunctions/IntensityTool.qml b/qmlui/qml/fixturesfunctions/IntensityTool.qml index 61ebe7ca3f..630a6216ff 100644 --- a/qmlui/qml/fixturesfunctions/IntensityTool.qml +++ b/qmlui/qml/fixturesfunctions/IntensityTool.qml @@ -22,7 +22,6 @@ import QtQuick.Layouts 1.1 import QtQuick.Controls 2.0 import org.qlcplus.classes 1.0 -import "." Rectangle { diff --git a/qmlui/qml/fixturesfunctions/LeftPanel.qml b/qmlui/qml/fixturesfunctions/LeftPanel.qml index 9537338ff5..08e99ec35a 100644 --- a/qmlui/qml/fixturesfunctions/LeftPanel.qml +++ b/qmlui/qml/fixturesfunctions/LeftPanel.qml @@ -22,7 +22,6 @@ import QtQuick.Layouts 1.0 import QtQuick.Controls 2.2 import org.qlcplus.classes 1.0 -import "." SidePanel { @@ -31,8 +30,7 @@ SidePanel anchors.leftMargin: 0 panelAlignment: Qt.AlignLeft - onContentLoaded: - { + onContentLoaded: function (item, ID) { item.width = Qt.binding(function() { return leftSidePanel.width - collapseWidth }) item.height = Qt.binding(function() { return leftSidePanel.height }) } diff --git a/qmlui/qml/fixturesfunctions/PaletteManager.qml b/qmlui/qml/fixturesfunctions/PaletteManager.qml index 9df70337e7..374bd301d7 100644 --- a/qmlui/qml/fixturesfunctions/PaletteManager.qml +++ b/qmlui/qml/fixturesfunctions/PaletteManager.qml @@ -22,7 +22,6 @@ import QtQuick.Layouts 1.1 import QtQuick.Controls 2.2 import org.qlcplus.classes 1.0 -import "." Rectangle { diff --git a/qmlui/qml/fixturesfunctions/PositionTool.qml b/qmlui/qml/fixturesfunctions/PositionTool.qml index e0369e8250..235ebe0ee9 100644 --- a/qmlui/qml/fixturesfunctions/PositionTool.qml +++ b/qmlui/qml/fixturesfunctions/PositionTool.qml @@ -22,7 +22,6 @@ import QtQuick.Layouts 1.1 import org.qlcplus.classes 1.0 import "CanvasDrawFunctions.js" as DrawFuncs -import "." Rectangle { diff --git a/qmlui/qml/fixturesfunctions/PresetCapabilityItem.qml b/qmlui/qml/fixturesfunctions/PresetCapabilityItem.qml index a1a0a5d3af..b73f5e5ce8 100644 --- a/qmlui/qml/fixturesfunctions/PresetCapabilityItem.qml +++ b/qmlui/qml/fixturesfunctions/PresetCapabilityItem.qml @@ -20,7 +20,6 @@ import QtQuick 2.0 import org.qlcplus.classes 1.0 -import "." Rectangle { diff --git a/qmlui/qml/fixturesfunctions/PresetsTool.qml b/qmlui/qml/fixturesfunctions/PresetsTool.qml index 17d07bd963..fe5f1bd821 100644 --- a/qmlui/qml/fixturesfunctions/PresetsTool.qml +++ b/qmlui/qml/fixturesfunctions/PresetsTool.qml @@ -20,7 +20,6 @@ import QtQuick 2.3 import org.qlcplus.classes 1.0 -import "." Rectangle { diff --git a/qmlui/qml/fixturesfunctions/RGBMatrixEditor.qml b/qmlui/qml/fixturesfunctions/RGBMatrixEditor.qml index 4aadd60170..0a70ab7b78 100644 --- a/qmlui/qml/fixturesfunctions/RGBMatrixEditor.qml +++ b/qmlui/qml/fixturesfunctions/RGBMatrixEditor.qml @@ -19,13 +19,12 @@ import QtQuick 2.0 import QtQuick.Layouts 1.2 -import QtQuick.Dialogs 1.1 +import QtQuick.Dialogs import QtQuick.Controls 2.1 import org.qlcplus.classes 1.0 import "TimeUtils.js" as TimeUtils -import "." Rectangle { diff --git a/qmlui/qml/fixturesfunctions/RGBMatrixPreview.qml b/qmlui/qml/fixturesfunctions/RGBMatrixPreview.qml index 375591ddd6..cda94d26ea 100644 --- a/qmlui/qml/fixturesfunctions/RGBMatrixPreview.qml +++ b/qmlui/qml/fixturesfunctions/RGBMatrixPreview.qml @@ -19,7 +19,6 @@ import QtQuick 2.0 -import "." Rectangle { diff --git a/qmlui/qml/fixturesfunctions/RGBPanelProperties.qml b/qmlui/qml/fixturesfunctions/RGBPanelProperties.qml index c6251b69a9..acef26ee4f 100644 --- a/qmlui/qml/fixturesfunctions/RGBPanelProperties.qml +++ b/qmlui/qml/fixturesfunctions/RGBPanelProperties.qml @@ -21,7 +21,6 @@ import QtQuick 2.3 import QtQuick.Layouts 1.1 import org.qlcplus.classes 1.0 -import "." Rectangle { diff --git a/qmlui/qml/fixturesfunctions/RightPanel.qml b/qmlui/qml/fixturesfunctions/RightPanel.qml index 7cc0880b70..b075431abe 100644 --- a/qmlui/qml/fixturesfunctions/RightPanel.qml +++ b/qmlui/qml/fixturesfunctions/RightPanel.qml @@ -19,10 +19,10 @@ import QtQuick 2.0 import QtQuick.Layouts 1.0 -import QtQuick.Dialogs 1.1 +import QtQuick.Dialogs import org.qlcplus.classes 1.0 -import "." + SidePanel { @@ -102,8 +102,7 @@ SidePanel animatePanel(true) } - onContentLoaded: - { + onContentLoaded: function(item, ID) { if (item.hasOwnProperty("functionID")) item.functionID = itemID } @@ -112,7 +111,7 @@ SidePanel { id: openFileDialog visible: false - selectMultiple: true + fileMode: FileDialog.OpenFiles property int fType diff --git a/qmlui/qml/fixturesfunctions/SceneEditor.qml b/qmlui/qml/fixturesfunctions/SceneEditor.qml index cc7bd4daae..cf4d08fa41 100644 --- a/qmlui/qml/fixturesfunctions/SceneEditor.qml +++ b/qmlui/qml/fixturesfunctions/SceneEditor.qml @@ -23,7 +23,6 @@ import QtQuick.Controls 2.13 import org.qlcplus.classes 1.0 import "TimeUtils.js" as TimeUtils -import "." Rectangle { @@ -119,7 +118,9 @@ Rectangle id: toolbar visible: !boundToSequence text: sceneEditor ? sceneEditor.functionName : "" - onTextChanged: sceneEditor.functionName = text + onTextChanged: function(text) { + sceneEditor.functionName = text + } onBackClicked: { diff --git a/qmlui/qml/fixturesfunctions/SceneFixtureConsole.qml b/qmlui/qml/fixturesfunctions/SceneFixtureConsole.qml index fea80e72e5..54ec71bb72 100644 --- a/qmlui/qml/fixturesfunctions/SceneFixtureConsole.qml +++ b/qmlui/qml/fixturesfunctions/SceneFixtureConsole.qml @@ -21,7 +21,6 @@ import QtQuick 2.0 import QtQuick.Layouts 1.1 import org.qlcplus.classes 1.0 -import "." Rectangle { diff --git a/qmlui/qml/fixturesfunctions/ScriptEditor.qml b/qmlui/qml/fixturesfunctions/ScriptEditor.qml index d5687334eb..3b125d4bd1 100644 --- a/qmlui/qml/fixturesfunctions/ScriptEditor.qml +++ b/qmlui/qml/fixturesfunctions/ScriptEditor.qml @@ -19,12 +19,11 @@ import QtQuick 2.0 import QtQuick.Layouts 1.1 -import QtQuick.Dialogs 1.1 +import QtQuick.Dialogs import QtQuick.Controls 2.13 import org.qlcplus.classes 1.0 import "TimeUtils.js" as TimeUtils -import "." Rectangle { diff --git a/qmlui/qml/fixturesfunctions/SequenceEditor.qml b/qmlui/qml/fixturesfunctions/SequenceEditor.qml index 43af9969f0..a52621b30a 100644 --- a/qmlui/qml/fixturesfunctions/SequenceEditor.qml +++ b/qmlui/qml/fixturesfunctions/SequenceEditor.qml @@ -22,7 +22,6 @@ import QtQuick.Layouts 1.1 import QtQuick.Controls 2.1 import org.qlcplus.classes 1.0 -import "." Rectangle { diff --git a/qmlui/qml/fixturesfunctions/SettingsView2D.qml b/qmlui/qml/fixturesfunctions/SettingsView2D.qml index e801e2f318..1a66b51338 100644 --- a/qmlui/qml/fixturesfunctions/SettingsView2D.qml +++ b/qmlui/qml/fixturesfunctions/SettingsView2D.qml @@ -19,10 +19,9 @@ import QtQuick 2.0 import QtQuick.Layouts 1.1 -import QtQuick.Dialogs 1.3 +import QtQuick.Dialogs import org.qlcplus.classes 1.0 -import "." Rectangle { diff --git a/qmlui/qml/fixturesfunctions/SettingsViewDMX.qml b/qmlui/qml/fixturesfunctions/SettingsViewDMX.qml index 150aa5e5ab..c1c636ac33 100644 --- a/qmlui/qml/fixturesfunctions/SettingsViewDMX.qml +++ b/qmlui/qml/fixturesfunctions/SettingsViewDMX.qml @@ -21,7 +21,6 @@ import QtQuick 2.0 import QtQuick.Layouts 1.1 import org.qlcplus.classes 1.0 -import "." Rectangle { diff --git a/qmlui/qml/fixturesfunctions/ShutterAnimator.qml b/qmlui/qml/fixturesfunctions/ShutterAnimator.qml index 17399ac3a5..ef1c55f9cc 100644 --- a/qmlui/qml/fixturesfunctions/ShutterAnimator.qml +++ b/qmlui/qml/fixturesfunctions/ShutterAnimator.qml @@ -20,7 +20,6 @@ import QtQuick 2.2 import org.qlcplus.classes 1.0 -import "." Item { diff --git a/qmlui/qml/fixturesfunctions/UniverseGridView.qml b/qmlui/qml/fixturesfunctions/UniverseGridView.qml index 1c6eb4c200..df40b32f06 100644 --- a/qmlui/qml/fixturesfunctions/UniverseGridView.qml +++ b/qmlui/qml/fixturesfunctions/UniverseGridView.qml @@ -18,10 +18,9 @@ */ import QtQuick 2.0 -import QtQuick.Dialogs 1.2 +import QtQuick.Dialogs import QtQuick.Layouts 1.14 -import "." Flickable { diff --git a/qmlui/qml/fixturesfunctions/UniverseSummary.qml b/qmlui/qml/fixturesfunctions/UniverseSummary.qml index 6c80a58521..c877a3aef2 100644 --- a/qmlui/qml/fixturesfunctions/UniverseSummary.qml +++ b/qmlui/qml/fixturesfunctions/UniverseSummary.qml @@ -21,7 +21,6 @@ import QtQuick 2.0 import QtQuick.Layouts 1.0 import org.qlcplus.classes 1.0 -import "." Rectangle { diff --git a/qmlui/qml/fixturesfunctions/VideoContext.qml b/qmlui/qml/fixturesfunctions/VideoContext.qml index 9e045d344e..2f6372ceca 100644 --- a/qmlui/qml/fixturesfunctions/VideoContext.qml +++ b/qmlui/qml/fixturesfunctions/VideoContext.qml @@ -21,7 +21,6 @@ import QtQuick 2.0 import QtMultimedia 5.8 import org.qlcplus.classes 1.0 -import "." Rectangle { diff --git a/qmlui/qml/fixturesfunctions/VideoEditor.qml b/qmlui/qml/fixturesfunctions/VideoEditor.qml index f74ac44712..8c274f8105 100644 --- a/qmlui/qml/fixturesfunctions/VideoEditor.qml +++ b/qmlui/qml/fixturesfunctions/VideoEditor.qml @@ -19,11 +19,10 @@ import QtQuick 2.6 import QtQuick.Layouts 1.0 -import QtQuick.Dialogs 1.2 +import QtQuick.Dialogs import QtQuick.Controls 2.1 import org.qlcplus.classes 1.0 -import "." Rectangle { diff --git a/qmlui/qml/inputoutput/AudioCardsList.qml b/qmlui/qml/inputoutput/AudioCardsList.qml index e7deb8eab8..4bd5b17c37 100644 --- a/qmlui/qml/inputoutput/AudioCardsList.qml +++ b/qmlui/qml/inputoutput/AudioCardsList.qml @@ -18,7 +18,6 @@ */ import QtQuick 2.0 -import "." Rectangle { diff --git a/qmlui/qml/inputoutput/AudioDeviceItem.qml b/qmlui/qml/inputoutput/AudioDeviceItem.qml index 61a039f8df..68014c7c87 100644 --- a/qmlui/qml/inputoutput/AudioDeviceItem.qml +++ b/qmlui/qml/inputoutput/AudioDeviceItem.qml @@ -18,7 +18,6 @@ */ import QtQuick 2.0 -import "." Rectangle { diff --git a/qmlui/qml/inputoutput/AudioIOItem.qml b/qmlui/qml/inputoutput/AudioIOItem.qml index aac35a9435..0132c4dfdb 100644 --- a/qmlui/qml/inputoutput/AudioIOItem.qml +++ b/qmlui/qml/inputoutput/AudioIOItem.qml @@ -18,7 +18,6 @@ */ import QtQuick 2.0 -import "." Rectangle { diff --git a/qmlui/qml/inputoutput/IOLeftPanel.qml b/qmlui/qml/inputoutput/IOLeftPanel.qml index 26ec6e62aa..cfe79014b8 100644 --- a/qmlui/qml/inputoutput/IOLeftPanel.qml +++ b/qmlui/qml/inputoutput/IOLeftPanel.qml @@ -20,7 +20,6 @@ import QtQuick 2.0 import QtQuick.Controls 2.1 -import "." SidePanel { diff --git a/qmlui/qml/inputoutput/IORightPanel.qml b/qmlui/qml/inputoutput/IORightPanel.qml index 79108cba14..ef92fcd202 100644 --- a/qmlui/qml/inputoutput/IORightPanel.qml +++ b/qmlui/qml/inputoutput/IORightPanel.qml @@ -20,7 +20,6 @@ import QtQuick 2.0 import QtQuick.Layouts 1.0 -import "." SidePanel { diff --git a/qmlui/qml/inputoutput/InputOutputManager.qml b/qmlui/qml/inputoutput/InputOutputManager.qml index 805be51cf5..93cd62a017 100644 --- a/qmlui/qml/inputoutput/InputOutputManager.qml +++ b/qmlui/qml/inputoutput/InputOutputManager.qml @@ -20,7 +20,6 @@ import QtQuick 2.0 import QtQuick.Controls 2.1 -import "." Rectangle { diff --git a/qmlui/qml/inputoutput/InputPatchItem.qml b/qmlui/qml/inputoutput/InputPatchItem.qml index e1aa1c5325..d33f9a29f5 100644 --- a/qmlui/qml/inputoutput/InputPatchItem.qml +++ b/qmlui/qml/inputoutput/InputPatchItem.qml @@ -22,7 +22,6 @@ import QtQuick.Layouts 1.1 import org.qlcplus.classes 1.0 import "GenericHelpers.js" as Helpers -import "." Rectangle { diff --git a/qmlui/qml/inputoutput/InputProfileEditor.qml b/qmlui/qml/inputoutput/InputProfileEditor.qml index 4c4d463baf..06e7b546e3 100644 --- a/qmlui/qml/inputoutput/InputProfileEditor.qml +++ b/qmlui/qml/inputoutput/InputProfileEditor.qml @@ -23,7 +23,6 @@ import QtQuick.Controls 2.13 import QtQml.Models 2.13 import org.qlcplus.classes 1.0 -import "." ColumnLayout { diff --git a/qmlui/qml/inputoutput/OutputPatchItem.qml b/qmlui/qml/inputoutput/OutputPatchItem.qml index e47cce18d8..814d98670b 100644 --- a/qmlui/qml/inputoutput/OutputPatchItem.qml +++ b/qmlui/qml/inputoutput/OutputPatchItem.qml @@ -22,7 +22,6 @@ import QtQuick.Layouts 1.1 import org.qlcplus.classes 1.0 import "GenericHelpers.js" as Helpers -import "." Rectangle { diff --git a/qmlui/qml/inputoutput/PatchWireBox.qml b/qmlui/qml/inputoutput/PatchWireBox.qml index 5d3e7259d8..316a3d5deb 100644 --- a/qmlui/qml/inputoutput/PatchWireBox.qml +++ b/qmlui/qml/inputoutput/PatchWireBox.qml @@ -19,7 +19,6 @@ import QtQuick 2.0 -import "." Canvas { diff --git a/qmlui/qml/inputoutput/PluginDragItem.qml b/qmlui/qml/inputoutput/PluginDragItem.qml index bacd0b817f..7ce6976347 100644 --- a/qmlui/qml/inputoutput/PluginDragItem.qml +++ b/qmlui/qml/inputoutput/PluginDragItem.qml @@ -20,7 +20,6 @@ import QtQuick 2.0 import "GenericHelpers.js" as Helpers -import "." Rectangle { diff --git a/qmlui/qml/inputoutput/PluginsList.qml b/qmlui/qml/inputoutput/PluginsList.qml index 42e34de37e..aa1de5b627 100644 --- a/qmlui/qml/inputoutput/PluginsList.qml +++ b/qmlui/qml/inputoutput/PluginsList.qml @@ -18,7 +18,6 @@ */ import QtQuick 2.0 -import "." Rectangle { diff --git a/qmlui/qml/inputoutput/ProfilesList.qml b/qmlui/qml/inputoutput/ProfilesList.qml index 54cc3b5bad..9cf95afb49 100644 --- a/qmlui/qml/inputoutput/ProfilesList.qml +++ b/qmlui/qml/inputoutput/ProfilesList.qml @@ -22,7 +22,6 @@ import QtQuick.Layouts 1.1 import QtQuick.Controls 2.2 import org.qlcplus.classes 1.0 -import "." Rectangle { diff --git a/qmlui/qml/inputoutput/UniverseIOItem.qml b/qmlui/qml/inputoutput/UniverseIOItem.qml index 8a4816d87c..56f6889fc9 100644 --- a/qmlui/qml/inputoutput/UniverseIOItem.qml +++ b/qmlui/qml/inputoutput/UniverseIOItem.qml @@ -20,7 +20,6 @@ import QtQuick 2.0 import org.qlcplus.classes 1.0 -import "." Rectangle { diff --git a/qmlui/qml/popup/CustomPopupDialog.qml b/qmlui/qml/popup/CustomPopupDialog.qml index fe8fc87be2..5263a34642 100644 --- a/qmlui/qml/popup/CustomPopupDialog.qml +++ b/qmlui/qml/popup/CustomPopupDialog.qml @@ -21,7 +21,6 @@ import QtQuick 2.6 import QtQuick.Layouts 1.0 import QtQuick.Controls 2.1 -import "." Dialog { @@ -95,8 +94,7 @@ Dialog contentItem.implicitHeight: UISettings.iconSizeDefault - onClicked: - { + onClicked: function (button) { if (button === standardButton(Dialog.Yes)) control.clicked(Dialog.Yes) else if (button === standardButton(Dialog.No)) diff --git a/qmlui/qml/popup/PopupAbout.qml b/qmlui/qml/popup/PopupAbout.qml index 41b4fa9deb..9a24dd912d 100644 --- a/qmlui/qml/popup/PopupAbout.qml +++ b/qmlui/qml/popup/PopupAbout.qml @@ -22,7 +22,6 @@ import QtQuick.Layouts 1.1 import QtQuick.Controls 2.2 import org.qlcplus.classes 1.0 -import "." CustomPopupDialog { diff --git a/qmlui/qml/popup/PopupChannelModifiers.qml b/qmlui/qml/popup/PopupChannelModifiers.qml index a14fe1451c..b78053c967 100644 --- a/qmlui/qml/popup/PopupChannelModifiers.qml +++ b/qmlui/qml/popup/PopupChannelModifiers.qml @@ -22,7 +22,6 @@ import QtQuick.Layouts 1.14 import QtQuick.Controls 2.14 import org.qlcplus.classes 1.0 -import "." CustomPopupDialog { diff --git a/qmlui/qml/popup/PopupChannelWizard.qml b/qmlui/qml/popup/PopupChannelWizard.qml index 4f06c83066..a1de678fa9 100644 --- a/qmlui/qml/popup/PopupChannelWizard.qml +++ b/qmlui/qml/popup/PopupChannelWizard.qml @@ -22,7 +22,6 @@ import QtQuick.Layouts 1.1 import QtQuick.Controls 2.2 import org.qlcplus.classes 1.0 -import "." CustomPopupDialog { diff --git a/qmlui/qml/popup/PopupCreatePalette.qml b/qmlui/qml/popup/PopupCreatePalette.qml index 3178dcf636..f9a97cf89d 100644 --- a/qmlui/qml/popup/PopupCreatePalette.qml +++ b/qmlui/qml/popup/PopupCreatePalette.qml @@ -22,7 +22,6 @@ import QtQuick.Layouts 1.1 import QtQuick.Controls 2.2 import org.qlcplus.classes 1.0 -import "." CustomPopupDialog { diff --git a/qmlui/qml/popup/PopupDMXDump.qml b/qmlui/qml/popup/PopupDMXDump.qml index 4fc8d376eb..224c145635 100644 --- a/qmlui/qml/popup/PopupDMXDump.qml +++ b/qmlui/qml/popup/PopupDMXDump.qml @@ -22,7 +22,6 @@ import QtQuick.Layouts 1.1 import QtQuick.Controls 2.2 import org.qlcplus.classes 1.0 -import "." CustomPopupDialog { diff --git a/qmlui/qml/popup/PopupDisclaimer.qml b/qmlui/qml/popup/PopupDisclaimer.qml index 3e08f2df36..4fdeda74d5 100644 --- a/qmlui/qml/popup/PopupDisclaimer.qml +++ b/qmlui/qml/popup/PopupDisclaimer.qml @@ -21,7 +21,6 @@ import QtQuick 2.0 import QtQuick.Layouts 1.1 import QtQuick.Controls 2.2 -import "." CustomPopupDialog { diff --git a/qmlui/qml/popup/PopupFolderBrowser.qml b/qmlui/qml/popup/PopupFolderBrowser.qml index afa05433a6..43ac41656d 100644 --- a/qmlui/qml/popup/PopupFolderBrowser.qml +++ b/qmlui/qml/popup/PopupFolderBrowser.qml @@ -22,7 +22,6 @@ import QtQuick.Layouts 1.1 import QtQuick.Controls 2.13 import org.qlcplus.classes 1.0 -import "." CustomPopupDialog { diff --git a/qmlui/qml/popup/PopupImportProject.qml b/qmlui/qml/popup/PopupImportProject.qml index acbbd4c67b..305cb6175c 100644 --- a/qmlui/qml/popup/PopupImportProject.qml +++ b/qmlui/qml/popup/PopupImportProject.qml @@ -22,7 +22,6 @@ import QtQuick.Layouts 1.1 import QtQuick.Controls 2.2 import org.qlcplus.classes 1.0 -import "." CustomPopupDialog { diff --git a/qmlui/qml/popup/PopupInputChannelEditor.qml b/qmlui/qml/popup/PopupInputChannelEditor.qml index 165aedf72b..831207ab4d 100644 --- a/qmlui/qml/popup/PopupInputChannelEditor.qml +++ b/qmlui/qml/popup/PopupInputChannelEditor.qml @@ -22,7 +22,6 @@ import QtQuick.Layouts 1.1 import QtQuick.Controls 2.2 import org.qlcplus.classes 1.0 -import "." CustomPopupDialog { diff --git a/qmlui/qml/popup/PopupManualInputSource.qml b/qmlui/qml/popup/PopupManualInputSource.qml index d0a81d9210..6dc40cec38 100644 --- a/qmlui/qml/popup/PopupManualInputSource.qml +++ b/qmlui/qml/popup/PopupManualInputSource.qml @@ -22,7 +22,6 @@ import QtQuick.Layouts 1.1 import QtQuick.Controls 2.2 import org.qlcplus.classes 1.0 -import "." CustomPopupDialog { diff --git a/qmlui/qml/popup/PopupMonitor.qml b/qmlui/qml/popup/PopupMonitor.qml index 0e251c58cd..867fa97606 100644 --- a/qmlui/qml/popup/PopupMonitor.qml +++ b/qmlui/qml/popup/PopupMonitor.qml @@ -22,7 +22,6 @@ import QtQuick.Layouts 1.1 import QtQuick.Controls 2.2 import org.qlcplus.classes 1.0 -import "." CustomPopupDialog { diff --git a/qmlui/qml/popup/PopupNetworkClient.qml b/qmlui/qml/popup/PopupNetworkClient.qml index 7e22aac599..6e2f427d2c 100644 --- a/qmlui/qml/popup/PopupNetworkClient.qml +++ b/qmlui/qml/popup/PopupNetworkClient.qml @@ -22,7 +22,6 @@ import QtQuick.Layouts 1.1 import QtQuick.Controls 2.2 import org.qlcplus.classes 1.0 -import "." CustomPopupDialog { diff --git a/qmlui/qml/popup/PopupNetworkConnect.qml b/qmlui/qml/popup/PopupNetworkConnect.qml index 582fc8ee7b..2a910c18b3 100644 --- a/qmlui/qml/popup/PopupNetworkConnect.qml +++ b/qmlui/qml/popup/PopupNetworkConnect.qml @@ -21,7 +21,6 @@ import QtQuick 2.0 import QtQuick.Layouts 1.1 import org.qlcplus.classes 1.0 -import "." CustomPopupDialog { diff --git a/qmlui/qml/popup/PopupNetworkServer.qml b/qmlui/qml/popup/PopupNetworkServer.qml index 243cfa192a..f5fddebc68 100644 --- a/qmlui/qml/popup/PopupNetworkServer.qml +++ b/qmlui/qml/popup/PopupNetworkServer.qml @@ -21,7 +21,6 @@ import QtQuick 2.0 import QtQuick.Layouts 1.1 import org.qlcplus.classes 1.0 -import "." CustomPopupDialog { diff --git a/qmlui/qml/popup/PopupPINRequest.qml b/qmlui/qml/popup/PopupPINRequest.qml index ab26b6e17c..3011f23a10 100644 --- a/qmlui/qml/popup/PopupPINRequest.qml +++ b/qmlui/qml/popup/PopupPINRequest.qml @@ -21,7 +21,6 @@ import QtQuick 2.0 import QtQuick.Layouts 1.1 import org.qlcplus.classes 1.0 -import "." CustomPopupDialog { diff --git a/qmlui/qml/popup/PopupPINSetup.qml b/qmlui/qml/popup/PopupPINSetup.qml index 866d366413..864bd3de82 100644 --- a/qmlui/qml/popup/PopupPINSetup.qml +++ b/qmlui/qml/popup/PopupPINSetup.qml @@ -21,7 +21,6 @@ import QtQuick 2.0 import QtQuick.Layouts 1.1 import org.qlcplus.classes 1.0 -import "." CustomPopupDialog { diff --git a/qmlui/qml/popup/PopupRenameItems.qml b/qmlui/qml/popup/PopupRenameItems.qml index d7ea9c0076..aa7af30c0f 100644 --- a/qmlui/qml/popup/PopupRenameItems.qml +++ b/qmlui/qml/popup/PopupRenameItems.qml @@ -21,7 +21,6 @@ import QtQuick 2.0 import QtQuick.Layouts 1.1 import org.qlcplus.classes 1.0 -import "." CustomPopupDialog { diff --git a/qmlui/qml/showmanager/HeaderAndCursor.qml b/qmlui/qml/showmanager/HeaderAndCursor.qml index 8c8231ef0a..75614468d3 100644 --- a/qmlui/qml/showmanager/HeaderAndCursor.qml +++ b/qmlui/qml/showmanager/HeaderAndCursor.qml @@ -22,7 +22,6 @@ import QtQuick 2.0 import org.qlcplus.classes 1.0 import "TimeUtils.js" as TimeUtils -import "." Rectangle { @@ -212,6 +211,8 @@ Rectangle { enabled: showTimeMarkers anchors.fill: parent - onClicked: tlHeaderCursorLayer.clicked(mouse.x, mouse.y) + onClicked: function (mouse) { + tlHeaderCursorLayer.clicked(mouse.x, mouse.y) + } } } diff --git a/qmlui/qml/showmanager/ShowItem.qml b/qmlui/qml/showmanager/ShowItem.qml index e94a004f6d..4aaf59bc14 100644 --- a/qmlui/qml/showmanager/ShowItem.qml +++ b/qmlui/qml/showmanager/ShowItem.qml @@ -22,7 +22,6 @@ import QtQuick.Controls 2.13 import org.qlcplus.classes 1.0 import "TimeUtils.js" as TimeUtils -import "." Item { diff --git a/qmlui/qml/showmanager/ShowManager.qml b/qmlui/qml/showmanager/ShowManager.qml index 30eb51d2a5..b07625a28f 100644 --- a/qmlui/qml/showmanager/ShowManager.qml +++ b/qmlui/qml/showmanager/ShowManager.qml @@ -24,7 +24,6 @@ import QtQuick.Controls 2.1 import org.qlcplus.classes 1.0 import "TimeUtils.js" as TimeUtils -import "." Rectangle { @@ -447,9 +446,7 @@ Rectangle headerHeight: showMgrContainer.headerHeight cursorHeight: showMgrContainer.height - topBar.height - (bottomPanel.visible ? bottomPanel.height : 0) duration: showManager.showDuration - - onClicked: - { + onClicked: function (mouseX, mouseY) { if (timeDivision === Show.Time) showManager.currentTime = TimeUtils.posToMs(mouseX, timeScale, tickSize) else @@ -543,8 +540,7 @@ Rectangle MouseArea { anchors.fill: parent - onClicked: - { + onClicked: function (mouse) { showManager.currentTime = TimeUtils.posToMs(mouse.x, timeScale, tickSize) showManager.resetItemsSelection() } diff --git a/qmlui/qml/showmanager/TrackDelegate.qml b/qmlui/qml/showmanager/TrackDelegate.qml index be34b8ef39..4129f82a49 100644 --- a/qmlui/qml/showmanager/TrackDelegate.qml +++ b/qmlui/qml/showmanager/TrackDelegate.qml @@ -20,7 +20,6 @@ import QtQuick 2.0 import org.qlcplus.classes 1.0 -import "." Rectangle { diff --git a/qmlui/qml/virtualconsole/VCButtonProperties.qml b/qmlui/qml/virtualconsole/VCButtonProperties.qml index e94207d15c..eeaaef0902 100644 --- a/qmlui/qml/virtualconsole/VCButtonProperties.qml +++ b/qmlui/qml/virtualconsole/VCButtonProperties.qml @@ -23,7 +23,6 @@ import QtQuick.Controls 2.1 import org.qlcplus.classes 1.0 import "TimeUtils.js" as TimeUtils -import "." Rectangle { diff --git a/qmlui/qml/virtualconsole/VCClockItem.qml b/qmlui/qml/virtualconsole/VCClockItem.qml index 3c96e335fc..34574af123 100644 --- a/qmlui/qml/virtualconsole/VCClockItem.qml +++ b/qmlui/qml/virtualconsole/VCClockItem.qml @@ -23,7 +23,6 @@ import QtQuick.Layouts 1.0 import org.qlcplus.classes 1.0 import "TimeUtils.js" as TimeUtils -import "." VCWidgetItem { diff --git a/qmlui/qml/virtualconsole/VCClockProperties.qml b/qmlui/qml/virtualconsole/VCClockProperties.qml index b21bd976fc..ace06e9779 100644 --- a/qmlui/qml/virtualconsole/VCClockProperties.qml +++ b/qmlui/qml/virtualconsole/VCClockProperties.qml @@ -22,7 +22,6 @@ import QtQuick.Layouts 1.1 import QtQuick.Controls 2.1 import org.qlcplus.classes 1.0 -import "." Rectangle { diff --git a/qmlui/qml/virtualconsole/VCCueListProperties.qml b/qmlui/qml/virtualconsole/VCCueListProperties.qml index cd8932a5ba..a6f7018125 100644 --- a/qmlui/qml/virtualconsole/VCCueListProperties.qml +++ b/qmlui/qml/virtualconsole/VCCueListProperties.qml @@ -22,7 +22,6 @@ import QtQuick.Layouts 1.1 import QtQuick.Controls 2.1 import org.qlcplus.classes 1.0 -import "." Rectangle { diff --git a/qmlui/qml/virtualconsole/VCFrameItem.qml b/qmlui/qml/virtualconsole/VCFrameItem.qml index ccad3f9b85..710325defc 100644 --- a/qmlui/qml/virtualconsole/VCFrameItem.qml +++ b/qmlui/qml/virtualconsole/VCFrameItem.qml @@ -21,7 +21,6 @@ import QtQuick 2.0 import QtQuick.Layouts 1.1 import org.qlcplus.classes 1.0 -import "." VCWidgetItem { diff --git a/qmlui/qml/virtualconsole/VCFrameProperties.qml b/qmlui/qml/virtualconsole/VCFrameProperties.qml index b7f23d3b8c..833f4f904a 100644 --- a/qmlui/qml/virtualconsole/VCFrameProperties.qml +++ b/qmlui/qml/virtualconsole/VCFrameProperties.qml @@ -22,7 +22,6 @@ import QtQuick.Layouts 1.1 import QtQuick.Controls 2.1 import org.qlcplus.classes 1.0 -import "." Rectangle { diff --git a/qmlui/qml/virtualconsole/VCPageProperties.qml b/qmlui/qml/virtualconsole/VCPageProperties.qml index 54e0b45474..6bbabf666b 100644 --- a/qmlui/qml/virtualconsole/VCPageProperties.qml +++ b/qmlui/qml/virtualconsole/VCPageProperties.qml @@ -21,7 +21,6 @@ import QtQuick 2.0 import QtQuick.Layouts 1.1 import org.qlcplus.classes 1.0 -import "." Rectangle { diff --git a/qmlui/qml/virtualconsole/VCRightPanel.qml b/qmlui/qml/virtualconsole/VCRightPanel.qml index de25ca944d..a47ad1c507 100644 --- a/qmlui/qml/virtualconsole/VCRightPanel.qml +++ b/qmlui/qml/virtualconsole/VCRightPanel.qml @@ -21,7 +21,6 @@ import QtQuick 2.0 import QtQuick.Controls 2.1 import org.qlcplus.classes 1.0 -import "." SidePanel { diff --git a/qmlui/qml/virtualconsole/VCSliderItem.qml b/qmlui/qml/virtualconsole/VCSliderItem.qml index dcea323ffe..6c9fd70e8b 100644 --- a/qmlui/qml/virtualconsole/VCSliderItem.qml +++ b/qmlui/qml/virtualconsole/VCSliderItem.qml @@ -21,7 +21,6 @@ import QtQuick 2.0 import QtQuick.Layouts 1.1 import org.qlcplus.classes 1.0 -import "." VCWidgetItem { diff --git a/qmlui/qml/virtualconsole/VCSliderProperties.qml b/qmlui/qml/virtualconsole/VCSliderProperties.qml index 33e77ab8f7..9c4058b1e3 100644 --- a/qmlui/qml/virtualconsole/VCSliderProperties.qml +++ b/qmlui/qml/virtualconsole/VCSliderProperties.qml @@ -22,7 +22,6 @@ import QtQuick.Layouts 1.1 import QtQuick.Controls 2.1 import org.qlcplus.classes 1.0 -import "." Rectangle { diff --git a/qmlui/qml/virtualconsole/VCWidgetItem.qml b/qmlui/qml/virtualconsole/VCWidgetItem.qml index f00f5eef6e..5062766a49 100644 --- a/qmlui/qml/virtualconsole/VCWidgetItem.qml +++ b/qmlui/qml/virtualconsole/VCWidgetItem.qml @@ -20,7 +20,6 @@ import QtQuick 2.0 import org.qlcplus.classes 1.0 -import "." Rectangle { diff --git a/qmlui/qml/virtualconsole/VCWidgetProperties.qml b/qmlui/qml/virtualconsole/VCWidgetProperties.qml index 6c136022f8..94ce0dde72 100644 --- a/qmlui/qml/virtualconsole/VCWidgetProperties.qml +++ b/qmlui/qml/virtualconsole/VCWidgetProperties.qml @@ -19,11 +19,10 @@ import QtQuick 2.0 import QtQuick.Layouts 1.1 -import QtQuick.Dialogs 1.1 +import QtQuick.Dialogs import QtQuick.Controls 2.13 import org.qlcplus.classes 1.0 -import "." Rectangle { diff --git a/qmlui/qml/virtualconsole/VirtualConsole.qml b/qmlui/qml/virtualconsole/VirtualConsole.qml index aba2fa50ae..6edcca99a1 100644 --- a/qmlui/qml/virtualconsole/VirtualConsole.qml +++ b/qmlui/qml/virtualconsole/VirtualConsole.qml @@ -22,7 +22,6 @@ import QtQuick.Layouts 1.1 import QtQuick.Controls 2.1 import org.qlcplus.classes 1.0 -import "." Rectangle { diff --git a/qmlui/qml/virtualconsole/WidgetDragItem.qml b/qmlui/qml/virtualconsole/WidgetDragItem.qml index b28aff7b5c..8ac5ece9ab 100644 --- a/qmlui/qml/virtualconsole/WidgetDragItem.qml +++ b/qmlui/qml/virtualconsole/WidgetDragItem.qml @@ -18,7 +18,6 @@ */ import QtQuick 2.0 -import "." Rectangle { diff --git a/qmlui/qml/virtualconsole/WidgetsList.qml b/qmlui/qml/virtualconsole/WidgetsList.qml index 941ac4eefc..882de5b206 100644 --- a/qmlui/qml/virtualconsole/WidgetsList.qml +++ b/qmlui/qml/virtualconsole/WidgetsList.qml @@ -20,7 +20,6 @@ import QtQuick 2.0 import QtQuick.Controls 2.1 -import "." Rectangle { diff --git a/qmlui/qmlui.qrc b/qmlui/qmlui.qrc index 25ef3907b3..db677c34cd 100644 --- a/qmlui/qmlui.qrc +++ b/qmlui/qmlui.qrc @@ -185,22 +185,39 @@ qml/fixturesfunctions/3DView/StageRock.qml qml/fixturesfunctions/3DView/StageTheatre.qml - qml/fixturesfunctions/3DView/shaders/downsample.frag - qml/fixturesfunctions/3DView/shaders/upsample.frag - qml/fixturesfunctions/3DView/shaders/grab_bright.frag - qml/fixturesfunctions/3DView/shaders/directional.frag - qml/fixturesfunctions/3DView/shaders/gamma_correct.frag - qml/fixturesfunctions/3DView/shaders/blit.frag - qml/fixturesfunctions/3DView/shaders/fxaa.frag - qml/fixturesfunctions/3DView/shaders/fullscreen.vert - qml/fixturesfunctions/3DView/shaders/spotlight_shading.frag - qml/fixturesfunctions/3DView/shaders/geo.frag - qml/fixturesfunctions/3DView/shaders/geo.vert - qml/fixturesfunctions/3DView/shaders/spotlight_scattering.frag - qml/fixturesfunctions/3DView/shaders/spotlight.vert - qml/fixturesfunctions/3DView/shaders/output_front_depth.frag - qml/fixturesfunctions/3DView/shaders/output_depth.frag - qml/fixturesfunctions/3DView/shaders/output_depth.vert + qml/fixturesfunctions/3DView/shaders/gl/downsample.frag + qml/fixturesfunctions/3DView/shaders/gl/upsample.frag + qml/fixturesfunctions/3DView/shaders/gl/grab_bright.frag + qml/fixturesfunctions/3DView/shaders/gl/directional.frag + qml/fixturesfunctions/3DView/shaders/gl/gamma_correct.frag + qml/fixturesfunctions/3DView/shaders/gl/blit.frag + qml/fixturesfunctions/3DView/shaders/gl/fxaa.frag + qml/fixturesfunctions/3DView/shaders/gl/fullscreen.vert + qml/fixturesfunctions/3DView/shaders/gl/spotlight_shading.frag + qml/fixturesfunctions/3DView/shaders/gl/geo.frag + qml/fixturesfunctions/3DView/shaders/gl/geo.vert + qml/fixturesfunctions/3DView/shaders/gl/spotlight_scattering.frag + qml/fixturesfunctions/3DView/shaders/gl/spotlight.vert + qml/fixturesfunctions/3DView/shaders/gl/output_front_depth.frag + qml/fixturesfunctions/3DView/shaders/gl/output_depth.frag + qml/fixturesfunctions/3DView/shaders/gl/output_depth.vert + + qml/fixturesfunctions/3DView/shaders/rhi/downsample_rhi.frag + qml/fixturesfunctions/3DView/shaders/rhi/upsample_rhi.frag + qml/fixturesfunctions/3DView/shaders/rhi/grab_bright_rhi.frag + qml/fixturesfunctions/3DView/shaders/rhi/directional_rhi.frag + qml/fixturesfunctions/3DView/shaders/rhi/gamma_correct_rhi.frag + qml/fixturesfunctions/3DView/shaders/rhi/blit_rhi.frag + qml/fixturesfunctions/3DView/shaders/rhi/fxaa_rhi.frag + qml/fixturesfunctions/3DView/shaders/rhi/fullscreen_rhi.vert + qml/fixturesfunctions/3DView/shaders/rhi/spotlight_shading_rhi.frag + qml/fixturesfunctions/3DView/shaders/rhi/geo_rhi.frag + qml/fixturesfunctions/3DView/shaders/rhi/geo_rhi.vert + qml/fixturesfunctions/3DView/shaders/rhi/spotlight_scattering_rhi.frag + qml/fixturesfunctions/3DView/shaders/rhi/spotlight_rhi.vert + qml/fixturesfunctions/3DView/shaders/rhi/output_front_depth_rhi.frag + qml/fixturesfunctions/3DView/shaders/rhi/output_depth_rhi.frag + qml/fixturesfunctions/3DView/shaders/rhi/output_depth_rhi.vert qml/inputoutput/InputOutputManager.qml @@ -259,5 +276,11 @@ js/Math3DView.js js/TimeUtils.js + + qml/+qt5/ActionsMenu.qml + qml/fixturesfunctions/+qt5/RightPanel.qml + qml/fixturesfunctions/3DView/+qt5/SettingsView3D.qml + qml/fixturesfunctions/+qt5/SettingsView2D.qml + diff --git a/qmlui/tardis/tardis.cpp b/qmlui/tardis/tardis.cpp index b2c3f873a3..f29af3ccb6 100644 --- a/qmlui/tardis/tardis.cpp +++ b/qmlui/tardis/tardis.cpp @@ -20,6 +20,7 @@ #include #include #include +typedef QBuffer QIODeviceBuffer; #include "tardis.h" @@ -319,7 +320,7 @@ void Tardis::run() QByteArray Tardis::actionToByteArray(int code, quint32 objID, QVariant data) { - QBuffer buffer; + QIODeviceBuffer buffer; buffer.open(QIODevice::WriteOnly | QIODevice::Text); QXmlStreamWriter xmlWriter(&buffer); @@ -421,7 +422,7 @@ bool Tardis::processBufferedAction(int action, quint32 objID, QVariant &value) return false; } - QBuffer buffer; + QIODeviceBuffer buffer; buffer.setData(value.toByteArray()); buffer.open(QIODevice::ReadOnly | QIODevice::Text); QXmlStreamReader xmlReader(&buffer); diff --git a/variables.cmake b/variables.cmake index 3a89857f8f..6f1848a1ab 100644 --- a/variables.cmake +++ b/variables.cmake @@ -13,6 +13,8 @@ add_definitions(-DUNICODE) set(APPNAME "Q Light Controller Plus") set(FXEDNAME "Fixture Definition Editor") +option(qmlui "build QLC+5" OFF) + if(ANDROID OR IOS) set(qmlui ON) endif() @@ -482,7 +484,9 @@ if (UNIX AND NOT APPLE) if (${inUsr} EQUAL 0) set(QTLIBSDIR "${QT_INSTALL_LIBS}") + string(REPLACE "\n" "" QTLIBSDIR "${QTLIBSDIR}") set(QTPLUGINSDIR "${QT_INSTALL_PLUGINS}") + string(REPLACE "\n" "" QTPLUGINSDIR "${QTPLUGINSDIR}") string(REPLACE "/usr/" "" LIBSDIR "${QTLIBSDIR}") string(REPLACE "/usr/" "" PLUGINDIR "${QTPLUGINSDIR}/qlcplus") set(AUDIOPLUGINDIR "${PLUGINDIR}/audio") @@ -508,4 +512,3 @@ elseif(NOT APPLE AND NOT IOS) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wextra") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall") endif() -