From 7ecbd2e8d10fde34fbde67401f6b7f0466e579a3 Mon Sep 17 00:00:00 2001 From: Elias Steurer Date: Thu, 31 Aug 2023 14:53:59 +0200 Subject: [PATCH 001/101] Add default Godot project with GDExtension Add Godot Editor download Add Godot Editor start in launch.json --- .gitignore | 1 + .gitmodules | 4 + .vscode/launch.json | 14 + CMakeLists.txt | 5 + .../Godot/GDExtention/CMakeLists.txt | 128 +++++ .../Godot/GDExtention/CMakePresets.json | 87 ++++ .../Godot/GDExtention/cmake/ClangFormat.cmake | 32 ++ .../GDExtention/cmake/CompilerWarnings.cmake | 115 +++++ .../cmake/GetGitRevisionDescription.cmake | 284 +++++++++++ .../cmake/GetGitRevisionDescription.cmake.in | 43 ++ .../GDExtention/cmake/GitVersionInfo.cmake | 46 ++ .../Godot/GDExtention/cmake/ccache.cmake | 22 + .../Godot/GDExtention/extern/godot-cpp | 1 + .../Godot/GDExtention/src/CMakeLists.txt | 15 + .../GDExtention/src/GDExtensionTemplate.cpp | 32 ++ .../GDExtention/src/GDExtensionTemplate.h | 20 + .../GDExtention/src/RegisterExtension.cpp | 74 +++ .../GDExtention/src/ScreenPlayWallpaper.cpp | 475 ++++++++++++++++++ .../GDExtention/src/ScreenPlayWallpaper.h | 135 +++++ .../Godot/GDExtention/src/Version.h.in | 45 ++ .../GDExtention/templates/CMakeLists.txt | 41 ++ .../templates/template.debug.gdextension.in | 10 + .../templates/template.release.gdextension.in | 10 + .../Godot/ScreenPlayGodot/.gitattributes | 2 + .../Godot/ScreenPlayGodot/.gitignore | 2 + .../Godot/ScreenPlayGodot/export_presets.cfg | 61 +++ .../Godot/ScreenPlayGodot/icon.svg | 1 + .../Godot/ScreenPlayGodot/icon.svg.import | 37 ++ .../Godot/ScreenPlayGodot/main.gd | 15 + .../Godot/ScreenPlayGodot/main.tscn | 6 + .../Godot/ScreenPlayGodot/project.godot | 21 + Tools/defines.py | 1 + Tools/requirements.txt | 3 +- Tools/setup.py | 2 + Tools/setup_godot.py | 58 +++ 35 files changed, 1847 insertions(+), 1 deletion(-) create mode 100644 .gitmodules create mode 100644 ScreenPlayWallpaper/Godot/GDExtention/CMakeLists.txt create mode 100644 ScreenPlayWallpaper/Godot/GDExtention/CMakePresets.json create mode 100644 ScreenPlayWallpaper/Godot/GDExtention/cmake/ClangFormat.cmake create mode 100644 ScreenPlayWallpaper/Godot/GDExtention/cmake/CompilerWarnings.cmake create mode 100644 ScreenPlayWallpaper/Godot/GDExtention/cmake/GetGitRevisionDescription.cmake create mode 100644 ScreenPlayWallpaper/Godot/GDExtention/cmake/GetGitRevisionDescription.cmake.in create mode 100644 ScreenPlayWallpaper/Godot/GDExtention/cmake/GitVersionInfo.cmake create mode 100644 ScreenPlayWallpaper/Godot/GDExtention/cmake/ccache.cmake create mode 160000 ScreenPlayWallpaper/Godot/GDExtention/extern/godot-cpp create mode 100644 ScreenPlayWallpaper/Godot/GDExtention/src/CMakeLists.txt create mode 100644 ScreenPlayWallpaper/Godot/GDExtention/src/GDExtensionTemplate.cpp create mode 100644 ScreenPlayWallpaper/Godot/GDExtention/src/GDExtensionTemplate.h create mode 100644 ScreenPlayWallpaper/Godot/GDExtention/src/RegisterExtension.cpp create mode 100644 ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayWallpaper.cpp create mode 100644 ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayWallpaper.h create mode 100644 ScreenPlayWallpaper/Godot/GDExtention/src/Version.h.in create mode 100644 ScreenPlayWallpaper/Godot/GDExtention/templates/CMakeLists.txt create mode 100644 ScreenPlayWallpaper/Godot/GDExtention/templates/template.debug.gdextension.in create mode 100644 ScreenPlayWallpaper/Godot/GDExtention/templates/template.release.gdextension.in create mode 100644 ScreenPlayWallpaper/Godot/ScreenPlayGodot/.gitattributes create mode 100644 ScreenPlayWallpaper/Godot/ScreenPlayGodot/.gitignore create mode 100644 ScreenPlayWallpaper/Godot/ScreenPlayGodot/export_presets.cfg create mode 100644 ScreenPlayWallpaper/Godot/ScreenPlayGodot/icon.svg create mode 100644 ScreenPlayWallpaper/Godot/ScreenPlayGodot/icon.svg.import create mode 100644 ScreenPlayWallpaper/Godot/ScreenPlayGodot/main.gd create mode 100644 ScreenPlayWallpaper/Godot/ScreenPlayGodot/main.tscn create mode 100644 ScreenPlayWallpaper/Godot/ScreenPlayGodot/project.godot create mode 100644 Tools/setup_godot.py diff --git a/.gitignore b/.gitignore index 281ac916..be657cd4 100644 --- a/.gitignore +++ b/.gitignore @@ -261,3 +261,4 @@ cython_debug/ /ThirdParty/qml-archive/** /ThirdParty/qml-plausible/ /ThirdParty/ffmpeg/** +/Tools/Apps/Godot/* diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 00000000..d9f3cdde --- /dev/null +++ b/.gitmodules @@ -0,0 +1,4 @@ +[submodule "ScreenPlayWallpaper/Godot/GDExtention/extern/godot-cpp"] + path = ScreenPlayWallpaper/Godot/GDExtention/extern/godot-cpp + url = https://github.com/godotengine/godot-cpp.git + branch = 4.1 diff --git a/.vscode/launch.json b/.vscode/launch.json index 56cef0bb..6ec72414 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -22,6 +22,20 @@ ], "visualizerFile": "${workspaceFolder}/.vscode/qt.natvis.xml" }, + { + "name": "Godot Editor", + "type": "cppvsdbg", + "request": "launch", + "program": "${workspaceFolder}\\Tools\\Apps\\Godot\\Godot_v4.1.1-stable_win64.exe", + "args": [ + "--path", + "${workspaceFolder}\\ScreenPlayWallpaper\\Godot\\ScreenPlayGodot", + "--editor" + ], + "stopAtEntry": false, + "preLaunchTask": "CMake: build", + "externalConsole": false + }, { "name": "macOS Launch", "type": "lldb", diff --git a/CMakeLists.txt b/CMakeLists.txt index 9142baf7..2679eb2e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -27,6 +27,7 @@ set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) set(CMAKE_CXX_STANDARD 20) set(THIRD_PARTY_PATH "${CMAKE_CURRENT_SOURCE_DIR}/ThirdParty/") +option(GODOT_WALLPAPER "Godot Wallpaper support" ON) option(OSX_BUNDLE "Enable distribution macOS bundle" OFF) set(CMAKE_OSX_DEPLOYMENT_TARGET "13.0") @@ -122,6 +123,10 @@ add_subdirectory(ScreenPlayWidget) add_subdirectory(ScreenPlayUtil) add_subdirectory(ScreenPlayWeather) +if(GODOT_WALLPAPER) + add_subdirectory(ScreenPlayWallpaper/Godot/GDExtention) +endif() + if(${SCREENPLAY_TESTS}) enable_testing() endif() diff --git a/ScreenPlayWallpaper/Godot/GDExtention/CMakeLists.txt b/ScreenPlayWallpaper/Godot/GDExtention/CMakeLists.txt new file mode 100644 index 00000000..41a43cf2 --- /dev/null +++ b/ScreenPlayWallpaper/Godot/GDExtention/CMakeLists.txt @@ -0,0 +1,128 @@ +# SPDX-License-Identifier: Unlicense + +cmake_minimum_required( VERSION 3.22 ) + +message( STATUS "Using CMake ${CMAKE_VERSION}" ) + +# Require out-of-source builds +file( TO_CMAKE_PATH "${PROJECT_BINARY_DIR}/CMakeLists.txt" LOC_PATH ) + +if ( EXISTS "${LOC_PATH}" ) + message( FATAL_ERROR "You cannot build in the source directory. Please use a build subdirectory." ) +endif() + +# Add paths to modules +list( APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake/" ) + +# Turn on link time optimization for everything +set( CMAKE_INTERPROCEDURAL_OPTIMIZATION_RELEASE ON ) + +# Output compile commands to compile_commands.json (for debugging CMake issues) +set( CMAKE_EXPORT_COMPILE_COMMANDS ON ) + +# Build universal lib on macOS +# Note that CMAKE_OSX_ARCHITECTURES must be set before project(). +if ( APPLE ) + set( CMAKE_OSX_ARCHITECTURES "x86_64;arm64" CACHE STRING "" ) +endif() + +# Main project information +project( GDExtensionTemplate + LANGUAGES + CXX + VERSION + 0.1.0 +) + +# Create our library +add_library( ${PROJECT_NAME} SHARED ) + +target_compile_features( ${PROJECT_NAME} + PRIVATE + cxx_std_17 +) + +# LIB_ARCH is the architecture being built. It is set to the build system's architecture. +# For macOS, we build a universal library (both arm64 and x86_64). +set( LIB_ARCH ${CMAKE_SYSTEM_PROCESSOR} ) +if ( APPLE ) + set( LIB_ARCH "universal" ) +endif() + +# LIB_DIR is where the actual library ends up. This is used in both the build directory and the +# install directory and needs to be consistent with the paths in the gdextension file. +# e.g. linux.release.x86_64 = "lib/Linux-x86_64/libGDExtensionTemplate.so" +set( LIB_DIR "lib/${CMAKE_SYSTEM_NAME}-${LIB_ARCH}" ) + +message( STATUS "Building ${PROJECT_NAME} for ${LIB_ARCH} on ${CMAKE_SYSTEM_NAME}") + +# BUILD_OUTPUT_DIR is where we put the resulting library (in the build directory) +set( BUILD_OUTPUT_DIR "${PROJECT_BINARY_DIR}/${PROJECT_NAME}/" ) + +set_target_properties( ${PROJECT_NAME} + PROPERTIES + CXX_VISIBILITY_PRESET hidden + VISIBILITY_INLINES_HIDDEN true + RUNTIME_OUTPUT_DIRECTORY "${BUILD_OUTPUT_DIR}/${LIB_DIR}" + LIBRARY_OUTPUT_DIRECTORY "${BUILD_OUTPUT_DIR}/${LIB_DIR}" +) + +if( NOT DEFINED CMAKE_DEBUG_POSTFIX ) + set_target_properties( ${PROJECT_NAME} + PROPERTIES + DEBUG_POSTFIX "-d" + ) +endif() + +# Warnings +include( CompilerWarnings ) + +# Create and include version info file from git +include( GitVersionInfo ) + +add_subdirectory( src ) + +# Install library and extension file in ${CMAKE_INSTALL_PREFIX}/${PROJECT_NAME} +set( INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/${PROJECT_NAME}/" ) + +message( STATUS "Install directory: ${INSTALL_DIR}") + +install( TARGETS ${PROJECT_NAME} + LIBRARY + DESTINATION ${INSTALL_DIR}/${LIB_DIR} + RUNTIME + DESTINATION ${INSTALL_DIR}/${LIB_DIR} +) + +add_subdirectory( templates ) + +# ccache +# Turns on ccache if found +include( ccache ) + +# Formatting +# Adds a custom target to format all the code at once +include( ClangFormat ) + +# godot-cpp +# From here: https://github.com/godotengine/godot-cpp +if ( NOT EXISTS "${CMAKE_CURRENT_LIST_DIR}/extern/godot-cpp/Makefile" ) + message( + FATAL_ERROR + "[${PROJECT_NAME}] The godot-cpp submodule was not downloaded. Please update submodules: git submodule update --init --recursive." + ) +endif() + +set( GODOT_CPP_SYSTEM_HEADERS ON CACHE BOOL "" FORCE ) + +add_subdirectory( extern/godot-cpp ) + +set_target_properties( godot-cpp + PROPERTIES + CXX_VISIBILITY_PRESET hidden # visibility needs to be the same as the main library +) + +target_link_libraries( ${PROJECT_NAME} + PRIVATE + godot-cpp +) diff --git a/ScreenPlayWallpaper/Godot/GDExtention/CMakePresets.json b/ScreenPlayWallpaper/Godot/GDExtention/CMakePresets.json new file mode 100644 index 00000000..2f925072 --- /dev/null +++ b/ScreenPlayWallpaper/Godot/GDExtention/CMakePresets.json @@ -0,0 +1,87 @@ +{ + "version": 5, + "cmakeMinimumRequired": { + "major": 3, + "minor": 23, + "patch": 0 + }, + "configurePresets": [ + { + "name": "default", + "displayName": "default", + "description": "Default preset that are inherited by all", + "generator": "Ninja", + "hidden": true, + "binaryDir": "${sourceDir}/../build_MyGodotProject" + }, + { + "name": "default-windows", + "displayName": "64bit Windows", + "description": "Windows only!", + "inherits": "default", + "condition": { + "type": "equals", + "lhs": "${hostSystemName}", + "rhs": "Windows" + }, + "toolset": { + "value": "host=x64", + "strategy": "external" + }, + "architecture": { + "value": "x64", + "strategy": "external" + }, + "cacheVariables": { + "CMAKE_C_COMPILER": "cl.exe", + "CMAKE_CXX_COMPILER": "cl.exe" + } + }, + { + "name": "linux-debug", + "displayName": "64bit Debug Linux", + "description": "Linux only!", + "generator": "Ninja", + "condition": { + "type": "equals", + "lhs": "${hostSystemName}", + "rhs": "Linux" + }, + "cacheVariables": { + "CMAKE_CXX_COMPILER": "g++", + "CMAKE_C_COMPILER": "gcc", + "CMAKE_BUILD_TYPE": "Debug" + } + }, + { + "name": "osx-debug", + "displayName": "64bit Debug osx", + "description": "Osx only!", + "generator": "Ninja", + "condition": { + "type": "equals", + "lhs": "${hostSystemName}", + "rhs": "Darwin" + }, + "cacheVariables": { + "CMAKE_CXX_COMPILER": "clang++", + "CMAKE_C_COMPILER": "clang", + "CMAKE_BUILD_TYPE": "Debug" + } + } + ], + "buildPresets": [ + { + "name": "linux-debug", + "configurePreset": "linux-debug" + }, + { + "name": "default-windows", + "configurePreset": "default-windows" + }, + { + "name": "osx-debug", + "configurePreset": "osx-debug" + } + ] +} diff --git a/ScreenPlayWallpaper/Godot/GDExtention/cmake/ClangFormat.cmake b/ScreenPlayWallpaper/Godot/GDExtention/cmake/ClangFormat.cmake new file mode 100644 index 00000000..a6eb8a0b --- /dev/null +++ b/ScreenPlayWallpaper/Godot/GDExtention/cmake/ClangFormat.cmake @@ -0,0 +1,32 @@ +# SPDX-License-Identifier: Unlicense + +find_program( CLANG_FORMAT_PROGRAM NAMES clang-format ) + +if ( CLANG_FORMAT_PROGRAM ) + # get version information + execute_process( + COMMAND "${CLANG_FORMAT_PROGRAM}" --version + OUTPUT_VARIABLE CLANG_FORMAT_VERSION + OUTPUT_STRIP_TRAILING_WHITESPACE + ) + + message( STATUS "Using clang-format: ${CLANG_FORMAT_PROGRAM} (${CLANG_FORMAT_VERSION})" ) + + get_target_property( CLANG_FORMAT_SOURCES ${PROJECT_NAME} SOURCES ) + + # Remove some files from the list + list( FILTER CLANG_FORMAT_SOURCES EXCLUDE REGEX ".*/extern/.*" ) + list( FILTER CLANG_FORMAT_SOURCES EXCLUDE REGEX ".*/gen/.*" ) + list( FILTER CLANG_FORMAT_SOURCES EXCLUDE REGEX ".*/*.gdextension.in" ) + list( FILTER CLANG_FORMAT_SOURCES EXCLUDE REGEX ".*/Version.h.in" ) + + add_custom_target( clang-format + COMMAND "${CLANG_FORMAT_PROGRAM}" --style=file -i ${CLANG_FORMAT_SOURCES} + COMMENT "Running clang-format..." + COMMAND_EXPAND_LISTS + VERBATIM + ) + + unset( CLANG_FORMAT_VERSION ) + unset( CLANG_FORMAT_SOURCES ) +endif() diff --git a/ScreenPlayWallpaper/Godot/GDExtention/cmake/CompilerWarnings.cmake b/ScreenPlayWallpaper/Godot/GDExtention/cmake/CompilerWarnings.cmake new file mode 100644 index 00000000..bee0550f --- /dev/null +++ b/ScreenPlayWallpaper/Godot/GDExtention/cmake/CompilerWarnings.cmake @@ -0,0 +1,115 @@ +# SPDX-License-Identifier: Unlicense +# by Andy Maloney + +string( TOUPPER ${PROJECT_NAME} PROJECT_NAME_UPPERCASE ) + +if ( NOT MSVC ) + option( ${PROJECT_NAME_UPPERCASE}_WARN_EVERYTHING "Turn on all warnings (not recommended - used for lib development)" OFF ) +endif() + +option( ${PROJECT_NAME_UPPERCASE}_WARNING_AS_ERROR "Treat warnings as errors" ON ) + +# Add warnings based on compiler +# Set some helper variables for readability +set( compiler_is_clang "$,$>" ) +set( compiler_is_gnu "$" ) +set( compiler_is_msvc "$" ) + +target_compile_options( ${PROJECT_NAME} + PRIVATE + # MSVC only + $<${compiler_is_msvc}: + /W4 + + /w14263 # 'function': member function does not override any base class virtual member function + /w14296 # 'operator': expression is always 'boolean_value' + /w14311 # 'variable': pointer truncation from 'type1' to 'type2' + /w14545 # expression before comma evaluates to a function which is missing an argument list + /w14546 # function call before comma missing argument list + /w14547 # 'operator': operator before comma has no effect; expected operator with side-effect + /w14549 # 'operator': operator before comma has no effect; did you intend 'operator'? + /w14619 # pragma warning: there is no warning number 'number' + /w14640 # thread un-safe static member initialization + /w14905 # wide string literal cast to 'LPSTR' + /w14906 # string literal cast to 'LPWSTR' + + # Disable warnings which bleed through from godot-cpp's macros. + /wd4100 # unreferenced formal parameter + > + + # Clang and GNU + $<$: + -Wall + -Wcast-align + -Wctor-dtor-privacy + -Wextra + -Wformat=2 + -Wnon-virtual-dtor + -Wnull-dereference + -Woverloaded-virtual + -Wpedantic + -Wshadow + -Wunused + -Wwrite-strings + + # Disable warnings which bleed through from godot-cpp's macros. + -Wno-unused-parameter + > + + # Clang only + $<${compiler_is_clang}: + -Wdocumentation + -Wimplicit-fallthrough + > + + # GNU only + $<${compiler_is_gnu}: + -Walloc-zero + -Wduplicated-branches + -Wduplicated-cond + -Wlogical-op + > +) + +# Turn on (almost) all warnings on Clang, Apple Clang, and GNU. +# Useful for internal development, but too noisy for general development. +function( set_warn_everything ) + message( STATUS "[${PROJECT_NAME}] Turning on (almost) all warnings") + + target_compile_options( ${PROJECT_NAME} + PRIVATE + # Clang and GNU + $<$: + -Weverything + -Wno-c++98-compat + -Wno-c++98-compat-pedantic + -Wno-padded + > + ) +endfunction() + +if ( NOT MSVC AND ${PROJECT_NAME_UPPERCASE}_WARN_EVERYTHING ) + set_warn_everything() +endif() + +# Treat warnings as errors +function( set_warning_as_error ) + message( STATUS "[${PROJECT_NAME}] Treating warnings as errors") + + if ( CMAKE_VERSION VERSION_GREATER_EQUAL "3.24" ) + set_target_properties( ${PROJECT_NAME} + PROPERTIES + COMPILE_WARNING_AS_ERROR ON + ) + else() + target_compile_options( ${PROJECT_NAME} + PRIVATE + $<${compiler_is_msvc}:/WX> + $<$:-Werror> + ) + endif() +endfunction() + +if ( ${PROJECT_NAME_UPPERCASE}_WARNING_AS_ERROR ) + set_warning_as_error() +endif() diff --git a/ScreenPlayWallpaper/Godot/GDExtention/cmake/GetGitRevisionDescription.cmake b/ScreenPlayWallpaper/Godot/GDExtention/cmake/GetGitRevisionDescription.cmake new file mode 100644 index 00000000..4fbd90db --- /dev/null +++ b/ScreenPlayWallpaper/Godot/GDExtention/cmake/GetGitRevisionDescription.cmake @@ -0,0 +1,284 @@ +# - Returns a version string from Git +# +# These functions force a re-configure on each git commit so that you can +# trust the values of the variables in your build system. +# +# get_git_head_revision( [ALLOW_LOOKING_ABOVE_CMAKE_SOURCE_DIR]) +# +# Returns the refspec and sha hash of the current head revision +# +# git_describe( [ ...]) +# +# Returns the results of git describe on the source tree, and adjusting +# the output so that it tests false if an error occurs. +# +# git_describe_working_tree( [ ...]) +# +# Returns the results of git describe on the working tree (--dirty option), +# and adjusting the output so that it tests false if an error occurs. +# +# git_get_exact_tag( [ ...]) +# +# Returns the results of git describe --exact-match on the source tree, +# and adjusting the output so that it tests false if there was no exact +# matching tag. +# +# git_local_changes() +# +# Returns either "CLEAN" or "DIRTY" with respect to uncommitted changes. +# Uses the return code of "git diff-index --quiet HEAD --". +# Does not regard untracked files. +# +# Requires CMake 2.6 or newer (uses the 'function' command) +# +# Original Author: +# 2009-2020 Ryan Pavlik +# http://academic.cleardefinition.com +# +# Copyright 2009-2013, Iowa State University. +# Copyright 2013-2020, Ryan Pavlik +# Copyright 2013-2020, Contributors +# SPDX-License-Identifier: BSL-1.0 +# Distributed under the Boost Software License, Version 1.0. +# (See accompanying file LICENSE_1_0.txt or copy at +# http://www.boost.org/LICENSE_1_0.txt) + +if(__get_git_revision_description) + return() +endif() +set(__get_git_revision_description YES) + +# We must run the following at "include" time, not at function call time, +# to find the path to this module rather than the path to a calling list file +get_filename_component(_gitdescmoddir ${CMAKE_CURRENT_LIST_FILE} PATH) + +# Function _git_find_closest_git_dir finds the next closest .git directory +# that is part of any directory in the path defined by _start_dir. +# The result is returned in the parent scope variable whose name is passed +# as variable _git_dir_var. If no .git directory can be found, the +# function returns an empty string via _git_dir_var. +# +# Example: Given a path C:/bla/foo/bar and assuming C:/bla/.git exists and +# neither foo nor bar contain a file/directory .git. This wil return +# C:/bla/.git +# +function(_git_find_closest_git_dir _start_dir _git_dir_var) + set(cur_dir "${_start_dir}") + set(git_dir "${_start_dir}/.git") + while(NOT EXISTS "${git_dir}") + # .git dir not found, search parent directories + set(git_previous_parent "${cur_dir}") + get_filename_component(cur_dir "${cur_dir}" DIRECTORY) + if(cur_dir STREQUAL git_previous_parent) + # We have reached the root directory, we are not in git + set(${_git_dir_var} + "" + PARENT_SCOPE) + return() + endif() + set(git_dir "${cur_dir}/.git") + endwhile() + set(${_git_dir_var} + "${git_dir}" + PARENT_SCOPE) +endfunction() + +function(get_git_head_revision _refspecvar _hashvar) + _git_find_closest_git_dir("${CMAKE_CURRENT_SOURCE_DIR}" GIT_DIR) + + if("${ARGN}" STREQUAL "ALLOW_LOOKING_ABOVE_CMAKE_SOURCE_DIR") + set(ALLOW_LOOKING_ABOVE_CMAKE_SOURCE_DIR TRUE) + else() + set(ALLOW_LOOKING_ABOVE_CMAKE_SOURCE_DIR FALSE) + endif() + if(NOT "${GIT_DIR}" STREQUAL "") + file(RELATIVE_PATH _relative_to_source_dir "${CMAKE_SOURCE_DIR}" + "${GIT_DIR}") + if("${_relative_to_source_dir}" MATCHES "[.][.]" AND NOT ALLOW_LOOKING_ABOVE_CMAKE_SOURCE_DIR) + # We've gone above the CMake root dir. + set(GIT_DIR "") + endif() + endif() + if("${GIT_DIR}" STREQUAL "") + set(${_refspecvar} + "GITDIR-NOTFOUND" + PARENT_SCOPE) + set(${_hashvar} + "GITDIR-NOTFOUND" + PARENT_SCOPE) + return() + endif() + + # Check if the current source dir is a git submodule or a worktree. + # In both cases .git is a file instead of a directory. + # + if(NOT IS_DIRECTORY ${GIT_DIR}) + # The following git command will return a non empty string that + # points to the super project working tree if the current + # source dir is inside a git submodule. + # Otherwise the command will return an empty string. + # + execute_process( + COMMAND "${GIT_EXECUTABLE}" rev-parse + --show-superproject-working-tree + WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" + OUTPUT_VARIABLE out + ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE) + if(NOT "${out}" STREQUAL "") + # If out is empty, GIT_DIR/CMAKE_CURRENT_SOURCE_DIR is in a submodule + file(READ ${GIT_DIR} submodule) + string(REGEX REPLACE "gitdir: (.*)$" "\\1" GIT_DIR_RELATIVE + ${submodule}) + string(STRIP ${GIT_DIR_RELATIVE} GIT_DIR_RELATIVE) + get_filename_component(SUBMODULE_DIR ${GIT_DIR} PATH) + get_filename_component(GIT_DIR ${SUBMODULE_DIR}/${GIT_DIR_RELATIVE} + ABSOLUTE) + set(HEAD_SOURCE_FILE "${GIT_DIR}/HEAD") + else() + # GIT_DIR/CMAKE_CURRENT_SOURCE_DIR is in a worktree + file(READ ${GIT_DIR} worktree_ref) + # The .git directory contains a path to the worktree information directory + # inside the parent git repo of the worktree. + # + string(REGEX REPLACE "gitdir: (.*)$" "\\1" git_worktree_dir + ${worktree_ref}) + string(STRIP ${git_worktree_dir} git_worktree_dir) + _git_find_closest_git_dir("${git_worktree_dir}" GIT_DIR) + set(HEAD_SOURCE_FILE "${git_worktree_dir}/HEAD") + endif() + else() + set(HEAD_SOURCE_FILE "${GIT_DIR}/HEAD") + endif() + set(GIT_DATA "${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/git-data") + if(NOT EXISTS "${GIT_DATA}") + file(MAKE_DIRECTORY "${GIT_DATA}") + endif() + + if(NOT EXISTS "${HEAD_SOURCE_FILE}") + return() + endif() + set(HEAD_FILE "${GIT_DATA}/HEAD") + configure_file("${HEAD_SOURCE_FILE}" "${HEAD_FILE}" COPYONLY) + + configure_file("${_gitdescmoddir}/GetGitRevisionDescription.cmake.in" + "${GIT_DATA}/grabRef.cmake" @ONLY) + include("${GIT_DATA}/grabRef.cmake") + + set(${_refspecvar} + "${HEAD_REF}" + PARENT_SCOPE) + set(${_hashvar} + "${HEAD_HASH}" + PARENT_SCOPE) +endfunction() + +function(git_describe _var) + if(NOT GIT_FOUND) + find_package(Git QUIET) + endif() + get_git_head_revision(refspec hash) + if(NOT GIT_FOUND) + set(${_var} + "GIT-NOTFOUND" + PARENT_SCOPE) + return() + endif() + if(NOT hash) + set(${_var} + "HEAD-HASH-NOTFOUND" + PARENT_SCOPE) + return() + endif() + + # TODO sanitize + #if((${ARGN}" MATCHES "&&") OR + # (ARGN MATCHES "||") OR + # (ARGN MATCHES "\\;")) + # message("Please report the following error to the project!") + # message(FATAL_ERROR "Looks like someone's doing something nefarious with git_describe! Passed arguments ${ARGN}") + #endif() + + #message(STATUS "Arguments to execute_process: ${ARGN}") + + execute_process( + COMMAND "${GIT_EXECUTABLE}" describe --tags --always ${hash} ${ARGN} + WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" + RESULT_VARIABLE res + OUTPUT_VARIABLE out + ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE) + if(NOT res EQUAL 0) + set(out "${out}-${res}-NOTFOUND") + endif() + + set(${_var} + "${out}" + PARENT_SCOPE) +endfunction() + +function(git_describe_working_tree _var) + if(NOT GIT_FOUND) + find_package(Git QUIET) + endif() + if(NOT GIT_FOUND) + set(${_var} + "GIT-NOTFOUND" + PARENT_SCOPE) + return() + endif() + + execute_process( + COMMAND "${GIT_EXECUTABLE}" describe --dirty ${ARGN} + WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" + RESULT_VARIABLE res + OUTPUT_VARIABLE out + ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE) + if(NOT res EQUAL 0) + set(out "${out}-${res}-NOTFOUND") + endif() + + set(${_var} + "${out}" + PARENT_SCOPE) +endfunction() + +function(git_get_exact_tag _var) + git_describe(out --exact-match ${ARGN}) + set(${_var} + "${out}" + PARENT_SCOPE) +endfunction() + +function(git_local_changes _var) + if(NOT GIT_FOUND) + find_package(Git QUIET) + endif() + get_git_head_revision(refspec hash) + if(NOT GIT_FOUND) + set(${_var} + "GIT-NOTFOUND" + PARENT_SCOPE) + return() + endif() + if(NOT hash) + set(${_var} + "HEAD-HASH-NOTFOUND" + PARENT_SCOPE) + return() + endif() + + execute_process( + COMMAND "${GIT_EXECUTABLE}" diff-index --quiet HEAD -- + WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" + RESULT_VARIABLE res + OUTPUT_VARIABLE out + ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE) + if(res EQUAL 0) + set(${_var} + "CLEAN" + PARENT_SCOPE) + else() + set(${_var} + "DIRTY" + PARENT_SCOPE) + endif() +endfunction() diff --git a/ScreenPlayWallpaper/Godot/GDExtention/cmake/GetGitRevisionDescription.cmake.in b/ScreenPlayWallpaper/Godot/GDExtention/cmake/GetGitRevisionDescription.cmake.in new file mode 100644 index 00000000..116efc4e --- /dev/null +++ b/ScreenPlayWallpaper/Godot/GDExtention/cmake/GetGitRevisionDescription.cmake.in @@ -0,0 +1,43 @@ +# +# Internal file for GetGitRevisionDescription.cmake +# +# Requires CMake 2.6 or newer (uses the 'function' command) +# +# Original Author: +# 2009-2010 Ryan Pavlik +# http://academic.cleardefinition.com +# Iowa State University HCI Graduate Program/VRAC +# +# Copyright 2009-2012, Iowa State University +# Copyright 2011-2015, Contributors +# Distributed under the Boost Software License, Version 1.0. +# (See accompanying file LICENSE_1_0.txt or copy at +# http://www.boost.org/LICENSE_1_0.txt) +# SPDX-License-Identifier: BSL-1.0 + +set(HEAD_HASH) + +file(READ "@HEAD_FILE@" HEAD_CONTENTS LIMIT 1024) + +string(STRIP "${HEAD_CONTENTS}" HEAD_CONTENTS) +if(HEAD_CONTENTS MATCHES "ref") + # named branch + string(REPLACE "ref: " "" HEAD_REF "${HEAD_CONTENTS}") + if(EXISTS "@GIT_DIR@/${HEAD_REF}") + configure_file("@GIT_DIR@/${HEAD_REF}" "@GIT_DATA@/head-ref" COPYONLY) + else() + configure_file("@GIT_DIR@/packed-refs" "@GIT_DATA@/packed-refs" COPYONLY) + file(READ "@GIT_DATA@/packed-refs" PACKED_REFS) + if(${PACKED_REFS} MATCHES "([0-9a-z]*) ${HEAD_REF}") + set(HEAD_HASH "${CMAKE_MATCH_1}") + endif() + endif() +else() + # detached HEAD + configure_file("@GIT_DIR@/HEAD" "@GIT_DATA@/head-ref" COPYONLY) +endif() + +if(NOT HEAD_HASH) + file(READ "@GIT_DATA@/head-ref" HEAD_HASH LIMIT 1024) + string(STRIP "${HEAD_HASH}" HEAD_HASH) +endif() diff --git a/ScreenPlayWallpaper/Godot/GDExtention/cmake/GitVersionInfo.cmake b/ScreenPlayWallpaper/Godot/GDExtention/cmake/GitVersionInfo.cmake new file mode 100644 index 00000000..c1285ab5 --- /dev/null +++ b/ScreenPlayWallpaper/Godot/GDExtention/cmake/GitVersionInfo.cmake @@ -0,0 +1,46 @@ +# SPDX-License-Identifier: Unlicense + +find_program( GIT_PROGRAM git ) + +if ( GIT_PROGRAM ) + # get version information + execute_process( + COMMAND "${GIT_PROGRAM}" --version + OUTPUT_VARIABLE GIT_VERSION + OUTPUT_STRIP_TRAILING_WHITESPACE + ) + + message( STATUS "Using git: ${GIT_PROGRAM} (${GIT_VERSION})" ) + + include( GetGitRevisionDescription ) + + get_git_head_revision( GIT_REFSPEC GIT_SHA1 ) + git_describe( GIT_SHORT ) + + string( TOUPPER ${PROJECT_NAME} UPPER_PROJECT_NAME ) + + set( VERSION_INPUT_FILE "src/Version.h.in" ) + set( VERSION_OUTPUT_FILE "${CMAKE_BINARY_DIR}/gen/Version.h" ) + + configure_file( "${VERSION_INPUT_FILE}" "${VERSION_OUTPUT_FILE}" ) + + target_sources( ${PROJECT_NAME} + PRIVATE + "${VERSION_INPUT_FILE}" + "${VERSION_OUTPUT_FILE}" + ) + + get_filename_component( VERSION_OUTPUT_FILE_DIR ${VERSION_OUTPUT_FILE} DIRECTORY ) + + target_include_directories( ${PROJECT_NAME} + PRIVATE + ${VERSION_OUTPUT_FILE_DIR} + ) + + message( STATUS "${PROJECT_NAME} version: ${GIT_SHORT}" ) + + unset( VERSION_INPUT_FILE ) + unset( VERSION_OUTPUT_FILE ) + unset( VERSION_OUTPUT_FILE_DIR ) + unset( GIT_VERSION ) +endif() diff --git a/ScreenPlayWallpaper/Godot/GDExtention/cmake/ccache.cmake b/ScreenPlayWallpaper/Godot/GDExtention/cmake/ccache.cmake new file mode 100644 index 00000000..4bb5661b --- /dev/null +++ b/ScreenPlayWallpaper/Godot/GDExtention/cmake/ccache.cmake @@ -0,0 +1,22 @@ +# SPDX-License-Identifier: Unlicense + +# See: https://crascit.com/2016/04/09/using-ccache-with-cmake/ +find_program( CCACHE_PROGRAM ccache ) + +if ( CCACHE_PROGRAM ) + # get version information + execute_process( + COMMAND "${CCACHE_PROGRAM}" --version + OUTPUT_VARIABLE CCACHE_VERSION + ) + + string( REGEX MATCH "[^\r\n]*" CCACHE_VERSION ${CCACHE_VERSION} ) + + message( STATUS "Using ccache: ${CCACHE_PROGRAM} (${CCACHE_VERSION})" ) + + # Turn on ccache for all targets + set( CMAKE_CXX_COMPILER_LAUNCHER "${CCACHE_PROGRAM}" ) + set( CMAKE_C_COMPILER_LAUNCHER "${CCACHE_PROGRAM}" ) + + unset( CCACHE_VERSION ) +endif() diff --git a/ScreenPlayWallpaper/Godot/GDExtention/extern/godot-cpp b/ScreenPlayWallpaper/Godot/GDExtention/extern/godot-cpp new file mode 160000 index 00000000..28494f0b --- /dev/null +++ b/ScreenPlayWallpaper/Godot/GDExtention/extern/godot-cpp @@ -0,0 +1 @@ +Subproject commit 28494f0bd59f9c35289524e503648ed8b4baaa59 diff --git a/ScreenPlayWallpaper/Godot/GDExtention/src/CMakeLists.txt b/ScreenPlayWallpaper/Godot/GDExtention/src/CMakeLists.txt new file mode 100644 index 00000000..9b378a18 --- /dev/null +++ b/ScreenPlayWallpaper/Godot/GDExtention/src/CMakeLists.txt @@ -0,0 +1,15 @@ +# SPDX-License-Identifier: Unlicense + +target_sources( ${PROJECT_NAME} + PRIVATE + ScreenPlayWallpaper.h + ScreenPlayWallpaper.cpp + GDExtensionTemplate.h + GDExtensionTemplate.cpp + RegisterExtension.cpp +) + +target_include_directories( ${PROJECT_NAME} + PRIVATE + "src" +) diff --git a/ScreenPlayWallpaper/Godot/GDExtention/src/GDExtensionTemplate.cpp b/ScreenPlayWallpaper/Godot/GDExtention/src/GDExtensionTemplate.cpp new file mode 100644 index 00000000..91fd7ea8 --- /dev/null +++ b/ScreenPlayWallpaper/Godot/GDExtention/src/GDExtensionTemplate.cpp @@ -0,0 +1,32 @@ +// SPDX-License-Identifier: Unlicense + +#include "godot_cpp/core/class_db.hpp" + +#include "GDExtensionTemplate.h" +#include "Version.h" + +/// @file +/// GDExtensionTemplate example implementation. + +/*! +@brief Get the version string for this extension. + +@details +The version string is generated by cmake using src/Version.h.in. + +It uses the form " -<# commits since last tag>-". +If there are no commits since the last tag, only the tag is shown. + +@return The version string (e.g. "Foo v1.2.3-gdedbd01"). +*/ +godot::String GDExtensionTemplate::version() +{ + return VersionInfo::VERSION_STR.data(); +} + +/// Bind our methods so GDScript can access them. +void GDExtensionTemplate::_bind_methods() +{ + godot::ClassDB::bind_static_method( "GDExtensionTemplate", godot::D_METHOD( "version" ), + &GDExtensionTemplate::version ); +} diff --git a/ScreenPlayWallpaper/Godot/GDExtention/src/GDExtensionTemplate.h b/ScreenPlayWallpaper/Godot/GDExtention/src/GDExtensionTemplate.h new file mode 100644 index 00000000..038aa40e --- /dev/null +++ b/ScreenPlayWallpaper/Godot/GDExtention/src/GDExtensionTemplate.h @@ -0,0 +1,20 @@ +#pragma once +// SPDX-License-Identifier: Unlicense + +#include "godot_cpp/classes/object.hpp" + +namespace godot +{ + class ClassDB; +}; + +class GDExtensionTemplate : public godot::Object +{ + GDCLASS( GDExtensionTemplate, godot::Object ) + +public: + static godot::String version(); + +private: + static void _bind_methods(); +}; diff --git a/ScreenPlayWallpaper/Godot/GDExtention/src/RegisterExtension.cpp b/ScreenPlayWallpaper/Godot/GDExtention/src/RegisterExtension.cpp new file mode 100644 index 00000000..8bbf988e --- /dev/null +++ b/ScreenPlayWallpaper/Godot/GDExtention/src/RegisterExtension.cpp @@ -0,0 +1,74 @@ +// Copied from godot-cpp/test/src and modified. + +#include "gdextension_interface.h" + +#include "godot_cpp/core/class_db.hpp" +#include "godot_cpp/core/defs.hpp" +#include "godot_cpp/godot.hpp" + +#include "GDExtensionTemplate.h" +#include "ScreenPlayWallpaper.h" + +/// @file +/// Register our classes with Godot. + +namespace { +/// @brief Called by Godot to let us register our classes with Godot. +/// +/// @param p_level the level being initialized by Godot +/// +/// @see GDExtensionInit +void initializeExtension(godot::ModuleInitializationLevel p_level) +{ + if (p_level != godot::MODULE_INITIALIZATION_LEVEL_SCENE) { + return; + } + + godot::ClassDB::register_class(); + godot::ClassDB::register_class(); + godot::ClassDB::register_class(); + godot::ClassDB::register_class(true); + godot::ClassDB::register_abstract_class(); + + godot::ClassDB::register_class(); +} + +/// @brief Called by Godot to let us do any cleanup. +/// +/// @see GDExtensionInit +void uninitializeExtension(godot::ModuleInitializationLevel p_level) +{ + if (p_level != godot::MODULE_INITIALIZATION_LEVEL_SCENE) { + return; + } +} +} + +extern "C" { +/// @brief This is the entry point for the shared library. +/// +/// @note The name of this function must match the "entry_symbol" in +/// templates/template.*.gdextension.in +/// +/// @param p_get_proc_address the interface (need more info) +/// @param p_library the library (need more info) +/// @param r_initialization the intialization (need more info) +/// +/// @returns GDExtensionBool +GDExtensionBool GDE_EXPORT GDExtensionInit( + GDExtensionInterfaceGetProcAddress p_get_proc_address, GDExtensionClassLibraryPtr p_library, + GDExtensionInitialization* r_initialization) +{ + { + godot::GDExtensionBinding::InitObject init_obj(p_get_proc_address, p_library, + r_initialization); + + init_obj.register_initializer(initializeExtension); + init_obj.register_terminator(uninitializeExtension); + init_obj.set_minimum_library_initialization_level( + godot::MODULE_INITIALIZATION_LEVEL_SCENE); + + return init_obj.init(); + } +} +} diff --git a/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayWallpaper.cpp b/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayWallpaper.cpp new file mode 100644 index 00000000..1eb98e18 --- /dev/null +++ b/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayWallpaper.cpp @@ -0,0 +1,475 @@ +// Copied from godot-cpp/test/src and modified. + +#include "godot_cpp/classes/global_constants.hpp" +#include "godot_cpp/classes/label.hpp" +#include "godot_cpp/core/class_db.hpp" +#include "godot_cpp/variant/utility_functions.hpp" + +#include "ScreenPlayWallpaper.h" + +// Used to mark unused parameters to indicate intent and suppress warnings. +#define UNUSED(expr) (void)(expr) + +namespace { +constexpr int MAGIC_NUMBER = 42; +} + +//// ScreenPlayWallpaper + +int ScreenPlayWallpaper::sInstanceCount = 0; +int ScreenPlayWallpaper::sLastID = 0; + +ScreenPlayWallpaper::ScreenPlayWallpaper() +{ + mID = ++sLastID; + sInstanceCount++; + + godot::UtilityFunctions::print( + "ScreenPlayWallpaper ", godot::itos(mID), + " created, current instance count: ", godot::itos(sInstanceCount)); +} + +ScreenPlayWallpaper::~ScreenPlayWallpaper() +{ + sInstanceCount--; + godot::UtilityFunctions::print( + "ScreenPlayWallpaper ", godot::itos(mID), + " destroyed, current instance count: ", godot::itos(sInstanceCount)); +} + +int ScreenPlayWallpaper::getID() const +{ + return mID; +} + +void ScreenPlayWallpaper::_bind_methods() +{ + godot::ClassDB::bind_method(godot::D_METHOD("get_id"), &ScreenPlayWallpaper::getID); +} + +//// ExampleMin + +void ExampleMin::_bind_methods() +{ +} + +//// Example + +Example::Example() +{ + godot::UtilityFunctions::print("Constructor."); +} + +Example::~Example() +{ + godot::UtilityFunctions::print("Destructor."); +} + +// Methods. +void Example::simpleFunc() +{ + godot::UtilityFunctions::print(" Simple func called."); +} + +void Example::simpleConstFunc() const +{ + godot::UtilityFunctions::print(" Simple const func called."); +} + +godot::String Example::returnSomething(const godot::String& inBase) +{ + godot::UtilityFunctions::print(" Return something called."); + + return inBase; +} + +godot::Viewport* Example::returnSomethingConst() const +{ + godot::UtilityFunctions::print(" Return something const called."); + + if (is_inside_tree()) { + godot::Viewport* result = get_viewport(); + + return result; + } + + return nullptr; +} + +godot::Ref Example::returnEmptyRef() const +{ + godot::Ref ref; + return ref; +} + +ScreenPlayWallpaper* Example::returnExtendedRef() const +{ + // You can instance and return a refcounted object like this, but keep in mind that refcounting + // starts with the returned object and it will be destroyed when all references are destroyed. + // If you store this pointer you run the risk of having a pointer to a destroyed object. + return memnew(ScreenPlayWallpaper()); +} + +godot::Ref Example::extendedRefChecks(godot::Ref inRef) const +{ + // This is the preferred way of instancing and returning a refcounted object: + godot::Ref ref; + ref.instantiate(); + + godot::UtilityFunctions::print( + " Example ref checks called with value: ", inRef->get_instance_id(), + ", returning value: ", ref->get_instance_id()); + + return ref; +} + +godot::Variant Example::varargsFunc(const godot::Variant** inArgs, GDExtensionInt inArgCount, + GDExtensionCallError& outError) +{ + UNUSED(inArgs); + UNUSED(outError); + + godot::UtilityFunctions::print(" Varargs (Variant return) called with ", + godot::String::num_int64(inArgCount), " arguments"); + + return inArgCount; +} + +int Example::varargsFuncNonVoidReturn(const godot::Variant** inArgs, GDExtensionInt inArgCount, + GDExtensionCallError& outError) +{ + UNUSED(inArgs); + UNUSED(outError); + + godot::UtilityFunctions::print(" Varargs (int return) called with ", + godot::String::num_int64(inArgCount), " arguments"); + + return MAGIC_NUMBER; +} + +void Example::varargsFuncVoidReturn(const godot::Variant** inArgs, GDExtensionInt inArgCount, + GDExtensionCallError& outError) +{ + UNUSED(inArgs); + UNUSED(outError); + + godot::UtilityFunctions::print(" Varargs (no return) called with ", + godot::String::num_int64(inArgCount), " arguments"); +} + +void Example::emitCustomSignal(const godot::String& inName, int inValue) +{ + emit_signal("custom_signal", inName, inValue); +} + +int Example::defArgs(int inA, int inB) const +{ + return inA + inB; +} + +godot::Array Example::testArray() const +{ + godot::Array arr; + + arr.resize(2); + arr[0] = godot::Variant(1); + arr[1] = godot::Variant(2); + + return arr; +} + +void Example::testTypedArrayArg(const godot::TypedArray& inArray) +{ + for (int i = 0; i < inArray.size(); ++i) { + godot::UtilityFunctions::print(inArray[i]); + } +} + +godot::TypedArray Example::testTypedArray() const +{ + godot::TypedArray arr; + + arr.resize(2); + arr[0] = godot::Vector2(1, 2); + arr[1] = godot::Vector2(2, 3); + + return arr; +} + +godot::Dictionary Example::testDictionary() const +{ + godot::Dictionary dict; + + dict["hello"] = "world"; + dict["foo"] = "bar"; + + return dict; +} + +Example* Example::testNodeArgument(Example* inNode) const +{ + // This should use godot::String::num_uint64(), but it is currently broken: + // https://github.com/godotengine/godot-cpp/issues/1014 + godot::UtilityFunctions::print( + " Test node argument called with ", + (inNode != nullptr) + ? godot::String::num_int64(static_cast(inNode->get_instance_id())) + : "null"); + return inNode; +} + +godot::String Example::testStringOps() const +{ + godot::String s = godot::String("A"); + s += "B"; + s += "C"; + s += char32_t(0x010E); + s = s + "E"; + + return s; +} + +int Example::testVectorOps() const +{ + godot::PackedInt32Array arr; + arr.push_back(10); + arr.push_back(20); + arr.push_back(30); + arr.push_back(45); + + int ret = 0; + for (const int32_t& E : arr) { + ret += E; + } + + return ret; +} + +godot::BitField Example::testBitfield(godot::BitField inFlags) +{ + godot::UtilityFunctions::print(" Got BitField: ", godot::String::num_int64(inFlags)); + return inFlags; +} + +// Properties. +void Example::setCustomPosition(const godot::Vector2& inPos) +{ + mCustomPosition = inPos; +} + +godot::Vector2 Example::getCustomPosition() const +{ + return mCustomPosition; +} + +godot::Vector4 Example::getV4() const +{ + return { 1.2f, 3.4f, 5.6f, 7.8f }; +} + +// Static methods +int Example::testStatic(int inA, int inB) +{ + return inA + inB; +} + +void Example::testStatic2() +{ + godot::UtilityFunctions::print(" void static"); +} + +// Virtual function override. +bool Example::_has_point(const godot::Vector2& inPoint) const +{ + auto* label = godot::Control::get_node("Label"); + + label->set_text("Got point: " + godot::Variant(inPoint).stringify()); + + return false; +} + +void Example::_bind_methods() +{ + // Methods. + godot::ClassDB::bind_method(godot::D_METHOD("simple_func"), &Example::simpleFunc); + godot::ClassDB::bind_method(godot::D_METHOD("simple_const_func"), + &Example::simpleConstFunc); + godot::ClassDB::bind_method(godot::D_METHOD("return_something"), &Example::returnSomething); + godot::ClassDB::bind_method(godot::D_METHOD("return_something_const"), + &Example::returnSomethingConst); + godot::ClassDB::bind_method(godot::D_METHOD("return_empty_ref"), &Example::returnEmptyRef); + godot::ClassDB::bind_method(godot::D_METHOD("return_extended_ref"), + &Example::returnExtendedRef); + godot::ClassDB::bind_method(godot::D_METHOD("extended_ref_checks", "ref"), + &Example::extendedRefChecks); + + godot::ClassDB::bind_method(godot::D_METHOD("test_array"), &Example::testArray); + godot::ClassDB::bind_method(godot::D_METHOD("test_tarray_arg", "array"), + &Example::testTypedArrayArg); + godot::ClassDB::bind_method(godot::D_METHOD("test_tarray"), &Example::testTypedArray); + godot::ClassDB::bind_method(godot::D_METHOD("test_dictionary"), &Example::testDictionary); + godot::ClassDB::bind_method(godot::D_METHOD("test_node_argument"), + &Example::testNodeArgument); + godot::ClassDB::bind_method(godot::D_METHOD("test_string_ops"), &Example::testStringOps); + godot::ClassDB::bind_method(godot::D_METHOD("test_vector_ops"), &Example::testVectorOps); + + godot::ClassDB::bind_method(godot::D_METHOD("test_bitfield", "flags"), + &Example::testBitfield); + + godot::ClassDB::bind_method(godot::D_METHOD("def_args", "a", "b"), &Example::defArgs, + DEFVAL(100), DEFVAL(200)); + + godot::ClassDB::bind_static_method("Example", godot::D_METHOD("test_static", "a", "b"), + &Example::testStatic); + godot::ClassDB::bind_static_method("Example", godot::D_METHOD("test_static2"), + &Example::testStatic2); + + { + godot::MethodInfo mi; + mi.arguments.emplace_back(godot::Variant::STRING, "some_argument"); + mi.name = "varargs_func"; + + godot::ClassDB::bind_vararg_method(godot::METHOD_FLAGS_DEFAULT, "varargs_func", + &Example::varargsFunc, mi); + } + + { + godot::MethodInfo mi; + mi.arguments.emplace_back(godot::Variant::STRING, "some_argument"); + mi.name = "varargs_func_nv"; + + godot::ClassDB::bind_vararg_method(godot::METHOD_FLAGS_DEFAULT, "varargs_func_nv", + &Example::varargsFuncNonVoidReturn, mi); + } + + { + godot::MethodInfo mi; + mi.arguments.emplace_back(godot::Variant::STRING, "some_argument"); + mi.name = "varargs_func_void"; + + godot::ClassDB::bind_vararg_method(godot::METHOD_FLAGS_DEFAULT, "varargs_func_void", + &Example::varargsFuncVoidReturn, mi); + } + + // Properties. + ADD_GROUP("Test group", "group_"); + ADD_SUBGROUP("Test subgroup", "group_subgroup_"); + + godot::ClassDB::bind_method(godot::D_METHOD("get_custom_position"), + &Example::getCustomPosition); + godot::ClassDB::bind_method(godot::D_METHOD("get_v4"), &Example::getV4); + godot::ClassDB::bind_method(godot::D_METHOD("set_custom_position", "position"), + &Example::setCustomPosition); + ADD_PROPERTY(godot::PropertyInfo(godot::Variant::VECTOR2, "group_subgroup_custom_position"), + "set_custom_position", "get_custom_position"); + + // Signals. + ADD_SIGNAL(godot::MethodInfo("custom_signal", + godot::PropertyInfo(godot::Variant::STRING, "name"), + godot::PropertyInfo(godot::Variant::INT, "value"))); + godot::ClassDB::bind_method(godot::D_METHOD("emit_custom_signal", "name", "value"), + &Example::emitCustomSignal); + + // Constants. + BIND_ENUM_CONSTANT(FIRST) + BIND_ENUM_CONSTANT(ANSWER_TO_EVERYTHING) + + BIND_BITFIELD_FLAG(FLAG_ONE); + BIND_BITFIELD_FLAG(FLAG_TWO); + + BIND_CONSTANT(CONSTANT_WITHOUT_ENUM); + BIND_ENUM_CONSTANT(OUTSIDE_OF_CLASS); +} + +void Example::_notification(int inWhat) +{ + godot::UtilityFunctions::print("Notification: ", godot::String::num(inWhat)); +} + +bool Example::_set(const godot::StringName& inName, const godot::Variant& inValue) +{ + godot::String name = inName; + + if (name.begins_with("dproperty")) { + int64_t index = name.get_slicec('_', 1).to_int(); + mDProp[index] = inValue; + + return true; + } + + if (name == "property_from_list") { + mPropertyFromList = inValue; + + return true; + } + + return false; +} + +bool Example::_get(const godot::StringName& inName, godot::Variant& outReturn) const +{ + godot::String name = inName; + + if (name.begins_with("dproperty")) { + int64_t index = name.get_slicec('_', 1).to_int(); + outReturn = mDProp[index]; + + return true; + } + + if (name == "property_from_list") { + outReturn = mPropertyFromList; + + return true; + } + + return false; +} + +void Example::_get_property_list(godot::List* outList) const +{ + outList->push_back(godot::PropertyInfo(godot::Variant::VECTOR3, "property_from_list")); + + for (int i = 0; i < 3; ++i) { + outList->push_back( + godot::PropertyInfo(godot::Variant::VECTOR2, "dproperty_" + godot::itos(i))); + } +} + +bool Example::_property_can_revert(const godot::StringName& inName) const +{ + if (inName == godot::StringName("property_from_list") && mPropertyFromList != godot::Vector3(MAGIC_NUMBER, MAGIC_NUMBER, MAGIC_NUMBER)) { + return true; + } + + return false; +}; + +bool Example::_property_get_revert(const godot::StringName& inName, + godot::Variant& outProperty) const +{ + if (inName == godot::StringName("property_from_list")) { + outProperty = godot::Vector3(MAGIC_NUMBER, MAGIC_NUMBER, MAGIC_NUMBER); + + return true; + } + + return false; +}; + +godot::String Example::_to_string() const +{ + return "[ GDExtension::Example <--> Instance ID:" + godot::uitos(get_instance_id()) + " ]"; +} + +//// ExampleVirtual + +void ExampleVirtual::_bind_methods() +{ +} + +//// ExampleAbstract + +void ExampleAbstract::_bind_methods() +{ +} diff --git a/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayWallpaper.h b/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayWallpaper.h new file mode 100644 index 00000000..bc540d3b --- /dev/null +++ b/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayWallpaper.h @@ -0,0 +1,135 @@ +#pragma once +// Copied from godot-cpp/test/src and modified. + +#include "godot_cpp/classes/control.hpp" +#include "godot_cpp/classes/global_constants.hpp" +#include "godot_cpp/classes/viewport.hpp" +#include "godot_cpp/core/binder_common.hpp" + +class ScreenPlayWallpaper : public godot::RefCounted { + GDCLASS(ScreenPlayWallpaper, RefCounted) + +public: + ScreenPlayWallpaper(); + ~ScreenPlayWallpaper() override; + + int getID() const; + +protected: + static void _bind_methods(); + +private: + static int sInstanceCount; + static int sLastID; + + int mID; +}; + +class ExampleMin : public godot::Control { + GDCLASS(ExampleMin, Control) + +protected: + static void _bind_methods(); +}; + +class Example : public godot::Control { + GDCLASS(Example, godot::Control) + +public: + // Constants. + enum Constants { + FIRST, + ANSWER_TO_EVERYTHING = 42, + }; + + enum { + CONSTANT_WITHOUT_ENUM = 314, + }; + + enum Flags { + FLAG_ONE = 1, + FLAG_TWO = 2, + }; + + Example(); + ~Example() override; + + // Functions. + void simpleFunc(); + void simpleConstFunc() const; + godot::String returnSomething(const godot::String& inBase); + godot::Viewport* returnSomethingConst() const; + godot::Ref returnEmptyRef() const; + ScreenPlayWallpaper* returnExtendedRef() const; + godot::Ref extendedRefChecks(godot::Ref inRef) const; + godot::Variant varargsFunc(const godot::Variant** inArgs, GDExtensionInt inArgCount, + GDExtensionCallError& outError); + int varargsFuncNonVoidReturn(const godot::Variant** inArgs, GDExtensionInt inArgCount, + GDExtensionCallError& outError); + void varargsFuncVoidReturn(const godot::Variant** inArgs, GDExtensionInt inArgCount, + GDExtensionCallError& outError); + + void emitCustomSignal(const godot::String& inName, int inValue); + int defArgs(int inA = 100, int inB = 200) const; + + godot::Array testArray() const; + void testTypedArrayArg(const godot::TypedArray& inArray); + godot::TypedArray testTypedArray() const; + godot::Dictionary testDictionary() const; + Example* testNodeArgument(Example* inNode) const; + godot::String testStringOps() const; + int testVectorOps() const; + + godot::BitField testBitfield(godot::BitField inFlags); + + // Property. + void setCustomPosition(const godot::Vector2& inPos); + godot::Vector2 getCustomPosition() const; + godot::Vector4 getV4() const; + + // Static method. + static int testStatic(int inA, int inB); + static void testStatic2(); + + // Virtual function override (no need to bind manually). + virtual bool _has_point(const godot::Vector2& inPoint) const override; + +protected: + static void _bind_methods(); + + void _notification(int inWhat); + bool _set(const godot::StringName& inName, const godot::Variant& inValue); + bool _get(const godot::StringName& inName, godot::Variant& outReturn) const; + void _get_property_list(godot::List* outList) const; + bool _property_can_revert(const godot::StringName& inName) const; + bool _property_get_revert(const godot::StringName& inName, godot::Variant& outProperty) const; + + godot::String _to_string() const; + +private: + godot::Vector2 mCustomPosition; + godot::Vector3 mPropertyFromList; + godot::Vector2 mDProp[3]; +}; + +VARIANT_ENUM_CAST(Example::Constants); +VARIANT_BITFIELD_CAST(Example::Flags); + +enum EnumWithoutClass { + OUTSIDE_OF_CLASS = 512 +}; +VARIANT_ENUM_CAST(EnumWithoutClass); + +class ExampleVirtual : public godot::Object { + GDCLASS(ExampleVirtual, godot::Object) + +protected: + static void _bind_methods(); +}; + +class ExampleAbstract : public godot::Object { + GDCLASS(ExampleAbstract, godot::Object) + +protected: + static void _bind_methods(); +}; diff --git a/ScreenPlayWallpaper/Godot/GDExtention/src/Version.h.in b/ScreenPlayWallpaper/Godot/GDExtention/src/Version.h.in new file mode 100644 index 00000000..10a52438 --- /dev/null +++ b/ScreenPlayWallpaper/Godot/GDExtention/src/Version.h.in @@ -0,0 +1,45 @@ +#pragma once +// This file is generated by cmake. Changes will be overwritten. +// clang-format off + +#include + +// Creates a version number for use in macro comparisons. +// +// Example: +// +// // Check if the version is less than 2.1.0 +// #if ${UPPER_PROJECT_NAME}_VERSION < ${UPPER_PROJECT_NAME}_VERSION_CHECK(2, 1, 0) +// // do stuff +// #endif +// +// Returns an integer which may be used in comparisons +#define ${UPPER_PROJECT_NAME}_VERSION_CHECK( major, minor, patch ) ( ((major)<<16) | ((minor)<<8) | (patch) ) + +#define ${UPPER_PROJECT_NAME}_VERSION_MAJOR ${PROJECT_VERSION_MAJOR} +#define ${UPPER_PROJECT_NAME}_VERSION_MINOR ${PROJECT_VERSION_MINOR} +#define ${UPPER_PROJECT_NAME}_VERSION_PATCH ${PROJECT_VERSION_PATCH} + +// The version number of this extension. Used for #if comparisons. +// This is generated using the version set in the CMake project macro. +#define ${UPPER_PROJECT_NAME}_VERSION ${UPPER_PROJECT_NAME}_VERSION_CHECK( ${PROJECT_VERSION_MAJOR}, ${PROJECT_VERSION_MINOR}, ${PROJECT_VERSION_PATCH} ) + +namespace VersionInfo { + // Project name and version as a string. + // This is generated using the project name from the cmake project macro and the current git commit information. + // + // It uses the form " -<# commits since last tag>-". + // If there are no commits since the last tag, only the tag is shown. + constexpr std::string_view VERSION_STR = "${PROJECT_NAME} ${GIT_SHORT}"; + + // The version information as a string. + // This is generated using the current git commit information. + // + // It uses the form "-<# commits since last tag>-". + // If there are no commits since the last tag, only the tag is shown. + constexpr std::string_view VERSION_SHORT_STR = "${GIT_SHORT}"; + + // The full git SHA1 hash as a string. + // This is generated using the current git commit information. + constexpr std::string_view GIT_SHA1_STR = "${GIT_SHA1}"; +} diff --git a/ScreenPlayWallpaper/Godot/GDExtention/templates/CMakeLists.txt b/ScreenPlayWallpaper/Godot/GDExtention/templates/CMakeLists.txt new file mode 100644 index 00000000..5467db0f --- /dev/null +++ b/ScreenPlayWallpaper/Godot/GDExtention/templates/CMakeLists.txt @@ -0,0 +1,41 @@ +# SPDX-License-Identifier: Unlicense + +add_custom_target( templates + SOURCES + template.debug.gdextension.in + template.release.gdextension.in +) + +add_dependencies( ${PROJECT_NAME} templates ) + +# We shouldn't be relying on CMAKE_BUILD_TYPE (see https://github.com/asmaloney/GDExtensionTemplate/issues/25) +# But until we fix it here and in godot-cpp, ensure it's one we expect. +set ( ALLOWED_BUILDS "Debug;Release" ) +if ( NOT "${CMAKE_BUILD_TYPE}" IN_LIST ALLOWED_BUILDS ) + message( FATAL_ERROR "CMAKE_BUILD_TYPE must be set to Debug or Release" ) +endif() + +# Get our gdextension input file name based on build type +string( TOLOWER ${CMAKE_BUILD_TYPE} BUILD_TYPE ) +set( GD_EXTENSION_FILE_INPUT template.${BUILD_TYPE}.gdextension.in ) + +# Workaround to add the "lib" prefix to the library in our template file if using MSYS2. +if ( MINGW ) + set( LIB_PREFIX "lib") +endif() + +# Generate our project's .gdextension file from the template +set( GD_EXTENSION_FILE ${PROJECT_NAME}.gdextension ) +configure_file( ${GD_EXTENSION_FILE_INPUT} ${PROJECT_BINARY_DIR}/${PROJECT_NAME}/${GD_EXTENSION_FILE} ) + +# Install the gdextension file from the build directory +install( + FILES ${BUILD_OUTPUT_DIR}/${GD_EXTENSION_FILE} + DESTINATION ${INSTALL_DIR} +) + +unset( ALLOWED_BUILDS ) +unset( BUILD_TYPE ) +unset( GD_EXTENSION_FILE ) +unset( GD_EXTENSION_FILE_INPUT ) +unset( LIB_PREFIX ) diff --git a/ScreenPlayWallpaper/Godot/GDExtention/templates/template.debug.gdextension.in b/ScreenPlayWallpaper/Godot/GDExtention/templates/template.debug.gdextension.in new file mode 100644 index 00000000..0765cee8 --- /dev/null +++ b/ScreenPlayWallpaper/Godot/GDExtention/templates/template.debug.gdextension.in @@ -0,0 +1,10 @@ +[configuration] + +entry_symbol = "GDExtensionInit" +compatibility_minimum = 4.1 + +[libraries] + +linux.debug.x86_64 = "lib/Linux-x86_64/lib${PROJECT_NAME}-d.so" +macos.debug = "lib/Darwin-Universal/lib${PROJECT_NAME}-d.dylib" +windows.debug.x86_64 = "lib/Windows-AMD64/${LIB_PREFIX}${PROJECT_NAME}-d.dll" diff --git a/ScreenPlayWallpaper/Godot/GDExtention/templates/template.release.gdextension.in b/ScreenPlayWallpaper/Godot/GDExtention/templates/template.release.gdextension.in new file mode 100644 index 00000000..dd1c9362 --- /dev/null +++ b/ScreenPlayWallpaper/Godot/GDExtention/templates/template.release.gdextension.in @@ -0,0 +1,10 @@ +[configuration] + +entry_symbol = "GDExtensionInit" +compatibility_minimum = 4.1 + +[libraries] + +linux.release.x86_64 = "lib/Linux-x86_64/lib${PROJECT_NAME}.so" +macos.release = "lib/Darwin-universal/lib${PROJECT_NAME}.dylib" +windows.release.x86_64 = "lib/Windows-AMD64/${LIB_PREFIX}${PROJECT_NAME}.dll" diff --git a/ScreenPlayWallpaper/Godot/ScreenPlayGodot/.gitattributes b/ScreenPlayWallpaper/Godot/ScreenPlayGodot/.gitattributes new file mode 100644 index 00000000..8ad74f78 --- /dev/null +++ b/ScreenPlayWallpaper/Godot/ScreenPlayGodot/.gitattributes @@ -0,0 +1,2 @@ +# Normalize EOL for all files that Git considers text files. +* text=auto eol=lf diff --git a/ScreenPlayWallpaper/Godot/ScreenPlayGodot/.gitignore b/ScreenPlayWallpaper/Godot/ScreenPlayGodot/.gitignore new file mode 100644 index 00000000..47091836 --- /dev/null +++ b/ScreenPlayWallpaper/Godot/ScreenPlayGodot/.gitignore @@ -0,0 +1,2 @@ +# Godot 4+ specific ignores +.godot/ diff --git a/ScreenPlayWallpaper/Godot/ScreenPlayGodot/export_presets.cfg b/ScreenPlayWallpaper/Godot/ScreenPlayGodot/export_presets.cfg new file mode 100644 index 00000000..81e43f95 --- /dev/null +++ b/ScreenPlayWallpaper/Godot/ScreenPlayGodot/export_presets.cfg @@ -0,0 +1,61 @@ +[preset.0] + +name="Windows Desktop" +platform="Windows Desktop" +runnable=true +dedicated_server=false +custom_features="" +export_filter="all_resources" +include_filter="" +exclude_filter="" +export_path="../SP_export/export.exe" +encryption_include_filters="" +encryption_exclude_filters="" +encrypt_pck=false +encrypt_directory=false + +[preset.0.options] + +custom_template/debug="" +custom_template/release="" +debug/export_console_wrapper=1 +binary_format/embed_pck=false +texture_format/bptc=true +texture_format/s3tc=true +texture_format/etc=false +texture_format/etc2=false +binary_format/architecture="x86_64" +codesign/enable=false +codesign/timestamp=true +codesign/timestamp_server_url="" +codesign/digest_algorithm=1 +codesign/description="" +codesign/custom_options=PackedStringArray() +application/modify_resources=true +application/icon="" +application/console_wrapper_icon="" +application/icon_interpolation=4 +application/file_version="" +application/product_version="" +application/company_name="" +application/product_name="" +application/file_description="" +application/copyright="" +application/trademarks="" +ssh_remote_deploy/enabled=false +ssh_remote_deploy/host="user@host_ip" +ssh_remote_deploy/port="22" +ssh_remote_deploy/extra_args_ssh="" +ssh_remote_deploy/extra_args_scp="" +ssh_remote_deploy/run_script="Expand-Archive -LiteralPath '{temp_dir}\\{archive_name}' -DestinationPath '{temp_dir}' +$action = New-ScheduledTaskAction -Execute '{temp_dir}\\{exe_name}' -Argument '{cmd_args}' +$trigger = New-ScheduledTaskTrigger -Once -At 00:00 +$settings = New-ScheduledTaskSettingsSet +$task = New-ScheduledTask -Action $action -Trigger $trigger -Settings $settings +Register-ScheduledTask godot_remote_debug -InputObject $task -Force:$true +Start-ScheduledTask -TaskName godot_remote_debug +while (Get-ScheduledTask -TaskName godot_remote_debug | ? State -eq running) { Start-Sleep -Milliseconds 100 } +Unregister-ScheduledTask -TaskName godot_remote_debug -Confirm:$false -ErrorAction:SilentlyContinue" +ssh_remote_deploy/cleanup_script="Stop-ScheduledTask -TaskName godot_remote_debug -ErrorAction:SilentlyContinue +Unregister-ScheduledTask -TaskName godot_remote_debug -Confirm:$false -ErrorAction:SilentlyContinue +Remove-Item -Recurse -Force '{temp_dir}'" diff --git a/ScreenPlayWallpaper/Godot/ScreenPlayGodot/icon.svg b/ScreenPlayWallpaper/Godot/ScreenPlayGodot/icon.svg new file mode 100644 index 00000000..b370ceb7 --- /dev/null +++ b/ScreenPlayWallpaper/Godot/ScreenPlayGodot/icon.svg @@ -0,0 +1 @@ + diff --git a/ScreenPlayWallpaper/Godot/ScreenPlayGodot/icon.svg.import b/ScreenPlayWallpaper/Godot/ScreenPlayGodot/icon.svg.import new file mode 100644 index 00000000..fb6aa80d --- /dev/null +++ b/ScreenPlayWallpaper/Godot/ScreenPlayGodot/icon.svg.import @@ -0,0 +1,37 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://by316gekc8lr7" +path="res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://icon.svg" +dest_files=["res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 +svg/scale=1.0 +editor/scale_with_editor_scale=false +editor/convert_colors_with_editor_theme=false diff --git a/ScreenPlayWallpaper/Godot/ScreenPlayGodot/main.gd b/ScreenPlayWallpaper/Godot/ScreenPlayGodot/main.gd new file mode 100644 index 00000000..47808cba --- /dev/null +++ b/ScreenPlayWallpaper/Godot/ScreenPlayGodot/main.gd @@ -0,0 +1,15 @@ +extends Node3D + +func _ready(): + var path = "" + var success = ProjectSettings.load_resource_pack (path) + if success: + var scene_resource = load("res://wallpaper.tscn") + if scene_resource: + var scene_instance = scene_resource.instantiate() + add_child(scene_instance) + else: + print("Failed to load the wallpaper.tscn scene.") + else: + print("Failed to load the PCK file.") + Engine.set_max_fps(24) diff --git a/ScreenPlayWallpaper/Godot/ScreenPlayGodot/main.tscn b/ScreenPlayWallpaper/Godot/ScreenPlayGodot/main.tscn new file mode 100644 index 00000000..c5ef6456 --- /dev/null +++ b/ScreenPlayWallpaper/Godot/ScreenPlayGodot/main.tscn @@ -0,0 +1,6 @@ +[gd_scene load_steps=2 format=3 uid="uid://bc5caslt2tiuk"] + +[ext_resource type="Script" path="res://main.gd" id="1_ceeuk"] + +[node name="Wallpaper" type="Node3D"] +script = ExtResource("1_ceeuk") diff --git a/ScreenPlayWallpaper/Godot/ScreenPlayGodot/project.godot b/ScreenPlayWallpaper/Godot/ScreenPlayGodot/project.godot new file mode 100644 index 00000000..5dd8bb08 --- /dev/null +++ b/ScreenPlayWallpaper/Godot/ScreenPlayGodot/project.godot @@ -0,0 +1,21 @@ +; Engine configuration file. +; It's best edited using the editor UI and not directly, +; since the parameters that go here are not all obvious. +; +; Format: +; [section] ; section goes between [] +; param=value ; assign values to parameters + +config_version=5 + +[application] + +config/name="ScreenPlay" +run/main_scene="res://main.tscn" +config/features=PackedStringArray("4.1", "Mobile") +boot_splash/show_image=false +config/icon="res://icon.svg" + +[rendering] + +renderer/rendering_method="mobile" diff --git a/Tools/defines.py b/Tools/defines.py index 3650ae32..326b1eb4 100644 --- a/Tools/defines.py +++ b/Tools/defines.py @@ -28,3 +28,4 @@ QT_IFW_VERSION = "4.6" VCPKG_VERSION = "f06975f46d8c7a1dad916e1e997584f77ae0c34a" PYTHON_EXECUTABLE = "python" if sys.platform == "win32" else "python3" FFMPEG_VERSION = "5.0.1" +GODOT_VERSION = "4.1.1" diff --git a/Tools/requirements.txt b/Tools/requirements.txt index 9a567f28..f7a1531a 100644 --- a/Tools/requirements.txt +++ b/Tools/requirements.txt @@ -1,2 +1,3 @@ cmake-format -aqtinstall \ No newline at end of file +aqtinstall +requests \ No newline at end of file diff --git a/Tools/setup.py b/Tools/setup.py index 236ca0be..24d29c2f 100755 --- a/Tools/setup.py +++ b/Tools/setup.py @@ -8,6 +8,7 @@ import defines import argparse import util import datetime +import setup_godot from sys import stdout stdout.reconfigure(encoding='utf-8') @@ -119,6 +120,7 @@ def main(): setup_qt() download_ffmpeg.execute() + setup_godot.execute() if system() == "Windows": vcpkg_command = "vcpkg.exe" diff --git a/Tools/setup_godot.py b/Tools/setup_godot.py new file mode 100644 index 00000000..00b57315 --- /dev/null +++ b/Tools/setup_godot.py @@ -0,0 +1,58 @@ +import requests +import zipfile +import platform +from pathlib import Path +# Assuming defines.py exists and has GODOT_VERSION +from defines import GODOT_VERSION +from util import repo_root_path # Assuming util.py exists and has repo_root_path() + + +def execute(): + # Assuming repo_root_path() returns the git repo root path + root_path = Path(repo_root_path()) + godot_path = root_path / "Tools" / "Apps" / "Godot" + + # Create the directory if it doesn't exist + godot_path.mkdir(parents=True, exist_ok=True) + + # Check if Godot executable already exists + for file in godot_path.iterdir(): + if GODOT_VERSION in str(file): + print(f"Godot v{GODOT_VERSION} already exists.") + return + + # Determine OS type + os_type = platform.system().lower() + if os_type == "windows": + os_type = "win64.exe" + elif os_type == "linux": + os_type = "linux.x86_64" + elif os_type == "darwin": # macOS + os_type = "macos.universal" + else: + print("Unsupported OS") + return + + # Download Godot + base_url = "https://github.com/godotengine/godot/releases/download" + file_name = f"Godot_v{GODOT_VERSION}-stable_{os_type}.zip" + url = f"{base_url}/{GODOT_VERSION}-stable/{file_name}" + + response = requests.get(url) + if response.status_code == 200: + download_path = godot_path / file_name + download_path.write_bytes(response.content) + + # Extract ZIP file + with zipfile.ZipFile(download_path, 'r') as zip_ref: + zip_ref.extractall(godot_path) + + # Delete ZIP file + download_path.unlink() + print(f"Successfully installed Godot v{GODOT_VERSION}") + else: + print(f"Failed to download Godot v{GODOT_VERSION} for {os_type}") + + +if __name__ == "__main__": + execute() From c70fa6224ac813491233501d006c8961808086cd Mon Sep 17 00:00:00 2001 From: Elias Steurer Date: Fri, 1 Sep 2023 13:48:48 +0200 Subject: [PATCH 002/101] Add working Godot Wallpaper --- .vscode/extensions.json | 3 +- Content/wallpaper_godot_fjord/.gitattributes | 2 + Content/wallpaper_godot_fjord/.gitignore | 2 + Content/wallpaper_godot_fjord/Path3D.gd | 16 + .../wallpaper_godot_fjord/export_presets.cfg | 61 +++ Content/wallpaper_godot_fjord/icon.svg | 1 + Content/wallpaper_godot_fjord/icon.svg.import | 37 ++ Content/wallpaper_godot_fjord/project.godot | 20 + Content/wallpaper_godot_fjord/wallpaper.tscn | 36 ++ ScreenPlayWallpaper/CMakeLists.txt | 59 ++- .../Godot/GDExtention/CMakeLists.txt | 104 ++-- .../Godot/GDExtention/src/CMakeLists.txt | 14 +- .../GDExtention/src/GDExtensionTemplate.cpp | 32 -- .../GDExtention/src/GDExtensionTemplate.h | 20 - .../GDExtention/src/RegisterExtension.cpp | 11 +- .../src/ScreenPlayGodotWallpaper.cpp | 117 +++++ .../src/ScreenPlayGodotWallpaper.h | 35 ++ .../GDExtention/src/ScreenPlayWallpaper.cpp | 475 ------------------ .../GDExtention/src/ScreenPlayWallpaper.h | 135 ----- .../GDExtention/templates/CMakeLists.txt | 38 +- .../ScreenPlayGodotWallpaper.gdextension | 10 + .../Godot/ScreenPlayGodot/main.gd | 7 +- .../Godot/ScreenPlayGodot/main.tscn | 2 + .../Godot/ScreenPlayGodot/project.godot | 10 + ScreenPlayWallpaper/src/windowshook.cpp | 111 ++++ ScreenPlayWallpaper/src/windowshook.h | 41 ++ 26 files changed, 627 insertions(+), 772 deletions(-) create mode 100644 Content/wallpaper_godot_fjord/.gitattributes create mode 100644 Content/wallpaper_godot_fjord/.gitignore create mode 100644 Content/wallpaper_godot_fjord/Path3D.gd create mode 100644 Content/wallpaper_godot_fjord/export_presets.cfg create mode 100644 Content/wallpaper_godot_fjord/icon.svg create mode 100644 Content/wallpaper_godot_fjord/icon.svg.import create mode 100644 Content/wallpaper_godot_fjord/project.godot create mode 100644 Content/wallpaper_godot_fjord/wallpaper.tscn delete mode 100644 ScreenPlayWallpaper/Godot/GDExtention/src/GDExtensionTemplate.cpp delete mode 100644 ScreenPlayWallpaper/Godot/GDExtention/src/GDExtensionTemplate.h create mode 100644 ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayGodotWallpaper.cpp create mode 100644 ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayGodotWallpaper.h delete mode 100644 ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayWallpaper.cpp delete mode 100644 ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayWallpaper.h create mode 100644 ScreenPlayWallpaper/Godot/ScreenPlayGodot/ScreenPlayGodotWallpaper/ScreenPlayGodotWallpaper.gdextension create mode 100644 ScreenPlayWallpaper/src/windowshook.cpp create mode 100644 ScreenPlayWallpaper/src/windowshook.h diff --git a/.vscode/extensions.json b/.vscode/extensions.json index 7643df70..fb694d9a 100644 --- a/.vscode/extensions.json +++ b/.vscode/extensions.json @@ -4,6 +4,7 @@ "delgan.qml-format", "ms-vscode.cpptools-extension-pack", "ms-vscode.cmake-tools", - "seanwu.vscode-qt-for-python" + "seanwu.vscode-qt-for-python", + "josetr.cmake-language-support-vscode" ] } \ No newline at end of file diff --git a/Content/wallpaper_godot_fjord/.gitattributes b/Content/wallpaper_godot_fjord/.gitattributes new file mode 100644 index 00000000..8ad74f78 --- /dev/null +++ b/Content/wallpaper_godot_fjord/.gitattributes @@ -0,0 +1,2 @@ +# Normalize EOL for all files that Git considers text files. +* text=auto eol=lf diff --git a/Content/wallpaper_godot_fjord/.gitignore b/Content/wallpaper_godot_fjord/.gitignore new file mode 100644 index 00000000..47091836 --- /dev/null +++ b/Content/wallpaper_godot_fjord/.gitignore @@ -0,0 +1,2 @@ +# Godot 4+ specific ignores +.godot/ diff --git a/Content/wallpaper_godot_fjord/Path3D.gd b/Content/wallpaper_godot_fjord/Path3D.gd new file mode 100644 index 00000000..0eac2b26 --- /dev/null +++ b/Content/wallpaper_godot_fjord/Path3D.gd @@ -0,0 +1,16 @@ +extends Path3D + +# Reference to the PathFollow node +@onready var path_follow = $PathFollow3D + +# Speed of the movement along the path +var speed = 0.4 + +func _process(delta): + # Update the offset to move the object along the path + path_follow.progress += speed * delta + print(path_follow.progress) + + # Loop back to the start if we've reached the end of the path + if path_follow.progress > 10: + path_follow.progress = 0.0 diff --git a/Content/wallpaper_godot_fjord/export_presets.cfg b/Content/wallpaper_godot_fjord/export_presets.cfg new file mode 100644 index 00000000..88e962f2 --- /dev/null +++ b/Content/wallpaper_godot_fjord/export_presets.cfg @@ -0,0 +1,61 @@ +[preset.0] + +name="Windows Desktop" +platform="Windows Desktop" +runnable=true +dedicated_server=false +custom_features="" +export_filter="all_resources" +include_filter="" +exclude_filter="" +export_path="" +encryption_include_filters="" +encryption_exclude_filters="" +encrypt_pck=false +encrypt_directory=false + +[preset.0.options] + +custom_template/debug="" +custom_template/release="" +debug/export_console_wrapper=1 +binary_format/embed_pck=false +texture_format/bptc=true +texture_format/s3tc=true +texture_format/etc=false +texture_format/etc2=false +binary_format/architecture="x86_64" +codesign/enable=false +codesign/timestamp=true +codesign/timestamp_server_url="" +codesign/digest_algorithm=1 +codesign/description="" +codesign/custom_options=PackedStringArray() +application/modify_resources=true +application/icon="" +application/console_wrapper_icon="" +application/icon_interpolation=4 +application/file_version="" +application/product_version="" +application/company_name="" +application/product_name="" +application/file_description="" +application/copyright="" +application/trademarks="" +ssh_remote_deploy/enabled=false +ssh_remote_deploy/host="user@host_ip" +ssh_remote_deploy/port="22" +ssh_remote_deploy/extra_args_ssh="" +ssh_remote_deploy/extra_args_scp="" +ssh_remote_deploy/run_script="Expand-Archive -LiteralPath '{temp_dir}\\{archive_name}' -DestinationPath '{temp_dir}' +$action = New-ScheduledTaskAction -Execute '{temp_dir}\\{exe_name}' -Argument '{cmd_args}' +$trigger = New-ScheduledTaskTrigger -Once -At 00:00 +$settings = New-ScheduledTaskSettingsSet +$task = New-ScheduledTask -Action $action -Trigger $trigger -Settings $settings +Register-ScheduledTask godot_remote_debug -InputObject $task -Force:$true +Start-ScheduledTask -TaskName godot_remote_debug +while (Get-ScheduledTask -TaskName godot_remote_debug | ? State -eq running) { Start-Sleep -Milliseconds 100 } +Unregister-ScheduledTask -TaskName godot_remote_debug -Confirm:$false -ErrorAction:SilentlyContinue" +ssh_remote_deploy/cleanup_script="Stop-ScheduledTask -TaskName godot_remote_debug -ErrorAction:SilentlyContinue +Unregister-ScheduledTask -TaskName godot_remote_debug -Confirm:$false -ErrorAction:SilentlyContinue +Remove-Item -Recurse -Force '{temp_dir}'" diff --git a/Content/wallpaper_godot_fjord/icon.svg b/Content/wallpaper_godot_fjord/icon.svg new file mode 100644 index 00000000..b370ceb7 --- /dev/null +++ b/Content/wallpaper_godot_fjord/icon.svg @@ -0,0 +1 @@ + diff --git a/Content/wallpaper_godot_fjord/icon.svg.import b/Content/wallpaper_godot_fjord/icon.svg.import new file mode 100644 index 00000000..d27a3408 --- /dev/null +++ b/Content/wallpaper_godot_fjord/icon.svg.import @@ -0,0 +1,37 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://boex5vkldqpl5" +path="res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://icon.svg" +dest_files=["res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 +svg/scale=1.0 +editor/scale_with_editor_scale=false +editor/convert_colors_with_editor_theme=false diff --git a/Content/wallpaper_godot_fjord/project.godot b/Content/wallpaper_godot_fjord/project.godot new file mode 100644 index 00000000..cdad8da6 --- /dev/null +++ b/Content/wallpaper_godot_fjord/project.godot @@ -0,0 +1,20 @@ +; Engine configuration file. +; It's best edited using the editor UI and not directly, +; since the parameters that go here are not all obvious. +; +; Format: +; [section] ; section goes between [] +; param=value ; assign values to parameters + +config_version=5 + +[application] + +config/name="Fjord" +run/main_scene="res://wallpaper.tscn" +config/features=PackedStringArray("4.1", "Mobile") +config/icon="res://icon.svg" + +[rendering] + +renderer/rendering_method="mobile" diff --git a/Content/wallpaper_godot_fjord/wallpaper.tscn b/Content/wallpaper_godot_fjord/wallpaper.tscn new file mode 100644 index 00000000..6d7b5c93 --- /dev/null +++ b/Content/wallpaper_godot_fjord/wallpaper.tscn @@ -0,0 +1,36 @@ +[gd_scene load_steps=3 format=3 uid="uid://cxlfu6y6b3l5o"] + +[ext_resource type="Script" path="res://Path3D.gd" id="1_76sq1"] + +[sub_resource type="Curve3D" id="Curve3D_8adw4"] +_data = { +"points": PackedVector3Array(0, 0, 0, 0, 0, 0, -0.820513, 0.281883, 0.141011, 0, 0, 0, 0, 0, 0, -0.1735, 0.399895, -0.280881, 0, 0, 0, 0, 0, 0, 0.510953, 0.524736, -0.727188, 0, 0, 0, 0, 0, 0, 2.26923, 2.38419e-07, -1.10178, 0, 0, 0, 0, 0, 0, 2.53764, -0.832639, -0.471864, 0, 0, 0, 0, 0, 0, 0.836093, -1.07116, 0.572063, 0, 0, 0, 0, 0, 0, -0.416085, -0.732896, 0.871186, 0, 0, 0, 0, 0, 0, -0.809435, -0.0867326, 0.472196), +"tilts": PackedFloat32Array(0, 0, 0, 0, 0, 0, 0, 0) +} +point_count = 8 + +[node name="Node3D" type="Node3D"] + +[node name="Camera3D" type="Camera3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.04825, 4.0185) + +[node name="CSGBox3D" type="CSGBox3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.093655, 0) +size = Vector3(5.24075, 0.0764128, 3.72353) + +[node name="Path3D" type="Path3D" parent="."] +curve = SubResource("Curve3D_8adw4") +script = ExtResource("1_76sq1") + +[node name="PathFollow3D" type="PathFollow3D" parent="Path3D"] +transform = Transform3D(0.546201, -0.126512, -0.828045, 7.45058e-09, 0.988529, -0.151031, 0.837654, 0.0824935, 0.539936, -0.820513, 0.281883, 0.141011) + +[node name="OmniLight3D" type="OmniLight3D" parent="Path3D/PathFollow3D"] +light_color = Color(0.921569, 0.52549, 0.32549, 1) + +[node name="Label3D" type="Label3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.391226, -1.25994) +shaded = true +text = "GODO WALLPAPER" +font_size = 126 +outline_size = 42 diff --git a/ScreenPlayWallpaper/CMakeLists.txt b/ScreenPlayWallpaper/CMakeLists.txt index dacb73ba..9eee4b15 100644 --- a/ScreenPlayWallpaper/CMakeLists.txt +++ b/ScreenPlayWallpaper/CMakeLists.txt @@ -8,16 +8,16 @@ set(CMAKE_AUTOMOC ON) find_package( Qt6 COMPONENTS Core - Quick - Gui - Widgets - WebSockets - Svg - Multimedia - WebEngineCore - WebEngineQuick - WebChannel - Positioning) + Quick + Gui + Widgets + WebSockets + Svg + Multimedia + WebEngineCore + WebEngineQuick + WebChannel + Positioning) if(WIN32) set(SOURCES src/windowsdesktopproperties.cpp src/winwindow.cpp) @@ -38,6 +38,7 @@ set(SOURCES ${SOURCES} main.cpp src/basewindow.cpp) set(HEADER ${HEADER} src/basewindow.h) set(QML + # cmake-format: sort qml/GifWallpaper.qml qml/MultimediaView.qml @@ -48,6 +49,17 @@ set(QML set(RESOURCES dot.png qtquickcontrols2.conf index.html) +set(LIB_SOURCES ${SOURCES} src/basewindow.cpp) +set(LIB_HEADER ${HEADER} src/basewindow.h) + +add_library(ScreenPlayWallpaperLib STATIC src/windowshook.cpp src/windowshook.h) +target_include_directories(ScreenPlayWallpaperLib PUBLIC src) + +if(WIN32) + # Used for query windows monitor data + target_link_libraries(ScreenPlayWallpaperLib PUBLIC shcore.lib) +endif() + add_executable(${PROJECT_NAME} ${SOURCES} ${HEADER}) qt_add_qml_module( @@ -68,17 +80,19 @@ qt_add_qml_module( target_link_libraries( ${PROJECT_NAME} PRIVATE ScreenPlaySDK - ScreenPlayUtil - ScreenPlayWeatherplugin - Qt6::Quick - Qt6::Gui - Qt6::Widgets - Qt6::Core - Qt6::WebSockets - Qt6::Svg - Qt6::Multimedia - Qt6::WebEngineCore - Qt6::WebEngineQuick) + ScreenPlayWallpaperLib + ScreenPlayUtil + ScreenPlayWeatherplugin + Qt6::Quick + Qt6::Gui + Qt6::Widgets + Qt6::Core + Qt6::WebSockets + Qt6::Svg + Qt6::Multimedia + Qt6::WebEngineCore + Qt6::WebEngineQuick) + if(WIN32) target_link_libraries(${PROJECT_NAME} PRIVATE ScreenPlaySysInfoplugin) elseif(UNIX AND NOT APPLE) @@ -92,12 +106,13 @@ endif() if(APPLE) target_link_libraries(${PROJECT_NAME} PRIVATE "-framework Cocoa") + if(NOT OSX_BUNDLE) add_custom_command( TARGET ${PROJECT_NAME} POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_CURRENT_SOURCE_DIR}/index.html - ${CMAKE_BINARY_DIR}/bin/ScreenPlay.app/Contents/MacOS/) + ${CMAKE_BINARY_DIR}/bin/ScreenPlay.app/Contents/MacOS/) set_target_properties(${PROJECT_NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin/ScreenPlay.app/Contents/MacOS/") endif() endif() diff --git a/ScreenPlayWallpaper/Godot/GDExtention/CMakeLists.txt b/ScreenPlayWallpaper/Godot/GDExtention/CMakeLists.txt index 41a43cf2..18a80d2b 100644 --- a/ScreenPlayWallpaper/Godot/GDExtention/CMakeLists.txt +++ b/ScreenPlayWallpaper/Godot/GDExtention/CMakeLists.txt @@ -1,128 +1,130 @@ # SPDX-License-Identifier: Unlicense -cmake_minimum_required( VERSION 3.22 ) +cmake_minimum_required(VERSION 3.22) -message( STATUS "Using CMake ${CMAKE_VERSION}" ) +message(STATUS "Using CMake ${CMAKE_VERSION}") # Require out-of-source builds -file( TO_CMAKE_PATH "${PROJECT_BINARY_DIR}/CMakeLists.txt" LOC_PATH ) +file(TO_CMAKE_PATH "${PROJECT_BINARY_DIR}/CMakeLists.txt" LOC_PATH) -if ( EXISTS "${LOC_PATH}" ) - message( FATAL_ERROR "You cannot build in the source directory. Please use a build subdirectory." ) +if(EXISTS "${LOC_PATH}") + message(FATAL_ERROR "You cannot build in the source directory. Please use a build subdirectory.") endif() # Add paths to modules -list( APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake/" ) +list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake/") # Turn on link time optimization for everything -set( CMAKE_INTERPROCEDURAL_OPTIMIZATION_RELEASE ON ) +set(CMAKE_INTERPROCEDURAL_OPTIMIZATION_RELEASE ON) # Output compile commands to compile_commands.json (for debugging CMake issues) -set( CMAKE_EXPORT_COMPILE_COMMANDS ON ) +set(CMAKE_EXPORT_COMPILE_COMMANDS ON) # Build universal lib on macOS # Note that CMAKE_OSX_ARCHITECTURES must be set before project(). -if ( APPLE ) - set( CMAKE_OSX_ARCHITECTURES "x86_64;arm64" CACHE STRING "" ) +if(APPLE) + set(CMAKE_OSX_ARCHITECTURES "x86_64;arm64" CACHE STRING "") endif() # Main project information -project( GDExtensionTemplate +project(ScreenPlayGodotWallpaper LANGUAGES - CXX - VERSION - 0.1.0 + CXX ) # Create our library -add_library( ${PROJECT_NAME} SHARED ) +add_library(${PROJECT_NAME} SHARED) -target_compile_features( ${PROJECT_NAME} +target_compile_features(${PROJECT_NAME} PRIVATE - cxx_std_17 + cxx_std_17 ) # LIB_ARCH is the architecture being built. It is set to the build system's architecture. # For macOS, we build a universal library (both arm64 and x86_64). -set( LIB_ARCH ${CMAKE_SYSTEM_PROCESSOR} ) -if ( APPLE ) - set( LIB_ARCH "universal" ) +set(LIB_ARCH ${CMAKE_SYSTEM_PROCESSOR}) + +if(APPLE) + set(LIB_ARCH "universal") endif() # LIB_DIR is where the actual library ends up. This is used in both the build directory and the # install directory and needs to be consistent with the paths in the gdextension file. -# e.g. linux.release.x86_64 = "lib/Linux-x86_64/libGDExtensionTemplate.so" -set( LIB_DIR "lib/${CMAKE_SYSTEM_NAME}-${LIB_ARCH}" ) +# e.g. linux.release.x86_64 = "lib/Linux-x86_64/libGDExtensionTemplate.so" +set(LIB_DIR "lib/${CMAKE_SYSTEM_NAME}-${LIB_ARCH}") -message( STATUS "Building ${PROJECT_NAME} for ${LIB_ARCH} on ${CMAKE_SYSTEM_NAME}") +message(STATUS "Building ${PROJECT_NAME} for ${LIB_ARCH} on ${CMAKE_SYSTEM_NAME}") # BUILD_OUTPUT_DIR is where we put the resulting library (in the build directory) -set( BUILD_OUTPUT_DIR "${PROJECT_BINARY_DIR}/${PROJECT_NAME}/" ) +set(BUILD_OUTPUT_DIR "${PROJECT_BINARY_DIR}/${PROJECT_NAME}/") +set(OUT_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../ScreenPlayGodot/${PROJECT_NAME}/) -set_target_properties( ${PROJECT_NAME} +# Compile directly into our Godot project +set_target_properties(${PROJECT_NAME} PROPERTIES - CXX_VISIBILITY_PRESET hidden - VISIBILITY_INLINES_HIDDEN true - RUNTIME_OUTPUT_DIRECTORY "${BUILD_OUTPUT_DIR}/${LIB_DIR}" - LIBRARY_OUTPUT_DIRECTORY "${BUILD_OUTPUT_DIR}/${LIB_DIR}" + CXX_VISIBILITY_PRESET hidden + VISIBILITY_INLINES_HIDDEN true + RUNTIME_OUTPUT_DIRECTORY "${OUT_PATH}/${LIB_DIR}" + LIBRARY_OUTPUT_DIRECTORY "${OUT_PATH}/${LIB_DIR}" ) -if( NOT DEFINED CMAKE_DEBUG_POSTFIX ) - set_target_properties( ${PROJECT_NAME} +if(NOT DEFINED CMAKE_DEBUG_POSTFIX) + set_target_properties(${PROJECT_NAME} PROPERTIES - DEBUG_POSTFIX "-d" + DEBUG_POSTFIX "-d" ) endif() # Warnings -include( CompilerWarnings ) +include(CompilerWarnings) # Create and include version info file from git -include( GitVersionInfo ) +include(GitVersionInfo) -add_subdirectory( src ) +add_subdirectory(src) # Install library and extension file in ${CMAKE_INSTALL_PREFIX}/${PROJECT_NAME} -set( INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/${PROJECT_NAME}/" ) +set(INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/${PROJECT_NAME}/") -message( STATUS "Install directory: ${INSTALL_DIR}") +message(STATUS "Install directory: ${INSTALL_DIR}") -install( TARGETS ${PROJECT_NAME} +install(TARGETS ${PROJECT_NAME} LIBRARY - DESTINATION ${INSTALL_DIR}/${LIB_DIR} + DESTINATION ${INSTALL_DIR}/${LIB_DIR} RUNTIME - DESTINATION ${INSTALL_DIR}/${LIB_DIR} + DESTINATION ${INSTALL_DIR}/${LIB_DIR} ) -add_subdirectory( templates ) +add_subdirectory(templates) # ccache # Turns on ccache if found -include( ccache ) +include(ccache) # Formatting # Adds a custom target to format all the code at once -include( ClangFormat ) +include(ClangFormat) # godot-cpp # From here: https://github.com/godotengine/godot-cpp -if ( NOT EXISTS "${CMAKE_CURRENT_LIST_DIR}/extern/godot-cpp/Makefile" ) +if(NOT EXISTS "${CMAKE_CURRENT_LIST_DIR}/extern/godot-cpp/Makefile") message( FATAL_ERROR - "[${PROJECT_NAME}] The godot-cpp submodule was not downloaded. Please update submodules: git submodule update --init --recursive." + "[${PROJECT_NAME}] The godot-cpp submodule was not downloaded. Please update submodules: git submodule update --init --recursive." ) endif() -set( GODOT_CPP_SYSTEM_HEADERS ON CACHE BOOL "" FORCE ) +set(GODOT_CPP_SYSTEM_HEADERS ON CACHE BOOL "" FORCE) -add_subdirectory( extern/godot-cpp ) +add_subdirectory(extern/godot-cpp) -set_target_properties( godot-cpp +set_target_properties(godot-cpp PROPERTIES - CXX_VISIBILITY_PRESET hidden # visibility needs to be the same as the main library + CXX_VISIBILITY_PRESET hidden # visibility needs to be the same as the main library ) -target_link_libraries( ${PROJECT_NAME} +target_link_libraries(${PROJECT_NAME} PRIVATE - godot-cpp + godot-cpp + ScreenPlayWallpaperLib ) diff --git a/ScreenPlayWallpaper/Godot/GDExtention/src/CMakeLists.txt b/ScreenPlayWallpaper/Godot/GDExtention/src/CMakeLists.txt index 9b378a18..22634324 100644 --- a/ScreenPlayWallpaper/Godot/GDExtention/src/CMakeLists.txt +++ b/ScreenPlayWallpaper/Godot/GDExtention/src/CMakeLists.txt @@ -1,15 +1,13 @@ # SPDX-License-Identifier: Unlicense -target_sources( ${PROJECT_NAME} +target_sources(${PROJECT_NAME} PRIVATE - ScreenPlayWallpaper.h - ScreenPlayWallpaper.cpp - GDExtensionTemplate.h - GDExtensionTemplate.cpp - RegisterExtension.cpp + ScreenPlayGodotWallpaper.h + ScreenPlayGodotWallpaper.cpp + RegisterExtension.cpp ) -target_include_directories( ${PROJECT_NAME} +target_include_directories(${PROJECT_NAME} PRIVATE - "src" + "src" ) diff --git a/ScreenPlayWallpaper/Godot/GDExtention/src/GDExtensionTemplate.cpp b/ScreenPlayWallpaper/Godot/GDExtention/src/GDExtensionTemplate.cpp deleted file mode 100644 index 91fd7ea8..00000000 --- a/ScreenPlayWallpaper/Godot/GDExtention/src/GDExtensionTemplate.cpp +++ /dev/null @@ -1,32 +0,0 @@ -// SPDX-License-Identifier: Unlicense - -#include "godot_cpp/core/class_db.hpp" - -#include "GDExtensionTemplate.h" -#include "Version.h" - -/// @file -/// GDExtensionTemplate example implementation. - -/*! -@brief Get the version string for this extension. - -@details -The version string is generated by cmake using src/Version.h.in. - -It uses the form " -<# commits since last tag>-". -If there are no commits since the last tag, only the tag is shown. - -@return The version string (e.g. "Foo v1.2.3-gdedbd01"). -*/ -godot::String GDExtensionTemplate::version() -{ - return VersionInfo::VERSION_STR.data(); -} - -/// Bind our methods so GDScript can access them. -void GDExtensionTemplate::_bind_methods() -{ - godot::ClassDB::bind_static_method( "GDExtensionTemplate", godot::D_METHOD( "version" ), - &GDExtensionTemplate::version ); -} diff --git a/ScreenPlayWallpaper/Godot/GDExtention/src/GDExtensionTemplate.h b/ScreenPlayWallpaper/Godot/GDExtention/src/GDExtensionTemplate.h deleted file mode 100644 index 038aa40e..00000000 --- a/ScreenPlayWallpaper/Godot/GDExtention/src/GDExtensionTemplate.h +++ /dev/null @@ -1,20 +0,0 @@ -#pragma once -// SPDX-License-Identifier: Unlicense - -#include "godot_cpp/classes/object.hpp" - -namespace godot -{ - class ClassDB; -}; - -class GDExtensionTemplate : public godot::Object -{ - GDCLASS( GDExtensionTemplate, godot::Object ) - -public: - static godot::String version(); - -private: - static void _bind_methods(); -}; diff --git a/ScreenPlayWallpaper/Godot/GDExtention/src/RegisterExtension.cpp b/ScreenPlayWallpaper/Godot/GDExtention/src/RegisterExtension.cpp index 8bbf988e..ad9e80f4 100644 --- a/ScreenPlayWallpaper/Godot/GDExtention/src/RegisterExtension.cpp +++ b/ScreenPlayWallpaper/Godot/GDExtention/src/RegisterExtension.cpp @@ -6,8 +6,7 @@ #include "godot_cpp/core/defs.hpp" #include "godot_cpp/godot.hpp" -#include "GDExtensionTemplate.h" -#include "ScreenPlayWallpaper.h" +#include "ScreenPlayGodotWallpaper.h" /// @file /// Register our classes with Godot. @@ -24,13 +23,7 @@ void initializeExtension(godot::ModuleInitializationLevel p_level) return; } - godot::ClassDB::register_class(); - godot::ClassDB::register_class(); - godot::ClassDB::register_class(); - godot::ClassDB::register_class(true); - godot::ClassDB::register_abstract_class(); - - godot::ClassDB::register_class(); + godot::ClassDB::register_class(); } /// @brief Called by Godot to let us do any cleanup. diff --git a/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayGodotWallpaper.cpp b/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayGodotWallpaper.cpp new file mode 100644 index 00000000..c1d0d659 --- /dev/null +++ b/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayGodotWallpaper.cpp @@ -0,0 +1,117 @@ +// Copied from godot-cpp/test/src and modified. + +#include "ScreenPlayGodotWallpaper.h" +#include "godot_cpp/classes/display_server.hpp" +#include "godot_cpp/classes/global_constants.hpp" +#include "godot_cpp/classes/label.hpp" +#include "godot_cpp/classes/os.hpp" +#include "godot_cpp/core/class_db.hpp" +#include "godot_cpp/variant/utility_functions.hpp" + +//// ScreenPlayWallpaper + +int ScreenPlayGodotWallpaper::sInstanceCount = 0; +int ScreenPlayGodotWallpaper::sLastID = 0; + +ScreenPlayGodotWallpaper::ScreenPlayGodotWallpaper() +{ + mID = ++sLastID; + sInstanceCount++; + + godot::UtilityFunctions::print( + "ScreenPlayWallpaper ", godot::itos(mID), + " created, current instance count: ", godot::itos(sInstanceCount)); +} + +ScreenPlayGodotWallpaper::~ScreenPlayGodotWallpaper() +{ + sInstanceCount--; + godot::UtilityFunctions::print( + "ScreenPlayWallpaper ", godot::itos(mID), + " destroyed, current instance count: ", godot::itos(sInstanceCount)); + + // Somehow this gets called at editor startup + // so just return if not initialized + if (!m_hook) + return; + + ShowWindow(m_hook->windowHandle, SW_HIDE); + + // Force refresh so that we display the regular + // desktop wallpaper again + ShowWindow(m_hook->windowHandleWorker, SW_HIDE); + ShowWindow(m_hook->windowHandleWorker, SW_SHOW); +} + +bool ScreenPlayGodotWallpaper::configureWindowGeometry() +{ + if (!m_hook->searchWorkerWindowToParentTo()) { + godot::UtilityFunctions::print("No worker window found"); + return false; + } + + RECT rect {}; + if (!GetWindowRect(m_hook->windowHandleWorker, &rect)) { + godot::UtilityFunctions::print("Unable to get WindoeRect from worker"); + return false; + } + + // Windows coordante system begins at 0x0 at the + // main monitors upper left and not at the most left top monitor. + // This can be easily read from the worker window. + m_hook->zeroPoint = { std::abs(rect.left), std::abs(rect.top) }; + + // WARNING: Setting Window flags must be called *here*! + SetWindowLongPtr(m_hook->windowHandle, GWL_EXSTYLE, WS_EX_LEFT | WS_EX_LTRREADING | WS_EX_RIGHTSCROLLBAR | WS_EX_NOACTIVATE | WS_EX_TOOLWINDOW | WS_EX_TRANSPARENT); + SetWindowLongPtr(m_hook->windowHandle, GWL_STYLE, WS_POPUPWINDOW); + return true; +} +bool ScreenPlayGodotWallpaper::init(int activeScreen) +{ + auto* displayServer = godot::DisplayServer::get_singleton(); + int64_t handle_int = displayServer->window_get_native_handle(godot::DisplayServer::HandleType::WINDOW_HANDLE, activeScreen); + HWND hwnd = reinterpret_cast(static_cast(handle_int)); + m_hook = std::make_unique(); + m_hook->windowHandle = hwnd; + if (!configureWindowGeometry()) { + return false; + } + ShowWindow(m_hook->windowHandle, SW_HIDE); + + const int borderWidth = 2; + const float scaling = m_hook->getScaling(activeScreen); // Assuming getScaling is your own function + const int borderOffset = -1; + + WinMonitorStats monitors; // Assuming this is your own function + const int width = static_cast(std::abs(monitors.rcMonitors[activeScreen].right - monitors.rcMonitors[activeScreen].left) / scaling) + borderWidth; + const int height = static_cast(std::abs(monitors.rcMonitors[activeScreen].top - monitors.rcMonitors[activeScreen].bottom) / scaling) + borderWidth; + + const int x = monitors.rcMonitors[activeScreen].left + m_hook->zeroPoint.x + borderOffset; // Assuming m_zeroPoint is a POINT struct + const int y = monitors.rcMonitors[activeScreen].top + m_hook->zeroPoint.y + borderOffset; + + godot::String output = "Setup window activeScreen: " + godot::itos(activeScreen) + " scaling: " + godot::rtos(scaling) + " x: " + godot::itos(x) + " y: " + godot::itos(y) + " width: " + godot::itos(width) + " height: " + godot::itos(height); + godot::UtilityFunctions::print(output); + + // Must be called twice for some reason when window has scaling... + if (!SetWindowPos(m_hook->windowHandle, nullptr, x, y, width, height, SWP_HIDEWINDOW)) { + godot::UtilityFunctions::print("Could not set window pos"); + return false; + } + if (!SetWindowPos(m_hook->windowHandle, nullptr, x, y, width, height, SWP_HIDEWINDOW)) { + godot::UtilityFunctions::print("Could not set window pos 2"); + return false; + } + + if (SetParent(m_hook->windowHandle, m_hook->windowHandleWorker) == nullptr) { + godot::UtilityFunctions::print("Could not attach to parent window"); + return false; + } + displayServer->window_set_size(godot::Vector2((real_t)width, (real_t)height)); + ShowWindow(m_hook->windowHandle, SW_SHOW); + return true; +} + +void ScreenPlayGodotWallpaper::_bind_methods() +{ + godot::ClassDB::bind_method(godot::D_METHOD("init"), &ScreenPlayGodotWallpaper::init); +} diff --git a/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayGodotWallpaper.h b/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayGodotWallpaper.h new file mode 100644 index 00000000..73825994 --- /dev/null +++ b/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayGodotWallpaper.h @@ -0,0 +1,35 @@ +#pragma once +// Copied from godot-cpp/test/src and modified. + +#include "godot_cpp/classes/control.hpp" +#include "godot_cpp/classes/global_constants.hpp" +#include "godot_cpp/classes/viewport.hpp" +#include "godot_cpp/core/binder_common.hpp" + +#include + +#include "ScreenPlayGodotWallpaper.h" +#include "windowshook.h" + +class ScreenPlayGodotWallpaper : public godot::Node { + GDCLASS(ScreenPlayGodotWallpaper, Node) + +public: + ScreenPlayGodotWallpaper(); + ~ScreenPlayGodotWallpaper() override; + + bool init(int activeScreen); + +protected: + static void _bind_methods(); + +private: + bool configureWindowGeometry(); + +private: + static int sInstanceCount; + static int sLastID; + + int mID; + std::unique_ptr m_hook; +}; diff --git a/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayWallpaper.cpp b/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayWallpaper.cpp deleted file mode 100644 index 1eb98e18..00000000 --- a/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayWallpaper.cpp +++ /dev/null @@ -1,475 +0,0 @@ -// Copied from godot-cpp/test/src and modified. - -#include "godot_cpp/classes/global_constants.hpp" -#include "godot_cpp/classes/label.hpp" -#include "godot_cpp/core/class_db.hpp" -#include "godot_cpp/variant/utility_functions.hpp" - -#include "ScreenPlayWallpaper.h" - -// Used to mark unused parameters to indicate intent and suppress warnings. -#define UNUSED(expr) (void)(expr) - -namespace { -constexpr int MAGIC_NUMBER = 42; -} - -//// ScreenPlayWallpaper - -int ScreenPlayWallpaper::sInstanceCount = 0; -int ScreenPlayWallpaper::sLastID = 0; - -ScreenPlayWallpaper::ScreenPlayWallpaper() -{ - mID = ++sLastID; - sInstanceCount++; - - godot::UtilityFunctions::print( - "ScreenPlayWallpaper ", godot::itos(mID), - " created, current instance count: ", godot::itos(sInstanceCount)); -} - -ScreenPlayWallpaper::~ScreenPlayWallpaper() -{ - sInstanceCount--; - godot::UtilityFunctions::print( - "ScreenPlayWallpaper ", godot::itos(mID), - " destroyed, current instance count: ", godot::itos(sInstanceCount)); -} - -int ScreenPlayWallpaper::getID() const -{ - return mID; -} - -void ScreenPlayWallpaper::_bind_methods() -{ - godot::ClassDB::bind_method(godot::D_METHOD("get_id"), &ScreenPlayWallpaper::getID); -} - -//// ExampleMin - -void ExampleMin::_bind_methods() -{ -} - -//// Example - -Example::Example() -{ - godot::UtilityFunctions::print("Constructor."); -} - -Example::~Example() -{ - godot::UtilityFunctions::print("Destructor."); -} - -// Methods. -void Example::simpleFunc() -{ - godot::UtilityFunctions::print(" Simple func called."); -} - -void Example::simpleConstFunc() const -{ - godot::UtilityFunctions::print(" Simple const func called."); -} - -godot::String Example::returnSomething(const godot::String& inBase) -{ - godot::UtilityFunctions::print(" Return something called."); - - return inBase; -} - -godot::Viewport* Example::returnSomethingConst() const -{ - godot::UtilityFunctions::print(" Return something const called."); - - if (is_inside_tree()) { - godot::Viewport* result = get_viewport(); - - return result; - } - - return nullptr; -} - -godot::Ref Example::returnEmptyRef() const -{ - godot::Ref ref; - return ref; -} - -ScreenPlayWallpaper* Example::returnExtendedRef() const -{ - // You can instance and return a refcounted object like this, but keep in mind that refcounting - // starts with the returned object and it will be destroyed when all references are destroyed. - // If you store this pointer you run the risk of having a pointer to a destroyed object. - return memnew(ScreenPlayWallpaper()); -} - -godot::Ref Example::extendedRefChecks(godot::Ref inRef) const -{ - // This is the preferred way of instancing and returning a refcounted object: - godot::Ref ref; - ref.instantiate(); - - godot::UtilityFunctions::print( - " Example ref checks called with value: ", inRef->get_instance_id(), - ", returning value: ", ref->get_instance_id()); - - return ref; -} - -godot::Variant Example::varargsFunc(const godot::Variant** inArgs, GDExtensionInt inArgCount, - GDExtensionCallError& outError) -{ - UNUSED(inArgs); - UNUSED(outError); - - godot::UtilityFunctions::print(" Varargs (Variant return) called with ", - godot::String::num_int64(inArgCount), " arguments"); - - return inArgCount; -} - -int Example::varargsFuncNonVoidReturn(const godot::Variant** inArgs, GDExtensionInt inArgCount, - GDExtensionCallError& outError) -{ - UNUSED(inArgs); - UNUSED(outError); - - godot::UtilityFunctions::print(" Varargs (int return) called with ", - godot::String::num_int64(inArgCount), " arguments"); - - return MAGIC_NUMBER; -} - -void Example::varargsFuncVoidReturn(const godot::Variant** inArgs, GDExtensionInt inArgCount, - GDExtensionCallError& outError) -{ - UNUSED(inArgs); - UNUSED(outError); - - godot::UtilityFunctions::print(" Varargs (no return) called with ", - godot::String::num_int64(inArgCount), " arguments"); -} - -void Example::emitCustomSignal(const godot::String& inName, int inValue) -{ - emit_signal("custom_signal", inName, inValue); -} - -int Example::defArgs(int inA, int inB) const -{ - return inA + inB; -} - -godot::Array Example::testArray() const -{ - godot::Array arr; - - arr.resize(2); - arr[0] = godot::Variant(1); - arr[1] = godot::Variant(2); - - return arr; -} - -void Example::testTypedArrayArg(const godot::TypedArray& inArray) -{ - for (int i = 0; i < inArray.size(); ++i) { - godot::UtilityFunctions::print(inArray[i]); - } -} - -godot::TypedArray Example::testTypedArray() const -{ - godot::TypedArray arr; - - arr.resize(2); - arr[0] = godot::Vector2(1, 2); - arr[1] = godot::Vector2(2, 3); - - return arr; -} - -godot::Dictionary Example::testDictionary() const -{ - godot::Dictionary dict; - - dict["hello"] = "world"; - dict["foo"] = "bar"; - - return dict; -} - -Example* Example::testNodeArgument(Example* inNode) const -{ - // This should use godot::String::num_uint64(), but it is currently broken: - // https://github.com/godotengine/godot-cpp/issues/1014 - godot::UtilityFunctions::print( - " Test node argument called with ", - (inNode != nullptr) - ? godot::String::num_int64(static_cast(inNode->get_instance_id())) - : "null"); - return inNode; -} - -godot::String Example::testStringOps() const -{ - godot::String s = godot::String("A"); - s += "B"; - s += "C"; - s += char32_t(0x010E); - s = s + "E"; - - return s; -} - -int Example::testVectorOps() const -{ - godot::PackedInt32Array arr; - arr.push_back(10); - arr.push_back(20); - arr.push_back(30); - arr.push_back(45); - - int ret = 0; - for (const int32_t& E : arr) { - ret += E; - } - - return ret; -} - -godot::BitField Example::testBitfield(godot::BitField inFlags) -{ - godot::UtilityFunctions::print(" Got BitField: ", godot::String::num_int64(inFlags)); - return inFlags; -} - -// Properties. -void Example::setCustomPosition(const godot::Vector2& inPos) -{ - mCustomPosition = inPos; -} - -godot::Vector2 Example::getCustomPosition() const -{ - return mCustomPosition; -} - -godot::Vector4 Example::getV4() const -{ - return { 1.2f, 3.4f, 5.6f, 7.8f }; -} - -// Static methods -int Example::testStatic(int inA, int inB) -{ - return inA + inB; -} - -void Example::testStatic2() -{ - godot::UtilityFunctions::print(" void static"); -} - -// Virtual function override. -bool Example::_has_point(const godot::Vector2& inPoint) const -{ - auto* label = godot::Control::get_node("Label"); - - label->set_text("Got point: " + godot::Variant(inPoint).stringify()); - - return false; -} - -void Example::_bind_methods() -{ - // Methods. - godot::ClassDB::bind_method(godot::D_METHOD("simple_func"), &Example::simpleFunc); - godot::ClassDB::bind_method(godot::D_METHOD("simple_const_func"), - &Example::simpleConstFunc); - godot::ClassDB::bind_method(godot::D_METHOD("return_something"), &Example::returnSomething); - godot::ClassDB::bind_method(godot::D_METHOD("return_something_const"), - &Example::returnSomethingConst); - godot::ClassDB::bind_method(godot::D_METHOD("return_empty_ref"), &Example::returnEmptyRef); - godot::ClassDB::bind_method(godot::D_METHOD("return_extended_ref"), - &Example::returnExtendedRef); - godot::ClassDB::bind_method(godot::D_METHOD("extended_ref_checks", "ref"), - &Example::extendedRefChecks); - - godot::ClassDB::bind_method(godot::D_METHOD("test_array"), &Example::testArray); - godot::ClassDB::bind_method(godot::D_METHOD("test_tarray_arg", "array"), - &Example::testTypedArrayArg); - godot::ClassDB::bind_method(godot::D_METHOD("test_tarray"), &Example::testTypedArray); - godot::ClassDB::bind_method(godot::D_METHOD("test_dictionary"), &Example::testDictionary); - godot::ClassDB::bind_method(godot::D_METHOD("test_node_argument"), - &Example::testNodeArgument); - godot::ClassDB::bind_method(godot::D_METHOD("test_string_ops"), &Example::testStringOps); - godot::ClassDB::bind_method(godot::D_METHOD("test_vector_ops"), &Example::testVectorOps); - - godot::ClassDB::bind_method(godot::D_METHOD("test_bitfield", "flags"), - &Example::testBitfield); - - godot::ClassDB::bind_method(godot::D_METHOD("def_args", "a", "b"), &Example::defArgs, - DEFVAL(100), DEFVAL(200)); - - godot::ClassDB::bind_static_method("Example", godot::D_METHOD("test_static", "a", "b"), - &Example::testStatic); - godot::ClassDB::bind_static_method("Example", godot::D_METHOD("test_static2"), - &Example::testStatic2); - - { - godot::MethodInfo mi; - mi.arguments.emplace_back(godot::Variant::STRING, "some_argument"); - mi.name = "varargs_func"; - - godot::ClassDB::bind_vararg_method(godot::METHOD_FLAGS_DEFAULT, "varargs_func", - &Example::varargsFunc, mi); - } - - { - godot::MethodInfo mi; - mi.arguments.emplace_back(godot::Variant::STRING, "some_argument"); - mi.name = "varargs_func_nv"; - - godot::ClassDB::bind_vararg_method(godot::METHOD_FLAGS_DEFAULT, "varargs_func_nv", - &Example::varargsFuncNonVoidReturn, mi); - } - - { - godot::MethodInfo mi; - mi.arguments.emplace_back(godot::Variant::STRING, "some_argument"); - mi.name = "varargs_func_void"; - - godot::ClassDB::bind_vararg_method(godot::METHOD_FLAGS_DEFAULT, "varargs_func_void", - &Example::varargsFuncVoidReturn, mi); - } - - // Properties. - ADD_GROUP("Test group", "group_"); - ADD_SUBGROUP("Test subgroup", "group_subgroup_"); - - godot::ClassDB::bind_method(godot::D_METHOD("get_custom_position"), - &Example::getCustomPosition); - godot::ClassDB::bind_method(godot::D_METHOD("get_v4"), &Example::getV4); - godot::ClassDB::bind_method(godot::D_METHOD("set_custom_position", "position"), - &Example::setCustomPosition); - ADD_PROPERTY(godot::PropertyInfo(godot::Variant::VECTOR2, "group_subgroup_custom_position"), - "set_custom_position", "get_custom_position"); - - // Signals. - ADD_SIGNAL(godot::MethodInfo("custom_signal", - godot::PropertyInfo(godot::Variant::STRING, "name"), - godot::PropertyInfo(godot::Variant::INT, "value"))); - godot::ClassDB::bind_method(godot::D_METHOD("emit_custom_signal", "name", "value"), - &Example::emitCustomSignal); - - // Constants. - BIND_ENUM_CONSTANT(FIRST) - BIND_ENUM_CONSTANT(ANSWER_TO_EVERYTHING) - - BIND_BITFIELD_FLAG(FLAG_ONE); - BIND_BITFIELD_FLAG(FLAG_TWO); - - BIND_CONSTANT(CONSTANT_WITHOUT_ENUM); - BIND_ENUM_CONSTANT(OUTSIDE_OF_CLASS); -} - -void Example::_notification(int inWhat) -{ - godot::UtilityFunctions::print("Notification: ", godot::String::num(inWhat)); -} - -bool Example::_set(const godot::StringName& inName, const godot::Variant& inValue) -{ - godot::String name = inName; - - if (name.begins_with("dproperty")) { - int64_t index = name.get_slicec('_', 1).to_int(); - mDProp[index] = inValue; - - return true; - } - - if (name == "property_from_list") { - mPropertyFromList = inValue; - - return true; - } - - return false; -} - -bool Example::_get(const godot::StringName& inName, godot::Variant& outReturn) const -{ - godot::String name = inName; - - if (name.begins_with("dproperty")) { - int64_t index = name.get_slicec('_', 1).to_int(); - outReturn = mDProp[index]; - - return true; - } - - if (name == "property_from_list") { - outReturn = mPropertyFromList; - - return true; - } - - return false; -} - -void Example::_get_property_list(godot::List* outList) const -{ - outList->push_back(godot::PropertyInfo(godot::Variant::VECTOR3, "property_from_list")); - - for (int i = 0; i < 3; ++i) { - outList->push_back( - godot::PropertyInfo(godot::Variant::VECTOR2, "dproperty_" + godot::itos(i))); - } -} - -bool Example::_property_can_revert(const godot::StringName& inName) const -{ - if (inName == godot::StringName("property_from_list") && mPropertyFromList != godot::Vector3(MAGIC_NUMBER, MAGIC_NUMBER, MAGIC_NUMBER)) { - return true; - } - - return false; -}; - -bool Example::_property_get_revert(const godot::StringName& inName, - godot::Variant& outProperty) const -{ - if (inName == godot::StringName("property_from_list")) { - outProperty = godot::Vector3(MAGIC_NUMBER, MAGIC_NUMBER, MAGIC_NUMBER); - - return true; - } - - return false; -}; - -godot::String Example::_to_string() const -{ - return "[ GDExtension::Example <--> Instance ID:" + godot::uitos(get_instance_id()) + " ]"; -} - -//// ExampleVirtual - -void ExampleVirtual::_bind_methods() -{ -} - -//// ExampleAbstract - -void ExampleAbstract::_bind_methods() -{ -} diff --git a/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayWallpaper.h b/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayWallpaper.h deleted file mode 100644 index bc540d3b..00000000 --- a/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayWallpaper.h +++ /dev/null @@ -1,135 +0,0 @@ -#pragma once -// Copied from godot-cpp/test/src and modified. - -#include "godot_cpp/classes/control.hpp" -#include "godot_cpp/classes/global_constants.hpp" -#include "godot_cpp/classes/viewport.hpp" -#include "godot_cpp/core/binder_common.hpp" - -class ScreenPlayWallpaper : public godot::RefCounted { - GDCLASS(ScreenPlayWallpaper, RefCounted) - -public: - ScreenPlayWallpaper(); - ~ScreenPlayWallpaper() override; - - int getID() const; - -protected: - static void _bind_methods(); - -private: - static int sInstanceCount; - static int sLastID; - - int mID; -}; - -class ExampleMin : public godot::Control { - GDCLASS(ExampleMin, Control) - -protected: - static void _bind_methods(); -}; - -class Example : public godot::Control { - GDCLASS(Example, godot::Control) - -public: - // Constants. - enum Constants { - FIRST, - ANSWER_TO_EVERYTHING = 42, - }; - - enum { - CONSTANT_WITHOUT_ENUM = 314, - }; - - enum Flags { - FLAG_ONE = 1, - FLAG_TWO = 2, - }; - - Example(); - ~Example() override; - - // Functions. - void simpleFunc(); - void simpleConstFunc() const; - godot::String returnSomething(const godot::String& inBase); - godot::Viewport* returnSomethingConst() const; - godot::Ref returnEmptyRef() const; - ScreenPlayWallpaper* returnExtendedRef() const; - godot::Ref extendedRefChecks(godot::Ref inRef) const; - godot::Variant varargsFunc(const godot::Variant** inArgs, GDExtensionInt inArgCount, - GDExtensionCallError& outError); - int varargsFuncNonVoidReturn(const godot::Variant** inArgs, GDExtensionInt inArgCount, - GDExtensionCallError& outError); - void varargsFuncVoidReturn(const godot::Variant** inArgs, GDExtensionInt inArgCount, - GDExtensionCallError& outError); - - void emitCustomSignal(const godot::String& inName, int inValue); - int defArgs(int inA = 100, int inB = 200) const; - - godot::Array testArray() const; - void testTypedArrayArg(const godot::TypedArray& inArray); - godot::TypedArray testTypedArray() const; - godot::Dictionary testDictionary() const; - Example* testNodeArgument(Example* inNode) const; - godot::String testStringOps() const; - int testVectorOps() const; - - godot::BitField testBitfield(godot::BitField inFlags); - - // Property. - void setCustomPosition(const godot::Vector2& inPos); - godot::Vector2 getCustomPosition() const; - godot::Vector4 getV4() const; - - // Static method. - static int testStatic(int inA, int inB); - static void testStatic2(); - - // Virtual function override (no need to bind manually). - virtual bool _has_point(const godot::Vector2& inPoint) const override; - -protected: - static void _bind_methods(); - - void _notification(int inWhat); - bool _set(const godot::StringName& inName, const godot::Variant& inValue); - bool _get(const godot::StringName& inName, godot::Variant& outReturn) const; - void _get_property_list(godot::List* outList) const; - bool _property_can_revert(const godot::StringName& inName) const; - bool _property_get_revert(const godot::StringName& inName, godot::Variant& outProperty) const; - - godot::String _to_string() const; - -private: - godot::Vector2 mCustomPosition; - godot::Vector3 mPropertyFromList; - godot::Vector2 mDProp[3]; -}; - -VARIANT_ENUM_CAST(Example::Constants); -VARIANT_BITFIELD_CAST(Example::Flags); - -enum EnumWithoutClass { - OUTSIDE_OF_CLASS = 512 -}; -VARIANT_ENUM_CAST(EnumWithoutClass); - -class ExampleVirtual : public godot::Object { - GDCLASS(ExampleVirtual, godot::Object) - -protected: - static void _bind_methods(); -}; - -class ExampleAbstract : public godot::Object { - GDCLASS(ExampleAbstract, godot::Object) - -protected: - static void _bind_methods(); -}; diff --git a/ScreenPlayWallpaper/Godot/GDExtention/templates/CMakeLists.txt b/ScreenPlayWallpaper/Godot/GDExtention/templates/CMakeLists.txt index 5467db0f..bbd856b7 100644 --- a/ScreenPlayWallpaper/Godot/GDExtention/templates/CMakeLists.txt +++ b/ScreenPlayWallpaper/Godot/GDExtention/templates/CMakeLists.txt @@ -1,32 +1,34 @@ # SPDX-License-Identifier: Unlicense -add_custom_target( templates +add_custom_target(templates SOURCES - template.debug.gdextension.in - template.release.gdextension.in + template.debug.gdextension.in + template.release.gdextension.in ) -add_dependencies( ${PROJECT_NAME} templates ) +add_dependencies(${PROJECT_NAME} templates) # We shouldn't be relying on CMAKE_BUILD_TYPE (see https://github.com/asmaloney/GDExtensionTemplate/issues/25) # But until we fix it here and in godot-cpp, ensure it's one we expect. -set ( ALLOWED_BUILDS "Debug;Release" ) -if ( NOT "${CMAKE_BUILD_TYPE}" IN_LIST ALLOWED_BUILDS ) - message( FATAL_ERROR "CMAKE_BUILD_TYPE must be set to Debug or Release" ) +set(ALLOWED_BUILDS "Debug;Release") + +if(NOT "${CMAKE_BUILD_TYPE}" IN_LIST ALLOWED_BUILDS) + message(FATAL_ERROR "CMAKE_BUILD_TYPE must be set to Debug or Release") endif() # Get our gdextension input file name based on build type -string( TOLOWER ${CMAKE_BUILD_TYPE} BUILD_TYPE ) -set( GD_EXTENSION_FILE_INPUT template.${BUILD_TYPE}.gdextension.in ) +string(TOLOWER ${CMAKE_BUILD_TYPE} BUILD_TYPE) +set(GD_EXTENSION_FILE_INPUT template.${BUILD_TYPE}.gdextension.in) # Workaround to add the "lib" prefix to the library in our template file if using MSYS2. -if ( MINGW ) - set( LIB_PREFIX "lib") +if(MINGW) + set(LIB_PREFIX "lib") endif() # Generate our project's .gdextension file from the template -set( GD_EXTENSION_FILE ${PROJECT_NAME}.gdextension ) -configure_file( ${GD_EXTENSION_FILE_INPUT} ${PROJECT_BINARY_DIR}/${PROJECT_NAME}/${GD_EXTENSION_FILE} ) +set(OUT_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../../ScreenPlayGodot/${PROJECT_NAME}/) +set(GD_EXTENSION_FILE ${PROJECT_NAME}.gdextension) +configure_file(${GD_EXTENSION_FILE_INPUT} ${OUT_PATH}/${GD_EXTENSION_FILE}) # Install the gdextension file from the build directory install( @@ -34,8 +36,8 @@ install( DESTINATION ${INSTALL_DIR} ) -unset( ALLOWED_BUILDS ) -unset( BUILD_TYPE ) -unset( GD_EXTENSION_FILE ) -unset( GD_EXTENSION_FILE_INPUT ) -unset( LIB_PREFIX ) +unset(ALLOWED_BUILDS) +unset(BUILD_TYPE) +unset(GD_EXTENSION_FILE) +unset(GD_EXTENSION_FILE_INPUT) +unset(LIB_PREFIX) diff --git a/ScreenPlayWallpaper/Godot/ScreenPlayGodot/ScreenPlayGodotWallpaper/ScreenPlayGodotWallpaper.gdextension b/ScreenPlayWallpaper/Godot/ScreenPlayGodot/ScreenPlayGodotWallpaper/ScreenPlayGodotWallpaper.gdextension new file mode 100644 index 00000000..67ce6cc9 --- /dev/null +++ b/ScreenPlayWallpaper/Godot/ScreenPlayGodot/ScreenPlayGodotWallpaper/ScreenPlayGodotWallpaper.gdextension @@ -0,0 +1,10 @@ +[configuration] + +entry_symbol = "GDExtensionInit" +compatibility_minimum = 4.1 + +[libraries] + +linux.debug.x86_64 = "res://ScreenPlayGodotWallpaper/lib/Linux-x86_64/libScreenPlayGodotWallpaper-d.so" +macos.debug = "res://ScreenPlayGodotWallpaper/lib/Darwin-Universal/libScreenPlayGodotWallpaper-d.dylib" +windows.debug.x86_64 = "res://ScreenPlayGodotWallpaper/lib/Windows-AMD64/ScreenPlayGodotWallpaper-d.dll" diff --git a/ScreenPlayWallpaper/Godot/ScreenPlayGodot/main.gd b/ScreenPlayWallpaper/Godot/ScreenPlayGodot/main.gd index 47808cba..a34d3320 100644 --- a/ScreenPlayWallpaper/Godot/ScreenPlayGodot/main.gd +++ b/ScreenPlayWallpaper/Godot/ScreenPlayGodot/main.gd @@ -1,13 +1,18 @@ extends Node3D +@onready var screen_play_wallpaper = $ScreenPlayGodotWallpaper + func _ready(): - var path = "" + # "C:\\Code\\cpp\\ScreenPlay\\ScreenPlay\\Content\\wallpaper_godot_fjord\\fjord.zip" + var path = "C:\\Code\\cpp\\ScreenPlay\\ScreenPlay\\Content\\wallpaper_godot_fjord\\fjord.zip" var success = ProjectSettings.load_resource_pack (path) if success: var scene_resource = load("res://wallpaper.tscn") if scene_resource: var scene_instance = scene_resource.instantiate() add_child(scene_instance) + var ok = screen_play_wallpaper.init(0) + print("init ", ok) else: print("Failed to load the wallpaper.tscn scene.") else: diff --git a/ScreenPlayWallpaper/Godot/ScreenPlayGodot/main.tscn b/ScreenPlayWallpaper/Godot/ScreenPlayGodot/main.tscn index c5ef6456..c20d437d 100644 --- a/ScreenPlayWallpaper/Godot/ScreenPlayGodot/main.tscn +++ b/ScreenPlayWallpaper/Godot/ScreenPlayGodot/main.tscn @@ -4,3 +4,5 @@ [node name="Wallpaper" type="Node3D"] script = ExtResource("1_ceeuk") + +[node name="ScreenPlayGodotWallpaper" type="ScreenPlayGodotWallpaper" parent="."] diff --git a/ScreenPlayWallpaper/Godot/ScreenPlayGodot/project.godot b/ScreenPlayWallpaper/Godot/ScreenPlayGodot/project.godot index 5dd8bb08..fedd515e 100644 --- a/ScreenPlayWallpaper/Godot/ScreenPlayGodot/project.godot +++ b/ScreenPlayWallpaper/Godot/ScreenPlayGodot/project.godot @@ -14,8 +14,18 @@ config/name="ScreenPlay" run/main_scene="res://main.tscn" config/features=PackedStringArray("4.1", "Mobile") boot_splash/show_image=false +boot_splash/fullsize=false config/icon="res://icon.svg" +[display] + +window/size/viewport_width=1 +window/size/viewport_height=1 +window/size/mode=1 +window/size/initial_position_type=0 +window/size/initial_position=Vector2i(9999999, 9999999) +window/size/borderless=true + [rendering] renderer/rendering_method="mobile" diff --git a/ScreenPlayWallpaper/src/windowshook.cpp b/ScreenPlayWallpaper/src/windowshook.cpp new file mode 100644 index 00000000..032721f0 --- /dev/null +++ b/ScreenPlayWallpaper/src/windowshook.cpp @@ -0,0 +1,111 @@ +#include "windowshook.h" + +BOOL CALLBACK WinMonitorStats::MonitorEnum(HMONITOR hMon, HDC hdc, LPRECT lprcMonitor, LPARAM pData) +{ + WinMonitorStats* pThis = reinterpret_cast(pData); + auto scaleFactor = DEVICE_SCALE_FACTOR::DEVICE_SCALE_FACTOR_INVALID; + GetScaleFactorForMonitor(hMon, &scaleFactor); + + UINT x = 0; + UINT y = 0; + GetDpiForMonitor(hMon, MONITOR_DPI_TYPE::MDT_RAW_DPI, &x, &y); + pThis->sizes.push_back({ x, y }); + pThis->scaleFactor.push_back(scaleFactor); + pThis->hMonitors.push_back(hMon); + pThis->hdcMonitors.push_back(hdc); + pThis->rcMonitors.push_back(*lprcMonitor); + pThis->iMonitors.push_back(static_cast(pThis->hdcMonitors.size())); + + // qInfo() << std::abs(lprcMonitor->right - lprcMonitor->left) << std::abs(lprcMonitor->top - lprcMonitor->bottom); + + return TRUE; +} +/*! + \brief Searches for the worker window for our window to parent to. +*/ +BOOL WINAPI SearchForWorkerWindow(HWND hwnd, LPARAM lparam) +{ + // 0xXXXXXXX "" WorkerW + // ... + // 0xXXXXXXX "" SHELLDLL_DefView + // 0xXXXXXXXX "FolderView" SysListView32 + // 0xXXXXXXXX "" WorkerW <---- We want this one + // 0xXXXXXXXX "Program Manager" Progman + if (FindWindowExW(hwnd, nullptr, L"SHELLDLL_DefView", nullptr)) + *reinterpret_cast(lparam) = FindWindowExW(nullptr, hwnd, L"WorkerW", nullptr); + return TRUE; +} + +bool WindowsHook::searchWorkerWindowToParentTo() +{ + + HWND progman_hwnd = FindWindowW(L"Progman", L"Program Manager"); + const DWORD WM_SPAWN_WORKER = 0x052C; + SendMessageTimeoutW(progman_hwnd, WM_SPAWN_WORKER, 0xD, 0x1, SMTO_NORMAL, + 10000, nullptr); + + return EnumWindows(SearchForWorkerWindow, reinterpret_cast(&windowHandleWorker)); +} + +/*! + \brief Returns scaling factor as reported by Windows. +*/ +float WindowsHook::getScaling(const int monitorIndex) const +{ + // Get all monitors + int monitorCount = GetSystemMetrics(SM_CMONITORS); + + if (monitorIndex < 0 || monitorIndex >= monitorCount) { + // Invalid monitor index + return 1.0f; + } + + DISPLAY_DEVICE displayDevice; + ZeroMemory(&displayDevice, sizeof(displayDevice)); + displayDevice.cb = sizeof(displayDevice); + + // Enumerate through monitors until we find the one we're looking for + for (int i = 0; EnumDisplayDevices(NULL, i, &displayDevice, 0); i++) { + if (i == monitorIndex) { + DEVMODE devMode; + ZeroMemory(&devMode, sizeof(devMode)); + devMode.dmSize = sizeof(devMode); + + // Get settings for selected monitor + if (!EnumDisplaySettings(displayDevice.DeviceName, ENUM_CURRENT_SETTINGS, &devMode)) { + // Unable to get monitor settings + return 1.0f; + } + + // Get DPI for selected monitor + HMONITOR hMonitor = MonitorFromPoint({ devMode.dmPosition.x, devMode.dmPosition.y }, MONITOR_DEFAULTTONEAREST); + UINT dpiX = 0, dpiY = 0; + if (SUCCEEDED(GetDpiForMonitor(hMonitor, MDT_EFFECTIVE_DPI, &dpiX, &dpiY))) { + return (float)dpiX / 96.0f; // Standard DPI is 96 + } + } + } + + // If we reach here, it means we couldn't find the monitor with the given index or couldn't get the DPI. + return 1.0f; +} + +/*! + \brief Returns true of at least one monitor has active scaling enabled. +*/ +bool WindowsHook::hasWindowScaling() const +{ + auto enumMonitorCallback = [](HMONITOR hMonitor, HDC hdcMonitor, LPRECT lprcMonitor, LPARAM dwData) -> BOOL { + int scaling = GetDeviceCaps(hdcMonitor, LOGPIXELSX) / 96; + if (scaling != 1) { + *(bool*)dwData = true; + return false; // Stop enumeration + } + return true; // Continue enumeration + }; + + bool hasScaling = false; + EnumDisplayMonitors(NULL, NULL, enumMonitorCallback, (LPARAM)&hasScaling); + + return hasScaling; +} \ No newline at end of file diff --git a/ScreenPlayWallpaper/src/windowshook.h b/ScreenPlayWallpaper/src/windowshook.h new file mode 100644 index 00000000..d291b36e --- /dev/null +++ b/ScreenPlayWallpaper/src/windowshook.h @@ -0,0 +1,41 @@ +#pragma once + +#ifndef NOMINMAX +#define NOMINMAX +#endif +#include +#include +#include +#include +#include + +struct WinMonitorStats { + + WinMonitorStats() + { + EnumDisplayMonitors(NULL, NULL, MonitorEnum, (LPARAM)this); + } + + static BOOL CALLBACK MonitorEnum(HMONITOR hMon, HDC hdc, LPRECT lprcMonitor, LPARAM pData); + std::vector iMonitors; + std::vector hMonitors; + std::vector hdcMonitors; + std::vector rcMonitors; + std::vector scaleFactor; + std::vector> sizes; + int index = 0; +}; + +struct Point { + int x = 0; + int y = 0; +}; + +struct WindowsHook { + bool searchWorkerWindowToParentTo(); + float getScaling(const int monitorIndex) const; + bool hasWindowScaling() const; + HWND windowHandle {}; + HWND windowHandleWorker {}; + Point zeroPoint; +}; \ No newline at end of file From 1650c33a42db136922c5e49855776c59f80341f0 Mon Sep 17 00:00:00 2001 From: Elias Steurer Date: Fri, 1 Sep 2023 14:30:34 +0200 Subject: [PATCH 003/101] Add basic windows pipe support --- .../src/ScreenPlayGodotWallpaper.cpp | 89 ++++++++++++++++--- .../src/ScreenPlayGodotWallpaper.h | 7 ++ .../ScreenPlayGodotWallpaper.gdextension | 6 +- 3 files changed, 89 insertions(+), 13 deletions(-) diff --git a/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayGodotWallpaper.cpp b/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayGodotWallpaper.cpp index c1d0d659..2d99c2a8 100644 --- a/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayGodotWallpaper.cpp +++ b/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayGodotWallpaper.cpp @@ -13,6 +13,12 @@ int ScreenPlayGodotWallpaper::sInstanceCount = 0; int ScreenPlayGodotWallpaper::sLastID = 0; +void ScreenPlayGodotWallpaper::_bind_methods() +{ + godot::ClassDB::bind_method(godot::D_METHOD("init"), &ScreenPlayGodotWallpaper::init); + godot::ClassDB::bind_method(godot::D_METHOD("create_named_pipe"), &ScreenPlayGodotWallpaper::create_named_pipe); +} + ScreenPlayGodotWallpaper::ScreenPlayGodotWallpaper() { mID = ++sLastID; @@ -32,15 +38,36 @@ ScreenPlayGodotWallpaper::~ScreenPlayGodotWallpaper() // Somehow this gets called at editor startup // so just return if not initialized - if (!m_hook) + if (m_hook) { + + ShowWindow(m_hook->windowHandle, SW_HIDE); + + // Force refresh so that we display the regular + // desktop wallpaper again + ShowWindow(m_hook->windowHandleWorker, SW_HIDE); + ShowWindow(m_hook->windowHandleWorker, SW_SHOW); + } + // Destructor + if (hPipe != INVALID_HANDLE_VALUE) { + CloseHandle(hPipe); + } +} + +void ScreenPlayGodotWallpaper::_process(double delta) +{ + + if (!isPipeActive) { return; - - ShowWindow(m_hook->windowHandle, SW_HIDE); - - // Force refresh so that we display the regular - // desktop wallpaper again - ShowWindow(m_hook->windowHandleWorker, SW_HIDE); - ShowWindow(m_hook->windowHandleWorker, SW_SHOW); + } + timesinceLastRead += delta; + // 0.05 seconds = 50ms + if (timesinceLastRead >= 0.05) { + godot::String data = read_from_pipe(); + if (!data.is_empty()) { + godot::UtilityFunctions::print("Received data: " + data); + } + timesinceLastRead = 0.0; + } } bool ScreenPlayGodotWallpaper::configureWindowGeometry() @@ -111,7 +138,49 @@ bool ScreenPlayGodotWallpaper::init(int activeScreen) return true; } -void ScreenPlayGodotWallpaper::_bind_methods() +bool ScreenPlayGodotWallpaper::create_named_pipe(godot::String pipeName) { - godot::ClassDB::bind_method(godot::D_METHOD("init"), &ScreenPlayGodotWallpaper::init); + godot::String fullPipeName = "\\\\.\\pipe\\" + pipeName; + std::wstring wPipeName = std::wstring(fullPipeName.wide_string()); + + hPipe = CreateNamedPipeW( + wPipeName.c_str(), + PIPE_ACCESS_DUPLEX, + PIPE_TYPE_BYTE | PIPE_READMODE_BYTE | PIPE_WAIT, + 1, + 1024 * 16, + 1024 * 16, + NMPWAIT_USE_DEFAULT_WAIT, + NULL); + + if (hPipe == INVALID_HANDLE_VALUE) { + isPipeActive = false; + godot::UtilityFunctions::print("CreateNamedPipe failed, error code: " + godot::String::num_int64(GetLastError())); + return false; + } + + if (ConnectNamedPipe(hPipe, NULL) == FALSE) { + CloseHandle(hPipe); + godot::UtilityFunctions::print("ConnectNamedPipe failed, error code: " + godot::String::num_int64(GetLastError())); + isPipeActive = false; + return false; + } + isPipeActive = true; + return true; +} + +godot::String ScreenPlayGodotWallpaper::read_from_pipe() +{ + char buffer[128]; + DWORD bytesRead; + godot::String result; + + if (ReadFile(hPipe, buffer, sizeof(buffer) - 1, &bytesRead, NULL)) { + buffer[bytesRead] = '\0'; + result = godot::String(buffer); + } else { + godot::UtilityFunctions::print("ReadFile from pipe failed, error code: " + godot::String::num_int64(GetLastError())); + } + + return result; } diff --git a/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayGodotWallpaper.h b/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayGodotWallpaper.h index 73825994..2f6e4a25 100644 --- a/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayGodotWallpaper.h +++ b/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayGodotWallpaper.h @@ -5,6 +5,7 @@ #include "godot_cpp/classes/global_constants.hpp" #include "godot_cpp/classes/viewport.hpp" #include "godot_cpp/core/binder_common.hpp" +#include "godot_cpp/variant/string.hpp" #include @@ -19,6 +20,9 @@ public: ~ScreenPlayGodotWallpaper() override; bool init(int activeScreen); + bool create_named_pipe(godot::String pipeName); + godot::String read_from_pipe(); + void _process(double delta); protected: static void _bind_methods(); @@ -32,4 +36,7 @@ private: int mID; std::unique_ptr m_hook; + HANDLE hPipe; + double time_since_last_read = 0.0; + bool isPipeActive = false; }; diff --git a/ScreenPlayWallpaper/Godot/ScreenPlayGodot/ScreenPlayGodotWallpaper/ScreenPlayGodotWallpaper.gdextension b/ScreenPlayWallpaper/Godot/ScreenPlayGodot/ScreenPlayGodotWallpaper/ScreenPlayGodotWallpaper.gdextension index 67ce6cc9..ffaa8919 100644 --- a/ScreenPlayWallpaper/Godot/ScreenPlayGodot/ScreenPlayGodotWallpaper/ScreenPlayGodotWallpaper.gdextension +++ b/ScreenPlayWallpaper/Godot/ScreenPlayGodot/ScreenPlayGodotWallpaper/ScreenPlayGodotWallpaper.gdextension @@ -5,6 +5,6 @@ compatibility_minimum = 4.1 [libraries] -linux.debug.x86_64 = "res://ScreenPlayGodotWallpaper/lib/Linux-x86_64/libScreenPlayGodotWallpaper-d.so" -macos.debug = "res://ScreenPlayGodotWallpaper/lib/Darwin-Universal/libScreenPlayGodotWallpaper-d.dylib" -windows.debug.x86_64 = "res://ScreenPlayGodotWallpaper/lib/Windows-AMD64/ScreenPlayGodotWallpaper-d.dll" +linux.debug.x86_64 = "lib/Linux-x86_64/libScreenPlayGodotWallpaper-d.so" +macos.debug = "lib/Darwin-Universal/libScreenPlayGodotWallpaper-d.dylib" +windows.debug.x86_64 = "lib/Windows-AMD64/ScreenPlayGodotWallpaper-d.dll" From b4a3cb806ae6cca4306df80b787d396cac0093e9 Mon Sep 17 00:00:00 2001 From: Elias Steurer Date: Fri, 1 Sep 2023 14:33:23 +0200 Subject: [PATCH 004/101] Add argument parsing --- .../Godot/ScreenPlayGodot/main.gd | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/ScreenPlayWallpaper/Godot/ScreenPlayGodot/main.gd b/ScreenPlayWallpaper/Godot/ScreenPlayGodot/main.gd index a34d3320..1752ef7d 100644 --- a/ScreenPlayWallpaper/Godot/ScreenPlayGodot/main.gd +++ b/ScreenPlayWallpaper/Godot/ScreenPlayGodot/main.gd @@ -2,6 +2,13 @@ extends Node3D @onready var screen_play_wallpaper = $ScreenPlayGodotWallpaper +var activeScreensList = [] +var projectPath = "" +var appID = "" +var volume = 0.0 +var fillmode = 0 +var checkWallpaperVisible = false + func _ready(): # "C:\\Code\\cpp\\ScreenPlay\\ScreenPlay\\Content\\wallpaper_godot_fjord\\fjord.zip" var path = "C:\\Code\\cpp\\ScreenPlay\\ScreenPlay\\Content\\wallpaper_godot_fjord\\fjord.zip" @@ -18,3 +25,30 @@ func _ready(): else: print("Failed to load the PCK file.") Engine.set_max_fps(24) + +func parse_args(): + var args = OS.get_cmdline_args() + var i = 0 + while i < args.size(): + match args[i]: + "--ActiveScreensList": + i += 1 + activeScreensList = args[i].split(",") + for idx in range(activeScreensList.size()): + activeScreensList[idx] = int(activeScreensList[idx]) + "--ProjectPath": + i += 1 + projectPath = args[i] + "--appID": + i += 1 + appID = args[i] + "--volume": + i += 1 + volume = float(args[i]) + "--fillmode": + i += 1 + fillmode = int(args[i]) + "--CheckWallpaperVisible": + i += 1 + checkWallpaperVisible = args[i].to_lower() == "true" + i += 1 From 8223eb5c36960764ddccdbae74b813d4d5e1afa3 Mon Sep 17 00:00:00 2001 From: Elias Steurer Date: Thu, 28 Sep 2023 15:55:11 +0200 Subject: [PATCH 005/101] Add Godot export Fix paths in sidebar now that we have multiple storage paths Add Godot wallpaper and edit to ScreenPlay Fix showing Godot icon in task bar --- .vscode/tasks.json | 17 ++++ CMake/CMakeVariables.h.in | 3 +- CMake/GenerateCMakeVariableHeader.cmake | 1 + CMakeLists.txt | 20 ++++- Content/wallpaper_godot_fjord/Path3D.gd | 1 - Content/wallpaper_godot_fjord/preview.png | Bin 0 -> 170053 bytes Content/wallpaper_godot_fjord/project.json | 11 +++ .../inc/public/ScreenPlay/globalvariables.h | 77 ++++++++---------- ScreenPlay/qml/Installed/Sidebar.qml | 19 +++-- ScreenPlay/src/globalvariables.cpp | 52 ++++++++++++ ScreenPlay/src/screenplaywallpaper.cpp | 18 ++-- ScreenPlay/src/settings.cpp | 53 +++++++----- ScreenPlayUtil/src/projectfile.cpp | 30 ++++--- ScreenPlayWallpaper/Godot/CMakeLists.txt | 35 ++++++++ .../src/ScreenPlayGodotWallpaper.cpp | 10 +++ .../src/ScreenPlayGodotWallpaper.h | 3 +- .../ScreenPlayGodotWallpaper.gdextension | 3 + .../Godot/ScreenPlayGodot/export_presets.cfg | 2 +- .../Godot/ScreenPlayGodot/main.gd | 53 ++++++------ .../Godot/ScreenPlayGodot/project.godot | 4 + Tools/CMakeLists.txt | 3 + Tools/build_godot.py | 48 +++++++++++ Tools/defines.py | 17 ++++ 23 files changed, 356 insertions(+), 124 deletions(-) create mode 100644 Content/wallpaper_godot_fjord/preview.png create mode 100644 Content/wallpaper_godot_fjord/project.json create mode 100644 ScreenPlayWallpaper/Godot/CMakeLists.txt create mode 100644 Tools/build_godot.py diff --git a/.vscode/tasks.json b/.vscode/tasks.json index a6b91c44..a4195a1c 100644 --- a/.vscode/tasks.json +++ b/.vscode/tasks.json @@ -85,6 +85,23 @@ "setup.py" ] }, + { + "type": "process", + "label": "Build Godot", + "command": "python", + "group": { + "kind": "build", + "isDefault": true + }, + "options": { + "cwd": "${workspaceFolder}/Tools" + }, + "args": [ + "build_godot.py", + "--build_path", + "${command:cmake.buildDirectory}/bin" + ] + }, { "type": "process", "label": "Build ScreenPlay release, with deploy and steam enabled", diff --git a/CMake/CMakeVariables.h.in b/CMake/CMakeVariables.h.in index fa665fc0..d616a317 100644 --- a/CMake/CMakeVariables.h.in +++ b/CMake/CMakeVariables.h.in @@ -1,3 +1,4 @@ #pragma once -#define SCREENPLAY_SOURCE_DIR "@SOURCE_DIR@" \ No newline at end of file +#define SCREENPLAY_SOURCE_DIR "@SOURCE_DIR@" +#define SCREENPLAY_GODOT_VERSION "@GODOT_VERSION@" diff --git a/CMake/GenerateCMakeVariableHeader.cmake b/CMake/GenerateCMakeVariableHeader.cmake index 7fd241f1..0cd7c0a9 100644 --- a/CMake/GenerateCMakeVariableHeader.cmake +++ b/CMake/GenerateCMakeVariableHeader.cmake @@ -7,6 +7,7 @@ # function(generate_cmake_variable_header TARGET) set(SOURCE_DIR ${CMAKE_SOURCE_DIR}) + set(SCREENPLAY_GODOT_VERSION ${GODOT_VERSION}) # Specify the configuration file from which the header file will be generated configure_file(${CMAKE_SOURCE_DIR}/CMake/CMakeVariables.h.in ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}/CMakeVariables.h @ONLY) diff --git a/CMakeLists.txt b/CMakeLists.txt index 2679eb2e..6bd94ddf 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -21,6 +21,19 @@ elseif(APPLE) set(VCPKG_TARGET_ARCHITECTURE "arm64;x86_64") endif() +# Godot Editor +set(GODOT_VERSION "v4.1.1") + +if(WIN32) + set(GODOT_EDITOR_NAME "Godot_${GODOT_VERSION}-stable_win64.exe") +elseif(APPLE) + set(GODOT_EDITOR_NAME "Godot.app") +elseif(UNIX) + set(GODOT_EDITOR_NAME "Godot_${GODOT_VERSION}-stable_linux.x86_64") +else() + message(FATAL_ERROR "Unsupported OS") +endif() + # This sets cmake to compile all dlls into the main directory set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib) set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) @@ -56,7 +69,7 @@ set(VCPKG_BIN_PATH "${VCPKG_INSTALLED_PATH}/bin") option(SCREENPLAY_STEAM "For FOSS distribution so we do not bundle proprietary code." ON) option(SCREENPLAY_DEPLOY "Marks this version as an official deploy version. This version uses different import paths and other settings." - OFF) + OFF) option(SCREENPLAY_TESTS "Enables UI tests." ON) option(SCREENPLAY_INSTALLER "Indicates whether an installer via the Qt Installer Framework is created." OFF) @@ -69,11 +82,13 @@ file(MAKE_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}) add_compile_definitions(COMPILE_INFO="Build Date: ${BUILD_DATE}. Git Hash: ${GIT_COMMIT_HASH}. ") add_compile_definitions(SOURCE_DIR="${CMAKE_CURRENT_SOURCE_DIR}") + if(${SCREENPLAY_DEPLOY}) add_compile_definitions(DEPLOY_VERSION) endif() find_package(Git REQUIRED) + if(WIN32) set(DATE_COMMAND "CMD") set(DATE_ARG "/c date /t") @@ -124,7 +139,7 @@ add_subdirectory(ScreenPlayUtil) add_subdirectory(ScreenPlayWeather) if(GODOT_WALLPAPER) - add_subdirectory(ScreenPlayWallpaper/Godot/GDExtention) + add_subdirectory(ScreenPlayWallpaper/Godot) endif() if(${SCREENPLAY_TESTS}) @@ -133,6 +148,7 @@ endif() # Only add target SteamSDKQtEnums add_subdirectory(ScreenPlayWorkshop/SteamSDK) + if(${SCREENPLAY_STEAM}) add_subdirectory(ScreenPlayWorkshop) endif() diff --git a/Content/wallpaper_godot_fjord/Path3D.gd b/Content/wallpaper_godot_fjord/Path3D.gd index 0eac2b26..e9e0eac8 100644 --- a/Content/wallpaper_godot_fjord/Path3D.gd +++ b/Content/wallpaper_godot_fjord/Path3D.gd @@ -9,7 +9,6 @@ var speed = 0.4 func _process(delta): # Update the offset to move the object along the path path_follow.progress += speed * delta - print(path_follow.progress) # Loop back to the start if we've reached the end of the path if path_follow.progress > 10: diff --git a/Content/wallpaper_godot_fjord/preview.png b/Content/wallpaper_godot_fjord/preview.png new file mode 100644 index 0000000000000000000000000000000000000000..9ad7fde7194a12104f531863510bb9fb1ba04b14 GIT binary patch literal 170053 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%0Dy~Y3Ox%n0_}F;YcPT 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%0D|)nanGC<%6{(`4(){cDPNgnbCD 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 z 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 Y0ff4d)}r+F^Z)<=07*qoM6N<$f?qCg2><{9 literal 0 HcmV?d00001 diff --git a/Content/wallpaper_godot_fjord/project.json b/Content/wallpaper_godot_fjord/project.json new file mode 100644 index 00000000..6d5a7cb3 --- /dev/null +++ b/Content/wallpaper_godot_fjord/project.json @@ -0,0 +1,11 @@ +{ + "description": "Godot", + "file": "main.qml", + "preview": "preview.png", + "tags": [ + "Godot" + ], + "title": "Godot Wallpaper", + "type": "godotWallpaper", + "visibility": "public" +} \ No newline at end of file diff --git a/ScreenPlay/inc/public/ScreenPlay/globalvariables.h b/ScreenPlay/inc/public/ScreenPlay/globalvariables.h index 726283ef..7b7a6a15 100644 --- a/ScreenPlay/inc/public/ScreenPlay/globalvariables.h +++ b/ScreenPlay/inc/public/ScreenPlay/globalvariables.h @@ -18,20 +18,21 @@ class GlobalVariables : public QObject { QML_ELEMENT Q_PROPERTY(QVersionNumber version READ version CONSTANT) - Q_PROPERTY(QUrl localStoragePath READ localStoragePath WRITE setLocalStoragePath NOTIFY localStoragePathChanged) - Q_PROPERTY(QUrl localSettingsPath READ localSettingsPath WRITE setLocalSettingsPath NOTIFY localSettingsPathChanged) - Q_PROPERTY(QUrl wallpaperExecutablePath READ wallpaperExecutablePath WRITE setWallpaperExecutablePath NOTIFY wallpaperExecutablePathChanged) - Q_PROPERTY(QUrl widgetExecutablePath READ widgetExecutablePath WRITE setWidgetExecutablePath NOTIFY widgetExecutablePathChanged) + Q_PROPERTY(QUrl localStoragePath READ localStoragePath WRITE setLocalStoragePath NOTIFY localStoragePathChanged FINAL) + Q_PROPERTY(QUrl localSettingsPath READ localSettingsPath WRITE setLocalSettingsPath NOTIFY localSettingsPathChanged FINAL) + Q_PROPERTY(QUrl wallpaperExecutablePath READ wallpaperExecutablePath WRITE setWallpaperExecutablePath NOTIFY wallpaperExecutablePathChanged FINAL) + Q_PROPERTY(QUrl widgetExecutablePath READ widgetExecutablePath WRITE setWidgetExecutablePath NOTIFY widgetExecutablePathChanged FINAL) + Q_PROPERTY(QUrl godotWallpaperExecutablePath READ godotWallpaperExecutablePath WRITE setGodotWallpaperExecutablePath NOTIFY godotWallpaperExecutablePathChanged FINAL) + Q_PROPERTY(QUrl godotEditorExecutablePath READ godotEditorExecutablePath WRITE setGodotEditorExecutablePath NOTIFY godotEditorExecutablePathChanged FINAL) public: explicit GlobalVariables(QObject* parent = nullptr); /*! - \brief We need to check if there was an error in the Wallpaper/Widgets. - For this we ping it every 3s. - */ - static const int contentPingAliveIntervalMS = 3000; - + \property GlobalVariables::m_version + \brief Returns the current app version. Not yet used. + */ + QVersionNumber version() const { return m_version; } /*! \property GlobalVariables::localStoragePath \brief Returns the localStoragePath. @@ -56,51 +57,35 @@ public: \property GlobalVariables::m_version \brief Returns the current app version. Not yet used. */ - QVersionNumber version() const { return m_version; } + QUrl godotWallpaperExecutablePath() const { return m_godotWallpaperExecutablePath; } + /*! + \property GlobalVariables::m_version + \brief Returns the current app version. Not yet used. + */ + QUrl godotEditorExecutablePath() const { return m_godotEditorExecutablePath; } signals: void localStoragePathChanged(QUrl localStoragePath); void localSettingsPathChanged(QUrl localSettingsPath); void wallpaperExecutablePathChanged(QUrl wallpaperExecutablePath); void widgetExecutablePathChanged(QUrl widgetExecutablePath); + void godotWallpaperExecutablePathChanged(QUrl godotWallpaperExecutablePath); + void godotEditorExecutablePathChanged(QUrl godotEditorExecutablePath); public slots: + void setLocalStoragePath(QUrl localStoragePath); + void setLocalSettingsPath(QUrl localSettingsPath); + void setWallpaperExecutablePath(QUrl wallpaperExecutablePath); + void setWidgetExecutablePath(QUrl widgetExecutablePath); + void setGodotWallpaperExecutablePath(QUrl godotWallpaperExecutablePath); + void setGodotEditorExecutablePath(QUrl godotEditorExecutablePath); - void setLocalStoragePath(QUrl localStoragePath) - { - if (m_localStoragePath == localStoragePath) - return; - - m_localStoragePath = localStoragePath; - emit localStoragePathChanged(m_localStoragePath); - } - - void setLocalSettingsPath(QUrl localSettingsPath) - { - if (m_localSettingsPath == localSettingsPath) - return; - - m_localSettingsPath = localSettingsPath; - emit localSettingsPathChanged(m_localSettingsPath); - } - - void setWallpaperExecutablePath(QUrl wallpaperExecutablePath) - { - if (m_wallpaperExecutablePath == wallpaperExecutablePath) - return; - - m_wallpaperExecutablePath = wallpaperExecutablePath; - emit wallpaperExecutablePathChanged(m_wallpaperExecutablePath); - } - - void setWidgetExecutablePath(QUrl widgetExecutablePath) - { - if (m_widgetExecutablePath == widgetExecutablePath) - return; - - m_widgetExecutablePath = widgetExecutablePath; - emit widgetExecutablePathChanged(m_widgetExecutablePath); - } +public: + /*! + \brief We need to check if there was an error in the Wallpaper/Widgets. + For this we ping it every 3s. + */ + static const int contentPingAliveIntervalMS = 3000; private: QUrl m_localStoragePath; @@ -108,5 +93,7 @@ private: QUrl m_wallpaperExecutablePath; QUrl m_widgetExecutablePath; QVersionNumber m_version { 1, 0, 0 }; + QUrl m_godotWallpaperExecutablePath; + QUrl m_godotEditorExecutablePath; }; } diff --git a/ScreenPlay/qml/Installed/Sidebar.qml b/ScreenPlay/qml/Installed/Sidebar.qml index 96ce53cc..b604f910 100644 --- a/ScreenPlay/qml/Installed/Sidebar.qml +++ b/ScreenPlay/qml/Installed/Sidebar.qml @@ -52,10 +52,10 @@ Item { imagePreview.source = previewImageFilePath; } if (JSUtil.isWidget(root.type) || (monitorSelection.activeMonitors.length > 0)) { - btnSetWallpaper.enabled = true; + btnLaunchContent.enabled = true; return; } - btnSetWallpaper.enabled = false; + btnLaunchContent.enabled = false; } Connections { @@ -73,10 +73,10 @@ Item { root.state = "activeWallpaper"; else root.state = "activeScene"; - btnSetWallpaper.text = qsTr("Set Wallpaper"); + btnLaunchContent.text = qsTr("Set Wallpaper"); } else { root.state = "activeWidget"; - btnSetWallpaper.text = qsTr("Set Widget"); + btnLaunchContent.text = qsTr("Set Widget"); } } @@ -338,8 +338,8 @@ Item { } Button { - id: btnSetWallpaper - objectName: "btnSetWallpaper" + id: btnLaunchContent + objectName: "btnLaunchContent" enabled: JSUtil.isWidget(root.type) ? true : monitorSelection.isSelected Material.background: Material.accent Material.foreground: "white" @@ -347,8 +347,9 @@ Item { icon.color: "white" font.pointSize: 12 onClicked: { - const absoluteStoragePath = App.globalVariables.localStoragePath + "/" + root.contentFolderName; - const previewImage = App.installedListModel.get(root.contentFolderName).m_preview; + const item = App.installedListModel.get(root.contentFolderName); + const absoluteStoragePath = item.m_absoluteStoragePath; + const previewImage =item.m_preview; if (JSUtil.isWallpaper(root.type)) { let activeMonitors = monitorSelection.getActiveMonitors(); // TODO Alert user to choose a monitor @@ -359,7 +360,7 @@ Item { let volume = 0; if (type === InstalledType.VideoWallpaper) volume = Math.round(sliderVolume.slider.value * 100) / 100; - const screenFile = App.installedListModel.get(root.contentFolderName).m_file; + const screenFile = item.m_file; let success = App.screenPlayManager.createWallpaper(root.type, cbVideoFillMode.currentValue, absoluteStoragePath, previewImage, screenFile, activeMonitors, volume, 1, {}, true); } if (JSUtil.isWidget(root.type)) diff --git a/ScreenPlay/src/globalvariables.cpp b/ScreenPlay/src/globalvariables.cpp index 5e3cb75c..1e48aad2 100644 --- a/ScreenPlay/src/globalvariables.cpp +++ b/ScreenPlay/src/globalvariables.cpp @@ -19,6 +19,58 @@ ScreenPlay::GlobalVariables::GlobalVariables(QObject* parent) setLocalSettingsPath(QUrl { QStandardPaths::writableLocation(QStandardPaths::AppLocalDataLocation) }); } +void GlobalVariables::setLocalStoragePath(QUrl localStoragePath) +{ + if (m_localStoragePath == localStoragePath) + return; + + m_localStoragePath = localStoragePath; + emit localStoragePathChanged(m_localStoragePath); +} + +void GlobalVariables::setLocalSettingsPath(QUrl localSettingsPath) +{ + if (m_localSettingsPath == localSettingsPath) + return; + + m_localSettingsPath = localSettingsPath; + emit localSettingsPathChanged(m_localSettingsPath); +} + +void GlobalVariables::setWallpaperExecutablePath(QUrl wallpaperExecutablePath) +{ + if (m_wallpaperExecutablePath == wallpaperExecutablePath) + return; + + m_wallpaperExecutablePath = wallpaperExecutablePath; + emit wallpaperExecutablePathChanged(m_wallpaperExecutablePath); +} + +void GlobalVariables::setWidgetExecutablePath(QUrl widgetExecutablePath) +{ + if (m_widgetExecutablePath == widgetExecutablePath) + return; + + m_widgetExecutablePath = widgetExecutablePath; + emit widgetExecutablePathChanged(m_widgetExecutablePath); +} + +void GlobalVariables::setGodotWallpaperExecutablePath(QUrl godotWallpaperExecutablePath) +{ + if (m_godotWallpaperExecutablePath == godotWallpaperExecutablePath) + return; + m_godotWallpaperExecutablePath = godotWallpaperExecutablePath; + emit godotWallpaperExecutablePathChanged(m_godotWallpaperExecutablePath); +} + +void GlobalVariables::setGodotEditorExecutablePath(QUrl godotEditorExecutablePath) +{ + if (m_godotEditorExecutablePath == godotEditorExecutablePath) + return; + m_godotEditorExecutablePath = godotEditorExecutablePath; + emit godotEditorExecutablePathChanged(m_godotEditorExecutablePath); +} + } #include "moc_globalvariables.cpp" diff --git a/ScreenPlay/src/screenplaywallpaper.cpp b/ScreenPlay/src/screenplaywallpaper.cpp index 8717a001..808f3a40 100644 --- a/ScreenPlay/src/screenplaywallpaper.cpp +++ b/ScreenPlay/src/screenplaywallpaper.cpp @@ -52,7 +52,7 @@ ScreenPlayWallpaper::ScreenPlayWallpaper(const QVector& screenNumber, if (auto obj = ScreenPlayUtil::openJsonFileToObject(absolutePath + "/project.json")) { if (obj->contains("properties")) projectSettingsListModelProperties = obj->value("properties").toObject(); - } + } } else { projectSettingsListModelProperties = properties; } @@ -86,20 +86,28 @@ ScreenPlayWallpaper::ScreenPlayWallpaper(const QVector& screenNumber, QVariant::fromValue(fillMode).toString(), QVariant::fromValue(type).toString(), QString::number(m_settings->checkWallpaperVisible()), - // Fixes issue 84 media key overlay - " --disable-features=HardwareMediaKeyHandling" }; + + // Fixes issue 84 media key overlay in Qt apps + if (m_type != InstalledType::InstalledType::GodotWallpaper) { + m_appArgumentsList.append(" --disable-features=HardwareMediaKeyHandling"); + } } bool ScreenPlayWallpaper::start() { m_process.setArguments(m_appArgumentsList); - m_process.setProgram(m_globalVariables->wallpaperExecutablePath().toString()); + if (m_type == InstalledType::InstalledType::GodotWallpaper) { + m_process.setProgram(m_globalVariables->godotWallpaperExecutablePath().toString()); + } else { + m_process.setProgram(m_globalVariables->wallpaperExecutablePath().toString()); + } + // We must start detatched otherwise we would instantly close the process // and would loose the animted fade-out and the background refresh needed // to display the original wallpaper. const bool success = m_process.startDetached(); - qInfo() << "Starting ScreenPlayWallpaper detached: " << (success ? "success" : "failed!"); + qInfo() << "Starting ScreenPlayWallpaper detached: " << (success ? "success" : "failed!") << m_process.program(); if (!success) { qInfo() << m_process.program() << m_appArgumentsList; emit error(QString("Could not start Wallpaper: " + m_process.errorString())); diff --git a/ScreenPlay/src/settings.cpp b/ScreenPlay/src/settings.cpp index c28bad0f..59e9560b 100644 --- a/ScreenPlay/src/settings.cpp +++ b/ScreenPlay/src/settings.cpp @@ -2,6 +2,9 @@ #include "ScreenPlay/settings.h" #include "ScreenPlayUtil/util.h" #include +#include + +#include "ScreenPlay/CMakeVariables.h" #ifdef Q_OS_WIN #include @@ -52,6 +55,7 @@ Settings::Settings(const std::shared_ptr& globalVariables, #ifdef SCREENPLAY_STEAM setSteamVersion(true); #endif + #ifdef Q_OS_WIN setDesktopEnvironment(DesktopEnvironment::Windows); #endif @@ -150,32 +154,37 @@ void Settings::writeJsonFileFromResource(const QString& filename) void Settings::setupWidgetAndWindowPaths() { QDir workingDir(QGuiApplication::applicationDirPath()); + const QString osType = QSysInfo::productType(); -#ifdef Q_OS_WIN - m_globalVariables->setWidgetExecutablePath(QUrl(workingDir.path() + "/ScreenPlayWidget" + ScreenPlayUtil::executableBinEnding())); - m_globalVariables->setWallpaperExecutablePath(QUrl(workingDir.path() + "/ScreenPlayWallpaper" + ScreenPlayUtil::executableBinEnding())); -#endif + QString godotVersion = QString(SCREENPLAY_GODOT_VERSION); + if (osType == "windows") { + m_globalVariables->setWidgetExecutablePath(QUrl(workingDir.path() + "/ScreenPlayWidget" + ScreenPlayUtil::executableBinEnding())); + m_globalVariables->setWallpaperExecutablePath(QUrl(workingDir.path() + "/ScreenPlayWallpaper" + ScreenPlayUtil::executableBinEnding())); + m_globalVariables->setGodotWallpaperExecutablePath(QUrl(workingDir.path() + "/ScreenPlayWallpaperGodot" + ScreenPlayUtil::executableBinEnding())); + m_globalVariables->setGodotEditorExecutablePath(QUrl(workingDir.path() + "/Godot" + ScreenPlayUtil::executableBinEnding())); -#ifdef Q_OS_LINUX - m_globalVariables->setWidgetExecutablePath(QUrl(workingDir.path() + "/ScreenPlayWidget")); - m_globalVariables->setWallpaperExecutablePath(QUrl(workingDir.path() + "/ScreenPlayWallpaper")); -#endif - -#ifdef Q_OS_OSX - - // ScreenPlayTest is not bundled in an .app so the working directory - // the the same as the executable. - if (QFileInfo(QCoreApplication::applicationFilePath()).fileName() != "tst_ScreenPlay") { - workingDir.cdUp(); - workingDir.cdUp(); - workingDir.cdUp(); + } else if (osType == "osx") { + // ScreenPlayTest is not bundled in an .app so the working directory + // the the same as the executable. + if (QFileInfo(QCoreApplication::applicationFilePath()).fileName() != "tst_ScreenPlay") { + workingDir.cdUp(); + workingDir.cdUp(); + workingDir.cdUp(); + } + const QString basePath = "/ScreenPlay.app/Contents/MacOS/"; + m_globalVariables->setWidgetExecutablePath(QUrl::fromUserInput(workingDir.path() + basePath + "ScreenPlayWidget").toLocalFile()); + m_globalVariables->setWallpaperExecutablePath(QUrl::fromUserInput(workingDir.path() + basePath + "ScreenPlayWallpaper").toLocalFile()); + m_globalVariables->setGodotWallpaperExecutablePath(QUrl(workingDir.path() + basePath + "ScreenPlayWallpaperGodot").toLocalFile()); + m_globalVariables->setGodotEditorExecutablePath(QUrl(workingDir.path() + basePath + "Godot").toLocalFile()); + } else if (osType == "linux") { + m_globalVariables->setWidgetExecutablePath(QUrl(workingDir.path() + "/ScreenPlayWidget")); + m_globalVariables->setWallpaperExecutablePath(QUrl(workingDir.path() + "/ScreenPlayWallpaper")); + m_globalVariables->setGodotWallpaperExecutablePath(QUrl(workingDir.path() + "/ScreenPlayWallpaperGodot")); + m_globalVariables->setGodotEditorExecutablePath(QUrl(workingDir.path() + "/Godot")); + } else { + qFatal("OS not supported."); } - m_globalVariables->setWidgetExecutablePath(QUrl::fromUserInput(workingDir.path() + "/ScreenPlay.app/Contents/MacOS/ScreenPlayWidget").toLocalFile()); - m_globalVariables->setWallpaperExecutablePath(QUrl::fromUserInput(workingDir.path() + "/ScreenPlay.app/Contents/MacOS/ScreenPlayWallpaper").toLocalFile()); - -#endif - if (!QFileInfo::exists(m_globalVariables->widgetExecutablePath().toString())) { qInfo() << "widgetExecutablePath:" << m_globalVariables->widgetExecutablePath().toString(); qCritical("widget executable not found!"); diff --git a/ScreenPlayUtil/src/projectfile.cpp b/ScreenPlayUtil/src/projectfile.cpp index d0e899bd..b756d1cf 100644 --- a/ScreenPlayUtil/src/projectfile.cpp +++ b/ScreenPlayUtil/src/projectfile.cpp @@ -22,17 +22,6 @@ bool ProjectFile::init() if (obj.isEmpty()) return false; - // Required: - if (!obj.contains("file")) - return false; - file = obj.value("file").toString(); - - QFileInfo fileInfo(folder.path() + "/" + file); - if (!fileInfo.exists()) { - qCritical() << "Requested file:" << fileInfo.absoluteFilePath() << "does not exist!"; - return false; - } - if (!obj.contains("title")) return false; title = obj.value("title").toString(); @@ -47,6 +36,25 @@ bool ProjectFile::init() } type = typeParsed.value(); + // Required: + if (!obj.contains("file")) + return false; + file = obj.value("file").toString(); + + if (type == ScreenPlay::InstalledType::InstalledType::GodotWallpaper) { + QFileInfo fileInfo(folder.path() + "/wallpaper.tscn"); + if (!fileInfo.exists()) { + qCritical() << "Requested file:" << fileInfo.absoluteFilePath() << "does not exist!"; + return false; + } + } else { + QFileInfo fileInfo(folder.path() + "/" + file); + if (!fileInfo.exists()) { + qCritical() << "Requested file:" << fileInfo.absoluteFilePath() << "does not exist!"; + return false; + } + } + // Optional: if (!obj.contains("description")) description = obj.value("description").toString(); diff --git a/ScreenPlayWallpaper/Godot/CMakeLists.txt b/ScreenPlayWallpaper/Godot/CMakeLists.txt new file mode 100644 index 00000000..8cc9b540 --- /dev/null +++ b/ScreenPlayWallpaper/Godot/CMakeLists.txt @@ -0,0 +1,35 @@ +# SPDX-License-Identifier: LicenseRef-EliasSteurerTachiom OR AGPL-3.0-only + +add_subdirectory(GDExtention) + +# Disable for ci because it uses separate build step. +# if(NOT ${GITLAB_CI} AND ${GODOT_WALLPAPER}) +# # Normally I would directly call the Godot executable here but after hours of failure without any error messages, lets just call the +# # python script that we want to have anyway... +# find_package(Python COMPONENTS Interpreter) + +# message(STATUS "GODOT_WORKING_DIRECTORY = ${CMAKE_SOURCE_DIR}/Tools") +# message(STATUS "Generate Godot export:") +# message(STATUS "cd ${CMAKE_SOURCE_DIR}/Tools") +# message(STATUS "python build_godot.py --skip_if_exists --build_path '${CMAKE_RUNTIME_OUTPUT_DIRECTORY}'") + +# execute_process( +# COMMAND ${Python_EXECUTABLE} build_godot.py --skip_if_exists --build_path "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}" +# WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}/Tools" +# TIMEOUT 30 +# RESULT_VARIABLE GODOT_EXPORT_RESULT +# OUTPUT_VARIABLE GODOT_EXPORT_OUTPUT ENCODING UTF8) + +# if(GODOT_EXPORT_RESULT EQUAL "1") +# message(STATUS "Godot export skipped because it already exists.") +# elseif( +# NOT +# GODOT_EXPORT_RESULT +# EQUAL +# "0") +# message(STATUS "################################################") +# message(STATUS "Unable to export Map. Please run Tools/setup.py!") +# message(STATUS "################################################") +# message(FATAL_ERROR "ERROR: ${GODOT_EXPORT_OUTPUT}") +# endif() +# endif() diff --git a/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayGodotWallpaper.cpp b/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayGodotWallpaper.cpp index 2d99c2a8..3c5b5ddf 100644 --- a/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayGodotWallpaper.cpp +++ b/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayGodotWallpaper.cpp @@ -19,6 +19,14 @@ void ScreenPlayGodotWallpaper::_bind_methods() godot::ClassDB::bind_method(godot::D_METHOD("create_named_pipe"), &ScreenPlayGodotWallpaper::create_named_pipe); } +void ScreenPlayGodotWallpaper::hideFromTaskbar(HWND hwnd) +{ + LONG lExStyle = GetWindowLong(hwnd, GWL_EXSTYLE); + lExStyle |= WS_EX_TOOLWINDOW; // Add WS_EX_TOOLWINDOW + lExStyle &= ~WS_EX_APPWINDOW; // Remove WS_EX_APPWINDOW + SetWindowLong(hwnd, GWL_EXSTYLE, lExStyle); +} + ScreenPlayGodotWallpaper::ScreenPlayGodotWallpaper() { mID = ++sLastID; @@ -93,6 +101,7 @@ bool ScreenPlayGodotWallpaper::configureWindowGeometry() SetWindowLongPtr(m_hook->windowHandle, GWL_STYLE, WS_POPUPWINDOW); return true; } + bool ScreenPlayGodotWallpaper::init(int activeScreen) { auto* displayServer = godot::DisplayServer::get_singleton(); @@ -100,6 +109,7 @@ bool ScreenPlayGodotWallpaper::init(int activeScreen) HWND hwnd = reinterpret_cast(static_cast(handle_int)); m_hook = std::make_unique(); m_hook->windowHandle = hwnd; + hideFromTaskbar(hwnd); if (!configureWindowGeometry()) { return false; } diff --git a/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayGodotWallpaper.h b/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayGodotWallpaper.h index 2f6e4a25..82f63b2e 100644 --- a/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayGodotWallpaper.h +++ b/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayGodotWallpaper.h @@ -29,6 +29,7 @@ protected: private: bool configureWindowGeometry(); + void hideFromTaskbar(HWND hwnd); private: static int sInstanceCount; @@ -37,6 +38,6 @@ private: int mID; std::unique_ptr m_hook; HANDLE hPipe; - double time_since_last_read = 0.0; + double timesinceLastRead = 0.0; bool isPipeActive = false; }; diff --git a/ScreenPlayWallpaper/Godot/ScreenPlayGodot/ScreenPlayGodotWallpaper/ScreenPlayGodotWallpaper.gdextension b/ScreenPlayWallpaper/Godot/ScreenPlayGodot/ScreenPlayGodotWallpaper/ScreenPlayGodotWallpaper.gdextension index ffaa8919..918cdd9a 100644 --- a/ScreenPlayWallpaper/Godot/ScreenPlayGodot/ScreenPlayGodotWallpaper/ScreenPlayGodotWallpaper.gdextension +++ b/ScreenPlayWallpaper/Godot/ScreenPlayGodot/ScreenPlayGodotWallpaper/ScreenPlayGodotWallpaper.gdextension @@ -8,3 +8,6 @@ compatibility_minimum = 4.1 linux.debug.x86_64 = "lib/Linux-x86_64/libScreenPlayGodotWallpaper-d.so" macos.debug = "lib/Darwin-Universal/libScreenPlayGodotWallpaper-d.dylib" windows.debug.x86_64 = "lib/Windows-AMD64/ScreenPlayGodotWallpaper-d.dll" +linux.release.x86_64 = "lib/Linux-x86_64/libScreenPlayGodotWallpaper.so" +macos.release = "lib/Darwin-universal/libScreenPlayGodotWallpaper.dylib" +windows.release.x86_64 = "lib/Windows-AMD64/ScreenPlayGodotWallpaper.dll" \ No newline at end of file diff --git a/ScreenPlayWallpaper/Godot/ScreenPlayGodot/export_presets.cfg b/ScreenPlayWallpaper/Godot/ScreenPlayGodot/export_presets.cfg index 81e43f95..da086714 100644 --- a/ScreenPlayWallpaper/Godot/ScreenPlayGodot/export_presets.cfg +++ b/ScreenPlayWallpaper/Godot/ScreenPlayGodot/export_presets.cfg @@ -8,7 +8,7 @@ custom_features="" export_filter="all_resources" include_filter="" exclude_filter="" -export_path="../SP_export/export.exe" +export_path="./ScreenPlayWallpaperGodot.exe" encryption_include_filters="" encryption_exclude_filters="" encrypt_pck=false diff --git a/ScreenPlayWallpaper/Godot/ScreenPlayGodot/main.gd b/ScreenPlayWallpaper/Godot/ScreenPlayGodot/main.gd index 1752ef7d..9ec6211b 100644 --- a/ScreenPlayWallpaper/Godot/ScreenPlayGodot/main.gd +++ b/ScreenPlayWallpaper/Godot/ScreenPlayGodot/main.gd @@ -11,7 +11,12 @@ var checkWallpaperVisible = false func _ready(): # "C:\\Code\\cpp\\ScreenPlay\\ScreenPlay\\Content\\wallpaper_godot_fjord\\fjord.zip" - var path = "C:\\Code\\cpp\\ScreenPlay\\ScreenPlay\\Content\\wallpaper_godot_fjord\\fjord.zip" + var path + var args = OS.get_cmdline_args() + if( args.size() > 1): + parse_args() + + path = "C:\\Code\\cpp\\ScreenPlay\\ScreenPlay\\Content\\wallpaper_godot_fjord\\fjord.zip" var success = ProjectSettings.load_resource_pack (path) if success: var scene_resource = load("res://wallpaper.tscn") @@ -25,30 +30,26 @@ func _ready(): else: print("Failed to load the PCK file.") Engine.set_max_fps(24) - + func parse_args(): var args = OS.get_cmdline_args() - var i = 0 - while i < args.size(): - match args[i]: - "--ActiveScreensList": - i += 1 - activeScreensList = args[i].split(",") - for idx in range(activeScreensList.size()): - activeScreensList[idx] = int(activeScreensList[idx]) - "--ProjectPath": - i += 1 - projectPath = args[i] - "--appID": - i += 1 - appID = args[i] - "--volume": - i += 1 - volume = float(args[i]) - "--fillmode": - i += 1 - fillmode = int(args[i]) - "--CheckWallpaperVisible": - i += 1 - checkWallpaperVisible = args[i].to_lower() == "true" - i += 1 + + if args.size() < 7: # Adjust this number based on the expected number of arguments + print("Not enough arguments provided!") + return + + # Parse the arguments based on their expected positions + activeScreensList = args[0].split(",") + for idx in range(activeScreensList.size()): + activeScreensList[idx] = int(activeScreensList[idx]) + + projectPath = args[1] + appID = args[2] + volume = float(args[3]) + fillmode = int(args[4]) + # Assuming 'type' is not a global variable since it's not listed above + var type = args[5] # This might need further parsing depending on its expected format + checkWallpaperVisible = args[6].to_lower() == "true" + + # Print or use the parsed values as needed + print(activeScreensList, projectPath, appID, volume, fillmode, type, checkWallpaperVisible) diff --git a/ScreenPlayWallpaper/Godot/ScreenPlayGodot/project.godot b/ScreenPlayWallpaper/Godot/ScreenPlayGodot/project.godot index fedd515e..03a61fc6 100644 --- a/ScreenPlayWallpaper/Godot/ScreenPlayGodot/project.godot +++ b/ScreenPlayWallpaper/Godot/ScreenPlayGodot/project.godot @@ -26,6 +26,10 @@ window/size/initial_position_type=0 window/size/initial_position=Vector2i(9999999, 9999999) window/size/borderless=true +[filesystem] + +import/blender/enabled=false + [rendering] renderer/rendering_method="mobile" diff --git a/Tools/CMakeLists.txt b/Tools/CMakeLists.txt index fe0069a5..d141d3d8 100644 --- a/Tools/CMakeLists.txt +++ b/Tools/CMakeLists.txt @@ -9,3 +9,6 @@ add_custom_target( ${PROJECT_NAME} SOURCES ${FILES} ${PYTHON} COMMENT "Dummy target to list these files in the IDE") + +set(GODOT_PATH "${CMAKE_CURRENT_SOURCE_DIR}/Apps/Godot") +configure_file(${GODOT_PATH}/${GODOT_EDITOR_NAME} ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/ COPYONLY) diff --git a/Tools/build_godot.py b/Tools/build_godot.py new file mode 100644 index 00000000..7d69c3f4 --- /dev/null +++ b/Tools/build_godot.py @@ -0,0 +1,48 @@ +#!/usr/bin/python3 +import os +import util +import defines +from pathlib import Path +from execute_util import execute +import argparse + + +def main(): + # Parse build folder as arugment + + parser = argparse.ArgumentParser(description='Build K3000Map to the bin build folder: D:/Backup/Code/Qt/build_ScreenPlay_Qt_6.5.2_MSVC_Debug/bin') + parser.add_argument('--build_path', dest="build_path", type=str, help='Build folder') + parser.add_argument('--skip_if_exists', dest="skip_if_exists", default=False, action="store_true", help='Skips the build if the index.html file exists. This is used for faster CMake configure') + + args = parser.parse_args() + + if not args.build_path: + print("ERROR: Please specify the build folder") + print("py build_godot.py --build_path D:/Backup/Code/Qt/build_ScreenPlay_Qt_6.5.2_MSVC_Debug/bin/") + exit() + + # if build path exists and contains a index.html file, skip the build + if args.skip_if_exists: + screenPlayWallpaperGodot_executable = Path(args.build_path).joinpath(defines.SCREENPLAYWALLPAPER_GODOT_EXECUTABLE) + if screenPlayWallpaperGodot_executable.exists: + print(f"Skipping build, because {defines.SCREENPLAYWALLPAPER_GODOT_EXECUTABLE} exists") + exit(1) + + abs_build_path = args.build_path + if not os.path.isabs(args.build_path): + abs_build_path = os.path.abspath(os.path.join(os.getcwd(), args.build_path)) + + build_godot(abs_build_path) + +def build_godot(abs_build_path: str): + project_path = Path(util.repo_root_path()).joinpath("ScreenPlayWallpaper/Godot/ScreenPlayGodot").resolve() + apps_path = os.path.join(util.repo_root_path(),"Tools/Apps/Godot") + godot_executable = os.path.join(apps_path, defines.GODOT_EDITOR_EXECUTABLE) + screenPlayWallpaperGodot_executable = Path(abs_build_path).joinpath(defines.SCREENPLAYWALLPAPER_GODOT_EXECUTABLE).resolve() + export_command = f'"{godot_executable}" -v --headless --export-release "Windows Desktop" "{screenPlayWallpaperGodot_executable}"' + + # We get random error on successful export, so lets ignore it + execute(command=export_command,workingDir=project_path,ignore_error=True) + +if __name__ == "__main__": + main() diff --git a/Tools/defines.py b/Tools/defines.py index 326b1eb4..db47ad7a 100644 --- a/Tools/defines.py +++ b/Tools/defines.py @@ -28,4 +28,21 @@ QT_IFW_VERSION = "4.6" VCPKG_VERSION = "f06975f46d8c7a1dad916e1e997584f77ae0c34a" PYTHON_EXECUTABLE = "python" if sys.platform == "win32" else "python3" FFMPEG_VERSION = "5.0.1" + GODOT_VERSION = "4.1.1" +GODOT_RELEASE_TYPE = "stable" +if sys.platform == "win32": + SCREENPLAYWALLPAPER_GODOT_EXECUTABLE = "ScreenPlayWallpaperGodot.exe" + GODOT_EDITOR_EXECUTABLE = f"Godot_v{GODOT_VERSION}-{GODOT_RELEASE_TYPE}_win64.exe" + GODOT_TEMPLATES_PATH = os.path.join(os.getenv( + 'APPDATA'), f"Godot/templates/{GODOT_VERSION}.{GODOT_RELEASE_TYPE}") +elif sys.platform == "darwin": + SCREENPLAYWALLPAPER_GODOT_EXECUTABLE = "ScreenPlayWallpaperGodot.app" + GODOT_EDITOR_EXECUTABLE = f"Godot_v{GODOT_VERSION}-{GODOT_RELEASE_TYPE}_osx.universal" + GODOT_TEMPLATES_PATH = "TODO" +elif sys.platform == "linux": + SCREENPLAYWALLPAPER_GODOT_EXECUTABLE = "ScreenPlayWallpaperGodot" + GODOT_EDITOR_EXECUTABLE = f"Godot_v{GODOT_VERSION}-{GODOT_RELEASE_TYPE}_x11.64" + # /home/eli/.local/share/godot/templates/ + GODOT_TEMPLATES_PATH = os.path.join( + Path.home(), f".local/share/godot/templates/{GODOT_VERSION}.{GODOT_RELEASE_TYPE}") From 5d4cc8d4fc74347309191ae26abe04e0e8d9a945 Mon Sep 17 00:00:00 2001 From: Elias Steurer Date: Fri, 29 Sep 2023 11:47:51 +0200 Subject: [PATCH 006/101] Fix nativs file by removing ##NAMESPACE##:: --- .vscode/qt.natvis.xml | 276 +++++++++++++++++++++--------------------- 1 file changed, 138 insertions(+), 138 deletions(-) diff --git a/.vscode/qt.natvis.xml b/.vscode/qt.natvis.xml index 3dea4083..94c2260d 100644 --- a/.vscode/qt.natvis.xml +++ b/.vscode/qt.natvis.xml @@ -6,14 +6,14 @@ - + {val} val - + @@ -38,32 +38,32 @@ - + {d_ptr.d,na} d_ptr.d - + {{{data1,Xb}-{data2,Xb}-{data3,Xb}-{(data4[0]),nvoXb}{(data4[1]),nvoXb}-{(data4[2]),nvoXb}{(data4[3]),nvoXb}{(data4[4]),nvoXb}{(data4[5]),nvoXb}{(data4[6]),nvoXb}{(data4[7]),nvoXb}}} - + {val} val - + {_q_value} _q_value - + empty @@ -73,8 +73,8 @@ - - + + {{ x = {xp}, y = {yp} }} xp @@ -82,7 +82,7 @@ - + {{ x = {x1}, y = {y1}, width = {x2 - x1 + 1}, height = {y2 - y1 + 1} }} x1 @@ -92,7 +92,7 @@ - + {{ x = {xp}, y = {yp}, width = {w}, height = {h} }} xp @@ -102,8 +102,8 @@ - - + + {{ width = {wd}, height = {ht} }} wd @@ -111,8 +111,8 @@ - - + + {{ start point = {pt1}, end point = {pt2} }} @@ -131,7 +131,7 @@ - + {{ size={d->size} }} d->ref.atomic._q_value @@ -142,7 +142,7 @@ - + {{ size={d->size} }} @@ -160,7 +160,7 @@ - + {{ x = {xp}, y = {yp} }} xp @@ -168,7 +168,7 @@ - + {{ x = {xp}, y = {yp}, z = {zp} }} xp @@ -177,7 +177,7 @@ - + {{ x = {xp}, y = {yp}, z = {zp}, w = {wp} }} xp @@ -187,7 +187,7 @@ - + {{ m11 = {_m11}, m12 = {_m12}, m21 = {_m21}, m22 = {_m22}, ... }} @@ -201,7 +201,7 @@ - + {{ m11 = {m[0][0]}, m12 = {m[1][0]}, m13 = {m[2][0]}, m14 = {m[3][0]}, ... }} @@ -225,7 +225,7 @@ - + {{ horizontal = {static_cast<Policy>(bits.horPolicy)}, vertical = {static_cast<Policy>(bits.verPolicy)}, type = {ControlType(1 << bits.ctype)} }} @@ -256,7 +256,7 @@ - + {ucs,c} ucs,c @@ -265,7 +265,7 @@ - + "{(reinterpret_cast<unsigned short*>(d.ptr)),sub}" (reinterpret_cast<unsigned short*>(d.ptr)),sub @@ -277,7 +277,7 @@ - + {m_string,[m_size]} u"" {m_string->d.ptr+m_position,[m_size]} "" @@ -292,7 +292,7 @@ - + {m_data,[m_size]} m_data,[m_size] @@ -304,7 +304,7 @@ - + "{((reinterpret_cast<char*>(d.ptr))),sb}" ((reinterpret_cast<char*>(d.ptr))),sb @@ -316,7 +316,7 @@ - + @@ -344,11 +344,11 @@ - + {{ julian day = {jd} }} - + @@ -375,7 +375,7 @@ - + ({first}, {second}) first @@ -383,8 +383,8 @@ - - + + {{ size={d.size} }} @@ -394,7 +394,7 @@ - + {{ size={s} }} a @@ -405,8 +405,8 @@ - - + + {{ size={d.d->m._Mypair._Myval2._Myval2._Mysize} }} @@ -423,7 +423,7 @@ {second} - + {value} key @@ -431,7 +431,7 @@ - + {value->value} ({value->value}, {value->next->value}) ({value->value}, {value->next->value}, ...) @@ -444,8 +444,8 @@ - - + + @@ -602,15 +602,15 @@ - + {{ size={q_hash.d->size} }} q_hash - - + + @@ -620,115 +620,115 @@ (null) - QObject* + QObject* - {*(QMap<QString,QVariant>*) sharedDataStar()} - {*(QList<QVariant>*) sharedDataStar()} - {*(QHash<QString,QVariant>*) sharedDataStar()} - QVariantPair - {*(QList<QByteArray>*) sharedDataStar()} - {*(QList<QString>*) sharedDataStar()} + {*(QMap<QString,QVariant>*) sharedDataStar()} + {*(QList<QVariant>*) sharedDataStar()} + {*(QHash<QString,QVariant>*) sharedDataStar()} + QVariantPair + {*(QList<QByteArray>*) sharedDataStar()} + {*(QList<QString>*) sharedDataStar()} - {*(bool*) dataStar()} - {*(int*) dataStar()} - {*(unsigned int*) dataStar()} - {*(long long*) dataStar()} - {*(unsigned long long*) dataStar()} - {*(double*) dataStar()} - {*(void**) dataStar()} - {*(long*) dataStar()} - {*(short*) dataStar()} - {*(char*) dataStar()} - {*(char16_t*) dataStar()} - {*(char32_t*) dataStar()} - {*(unsigned long*) dataStar()} - {*(unsigned short*) dataStar()} - {*(unsigned char*) dataStar()} - {*(float*) dataStar()} - {*(signed char*) dataStar()} + {*(bool*) dataStar()} + {*(int*) dataStar()} + {*(unsigned int*) dataStar()} + {*(long long*) dataStar()} + {*(unsigned long long*) dataStar()} + {*(double*) dataStar()} + {*(void**) dataStar()} + {*(long*) dataStar()} + {*(short*) dataStar()} + {*(char*) dataStar()} + {*(char16_t*) dataStar()} + {*(char32_t*) dataStar()} + {*(unsigned long*) dataStar()} + {*(unsigned short*) dataStar()} + {*(unsigned char*) dataStar()} + {*(float*) dataStar()} + {*(signed char*) dataStar()} - {*(QChar*) sharedDataStar()} - {*(QString*) sharedDataStar()} - {*(QByteArray*) sharedDataStar()} - {*(QDate*) sharedDataStar()} - {*(QTime*) sharedDataStar()} - QDateTime - QUrl - QLocale - {*(QRect*) sharedDataStar()} - {*(QRectF*) sharedDataStar()} - {*(QSize*) sharedDataStar()} - {*(QSizeF*) sharedDataStar()} - {*(QLine*) sharedDataStar()} - {*(QLineF*) sharedDataStar()} - {*(QPoint*) sharedDataStar()} - {*(QPointF*) sharedDataStar()} - EasingCurve - Uuid - RegularExpression - QJsonValue - QJsonObject - QJsonArray - QJsonDocument - QCborValue - QCborArray - QCborMap - ModelIndex - QPersistentModelIndex + {*(QChar*) sharedDataStar()} + {*(QString*) sharedDataStar()} + {*(QByteArray*) sharedDataStar()} + {*(QDate*) sharedDataStar()} + {*(QTime*) sharedDataStar()} + QDateTime + QUrl + QLocale + {*(QRect*) sharedDataStar()} + {*(QRectF*) sharedDataStar()} + {*(QSize*) sharedDataStar()} + {*(QSizeF*) sharedDataStar()} + {*(QLine*) sharedDataStar()} + {*(QLineF*) sharedDataStar()} + {*(QPoint*) sharedDataStar()} + {*(QPointF*) sharedDataStar()} + EasingCurve + Uuid + RegularExpression + QJsonValue + QJsonObject + QJsonArray + QJsonDocument + QCborValue + QCborArray + QCborMap + ModelIndex + QPersistentModelIndex - QFont - QPixmap - QBrush - QColor - QPalette - QIcon - QImage - QPolygon - QRegion - QBitmap - QCursor - QKeySequence - QPen - QTextLength - QTextFormat - QTransform - QMatrix4x4 - QVector2D - QVector3D - QVector4D - QQuaternion - QPolygonF - QColorSpace + QFont + QPixmap + QBrush + QColor + QPalette + QIcon + QImage + QPolygon + QRegion + QBitmap + QCursor + QKeySequence + QPen + QTextLength + QTextFormat + QTransform + QMatrix4x4 + QVector2D + QVector3D + QVector4D + QQuaternion + QPolygonF + QColorSpace - QSizePolicy + QSizePolicy - ##NAMESPACE##::QMetaType::Type ({typeId()}) + QMetaType::Type ({typeId()}) - *(QString*) sharedDataStar() - *(QByteArray*) sharedDataStar() - *(QDate*) sharedDataStar() - *(QTime*) sharedDataStar() - *(QRect*) sharedDataStar() - *(QRectF*) sharedDataStar() - *(QSize*) sharedDataStar() - *(QSizeF*) sharedDataStar() - *(QLine*) sharedDataStar() - *(QLineF*) sharedDataStar() - *(QPoint*) sharedDataStar() - *(QPointF*) sharedDataStar() + *(QString*) sharedDataStar() + *(QByteArray*) sharedDataStar() + *(QDate*) sharedDataStar() + *(QTime*) sharedDataStar() + *(QRect*) sharedDataStar() + *(QRectF*) sharedDataStar() + *(QSize*) sharedDataStar() + *(QSizeF*) sharedDataStar() + *(QLine*) sharedDataStar() + *(QLineF*) sharedDataStar() + *(QPoint*) sharedDataStar() + *(QPointF*) sharedDataStar() - *(QMap<QString,QVariant>*) sharedDataStar() - *(QList<QVariant>*) sharedDataStar() - *(QHash<QString,QVariant>*) sharedDataStar() - *(QList<QByteArray>*) sharedDataStar() - *(QList<QString>*) sharedDataStar() + *(QMap<QString,QVariant>*) sharedDataStar() + *(QList<QVariant>*) sharedDataStar() + *(QHash<QString,QVariant>*) sharedDataStar() + *(QList<QByteArray>*) sharedDataStar() + *(QList<QString>*) sharedDataStar() From 0e05ec1188bac42aa6ce801b61838989f8404347 Mon Sep 17 00:00:00 2001 From: Elias Steurer Date: Fri, 29 Sep 2023 12:36:06 +0200 Subject: [PATCH 007/101] Add automatic project export to zip --- .../public/ScreenPlay/screenplaywallpaper.h | 3 + ScreenPlay/src/screenplaywallpaper.cpp | 63 ++++++++++++++++++- ScreenPlay/src/settings.cpp | 22 +++++-- 3 files changed, 81 insertions(+), 7 deletions(-) diff --git a/ScreenPlay/inc/public/ScreenPlay/screenplaywallpaper.h b/ScreenPlay/inc/public/ScreenPlay/screenplaywallpaper.h index fdc7c878..dae2af40 100644 --- a/ScreenPlay/inc/public/ScreenPlay/screenplaywallpaper.h +++ b/ScreenPlay/inc/public/ScreenPlay/screenplaywallpaper.h @@ -210,6 +210,9 @@ public slots: emit isConnectedChanged(m_isConnected); } +private: + bool exportGodotProject(const QString& absolutePath, int timeoutMilliseconds = 30000); + private: const std::shared_ptr m_globalVariables; std::unique_ptr m_connection; diff --git a/ScreenPlay/src/screenplaywallpaper.cpp b/ScreenPlay/src/screenplaywallpaper.cpp index 808f3a40..086f9514 100644 --- a/ScreenPlay/src/screenplaywallpaper.cpp +++ b/ScreenPlay/src/screenplaywallpaper.cpp @@ -52,7 +52,7 @@ ScreenPlayWallpaper::ScreenPlayWallpaper(const QVector& screenNumber, if (auto obj = ScreenPlayUtil::openJsonFileToObject(absolutePath + "/project.json")) { if (obj->contains("properties")) projectSettingsListModelProperties = obj->value("properties").toObject(); - } + } } else { projectSettingsListModelProperties = properties; } @@ -92,6 +92,9 @@ ScreenPlayWallpaper::ScreenPlayWallpaper(const QVector& screenNumber, if (m_type != InstalledType::InstalledType::GodotWallpaper) { m_appArgumentsList.append(" --disable-features=HardwareMediaKeyHandling"); } + if (m_type == InstalledType::InstalledType::GodotWallpaper) { + exportGodotProject(m_absolutePath); + } } bool ScreenPlayWallpaper::start() @@ -108,6 +111,7 @@ bool ScreenPlayWallpaper::start() // to display the original wallpaper. const bool success = m_process.startDetached(); qInfo() << "Starting ScreenPlayWallpaper detached: " << (success ? "success" : "failed!") << m_process.program(); + qInfo() << m_appArgumentsList; if (!success) { qInfo() << m_process.program() << m_appArgumentsList; emit error(QString("Could not start Wallpaper: " + m_process.errorString())); @@ -289,6 +293,63 @@ bool ScreenPlayWallpaper::replace( return success; } +bool ScreenPlayWallpaper::exportGodotProject(const QString& absolutePath, int timeoutMilliseconds) +{ + // Prepare the Godot export command + const QList godotCmd = { "--export-pack", "--headless", "Windows Desktop", "project.zip" }; + + // Create QProcess instance to run the command + QProcess process; + + // Set the working directory to the given absolute path + process.setWorkingDirectory(absolutePath); + process.setProgram(m_globalVariables->godotEditorExecutablePath().toString()); + // Start the Godot export process + process.setArguments(godotCmd); + if (!process.startDetached()) { + qCritical() << "Godot failed to start."; + return false; + } + // Wait for the process to finish or timeout + if (!process.waitForFinished(timeoutMilliseconds)) { + qCritical() << "Godot export process timed out or failed to start."; + return false; + } + + // Capture the standard output and error + QString stdoutString = process.readAllStandardOutput(); + QString stderrString = process.readAllStandardError(); + + // If you want to print the output to the console: + if (!stdoutString.isEmpty()) + qDebug() << "Output:" << stdoutString; + if (!stderrString.isEmpty()) + qDebug() << "Error:" << stderrString; + + // Check for errors + if (process.exitStatus() != QProcess::NormalExit || process.exitCode() != 0) { + qCritical() << "Failed to export Godot project. Error:" << process.errorString(); + return false; + } + + // Check if the project.zip file was created + QString zipPath = QDir(absolutePath).filePath("project.zip"); + if (!QFile::exists(zipPath)) { + qCritical() << "Expected export file (project.zip) was not created."; + return false; + } + + // Optional: Verify if the .zip file is valid + // (A complete verification would involve extracting the file and checking its contents, + // but for simplicity, we're just checking its size here) + QFileInfo zipInfo(zipPath); + if (zipInfo.size() <= 0) { + qCritical() << "The exported project.zip file seems to be invalid."; + return false; + } + + return true; +} } #include "moc_screenplaywallpaper.cpp" diff --git a/ScreenPlay/src/settings.cpp b/ScreenPlay/src/settings.cpp index 59e9560b..69bfd163 100644 --- a/ScreenPlay/src/settings.cpp +++ b/ScreenPlay/src/settings.cpp @@ -161,8 +161,8 @@ void Settings::setupWidgetAndWindowPaths() m_globalVariables->setWidgetExecutablePath(QUrl(workingDir.path() + "/ScreenPlayWidget" + ScreenPlayUtil::executableBinEnding())); m_globalVariables->setWallpaperExecutablePath(QUrl(workingDir.path() + "/ScreenPlayWallpaper" + ScreenPlayUtil::executableBinEnding())); m_globalVariables->setGodotWallpaperExecutablePath(QUrl(workingDir.path() + "/ScreenPlayWallpaperGodot" + ScreenPlayUtil::executableBinEnding())); - m_globalVariables->setGodotEditorExecutablePath(QUrl(workingDir.path() + "/Godot" + ScreenPlayUtil::executableBinEnding())); - + const auto godotEditorName = "Godot_" + godotVersion + "-stable_win64.exe"; + m_globalVariables->setGodotEditorExecutablePath(QUrl(workingDir.path() + "/" + godotEditorName)); } else if (osType == "osx") { // ScreenPlayTest is not bundled in an .app so the working directory // the the same as the executable. @@ -175,22 +175,32 @@ void Settings::setupWidgetAndWindowPaths() m_globalVariables->setWidgetExecutablePath(QUrl::fromUserInput(workingDir.path() + basePath + "ScreenPlayWidget").toLocalFile()); m_globalVariables->setWallpaperExecutablePath(QUrl::fromUserInput(workingDir.path() + basePath + "ScreenPlayWallpaper").toLocalFile()); m_globalVariables->setGodotWallpaperExecutablePath(QUrl(workingDir.path() + basePath + "ScreenPlayWallpaperGodot").toLocalFile()); - m_globalVariables->setGodotEditorExecutablePath(QUrl(workingDir.path() + basePath + "Godot").toLocalFile()); + const auto godotEditorName = "Godot_" + godotVersion + "-stable_osx.universal"; + m_globalVariables->setGodotEditorExecutablePath(QUrl(workingDir.path() + "/" + godotEditorName)); } else if (osType == "linux") { m_globalVariables->setWidgetExecutablePath(QUrl(workingDir.path() + "/ScreenPlayWidget")); m_globalVariables->setWallpaperExecutablePath(QUrl(workingDir.path() + "/ScreenPlayWallpaper")); m_globalVariables->setGodotWallpaperExecutablePath(QUrl(workingDir.path() + "/ScreenPlayWallpaperGodot")); - m_globalVariables->setGodotEditorExecutablePath(QUrl(workingDir.path() + "/Godot")); + const auto godotEditorName = "Godot_" + godotVersion + "-stable_x11.64"; + m_globalVariables->setGodotEditorExecutablePath(QUrl(workingDir.path() + "/" + godotEditorName)); } else { qFatal("OS not supported."); } + if (!QFileInfo::exists(m_globalVariables->godotWallpaperExecutablePath().toString())) { + qInfo() << "godotWallpaperExecutablePath:" << m_globalVariables->godotWallpaperExecutablePath(); + qCritical("Godot Wallpaper not found"); + } + if (!QFileInfo::exists(m_globalVariables->godotEditorExecutablePath().toString())) { + qInfo() << "godotEditorExecutablePath :" << m_globalVariables->godotEditorExecutablePath(); + qCritical("Godot Editor not found"); + } if (!QFileInfo::exists(m_globalVariables->widgetExecutablePath().toString())) { - qInfo() << "widgetExecutablePath:" << m_globalVariables->widgetExecutablePath().toString(); + qInfo() << "widgetExecutablePath:" << m_globalVariables->widgetExecutablePath(); qCritical("widget executable not found!"); } if (!QFileInfo::exists(m_globalVariables->wallpaperExecutablePath().toString())) { - qInfo() << "wallpaperExecutablePath:" << m_globalVariables->wallpaperExecutablePath().toString(); + qInfo() << "wallpaperExecutablePath:" << m_globalVariables->wallpaperExecutablePath(); qCritical("wallpaper executable not found!"); } } From a596ad6337d4f847a315a6233d61c86bf283f59b Mon Sep 17 00:00:00 2001 From: Elias Steurer Date: Thu, 5 Oct 2023 13:57:25 +0200 Subject: [PATCH 008/101] Add args parsing Add access to ScreenPlay object to the fjord example --- Content/wallpaper_godot_fjord/Action.gd | 26 +++ Content/wallpaper_godot_fjord/Path3D.gd | 6 +- .../wallpaper_godot_fjord/preview.png.import | 34 +++ Content/wallpaper_godot_fjord/wallpaper.tscn | 19 +- ScreenPlay/inc/public/ScreenPlay/settings.h | 2 +- ScreenPlay/src/screenplaywallpaper.cpp | 6 +- .../src/ScreenPlayGodotWallpaper.cpp | 214 +++++++++++++----- .../src/ScreenPlayGodotWallpaper.h | 31 ++- .../Godot/ScreenPlayGodot/main.gd | 91 +++++--- .../Godot/ScreenPlayGodot/project.godot | 5 + 10 files changed, 328 insertions(+), 106 deletions(-) create mode 100644 Content/wallpaper_godot_fjord/Action.gd create mode 100644 Content/wallpaper_godot_fjord/preview.png.import diff --git a/Content/wallpaper_godot_fjord/Action.gd b/Content/wallpaper_godot_fjord/Action.gd new file mode 100644 index 00000000..b43a03cf --- /dev/null +++ b/Content/wallpaper_godot_fjord/Action.gd @@ -0,0 +1,26 @@ +extends Node + +# Reference to the PathFollow node +@onready var path_follow = $Path3D/PathFollow3D +@onready var label = $Label3D +var debug_path +var screenplaywallpaper +var appID = "" +# Speed of the movement along the path +var speed = 0.8 + + +func _process(delta): + # Update the offset to move the object along the path + path_follow.progress += speed * delta + + # Loop back to the start if we've reached the end of the path + if path_follow.progress >= 18.81: + path_follow.progress = 0.0 + + screenplaywallpaper = get_node("/root/Wallpaper/ScreenPlayGodotWallpaper") + if screenplaywallpaper: + appID = screenplaywallpaper.get_appID() + else: + appID = "404" + label.text = "Godot Wallpaper\n" + Time.get_time_string_from_system() + "\nAppID: " + appID diff --git a/Content/wallpaper_godot_fjord/Path3D.gd b/Content/wallpaper_godot_fjord/Path3D.gd index e9e0eac8..fd4a5377 100644 --- a/Content/wallpaper_godot_fjord/Path3D.gd +++ b/Content/wallpaper_godot_fjord/Path3D.gd @@ -2,14 +2,16 @@ extends Path3D # Reference to the PathFollow node @onready var path_follow = $PathFollow3D +@onready var path_follow = # Speed of the movement along the path -var speed = 0.4 +var speed = 0.8 + func _process(delta): # Update the offset to move the object along the path path_follow.progress += speed * delta # Loop back to the start if we've reached the end of the path - if path_follow.progress > 10: + if path_follow.progress >= 18.81: path_follow.progress = 0.0 diff --git a/Content/wallpaper_godot_fjord/preview.png.import b/Content/wallpaper_godot_fjord/preview.png.import new file mode 100644 index 00000000..9c874ec1 --- /dev/null +++ b/Content/wallpaper_godot_fjord/preview.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b50wk45iaak85" +path="res://.godot/imported/preview.png-b4838d23de224c84c7c9b5588b6708a6.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://preview.png" +dest_files=["res://.godot/imported/preview.png-b4838d23de224c84c7c9b5588b6708a6.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/Content/wallpaper_godot_fjord/wallpaper.tscn b/Content/wallpaper_godot_fjord/wallpaper.tscn index 6d7b5c93..a9c57760 100644 --- a/Content/wallpaper_godot_fjord/wallpaper.tscn +++ b/Content/wallpaper_godot_fjord/wallpaper.tscn @@ -1,35 +1,38 @@ -[gd_scene load_steps=3 format=3 uid="uid://cxlfu6y6b3l5o"] +[gd_scene load_steps=3 format=3 uid="uid://dp883pjlm7gk8"] -[ext_resource type="Script" path="res://Path3D.gd" id="1_76sq1"] +[ext_resource type="Script" path="res://Action.gd" id="1_p251a"] [sub_resource type="Curve3D" id="Curve3D_8adw4"] +bake_interval = 2.4 _data = { -"points": PackedVector3Array(0, 0, 0, 0, 0, 0, -0.820513, 0.281883, 0.141011, 0, 0, 0, 0, 0, 0, -0.1735, 0.399895, -0.280881, 0, 0, 0, 0, 0, 0, 0.510953, 0.524736, -0.727188, 0, 0, 0, 0, 0, 0, 2.26923, 2.38419e-07, -1.10178, 0, 0, 0, 0, 0, 0, 2.53764, -0.832639, -0.471864, 0, 0, 0, 0, 0, 0, 0.836093, -1.07116, 0.572063, 0, 0, 0, 0, 0, 0, -0.416085, -0.732896, 0.871186, 0, 0, 0, 0, 0, 0, -0.809435, -0.0867326, 0.472196), +"points": PackedVector3Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.82099, -0.143238, -1.14419, 0, 0, 0, 0, 0, 0, -0.837192, 0.205974, -1.5077, 0, 0, 0, 0, 0, 0, 2.26923, 2.38419e-07, -1.10178, 0, 0, 0, 0, 0, 0, 3.0406, -0.00296563, 0.345948, 0, 0, 0, 0, 0, 0, 0.398976, -0.117547, 1.42909, 0, 0, 0, 0, 0, 0, -2.74903, -0.071628, 0.795209, 0, 0, 0, 0, 0, 0, 0, 0, 0), "tilts": PackedFloat32Array(0, 0, 0, 0, 0, 0, 0, 0) } point_count = 8 [node name="Node3D" type="Node3D"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.0123152, 0) +script = ExtResource("1_p251a") [node name="Camera3D" type="Camera3D" parent="."] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.04825, 4.0185) [node name="CSGBox3D" type="CSGBox3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.093655, 0) -size = Vector3(5.24075, 0.0764128, 3.72353) +transform = Transform3D(3.5774, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.223695, 0) +size = Vector3(7.59119, 0.0764128, 5.75358) [node name="Path3D" type="Path3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.1394, 0, 0.705414) curve = SubResource("Curve3D_8adw4") -script = ExtResource("1_76sq1") [node name="PathFollow3D" type="PathFollow3D" parent="Path3D"] -transform = Transform3D(0.546201, -0.126512, -0.828045, 7.45058e-09, 0.988529, -0.151031, 0.837654, 0.0824935, 0.539936, -0.820513, 0.281883, 0.141011) +transform = Transform3D(0.375854, -0.0435545, 0.925652, -3.72525e-09, 0.998895, 0.0470007, -0.926666, -0.0176657, 0.375443, 0, 0, 0) [node name="OmniLight3D" type="OmniLight3D" parent="Path3D/PathFollow3D"] light_color = Color(0.921569, 0.52549, 0.32549, 1) [node name="Label3D" type="Label3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.391226, -1.25994) +transform = Transform3D(0.997247, 0, 0, 0, 0.997247, 0, 0, 0, 0.997247, 0.030704, 1.238, -1.40679) shaded = true text = "GODO WALLPAPER" font_size = 126 diff --git a/ScreenPlay/inc/public/ScreenPlay/settings.h b/ScreenPlay/inc/public/ScreenPlay/settings.h index 85edc6a4..6c6cbd97 100644 --- a/ScreenPlay/inc/public/ScreenPlay/settings.h +++ b/ScreenPlay/inc/public/ScreenPlay/settings.h @@ -470,7 +470,7 @@ private: bool m_checkWallpaperVisible { false }; bool m_silentStart { false }; bool m_anonymousTelemetry { true }; - bool m_showDefaultContent { false }; + bool m_showDefaultContent { true }; QString m_decoder; ScreenPlay::FillMode::FillMode m_videoFillMode { ScreenPlay::FillMode::FillMode::Cover }; diff --git a/ScreenPlay/src/screenplaywallpaper.cpp b/ScreenPlay/src/screenplaywallpaper.cpp index 086f9514..9eb0afe0 100644 --- a/ScreenPlay/src/screenplaywallpaper.cpp +++ b/ScreenPlay/src/screenplaywallpaper.cpp @@ -306,10 +306,8 @@ bool ScreenPlayWallpaper::exportGodotProject(const QString& absolutePath, int ti process.setProgram(m_globalVariables->godotEditorExecutablePath().toString()); // Start the Godot export process process.setArguments(godotCmd); - if (!process.startDetached()) { - qCritical() << "Godot failed to start."; - return false; - } + process.start(); + // Wait for the process to finish or timeout if (!process.waitForFinished(timeoutMilliseconds)) { qCritical() << "Godot export process timed out or failed to start."; diff --git a/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayGodotWallpaper.cpp b/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayGodotWallpaper.cpp index 3c5b5ddf..b6aed0ef 100644 --- a/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayGodotWallpaper.cpp +++ b/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayGodotWallpaper.cpp @@ -9,14 +9,30 @@ #include "godot_cpp/variant/utility_functions.hpp" //// ScreenPlayWallpaper - +using namespace godot; int ScreenPlayGodotWallpaper::sInstanceCount = 0; int ScreenPlayGodotWallpaper::sLastID = 0; void ScreenPlayGodotWallpaper::_bind_methods() { - godot::ClassDB::bind_method(godot::D_METHOD("init"), &ScreenPlayGodotWallpaper::init); - godot::ClassDB::bind_method(godot::D_METHOD("create_named_pipe"), &ScreenPlayGodotWallpaper::create_named_pipe); + UtilityFunctions::print("ScreenPlayGodotWallpaper _bind_methods"); + ClassDB::bind_method(godot::D_METHOD("init"), &ScreenPlayGodotWallpaper::init); + ClassDB::bind_method(godot::D_METHOD("connect_to_named_pipe"), &ScreenPlayGodotWallpaper::connect_to_named_pipe); + + ClassDB::bind_method(godot::D_METHOD("get_activeScreensList"), &ScreenPlayGodotWallpaper::get_activeScreensList); + ClassDB::bind_method(godot::D_METHOD("set_activeScreensList", "screens"), &ScreenPlayGodotWallpaper::set_activeScreensList); + + ClassDB::bind_method(godot::D_METHOD("get_projectPath"), &ScreenPlayGodotWallpaper::get_projectPath); + ClassDB::bind_method(godot::D_METHOD("set_projectPath", "path"), &ScreenPlayGodotWallpaper::set_projectPath); + + ClassDB::bind_method(godot::D_METHOD("get_appID"), &ScreenPlayGodotWallpaper::get_appID); + ClassDB::bind_method(godot::D_METHOD("set_appID", "id"), &ScreenPlayGodotWallpaper::set_appID); + + ClassDB::bind_method(godot::D_METHOD("get_volume"), &ScreenPlayGodotWallpaper::get_volume); + ClassDB::bind_method(godot::D_METHOD("set_volume", "volume"), &ScreenPlayGodotWallpaper::set_volume); + + ClassDB::bind_method(godot::D_METHOD("get_checkWallpaperVisible"), &ScreenPlayGodotWallpaper::get_checkWallpaperVisible); + ClassDB::bind_method(godot::D_METHOD("set_checkWallpaperVisible", "visible"), &ScreenPlayGodotWallpaper::set_checkWallpaperVisible); } void ScreenPlayGodotWallpaper::hideFromTaskbar(HWND hwnd) @@ -32,17 +48,17 @@ ScreenPlayGodotWallpaper::ScreenPlayGodotWallpaper() mID = ++sLastID; sInstanceCount++; - godot::UtilityFunctions::print( - "ScreenPlayWallpaper ", godot::itos(mID), - " created, current instance count: ", godot::itos(sInstanceCount)); + UtilityFunctions::print( + "ScreenPlayWallpaper ", itos(mID), + " created, current instance count: ", itos(sInstanceCount)); } ScreenPlayGodotWallpaper::~ScreenPlayGodotWallpaper() { sInstanceCount--; - godot::UtilityFunctions::print( - "ScreenPlayWallpaper ", godot::itos(mID), - " destroyed, current instance count: ", godot::itos(sInstanceCount)); + UtilityFunctions::print( + "ScreenPlayWallpaper ", itos(mID), + " destroyed, current instance count: ", itos(sInstanceCount)); // Somehow this gets called at editor startup // so just return if not initialized @@ -56,38 +72,38 @@ ScreenPlayGodotWallpaper::~ScreenPlayGodotWallpaper() ShowWindow(m_hook->windowHandleWorker, SW_SHOW); } // Destructor - if (hPipe != INVALID_HANDLE_VALUE) { - CloseHandle(hPipe); + if (m_hPipe != INVALID_HANDLE_VALUE) { + CloseHandle(m_hPipe); } } void ScreenPlayGodotWallpaper::_process(double delta) { - if (!isPipeActive) { - return; - } - timesinceLastRead += delta; - // 0.05 seconds = 50ms - if (timesinceLastRead >= 0.05) { - godot::String data = read_from_pipe(); - if (!data.is_empty()) { - godot::UtilityFunctions::print("Received data: " + data); - } - timesinceLastRead = 0.0; - } + // if (!isPipeActive) { + // return; + // } + // timesinceLastRead += delta; + // // 0.05 seconds = 50ms + // if (timesinceLastRead >= 0.05) { + // String data = read_from_pipe(); + // if (!data.is_empty()) { + // UtilityFunctions::print("Received data: " + data); + // } + // timesinceLastRead = 0.0; + // } } bool ScreenPlayGodotWallpaper::configureWindowGeometry() { if (!m_hook->searchWorkerWindowToParentTo()) { - godot::UtilityFunctions::print("No worker window found"); + UtilityFunctions::print("No worker window found"); return false; } RECT rect {}; if (!GetWindowRect(m_hook->windowHandleWorker, &rect)) { - godot::UtilityFunctions::print("Unable to get WindoeRect from worker"); + UtilityFunctions::print("Unable to get WindoeRect from worker"); return false; } @@ -104,7 +120,7 @@ bool ScreenPlayGodotWallpaper::configureWindowGeometry() bool ScreenPlayGodotWallpaper::init(int activeScreen) { - auto* displayServer = godot::DisplayServer::get_singleton(); + auto* displayServer = DisplayServer::get_singleton(); int64_t handle_int = displayServer->window_get_native_handle(godot::DisplayServer::HandleType::WINDOW_HANDLE, activeScreen); HWND hwnd = reinterpret_cast(static_cast(handle_int)); m_hook = std::make_unique(); @@ -126,56 +142,52 @@ bool ScreenPlayGodotWallpaper::init(int activeScreen) const int x = monitors.rcMonitors[activeScreen].left + m_hook->zeroPoint.x + borderOffset; // Assuming m_zeroPoint is a POINT struct const int y = monitors.rcMonitors[activeScreen].top + m_hook->zeroPoint.y + borderOffset; - godot::String output = "Setup window activeScreen: " + godot::itos(activeScreen) + " scaling: " + godot::rtos(scaling) + " x: " + godot::itos(x) + " y: " + godot::itos(y) + " width: " + godot::itos(width) + " height: " + godot::itos(height); - godot::UtilityFunctions::print(output); + String output = "Setup window activeScreen: " + itos(activeScreen) + " scaling: " + rtos(scaling) + " x: " + itos(x) + " y: " + itos(y) + " width: " + itos(width) + " height: " + itos(height); + UtilityFunctions::print(output); // Must be called twice for some reason when window has scaling... if (!SetWindowPos(m_hook->windowHandle, nullptr, x, y, width, height, SWP_HIDEWINDOW)) { - godot::UtilityFunctions::print("Could not set window pos"); + UtilityFunctions::print("Could not set window pos"); return false; } if (!SetWindowPos(m_hook->windowHandle, nullptr, x, y, width, height, SWP_HIDEWINDOW)) { - godot::UtilityFunctions::print("Could not set window pos 2"); + UtilityFunctions::print("Could not set window pos 2"); return false; } if (SetParent(m_hook->windowHandle, m_hook->windowHandleWorker) == nullptr) { - godot::UtilityFunctions::print("Could not attach to parent window"); + UtilityFunctions::print("Could not attach to parent window"); return false; } displayServer->window_set_size(godot::Vector2((real_t)width, (real_t)height)); ShowWindow(m_hook->windowHandle, SW_SHOW); + const std::string windowTitle = "ScreenPlayWallpaperGodot"; + SetWindowText(hwnd, windowTitle.c_str()); return true; } -bool ScreenPlayGodotWallpaper::create_named_pipe(godot::String pipeName) +bool ScreenPlayGodotWallpaper::connect_to_named_pipe() { - godot::String fullPipeName = "\\\\.\\pipe\\" + pipeName; + String pipeName = "ScreenPlay"; + String fullPipeName = "\\\\.\\pipe\\" + pipeName; std::wstring wPipeName = std::wstring(fullPipeName.wide_string()); - hPipe = CreateNamedPipeW( + m_hPipe = CreateFileW( wPipeName.c_str(), - PIPE_ACCESS_DUPLEX, - PIPE_TYPE_BYTE | PIPE_READMODE_BYTE | PIPE_WAIT, - 1, - 1024 * 16, - 1024 * 16, - NMPWAIT_USE_DEFAULT_WAIT, + GENERIC_READ | GENERIC_WRITE, + 0, + NULL, + OPEN_EXISTING, + 0, NULL); - if (hPipe == INVALID_HANDLE_VALUE) { - isPipeActive = false; - godot::UtilityFunctions::print("CreateNamedPipe failed, error code: " + godot::String::num_int64(GetLastError())); + if (m_hPipe == INVALID_HANDLE_VALUE) { + m_isPipeActive = false; + UtilityFunctions::print("CreateFile failed, error code: " + String::num_int64(GetLastError())); return false; } - if (ConnectNamedPipe(hPipe, NULL) == FALSE) { - CloseHandle(hPipe); - godot::UtilityFunctions::print("ConnectNamedPipe failed, error code: " + godot::String::num_int64(GetLastError())); - isPipeActive = false; - return false; - } - isPipeActive = true; + m_isPipeActive = true; return true; } @@ -183,14 +195,108 @@ godot::String ScreenPlayGodotWallpaper::read_from_pipe() { char buffer[128]; DWORD bytesRead; - godot::String result; + String result; - if (ReadFile(hPipe, buffer, sizeof(buffer) - 1, &bytesRead, NULL)) { + if (ReadFile(m_hPipe, buffer, sizeof(buffer) - 1, &bytesRead, NULL)) { buffer[bytesRead] = '\0'; - result = godot::String(buffer); + result = String(buffer); } else { - godot::UtilityFunctions::print("ReadFile from pipe failed, error code: " + godot::String::num_int64(GetLastError())); + UtilityFunctions::print("ReadFile from pipe failed, error code: " + String::num_int64(GetLastError())); } return result; } + +void ScreenPlayGodotWallpaper::connected() +{ + + // Ensure you have valid appID and type + if (m_appID.is_empty()) { + UtilityFunctions::print("Unable to connect with empty: appid"); + emit_signal("disconnected"); + return; + } + + // Construct welcome message and write to the named pipe + godot::String welcomeMessage = godot::String("appID=") + m_appID + ",godotWallpaper"; + + std::string stdMessage = welcomeMessage.utf8().get_data(); + DWORD bytesWritten; + WriteFile(m_hPipe, stdMessage.c_str(), static_cast(stdMessage.size()), &bytesWritten, NULL); + + if (bytesWritten != stdMessage.size()) { + emit_signal("disconnected"); + return; + } +} + +void ScreenPlayGodotWallpaper::messageReceived(const std::string& key, const std::string& value) +{ + try { + if (key == "volume") { + m_volume = std::stof(value); + return; + } + if (key == "appID") { + m_appID = godot::String(value.c_str()); + return; + } + + if (key == "projectPath") { + m_projectPath = godot::String(value.c_str()); + return; + } + + // If none of the keys match + // Assuming sceneValueReceived is a signal you've defined + emit_signal("sceneValueReceived", key.c_str(), value.c_str()); + + } catch (const std::invalid_argument& ia) { + // Invalid argument passed to stof/stoi. Handle error as necessary. + std::cerr << "Invalid argument: " << ia.what() << std::endl; + } catch (const std::out_of_range& oor) { + // Converted number is out of range for float/int. Handle error as necessary. + std::cerr << "Out of range: " << oor.what() << std::endl; + } +} +void ScreenPlayGodotWallpaper::set_checkWallpaperVisible(bool visible) +{ + m_checkWallpaperVisible = visible; +} +bool ScreenPlayGodotWallpaper::get_checkWallpaperVisible() const +{ + return m_checkWallpaperVisible; +} + +void ScreenPlayGodotWallpaper::set_volume(float vol) +{ + m_volume = vol; +} +float ScreenPlayGodotWallpaper::get_volume() const +{ + return m_volume; +} +void ScreenPlayGodotWallpaper::set_appID(const godot::String& id) +{ + m_appID = id; +} +godot::String ScreenPlayGodotWallpaper::get_appID() const +{ + return m_appID; +} +void ScreenPlayGodotWallpaper::set_projectPath(const godot::String& path) +{ + m_projectPath = path; +} +godot::String ScreenPlayGodotWallpaper::get_projectPath() const +{ + return m_projectPath; +} +void ScreenPlayGodotWallpaper::set_activeScreensList(const godot::PackedInt64Array& screens) +{ + m_activeScreensList = screens; +} +PackedInt64Array ScreenPlayGodotWallpaper::get_activeScreensList() const +{ + return m_activeScreensList; +} diff --git a/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayGodotWallpaper.h b/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayGodotWallpaper.h index 82f63b2e..c852c95f 100644 --- a/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayGodotWallpaper.h +++ b/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayGodotWallpaper.h @@ -3,11 +3,14 @@ #include "godot_cpp/classes/control.hpp" #include "godot_cpp/classes/global_constants.hpp" +#include "godot_cpp/classes/timer.hpp" #include "godot_cpp/classes/viewport.hpp" #include "godot_cpp/core/binder_common.hpp" #include "godot_cpp/variant/string.hpp" #include +#include +#include #include "ScreenPlayGodotWallpaper.h" #include "windowshook.h" @@ -20,9 +23,22 @@ public: ~ScreenPlayGodotWallpaper() override; bool init(int activeScreen); - bool create_named_pipe(godot::String pipeName); + bool connect_to_named_pipe(); godot::String read_from_pipe(); void _process(double delta); + void messageReceived(const std::string& key, const std::string& value); + + void connected(); + godot::PackedInt64Array get_activeScreensList() const; + void set_activeScreensList(const godot::PackedInt64Array& screens); + godot::String get_projectPath() const; + void set_projectPath(const godot::String& path); + godot::String get_appID() const; + void set_appID(const godot::String& id); + float get_volume() const; + void set_volume(float vol); + bool get_checkWallpaperVisible() const; + void set_checkWallpaperVisible(bool visible); protected: static void _bind_methods(); @@ -36,8 +52,15 @@ private: static int sLastID; int mID; + godot::String m_appID = ""; + godot::String m_projectPath = ""; std::unique_ptr m_hook; - HANDLE hPipe; - double timesinceLastRead = 0.0; - bool isPipeActive = false; + HANDLE m_hPipe; + double m_timesinceLastRead = 0.0; + bool m_isPipeActive = false; + + godot::PackedInt64Array m_activeScreensList; + float m_volume = 0.0; + bool m_checkWallpaperVisible = false; + godot::Timer* m_pingAliveTimer = nullptr; }; diff --git a/ScreenPlayWallpaper/Godot/ScreenPlayGodot/main.gd b/ScreenPlayWallpaper/Godot/ScreenPlayGodot/main.gd index 9ec6211b..91b00124 100644 --- a/ScreenPlayWallpaper/Godot/ScreenPlayGodot/main.gd +++ b/ScreenPlayWallpaper/Godot/ScreenPlayGodot/main.gd @@ -1,55 +1,80 @@ extends Node3D -@onready var screen_play_wallpaper = $ScreenPlayGodotWallpaper +@onready var screen_play_wallpaper = $ScreenPlayGodotWallpaper -var activeScreensList = [] -var projectPath = "" -var appID = "" -var volume = 0.0 -var fillmode = 0 -var checkWallpaperVisible = false - -func _ready(): - # "C:\\Code\\cpp\\ScreenPlay\\ScreenPlay\\Content\\wallpaper_godot_fjord\\fjord.zip" - var path - var args = OS.get_cmdline_args() - if( args.size() > 1): - parse_args() - path = "C:\\Code\\cpp\\ScreenPlay\\ScreenPlay\\Content\\wallpaper_godot_fjord\\fjord.zip" - var success = ProjectSettings.load_resource_pack (path) +func _ready(): + if not screen_play_wallpaper: + printerr("ERROR INVALID SCREENPLAY OBJECT") + return + + var path + var args = OS.get_cmdline_args() + if args.size() > 1: + if not parse_args(): + get_tree().quit() + return + #screen_play_wallpaper.set_projectPath("C:\\Code\\cpp\\ScreenPlay\\ScreenPlay\\Content\\wallpaper_godot_fjord") + path = screen_play_wallpaper.get_projectPath() + "/project.zip" + else: + get_tree().quit() + return + print(path) + if load_scene(path): + var ok = screen_play_wallpaper.init(screen_play_wallpaper.get_activeScreensList()[0]) + print("init ", ok) + Engine.set_max_fps(24) + +func load_scene(path): + var success = ProjectSettings.load_resource_pack(path) if success: var scene_resource = load("res://wallpaper.tscn") if scene_resource: var scene_instance = scene_resource.instantiate() - add_child(scene_instance) - var ok = screen_play_wallpaper.init(0) - print("init ", ok) + if scene_instance: + add_child(scene_instance) + else: + print("Failed to instantiate the wallpaper.tscn scene.") + return false else: print("Failed to load the wallpaper.tscn scene.") + return false else: print("Failed to load the PCK file.") - Engine.set_max_fps(24) - + return false + return true + func parse_args(): var args = OS.get_cmdline_args() + print("Parse args:", args) + var offset = 0 + if args[0] == "res://main.tscn": + offset = 1 if args.size() < 7: # Adjust this number based on the expected number of arguments print("Not enough arguments provided!") - return + return false - # Parse the arguments based on their expected positions - activeScreensList = args[0].split(",") - for idx in range(activeScreensList.size()): - activeScreensList[idx] = int(activeScreensList[idx]) + var activeScreensList = [] + if args[0 + offset].is_valid_int(): + activeScreensList.append(args[0 + offset].to_int()) + else: + var potentialInts = args[0 + offset].split(",") + for val in potentialInts: + if not val.is_valid_int(): + print("Invalid argument: Not an integer:", val) + return false + else: + activeScreensList.append(val.to_int()) - projectPath = args[1] - appID = args[2] - volume = float(args[3]) - fillmode = int(args[4]) - # Assuming 'type' is not a global variable since it's not listed above + screen_play_wallpaper.set_projectPath(args[1 + offset]) + screen_play_wallpaper.set_appID(args[2 + offset].replace("appID=", "")) + screen_play_wallpaper.set_volume(float(args[3 + offset])) + #screen_play_wallpaper.set_fillmode(int(args[4 + offset])) var type = args[5] # This might need further parsing depending on its expected format - checkWallpaperVisible = args[6].to_lower() == "true" + screen_play_wallpaper.set_checkWallpaperVisible(args[6 + offset].to_lower() == "true") + screen_play_wallpaper.set_activeScreensList(activeScreensList) # Print or use the parsed values as needed - print(activeScreensList, projectPath, appID, volume, fillmode, type, checkWallpaperVisible) + print("Parsing done:", activeScreensList, screen_play_wallpaper.get_projectPath(), screen_play_wallpaper.get_appID(), screen_play_wallpaper.get_volume(), type, screen_play_wallpaper.get_checkWallpaperVisible()) + return true diff --git a/ScreenPlayWallpaper/Godot/ScreenPlayGodot/project.godot b/ScreenPlayWallpaper/Godot/ScreenPlayGodot/project.godot index 03a61fc6..a735cac4 100644 --- a/ScreenPlayWallpaper/Godot/ScreenPlayGodot/project.godot +++ b/ScreenPlayWallpaper/Godot/ScreenPlayGodot/project.godot @@ -13,6 +13,7 @@ config_version=5 config/name="ScreenPlay" run/main_scene="res://main.tscn" config/features=PackedStringArray("4.1", "Mobile") +boot_splash/bg_color=Color(0.141176, 0.141176, 0.141176, 0) boot_splash/show_image=false boot_splash/fullsize=false config/icon="res://icon.svg" @@ -26,6 +27,10 @@ window/size/initial_position_type=0 window/size/initial_position=Vector2i(9999999, 9999999) window/size/borderless=true +[editor] + +run/main_run_args="\"0\" \"C:/Code/cpp/ScreenPlay/ScreenPlay/Content/wallpaper_godot_fjord\" \"appID=vin6wuDQclPPJmFdouKukfGUKLrVBDCZ\" \"1\" \"Cover\" \"GodotWallpaper\" \"1\"" + [filesystem] import/blender/enabled=false From 1c152bed389e1e3ecf52ce1729940c1b0f9442fb Mon Sep 17 00:00:00 2001 From: Elias Steurer Date: Thu, 5 Oct 2023 15:51:50 +0200 Subject: [PATCH 009/101] Add connection to main SP instance --- .../GDExtention/src/ScreenPlayGodotWallpaper.cpp | 15 +++++++++------ .../GDExtention/src/ScreenPlayGodotWallpaper.h | 2 +- ScreenPlayWallpaper/Godot/ScreenPlayGodot/main.gd | 2 ++ 3 files changed, 12 insertions(+), 7 deletions(-) diff --git a/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayGodotWallpaper.cpp b/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayGodotWallpaper.cpp index b6aed0ef..8858bb6c 100644 --- a/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayGodotWallpaper.cpp +++ b/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayGodotWallpaper.cpp @@ -188,7 +188,8 @@ bool ScreenPlayGodotWallpaper::connect_to_named_pipe() } m_isPipeActive = true; - return true; + + return connected_to_screenplay(); } godot::String ScreenPlayGodotWallpaper::read_from_pipe() @@ -207,17 +208,17 @@ godot::String ScreenPlayGodotWallpaper::read_from_pipe() return result; } -void ScreenPlayGodotWallpaper::connected() +bool ScreenPlayGodotWallpaper::connected_to_screenplay() { // Ensure you have valid appID and type if (m_appID.is_empty()) { UtilityFunctions::print("Unable to connect with empty: appid"); - emit_signal("disconnected"); - return; + return false; } // Construct welcome message and write to the named pipe + // See void ScreenPlay::SDKConnection::readyRead() godot::String welcomeMessage = godot::String("appID=") + m_appID + ",godotWallpaper"; std::string stdMessage = welcomeMessage.utf8().get_data(); @@ -225,9 +226,11 @@ void ScreenPlayGodotWallpaper::connected() WriteFile(m_hPipe, stdMessage.c_str(), static_cast(stdMessage.size()), &bytesWritten, NULL); if (bytesWritten != stdMessage.size()) { - emit_signal("disconnected"); - return; + UtilityFunctions::print("Unable to send welcome message:", welcomeMessage); + return false; } + + return true; } void ScreenPlayGodotWallpaper::messageReceived(const std::string& key, const std::string& value) diff --git a/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayGodotWallpaper.h b/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayGodotWallpaper.h index c852c95f..e936462d 100644 --- a/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayGodotWallpaper.h +++ b/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayGodotWallpaper.h @@ -24,11 +24,11 @@ public: bool init(int activeScreen); bool connect_to_named_pipe(); + bool connected_to_screenplay(); godot::String read_from_pipe(); void _process(double delta); void messageReceived(const std::string& key, const std::string& value); - void connected(); godot::PackedInt64Array get_activeScreensList() const; void set_activeScreensList(const godot::PackedInt64Array& screens); godot::String get_projectPath() const; diff --git a/ScreenPlayWallpaper/Godot/ScreenPlayGodot/main.gd b/ScreenPlayWallpaper/Godot/ScreenPlayGodot/main.gd index 91b00124..ede8cd9c 100644 --- a/ScreenPlayWallpaper/Godot/ScreenPlayGodot/main.gd +++ b/ScreenPlayWallpaper/Godot/ScreenPlayGodot/main.gd @@ -24,6 +24,8 @@ func _ready(): var ok = screen_play_wallpaper.init(screen_play_wallpaper.get_activeScreensList()[0]) print("init ", ok) Engine.set_max_fps(24) + var ok_connect_to_named_pipe = screen_play_wallpaper.connect_to_named_pipe() + print("connect to ScreenPlay", ok_connect_to_named_pipe) func load_scene(path): var success = ProjectSettings.load_resource_pack(path) From bf80e2eeee6cafbc0ed1ef8fb36c0ccb93e8c6b9 Mon Sep 17 00:00:00 2001 From: Elias Steurer Date: Thu, 12 Oct 2023 13:25:10 +0200 Subject: [PATCH 010/101] Add basic working keep alive ping and quit messages --- ScreenPlay/src/screenplaywallpaper.cpp | 2 +- .../src/ScreenPlayGodotWallpaper.cpp | 63 ++++++++++++------- .../src/ScreenPlayGodotWallpaper.h | 10 +-- .../Godot/ScreenPlayGodot/main.gd | 36 +++++++++-- .../Godot/ScreenPlayGodot/main.tscn | 3 + Tools/build_godot.py | 24 ++++++- 6 files changed, 105 insertions(+), 33 deletions(-) diff --git a/ScreenPlay/src/screenplaywallpaper.cpp b/ScreenPlay/src/screenplaywallpaper.cpp index 9eb0afe0..e8487c13 100644 --- a/ScreenPlay/src/screenplaywallpaper.cpp +++ b/ScreenPlay/src/screenplaywallpaper.cpp @@ -232,7 +232,7 @@ void ScreenPlayWallpaper::setSDKConnection(std::unique_ptr connec QObject::connect(m_connection.get(), &SDKConnection::disconnected, this, [this]() { setIsConnected(false); - qInfo() << "disconnecetd;"; + qInfo() << "Wallpaper:" << m_connection->appID() << "disconnected"; }); QTimer::singleShot(1000, this, [this]() { if (playbackRate() != 1.0) { diff --git a/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayGodotWallpaper.cpp b/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayGodotWallpaper.cpp index 8858bb6c..6bf0eef1 100644 --- a/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayGodotWallpaper.cpp +++ b/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayGodotWallpaper.cpp @@ -18,6 +18,10 @@ void ScreenPlayGodotWallpaper::_bind_methods() UtilityFunctions::print("ScreenPlayGodotWallpaper _bind_methods"); ClassDB::bind_method(godot::D_METHOD("init"), &ScreenPlayGodotWallpaper::init); ClassDB::bind_method(godot::D_METHOD("connect_to_named_pipe"), &ScreenPlayGodotWallpaper::connect_to_named_pipe); + ClassDB::bind_method(godot::D_METHOD("send_welcome"), &ScreenPlayGodotWallpaper::send_welcome); + ClassDB::bind_method(godot::D_METHOD("get_screenPlayConnected"), &ScreenPlayGodotWallpaper::get_screenPlayConnected); + ClassDB::bind_method(godot::D_METHOD("get_pipeConnected"), &ScreenPlayGodotWallpaper::get_pipeConnected); + ClassDB::bind_method(godot::D_METHOD("ping_alive_screenplay"), &ScreenPlayGodotWallpaper::ping_alive_screenplay); ClassDB::bind_method(godot::D_METHOD("get_activeScreensList"), &ScreenPlayGodotWallpaper::get_activeScreensList); ClassDB::bind_method(godot::D_METHOD("set_activeScreensList", "screens"), &ScreenPlayGodotWallpaper::set_activeScreensList); @@ -77,23 +81,6 @@ ScreenPlayGodotWallpaper::~ScreenPlayGodotWallpaper() } } -void ScreenPlayGodotWallpaper::_process(double delta) -{ - - // if (!isPipeActive) { - // return; - // } - // timesinceLastRead += delta; - // // 0.05 seconds = 50ms - // if (timesinceLastRead >= 0.05) { - // String data = read_from_pipe(); - // if (!data.is_empty()) { - // UtilityFunctions::print("Received data: " + data); - // } - // timesinceLastRead = 0.0; - // } -} - bool ScreenPlayGodotWallpaper::configureWindowGeometry() { if (!m_hook->searchWorkerWindowToParentTo()) { @@ -168,6 +155,7 @@ bool ScreenPlayGodotWallpaper::init(int activeScreen) bool ScreenPlayGodotWallpaper::connect_to_named_pipe() { + m_pipeConnected = false; String pipeName = "ScreenPlay"; String fullPipeName = "\\\\.\\pipe\\" + pipeName; std::wstring wPipeName = std::wstring(fullPipeName.wide_string()); @@ -182,14 +170,13 @@ bool ScreenPlayGodotWallpaper::connect_to_named_pipe() NULL); if (m_hPipe == INVALID_HANDLE_VALUE) { - m_isPipeActive = false; + m_pipeConnected = false; UtilityFunctions::print("CreateFile failed, error code: " + String::num_int64(GetLastError())); return false; } - m_isPipeActive = true; - - return connected_to_screenplay(); + m_pipeConnected = true; + return true; } godot::String ScreenPlayGodotWallpaper::read_from_pipe() @@ -208,9 +195,31 @@ godot::String ScreenPlayGodotWallpaper::read_from_pipe() return result; } -bool ScreenPlayGodotWallpaper::connected_to_screenplay() +bool ScreenPlayGodotWallpaper::ping_alive_screenplay() { + if (m_hPipe == INVALID_HANDLE_VALUE) { + UtilityFunctions::print("INVALID_HANDLE_VALUE"); + return false; + } + if (!m_screenPlayConnected || !m_pipeConnected) { + UtilityFunctions::print("ScreenPlay hasn't connected to us yet!"); + return false; + } + + const std::string message = "ping"; + DWORD bytesWritten; + WriteFile(m_hPipe, message.c_str(), static_cast(message.size()), &bytesWritten, NULL); + + if (bytesWritten != message.size()) { + UtilityFunctions::print("Unable to send alive ping"); + return false; + } + return true; +} + +bool ScreenPlayGodotWallpaper::send_welcome() +{ // Ensure you have valid appID and type if (m_appID.is_empty()) { UtilityFunctions::print("Unable to connect with empty: appid"); @@ -230,6 +239,8 @@ bool ScreenPlayGodotWallpaper::connected_to_screenplay() return false; } + m_screenPlayConnected = true; + // m_pingAliveTimer->start(); return true; } @@ -266,6 +277,14 @@ void ScreenPlayGodotWallpaper::set_checkWallpaperVisible(bool visible) { m_checkWallpaperVisible = visible; } +bool ScreenPlayGodotWallpaper::get_screenPlayConnected() const +{ + return m_screenPlayConnected; +} +bool ScreenPlayGodotWallpaper::get_pipeConnected() const +{ + return m_pipeConnected; +} bool ScreenPlayGodotWallpaper::get_checkWallpaperVisible() const { return m_checkWallpaperVisible; diff --git a/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayGodotWallpaper.h b/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayGodotWallpaper.h index e936462d..575b2a88 100644 --- a/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayGodotWallpaper.h +++ b/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayGodotWallpaper.h @@ -24,9 +24,8 @@ public: bool init(int activeScreen); bool connect_to_named_pipe(); - bool connected_to_screenplay(); + bool send_welcome(); godot::String read_from_pipe(); - void _process(double delta); void messageReceived(const std::string& key, const std::string& value); godot::PackedInt64Array get_activeScreensList() const; @@ -39,6 +38,9 @@ public: void set_volume(float vol); bool get_checkWallpaperVisible() const; void set_checkWallpaperVisible(bool visible); + bool get_screenPlayConnected() const; + bool get_pipeConnected() const; + bool ping_alive_screenplay(); protected: static void _bind_methods(); @@ -57,10 +59,10 @@ private: std::unique_ptr m_hook; HANDLE m_hPipe; double m_timesinceLastRead = 0.0; - bool m_isPipeActive = false; + bool m_pipeConnected = false; + bool m_screenPlayConnected = false; godot::PackedInt64Array m_activeScreensList; float m_volume = 0.0; bool m_checkWallpaperVisible = false; - godot::Timer* m_pingAliveTimer = nullptr; }; diff --git a/ScreenPlayWallpaper/Godot/ScreenPlayGodot/main.gd b/ScreenPlayWallpaper/Godot/ScreenPlayGodot/main.gd index ede8cd9c..c0f2fe58 100644 --- a/ScreenPlayWallpaper/Godot/ScreenPlayGodot/main.gd +++ b/ScreenPlayWallpaper/Godot/ScreenPlayGodot/main.gd @@ -2,8 +2,22 @@ extends Node3D @onready var screen_play_wallpaper = $ScreenPlayGodotWallpaper +@onready var alive_timer = $AliveTimer + +func ping_alive_screenplay(): + var ping_alive_screenplay = screen_play_wallpaper.ping_alive_screenplay() + var msg = screen_play_wallpaper.read_from_pipe() + if not msg.isEmpty(): + print("message", msg) + if "quit" in msg: + get_tree().quit() + return + + #print("ping_alive_screenplay: ", ping_alive_screenplay) func _ready(): + alive_timer.timeout.connect(ping_alive_screenplay) + if not screen_play_wallpaper: printerr("ERROR INVALID SCREENPLAY OBJECT") return @@ -20,12 +34,24 @@ func _ready(): get_tree().quit() return print(path) - if load_scene(path): - var ok = screen_play_wallpaper.init(screen_play_wallpaper.get_activeScreensList()[0]) - print("init ", ok) - Engine.set_max_fps(24) + if not load_scene(path): + print("Failed to load the PCK file.") + get_tree().quit() + return + Engine.set_max_fps(24) + var ok = screen_play_wallpaper.init(screen_play_wallpaper.get_activeScreensList()[0]) + print("init ", ok) + if not screen_play_wallpaper.get_pipeConnected(): + print("connect to ScreenPlay") var ok_connect_to_named_pipe = screen_play_wallpaper.connect_to_named_pipe() - print("connect to ScreenPlay", ok_connect_to_named_pipe) + print("connection: ", ok_connect_to_named_pipe) + if not screen_play_wallpaper.get_screenPlayConnected(): + print("send_welcome") + var send_welcome = screen_play_wallpaper.send_welcome() + print("send_welcome: ", send_welcome) + if send_welcome: + alive_timer.start() + func load_scene(path): var success = ProjectSettings.load_resource_pack(path) diff --git a/ScreenPlayWallpaper/Godot/ScreenPlayGodot/main.tscn b/ScreenPlayWallpaper/Godot/ScreenPlayGodot/main.tscn index c20d437d..ed5dff7d 100644 --- a/ScreenPlayWallpaper/Godot/ScreenPlayGodot/main.tscn +++ b/ScreenPlayWallpaper/Godot/ScreenPlayGodot/main.tscn @@ -6,3 +6,6 @@ script = ExtResource("1_ceeuk") [node name="ScreenPlayGodotWallpaper" type="ScreenPlayGodotWallpaper" parent="."] + +[node name="AliveTimer" type="Timer" parent="."] +wait_time = 0.5 diff --git a/Tools/build_godot.py b/Tools/build_godot.py index 7d69c3f4..5c1cc352 100644 --- a/Tools/build_godot.py +++ b/Tools/build_godot.py @@ -1,6 +1,7 @@ #!/usr/bin/python3 import os import util +import shutil import defines from pathlib import Path from execute_util import execute @@ -39,10 +40,31 @@ def build_godot(abs_build_path: str): apps_path = os.path.join(util.repo_root_path(),"Tools/Apps/Godot") godot_executable = os.path.join(apps_path, defines.GODOT_EDITOR_EXECUTABLE) screenPlayWallpaperGodot_executable = Path(abs_build_path).joinpath(defines.SCREENPLAYWALLPAPER_GODOT_EXECUTABLE).resolve() - export_command = f'"{godot_executable}" -v --headless --export-release "Windows Desktop" "{screenPlayWallpaperGodot_executable}"' + + if 'Debug' in abs_build_path: + export_type = " --export-debug" + else: + export_type = " --export-release" + export_command = f'"{godot_executable}" -v --headless {export_type} "Windows Desktop" "{screenPlayWallpaperGodot_executable}"' # We get random error on successful export, so lets ignore it execute(command=export_command,workingDir=project_path,ignore_error=True) + if 'Debug' in abs_build_path: + lib_name = "ScreenPlayGodotWallpaper-d.dll" + else: + lib_name = "ScreenPlayGodotWallpaper.dll" + + # Construct the source path for the DLL + dll_source_path = project_path.joinpath(f"ScreenPlayGodotWallpaper/lib/Windows-AMD64/{lib_name}") + + # Print a warning message + print(f"⚠️ Copying {dll_source_path} to {abs_build_path}") + + # Copy the DLL + shutil.copy(dll_source_path, abs_build_path) + + + if __name__ == "__main__": main() From 5f331043e20faf29c53cf65cfa5c7e4a09253a16 Mon Sep 17 00:00:00 2001 From: Elias Steurer Date: Thu, 12 Oct 2023 15:35:59 +0200 Subject: [PATCH 011/101] Fix ci compilation error: CMAKE_BUILD_TYPE must be set to Debug or Release --- ScreenPlayWallpaper/Godot/GDExtention/templates/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ScreenPlayWallpaper/Godot/GDExtention/templates/CMakeLists.txt b/ScreenPlayWallpaper/Godot/GDExtention/templates/CMakeLists.txt index bbd856b7..adc946a9 100644 --- a/ScreenPlayWallpaper/Godot/GDExtention/templates/CMakeLists.txt +++ b/ScreenPlayWallpaper/Godot/GDExtention/templates/CMakeLists.txt @@ -10,7 +10,7 @@ add_dependencies(${PROJECT_NAME} templates) # We shouldn't be relying on CMAKE_BUILD_TYPE (see https://github.com/asmaloney/GDExtensionTemplate/issues/25) # But until we fix it here and in godot-cpp, ensure it's one we expect. -set(ALLOWED_BUILDS "Debug;Release") +set(ALLOWED_BUILDS "Debug;Release;debug;release") if(NOT "${CMAKE_BUILD_TYPE}" IN_LIST ALLOWED_BUILDS) message(FATAL_ERROR "CMAKE_BUILD_TYPE must be set to Debug or Release") From 757b43e8c215955cf814d66b1887fe138daa2ab5 Mon Sep 17 00:00:00 2001 From: Elias Steurer Date: Thu, 12 Oct 2023 16:01:27 +0200 Subject: [PATCH 012/101] Add exit function for cleanup --- ScreenPlay/src/screenplaymanager.cpp | 2 +- .../src/ScreenPlayGodotWallpaper.cpp | 38 +++++++++++-------- .../src/ScreenPlayGodotWallpaper.h | 1 + .../Godot/ScreenPlayGodot/main.gd | 2 + 4 files changed, 26 insertions(+), 17 deletions(-) diff --git a/ScreenPlay/src/screenplaymanager.cpp b/ScreenPlay/src/screenplaymanager.cpp index fcba65ba..ca4233c5 100644 --- a/ScreenPlay/src/screenplaymanager.cpp +++ b/ScreenPlay/src/screenplaymanager.cpp @@ -307,7 +307,7 @@ bool ScreenPlayManager::removeAllWallpapers() bool ScreenPlayManager::removeAllWidgets() { if (m_screenPlayWidgets.empty()) { - qWarning() << "Trying to remove all Widgets while m_screenPlayWidgets is not empty. Count: " << m_screenPlayWidgets.size(); + qWarning() << "Trying to remove all Widgets while m_screenPlayWidgets is empty. Count: " << m_screenPlayWidgets.size(); return false; } diff --git a/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayGodotWallpaper.cpp b/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayGodotWallpaper.cpp index 6bf0eef1..c98566b6 100644 --- a/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayGodotWallpaper.cpp +++ b/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayGodotWallpaper.cpp @@ -21,7 +21,9 @@ void ScreenPlayGodotWallpaper::_bind_methods() ClassDB::bind_method(godot::D_METHOD("send_welcome"), &ScreenPlayGodotWallpaper::send_welcome); ClassDB::bind_method(godot::D_METHOD("get_screenPlayConnected"), &ScreenPlayGodotWallpaper::get_screenPlayConnected); ClassDB::bind_method(godot::D_METHOD("get_pipeConnected"), &ScreenPlayGodotWallpaper::get_pipeConnected); + ClassDB::bind_method(godot::D_METHOD("read_from_pipe"), &ScreenPlayGodotWallpaper::read_from_pipe); ClassDB::bind_method(godot::D_METHOD("ping_alive_screenplay"), &ScreenPlayGodotWallpaper::ping_alive_screenplay); + ClassDB::bind_method(godot::D_METHOD("exit"), &ScreenPlayGodotWallpaper::exit); ClassDB::bind_method(godot::D_METHOD("get_activeScreensList"), &ScreenPlayGodotWallpaper::get_activeScreensList); ClassDB::bind_method(godot::D_METHOD("set_activeScreensList", "screens"), &ScreenPlayGodotWallpaper::set_activeScreensList); @@ -63,22 +65,6 @@ ScreenPlayGodotWallpaper::~ScreenPlayGodotWallpaper() UtilityFunctions::print( "ScreenPlayWallpaper ", itos(mID), " destroyed, current instance count: ", itos(sInstanceCount)); - - // Somehow this gets called at editor startup - // so just return if not initialized - if (m_hook) { - - ShowWindow(m_hook->windowHandle, SW_HIDE); - - // Force refresh so that we display the regular - // desktop wallpaper again - ShowWindow(m_hook->windowHandleWorker, SW_HIDE); - ShowWindow(m_hook->windowHandleWorker, SW_SHOW); - } - // Destructor - if (m_hPipe != INVALID_HANDLE_VALUE) { - CloseHandle(m_hPipe); - } } bool ScreenPlayGodotWallpaper::configureWindowGeometry() @@ -285,6 +271,26 @@ bool ScreenPlayGodotWallpaper::get_pipeConnected() const { return m_pipeConnected; } +bool ScreenPlayGodotWallpaper::exit() +{ + + // Somehow this gets called at editor startup + // so just return if not initialized + if (m_hook) { + + ShowWindow(m_hook->windowHandle, SW_HIDE); + + // Force refresh so that we display the regular + // desktop wallpaper again + ShowWindow(m_hook->windowHandleWorker, SW_HIDE); + ShowWindow(m_hook->windowHandleWorker, SW_SHOW); + } + // Destructor + if (m_hPipe != INVALID_HANDLE_VALUE) { + CloseHandle(m_hPipe); + } + return true; +} bool ScreenPlayGodotWallpaper::get_checkWallpaperVisible() const { return m_checkWallpaperVisible; diff --git a/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayGodotWallpaper.h b/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayGodotWallpaper.h index 575b2a88..3d96c883 100644 --- a/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayGodotWallpaper.h +++ b/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayGodotWallpaper.h @@ -41,6 +41,7 @@ public: bool get_screenPlayConnected() const; bool get_pipeConnected() const; bool ping_alive_screenplay(); + bool exit(); protected: static void _bind_methods(); diff --git a/ScreenPlayWallpaper/Godot/ScreenPlayGodot/main.gd b/ScreenPlayWallpaper/Godot/ScreenPlayGodot/main.gd index c0f2fe58..a95b8b5e 100644 --- a/ScreenPlayWallpaper/Godot/ScreenPlayGodot/main.gd +++ b/ScreenPlayWallpaper/Godot/ScreenPlayGodot/main.gd @@ -10,6 +10,8 @@ func ping_alive_screenplay(): if not msg.isEmpty(): print("message", msg) if "quit" in msg: + var exit = screen_play_wallpaper.exit() + print("exit ", exit) get_tree().quit() return From cc176cac51d27204da06237812370693f117bd85 Mon Sep 17 00:00:00 2001 From: Elias Steurer Date: Fri, 13 Oct 2023 05:50:14 +0200 Subject: [PATCH 013/101] Add submodule download to ci for godot-cpp --- .gitlab/ci/base_jobs.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.gitlab/ci/base_jobs.yml b/.gitlab/ci/base_jobs.yml index 35f2f686..bb1bc015 100644 --- a/.gitlab/ci/base_jobs.yml +++ b/.gitlab/ci/base_jobs.yml @@ -4,6 +4,8 @@ - python -m pip install -U pip wheel - python -m pip install -r Tools/requirements.txt - python Tools/setup.py + - git submodule sync --recursive + - git submodule update --init --recursive tags: - windows10 artifacts: @@ -26,6 +28,8 @@ - python3 -m pip install -U pip - python3 -m pip install -r Tools/requirements.txt - python3 Tools/setup.py + - git submodule sync --recursive + - git submodule update --init --recursive image: name: ubuntu:20.04 tags: @@ -41,6 +45,8 @@ - pip3 install -U pip - pip3 install -r Tools/requirements.txt - python3 Tools/setup.py + - git submodule sync --recursive + - git submodule update --init --recursive tags: - osx artifacts: From b59103eb84ce9728e5806552ed18a717e682dd51 Mon Sep 17 00:00:00 2001 From: Elias Steurer Date: Fri, 13 Oct 2023 06:15:21 +0200 Subject: [PATCH 014/101] Fix configure file for unix --- Tools/CMakeLists.txt | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/Tools/CMakeLists.txt b/Tools/CMakeLists.txt index d141d3d8..80d9a1c5 100644 --- a/Tools/CMakeLists.txt +++ b/Tools/CMakeLists.txt @@ -11,4 +11,8 @@ add_custom_target( COMMENT "Dummy target to list these files in the IDE") set(GODOT_PATH "${CMAKE_CURRENT_SOURCE_DIR}/Apps/Godot") -configure_file(${GODOT_PATH}/${GODOT_EDITOR_NAME} ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/ COPYONLY) + +if(WIN32) + # Todo: Add Linux and Mac support + configure_file(${GODOT_PATH}/${GODOT_EDITOR_NAME} ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/ COPYONLY) +endif() \ No newline at end of file From 23c85f926e1fe808b55f0a285f09db1cb6cdcd3d Mon Sep 17 00:00:00 2001 From: Elias Steurer Date: Fri, 13 Oct 2023 06:21:51 +0200 Subject: [PATCH 015/101] Fix none Windows compilation --- ScreenPlayWallpaper/CMakeLists.txt | 6 ++-- ScreenPlayWallpaper/Godot/CMakeLists.txt | 36 ++----------------- .../GDExtention/src/RegisterExtension.cpp | 2 +- .../src/ScreenPlayGodotWallpaper.cpp | 2 +- .../src/ScreenPlayGodotWallpaper.h | 3 +- 5 files changed, 10 insertions(+), 39 deletions(-) diff --git a/ScreenPlayWallpaper/CMakeLists.txt b/ScreenPlayWallpaper/CMakeLists.txt index 9eee4b15..e48dd820 100644 --- a/ScreenPlayWallpaper/CMakeLists.txt +++ b/ScreenPlayWallpaper/CMakeLists.txt @@ -20,8 +20,8 @@ find_package( Positioning) if(WIN32) - set(SOURCES src/windowsdesktopproperties.cpp src/winwindow.cpp) - set(HEADER src/windowsdesktopproperties.h src/winwindow.h) + set(SOURCES src/windowsdesktopproperties.cpp src/winwindow.cpp src/windowshook.cpp) + set(HEADER src/windowsdesktopproperties.h src/winwindow.h src/windowshook.h) elseif(APPLE) set(SOURCES src/macintegration.cpp src/macwindow.cpp) set(HEADER @@ -52,7 +52,7 @@ set(RESOURCES dot.png qtquickcontrols2.conf index.html) set(LIB_SOURCES ${SOURCES} src/basewindow.cpp) set(LIB_HEADER ${HEADER} src/basewindow.h) -add_library(ScreenPlayWallpaperLib STATIC src/windowshook.cpp src/windowshook.h) +add_library(ScreenPlayWallpaperLib STATIC) target_include_directories(ScreenPlayWallpaperLib PUBLIC src) if(WIN32) diff --git a/ScreenPlayWallpaper/Godot/CMakeLists.txt b/ScreenPlayWallpaper/Godot/CMakeLists.txt index 8cc9b540..996b9450 100644 --- a/ScreenPlayWallpaper/Godot/CMakeLists.txt +++ b/ScreenPlayWallpaper/Godot/CMakeLists.txt @@ -1,35 +1,5 @@ # SPDX-License-Identifier: LicenseRef-EliasSteurerTachiom OR AGPL-3.0-only -add_subdirectory(GDExtention) - -# Disable for ci because it uses separate build step. -# if(NOT ${GITLAB_CI} AND ${GODOT_WALLPAPER}) -# # Normally I would directly call the Godot executable here but after hours of failure without any error messages, lets just call the -# # python script that we want to have anyway... -# find_package(Python COMPONENTS Interpreter) - -# message(STATUS "GODOT_WORKING_DIRECTORY = ${CMAKE_SOURCE_DIR}/Tools") -# message(STATUS "Generate Godot export:") -# message(STATUS "cd ${CMAKE_SOURCE_DIR}/Tools") -# message(STATUS "python build_godot.py --skip_if_exists --build_path '${CMAKE_RUNTIME_OUTPUT_DIRECTORY}'") - -# execute_process( -# COMMAND ${Python_EXECUTABLE} build_godot.py --skip_if_exists --build_path "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}" -# WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}/Tools" -# TIMEOUT 30 -# RESULT_VARIABLE GODOT_EXPORT_RESULT -# OUTPUT_VARIABLE GODOT_EXPORT_OUTPUT ENCODING UTF8) - -# if(GODOT_EXPORT_RESULT EQUAL "1") -# message(STATUS "Godot export skipped because it already exists.") -# elseif( -# NOT -# GODOT_EXPORT_RESULT -# EQUAL -# "0") -# message(STATUS "################################################") -# message(STATUS "Unable to export Map. Please run Tools/setup.py!") -# message(STATUS "################################################") -# message(FATAL_ERROR "ERROR: ${GODOT_EXPORT_OUTPUT}") -# endif() -# endif() +if(WIN32) + add_subdirectory(GDExtention) +endif() \ No newline at end of file diff --git a/ScreenPlayWallpaper/Godot/GDExtention/src/RegisterExtension.cpp b/ScreenPlayWallpaper/Godot/GDExtention/src/RegisterExtension.cpp index ad9e80f4..ac95cde5 100644 --- a/ScreenPlayWallpaper/Godot/GDExtention/src/RegisterExtension.cpp +++ b/ScreenPlayWallpaper/Godot/GDExtention/src/RegisterExtension.cpp @@ -1,4 +1,4 @@ -// Copied from godot-cpp/test/src and modified. +// SPDX-License-Identifier: LicenseRef-EliasSteurerTachiom OR AGPL-3.0-only #include "gdextension_interface.h" diff --git a/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayGodotWallpaper.cpp b/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayGodotWallpaper.cpp index c98566b6..32369628 100644 --- a/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayGodotWallpaper.cpp +++ b/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayGodotWallpaper.cpp @@ -1,4 +1,4 @@ -// Copied from godot-cpp/test/src and modified. +// SPDX-License-Identifier: LicenseRef-EliasSteurerTachiom OR AGPL-3.0-only #include "ScreenPlayGodotWallpaper.h" #include "godot_cpp/classes/display_server.hpp" diff --git a/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayGodotWallpaper.h b/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayGodotWallpaper.h index 3d96c883..916a6ad6 100644 --- a/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayGodotWallpaper.h +++ b/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayGodotWallpaper.h @@ -1,5 +1,6 @@ +// SPDX-License-Identifier: LicenseRef-EliasSteurerTachiom OR AGPL-3.0-only + #pragma once -// Copied from godot-cpp/test/src and modified. #include "godot_cpp/classes/control.hpp" #include "godot_cpp/classes/global_constants.hpp" From 31e23e11204ecbbee49b6ad6dfc620b66154c2e7 Mon Sep 17 00:00:00 2001 From: Elias Steurer Date: Fri, 13 Oct 2023 07:10:02 +0200 Subject: [PATCH 016/101] Fix using Windows headers on unix --- ScreenPlayWallpaper/CMakeLists.txt | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/ScreenPlayWallpaper/CMakeLists.txt b/ScreenPlayWallpaper/CMakeLists.txt index e48dd820..d4bb4cbf 100644 --- a/ScreenPlayWallpaper/CMakeLists.txt +++ b/ScreenPlayWallpaper/CMakeLists.txt @@ -7,7 +7,8 @@ set(CMAKE_AUTOMOC ON) find_package( Qt6 - COMPONENTS Core + COMPONENTS + Core Quick Gui Widgets @@ -20,8 +21,8 @@ find_package( Positioning) if(WIN32) - set(SOURCES src/windowsdesktopproperties.cpp src/winwindow.cpp src/windowshook.cpp) - set(HEADER src/windowsdesktopproperties.h src/winwindow.h src/windowshook.h) + set(SOURCES src/windowsdesktopproperties.cpp src/winwindow.cpp) + set(HEADER src/windowsdesktopproperties.h src/winwindow.h) elseif(APPLE) set(SOURCES src/macintegration.cpp src/macwindow.cpp) set(HEADER @@ -49,10 +50,15 @@ set(QML set(RESOURCES dot.png qtquickcontrols2.conf index.html) -set(LIB_SOURCES ${SOURCES} src/basewindow.cpp) -set(LIB_HEADER ${HEADER} src/basewindow.h) +set(LIB_SOURCES) +set(LIB_HEADER) -add_library(ScreenPlayWallpaperLib STATIC) +if(WIN32) + set(LIB_SOURCES src/windowshook.cpp) + set(LIB_HEADER src/windowshook.h) +endif() + +add_library(ScreenPlayWallpaperLib STATIC ${LIB_SOURCES} ${LIB_HEADER}) target_include_directories(ScreenPlayWallpaperLib PUBLIC src) if(WIN32) @@ -79,7 +85,8 @@ qt_add_qml_module( target_link_libraries( ${PROJECT_NAME} - PRIVATE ScreenPlaySDK + PRIVATE + ScreenPlaySDK ScreenPlayWallpaperLib ScreenPlayUtil ScreenPlayWeatherplugin From 2ce66161e3c0e9df808820902e875780a5e7e23d Mon Sep 17 00:00:00 2001 From: Elias Steurer Date: Fri, 13 Oct 2023 08:38:50 +0200 Subject: [PATCH 017/101] Fix windows installer creation --- ScreenPlayWallpaper/Godot/GDExtention/CMakeLists.txt | 9 --------- .../Godot/GDExtention/templates/CMakeLists.txt | 6 ------ 2 files changed, 15 deletions(-) diff --git a/ScreenPlayWallpaper/Godot/GDExtention/CMakeLists.txt b/ScreenPlayWallpaper/Godot/GDExtention/CMakeLists.txt index 18a80d2b..cd3421e3 100644 --- a/ScreenPlayWallpaper/Godot/GDExtention/CMakeLists.txt +++ b/ScreenPlayWallpaper/Godot/GDExtention/CMakeLists.txt @@ -86,15 +86,6 @@ add_subdirectory(src) # Install library and extension file in ${CMAKE_INSTALL_PREFIX}/${PROJECT_NAME} set(INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/${PROJECT_NAME}/") -message(STATUS "Install directory: ${INSTALL_DIR}") - -install(TARGETS ${PROJECT_NAME} - LIBRARY - DESTINATION ${INSTALL_DIR}/${LIB_DIR} - RUNTIME - DESTINATION ${INSTALL_DIR}/${LIB_DIR} -) - add_subdirectory(templates) # ccache diff --git a/ScreenPlayWallpaper/Godot/GDExtention/templates/CMakeLists.txt b/ScreenPlayWallpaper/Godot/GDExtention/templates/CMakeLists.txt index adc946a9..f6217afd 100644 --- a/ScreenPlayWallpaper/Godot/GDExtention/templates/CMakeLists.txt +++ b/ScreenPlayWallpaper/Godot/GDExtention/templates/CMakeLists.txt @@ -30,12 +30,6 @@ set(OUT_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../../ScreenPlayGodot/${PROJECT_NAME}/) set(GD_EXTENSION_FILE ${PROJECT_NAME}.gdextension) configure_file(${GD_EXTENSION_FILE_INPUT} ${OUT_PATH}/${GD_EXTENSION_FILE}) -# Install the gdextension file from the build directory -install( - FILES ${BUILD_OUTPUT_DIR}/${GD_EXTENSION_FILE} - DESTINATION ${INSTALL_DIR} -) - unset(ALLOWED_BUILDS) unset(BUILD_TYPE) unset(GD_EXTENSION_FILE) From 8753d6b27d18e114c1f17ac1d65c46f1f3dfe474 Mon Sep 17 00:00:00 2001 From: Elias Steurer Date: Fri, 13 Oct 2023 13:08:09 +0200 Subject: [PATCH 018/101] Fix linux compilation --- .gitlab/ci/base_jobs.yml | 8 +++----- CMakeLists.txt | 2 +- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/.gitlab/ci/base_jobs.yml b/.gitlab/ci/base_jobs.yml index bb1bc015..b4fcf909 100644 --- a/.gitlab/ci/base_jobs.yml +++ b/.gitlab/ci/base_jobs.yml @@ -20,11 +20,9 @@ # Otherwise libglib2 needs interaction - export DEBIAN_FRONTEND=noninteractive - apt update -y - - apt install curl wget zip unzip tar git pkg-config libxcb-* libfontconfig-dev apt-transport-https ca-certificates gnupg software-properties-common python3 python3-pip build-essential libgl1-mesa-dev mesa-common-dev lld ninja-build libxkbcommon-* libx11-dev xserver-xorg-dev xorg-dev -y - - wget -O - https://apt.kitware.com/keys/kitware-archive-latest.asc 2>/dev/null | gpg --dearmor - | tee /usr/share/keyrings/kitware-archive-keyring.gpg >/dev/null - - echo 'deb [signed-by=/usr/share/keyrings/kitware-archive-keyring.gpg] https://apt.kitware.com/ubuntu/ focal-rc main' | tee -a /etc/apt/sources.list.d/kitware.list >/dev/null - - apt update -y - - apt install cmake -y + - apt install cmake python3.10-venv libwayland-dev wayland-protocols curl wget zip unzip tar git pkg-config libxcb-* libfontconfig-dev apt-transport-https ca-certificates gnupg software-properties-common python3 python3-pip build-essential libgl1-mesa-dev mesa-common-dev lld ninja-build libxkbcommon-* libx11-dev xserver-xorg-dev xorg-dev -y + - python3 -m venv env + - source env/bin/activate - python3 -m pip install -U pip - python3 -m pip install -r Tools/requirements.txt - python3 Tools/setup.py diff --git a/CMakeLists.txt b/CMakeLists.txt index 6bd94ddf..e4aa88de 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.23.0) +cmake_minimum_required(VERSION 3.22.0) set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/CMake" ${CMAKE_MODULE_PATH}) include(GetProjectVersion) From 94024be77dcec74150ec445a1467d05a8faafe1c Mon Sep 17 00:00:00 2001 From: Elias Steurer Date: Sat, 14 Oct 2023 11:20:15 +0200 Subject: [PATCH 019/101] Fix linux ci --- .gitlab/ci/base_jobs.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab/ci/base_jobs.yml b/.gitlab/ci/base_jobs.yml index b4fcf909..35ecbe3b 100644 --- a/.gitlab/ci/base_jobs.yml +++ b/.gitlab/ci/base_jobs.yml @@ -29,7 +29,7 @@ - git submodule sync --recursive - git submodule update --init --recursive image: - name: ubuntu:20.04 + name: ubuntu:22.04 tags: - gitlab-org-docker artifacts: From 14419984355026e33bb481caba840a8f537dfd02 Mon Sep 17 00:00:00 2001 From: Elias Steurer Date: Sun, 22 Oct 2023 17:29:06 +0200 Subject: [PATCH 020/101] Add working Windows pipes connection --- .vscode/extensions.json | 4 +- .vscode/tasks.json | 121 +++++++++--------- CMakeLists.txt | 5 +- Content/wallpaper_godot_fjord/Action.gd | 15 ++- Content/wallpaper_qml_particles/main.qml | 2 +- Content/widget_analog_clock/Clock.qml | 6 +- Content/widget_analog_clock/main.qml | 4 +- Content/widget_hello_world/main.qml | 2 +- ScreenPlay/qml/Community/XMLNewsfeed.qml | 2 +- ScreenPlay/qml/Installed/Installed.qml | 4 +- ScreenPlay/src/sdkconnection.cpp | 98 +++++++------- ScreenPlay/translations/ScreenPlay_.ts | 83 ++++++++---- ScreenPlay/translations/ScreenPlay_de_DE.ts | 83 ++++++++---- ScreenPlay/translations/ScreenPlay_es_ES.ts | 83 ++++++++---- ScreenPlay/translations/ScreenPlay_fr_FR.ts | 83 ++++++++---- ScreenPlay/translations/ScreenPlay_it_IT.ts | 83 ++++++++---- ScreenPlay/translations/ScreenPlay_ko_KR.ts | 83 ++++++++---- ScreenPlay/translations/ScreenPlay_nl_NL.ts | 83 ++++++++---- ScreenPlay/translations/ScreenPlay_pl_PL.ts | 83 ++++++++---- ScreenPlay/translations/ScreenPlay_pt_BR.ts | 83 ++++++++---- ScreenPlay/translations/ScreenPlay_ru_RU.ts | 83 ++++++++---- ScreenPlay/translations/ScreenPlay_tr_TR.ts | 83 ++++++++---- ScreenPlay/translations/ScreenPlay_vi_VN.ts | 83 ++++++++---- ScreenPlay/translations/ScreenPlay_zh_CN.ts | 83 ++++++++---- ScreenPlaySDK/src/screenplaysdk.cpp | 4 +- .../GDExtention/cmake/CompilerWarnings.cmake | 2 +- .../Godot/GDExtention/src/CMakeLists.txt | 9 +- .../src/ScreenPlayGodotWallpaper.cpp | 111 +++++----------- .../src/ScreenPlayGodotWallpaper.h | 12 +- .../Godot/GDExtention/src/WindowsPipe.cpp | 77 +++++++++++ .../Godot/GDExtention/src/WindowsPipe.h | 42 ++++++ .../Godot/GDExtention/src/WindowsPipeTest.cpp | 27 ++++ .../GDExtention/src/windowsPipeTestServer.py | 56 ++++++++ .../GDExtention/templates/CMakeLists.txt | 2 +- .../ScreenPlayGodotWallpaper.gdextension | 12 +- .../Godot/ScreenPlayGodot/export_presets.cfg | 2 +- .../Godot/ScreenPlayGodot/main.gd | 68 ++++++---- .../Godot/ScreenPlayGodot/main.tscn | 5 +- .../Godot/ScreenPlayGodot/project.godot | 3 +- .../contents/ui/WaitingForScreenplay.qml | 4 +- .../qml/SteamWorkshopStartPage.qml | 2 +- Tools/setup.py | 3 +- 42 files changed, 1219 insertions(+), 564 deletions(-) create mode 100644 ScreenPlayWallpaper/Godot/GDExtention/src/WindowsPipe.cpp create mode 100644 ScreenPlayWallpaper/Godot/GDExtention/src/WindowsPipe.h create mode 100644 ScreenPlayWallpaper/Godot/GDExtention/src/WindowsPipeTest.cpp create mode 100644 ScreenPlayWallpaper/Godot/GDExtention/src/windowsPipeTestServer.py diff --git a/.vscode/extensions.json b/.vscode/extensions.json index fb694d9a..bda5c7a9 100644 --- a/.vscode/extensions.json +++ b/.vscode/extensions.json @@ -5,6 +5,8 @@ "ms-vscode.cpptools-extension-pack", "ms-vscode.cmake-tools", "seanwu.vscode-qt-for-python", - "josetr.cmake-language-support-vscode" + "josetr.cmake-language-support-vscode", + "geequlim.godot-tools", + "stevebushresearch.buildoutputcolorizer" ] } \ No newline at end of file diff --git a/.vscode/tasks.json b/.vscode/tasks.json index a4195a1c..ab23c178 100644 --- a/.vscode/tasks.json +++ b/.vscode/tasks.json @@ -15,61 +15,7 @@ }, { "type": "process", - "label": "Format Cpp files", - "command": "python3", - "windows": { - "command": "python" - }, - "group": { - "kind": "build", - "isDefault": true - }, - "options": { - "cwd": "${workspaceFolder}/Tools" - }, - "args": [ - "check_format_cpp.py" - ] - }, - { - "type": "process", - "label": "Format CMake files", - "command": "python3", - "windows": { - "command": "python" - }, - "group": { - "kind": "build", - "isDefault": true - }, - "options": { - "cwd": "${workspaceFolder}/Tools" - }, - "args": [ - "check_format_cmake.py" - ] - }, - { - "type": "process", - "label": "Format Qml files", - "command": "python3", - "windows": { - "command": "python" - }, - "group": { - "kind": "build", - "isDefault": true - }, - "options": { - "cwd": "${workspaceFolder}/Tools" - }, - "args": [ - "check_format_qml.py" - ] - }, - { - "type": "process", - "label": "Run setup.py", + "label": "🛫 Run setup.py", "command": "python3", "windows": { "command": "python" @@ -87,8 +33,11 @@ }, { "type": "process", - "label": "Build Godot", - "command": "python", + "label": "⚙️ Build Godot Wallpaper", + "command": "python3", + "windows": { + "command": "python" + }, "group": { "kind": "build", "isDefault": true @@ -104,7 +53,7 @@ }, { "type": "process", - "label": "Build ScreenPlay release, with deploy and steam enabled", + "label": "⚙️ Build ScreenPlay release, with deploy and steam enabled", "command": "python3", "windows": { "command": "python" @@ -133,7 +82,61 @@ }, { "type": "process", - "label": "Update Qt *.ts translations", + "label": "📃 Format Cpp files", + "command": "python3", + "windows": { + "command": "python" + }, + "group": { + "kind": "build", + "isDefault": true + }, + "options": { + "cwd": "${workspaceFolder}/Tools" + }, + "args": [ + "check_format_cpp.py" + ] + }, + { + "type": "process", + "label": "📃 Format CMake files", + "command": "python3", + "windows": { + "command": "python" + }, + "group": { + "kind": "build", + "isDefault": true + }, + "options": { + "cwd": "${workspaceFolder}/Tools" + }, + "args": [ + "check_format_cmake.py" + ] + }, + { + "type": "process", + "label": "📃 Format Qml files", + "command": "python3", + "windows": { + "command": "python" + }, + "group": { + "kind": "build", + "isDefault": true + }, + "options": { + "cwd": "${workspaceFolder}/Tools" + }, + "args": [ + "check_format_qml.py" + ] + }, + { + "type": "process", + "label": "🗨️ Update Qt *.ts translations", "command": "python3", "windows": { "command": "python" diff --git a/CMakeLists.txt b/CMakeLists.txt index e4aa88de..707144bb 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -40,7 +40,6 @@ set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) set(CMAKE_CXX_STANDARD 20) set(THIRD_PARTY_PATH "${CMAKE_CURRENT_SOURCE_DIR}/ThirdParty/") -option(GODOT_WALLPAPER "Godot Wallpaper support" ON) option(OSX_BUNDLE "Enable distribution macOS bundle" OFF) set(CMAKE_OSX_DEPLOYMENT_TARGET "13.0") @@ -72,6 +71,7 @@ option(SCREENPLAY_DEPLOY "Marks this version as an official deploy version. This OFF) option(SCREENPLAY_TESTS "Enables UI tests." ON) option(SCREENPLAY_INSTALLER "Indicates whether an installer via the Qt Installer Framework is created." OFF) +option(SCREENPLAY_GODOT_SUPPORT "Compiles ScreenPlayGodotWallpaper." ON) # Gitlab CI has many ENV variables. We use this one to check if the current build happens inside the CI if(DEFINED ENV{CI_COMMIT_MESSAGE}) @@ -138,7 +138,7 @@ add_subdirectory(ScreenPlayWidget) add_subdirectory(ScreenPlayUtil) add_subdirectory(ScreenPlayWeather) -if(GODOT_WALLPAPER) +if(${SCREENPLAY_GODOT_SUPPORT}) add_subdirectory(ScreenPlayWallpaper/Godot) endif() @@ -176,6 +176,7 @@ message(STATUS "[OPTION] SCREENPLAY_DEPLOY = ${SCREENPLAY_DEPLOY}") message(STATUS "[OPTION] SCREENPLAY_INSTALLER = ${SCREENPLAY_INSTALLER}") message(STATUS "[OPTION] SCREENPLAY_STEAM = ${SCREENPLAY_STEAM}") message(STATUS "[OPTION] SCREENPLAY_TESTS = ${SCREENPLAY_TESTS}") +message(STATUS "[OPTION] SCREENPLAY_GODOT_SUPPORT = ${SCREENPLAY_GODOT_SUPPORT}") message(STATUS "[DEFINE] BUILD_TYPE = ${CMAKE_BUILD_TYPE}") message(STATUS "[DEFINE] GIT_COMMIT_HASH = ${GIT_COMMIT_HASH}") message(STATUS "[CPP DEFINE] DEPLOY_VERSION = ${DEPLOY_VERSION}") diff --git a/Content/wallpaper_godot_fjord/Action.gd b/Content/wallpaper_godot_fjord/Action.gd index b43a03cf..74593f7c 100644 --- a/Content/wallpaper_godot_fjord/Action.gd +++ b/Content/wallpaper_godot_fjord/Action.gd @@ -8,6 +8,7 @@ var screenplaywallpaper var appID = "" # Speed of the movement along the path var speed = 0.8 +var path = "/root/Wallpaper/ScreenPlayGodotWallpaper" func _process(delta): @@ -17,10 +18,10 @@ func _process(delta): # Loop back to the start if we've reached the end of the path if path_follow.progress >= 18.81: path_follow.progress = 0.0 - - screenplaywallpaper = get_node("/root/Wallpaper/ScreenPlayGodotWallpaper") - if screenplaywallpaper: - appID = screenplaywallpaper.get_appID() - else: - appID = "404" - label.text = "Godot Wallpaper\n" + Time.get_time_string_from_system() + "\nAppID: " + appID + return + if has_node(path): + if get_node(path): + appID = screenplaywallpaper.get_appID() + else: + appID = "404" + label.text = "Godot Wallpaper\n" + Time.get_time_string_from_system() + "\nAppID: " + appID diff --git a/Content/wallpaper_qml_particles/main.qml b/Content/wallpaper_qml_particles/main.qml index 9f2b561f..08d76ead 100644 --- a/Content/wallpaper_qml_particles/main.qml +++ b/Content/wallpaper_qml_particles/main.qml @@ -119,7 +119,7 @@ Item { bottom: parent.bottom bottomMargin: -width * .65 } - SequentialAnimation on opacity { + SequentialAnimation on opacity { loops: Animation.Infinite OpacityAnimator { diff --git a/Content/widget_analog_clock/Clock.qml b/Content/widget_analog_clock/Clock.qml index b50a08f2..5ce745a8 100644 --- a/Content/widget_analog_clock/Clock.qml +++ b/Content/widget_analog_clock/Clock.qml @@ -63,7 +63,7 @@ Item { origin.x: 7.5 origin.y: 73 angle: (clock.hours * 30) + (clock.minutes * 0.5) - Behavior on angle { + Behavior on angle { SpringAnimation { spring: 2 damping: 0.2 @@ -82,7 +82,7 @@ Item { origin.x: 6.5 origin.y: 83 angle: clock.minutes * 6 - Behavior on angle { + Behavior on angle { SpringAnimation { spring: 2 damping: 0.2 @@ -101,7 +101,7 @@ Item { origin.x: 2.5 origin.y: 80 angle: clock.seconds * 6 - Behavior on angle { + Behavior on angle { SpringAnimation { spring: 2 damping: 0.2 diff --git a/Content/widget_analog_clock/main.qml b/Content/widget_analog_clock/main.qml index a9bdae7b..2aa9119a 100644 --- a/Content/widget_analog_clock/main.qml +++ b/Content/widget_analog_clock/main.qml @@ -62,7 +62,7 @@ Item { source: "arrow.png" rotation: -90 opacity: clockview.atXBeginning ? 0 : 0.5 - Behavior on opacity { + Behavior on opacity { NumberAnimation { duration: 500 } @@ -76,7 +76,7 @@ Item { source: "arrow.png" rotation: 90 opacity: clockview.atXEnd ? 0 : 0.5 - Behavior on opacity { + Behavior on opacity { NumberAnimation { duration: 500 } diff --git a/Content/widget_hello_world/main.qml b/Content/widget_hello_world/main.qml index 5b263a10..810b292a 100644 --- a/Content/widget_hello_world/main.qml +++ b/Content/widget_hello_world/main.qml @@ -23,7 +23,7 @@ Item { // to the opacity of the rectangle opacity: sizeSlider.value // Animate the opacity change to make it smooth - Behavior on opacity { + Behavior on opacity { NumberAnimation { duration: 100 } diff --git a/ScreenPlay/qml/Community/XMLNewsfeed.qml b/ScreenPlay/qml/Community/XMLNewsfeed.qml index dcbd43fc..f0e13477 100644 --- a/ScreenPlay/qml/Community/XMLNewsfeed.qml +++ b/ScreenPlay/qml/Community/XMLNewsfeed.qml @@ -105,7 +105,7 @@ Item { source: image opacity: status === Image.Ready ? 1 : 0 - Behavior on opacity { + Behavior on opacity { PropertyAnimation { duration: 250 } diff --git a/ScreenPlay/qml/Installed/Installed.qml b/ScreenPlay/qml/Installed/Installed.qml index c8600802..5ca7e255 100644 --- a/ScreenPlay/qml/Installed/Installed.qml +++ b/ScreenPlay/qml/Installed/Installed.qml @@ -177,7 +177,7 @@ Item { font.pointSize: 18 } - PropertyAnimation on opacity { + PropertyAnimation on opacity { id: animFadeIn from: 0 @@ -211,7 +211,7 @@ Item { } } - PropertyAnimation on opacity { + PropertyAnimation on opacity { id: animFadeInTxtFooter from: 0 diff --git a/ScreenPlay/src/sdkconnection.cpp b/ScreenPlay/src/sdkconnection.cpp index 99fa4812..b022aab6 100644 --- a/ScreenPlay/src/sdkconnection.cpp +++ b/ScreenPlay/src/sdkconnection.cpp @@ -37,56 +37,60 @@ ScreenPlay::SDKConnection::SDKConnection(QLocalSocket* socket, QObject* parent) */ void ScreenPlay::SDKConnection::readyRead() { - - auto msg = QString(m_socket->readAll()); - - if (msg == "ping") { - emit pingAliveReceived(); - return; - } - - // The first message allways contains the appID - if (msg.startsWith("appID=")) { - QStringList args = msg.split(","); - // Only use the first 32 chars for the appID - QString appID = args.at(0); - m_appID = appID.remove("appID="); - - bool typeFound = false; - for (const QString& type : ScreenPlayUtil::getAvailableTypes()) { - if (msg.contains(type, Qt::CaseInsensitive)) { - m_type = type; - typeFound = true; - break; - } - } - - if (!typeFound) { - qCritical() << "Wallpaper type not found. Expected: " << ScreenPlayUtil::getAvailableTypes() << " got: " << msg; - } - - qInfo() << "[2/4] SDKConnection parsed with type: " << m_type << " connected with AppID:" << m_appID; - - emit appConnected(this); - - } else if (msg.startsWith("command=")) { - msg.remove("command="); - if (msg == "requestRaise") { - qInfo() << "Another ScreenPlay instance reuqested this one to raise!"; - emit requestRaise(); - } - } else if (msg.startsWith("{") && msg.endsWith("}")) { - QJsonObject obj; - QJsonParseError err {}; - QJsonDocument doc = QJsonDocument::fromJson(QByteArray { msg.toUtf8() }, &err); - - if (err.error != QJsonParseError::NoError) + // Split all messages by semicolon. This fixes double messages like pingping + // when we get messages to fast + const QString read = QString(m_socket->readAll()); + const QStringList messages = read.split(";"); + for (const QString& msg : messages) { + if (msg == "ping") { + emit pingAliveReceived(); return; + } - emit jsonMessageReceived(doc.object()); + // The first message allways contains the appID + if (msg.startsWith("appID=")) { + QStringList args = msg.split(","); + // Only use the first 32 chars for the appID + QString appID = args.at(0); + m_appID = appID.remove("appID="); - } else { - qInfo() << "### Message from: " << m_appID << ": " << msg; + bool typeFound = false; + for (const QString& type : ScreenPlayUtil::getAvailableTypes()) { + if (msg.contains(type, Qt::CaseInsensitive)) { + m_type = type; + typeFound = true; + break; + } + } + + if (!typeFound) { + qCritical() << "Wallpaper type not found. Expected: " << ScreenPlayUtil::getAvailableTypes() << " got: " << msg; + } + + qInfo() << "[2/4] SDKConnection parsed with type: " << m_type << " connected with AppID:" << m_appID; + + emit appConnected(this); + + } else if (msg.startsWith("command=")) { + QString command = msg; + command.remove("command="); + if (msg == "requestRaise") { + qInfo() << "Another ScreenPlay instance reuqested this one to raise!"; + emit requestRaise(); + } + } else if (msg.startsWith("{") && msg.endsWith("}")) { + QJsonObject obj; + QJsonParseError err {}; + QJsonDocument doc = QJsonDocument::fromJson(QByteArray { msg.toUtf8() }, &err); + + if (err.error != QJsonParseError::NoError) + return; + + emit jsonMessageReceived(doc.object()); + + } else { + qInfo() << "### Message from: " << m_appID << ": " << msg; + } } } diff --git a/ScreenPlay/translations/ScreenPlay_.ts b/ScreenPlay/translations/ScreenPlay_.ts index c92587d9..3fc2a569 100644 --- a/ScreenPlay/translations/ScreenPlay_.ts +++ b/ScreenPlay/translations/ScreenPlay_.ts @@ -622,6 +622,10 @@ ScreenPlay will only quit if no Wallpaper are running. Widgets + + Search for Wallpaper & Widgets + + InstalledWelcomeScreen @@ -815,14 +819,6 @@ ScreenPlay will only quit if no Wallpaper are running. ScreenPlay will start with Windows and will setup your Desktop every time for you. - - High priority Autostart - - - - This options grants ScreenPlay a higher autostart priority than other apps. - - Send anonymous crash reports and statistics @@ -875,22 +871,6 @@ ScreenPlay will only quit if no Wallpaper are running. Light - - Performance - - - - Pause wallpaper video rendering while another app is in the foreground - - - - We disable the video rendering (not the audio!) for the best performance. If you have problem you can disable this behaviour here. Wallpaper restart required! - - - - Default Fill Mode - - Set this property to define how the video is scaled to fit the target area. @@ -971,6 +951,30 @@ ScreenPlay will only quit if no Wallpaper are running. Privacy + + Show default installed content + + + + ScreenPlay will show build in content. + + + + Wallpaper and Widgets + + + + Pause wallpaper video rendering while another app is in the foreground. + + + + Limitations: This setting is Windows only, currently only works if you have exactly one monitor connected, and is limited to wallpapers with no audio. Wallpaper restart is required, when changing this setting! + + + + Default Wallpaper Fill Mode + + SettingsExpander @@ -1037,6 +1041,37 @@ ScreenPlay will only quit if no Wallpaper are running. + + TrayIcon + + ScreenPlay - Double click to change you settings. + + + + Open ScreenPlay + + + + Mute all + + + + Unmute all + + + + Pause all + + + + Play all + + + + Quit ScreenPlay + + + WebsiteWallpaper diff --git a/ScreenPlay/translations/ScreenPlay_de_DE.ts b/ScreenPlay/translations/ScreenPlay_de_DE.ts index 92da3d3c..c5dac152 100644 --- a/ScreenPlay/translations/ScreenPlay_de_DE.ts +++ b/ScreenPlay/translations/ScreenPlay_de_DE.ts @@ -624,6 +624,10 @@ ScreenPlay will only quit if no Wallpaper are running. Widgets Widgets + + Search for Wallpaper & Widgets + + InstalledWelcomeScreen @@ -817,14 +821,6 @@ ScreenPlay will only quit if no Wallpaper are running. ScreenPlay will start with Windows and will setup your Desktop every time for you. ScreenPlay startet mit Windows und richtet deinen Desktop jedes Mal für dich ein. - - High priority Autostart - Hohe Priorität für Autostart - - - This options grants ScreenPlay a higher autostart priority than other apps. - Diese Option gewährt ScreenPlay eine höhere Autostartpriorität als anderen Anwendungen. - Send anonymous crash reports and statistics Sende anonyme Absturzberichte und Statistiken @@ -877,22 +873,6 @@ ScreenPlay will only quit if no Wallpaper are running. Light Hell - - Performance - Leistung - - - Pause wallpaper video rendering while another app is in the foreground - Pausiere Wallpaper Video Rendering wenn eine andere App im Vordergrund ist - - - We disable the video rendering (not the audio!) for the best performance. If you have problem you can disable this behaviour here. Wallpaper restart required! - Wir deaktivieren das Video Rendering (Aber nicht die Sounds) für die beste Leistung. Wenn du damit probleme haben solltest kannst dieses Verhalten hier ausschalten. Ein Neustart wird aber von Nöten sein! - - - Default Fill Mode - Standard-Füllmodus - Set this property to define how the video is scaled to fit the target area. Lege diese Eigenschaft fest, um zu definieren, wie das Video skaliert wird, damit es in den Zielbereich passt. @@ -973,6 +953,30 @@ ScreenPlay will only quit if no Wallpaper are running. Privacy Datenschutz + + Show default installed content + + + + ScreenPlay will show build in content. + + + + Wallpaper and Widgets + + + + Pause wallpaper video rendering while another app is in the foreground. + + + + Limitations: This setting is Windows only, currently only works if you have exactly one monitor connected, and is limited to wallpapers with no audio. Wallpaper restart is required, when changing this setting! + + + + Default Wallpaper Fill Mode + + SettingsExpander @@ -1039,6 +1043,37 @@ ScreenPlay will only quit if no Wallpaper are running. Below you can find tools to create wallaper, beyond the tools that ScreenPlay provides for you! + + TrayIcon + + ScreenPlay - Double click to change you settings. + + + + Open ScreenPlay + + + + Mute all + + + + Unmute all + + + + Pause all + + + + Play all + + + + Quit ScreenPlay + + + WebsiteWallpaper diff --git a/ScreenPlay/translations/ScreenPlay_es_ES.ts b/ScreenPlay/translations/ScreenPlay_es_ES.ts index 119b93e7..b23da173 100644 --- a/ScreenPlay/translations/ScreenPlay_es_ES.ts +++ b/ScreenPlay/translations/ScreenPlay_es_ES.ts @@ -625,6 +625,10 @@ ScreenPlay will only quit if no Wallpaper are running. Widgets Widgets + + Search for Wallpaper & Widgets + + InstalledWelcomeScreen @@ -818,14 +822,6 @@ ScreenPlay will only quit if no Wallpaper are running. ScreenPlay will start with Windows and will setup your Desktop every time for you. ScreenPlay will start with Windows and will setup your Desktop every time for you. - - High priority Autostart - High priority Autostart - - - This options grants ScreenPlay a higher autostart priority than other apps. - This options grants ScreenPlay a higher autostart priority than other apps. - Send anonymous crash reports and statistics Send anonymous crash reports and statistics @@ -878,22 +874,6 @@ ScreenPlay will only quit if no Wallpaper are running. Light Light - - Performance - Performance - - - Pause wallpaper video rendering while another app is in the foreground - Pause wallpaper video rendering while another app is in the foreground - - - We disable the video rendering (not the audio!) for the best performance. If you have problem you can disable this behaviour here. Wallpaper restart required! - We disable the video rendering (not the audio!) for the best performance. If you have problem you can disable this behaviour here. Wallpaper restart required! - - - Default Fill Mode - Default Fill Mode - Set this property to define how the video is scaled to fit the target area. Set this property to define how the video is scaled to fit the target area. @@ -974,6 +954,30 @@ ScreenPlay will only quit if no Wallpaper are running. Privacy Privacy + + Show default installed content + + + + ScreenPlay will show build in content. + + + + Wallpaper and Widgets + + + + Pause wallpaper video rendering while another app is in the foreground. + + + + Limitations: This setting is Windows only, currently only works if you have exactly one monitor connected, and is limited to wallpapers with no audio. Wallpaper restart is required, when changing this setting! + + + + Default Wallpaper Fill Mode + + SettingsExpander @@ -1040,6 +1044,37 @@ ScreenPlay will only quit if no Wallpaper are running. Below you can find tools to create wallaper, beyond the tools that ScreenPlay provides for you! + + TrayIcon + + ScreenPlay - Double click to change you settings. + + + + Open ScreenPlay + + + + Mute all + + + + Unmute all + + + + Pause all + + + + Play all + + + + Quit ScreenPlay + + + WebsiteWallpaper diff --git a/ScreenPlay/translations/ScreenPlay_fr_FR.ts b/ScreenPlay/translations/ScreenPlay_fr_FR.ts index f23c9ce9..ef49b2d5 100644 --- a/ScreenPlay/translations/ScreenPlay_fr_FR.ts +++ b/ScreenPlay/translations/ScreenPlay_fr_FR.ts @@ -625,6 +625,10 @@ ScreenPlay will only quit if no Wallpaper are running. Widgets Widgets + + Search for Wallpaper & Widgets + + InstalledWelcomeScreen @@ -818,14 +822,6 @@ ScreenPlay will only quit if no Wallpaper are running. ScreenPlay will start with Windows and will setup your Desktop every time for you. ScreenPlay démarrera avec Windows et configurera votre bureau à chaque fois pour vous. - - High priority Autostart - Démarrage automatique haute priorité - - - This options grants ScreenPlay a higher autostart priority than other apps. - Cette option accorde à ScreenPlay une priorité de démarrage automatique plus élevée que les autres applications. - Send anonymous crash reports and statistics Envoyer des rapports d'incidents et des statistiques anonymes @@ -878,22 +874,6 @@ ScreenPlay will only quit if no Wallpaper are running. Light Clair - - Performance - Performance - - - Pause wallpaper video rendering while another app is in the foreground - Mettre en pause le rendu vidéo du fond d'écran quand une autre application est en premier plan - - - We disable the video rendering (not the audio!) for the best performance. If you have problem you can disable this behaviour here. Wallpaper restart required! - Nous désactivons le rendu vidéo (pas l'audio) pour obtenir les meilleures performances. Si vous rencontrez des problèmes, vous pouvez désactiver ce comportement ici. Redémarrage du fond d'écran requis ! - - - Default Fill Mode - Mode de remplissage par défaut - Set this property to define how the video is scaled to fit the target area. Définissez cette propriété afin de déterminer la façon dont la vidéo est mise à l'échelle pour s'adapter à la zone cible. @@ -974,6 +954,30 @@ ScreenPlay will only quit if no Wallpaper are running. Privacy Confidentialité + + Show default installed content + + + + ScreenPlay will show build in content. + + + + Wallpaper and Widgets + + + + Pause wallpaper video rendering while another app is in the foreground. + + + + Limitations: This setting is Windows only, currently only works if you have exactly one monitor connected, and is limited to wallpapers with no audio. Wallpaper restart is required, when changing this setting! + + + + Default Wallpaper Fill Mode + + SettingsExpander @@ -1040,6 +1044,37 @@ ScreenPlay will only quit if no Wallpaper are running. Vous trouverez ci-dessous des outils pour créer des fonds d'écran, au-delà des outils que ScreenPlay met à votre disposition ! + + TrayIcon + + ScreenPlay - Double click to change you settings. + + + + Open ScreenPlay + + + + Mute all + + + + Unmute all + + + + Pause all + + + + Play all + + + + Quit ScreenPlay + + + WebsiteWallpaper diff --git a/ScreenPlay/translations/ScreenPlay_it_IT.ts b/ScreenPlay/translations/ScreenPlay_it_IT.ts index 3de0eb35..a8668e70 100644 --- a/ScreenPlay/translations/ScreenPlay_it_IT.ts +++ b/ScreenPlay/translations/ScreenPlay_it_IT.ts @@ -625,6 +625,10 @@ ScreenPlay will only quit if no Wallpaper are running. Widgets Widgets + + Search for Wallpaper & Widgets + + InstalledWelcomeScreen @@ -818,14 +822,6 @@ ScreenPlay will only quit if no Wallpaper are running. ScreenPlay will start with Windows and will setup your Desktop every time for you. ScreenPlay si avvierà con Windows e configurerà il desktop ogni volta per te. - - High priority Autostart - Avvio automatico ad alta priorità - - - This options grants ScreenPlay a higher autostart priority than other apps. - Questa opzione garantisce a ScreenPlay una priorità di avvio automatico più alta di altre applicazioni. - Send anonymous crash reports and statistics Invia report e statistiche anonime sui crash @@ -878,22 +874,6 @@ ScreenPlay will only quit if no Wallpaper are running. Light Chiaro - - Performance - Prestazioni - - - Pause wallpaper video rendering while another app is in the foreground - Metti in pausa il rendering video dello sfondo mentre un'altra app è in primo piano - - - We disable the video rendering (not the audio!) for the best performance. If you have problem you can disable this behaviour here. Wallpaper restart required! - Disattiviamo il rendering video (non l'audio!) per migliori prestazioni. Se hai problemi puoi disabilitare questa opzione qui. È necessario riavviare lo sfondo! - - - Default Fill Mode - Modalità riempimento predefinita - Set this property to define how the video is scaled to fit the target area. Imposta questa proprietà per definire come il video viene adattato all'area di destinazione. @@ -974,6 +954,30 @@ ScreenPlay will only quit if no Wallpaper are running. Privacy Privacy + + Show default installed content + + + + ScreenPlay will show build in content. + + + + Wallpaper and Widgets + + + + Pause wallpaper video rendering while another app is in the foreground. + + + + Limitations: This setting is Windows only, currently only works if you have exactly one monitor connected, and is limited to wallpapers with no audio. Wallpaper restart is required, when changing this setting! + + + + Default Wallpaper Fill Mode + + SettingsExpander @@ -1040,6 +1044,37 @@ ScreenPlay will only quit if no Wallpaper are running. Below you can find tools to create wallaper, beyond the tools that ScreenPlay provides for you! + + TrayIcon + + ScreenPlay - Double click to change you settings. + + + + Open ScreenPlay + + + + Mute all + + + + Unmute all + + + + Pause all + + + + Play all + + + + Quit ScreenPlay + + + WebsiteWallpaper diff --git a/ScreenPlay/translations/ScreenPlay_ko_KR.ts b/ScreenPlay/translations/ScreenPlay_ko_KR.ts index 723603ff..5ee20bbd 100644 --- a/ScreenPlay/translations/ScreenPlay_ko_KR.ts +++ b/ScreenPlay/translations/ScreenPlay_ko_KR.ts @@ -625,6 +625,10 @@ ScreenPlay will only quit if no Wallpaper are running. Widgets Widgets + + Search for Wallpaper & Widgets + + InstalledWelcomeScreen @@ -818,14 +822,6 @@ ScreenPlay will only quit if no Wallpaper are running. ScreenPlay will start with Windows and will setup your Desktop every time for you. ScreenPlay will start with Windows and will setup your Desktop every time for you. - - High priority Autostart - High priority Autostart - - - This options grants ScreenPlay a higher autostart priority than other apps. - This options grants ScreenPlay a higher autostart priority than other apps. - Send anonymous crash reports and statistics Send anonymous crash reports and statistics @@ -878,22 +874,6 @@ ScreenPlay will only quit if no Wallpaper are running. Light Light - - Performance - Performance - - - Pause wallpaper video rendering while another app is in the foreground - Pause wallpaper video rendering while another app is in the foreground - - - We disable the video rendering (not the audio!) for the best performance. If you have problem you can disable this behaviour here. Wallpaper restart required! - We disable the video rendering (not the audio!) for the best performance. If you have problem you can disable this behaviour here. Wallpaper restart required! - - - Default Fill Mode - Default Fill Mode - Set this property to define how the video is scaled to fit the target area. Set this property to define how the video is scaled to fit the target area. @@ -974,6 +954,30 @@ ScreenPlay will only quit if no Wallpaper are running. Privacy Privacy + + Show default installed content + + + + ScreenPlay will show build in content. + + + + Wallpaper and Widgets + + + + Pause wallpaper video rendering while another app is in the foreground. + + + + Limitations: This setting is Windows only, currently only works if you have exactly one monitor connected, and is limited to wallpapers with no audio. Wallpaper restart is required, when changing this setting! + + + + Default Wallpaper Fill Mode + + SettingsExpander @@ -1040,6 +1044,37 @@ ScreenPlay will only quit if no Wallpaper are running. Below you can find tools to create wallaper, beyond the tools that ScreenPlay provides for you! + + TrayIcon + + ScreenPlay - Double click to change you settings. + + + + Open ScreenPlay + + + + Mute all + + + + Unmute all + + + + Pause all + + + + Play all + + + + Quit ScreenPlay + + + WebsiteWallpaper diff --git a/ScreenPlay/translations/ScreenPlay_nl_NL.ts b/ScreenPlay/translations/ScreenPlay_nl_NL.ts index c1e78717..94801792 100644 --- a/ScreenPlay/translations/ScreenPlay_nl_NL.ts +++ b/ScreenPlay/translations/ScreenPlay_nl_NL.ts @@ -625,6 +625,10 @@ ScreenPlay will only quit if no Wallpaper are running. Widgets Widgets + + Search for Wallpaper & Widgets + + InstalledWelcomeScreen @@ -818,14 +822,6 @@ ScreenPlay will only quit if no Wallpaper are running. ScreenPlay will start with Windows and will setup your Desktop every time for you. ScreenPlay will start with Windows and will setup your Desktop every time for you. - - High priority Autostart - High priority Autostart - - - This options grants ScreenPlay a higher autostart priority than other apps. - This options grants ScreenPlay a higher autostart priority than other apps. - Send anonymous crash reports and statistics Send anonymous crash reports and statistics @@ -878,22 +874,6 @@ ScreenPlay will only quit if no Wallpaper are running. Light Light - - Performance - Performance - - - Pause wallpaper video rendering while another app is in the foreground - Pause wallpaper video rendering while another app is in the foreground - - - We disable the video rendering (not the audio!) for the best performance. If you have problem you can disable this behaviour here. Wallpaper restart required! - We disable the video rendering (not the audio!) for the best performance. If you have problem you can disable this behaviour here. Wallpaper restart required! - - - Default Fill Mode - Default Fill Mode - Set this property to define how the video is scaled to fit the target area. Set this property to define how the video is scaled to fit the target area. @@ -974,6 +954,30 @@ ScreenPlay will only quit if no Wallpaper are running. Privacy Privacy + + Show default installed content + + + + ScreenPlay will show build in content. + + + + Wallpaper and Widgets + + + + Pause wallpaper video rendering while another app is in the foreground. + + + + Limitations: This setting is Windows only, currently only works if you have exactly one monitor connected, and is limited to wallpapers with no audio. Wallpaper restart is required, when changing this setting! + + + + Default Wallpaper Fill Mode + + SettingsExpander @@ -1040,6 +1044,37 @@ ScreenPlay will only quit if no Wallpaper are running. Below you can find tools to create wallaper, beyond the tools that ScreenPlay provides for you! + + TrayIcon + + ScreenPlay - Double click to change you settings. + + + + Open ScreenPlay + + + + Mute all + + + + Unmute all + + + + Pause all + + + + Play all + + + + Quit ScreenPlay + + + WebsiteWallpaper diff --git a/ScreenPlay/translations/ScreenPlay_pl_PL.ts b/ScreenPlay/translations/ScreenPlay_pl_PL.ts index a3a0a647..aaa896cf 100644 --- a/ScreenPlay/translations/ScreenPlay_pl_PL.ts +++ b/ScreenPlay/translations/ScreenPlay_pl_PL.ts @@ -625,6 +625,10 @@ ScreenPlay will only quit if no Wallpaper are running. Widgets Widgets + + Search for Wallpaper & Widgets + + InstalledWelcomeScreen @@ -818,14 +822,6 @@ ScreenPlay will only quit if no Wallpaper are running. ScreenPlay will start with Windows and will setup your Desktop every time for you. ScreenPlay zostanie uruchomione przy starcie systemu Windows i ustawi dla Ciebie tapetę za każdym razem. - - High priority Autostart - Wysoki priorytet autostartu - - - This options grants ScreenPlay a higher autostart priority than other apps. - Ta opcja nadaje ScreenPlay wyższy priorytet autostartu w porównaniu do innych aplikacji. - Send anonymous crash reports and statistics Wysyłaj anonimowe raporty o awariach oraz statystyki @@ -878,22 +874,6 @@ ScreenPlay will only quit if no Wallpaper are running. Light Jasny - - Performance - Wydajność - - - Pause wallpaper video rendering while another app is in the foreground - Wstrzymaj renderowanie tapety wideo, gdy inna aplikacja jest na pierwszym planie - - - We disable the video rendering (not the audio!) for the best performance. If you have problem you can disable this behaviour here. Wallpaper restart required! - Wyłączamy renderowanie wideo (dźwięk zostaje!) dla najlepszej wydajności. W przypadku problemów, możesz wyłączyć tę funkcję tutaj. Wymaga ponownego uruchomienia tapety! - - - Default Fill Mode - Domyślny tryb wypełniania - Set this property to define how the video is scaled to fit the target area. To ustawienie określa, w jaki sposób film jest skalowany, aby dopasować go do obszaru docelowego. @@ -974,6 +954,30 @@ ScreenPlay will only quit if no Wallpaper are running. Privacy Prywatność + + Show default installed content + + + + ScreenPlay will show build in content. + + + + Wallpaper and Widgets + + + + Pause wallpaper video rendering while another app is in the foreground. + + + + Limitations: This setting is Windows only, currently only works if you have exactly one monitor connected, and is limited to wallpapers with no audio. Wallpaper restart is required, when changing this setting! + + + + Default Wallpaper Fill Mode + + SettingsExpander @@ -1040,6 +1044,37 @@ ScreenPlay will only quit if no Wallpaper are running. Poniżej znajdziesz dodatkowe narzędzia do tworzenia tapety poza tymi, które oferuje dla Ciebie ScreenPlay! + + TrayIcon + + ScreenPlay - Double click to change you settings. + + + + Open ScreenPlay + + + + Mute all + + + + Unmute all + + + + Pause all + + + + Play all + + + + Quit ScreenPlay + + + WebsiteWallpaper diff --git a/ScreenPlay/translations/ScreenPlay_pt_BR.ts b/ScreenPlay/translations/ScreenPlay_pt_BR.ts index 210eecfe..577a8fce 100644 --- a/ScreenPlay/translations/ScreenPlay_pt_BR.ts +++ b/ScreenPlay/translations/ScreenPlay_pt_BR.ts @@ -625,6 +625,10 @@ ScreenPlay will only quit if no Wallpaper are running. Widgets Widgets + + Search for Wallpaper & Widgets + + InstalledWelcomeScreen @@ -818,14 +822,6 @@ ScreenPlay will only quit if no Wallpaper are running. ScreenPlay will start with Windows and will setup your Desktop every time for you. ScreenPlay will start with Windows and will setup your Desktop every time for you. - - High priority Autostart - High priority Autostart - - - This options grants ScreenPlay a higher autostart priority than other apps. - This options grants ScreenPlay a higher autostart priority than other apps. - Send anonymous crash reports and statistics Send anonymous crash reports and statistics @@ -878,22 +874,6 @@ ScreenPlay will only quit if no Wallpaper are running. Light Light - - Performance - Performance - - - Pause wallpaper video rendering while another app is in the foreground - Pause wallpaper video rendering while another app is in the foreground - - - We disable the video rendering (not the audio!) for the best performance. If you have problem you can disable this behaviour here. Wallpaper restart required! - We disable the video rendering (not the audio!) for the best performance. If you have problem you can disable this behaviour here. Wallpaper restart required! - - - Default Fill Mode - Default Fill Mode - Set this property to define how the video is scaled to fit the target area. Set this property to define how the video is scaled to fit the target area. @@ -974,6 +954,30 @@ ScreenPlay will only quit if no Wallpaper are running. Privacy Privacy + + Show default installed content + + + + ScreenPlay will show build in content. + + + + Wallpaper and Widgets + + + + Pause wallpaper video rendering while another app is in the foreground. + + + + Limitations: This setting is Windows only, currently only works if you have exactly one monitor connected, and is limited to wallpapers with no audio. Wallpaper restart is required, when changing this setting! + + + + Default Wallpaper Fill Mode + + SettingsExpander @@ -1040,6 +1044,37 @@ ScreenPlay will only quit if no Wallpaper are running. Below you can find tools to create wallaper, beyond the tools that ScreenPlay provides for you! + + TrayIcon + + ScreenPlay - Double click to change you settings. + + + + Open ScreenPlay + + + + Mute all + + + + Unmute all + + + + Pause all + + + + Play all + + + + Quit ScreenPlay + + + WebsiteWallpaper diff --git a/ScreenPlay/translations/ScreenPlay_ru_RU.ts b/ScreenPlay/translations/ScreenPlay_ru_RU.ts index 815643b8..b4515b15 100644 --- a/ScreenPlay/translations/ScreenPlay_ru_RU.ts +++ b/ScreenPlay/translations/ScreenPlay_ru_RU.ts @@ -625,6 +625,10 @@ ScreenPlay will only quit if no Wallpaper are running. Widgets Widgets + + Search for Wallpaper & Widgets + + InstalledWelcomeScreen @@ -818,14 +822,6 @@ ScreenPlay will only quit if no Wallpaper are running. ScreenPlay will start with Windows and will setup your Desktop every time for you. ScreenPlay will start with Windows and will setup your Desktop every time for you. - - High priority Autostart - High priority Autostart - - - This options grants ScreenPlay a higher autostart priority than other apps. - This options grants ScreenPlay a higher autostart priority than other apps. - Send anonymous crash reports and statistics Send anonymous crash reports and statistics @@ -878,22 +874,6 @@ ScreenPlay will only quit if no Wallpaper are running. Light Light - - Performance - Performance - - - Pause wallpaper video rendering while another app is in the foreground - Pause wallpaper video rendering while another app is in the foreground - - - We disable the video rendering (not the audio!) for the best performance. If you have problem you can disable this behaviour here. Wallpaper restart required! - We disable the video rendering (not the audio!) for the best performance. If you have problem you can disable this behaviour here. Wallpaper restart required! - - - Default Fill Mode - Default Fill Mode - Set this property to define how the video is scaled to fit the target area. Set this property to define how the video is scaled to fit the target area. @@ -974,6 +954,30 @@ ScreenPlay will only quit if no Wallpaper are running. Privacy Privacy + + Show default installed content + + + + ScreenPlay will show build in content. + + + + Wallpaper and Widgets + + + + Pause wallpaper video rendering while another app is in the foreground. + + + + Limitations: This setting is Windows only, currently only works if you have exactly one monitor connected, and is limited to wallpapers with no audio. Wallpaper restart is required, when changing this setting! + + + + Default Wallpaper Fill Mode + + SettingsExpander @@ -1040,6 +1044,37 @@ ScreenPlay will only quit if no Wallpaper are running. Below you can find tools to create wallaper, beyond the tools that ScreenPlay provides for you! + + TrayIcon + + ScreenPlay - Double click to change you settings. + + + + Open ScreenPlay + + + + Mute all + + + + Unmute all + + + + Pause all + + + + Play all + + + + Quit ScreenPlay + + + WebsiteWallpaper diff --git a/ScreenPlay/translations/ScreenPlay_tr_TR.ts b/ScreenPlay/translations/ScreenPlay_tr_TR.ts index c82601eb..764a5518 100644 --- a/ScreenPlay/translations/ScreenPlay_tr_TR.ts +++ b/ScreenPlay/translations/ScreenPlay_tr_TR.ts @@ -625,6 +625,10 @@ ScreenPlay will only quit if no Wallpaper are running. Widgets Widgets + + Search for Wallpaper & Widgets + + InstalledWelcomeScreen @@ -818,14 +822,6 @@ ScreenPlay will only quit if no Wallpaper are running. ScreenPlay will start with Windows and will setup your Desktop every time for you. ScreenPlay, Windows ile başlayacak ve her seferinde sizin için Masaüstünüzü kuracaktır. - - High priority Autostart - Yüksek öncelikli Otomatik başlatma - - - This options grants ScreenPlay a higher autostart priority than other apps. - Bu seçenekler, ScreenPlay'e diğer uygulamalardan daha yüksek bir otomatik başlatma önceliği verir. - Send anonymous crash reports and statistics Send anonymous crash reports and statistics @@ -878,22 +874,6 @@ ScreenPlay will only quit if no Wallpaper are running. Light Aydınlık - - Performance - Performans - - - Pause wallpaper video rendering while another app is in the foreground - Başka bir uygulama ön plandayken duvar kağıdı video oluşturmayı duraklatın - - - We disable the video rendering (not the audio!) for the best performance. If you have problem you can disable this behaviour here. Wallpaper restart required! - En iyi performans için video oluşturmayı (sesi değil!) devre dışı bırakıyoruz. Sorun yaşıyorsanız, bu davranışı buradan devre dışı bırakabilirsiniz. Duvar kağıdının yeniden başlatılması gerekiyor! - - - Default Fill Mode - Varsayılan Doldurma Modu - Set this property to define how the video is scaled to fit the target area. Videonun hedef alana sığacak şekilde nasıl ölçeklendirileceğini tanımlamak için bu özelliği ayarlayın. @@ -974,6 +954,30 @@ ScreenPlay will only quit if no Wallpaper are running. Privacy Privacy + + Show default installed content + + + + ScreenPlay will show build in content. + + + + Wallpaper and Widgets + + + + Pause wallpaper video rendering while another app is in the foreground. + + + + Limitations: This setting is Windows only, currently only works if you have exactly one monitor connected, and is limited to wallpapers with no audio. Wallpaper restart is required, when changing this setting! + + + + Default Wallpaper Fill Mode + + SettingsExpander @@ -1040,6 +1044,37 @@ ScreenPlay will only quit if no Wallpaper are running. Below you can find tools to create wallaper, beyond the tools that ScreenPlay provides for you! + + TrayIcon + + ScreenPlay - Double click to change you settings. + + + + Open ScreenPlay + + + + Mute all + + + + Unmute all + + + + Pause all + + + + Play all + + + + Quit ScreenPlay + + + WebsiteWallpaper diff --git a/ScreenPlay/translations/ScreenPlay_vi_VN.ts b/ScreenPlay/translations/ScreenPlay_vi_VN.ts index 692d6c67..4ad437cb 100644 --- a/ScreenPlay/translations/ScreenPlay_vi_VN.ts +++ b/ScreenPlay/translations/ScreenPlay_vi_VN.ts @@ -625,6 +625,10 @@ ScreenPlay will only quit if no Wallpaper are running. Widgets Widgets + + Search for Wallpaper & Widgets + + InstalledWelcomeScreen @@ -818,14 +822,6 @@ ScreenPlay will only quit if no Wallpaper are running. ScreenPlay will start with Windows and will setup your Desktop every time for you. ScreenPlay sẽ chạy cùng với Windows và sẽ thiết lập màn hình nền cho bạn. - - High priority Autostart - Tự động mở ưu tiên hơn - - - This options grants ScreenPlay a higher autostart priority than other apps. - Tùy chọn này cho phép ScreenPlay quyền tự động chạy ưu tiên hơn những ứng dụng khác. - Send anonymous crash reports and statistics Gửi báo cáo sự cố và só liệu thống kê ẩn danh @@ -878,22 +874,6 @@ ScreenPlay will only quit if no Wallpaper are running. Light Sáng - - Performance - Hiệu suất - - - Pause wallpaper video rendering while another app is in the foreground - Tạm dừng ảnh nền video khi có một ứng dụng khác đang mở phía trước - - - We disable the video rendering (not the audio!) for the best performance. If you have problem you can disable this behaviour here. Wallpaper restart required! - Chúng tôi tắt hiển thị video (không phải âm thanh!) Để có hiệu suất tốt nhất. Nếu bạn gặp sự cố, bạn có thể vô hiệu hóa hành vi này tại đây. Yêu cầu khởi động lại hình nền! - - - Default Fill Mode - Cách lấp đầy mặc định - Set this property to define how the video is scaled to fit the target area. Đặt thuộc tính này để xác định cách chia tỷ lệ video để phù hợp với khu vực mục tiêu. @@ -974,6 +954,30 @@ ScreenPlay will only quit if no Wallpaper are running. Privacy Quyền riêng tư + + Show default installed content + + + + ScreenPlay will show build in content. + + + + Wallpaper and Widgets + + + + Pause wallpaper video rendering while another app is in the foreground. + + + + Limitations: This setting is Windows only, currently only works if you have exactly one monitor connected, and is limited to wallpapers with no audio. Wallpaper restart is required, when changing this setting! + + + + Default Wallpaper Fill Mode + + SettingsExpander @@ -1040,6 +1044,37 @@ ScreenPlay will only quit if no Wallpaper are running. Below you can find tools to create wallaper, beyond the tools that ScreenPlay provides for you! + + TrayIcon + + ScreenPlay - Double click to change you settings. + + + + Open ScreenPlay + + + + Mute all + + + + Unmute all + + + + Pause all + + + + Play all + + + + Quit ScreenPlay + + + WebsiteWallpaper diff --git a/ScreenPlay/translations/ScreenPlay_zh_CN.ts b/ScreenPlay/translations/ScreenPlay_zh_CN.ts index 205a158a..7f71130e 100644 --- a/ScreenPlay/translations/ScreenPlay_zh_CN.ts +++ b/ScreenPlay/translations/ScreenPlay_zh_CN.ts @@ -625,6 +625,10 @@ ScreenPlay will only quit if no Wallpaper are running. Widgets Widgets + + Search for Wallpaper & Widgets + + InstalledWelcomeScreen @@ -818,14 +822,6 @@ ScreenPlay will only quit if no Wallpaper are running. ScreenPlay will start with Windows and will setup your Desktop every time for you. ScreenPlay将在操作系统启动时启动,并会设置您的桌面。 - - High priority Autostart - 高优先级自启动 - - - This options grants ScreenPlay a higher autostart priority than other apps. - 这个选项赋予ScreenPlay比其他应用程序更高的自启动优先级。 - Send anonymous crash reports and statistics 发送匿名崩溃报告和统计数据 @@ -878,22 +874,6 @@ ScreenPlay will only quit if no Wallpaper are running. Light - - Performance - 性能 - - - Pause wallpaper video rendering while another app is in the foreground - 当其他应用程序在前台时,暂停壁纸视频渲染 - - - We disable the video rendering (not the audio!) for the best performance. If you have problem you can disable this behaviour here. Wallpaper restart required! - 我们禁用视频渲染(不是音频)以获得最佳性能。如果您有问题,可以在此处禁用此行为。 需要重启壁纸! - - - Default Fill Mode - 默认填充模式 - Set this property to define how the video is scaled to fit the target area. 设置此属性可定义视频的缩放方式以适应目标区域。 @@ -974,6 +954,30 @@ ScreenPlay will only quit if no Wallpaper are running. Privacy 隐私 + + Show default installed content + + + + ScreenPlay will show build in content. + + + + Wallpaper and Widgets + + + + Pause wallpaper video rendering while another app is in the foreground. + + + + Limitations: This setting is Windows only, currently only works if you have exactly one monitor connected, and is limited to wallpapers with no audio. Wallpaper restart is required, when changing this setting! + + + + Default Wallpaper Fill Mode + + SettingsExpander @@ -1040,6 +1044,37 @@ ScreenPlay will only quit if no Wallpaper are running. 下面是一些非ScreenPlay提供的壁纸创建工具 + + TrayIcon + + ScreenPlay - Double click to change you settings. + + + + Open ScreenPlay + + + + Mute all + + + + Unmute all + + + + Pause all + + + + Play all + + + + Quit ScreenPlay + + + WebsiteWallpaper diff --git a/ScreenPlaySDK/src/screenplaysdk.cpp b/ScreenPlaySDK/src/screenplaysdk.cpp index 4caec706..1847890e 100644 --- a/ScreenPlaySDK/src/screenplaysdk.cpp +++ b/ScreenPlaySDK/src/screenplaysdk.cpp @@ -63,7 +63,7 @@ void ScreenPlaySDK::connected() return; } - QByteArray welcomeMessage = QString("appID=" + m_appID + "," + m_type).toUtf8(); + QByteArray welcomeMessage = QString("appID=" + m_appID + "," + m_type + ";").toUtf8(); m_socket.write(welcomeMessage); if (!m_socket.waitForBytesWritten()) { disconnected(); @@ -164,7 +164,7 @@ void ScreenPlaySDK::redirectMessage(QByteArray& msg) void ScreenPlaySDK::pingAlive() { - m_socket.write("ping"); + m_socket.write("ping;"); if (!m_socket.waitForBytesWritten(500)) { qInfo() << "Cannot ping to main application. Closing!"; emit sdkDisconnected(); diff --git a/ScreenPlayWallpaper/Godot/GDExtention/cmake/CompilerWarnings.cmake b/ScreenPlayWallpaper/Godot/GDExtention/cmake/CompilerWarnings.cmake index bee0550f..78aab1e7 100644 --- a/ScreenPlayWallpaper/Godot/GDExtention/cmake/CompilerWarnings.cmake +++ b/ScreenPlayWallpaper/Godot/GDExtention/cmake/CompilerWarnings.cmake @@ -7,7 +7,7 @@ if ( NOT MSVC ) option( ${PROJECT_NAME_UPPERCASE}_WARN_EVERYTHING "Turn on all warnings (not recommended - used for lib development)" OFF ) endif() -option( ${PROJECT_NAME_UPPERCASE}_WARNING_AS_ERROR "Treat warnings as errors" ON ) +option( ${PROJECT_NAME_UPPERCASE}_WARNING_AS_ERROR "Treat warnings as errors" OFF ) # Add warnings based on compiler # Set some helper variables for readability diff --git a/ScreenPlayWallpaper/Godot/GDExtention/src/CMakeLists.txt b/ScreenPlayWallpaper/Godot/GDExtention/src/CMakeLists.txt index 22634324..b2480007 100644 --- a/ScreenPlayWallpaper/Godot/GDExtention/src/CMakeLists.txt +++ b/ScreenPlayWallpaper/Godot/GDExtention/src/CMakeLists.txt @@ -4,10 +4,17 @@ target_sources(${PROJECT_NAME} PRIVATE ScreenPlayGodotWallpaper.h ScreenPlayGodotWallpaper.cpp + WindowsPipe.h + WindowsPipe.cpp RegisterExtension.cpp ) - +find_package(Catch2 CONFIG REQUIRED) target_include_directories(${PROJECT_NAME} PRIVATE "src" ) + +# Test app. Start WindowsPipeTestServer.py! +add_executable(WindowsPipeTest WindowsPipeTest.cpp WindowsPipe.h WindowsPipe.cpp) +target_link_libraries(WindowsPipeTest PRIVATE Catch2::Catch2 Catch2::Catch2WithMain) +target_include_directories(WindowsPipeTest PRIVATE "src") \ No newline at end of file diff --git a/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayGodotWallpaper.cpp b/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayGodotWallpaper.cpp index 32369628..dfff013d 100644 --- a/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayGodotWallpaper.cpp +++ b/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayGodotWallpaper.cpp @@ -10,8 +10,14 @@ //// ScreenPlayWallpaper using namespace godot; -int ScreenPlayGodotWallpaper::sInstanceCount = 0; -int ScreenPlayGodotWallpaper::sLastID = 0; + +ScreenPlayGodotWallpaper::ScreenPlayGodotWallpaper() +{ +} + +ScreenPlayGodotWallpaper::~ScreenPlayGodotWallpaper() +{ +} void ScreenPlayGodotWallpaper::_bind_methods() { @@ -22,7 +28,7 @@ void ScreenPlayGodotWallpaper::_bind_methods() ClassDB::bind_method(godot::D_METHOD("get_screenPlayConnected"), &ScreenPlayGodotWallpaper::get_screenPlayConnected); ClassDB::bind_method(godot::D_METHOD("get_pipeConnected"), &ScreenPlayGodotWallpaper::get_pipeConnected); ClassDB::bind_method(godot::D_METHOD("read_from_pipe"), &ScreenPlayGodotWallpaper::read_from_pipe); - ClassDB::bind_method(godot::D_METHOD("ping_alive_screenplay"), &ScreenPlayGodotWallpaper::ping_alive_screenplay); + ClassDB::bind_method(godot::D_METHOD("send_ping"), &ScreenPlayGodotWallpaper::send_ping); ClassDB::bind_method(godot::D_METHOD("exit"), &ScreenPlayGodotWallpaper::exit); ClassDB::bind_method(godot::D_METHOD("get_activeScreensList"), &ScreenPlayGodotWallpaper::get_activeScreensList); @@ -49,24 +55,6 @@ void ScreenPlayGodotWallpaper::hideFromTaskbar(HWND hwnd) SetWindowLong(hwnd, GWL_EXSTYLE, lExStyle); } -ScreenPlayGodotWallpaper::ScreenPlayGodotWallpaper() -{ - mID = ++sLastID; - sInstanceCount++; - - UtilityFunctions::print( - "ScreenPlayWallpaper ", itos(mID), - " created, current instance count: ", itos(sInstanceCount)); -} - -ScreenPlayGodotWallpaper::~ScreenPlayGodotWallpaper() -{ - sInstanceCount--; - UtilityFunctions::print( - "ScreenPlayWallpaper ", itos(mID), - " destroyed, current instance count: ", itos(sInstanceCount)); -} - bool ScreenPlayGodotWallpaper::configureWindowGeometry() { if (!m_hook->searchWorkerWindowToParentTo()) { @@ -141,66 +129,39 @@ bool ScreenPlayGodotWallpaper::init(int activeScreen) bool ScreenPlayGodotWallpaper::connect_to_named_pipe() { - m_pipeConnected = false; - String pipeName = "ScreenPlay"; - String fullPipeName = "\\\\.\\pipe\\" + pipeName; - std::wstring wPipeName = std::wstring(fullPipeName.wide_string()); - - m_hPipe = CreateFileW( - wPipeName.c_str(), - GENERIC_READ | GENERIC_WRITE, - 0, - NULL, - OPEN_EXISTING, - 0, - NULL); - - if (m_hPipe == INVALID_HANDLE_VALUE) { - m_pipeConnected = false; - UtilityFunctions::print("CreateFile failed, error code: " + String::num_int64(GetLastError())); - return false; - } - - m_pipeConnected = true; - return true; + m_windowsPipe.setPipeName(L"ScreenPlay"); + m_pipeConnected = m_windowsPipe.start(); + return m_pipeConnected; } godot::String ScreenPlayGodotWallpaper::read_from_pipe() { - char buffer[128]; - DWORD bytesRead; - String result; - - if (ReadFile(m_hPipe, buffer, sizeof(buffer) - 1, &bytesRead, NULL)) { - buffer[bytesRead] = '\0'; - result = String(buffer); - } else { - UtilityFunctions::print("ReadFile from pipe failed, error code: " + String::num_int64(GetLastError())); + std::string outMsg; + if (!m_windowsPipe.readFromPipe(outMsg)) { + UtilityFunctions::print("Unable to read from pipe"); + return ""; } - - return result; + return godot::String(outMsg.c_str()); } -bool ScreenPlayGodotWallpaper::ping_alive_screenplay() +bool ScreenPlayGodotWallpaper::writeToPipe(const godot::String& message) { - if (m_hPipe == INVALID_HANDLE_VALUE) { - UtilityFunctions::print("INVALID_HANDLE_VALUE"); - return false; - } + std::string stdMessage = message.utf8().get_data(); + return m_windowsPipe.writeToPipe(stdMessage); +} + +bool ScreenPlayGodotWallpaper::send_ping() +{ if (!m_screenPlayConnected || !m_pipeConnected) { UtilityFunctions::print("ScreenPlay hasn't connected to us yet!"); return false; } - - const std::string message = "ping"; - DWORD bytesWritten; - WriteFile(m_hPipe, message.c_str(), static_cast(message.size()), &bytesWritten, NULL); - - if (bytesWritten != message.size()) { - UtilityFunctions::print("Unable to send alive ping"); + const godot::String msg = "ping;"; + if (!writeToPipe(msg)) { return false; } + return true; } @@ -214,19 +175,12 @@ bool ScreenPlayGodotWallpaper::send_welcome() // Construct welcome message and write to the named pipe // See void ScreenPlay::SDKConnection::readyRead() - godot::String welcomeMessage = godot::String("appID=") + m_appID + ",godotWallpaper"; - - std::string stdMessage = welcomeMessage.utf8().get_data(); - DWORD bytesWritten; - WriteFile(m_hPipe, stdMessage.c_str(), static_cast(stdMessage.size()), &bytesWritten, NULL); - - if (bytesWritten != stdMessage.size()) { - UtilityFunctions::print("Unable to send welcome message:", welcomeMessage); + godot::String msg = godot::String("appID=") + m_appID + ",godotWallpaper;"; + if (!writeToPipe(msg)) { return false; } m_screenPlayConnected = true; - // m_pingAliveTimer->start(); return true; } @@ -273,7 +227,6 @@ bool ScreenPlayGodotWallpaper::get_pipeConnected() const } bool ScreenPlayGodotWallpaper::exit() { - // Somehow this gets called at editor startup // so just return if not initialized if (m_hook) { @@ -282,12 +235,8 @@ bool ScreenPlayGodotWallpaper::exit() // Force refresh so that we display the regular // desktop wallpaper again - ShowWindow(m_hook->windowHandleWorker, SW_HIDE); ShowWindow(m_hook->windowHandleWorker, SW_SHOW); - } - // Destructor - if (m_hPipe != INVALID_HANDLE_VALUE) { - CloseHandle(m_hPipe); + ShowWindow(m_hook->windowHandleWorker, SW_HIDE); } return true; } diff --git a/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayGodotWallpaper.h b/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayGodotWallpaper.h index 916a6ad6..7a184eb8 100644 --- a/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayGodotWallpaper.h +++ b/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayGodotWallpaper.h @@ -15,6 +15,7 @@ #include "ScreenPlayGodotWallpaper.h" #include "windowshook.h" +#include "WindowsPipe.h" class ScreenPlayGodotWallpaper : public godot::Node { GDCLASS(ScreenPlayGodotWallpaper, Node) @@ -26,6 +27,7 @@ public: bool init(int activeScreen); bool connect_to_named_pipe(); bool send_welcome(); + bool writeToPipe(const godot::String& message); godot::String read_from_pipe(); void messageReceived(const std::string& key, const std::string& value); @@ -41,7 +43,7 @@ public: void set_checkWallpaperVisible(bool visible); bool get_screenPlayConnected() const; bool get_pipeConnected() const; - bool ping_alive_screenplay(); + bool send_ping(); bool exit(); protected: @@ -52,17 +54,17 @@ private: void hideFromTaskbar(HWND hwnd); private: - static int sInstanceCount; - static int sLastID; - int mID; + OVERLAPPED overlappedRead = {}; + OVERLAPPED overlappedWrite = {}; + godot::String m_appID = ""; godot::String m_projectPath = ""; std::unique_ptr m_hook; - HANDLE m_hPipe; double m_timesinceLastRead = 0.0; bool m_pipeConnected = false; bool m_screenPlayConnected = false; + WindowsPipe m_windowsPipe; godot::PackedInt64Array m_activeScreensList; float m_volume = 0.0; diff --git a/ScreenPlayWallpaper/Godot/GDExtention/src/WindowsPipe.cpp b/ScreenPlayWallpaper/Godot/GDExtention/src/WindowsPipe.cpp new file mode 100644 index 00000000..1668ec6a --- /dev/null +++ b/ScreenPlayWallpaper/Godot/GDExtention/src/WindowsPipe.cpp @@ -0,0 +1,77 @@ +#include "WindowsPipe.h" + +bool WindowsPipe::connectToPipe() { + if (m_pipeName.empty()) { + std::cerr << "Pipe name not set." << std::endl; + return false; + } + + std::wstring fullPipeName = L"\\\\.\\pipe\\" + m_pipeName; + + m_hPipe = CreateFileW( + fullPipeName.c_str(), + GENERIC_READ | GENERIC_WRITE, + 0, + NULL, + OPEN_EXISTING, + FILE_FLAG_OVERLAPPED, + NULL); + + if (m_hPipe == INVALID_HANDLE_VALUE) { + std::cerr << "Failed to connect to pipe. Error code: " << GetLastError() << std::endl; + return false; + } + + return true; +} + +bool WindowsPipe::readFromPipe(std::string& outMessage) { + char buffer[128]; + DWORD bytesRead; + + if (!ReadFile(m_hPipe, buffer, sizeof(buffer) - 1, &bytesRead, &m_overlapped)) { + DWORD error = GetLastError(); + if (error == ERROR_IO_PENDING) { + // Check if the overlapped read operation is complete without waiting + if (!GetOverlappedResult(m_hPipe, &m_overlapped, &bytesRead, FALSE)) { + if (GetLastError() == ERROR_IO_INCOMPLETE) { + // The I/O operation is still pending (no data available yet) + return false; + } + std::cerr << "Overlapped ReadFile failed. Error code: " << GetLastError() << std::endl; + return false; + } + } else { + std::cerr << "ReadFile from pipe failed. Error code: " << error << std::endl; + return false; + } + } + + buffer[bytesRead] = '\0'; + outMessage = buffer; + return true; +} + + +bool WindowsPipe::writeToPipe(const std::string& message) { + DWORD bytesWritten; + + if (!WriteFile(m_hPipe, message.c_str(), static_cast(message.size()), &bytesWritten, &m_overlapped)) { + if (GetLastError() != ERROR_IO_PENDING) { + std::cerr << "WriteFile to pipe failed. Error code: " << GetLastError() << std::endl; + return false; + } + WaitForSingleObject(m_overlapped.hEvent, INFINITE); + if (!GetOverlappedResult(m_hPipe, &m_overlapped, &bytesWritten, FALSE)) { + std::cerr << "Overlapped WriteFile failed. Error code: " << GetLastError() << std::endl; + return false; + } + } + + if (static_cast(bytesWritten) != message.size()) { + std::cerr << "Bytes written mismatch." << std::endl; + return false; + } + + return true; +} diff --git a/ScreenPlayWallpaper/Godot/GDExtention/src/WindowsPipe.h b/ScreenPlayWallpaper/Godot/GDExtention/src/WindowsPipe.h new file mode 100644 index 00000000..65c57c60 --- /dev/null +++ b/ScreenPlayWallpaper/Godot/GDExtention/src/WindowsPipe.h @@ -0,0 +1,42 @@ +#pragma once + +#include +#include +#include + +class WindowsPipe { +public: + WindowsPipe() + : m_hPipe(INVALID_HANDLE_VALUE) + { + memset(&m_overlapped, 0, sizeof(m_overlapped)); + m_overlapped.hEvent = CreateEvent(NULL, TRUE, FALSE, NULL); // Manual reset event + } + + void setPipeName(const std::wstring& pipeName) { + m_pipeName = pipeName; + } + + bool start() { + return connectToPipe(); + } + + bool readFromPipe(std::string& outMessage); + bool writeToPipe(const std::string& message); + + ~WindowsPipe() { + if (m_hPipe != INVALID_HANDLE_VALUE) { + CloseHandle(m_hPipe); + } + CloseHandle(m_overlapped.hEvent); + } + +private: + bool connectToPipe(); + +private: + HANDLE m_hPipe; + OVERLAPPED m_overlapped; + std::wstring m_pipeName; + +}; diff --git a/ScreenPlayWallpaper/Godot/GDExtention/src/WindowsPipeTest.cpp b/ScreenPlayWallpaper/Godot/GDExtention/src/WindowsPipeTest.cpp new file mode 100644 index 00000000..f64231cf --- /dev/null +++ b/ScreenPlayWallpaper/Godot/GDExtention/src/WindowsPipeTest.cpp @@ -0,0 +1,27 @@ +// SPDX-License-Identifier: LicenseRef-EliasSteurerTachiom OR AGPL-3.0-only + +#include "WindowsPipe.h" + +#define CATCH_CONFIG_MAIN +#include + +TEST_CASE("Test WindowsPipe with Python echo server", "[WindowsPipe]") +{ + WindowsPipe client; + client.setPipeName(L"ScreenPlay"); + REQUIRE(client.start()); + const int count = 100; + + SECTION("Ping server and expect ping back") + { + for (size_t i = 0; i < count; i++) { + std::string message = "ping;"; + REQUIRE(client.writeToPipe(message)); + + std::string response; + REQUIRE(client.readFromPipe(response)); + REQUIRE(response == "pong;"); + std::cout << response <<"ok\n"; + } + } +} diff --git a/ScreenPlayWallpaper/Godot/GDExtention/src/windowsPipeTestServer.py b/ScreenPlayWallpaper/Godot/GDExtention/src/windowsPipeTestServer.py new file mode 100644 index 00000000..f8f76ca6 --- /dev/null +++ b/ScreenPlayWallpaper/Godot/GDExtention/src/windowsPipeTestServer.py @@ -0,0 +1,56 @@ + +# python -m pip install pywin32 +import win32pipe +import win32file +import pywintypes +import time + +PIPE_NAME = 'ScreenPlay' + +def create_pipe(): + return win32pipe.CreateNamedPipe( + r'\\.\pipe\{}'.format(PIPE_NAME), + win32pipe.PIPE_ACCESS_DUPLEX, + win32pipe.PIPE_TYPE_MESSAGE | win32pipe.PIPE_READMODE_MESSAGE | win32pipe.PIPE_WAIT, + 1, # max instances + 65536, # out buffer size + 65536, # in buffer size + 0, # default timeout + None # security attributes + ) + +def main(): + print("Starting Python Pipe Server...") + pipe_handle = create_pipe() + print("Waiting for a client to connect...") + win32pipe.ConnectNamedPipe(pipe_handle, None) + + while True: + try: + # Reading from the client + result, data = win32file.ReadFile(pipe_handle, 4096) + if result == 0: # 0 means the read operation completed successfully + print("Received:", data.decode()) + + # Sending a response back to the client + response = "pong;" + win32file.WriteFile(pipe_handle, response.encode()) + + except pywintypes.error as e: + if e.args[0] == 109: # ERROR_BROKEN_PIPE + print("Client disconnected.") + # Disconnect and close the current pipe handle + win32pipe.DisconnectNamedPipe(pipe_handle) + win32file.CloseHandle(pipe_handle) + + # Create a new pipe instance for the next client + pipe_handle = create_pipe() + + else: + print("Error occurred:", e) + + + #time.sleep(0.01) + +if __name__ == '__main__': + main() diff --git a/ScreenPlayWallpaper/Godot/GDExtention/templates/CMakeLists.txt b/ScreenPlayWallpaper/Godot/GDExtention/templates/CMakeLists.txt index f6217afd..e5cb7fcf 100644 --- a/ScreenPlayWallpaper/Godot/GDExtention/templates/CMakeLists.txt +++ b/ScreenPlayWallpaper/Godot/GDExtention/templates/CMakeLists.txt @@ -28,7 +28,7 @@ endif() # Generate our project's .gdextension file from the template set(OUT_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../../ScreenPlayGodot/${PROJECT_NAME}/) set(GD_EXTENSION_FILE ${PROJECT_NAME}.gdextension) -configure_file(${GD_EXTENSION_FILE_INPUT} ${OUT_PATH}/${GD_EXTENSION_FILE}) +#configure_file(${GD_EXTENSION_FILE_INPUT} ${OUT_PATH}/${GD_EXTENSION_FILE}) unset(ALLOWED_BUILDS) unset(BUILD_TYPE) diff --git a/ScreenPlayWallpaper/Godot/ScreenPlayGodot/ScreenPlayGodotWallpaper/ScreenPlayGodotWallpaper.gdextension b/ScreenPlayWallpaper/Godot/ScreenPlayGodot/ScreenPlayGodotWallpaper/ScreenPlayGodotWallpaper.gdextension index 918cdd9a..5cd17ebe 100644 --- a/ScreenPlayWallpaper/Godot/ScreenPlayGodot/ScreenPlayGodotWallpaper/ScreenPlayGodotWallpaper.gdextension +++ b/ScreenPlayWallpaper/Godot/ScreenPlayGodot/ScreenPlayGodotWallpaper/ScreenPlayGodotWallpaper.gdextension @@ -5,9 +5,9 @@ compatibility_minimum = 4.1 [libraries] -linux.debug.x86_64 = "lib/Linux-x86_64/libScreenPlayGodotWallpaper-d.so" -macos.debug = "lib/Darwin-Universal/libScreenPlayGodotWallpaper-d.dylib" -windows.debug.x86_64 = "lib/Windows-AMD64/ScreenPlayGodotWallpaper-d.dll" -linux.release.x86_64 = "lib/Linux-x86_64/libScreenPlayGodotWallpaper.so" -macos.release = "lib/Darwin-universal/libScreenPlayGodotWallpaper.dylib" -windows.release.x86_64 = "lib/Windows-AMD64/ScreenPlayGodotWallpaper.dll" \ No newline at end of file +macos.release = "res://ScreenPlayGodotWallpaper/lib/Darwin-universal/libScreenPlayGodotWallpaper.dylib" +macos.debug = "res://ScreenPlayGodotWallpaper/lib/Darwin-Universal/libScreenPlayGodotWallpaper-d.dylib" +linux.release.x86_64 = "res://ScreenPlayGodotWallpaper/lib/Linux-x86_64/libScreenPlayGodotWallpaper.so" +linux.debug.x86_64 = "res://ScreenPlayGodotWallpaper/lib/Linux-x86_64/libScreenPlayGodotWallpaper-d.so" +windows.release.x86_64 = "res://ScreenPlayGodotWallpaper/lib/Windows-AMD64/ScreenPlayGodotWallpaper.dll" +windows.debug.x86_64 = "res://ScreenPlayGodotWallpaper/lib/Windows-AMD64/ScreenPlayGodotWallpaper-d.dll" \ No newline at end of file diff --git a/ScreenPlayWallpaper/Godot/ScreenPlayGodot/export_presets.cfg b/ScreenPlayWallpaper/Godot/ScreenPlayGodot/export_presets.cfg index da086714..88e962f2 100644 --- a/ScreenPlayWallpaper/Godot/ScreenPlayGodot/export_presets.cfg +++ b/ScreenPlayWallpaper/Godot/ScreenPlayGodot/export_presets.cfg @@ -8,7 +8,7 @@ custom_features="" export_filter="all_resources" include_filter="" exclude_filter="" -export_path="./ScreenPlayWallpaperGodot.exe" +export_path="" encryption_include_filters="" encryption_exclude_filters="" encrypt_pck=false diff --git a/ScreenPlayWallpaper/Godot/ScreenPlayGodot/main.gd b/ScreenPlayWallpaper/Godot/ScreenPlayGodot/main.gd index a95b8b5e..08a227d6 100644 --- a/ScreenPlayWallpaper/Godot/ScreenPlayGodot/main.gd +++ b/ScreenPlayWallpaper/Godot/ScreenPlayGodot/main.gd @@ -1,24 +1,41 @@ extends Node3D -@onready var screen_play_wallpaper = $ScreenPlayGodotWallpaper +@onready var screen_play_wallpaper: ScreenPlayGodotWallpaper = $ScreenPlayGodotWallpaper +@onready var ping_alive_timer: Timer = $PingAliveTimer +@onready var check_messages_timer: Timer = $CheckMessagesTimer +var send_welcome: bool = false -@onready var alive_timer = $AliveTimer +# Pings main ScreenPlay application that +# this wallpaper is still active +func ping_alive(): + print("GD: ping_alive") + var success = screen_play_wallpaper.send_ping() + print("1 ping_alive_screenplay: ", success) + if not success: + terminate() -func ping_alive_screenplay(): - var ping_alive_screenplay = screen_play_wallpaper.ping_alive_screenplay() - var msg = screen_play_wallpaper.read_from_pipe() - if not msg.isEmpty(): - print("message", msg) - if "quit" in msg: - var exit = screen_play_wallpaper.exit() - print("exit ", exit) - get_tree().quit() - return - - #print("ping_alive_screenplay: ", ping_alive_screenplay) +func terminate(): + var exit = screen_play_wallpaper.exit() + print("exit ", exit) + get_tree().quit() +# Checks for messages from the main ScreenPlay instance +# for example for propery changes or commands like quit +func check_messages(): + print("GD: check_messages") + var msg = screen_play_wallpaper.read_from_pipe() + if not msg.is_empty(): + print("message: ", msg) + if "quit" in msg: + return terminate() + + func _ready(): - alive_timer.timeout.connect(ping_alive_screenplay) + ping_alive_timer.wait_time = 0.5 + ping_alive_timer.timeout.connect(ping_alive) + + check_messages_timer.wait_time = 0.5 + check_messages_timer.timeout.connect(check_messages) if not screen_play_wallpaper: printerr("ERROR INVALID SCREENPLAY OBJECT") @@ -41,18 +58,25 @@ func _ready(): get_tree().quit() return Engine.set_max_fps(24) + var ok = screen_play_wallpaper.init(screen_play_wallpaper.get_activeScreensList()[0]) + print("init ", ok) if not screen_play_wallpaper.get_pipeConnected(): print("connect to ScreenPlay") - var ok_connect_to_named_pipe = screen_play_wallpaper.connect_to_named_pipe() + var ok_connect_to_named_pipe = screen_play_wallpaper.connect_to_named_pipe() print("connection: ", ok_connect_to_named_pipe) - if not screen_play_wallpaper.get_screenPlayConnected(): - print("send_welcome") - var send_welcome = screen_play_wallpaper.send_welcome() - print("send_welcome: ", send_welcome) - if send_welcome: - alive_timer.start() + +func _process(delta): + + if not send_welcome: + if not screen_play_wallpaper.get_screenPlayConnected(): + print("send_welcome") + send_welcome = screen_play_wallpaper.send_welcome() + print("send_welcome: ", send_welcome) + if send_welcome: + check_messages_timer.start() + ping_alive_timer.start() func load_scene(path): diff --git a/ScreenPlayWallpaper/Godot/ScreenPlayGodot/main.tscn b/ScreenPlayWallpaper/Godot/ScreenPlayGodot/main.tscn index ed5dff7d..6958b3e3 100644 --- a/ScreenPlayWallpaper/Godot/ScreenPlayGodot/main.tscn +++ b/ScreenPlayWallpaper/Godot/ScreenPlayGodot/main.tscn @@ -7,5 +7,8 @@ script = ExtResource("1_ceeuk") [node name="ScreenPlayGodotWallpaper" type="ScreenPlayGodotWallpaper" parent="."] -[node name="AliveTimer" type="Timer" parent="."] +[node name="PingAliveTimer" type="Timer" parent="."] +wait_time = 0.5 + +[node name="CheckMessagesTimer" type="Timer" parent="."] wait_time = 0.5 diff --git a/ScreenPlayWallpaper/Godot/ScreenPlayGodot/project.godot b/ScreenPlayWallpaper/Godot/ScreenPlayGodot/project.godot index a735cac4..e719c85d 100644 --- a/ScreenPlayWallpaper/Godot/ScreenPlayGodot/project.godot +++ b/ScreenPlayWallpaper/Godot/ScreenPlayGodot/project.godot @@ -13,6 +13,7 @@ config_version=5 config/name="ScreenPlay" run/main_scene="res://main.tscn" config/features=PackedStringArray("4.1", "Mobile") +run/flush_stdout_on_print=true boot_splash/bg_color=Color(0.141176, 0.141176, 0.141176, 0) boot_splash/show_image=false boot_splash/fullsize=false @@ -29,7 +30,7 @@ window/size/borderless=true [editor] -run/main_run_args="\"0\" \"C:/Code/cpp/ScreenPlay/ScreenPlay/Content/wallpaper_godot_fjord\" \"appID=vin6wuDQclPPJmFdouKukfGUKLrVBDCZ\" \"1\" \"Cover\" \"GodotWallpaper\" \"1\"" +run/main_run_args="\"0\" \"C:/Code/Cpp/ScreenPlay/ScreenPlay/Content/wallpaper_godot_fjord\" \"appID=test\" \"1\" \"Cover\" \"GodotWallpaper\" \"1\"" [filesystem] diff --git a/ScreenPlayWallpaper/kde/ScreenPlay/contents/ui/WaitingForScreenplay.qml b/ScreenPlayWallpaper/kde/ScreenPlay/contents/ui/WaitingForScreenplay.qml index e4662751..be30b31e 100644 --- a/ScreenPlayWallpaper/kde/ScreenPlay/contents/ui/WaitingForScreenplay.qml +++ b/ScreenPlayWallpaper/kde/ScreenPlay/contents/ui/WaitingForScreenplay.qml @@ -20,7 +20,7 @@ Rectangle { font.pixelSize: 50 } - OpacityAnimator on opacity { + OpacityAnimator on opacity { id: createAnimation from: 0 to: 1 @@ -54,7 +54,7 @@ Rectangle { font.pixelSize: 50 } - OpacityAnimator on opacity { + OpacityAnimator on opacity { id: destroyAnimation from: 1 to: 0 diff --git a/ScreenPlayWorkshop/qml/SteamWorkshopStartPage.qml b/ScreenPlayWorkshop/qml/SteamWorkshopStartPage.qml index b2ea7101..76669a91 100644 --- a/ScreenPlayWorkshop/qml/SteamWorkshopStartPage.qml +++ b/ScreenPlayWorkshop/qml/SteamWorkshopStartPage.qml @@ -512,7 +512,7 @@ Item { } } - Behavior on contentHeight { + Behavior on contentHeight { PropertyAnimation { duration: 400 property: "contentHeight" diff --git a/Tools/setup.py b/Tools/setup.py index 24d29c2f..b47be968 100755 --- a/Tools/setup.py +++ b/Tools/setup.py @@ -114,7 +114,8 @@ def main(): vcpkg_packages_list = [ "curl", "cpp-httplib", - "libarchive" + "libarchive", + "catch2" ] if not args.skip_aqt: setup_qt() From fae6555f5aa1c2f88d10f5d3e7c41fee0c4405ef Mon Sep 17 00:00:00 2001 From: Elias Steurer Date: Sun, 22 Oct 2023 17:29:34 +0200 Subject: [PATCH 021/101] Update to Qt 6.6.0 --- .vscode/launch.json | 2 +- CMakePresets.json | 324 ++++++++++--------- ScreenPlay/qml/Installed/ScreenPlayItem.qml | 8 +- ScreenPlay/qml/Installed/Sidebar.qml | 12 +- ScreenPlay/qml/Monitors/MonitorSelection.qml | 2 +- ScreenPlay/qml/Monitors/Monitors.qml | 2 +- ScreenPlayWallpaper/src/basewindow.cpp | 1 - Tools/build_godot.py | 4 +- Tools/defines.py | 2 +- Tools/setup.py | 2 +- 10 files changed, 183 insertions(+), 176 deletions(-) diff --git a/.vscode/launch.json b/.vscode/launch.json index 6ec72414..4853df63 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -17,7 +17,7 @@ "environment": [ { "name": "Path", - "value": "${env:Path};${workspaceFolder}\\..\\aqt\\6.5.2\\msvc2019_64\\bin\\;${workspaceFolder}\\..\\aqt\\6.5.2\\msvc2019_64\\modules\\;${workspaceFolder}\\..\\aqt\\6.5.2\\msvc2019_64\\qml\\;${workspaceFolder}\\..\\vcpkg\\installed\\x64-windows\\debug\\bin;" + "value": "${env:Path};${workspaceFolder}\\..\\aqt\\6.6.0\\msvc2019_64\\bin\\;${workspaceFolder}\\..\\aqt\\6.6.0\\msvc2019_64\\modules\\;${workspaceFolder}\\..\\aqt\\6.6.0\\msvc2019_64\\qml\\;${workspaceFolder}\\..\\vcpkg\\installed\\x64-windows\\debug\\bin;" } ], "visualizerFile": "${workspaceFolder}/.vscode/qt.natvis.xml" diff --git a/CMakePresets.json b/CMakePresets.json index 31230776..51922709 100644 --- a/CMakePresets.json +++ b/CMakePresets.json @@ -1,160 +1,168 @@ { - "version": 5, - "cmakeMinimumRequired": { - "major": 3, - "minor": 23, - "patch": 0 - }, - "configurePresets": [ - { - "name": "default-windows", - "displayName": "ScreenPlay 64bit Windows", - "description": "Windows only!", - "generator": "Ninja", - "hidden": true, - "condition": { - "type": "equals", - "lhs": "${hostSystemName}", - "rhs": "Windows" - }, - "environment": { - "qt_path": "${sourceDir}/../aqt", - "qt_version": "6.5.2" - }, - "toolset": { - "value": "host=x64", - "strategy": "external" - }, - "architecture": { - "value": "x64", - "strategy": "external" - }, - "cacheVariables": { - "CMAKE_PREFIX_PATH": "$env{qt_path}/$env{qt_version}/msvc2019_64", - "CMAKE_TOOLCHAIN_FILE": "${sourceDir}/../vcpkg/scripts/buildsystems/vcpkg.cmake", - "VCPKG_TARGET_TRIPLET": "x64-windows", - "CMAKE_C_COMPILER": "cl.exe", - "CMAKE_CXX_COMPILER": "cl.exe" - } + "version": 5, + "cmakeMinimumRequired": { + "major": 3, + "minor": 23, + "patch": 0 }, - { - "name": "windows-debug-qt-6.5.2", - "inherits": "default-windows", - "displayName": "MSVC SP Qt 6.5.2 Debug", - "binaryDir": "${sourceDir}/../build_ScreenPlay_Qt_6.5.2_MSVC_Debug", - "environment": { - "qt_version": "6.5.2" - }, - "cacheVariables": { - "CMAKE_BUILD_TYPE": "Debug" - } - }, - { - "name": "windows-relwithdebinfo-qt-6.5.2", - "inherits": "default-windows", - "displayName": "MSVC SP Qt 6.5.2 RelWithDebInfo", - "binaryDir": "${sourceDir}/../build_ScreenPlay_Qt_6.5.2_MSVC_RelWithDebInfo", - "environment": { - "qt_version": "6.5.2" - }, - "cacheVariables": { - "CMAKE_BUILD_TYPE": "RelWithDebInfo" - } - }, - { - "name": "windows-release-qt-6.5.2", - "inherits": "default-windows", - "displayName": "MSVC SP Qt 6.5.2 Release", - "binaryDir": "${sourceDir}/../build_ScreenPlay_Qt_6.5.2_MSVC_Release", - "environment": { - "qt_version": "6.5.2" - }, - "cacheVariables": { - "CMAKE_BUILD_TYPE": "Release" - } - }, - { - "name": "linux-debug", - "displayName": "ScreenPlay 64bit Debug Linux", - "description": "Linux only!", - "generator": "Ninja", - "binaryDir": "${sourceDir}/../build_ScreenPlay_Qt_6.5.2_GCC_Debug", - "condition": { - "type": "equals", - "lhs": "${hostSystemName}", - "rhs": "Linux" - }, - "environment": { - "qt_path": "${sourceDir}/../aqt" - }, - "architecture": { - "value": "x64", - "strategy": "external" - }, - "cacheVariables": { - "CMAKE_CXX_COMPILER": "g++", - "CMAKE_C_COMPILER": "gcc", - "CMAKE_BUILD_TYPE": "Debug", - "CMAKE_PREFIX_PATH": "$env{qt_path}/6.5.2/gcc_64", - "CMAKE_TOOLCHAIN_FILE": "${sourceDir}/../vcpkg/scripts/buildsystems/vcpkg.cmake", - "VCPKG_TARGET_TRIPLET": "x64-linux" - } - }, - { - "name": "linux-relwithdebinfo", - "displayName": "ScreenPlay 64bit RelWithDebInfo Linux", - "inherits": "linux-debug", - "binaryDir": "${sourceDir}/../build_ScreenPlay_Qt_6.5.2_GCC_RelWithDebInfo", - "cacheVariables": { - "CMAKE_BUILD_TYPE": "RelWithDebInfo" - } - }, - { - "name": "osx-debug", - "displayName": "ScreenPlay 64bit Debug osx", - "description": "Osx only!", - "generator": "Ninja", - "binaryDir": "${sourceDir}/../build_ScreenPlay_Qt_6.5.2_Clang_Debug", - "condition": { - "type": "equals", - "lhs": "${hostSystemName}", - "rhs": "Darwin" - }, - "environment": { - "qt_path": "${sourceDir}/../aqt" - }, - "cacheVariables": { - "VCPKG_OSX_ARCHITECTURES": "arm64;x86_64", - "VCPKG_TARGET_TRIPLET": "64-osx-universal", - "CMAKE_CXX_COMPILER": "clang++", - "CMAKE_C_COMPILER": "clang", - "CMAKE_BUILD_TYPE": "Debug", - "CMAKE_PREFIX_PATH": "$env{qt_path}/6.5.2/macos", - "CMAKE_TOOLCHAIN_FILE": "${sourceDir}/../vcpkg/scripts/buildsystems/vcpkg.cmake" - } - }, - { - "name": "osx-relwithdebinfo", - "displayName": "ScreenPlay 64bit RelWithDebInfo osx", - "inherits": "osx-debug", - "binaryDir": "${sourceDir}/../build_ScreenPlay_Qt_6.5.2_Clang_RelWithDebInfo", - "cacheVariables": { - "CMAKE_BUILD_TYPE": "RelWithDebInfo" - } - } - ], - "buildPresets": [ - { - "name": "linux-debug", - "configurePreset": "linux-debug" - }, - { - "name": "default-windows", - "configurePreset": "default-windows" - }, - { - "name": "osx-debug", - "configurePreset": "osx-debug" - } - ] -} + "configurePresets": [ + { + "name": "default-windows", + "displayName": "ScreenPlay 64bit Windows", + "description": "Windows only!", + "generator": "Ninja", + "hidden": true, + "condition": { + "type": "equals", + "lhs": "${hostSystemName}", + "rhs": "Windows" + }, + "environment": { + "qt_path": "${sourceDir}/../aqt", + "qt_version": "6.6.0" + }, + "toolset": { + "value": "host=x64", + "strategy": "external" + }, + "architecture": { + "value": "x64", + "strategy": "external" + }, + "cacheVariables": { + "CMAKE_PREFIX_PATH": "$env{qt_path}/$env{qt_version}/msvc2019_64", + "CMAKE_TOOLCHAIN_FILE": "${sourceDir}/../vcpkg/scripts/buildsystems/vcpkg.cmake", + "VCPKG_TARGET_TRIPLET": "x64-windows", + "CMAKE_C_COMPILER": "cl.exe", + "CMAKE_CXX_COMPILER": "cl.exe" + } + }, + { + "name": "windows-debug-qt-6.6.0", + "inherits": "default-windows", + "displayName": "MSVC SP Qt 6.6.0 Debug", + "binaryDir": "${sourceDir}/../build_ScreenPlay_Qt_6.6.0_MSVC_Debug", + "environment": { + "qt_version": "6.6.0" + }, + "cacheVariables": { + "CMAKE_BUILD_TYPE": "Debug" + } + }, + { + "name": "windows-relwithdebinfo-qt-6.6.0", + "inherits": "default-windows", + "displayName": "MSVC SP Qt 6.6.0 RelWithDebInfo", + "binaryDir": "${sourceDir}/../build_ScreenPlay_Qt_6.6.0_MSVC_RelWithDebInfo", + "environment": { + "qt_version": "6.6.0" + }, + "cacheVariables": { + "CMAKE_BUILD_TYPE": "RelWithDebInfo" + } + }, + { + "name": "windows-release-qt-6.6.0", + "inherits": "default-windows", + "displayName": "MSVC SP Qt 6.6.0 Release", + "binaryDir": "${sourceDir}/../build_ScreenPlay_Qt_6.6.0_MSVC_Release", + "environment": { + "qt_version": "6.6.0" + }, + "cacheVariables": { + "CMAKE_BUILD_TYPE": "Release" + } + }, + { + "name": "linux-debug", + "displayName": "ScreenPlay 64bit Debug Linux", + "description": "Linux only!", + "generator": "Ninja", + "binaryDir": "${sourceDir}/../build_ScreenPlay_Qt_6.6.0_GCC_Debug", + "condition": { + "type": "equals", + "lhs": "${hostSystemName}", + "rhs": "Linux" + }, + "environment": { + "qt_path": "${sourceDir}/../aqt" + }, + "architecture": { + "value": "x64", + "strategy": "external" + }, + "cacheVariables": { + "CMAKE_CXX_COMPILER": "g++", + "CMAKE_C_COMPILER": "gcc", + "CMAKE_BUILD_TYPE": "Debug", + "CMAKE_PREFIX_PATH": "$env{qt_path}/6.6.0/gcc_64", + "CMAKE_TOOLCHAIN_FILE": "${sourceDir}/../vcpkg/scripts/buildsystems/vcpkg.cmake", + "VCPKG_TARGET_TRIPLET": "x64-linux" + } + }, + { + "name": "linux-relwithdebinfo", + "displayName": "ScreenPlay 64bit RelWithDebInfo Linux", + "inherits": "linux-debug", + "binaryDir": "${sourceDir}/../build_ScreenPlay_Qt_6.6.0_GCC_RelWithDebInfo", + "cacheVariables": { + "CMAKE_BUILD_TYPE": "RelWithDebInfo" + } + }, + { + "name": "osx-debug", + "displayName": "ScreenPlay 64bit Debug osx", + "description": "Osx only!", + "generator": "Ninja", + "binaryDir": "${sourceDir}/../build_ScreenPlay_Qt_6.6.0_Clang_Debug", + "condition": { + "type": "equals", + "lhs": "${hostSystemName}", + "rhs": "Darwin" + }, + "environment": { + "qt_path": "${sourceDir}/../aqt" + }, + "cacheVariables": { + "VCPKG_OSX_ARCHITECTURES": "arm64;x86_64", + "VCPKG_TARGET_TRIPLET": "64-osx-universal", + "CMAKE_CXX_COMPILER": "clang++", + "CMAKE_C_COMPILER": "clang", + "CMAKE_BUILD_TYPE": "Debug", + "CMAKE_PREFIX_PATH": "$env{qt_path}/6.6.0/macos", + "CMAKE_TOOLCHAIN_FILE": "${sourceDir}/../vcpkg/scripts/buildsystems/vcpkg.cmake" + } + }, + { + "name": "osx-relwithdebinfo", + "displayName": "ScreenPlay 64bit RelWithDebInfo osx", + "inherits": "osx-debug", + "binaryDir": "${sourceDir}/../build_ScreenPlay_Qt_6.6.0_Clang_RelWithDebInfo", + "cacheVariables": { + "CMAKE_BUILD_TYPE": "RelWithDebInfo" + } + } + ], + "buildPresets": [ + { + "name": "linux-debug", + "configurePreset": "linux-debug" + }, + { + "name": "default-windows", + "configurePreset": "default-windows" + }, + { + "name": "osx-debug", + "configurePreset": "osx-debug" + } + ], + "testPresets": [ + { + "name": "Test", + "description": "", + "displayName": "", + "configurePreset": "windows-release-qt-6.6.0" + } + ] +} \ No newline at end of file diff --git a/ScreenPlay/qml/Installed/ScreenPlayItem.qml b/ScreenPlay/qml/Installed/ScreenPlayItem.qml index f22a4701..e91f4167 100644 --- a/ScreenPlay/qml/Installed/ScreenPlayItem.qml +++ b/ScreenPlay/qml/Installed/ScreenPlayItem.qml @@ -5,7 +5,7 @@ import QtQuick.Controls.Material import ScreenPlayApp import ScreenPlay import ScreenPlay.Enums.InstalledType -import ScreenPlayUtil +import ScreenPlayUtil as Util Item { id: root @@ -25,15 +25,15 @@ Item { width: 320 height: 180 onTypeChanged: { - if (JSUtil.isWidget(type)) { + if (Util.JSUtil.isWidget(type)) { icnType.source = "qrc:/qml/ScreenPlayApp/assets/icons/icon_widgets.svg"; return; } - if (JSUtil.isScene(type)) { + if (Util.JSUtil.isScene(type)) { icnType.source = "qrc:/qml/ScreenPlayApp/assets/icons/icon_code.svg"; return; } - if (JSUtil.isVideo(type)) { + if (Util.JSUtil.isVideo(type)) { icnType.source = "qrc:/qml/ScreenPlayApp/assets/icons/icon_movie.svg"; return; } diff --git a/ScreenPlay/qml/Installed/Sidebar.qml b/ScreenPlay/qml/Installed/Sidebar.qml index b604f910..4190cc8a 100644 --- a/ScreenPlay/qml/Installed/Sidebar.qml +++ b/ScreenPlay/qml/Installed/Sidebar.qml @@ -51,7 +51,7 @@ Item { } else { imagePreview.source = previewImageFilePath; } - if (JSUtil.isWidget(root.type) || (monitorSelection.activeMonitors.length > 0)) { + if (Util.JSUtil.isWidget(root.type) || (monitorSelection.activeMonitors.length > 0)) { btnLaunchContent.enabled = true; return; } @@ -68,7 +68,7 @@ Item { } root.contentFolderName = folderName; root.type = type; - if (JSUtil.isWallpaper(root.type)) { + if (Util.JSUtil.isWallpaper(root.type)) { if (type === InstalledType.VideoWallpaper) root.state = "activeWallpaper"; else @@ -340,7 +340,7 @@ Item { Button { id: btnLaunchContent objectName: "btnLaunchContent" - enabled: JSUtil.isWidget(root.type) ? true : monitorSelection.isSelected + enabled: Util.JSUtil.isWidget(root.type) ? true : monitorSelection.isSelected Material.background: Material.accent Material.foreground: "white" icon.source: "qrc:/qml/ScreenPlayApp/assets/icons/icon_plus.svg" @@ -349,8 +349,8 @@ Item { onClicked: { const item = App.installedListModel.get(root.contentFolderName); const absoluteStoragePath = item.m_absoluteStoragePath; - const previewImage =item.m_preview; - if (JSUtil.isWallpaper(root.type)) { + const previewImage = item.m_preview; + if (Util.JSUtil.isWallpaper(root.type)) { let activeMonitors = monitorSelection.getActiveMonitors(); // TODO Alert user to choose a monitor if (activeMonitors.length === 0) @@ -363,7 +363,7 @@ Item { const screenFile = item.m_file; let success = App.screenPlayManager.createWallpaper(root.type, cbVideoFillMode.currentValue, absoluteStoragePath, previewImage, screenFile, activeMonitors, volume, 1, {}, true); } - if (JSUtil.isWidget(root.type)) + if (Util.JSUtil.isWidget(root.type)) App.screenPlayManager.createWidget(type, Qt.point(0, 0), absoluteStoragePath, previewImage, {}, true); root.state = "inactive"; monitorSelection.reset(); diff --git a/ScreenPlay/qml/Monitors/MonitorSelection.qml b/ScreenPlay/qml/Monitors/MonitorSelection.qml index 2dd0b1ac..57e382a6 100644 --- a/ScreenPlay/qml/Monitors/MonitorSelection.qml +++ b/ScreenPlay/qml/Monitors/MonitorSelection.qml @@ -17,7 +17,7 @@ Rectangle { // We preselect the main monitor property var activeMonitors: [] property alias background: root.color - property alias radius: root.radius + property alias bgRadius: root.radius Component.onCompleted: { resize(); diff --git a/ScreenPlay/qml/Monitors/Monitors.qml b/ScreenPlay/qml/Monitors/Monitors.qml index 50596121..b0f40c76 100644 --- a/ScreenPlay/qml/Monitors/Monitors.qml +++ b/ScreenPlay/qml/Monitors/Monitors.qml @@ -72,7 +72,7 @@ Util.Popup { MonitorSelection { id: monitorSelection - radius: 3 + bgRadius: 3 height: 200 width: parent.width * 0.9 multipleMonitorsSelectable: false diff --git a/ScreenPlayWallpaper/src/basewindow.cpp b/ScreenPlayWallpaper/src/basewindow.cpp index 67231f16..bfa031aa 100644 --- a/ScreenPlayWallpaper/src/basewindow.cpp +++ b/ScreenPlayWallpaper/src/basewindow.cpp @@ -35,7 +35,6 @@ BaseWindow::BaseWindow() "VideoCodec", "Error: only enums"); - qmlRegisterType("ScreenPlay.Wallpaper", 1, 0, "Wallpaper"); setOSVersion(QSysInfo::productVersion()); } diff --git a/Tools/build_godot.py b/Tools/build_godot.py index 5c1cc352..53ed60c0 100644 --- a/Tools/build_godot.py +++ b/Tools/build_godot.py @@ -11,7 +11,7 @@ import argparse def main(): # Parse build folder as arugment - parser = argparse.ArgumentParser(description='Build K3000Map to the bin build folder: D:/Backup/Code/Qt/build_ScreenPlay_Qt_6.5.2_MSVC_Debug/bin') + parser = argparse.ArgumentParser(description='Build K3000Map to the bin build folder: D:/Backup/Code/Qt/build_ScreenPlay_Qt_6.6.0_MSVC_Debug/bin') parser.add_argument('--build_path', dest="build_path", type=str, help='Build folder') parser.add_argument('--skip_if_exists', dest="skip_if_exists", default=False, action="store_true", help='Skips the build if the index.html file exists. This is used for faster CMake configure') @@ -19,7 +19,7 @@ def main(): if not args.build_path: print("ERROR: Please specify the build folder") - print("py build_godot.py --build_path D:/Backup/Code/Qt/build_ScreenPlay_Qt_6.5.2_MSVC_Debug/bin/") + print("py build_godot.py --build_path D:/Backup/Code/Qt/build_ScreenPlay_Qt_6.6.0_MSVC_Debug/bin/") exit() # if build path exists and contains a index.html file, skip the build diff --git a/Tools/defines.py b/Tools/defines.py index db47ad7a..2726ad5f 100644 --- a/Tools/defines.py +++ b/Tools/defines.py @@ -20,7 +20,7 @@ elif sys.platform == "linux": QT_PATH = path = Path(os.path.join( os.path.realpath(__file__), "../../../aqt")).resolve() -QT_VERSION = "6.5.2" +QT_VERSION = "6.6.0" QT_BIN_PATH = QT_PATH.joinpath(f"{QT_VERSION}/{QT_PLATFORM}/bin") QT_TOOLS_PATH = QT_PATH.joinpath("Tools/") QT_IFW_VERSION = "4.6" diff --git a/Tools/setup.py b/Tools/setup.py index b47be968..149ca0b3 100755 --- a/Tools/setup.py +++ b/Tools/setup.py @@ -53,7 +53,7 @@ def download(aqt_path: Path, qt_platform: Path): elif system() == "Linux": os = "linux" - # python -m aqt list-qt windows desktop --modules 6.5.2 win64_msvc2019_64 + # python -m aqt list-qt windows desktop --modules 6.6.0 win64_msvc2019_64 qt_packages = "qt3d qtquick3d qtconnectivity qt5compat qtimageformats qtmultimedia qtshadertools qtwebchannel qtwebengine qtwebsockets qtwebview qtpositioning" print(f"Downloading: {qt_packages} to {aqt_path}") execute(f"{defines.PYTHON_EXECUTABLE} -m aqt install-qt -O {aqt_path} {os} desktop {defines.QT_VERSION} {qt_platform} -m {qt_packages}") From 9cb57382ab1a111cf4a6d9ccfe2a792e8ab3721c Mon Sep 17 00:00:00 2001 From: Elias Steurer Date: Sat, 28 Oct 2023 19:45:11 +0200 Subject: [PATCH 022/101] Change code to general windowsintegration to be used in godot Fix monitor setup for scaled monitors --- ScreenPlay/CMakeLists.txt | 1 + ScreenPlay/src/monitorlistmodel.cpp | 3 +- .../inc/public/ScreenPlayUtil/util.h | 51 +------ ScreenPlayWallpaper/CMakeLists.txt | 14 +- .../src/ScreenPlayGodotWallpaper.cpp | 4 +- .../src/ScreenPlayGodotWallpaper.h | 2 +- .../Godot/GDExtention/src/WindowsPipe.h | 21 +-- .../Godot/ScreenPlayGodot/main.gd | 16 +-- .../src/windowsintegration.cpp | 122 ++++++++++++++++ ScreenPlayWallpaper/src/windowsintegration.h | 125 ++++++++++++++++ ScreenPlayWallpaper/src/winwindow.cpp | 136 +++++++++++------- 11 files changed, 366 insertions(+), 129 deletions(-) create mode 100644 ScreenPlayWallpaper/src/windowsintegration.cpp create mode 100644 ScreenPlayWallpaper/src/windowsintegration.h diff --git a/ScreenPlay/CMakeLists.txt b/ScreenPlay/CMakeLists.txt index d2842184..8ccbda37 100644 --- a/ScreenPlay/CMakeLists.txt +++ b/ScreenPlay/CMakeLists.txt @@ -292,6 +292,7 @@ target_link_libraries( ScreenPlayApp PUBLIC ScreenPlaySDK LibArchive::LibArchive + ScreenPlayWallpaperLib ScreenPlayUtil ScreenPlayUtilplugin QArchive diff --git a/ScreenPlay/src/monitorlistmodel.cpp b/ScreenPlay/src/monitorlistmodel.cpp index 3b17e431..91ab7699 100644 --- a/ScreenPlay/src/monitorlistmodel.cpp +++ b/ScreenPlay/src/monitorlistmodel.cpp @@ -1,6 +1,7 @@ // SPDX-License-Identifier: LicenseRef-EliasSteurerTachiom OR AGPL-3.0-only #include "ScreenPlay/monitorlistmodel.h" +#include "windowsintegration.h" #include namespace ScreenPlay { @@ -111,7 +112,7 @@ void MonitorListModel::loadMonitors() #ifdef Q_OS_WIN QModelIndex index; - ScreenPlayUtil::WinMonitorStats monitors; + WinMonitorStats monitors; // This offset lets us center the monitor selection view in the center int offsetX = 0; diff --git a/ScreenPlayUtil/inc/public/ScreenPlayUtil/util.h b/ScreenPlayUtil/inc/public/ScreenPlayUtil/util.h index 4961572f..fcc04827 100644 --- a/ScreenPlayUtil/inc/public/ScreenPlayUtil/util.h +++ b/ScreenPlayUtil/inc/public/ScreenPlayUtil/util.h @@ -2,67 +2,18 @@ #pragma once -#include - -#if defined(Q_OS_WIN) - -// Must be first! -#include -// Do not sort ! -#include "WinUser.h" -#include -#endif - #include "ScreenPlayUtil/contenttypes.h" +#include #include #include #include #include #include #include -#include #include namespace ScreenPlayUtil { -#if defined(Q_OS_WIN) -struct WinMonitorStats { - WinMonitorStats() - { - EnumDisplayMonitors(NULL, NULL, MonitorEnum, (LPARAM)this); - } - - static BOOL CALLBACK MonitorEnum(HMONITOR hMon, HDC hdc, LPRECT lprcMonitor, - LPARAM pData) - { - WinMonitorStats* pThis = reinterpret_cast(pData); - auto scaleFactor = DEVICE_SCALE_FACTOR::DEVICE_SCALE_FACTOR_INVALID; - GetScaleFactorForMonitor(hMon, &scaleFactor); - - UINT x = 0; - UINT y = 0; - GetDpiForMonitor(hMon, MONITOR_DPI_TYPE::MDT_RAW_DPI, &x, &y); - pThis->sizes.push_back({ x, y }); - pThis->scaleFactor.push_back(scaleFactor); - pThis->hMonitors.push_back(hMon); - pThis->hdcMonitors.push_back(hdc); - pThis->rcMonitors.push_back(*lprcMonitor); - pThis->iMonitors.push_back(pThis->hdcMonitors.size()); - - // qInfo() << std::abs(lprcMonitor->right - lprcMonitor->left) << std::abs(lprcMonitor->top - lprcMonitor->bottom); - - return TRUE; - } - - std::vector iMonitors; - std::vector hMonitors; - std::vector hdcMonitors; - std::vector rcMonitors; - std::vector scaleFactor; - std::vector> sizes; - int index = 0; -}; -#endif QJsonArray fillArray(const QVector& items); ScreenPlay::SearchType::SearchType getSearchTypeFromInstalledType(const ScreenPlay::InstalledType::InstalledType type); std::optional getInstalledTypeFromString(const QString& type); diff --git a/ScreenPlayWallpaper/CMakeLists.txt b/ScreenPlayWallpaper/CMakeLists.txt index d4bb4cbf..7ff4963e 100644 --- a/ScreenPlayWallpaper/CMakeLists.txt +++ b/ScreenPlayWallpaper/CMakeLists.txt @@ -54,8 +54,14 @@ set(LIB_SOURCES) set(LIB_HEADER) if(WIN32) - set(LIB_SOURCES src/windowshook.cpp) - set(LIB_HEADER src/windowshook.h) + set(LIB_SOURCES src/windowsintegration.cpp) + set(LIB_HEADER src/windowsintegration.h) +elseif(APPLE) + set(LIB_SOURCES src/macosintegration.cpp) + set(LIB_HEADER src/macosintegration.h) +elseif(UNIX) + set(LIB_SOURCES src/waylandintegration.cpp) + set(LIB_HEADER src/waylandintegration.h) endif() add_library(ScreenPlayWallpaperLib STATIC ${LIB_SOURCES} ${LIB_HEADER}) @@ -66,7 +72,9 @@ if(WIN32) target_link_libraries(ScreenPlayWallpaperLib PUBLIC shcore.lib) endif() -add_executable(${PROJECT_NAME} ${SOURCES} ${HEADER}) + +add_executable(${PROJECT_NAME} ${SOURCES} ${HEADER} + src/windowsintegration.h src/windowsintegration.cpp) qt_add_qml_module( ${PROJECT_NAME} diff --git a/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayGodotWallpaper.cpp b/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayGodotWallpaper.cpp index dfff013d..60473c8b 100644 --- a/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayGodotWallpaper.cpp +++ b/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayGodotWallpaper.cpp @@ -105,6 +105,7 @@ bool ScreenPlayGodotWallpaper::init(int activeScreen) String output = "Setup window activeScreen: " + itos(activeScreen) + " scaling: " + rtos(scaling) + " x: " + itos(x) + " y: " + itos(y) + " width: " + itos(width) + " height: " + itos(height); UtilityFunctions::print(output); + displayServer->window_set_size(godot::Vector2((real_t)width, (real_t)height)); // Must be called twice for some reason when window has scaling... if (!SetWindowPos(m_hook->windowHandle, nullptr, x, y, width, height, SWP_HIDEWINDOW)) { @@ -120,7 +121,6 @@ bool ScreenPlayGodotWallpaper::init(int activeScreen) UtilityFunctions::print("Could not attach to parent window"); return false; } - displayServer->window_set_size(godot::Vector2((real_t)width, (real_t)height)); ShowWindow(m_hook->windowHandle, SW_SHOW); const std::string windowTitle = "ScreenPlayWallpaperGodot"; SetWindowText(hwnd, windowTitle.c_str()); @@ -138,7 +138,7 @@ godot::String ScreenPlayGodotWallpaper::read_from_pipe() { std::string outMsg; if (!m_windowsPipe.readFromPipe(outMsg)) { - UtilityFunctions::print("Unable to read from pipe"); + // No new message return ""; } return godot::String(outMsg.c_str()); diff --git a/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayGodotWallpaper.h b/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayGodotWallpaper.h index 7a184eb8..6746a221 100644 --- a/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayGodotWallpaper.h +++ b/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayGodotWallpaper.h @@ -14,7 +14,7 @@ #include #include "ScreenPlayGodotWallpaper.h" -#include "windowshook.h" +#include "windowsintegration.h" #include "WindowsPipe.h" class ScreenPlayGodotWallpaper : public godot::Node { diff --git a/ScreenPlayWallpaper/Godot/GDExtention/src/WindowsPipe.h b/ScreenPlayWallpaper/Godot/GDExtention/src/WindowsPipe.h index 65c57c60..f72327ce 100644 --- a/ScreenPlayWallpaper/Godot/GDExtention/src/WindowsPipe.h +++ b/ScreenPlayWallpaper/Godot/GDExtention/src/WindowsPipe.h @@ -6,31 +6,37 @@ class WindowsPipe { public: - WindowsPipe() - : m_hPipe(INVALID_HANDLE_VALUE) + WindowsPipe() + : m_hPipe(INVALID_HANDLE_VALUE) { memset(&m_overlapped, 0, sizeof(m_overlapped)); m_overlapped.hEvent = CreateEvent(NULL, TRUE, FALSE, NULL); // Manual reset event } - void setPipeName(const std::wstring& pipeName) { + void setPipeName(const std::wstring& pipeName) + { m_pipeName = pipeName; } - bool start() { + bool start() + { return connectToPipe(); } bool readFromPipe(std::string& outMessage); bool writeToPipe(const std::string& message); - - ~WindowsPipe() { + void close() + { if (m_hPipe != INVALID_HANDLE_VALUE) { CloseHandle(m_hPipe); } + } + ~WindowsPipe() + { + close(); CloseHandle(m_overlapped.hEvent); } - + private: bool connectToPipe(); @@ -38,5 +44,4 @@ private: HANDLE m_hPipe; OVERLAPPED m_overlapped; std::wstring m_pipeName; - }; diff --git a/ScreenPlayWallpaper/Godot/ScreenPlayGodot/main.gd b/ScreenPlayWallpaper/Godot/ScreenPlayGodot/main.gd index 08a227d6..96b4569a 100644 --- a/ScreenPlayWallpaper/Godot/ScreenPlayGodot/main.gd +++ b/ScreenPlayWallpaper/Godot/ScreenPlayGodot/main.gd @@ -8,9 +8,7 @@ var send_welcome: bool = false # Pings main ScreenPlay application that # this wallpaper is still active func ping_alive(): - print("GD: ping_alive") var success = screen_play_wallpaper.send_ping() - print("1 ping_alive_screenplay: ", success) if not success: terminate() @@ -22,10 +20,8 @@ func terminate(): # Checks for messages from the main ScreenPlay instance # for example for propery changes or commands like quit func check_messages(): - print("GD: check_messages") var msg = screen_play_wallpaper.read_from_pipe() if not msg.is_empty(): - print("message: ", msg) if "quit" in msg: return terminate() @@ -55,25 +51,23 @@ func _ready(): print(path) if not load_scene(path): print("Failed to load the PCK file.") + # No not call terminate here because we did not + # yet setup via screenplay_manager.init() get_tree().quit() return Engine.set_max_fps(24) var ok = screen_play_wallpaper.init(screen_play_wallpaper.get_activeScreensList()[0]) - - print("init ", ok) + if not ok: + printerr("Unable to setup screen") if not screen_play_wallpaper.get_pipeConnected(): - print("connect to ScreenPlay") - var ok_connect_to_named_pipe = screen_play_wallpaper.connect_to_named_pipe() - print("connection: ", ok_connect_to_named_pipe) + var ok_connect_to_named_pipe = screen_play_wallpaper.connect_to_named_pipe() func _process(delta): if not send_welcome: if not screen_play_wallpaper.get_screenPlayConnected(): - print("send_welcome") send_welcome = screen_play_wallpaper.send_welcome() - print("send_welcome: ", send_welcome) if send_welcome: check_messages_timer.start() ping_alive_timer.start() diff --git a/ScreenPlayWallpaper/src/windowsintegration.cpp b/ScreenPlayWallpaper/src/windowsintegration.cpp new file mode 100644 index 00000000..4bde9a35 --- /dev/null +++ b/ScreenPlayWallpaper/src/windowsintegration.cpp @@ -0,0 +1,122 @@ +#include "windowsintegration.h" + +WindowsIntegration::WindowsIntegration() +{ +} + +bool WindowsHook::searchWorkerWindowToParentTo() +{ + + HWND progman_hwnd = FindWindowW(L"Progman", L"Program Manager"); + const DWORD WM_SPAWN_WORKER = 0x052C; + SendMessageTimeoutW(progman_hwnd, WM_SPAWN_WORKER, 0xD, 0x1, SMTO_NORMAL, + 10000, nullptr); + + return EnumWindows(SearchForWorkerWindow, reinterpret_cast(&windowHandleWorker)); +} + +/*! + \brief Returns scaling factor as reported by Windows. +*/ +float WindowsHook::getScaling(const int monitorIndex) const +{ + // Get all monitors + int monitorCount = GetSystemMetrics(SM_CMONITORS); + + if (monitorIndex < 0 || monitorIndex >= monitorCount) { + // Invalid monitor index + return 1.0f; + } + + DISPLAY_DEVICE displayDevice; + ZeroMemory(&displayDevice, sizeof(displayDevice)); + displayDevice.cb = sizeof(displayDevice); + + // Enumerate through monitors until we find the one we're looking for + for (int i = 0; EnumDisplayDevices(NULL, i, &displayDevice, 0); i++) { + if (i == monitorIndex) { + DEVMODE devMode; + ZeroMemory(&devMode, sizeof(devMode)); + devMode.dmSize = sizeof(devMode); + + // Get settings for selected monitor + if (!EnumDisplaySettings(displayDevice.DeviceName, ENUM_CURRENT_SETTINGS, &devMode)) { + // Unable to get monitor settings + return 1.0f; + } + + // Get DPI for selected monitor + HMONITOR hMonitor = MonitorFromPoint({ devMode.dmPosition.x, devMode.dmPosition.y }, MONITOR_DEFAULTTONEAREST); + UINT dpiX = 0, dpiY = 0; + if (SUCCEEDED(GetDpiForMonitor(hMonitor, MDT_EFFECTIVE_DPI, &dpiX, &dpiY))) { + return (float)dpiX / 96.0f; // Standard DPI is 96 + } + } + } + + // If we reach here, it means we couldn't find the monitor with the given index or couldn't get the DPI. + return 1.0f; +} + +/*! + \brief Returns true of at least one monitor has active scaling enabled. +*/ +bool WindowsHook::hasWindowScaling() const +{ + auto enumMonitorCallback = [](HMONITOR hMonitor, HDC hdcMonitor, LPRECT lprcMonitor, LPARAM dwData) -> BOOL { + int scaling = GetDeviceCaps(hdcMonitor, LOGPIXELSX) / 96; + if (scaling != 1) { + *(bool*)dwData = true; + return false; // Stop enumeration + } + return true; // Continue enumeration + }; + + bool hasScaling = false; + EnumDisplayMonitors(NULL, NULL, enumMonitorCallback, (LPARAM)&hasScaling); + + return hasScaling; +} + +/*! + \brief Searches for the worker window for our window to parent to. +*/ +BOOL SearchForWorkerWindow(HWND hwnd, LPARAM lparam) +{ + // 0xXXXXXXX "" WorkerW + // ... + // 0xXXXXXXX "" SHELLDLL_DefView + // 0xXXXXXXXX "FolderView" SysListView32 + // 0xXXXXXXXX "" WorkerW <---- We want this one + // 0xXXXXXXXX "Program Manager" Progman + if (FindWindowExW(hwnd, nullptr, L"SHELLDLL_DefView", nullptr)) + *reinterpret_cast(lparam) = FindWindowExW(nullptr, hwnd, L"WorkerW", nullptr); + return TRUE; +} + +ResizeResult ResizeWindowToMonitor(HWND hwnd, int monitorIndex) +{ + WinMonitorStats stats; + if (monitorIndex >= stats.rcMonitors.size()) { + return { 0, 0, 0, 0, false }; // Invalid monitor index + } + RECT monitorRect = stats.rcMonitors[monitorIndex]; + int x = monitorRect.left; + int y = monitorRect.top; + int width = monitorRect.right - monitorRect.left; + int height = monitorRect.bottom - monitorRect.top; + + BOOL result = SetWindowPos(hwnd, NULL, x, y, width, height, SWP_NOZORDER | SWP_NOACTIVATE); + + return { x, y, width, height, result != 0 }; +} + + +std::vector GetAllMonitors() { + std::vector monitors; + + // Use the static MonitorEnumProc callback for EnumDisplayMonitors + EnumDisplayMonitors(NULL, NULL, MonitorEnumProc, reinterpret_cast(&monitors)); + + return monitors; +} diff --git a/ScreenPlayWallpaper/src/windowsintegration.h b/ScreenPlayWallpaper/src/windowsintegration.h new file mode 100644 index 00000000..087e85b2 --- /dev/null +++ b/ScreenPlayWallpaper/src/windowsintegration.h @@ -0,0 +1,125 @@ +#pragma once + +#ifndef NOMINMAX +#define NOMINMAX +#endif +#include +#include +#include +#include +#include + +// Do not sort ! +#include "WinUser.h" +#include + +struct Monitor { + HMONITOR monitorID; // Handle to the monitor + int index; // Index of the monitor + RECT position; // Monitor's position and size + SIZE size; // Monitor's width and height + float scaleFactor; // Scale factor (DPI scaling as a factor, e.g., 1.5 for 150% scaling) + + void print() const { + std::cout << "Monitor Info:" << std::endl; + std::cout << "Monitor ID: " << monitorID << std::endl; + std::cout << "Index: " << index << std::endl; + std::cout << "Position: (" << position.left << ", " << position.top << ", " + << position.right << ", " << position.bottom << ")" << std::endl; + std::cout << "Size: (" << size.cx << "x" << size.cy << ")" << std::endl; + std::cout << "Scale Factor: " << scaleFactor << std::endl; + } +}; + +// Static callback function for EnumDisplayMonitors +static BOOL CALLBACK MonitorEnumProc(HMONITOR hMonitor, HDC hdcMonitor, LPRECT lprcMonitor, LPARAM dwData) { + std::vector* pMonitors = reinterpret_cast*>(dwData); + + MONITORINFOEX info; + info.cbSize = sizeof(info); + GetMonitorInfo(hMonitor, &info); + + UINT dpiX, dpiY; + GetDpiForMonitor(hMonitor, MDT_EFFECTIVE_DPI, &dpiX, &dpiY); + + Monitor monitor; + monitor.monitorID = hMonitor; + monitor.index = pMonitors->size(); // Set index based on the current size of the vector + monitor.position = info.rcMonitor; + monitor.size.cx = info.rcMonitor.right - info.rcMonitor.left; + monitor.size.cy = info.rcMonitor.bottom - info.rcMonitor.top; + monitor.scaleFactor = static_cast(dpiX) / 96.0f; + + pMonitors->push_back(monitor); + + return true; +} + + +std::vector GetAllMonitors(); + + +BOOL WINAPI SearchForWorkerWindow(HWND hwnd, LPARAM lparam); + +struct WinMonitorStats { + + + WinMonitorStats() + { + EnumDisplayMonitors(NULL, NULL, MonitorEnum, (LPARAM)this); + } + + + static BOOL CALLBACK MonitorEnum(HMONITOR hMon, HDC hdc, LPRECT lprcMonitor, LPARAM pData) + { + WinMonitorStats* pThis = reinterpret_cast(pData); + auto scaleFactor = DEVICE_SCALE_FACTOR::DEVICE_SCALE_FACTOR_INVALID; + GetScaleFactorForMonitor(hMon, &scaleFactor); + + UINT x = 0; + UINT y = 0; + GetDpiForMonitor(hMon, MONITOR_DPI_TYPE::MDT_RAW_DPI, &x, &y); + pThis->sizes.push_back({ x, y }); + pThis->scaleFactor.push_back(scaleFactor); + pThis->hMonitors.push_back(hMon); + pThis->hdcMonitors.push_back(hdc); + pThis->rcMonitors.push_back(*lprcMonitor); + pThis->iMonitors.push_back(pThis->hdcMonitors.size()); + + return TRUE; + } + std::vector iMonitors; + std::vector hMonitors; + std::vector hdcMonitors; + std::vector rcMonitors; + std::vector scaleFactor; + std::vector> sizes; +}; + +struct ResizeResult { + int x = 0; + int y = 0; + int width = 0; + int height = 0; + bool success = false; +}; +ResizeResult ResizeWindowToMonitor(HWND hwnd, int monitorIndex); + +struct Point { + int x = 0; + int y = 0; +}; + +struct WindowsHook { + bool searchWorkerWindowToParentTo(); + float getScaling(const int monitorIndex) const; + bool hasWindowScaling() const; + HWND windowHandle {}; + HWND windowHandleWorker {}; + Point zeroPoint; +}; + +class WindowsIntegration { +public: + WindowsIntegration(); +}; diff --git a/ScreenPlayWallpaper/src/winwindow.cpp b/ScreenPlayWallpaper/src/winwindow.cpp index 62c05d26..057d1301 100644 --- a/ScreenPlayWallpaper/src/winwindow.cpp +++ b/ScreenPlayWallpaper/src/winwindow.cpp @@ -1,5 +1,6 @@ // SPDX-License-Identifier: LicenseRef-EliasSteurerTachiom OR AGPL-3.0-only #include "winwindow.h" +#include "windowsintegration.h" #include "ScreenPlayUtil/projectfile.h" #include #include @@ -15,21 +16,6 @@ \brief ScreenPlayWindow used for the Windows implementation. */ -/*! - \brief Searches for the worker window for our window to parent to. -*/ -BOOL WINAPI SearchForWorkerWindow(HWND hwnd, LPARAM lparam) -{ - // 0xXXXXXXX "" WorkerW - // ... - // 0xXXXXXXX "" SHELLDLL_DefView - // 0xXXXXXXXX "FolderView" SysListView32 - // 0xXXXXXXXX "" WorkerW <---- We want this one - // 0xXXXXXXXX "Program Manager" Progman - if (FindWindowExW(hwnd, nullptr, L"SHELLDLL_DefView", nullptr)) - *reinterpret_cast(lparam) = FindWindowExW(nullptr, hwnd, L"WorkerW", nullptr); - return TRUE; -} HHOOK g_mouseHook; QPoint g_LastMousePosition { 0, 0 }; @@ -148,6 +134,7 @@ ScreenPlay::WallpaperExitCode WinWindow::start() qRegisterMetaType(); qmlRegisterSingletonInstance("ScreenPlayWallpaper", 1, 0, "Wallpaper", this); + m_window.setResizeMode(QQuickView::ResizeMode::SizeRootObjectToView); configureWindowGeometry(); // We do not support autopause for multi monitor wallpaper and @@ -162,6 +149,12 @@ ScreenPlay::WallpaperExitCode WinWindow::start() setupWindowMouseHook(); }); + + + + qInfo() << "Setup " << width() << height(); + m_window.setSource(QUrl("qrc:/qml/ScreenPlayWallpaper/qml/Wallpaper.qml")); + return ScreenPlay::WallpaperExitCode::Ok; } @@ -207,40 +200,81 @@ BOOL CALLBACK GetMonitorByIndex(HMONITOR hMonitor, HDC hdcMonitor, LPRECT lprcMo return TRUE; } -/*! - \brief This method is called if the user want to have one wallpaper on one window. -*/ +/* + * Adjusting a Window's Position and Size for Different Monitor DPI Scale Factors: + * + * Windows allows users to set different DPI (dots per inch) scale factors for each monitor. This DPI scaling can lead to + * discrepancies in the positioning and size of windows, especially if we want to place a window on a monitor with a different + * scale factor than the one it was originally on. + * + * In our scenario, we want to move and resize a window (`m_windowHandle`) to fit perfectly within a target monitor. However, + * both the window and the target monitor can have different DPI scale factors, so we need to account for these when calculating + * the window's new position and size. + * + * Steps: + * + * 1. Retrieve the DPI scale factor for the window: + * - This gives us the current scale factor of the window based on its original monitor. + * + * 2. Retrieve the DPI scale factor for the target monitor: + * - This gives us the scale factor of the monitor where we want to place the window. + * + * 3. Calculate the window's new position: + * - The new position should be relative to the `WorkerW` window's coordinates. + * - Adjust the position based on the ratio of the window's DPI scale factor to the target monitor's DPI scale factor. + * This ensures that the window is positioned correctly on the monitor regardless of any differences in scale factors. + * + * 4. Calculate the window's new size: + * - Adjust the size of the window based on the ratio of the window's DPI scale factor to the target monitor's DPI scale factor. + * This ensures that the window fits perfectly within the monitor, taking into account any differences in scale factors. + * + * By following this approach, we can accurately position and resize the window on any monitor, regardless of differences in DPI + * scale factors. + */ + void WinWindow::setupWallpaperForOneScreen(int activeScreen) { + std::vector monitors = GetAllMonitors(); + for (const auto& monitor : monitors) { + monitor.print(); + if (monitor.index != activeScreen) + continue; - const QRect screenRect = QGuiApplication::screens().at(activeScreen)->geometry(); - const int boderWidth = 2; - const float scaling = getScaling(activeScreen); - const int borderOffset = -1; + SetWindowPos(m_windowHandle, HWND_TOP, + monitor.position.left, monitor.position.top, + monitor.size.cx, monitor.size.cy, + SWP_NOZORDER | SWP_NOACTIVATE); + setWidth(monitor.size.cx); + setHeight(monitor.size.cy); + m_window.setWidth(width()); + m_window.setHeight(height()); - ScreenPlayUtil::WinMonitorStats monitors; - const int width = (std::abs(monitors.rcMonitors[activeScreen].right - monitors.rcMonitors[activeScreen].left) / scaling) + boderWidth; - const int height = (std::abs(monitors.rcMonitors[activeScreen].top - monitors.rcMonitors[activeScreen].bottom) / scaling) + boderWidth; + RECT oldRect; + GetWindowRect(m_windowHandle, &oldRect); + std::cout << "Old Window Position: (" << oldRect.left << ", " << oldRect.top << ")" << std::endl; + + float windowDpiScaleFactor = static_cast(GetDpiForWindow(m_windowHandle)) / 96.0f; + float targetMonitorDpiScaleFactor = monitor.scaleFactor; + std::cout << "Window DPI Scale Factor: " << windowDpiScaleFactor << std::endl; + std::cout << "Target Monitor DPI Scale Factor: " << targetMonitorDpiScaleFactor << std::endl; + + SetParent(m_windowHandle, m_windowHandleWorker); + RECT parentRect; + GetWindowRect(m_windowHandleWorker, &parentRect); + std::cout << "WorkerW Window Position: (" << parentRect.left << ", " << parentRect.top << ")" << std::endl; + + int newX = static_cast((oldRect.left - parentRect.left) * (windowDpiScaleFactor / targetMonitorDpiScaleFactor)); + int newY = static_cast((oldRect.top - parentRect.top) * (windowDpiScaleFactor / targetMonitorDpiScaleFactor)); + std::cout << "Calculated New Position: (" << newX << ", " << newY << ")" << std::endl; + + int newWidth = static_cast(monitor.size.cx * (windowDpiScaleFactor / targetMonitorDpiScaleFactor)); + int newHeight = static_cast(monitor.size.cy * (windowDpiScaleFactor / targetMonitorDpiScaleFactor)); + std::cout << "Calculated New Size: (" << newWidth << "x" << newHeight << ")" << std::endl; + + SetWindowPos(m_windowHandle, NULL, newX, newY, newWidth, newHeight, SWP_NOZORDER | SWP_NOACTIVATE); - const int x = monitors.rcMonitors[activeScreen].left + m_zeroPoint.x() + borderOffset; - const int y = monitors.rcMonitors[activeScreen].top + m_zeroPoint.y() + borderOffset; - qInfo() << QString("Setup window activeScreen: %1 scaling: %2 x: %3 y: %4 width: %5 height: %6").arg(activeScreen).arg(scaling).arg(x).arg(y).arg(width).arg(height); - // Also set it in BaseWindow. This is needed for Windows fade in. - setWidth(width - boderWidth); - setHeight(height - boderWidth); - { - // Must be called twice for some reason when window has scaling... - if (!SetWindowPos(m_windowHandle, nullptr, x, y, width, height, SWP_HIDEWINDOW)) { - qFatal("Could not set window pos"); - } - if (!SetWindowPos(m_windowHandle, nullptr, x, y, width, height, SWP_HIDEWINDOW)) { - qFatal("Could not set window pos"); - } - } - - if (SetParent(m_windowHandle, m_windowHandleWorker) == nullptr) { - qFatal("Could not attach to parent window"); } + return; } /*! @@ -248,7 +282,7 @@ void WinWindow::setupWallpaperForOneScreen(int activeScreen) */ void WinWindow::setupWallpaperForAllScreens() { - ScreenPlayUtil::WinMonitorStats monitors; + WinMonitorStats monitors; QRect rect; for (int i = 0; i < monitors.iMonitors.size(); i++) { const int width = std::abs(monitors.rcMonitors[i].right - monitors.rcMonitors[i].left); @@ -405,12 +439,12 @@ void WinWindow::configureWindowGeometry() // Windows coordante system begins at 0x0 at the // main monitors upper left and not at the most left top monitor. // This can be easily read from the worker window. - m_zeroPoint = { std::abs(rect.left), std::abs(rect.top) }; - g_globalOffset = m_zeroPoint; + // m_zeroPoint = { std::abs(rect.left), std::abs(rect.top) }; + // g_globalOffset = m_zeroPoint; // WARNING: Setting Window flags must be called *here*! SetWindowLongPtr(m_windowHandle, GWL_EXSTYLE, WS_EX_LEFT | WS_EX_LTRREADING | WS_EX_RIGHTSCROLLBAR | WS_EX_NOACTIVATE | WS_EX_TOOLWINDOW | WS_EX_TRANSPARENT); - SetWindowLongPtr(m_windowHandle, GWL_STYLE, WS_POPUPWINDOW); + SetWindowLongPtr(m_windowHandle, GWL_STYLE, WS_POPUP); // Ether for one Screen or for all if ((QGuiApplication::screens().length() == activeScreensList().length()) && (activeScreensList().length() != 1)) { @@ -422,12 +456,8 @@ void WinWindow::configureWindowGeometry() setupWallpaperForMultipleScreens(activeScreensList()); } - m_window.setResizeMode(QQuickView::ResizeMode::SizeRootObjectToView); - m_window.setWidth(width()); - m_window.setHeight(height()); - qInfo() << "Setup " << width() << height(); - m_window.setSource(QUrl("qrc:/qml/ScreenPlayWallpaper/qml/Wallpaper.qml")); - m_window.hide(); + + m_window.show(); } BOOL CALLBACK FindTheDesiredWnd(HWND hWnd, LPARAM lParam) From 1b3fddf1e5cb2afeca8b4b3076d1684777711e0a Mon Sep 17 00:00:00 2001 From: Elias Steurer Date: Sat, 28 Oct 2023 21:26:52 +0200 Subject: [PATCH 023/101] Change to use more functions into windowsintegration --- .../src/ScreenPlayGodotWallpaper.cpp | 48 +-- .../src/ScreenPlayGodotWallpaper.h | 2 +- .../src/windowsintegration.cpp | 74 +++-- ScreenPlayWallpaper/src/windowsintegration.h | 298 ++++++++++++++--- ScreenPlayWallpaper/src/winwindow.cpp | 313 ++---------------- ScreenPlayWallpaper/src/winwindow.h | 2 - 6 files changed, 338 insertions(+), 399 deletions(-) diff --git a/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayGodotWallpaper.cpp b/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayGodotWallpaper.cpp index 60473c8b..8bc3ccda 100644 --- a/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayGodotWallpaper.cpp +++ b/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayGodotWallpaper.cpp @@ -61,21 +61,10 @@ bool ScreenPlayGodotWallpaper::configureWindowGeometry() UtilityFunctions::print("No worker window found"); return false; } - - RECT rect {}; - if (!GetWindowRect(m_hook->windowHandleWorker, &rect)) { - UtilityFunctions::print("Unable to get WindoeRect from worker"); - return false; - } - - // Windows coordante system begins at 0x0 at the - // main monitors upper left and not at the most left top monitor. - // This can be easily read from the worker window. - m_hook->zeroPoint = { std::abs(rect.left), std::abs(rect.top) }; - // WARNING: Setting Window flags must be called *here*! SetWindowLongPtr(m_hook->windowHandle, GWL_EXSTYLE, WS_EX_LEFT | WS_EX_LTRREADING | WS_EX_RIGHTSCROLLBAR | WS_EX_NOACTIVATE | WS_EX_TOOLWINDOW | WS_EX_TRANSPARENT); SetWindowLongPtr(m_hook->windowHandle, GWL_STYLE, WS_POPUPWINDOW); + return true; } @@ -84,7 +73,7 @@ bool ScreenPlayGodotWallpaper::init(int activeScreen) auto* displayServer = DisplayServer::get_singleton(); int64_t handle_int = displayServer->window_get_native_handle(godot::DisplayServer::HandleType::WINDOW_HANDLE, activeScreen); HWND hwnd = reinterpret_cast(static_cast(handle_int)); - m_hook = std::make_unique(); + m_hook = std::make_unique(); m_hook->windowHandle = hwnd; hideFromTaskbar(hwnd); if (!configureWindowGeometry()) { @@ -92,38 +81,13 @@ bool ScreenPlayGodotWallpaper::init(int activeScreen) } ShowWindow(m_hook->windowHandle, SW_HIDE); - const int borderWidth = 2; - const float scaling = m_hook->getScaling(activeScreen); // Assuming getScaling is your own function - const int borderOffset = -1; + WindowsIntegration windowsIntegration; + std::optional monitor = windowsIntegration.setupWallpaperForOneScreen(activeScreen,m_hook->windowHandle,m_hook->windowHandleWorker); + displayServer->window_set_size(godot::Vector2((real_t)monitor->size.cx, (real_t)monitor->size.cy)); - WinMonitorStats monitors; // Assuming this is your own function - const int width = static_cast(std::abs(monitors.rcMonitors[activeScreen].right - monitors.rcMonitors[activeScreen].left) / scaling) + borderWidth; - const int height = static_cast(std::abs(monitors.rcMonitors[activeScreen].top - monitors.rcMonitors[activeScreen].bottom) / scaling) + borderWidth; - - const int x = monitors.rcMonitors[activeScreen].left + m_hook->zeroPoint.x + borderOffset; // Assuming m_zeroPoint is a POINT struct - const int y = monitors.rcMonitors[activeScreen].top + m_hook->zeroPoint.y + borderOffset; - - String output = "Setup window activeScreen: " + itos(activeScreen) + " scaling: " + rtos(scaling) + " x: " + itos(x) + " y: " + itos(y) + " width: " + itos(width) + " height: " + itos(height); - UtilityFunctions::print(output); - displayServer->window_set_size(godot::Vector2((real_t)width, (real_t)height)); - - // Must be called twice for some reason when window has scaling... - if (!SetWindowPos(m_hook->windowHandle, nullptr, x, y, width, height, SWP_HIDEWINDOW)) { - UtilityFunctions::print("Could not set window pos"); - return false; - } - if (!SetWindowPos(m_hook->windowHandle, nullptr, x, y, width, height, SWP_HIDEWINDOW)) { - UtilityFunctions::print("Could not set window pos 2"); - return false; - } - - if (SetParent(m_hook->windowHandle, m_hook->windowHandleWorker) == nullptr) { - UtilityFunctions::print("Could not attach to parent window"); - return false; - } - ShowWindow(m_hook->windowHandle, SW_SHOW); const std::string windowTitle = "ScreenPlayWallpaperGodot"; SetWindowText(hwnd, windowTitle.c_str()); + ShowWindow(m_hook->windowHandle, SW_SHOW); return true; } diff --git a/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayGodotWallpaper.h b/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayGodotWallpaper.h index 6746a221..1ba1f92c 100644 --- a/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayGodotWallpaper.h +++ b/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayGodotWallpaper.h @@ -60,7 +60,7 @@ private: godot::String m_appID = ""; godot::String m_projectPath = ""; - std::unique_ptr m_hook; + std::unique_ptr m_hook; double m_timesinceLastRead = 0.0; bool m_pipeConnected = false; bool m_screenPlayConnected = false; diff --git a/ScreenPlayWallpaper/src/windowsintegration.cpp b/ScreenPlayWallpaper/src/windowsintegration.cpp index 4bde9a35..549e69bf 100644 --- a/ScreenPlayWallpaper/src/windowsintegration.cpp +++ b/ScreenPlayWallpaper/src/windowsintegration.cpp @@ -1,10 +1,7 @@ #include "windowsintegration.h" -WindowsIntegration::WindowsIntegration() -{ -} -bool WindowsHook::searchWorkerWindowToParentTo() +bool WindowsIntegration::searchWorkerWindowToParentTo() { HWND progman_hwnd = FindWindowW(L"Progman", L"Program Manager"); @@ -18,7 +15,7 @@ bool WindowsHook::searchWorkerWindowToParentTo() /*! \brief Returns scaling factor as reported by Windows. */ -float WindowsHook::getScaling(const int monitorIndex) const +float WindowsIntegration::getScaling(const int monitorIndex) const { // Get all monitors int monitorCount = GetSystemMetrics(SM_CMONITORS); @@ -54,14 +51,14 @@ float WindowsHook::getScaling(const int monitorIndex) const } } - // If we reach here, it means we couldn't find the monitor with the given index or couldn't get the DPI. + // If we reach here, it means we couldn't find the monitor with the given index or couldn't get the DPI. return 1.0f; } /*! \brief Returns true of at least one monitor has active scaling enabled. */ -bool WindowsHook::hasWindowScaling() const +bool WindowsIntegration::hasWindowScaling() const { auto enumMonitorCallback = [](HMONITOR hMonitor, HDC hdcMonitor, LPRECT lprcMonitor, LPARAM dwData) -> BOOL { int scaling = GetDeviceCaps(hdcMonitor, LOGPIXELSX) / 96; @@ -94,25 +91,7 @@ BOOL SearchForWorkerWindow(HWND hwnd, LPARAM lparam) return TRUE; } -ResizeResult ResizeWindowToMonitor(HWND hwnd, int monitorIndex) -{ - WinMonitorStats stats; - if (monitorIndex >= stats.rcMonitors.size()) { - return { 0, 0, 0, 0, false }; // Invalid monitor index - } - RECT monitorRect = stats.rcMonitors[monitorIndex]; - int x = monitorRect.left; - int y = monitorRect.top; - int width = monitorRect.right - monitorRect.left; - int height = monitorRect.bottom - monitorRect.top; - - BOOL result = SetWindowPos(hwnd, NULL, x, y, width, height, SWP_NOZORDER | SWP_NOACTIVATE); - - return { x, y, width, height, result != 0 }; -} - - -std::vector GetAllMonitors() { +std::vector WindowsIntegration::GetAllMonitors() { std::vector monitors; // Use the static MonitorEnumProc callback for EnumDisplayMonitors @@ -120,3 +99,46 @@ std::vector GetAllMonitors() { return monitors; } + +BOOL GetMonitorByHandle(HMONITOR hMonitor, HDC hdcMonitor, LPRECT lprcMonitor, LPARAM dwData) +{ + + auto info = (sEnumInfo*)dwData; + if (info->hMonitor == hMonitor) + return FALSE; + ++info->iIndex; + return TRUE; +} + +BOOL FindTheDesiredWnd(HWND hWnd, LPARAM lParam) +{ + DWORD dwStyle = (DWORD)GetWindowLong(hWnd, GWL_STYLE); + if ((dwStyle & WS_MAXIMIZE) != 0) { + *(reinterpret_cast(lParam)) = hWnd; + return false; // stop enumerating + } + return true; // keep enumerating +} + +BOOL MonitorEnumProc(HMONITOR hMonitor, HDC hdcMonitor, LPRECT lprcMonitor, LPARAM dwData) { + std::vector* pMonitors = reinterpret_cast*>(dwData); + + MONITORINFOEX info; + info.cbSize = sizeof(info); + GetMonitorInfo(hMonitor, &info); + + UINT dpiX, dpiY; + GetDpiForMonitor(hMonitor, MDT_EFFECTIVE_DPI, &dpiX, &dpiY); + + Monitor monitor; + monitor.monitorID = hMonitor; + monitor.index = pMonitors->size(); // Set index based on the current size of the vector + monitor.position = info.rcMonitor; + monitor.size.cx = info.rcMonitor.right - info.rcMonitor.left; + monitor.size.cy = info.rcMonitor.bottom - info.rcMonitor.top; + monitor.scaleFactor = static_cast(dpiX) / 96.0f; + + pMonitors->push_back(monitor); + + return true; +} diff --git a/ScreenPlayWallpaper/src/windowsintegration.h b/ScreenPlayWallpaper/src/windowsintegration.h index 087e85b2..75f93860 100644 --- a/ScreenPlayWallpaper/src/windowsintegration.h +++ b/ScreenPlayWallpaper/src/windowsintegration.h @@ -8,6 +8,7 @@ #include #include #include +#include // Do not sort ! #include "WinUser.h" @@ -32,33 +33,9 @@ struct Monitor { }; // Static callback function for EnumDisplayMonitors -static BOOL CALLBACK MonitorEnumProc(HMONITOR hMonitor, HDC hdcMonitor, LPRECT lprcMonitor, LPARAM dwData) { - std::vector* pMonitors = reinterpret_cast*>(dwData); - - MONITORINFOEX info; - info.cbSize = sizeof(info); - GetMonitorInfo(hMonitor, &info); - - UINT dpiX, dpiY; - GetDpiForMonitor(hMonitor, MDT_EFFECTIVE_DPI, &dpiX, &dpiY); - - Monitor monitor; - monitor.monitorID = hMonitor; - monitor.index = pMonitors->size(); // Set index based on the current size of the vector - monitor.position = info.rcMonitor; - monitor.size.cx = info.rcMonitor.right - info.rcMonitor.left; - monitor.size.cy = info.rcMonitor.bottom - info.rcMonitor.top; - monitor.scaleFactor = static_cast(dpiX) / 96.0f; - - pMonitors->push_back(monitor); - - return true; -} - - -std::vector GetAllMonitors(); - - +BOOL CALLBACK MonitorEnumProc(HMONITOR hMonitor, HDC hdcMonitor, LPRECT lprcMonitor, LPARAM dwData); +BOOL CALLBACK GetMonitorByHandle(HMONITOR hMonitor, HDC hdcMonitor, LPRECT lprcMonitor, LPARAM dwData); +BOOL CALLBACK FindTheDesiredWnd(HWND hWnd, LPARAM lParam); BOOL WINAPI SearchForWorkerWindow(HWND hwnd, LPARAM lparam); struct WinMonitorStats { @@ -96,30 +73,269 @@ struct WinMonitorStats { std::vector> sizes; }; -struct ResizeResult { - int x = 0; - int y = 0; - int width = 0; - int height = 0; - bool success = false; -}; -ResizeResult ResizeWindowToMonitor(HWND hwnd, int monitorIndex); - struct Point { int x = 0; int y = 0; }; -struct WindowsHook { +struct sEnumInfo { + int iIndex; + HMONITOR hMonitor; +}; + + +class WindowsIntegration { +public: + bool searchWorkerWindowToParentTo(); float getScaling(const int monitorIndex) const; bool hasWindowScaling() const; HWND windowHandle {}; HWND windowHandleWorker {}; Point zeroPoint; -}; + std::vector GetAllMonitors(); + + + + int GetMonitorIndex(HMONITOR hMonitor) + { + sEnumInfo info; + info.hMonitor = hMonitor; + + if (EnumDisplayMonitors(NULL, NULL, GetMonitorByHandle, (LPARAM)&info)) + return -1; + + return info.iIndex; + } + + /*! + \brief This method is called via a fixed interval to detect if a window completely + covers a monitor. If then sets visualPaused for QML to pause the content. + */ + bool checkForFullScreenWindow(HWND windowHandle) + { + + HWND hFoundWnd = nullptr; + EnumWindows(&FindTheDesiredWnd, reinterpret_cast(&hFoundWnd)); + + // True if one window has WS_MAXIMIZE + if (hFoundWnd != nullptr) { + DWORD dwFlags = 0; + HMONITOR monitor = MonitorFromWindow(hFoundWnd, dwFlags); + HMONITOR wallpaper = MonitorFromWindow(windowHandle, dwFlags); + int monitorIndex = GetMonitorIndex(monitor); + int wallpaperIndex = GetMonitorIndex(wallpaper); + // qDebug() << monitorIndex << wallpaperIndex; + + // If the window that has WS_MAXIMIZE is at the same monitor as this wallpaper + return monitorIndex == wallpaperIndex; + + } else { + return false; + } + } + + // Define the result structure + struct SpanResult { + int width = 0; + int height = 0; + bool success = false; + }; + + /* + * Adjusting a Window's Position and Size for Different Monitor DPI Scale Factors: + * * Windows allows users to set different DPI (dots per inch) scale factors for each monitor. This DPI scaling can lead to + * discrepancies in the positioning and size of windows, especially if we want to place a window on a monitor with a different + * scale factor than the one it was originally on. + * * In our scenario, we want to move and resize a window (`windowHwnd`) to fit perfectly within a target monitor. However, + * both the window and the target monitor can have different DPI scale factors, so we need to account for these when calculating + * the window's new position and size. + * * Steps: + * * 1. Retrieve the DPI scale factor for the window: + * - This gives us the current scale factor of the window based on its original monitor. + * * 2. Retrieve the DPI scale factor for the target monitor: + * - This gives us the scale factor of the monitor where we want to place the window. + * * 3. Calculate the window's new position: + * - The new position should be relative to the `WorkerW` window's coordinates. + * - Adjust the position based on the ratio of the window's DPI scale factor to the target monitor's DPI scale factor. + * This ensures that the window is positioned correctly on the monitor regardless of any differences in scale factors. + * * 4. Calculate the window's new size: + * - Adjust the size of the window based on the ratio of the window's DPI scale factor to the target monitor's DPI scale factor. + * This ensures that the window fits perfectly within the monitor, taking into account any differences in scale factors. + * * By following this approach, we can accurately position and resize the window on any monitor, regardless of differences in DPI + * scale factors. + */ + + std::optional setupWallpaperForOneScreen(const int activeScreen, HWND windowHwnd, HWND parentWindowHwnd) + { + std::vector monitors = GetAllMonitors(); + for (const auto& monitor : monitors) { + monitor.print(); + if (monitor.index != activeScreen) + continue; + + SetWindowPos(windowHwnd, HWND_TOP, + monitor.position.left, monitor.position.top, + monitor.size.cx, monitor.size.cy, + SWP_NOZORDER | SWP_NOACTIVATE); + + RECT oldRect; + GetWindowRect(windowHwnd, &oldRect); + std::cout << "Old Window Position: (" << oldRect.left << ", " << oldRect.top << ")" << std::endl; + + float windowDpiScaleFactor = static_cast(GetDpiForWindow(windowHwnd)) / 96.0f; + float targetMonitorDpiScaleFactor = monitor.scaleFactor; + std::cout << "Window DPI Scale Factor: " << windowDpiScaleFactor << std::endl; + std::cout << "Target Monitor DPI Scale Factor: " << targetMonitorDpiScaleFactor << std::endl; + + SetParent(windowHwnd, parentWindowHwnd); + RECT parentRect; + GetWindowRect(parentWindowHwnd, &parentRect); + std::cout << "WorkerW Window Position: (" << parentRect.left << ", " << parentRect.top << ")" << std::endl; + + int newX = static_cast((oldRect.left - parentRect.left) * (windowDpiScaleFactor / targetMonitorDpiScaleFactor)); + int newY = static_cast((oldRect.top - parentRect.top) * (windowDpiScaleFactor / targetMonitorDpiScaleFactor)); + std::cout << "Calculated New Position: (" << newX << ", " << newY << ")" << std::endl; + + int newWidth = static_cast(monitor.size.cx * (windowDpiScaleFactor / targetMonitorDpiScaleFactor)); + int newHeight = static_cast(monitor.size.cy * (windowDpiScaleFactor / targetMonitorDpiScaleFactor)); + std::cout << "Calculated New Size: (" << newWidth << "x" << newHeight << ")" << std::endl; + + SetWindowPos(windowHwnd, NULL, newX, newY, newWidth, newHeight, SWP_NOZORDER | SWP_NOACTIVATE); + return {monitor}; + } + return std::nullopt; + } + /** + * Spans the window across multiple monitors. + * + * This function takes a vector of monitor indices and adjusts the window's + * size and position to span across the specified monitors. It determines the + * window's new size by finding the bounding rectangle that covers all selected + * monitors. The window's new position is set to the top-left corner of this + * bounding rectangle. + * + * Note: This function assumes that all monitors have the same DPI scaling. If + * they don't, the window may not fit perfectly across the monitors. + * + * @param activeScreens A vector containing the indices of monitors across + * which the window should span. + * + * Usage: + * setupWallpaperForMultipleScreens({0, 1}); // Spans the window across monitors 0 and 1. + * + * Internals: + * 1. For each monitor in `activeScreens`, determine its bounding rectangle. + * 2. Compute the window's new width as `rightmost - leftmost` and its new + * height as `bottommost - topmost`. + * 3. Adjust the window's position and size to fit this bounding rectangle. + */ + SpanResult setupWallpaperForMultipleScreens(const std::vector& activeScreens, HWND windowHwnd, HWND parentWindowHwnd) + { + std::vector monitors = GetAllMonitors(); + + int leftmost = INT_MAX; + int topmost = INT_MAX; + int rightmost = INT_MIN; + int bottommost = INT_MIN; + + for (const auto& monitorIndex : activeScreens) { + if (monitorIndex < monitors.size()) { + const Monitor& monitor = monitors[monitorIndex]; + leftmost = std::min(leftmost, static_cast(monitor.position.left)); + topmost = std::min(topmost, static_cast(monitor.position.top)); + rightmost = std::max(rightmost, static_cast(monitor.position.right)); + bottommost = std::max(bottommost, static_cast(monitor.position.bottom)); + } + } + + + int newWidth = rightmost - leftmost; + int newHeight = bottommost - topmost; + + RECT oldRect; + GetWindowRect(windowHwnd, &oldRect); + + float windowDpiScaleFactor = static_cast(GetDpiForWindow(windowHwnd)) / 96.0f; + + SetParent(windowHwnd, parentWindowHwnd); + RECT parentRect; + GetWindowRect(parentWindowHwnd, &parentRect); + + int newX = static_cast((leftmost - parentRect.left) * windowDpiScaleFactor); + int newY = static_cast((topmost - parentRect.top) * windowDpiScaleFactor); + + SetWindowPos(windowHwnd, NULL, newX, newY, newWidth, newHeight, SWP_NOZORDER | SWP_NOACTIVATE); + SpanResult result; + result.width = rightmost - leftmost; + result.height = bottommost - topmost; + result.success = true; + + return result; + } + /** + * Sets up the wallpaper to span across all connected screens. + * * This function retrieves information about all connected monitors, including their positions, dimensions, and scale factors. + * It then calculates the combined dimensions needed to span the window across all these monitors, taking into account + * the scale factors. The function also handles reparenting the window to the WorkerW window, ensuring it remains below + * other desktop icons. The calculated position and dimensions are adjusted to account for any potential scaling differences + * between the window and the combined monitor setup. + * * @note This function assumes that the window's DPI scale factor is based on a default of 96 DPI. Adjustments are made + * based on this assumption. + * * @note The function currently multiplies the scale factors of all monitors to get an overall scale factor. This may need + * adjustments based on specific application needs. + * * @return SpanResult A structure containing the combined width and height of the monitors, and a success flag indicating + * whether the operation was successful. + * + * @retval SpanResult::width The combined width of all monitors after scaling. + * @retval SpanResult::height The combined height of all monitors after scaling. + * @retval SpanResult::success A boolean flag indicating the success of the operation. Currently, it always returns `true` + * assuming all operations are successful. This can be adjusted based on error checks as needed. + */ + SpanResult setupWallpaperForAllScreens( HWND windowHwnd, HWND parentWindowHwnd) { + std::vector monitors = GetAllMonitors(); + + int leftmost = INT_MAX; + int topmost = INT_MAX; + int rightmost = INT_MIN; + int bottommost = INT_MIN; + float overallScaleFactor = 1.0f; // assuming default is no scaling + + // Calculate the combined dimensions of all monitors + for (const auto& monitor : monitors) { + leftmost = std::min(leftmost, static_cast(monitor.position.left)); + topmost = std::min(topmost, static_cast(monitor.position.top)); + rightmost = std::max(rightmost, static_cast(monitor.position.right)); + bottommost = std::max(bottommost, static_cast(monitor.position.bottom)); + overallScaleFactor *= monitor.scaleFactor; // Adjust as per your scaling needs + } + + int scaledWidth = static_cast((rightmost - leftmost) * overallScaleFactor); + int scaledHeight = static_cast((bottommost - topmost) * overallScaleFactor); + + // Set the position and size of the window to span all monitors + SetWindowPos(windowHwnd, HWND_TOP, leftmost, topmost, scaledWidth, scaledHeight, SWP_NOZORDER | SWP_NOACTIVATE); + + // Reparenting and scaling logic + RECT oldRect; + GetWindowRect(windowHwnd, &oldRect); + float windowDpiScaleFactor = static_cast(GetDpiForWindow(windowHwnd)) / 96.0f; + SetParent(windowHwnd, parentWindowHwnd); + RECT parentRect; + GetWindowRect(parentWindowHwnd, &parentRect); + int newX = static_cast((oldRect.left - parentRect.left) * (windowDpiScaleFactor / overallScaleFactor)); + int newY = static_cast((oldRect.top - parentRect.top) * (windowDpiScaleFactor / overallScaleFactor)); + + SetWindowPos(windowHwnd, NULL, newX, newY, scaledWidth, scaledHeight, SWP_NOZORDER | SWP_NOACTIVATE); + + // Return the combined span of all monitors + SpanResult result; + result.width = scaledWidth; + result.height = scaledHeight; + result.success = true; // Assuming the operations are successful; adjust as needed + + return result; + } + -class WindowsIntegration { -public: - WindowsIntegration(); }; diff --git a/ScreenPlayWallpaper/src/winwindow.cpp b/ScreenPlayWallpaper/src/winwindow.cpp index 057d1301..78fa8483 100644 --- a/ScreenPlayWallpaper/src/winwindow.cpp +++ b/ScreenPlayWallpaper/src/winwindow.cpp @@ -149,12 +149,9 @@ ScreenPlay::WallpaperExitCode WinWindow::start() setupWindowMouseHook(); }); - - - qInfo() << "Setup " << width() << height(); m_window.setSource(QUrl("qrc:/qml/ScreenPlayWallpaper/qml/Wallpaper.qml")); - + m_window.show(); return ScreenPlay::WallpaperExitCode::Ok; } @@ -185,96 +182,15 @@ void WinWindow::destroyThis() emit qmlExit(); } -struct sEnumInfo { - int iIndex; - HMONITOR hMonitor; -}; - -BOOL CALLBACK GetMonitorByIndex(HMONITOR hMonitor, HDC hdcMonitor, LPRECT lprcMonitor, LPARAM dwData) -{ - auto* info = (sEnumInfo*)dwData; - if (--info->iIndex < 0) { - info->hMonitor = hMonitor; - return FALSE; - } - return TRUE; -} - -/* - * Adjusting a Window's Position and Size for Different Monitor DPI Scale Factors: - * - * Windows allows users to set different DPI (dots per inch) scale factors for each monitor. This DPI scaling can lead to - * discrepancies in the positioning and size of windows, especially if we want to place a window on a monitor with a different - * scale factor than the one it was originally on. - * - * In our scenario, we want to move and resize a window (`m_windowHandle`) to fit perfectly within a target monitor. However, - * both the window and the target monitor can have different DPI scale factors, so we need to account for these when calculating - * the window's new position and size. - * - * Steps: - * - * 1. Retrieve the DPI scale factor for the window: - * - This gives us the current scale factor of the window based on its original monitor. - * - * 2. Retrieve the DPI scale factor for the target monitor: - * - This gives us the scale factor of the monitor where we want to place the window. - * - * 3. Calculate the window's new position: - * - The new position should be relative to the `WorkerW` window's coordinates. - * - Adjust the position based on the ratio of the window's DPI scale factor to the target monitor's DPI scale factor. - * This ensures that the window is positioned correctly on the monitor regardless of any differences in scale factors. - * - * 4. Calculate the window's new size: - * - Adjust the size of the window based on the ratio of the window's DPI scale factor to the target monitor's DPI scale factor. - * This ensures that the window fits perfectly within the monitor, taking into account any differences in scale factors. - * - * By following this approach, we can accurately position and resize the window on any monitor, regardless of differences in DPI - * scale factors. - */ void WinWindow::setupWallpaperForOneScreen(int activeScreen) { - std::vector monitors = GetAllMonitors(); - for (const auto& monitor : monitors) { - monitor.print(); - if (monitor.index != activeScreen) - continue; - - SetWindowPos(m_windowHandle, HWND_TOP, - monitor.position.left, monitor.position.top, - monitor.size.cx, monitor.size.cy, - SWP_NOZORDER | SWP_NOACTIVATE); - setWidth(monitor.size.cx); - setHeight(monitor.size.cy); - m_window.setWidth(width()); - m_window.setHeight(height()); - - RECT oldRect; - GetWindowRect(m_windowHandle, &oldRect); - std::cout << "Old Window Position: (" << oldRect.left << ", " << oldRect.top << ")" << std::endl; - - float windowDpiScaleFactor = static_cast(GetDpiForWindow(m_windowHandle)) / 96.0f; - float targetMonitorDpiScaleFactor = monitor.scaleFactor; - std::cout << "Window DPI Scale Factor: " << windowDpiScaleFactor << std::endl; - std::cout << "Target Monitor DPI Scale Factor: " << targetMonitorDpiScaleFactor << std::endl; - - SetParent(m_windowHandle, m_windowHandleWorker); - RECT parentRect; - GetWindowRect(m_windowHandleWorker, &parentRect); - std::cout << "WorkerW Window Position: (" << parentRect.left << ", " << parentRect.top << ")" << std::endl; - - int newX = static_cast((oldRect.left - parentRect.left) * (windowDpiScaleFactor / targetMonitorDpiScaleFactor)); - int newY = static_cast((oldRect.top - parentRect.top) * (windowDpiScaleFactor / targetMonitorDpiScaleFactor)); - std::cout << "Calculated New Position: (" << newX << ", " << newY << ")" << std::endl; - - int newWidth = static_cast(monitor.size.cx * (windowDpiScaleFactor / targetMonitorDpiScaleFactor)); - int newHeight = static_cast(monitor.size.cy * (windowDpiScaleFactor / targetMonitorDpiScaleFactor)); - std::cout << "Calculated New Size: (" << newWidth << "x" << newHeight << ")" << std::endl; - - SetWindowPos(m_windowHandle, NULL, newX, newY, newWidth, newHeight, SWP_NOZORDER | SWP_NOACTIVATE); - - } - return; + WindowsIntegration windowsIntegration; + std::optional monitor = windowsIntegration.setupWallpaperForOneScreen(activeScreen,m_windowHandle,m_windowHandleWorker); + setWidth(monitor->size.cx); + setHeight(monitor->size.cy); + m_window.setWidth(width()); + m_window.setHeight(height()); } /*! @@ -282,43 +198,12 @@ void WinWindow::setupWallpaperForOneScreen(int activeScreen) */ void WinWindow::setupWallpaperForAllScreens() { - WinMonitorStats monitors; - QRect rect; - for (int i = 0; i < monitors.iMonitors.size(); i++) { - const int width = std::abs(monitors.rcMonitors[i].right - monitors.rcMonitors[i].left); - const int height = std::abs(monitors.rcMonitors[i].top - monitors.rcMonitors[i].bottom); - qInfo() << width << height; - rect.setWidth(rect.width() + width); - rect.setHeight(rect.height() + height); - } - int offsetX = 0; - int offsetY = 0; - for (int i = 0; i < monitors.iMonitors.size(); i++) { - const int x = monitors.rcMonitors[i].left; - const int y = monitors.rcMonitors[i].top; - qInfo() << x << y; - if (x < offsetX) { - offsetX = x; - } - if (y < offsetY) { - offsetY += y; - } - } - if (!SetWindowPos(m_windowHandle, nullptr, offsetX, offsetY, rect.width(), rect.height(), SWP_NOSIZE | SWP_NOMOVE)) { - qFatal("Could not set window pos: "); - } - if (!SetWindowPos(m_windowHandle, nullptr, offsetX, offsetY, rect.width(), rect.height(), SWP_NOSIZE | SWP_NOMOVE)) { - qFatal("Could not set window pos: "); - } - if (SetParent(m_windowHandle, m_windowHandleWorker) == nullptr) { - qFatal("Could not attach to parent window"); - } - qInfo() << rect.width() << rect.height() << offsetX << offsetY; - m_window.setHeight(rect.height()); - m_window.setWidth(rect.width()); - m_window.setY(offsetY); - m_window.setX(offsetX + 1920); - qInfo() << m_window.geometry(); + WindowsIntegration windowsIntegration; + WindowsIntegration::SpanResult span = windowsIntegration.setupWallpaperForAllScreens(m_windowHandle,m_windowHandleWorker); + setWidth(span.width); + setHeight(span.height); + m_window.setWidth(width()); + m_window.setHeight(height()); } /*! @@ -326,31 +211,13 @@ void WinWindow::setupWallpaperForAllScreens() */ void WinWindow::setupWallpaperForMultipleScreens(const QVector& activeScreensList) { - QRect rect; - QScreen* upperLeftScreen { nullptr }; - // Check for the upper left screen first so we get x and y positions - for (const int screen : activeScreensList) { - QScreen* screenTmp = QGuiApplication::screens().at(screen); - if (upperLeftScreen != nullptr) { - if (screenTmp->geometry().x() < upperLeftScreen->geometry().x() || screenTmp->geometry().y() < upperLeftScreen->geometry().y()) { - upperLeftScreen = screenTmp; - } - } else { - upperLeftScreen = screenTmp; - } - rect.setWidth(screenTmp->geometry().width() + rect.width()); - rect.setHeight(screenTmp->geometry().height() + rect.height()); - } - - rect.setX(upperLeftScreen->geometry().x()); - rect.setY(upperLeftScreen->geometry().y()); - - if (!SetWindowPos(m_windowHandle, nullptr, rect.x() + m_zeroPoint.x(), rect.y() + m_zeroPoint.y(), rect.width(), rect.height(), SWP_SHOWWINDOW)) { - qFatal("Could not set window pos: "); - } - if (SetParent(m_windowHandle, m_windowHandleWorker) == nullptr) { - qFatal("Could not attach to parent window"); - } + std::vector activeScreens(activeScreensList.begin(), activeScreensList.end()); + WindowsIntegration windowsIntegration; + WindowsIntegration::SpanResult span = windowsIntegration.setupWallpaperForMultipleScreens(activeScreens,m_windowHandle,m_windowHandleWorker); + setWidth(span.width); + setHeight(span.height); + m_window.setWidth(width()); + m_window.setHeight(height()); } bool WinWindow::searchWorkerWindowToParentTo() @@ -364,63 +231,6 @@ bool WinWindow::searchWorkerWindowToParentTo() return EnumWindows(SearchForWorkerWindow, reinterpret_cast(&m_windowHandleWorker)); } -/*! - \brief Returns scaling factor as reported by Windows. -*/ -float WinWindow::getScaling(const int monitorIndex) const -{ - // Get all monitors - int monitorCount = GetSystemMetrics(SM_CMONITORS); - - if (monitorIndex < 0 || monitorIndex >= monitorCount) { - // Invalid monitor index - return 1.0f; - } - - DISPLAY_DEVICE displayDevice; - ZeroMemory(&displayDevice, sizeof(displayDevice)); - displayDevice.cb = sizeof(displayDevice); - - // Enumerate through monitors until we find the one we're looking for - for (int i = 0; EnumDisplayDevices(NULL, i, &displayDevice, 0); i++) { - if (i == monitorIndex) { - DEVMODE devMode; - ZeroMemory(&devMode, sizeof(devMode)); - devMode.dmSize = sizeof(devMode); - - // Get settings for selected monitor - if (!EnumDisplaySettings(displayDevice.DeviceName, ENUM_CURRENT_SETTINGS, &devMode)) { - // Unable to get monitor settings - return 1.0f; - } - - // Get DPI for selected monitor - HMONITOR hMonitor = MonitorFromPoint({ devMode.dmPosition.x, devMode.dmPosition.y }, MONITOR_DEFAULTTONEAREST); - UINT dpiX = 0, dpiY = 0; - if (SUCCEEDED(GetDpiForMonitor(hMonitor, MDT_EFFECTIVE_DPI, &dpiX, &dpiY))) { - return (float)dpiX / 96.0f; // Standard DPI is 96 - } - } - } - - // If we reach here, it means we couldn't find the monitor with the given index or couldn't get the DPI. - return 1.0f; -} - -/*! - \brief Returns true of at least one monitor has active scaling enabled. -*/ -bool WinWindow::hasWindowScaling() const -{ - const auto screens = QGuiApplication::screens(); - for (int i = 0; i < screens.count(); i++) { - if (getScaling(i) != 1) { - return true; - } - } - return false; -} - /*! \brief Sets the size and the parent to the worker handle to be displayed behind the desktop icons. @@ -431,17 +241,6 @@ void WinWindow::configureWindowGeometry() qFatal("No worker window found"); } - RECT rect {}; - if (!GetWindowRect(m_windowHandleWorker, &rect)) { - qFatal("Unable to get WindoeRect from worker"); - } - - // Windows coordante system begins at 0x0 at the - // main monitors upper left and not at the most left top monitor. - // This can be easily read from the worker window. - // m_zeroPoint = { std::abs(rect.left), std::abs(rect.top) }; - // g_globalOffset = m_zeroPoint; - // WARNING: Setting Window flags must be called *here*! SetWindowLongPtr(m_windowHandle, GWL_EXSTYLE, WS_EX_LEFT | WS_EX_LTRREADING | WS_EX_RIGHTSCROLLBAR | WS_EX_NOACTIVATE | WS_EX_TOOLWINDOW | WS_EX_TRANSPARENT); SetWindowLongPtr(m_windowHandle, GWL_STYLE, WS_POPUP); @@ -455,75 +254,9 @@ void WinWindow::configureWindowGeometry() } else if (activeScreensList().length() > 1) { setupWallpaperForMultipleScreens(activeScreensList()); } - - m_window.show(); } -BOOL CALLBACK FindTheDesiredWnd(HWND hWnd, LPARAM lParam) -{ - DWORD dwStyle = (DWORD)GetWindowLong(hWnd, GWL_STYLE); - if ((dwStyle & WS_MAXIMIZE) != 0) { - *(reinterpret_cast(lParam)) = hWnd; - return false; // stop enumerating - } - return true; // keep enumerating -} - -BOOL CALLBACK GetMonitorByHandle(HMONITOR hMonitor, HDC hdcMonitor, LPRECT lprcMonitor, LPARAM dwData) -{ - Q_UNUSED(hdcMonitor) - Q_UNUSED(lprcMonitor) - - auto info = (sEnumInfo*)dwData; - if (info->hMonitor == hMonitor) - return FALSE; - ++info->iIndex; - return TRUE; -} - -int GetMonitorIndex(HMONITOR hMonitor) -{ - sEnumInfo info; - info.hMonitor = hMonitor; - - if (EnumDisplayMonitors(NULL, NULL, GetMonitorByHandle, (LPARAM)&info)) - return -1; - - return info.iIndex; -} - -/*! - \brief This method is called via a fixed interval to detect if a window completely - covers a monitor. If then sets visualPaused for QML to pause the content. -*/ -void WinWindow::checkForFullScreenWindow() -{ - - HWND hFoundWnd = nullptr; - EnumWindows(&FindTheDesiredWnd, reinterpret_cast(&hFoundWnd)); - - // True if one window has WS_MAXIMIZE - if (hFoundWnd != nullptr) { - DWORD dwFlags = 0; - HMONITOR monitor = MonitorFromWindow(hFoundWnd, dwFlags); - HMONITOR wallpaper = MonitorFromWindow(m_windowHandle, dwFlags); - int monitorIndex = GetMonitorIndex(monitor); - int wallpaperIndex = GetMonitorIndex(wallpaper); - // qDebug() << monitorIndex << wallpaperIndex; - - // If the window that has WS_MAXIMIZE is at the same monitor as this wallpaper - if (monitorIndex == wallpaperIndex) { - - setVisualsPaused(true); - } else { - setVisualsPaused(false); - } - - } else { - setVisualsPaused(false); - } -} /*! \brief Custom exit method to force a redraw of the window so that the default desktop wallpaper can be seen agian. @@ -554,4 +287,10 @@ void WinWindow::clearComponentCache() m_window.engine()->clearComponentCache(); } +void WinWindow::checkForFullScreenWindow(){ + bool hasFullscreenWindow = WindowsIntegration().checkForFullScreenWindow(m_windowHandle); + + setVisualsPaused(hasFullscreenWindow); +} + #include "moc_winwindow.cpp" diff --git a/ScreenPlayWallpaper/src/winwindow.h b/ScreenPlayWallpaper/src/winwindow.h index d2b674a9..6e47a0b4 100644 --- a/ScreenPlayWallpaper/src/winwindow.h +++ b/ScreenPlayWallpaper/src/winwindow.h @@ -55,8 +55,6 @@ private: void setupWindowMouseHook(); bool searchWorkerWindowToParentTo(); void configureWindowGeometry(); - bool hasWindowScaling() const; - float getScaling(const int monitorIndex) const; private slots: void checkForFullScreenWindow(); From bbb17321203c8de5028302005841cd128a802ee5 Mon Sep 17 00:00:00 2001 From: Elias Steurer Date: Sat, 28 Oct 2023 21:32:01 +0200 Subject: [PATCH 024/101] Remove none existing files for now --- ScreenPlayWallpaper/CMakeLists.txt | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/ScreenPlayWallpaper/CMakeLists.txt b/ScreenPlayWallpaper/CMakeLists.txt index 7ff4963e..1da8938f 100644 --- a/ScreenPlayWallpaper/CMakeLists.txt +++ b/ScreenPlayWallpaper/CMakeLists.txt @@ -39,7 +39,6 @@ set(SOURCES ${SOURCES} main.cpp src/basewindow.cpp) set(HEADER ${HEADER} src/basewindow.h) set(QML - # cmake-format: sort qml/GifWallpaper.qml qml/MultimediaView.qml @@ -57,11 +56,11 @@ if(WIN32) set(LIB_SOURCES src/windowsintegration.cpp) set(LIB_HEADER src/windowsintegration.h) elseif(APPLE) - set(LIB_SOURCES src/macosintegration.cpp) - set(LIB_HEADER src/macosintegration.h) + set(LIB_SOURCES src/macintegration.cpp) + set(LIB_HEADER src/macintegration.h) elseif(UNIX) - set(LIB_SOURCES src/waylandintegration.cpp) - set(LIB_HEADER src/waylandintegration.h) + #set(LIB_SOURCES src/waylandintegration.cpp) + #set(LIB_HEADER src/waylandintegration.h) endif() add_library(ScreenPlayWallpaperLib STATIC ${LIB_SOURCES} ${LIB_HEADER}) From 6972929d98eff77f570b1eb7cf0930fae9e867e5 Mon Sep 17 00:00:00 2001 From: Elias Steurer Date: Sun, 29 Oct 2023 11:29:52 +0100 Subject: [PATCH 025/101] Fix window position by setting it at the right time --- .../GDExtention/src/ScreenPlayGodotWallpaper.cpp | 6 ++++-- ScreenPlayWallpaper/src/windowsintegration.h | 6 +++++- ScreenPlayWallpaper/src/winwindow.cpp | 13 ++++++++----- 3 files changed, 17 insertions(+), 8 deletions(-) diff --git a/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayGodotWallpaper.cpp b/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayGodotWallpaper.cpp index 8bc3ccda..530b3d48 100644 --- a/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayGodotWallpaper.cpp +++ b/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayGodotWallpaper.cpp @@ -82,8 +82,10 @@ bool ScreenPlayGodotWallpaper::init(int activeScreen) ShowWindow(m_hook->windowHandle, SW_HIDE); WindowsIntegration windowsIntegration; - std::optional monitor = windowsIntegration.setupWallpaperForOneScreen(activeScreen,m_hook->windowHandle,m_hook->windowHandleWorker); - displayServer->window_set_size(godot::Vector2((real_t)monitor->size.cx, (real_t)monitor->size.cy)); + auto updateWindowSize = [this, &displayServer](const int width, const int height){ + displayServer->window_set_size(godot::Vector2((real_t)width, (real_t)height)); + }; + std::optional monitor = windowsIntegration.setupWallpaperForOneScreen(activeScreen,m_hook->windowHandle,m_hook->windowHandleWorker,updateWindowSize); const std::string windowTitle = "ScreenPlayWallpaperGodot"; SetWindowText(hwnd, windowTitle.c_str()); diff --git a/ScreenPlayWallpaper/src/windowsintegration.h b/ScreenPlayWallpaper/src/windowsintegration.h index 75f93860..3c4d10c8 100644 --- a/ScreenPlayWallpaper/src/windowsintegration.h +++ b/ScreenPlayWallpaper/src/windowsintegration.h @@ -9,6 +9,7 @@ #include #include #include +#include // Do not sort ! #include "WinUser.h" @@ -166,7 +167,7 @@ public: * scale factors. */ - std::optional setupWallpaperForOneScreen(const int activeScreen, HWND windowHwnd, HWND parentWindowHwnd) + std::optional setupWallpaperForOneScreen(const int activeScreen, HWND windowHwnd, HWND parentWindowHwnd, std::functionupdateWindowSize) { std::vector monitors = GetAllMonitors(); for (const auto& monitor : monitors) { @@ -179,6 +180,9 @@ public: monitor.size.cx, monitor.size.cy, SWP_NOZORDER | SWP_NOACTIVATE); + // Must be called here to fix window positions! + updateWindowSize(monitor.size.cx, monitor.size.cy); + RECT oldRect; GetWindowRect(windowHwnd, &oldRect); std::cout << "Old Window Position: (" << oldRect.left << ", " << oldRect.top << ")" << std::endl; diff --git a/ScreenPlayWallpaper/src/winwindow.cpp b/ScreenPlayWallpaper/src/winwindow.cpp index 78fa8483..447146eb 100644 --- a/ScreenPlayWallpaper/src/winwindow.cpp +++ b/ScreenPlayWallpaper/src/winwindow.cpp @@ -186,11 +186,14 @@ void WinWindow::destroyThis() void WinWindow::setupWallpaperForOneScreen(int activeScreen) { WindowsIntegration windowsIntegration; - std::optional monitor = windowsIntegration.setupWallpaperForOneScreen(activeScreen,m_windowHandle,m_windowHandleWorker); - setWidth(monitor->size.cx); - setHeight(monitor->size.cy); - m_window.setWidth(width()); - m_window.setHeight(height()); + auto updateWindowSize = [this](const int width, const int height){ + setWidth(width); + setHeight(height); + m_window.setWidth(width); + m_window.setHeight(height); + }; + std::optional monitor = windowsIntegration.setupWallpaperForOneScreen(activeScreen,m_windowHandle,m_windowHandleWorker,updateWindowSize); + } /*! From 3a14c2b8e4b76e43c9f94a2f8a181b963c282048 Mon Sep 17 00:00:00 2001 From: Elias Steurer Date: Sun, 29 Oct 2023 18:08:13 +0100 Subject: [PATCH 026/101] Fix missing wallpaper start call --- ScreenPlay/src/screenplaymanager.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/ScreenPlay/src/screenplaymanager.cpp b/ScreenPlay/src/screenplaymanager.cpp index 46c44a22..ebc8dec2 100644 --- a/ScreenPlay/src/screenplaymanager.cpp +++ b/ScreenPlay/src/screenplaymanager.cpp @@ -169,7 +169,9 @@ bool ScreenPlayManager::createWallpaper( QObject::connect(wallpaper.get(), &ScreenPlayWallpaper::requestSave, this, &ScreenPlayManager::requestSaveProfiles); QObject::connect(wallpaper.get(), &ScreenPlayWallpaper::requestClose, this, &ScreenPlayManager::removeWallpaper); QObject::connect(wallpaper.get(), &ScreenPlayWallpaper::error, this, &ScreenPlayManager::displayErrorPopup); - + if (!wallpaper->start()) { + return false; + } m_screenPlayWallpapers.append(wallpaper); m_monitorListModel->setWallpaperMonitor(wallpaper, monitorIndex); increaseActiveWallpaperCounter(); From 23873e1f1f4f630ddcae40712d5b5d469ccbe7bf Mon Sep 17 00:00:00 2001 From: Elias Steurer Date: Sun, 29 Oct 2023 18:10:13 +0100 Subject: [PATCH 027/101] Add unified logging class this now logs to file and to ui --- ScreenPlay/inc/public/ScreenPlay/util.h | 3 - ScreenPlay/main.cpp | 4 + ScreenPlay/src/screenplaywallpaper.cpp | 6 +- ScreenPlay/src/util.cpp | 89 ------ ScreenPlayUtil/CMakeLists.txt | 6 +- .../public/ScreenPlayUtil/logginghandler.h | 36 +++ ScreenPlayUtil/src/logginghandler.cpp | 270 ++++++++++++++++++ ScreenPlayWallpaper/main.cpp | 12 +- ScreenPlayWidget/main.cpp | 11 +- Tools/defines.py | 7 + Tools/setup.py | 7 +- 11 files changed, 342 insertions(+), 109 deletions(-) create mode 100644 ScreenPlayUtil/inc/public/ScreenPlayUtil/logginghandler.h create mode 100644 ScreenPlayUtil/src/logginghandler.cpp diff --git a/ScreenPlay/inc/public/ScreenPlay/util.h b/ScreenPlay/inc/public/ScreenPlay/util.h index 40387ed8..2d2eaf59 100644 --- a/ScreenPlay/inc/public/ScreenPlay/util.h +++ b/ScreenPlay/inc/public/ScreenPlay/util.h @@ -87,7 +87,6 @@ public slots: void requestDataProtection(); bool fileExists(const QString& filePath) const; - static void logToGui(QtMsgType type, const QMessageLogContext& context, const QString& msg); static bool writeJsonObjectToFile(const QString& absoluteFilePath, const QJsonObject& object, bool truncate = true); static bool writeSettings(const QJsonObject& obj, const QString& absolutePath); static bool writeFile(const QString& text, const QString& absolutePath); @@ -127,6 +126,4 @@ private: std::unique_ptr m_extractor; }; -// Used for redirect content from static logToGui to setDebugMessages -static Util* utilPointer { nullptr }; } diff --git a/ScreenPlay/main.cpp b/ScreenPlay/main.cpp index f7ea57ef..2165dfef 100644 --- a/ScreenPlay/main.cpp +++ b/ScreenPlay/main.cpp @@ -5,6 +5,7 @@ #include #include #include +#include "ScreenPlayUtil/logginghandler.h" #if defined(Q_OS_WIN) #include @@ -26,16 +27,19 @@ int main(int argc, char* argv[]) #endif QGuiApplication qtGuiApp(argc, argv); + std::unique_ptr logging; ScreenPlay::App app; if (app.m_isAnotherScreenPlayInstanceRunning) { return 0; } else { + logging = std::make_unique("ScreenPlay"); app.init(); const int status = qtGuiApp.exec(); #if defined(Q_OS_WIN) sentry_shutdown(); #endif + logging.reset(); return status; } } diff --git a/ScreenPlay/src/screenplaywallpaper.cpp b/ScreenPlay/src/screenplaywallpaper.cpp index e8487c13..f8c91aa1 100644 --- a/ScreenPlay/src/screenplaywallpaper.cpp +++ b/ScreenPlay/src/screenplaywallpaper.cpp @@ -92,13 +92,13 @@ ScreenPlayWallpaper::ScreenPlayWallpaper(const QVector& screenNumber, if (m_type != InstalledType::InstalledType::GodotWallpaper) { m_appArgumentsList.append(" --disable-features=HardwareMediaKeyHandling"); } - if (m_type == InstalledType::InstalledType::GodotWallpaper) { - exportGodotProject(m_absolutePath); - } } bool ScreenPlayWallpaper::start() { + if (m_type == InstalledType::InstalledType::GodotWallpaper) { + exportGodotProject(m_absolutePath); + } m_process.setArguments(m_appArgumentsList); if (m_type == InstalledType::InstalledType::GodotWallpaper) { m_process.setProgram(m_globalVariables->godotWallpaperExecutablePath().toString()); diff --git a/ScreenPlay/src/util.cpp b/ScreenPlay/src/util.cpp index c1dba609..2e2ef32f 100644 --- a/ScreenPlay/src/util.cpp +++ b/ScreenPlay/src/util.cpp @@ -26,11 +26,6 @@ namespace ScreenPlay { Util::Util() : QObject(nullptr) { - // Fix log access vilation on quit - utilPointer = this; - auto* guiAppInst = dynamic_cast(QGuiApplication::instance()); - QObject::connect(guiAppInst, &QGuiApplication::aboutToQuit, this, []() { utilPointer = nullptr; }); - m_extractor = std::make_unique(); m_compressor = std::make_unique(); @@ -39,15 +34,6 @@ Util::Util() QObject::connect(m_compressor.get(), &QArchive::DiskCompressor::progress, this, &Util::compressionProgressChanged); QObject::connect(m_compressor.get(), &QArchive::DiskCompressor::finished, this, &Util::compressionFinished); - - // In release mode redirect messages to logging otherwhise we break the nice clickable output :( -#ifdef QT_NO_DEBUG - qInstallMessageHandler(Util::logToGui); - qInfo() << "Starting ScreenPlay LOG!"; -#endif - - // This gives us nice clickable output in QtCreator - qSetMessagePattern("%{if-category}%{category}: %{endif}%{message}\n Loc: [%{file}:%{line}]"); } /*! @@ -269,81 +255,6 @@ bool Util::fileExists(const QString& filePath) const return file.isFile(); } -static const char* -logLevelForMessageType(QtMsgType msgType) -{ - switch (msgType) { - case QtDebugMsg: - return "debug"; - case QtWarningMsg: - return "warning"; - case QtCriticalMsg: - return "error"; - case QtFatalMsg: - return "fatal"; - case QtInfoMsg: - Q_FALLTHROUGH(); - default: - return "info"; - } -} - -/*! - \brief Basic logging to the GUI. No logging is done to a log file for now. This string can be copied - in the settings tab in the UI. -*/ -void Util::logToGui(QtMsgType type, const QMessageLogContext& context, const QString& msg) -{ - qDebug() << msg; - QByteArray localMsg = msg.toLocal8Bit(); - QByteArray file = "File: " + QByteArray(context.file) + ", "; - QByteArray line = "in line " + QByteArray::number(context.line) + ", "; - QByteArray function = "function " + QByteArray(context.function) + ", Message: "; - - QString log = "  " + QDateTime::currentDateTime().toString() + "   " + localMsg + "
"; - - switch (type) { - case QtDebugMsg: - log.prepend(" Debug:"); - break; - case QtInfoMsg: - log.prepend(" Info:"); - break; - case QtWarningMsg: - log.prepend(" Warning:"); - break; - case QtCriticalMsg: - log.prepend(" Critical:"); - break; - case QtFatalMsg: - log.prepend(" Fatal:"); - break; - } - log.append("\n"); - - if (utilPointer != nullptr) - utilPointer->appendDebugMessages(log); - -#if defined(Q_OS_WIN) - sentry_value_t crumb - = sentry_value_new_breadcrumb("default", qUtf8Printable(msg)); - - sentry_value_set_by_key( - crumb, "category", sentry_value_new_string(context.category)); - - sentry_value_set_by_key( - crumb, "level", sentry_value_new_string(logLevelForMessageType(type))); - - sentry_value_t location = sentry_value_new_object(); - sentry_value_set_by_key( - location, "file", sentry_value_new_string(context.file)); - sentry_value_set_by_key( - location, "line", sentry_value_new_int32(context.line)); - sentry_value_set_by_key(crumb, "data", location); - - sentry_add_breadcrumb(crumb); -#endif -} /*! \brief Takes ownership of \a obj and \a name. Tries to save into a text file diff --git a/ScreenPlayUtil/CMakeLists.txt b/ScreenPlayUtil/CMakeLists.txt index 919e9e45..81a38f79 100644 --- a/ScreenPlayUtil/CMakeLists.txt +++ b/ScreenPlayUtil/CMakeLists.txt @@ -5,6 +5,7 @@ set(CMAKE_CXX_STANDARD 20) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOMOC ON) +find_package(fmt CONFIG REQUIRED) find_package( Qt6 COMPONENTS Core Quick @@ -41,6 +42,7 @@ set(SOURCES # cmake-format: sort inc/public/ScreenPlayUtil/httpfileserver.cpp src/contenttypes.cpp + src/logginghandler.cpp src/projectfile.cpp src/util.cpp) @@ -57,6 +59,7 @@ set(HEADER inc/public/ScreenPlayUtil/PropertyHelpers.h inc/public/ScreenPlayUtil/PtrPropertyHelpers.h inc/public/ScreenPlayUtil/SingletonHelper.h + inc/public/ScreenPlayUtil/logginghandler.h inc/public/ScreenPlayUtil/util.h) if(APPLE) @@ -95,8 +98,7 @@ target_include_directories( ${PROJECT_NAME} PUBLIC inc/public/ PRIVATE src/) - -target_link_libraries(${PROJECT_NAME} PRIVATE Qt6::Core Qt6::Quick) +target_link_libraries(${PROJECT_NAME} PRIVATE Qt6::Core Qt6::Quick PUBLIC fmt::fmt-header-only ScreenPlaySysInfo) if(WIN32) # Used for query windows monitor data diff --git a/ScreenPlayUtil/inc/public/ScreenPlayUtil/logginghandler.h b/ScreenPlayUtil/inc/public/ScreenPlayUtil/logginghandler.h new file mode 100644 index 00000000..a5b5a9e6 --- /dev/null +++ b/ScreenPlayUtil/inc/public/ScreenPlayUtil/logginghandler.h @@ -0,0 +1,36 @@ +#pragma once +#include +#include +#include +#include + +namespace ScreenPlayUtil { +class LoggingHandler : public QObject { + Q_OBJECT + +public: + explicit LoggingHandler(const QString& logFileName); + ~LoggingHandler() override; + +private: + static void start(); + static void stop(); + static std::mutex& logFileMutex(); + static QFile& logFile(); + static size_t& logFileCounter(); + static QString logLine(QtMsgType type, const QMessageLogContext& context, const QString& message); + static QString toString(QtMsgType type); + static QString extractFileName(const QMessageLogContext& context); + static QString extractFunction(const QMessageLogContext& context); + static void writeToConsole(const QString& line, QtMsgType type); + static void writeToFile(const QString& line); + static void checkLogRotation(); + static void loggingMessageHandler(QtMsgType type, const QMessageLogContext& context, const QString& message); + +private: + // When increasing the allowed file size, the code that selects the correct log file must be adjusted. + // Otherwise already completed log files of the day will be expanded. + static constexpr qint64 m_maxFileSize = 2000000000; // 2GB + static QString m_logFileName; +}; +} diff --git a/ScreenPlayUtil/src/logginghandler.cpp b/ScreenPlayUtil/src/logginghandler.cpp new file mode 100644 index 00000000..afa1a287 --- /dev/null +++ b/ScreenPlayUtil/src/logginghandler.cpp @@ -0,0 +1,270 @@ +#include "ScreenPlayUtil/logginghandler.h" +#include "sysinfo.h" +#include +#include +#include +#include +#include +#include +#include +#include + + +/*! + \class ScreenPlayUtil::LoggingHandler + \inmodule core + \brief The LoggingHandler class writes logs to the console and a log file. +*/ + +namespace ScreenPlayUtil { +QString LoggingHandler::m_logFileName; + +LoggingHandler::LoggingHandler(const QString& logFileName) + : QObject() +{ +#ifdef Q_OS_WINDOWS + // Enable UTF-8 support + SetConsoleOutputCP(CP_UTF8); + + // QtCreator has issues with fmt prints + // https://bugreports.qt.io/browse/QTCREATORBUG-3994 + setbuf(stdout, NULL); + +#endif + + qInstallMessageHandler(LoggingHandler::loggingMessageHandler); + const auto lock = std::lock_guard(logFileMutex()); + m_logFileName = logFileName; + start(); +} + +LoggingHandler::~LoggingHandler() +{ + const auto lock = std::lock_guard(logFileMutex()); + stop(); +} + +void LoggingHandler::start() +{ + Q_ASSERT(!m_logFileName.isEmpty()); + + // Use hardcoded path for now because QStandardpaths gives us: 'C:/ProgramData/K3000' + QDir directory; + QString cacheDir = QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation); + directory = QDir(cacheDir + "/ScreenPlay/Logs"); + if (!directory.exists()) { + if (!directory.mkpath(directory.path())) { + qCritical() << "Unable to create logging path at:" << directory.path(); + return; + } + } + + QString filePath; + for (++logFileCounter(); logFileCounter() < 1000; ++logFileCounter()) { + const auto dateTime = QDateTime::currentDateTime().toString("yy-MM-dd"); + const auto fileName = QString { "%1-%2-%3.log" }.arg(dateTime).arg(m_logFileName).arg(QString::number(logFileCounter())); + filePath = directory.path() + "/" + fileName; + auto file = QFile { filePath }; + if (!file.exists()) + break; + if (file.size() <= m_maxFileSize) + break; + } + + logFile().setFileName(filePath); + const auto isOpen = logFile().open(QIODevice::Append | QIODevice::Text); + if (!isOpen) { + qCritical() << "Unable to open log file" << logFile().fileName(); + return; + } + + + SysInfo sysInfo; + QTextStream stream(&logFile()); + stream << "Start ScreenPlay logging " << QDateTime::currentDateTime().toString("dd.MM.yyyy-hh:mm:ss.zzz") << "\n"; + stream << "version: 1.0\n"; + stream << "buildAbi: " << QSysInfo::buildAbi() << "\n"; + stream << "buildCpuArchitecture: " << QSysInfo::buildCpuArchitecture() << "\n"; + stream << "currentCpuArchitecture: " << QSysInfo::currentCpuArchitecture() << "\n"; + stream << "kernelType: " << QSysInfo::kernelType() << "\n"; + stream << "kernelVersion: " << QSysInfo::kernelVersion() << "\n"; + stream << "machineHostName: " << QSysInfo::machineHostName() << "\n"; + stream << "machineUniqueId: " << QSysInfo::machineUniqueId() << "\n"; + stream << "prettyProductName: " << QSysInfo::prettyProductName() << "\n"; + stream << "productType: " << QSysInfo::productType() << "\n"; + stream << "productVersion: " << QSysInfo::productVersion() << "\n"; + stream << "GPU Name: " << sysInfo.gpu()->name() << "\n"; + stream << "GPU Vendor: " << sysInfo.gpu()->vendor() << "\n"; + stream << "GPU ramSize: " << QString::number(sysInfo.gpu()->ramSize()) << "\n"; + stream << "GPU cacheSize: " << QString::number(sysInfo.gpu()->cacheSize()) << "\n"; + stream << "GPU maxFrequency: " << QString::number(sysInfo.gpu()->maxFrequency()) << "\n"; + stream << QString("Uptime: %1 days %2 hours %3 minutes %4 seconds").arg(sysInfo.uptime()->days()).arg(sysInfo.uptime()->hours()).arg(sysInfo.uptime()->minutes()).arg(sysInfo.uptime()->seconds()) << "\n"; + + + const auto now = QLocale().toString(QDateTime::currentDateTime(), QLocale::FormatType::ShortFormat); + const auto message = QString { "[%1] Start logging\n" }.arg(now); + logFile().write(message.toStdString().c_str()); +} + +void LoggingHandler::stop() +{ + const auto now = QLocale().toString(QDateTime::currentDateTime(), QLocale::FormatType::ShortFormat); + const auto message = QString { "[%1] Stop logging\n\n" }.arg(now); + logFile().write(message.toStdString().c_str()); + logFile().close(); +} + +std::mutex& LoggingHandler::logFileMutex() +{ + static std::mutex mutex; + return mutex; +} + +size_t& LoggingHandler::logFileCounter() +{ + static size_t counter = 0; + return counter; +} + +QFile& LoggingHandler::logFile() +{ + static QFile file; + return file; +} + +/*! + \brief Returns a formatted logging line. + + Format: "[]|.|:||\n" + + If possible, this format should not be changed, otherwise the subsequent parsing of the log file will be very difficult. + */ +QString LoggingHandler::logLine(QtMsgType type, const QMessageLogContext& context, const QString& message) +{ + const auto now = QLocale().toString(QDateTime::currentDateTime(), QLocale::FormatType::ShortFormat); + const auto filename = extractFileName(context); + const auto function = extractFunction(context); + auto category = QString(context.category); + if (category == "default") + category = ""; + + return QString("[%1] %2.%3 | %4:%5 | %6 | %7\n").arg(now).arg(category).arg(toString(type)).arg(filename).arg(context.line).arg(function).arg(message); +} + +QString LoggingHandler::toString(QtMsgType type) +{ + switch (type) { + case QtDebugMsg: + return "Debug"; + case QtWarningMsg: + return "Warning"; + case QtCriticalMsg: + return "Critical"; + case QtFatalMsg: + return "Fatal"; + case QtInfoMsg: + return "Info"; + default: + return "?"; + } +} + +QString LoggingHandler::extractFileName(const QMessageLogContext& context) +{ + auto file = QString(context.file); + return file.mid(file.lastIndexOf("\\")).remove("\\"); +} + +/*! + \brief Removes all the unreadable type stuff from the function information in \a context. + */ +QString LoggingHandler::extractFunction(const QMessageLogContext& context) +{ + auto func = QString(context.function); + + auto from = -1; + if (from < 0) { + static const QString search { "__thiscall" }; + from = func.indexOf(search); + if (from >= 0) { + from += search.length(); + } + } + if (from < 0) { + static const QString search { "__cdecl" }; + from = func.indexOf(search); + if (from >= 0) { + from += search.length(); + } + } + if (from < 0) { + from = 0; + } + + auto to = func.indexOf("(", from); + if (to < 0) + return func; + + auto length = to - from; + return func.mid(from, length).trimmed(); +} + +/*! + * \brief LoggingHandler::writeToConsole + * std::flush is used to fix QtCreator not printing output. + */ +void LoggingHandler::writeToConsole(const QString& line, QtMsgType type) +{ + constexpr auto darkMode = true; + auto color = fmt::color::black; + + switch (type) { + case QtDebugMsg: + color = fmt::color::green; + break; + case QtWarningMsg: + color = fmt::color::orange; + break; + case QtCriticalMsg: + color = fmt::color::magenta; + break; + case QtFatalMsg: + color = fmt::color::red; + break; + default: + color = darkMode ? fmt::color::gray : fmt::color::black; + break; + } + fmt::print("{}", fmt::styled(line.toStdString(), fg(color))); +} + +void LoggingHandler::writeToFile(const QString& line) +{ + std::lock_guard lock(logFileMutex()); + if (logFile().isOpen()) { + checkLogRotation(); + logFile().write(line.toStdString().c_str()); + } +} + +/*! + \brief Opens a new log file if the current log file becomes too large. + */ +void LoggingHandler::checkLogRotation() +{ + if (logFile().size() <= m_maxFileSize) + return; + + logFile().write("Maximum file size reached. A new log file is used\n"); + qInfo() << "Rotate Log file"; + stop(); + start(); +} + +void LoggingHandler::loggingMessageHandler(QtMsgType type, const QMessageLogContext& context, const QString& message) +{ + const QString line = LoggingHandler::logLine(type, context, message); + LoggingHandler::writeToConsole(line, type); + LoggingHandler::writeToFile(line); +} +} diff --git a/ScreenPlayWallpaper/main.cpp b/ScreenPlayWallpaper/main.cpp index 32f9ddf3..971de5f9 100644 --- a/ScreenPlayWallpaper/main.cpp +++ b/ScreenPlayWallpaper/main.cpp @@ -10,6 +10,7 @@ #include "ScreenPlayUtil/exitcodes.h" #include "ScreenPlayUtil/util.h" +#include "ScreenPlayUtil/logginghandler.h" #if defined(Q_OS_WIN) #include "src/winwindow.h" @@ -36,6 +37,7 @@ int main(int argc, char* argv[]) #endif QGuiApplication app(argc, argv); + std::unique_ptr logging; std::unique_ptr window; const auto platformName = QGuiApplication::platformName(); @@ -54,6 +56,7 @@ int main(int argc, char* argv[]) // If we start with only one argument (app path) // It means we want to test a single wallpaper const QStringList argumentList = app.arguments(); + QString appID; // For testing purposes when starting the ScreenPlayWallpaper directly. if (argumentList.length() == 1) { @@ -66,7 +69,7 @@ int main(int argc, char* argv[]) "/wallpaper_video_astronaut_vp9", // 4 "/wallpaper_video_nebula_h264" // 5 }; - const int index = 1; + const int index = 5; QString projectPath = exampleContentPath + contentFolder.at(index); window->setActiveScreensList({ 0 }); @@ -111,7 +114,7 @@ int main(int argc, char* argv[]) return static_cast(ScreenPlay::WallpaperExitCode::Invalid_Volume); } - QString appID = argumentList.at(3); + appID = argumentList.at(3); if (!appID.startsWith("appID=")) { qCritical("Invalid appID"); return static_cast(ScreenPlay::WallpaperExitCode::Invalid_AppID); @@ -137,5 +140,8 @@ int main(int argc, char* argv[]) return static_cast(startStatus); } emit window->qmlStart(); - return app.exec(); + logging = std::make_unique("ScreenPlayWallpaper_" + appID); + const int status = app.exec(); + logging.reset(); + return status; } diff --git a/ScreenPlayWidget/main.cpp b/ScreenPlayWidget/main.cpp index cffc4841..ea9be095 100644 --- a/ScreenPlayWidget/main.cpp +++ b/ScreenPlayWidget/main.cpp @@ -9,6 +9,7 @@ #include #include "src/widgetwindow.h" +#include "ScreenPlayUtil/logginghandler.h" #if defined(Q_OS_WIN) Q_IMPORT_QML_PLUGIN(ScreenPlaySysInfoPlugin) @@ -32,6 +33,7 @@ int main(int argc, char* argv[]) #endif QGuiApplication app(argc, argv); + std::unique_ptr logging; const QStringList argumentList = app.arguments(); @@ -83,16 +85,19 @@ int main(int argc, char* argv[]) qWarning() << "Could not parse PositionY value to int: " << argumentList.at(5); positionY = 0; } - + const QString appID = argumentList.at(2); WidgetWindow spwmw( argumentList.at(1), // Project path, - argumentList.at(2), // AppID + appID, // AppID argumentList.at(3), // Type QPoint { positionX, positionY }); #if defined(Q_OS_OSX) MacUtils::showDockIcon(false); #endif + logging = std::make_unique("ScreenPlayWidget_"+ appID); - return app.exec(); + const int status = app.exec(); + logging.reset(); + return status; } diff --git a/Tools/defines.py b/Tools/defines.py index 2726ad5f..8035c016 100644 --- a/Tools/defines.py +++ b/Tools/defines.py @@ -26,6 +26,13 @@ QT_TOOLS_PATH = QT_PATH.joinpath("Tools/") QT_IFW_VERSION = "4.6" # 02.06.2023 https://gitlab.com/kelteseth/screenplay-vcpkg : VCPKG_VERSION = "f06975f46d8c7a1dad916e1e997584f77ae0c34a" +VCPKG_BASE_PACKAGES = [ + "curl", + "cpp-httplib", + "libarchive", + "fmt", + "catch2" + ] PYTHON_EXECUTABLE = "python" if sys.platform == "win32" else "python3" FFMPEG_VERSION = "5.0.1" diff --git a/Tools/setup.py b/Tools/setup.py index c8372627..36006514 100755 --- a/Tools/setup.py +++ b/Tools/setup.py @@ -113,12 +113,7 @@ def main(): root_path = Path(util.cd_repo_root_path()) project_source_parent_path = root_path.joinpath("../").resolve() vcpkg_path = project_source_parent_path.joinpath("vcpkg").resolve() - vcpkg_packages_list = [ - "curl", - "cpp-httplib", - "libarchive", - "catch2" - ] + vcpkg_packages_list = defines.VCPKG_BASE_PACKAGES if not args.skip_aqt: setup_qt() From d044963d503eb28584b615db917cd1160945ed44 Mon Sep 17 00:00:00 2001 From: Elias Steurer Date: Sun, 29 Oct 2023 18:26:01 +0100 Subject: [PATCH 028/101] Fix crash on exit --- ScreenPlay/inc/public/ScreenPlay/app.h | 1 - ScreenPlay/src/app.cpp | 15 +++++++++++---- ScreenPlayWidget/main.cpp | 1 - 3 files changed, 11 insertions(+), 6 deletions(-) diff --git a/ScreenPlay/inc/public/ScreenPlay/app.h b/ScreenPlay/inc/public/ScreenPlay/app.h index 81231b38..efec6970 100644 --- a/ScreenPlay/inc/public/ScreenPlay/app.h +++ b/ScreenPlay/inc/public/ScreenPlay/app.h @@ -104,7 +104,6 @@ public slots: private: QNetworkAccessManager m_networkAccessManager; - QElapsedTimer m_continuousIntegrationMetricsTimer; std::unique_ptr m_mainWindowEngine; std::unique_ptr m_create; diff --git a/ScreenPlay/src/app.cpp b/ScreenPlay/src/app.cpp index 9bfe8e16..457030a6 100644 --- a/ScreenPlay/src/app.cpp +++ b/ScreenPlay/src/app.cpp @@ -67,8 +67,6 @@ App::App() : QObject(nullptr) { - m_continuousIntegrationMetricsTimer.start(); - QGuiApplication::setWindowIcon(QIcon(":/qml/ScreenPlayApp/assets/icons/app.ico")); QGuiApplication::setOrganizationName("ScreenPlay"); QGuiApplication::setOrganizationDomain("screen-play.app"); @@ -221,8 +219,17 @@ void App::exit() { m_screenPlayManager->removeAllWallpapers(); m_screenPlayManager->removeAllWidgets(); - auto* guiAppInst = dynamic_cast(QGuiApplication::instance()); - guiAppInst->quit(); + // Must be called inside a separate event loop otherwise we + // would kill the qml engine while it is calling this function. + // A single shot timer is a handy woraround for this. + QTimer::singleShot(0, this, [this]() { + auto* appInst = QGuiApplication::instance(); + // We must ensure that we kill the qml engine first + // before we destory the rest of the app + m_mainWindowEngine->clearSingletons(); + m_mainWindowEngine.reset(); + appInst->quit(); + }); } void App::showDockIcon(const bool show) diff --git a/ScreenPlayWidget/main.cpp b/ScreenPlayWidget/main.cpp index ea9be095..f9d40f85 100644 --- a/ScreenPlayWidget/main.cpp +++ b/ScreenPlayWidget/main.cpp @@ -96,7 +96,6 @@ int main(int argc, char* argv[]) MacUtils::showDockIcon(false); #endif logging = std::make_unique("ScreenPlayWidget_"+ appID); - const int status = app.exec(); logging.reset(); return status; From e84e5d250e8b9be70583322c70d3da79644f0b49 Mon Sep 17 00:00:00 2001 From: Elias Steurer Date: Sun, 29 Oct 2023 18:31:09 +0100 Subject: [PATCH 029/101] Change logs to open the folder to show all logs --- ScreenPlay/qml/Settings/Settings.qml | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/ScreenPlay/qml/Settings/Settings.qml b/ScreenPlay/qml/Settings/Settings.qml index 6e540746..1643655b 100644 --- a/ScreenPlay/qml/Settings/Settings.qml +++ b/ScreenPlay/qml/Settings/Settings.qml @@ -3,6 +3,7 @@ import QtQuick.Dialogs import QtQuick.Controls import QtQuick.Controls.Material import QtQuick.Layouts +import QtCore import Qt5Compat.GraphicalEffects import ScreenPlayApp import ScreenPlay @@ -482,16 +483,11 @@ Item { description: qsTr("If your ScreenPlay missbehaves this is a good way to look for answers. This shows all logs and warning during runtime.") buttonText: qsTr("Show Logs") onButtonPressed: { - expanderDebug.toggle(); + const logsPath = StandardPaths.writableLocation(StandardPaths.GenericDataLocation) + "/ScreenPlay/Logs" + App.util.openFolderInExplorer(logsPath) } } - SettingsExpander { - id: expanderDebug - - text: App.util.debugMessages - } - SettingsHorizontalSeperator { } From 33c222da5d18664ec01b801486934293d9c60bd5 Mon Sep 17 00:00:00 2001 From: Elias Steurer Date: Wed, 1 Nov 2023 12:28:35 +0100 Subject: [PATCH 030/101] Change ScreenPlayWallpaperLib to win32 only for now Format documents Remove sysinfo from logging for now because it is windows only --- CMakeLists.txt | 13 +- ScreenPlay/inc/public/ScreenPlay/app.h | 1 - .../inc/public/ScreenPlay/screenplaymanager.h | 1 - ScreenPlay/main.cpp | 2 +- ScreenPlay/qml/Settings/Settings.qml | 4 +- ScreenPlay/src/sdkconnection.cpp | 2 +- ScreenPlay/src/util.cpp | 1 - ScreenPlayUtil/CMakeLists.txt | 7 +- .../inc/public/ScreenPlayUtil/util.h | 2 +- ScreenPlayUtil/src/logginghandler.cpp | 32 +- ScreenPlayWallpaper/CMakeLists.txt | 86 +++--- ScreenPlayWallpaper/Godot/CMakeLists.txt | 2 +- .../Godot/GDExtention/CMakeLists.txt | 69 ++--- .../Godot/GDExtention/src/CMakeLists.txt | 24 +- .../src/ScreenPlayGodotWallpaper.cpp | 4 +- .../src/ScreenPlayGodotWallpaper.h | 7 +- .../Godot/GDExtention/src/WindowsPipe.cpp | 10 +- .../Godot/GDExtention/src/WindowsPipeTest.cpp | 2 +- .../GDExtention/templates/CMakeLists.txt | 17 +- ScreenPlayWallpaper/main.cpp | 10 +- ScreenPlayWallpaper/src/basewindow.cpp | 1 - .../src/linuxwaylandwindow.cpp | 22 +- .../src/windowsintegration.cpp | 246 +++++++++++++++- ScreenPlayWallpaper/src/windowsintegration.h | 277 ++---------------- ScreenPlayWallpaper/src/winwindow.cpp | 16 +- ScreenPlayWidget/main.cpp | 4 +- ThirdParty/CMakeLists.txt | 18 +- Tools/CMakeLists.txt | 2 +- 28 files changed, 405 insertions(+), 477 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 78fbea2c..3252405c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -45,7 +45,6 @@ list(APPEND CMAKE_MODULE_PATH "${THIRD_PARTY_PATH}/ecm/find-modules") list(APPEND CMAKE_MODULE_PATH "${THIRD_PARTY_PATH}/ecm/kde-modules") message(STATUS "[PROJECT] CMAKE_MODULE_PATH = ${CMAKE_MODULE_PATH}") - option(OSX_BUNDLE "Enable distribution macOS bundle" OFF) set(CMAKE_OSX_DEPLOYMENT_TARGET "13.0") @@ -74,7 +73,7 @@ set(VCPKG_BIN_PATH "${VCPKG_INSTALLED_PATH}/bin") option(SCREENPLAY_STEAM "For FOSS distribution so we do not bundle proprietary code." ON) option(SCREENPLAY_DEPLOY "Marks this version as an official deploy version. This version uses different import paths and other settings." - OFF) + OFF) option(SCREENPLAY_TESTS "Enables UI tests." ON) option(SCREENPLAY_INSTALLER "Indicates whether an installer via the Qt Installer Framework is created." OFF) option(SCREENPLAY_GODOT_SUPPORT "Compiles ScreenPlayGodotWallpaper." ON) @@ -103,14 +102,12 @@ else() set(DATE_ARG "") endif() - if(UNIX AND NOT APPLE) # Fixes QWebEngine linker errors on Ubuntu 22.04 set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fuse-ld=gold") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fuse-ld=gold") endif() - execute_process( COMMAND ${DATE_COMMAND} ${DATE_ARG} WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}" @@ -138,10 +135,10 @@ add_subdirectory(ThirdParty) set(ECM_DIR "${THIRD_PARTY_PATH}/ecm") add_subdirectory(CMake) if(UNIX AND NOT APPLE) - # Needs to be append, because we include ecm as third party on linux - list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/CMake") - list(APPEND CMAKE_MODULE_PATH "${ECM_DIR}") - list(APPEND CMAKE_MODULE_PATH "${ECM_DIR}/cmake") + # Needs to be append, because we include ecm as third party on linux + list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/CMake") + list(APPEND CMAKE_MODULE_PATH "${ECM_DIR}") + list(APPEND CMAKE_MODULE_PATH "${ECM_DIR}/cmake") else() endif() diff --git a/ScreenPlay/inc/public/ScreenPlay/app.h b/ScreenPlay/inc/public/ScreenPlay/app.h index efec6970..cefca236 100644 --- a/ScreenPlay/inc/public/ScreenPlay/app.h +++ b/ScreenPlay/inc/public/ScreenPlay/app.h @@ -101,7 +101,6 @@ public slots: void setMainWindowEngine(QQmlApplicationEngine* mainWindowEngine); void setWizards(Wizards* wizards); - private: QNetworkAccessManager m_networkAccessManager; std::unique_ptr m_mainWindowEngine; diff --git a/ScreenPlay/inc/public/ScreenPlay/screenplaymanager.h b/ScreenPlay/inc/public/ScreenPlay/screenplaymanager.h index 00fbc390..7c15c7de 100644 --- a/ScreenPlay/inc/public/ScreenPlay/screenplaymanager.h +++ b/ScreenPlay/inc/public/ScreenPlay/screenplaymanager.h @@ -40,7 +40,6 @@ public: int activeWidgetsCounter() const { return m_activeWidgetsCounter; } bool isAnotherScreenPlayInstanceRunning() { return m_isAnotherScreenPlayInstanceRunning; } - signals: void activeWallpaperCounterChanged(int activeWallpaperCounter); void activeWidgetsCounterChanged(int activeWidgetsCounter); diff --git a/ScreenPlay/main.cpp b/ScreenPlay/main.cpp index 2165dfef..7194dac4 100644 --- a/ScreenPlay/main.cpp +++ b/ScreenPlay/main.cpp @@ -1,11 +1,11 @@ // SPDX-License-Identifier: LicenseRef-EliasSteurerTachiom OR AGPL-3.0-only #include "ScreenPlay/app.h" +#include "ScreenPlayUtil/logginghandler.h" #include #include #include #include -#include "ScreenPlayUtil/logginghandler.h" #if defined(Q_OS_WIN) #include diff --git a/ScreenPlay/qml/Settings/Settings.qml b/ScreenPlay/qml/Settings/Settings.qml index 1643655b..b84dd0a8 100644 --- a/ScreenPlay/qml/Settings/Settings.qml +++ b/ScreenPlay/qml/Settings/Settings.qml @@ -483,8 +483,8 @@ Item { description: qsTr("If your ScreenPlay missbehaves this is a good way to look for answers. This shows all logs and warning during runtime.") buttonText: qsTr("Show Logs") onButtonPressed: { - const logsPath = StandardPaths.writableLocation(StandardPaths.GenericDataLocation) + "/ScreenPlay/Logs" - App.util.openFolderInExplorer(logsPath) + const logsPath = StandardPaths.writableLocation(StandardPaths.GenericDataLocation) + "/ScreenPlay/Logs"; + App.util.openFolderInExplorer(logsPath); } } diff --git a/ScreenPlay/src/sdkconnection.cpp b/ScreenPlay/src/sdkconnection.cpp index b022aab6..b2009aa9 100644 --- a/ScreenPlay/src/sdkconnection.cpp +++ b/ScreenPlay/src/sdkconnection.cpp @@ -39,7 +39,7 @@ void ScreenPlay::SDKConnection::readyRead() { // Split all messages by semicolon. This fixes double messages like pingping // when we get messages to fast - const QString read = QString(m_socket->readAll()); + const QString read = QString(m_socket->readAll()); const QStringList messages = read.split(";"); for (const QString& msg : messages) { if (msg == "ping") { diff --git a/ScreenPlay/src/util.cpp b/ScreenPlay/src/util.cpp index 2e2ef32f..669a91d6 100644 --- a/ScreenPlay/src/util.cpp +++ b/ScreenPlay/src/util.cpp @@ -255,7 +255,6 @@ bool Util::fileExists(const QString& filePath) const return file.isFile(); } - /*! \brief Takes ownership of \a obj and \a name. Tries to save into a text file with of name. diff --git a/ScreenPlayUtil/CMakeLists.txt b/ScreenPlayUtil/CMakeLists.txt index 81a38f79..4c02679b 100644 --- a/ScreenPlayUtil/CMakeLists.txt +++ b/ScreenPlayUtil/CMakeLists.txt @@ -55,11 +55,11 @@ set(HEADER inc/public/ScreenPlayUtil/HelpersCommon.h inc/public/ScreenPlayUtil/httpfileserver.h inc/public/ScreenPlayUtil/ListPropertyHelper.h + inc/public/ScreenPlayUtil/logginghandler.h inc/public/ScreenPlayUtil/projectfile.h inc/public/ScreenPlayUtil/PropertyHelpers.h inc/public/ScreenPlayUtil/PtrPropertyHelpers.h inc/public/ScreenPlayUtil/SingletonHelper.h - inc/public/ScreenPlayUtil/logginghandler.h inc/public/ScreenPlayUtil/util.h) if(APPLE) @@ -98,7 +98,10 @@ target_include_directories( ${PROJECT_NAME} PUBLIC inc/public/ PRIVATE src/) -target_link_libraries(${PROJECT_NAME} PRIVATE Qt6::Core Qt6::Quick PUBLIC fmt::fmt-header-only ScreenPlaySysInfo) +target_link_libraries( + ${PROJECT_NAME} + PRIVATE Qt6::Core Qt6::Quick + PUBLIC fmt::fmt-header-only) if(WIN32) # Used for query windows monitor data diff --git a/ScreenPlayUtil/inc/public/ScreenPlayUtil/util.h b/ScreenPlayUtil/inc/public/ScreenPlayUtil/util.h index fcc04827..db263f83 100644 --- a/ScreenPlayUtil/inc/public/ScreenPlayUtil/util.h +++ b/ScreenPlayUtil/inc/public/ScreenPlayUtil/util.h @@ -3,13 +3,13 @@ #pragma once #include "ScreenPlayUtil/contenttypes.h" -#include #include #include #include #include #include #include +#include #include namespace ScreenPlayUtil { diff --git a/ScreenPlayUtil/src/logginghandler.cpp b/ScreenPlayUtil/src/logginghandler.cpp index afa1a287..bac574cf 100644 --- a/ScreenPlayUtil/src/logginghandler.cpp +++ b/ScreenPlayUtil/src/logginghandler.cpp @@ -1,5 +1,4 @@ #include "ScreenPlayUtil/logginghandler.h" -#include "sysinfo.h" #include #include #include @@ -9,10 +8,15 @@ #include #include +#ifdef Q_OS_WINDOWS +#ifndef NOMINMAX +#define NOMINMAX +#endif +#include +#endif /*! \class ScreenPlayUtil::LoggingHandler - \inmodule core \brief The LoggingHandler class writes logs to the console and a log file. */ @@ -48,7 +52,6 @@ void LoggingHandler::start() { Q_ASSERT(!m_logFileName.isEmpty()); - // Use hardcoded path for now because QStandardpaths gives us: 'C:/ProgramData/K3000' QDir directory; QString cacheDir = QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation); directory = QDir(cacheDir + "/ScreenPlay/Logs"); @@ -78,29 +81,6 @@ void LoggingHandler::start() return; } - - SysInfo sysInfo; - QTextStream stream(&logFile()); - stream << "Start ScreenPlay logging " << QDateTime::currentDateTime().toString("dd.MM.yyyy-hh:mm:ss.zzz") << "\n"; - stream << "version: 1.0\n"; - stream << "buildAbi: " << QSysInfo::buildAbi() << "\n"; - stream << "buildCpuArchitecture: " << QSysInfo::buildCpuArchitecture() << "\n"; - stream << "currentCpuArchitecture: " << QSysInfo::currentCpuArchitecture() << "\n"; - stream << "kernelType: " << QSysInfo::kernelType() << "\n"; - stream << "kernelVersion: " << QSysInfo::kernelVersion() << "\n"; - stream << "machineHostName: " << QSysInfo::machineHostName() << "\n"; - stream << "machineUniqueId: " << QSysInfo::machineUniqueId() << "\n"; - stream << "prettyProductName: " << QSysInfo::prettyProductName() << "\n"; - stream << "productType: " << QSysInfo::productType() << "\n"; - stream << "productVersion: " << QSysInfo::productVersion() << "\n"; - stream << "GPU Name: " << sysInfo.gpu()->name() << "\n"; - stream << "GPU Vendor: " << sysInfo.gpu()->vendor() << "\n"; - stream << "GPU ramSize: " << QString::number(sysInfo.gpu()->ramSize()) << "\n"; - stream << "GPU cacheSize: " << QString::number(sysInfo.gpu()->cacheSize()) << "\n"; - stream << "GPU maxFrequency: " << QString::number(sysInfo.gpu()->maxFrequency()) << "\n"; - stream << QString("Uptime: %1 days %2 hours %3 minutes %4 seconds").arg(sysInfo.uptime()->days()).arg(sysInfo.uptime()->hours()).arg(sysInfo.uptime()->minutes()).arg(sysInfo.uptime()->seconds()) << "\n"; - - const auto now = QLocale().toString(QDateTime::currentDateTime(), QLocale::FormatType::ShortFormat); const auto message = QString { "[%1] Start logging\n" }.arg(now); logFile().write(message.toStdString().c_str()); diff --git a/ScreenPlayWallpaper/CMakeLists.txt b/ScreenPlayWallpaper/CMakeLists.txt index 038384be..bd2449a6 100644 --- a/ScreenPlayWallpaper/CMakeLists.txt +++ b/ScreenPlayWallpaper/CMakeLists.txt @@ -7,18 +7,17 @@ set(CMAKE_AUTOMOC ON) find_package( Qt6 - COMPONENTS - Core - Quick - Gui - Widgets - WebSockets - Svg - Multimedia - WebEngineCore - WebEngineQuick - WebChannel - Positioning) + COMPONENTS Core + Quick + Gui + Widgets + WebSockets + Svg + Multimedia + WebEngineCore + WebEngineQuick + WebChannel + Positioning) if(WIN32) set(SOURCES src/windowsdesktopproperties.cpp src/winwindow.cpp) @@ -55,25 +54,18 @@ set(LIB_HEADER) if(WIN32) set(LIB_SOURCES src/windowsintegration.cpp) set(LIB_HEADER src/windowsintegration.h) -elseif(APPLE) - set(LIB_SOURCES src/macintegration.cpp) - set(LIB_HEADER src/macintegration.h) -elseif(UNIX) - #set(LIB_SOURCES src/waylandintegration.cpp) - #set(LIB_HEADER src/waylandintegration.h) -endif() - -add_library(ScreenPlayWallpaperLib STATIC ${LIB_SOURCES} ${LIB_HEADER}) -target_include_directories(ScreenPlayWallpaperLib PUBLIC src) - -if(WIN32) + add_library(ScreenPlayWallpaperLib STATIC ${LIB_SOURCES} ${LIB_HEADER}) + target_include_directories(ScreenPlayWallpaperLib PUBLIC src) # Used for query windows monitor data target_link_libraries(ScreenPlayWallpaperLib PUBLIC shcore.lib) endif() - -add_executable(${PROJECT_NAME} ${SOURCES} ${HEADER} - src/windowsintegration.h src/windowsintegration.cpp) +add_executable( + ${PROJECT_NAME} + ${SOURCES} + ${HEADER} + src/windowsintegration.h + src/windowsintegration.cpp) qt_add_qml_module( ${PROJECT_NAME} @@ -92,34 +84,34 @@ qt_add_qml_module( target_link_libraries( ${PROJECT_NAME} - PRIVATE - ScreenPlaySDK - ScreenPlayWallpaperLib - ScreenPlayUtil - ScreenPlayWeatherplugin - Qt6::Quick - Qt6::Gui - Qt6::Widgets - Qt6::Core - Qt6::WebSockets - Qt6::Svg - Qt6::Multimedia - Qt6::WebEngineCore - Qt6::WebEngineQuick) + PRIVATE ScreenPlaySDK + ScreenPlayUtil + ScreenPlayWeatherplugin + Qt6::Quick + Qt6::Gui + Qt6::Widgets + Qt6::Core + Qt6::WebSockets + Qt6::Svg + Qt6::Multimedia + Qt6::WebEngineCore + Qt6::WebEngineQuick) if(WIN32) - target_link_libraries(${PROJECT_NAME} PRIVATE ScreenPlaySysInfoplugin) + target_link_libraries(${PROJECT_NAME} PRIVATE ScreenPlaySysInfoplugin ScreenPlayWallpaperLib) elseif(UNIX AND NOT APPLE) target_link_libraries(${PROJECT_NAME} PRIVATE X11) endif() if(UNIX AND NOT APPLE) - find_package(ECM CONFIG REQUIRED NO_MODULE) + find_package( + ECM + CONFIG + REQUIRED + NO_MODULE) set(LayerShellQt "${CMAKE_CURRENT_SOURCE_DIR}/../ThirdParty/layer-shell-qt/") find_package(LayerShellQt REQUIRED) - target_link_libraries( - ${PROJECT_NAME} - PRIVATE LayerShellQtInterface) + target_link_libraries(${PROJECT_NAME} PRIVATE LayerShellQtInterface) endif() if(APPLE) @@ -130,7 +122,7 @@ if(APPLE) TARGET ${PROJECT_NAME} POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_CURRENT_SOURCE_DIR}/index.html - ${CMAKE_BINARY_DIR}/bin/ScreenPlay.app/Contents/MacOS/) + ${CMAKE_BINARY_DIR}/bin/ScreenPlay.app/Contents/MacOS/) set_target_properties(${PROJECT_NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin/ScreenPlay.app/Contents/MacOS/") endif() endif() diff --git a/ScreenPlayWallpaper/Godot/CMakeLists.txt b/ScreenPlayWallpaper/Godot/CMakeLists.txt index 996b9450..05fbbca5 100644 --- a/ScreenPlayWallpaper/Godot/CMakeLists.txt +++ b/ScreenPlayWallpaper/Godot/CMakeLists.txt @@ -2,4 +2,4 @@ if(WIN32) add_subdirectory(GDExtention) -endif() \ No newline at end of file +endif() diff --git a/ScreenPlayWallpaper/Godot/GDExtention/CMakeLists.txt b/ScreenPlayWallpaper/Godot/GDExtention/CMakeLists.txt index cd3421e3..60ea81de 100644 --- a/ScreenPlayWallpaper/Godot/GDExtention/CMakeLists.txt +++ b/ScreenPlayWallpaper/Godot/GDExtention/CMakeLists.txt @@ -20,37 +20,31 @@ set(CMAKE_INTERPROCEDURAL_OPTIMIZATION_RELEASE ON) # Output compile commands to compile_commands.json (for debugging CMake issues) set(CMAKE_EXPORT_COMPILE_COMMANDS ON) -# Build universal lib on macOS -# Note that CMAKE_OSX_ARCHITECTURES must be set before project(). +# Build universal lib on macOS Note that CMAKE_OSX_ARCHITECTURES must be set before project(). if(APPLE) - set(CMAKE_OSX_ARCHITECTURES "x86_64;arm64" CACHE STRING "") + set(CMAKE_OSX_ARCHITECTURES + "x86_64;arm64" + CACHE STRING "") endif() # Main project information -project(ScreenPlayGodotWallpaper - LANGUAGES - CXX -) +project(ScreenPlayGodotWallpaper LANGUAGES CXX) # Create our library add_library(${PROJECT_NAME} SHARED) -target_compile_features(${PROJECT_NAME} - PRIVATE - cxx_std_17 -) +target_compile_features(${PROJECT_NAME} PRIVATE cxx_std_17) -# LIB_ARCH is the architecture being built. It is set to the build system's architecture. -# For macOS, we build a universal library (both arm64 and x86_64). +# LIB_ARCH is the architecture being built. It is set to the build system's architecture. For macOS, we build a universal library (both +# arm64 and x86_64). set(LIB_ARCH ${CMAKE_SYSTEM_PROCESSOR}) if(APPLE) set(LIB_ARCH "universal") endif() -# LIB_DIR is where the actual library ends up. This is used in both the build directory and the -# install directory and needs to be consistent with the paths in the gdextension file. -# e.g. linux.release.x86_64 = "lib/Linux-x86_64/libGDExtensionTemplate.so" +# LIB_DIR is where the actual library ends up. This is used in both the build directory and the install directory and needs to be consistent +# with the paths in the gdextension file. e.g. linux.release.x86_64 = "lib/Linux-x86_64/libGDExtensionTemplate.so" set(LIB_DIR "lib/${CMAKE_SYSTEM_NAME}-${LIB_ARCH}") message(STATUS "Building ${PROJECT_NAME} for ${LIB_ARCH} on ${CMAKE_SYSTEM_NAME}") @@ -60,19 +54,15 @@ set(BUILD_OUTPUT_DIR "${PROJECT_BINARY_DIR}/${PROJECT_NAME}/") set(OUT_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../ScreenPlayGodot/${PROJECT_NAME}/) # Compile directly into our Godot project -set_target_properties(${PROJECT_NAME} - PROPERTIES - CXX_VISIBILITY_PRESET hidden - VISIBILITY_INLINES_HIDDEN true - RUNTIME_OUTPUT_DIRECTORY "${OUT_PATH}/${LIB_DIR}" - LIBRARY_OUTPUT_DIRECTORY "${OUT_PATH}/${LIB_DIR}" -) +set_target_properties( + ${PROJECT_NAME} + PROPERTIES CXX_VISIBILITY_PRESET hidden + VISIBILITY_INLINES_HIDDEN true + RUNTIME_OUTPUT_DIRECTORY "${OUT_PATH}/${LIB_DIR}" + LIBRARY_OUTPUT_DIRECTORY "${OUT_PATH}/${LIB_DIR}") if(NOT DEFINED CMAKE_DEBUG_POSTFIX) - set_target_properties(${PROJECT_NAME} - PROPERTIES - DEBUG_POSTFIX "-d" - ) + set_target_properties(${PROJECT_NAME} PROPERTIES DEBUG_POSTFIX "-d") endif() # Warnings @@ -88,34 +78,27 @@ set(INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/${PROJECT_NAME}/") add_subdirectory(templates) -# ccache -# Turns on ccache if found +# ccache Turns on ccache if found include(ccache) -# Formatting -# Adds a custom target to format all the code at once +# Formatting Adds a custom target to format all the code at once include(ClangFormat) -# godot-cpp -# From here: https://github.com/godotengine/godot-cpp +# godot-cpp From here: https://github.com/godotengine/godot-cpp if(NOT EXISTS "${CMAKE_CURRENT_LIST_DIR}/extern/godot-cpp/Makefile") message( FATAL_ERROR - "[${PROJECT_NAME}] The godot-cpp submodule was not downloaded. Please update submodules: git submodule update --init --recursive." + "[${PROJECT_NAME}] The godot-cpp submodule was not downloaded. Please update submodules: git submodule update --init --recursive." ) endif() -set(GODOT_CPP_SYSTEM_HEADERS ON CACHE BOOL "" FORCE) +set(GODOT_CPP_SYSTEM_HEADERS + ON + CACHE BOOL "" FORCE) add_subdirectory(extern/godot-cpp) -set_target_properties(godot-cpp - PROPERTIES - CXX_VISIBILITY_PRESET hidden # visibility needs to be the same as the main library +set_target_properties(godot-cpp PROPERTIES CXX_VISIBILITY_PRESET hidden # visibility needs to be the same as the main library ) -target_link_libraries(${PROJECT_NAME} - PRIVATE - godot-cpp - ScreenPlayWallpaperLib -) +target_link_libraries(${PROJECT_NAME} PRIVATE godot-cpp ScreenPlayWallpaperLib) diff --git a/ScreenPlayWallpaper/Godot/GDExtention/src/CMakeLists.txt b/ScreenPlayWallpaper/Godot/GDExtention/src/CMakeLists.txt index b2480007..9c118279 100644 --- a/ScreenPlayWallpaper/Godot/GDExtention/src/CMakeLists.txt +++ b/ScreenPlayWallpaper/Godot/GDExtention/src/CMakeLists.txt @@ -1,20 +1,16 @@ # SPDX-License-Identifier: Unlicense -target_sources(${PROJECT_NAME} - PRIVATE - ScreenPlayGodotWallpaper.h - ScreenPlayGodotWallpaper.cpp - WindowsPipe.h - WindowsPipe.cpp - RegisterExtension.cpp -) +target_sources( + ${PROJECT_NAME} + PRIVATE ScreenPlayGodotWallpaper.h + ScreenPlayGodotWallpaper.cpp + WindowsPipe.h + WindowsPipe.cpp + RegisterExtension.cpp) find_package(Catch2 CONFIG REQUIRED) -target_include_directories(${PROJECT_NAME} - PRIVATE - "src" -) +target_include_directories(${PROJECT_NAME} PRIVATE "src") # Test app. Start WindowsPipeTestServer.py! -add_executable(WindowsPipeTest WindowsPipeTest.cpp WindowsPipe.h WindowsPipe.cpp) +add_executable(WindowsPipeTest WindowsPipe.cpp WindowsPipe.h WindowsPipeTest.cpp) target_link_libraries(WindowsPipeTest PRIVATE Catch2::Catch2 Catch2::Catch2WithMain) -target_include_directories(WindowsPipeTest PRIVATE "src") \ No newline at end of file +target_include_directories(WindowsPipeTest PRIVATE "src") diff --git a/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayGodotWallpaper.cpp b/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayGodotWallpaper.cpp index 530b3d48..ec60e8f2 100644 --- a/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayGodotWallpaper.cpp +++ b/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayGodotWallpaper.cpp @@ -82,10 +82,10 @@ bool ScreenPlayGodotWallpaper::init(int activeScreen) ShowWindow(m_hook->windowHandle, SW_HIDE); WindowsIntegration windowsIntegration; - auto updateWindowSize = [this, &displayServer](const int width, const int height){ + auto updateWindowSize = [this, &displayServer](const int width, const int height) { displayServer->window_set_size(godot::Vector2((real_t)width, (real_t)height)); }; - std::optional monitor = windowsIntegration.setupWallpaperForOneScreen(activeScreen,m_hook->windowHandle,m_hook->windowHandleWorker,updateWindowSize); + std::optional monitor = windowsIntegration.setupWallpaperForOneScreen(activeScreen, m_hook->windowHandle, m_hook->windowHandleWorker, updateWindowSize); const std::string windowTitle = "ScreenPlayWallpaperGodot"; SetWindowText(hwnd, windowTitle.c_str()); diff --git a/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayGodotWallpaper.h b/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayGodotWallpaper.h index 1ba1f92c..fb834992 100644 --- a/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayGodotWallpaper.h +++ b/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayGodotWallpaper.h @@ -2,6 +2,10 @@ #pragma once +#ifndef NOMINMAX +#define NOMINMAX +#endif + #include "godot_cpp/classes/control.hpp" #include "godot_cpp/classes/global_constants.hpp" #include "godot_cpp/classes/timer.hpp" @@ -14,8 +18,8 @@ #include #include "ScreenPlayGodotWallpaper.h" -#include "windowsintegration.h" #include "WindowsPipe.h" +#include "windowsintegration.h" class ScreenPlayGodotWallpaper : public godot::Node { GDCLASS(ScreenPlayGodotWallpaper, Node) @@ -54,7 +58,6 @@ private: void hideFromTaskbar(HWND hwnd); private: - OVERLAPPED overlappedRead = {}; OVERLAPPED overlappedWrite = {}; diff --git a/ScreenPlayWallpaper/Godot/GDExtention/src/WindowsPipe.cpp b/ScreenPlayWallpaper/Godot/GDExtention/src/WindowsPipe.cpp index 1668ec6a..731b4605 100644 --- a/ScreenPlayWallpaper/Godot/GDExtention/src/WindowsPipe.cpp +++ b/ScreenPlayWallpaper/Godot/GDExtention/src/WindowsPipe.cpp @@ -1,6 +1,7 @@ #include "WindowsPipe.h" -bool WindowsPipe::connectToPipe() { +bool WindowsPipe::connectToPipe() +{ if (m_pipeName.empty()) { std::cerr << "Pipe name not set." << std::endl; return false; @@ -25,7 +26,8 @@ bool WindowsPipe::connectToPipe() { return true; } -bool WindowsPipe::readFromPipe(std::string& outMessage) { +bool WindowsPipe::readFromPipe(std::string& outMessage) +{ char buffer[128]; DWORD bytesRead; @@ -52,8 +54,8 @@ bool WindowsPipe::readFromPipe(std::string& outMessage) { return true; } - -bool WindowsPipe::writeToPipe(const std::string& message) { +bool WindowsPipe::writeToPipe(const std::string& message) +{ DWORD bytesWritten; if (!WriteFile(m_hPipe, message.c_str(), static_cast(message.size()), &bytesWritten, &m_overlapped)) { diff --git a/ScreenPlayWallpaper/Godot/GDExtention/src/WindowsPipeTest.cpp b/ScreenPlayWallpaper/Godot/GDExtention/src/WindowsPipeTest.cpp index f64231cf..bc388bfc 100644 --- a/ScreenPlayWallpaper/Godot/GDExtention/src/WindowsPipeTest.cpp +++ b/ScreenPlayWallpaper/Godot/GDExtention/src/WindowsPipeTest.cpp @@ -21,7 +21,7 @@ TEST_CASE("Test WindowsPipe with Python echo server", "[WindowsPipe]") std::string response; REQUIRE(client.readFromPipe(response)); REQUIRE(response == "pong;"); - std::cout << response <<"ok\n"; + std::cout << response << "ok\n"; } } } diff --git a/ScreenPlayWallpaper/Godot/GDExtention/templates/CMakeLists.txt b/ScreenPlayWallpaper/Godot/GDExtention/templates/CMakeLists.txt index e5cb7fcf..167530ea 100644 --- a/ScreenPlayWallpaper/Godot/GDExtention/templates/CMakeLists.txt +++ b/ScreenPlayWallpaper/Godot/GDExtention/templates/CMakeLists.txt @@ -1,18 +1,17 @@ # SPDX-License-Identifier: Unlicense -add_custom_target(templates - SOURCES - template.debug.gdextension.in - template.release.gdextension.in -) +add_custom_target(templates SOURCES template.debug.gdextension.in template.release.gdextension.in) add_dependencies(${PROJECT_NAME} templates) -# We shouldn't be relying on CMAKE_BUILD_TYPE (see https://github.com/asmaloney/GDExtensionTemplate/issues/25) -# But until we fix it here and in godot-cpp, ensure it's one we expect. +# We shouldn't be relying on CMAKE_BUILD_TYPE (see https://github.com/asmaloney/GDExtensionTemplate/issues/25) But until we fix it here and +# in godot-cpp, ensure it's one we expect. set(ALLOWED_BUILDS "Debug;Release;debug;release") -if(NOT "${CMAKE_BUILD_TYPE}" IN_LIST ALLOWED_BUILDS) +if(NOT + "${CMAKE_BUILD_TYPE}" + IN_LIST + ALLOWED_BUILDS) message(FATAL_ERROR "CMAKE_BUILD_TYPE must be set to Debug or Release") endif() @@ -28,7 +27,7 @@ endif() # Generate our project's .gdextension file from the template set(OUT_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../../ScreenPlayGodot/${PROJECT_NAME}/) set(GD_EXTENSION_FILE ${PROJECT_NAME}.gdextension) -#configure_file(${GD_EXTENSION_FILE_INPUT} ${OUT_PATH}/${GD_EXTENSION_FILE}) +# configure_file(${GD_EXTENSION_FILE_INPUT} ${OUT_PATH}/${GD_EXTENSION_FILE}) unset(ALLOWED_BUILDS) unset(BUILD_TYPE) diff --git a/ScreenPlayWallpaper/main.cpp b/ScreenPlayWallpaper/main.cpp index 971de5f9..0e875807 100644 --- a/ScreenPlayWallpaper/main.cpp +++ b/ScreenPlayWallpaper/main.cpp @@ -9,15 +9,15 @@ #include "ScreenPlayWallpaper/CMakeVariables.h" #include "ScreenPlayUtil/exitcodes.h" -#include "ScreenPlayUtil/util.h" #include "ScreenPlayUtil/logginghandler.h" +#include "ScreenPlayUtil/util.h" #if defined(Q_OS_WIN) #include "src/winwindow.h" Q_IMPORT_QML_PLUGIN(ScreenPlaySysInfoPlugin) #elif defined(Q_OS_LINUX) -#include "src/linuxx11window.h" #include "src/linuxwaylandwindow.h" +#include "src/linuxx11window.h" #elif defined(Q_OS_OSX) #include "src/macwindow.h" #endif @@ -44,9 +44,9 @@ int main(int argc, char* argv[]) #if defined(Q_OS_WIN) window = std::make_unique(); #elif defined(Q_OS_LINUX) - if(platformName == "xcb"){ - window = std::make_unique(); - } else if(platformName == "wayland"){ + if (platformName == "xcb") { + window = std::make_unique(); + } else if (platformName == "wayland") { window = std::make_unique(); } #elif defined(Q_OS_OSX) diff --git a/ScreenPlayWallpaper/src/basewindow.cpp b/ScreenPlayWallpaper/src/basewindow.cpp index bfa031aa..2bb44d39 100644 --- a/ScreenPlayWallpaper/src/basewindow.cpp +++ b/ScreenPlayWallpaper/src/basewindow.cpp @@ -35,7 +35,6 @@ BaseWindow::BaseWindow() "VideoCodec", "Error: only enums"); - setOSVersion(QSysInfo::productVersion()); } diff --git a/ScreenPlayWallpaper/src/linuxwaylandwindow.cpp b/ScreenPlayWallpaper/src/linuxwaylandwindow.cpp index 5879cdeb..73d453e3 100644 --- a/ScreenPlayWallpaper/src/linuxwaylandwindow.cpp +++ b/ScreenPlayWallpaper/src/linuxwaylandwindow.cpp @@ -1,10 +1,10 @@ // SPDX-License-Identifier: LicenseRef-EliasSteurerTachiom OR AGPL-3.0-only #include "linuxwaylandwindow.h" -#include #include +#include -#include #include +#include ScreenPlay::WallpaperExitCode LinuxWaylandWindow::start() { @@ -22,20 +22,12 @@ ScreenPlay::WallpaperExitCode LinuxWaylandWindow::start() // Get the Wayland display if (QGuiApplication::platformName() == "wayland") { - QPlatformNativeInterface *native = QGuiApplication::platformNativeInterface(); - + QPlatformNativeInterface* native = QGuiApplication::platformNativeInterface(); - auto *layerShell = LayerShellQt::Window::get(&m_window); - layerShell->setLayer(LayerShellQt::Window::LayerBackground); - layerShell->setAnchors(static_cast>( - LayerShellQt::Window::Anchor::AnchorTop | - LayerShellQt::Window::Anchor::AnchorBottom | - LayerShellQt::Window::Anchor::AnchorLeft | - LayerShellQt::Window::Anchor::AnchorRight - )); - - - + auto* layerShell = LayerShellQt::Window::get(&m_window); + layerShell->setLayer(LayerShellQt::Window::LayerBackground); + layerShell->setAnchors(static_cast>( + LayerShellQt::Window::Anchor::AnchorTop | LayerShellQt::Window::Anchor::AnchorBottom | LayerShellQt::Window::Anchor::AnchorLeft | LayerShellQt::Window::Anchor::AnchorRight)); } m_window.show(); diff --git a/ScreenPlayWallpaper/src/windowsintegration.cpp b/ScreenPlayWallpaper/src/windowsintegration.cpp index 549e69bf..d8b71af2 100644 --- a/ScreenPlayWallpaper/src/windowsintegration.cpp +++ b/ScreenPlayWallpaper/src/windowsintegration.cpp @@ -1,6 +1,4 @@ #include "windowsintegration.h" - - bool WindowsIntegration::searchWorkerWindowToParentTo() { @@ -29,20 +27,20 @@ float WindowsIntegration::getScaling(const int monitorIndex) const ZeroMemory(&displayDevice, sizeof(displayDevice)); displayDevice.cb = sizeof(displayDevice); - // Enumerate through monitors until we find the one we're looking for + // Enumerate through monitors until we find the one we're looking for for (int i = 0; EnumDisplayDevices(NULL, i, &displayDevice, 0); i++) { if (i == monitorIndex) { DEVMODE devMode; ZeroMemory(&devMode, sizeof(devMode)); devMode.dmSize = sizeof(devMode); - // Get settings for selected monitor + // Get settings for selected monitor if (!EnumDisplaySettings(displayDevice.DeviceName, ENUM_CURRENT_SETTINGS, &devMode)) { // Unable to get monitor settings return 1.0f; } - // Get DPI for selected monitor + // Get DPI for selected monitor HMONITOR hMonitor = MonitorFromPoint({ devMode.dmPosition.x, devMode.dmPosition.y }, MONITOR_DEFAULTTONEAREST); UINT dpiX = 0, dpiY = 0; if (SUCCEEDED(GetDpiForMonitor(hMonitor, MDT_EFFECTIVE_DPI, &dpiX, &dpiY))) { @@ -91,15 +89,244 @@ BOOL SearchForWorkerWindow(HWND hwnd, LPARAM lparam) return TRUE; } -std::vector WindowsIntegration::GetAllMonitors() { +std::vector WindowsIntegration::GetAllMonitors() +{ std::vector monitors; - // Use the static MonitorEnumProc callback for EnumDisplayMonitors + // Use the static MonitorEnumProc callback for EnumDisplayMonitors EnumDisplayMonitors(NULL, NULL, MonitorEnumProc, reinterpret_cast(&monitors)); return monitors; } +int WindowsIntegration::GetMonitorIndex(HMONITOR hMonitor) +{ + sEnumInfo info; + info.hMonitor = hMonitor; + + if (EnumDisplayMonitors(NULL, NULL, GetMonitorByHandle, (LPARAM)&info)) + return -1; + + return info.iIndex; +} +/*! + \brief This method is called via a fixed interval to detect if a window completely + covers a monitor. If then sets visualPaused for QML to pause the content. +*/ +bool WindowsIntegration::checkForFullScreenWindow(HWND windowHandle) +{ + + HWND hFoundWnd = nullptr; + EnumWindows(&FindTheDesiredWnd, reinterpret_cast(&hFoundWnd)); + + // True if one window has WS_MAXIMIZE + if (hFoundWnd != nullptr) { + DWORD dwFlags = 0; + HMONITOR monitor = MonitorFromWindow(hFoundWnd, dwFlags); + HMONITOR wallpaper = MonitorFromWindow(windowHandle, dwFlags); + int monitorIndex = GetMonitorIndex(monitor); + int wallpaperIndex = GetMonitorIndex(wallpaper); + // qDebug() << monitorIndex << wallpaperIndex; + + // If the window that has WS_MAXIMIZE is at the same monitor as this wallpaper + return monitorIndex == wallpaperIndex; + + } else { + return false; + } +} +/* + * Adjusting a Window's Position and Size for Different Monitor DPI Scale Factors: + * * Windows allows users to set different DPI (dots per inch) scale factors for each monitor. This DPI scaling can lead to + * discrepancies in the positioning and size of windows, especially if we want to place a window on a monitor with a different + * scale factor than the one it was originally on. + * * In our scenario, we want to move and resize a window (`windowHwnd`) to fit perfectly within a target monitor. However, + * both the window and the target monitor can have different DPI scale factors, so we need to account for these when calculating + * the window's new position and size. + * * Steps: + * * 1. Retrieve the DPI scale factor for the window: + * - This gives us the current scale factor of the window based on its original monitor. + * * 2. Retrieve the DPI scale factor for the target monitor: + * - This gives us the scale factor of the monitor where we want to place the window. + * * 3. Calculate the window's new position: + * - The new position should be relative to the `WorkerW` window's coordinates. + * - Adjust the position based on the ratio of the window's DPI scale factor to the target monitor's DPI scale factor. + * This ensures that the window is positioned correctly on the monitor regardless of any differences in scale factors. + * * 4. Calculate the window's new size: + * - Adjust the size of the window based on the ratio of the window's DPI scale factor to the target monitor's DPI scale factor. + * This ensures that the window fits perfectly within the monitor, taking into account any differences in scale factors. + * * By following this approach, we can accurately position and resize the window on any monitor, regardless of differences in DPI + * scale factors. + */ + +std::optional WindowsIntegration::setupWallpaperForOneScreen(const int activeScreen, HWND windowHwnd, HWND parentWindowHwnd, std::function updateWindowSize) +{ + std::vector monitors = GetAllMonitors(); + for (const auto& monitor : monitors) { + monitor.print(); + if (monitor.index != activeScreen) + continue; + + SetWindowPos(windowHwnd, HWND_TOP, + monitor.position.left, monitor.position.top, + monitor.size.cx, monitor.size.cy, + SWP_NOZORDER | SWP_NOACTIVATE); + + // Must be called here to fix window positions! + updateWindowSize(monitor.size.cx, monitor.size.cy); + + RECT oldRect; + GetWindowRect(windowHwnd, &oldRect); + std::cout << "Old Window Position: (" << oldRect.left << ", " << oldRect.top << ")" << std::endl; + + float windowDpiScaleFactor = static_cast(GetDpiForWindow(windowHwnd)) / 96.0f; + float targetMonitorDpiScaleFactor = monitor.scaleFactor; + std::cout << "Window DPI Scale Factor: " << windowDpiScaleFactor << std::endl; + std::cout << "Target Monitor DPI Scale Factor: " << targetMonitorDpiScaleFactor << std::endl; + + SetParent(windowHwnd, parentWindowHwnd); + RECT parentRect; + GetWindowRect(parentWindowHwnd, &parentRect); + std::cout << "WorkerW Window Position: (" << parentRect.left << ", " << parentRect.top << ")" << std::endl; + + int newX = static_cast((oldRect.left - parentRect.left) * (windowDpiScaleFactor / targetMonitorDpiScaleFactor)); + int newY = static_cast((oldRect.top - parentRect.top) * (windowDpiScaleFactor / targetMonitorDpiScaleFactor)); + std::cout << "Calculated New Position: (" << newX << ", " << newY << ")" << std::endl; + + int newWidth = static_cast(monitor.size.cx * (windowDpiScaleFactor / targetMonitorDpiScaleFactor)); + int newHeight = static_cast(monitor.size.cy * (windowDpiScaleFactor / targetMonitorDpiScaleFactor)); + std::cout << "Calculated New Size: (" << newWidth << "x" << newHeight << ")" << std::endl; + + SetWindowPos(windowHwnd, NULL, newX, newY, newWidth, newHeight, SWP_NOZORDER | SWP_NOACTIVATE); + return { monitor }; + } + return std::nullopt; +} +/** + * Spans the window across multiple monitors. + * * This function takes a vector of monitor indices and adjusts the window's + * size and position to span across the specified monitors. It determines the + * window's new size by finding the bounding rectangle that covers all selected + * monitors. The window's new position is set to the top-left corner of this + * bounding rectangle. + * * Note: This function assumes that all monitors have the same DPI scaling. If + * they don't, the window may not fit perfectly across the monitors. + * * @param activeScreens A vector containing the indices of monitors across + * which the window should span. + * * Usage: + * setupWallpaperForMultipleScreens({0, 1}); // Spans the window across monitors 0 and 1. + * * Internals: + * 1. For each monitor in `activeScreens`, determine its bounding rectangle. + * 2. Compute the window's new width as `rightmost - leftmost` and its new + * height as `bottommost - topmost`. + * 3. Adjust the window's position and size to fit this bounding rectangle. + */ +WindowsIntegration::SpanResult WindowsIntegration::setupWallpaperForMultipleScreens(const std::vector& activeScreens, HWND windowHwnd, HWND parentWindowHwnd) +{ + std::vector monitors = GetAllMonitors(); + + int leftmost = INT_MAX; + int topmost = INT_MAX; + int rightmost = INT_MIN; + int bottommost = INT_MIN; + + for (const auto& monitorIndex : activeScreens) { + if (monitorIndex < monitors.size()) { + const Monitor& monitor = monitors[monitorIndex]; + leftmost = (std::min)(leftmost, static_cast(monitor.position.left)); + topmost = (std::min)(topmost, static_cast(monitor.position.top)); + rightmost = (std::max)(rightmost, static_cast(monitor.position.right)); + bottommost = (std::max)(bottommost, static_cast(monitor.position.bottom)); + } + } + + int newWidth = rightmost - leftmost; + int newHeight = bottommost - topmost; + + RECT oldRect; + GetWindowRect(windowHwnd, &oldRect); + + float windowDpiScaleFactor = static_cast(GetDpiForWindow(windowHwnd)) / 96.0f; + + SetParent(windowHwnd, parentWindowHwnd); + RECT parentRect; + GetWindowRect(parentWindowHwnd, &parentRect); + + int newX = static_cast((leftmost - parentRect.left) * windowDpiScaleFactor); + int newY = static_cast((topmost - parentRect.top) * windowDpiScaleFactor); + + SetWindowPos(windowHwnd, NULL, newX, newY, newWidth, newHeight, SWP_NOZORDER | SWP_NOACTIVATE); + SpanResult result; + result.width = rightmost - leftmost; + result.height = bottommost - topmost; + result.success = true; + + return result; +} +/** + * Sets up the wallpaper to span across all connected screens. + * * This function retrieves information about all connected monitors, including their positions, dimensions, and scale factors. + * It then calculates the combined dimensions needed to span the window across all these monitors, taking into account + * the scale factors. The function also handles reparenting the window to the WorkerW window, ensuring it remains below + * other desktop icons. The calculated position and dimensions are adjusted to account for any potential scaling differences + * between the window and the combined monitor setup. + * * @note This function assumes that the window's DPI scale factor is based on a default of 96 DPI. Adjustments are made + * based on this assumption. + * * @note The function currently multiplies the scale factors of all monitors to get an overall scale factor. This may need + * adjustments based on specific application needs. + * * @return SpanResult A structure containing the combined width and height of the monitors, and a success flag indicating + * whether the operation was successful. + * * @retval SpanResult::width The combined width of all monitors after scaling. + * @retval SpanResult::height The combined height of all monitors after scaling. + * @retval SpanResult::success A boolean flag indicating the success of the operation. Currently, it always returns `true` + * assuming all operations are successful. This can be adjusted based on error checks as needed. + */ +WindowsIntegration::SpanResult WindowsIntegration::setupWallpaperForAllScreens(HWND windowHwnd, HWND parentWindowHwnd) +{ + std::vector monitors = GetAllMonitors(); + + int leftmost = INT_MAX; + int topmost = INT_MAX; + int rightmost = INT_MIN; + int bottommost = INT_MIN; + float overallScaleFactor = 1.0f; // assuming default is no scaling + + // Calculate the combined dimensions of all monitors + for (const auto& monitor : monitors) { + leftmost = (std::min)(leftmost, static_cast(monitor.position.left)); + topmost = (std::min)(topmost, static_cast(monitor.position.top)); + rightmost = (std::max)(rightmost, static_cast(monitor.position.right)); + bottommost = (std::max)(bottommost, static_cast(monitor.position.bottom)); + overallScaleFactor *= monitor.scaleFactor; // Adjust as per your scaling needs + } + + int scaledWidth = static_cast((rightmost - leftmost) * overallScaleFactor); + int scaledHeight = static_cast((bottommost - topmost) * overallScaleFactor); + + // Set the position and size of the window to span all monitors + SetWindowPos(windowHwnd, HWND_TOP, leftmost, topmost, scaledWidth, scaledHeight, SWP_NOZORDER | SWP_NOACTIVATE); + + // Reparenting and scaling logic + RECT oldRect; + GetWindowRect(windowHwnd, &oldRect); + float windowDpiScaleFactor = static_cast(GetDpiForWindow(windowHwnd)) / 96.0f; + SetParent(windowHwnd, parentWindowHwnd); + RECT parentRect; + GetWindowRect(parentWindowHwnd, &parentRect); + int newX = static_cast((oldRect.left - parentRect.left) * (windowDpiScaleFactor / overallScaleFactor)); + int newY = static_cast((oldRect.top - parentRect.top) * (windowDpiScaleFactor / overallScaleFactor)); + + SetWindowPos(windowHwnd, NULL, newX, newY, scaledWidth, scaledHeight, SWP_NOZORDER | SWP_NOACTIVATE); + + // Return the combined span of all monitors + SpanResult result; + result.width = scaledWidth; + result.height = scaledHeight; + result.success = true; // Assuming the operations are successful; adjust as needed + + return result; +} + BOOL GetMonitorByHandle(HMONITOR hMonitor, HDC hdcMonitor, LPRECT lprcMonitor, LPARAM dwData) { @@ -120,10 +347,11 @@ BOOL FindTheDesiredWnd(HWND hWnd, LPARAM lParam) return true; // keep enumerating } -BOOL MonitorEnumProc(HMONITOR hMonitor, HDC hdcMonitor, LPRECT lprcMonitor, LPARAM dwData) { +BOOL MonitorEnumProc(HMONITOR hMonitor, HDC hdcMonitor, LPRECT lprcMonitor, LPARAM dwData) +{ std::vector* pMonitors = reinterpret_cast*>(dwData); - MONITORINFOEX info; + MONITORINFOEX info; info.cbSize = sizeof(info); GetMonitorInfo(hMonitor, &info); diff --git a/ScreenPlayWallpaper/src/windowsintegration.h b/ScreenPlayWallpaper/src/windowsintegration.h index 3c4d10c8..92301aa7 100644 --- a/ScreenPlayWallpaper/src/windowsintegration.h +++ b/ScreenPlayWallpaper/src/windowsintegration.h @@ -16,13 +16,14 @@ #include struct Monitor { - HMONITOR monitorID; // Handle to the monitor - int index; // Index of the monitor - RECT position; // Monitor's position and size - SIZE size; // Monitor's width and height - float scaleFactor; // Scale factor (DPI scaling as a factor, e.g., 1.5 for 150% scaling) + HMONITOR monitorID; // Handle to the monitor + int index; // Index of the monitor + RECT position; // Monitor's position and size + SIZE size; // Monitor's width and height + float scaleFactor; // Scale factor (DPI scaling as a factor, e.g., 1.5 for 150% scaling) - void print() const { + void print() const + { std::cout << "Monitor Info:" << std::endl; std::cout << "Monitor ID: " << monitorID << std::endl; std::cout << "Index: " << index << std::endl; @@ -41,14 +42,12 @@ BOOL WINAPI SearchForWorkerWindow(HWND hwnd, LPARAM lparam); struct WinMonitorStats { - WinMonitorStats() { EnumDisplayMonitors(NULL, NULL, MonitorEnum, (LPARAM)this); } - - static BOOL CALLBACK MonitorEnum(HMONITOR hMon, HDC hdc, LPRECT lprcMonitor, LPARAM pData) + static BOOL CALLBACK MonitorEnum(HMONITOR hMon, HDC hdc, LPRECT lprcMonitor, LPARAM pData) { WinMonitorStats* pThis = reinterpret_cast(pData); auto scaleFactor = DEVICE_SCALE_FACTOR::DEVICE_SCALE_FACTOR_INVALID; @@ -66,7 +65,7 @@ struct WinMonitorStats { return TRUE; } - std::vector iMonitors; + std::vector iMonitors; std::vector hMonitors; std::vector hdcMonitors; std::vector rcMonitors; @@ -84,262 +83,24 @@ struct sEnumInfo { HMONITOR hMonitor; }; +struct WindowsIntegration { -class WindowsIntegration { -public: - - bool searchWorkerWindowToParentTo(); - float getScaling(const int monitorIndex) const; - bool hasWindowScaling() const; HWND windowHandle {}; HWND windowHandleWorker {}; - Point zeroPoint; - std::vector GetAllMonitors(); - - - int GetMonitorIndex(HMONITOR hMonitor) - { - sEnumInfo info; - info.hMonitor = hMonitor; - - if (EnumDisplayMonitors(NULL, NULL, GetMonitorByHandle, (LPARAM)&info)) - return -1; - - return info.iIndex; - } - - /*! - \brief This method is called via a fixed interval to detect if a window completely - covers a monitor. If then sets visualPaused for QML to pause the content. - */ - bool checkForFullScreenWindow(HWND windowHandle) - { - - HWND hFoundWnd = nullptr; - EnumWindows(&FindTheDesiredWnd, reinterpret_cast(&hFoundWnd)); - - // True if one window has WS_MAXIMIZE - if (hFoundWnd != nullptr) { - DWORD dwFlags = 0; - HMONITOR monitor = MonitorFromWindow(hFoundWnd, dwFlags); - HMONITOR wallpaper = MonitorFromWindow(windowHandle, dwFlags); - int monitorIndex = GetMonitorIndex(monitor); - int wallpaperIndex = GetMonitorIndex(wallpaper); - // qDebug() << monitorIndex << wallpaperIndex; - - // If the window that has WS_MAXIMIZE is at the same monitor as this wallpaper - return monitorIndex == wallpaperIndex; - - } else { - return false; - } - } - - // Define the result structure struct SpanResult { int width = 0; int height = 0; bool success = false; }; - /* - * Adjusting a Window's Position and Size for Different Monitor DPI Scale Factors: - * * Windows allows users to set different DPI (dots per inch) scale factors for each monitor. This DPI scaling can lead to - * discrepancies in the positioning and size of windows, especially if we want to place a window on a monitor with a different - * scale factor than the one it was originally on. - * * In our scenario, we want to move and resize a window (`windowHwnd`) to fit perfectly within a target monitor. However, - * both the window and the target monitor can have different DPI scale factors, so we need to account for these when calculating - * the window's new position and size. - * * Steps: - * * 1. Retrieve the DPI scale factor for the window: - * - This gives us the current scale factor of the window based on its original monitor. - * * 2. Retrieve the DPI scale factor for the target monitor: - * - This gives us the scale factor of the monitor where we want to place the window. - * * 3. Calculate the window's new position: - * - The new position should be relative to the `WorkerW` window's coordinates. - * - Adjust the position based on the ratio of the window's DPI scale factor to the target monitor's DPI scale factor. - * This ensures that the window is positioned correctly on the monitor regardless of any differences in scale factors. - * * 4. Calculate the window's new size: - * - Adjust the size of the window based on the ratio of the window's DPI scale factor to the target monitor's DPI scale factor. - * This ensures that the window fits perfectly within the monitor, taking into account any differences in scale factors. - * * By following this approach, we can accurately position and resize the window on any monitor, regardless of differences in DPI - * scale factors. - */ - - std::optional setupWallpaperForOneScreen(const int activeScreen, HWND windowHwnd, HWND parentWindowHwnd, std::functionupdateWindowSize) - { - std::vector monitors = GetAllMonitors(); - for (const auto& monitor : monitors) { - monitor.print(); - if (monitor.index != activeScreen) - continue; - - SetWindowPos(windowHwnd, HWND_TOP, - monitor.position.left, monitor.position.top, - monitor.size.cx, monitor.size.cy, - SWP_NOZORDER | SWP_NOACTIVATE); - - // Must be called here to fix window positions! - updateWindowSize(monitor.size.cx, monitor.size.cy); - - RECT oldRect; - GetWindowRect(windowHwnd, &oldRect); - std::cout << "Old Window Position: (" << oldRect.left << ", " << oldRect.top << ")" << std::endl; - - float windowDpiScaleFactor = static_cast(GetDpiForWindow(windowHwnd)) / 96.0f; - float targetMonitorDpiScaleFactor = monitor.scaleFactor; - std::cout << "Window DPI Scale Factor: " << windowDpiScaleFactor << std::endl; - std::cout << "Target Monitor DPI Scale Factor: " << targetMonitorDpiScaleFactor << std::endl; - - SetParent(windowHwnd, parentWindowHwnd); - RECT parentRect; - GetWindowRect(parentWindowHwnd, &parentRect); - std::cout << "WorkerW Window Position: (" << parentRect.left << ", " << parentRect.top << ")" << std::endl; - - int newX = static_cast((oldRect.left - parentRect.left) * (windowDpiScaleFactor / targetMonitorDpiScaleFactor)); - int newY = static_cast((oldRect.top - parentRect.top) * (windowDpiScaleFactor / targetMonitorDpiScaleFactor)); - std::cout << "Calculated New Position: (" << newX << ", " << newY << ")" << std::endl; - - int newWidth = static_cast(monitor.size.cx * (windowDpiScaleFactor / targetMonitorDpiScaleFactor)); - int newHeight = static_cast(monitor.size.cy * (windowDpiScaleFactor / targetMonitorDpiScaleFactor)); - std::cout << "Calculated New Size: (" << newWidth << "x" << newHeight << ")" << std::endl; - - SetWindowPos(windowHwnd, NULL, newX, newY, newWidth, newHeight, SWP_NOZORDER | SWP_NOACTIVATE); - return {monitor}; - } - return std::nullopt; - } - /** - * Spans the window across multiple monitors. - * - * This function takes a vector of monitor indices and adjusts the window's - * size and position to span across the specified monitors. It determines the - * window's new size by finding the bounding rectangle that covers all selected - * monitors. The window's new position is set to the top-left corner of this - * bounding rectangle. - * - * Note: This function assumes that all monitors have the same DPI scaling. If - * they don't, the window may not fit perfectly across the monitors. - * - * @param activeScreens A vector containing the indices of monitors across - * which the window should span. - * - * Usage: - * setupWallpaperForMultipleScreens({0, 1}); // Spans the window across monitors 0 and 1. - * - * Internals: - * 1. For each monitor in `activeScreens`, determine its bounding rectangle. - * 2. Compute the window's new width as `rightmost - leftmost` and its new - * height as `bottommost - topmost`. - * 3. Adjust the window's position and size to fit this bounding rectangle. - */ - SpanResult setupWallpaperForMultipleScreens(const std::vector& activeScreens, HWND windowHwnd, HWND parentWindowHwnd) - { - std::vector monitors = GetAllMonitors(); - - int leftmost = INT_MAX; - int topmost = INT_MAX; - int rightmost = INT_MIN; - int bottommost = INT_MIN; - - for (const auto& monitorIndex : activeScreens) { - if (monitorIndex < monitors.size()) { - const Monitor& monitor = monitors[monitorIndex]; - leftmost = std::min(leftmost, static_cast(monitor.position.left)); - topmost = std::min(topmost, static_cast(monitor.position.top)); - rightmost = std::max(rightmost, static_cast(monitor.position.right)); - bottommost = std::max(bottommost, static_cast(monitor.position.bottom)); - } - } - - - int newWidth = rightmost - leftmost; - int newHeight = bottommost - topmost; - - RECT oldRect; - GetWindowRect(windowHwnd, &oldRect); - - float windowDpiScaleFactor = static_cast(GetDpiForWindow(windowHwnd)) / 96.0f; - - SetParent(windowHwnd, parentWindowHwnd); - RECT parentRect; - GetWindowRect(parentWindowHwnd, &parentRect); - - int newX = static_cast((leftmost - parentRect.left) * windowDpiScaleFactor); - int newY = static_cast((topmost - parentRect.top) * windowDpiScaleFactor); - - SetWindowPos(windowHwnd, NULL, newX, newY, newWidth, newHeight, SWP_NOZORDER | SWP_NOACTIVATE); - SpanResult result; - result.width = rightmost - leftmost; - result.height = bottommost - topmost; - result.success = true; - - return result; - } - /** - * Sets up the wallpaper to span across all connected screens. - * * This function retrieves information about all connected monitors, including their positions, dimensions, and scale factors. - * It then calculates the combined dimensions needed to span the window across all these monitors, taking into account - * the scale factors. The function also handles reparenting the window to the WorkerW window, ensuring it remains below - * other desktop icons. The calculated position and dimensions are adjusted to account for any potential scaling differences - * between the window and the combined monitor setup. - * * @note This function assumes that the window's DPI scale factor is based on a default of 96 DPI. Adjustments are made - * based on this assumption. - * * @note The function currently multiplies the scale factors of all monitors to get an overall scale factor. This may need - * adjustments based on specific application needs. - * * @return SpanResult A structure containing the combined width and height of the monitors, and a success flag indicating - * whether the operation was successful. - * - * @retval SpanResult::width The combined width of all monitors after scaling. - * @retval SpanResult::height The combined height of all monitors after scaling. - * @retval SpanResult::success A boolean flag indicating the success of the operation. Currently, it always returns `true` - * assuming all operations are successful. This can be adjusted based on error checks as needed. - */ - SpanResult setupWallpaperForAllScreens( HWND windowHwnd, HWND parentWindowHwnd) { - std::vector monitors = GetAllMonitors(); - - int leftmost = INT_MAX; - int topmost = INT_MAX; - int rightmost = INT_MIN; - int bottommost = INT_MIN; - float overallScaleFactor = 1.0f; // assuming default is no scaling - - // Calculate the combined dimensions of all monitors - for (const auto& monitor : monitors) { - leftmost = std::min(leftmost, static_cast(monitor.position.left)); - topmost = std::min(topmost, static_cast(monitor.position.top)); - rightmost = std::max(rightmost, static_cast(monitor.position.right)); - bottommost = std::max(bottommost, static_cast(monitor.position.bottom)); - overallScaleFactor *= monitor.scaleFactor; // Adjust as per your scaling needs - } - - int scaledWidth = static_cast((rightmost - leftmost) * overallScaleFactor); - int scaledHeight = static_cast((bottommost - topmost) * overallScaleFactor); - - // Set the position and size of the window to span all monitors - SetWindowPos(windowHwnd, HWND_TOP, leftmost, topmost, scaledWidth, scaledHeight, SWP_NOZORDER | SWP_NOACTIVATE); - - // Reparenting and scaling logic - RECT oldRect; - GetWindowRect(windowHwnd, &oldRect); - float windowDpiScaleFactor = static_cast(GetDpiForWindow(windowHwnd)) / 96.0f; - SetParent(windowHwnd, parentWindowHwnd); - RECT parentRect; - GetWindowRect(parentWindowHwnd, &parentRect); - int newX = static_cast((oldRect.left - parentRect.left) * (windowDpiScaleFactor / overallScaleFactor)); - int newY = static_cast((oldRect.top - parentRect.top) * (windowDpiScaleFactor / overallScaleFactor)); - - SetWindowPos(windowHwnd, NULL, newX, newY, scaledWidth, scaledHeight, SWP_NOZORDER | SWP_NOACTIVATE); - - // Return the combined span of all monitors - SpanResult result; - result.width = scaledWidth; - result.height = scaledHeight; - result.success = true; // Assuming the operations are successful; adjust as needed - - return result; - } - - + bool searchWorkerWindowToParentTo(); + float getScaling(const int monitorIndex) const; + bool hasWindowScaling() const; + std::vector GetAllMonitors(); + int GetMonitorIndex(HMONITOR hMonitor); + bool checkForFullScreenWindow(HWND windowHandle); + std::optional setupWallpaperForOneScreen(const int activeScreen, HWND windowHwnd, HWND parentWindowHwnd, std::function updateWindowSize); + SpanResult setupWallpaperForMultipleScreens(const std::vector& activeScreens, HWND windowHwnd, HWND parentWindowHwnd); + SpanResult setupWallpaperForAllScreens(HWND windowHwnd, HWND parentWindowHwnd); }; diff --git a/ScreenPlayWallpaper/src/winwindow.cpp b/ScreenPlayWallpaper/src/winwindow.cpp index 447146eb..9070a4e5 100644 --- a/ScreenPlayWallpaper/src/winwindow.cpp +++ b/ScreenPlayWallpaper/src/winwindow.cpp @@ -1,7 +1,7 @@ // SPDX-License-Identifier: LicenseRef-EliasSteurerTachiom OR AGPL-3.0-only #include "winwindow.h" -#include "windowsintegration.h" #include "ScreenPlayUtil/projectfile.h" +#include "windowsintegration.h" #include #include #include @@ -16,7 +16,6 @@ \brief ScreenPlayWindow used for the Windows implementation. */ - HHOOK g_mouseHook; QPoint g_LastMousePosition { 0, 0 }; QPoint g_globalOffset { 0, 0 }; @@ -182,18 +181,16 @@ void WinWindow::destroyThis() emit qmlExit(); } - void WinWindow::setupWallpaperForOneScreen(int activeScreen) { WindowsIntegration windowsIntegration; - auto updateWindowSize = [this](const int width, const int height){ + auto updateWindowSize = [this](const int width, const int height) { setWidth(width); setHeight(height); m_window.setWidth(width); m_window.setHeight(height); }; - std::optional monitor = windowsIntegration.setupWallpaperForOneScreen(activeScreen,m_windowHandle,m_windowHandleWorker,updateWindowSize); - + std::optional monitor = windowsIntegration.setupWallpaperForOneScreen(activeScreen, m_windowHandle, m_windowHandleWorker, updateWindowSize); } /*! @@ -202,7 +199,7 @@ void WinWindow::setupWallpaperForOneScreen(int activeScreen) void WinWindow::setupWallpaperForAllScreens() { WindowsIntegration windowsIntegration; - WindowsIntegration::SpanResult span = windowsIntegration.setupWallpaperForAllScreens(m_windowHandle,m_windowHandleWorker); + WindowsIntegration::SpanResult span = windowsIntegration.setupWallpaperForAllScreens(m_windowHandle, m_windowHandleWorker); setWidth(span.width); setHeight(span.height); m_window.setWidth(width()); @@ -216,7 +213,7 @@ void WinWindow::setupWallpaperForMultipleScreens(const QVector& activeScree { std::vector activeScreens(activeScreensList.begin(), activeScreensList.end()); WindowsIntegration windowsIntegration; - WindowsIntegration::SpanResult span = windowsIntegration.setupWallpaperForMultipleScreens(activeScreens,m_windowHandle,m_windowHandleWorker); + WindowsIntegration::SpanResult span = windowsIntegration.setupWallpaperForMultipleScreens(activeScreens, m_windowHandle, m_windowHandleWorker); setWidth(span.width); setHeight(span.height); m_window.setWidth(width()); @@ -290,7 +287,8 @@ void WinWindow::clearComponentCache() m_window.engine()->clearComponentCache(); } -void WinWindow::checkForFullScreenWindow(){ +void WinWindow::checkForFullScreenWindow() +{ bool hasFullscreenWindow = WindowsIntegration().checkForFullScreenWindow(m_windowHandle); setVisualsPaused(hasFullscreenWindow); diff --git a/ScreenPlayWidget/main.cpp b/ScreenPlayWidget/main.cpp index f9d40f85..0b25b869 100644 --- a/ScreenPlayWidget/main.cpp +++ b/ScreenPlayWidget/main.cpp @@ -8,8 +8,8 @@ #include #include -#include "src/widgetwindow.h" #include "ScreenPlayUtil/logginghandler.h" +#include "src/widgetwindow.h" #if defined(Q_OS_WIN) Q_IMPORT_QML_PLUGIN(ScreenPlaySysInfoPlugin) @@ -95,7 +95,7 @@ int main(int argc, char* argv[]) #if defined(Q_OS_OSX) MacUtils::showDockIcon(false); #endif - logging = std::make_unique("ScreenPlayWidget_"+ appID); + logging = std::make_unique("ScreenPlayWidget_" + appID); const int status = app.exec(); logging.reset(); return status; diff --git a/ThirdParty/CMakeLists.txt b/ThirdParty/CMakeLists.txt index 01ad0a83..2260531f 100644 --- a/ThirdParty/CMakeLists.txt +++ b/ThirdParty/CMakeLists.txt @@ -16,19 +16,17 @@ FetchContent_Populate( # https://bugreports.qt.io/browse/QTCREATORBUG-27083 SOURCE_DIR ${THIRD_PARTY_PATH}/qml-plausible) - - add_subdirectory(qml-plausible) add_subdirectory(QArchive) if(UNIX AND NOT APPLE) -FetchContent_Populate( - qt-layer-shell - GIT_REPOSITORY https://github.com/KDE/layer-shell-qt.git - GIT_TAG 721c0ae334554eb2396a2d4d3358f896b8c77412 - # Workaround because: 1. QtCreator cannot handle QML_ELEMENT stuff when it is in bin folder - # https://bugreports.qt.io/browse/QTCREATORBUG-27083 - SOURCE_DIR ${THIRD_PARTY_PATH}/qt-layer-shell) + FetchContent_Populate( + qt-layer-shell + GIT_REPOSITORY https://github.com/KDE/layer-shell-qt.git + GIT_TAG 721c0ae334554eb2396a2d4d3358f896b8c77412 + # Workaround because: 1. QtCreator cannot handle QML_ELEMENT stuff when it is in bin folder + # https://bugreports.qt.io/browse/QTCREATORBUG-27083 + SOURCE_DIR ${THIRD_PARTY_PATH}/qt-layer-shell) add_subdirectory(qt-layer-shell) -endif() \ No newline at end of file +endif() diff --git a/Tools/CMakeLists.txt b/Tools/CMakeLists.txt index 80d9a1c5..90f7c38d 100644 --- a/Tools/CMakeLists.txt +++ b/Tools/CMakeLists.txt @@ -15,4 +15,4 @@ set(GODOT_PATH "${CMAKE_CURRENT_SOURCE_DIR}/Apps/Godot") if(WIN32) # Todo: Add Linux and Mac support configure_file(${GODOT_PATH}/${GODOT_EDITOR_NAME} ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/ COPYONLY) -endif() \ No newline at end of file +endif() From 5e3807286dfb475594a5f2fc1a9cccb38080e06d Mon Sep 17 00:00:00 2001 From: Elias Steurer Date: Wed, 1 Nov 2023 12:33:19 +0100 Subject: [PATCH 031/101] Add license header --- .../Godot/GDExtention/src/ScreenPlayGodotWallpaper.cpp | 1 - .../Godot/GDExtention/src/ScreenPlayGodotWallpaper.h | 1 - ScreenPlayWallpaper/Godot/GDExtention/src/WindowsPipe.cpp | 1 + ScreenPlayWallpaper/Godot/GDExtention/src/WindowsPipe.h | 1 + .../Godot/GDExtention/src/windowsPipeTestServer.py | 2 +- Tools/build_config.py | 2 ++ Tools/build_godot.py | 1 + Tools/build_result.py | 4 ++-- Tools/check_format_qml.py | 1 + Tools/create_sha512.py | 2 ++ Tools/setup_godot.py | 3 ++- 11 files changed, 13 insertions(+), 6 deletions(-) diff --git a/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayGodotWallpaper.cpp b/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayGodotWallpaper.cpp index ec60e8f2..c0e5a0db 100644 --- a/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayGodotWallpaper.cpp +++ b/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayGodotWallpaper.cpp @@ -1,5 +1,4 @@ // SPDX-License-Identifier: LicenseRef-EliasSteurerTachiom OR AGPL-3.0-only - #include "ScreenPlayGodotWallpaper.h" #include "godot_cpp/classes/display_server.hpp" #include "godot_cpp/classes/global_constants.hpp" diff --git a/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayGodotWallpaper.h b/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayGodotWallpaper.h index fb834992..f735103f 100644 --- a/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayGodotWallpaper.h +++ b/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayGodotWallpaper.h @@ -1,5 +1,4 @@ // SPDX-License-Identifier: LicenseRef-EliasSteurerTachiom OR AGPL-3.0-only - #pragma once #ifndef NOMINMAX diff --git a/ScreenPlayWallpaper/Godot/GDExtention/src/WindowsPipe.cpp b/ScreenPlayWallpaper/Godot/GDExtention/src/WindowsPipe.cpp index 731b4605..4622d554 100644 --- a/ScreenPlayWallpaper/Godot/GDExtention/src/WindowsPipe.cpp +++ b/ScreenPlayWallpaper/Godot/GDExtention/src/WindowsPipe.cpp @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: LicenseRef-EliasSteurerTachiom OR AGPL-3.0-only #include "WindowsPipe.h" bool WindowsPipe::connectToPipe() diff --git a/ScreenPlayWallpaper/Godot/GDExtention/src/WindowsPipe.h b/ScreenPlayWallpaper/Godot/GDExtention/src/WindowsPipe.h index f72327ce..894e6cf5 100644 --- a/ScreenPlayWallpaper/Godot/GDExtention/src/WindowsPipe.h +++ b/ScreenPlayWallpaper/Godot/GDExtention/src/WindowsPipe.h @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: LicenseRef-EliasSteurerTachiom OR AGPL-3.0-only #pragma once #include diff --git a/ScreenPlayWallpaper/Godot/GDExtention/src/windowsPipeTestServer.py b/ScreenPlayWallpaper/Godot/GDExtention/src/windowsPipeTestServer.py index f8f76ca6..af5bfd19 100644 --- a/ScreenPlayWallpaper/Godot/GDExtention/src/windowsPipeTestServer.py +++ b/ScreenPlayWallpaper/Godot/GDExtention/src/windowsPipeTestServer.py @@ -1,4 +1,4 @@ - +# SPDX-License-Identifier: LicenseRef-EliasSteurerTachiom OR AGPL-3.0-only # python -m pip install pywin32 import win32pipe import win32file diff --git a/Tools/build_config.py b/Tools/build_config.py index 0241c29b..7bb3f8bc 100644 --- a/Tools/build_config.py +++ b/Tools/build_config.py @@ -1,3 +1,5 @@ +#!/usr/bin/python3 +# SPDX-License-Identifier: LicenseRef-EliasSteurerTachiom OR AGPL-3.0-only class BuildConfig: root_path: str cmake_osx_architectures: str diff --git a/Tools/build_godot.py b/Tools/build_godot.py index 53ed60c0..b11cb743 100644 --- a/Tools/build_godot.py +++ b/Tools/build_godot.py @@ -1,4 +1,5 @@ #!/usr/bin/python3 +# SPDX-License-Identifier: LicenseRef-EliasSteurerTachiom OR AGPL-3.0-only import os import util import shutil diff --git a/Tools/build_result.py b/Tools/build_result.py index d253123b..bebb2619 100644 --- a/Tools/build_result.py +++ b/Tools/build_result.py @@ -1,7 +1,7 @@ - +#!/usr/bin/python3 +# SPDX-License-Identifier: LicenseRef-EliasSteurerTachiom OR AGPL-3.0-only from pathlib import Path - class BuildResult: # Windows example with absolute paths: # [...]/build-x64-windows-release/ diff --git a/Tools/check_format_qml.py b/Tools/check_format_qml.py index f824c114..2e463767 100644 --- a/Tools/check_format_qml.py +++ b/Tools/check_format_qml.py @@ -1,4 +1,5 @@ #!/usr/bin/python3 +# SPDX-License-Identifier: LicenseRef-EliasSteurerTachiom OR AGPL-3.0-only import os import subprocess import argparse diff --git a/Tools/create_sha512.py b/Tools/create_sha512.py index 79ee704d..b17b1a99 100644 --- a/Tools/create_sha512.py +++ b/Tools/create_sha512.py @@ -1,3 +1,5 @@ +#!/usr/bin/python3 +# SPDX-License-Identifier: LicenseRef-EliasSteurerTachiom OR AGPL-3.0-only import hashlib import os from pathlib import Path diff --git a/Tools/setup_godot.py b/Tools/setup_godot.py index 00b57315..3940a157 100644 --- a/Tools/setup_godot.py +++ b/Tools/setup_godot.py @@ -1,8 +1,9 @@ +#!/usr/bin/python3 +# SPDX-License-Identifier: LicenseRef-EliasSteurerTachiom OR AGPL-3.0-only import requests import zipfile import platform from pathlib import Path -# Assuming defines.py exists and has GODOT_VERSION from defines import GODOT_VERSION from util import repo_root_path # Assuming util.py exists and has repo_root_path() From f982002d808927c0f42dd7f384979c2781561003 Mon Sep 17 00:00:00 2001 From: Elias Steurer Date: Thu, 2 Nov 2023 12:50:29 +0100 Subject: [PATCH 032/101] Add ci support for godot Add automatic godot and exp --- .gitignore | 2 +- .vscode/launch.json | 26 ++-- CMake/CMakeVariables.h.in | 1 + CMake/GenerateCMakeVariableHeader.cmake | 5 +- CMakeLists.txt | 16 +- ScreenPlay/src/settings.cpp | 3 +- .../public/ScreenPlayUtil/logginghandler.h | 2 +- ScreenPlayUtil/qml/Dialogs/CriticalError.qml | 6 +- ScreenPlayUtil/src/logginghandler.cpp | 25 +++- .../Godot/ScreenPlayGodot/project.godot | 2 +- Tools/CMakeLists.txt | 2 +- Tools/build.py | 7 +- Tools/build_config.py | 1 + Tools/build_godot.py | 13 +- Tools/defines.py | 14 +- Tools/download_ffmpeg.py | 42 +++++- Tools/setup.py | 12 +- Tools/setup_godot.py | 141 ++++++++++++------ Tools/util.py | 34 +++++ 19 files changed, 258 insertions(+), 96 deletions(-) diff --git a/.gitignore b/.gitignore index f9de3484..228c4fbe 100644 --- a/.gitignore +++ b/.gitignore @@ -261,5 +261,5 @@ cython_debug/ /ThirdParty/qml-archive/** /ThirdParty/qml-plausible/ /ThirdParty/ffmpeg/** -/Tools/Apps/Godot/* /ThirdParty/qt-layer-shell/** +/ThirdParty/Godot/Godot_*.* diff --git a/.vscode/launch.json b/.vscode/launch.json index 57eefec2..0eaaad94 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -5,7 +5,7 @@ "version": "0.2.0", "configurations": [ { - "name": "Windows Launch", + "name": "🪟 Windows Launch", "type": "cppvsdbg", "request": "launch", "program": "${command:cmake.launchTargetPath}", @@ -23,26 +23,20 @@ "visualizerFile": "${workspaceFolder}/.vscode/qt.natvis.xml" }, { - "name": "Godot Editor", - "type": "cppvsdbg", - "request": "launch", - "program": "${workspaceFolder}\\Tools\\Apps\\Godot\\Godot_v4.1.1-stable_win64.exe", - "args": [ - "--path", - "${workspaceFolder}\\ScreenPlayWallpaper\\Godot\\ScreenPlayGodot", - "--editor" - ], - "stopAtEntry": false, - "preLaunchTask": "CMake: build", - "externalConsole": false - }, - { - "name": "macOS/linux Launch", + "name": "🍏macOS & 🐧linux Launch", "type": "lldb", "request": "launch", "program": "${command:cmake.launchTargetPath}", "args": [], "cwd": "${command:cmake.buildDirectory}/bin", + }, + { + "name": "🐍 Python: Current File", + "type": "python", + "request": "launch", + "program": "${file}", + "console": "integratedTerminal", + "justMyCode": true } ] } \ No newline at end of file diff --git a/CMake/CMakeVariables.h.in b/CMake/CMakeVariables.h.in index d616a317..e54ca0f3 100644 --- a/CMake/CMakeVariables.h.in +++ b/CMake/CMakeVariables.h.in @@ -2,3 +2,4 @@ #define SCREENPLAY_SOURCE_DIR "@SOURCE_DIR@" #define SCREENPLAY_GODOT_VERSION "@GODOT_VERSION@" +#define SCREENPLAY_GODOT_RELEASE_TYPE "@SCREENPLAY_GODOT_RELEASE_TYPE@" diff --git a/CMake/GenerateCMakeVariableHeader.cmake b/CMake/GenerateCMakeVariableHeader.cmake index 0cd7c0a9..41e6e489 100644 --- a/CMake/GenerateCMakeVariableHeader.cmake +++ b/CMake/GenerateCMakeVariableHeader.cmake @@ -1,4 +1,4 @@ -#! generate_cmake_variable_header : Generates a header CmakeVariables.h that contains defines for the variables specified in CmakeVariables.h.in! +# ! generate_cmake_variable_header : Generates a header CmakeVariables.h that contains defines for the variables specified in CmakeVariables.h.in! # # The generated CmakeVariables.h header can then be used to access e.g. the PROJECT_NAME define in C++ code. # @@ -6,12 +6,15 @@ # generate_cmake_variable_header(${PROJECT_NAME}) # function(generate_cmake_variable_header TARGET) + # NOTE: Also add to CMakeVariables.h.in ! set(SOURCE_DIR ${CMAKE_SOURCE_DIR}) set(SCREENPLAY_GODOT_VERSION ${GODOT_VERSION}) + set(SCREENPLAY_GODOT_RELEASE_TYPE ${GODOT_RELEASE_TYPE}) # Specify the configuration file from which the header file will be generated configure_file(${CMAKE_SOURCE_DIR}/CMake/CMakeVariables.h.in ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}/CMakeVariables.h @ONLY) message(STATUS "GENERATE: ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}/CMakeVariables.h and add ${TARGET} to ${CMAKE_CURRENT_BINARY_DIR}") + # Add the directory containing the generated header target_include_directories(${TARGET} PRIVATE ${CMAKE_CURRENT_BINARY_DIR}) endfunction() diff --git a/CMakeLists.txt b/CMakeLists.txt index 3252405c..e41656ff 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -22,14 +22,15 @@ elseif(APPLE) endif() # Godot Editor -set(GODOT_VERSION "v4.1.1") +set(GODOT_VERSION "v4.2") +set(GODOT_RELEASE_TYPE "beta4") if(WIN32) - set(GODOT_EDITOR_NAME "Godot_${GODOT_VERSION}-stable_win64.exe") + set(GODOT_EDITOR_NAME "Godot_${GODOT_VERSION}-${GODOT_RELEASE_TYPE}_win64.exe") elseif(APPLE) set(GODOT_EDITOR_NAME "Godot.app") elseif(UNIX) - set(GODOT_EDITOR_NAME "Godot_${GODOT_VERSION}-stable_linux.x86_64") + set(GODOT_EDITOR_NAME "Godot_${GODOT_VERSION}-${GODOT_RELEASE_TYPE}_linux.x86_64") else() message(FATAL_ERROR "Unsupported OS") endif() @@ -73,10 +74,10 @@ set(VCPKG_BIN_PATH "${VCPKG_INSTALLED_PATH}/bin") option(SCREENPLAY_STEAM "For FOSS distribution so we do not bundle proprietary code." ON) option(SCREENPLAY_DEPLOY "Marks this version as an official deploy version. This version uses different import paths and other settings." - OFF) + OFF) option(SCREENPLAY_TESTS "Enables UI tests." ON) option(SCREENPLAY_INSTALLER "Indicates whether an installer via the Qt Installer Framework is created." OFF) -option(SCREENPLAY_GODOT_SUPPORT "Compiles ScreenPlayGodotWallpaper." ON) +option(SCREENPLAY_GODOT_SUPPORT "Compiles ScreenPlayGodotWallpaper." OFF) # Gitlab CI has many ENV variables. We use this one to check if the current build happens inside the CI if(DEFINED ENV{CI_COMMIT_MESSAGE}) @@ -134,14 +135,15 @@ add_compile_definitions(GIT_COMMIT_HASH="${GIT_COMMIT_HASH}") add_subdirectory(ThirdParty) set(ECM_DIR "${THIRD_PARTY_PATH}/ecm") add_subdirectory(CMake) + if(UNIX AND NOT APPLE) # Needs to be append, because we include ecm as third party on linux list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/CMake") list(APPEND CMAKE_MODULE_PATH "${ECM_DIR}") list(APPEND CMAKE_MODULE_PATH "${ECM_DIR}/cmake") else() - endif() + add_subdirectory(Tools) add_subdirectory(ScreenPlay) @@ -187,6 +189,8 @@ message(STATUS "[PROJECT] VCPKG_PATH = ${VCPKG_PATH}") message(STATUS "[PROJECT] CMAKE_MODULE_PATH = ${CMAKE_MODULE_PATH}") message(STATUS "[PROJECT] VCPKG_TARGET_TRIPLET = ${VCPKG_TARGET_TRIPLET}") message(STATUS "[PROJECT] CMAKE_PREFIX_PATH = ${CMAKE_PREFIX_PATH}") +message(STATUS "[PROJECT] GODOT_VERSION = ${GODOT_VERSION}") +message(STATUS "[PROJECT] GODOT_EDITOR_NAME = ${GODOT_EDITOR_NAME}") message(STATUS "[OPTION] SCREENPLAY_DEPLOY = ${SCREENPLAY_DEPLOY}") message(STATUS "[OPTION] SCREENPLAY_INSTALLER = ${SCREENPLAY_INSTALLER}") message(STATUS "[OPTION] SCREENPLAY_STEAM = ${SCREENPLAY_STEAM}") diff --git a/ScreenPlay/src/settings.cpp b/ScreenPlay/src/settings.cpp index 71fb536f..8555ebbf 100644 --- a/ScreenPlay/src/settings.cpp +++ b/ScreenPlay/src/settings.cpp @@ -157,11 +157,12 @@ void Settings::setupWidgetAndWindowPaths() const QString osType = QSysInfo::productType(); QString godotVersion = QString(SCREENPLAY_GODOT_VERSION); + QString godotReleaseType = QString(SCREENPLAY_GODOT_RELEASE_TYPE); if (osType == "windows") { m_globalVariables->setWidgetExecutablePath(QUrl(workingDir.path() + "/ScreenPlayWidget" + ScreenPlayUtil::executableBinEnding())); m_globalVariables->setWallpaperExecutablePath(QUrl(workingDir.path() + "/ScreenPlayWallpaper" + ScreenPlayUtil::executableBinEnding())); m_globalVariables->setGodotWallpaperExecutablePath(QUrl(workingDir.path() + "/ScreenPlayWallpaperGodot" + ScreenPlayUtil::executableBinEnding())); - const auto godotEditorName = "Godot_" + godotVersion + "-stable_win64.exe"; + const auto godotEditorName = "Godot_" + godotVersion + "-" + godotReleaseType + "_win64.exe"; m_globalVariables->setGodotEditorExecutablePath(QUrl(workingDir.path() + "/" + godotEditorName)); } else if (osType == "osx") { // ScreenPlayTest is not bundled in an .app so the working directory diff --git a/ScreenPlayUtil/inc/public/ScreenPlayUtil/logginghandler.h b/ScreenPlayUtil/inc/public/ScreenPlayUtil/logginghandler.h index a5b5a9e6..403a4d12 100644 --- a/ScreenPlayUtil/inc/public/ScreenPlayUtil/logginghandler.h +++ b/ScreenPlayUtil/inc/public/ScreenPlayUtil/logginghandler.h @@ -22,7 +22,7 @@ private: static QString toString(QtMsgType type); static QString extractFileName(const QMessageLogContext& context); static QString extractFunction(const QMessageLogContext& context); - static void writeToConsole(const QString& line, QtMsgType type); + static void writeToConsole(QtMsgType type, const QMessageLogContext& context, const QString& message); static void writeToFile(const QString& line); static void checkLogRotation(); static void loggingMessageHandler(QtMsgType type, const QMessageLogContext& context, const QString& message); diff --git a/ScreenPlayUtil/qml/Dialogs/CriticalError.qml b/ScreenPlayUtil/qml/Dialogs/CriticalError.qml index 71680f9e..0c068f7a 100644 --- a/ScreenPlayUtil/qml/Dialogs/CriticalError.qml +++ b/ScreenPlayUtil/qml/Dialogs/CriticalError.qml @@ -15,7 +15,7 @@ Util.Dialog { property string message standardButtons: Dialog.Ok | Dialog.Help onHelpRequested: { - Qt.openUrlExternally("https://forum.screen-play.app/category/7/troubleshooting"); + Qt.openUrlExternally("https://forum.screen-play.app/"); } Connections { @@ -29,8 +29,8 @@ Util.Dialog { } contentItem: Item { - width: 600 - height: 400 + implicitWidth: 600 + implicitHeight: 400 ColumnLayout { anchors.margins: 20 diff --git a/ScreenPlayUtil/src/logginghandler.cpp b/ScreenPlayUtil/src/logginghandler.cpp index bac574cf..0b225b5a 100644 --- a/ScreenPlayUtil/src/logginghandler.cpp +++ b/ScreenPlayUtil/src/logginghandler.cpp @@ -36,6 +36,7 @@ LoggingHandler::LoggingHandler(const QString& logFileName) #endif + qSetMessagePattern("[%{time dd.MM.yyyy h:mm:ss.zzz} %{if-debug}Debug%{endif}%{if-info}Info%{endif}%{if-warning}Warning%{endif}%{if-critical}Critical%{endif}%{if-fatal}Fatal%{endif}] %{file}:%{line} - %{message}"); qInstallMessageHandler(LoggingHandler::loggingMessageHandler); const auto lock = std::lock_guard(logFileMutex()); m_logFileName = logFileName; @@ -193,29 +194,47 @@ QString LoggingHandler::extractFunction(const QMessageLogContext& context) * \brief LoggingHandler::writeToConsole * std::flush is used to fix QtCreator not printing output. */ -void LoggingHandler::writeToConsole(const QString& line, QtMsgType type) +void LoggingHandler::writeToConsole(QtMsgType type, const QMessageLogContext& context, const QString& message) { constexpr auto darkMode = true; auto color = fmt::color::black; + QString typeIndicator; switch (type) { case QtDebugMsg: color = fmt::color::green; + typeIndicator = "Debug"; break; case QtWarningMsg: color = fmt::color::orange; + typeIndicator = "Warning"; break; case QtCriticalMsg: color = fmt::color::magenta; + typeIndicator = "Critical"; break; case QtFatalMsg: color = fmt::color::red; + typeIndicator = "Fatal"; break; default: color = darkMode ? fmt::color::gray : fmt::color::black; + typeIndicator = "Info"; // Assuming default is info break; } - fmt::print("{}", fmt::styled(line.toStdString(), fg(color))); + + const auto now = QDateTime::currentDateTime().toString("dd.MM.yyyy h:mm:ss.zzz"); + const auto filename = extractFileName(context); + const auto function = extractFunction(context); + const auto line = context.line; + + fmt::print( + "[{}] {} {}:{} - {}\n", + fmt::styled(now.toStdString(), fmt::emphasis::bold), + fmt::styled(typeIndicator.toStdString(), fg(color)), + function.toStdString(), // Replace with context.file when QTCREATORBUG-24353 is fixed + line, + message.toStdString()); } void LoggingHandler::writeToFile(const QString& line) @@ -244,7 +263,7 @@ void LoggingHandler::checkLogRotation() void LoggingHandler::loggingMessageHandler(QtMsgType type, const QMessageLogContext& context, const QString& message) { const QString line = LoggingHandler::logLine(type, context, message); - LoggingHandler::writeToConsole(line, type); + LoggingHandler::writeToConsole(type, context, message); LoggingHandler::writeToFile(line); } } diff --git a/ScreenPlayWallpaper/Godot/ScreenPlayGodot/project.godot b/ScreenPlayWallpaper/Godot/ScreenPlayGodot/project.godot index e719c85d..cb14a4c2 100644 --- a/ScreenPlayWallpaper/Godot/ScreenPlayGodot/project.godot +++ b/ScreenPlayWallpaper/Godot/ScreenPlayGodot/project.godot @@ -12,7 +12,7 @@ config_version=5 config/name="ScreenPlay" run/main_scene="res://main.tscn" -config/features=PackedStringArray("4.1", "Mobile") +config/features=PackedStringArray("4.2", "Mobile") run/flush_stdout_on_print=true boot_splash/bg_color=Color(0.141176, 0.141176, 0.141176, 0) boot_splash/show_image=false diff --git a/Tools/CMakeLists.txt b/Tools/CMakeLists.txt index 90f7c38d..56e20955 100644 --- a/Tools/CMakeLists.txt +++ b/Tools/CMakeLists.txt @@ -10,7 +10,7 @@ add_custom_target( SOURCES ${FILES} ${PYTHON} COMMENT "Dummy target to list these files in the IDE") -set(GODOT_PATH "${CMAKE_CURRENT_SOURCE_DIR}/Apps/Godot") +set(GODOT_PATH "${CMAKE_CURRENT_SOURCE_DIR}/../ThirdParty/Godot") if(WIN32) # Todo: Add Linux and Mac support diff --git a/Tools/build.py b/Tools/build.py index 7f312a90..026f1e0c 100755 --- a/Tools/build.py +++ b/Tools/build.py @@ -13,6 +13,7 @@ from build_config import BuildConfig from typing import Tuple from pathlib import Path import macos_sign +import build_godot from util import sha256, cd_repo_root_path, repo_root_path, zipdir, run, get_vs_env_dict, get_latest_git_tag, parse_semver, semver_to_string from sys import stdout @@ -51,6 +52,10 @@ def execute( build_duration = time.time() - step_time print(f"⏱️ build_duration: {build_duration}s") + # Build Godot Wallpaper + if platform.system() == "Windows": + build_godot.build_godot(str(build_config.bin_dir), build_config.build_type) + # Copies all needed libraries and assets into the bin folder step_time = time.time() package(build_config) @@ -384,7 +389,7 @@ if __name__ == "__main__": qt_ifw_version = args.qt_installer_version_overwrite print("Using Qt installer framework version {qt_ifw_version}") - build_type = args.build_type + build_type = args.build_type.lower() build_steam = "OFF" if args.build_steam: diff --git a/Tools/build_config.py b/Tools/build_config.py index 7bb3f8bc..824fb649 100644 --- a/Tools/build_config.py +++ b/Tools/build_config.py @@ -27,5 +27,6 @@ class BuildConfig: build_deploy: str build_type: str build_architecture: str + build_godot: str create_installer: str sign_osx: bool diff --git a/Tools/build_godot.py b/Tools/build_godot.py index b11cb743..5340703e 100644 --- a/Tools/build_godot.py +++ b/Tools/build_godot.py @@ -33,16 +33,21 @@ def main(): abs_build_path = args.build_path if not os.path.isabs(args.build_path): abs_build_path = os.path.abspath(os.path.join(os.getcwd(), args.build_path)) + + if 'Debug' in abs_build_path: + build_type = "debug" + else: + build_type = "release" - build_godot(abs_build_path) + build_godot(abs_build_path, build_type) -def build_godot(abs_build_path: str): +def build_godot(abs_build_path: str, build_type: str): project_path = Path(util.repo_root_path()).joinpath("ScreenPlayWallpaper/Godot/ScreenPlayGodot").resolve() - apps_path = os.path.join(util.repo_root_path(),"Tools/Apps/Godot") + apps_path = os.path.join(defines.THIRDPATH_PATH,"Godot") godot_executable = os.path.join(apps_path, defines.GODOT_EDITOR_EXECUTABLE) screenPlayWallpaperGodot_executable = Path(abs_build_path).joinpath(defines.SCREENPLAYWALLPAPER_GODOT_EXECUTABLE).resolve() - if 'Debug' in abs_build_path: + if 'debug' in build_type: export_type = " --export-debug" else: export_type = " --export-release" diff --git a/Tools/defines.py b/Tools/defines.py index 8035c016..dd47f09c 100644 --- a/Tools/defines.py +++ b/Tools/defines.py @@ -18,8 +18,9 @@ elif sys.platform == "linux": OS = "linux" QT_PLATFORM = "gcc_64" -QT_PATH = path = Path(os.path.join( - os.path.realpath(__file__), "../../../aqt")).resolve() +REPO_PATH = Path(__file__, "../../").resolve() +THIRDPATH_PATH = Path(REPO_PATH, "ThirdParty").resolve() +QT_PATH = path = Path(REPO_PATH, "../aqt").resolve() QT_VERSION = "6.6.0" QT_BIN_PATH = QT_PATH.joinpath(f"{QT_VERSION}/{QT_PLATFORM}/bin") QT_TOOLS_PATH = QT_PATH.joinpath("Tools/") @@ -34,10 +35,10 @@ VCPKG_BASE_PACKAGES = [ "catch2" ] PYTHON_EXECUTABLE = "python" if sys.platform == "win32" else "python3" -FFMPEG_VERSION = "5.0.1" - -GODOT_VERSION = "4.1.1" -GODOT_RELEASE_TYPE = "stable" +FFMPEG_VERSION = "6.0" +GODOT_VERSION = "4.2" +GODOT_RELEASE_TYPE = "beta4" +GODOT_DOWNLOAD_SERVER = "https://downloads.tuxfamily.org/godotengine" if sys.platform == "win32": SCREENPLAYWALLPAPER_GODOT_EXECUTABLE = "ScreenPlayWallpaperGodot.exe" GODOT_EDITOR_EXECUTABLE = f"Godot_v{GODOT_VERSION}-{GODOT_RELEASE_TYPE}_win64.exe" @@ -53,3 +54,4 @@ elif sys.platform == "linux": # /home/eli/.local/share/godot/templates/ GODOT_TEMPLATES_PATH = os.path.join( Path.home(), f".local/share/godot/templates/{GODOT_VERSION}.{GODOT_RELEASE_TYPE}") + diff --git a/Tools/download_ffmpeg.py b/Tools/download_ffmpeg.py index cd48ac63..959bfd15 100644 --- a/Tools/download_ffmpeg.py +++ b/Tools/download_ffmpeg.py @@ -1,14 +1,17 @@ #!/usr/bin/python3 # SPDX-License-Identifier: LicenseRef-EliasSteurerTachiom OR AGPL-3.0-only from fileinput import filename +import sys from zipfile import ZipFile import platform from urllib.request import urlopen +import subprocess import os import defines from shutil import move, rmtree from util import cd_repo_root_path from sys import stdout +from defines import FFMPEG_VERSION stdout.reconfigure(encoding='utf-8') @@ -99,13 +102,44 @@ def download_prebuild_ffmpeg_windows(extraction_path: str): extract_zip_executables(extraction_path, ffmpeg_path_and_filename) -def execute(): +def execute() ->bool: # Make sure the script is always started from the same folder root_path = cd_repo_root_path() extraction_path = os.path.join(root_path, "ThirdParty/ffmpeg") + ffmpeg_binary_path = os.path.join(extraction_path, "ffmpeg") # Adjust this if FFmpeg binary is inside another subdirectory + + if sys.platform == "win32": + ffmpeg_binary_path += ".exe" + + # Check if ffmpeg is already installed and matches the required version + if os.path.isfile(ffmpeg_binary_path): + result = subprocess.run([ffmpeg_binary_path, "-version"], capture_output=True, text=True) + output = result.stdout + version_line = next((line for line in output.split('\n') if 'ffmpeg version' in line), None) + if version_line: + installed_version = version_line.split(' ')[2].split('-')[0] + if installed_version == FFMPEG_VERSION: + print(f"FFmpeg version {installed_version} is already installed.") + return True + else: + print(f"FFmpeg version {installed_version} found, but version {FFMPEG_VERSION} is required.") + + try: + if os.path.exists(extraction_path): + rmtree(extraction_path) + print("Directory removed successfully.") + except Exception as e: + print(f"An error occurred while trying to remove the directory: {str(e)}") + return False + + try: + if os.path.exists(extraction_path): + rmtree(extraction_path) + print("Directory removed successfully.") + except Exception as e: + print(f"An error occurred while trying to remove the directory: {str(e)}") + return False - if os.path.exists(extraction_path): - rmtree(extraction_path) os.makedirs(extraction_path) @@ -113,6 +147,8 @@ def execute(): download_prebuild_ffmpeg_windows(extraction_path) elif platform.system() == "Darwin": download_prebuild_ffmpeg_mac(extraction_path) + + return True if __name__ == "__main__": diff --git a/Tools/setup.py b/Tools/setup.py index 36006514..b75811fc 100755 --- a/Tools/setup.py +++ b/Tools/setup.py @@ -114,11 +114,13 @@ def main(): project_source_parent_path = root_path.joinpath("../").resolve() vcpkg_path = project_source_parent_path.joinpath("vcpkg").resolve() vcpkg_packages_list = defines.VCPKG_BASE_PACKAGES - if not args.skip_aqt: - setup_qt() - download_ffmpeg.execute() - setup_godot.execute() + if not setup_godot.execute(): + raise RuntimeError("Unable to download godot") + + if not download_ffmpeg.execute(): + raise RuntimeError("Unable to download ffmpeg") + if system() == "Windows": vcpkg_command = "vcpkg.exe" @@ -163,6 +165,8 @@ def main(): execute( f"{vcpkg_command} install {vcpkg_packages} --triplet {triplet} --recurse", vcpkg_path, False) + if not args.skip_aqt: + setup_qt() if __name__ == "__main__": main() diff --git a/Tools/setup_godot.py b/Tools/setup_godot.py index 3940a157..24150ee9 100644 --- a/Tools/setup_godot.py +++ b/Tools/setup_godot.py @@ -1,59 +1,112 @@ #!/usr/bin/python3 # SPDX-License-Identifier: LicenseRef-EliasSteurerTachiom OR AGPL-3.0-only -import requests -import zipfile -import platform +import os +import sys +import shutil +import util from pathlib import Path -from defines import GODOT_VERSION -from util import repo_root_path # Assuming util.py exists and has repo_root_path() +import defines +import util + +def download_godot(version: str, exe_zip_filename: str, export_templates: str, download_destination_path: str) -> bool: + # https://downloads.tuxfamily.org/godotengine/4.2/beta4/Godot_v4.2-beta4_win64.exe.zip + # https://downloads.tuxfamily.org/godotengine/4.2/Godot_v4.2-beta4_win64.exe.zip + download_export_templates = f"{defines.GODOT_DOWNLOAD_SERVER}/{version}/{defines.GODOT_RELEASE_TYPE}/{export_templates}" + exe_destination_filepath = os.path.join( + download_destination_path, exe_zip_filename) + export_templates_destination_path = os.path.join( + download_destination_path, export_templates) + + # Godot adds ".stable" to the folder names for full releases: "AppData/Roaming/Godot/templates/3.4.stable": + print(f"Downloading Godot from {defines.GODOT_DOWNLOAD_SERVER}/") + download_link = f"{defines.GODOT_DOWNLOAD_SERVER}/{version}/{defines.GODOT_RELEASE_TYPE}/{exe_zip_filename}" + util.download(download_link, exe_destination_filepath, False) + util.download(download_export_templates, + export_templates_destination_path, False) + + return True -def execute(): +def unzip_godot(exe_zip_filepath: str, export_templates_filepath: str, destination_path: str) -> bool: + print("Unzip Godot") + util.unzip(exe_zip_filepath, destination_path) + + # The export templates contain a templates subfolder in which the content is. This is bad because it clashes + # with the folder structure where the version comes after: AppData\Roaming\Godot\templates\3.3.4.stable + # Rename: AppData\Roaming\Godot\templates\templates + # to : AppData\Roaming\Godot\templates\3.4.stable + godot_templates_dir = "" + if sys.platform == "win32": + godot_templates_dir = os.path.join( + os.getenv('APPDATA'), "Godot/templates/") + elif sys.platform == "linux": + godot_templates_dir = os.path.join( + str(Path.home()), ".local/share/godot/templates/") + os.makedirs(godot_templates_dir, exist_ok=True) + export_templates_destination_version = f"{godot_templates_dir}/{defines.GODOT_VERSION}.{defines.GODOT_RELEASE_TYPE}" + + # Remove previous folder + if os.path.exists(export_templates_destination_version): + print(f"Remove previous export templates folder: {export_templates_destination_version}") + shutil.rmtree(export_templates_destination_version) + + util.unzip(export_templates_filepath, godot_templates_dir) + os.rename(os.path.join(godot_templates_dir, "templates"), + export_templates_destination_version) + + print(f"Remove {exe_zip_filepath}") + try: + os.remove(exe_zip_filepath) + except OSError as error: + print(f"Error deleting file: {error}") + return False + + print(f"Remove {export_templates_filepath}") + try: + os.remove(export_templates_filepath) + except OSError as error: + print(f"Error deleting file: {error}") + return False + + return True + + +def setup_godot() -> bool: + print(f"Set up GODOT version {defines.GODOT_VERSION} {defines.GODOT_RELEASE_TYPE}") + destination_path = os.path.join(defines.THIRDPATH_PATH, "Godot") + export_templates = f"Godot_v{defines.GODOT_VERSION}-{defines.GODOT_RELEASE_TYPE}_export_templates.tpz" + export_templates_filepath = os.path.join( + destination_path, export_templates) + exe_zip_filename = defines.GODOT_EDITOR_EXECUTABLE + '.zip' + exe_zip_filepath = os.path.join(destination_path, exe_zip_filename) + download_godot(defines.GODOT_VERSION, exe_zip_filename, + export_templates, destination_path) + if not unzip_godot(exe_zip_filepath, export_templates_filepath, destination_path): + return False + + # Linux needs to change file permission to be able to run godot + if sys.platform == "linux": + execute(f"chmod +x {defines.GODOT_EDITOR_EXECUTABLE}", + destination_path, False) + + return True + + +def execute() -> bool: # Assuming repo_root_path() returns the git repo root path - root_path = Path(repo_root_path()) - godot_path = root_path / "Tools" / "Apps" / "Godot" + repo_path = Path(util.repo_root_path()) + godot_path = repo_path / "ThirdParty" / "Godot" # Create the directory if it doesn't exist godot_path.mkdir(parents=True, exist_ok=True) # Check if Godot executable already exists for file in godot_path.iterdir(): - if GODOT_VERSION in str(file): - print(f"Godot v{GODOT_VERSION} already exists.") - return - - # Determine OS type - os_type = platform.system().lower() - if os_type == "windows": - os_type = "win64.exe" - elif os_type == "linux": - os_type = "linux.x86_64" - elif os_type == "darwin": # macOS - os_type = "macos.universal" - else: - print("Unsupported OS") - return - - # Download Godot - base_url = "https://github.com/godotengine/godot/releases/download" - file_name = f"Godot_v{GODOT_VERSION}-stable_{os_type}.zip" - url = f"{base_url}/{GODOT_VERSION}-stable/{file_name}" - - response = requests.get(url) - if response.status_code == 200: - download_path = godot_path / file_name - download_path.write_bytes(response.content) - - # Extract ZIP file - with zipfile.ZipFile(download_path, 'r') as zip_ref: - zip_ref.extractall(godot_path) - - # Delete ZIP file - download_path.unlink() - print(f"Successfully installed Godot v{GODOT_VERSION}") - else: - print(f"Failed to download Godot v{GODOT_VERSION} for {os_type}") - + if defines.GODOT_VERSION in str(file): + print(f"Godot v{defines.GODOT_VERSION} already exists.") + return True + + return setup_godot() if __name__ == "__main__": execute() diff --git a/Tools/util.py b/Tools/util.py index 5a24cca1..0f00b965 100644 --- a/Tools/util.py +++ b/Tools/util.py @@ -9,6 +9,27 @@ import os import re import subprocess from sys import stdout +import zipfile +import urllib.request +import sys +import ssl + +def progress(count: int, block_size: int, total_size: int): + percent = int(count * block_size * 100 / total_size) + sys.stdout.write("\rDownload: {}%".format(percent)) + sys.stdout.flush() + +# disable broken progress bar in CI +def download(url: str, filename: str, show_progress: bool = True): + # This is needed for downloading from https sites + # see https://programmerah.com/python-error-certificate-verify-failed-certificate-has-expired-40374/ + ssl._create_default_https_context = ssl._create_unverified_context + + if show_progress: + urllib.request.urlretrieve(url, filename, progress) + else: + urllib.request.urlretrieve(url, filename) + stdout.reconfigure(encoding='utf-8') @@ -42,6 +63,11 @@ def repo_root_path() -> str: return os.path.realpath(path) +def workspace_path() -> str: + # One folder above the repo + path = os.path.join(repo_root_path(), "../") + return os.path.realpath(path) + def cd_repo_root_path() -> str: # Make sure the script is always started from the same # ScreenPlay root folder @@ -144,3 +170,11 @@ def semver_to_string(semver_dict): if semver_dict['pre_release']: version_str += f"-{semver_dict['pre_release']}" return version_str + + +def unzip(zip_path: str, destination_path: str, specific_file: str = None): + with zipfile.ZipFile(zip_path, 'r') as zip_ref: + if specific_file: + zip_ref.extract(specific_file, path=destination_path) + else: + zip_ref.extractall(path=destination_path) \ No newline at end of file From 4db63579a78565fe2fa1059e8108d85612bb50dd Mon Sep 17 00:00:00 2001 From: Elias Steurer Date: Thu, 2 Nov 2023 13:25:09 +0100 Subject: [PATCH 033/101] Move more functionality into the windowsintegration class --- .../src/ScreenPlayGodotWallpaper.cpp | 29 ++++--- .../src/ScreenPlayGodotWallpaper.h | 2 +- .../src/windowsintegration.cpp | 81 ++++++++++++------- ScreenPlayWallpaper/src/windowsintegration.h | 21 +++-- ScreenPlayWallpaper/src/winwindow.cpp | 47 +++++------ ScreenPlayWallpaper/src/winwindow.h | 5 +- 6 files changed, 100 insertions(+), 85 deletions(-) diff --git a/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayGodotWallpaper.cpp b/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayGodotWallpaper.cpp index c0e5a0db..1e4bbfd3 100644 --- a/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayGodotWallpaper.cpp +++ b/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayGodotWallpaper.cpp @@ -56,13 +56,13 @@ void ScreenPlayGodotWallpaper::hideFromTaskbar(HWND hwnd) bool ScreenPlayGodotWallpaper::configureWindowGeometry() { - if (!m_hook->searchWorkerWindowToParentTo()) { + if (!m_windowsIntegration->searchWorkerWindowToParentTo()) { UtilityFunctions::print("No worker window found"); return false; } // WARNING: Setting Window flags must be called *here*! - SetWindowLongPtr(m_hook->windowHandle, GWL_EXSTYLE, WS_EX_LEFT | WS_EX_LTRREADING | WS_EX_RIGHTSCROLLBAR | WS_EX_NOACTIVATE | WS_EX_TOOLWINDOW | WS_EX_TRANSPARENT); - SetWindowLongPtr(m_hook->windowHandle, GWL_STYLE, WS_POPUPWINDOW); + SetWindowLongPtr(m_windowsIntegration->windowHandle(), GWL_EXSTYLE, WS_EX_LEFT | WS_EX_LTRREADING | WS_EX_RIGHTSCROLLBAR | WS_EX_NOACTIVATE | WS_EX_TOOLWINDOW | WS_EX_TRANSPARENT); + SetWindowLongPtr(m_windowsIntegration->windowHandle(), GWL_STYLE, WS_POPUPWINDOW); return true; } @@ -72,23 +72,26 @@ bool ScreenPlayGodotWallpaper::init(int activeScreen) auto* displayServer = DisplayServer::get_singleton(); int64_t handle_int = displayServer->window_get_native_handle(godot::DisplayServer::HandleType::WINDOW_HANDLE, activeScreen); HWND hwnd = reinterpret_cast(static_cast(handle_int)); - m_hook = std::make_unique(); - m_hook->windowHandle = hwnd; + m_windowsIntegration = std::make_unique(); + m_windowsIntegration->setWindowHandle(hwnd); hideFromTaskbar(hwnd); if (!configureWindowGeometry()) { return false; } - ShowWindow(m_hook->windowHandle, SW_HIDE); + ShowWindow(m_windowsIntegration->windowHandle(), SW_HIDE); WindowsIntegration windowsIntegration; - auto updateWindowSize = [this, &displayServer](const int width, const int height) { + auto updateWindowSize = [&displayServer](const int width, const int height) { displayServer->window_set_size(godot::Vector2((real_t)width, (real_t)height)); }; - std::optional monitor = windowsIntegration.setupWallpaperForOneScreen(activeScreen, m_hook->windowHandle, m_hook->windowHandleWorker, updateWindowSize); + + const std::optional monitor = windowsIntegration.setupWallpaperForOneScreen(activeScreen, updateWindowSize); + if (!monitor.has_value()) + return false; const std::string windowTitle = "ScreenPlayWallpaperGodot"; SetWindowText(hwnd, windowTitle.c_str()); - ShowWindow(m_hook->windowHandle, SW_SHOW); + ShowWindow(m_windowsIntegration->windowHandle(), SW_SHOW); return true; } @@ -194,14 +197,14 @@ bool ScreenPlayGodotWallpaper::exit() { // Somehow this gets called at editor startup // so just return if not initialized - if (m_hook) { + if (m_windowsIntegration) { - ShowWindow(m_hook->windowHandle, SW_HIDE); + ShowWindow(m_windowsIntegration->windowHandle(), SW_HIDE); // Force refresh so that we display the regular // desktop wallpaper again - ShowWindow(m_hook->windowHandleWorker, SW_SHOW); - ShowWindow(m_hook->windowHandleWorker, SW_HIDE); + ShowWindow(m_windowsIntegration->windowHandleWorker(), SW_SHOW); + ShowWindow(m_windowsIntegration->windowHandleWorker(), SW_HIDE); } return true; } diff --git a/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayGodotWallpaper.h b/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayGodotWallpaper.h index f735103f..08731d0c 100644 --- a/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayGodotWallpaper.h +++ b/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayGodotWallpaper.h @@ -62,7 +62,7 @@ private: godot::String m_appID = ""; godot::String m_projectPath = ""; - std::unique_ptr m_hook; + std::unique_ptr m_windowsIntegration; double m_timesinceLastRead = 0.0; bool m_pipeConnected = false; bool m_screenPlayConnected = false; diff --git a/ScreenPlayWallpaper/src/windowsintegration.cpp b/ScreenPlayWallpaper/src/windowsintegration.cpp index d8b71af2..ed51b7d6 100644 --- a/ScreenPlayWallpaper/src/windowsintegration.cpp +++ b/ScreenPlayWallpaper/src/windowsintegration.cpp @@ -1,14 +1,4 @@ #include "windowsintegration.h" -bool WindowsIntegration::searchWorkerWindowToParentTo() -{ - - HWND progman_hwnd = FindWindowW(L"Progman", L"Program Manager"); - const DWORD WM_SPAWN_WORKER = 0x052C; - SendMessageTimeoutW(progman_hwnd, WM_SPAWN_WORKER, 0xD, 0x1, SMTO_NORMAL, - 10000, nullptr); - - return EnumWindows(SearchForWorkerWindow, reinterpret_cast(&windowHandleWorker)); -} /*! \brief Returns scaling factor as reported by Windows. @@ -73,6 +63,15 @@ bool WindowsIntegration::hasWindowScaling() const return hasScaling; } +bool WindowsIntegration::searchWorkerWindowToParentTo() +{ + HWND progman_hwnd = FindWindowW(L"Progman", L"Program Manager"); + const DWORD WM_SPAWN_WORKER = 0x052C; + SendMessageTimeoutW(progman_hwnd, WM_SPAWN_WORKER, 0xD, 0x1, SMTO_NORMAL, + 10000, nullptr); + + return EnumWindows(SearchForWorkerWindow, reinterpret_cast(&m_windowHandleWorker)); +} /*! \brief Searches for the worker window for our window to parent to. */ @@ -140,7 +139,7 @@ bool WindowsIntegration::checkForFullScreenWindow(HWND windowHandle) * * Windows allows users to set different DPI (dots per inch) scale factors for each monitor. This DPI scaling can lead to * discrepancies in the positioning and size of windows, especially if we want to place a window on a monitor with a different * scale factor than the one it was originally on. - * * In our scenario, we want to move and resize a window (`windowHwnd`) to fit perfectly within a target monitor. However, + * * In our scenario, we want to move and resize a window (`m_windowHandle`) to fit perfectly within a target monitor. However, * both the window and the target monitor can have different DPI scale factors, so we need to account for these when calculating * the window's new position and size. * * Steps: @@ -159,7 +158,7 @@ bool WindowsIntegration::checkForFullScreenWindow(HWND windowHandle) * scale factors. */ -std::optional WindowsIntegration::setupWallpaperForOneScreen(const int activeScreen, HWND windowHwnd, HWND parentWindowHwnd, std::function updateWindowSize) +std::optional WindowsIntegration::setupWallpaperForOneScreen(const int activeScreen, std::function updateWindowSize) { std::vector monitors = GetAllMonitors(); for (const auto& monitor : monitors) { @@ -167,7 +166,7 @@ std::optional WindowsIntegration::setupWallpaperForOneScreen(const int if (monitor.index != activeScreen) continue; - SetWindowPos(windowHwnd, HWND_TOP, + SetWindowPos(m_windowHandle, HWND_TOP, monitor.position.left, monitor.position.top, monitor.size.cx, monitor.size.cy, SWP_NOZORDER | SWP_NOACTIVATE); @@ -176,17 +175,17 @@ std::optional WindowsIntegration::setupWallpaperForOneScreen(const int updateWindowSize(monitor.size.cx, monitor.size.cy); RECT oldRect; - GetWindowRect(windowHwnd, &oldRect); + GetWindowRect(m_windowHandle, &oldRect); std::cout << "Old Window Position: (" << oldRect.left << ", " << oldRect.top << ")" << std::endl; - float windowDpiScaleFactor = static_cast(GetDpiForWindow(windowHwnd)) / 96.0f; + float windowDpiScaleFactor = static_cast(GetDpiForWindow(m_windowHandle)) / 96.0f; float targetMonitorDpiScaleFactor = monitor.scaleFactor; std::cout << "Window DPI Scale Factor: " << windowDpiScaleFactor << std::endl; std::cout << "Target Monitor DPI Scale Factor: " << targetMonitorDpiScaleFactor << std::endl; - SetParent(windowHwnd, parentWindowHwnd); + SetParent(m_windowHandle, m_windowHandleWorker); RECT parentRect; - GetWindowRect(parentWindowHwnd, &parentRect); + GetWindowRect(m_windowHandleWorker, &parentRect); std::cout << "WorkerW Window Position: (" << parentRect.left << ", " << parentRect.top << ")" << std::endl; int newX = static_cast((oldRect.left - parentRect.left) * (windowDpiScaleFactor / targetMonitorDpiScaleFactor)); @@ -197,7 +196,7 @@ std::optional WindowsIntegration::setupWallpaperForOneScreen(const int int newHeight = static_cast(monitor.size.cy * (windowDpiScaleFactor / targetMonitorDpiScaleFactor)); std::cout << "Calculated New Size: (" << newWidth << "x" << newHeight << ")" << std::endl; - SetWindowPos(windowHwnd, NULL, newX, newY, newWidth, newHeight, SWP_NOZORDER | SWP_NOACTIVATE); + SetWindowPos(m_windowHandle, NULL, newX, newY, newWidth, newHeight, SWP_NOZORDER | SWP_NOACTIVATE); return { monitor }; } return std::nullopt; @@ -221,7 +220,7 @@ std::optional WindowsIntegration::setupWallpaperForOneScreen(const int * height as `bottommost - topmost`. * 3. Adjust the window's position and size to fit this bounding rectangle. */ -WindowsIntegration::SpanResult WindowsIntegration::setupWallpaperForMultipleScreens(const std::vector& activeScreens, HWND windowHwnd, HWND parentWindowHwnd) +WindowsIntegration::SpanResult WindowsIntegration::setupWallpaperForMultipleScreens(const std::vector& activeScreens) { std::vector monitors = GetAllMonitors(); @@ -244,18 +243,18 @@ WindowsIntegration::SpanResult WindowsIntegration::setupWallpaperForMultipleScre int newHeight = bottommost - topmost; RECT oldRect; - GetWindowRect(windowHwnd, &oldRect); + GetWindowRect(m_windowHandle, &oldRect); - float windowDpiScaleFactor = static_cast(GetDpiForWindow(windowHwnd)) / 96.0f; + float windowDpiScaleFactor = static_cast(GetDpiForWindow(m_windowHandle)) / 96.0f; - SetParent(windowHwnd, parentWindowHwnd); + SetParent(m_windowHandle, m_windowHandleWorker); RECT parentRect; - GetWindowRect(parentWindowHwnd, &parentRect); + GetWindowRect(m_windowHandleWorker, &parentRect); int newX = static_cast((leftmost - parentRect.left) * windowDpiScaleFactor); int newY = static_cast((topmost - parentRect.top) * windowDpiScaleFactor); - SetWindowPos(windowHwnd, NULL, newX, newY, newWidth, newHeight, SWP_NOZORDER | SWP_NOACTIVATE); + SetWindowPos(m_windowHandle, NULL, newX, newY, newWidth, newHeight, SWP_NOZORDER | SWP_NOACTIVATE); SpanResult result; result.width = rightmost - leftmost; result.height = bottommost - topmost; @@ -281,7 +280,7 @@ WindowsIntegration::SpanResult WindowsIntegration::setupWallpaperForMultipleScre * @retval SpanResult::success A boolean flag indicating the success of the operation. Currently, it always returns `true` * assuming all operations are successful. This can be adjusted based on error checks as needed. */ -WindowsIntegration::SpanResult WindowsIntegration::setupWallpaperForAllScreens(HWND windowHwnd, HWND parentWindowHwnd) +WindowsIntegration::SpanResult WindowsIntegration::setupWallpaperForAllScreens() { std::vector monitors = GetAllMonitors(); @@ -304,19 +303,19 @@ WindowsIntegration::SpanResult WindowsIntegration::setupWallpaperForAllScreens(H int scaledHeight = static_cast((bottommost - topmost) * overallScaleFactor); // Set the position and size of the window to span all monitors - SetWindowPos(windowHwnd, HWND_TOP, leftmost, topmost, scaledWidth, scaledHeight, SWP_NOZORDER | SWP_NOACTIVATE); + SetWindowPos(m_windowHandle, HWND_TOP, leftmost, topmost, scaledWidth, scaledHeight, SWP_NOZORDER | SWP_NOACTIVATE); // Reparenting and scaling logic RECT oldRect; - GetWindowRect(windowHwnd, &oldRect); - float windowDpiScaleFactor = static_cast(GetDpiForWindow(windowHwnd)) / 96.0f; - SetParent(windowHwnd, parentWindowHwnd); + GetWindowRect(m_windowHandle, &oldRect); + float windowDpiScaleFactor = static_cast(GetDpiForWindow(m_windowHandle)) / 96.0f; + SetParent(m_windowHandle, m_windowHandleWorker); RECT parentRect; - GetWindowRect(parentWindowHwnd, &parentRect); + GetWindowRect(m_windowHandleWorker, &parentRect); int newX = static_cast((oldRect.left - parentRect.left) * (windowDpiScaleFactor / overallScaleFactor)); int newY = static_cast((oldRect.top - parentRect.top) * (windowDpiScaleFactor / overallScaleFactor)); - SetWindowPos(windowHwnd, NULL, newX, newY, scaledWidth, scaledHeight, SWP_NOZORDER | SWP_NOACTIVATE); + SetWindowPos(m_windowHandle, NULL, newX, newY, scaledWidth, scaledHeight, SWP_NOZORDER | SWP_NOACTIVATE); // Return the combined span of all monitors SpanResult result; @@ -327,6 +326,26 @@ WindowsIntegration::SpanResult WindowsIntegration::setupWallpaperForAllScreens(H return result; } +HWND WindowsIntegration::windowHandle() const +{ + return m_windowHandle; +} + +HWND WindowsIntegration::windowHandleWorker() const +{ + return m_windowHandleWorker; +} + +void WindowsIntegration::setWindowHandle(HWND windowHandle) +{ + m_windowHandle = windowHandle; +} + +void WindowsIntegration::setWindowHandleWorker(HWND windowHandleWorker) +{ + m_windowHandleWorker = windowHandleWorker; +} + BOOL GetMonitorByHandle(HMONITOR hMonitor, HDC hdcMonitor, LPRECT lprcMonitor, LPARAM dwData) { diff --git a/ScreenPlayWallpaper/src/windowsintegration.h b/ScreenPlayWallpaper/src/windowsintegration.h index 92301aa7..3c6525a3 100644 --- a/ScreenPlayWallpaper/src/windowsintegration.h +++ b/ScreenPlayWallpaper/src/windowsintegration.h @@ -83,11 +83,8 @@ struct sEnumInfo { HMONITOR hMonitor; }; -struct WindowsIntegration { - - HWND windowHandle {}; - HWND windowHandleWorker {}; - +class WindowsIntegration { +public: struct SpanResult { int width = 0; int height = 0; @@ -100,7 +97,15 @@ struct WindowsIntegration { std::vector GetAllMonitors(); int GetMonitorIndex(HMONITOR hMonitor); bool checkForFullScreenWindow(HWND windowHandle); - std::optional setupWallpaperForOneScreen(const int activeScreen, HWND windowHwnd, HWND parentWindowHwnd, std::function updateWindowSize); - SpanResult setupWallpaperForMultipleScreens(const std::vector& activeScreens, HWND windowHwnd, HWND parentWindowHwnd); - SpanResult setupWallpaperForAllScreens(HWND windowHwnd, HWND parentWindowHwnd); + std::optional setupWallpaperForOneScreen(const int activeScreen, std::function updateWindowSize); + SpanResult setupWallpaperForMultipleScreens(const std::vector& activeScreens); + SpanResult setupWallpaperForAllScreens(); + HWND windowHandle() const; + HWND windowHandleWorker() const; + void setWindowHandle(HWND windowHandle); + void setWindowHandleWorker(HWND windowHandleWorker); + +private: + HWND m_windowHandle {}; + HWND m_windowHandleWorker {}; }; diff --git a/ScreenPlayWallpaper/src/winwindow.cpp b/ScreenPlayWallpaper/src/winwindow.cpp index 9070a4e5..32867f5f 100644 --- a/ScreenPlayWallpaper/src/winwindow.cpp +++ b/ScreenPlayWallpaper/src/winwindow.cpp @@ -1,6 +1,5 @@ // SPDX-License-Identifier: LicenseRef-EliasSteurerTachiom OR AGPL-3.0-only #include "winwindow.h" -#include "ScreenPlayUtil/projectfile.h" #include "windowsintegration.h" #include #include @@ -124,8 +123,8 @@ ScreenPlay::WallpaperExitCode WinWindow::start() } m_windowsDesktopProperties = std::make_unique(); - m_windowHandle = reinterpret_cast(m_window.winId()); - if (!IsWindow(m_windowHandle)) { + m_windowsIntegration.setWindowHandle(reinterpret_cast(m_window.winId())); + if (!IsWindow(m_windowsIntegration.windowHandle())) { qCritical("Could not get a valid window handle!"); return ScreenPlay::WallpaperExitCode::Invalid_Start_Windows_HandleError; } @@ -160,12 +159,12 @@ ScreenPlay::WallpaperExitCode WinWindow::start() void WinWindow::setVisible(bool show) { if (show) { - if (!ShowWindow(m_windowHandle, SW_SHOW)) { + if (!ShowWindow(m_windowsIntegration.windowHandle(), SW_SHOW)) { qDebug() << "Cannot set window handle SW_SHOW"; } } else { - if (!ShowWindow(m_windowHandle, SW_HIDE)) { + if (!ShowWindow(m_windowsIntegration.windowHandle(), SW_HIDE)) { qDebug() << "Cannot set window handle SW_HIDE"; } } @@ -183,14 +182,13 @@ void WinWindow::destroyThis() void WinWindow::setupWallpaperForOneScreen(int activeScreen) { - WindowsIntegration windowsIntegration; auto updateWindowSize = [this](const int width, const int height) { setWidth(width); setHeight(height); m_window.setWidth(width); m_window.setHeight(height); }; - std::optional monitor = windowsIntegration.setupWallpaperForOneScreen(activeScreen, m_windowHandle, m_windowHandleWorker, updateWindowSize); + std::optional monitor = m_windowsIntegration.setupWallpaperForOneScreen(activeScreen, updateWindowSize); } /*! @@ -198,8 +196,7 @@ void WinWindow::setupWallpaperForOneScreen(int activeScreen) */ void WinWindow::setupWallpaperForAllScreens() { - WindowsIntegration windowsIntegration; - WindowsIntegration::SpanResult span = windowsIntegration.setupWallpaperForAllScreens(m_windowHandle, m_windowHandleWorker); + WindowsIntegration::SpanResult span = m_windowsIntegration.setupWallpaperForAllScreens(); setWidth(span.width); setHeight(span.height); m_window.setWidth(width()); @@ -212,38 +209,30 @@ void WinWindow::setupWallpaperForAllScreens() void WinWindow::setupWallpaperForMultipleScreens(const QVector& activeScreensList) { std::vector activeScreens(activeScreensList.begin(), activeScreensList.end()); - WindowsIntegration windowsIntegration; - WindowsIntegration::SpanResult span = windowsIntegration.setupWallpaperForMultipleScreens(activeScreens, m_windowHandle, m_windowHandleWorker); + WindowsIntegration::SpanResult span = m_windowsIntegration.setupWallpaperForMultipleScreens(activeScreens); setWidth(span.width); setHeight(span.height); m_window.setWidth(width()); m_window.setHeight(height()); } -bool WinWindow::searchWorkerWindowToParentTo() -{ - - HWND progman_hwnd = FindWindowW(L"Progman", L"Program Manager"); - const DWORD WM_SPAWN_WORKER = 0x052C; - SendMessageTimeoutW(progman_hwnd, WM_SPAWN_WORKER, 0xD, 0x1, SMTO_NORMAL, - 10000, nullptr); - - return EnumWindows(SearchForWorkerWindow, reinterpret_cast(&m_windowHandleWorker)); -} - /*! \brief Sets the size and the parent to the worker handle to be displayed behind the desktop icons. */ void WinWindow::configureWindowGeometry() { - if (!searchWorkerWindowToParentTo()) { + if (!m_windowsIntegration.searchWorkerWindowToParentTo()) { qFatal("No worker window found"); } + if (!IsWindow(m_windowsIntegration.windowHandleWorker())) { + qCritical("Could not get a valid window handle wroker!"); + return; + } // WARNING: Setting Window flags must be called *here*! - SetWindowLongPtr(m_windowHandle, GWL_EXSTYLE, WS_EX_LEFT | WS_EX_LTRREADING | WS_EX_RIGHTSCROLLBAR | WS_EX_NOACTIVATE | WS_EX_TOOLWINDOW | WS_EX_TRANSPARENT); - SetWindowLongPtr(m_windowHandle, GWL_STYLE, WS_POPUP); + SetWindowLongPtr(m_windowsIntegration.windowHandle(), GWL_EXSTYLE, WS_EX_LEFT | WS_EX_LTRREADING | WS_EX_RIGHTSCROLLBAR | WS_EX_NOACTIVATE | WS_EX_TOOLWINDOW | WS_EX_TRANSPARENT); + SetWindowLongPtr(m_windowsIntegration.windowHandle(), GWL_STYLE, WS_POPUP); // Ether for one Screen or for all if ((QGuiApplication::screens().length() == activeScreensList().length()) && (activeScreensList().length() != 1)) { @@ -267,12 +256,12 @@ void WinWindow::terminate() if (type() != InstalledType::VideoWallpaper && type() != InstalledType::GifWallpaper) { UnhookWindowsHookEx(g_mouseHook); } - ShowWindow(m_windowHandle, SW_HIDE); + ShowWindow(m_windowsIntegration.windowHandle(), SW_HIDE); // Force refresh so that we display the regular // desktop wallpaper again - ShowWindow(m_windowHandleWorker, SW_HIDE); - ShowWindow(m_windowHandleWorker, SW_SHOW); + ShowWindow(m_windowsIntegration.windowHandleWorker(), SW_HIDE); + ShowWindow(m_windowsIntegration.windowHandleWorker(), SW_SHOW); QGuiApplication::quit(); } @@ -289,7 +278,7 @@ void WinWindow::clearComponentCache() void WinWindow::checkForFullScreenWindow() { - bool hasFullscreenWindow = WindowsIntegration().checkForFullScreenWindow(m_windowHandle); + bool hasFullscreenWindow = m_windowsIntegration.checkForFullScreenWindow(m_windowsIntegration.windowHandle()); setVisualsPaused(hasFullscreenWindow); } diff --git a/ScreenPlayWallpaper/src/winwindow.h b/ScreenPlayWallpaper/src/winwindow.h index 6e47a0b4..9ff712ec 100644 --- a/ScreenPlayWallpaper/src/winwindow.h +++ b/ScreenPlayWallpaper/src/winwindow.h @@ -18,6 +18,7 @@ #include "basewindow.h" #include "windowsdesktopproperties.h" +#include "windowsintegration.h" class WinWindow : public BaseWindow { Q_OBJECT @@ -53,7 +54,6 @@ private: void setupWallpaperForAllScreens(); void setupWallpaperForMultipleScreens(const QVector& activeScreensList); void setupWindowMouseHook(); - bool searchWorkerWindowToParentTo(); void configureWindowGeometry(); private slots: @@ -62,8 +62,7 @@ private slots: private: QPoint m_zeroPoint {}; QQuickView m_window; - HWND m_windowHandle {}; - HWND m_windowHandleWorker {}; + WindowsIntegration m_windowsIntegration; QTimer m_checkForFullScreenWindowTimer; QTimer m_reconfigureTimer; std::unique_ptr m_windowsDesktopProperties; From e3918079d73d8fc21a4d784b5aec50cc3256945b Mon Sep 17 00:00:00 2001 From: Elias Steurer Date: Thu, 2 Nov 2023 13:25:26 +0100 Subject: [PATCH 034/101] Update godot-cpp to 4.2 --- ScreenPlayWallpaper/Godot/GDExtention/extern/godot-cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ScreenPlayWallpaper/Godot/GDExtention/extern/godot-cpp b/ScreenPlayWallpaper/Godot/GDExtention/extern/godot-cpp index 28494f0b..c1196a1a 160000 --- a/ScreenPlayWallpaper/Godot/GDExtention/extern/godot-cpp +++ b/ScreenPlayWallpaper/Godot/GDExtention/extern/godot-cpp @@ -1 +1 @@ -Subproject commit 28494f0bd59f9c35289524e503648ed8b4baaa59 +Subproject commit c1196a1ab0a1ca166d0e5e2f08f9fe4156118c5e From cdc44f0548a904cc79838e37fd8f53e3adf81857 Mon Sep 17 00:00:00 2001 From: Elias Steurer Date: Fri, 3 Nov 2023 11:20:16 +0100 Subject: [PATCH 035/101] Move mouse support into windowsintegration --- .../src/windowsintegration.cpp | 53 +++++++ ScreenPlayWallpaper/src/windowsintegration.h | 10 ++ ScreenPlayWallpaper/src/winwindow.cpp | 139 +++++++----------- ScreenPlayWallpaper/src/winwindow.h | 1 - 4 files changed, 114 insertions(+), 89 deletions(-) diff --git a/ScreenPlayWallpaper/src/windowsintegration.cpp b/ScreenPlayWallpaper/src/windowsintegration.cpp index ed51b7d6..1dc3d9b8 100644 --- a/ScreenPlayWallpaper/src/windowsintegration.cpp +++ b/ScreenPlayWallpaper/src/windowsintegration.cpp @@ -389,3 +389,56 @@ BOOL MonitorEnumProc(HMONITOR hMonitor, HDC hdcMonitor, LPRECT lprcMonitor, LPAR return true; } + +void WindowsIntegration::setMouseEventHandler(MouseEventHandler handler) +{ + m_mouseEventHandler = handler; +} + +LRESULT __stdcall WindowsIntegration::MouseHookCallback(int nCode, WPARAM wParam, LPARAM lParam) +{ + // Initialize mouse event variables + DWORD mouseButton = 0; + UINT type = WM_MOUSEMOVE; + POINT p {}; + + if (nCode >= 0) { + switch (wParam) { + case WM_LBUTTONDOWN: + mouseButton = MK_LBUTTON; + type = WM_LBUTTONDOWN; + break; + case WM_LBUTTONUP: + mouseButton = MK_LBUTTON; + type = WM_LBUTTONUP; + break; + case WM_RBUTTONDOWN: + mouseButton = MK_RBUTTON; + type = WM_RBUTTONDOWN; + break; + default: + type = WM_MOUSEMOVE; + } + } + + if (GetCursorPos(&p)) { + // Check if the callback function is set and call it + if (m_mouseEventHandler) { + m_mouseEventHandler(mouseButton, type, p); + } + + } else { + return CallNextHookEx(m_mouseHook, nCode, wParam, lParam); + } + + return CallNextHookEx(m_mouseHook, nCode, wParam, lParam); +} + +void WindowsIntegration::setupWindowMouseHook() +{ + HINSTANCE hInstance = GetModuleHandle(NULL); + if (!(m_mouseHook = SetWindowsHookEx(WH_MOUSE_LL, MouseHookCallback, hInstance, 0))) { + OutputDebugStringW(L"Failed to install mouse hook!"); + return; + } +} diff --git a/ScreenPlayWallpaper/src/windowsintegration.h b/ScreenPlayWallpaper/src/windowsintegration.h index 3c6525a3..d39991fc 100644 --- a/ScreenPlayWallpaper/src/windowsintegration.h +++ b/ScreenPlayWallpaper/src/windowsintegration.h @@ -83,6 +83,11 @@ struct sEnumInfo { HMONITOR hMonitor; }; +// Define the type for the mouse event handler function +using MouseEventHandler = std::function; +static MouseEventHandler m_mouseEventHandler; +static HHOOK m_mouseHook; + class WindowsIntegration { public: struct SpanResult { @@ -105,6 +110,11 @@ public: void setWindowHandle(HWND windowHandle); void setWindowHandleWorker(HWND windowHandleWorker); + void setupWindowMouseHook(); + static LRESULT __stdcall MouseHookCallback(int nCode, WPARAM wParam, LPARAM lParam); + // Set the mouse event handler function + void setMouseEventHandler(MouseEventHandler handler); + private: HWND m_windowHandle {}; HWND m_windowHandleWorker {}; diff --git a/ScreenPlayWallpaper/src/winwindow.cpp b/ScreenPlayWallpaper/src/winwindow.cpp index 32867f5f..7c3a10f6 100644 --- a/ScreenPlayWallpaper/src/winwindow.cpp +++ b/ScreenPlayWallpaper/src/winwindow.cpp @@ -15,89 +15,6 @@ \brief ScreenPlayWindow used for the Windows implementation. */ -HHOOK g_mouseHook; -QPoint g_LastMousePosition { 0, 0 }; -QPoint g_globalOffset { 0, 0 }; -QQuickView* g_winGlobalHook = nullptr; - -/*! - \brief Windows mouse callback. This hook then forwards the event to the Qt window. - We must manually call a release event otherwise QML gets stuck. -*/ -LRESULT __stdcall MouseHookCallback(int nCode, WPARAM wParam, LPARAM lParam) -{ - - Qt::MouseButton mouseButton {}; - Qt::MouseButtons mouseButtons {}; - Qt::KeyboardModifier keyboardModifier {}; - QMouseEvent::Type type { QMouseEvent::Type::MouseMove }; - - if (nCode >= 0) { - switch (wParam) { - case WM_LBUTTONDOWN: - mouseButton = Qt::MouseButton::LeftButton; - mouseButtons.setFlag(Qt::LeftButton); - type = QMouseEvent::Type::MouseButtonPress; - break; - case WM_LBUTTONUP: - mouseButton = Qt::MouseButton::LeftButton; - mouseButtons.setFlag(Qt::LeftButton); - type = QMouseEvent::Type::MouseButtonRelease; - break; - case WM_RBUTTONDOWN: - mouseButton = Qt::MouseButton::RightButton; - mouseButtons.setFlag(Qt::RightButton); - type = QMouseEvent::Type::MouseButtonPress; - break; - default: - type = QMouseEvent::Type::MouseMove; - } - } - - POINT p {}; - if (GetCursorPos(&p)) { - g_LastMousePosition.setX(p.x); - g_LastMousePosition.setY(p.y); - } else { - return CallNextHookEx(g_mouseHook, nCode, wParam, lParam); - } - - auto event = QMouseEvent(type, g_LastMousePosition, mouseButton, mouseButtons, keyboardModifier); - - QGuiApplication::sendEvent(g_winGlobalHook, &event); - - if (type == QMouseEvent::Type::MouseButtonPress) { - } - QTimer::singleShot(100, [&]() { - // auto eventPress = QMouseEvent(QMouseEvent::Type::MouseButtonPress, g_LastMousePosition, mouseButton, mouseButtons, {}); - // qInfo() << mouseButton << QGuiApplication::sendEvent(g_winGlobalHook, &eventPress) << g_globalOffset.x() << g_globalOffset.y(); - auto eventRelease = QMouseEvent(QMouseEvent::Type::MouseButtonRelease, g_LastMousePosition, mouseButton, mouseButtons, {}); - QGuiApplication::sendEvent(g_winGlobalHook, &eventRelease); - }); - - return CallNextHookEx(g_mouseHook, nCode, wParam, lParam); -} - -/*! - \brief Setup the SetWindowsHookEx hook to be used to receive mouse events. -*/ -void WinWindow::setupWindowMouseHook() -{ - using ScreenPlay::InstalledType::InstalledType; - - // MUST be called before setting hook for events! - if (type() != InstalledType::VideoWallpaper && type() != InstalledType::GifWallpaper) { - qInfo() << "Enable mousehook"; - g_winGlobalHook = &m_window; - - HINSTANCE hInstance = GetModuleHandle(NULL); - if (!(g_mouseHook = SetWindowsHookEx(WH_MOUSE_LL, MouseHookCallback, hInstance, 0))) { - qInfo() << "Faild to install mouse hook!"; - return; - } - } -} - ScreenPlay::WallpaperExitCode WinWindow::start() { connect( @@ -143,13 +60,59 @@ ScreenPlay::WallpaperExitCode WinWindow::start() } } - QTimer::singleShot(1000, this, [&]() { - setupWindowMouseHook(); - }); - qInfo() << "Setup " << width() << height(); m_window.setSource(QUrl("qrc:/qml/ScreenPlayWallpaper/qml/Wallpaper.qml")); m_window.show(); + + QTimer::singleShot(1000, this, [&]() { + m_windowsIntegration.setupWindowMouseHook(); + // Set up the mouse event handler + m_windowsIntegration.setMouseEventHandler([this](DWORD mouseButton, UINT type, POINT p) { + Qt::MouseButton button = Qt::NoButton; + QEvent::Type eventType = QEvent::None; + + // Determine the Qt mouse event type and button + switch (type) { + case WM_LBUTTONDOWN: + eventType = QEvent::MouseButtonPress; + button = Qt::LeftButton; + break; + case WM_LBUTTONUP: + eventType = QEvent::MouseButtonRelease; + button = Qt::LeftButton; + break; + case WM_RBUTTONDOWN: + eventType = QEvent::MouseButtonPress; + button = Qt::RightButton; + break; + case WM_RBUTTONUP: + eventType = QEvent::MouseButtonRelease; + button = Qt::RightButton; + break; + case WM_MOUSEMOVE: + eventType = QEvent::MouseMove; + button = Qt::NoButton; + break; + // Add more cases as needed + } + + // Convert POINT to global position + QPoint globalPos(p.x, p.y); + + // Convert global position to local position within the target widget + QPoint localPos = m_window.mapFromGlobal(globalPos); + + // Create the QMouseEvent + QMouseEvent* qEvent = new QMouseEvent(eventType, localPos, globalPos, button, button, QGuiApplication::keyboardModifiers()); + + // Handle the mouse event + // For example, logging the mouse button and position + qDebug() << "Mouse event: Button=" << mouseButton << ", Type=" << type + << ", Position=(" << p.x << ", " << p.y << ")" << globalPos << localPos << button; + // Post the event to the target widget + QCoreApplication::postEvent(&m_window, qEvent); + }); + }); return ScreenPlay::WallpaperExitCode::Ok; } @@ -254,7 +217,7 @@ void WinWindow::terminate() { using ScreenPlay::InstalledType::InstalledType; if (type() != InstalledType::VideoWallpaper && type() != InstalledType::GifWallpaper) { - UnhookWindowsHookEx(g_mouseHook); + // UnhookWindowsHookEx(g_mouseHook); } ShowWindow(m_windowsIntegration.windowHandle(), SW_HIDE); diff --git a/ScreenPlayWallpaper/src/winwindow.h b/ScreenPlayWallpaper/src/winwindow.h index 9ff712ec..b9cee345 100644 --- a/ScreenPlayWallpaper/src/winwindow.h +++ b/ScreenPlayWallpaper/src/winwindow.h @@ -53,7 +53,6 @@ private: void setupWallpaperForOneScreen(int activeScreen); void setupWallpaperForAllScreens(); void setupWallpaperForMultipleScreens(const QVector& activeScreensList); - void setupWindowMouseHook(); void configureWindowGeometry(); private slots: From 067b953526d9bd1e03ada6901d8c502683a91631 Mon Sep 17 00:00:00 2001 From: Elias Steurer Date: Fri, 3 Nov 2023 12:44:54 +0100 Subject: [PATCH 036/101] Add key input support to qml wallpaper --- Content/wallpaper_qml/main.qml | 12 ++ ScreenPlayWallpaper/qml/Test.qml | 33 +++- .../src/windowsintegration.cpp | 43 +++++ ScreenPlayWallpaper/src/windowsintegration.h | 13 +- ScreenPlayWallpaper/src/winwindow.cpp | 176 +++++++++++++++++- ScreenPlayWallpaper/src/winwindow.h | 1 + 6 files changed, 263 insertions(+), 15 deletions(-) diff --git a/Content/wallpaper_qml/main.qml b/Content/wallpaper_qml/main.qml index 92e21a65..441b898c 100644 --- a/Content/wallpaper_qml/main.qml +++ b/Content/wallpaper_qml/main.qml @@ -3,6 +3,7 @@ import QtQuick import QtQuick.Layouts import QtQuick.Controls import QtQuick.Controls.Material +import ScreenPlayWallpaper Rectangle { id: root @@ -23,5 +24,16 @@ Rectangle { Layout.fillWidth: true onClicked: root.counter++ } + TextField { + placeholderText: "Edit me" + } + Button { + text: "Exit" + onClicked: { + Qt.callLater(function () { + Wallpaper.terminate(); + }); + } + } } } diff --git a/ScreenPlayWallpaper/qml/Test.qml b/ScreenPlayWallpaper/qml/Test.qml index 76fa0f6d..befb8cc3 100644 --- a/ScreenPlayWallpaper/qml/Test.qml +++ b/ScreenPlayWallpaper/qml/Test.qml @@ -164,6 +164,7 @@ Rectangle { } Row { + id: rowCounter spacing: 20 anchors { @@ -205,18 +206,30 @@ Rectangle { } } - // WebView { - // width: 1000 - // height: 400 - // url: "https://screen-play.app" + Column { + + anchors { + horizontalCenter: parent.horizontalCenter + top: rowCounter.bottom + topMargin: 20 + } + spacing: 20 + TextField { + placeholderText: "Edit me" + + } + Button { + text: "Exit" + onClicked: { + Qt.callLater(function () { + Wallpaper.terminate(); + }); + } + } + + } - // anchors { - // horizontalCenter: parent.horizontalCenter - // bottom: parent.bottom - // bottomMargin: 50 - // } - // } MultimediaView { width: 1000 height: 400 diff --git a/ScreenPlayWallpaper/src/windowsintegration.cpp b/ScreenPlayWallpaper/src/windowsintegration.cpp index 1dc3d9b8..de23690b 100644 --- a/ScreenPlayWallpaper/src/windowsintegration.cpp +++ b/ScreenPlayWallpaper/src/windowsintegration.cpp @@ -442,3 +442,46 @@ void WindowsIntegration::setupWindowMouseHook() return; } } + +void WindowsIntegration::setupWindowKeyboardHook() +{ + HINSTANCE hInstance = GetModuleHandle(NULL); + if (!(m_keyboardHook = SetWindowsHookEx(WH_KEYBOARD_LL, KeyboardHookCallback, hInstance, 0))) { + OutputDebugStringW(L"Failed to install keyboard hook!"); + return; + } +} + +void WindowsIntegration::setKeyboardEventHandler(KeyboardEventHandler handler) +{ + m_keyboardEventHandler = std::move(handler); +} + +LRESULT __stdcall WindowsIntegration::KeyboardHookCallback(int nCode, WPARAM wParam, LPARAM lParam) +{ + if (nCode >= 0) { + KBDLLHOOKSTRUCT* kbStruct = (KBDLLHOOKSTRUCT*)lParam; + bool keyDown = wParam == WM_KEYDOWN || wParam == WM_SYSKEYDOWN; + // Check if the callback function is set and call it + if (m_keyboardEventHandler) { + m_keyboardEventHandler(kbStruct->vkCode, keyDown); + } + } + return CallNextHookEx(NULL, nCode, wParam, lParam); +} + +void WindowsIntegration::unhookMouse() +{ + if (m_mouseHook != NULL) { + UnhookWindowsHookEx(m_mouseHook); + m_mouseHook = NULL; + } +} + +void WindowsIntegration::unhookKeyboard() +{ + if (m_keyboardHook != NULL) { + UnhookWindowsHookEx(m_keyboardHook); + m_keyboardHook = NULL; + } +} diff --git a/ScreenPlayWallpaper/src/windowsintegration.h b/ScreenPlayWallpaper/src/windowsintegration.h index d39991fc..dc5285c6 100644 --- a/ScreenPlayWallpaper/src/windowsintegration.h +++ b/ScreenPlayWallpaper/src/windowsintegration.h @@ -87,6 +87,10 @@ struct sEnumInfo { using MouseEventHandler = std::function; static MouseEventHandler m_mouseEventHandler; static HHOOK m_mouseHook; +// Define a callback type for keyboard events +typedef std::function KeyboardEventHandler; +static HHOOK m_keyboardHook; +static KeyboardEventHandler m_keyboardEventHandler; class WindowsIntegration { public: @@ -111,9 +115,14 @@ public: void setWindowHandleWorker(HWND windowHandleWorker); void setupWindowMouseHook(); - static LRESULT __stdcall MouseHookCallback(int nCode, WPARAM wParam, LPARAM lParam); - // Set the mouse event handler function + void unhookMouse(); void setMouseEventHandler(MouseEventHandler handler); + static LRESULT __stdcall MouseHookCallback(int nCode, WPARAM wParam, LPARAM lParam); + + void setupWindowKeyboardHook(); + void unhookKeyboard(); + void setKeyboardEventHandler(KeyboardEventHandler handler); + static LRESULT __stdcall KeyboardHookCallback(int nCode, WPARAM wParam, LPARAM lParam); private: HWND m_windowHandle {}; diff --git a/ScreenPlayWallpaper/src/winwindow.cpp b/ScreenPlayWallpaper/src/winwindow.cpp index 7c3a10f6..e4f66f3b 100644 --- a/ScreenPlayWallpaper/src/winwindow.cpp +++ b/ScreenPlayWallpaper/src/winwindow.cpp @@ -112,6 +112,26 @@ ScreenPlay::WallpaperExitCode WinWindow::start() // Post the event to the target widget QCoreApplication::postEvent(&m_window, qEvent); }); + + // Inside your main application or somewhere appropriate + m_windowsIntegration.setupWindowKeyboardHook(); + // Set up the keyboard event handler + m_windowsIntegration.setKeyboardEventHandler([this](UINT vkCode, bool keyDown) { + QEvent::Type eventType = keyDown ? QEvent::KeyPress : QEvent::KeyRelease; + + // Map the vkCode to Qt key code if necessary + auto [qtKey, text] = mapVirtualKeyToQtKey(vkCode); // Implement this function based on your needs + + // Create the QKeyEvent + QKeyEvent* qEvent = new QKeyEvent(eventType, qtKey, Qt::NoModifier, text); + + // Handle the keyboard event + // For example, logging the key press + qDebug() << "Keyboard event: Key=" << vkCode << ", Type=" << (keyDown ? "KeyDown" : "KeyUp") << qEvent; + + // Post the event to the target widget + QCoreApplication::postEvent(&m_window, qEvent); + }); }); return ScreenPlay::WallpaperExitCode::Ok; } @@ -209,6 +229,155 @@ void WinWindow::configureWindowGeometry() m_window.show(); } +std::tuple WinWindow::mapVirtualKeyToQtKey(UINT vkCode) +{ + switch (vkCode) { + case VK_BACK: + return { Qt::Key_Backspace, QString() }; + case VK_TAB: + return { Qt::Key_Tab, QString("\t") }; + case VK_CLEAR: + return { Qt::Key_Clear, QString() }; + case VK_RETURN: + return { Qt::Key_Return, QString("\r") }; + // ... rest of the cases ... + case VK_SPACE: + return { Qt::Key_Space, QString(" ") }; + // Extra keys + case 0x21: // '!' + return { Qt::Key_Exclam, QString("!") }; + case 0x40: // '@' + return { Qt::Key_At, QString("@") }; + case 0x23: // '#' + return { Qt::Key_NumberSign, QString("#") }; + case 0x24: // '$' + return { Qt::Key_Dollar, QString("$") }; + case 0x25: // '%' + return { Qt::Key_Percent, QString("%") }; + case 0x5E: // '^' + return { Qt::Key_AsciiCircum, QString("^") }; + case 0x26: // '&' + return { Qt::Key_Ampersand, QString("&") }; + case 0x2A: // '*' + return { Qt::Key_Asterisk, QString("*") }; + case 0x28: // '(' + return { Qt::Key_ParenLeft, QString("(") }; + case 0x29: // ')' + return { Qt::Key_ParenRight, QString(")") }; + case 0x5F: // '_' + return { Qt::Key_Underscore, QString("_") }; + case 0x2B: // '+' + return { Qt::Key_Plus, QString("+") }; + case 0x2D: // '-' + return { Qt::Key_Minus, QString("-") }; + case 0x3D: // '=' + return { Qt::Key_Equal, QString("=") }; + case 0x5B: // '[' + return { Qt::Key_BracketLeft, QString("[") }; + case 0x5D: // ']' + return { Qt::Key_BracketRight, QString("]") }; + case 0x7B: // '{' + return { Qt::Key_BraceLeft, QString("{") }; + case 0x7D: // '}' + return { Qt::Key_BraceRight, QString("}") }; + case 0x3B: // ';' + return { Qt::Key_Semicolon, QString(";") }; + case 0x27: // ''' + return { Qt::Key_Apostrophe, QString("'") }; + case 0x3A: // ':' + return { Qt::Key_Colon, QString(":") }; + case 0x22: // '"' + return { Qt::Key_QuoteDbl, QString("\"") }; + case 0x2F: // '/' + return { Qt::Key_Slash, QString("/") }; + case 0x2E: // '.' + return { Qt::Key_Period, QString(".") }; + case 0x3E: // '>' + return { Qt::Key_Greater, QString(">") }; + case 0x2C: // ',' + return { Qt::Key_Comma, QString(",") }; + case 0x3F: // '?' + return { Qt::Key_Question, QString("?") }; + // Numeric keys + case 0x30: + return { Qt::Key_0, QString("0") }; + case 0x31: + return { Qt::Key_1, QString("1") }; + case 0x32: + return { Qt::Key_2, QString("2") }; + case 0x33: + return { Qt::Key_3, QString("3") }; + case 0x34: + return { Qt::Key_4, QString("4") }; + case 0x35: + return { Qt::Key_5, QString("5") }; + case 0x36: + return { Qt::Key_6, QString("6") }; + case 0x37: + return { Qt::Key_7, QString("7") }; + case 0x38: + return { Qt::Key_8, QString("8") }; + case 0x39: + return { Qt::Key_9, QString("9") }; + + // Alphabet keys + case 0x41: + return { Qt::Key_A, QString("a") }; + case 0x42: + return { Qt::Key_B, QString("b") }; + case 0x43: + return { Qt::Key_C, QString("c") }; + case 0x44: + return { Qt::Key_D, QString("d") }; + case 0x45: + return { Qt::Key_E, QString("e") }; + case 0x46: + return { Qt::Key_F, QString("f") }; + case 0x47: + return { Qt::Key_G, QString("g") }; + case 0x48: + return { Qt::Key_H, QString("h") }; + case 0x49: + return { Qt::Key_I, QString("i") }; + case 0x4A: + return { Qt::Key_J, QString("j") }; + case 0x4B: + return { Qt::Key_K, QString("k") }; + case 0x4C: + return { Qt::Key_L, QString("l") }; + case 0x4D: + return { Qt::Key_M, QString("m") }; + case 0x4E: + return { Qt::Key_N, QString("n") }; + case 0x4F: + return { Qt::Key_O, QString("o") }; + case 0x50: + return { Qt::Key_P, QString("p") }; + case 0x51: + return { Qt::Key_Q, QString("q") }; + case 0x52: + return { Qt::Key_R, QString("r") }; + case 0x53: + return { Qt::Key_S, QString("s") }; + case 0x54: + return { Qt::Key_T, QString("t") }; + case 0x55: + return { Qt::Key_U, QString("u") }; + case 0x56: + return { Qt::Key_V, QString("v") }; + case 0x57: + return { Qt::Key_W, QString("w") }; + case 0x58: + return { Qt::Key_X, QString("x") }; + case 0x59: + return { Qt::Key_Y, QString("y") }; + case 0x5A: + return { Qt::Key_Z, QString("z") }; + default: + return { Qt::Key_unknown, QString() }; + } +} + /*! \brief Custom exit method to force a redraw of the window so that the default desktop wallpaper can be seen agian. @@ -216,9 +385,7 @@ void WinWindow::configureWindowGeometry() void WinWindow::terminate() { using ScreenPlay::InstalledType::InstalledType; - if (type() != InstalledType::VideoWallpaper && type() != InstalledType::GifWallpaper) { - // UnhookWindowsHookEx(g_mouseHook); - } + ShowWindow(m_windowsIntegration.windowHandle(), SW_HIDE); // Force refresh so that we display the regular @@ -226,6 +393,9 @@ void WinWindow::terminate() ShowWindow(m_windowsIntegration.windowHandleWorker(), SW_HIDE); ShowWindow(m_windowsIntegration.windowHandleWorker(), SW_SHOW); + m_windowsIntegration.unhookKeyboard(); + m_windowsIntegration.unhookMouse(); + QGuiApplication::quit(); } diff --git a/ScreenPlayWallpaper/src/winwindow.h b/ScreenPlayWallpaper/src/winwindow.h index b9cee345..b9a781c8 100644 --- a/ScreenPlayWallpaper/src/winwindow.h +++ b/ScreenPlayWallpaper/src/winwindow.h @@ -54,6 +54,7 @@ private: void setupWallpaperForAllScreens(); void setupWallpaperForMultipleScreens(const QVector& activeScreensList); void configureWindowGeometry(); + std::tuple mapVirtualKeyToQtKey(UINT vkCode); private slots: void checkForFullScreenWindow(); From 6e4d34c7b08ecc6e511ce9d3ee7019f4e18bdf13 Mon Sep 17 00:00:00 2001 From: Elias Steurer Date: Fri, 3 Nov 2023 17:21:36 +0100 Subject: [PATCH 037/101] Fix godot wallpaper setuip --- .../src/ScreenPlayGodotWallpaper.cpp | 81 ++++++++++++++----- .../src/ScreenPlayGodotWallpaper.h | 10 ++- .../src/windowsintegration.cpp | 41 +++------- ScreenPlayWallpaper/src/windowsintegration.h | 18 +++-- ScreenPlayWallpaper/src/winwindow.cpp | 4 +- Tools/setup.py | 5 +- 6 files changed, 98 insertions(+), 61 deletions(-) diff --git a/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayGodotWallpaper.cpp b/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayGodotWallpaper.cpp index 1e4bbfd3..8d124242 100644 --- a/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayGodotWallpaper.cpp +++ b/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayGodotWallpaper.cpp @@ -56,13 +56,17 @@ void ScreenPlayGodotWallpaper::hideFromTaskbar(HWND hwnd) bool ScreenPlayGodotWallpaper::configureWindowGeometry() { - if (!m_windowsIntegration->searchWorkerWindowToParentTo()) { + if (!m_windowsIntegration.searchWorkerWindowToParentTo()) { UtilityFunctions::print("No worker window found"); return false; } + if (!IsWindow(m_windowsIntegration.windowHandleWorker())) { + UtilityFunctions::print("Could not get a valid window handle worker!"); + return false; + } // WARNING: Setting Window flags must be called *here*! - SetWindowLongPtr(m_windowsIntegration->windowHandle(), GWL_EXSTYLE, WS_EX_LEFT | WS_EX_LTRREADING | WS_EX_RIGHTSCROLLBAR | WS_EX_NOACTIVATE | WS_EX_TOOLWINDOW | WS_EX_TRANSPARENT); - SetWindowLongPtr(m_windowsIntegration->windowHandle(), GWL_STYLE, WS_POPUPWINDOW); + SetWindowLongPtr(m_windowsIntegration.windowHandle(), GWL_EXSTYLE, WS_EX_LEFT | WS_EX_LTRREADING | WS_EX_RIGHTSCROLLBAR | WS_EX_NOACTIVATE | WS_EX_TOOLWINDOW | WS_EX_TRANSPARENT); + SetWindowLongPtr(m_windowsIntegration.windowHandle(), GWL_STYLE, WS_POPUPWINDOW); return true; } @@ -70,28 +74,65 @@ bool ScreenPlayGodotWallpaper::configureWindowGeometry() bool ScreenPlayGodotWallpaper::init(int activeScreen) { auto* displayServer = DisplayServer::get_singleton(); - int64_t handle_int = displayServer->window_get_native_handle(godot::DisplayServer::HandleType::WINDOW_HANDLE, activeScreen); - HWND hwnd = reinterpret_cast(static_cast(handle_int)); - m_windowsIntegration = std::make_unique(); - m_windowsIntegration->setWindowHandle(hwnd); - hideFromTaskbar(hwnd); + { + int64_t handle_int = displayServer->window_get_native_handle(godot::DisplayServer::HandleType::WINDOW_HANDLE, activeScreen); + HWND hwnd = reinterpret_cast(static_cast(handle_int)); + m_windowsIntegration.setWindowHandle(hwnd); + } + hideFromTaskbar(m_windowsIntegration.windowHandle()); + if (!configureWindowGeometry()) { return false; } - ShowWindow(m_windowsIntegration->windowHandle(), SW_HIDE); + ShowWindow(m_windowsIntegration.windowHandle(), SW_HIDE); - WindowsIntegration windowsIntegration; auto updateWindowSize = [&displayServer](const int width, const int height) { displayServer->window_set_size(godot::Vector2((real_t)width, (real_t)height)); }; - const std::optional monitor = windowsIntegration.setupWallpaperForOneScreen(activeScreen, updateWindowSize); - if (!monitor.has_value()) + WindowsIntegration::MonitorResult monitor = m_windowsIntegration.setupWallpaperForOneScreen(activeScreen, updateWindowSize); + if (monitor.status != WindowsIntegration::MonitorResultStatus::Ok) { + UtilityFunctions::print("setupWallpaperForOneScreen failed status: ", (int)monitor.status); return false; + } + displayServer->window_set_size(godot::Vector2((real_t)monitor.monitor->size.cx, (real_t)monitor.monitor->size.cy)); const std::string windowTitle = "ScreenPlayWallpaperGodot"; - SetWindowText(hwnd, windowTitle.c_str()); - ShowWindow(m_windowsIntegration->windowHandle(), SW_SHOW); + SetWindowText(m_windowsIntegration.windowHandle(), windowTitle.c_str()); + ShowWindow(m_windowsIntegration.windowHandle(), SW_SHOW); + + m_windowsIntegration.setupWindowMouseHook(); + // Set up the mouse event handler + m_windowsIntegration.setMouseEventHandler([this](DWORD mouseButton, UINT type, POINT p) { + Ref mouse_event; + Ref motion_event; + switch (type) { + case WM_LBUTTONDOWN: + case WM_LBUTTONUP: + case WM_RBUTTONDOWN: + case WM_RBUTTONUP: + mouse_event.instantiate(); + mouse_event->set_position(Vector2(p.x, p.y)); + mouse_event->set_global_position(Vector2(p.x, p.y)); // Assuming global == local for this context + mouse_event->set_button_index( + type == WM_LBUTTONDOWN || type == WM_LBUTTONUP ? MOUSE_BUTTON_LEFT : MOUSE_BUTTON_RIGHT); + mouse_event->set_pressed(type == WM_LBUTTONDOWN || type == WM_RBUTTONDOWN); + break; + case WM_MOUSEMOVE: + motion_event.instantiate(); + motion_event->set_position(Vector2(p.x, p.y)); + motion_event->set_global_position(Vector2(p.x, p.y)); + break; + // Add more cases as needed + } + + if (mouse_event.is_valid()) { + get_tree()->get_root()->get_viewport()->push_input(mouse_event); + } + if (motion_event.is_valid()) { + get_tree()->get_root()->get_viewport()->push_input(motion_event); + } + }); return true; } @@ -197,15 +238,13 @@ bool ScreenPlayGodotWallpaper::exit() { // Somehow this gets called at editor startup // so just return if not initialized - if (m_windowsIntegration) { - ShowWindow(m_windowsIntegration->windowHandle(), SW_HIDE); + ShowWindow(m_windowsIntegration.windowHandle(), SW_HIDE); - // Force refresh so that we display the regular - // desktop wallpaper again - ShowWindow(m_windowsIntegration->windowHandleWorker(), SW_SHOW); - ShowWindow(m_windowsIntegration->windowHandleWorker(), SW_HIDE); - } + // Force refresh so that we display the regular + // desktop wallpaper again + ShowWindow(m_windowsIntegration.windowHandleWorker(), SW_SHOW); + ShowWindow(m_windowsIntegration.windowHandleWorker(), SW_HIDE); return true; } bool ScreenPlayGodotWallpaper::get_checkWallpaperVisible() const diff --git a/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayGodotWallpaper.h b/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayGodotWallpaper.h index 08731d0c..ea1d12ff 100644 --- a/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayGodotWallpaper.h +++ b/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayGodotWallpaper.h @@ -6,11 +6,19 @@ #endif #include "godot_cpp/classes/control.hpp" +#include "godot_cpp/classes/engine.hpp" #include "godot_cpp/classes/global_constants.hpp" +#include "godot_cpp/classes/input_event_key.hpp" +#include "godot_cpp/classes/input_event_mouse_button.hpp" +#include "godot_cpp/classes/input_event_mouse_motion.hpp" +#include "godot_cpp/classes/node.hpp" +#include "godot_cpp/classes/scene_tree.hpp" #include "godot_cpp/classes/timer.hpp" #include "godot_cpp/classes/viewport.hpp" +#include "godot_cpp/classes/window.hpp" #include "godot_cpp/core/binder_common.hpp" #include "godot_cpp/variant/string.hpp" +#include "godot_cpp/variant/vector2.hpp" #include #include @@ -62,7 +70,7 @@ private: godot::String m_appID = ""; godot::String m_projectPath = ""; - std::unique_ptr m_windowsIntegration; + WindowsIntegration m_windowsIntegration; double m_timesinceLastRead = 0.0; bool m_pipeConnected = false; bool m_screenPlayConnected = false; diff --git a/ScreenPlayWallpaper/src/windowsintegration.cpp b/ScreenPlayWallpaper/src/windowsintegration.cpp index de23690b..5841bd6e 100644 --- a/ScreenPlayWallpaper/src/windowsintegration.cpp +++ b/ScreenPlayWallpaper/src/windowsintegration.cpp @@ -43,26 +43,6 @@ float WindowsIntegration::getScaling(const int monitorIndex) const return 1.0f; } -/*! - \brief Returns true of at least one monitor has active scaling enabled. -*/ -bool WindowsIntegration::hasWindowScaling() const -{ - auto enumMonitorCallback = [](HMONITOR hMonitor, HDC hdcMonitor, LPRECT lprcMonitor, LPARAM dwData) -> BOOL { - int scaling = GetDeviceCaps(hdcMonitor, LOGPIXELSX) / 96; - if (scaling != 1) { - *(bool*)dwData = true; - return false; // Stop enumeration - } - return true; // Continue enumeration - }; - - bool hasScaling = false; - EnumDisplayMonitors(NULL, NULL, enumMonitorCallback, (LPARAM)&hasScaling); - - return hasScaling; -} - bool WindowsIntegration::searchWorkerWindowToParentTo() { HWND progman_hwnd = FindWindowW(L"Progman", L"Program Manager"); @@ -158,8 +138,18 @@ bool WindowsIntegration::checkForFullScreenWindow(HWND windowHandle) * scale factors. */ -std::optional WindowsIntegration::setupWallpaperForOneScreen(const int activeScreen, std::function updateWindowSize) +WindowsIntegration::MonitorResult WindowsIntegration::setupWallpaperForOneScreen(const int activeScreen, std::function updateWindowSize) { + if (!IsWindow(m_windowHandle)) { + std::cout << "Could not get a valid window handle !"; + return { std::nullopt, MonitorResultStatus::WindowHandleInvalidError }; + } + + if (!IsWindow(m_windowHandleWorker)) { + std::cout << "Could not get a valid window handle wroker!"; + return { std::nullopt, MonitorResultStatus::WorkerWindowHandleInvalidError }; + } + std::vector monitors = GetAllMonitors(); for (const auto& monitor : monitors) { monitor.print(); @@ -197,9 +187,9 @@ std::optional WindowsIntegration::setupWallpaperForOneScreen(const int std::cout << "Calculated New Size: (" << newWidth << "x" << newHeight << ")" << std::endl; SetWindowPos(m_windowHandle, NULL, newX, newY, newWidth, newHeight, SWP_NOZORDER | SWP_NOACTIVATE); - return { monitor }; + return { monitor, MonitorResultStatus::Ok }; } - return std::nullopt; + return { std::nullopt, MonitorResultStatus::MonitorIterationError }; } /** * Spans the window across multiple monitors. @@ -341,11 +331,6 @@ void WindowsIntegration::setWindowHandle(HWND windowHandle) m_windowHandle = windowHandle; } -void WindowsIntegration::setWindowHandleWorker(HWND windowHandleWorker) -{ - m_windowHandleWorker = windowHandleWorker; -} - BOOL GetMonitorByHandle(HMONITOR hMonitor, HDC hdcMonitor, LPRECT lprcMonitor, LPARAM dwData) { diff --git a/ScreenPlayWallpaper/src/windowsintegration.h b/ScreenPlayWallpaper/src/windowsintegration.h index dc5285c6..755c527f 100644 --- a/ScreenPlayWallpaper/src/windowsintegration.h +++ b/ScreenPlayWallpaper/src/windowsintegration.h @@ -83,11 +83,10 @@ struct sEnumInfo { HMONITOR hMonitor; }; -// Define the type for the mouse event handler function using MouseEventHandler = std::function; static MouseEventHandler m_mouseEventHandler; static HHOOK m_mouseHook; -// Define a callback type for keyboard events + typedef std::function KeyboardEventHandler; static HHOOK m_keyboardHook; static KeyboardEventHandler m_keyboardEventHandler; @@ -99,21 +98,28 @@ public: int height = 0; bool success = false; }; + enum class MonitorResultStatus { + Ok, + WindowHandleInvalidError, + WorkerWindowHandleInvalidError, + MonitorIterationError, + }; + struct MonitorResult { + std::optional monitor; + MonitorResultStatus status = MonitorResultStatus::Ok; + }; bool searchWorkerWindowToParentTo(); float getScaling(const int monitorIndex) const; - bool hasWindowScaling() const; std::vector GetAllMonitors(); int GetMonitorIndex(HMONITOR hMonitor); bool checkForFullScreenWindow(HWND windowHandle); - std::optional setupWallpaperForOneScreen(const int activeScreen, std::function updateWindowSize); + WindowsIntegration::MonitorResult setupWallpaperForOneScreen(const int activeScreen, std::function updateWindowSize); SpanResult setupWallpaperForMultipleScreens(const std::vector& activeScreens); SpanResult setupWallpaperForAllScreens(); HWND windowHandle() const; HWND windowHandleWorker() const; void setWindowHandle(HWND windowHandle); - void setWindowHandleWorker(HWND windowHandleWorker); - void setupWindowMouseHook(); void unhookMouse(); void setMouseEventHandler(MouseEventHandler handler); diff --git a/ScreenPlayWallpaper/src/winwindow.cpp b/ScreenPlayWallpaper/src/winwindow.cpp index e4f66f3b..3b488993 100644 --- a/ScreenPlayWallpaper/src/winwindow.cpp +++ b/ScreenPlayWallpaper/src/winwindow.cpp @@ -3,8 +3,6 @@ #include "windowsintegration.h" #include #include -#include -#include #include #include #include @@ -171,7 +169,7 @@ void WinWindow::setupWallpaperForOneScreen(int activeScreen) m_window.setWidth(width); m_window.setHeight(height); }; - std::optional monitor = m_windowsIntegration.setupWallpaperForOneScreen(activeScreen, updateWindowSize); + WindowsIntegration::MonitorResult monitor = m_windowsIntegration.setupWallpaperForOneScreen(activeScreen, updateWindowSize); } /*! diff --git a/Tools/setup.py b/Tools/setup.py index b75811fc..e935be75 100755 --- a/Tools/setup.py +++ b/Tools/setup.py @@ -115,8 +115,9 @@ def main(): vcpkg_path = project_source_parent_path.joinpath("vcpkg").resolve() vcpkg_packages_list = defines.VCPKG_BASE_PACKAGES - if not setup_godot.execute(): - raise RuntimeError("Unable to download godot") + if system() == "Windows": + if not setup_godot.execute(): + raise RuntimeError("Unable to download godot") if not download_ffmpeg.execute(): raise RuntimeError("Unable to download ffmpeg") From 0855928cef37e85992babbb401b8febc8afead33 Mon Sep 17 00:00:00 2001 From: Elias Steurer Date: Thu, 9 Nov 2023 10:30:01 +0100 Subject: [PATCH 038/101] Change Godot build and setup to be opt-in for now --- Tools/build.py | 16 ++++++++++++---- Tools/defines.py | 2 +- Tools/setup.py | 6 ++++-- Tools/setup_godot.py | 4 ++-- 4 files changed, 19 insertions(+), 9 deletions(-) diff --git a/Tools/build.py b/Tools/build.py index 026f1e0c..ee3dbac8 100755 --- a/Tools/build.py +++ b/Tools/build.py @@ -46,16 +46,17 @@ def execute( # temporary files in the build directory. clean_build_dir(build_config.build_folder) + # Build Godot Wallpaper + # Note: This must happen before building ScreenPlay! + if platform.system() == "Windows" and build_config.build_godot == "ON": + build_godot.build_godot(str(build_config.bin_dir), build_config.build_type) + # Runs cmake configure and cmake build step_time = time.time() build_result = build(build_config, build_result) build_duration = time.time() - step_time print(f"⏱️ build_duration: {build_duration}s") - # Build Godot Wallpaper - if platform.system() == "Windows": - build_godot.build_godot(str(build_config.bin_dir), build_config.build_type) - # Copies all needed libraries and assets into the bin folder step_time = time.time() package(build_config) @@ -180,6 +181,7 @@ def build(build_config: BuildConfig, build_result: BuildResult) -> BuildResult: -DSCREENPLAY_STEAM={build_config.build_steam} \ -DSCREENPLAY_TESTS={build_config.build_tests} \ -DSCREENPLAY_DEPLOY={build_config.build_deploy} \ + -DSCREENPLAY_GODOT={build_config.build_godot} \ -DSCREENPLAY_INSTALLER={build_config.create_installer} \ -DSCREENPLAY_IFW_ROOT:STRING={build_config.ifw_root_path} \ -G "Ninja" \ @@ -360,6 +362,7 @@ if __name__ == "__main__": help="Create a deploy version of ScreenPlay for sharing with the world. A not deploy version is for local development only!") parser.add_argument('--architecture', action="store", dest="build_architecture", default="", help="Sets the build architecture. Used to build x86 and ARM osx versions. Currently only works with x86_64 and arm64") + parser.add_argument('--build-godot', action="store", dest="build_godot", default="", help="Builds the Godot Wallpaper") args = parser.parse_args() qt_version = defines.QT_VERSION @@ -403,6 +406,10 @@ if __name__ == "__main__": if args.build_deploy: build_deploy = "ON" + build_godot = "OFF" + if args.build_godot: + build_godot = "ON" + create_installer = "OFF" if args.create_installer: create_installer = "ON" @@ -419,6 +426,7 @@ if __name__ == "__main__": build_config.build_steam = build_steam build_config.build_tests = build_tests build_config.build_deploy = build_deploy + build_config.build_godot = build_godot build_config.create_installer = create_installer build_config.build_type = build_type build_config.screenplay_version = screenplay_version diff --git a/Tools/defines.py b/Tools/defines.py index dd47f09c..362a0fe7 100644 --- a/Tools/defines.py +++ b/Tools/defines.py @@ -37,7 +37,7 @@ VCPKG_BASE_PACKAGES = [ PYTHON_EXECUTABLE = "python" if sys.platform == "win32" else "python3" FFMPEG_VERSION = "6.0" GODOT_VERSION = "4.2" -GODOT_RELEASE_TYPE = "beta4" +GODOT_RELEASE_TYPE = "beta5" GODOT_DOWNLOAD_SERVER = "https://downloads.tuxfamily.org/godotengine" if sys.platform == "win32": SCREENPLAYWALLPAPER_GODOT_EXECUTABLE = "ScreenPlayWallpaperGodot.exe" diff --git a/Tools/setup.py b/Tools/setup.py index e935be75..89fdaa1d 100755 --- a/Tools/setup.py +++ b/Tools/setup.py @@ -106,8 +106,10 @@ def setup_qt(): def main(): parser = argparse.ArgumentParser( description='Build and Package ScreenPlay') - parser.add_argument('-skip-aqt', action="store_true", dest="skip_aqt", + parser.add_argument('--skip-aqt', action="store_true", dest="skip_aqt", help="Downloads QtCreator and needed binaries \Windows: C:\aqt\nLinux & macOS:~/aqt/.") + parser.add_argument('--setup-godot', action="store_true", dest="setup_godot", + help="Downloads Godot Editor.") args = parser.parse_args() root_path = Path(util.cd_repo_root_path()) @@ -115,7 +117,7 @@ def main(): vcpkg_path = project_source_parent_path.joinpath("vcpkg").resolve() vcpkg_packages_list = defines.VCPKG_BASE_PACKAGES - if system() == "Windows": + if system() == "Windows" and args.setup_godot: if not setup_godot.execute(): raise RuntimeError("Unable to download godot") diff --git a/Tools/setup_godot.py b/Tools/setup_godot.py index 24150ee9..d8c39d7b 100644 --- a/Tools/setup_godot.py +++ b/Tools/setup_godot.py @@ -102,8 +102,8 @@ def execute() -> bool: # Check if Godot executable already exists for file in godot_path.iterdir(): - if defines.GODOT_VERSION in str(file): - print(f"Godot v{defines.GODOT_VERSION} already exists.") + if defines.GODOT_EDITOR_EXECUTABLE in str(file): + print(f"Godot v{defines.GODOT_EDITOR_EXECUTABLE} already exists.") return True return setup_godot() From 55996b2914cbf60934a21ae2125faa553935827a Mon Sep 17 00:00:00 2001 From: Elias Steurer Date: Thu, 9 Nov 2023 10:32:28 +0100 Subject: [PATCH 039/101] Change cpp defines to CMakeVariables.h.in vars --- CMake/CMakeVariables.h.in | 10 +++- CMake/GenerateCMakeVariableHeader.cmake | 16 +++++- CMakeLists.txt | 72 +++++++++---------------- CMakePresets.json | 11 ++++ ScreenPlay/CMakeLists.txt | 15 +++--- ScreenPlay/main.cpp | 20 +++---- ScreenPlay/src/installedlistmodel.cpp | 11 ++-- ScreenPlay/src/settings.cpp | 37 +++++++------ ScreenPlay/tests/tst_main.cpp | 4 +- ScreenPlayWallpaper/CMakeLists.txt | 2 +- ScreenPlayWidget/CMakeLists.txt | 2 +- ScreenPlayWorkshop/CMakeLists.txt | 2 +- 12 files changed, 109 insertions(+), 93 deletions(-) diff --git a/CMake/CMakeVariables.h.in b/CMake/CMakeVariables.h.in index e54ca0f3..662516a7 100644 --- a/CMake/CMakeVariables.h.in +++ b/CMake/CMakeVariables.h.in @@ -1,5 +1,11 @@ #pragma once -#define SCREENPLAY_SOURCE_DIR "@SOURCE_DIR@" -#define SCREENPLAY_GODOT_VERSION "@GODOT_VERSION@" +#define SCREENPLAY_SOURCE_DIR "@SCREENPLAY_SOURCE_DIR@" +#define SCREENPLAY_GODOT_VERSION "@SCREENPLAY_GODOT_VERSION@" #define SCREENPLAY_GODOT_RELEASE_TYPE "@SCREENPLAY_GODOT_RELEASE_TYPE@" +#define SCREENPLAY_BUILD_TYPE "@SCREENPLAY_BUILD_TYPE@" +#define SCREENPLAY_GIT_BRANCH_NAME "@SCREENPLAY_GIT_BRANCH_NAME@" +#define SCREENPLAY_GIT_COMMIT_HASH "@SCREENPLAY_GIT_COMMIT_HASH@" +#define SCREENPLAY_DEPLOY_VERSION @SCREENPLAY_DEPLOY_VERSION@ +#define SCREENPLAY_BUILD_DATE "@SCREENPLAY_BUILD_DATE@" +#define SCREENPLAY_STEAM_VERSION @SCREENPLAY_STEAM_VERSION@ diff --git a/CMake/GenerateCMakeVariableHeader.cmake b/CMake/GenerateCMakeVariableHeader.cmake index 41e6e489..7325133a 100644 --- a/CMake/GenerateCMakeVariableHeader.cmake +++ b/CMake/GenerateCMakeVariableHeader.cmake @@ -7,9 +7,23 @@ # function(generate_cmake_variable_header TARGET) # NOTE: Also add to CMakeVariables.h.in ! - set(SOURCE_DIR ${CMAKE_SOURCE_DIR}) + set(SCREENPLAY_SOURCE_DIR ${CMAKE_SOURCE_DIR}) set(SCREENPLAY_GODOT_VERSION ${GODOT_VERSION}) set(SCREENPLAY_GODOT_RELEASE_TYPE ${GODOT_RELEASE_TYPE}) + set(SCREENPLAY_BUILD_TYPE "${CMAKE_BUILD_TYPE}") + set(SCREENPLAY_BUILD_DATE "${BUILD_DATE}") + set(SCREENPLAY_GIT_BRANCH_NAME "${GIT_BRANCH_NAME}") + set(SCREENPLAY_GIT_COMMIT_HASH "${GIT_COMMIT_HASH}") + + set(SCREENPLAY_DEPLOY_VERSION 0) + if(${SCREENPLAY_DEPLOY}) + set(SCREENPLAY_DEPLOY_VERSION 1) + endif() + + set(SCREENPLAY_STEAM_VERSION 0) + if(${SCREENPLAY_STEAM}) + set(SCREENPLAY_STEAM_VERSION 1) + endif() # Specify the configuration file from which the header file will be generated configure_file(${CMAKE_SOURCE_DIR}/CMake/CMakeVariables.h.in ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}/CMakeVariables.h @ONLY) diff --git a/CMakeLists.txt b/CMakeLists.txt index e41656ff..e2dcf0e0 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -20,33 +20,12 @@ elseif(APPLE) set(VCPKG_ARCH "64-osx-universal") # Our own triplet for universal binaries set(VCPKG_TARGET_ARCHITECTURE "arm64;x86_64") endif() - -# Godot Editor -set(GODOT_VERSION "v4.2") -set(GODOT_RELEASE_TYPE "beta4") - -if(WIN32) - set(GODOT_EDITOR_NAME "Godot_${GODOT_VERSION}-${GODOT_RELEASE_TYPE}_win64.exe") -elseif(APPLE) - set(GODOT_EDITOR_NAME "Godot.app") -elseif(UNIX) - set(GODOT_EDITOR_NAME "Godot_${GODOT_VERSION}-${GODOT_RELEASE_TYPE}_linux.x86_64") -else() - message(FATAL_ERROR "Unsupported OS") -endif() - # This sets cmake to compile all dlls into the main directory set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib) set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) set(CMAKE_CXX_STANDARD 20) set(THIRD_PARTY_PATH "${CMAKE_CURRENT_SOURCE_DIR}/ThirdParty") set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/CMake" ${CMAKE_MODULE_PATH}) -list(APPEND CMAKE_MODULE_PATH "${THIRD_PARTY_PATH}/ecm/modules") -list(APPEND CMAKE_MODULE_PATH "${THIRD_PARTY_PATH}/ecm/find-modules") -list(APPEND CMAKE_MODULE_PATH "${THIRD_PARTY_PATH}/ecm/kde-modules") -message(STATUS "[PROJECT] CMAKE_MODULE_PATH = ${CMAKE_MODULE_PATH}") - -option(OSX_BUNDLE "Enable distribution macOS bundle" OFF) set(CMAKE_OSX_DEPLOYMENT_TARGET "13.0") # This is needed for OSX: Because we bundle ScreenPlay and ScreenPlayWallpaper into .app they both need other QML dependencies like @@ -72,12 +51,27 @@ set(VCPKG_PATH "${CMAKE_CURRENT_SOURCE_DIR}/../vcpkg") set(VCPKG_INSTALLED_PATH "${VCPKG_PATH}/installed/${VCPKG_ARCH}") set(VCPKG_BIN_PATH "${VCPKG_INSTALLED_PATH}/bin") +# Godot Editor +set(GODOT_VERSION "v4.2") +set(GODOT_RELEASE_TYPE "beta4") + +if(WIN32) + set(GODOT_EDITOR_NAME "Godot_${GODOT_VERSION}-${GODOT_RELEASE_TYPE}_win64.exe") +elseif(APPLE) + set(GODOT_EDITOR_NAME "Godot.app") +elseif(UNIX) + set(GODOT_EDITOR_NAME "Godot_${GODOT_VERSION}-${GODOT_RELEASE_TYPE}_linux.x86_64") +else() + message(FATAL_ERROR "Unsupported OS") +endif() + +option(SCREENPLAY_OSX_BUNDLE "Enable distribution macOS bundle" OFF) option(SCREENPLAY_STEAM "For FOSS distribution so we do not bundle proprietary code." ON) option(SCREENPLAY_DEPLOY "Marks this version as an official deploy version. This version uses different import paths and other settings." - OFF) + OFF) option(SCREENPLAY_TESTS "Enables UI tests." ON) option(SCREENPLAY_INSTALLER "Indicates whether an installer via the Qt Installer Framework is created." OFF) -option(SCREENPLAY_GODOT_SUPPORT "Compiles ScreenPlayGodotWallpaper." OFF) +option(SCREENPLAY_GODOT "Compiles ScreenPlayGodotWallpaper." ON) # Gitlab CI has many ENV variables. We use this one to check if the current build happens inside the CI if(DEFINED ENV{CI_COMMIT_MESSAGE}) @@ -86,13 +80,6 @@ endif() file(MAKE_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}) -add_compile_definitions(COMPILE_INFO="Build Date: ${BUILD_DATE}. Git Hash: ${GIT_COMMIT_HASH}. ") -add_compile_definitions(SOURCE_DIR="${CMAKE_CURRENT_SOURCE_DIR}") - -if(${SCREENPLAY_DEPLOY}) - add_compile_definitions(DEPLOY_VERSION) -endif() - find_package(Git REQUIRED) if(WIN32) @@ -127,25 +114,21 @@ execute_process( OUTPUT_VARIABLE GIT_COMMIT_HASH OUTPUT_STRIP_TRAILING_WHITESPACE) -add_compile_definitions(BUILD_TYPE="${CMAKE_BUILD_TYPE}") -add_compile_definitions(BUILD_DATE="${BUILD_DATE}") -add_compile_definitions(GIT_BRANCH_NAME="${GIT_BRANCH_NAME}") -add_compile_definitions(GIT_COMMIT_HASH="${GIT_COMMIT_HASH}") - -add_subdirectory(ThirdParty) -set(ECM_DIR "${THIRD_PARTY_PATH}/ecm") -add_subdirectory(CMake) +if(${SCREENPLAY_TESTS}) + enable_testing() +endif() if(UNIX AND NOT APPLE) # Needs to be append, because we include ecm as third party on linux + set(ECM_DIR "${THIRD_PARTY_PATH}/ecm") list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/CMake") list(APPEND CMAKE_MODULE_PATH "${ECM_DIR}") list(APPEND CMAKE_MODULE_PATH "${ECM_DIR}/cmake") -else() endif() +add_subdirectory(ThirdParty) +add_subdirectory(CMake) add_subdirectory(Tools) - add_subdirectory(ScreenPlay) add_subdirectory(ScreenPlaySDK) add_subdirectory(ScreenPlayShader) @@ -154,14 +137,10 @@ add_subdirectory(ScreenPlayWidget) add_subdirectory(ScreenPlayUtil) add_subdirectory(ScreenPlayWeather) -if(${SCREENPLAY_GODOT_SUPPORT}) +if(${SCREENPLAY_GODOT}) add_subdirectory(ScreenPlayWallpaper/Godot) endif() -if(${SCREENPLAY_TESTS}) - enable_testing() -endif() - # Only add target SteamSDKQtEnums add_subdirectory(ScreenPlayWorkshop/SteamSDK) @@ -181,6 +160,7 @@ if(${SCREENPLAY_INSTALLER}) endif() endif() +message(STATUS "[PROJECT] CMAKE_MODULE_PATH = ${CMAKE_MODULE_PATH}") message(STATUS "[PROJECT] PROJECT_VERSION = ${PROJECT_VERSION}") message(STATUS "[PROJECT] CMAKE_VERSION = ${CMAKE_VERSION}") message(STATUS "[PROJECT] SCREENPLAY_QML_MODULES_PATH = ${SCREENPLAY_QML_MODULES_PATH}") @@ -195,7 +175,7 @@ message(STATUS "[OPTION] SCREENPLAY_DEPLOY = ${SCREENPLAY_DEPLOY}") message(STATUS "[OPTION] SCREENPLAY_INSTALLER = ${SCREENPLAY_INSTALLER}") message(STATUS "[OPTION] SCREENPLAY_STEAM = ${SCREENPLAY_STEAM}") message(STATUS "[OPTION] SCREENPLAY_TESTS = ${SCREENPLAY_TESTS}") -message(STATUS "[OPTION] SCREENPLAY_GODOT_SUPPORT = ${SCREENPLAY_GODOT_SUPPORT}") +message(STATUS "[OPTION] SCREENPLAY_GODOT = ${SCREENPLAY_GODOT}") message(STATUS "[DEFINE] BUILD_TYPE = ${CMAKE_BUILD_TYPE}") message(STATUS "[DEFINE] GIT_COMMIT_HASH = ${GIT_COMMIT_HASH}") message(STATUS "[CPP DEFINE] DEPLOY_VERSION = ${DEPLOY_VERSION}") diff --git a/CMakePresets.json b/CMakePresets.json index 19131165..492f4ec0 100644 --- a/CMakePresets.json +++ b/CMakePresets.json @@ -73,6 +73,17 @@ "CMAKE_BUILD_TYPE": "Release" } }, + { + "name": "windows-release-qt-6.6.0-release-deploy", + "inherits": "windows-release-qt-6.6.0", + "displayName": "MSVC SP Qt 6.6.0 Release Steam Deploy", + "binaryDir": "${sourceDir}/../build_ScreenPlay_Qt_6.6.0_MSVC_Release_Steam_Deploy", + "cacheVariables": { + "CMAKE_BUILD_TYPE": "Release", + "SCREENPLAY_DEPLOY": "ON", + "SCREENPLAY_STEAM": "ON" + } + }, { "name": "linux-generic-debug", "displayName": "ScreenPlay 64bit Debug Linux", diff --git a/ScreenPlay/CMakeLists.txt b/ScreenPlay/CMakeLists.txt index 8ccbda37..dcb89f90 100644 --- a/ScreenPlay/CMakeLists.txt +++ b/ScreenPlay/CMakeLists.txt @@ -5,6 +5,9 @@ set(CMAKE_CXX_STANDARD 20) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOMOC ON) +# ##### USE CMAKE VARIABLES IN CODE ##### +include(GenerateCMakeVariableHeader) + set(SOURCES # cmake-format: sort src/app.cpp @@ -319,13 +322,14 @@ target_link_libraries(${PROJECT_NAME} PRIVATE ScreenPlayApp ScreenPlayAppplugin) if(${SCREENPLAY_TESTS}) add_executable(tst_ScreenPlay tests/tst_main.cpp) target_link_libraries(tst_ScreenPlay PRIVATE ScreenPlayApp ScreenPlayAppplugin Qt6::Test) + generate_cmake_variable_header(tst_ScreenPlay) if(${SCREENPLAY_STEAM}) target_compile_definitions(tst_ScreenPlay PRIVATE SCREENPLAY_STEAM) target_link_libraries(tst_ScreenPlay PUBLIC ScreenPlayWorkshopplugin ScreenPlayWorkshop) endif() endif() -if(APPLE AND NOT OSX_BUNDLE) +if(APPLE AND NOT SCREENPLAY_OSX_BUNDLE) set_source_files_properties( ${TS_FILES} PROPERTIES OUTPUT_LOCATION "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${PROJECT_NAME}.app/Contents/Resources/translations") else() @@ -376,7 +380,7 @@ if(WIN32) endif() -if(APPLE AND OSX_BUNDLE) +if(APPLE AND SCREENPLAY_OSX_BUNDLE) # Set the installation destination install(TARGETS "ScreenPlay" DESTINATION /Applications) @@ -399,7 +403,7 @@ if(APPLE AND OSX_BUNDLE) endif() -if(APPLE AND NOT OSX_BUNDLE) +if(APPLE AND NOT SCREENPLAY_OSX_BUNDLE) # Creates a ScreenPlay.app set_target_properties( ${PROJECT_NAME} @@ -447,7 +451,6 @@ if(APPLE AND NOT OSX_BUNDLE) endif() -# ##### USE CMAKE VARIABLES IN CODE ##### -include(GenerateCMakeVariableHeader) -# Note: Must not be ${PROJECT_NAME}, but ScreenPlayApp to work! +# Note: We need the variables in the lib and exe! +generate_cmake_variable_header(${PROJECT_NAME}) generate_cmake_variable_header(ScreenPlayApp) diff --git a/ScreenPlay/main.cpp b/ScreenPlay/main.cpp index 7194dac4..335847f9 100644 --- a/ScreenPlay/main.cpp +++ b/ScreenPlay/main.cpp @@ -1,5 +1,6 @@ // SPDX-License-Identifier: LicenseRef-EliasSteurerTachiom OR AGPL-3.0-only +#include "ScreenPlay/CMakeVariables.h" #include "ScreenPlay/app.h" #include "ScreenPlayUtil/logginghandler.h" #include @@ -27,19 +28,18 @@ int main(int argc, char* argv[]) #endif QGuiApplication qtGuiApp(argc, argv); - std::unique_ptr logging; ScreenPlay::App app; if (app.m_isAnotherScreenPlayInstanceRunning) { return 0; - } else { - logging = std::make_unique("ScreenPlay"); - app.init(); - const int status = qtGuiApp.exec(); -#if defined(Q_OS_WIN) - sentry_shutdown(); -#endif - logging.reset(); - return status; } + + auto logging = std::make_unique("ScreenPlay"); + app.init(); + const int status = qtGuiApp.exec(); +#if defined(Q_OS_WIN) + sentry_shutdown(); +#endif + logging.reset(); + return status; } diff --git a/ScreenPlay/src/installedlistmodel.cpp b/ScreenPlay/src/installedlistmodel.cpp index 0be5bc54..faf4a2e9 100644 --- a/ScreenPlay/src/installedlistmodel.cpp +++ b/ScreenPlay/src/installedlistmodel.cpp @@ -235,11 +235,12 @@ void InstalledListModel::loadInstalledContent() counter += 1; } }; -#ifdef DEPLOY_VERSION - const QString defaultContentPath = QGuiApplication::instance()->applicationDirPath() + "/Content"; -#else - const QString defaultContentPath = QString(SCREENPLAY_SOURCE_DIR) + "/Content"; -#endif + QString defaultContentPath; + if (SCREENPLAY_DEPLOY_VERSION) { + defaultContentPath = QGuiApplication::instance()->applicationDirPath() + "/Content"; + } else { + defaultContentPath = QString(SCREENPLAY_SOURCE_DIR) + "/Content"; + } if (m_settings->showDefaultContent()) { loadFiles(defaultContentPath); } diff --git a/ScreenPlay/src/settings.cpp b/ScreenPlay/src/settings.cpp index 8555ebbf..d6519b62 100644 --- a/ScreenPlay/src/settings.cpp +++ b/ScreenPlay/src/settings.cpp @@ -48,13 +48,14 @@ Settings::Settings(const std::shared_ptr& globalVariables, , m_globalVariables { globalVariables } { const QString qtVersion = QString("Qt Version: %1.%2.%3\n").arg(QT_VERSION_MAJOR).arg(QT_VERSION_MINOR).arg(QT_VERSION_PATCH); - const QString buildType = QString("Build type: %1\n").arg(BUILD_TYPE); - const QString buildDate = QString("Build date: %1\n").arg(BUILD_DATE); - const QString commitHash = QString("Git commit hash: %1").arg(GIT_COMMIT_HASH); - setBuildInfos(qtVersion + buildType + buildDate + commitHash); -#ifdef SCREENPLAY_STEAM - setSteamVersion(true); -#endif + const QString buildType = QString("Build type: %1\n").arg(QString(SCREENPLAY_BUILD_TYPE)); + const QString buildDate = QString("Build date: %1\n").arg(QString(SCREENPLAY_BUILD_DATE)); + const QString commitHash = QString("Git commit hash: %1\n").arg(QString(SCREENPLAY_GIT_COMMIT_HASH)); + const QString isDeployVersion = QString("Is deploy version: %1\n").arg((SCREENPLAY_DEPLOY_VERSION ? QString("✅ Yes") : QString("❌ No"))); + const QString isSteamVersion = QString("Is steam version: %1").arg((SCREENPLAY_STEAM_VERSION ? QString("✅ Yes") : QString("❌ No"))); + setBuildInfos(qtVersion + buildType + buildDate + commitHash + isDeployVersion + isSteamVersion); + + setSteamVersion(SCREENPLAY_STEAM); #ifdef Q_OS_WIN setDesktopEnvironment(DesktopEnvironment::Windows); @@ -74,20 +75,18 @@ Settings::Settings(const std::shared_ptr& globalVariables, qmlRegisterUncreatableType("Settings", 1, 0, "Settings", "Error only for enums"); // Lets not set the dev version as startup. -#ifdef DEPLOY_VERSION - if (desktopEnvironment() == DesktopEnvironment::Windows) { - QSettings settings("HKEY_CURRENT_USER\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", QSettings::NativeFormat); - if (!settings.childGroups().contains("ScreenPlay", Qt::CaseSensitive)) { - settings.setValue("ScreenPlay", QDir::toNativeSeparators(QCoreApplication::applicationFilePath()) + " -silent"); - settings.sync(); - if (!m_qSettings.contains("Autostart")) { - m_qSettings.setValue("Autostart", true); - m_qSettings.sync(); + if (SCREENPLAY_DEPLOY_VERSION) + if (desktopEnvironment() == DesktopEnvironment::Windows) { + QSettings settings("HKEY_CURRENT_USER\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", QSettings::NativeFormat); + if (!settings.childGroups().contains("ScreenPlay", Qt::CaseSensitive)) { + settings.setValue("ScreenPlay", QDir::toNativeSeparators(QCoreApplication::applicationFilePath()) + " -silent"); + settings.sync(); + if (!m_qSettings.contains("Autostart")) { + m_qSettings.setValue("Autostart", true); + m_qSettings.sync(); + } } } - } - -#endif setCheckWallpaperVisible(m_qSettings.value("CheckWallpaperVisible", false).toBool()); setHighPriorityStart(m_qSettings.value("ScreenPlayExecutable", false).toBool()); diff --git a/ScreenPlay/tests/tst_main.cpp b/ScreenPlay/tests/tst_main.cpp index e60d9def..3963c817 100644 --- a/ScreenPlay/tests/tst_main.cpp +++ b/ScreenPlay/tests/tst_main.cpp @@ -3,6 +3,8 @@ #include "ScreenPlay/app.h" #include "ScreenPlay/create.h" +#include "ScreenPlay/CMakeVariables.h" + #include #include #include @@ -100,7 +102,7 @@ void ScreenPlayTest::import_convert_video() auto* createWallpaperInit = m_window->findChild("createWallpaperInit"); QVERIFY(createWallpaperInit); - const QString originalVideoPath = QString(SOURCE_DIR) + "/ScreenPlay/assets/tests/video_import.mp4"; + const QString originalVideoPath = QString(SCREENPLAY_SOURCE_DIR) + "/ScreenPlay/assets/tests/video_import.mp4"; qInfo() << originalVideoPath; QVERIFY(QMetaObject::invokeMethod(createWallpaperInit, diff --git a/ScreenPlayWallpaper/CMakeLists.txt b/ScreenPlayWallpaper/CMakeLists.txt index bd2449a6..38d68d06 100644 --- a/ScreenPlayWallpaper/CMakeLists.txt +++ b/ScreenPlayWallpaper/CMakeLists.txt @@ -117,7 +117,7 @@ endif() if(APPLE) target_link_libraries(${PROJECT_NAME} PRIVATE "-framework Cocoa") - if(NOT OSX_BUNDLE) + if(NOT SCREENPLAY_OSX_BUNDLE) add_custom_command( TARGET ${PROJECT_NAME} POST_BUILD diff --git a/ScreenPlayWidget/CMakeLists.txt b/ScreenPlayWidget/CMakeLists.txt index 66af75f5..1d2e80bb 100644 --- a/ScreenPlayWidget/CMakeLists.txt +++ b/ScreenPlayWidget/CMakeLists.txt @@ -76,7 +76,7 @@ if(WIN32) set_property(TARGET ${PROJECT_NAME} PROPERTY WIN32_EXECUTABLE true) endif() -if(APPLE AND NOT OSX_BUNDLE) +if(APPLE AND NOT SCREENPLAY_OSX_BUNDLE) set_target_properties(${PROJECT_NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin/ScreenPlay.app/Contents/MacOS/") endif() diff --git a/ScreenPlayWorkshop/CMakeLists.txt b/ScreenPlayWorkshop/CMakeLists.txt index b7981fa6..f9a8a8b8 100644 --- a/ScreenPlayWorkshop/CMakeLists.txt +++ b/ScreenPlayWorkshop/CMakeLists.txt @@ -122,7 +122,7 @@ qt_add_qml_module( ${RESOURCES}) if(${SCREENPLAY_STEAM}) - if(APPLE AND NOT OSX_BUNDLE) + if(APPLE AND NOT SCREENPLAY_OSX_BUNDLE) set(MACOS_FRAMEWORKS_DIR ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/ScreenPlay.app/Contents/MacOS/) file(MAKE_DIRECTORY ${MACOS_FRAMEWORKS_DIR}) configure_file(${CMAKE_CURRENT_SOURCE_DIR}/steam_appid.txt ${MACOS_FRAMEWORKS_DIR} COPYONLY) From b66e293b5575e0175aaa311e656a8c61ed6814ca Mon Sep 17 00:00:00 2001 From: Elias Steurer Date: Thu, 9 Nov 2023 12:10:52 +0100 Subject: [PATCH 040/101] Fix linux compilation --- ScreenPlay/CMakeLists.txt | 3 +-- ScreenPlay/src/monitorlistmodel.cpp | 2 ++ ScreenPlay/src/settings.cpp | 2 +- ScreenPlayWallpaper/CMakeLists.txt | 4 +--- 4 files changed, 5 insertions(+), 6 deletions(-) diff --git a/ScreenPlay/CMakeLists.txt b/ScreenPlay/CMakeLists.txt index dcb89f90..a8d04317 100644 --- a/ScreenPlay/CMakeLists.txt +++ b/ScreenPlay/CMakeLists.txt @@ -295,7 +295,6 @@ target_link_libraries( ScreenPlayApp PUBLIC ScreenPlaySDK LibArchive::LibArchive - ScreenPlayWallpaperLib ScreenPlayUtil ScreenPlayUtilplugin QArchive @@ -354,7 +353,7 @@ if(WIN32 endif() if(WIN32) - target_link_libraries(ScreenPlayApp PUBLIC CURL::libcurl sentry::sentry) + target_link_libraries(ScreenPlayApp PUBLIC CURL::libcurl sentry::sentry ScreenPlayWallpaperLib) # Icon target_sources(${PROJECT_NAME} PRIVATE ScreenPlay.rc) diff --git a/ScreenPlay/src/monitorlistmodel.cpp b/ScreenPlay/src/monitorlistmodel.cpp index 91ab7699..a5d2e954 100644 --- a/ScreenPlay/src/monitorlistmodel.cpp +++ b/ScreenPlay/src/monitorlistmodel.cpp @@ -1,7 +1,9 @@ // SPDX-License-Identifier: LicenseRef-EliasSteurerTachiom OR AGPL-3.0-only #include "ScreenPlay/monitorlistmodel.h" +#ifdef Q_OS_WIN #include "windowsintegration.h" +#endif #include namespace ScreenPlay { diff --git a/ScreenPlay/src/settings.cpp b/ScreenPlay/src/settings.cpp index d6519b62..6de20258 100644 --- a/ScreenPlay/src/settings.cpp +++ b/ScreenPlay/src/settings.cpp @@ -177,7 +177,7 @@ void Settings::setupWidgetAndWindowPaths() m_globalVariables->setGodotWallpaperExecutablePath(QUrl(workingDir.path() + basePath + "ScreenPlayWallpaperGodot").toLocalFile()); const auto godotEditorName = "Godot_" + godotVersion + "-stable_osx.universal"; m_globalVariables->setGodotEditorExecutablePath(QUrl(workingDir.path() + "/" + godotEditorName)); - } else if (osType == "linux") { + } else if (osType == "linux" || osType == "ubuntu") { m_globalVariables->setWidgetExecutablePath(QUrl(workingDir.path() + "/ScreenPlayWidget")); m_globalVariables->setWallpaperExecutablePath(QUrl(workingDir.path() + "/ScreenPlayWallpaper")); m_globalVariables->setGodotWallpaperExecutablePath(QUrl(workingDir.path() + "/ScreenPlayWallpaperGodot")); diff --git a/ScreenPlayWallpaper/CMakeLists.txt b/ScreenPlayWallpaper/CMakeLists.txt index 38d68d06..23803821 100644 --- a/ScreenPlayWallpaper/CMakeLists.txt +++ b/ScreenPlayWallpaper/CMakeLists.txt @@ -63,9 +63,7 @@ endif() add_executable( ${PROJECT_NAME} ${SOURCES} - ${HEADER} - src/windowsintegration.h - src/windowsintegration.cpp) + ${HEADER}) qt_add_qml_module( ${PROJECT_NAME} From 2f0a76c6648fcc5aca0e126d8a7d93fe13340f83 Mon Sep 17 00:00:00 2001 From: Elias Steurer Date: Thu, 9 Nov 2023 12:29:12 +0100 Subject: [PATCH 041/101] Fix wrong define Refactor qml check job to use python env Fix cmake copy for godot editor --- .gitlab/ci/check_jobs.yml | 18 ++++++++++-------- ScreenPlay/CMakeLists.txt | 2 -- ScreenPlay/src/settings.cpp | 2 +- Tools/CMakeLists.txt | 2 +- 4 files changed, 12 insertions(+), 12 deletions(-) diff --git a/.gitlab/ci/check_jobs.yml b/.gitlab/ci/check_jobs.yml index f3890288..0cf8d8cc 100644 --- a/.gitlab/ci/check_jobs.yml +++ b/.gitlab/ci/check_jobs.yml @@ -1,18 +1,20 @@ formatting: dependencies: [] stage: check - allow_failure: true image: name: ubuntu:23.10 tags: - gitlab-org-docker - before_script: - - apt-get update -y - - apt-get install python3-pip python-is-python3 clang clang-format -y script: - - python -m pip install -U pip wheel --break-system-packages - - python -m pip install -U cmakelang --break-system-packages + - apt update -y + # For Ubuntu 22.04 and newer we need to create an virutal env + - apt install python3.11 python3.11-venv clang clang-format -y + # Run this command in the ScreenPlay source root folder: + - python3 -m venv env + - source env/bin/activate + - python3 -m pip install -U pip wheel + - python3 -m pip install -U cmakelang - cd Tools - - python check_format_cmake.py --check - - python check_format_cpp.py --check + - python3 check_format_cmake.py --check + - python3 check_format_cpp.py --check #- python check_format_qml.py --check diff --git a/ScreenPlay/CMakeLists.txt b/ScreenPlay/CMakeLists.txt index a8d04317..584b1c55 100644 --- a/ScreenPlay/CMakeLists.txt +++ b/ScreenPlay/CMakeLists.txt @@ -311,7 +311,6 @@ target_link_libraries( Qt6::Xml) if(${SCREENPLAY_STEAM}) - target_compile_definitions(ScreenPlayApp PRIVATE SCREENPLAY_STEAM) target_link_libraries(ScreenPlayApp PUBLIC ScreenPlayWorkshopplugin ScreenPlayWorkshop) endif() @@ -323,7 +322,6 @@ if(${SCREENPLAY_TESTS}) target_link_libraries(tst_ScreenPlay PRIVATE ScreenPlayApp ScreenPlayAppplugin Qt6::Test) generate_cmake_variable_header(tst_ScreenPlay) if(${SCREENPLAY_STEAM}) - target_compile_definitions(tst_ScreenPlay PRIVATE SCREENPLAY_STEAM) target_link_libraries(tst_ScreenPlay PUBLIC ScreenPlayWorkshopplugin ScreenPlayWorkshop) endif() endif() diff --git a/ScreenPlay/src/settings.cpp b/ScreenPlay/src/settings.cpp index 6de20258..5d25b564 100644 --- a/ScreenPlay/src/settings.cpp +++ b/ScreenPlay/src/settings.cpp @@ -55,7 +55,7 @@ Settings::Settings(const std::shared_ptr& globalVariables, const QString isSteamVersion = QString("Is steam version: %1").arg((SCREENPLAY_STEAM_VERSION ? QString("✅ Yes") : QString("❌ No"))); setBuildInfos(qtVersion + buildType + buildDate + commitHash + isDeployVersion + isSteamVersion); - setSteamVersion(SCREENPLAY_STEAM); + setSteamVersion(SCREENPLAY_STEAM_VERSION); #ifdef Q_OS_WIN setDesktopEnvironment(DesktopEnvironment::Windows); diff --git a/Tools/CMakeLists.txt b/Tools/CMakeLists.txt index 56e20955..d48f0245 100644 --- a/Tools/CMakeLists.txt +++ b/Tools/CMakeLists.txt @@ -12,7 +12,7 @@ add_custom_target( set(GODOT_PATH "${CMAKE_CURRENT_SOURCE_DIR}/../ThirdParty/Godot") -if(WIN32) +if(WIN32 AND ${SCREENPLAY_GODOT}) # Todo: Add Linux and Mac support configure_file(${GODOT_PATH}/${GODOT_EDITOR_NAME} ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/ COPYONLY) endif() From 4635643acf8117783064ed9a988a284cb23c5b26 Mon Sep 17 00:00:00 2001 From: Elias Steurer Date: Thu, 9 Nov 2023 12:50:24 +0100 Subject: [PATCH 042/101] Fix CMAKE_OSX_ARCHITECTURES See https://stackoverflow.com/questions/65157483/macos-build-universal-binary-2-with-cmake#comment130596963_65811061 --- CMakeLists.txt | 14 ++++++++------ Tools/build_config.py | 1 - 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index e2dcf0e0..62bd2ff7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -4,6 +4,12 @@ set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/CMake" ${CMAKE_MODULE_PATH}) include(GetProjectVersion) get_project_version(PROJECT_VERSION) +# This be set before project() +if(APPLE) + set(CMAKE_OSX_ARCHITECTURES "arm64;x86_64" CACHE STRING "" FORCE) + set(SCREENPLAY_QML_MODULES_PATH "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/ScreenPlay.app/Contents/MacOS/qml") +endif() + project( ScreenPlay VERSION ${PROJECT_VERSION} @@ -20,6 +26,7 @@ elseif(APPLE) set(VCPKG_ARCH "64-osx-universal") # Our own triplet for universal binaries set(VCPKG_TARGET_ARCHITECTURE "arm64;x86_64") endif() + # This sets cmake to compile all dlls into the main directory set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib) set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) @@ -36,11 +43,6 @@ set(CMAKE_OSX_DEPLOYMENT_TARGET "13.0") # files in the same directory. set(SCREENPLAY_QML_MODULES_PATH "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/qml") -if(APPLE) - set(CMAKE_OSX_ARCHITECTURES "x86_64;arm64") - set(SCREENPLAY_QML_MODULES_PATH "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/ScreenPlay.app/Contents/MacOS/qml") -endif() - # Adds the qml import path so QtCreator can find them list(APPEND QML_DIRS "${SCREENPLAY_QML_MODULES_PATH}") set(QML_IMPORT_PATH @@ -68,7 +70,7 @@ endif() option(SCREENPLAY_OSX_BUNDLE "Enable distribution macOS bundle" OFF) option(SCREENPLAY_STEAM "For FOSS distribution so we do not bundle proprietary code." ON) option(SCREENPLAY_DEPLOY "Marks this version as an official deploy version. This version uses different import paths and other settings." - OFF) + OFF) option(SCREENPLAY_TESTS "Enables UI tests." ON) option(SCREENPLAY_INSTALLER "Indicates whether an installer via the Qt Installer Framework is created." OFF) option(SCREENPLAY_GODOT "Compiles ScreenPlayGodotWallpaper." ON) diff --git a/Tools/build_config.py b/Tools/build_config.py index 824fb649..6099cd71 100644 --- a/Tools/build_config.py +++ b/Tools/build_config.py @@ -2,7 +2,6 @@ # SPDX-License-Identifier: LicenseRef-EliasSteurerTachiom OR AGPL-3.0-only class BuildConfig: root_path: str - cmake_osx_architectures: str cmake_target_triplet: str package: bool osx_bundle: str From 2008ff92358d8b068535e7079dd55219fc3f6767 Mon Sep 17 00:00:00 2001 From: Elias Steurer Date: Thu, 9 Nov 2023 12:52:06 +0100 Subject: [PATCH 043/101] Change WindowsPipeTest to only compile when tests are enabled --- CMakeLists.txt | 2 +- .../Godot/GDExtention/src/CMakeLists.txt | 16 +++++++++------- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 62bd2ff7..692d5dca 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -4,7 +4,7 @@ set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/CMake" ${CMAKE_MODULE_PATH}) include(GetProjectVersion) get_project_version(PROJECT_VERSION) -# This be set before project() +# This must be set before project() if(APPLE) set(CMAKE_OSX_ARCHITECTURES "arm64;x86_64" CACHE STRING "" FORCE) set(SCREENPLAY_QML_MODULES_PATH "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/ScreenPlay.app/Contents/MacOS/qml") diff --git a/ScreenPlayWallpaper/Godot/GDExtention/src/CMakeLists.txt b/ScreenPlayWallpaper/Godot/GDExtention/src/CMakeLists.txt index 9c118279..087ff2d9 100644 --- a/ScreenPlayWallpaper/Godot/GDExtention/src/CMakeLists.txt +++ b/ScreenPlayWallpaper/Godot/GDExtention/src/CMakeLists.txt @@ -3,14 +3,16 @@ target_sources( ${PROJECT_NAME} PRIVATE ScreenPlayGodotWallpaper.h - ScreenPlayGodotWallpaper.cpp - WindowsPipe.h - WindowsPipe.cpp - RegisterExtension.cpp) + ScreenPlayGodotWallpaper.cpp + WindowsPipe.h + WindowsPipe.cpp + RegisterExtension.cpp) find_package(Catch2 CONFIG REQUIRED) target_include_directories(${PROJECT_NAME} PRIVATE "src") # Test app. Start WindowsPipeTestServer.py! -add_executable(WindowsPipeTest WindowsPipe.cpp WindowsPipe.h WindowsPipeTest.cpp) -target_link_libraries(WindowsPipeTest PRIVATE Catch2::Catch2 Catch2::Catch2WithMain) -target_include_directories(WindowsPipeTest PRIVATE "src") +if(${SCREENPLAY_TESTS}) + add_executable(WindowsPipeTest WindowsPipe.cpp WindowsPipe.h WindowsPipeTest.cpp) + target_link_libraries(WindowsPipeTest PRIVATE Catch2::Catch2 Catch2::Catch2WithMain) + target_include_directories(WindowsPipeTest PRIVATE "src") +endif() \ No newline at end of file From da5bd382a8d012eedb69be6b06ec0396510fd052 Mon Sep 17 00:00:00 2001 From: Elias Steurer Date: Thu, 9 Nov 2023 12:57:59 +0100 Subject: [PATCH 044/101] Formatting --- CMakeLists.txt | 6 ++++-- ScreenPlayWallpaper/CMakeLists.txt | 5 +---- ScreenPlayWallpaper/src/windowsintegration.h | 9 +++++---- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 692d5dca..ec3fac6e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -6,7 +6,9 @@ get_project_version(PROJECT_VERSION) # This must be set before project() if(APPLE) - set(CMAKE_OSX_ARCHITECTURES "arm64;x86_64" CACHE STRING "" FORCE) + set(CMAKE_OSX_ARCHITECTURES + "arm64;x86_64" + CACHE STRING "" FORCE) set(SCREENPLAY_QML_MODULES_PATH "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/ScreenPlay.app/Contents/MacOS/qml") endif() @@ -70,7 +72,7 @@ endif() option(SCREENPLAY_OSX_BUNDLE "Enable distribution macOS bundle" OFF) option(SCREENPLAY_STEAM "For FOSS distribution so we do not bundle proprietary code." ON) option(SCREENPLAY_DEPLOY "Marks this version as an official deploy version. This version uses different import paths and other settings." - OFF) + OFF) option(SCREENPLAY_TESTS "Enables UI tests." ON) option(SCREENPLAY_INSTALLER "Indicates whether an installer via the Qt Installer Framework is created." OFF) option(SCREENPLAY_GODOT "Compiles ScreenPlayGodotWallpaper." ON) diff --git a/ScreenPlayWallpaper/CMakeLists.txt b/ScreenPlayWallpaper/CMakeLists.txt index 23803821..63147167 100644 --- a/ScreenPlayWallpaper/CMakeLists.txt +++ b/ScreenPlayWallpaper/CMakeLists.txt @@ -60,10 +60,7 @@ if(WIN32) target_link_libraries(ScreenPlayWallpaperLib PUBLIC shcore.lib) endif() -add_executable( - ${PROJECT_NAME} - ${SOURCES} - ${HEADER}) +add_executable(${PROJECT_NAME} ${SOURCES} ${HEADER}) qt_add_qml_module( ${PROJECT_NAME} diff --git a/ScreenPlayWallpaper/src/windowsintegration.h b/ScreenPlayWallpaper/src/windowsintegration.h index 755c527f..b455150e 100644 --- a/ScreenPlayWallpaper/src/windowsintegration.h +++ b/ScreenPlayWallpaper/src/windowsintegration.h @@ -4,12 +4,13 @@ #define NOMINMAX #endif #include + +// Do not change windows.h order ! #include -#include -#include -#include -#include #include +#include +#include +#include // Do not sort ! #include "WinUser.h" From 2b685a4338d8ebd7d76ac046c06986af225a94f0 Mon Sep 17 00:00:00 2001 From: Elias Steurer Date: Thu, 9 Nov 2023 15:30:02 +0100 Subject: [PATCH 045/101] Format --- .../Godot/GDExtention/src/CMakeLists.txt | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/ScreenPlayWallpaper/Godot/GDExtention/src/CMakeLists.txt b/ScreenPlayWallpaper/Godot/GDExtention/src/CMakeLists.txt index 087ff2d9..243dc376 100644 --- a/ScreenPlayWallpaper/Godot/GDExtention/src/CMakeLists.txt +++ b/ScreenPlayWallpaper/Godot/GDExtention/src/CMakeLists.txt @@ -3,10 +3,10 @@ target_sources( ${PROJECT_NAME} PRIVATE ScreenPlayGodotWallpaper.h - ScreenPlayGodotWallpaper.cpp - WindowsPipe.h - WindowsPipe.cpp - RegisterExtension.cpp) + ScreenPlayGodotWallpaper.cpp + WindowsPipe.h + WindowsPipe.cpp + RegisterExtension.cpp) find_package(Catch2 CONFIG REQUIRED) target_include_directories(${PROJECT_NAME} PRIVATE "src") @@ -15,4 +15,4 @@ if(${SCREENPLAY_TESTS}) add_executable(WindowsPipeTest WindowsPipe.cpp WindowsPipe.h WindowsPipeTest.cpp) target_link_libraries(WindowsPipeTest PRIVATE Catch2::Catch2 Catch2::Catch2WithMain) target_include_directories(WindowsPipeTest PRIVATE "src") -endif() \ No newline at end of file +endif() From 6e9f138e7ecc37f68a02d6e4269c5d2c8d1acad0 Mon Sep 17 00:00:00 2001 From: Elias Steurer Date: Thu, 9 Nov 2023 17:06:24 +0100 Subject: [PATCH 046/101] Fix macOS launch and build --- CMakeLists.txt | 5 +++-- ScreenPlay/src/settings.cpp | 2 +- .../builder_osx/crashhandler.dylib | Bin 489904 -> 489920 bytes .../Steam/ContentBuilder/builder_osx/steamcmd | Bin 4505312 -> 4538800 bytes Tools/build_and_publish_steam.py | 1 + 5 files changed, 5 insertions(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index ec3fac6e..17a1347e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -9,7 +9,6 @@ if(APPLE) set(CMAKE_OSX_ARCHITECTURES "arm64;x86_64" CACHE STRING "" FORCE) - set(SCREENPLAY_QML_MODULES_PATH "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/ScreenPlay.app/Contents/MacOS/qml") endif() project( @@ -44,7 +43,9 @@ set(CMAKE_OSX_DEPLOYMENT_TARGET "13.0") # This subdirectoy is needed for OSX and Linux to fix linker errors because we would have ScreenPlayApp executable and folder for the qml # files in the same directory. set(SCREENPLAY_QML_MODULES_PATH "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/qml") - +if(APPLE) + set(SCREENPLAY_QML_MODULES_PATH "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/ScreenPlay.app/Contents/MacOS/qml") +endif() # Adds the qml import path so QtCreator can find them list(APPEND QML_DIRS "${SCREENPLAY_QML_MODULES_PATH}") set(QML_IMPORT_PATH diff --git a/ScreenPlay/src/settings.cpp b/ScreenPlay/src/settings.cpp index 5d25b564..201a9afe 100644 --- a/ScreenPlay/src/settings.cpp +++ b/ScreenPlay/src/settings.cpp @@ -163,7 +163,7 @@ void Settings::setupWidgetAndWindowPaths() m_globalVariables->setGodotWallpaperExecutablePath(QUrl(workingDir.path() + "/ScreenPlayWallpaperGodot" + ScreenPlayUtil::executableBinEnding())); const auto godotEditorName = "Godot_" + godotVersion + "-" + godotReleaseType + "_win64.exe"; m_globalVariables->setGodotEditorExecutablePath(QUrl(workingDir.path() + "/" + godotEditorName)); - } else if (osType == "osx") { + } else if (osType == "macos") { // ScreenPlayTest is not bundled in an .app so the working directory // the the same as the executable. if (QFileInfo(QCoreApplication::applicationFilePath()).fileName() != "tst_ScreenPlay") { diff --git a/Tools/Steam/ContentBuilder/builder_osx/crashhandler.dylib b/Tools/Steam/ContentBuilder/builder_osx/crashhandler.dylib index f03ebedc643aab831b8c7879d47f9d62b4d31e67..af6562779a3acc938abb2e9071e6e05a65bdc275 100755 GIT binary patch delta 103443 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 S?d|j==7s`)7p!_T=Dz?$R;xY$ diff --git a/Tools/Steam/ContentBuilder/builder_osx/steamcmd b/Tools/Steam/ContentBuilder/builder_osx/steamcmd index 72f04ff32aa6be60e63882bd51239470c0df249d..c7379948e1e5dae821a18ccfc8ca7d60aa21681e 100755 GIT binary patch delta 1115226 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
YfIEgeQ)7buoAHr@V;^4n~- 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%0A?w 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 z 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

E$si8 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±y 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

12yt2 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π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%0A7PAhx-FJ&>C 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

u^Nh2!80g%jYB!d9B;zyx6j_-jk}@PBMu($ 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

sgSkDE2;OHU-TbJF7QF_pd7dm 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 z

oSzzTWAW68d=Fan2 zy@)Qm+Y9UU3PI`e4_adwO-i;SsEv$a!VU%e8oX@e)C71X4*A^D& zS_DrMxTtF!&Cgoca2+%W&E~UM-^t*PShLcONPaI^$!E=Hp(&k_h=r#ZjC8G{ORlJj zz7QP|xziC7M@C>_P24L16;%OWgv+?bXT;Hl5`Z@0+%Yi1yRE#-Rc8ZC00N3?6!{cY zFT#;%o*4El9}o2uIg^DmtqQHi4d;<( zWi~OtZ{(}2tO@Rp{$gcTzj1&5FCe##JZ&LsqI;dlGZ(U+{BWzvm3iX@EXr@?AO8!! z$(IT~KZW2^=!!>Gp1(M-Di2-EY6O0I!`FTk@a6BWkPmo9#Htd$PPg-3i`fX>(VaYZ zF{`6nvy=b1n3-Bu-3~5R^lD1=ZwC#nv>tv978Lb5K ztT2dlw@hOX%9t?(uuTxcQw@7X$xw-C5|Sq1k3a=D6sJU z;wkYHRC%xk-z%O$CW~rjl|)SRft@&>c7)EH)kfcs8+OEJ`f|YJi#N@nEd6!~^9|Td z(6Gsoeqq9EB^fK6lrV8xymUWA)?W_QAFzNj0viMu58s+vP%V??(36am7E>lnr1SQRE$mfCD zgjkL508C7RC%-IXC(4mgKhro|2FO`)U&`ufHJrn5P6n0G)u)7aTFx4pdcs7`c8nGT z)aX08s_(>XwjZPAinZV+$|7XoM%jc$?P=B zvPWgPOvMkPEZc2a>Sr0Jf(aB|Oa*pm(SE4Qr*JmR)IWwq@PU~1 z8K#=NWI7;qD4IV~UkSJt&nRiB&;2mQ;m9c`N!55ma4A5_;8cV0-6YKHs^+#WzND%(OSv@-LKN zeSoHd_f?#DVZ2ZxquCq|DBK=Gqe4P>4SwsDcO?^4?sG4eiNtw{0bW1laQZ&BmfFec zRngHzny@^JesdifXI`coz@=3bHvbF5pCBZoQ&&Z#1(Bj?0rFORvIyT36_7Xwr;J%f z2egdCj0Vy=?T%v|e&jRe+u{a5$ZI|>Q5#!R_HU3q%NT{ALk8ijix7r^t%wG%HP4?z zH*&9)%#g?n^Jxq%sxJpPRY2fPJ8E>|X3P1Am8`q_r{`Vd z`yK-db8qpJD`Cgv_dS2Ol68%HGu_VRly#EJd*Mna2lq>0cI~Ng8D1_i2Gem#mrmB< zF0jJPuFWTZ&gz5?K|H-X02TFfx*wVa`9tzsh_)ovPD7TATpqp7*@s{FoP|1m&0l`b z-syMY6>eCNO#_{^>pwiF+KHT(o|3Y^EcX|93y@8fij9?Os%(nH^N|nWi$!diCR=3) zsq-@1IHY%(eLbUNmeDnsZ(GIu{0jzSr32?Nsg{X@$#dc@dH@oK>Y_2fxe9lV<7IZw zY%#_YS`F4sKvip&06^%8}$Dv zz>}A(#soc~7O%aAwM=oWjsmib{c54P)Qe)`ttljL$1VCzK_qVl>G02P{G7sM)hYs! zOy~5Pmgf^Bh`VOKeho7?e!%yvVWEaq@6tN%5OE@hYK1xAqs9E;8qinj&E40sI>8eL zVrk}yH-N1MgB1M=&|V7KcRk*Q!y8C1!3Fv!bUEUQer3u9BR-TKjO!^B;6emRKnQ?AqeNmx%{uStaGD!AU5;RDYT|(H^tt zKMBCf|7yAqN}h_Kw8DNfQ3?fht5Jv(Kh1&cc*(BXTf&I%=JK=aVDM9bPe8>I)Mh|s z8N(4&GzTICn!iLerfCv7H2}VY%?pNi{WB%It&;OIs>7_(FG`tJ4$z)F+_y;Wgm44L zAK2fL*ndLMA)_~n%t0tR^0{bFv~?(Ise1Ny0u7d+>m?}pSzk(^&qd%IzIZ+J53TmQ z91JSZ^qt%;+!B`-$W`4{-mQg`AOCAT^9?-vQ`zX(d?m@ZZ9?3>iu-@Tg8KWUOLn=Q zOuphM9*>8YDdStR@Mb7H3?Z!J)`>^iG?duZahs9kfh6&mqOp#fQ6F=~I#Gh5qHL}x zSjCro!6HK3y=WLX;*wxaZk&+W2@c(}riY;)Y{SF~M4kNj?Jt;*snRr>4`-d!znLm$ zK%8XfVVfyo0{l=|4SeAm&ndEblm>g=;fTQa7KeIc+B-$Sna0D&4)fS%n7~fzzf-u3 z2`gmZcKQs{-d!5inpc(`EZY-cX9`_QOM{^PFFC27Nx2Vi1}5>qN~f{dh2@DGeDMa> z(=?E};n3O8ZFxL_OvW7nIXgXP|4kb}yxfi`v1_s1?ZpseoP<0rAw6gBQBVyjr8ZJ9 z-)r_sR-=I;-3UDB1At4V*<-4@#bXM-Q>@*b(}q6bAIxOc`NS_-Kv3%&^8NDJ1-O`A z7>DC!X;>l`%C)QVZ@$DulxL9O@>(`Mj1({s^u~|UvhC0l3o;zfpp+W`w&;%rC@oty zzV<^_N$vadMyX}nf+(eBn=3<7%QhXsQjhWYi|V^j_1|D+MRJ05PwjGcq*0fol3w^| zzYi^vOP7!nvR!~oS;kV5I?vfLI)@$(hl8mBt`HQEVd;t$ys{z;xKL*OX*DjRqCq4r z=s*Gu2VyG1*zQ>jSAo!`guCxg+Jz8a7;0apqz?F&Duy-)K*i9JeumzKCaxwzph|}ys2Jc7NwV}> zGx6;%QZZDfWQ#r!KTt6YOEcrK4uH?cx0pGTDsenzs9{%4!fISolNWr&!hIIF%T^5i z%iSSoB?eBB=>#M6O)SLmB5%8i`BlFNXG@MZ@zfv2ap+1!qf30`Ce~b6!^*$d#2PoO z0emQB41UCXEUpkvq~7%>q@BbW-$N;_PbPo433Fb8nX}Dsf0b&&J_Nh8l&qtD(CKi= zdXZ?UdhnU*gfiol_?~)b*7VJep4pXf&n`3L3PP_@SFwLA&)&=$7>dzlY4h!JJ)ath zdhgeB`H{`6X7>fK3c=&Kh9YmZS#RkJDz48*q`s)CjGDeqm|QVndQg}A{u-?|Dc-&~ z?YW$eM_-6ZbF|&9SGR~diDQ8R<n$uwH~L2&xs^p%KJ+P4o0an6TX9Bw_7vZ?mEG2L$>9sP;jDP} zF}`IRd>n~ferg+BDrDB-VjCM_I`cgpSeuiNr$=M8kEf+Jn@@^gacc=H)7E%2W^>BW zv4JU0V_k}(Qple~?41y7BuD4qP}hiNjkpDwxgwj)Fa=>zjDtQo0MLQ&^u3mz$8ksF zeG~%hQo<1<7U!btmZB5ha>;>V37$eS^DEm~OVcc?98!BN!jSp_j;k7o< z!n9%Rp`a@fbSR+rjiw%*D~u}3*)v5y0V+~K6)Xf)3HtoLDGJJ0L2W)$w6QIW=C|WN zU$ld5HhuC54I~)_BuFRElgC&4Gs+fx+MZFai|Lt~bSS|8?=#A6FWTF@9pM8m_nA_J zZj(_9ZE(r9cjkTREfN-o7Jd3%Iscomcom{6HX~?)dWavO;#0_T##A5zXJ;O#Y|?_( z6_+qGjecWjqHB9n?}-4O89N4NN3jP{W%yPX7|KDYTK_BxbfT_0$wHGB${;JBaX8}C z25tSrJGE@95Rp+8CT(R!9TS^T1O6|bn&y!sd@7le@#KT~Op3YZq6GCGf@gp z-*Jb^RtjIkStC{onQHOvhfRgHPs+q&By!t)ex7W60?aX?p~NX1uS&WSPFBJ=f@c|9 z6Du)Q2g0h%$7DWIdOBt3X^bF?GF!X3c`iKyl&9xb!4Wy0FtsEv%4~tiW7H?J>%dX!T>(<#=#h9Pz63t$^X5WsYuxhUJ z3=Rooj&`8Enw<#>5Fod$Tk@GG5o z9hi@)!J>cv51WML!xK!_@k!-2{-Tx%gQypF`*^*A#?JHkWeP_PO*)}Lf8x{Ckc_^> z8-340BA)zSUihs0%Qk<5Br}!~x0L*iwD8H_v-53U7gWVMa%Ss&bVEPnRFPW_1;i4d zPMFsT_i!?jGG8^6;@M&j$--VrMHQsy| zEN*?L@^^RP4&1FNeB~~3LNtXRMSRHoDX&V+M+-?z&<}TI1L=1P>Gioly7eh{-_62n zR=-t|u&Ro%ucz|PyIDKkUz7Q#yD^jQoXk(}h6~6cleym>mf-j<@4E+6!rznl{5^0~ zx?~c+yN3F>1HoAAC zD(|z8)o&LyOLoeih)x{t)9_jg=ZFxA6|!r#JLz24A=&Y6(PyZQlLDSjz}^b@(Nmtg zj|GLCn=E%<#a{*ux**L%7HM$&B2QmxUl(v z*EoRIsh`bL4zR!)6X~K?x+`p>iVV>(lERzJ;?zVwqPNhIv^7WJ9{%qE);OZZHCuOpzFWWZTh$$ivZ+}_*|JmM zjp`2bXYt+#SuMv5KH(sieN*@f{OEe7^8*JV6H{mMwJHxf!~*N3(|ndER-Cl8 z6(Le>6-S`xoBhZ0frnU6C+pR!{L#yX{yhH>^R7AIs;%e0%y7lbl8;U>;F$1F=dTaJ zO~l;kl3{}&Dmf`s(HZx7%N!O^KLZ7l-4oH?Spjt>pb-R=1nsgEMP6-hLjzxw19iqE z{#6c(=fAaW7_Tm){6Q;MbM{<1NQmjXQtH1)!thED6Db%ZJp+EW@AcFB~3M=Lu_y&nXd&`{)&x5-Flyhv^x^0LnWBNarD z{QwCdtxQM-C8C#4oWQ5&vQXEy|M=1c(pm5GExD{~)#EP-JSj97BK4VxyBuMihHc${ z9!lt4R0G1;7a;Jrmyb_O?U(`+Ta(Ht=@A*y;Wd^iGz&h)6o^tC-3157I`7|kvM2`c|-TS@{Nfs=>WR=wE2)csRkU0aQ zWU;PLb?NfaE8guGi|qc+BUcCYYPZ#J`9~~QI|@yBEUR+?i+0$IA2AxO2Hk3C#n@hm zC9`l13VTH7{ruc9*j_u1<3Al`bvvbxr!MW8?TKSkOuV#>v>b-nAaOg>=-wZTG?F$H z;h9|-1IkJL%YI5VZ<+*oehm=?@!KHcBI7UK>KIGv-uPh|$zPua$+iCapCq^4`@cvI zM{Grsuk2MMUmVL{9%C_KfAF!jt*}e9%F`@QJb~9-IcEYLMEp|6ShWII9<0 zR76Z#Mm0z=>qOrGsQG?y%sNEO8#Zkk4xC?3<*SdgFt@FvNKkGG^T+&`<2c&AK88O! zjvdd|hg_Usfnl4TO0g$)+upJmzDvrxY=QO^w&-u=^L{5-h+)xaEDO40)nyZw-Xi)T z$wFN>pQAJk-4Z@IJm&=S_j-8j5m2mfE_hN3=7rQ@SK5xAEh z{fQZM>nCu>Gw@hjeHO2AhV=`q_Fh@TV)rDq5%MxmVa*-fdItV!jxXRh&%l4e!`raR zKf@aObodUO%1iVjS-?u#Pqgb_!dLH&@N>I^B?1*YXeb}_GxPI#_3eKkpY~IbHEod9 zhSJhTyTE)O_PG3^f0Vzj##Zhg5LIh=hbULw-&=UMb1dTR&9BN|rk+N&yO7(#_@yGp zzDtNSEeJX%jY4ATF6tq9VmyA!Zd7Qc)!zp5SGq1ed1D34PhtIRyDlv#452+Ee_x24 zO%*^-BN{}MTY+pqj79{lyOyUsa&v-WJ7-v-qVVZw@ZUj1C$z3cpu$ z+{Ul8_Ko;TWs|$G`NqmEheRuP5FTwyWhgzf-+!K;bH2Qi5}G(|w9NV&4 zs(W9CHzV7_64iFk{7Wp&(P_t58leSWYJ~oXy9jndr*G5<9XmiHv@ZgZ zP|GSsX!0t)_BR&Ht6at9{?ox_)YKp)-@E7e&bm?keELy>cD-ja!s6+XfAgh06xvKu+^#HWZ?c{~-}sl2@)}{0a;8}MpZokKtLKz& zDCWm*!vEa$rM%}YwyaWUyAsTEyxZDvZ(cjzMZd?dfVFlt&5yC)bUJ|(X?ZQ@Rt_y9 zz~#1W7g-;kJUJ6DaK2yal|MRcHEII7TzhC zx2!>5Nib*z#k+sd0?qg`qL7jex-!1w_%Ay ziya(M9RRez_mM*Pi$Vtk6gg6%`vPB3a0WT#(0n1qtF}U%ixjYZG5x>_MIx41Pb3po zlip9EB?3U@7W@FMw?exLU;jaSdcLH0KjAa$E%bwBV;R~p60QE|Vp;cNNC(z0@dK=f zC^B5X9A7r9&|pex$1Aiy5I(a$o3fFcJ4tB}P@*X}t4MLRwQP6nr-?ZZGBNhLOngx$ zPj!HhMEe?Hv>H<-g|KNa7H5+rJ3}OeCjIY}6VEB)2P6h65_eIg;}ZyV8AH!mWX;bL zLbHAY{oqu)4DUqXr4o-I#jHP!zfzEc%u$r#miWA->>Vk{p>?F>Bxk${Z4H{FL2T|x zOG@J&`cYji6gUB3l4af!?*Ij8^^%3sHdAsy!Hm*iVkJzy=bx6B%o~XkPj3yTnj+=K zr|2XamIDf+y$10R7hyrl31HCxRw{s44d535ly$7>Dltq;{7xp?2pp^u1GL0t3U#_f zZIV@Jt03G6!W!$+i4@|oHSn{K>^Z9FJ-nHadKIxyaHt9jSy+XO>G@Kps+<1Jki%xAIPUZfTQ>t=lO~UPy;XBz;hok zpWyriGz6Xs@Z3`w|EuDEPlvojdMkzK|MVPx`T)j0cjt1yhpd6;J23W1c#bD5aIhiZ z^rrJeRy)2CP|%BUbXu7&o24&Gi%5v;ya^5rSl}C8f9}0t1kQnbFS_A;Zb5HWa;b#52vLNHz zgz0%(XNSUfK{*}Kz~qtQE+dY5-u^bk8=KE6wH4y^A4Bi_79b>h$omi;2E(BbZBF67 zr8GSw)0E7z<$>+uzU zR}e62cfd%sD>~0Ve#@<dsz?A;)@r;Z z&)<5ULR~)Th)!)8YOBjBs>^V5GW5u>`c_IxQj=E4$^}t4-|v}^T#s;QhZ+N_=S~xP z94cs*@(kCwJFuM+zNFBs=t&)QhVe~lx?UVcnW%G=?SA&LqV}r3x#DAFmdg>JW|ukQnF#e*1gXt{i1T2QiOcoaqW zP(=7~*jwX^t_>ffh|=~^RAB0nJ9^JOo%X_oMwrWRa~BYFQ{+hNAIL*8F zQcTt>#|+Q1^R>bwj+ki6ebd7bHmPzTEMQx&R>ZddUvHQsd&4-`@2lR>XHr>j*oqS@ zG(Po)mT+P7KYN48TuIs$QIAkVZoBe5qO(-&l8lofvAsjAAaoTwM837GL$t2|Jc@u( zkp-|Sqz<7Sx2vvg`d@w9UYq$7%WCri2Yy;@K1%uj)W+7gX?jYUTcK}f)B7IOTenCX zGh5eg`wQW!Se44e4nru0c*lu8V#d!#TC^#!p;-WUb3W?zu`e*WU`H4h5PWW;rWpUY~Z|+9P#0I#vOG2wmoAxcu}}1J1T{RnHSmLVGWtvS%{EO~k1?W$dns4X;- zW)$-wu1)>iZ*O~}sd{_Q;Z;hohAE2Stb`eKp(l9z5*BAT(v)~vwsaD?IHTZ;&xZR~ z|LzmT9_2i9DaD^V8(!1BX$)09PneL-O*vsam|?(4iQyak>Ux+J)Uj0@n}?5 zKF^=f(3ju(m$}vwVVaO@4O;+XIwILCiW+7~iwlX)FD8O2(}g;^a})W;rSOkl5W&}# zGQX}T%_#Bx6294w_lYBjP-?VotyYk0`qv26qq31bp&(e z?~K&>)H~cp4iz;2E=9YPA1xZwh!5JAM&LcwDF3(DVBLb!iTI!x$(ROj+--#84htm; zM_Db~*}WuuaHgH`Kah_IkHEPvIf`6frD@GjA7sH2Td&HtH2r_Xy?J=e#}_}I+?z{8 zB8jY)kdP2!nTQ}HBqZEu5c?YYR@9o8 zScAI1*O__WB(&e>`906~kFTfAyzk7JnKLtI&YU@O<_rNaD#p}|Tx(zex=iJP8s^{L zu^59dLj(pBaK@;1ofU(2gxjZGx6M$5L46g2DRu0Y8*BM%dNt%}8s=>nOSw#y^ybds zrJ(}{h^CTDw{s0BVS~iQ<>5DEQZ(|+1C5x}P1tjGChE;_M&d>#+Fzf3{a^nV0 zJq+)%z~x3McanJL>k2A}t%@J;&%q}R-54w;J3E$fGoZ2z#3`-nh>gj)BTa~bya*!m z?Tq=l10t*QoGplrcHSFs6u;-|wyCjiWo+H;B6h7BtH*rDu4om0Vv=vc1c!xt*BuCJ zlRP=ph?7^H>*z8z1ygyxOkEx1qkq6G0G~9ulF(fI+(S&>9O^6z_Sn}x z+oF64M3G{LC}l3b^BieM1PdLC7>fup6pxm1R}KLo+Q0V4q=tGi6Ti`Zj}17eCjo}0 zStKkKVgW-G+nVP7-k5A`yv}%2TOzh2Q2eNx0wKOdY@!GUwVIbQZk)B6cbJ5zW&r&* zd&J6GPEsw`F_~p828)tQb9HabNmTQttR|jHJy;vnY>-8^p@@x$pw?`Zab>O5ES1%~ zKPaksHbpchjjBm3s>Y&Bm9;>~*Xd*}1zsrB(3Ps`L`8~iZp+IRs-eUq-_kybp z?OM*qN5<87KGYsZiGPn4CqjI^J=1Ki}D_gDUuejV-w)c09R#%tTF0YP*oVClrZF9iCosR zpat{|8XGUdH_BjG5tINOgJ`t0m|Nw=B1Xl~dU`f`vczyG!q3lwMs)n_^sFU-$p%($s5+hP8%ham-WeE|VBwGAM@#ED*-%k?n%ES|tXbyD%%BVUArYC5Cm-rPB z0z|CsfV#1r@s4uUK+P#?z*<>I&jX^6mLi+3Yl-Ho**1KVYq-qyUgjDjbItyDu2Cg( zNebxW5G5~1<@x(_Uq{vv#+TzA8QEZRM^@8-k-<8NTU)w5uE2@bI6O##I~_<+Ow|Qv zzl-0^k*W}ZW%OG?Q%A^por#_h~cVMt#~%W4;C#$ zJi>_$(G=wHjZSQbTU;JUNPPt9dweVRSMp)y7&Aw176zv&e64lo zW{Sy%0ai;G9>UCx1VBAy*dQ}($G0+WWeHflDbi(D6M56T3PEm^kedmzjTQ39aI{k? z?`H=e^r!Sjdw%W>UTyfonXN80q$;(9Kd;FuXkA9BhiolJsE2HIMwB>Y%R#I-WV=vJ zJ!CtC4{^x$7*FHkFx2j+0fl&LxHRr*)^}y?9Q+@M`84rC8UBqc>*X*)ILY%UkKd16 zS!0i@@$All1yq&Nta~Oa-2PuXX`YxtMQI*%uRDBhYxjQ zvD)G8h5R=+7UXv9UU8?p{Dn^Mvy4A;W5eC{jTH547=^-Gksy9&DIe+1^bU`OdjyXb z_sa0Y?m#ePDOir#bd; zJy{z~^$PrrCktZ>dgBUxW@|c)5&Y18Aox{s25z+$Zxmk+z{~YkNBZL;9V_tLi-JpW zgBNpPFSnSLH4v zq>cm%VyR?%i%dkVmAveDT4(0T+j_IQj`v|TE;l+0hw)^@RC@Wdt4*E5!KFPzJY&t_rwg`XLOol)~Az6xdR@U}kUJ*U<-7p?oku~wH z)E}>ILcf>anhai}l+)i^D@_`LK?uZSv8-Adcojh#bt^aXtct9;W_%x7wrXl(`^XjR zOwUi&gR2R0#X5wL7N;z?|5&lE43+D_xuIgks<%jH5-ZkNe5=ccb;Vi+aCOD%gj8uz zF}=6MqjPU*M{%XcCwScLBk{;UNO)W>Ujh%S<;k5P5|3*Lg&jq`wKAK)WG22p!{kQ* zs+jags>Eb|FR_pdo1g)`BsTZEe}c`k-V&Qj2nn0NT>k@`r-LOn4-rbMj%_lVz~)IY0IJxG?yaum>0LglIGid}?O>Rw9BNGw!fxeL99q@?%mx|u2&Yz$+7ByJW8%*C2H1r~TqcrXI31|$WKSi%9 zV$>els-hQ-8c8h?j_`BzBExOv3lMr0J?|p)F8Ad9tFkc7v88-fRo209sS~jXJm4jH z1YZ8>`OeY~w^YC+U?_+m6#9$sjpEt$Gw7-!;bD>5>3t7@DDBcGtBCpz#11BxID^Uv@V0qhI6!{>|9a=3unyCw720W8LC2qma3`3>L7 z$FF(&8mxmR#91yyqqF$$HP~M5Hk(2|x+Yt#b?l-prOi93OKD)I5=-d~#EPZ#tb@9g z?!$*zO7mjHQmXwiwvfl4fch$=7K?VPb+#C_iTGBI8pvwJn{TMaBHYu@6ysNpQhOPM z>54ZmTbni1EH2BVYGc97I?21$W{b2}+Z6KIeW67AP@6ewyBObbAG^9<&4{{Ncel=~ zEGgEgZ`;rjyLE~r7Iv>MW5U;!{ z*q)EBi^X;x{8Gz>~)3V%?S)vIF%mkqQN zphuS}q=P^sos^ziCeX)mAaojdqD*P{Baf`d0_;k6A$4RB^KkvhC5YO(O6&N-daRme zl?~rj53Or%`$^|aNRgdWzCJS>26Pfli|q{bNF$@HoT8!^oL2Opazrx;)sCQqd)P!P zR56T~gy~E$aNYtJHddIDB|Yyb>g!2RxVmZw*H=^c4#qrnXzG;BvcES#t!=S*E;zNZZY7f5?P^OuP&Og1bJAp0fFEmORM+uN56 z$s-;?tVL3oA8|~pBI?dRTIs)N5jRZ1LureqFnhkJ0V^L=4|knZ(_2Emb3E=+5<4Pg zT|?^3Y~YXCwtt!}j~XB1R+ij0f14s2&2ws2^57p_L(2NA_5r%ZvOU3R^V&GhYvW5Z z>T4YBDl>sT|EnRZ;jsptg0de|-{75L5>anX;Z;MK$AC>2E|U7tiH_$K$DeGmM@njq z19}(i9PH_ui=n!GjHxx$dJ%eA$_grFqby~vm8dds?oUNvzt{?IPbe!l+e&TdBEB?~ z`SV2^9ZGjG>-ZA2>-*s_{YGLXy$QOI9E*$6h>k~uc{e&xysVDHSapW6H8^L@Y%Pw- zNgfeuQ4c7#oU2CL@G-;fym&!O9dGUY_gWs+h*k4B)wqP1ENIj!CU3ES&u2Aal{CiH zd<}*D&+`L~SQWQFB=yVzbm|$}0k|ge{6;LW`9hh{hZ5+WQspvKDuNc{j5E^Wj7j_S z#)KWp1v(}X1K5``z@*ufbaMYi-mx(Y)qI!D=QU>jeuF^~v8EX=FjB%b)sxD49KPUG zQ88l|640i|F6u9pv6g+583r$w@yyC2D~o<~$Uo)X5Y zIm^gg5vg-2$M=M>F_r9+;0#F@wicI*@VHv~BYR_ddY((ZlSx0EM>b_O3@cDPRvVZZfWW5X4m9hGaHohwR)&mByzQ(cfGExXM6gyiFx|)R%+dXDpX-{jzyNBxPof`*XJ=>G!r{$a5rbH?ZMq|@+l+J5c&BEp zc66GEOoB4iqD*$YXn7rzZJQX3!Om4eUTbagYnUoUB_E;e&g8Y+qVy~-5cem*@d$u7r`(o5n^$N1ueD3hmy5 z44rZmrzyN+IPOMAXq{8=G#Y3v_XDnH`2y;7I^uL9 z?#>6;P$atIDjH>{PRPD--IDKIBBJ~{TN_hKAdpM3X&@>3bSa3mT8yem-lEHyhEXw3b+IJ>RL9?2u3SS5pV3Kc90=vY+1mPqQ6 zQEHDw0`V?ICA&_jU~0D_nKTx4cgogiDRHzbR`2Rf>5_t(CdR*%NHx=Sp zx7~sYD;p+=ysL`xf&iUABfw8+s3*p!h=#;l)mt=4;c|d%^6C(=fSejw$*I0dJ>W=^ zoLYcFh@7g(h=%3!lR-?cBr$0u6;&n*yO1~RQ)0@UB8jQgQ@m)v+_`%zR^G5}kI+(P z?87FiCwf9TJ-k>Pl|pFVj}PS0rE1HOsXLrgBtPDUlSHu9+pWaPxv#Z22zZQN|9aP? zTSqzxi0BSY1#DV3mlyAv3>W(RyGr|~jml6D z0q!alWTtRnLzATaeTXS=e~A~7WT{1pf@e>(WT5Is4_@iC%Gw8<#jr5XacCFu-c@ix zRb)uImUq1F>dqIwF0JD$VptVBe?am6_RLo^FqGenfr>6HRI2C>H~2)8a@DzZPB&Z78Qm`gIkdW5^ z&{9#>r(v<8ETo}Sl4IRj4Y;G@^2g@}Qwa;wt+D^d6$oe}d?QBe=Z7h*7JY2+AhJ z??y-*uOs|i6Ls5DRg~EYV2iQ`K(ezE8>;AK*8QZ;mV}CmUL%1PuBnUgjpFzzdR~bB z6usvmMd+0s`7(7kt{2U)rE|obm>(tP z#7YF#vneI)3o)fewWlETpi}WvK?Ta7M`A|ROA)z;%iOaJC9}V8TRfWzln|NWvdqv+ zW*Aoz{`4pCS_wZB{!YOF+Ddp6+=UdOx9Su4i+Mn3klCk(9s{&uN*Z$!D`tE9>L=E%#s--mO=#PhDJexZ!Vg;8~_YkvZ2| zT+WsxGQ7Ukg1j5I{em?wH=zjrhhR*#AKZh(4Yi8mx+6|z#9C@2W=%2EBg9f{{=Nh^@ z5wV#H-!JXMYa8*c!@YIADf9vLQp#(RwIluz->69WYZ;vLm_kpfiMae+3Y%zI`3^+V zKcti6Tx(`?QRbgy=B3umhLX9b73ZE_B6oaI?h!I~KWpxinOhfUZc`$&TT$k^GIQ-u zGKZ>&yION6N8ADZ+2BYhQ+VE`)+qe#N6b___fz;0eg{sb@Mi5;6~m0?Vgj8&kV=rpPV6}$AK7@x)f$w(&I81B0b(rQ6m{rTT0t(y1oeQVx!YTiHlioDSn zWSN)NHoTGs#l{7xvHc3UF~rpXk&4}&jj{+4%9Dn+bg!VE@fZ;JumFP!XS)%i$u`vF zN>Jg>f-8zBpH5#ZDz6N%RLD#xhyj zIRvS_sRLvCs)ZbxOc~sZ+H#v9jhSTj2hYpjeV_&Z>;LrzH5q9(L@cA8Cwa|MlMLz|j5{Xzx9GQKBSh|GpBM5<5{oWF>l`_GB z5(HxQ)~t%l(0?H|s-;A1(;bOe$YY6^;f_SC^&N@W_*}le6Z0^be2R5##|4#iRZ_`L zTN#0;!_@093g%*i*}_Z>bn#$>78b0C8ip~`n>>b#p?j^IMLfL~XPTi9kJl-eP(rl* z3!&+CDboCv2_f-@RAT@$5Zo_-BcUNXhlVo$2CX?#vtic#UAY*)AH%2<@$Rv}@ATs$ z{GKUJxCuc;jNGmfxXpMbQRsxCi!{x|x4vy)tzAGk>J+Bd-Z_UK=?o@1s6>r@WQ`|f zjV+67JQxzGuwq)kqY9dt{0bWKC74khFn_<%0Vt?Wy@20gJVB2F8)p$qe= z-={T}u;><~D;LvZPacX7KO*QZ>-B^{1y>5#EaGrM!eHP|3lDY;D zed}5pcy2f5;id(+=x&H@#%owpG`+ZecUD8AF>uzMRqB>Uol((P)#CIJUnZwp_=^|M z-ntuor~}bdWjOIT47)v1UnM<;y~P2{T2niyIFH5#b+wsLT5o$k)`;I>CntEBd=}5- zKXhl+!mFV*f^d=2i|za6bXhbL!Ft$C4Guvrncr+_YnvDK?!!G;fofR{#*U{kKM%7*E6gf_3q z?^dE=DEv>mYm;h5&7NU%2LD9X12XHDhRE8MvR=f2ui)SYT+9<7Do_?odfFC<#ggP-<{D!p=D*7ra0+Tp570;^g%zkD$RyDU1) zy5#kH2u=$_-V*(3o&=8vZXk%txmWNh^AAvQs z8z`TtD^PYLtRi4#9()P}aY2xu!rszvD2&IyT|*| zYA-xIm9@;BgMnA(YVagejzVr5B@ranRF3YXADMU+BN}_%r|??`EOEAgUoic@)rfAt zkP}xhFS;MA!}@P?kGuAREYh%MF=JEj&Rzx%)XKt(lCeoXLki;fSmPDrizvJdWY(1} z(T2*h4Y{%nkM0z;As2uJ3IA%tZd=iYz8@{&)B~eW9Kvi3$M>)hy6EEOjTsf?f6 z@+AY=FwOQH{$U^+p=l|?8hpVZ7T$jNc&yPl#nQFFhknpSz1gu-SeKJ7N!7#poOBmA z#ry&VQl=mjxE#OP{4D+dlT+ZLnrAZX=VI21!%)-6SHiA@O_88JwUG2qEe=3fT z9LxeW3&(NC5v)?xiQ~K=-ByS)dRv^v;~R1>{u;ZS#9H5XoEHxcVHLPCm{ly*1;!A; zX?)Rec*=~=DrLtj4q;XMZMpumZ~09*HzPR=~n(2&-$TP@+Jqq7uh5Vh-LB;yL-?q+T?>Ku1n(Ah|k^9?HBmHL`i%q0HCt z>`oz`X~WwA^+j?SeY1AYk{oa_KpA29q2!}LF`*&sn-g9dn}O()zrqe3D;_MWr$bmY zN35g>Fc_e4T}dFyE;bwK951Rj07O6NEJz_XEPS4z0s8=_Ry3wAAgLC_moEt!zo7tKKsP4(7*&J&VcDl1VYvn)Yn6j zY~QT>-fj8yVXR8jOyvHzm_CY-agO zho0WWCnVW2($K@w5ik7cvg-4{hqDTXl+)^1k`S2uH-uZ_&3M8HooY!8#o8T&FA#$Z z1@vNDSmkta#r{||(RY5pCiNQi-OW~N-(jzp8%;hIjP&NuIW$BNf)XLAKyE1oHO99$ zz7LDI3<$v+e!<6o^M>xSvL;m7UsTyxYh__RoU%_vn?{e~7rtaoG|{8P)Hehn!8-M8 z;v3Jm;;)?gZunA3h(s2N4bAHo=mBNP3(zgPtb;zR$JoSndegjFAno8ZJx*wGliFi< z5RU4@dU_{8An)i+lO@&#X-WC{_0Zx$exhe8$5scn9dIjNnch^C;w z7igqPkd5fN)M*5A#R>x3?>OT#eKH?9l6m*E=$?$Av5oNh(#uA-z_5bztDqm<~6+iI97`v|BCr()_U-V zU$Jn<31etueiXZj->UQaqgm7PEnFn|?-NYNqlX!il51iH8@ zc2mycfQ!C7b{q>gRCf|+M@p2GwdHMX@-D%5rQ(U_N2!<9qfMHeQN}BH?l8*uL0Je^ zi$Nm6c4$RWuMO3^5A`aBW<~R`-OWr}V#?9RhnRv;pH_2$(qkVaTpML*rq~lEIx1g} zB*`c*2$1{87||GW6K+OKx`+W@R7rhuN$&-6bV4kjDVX#EaUZOPkl+7N@ zyt!|m+NBJ}_v#MLNk6r`s?}AtJu1#PSYrOXob^lQX8J1E8cWVX!ACSO04ey=A zD)Z1p=GM2PPon80N5#c51ZoQN7TqKyS4g5<5kQBRSWkCQ@>soL(| zvhLbcH#|YuD2Yw@=0sLIvWiUbqlB51(AZiB-A)N2Q$=vgh>QJbDSV)OMMJU278_y_ z9oL_`B(Z?1`{5iJ6K|dmN;yoWTxe{?6pt76=UtLm(|WD3Xu!15n>@;ZO$m&rQya_? z&rm(``%z1KVGbyL8}ma+taiQa|B=UE=2;>0oTC00c}g|r?i1N9&C>_`#Y7gsr#|v^ zD4md}jQC(##QjD$@Nms+BMe9Pfeulf)3T{NCK+5WB$_*KWP0r>n=-uDMpmcA<)QMh zPx@atiC@&uLfXl@ez16-O}qiSkfUHbRtrP3?sg@$ZJ_tIKMeCxN-zlkdXI!NJ(@Q{3=H0-2us>fJVDd z&`6MIG*Eg;G)4yk4SyAl@5#|0=oqhqkaEqkcoFpo2)tJVT>PFmg^kdDIP#7!>=@#w zT~pDC?{o;MTz798NxFU1SJ>X{mm;;Bqq=V+p?WDmsF>UPc>GjWRdXVZkDJOotKCAp zAWWc{*I5|CDm`yoogx2J78V6Nr?C23J8Pw2N3zl*M@m*|*(WQlgdF6^SX?Y#4G^mI z!CqPEnIoc7zx#-{R_do#y8o87(qA32`TA+N0?_9KzdVhlYE~cT%crxe?k{cV+C-8Q zE{;fP`bXP$+;Y0ExBFBdA#P?PNF@jIilP2HzUU&W;F={;Lbu^v9jrL3>%3b&GPp5! zp2>Q;ZL2IYg?|Aiy#=n$8FOeaY92F@_T^?;>US5Z_NkGv97OC1%{I7Hzr zGOAEuTDkT+&c@VV=}}E)_)TxcvSu9|YA-$(Si|jM1yR-{N)mYf9mFGNvq@eFNRXK2 z;!9%IF9-$x$@=m7<;ysfdjUg81UjNwagboTeR`@G;5k8^g%;o)8EknsfkRn?vuG7UjG^ zfTt>PiU(E62^Yat-nwCnX0F@j;yIEt=-P0>ue3uC_!C(XT&5DRsM=V4-km{&Qm~wk zdmUsY?**hK)e%4k(DhIN8I*@mc19Zm?Bj)p#9A-Oa6tEn3Nz_0Qef1*qyQSm3?brB z)sv}eb3{H8qEt-{&dT_$_CVB;K*YB-J2ppzql|Y#fD+3g0Ps&J zBT8%>aI(D}KlDbYg9e1iu#JA2Blrnw;Ui_$c7bTQ5{ROJa{?&zBm$IrO6L4S2B&3Y z7J_{kf4GP&L$#8VNuSaZn>3`w+QOqsz(<+Kg1~^1Yy^Hj-{U7R+bj|zc1f6x2!L1_ z6)`OkL%-8lgE)%4R|Y@_jFPA)Vf`_zKnx-wib32-fl+sX0&~Qv<3)qG=NGMw0i~rQ z#afz57RsNn6+wY#k%R)hWPv-V2$PNwMS%w>Fh?9KDo`u{MM~Vf9w@%pNf#DydGW?g zFRu=mb$;kxzU~_qtckA8FMPvl;hJo-&u!(zK7| zJLWR~a`VgC3KxmTK}(fm`CY_0^gtY4jyt=RyUb$)ZKL^wd91dZ#ZkV=PSYFP1mb^&|C=P_c{$lFxA3R)S*7X+@S7HZ~v_gmJgx@#=(U$f?&MP4lbdNVCp5Q8V%(_>iRP1Cb^ zYcs3esE#aUC4$t_w3zg)s)|f>;vu#bWhBT}0wKXgX;hVOHnZR!CnV1!L{eQTp`c1p z-ZnjC<{u=?U4p@e#zr~&DNM)_(j_V1ZITE=Io1lhxCN|Ib|WTDSrjRuZQs!ESPZt$73!PAf9m9ABg-h!D&%~ zWky*#1=8U#B?%7y8?H1eIXB=x1rJV7fHM*#$P<@bnM2V;0XfsOv3gT!7diTQRZ_BQQj6|OD~K^L%TgQETwZlDSevj4G^3onE}9T!nn-Pc0uM(j zcq&b8!=n~Ll>Vd*MF>ml$YIgyUH~p_-X`Sr!e-mLmF*mlT`b*fz_#eZ6xzUEvU9Sb zZvGP8oZ6KJ$hPu3-enQ{%H9!CaptdfkgBUPzjc^7@TZHIWBH%|#@nU1#-7otrY&{K zu(N#UPh~6c8jIQ2nhP!Y*2N5x=Pfa9+lW36dPLLKqLluDSNe`MaB>Ar5Xf2la z`i@06ov0CXG7#vbt|v5ptRU#5W>&txK6xgdc*+L0@e*nhLE+jKy!*i;dQ=AU;!nSW z9|@=Rf}~?)*C{Q9mv3FaaN!czjR&BW59?(tE|dR2GE&TBZ3I?R3|HVzsYI0Ew8nlO{j563M=D2it_#;ZrBdcu&anM zK7&^jFm*G=<>+$O-mUzWm5ntQ2p`apkuA1KxqN$#!|Gv^IS9-ZJhyhcn2G z7IY_hM#u5t!x#JwXG3Z?F{v$iOf9L6U(}KfmQAAg?A$1)9#9M>ygx`?|pEP>-M<+h% zdp5(a96)7DT8w3-dDWH7Rg-v+H(1HWXq><2Kdxk*+^fD5rS=*Pi8-IDjdOj+%dBDz zx6hrm*$X2vZorV{RtU6V3eYe*|$;Rol@+;9XR&$^*JeNRcWa#r} z$L{5E?g@GQPN~0)ZxZq{PVt*-*&Kt-_oUat6YXM%l8?Js zuP;j9nRs%Pq(rh9#_DOCR0=C9eBDBO1NX8;+jY|ygQ2#G4l7K|gDuavP{{RRasGkM z-)tjV8+4u?__WuX-8-2Qvt7c@COL$~WxG44z)+OmT*tgUW8RgexpotQRbp%D@{T*K zXQMje{$rfKJzl${{Lx|4&$}d*rocU^v?cnyBi@8Hwi=xG8rnL!8z0nWFbokai8#S@ z8iOYxpt(oYIMy)Pr6cONGtXMj0-YQo!0QLKg52m-6W11gfQjH3XYTg{>!F!@oKO3K zg=kj($ahfui2XeK2NtgRx*RXJfmJrFJ%)qnR{c$_`dHG8t@`B8z}Q|b5M$s5RbA>5 zXkQhbgG$eFVY{}V7ZSUdltP5qvQg$)46=|9LZ2_A=Ajj@A$CR--aLf;fh=PJt}O1_ z!hhbt%Gw_1yEm{9?<&|%#+p-!`J)4WdVxzT*cAVuTmB=C?Wb@MjH$Ov{-dZ_GyQE6 z9kJf~(%kN`f-XVeIwf)!&;DbI<05Er#DkzU?w*4R1d9iO{RA*tMxQSbB1ev@_J|lK z3Hs&`H2NE0pq#ZYV&xzsgH&Ked?CU15ZGJ-+hPUV2VJ!FGNoC!s&^TyqDx+|#5-9{ zOX{Yo;8!sVVhjJJDhtL;C{~qeV_!S+MU!yL)gAoKv%cVWv=V>+0oEjLs3n^{eh5x(>_j;UB z89%*=`8lk7MkA*i6y(a+b_%K2p`7Sr)s$c^5~<_=`Ib8V6MpLu^dI{rr5lx2#H7D7 zV-c@g-@VClAV~68A5hwQ8iCcN)PaII7?VQucnOn%AoT}=nOy1}KeCy%;c-s*uJ{EeJuwcUS|DIt_16hd2&5;ZY6+1*j5e1|})gItkvb5rmDp4%YAfjj?N z*HycE@jITbVP4wb@Ue3zym%~d)Ry7>jJ3)c{>Zkc-lXH|XA432=4m+H_LzxTNXPm! z4$(kN1F!Iyu0{=Pjb%LfSbs!Kq`4}+7&k)a(4cHxq#n%^vv$5Im^HfVNr2(yLbEO_LZK2R( zR=tXNqT@{6*~#+WPo^%nHth274|9nxPQU|hmjjmn%=}vnzkW`@s$wdhj~0w9^0^?d z1qf2H?Z@MZwpKtiunOfP4^H|z6 z?3Q3d39K7|Ehz$n6d@~KEMdkIOm~7AgC{IM{>(bK*OMvJ5u{@C1zS3#4A{!t8kbhf zrIgl`a^FJ6g-Nzqm+z6juDw=uu?$N*J_dte>+yn_X>i8DupJ`pV-v{IL&ddM1O zHEK6oVR8Bk4fjJOV~&*c3X=KsZE!mF-j@Gw8*A+L{bNzaLjKfI#b5wWOj_l~Hlsn6J{K7i7ocy;a zE(1a89V)IHOj?V^J$bUXCduA3*t->H)4YoccWaJrDeq z)oxx(CU{W7OiC#IUSL%xE58bpA88v9XFQmV07SX43a|Maiwi8Q zVqG4sSBjm^cMkpBdAG;a67@7|l<83T&`FZD-6yi3M+Y;%?|WZ~Z0e3#0lz z61oRp@}0Zc7uvTuPTaDadE4!rh7D?Pwp~RYx`%nSt}ippK#)q;78EBaeno%4_Ssh> zG(FI~RJ84Y$49dDH-2BX~Kjt5ywjpqvzHtnNJ&=TzSN5UZ|n$>n~{{M`AXW0lMDb%&UP z*B95Us)4Js3>|F}{h?WJe9eic9bzrCudX_A&0*HOVmZ8>32n<&%pMbqGw+TUW+rcx zMH_f8q*ssMfa=XjTO>AClkn>c(G4)}!hO;QIsD*Z7V4jMSZcWP4g+E3j|ozm6f3Lg z2+dK&cMW$>W$hc+*hBMHobbjOe^lqK*;Oc7wnkoBu_akhKp;;C!L5X$Z%m>}Y@L80Hd)``1 zOL9TBnAl5@2*G$QzKu2X4{*=SlEG9R} zNgRGRfvycojbn-lZ6o2C$E2}pr8X%aP%w9Wg=fsaPGjzM3U*Qd{!jA7U26aCbQb-q zoWk^rG5#ax#=&d+Xc{b@mQ3JJ(^y2=zbnelYcfV?%iOqcx5{>5K<39wR$9t79r-|m z*>4YB_TEKTUX01~S1FB>O(H@T{`xAPn+{L5OULsk>8ze+aR#q)lr^i9dq`~3T+raw z=nS{3qBCw{z*FJQ%|>|+!$Hv*N?`#{If|2q)))DXqs&M1el$OKlm*&(Jit_Vf0R|W zGbiEPwPVjxRqaf=eHVE1W3VGWevp5E3`^0qiJ7;XWE%8={yg7)99aA_ik~?SEWG{# z7KO)IxZRa|_zFA0f&wm${MR0?&b5-8sV4Zv7x%LF;A>Cd3fOeO6A@zJs`?3BQ1P#X zyhhOH6_aWpeif5y)8Z0*i}Rqo;No9a-*o8hSj2)UHjToXU&}^^-l+2zkIaBiJy>&$ z&R{K_M{O>_UHC43Bm-?;1b2BEtX15m5@|Jefd_#1?Y|?W19j@W`cl#+HE9)I7c1Vr zj>13}|4O;azsh7@hIx0ej=`{t#zCs9XlXAvcn*%wsLiU|DQKR{NHNKDghocWjJp@8 zU6{qhyOXV&SlBDT<2-T8om9Xl`N!C+VwO1O!ZieC#$)&x)}CZlY#;M#Cs`e@KirDS zSpsM8R8A1e;p4`^z}j$<#W$Sqj(K4AxP&0p0c3%d@oPy`Mu7g8;x)TkBSJ=VzPLvpdBm)os%mvFCh` zKyFgE=J16VSw)vOA|cdnyV#><-sHKHf)~48$r9khV09t4s5fu(MW^8d@q3w2ixR{R zb?t2)IWc&SyGAC=Lm)S(rEeF?4Jw=8pp+p~cdJX0XN7`NSewnE9%lr7g(4_&T~PA` zIG{PS*GUQ@ex6JA1=4%@JEbFZo>)Y_EiH0uW$x-FbLSl={%M8xlkg4gy=%Qy0{Q&ppE$RQu|J$bAq&Dmb5wvL2@Jg7rw(al3Z&8)sN# zR9Oi(jkE!D&=75GcS&gq*l1I`O9DOy7qbE|z3!YBB{riHYgr*(Zt^~78FO1H6BPu~ z8{?T9eBD{rF=E@=V$JIk0c6!Ro5mDrUY{vLaMVF|{X(qK5F9-JwdQrtv8s^`hoB$v zwjM4y!&us?1kOSB60@q(?^X@0sscVj>6pTI`}1$lv8Zw#*3kTJqMj@NRHTnI2-2$cEm{s z={SDjXk-=zLX+v9t~W)eV?Fm+O>suu8U(bJa~gg2?aF7eQEPWJkU|8`9YFTRb}(mTP~-^LN=Wvp*g02{Y?5 zQAT^*HO03n^f3M!6SLioPP_1h+X2TBD7011dkS#|J*r+4dj6GMyo$sQ;#M_(Q}q(X zaHj|kJ^OcGp)|QBSdnlymHc-ZRh;N~oUb|0BI`{Z{ub-?8)a`ZtlQ*J(Hzm}te~S4 z2!vZwi1qTErT0x<_5!RUZ6&}#0^mRsjHr&4c;&vovJ!HSe*stzvo6LKw(;nm9A(mS zYK?CCF+T1B^QzOhpOss~Sl80QJqd4%=sw<{E}#K^rZ?i5HDgm?RHg&pbpdw9^Y8LU z7uZlYJzkXm#O~|O7Ri;)9v5uJ|Adt*UA!!~lB+LbFl7@q39j_)VxhF9dVNg5e*+5; z$(G*35?k0(xgV5CUr>@@Olf}>@~GKtqGvEtq%qa+_>#;i>+Gy$4)&%Pjdoh$t^>keF{NQ!U~5fMx1$|?*oX3{jW zdhhJio0k0IrG|&ksbg=5#B1cJSu9V!_*R#vV_0!%S&8}O^X2J%o(mShG+bvW9cP{t znAs+hFeKPl;vv#E$~A;gzEHGy&9Z}X=4&Ym@rLzu~)G2GuwjwQF71T@wkcB8h z)}%XX@wCzER^zYKPOE0yut`y-;DrwyfPl44!xdEnuBe7#+KvM#?NtZsO+H=e+w3?i z&g?%g)|TELBt>+}NWni_>v@eUtek%jHA4_Gg#TxTxRJca6_((#u&pN!x1Hx41A~~a z+uxR-xWejdMzvjjjk!Bz52I2OgYgQ^7j3y8qC)>cMWCgM$cDFOuEKm;fHWGKJk8xM zsXyqo*_UDl%}0=GghZ`4Uf}(&GLPE%!$sByv1(Qyk<~c`>Qa;yde$1>VFX`ymHD}y z94-p-Dk|vv^Zepf2+cKO1$G%ji?Gwh3hWFoP$Y`Fq*tr>2``tR0ZzfEj3>d4n1uFB$ZvWTR7mkwmblG%(ZAMp-eD@Q&z+C}k;X%1eVMG}JyB z5mftBwf4Q_APu!gQeLAjSO(Q7Fh^9<_bsa3A5lgflj#*?P!R!YuPTx%QJgt+PX=nQ zBx`p>l;TCTcSJS$s6d#l7Iq_52FygdlEXC*&Btzh%XJoH_zhW)C0pzg%O_jPBzh!U zoM<7|wWVl;jnuHA1oKS7mQ^QyAl#uQ2B~3vHJq)6fofP+4VfB#rH1t~9GyiiP1T6- z3_jonGdL%%Ewl`+XMLPuD8Exf>t^VLNSb*Gd3yDW5r*@DD^HIE}#Qa|VBh!p;~k zA!W$;bQv5K$;T-fk6IUc*2X~lq=~c~W$Sd@@PbxX_yE8oG%(1QmeP6QsDlq!Qp=71 za}$1a{`bpUH$min(yXi`Odql%UFUJ2vyvX~*bT%fex$dBJ*)q=X=Y$?{%sDz>jNGRSI z5hCNjP9ztQ@X&nIIquiQ&du%_n!;T@YI*YJw{Zj3V-4?coB0J5P>w;sHwPo8)LZ^i z)CPB?Nmpr3wwr?LA)Y9gzI?^|nSwm{j@x*{M%M%Khj|()!0I292SR(O^~uKqG2g~~ zV~^2r>gY!);sEK-?tnLi(0wxK>QQV@c|>{;<1X_pTsRvDn#v#MvMOGCyW9drI4@X4bZVNhB5qL9Hl^An zUil8I<9gwTLOdmS(W;O9ek<>JhXsTj1qH;K?EG71*f9(SM)29!v;xgoq)dY{7OEng z@*?)SHFn4fzVi;N^2JVTL^$be(d}{VsoO={yWw$B+*1$z8M}ick)-U{pGfO|rsDMm z4Ts$wS@^wHVhiclRo;JuKRojo>=W{?+C3B8Nk{>r`(lmf^uq8>`Fl-1HE#}l?m=$G zV*duO9zaiMQ8r9}X2IE=^Bfq{;QkU)aP0+G)aJ|hM91Q|{701Uw&IK=42ScalgL7t z)xJGVjoB+=#3jCpZNxY^&-oE?s#x>7HNSe7`8Z^@reQj+w79@6cNufd2VpDr7pxup z+ZG;qkNInE;tjKVEZ8rg^evi*G^#_vcw=)Y zV*^+$79S7si2JNUg{H(&EXSZP(}x`!e=}c8Wt((ucJMLxVQ2FG3%>9^6lE#rz}W8m z9_Ycd?=#N|-;{l3iTd4E&_H!`r=&_{%q4EQ53y?CC0^$NxWSxOyzK*4ZD4#WIk)Bl z6r&zx>L<)2bCwdjo?g-V`y77Dms8JXJUVobdQN0_QYE`sQw$hH=wsx;+9m0(qZJE3i3J`8pCmfS6~Ciu zWkgwspGBkUv?YA7fq@I??D3fjr4xYI&3$MLT3}G-w|I+gO6-Ej+tx^G*LWEp z9uo{Dbhv+vu{o~HVI?ZHsVq&I)1b%vy<+iAMYdGP6|}Sc@;E=72RBFy@IptlQAs{& zoBURb3!5u8y+CheD(n4USz>1&2hrN)`zi$+W$b)^9{mUg*%2rSZnJC?+u*N5l0Ob$ z&Z7tOn?$`i0SOZwtm6PdbS>&w=V(P}^4{zbc(fus9*~lL#t~HpzrD6ImmMe+&x%w6LV$c_1|rJ(|z ztS~WUE94lWL=4nS3^bl7$c{4$$M3|FrsIew1`mV{ilQasjWP*k^hi{DjeBT%asy`qmPa5naVXd{br;JR6%GgG!T9fDe&8oGy0Z?&wz=Qhg02wf*)&T%AEJ6k( zxg-fi1QCjuB7o+!{oK59Se6eEtG@!@YRVjF_#lT@1;HcbWmQ38HQmw+_^h-EP)Ez)^ehVAQE zQz{KHxcV$*QePXJgWy2eS~$0gyCG@mY{Z zN%;dQE3u!g{P}ZigeN}W_64k_^BFUxAJ6+1r7PLL^5zB1*RlEAJdl?KsL{r-XtF8i!=Q)8K5`{ z-l1e`kW~ogC9_pTHi!?4Kr-NR!57GD*K*W$5Dg>c+HV`s%Y4m3pNhI+&7m{nX&c<# zdD9oHvUgufGNJyMZ1vJH$k8^(g^zv#DSJ>TH@#qWLN?98qMkW-J&L1$Q5kLg(T}w|+%F<$fhP!5h+WzC^U-i64?vX=RM_oLOKw z1mZ~%Vipg7PwmJ6yz`uSlxp6+57>Z{hz9+991WthF-Q|FF^P1ge{&FXW(r|WT?i2V zZ8|K6gj{!K`3Z8RR?1yu zkm;F)9~X0xLBiP9wx+6+~9&=kc&Y_C@&}TCpxZ z*BcZ4eX;f*{U2Xm$U;l+oPFM+j5^5e-@y~YlS1a;vZygO2X^^A^TRaJ_`B^wP)t zz&q9~=BM&V8xqf@RR>Af5U;^k|Wsx)mS`2 zDRgh`Oo#ku0UdI8(G85b(q$LOIi+LG>sBB(HuD5bjY>Yt{bm|yk9vVZc)5s8KH-~` z6Ke*kZLdwFXi+u-|JckqqF9sxUN+qy_Hqp^iRF|Tg)gxjMEko?g3@dj{v6mt`}^Ph z*CVFHzL^MN(loyABlC`Jg_5b&<~ipO9wQgI1g*?~+e3nDl|zroABSA@Q1KG5Im!UQ zsy&oDm`D!((B>?+Fn{f(U@f=&>Evaw>;uEJF?H}RlOC4toRTGY@(dTHBAye#7RPzc zJ1AplnJ++yhrmv@GfzStZR24fUi%gAnwX36N5=cJVBUNO+c3##{|M& zu8WQHoHNumGm6gWfDN88BgQntJBnvnU{A)|EprKO<`(@H=Vj`X(Tnk|-1>Q0-{2;i zD?^s82oBV|7_#hWaHzKeItRJ#Gggc>&lsDEp|L2NPs5PK**3U>*IuNyGjAec0ve6S z%f(sl9L`(V29MJuZ{xoqtlJtQYn}%(ViPc79j&|`Cw_z^JPk8bDg22fVdoTgFu|<6 za{usnO>lK>_B(q%Q4?Inb9@cjAv(_?1s>=+jdrMbE^wy--cU3&v0QB6%^;sf?6?*!ovB$p2l%# zgjgDB?-e|dKhg%z)Yt~|5q80qJI}6z8Q3_#K|af`mtQBpHb??o%m{%I6EVD}=;~}G z1RwdXl#r?Xh||B~N7vRXKQJ+&m61V$Yu;SMui6CB@P`zG&lD+4O#ve$eS?Q=NHH$^TdqYsH%SMaB*~ zVTdy~jEqfxVAs~%FoX*F|44fis3>o!e;5W35OCOc5R_dIGKf3MDCnTzzF>>{Uac!w zt>Rz@)Nve_wi;WtYTqta+iGhSTPtF?0 z_)LuB#+{FVZ6EGabSzJVb;z9*uQp7;aSeC z>4@w9V$oG+?gh37fHe-rvj}4#_!~|Zv$OYJbL?iyj0mJLHqDH~a*mgmos7JpqOJK185gG849gd!SZY}&>=&On^>^9&8UTr

tD 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 diff --git a/Tools/build_and_publish_steam.py b/Tools/build_and_publish_steam.py index 4f45725c..807b3a8c 100644 --- a/Tools/build_and_publish_steam.py +++ b/Tools/build_and_publish_steam.py @@ -67,6 +67,7 @@ if __name__ == "__main__": build_config.build_tests = "OFF" build_config.build_deploy = "ON" build_config.create_installer = "OFF" + build_config.build_godot = "OFF" build_config.build_type = "release" build_config.screenplay_version = screenplay_version From 4849905a4ad7cbbf8c0d67c9e079dba2b79c6e6d Mon Sep 17 00:00:00 2001 From: Elias Steurer Date: Thu, 9 Nov 2023 18:06:52 +0100 Subject: [PATCH 047/101] Replace deprecated define --- ScreenPlay/src/app.cpp | 6 +++--- ScreenPlay/src/createimportvideo.cpp | 2 +- ScreenPlay/src/settings.cpp | 2 +- ScreenPlayUtil/src/util.cpp | 2 +- ScreenPlayWallpaper/main.cpp | 4 ++-- ScreenPlayWidget/main.cpp | 4 ++-- 6 files changed, 10 insertions(+), 10 deletions(-) diff --git a/ScreenPlay/src/app.cpp b/ScreenPlay/src/app.cpp index 457030a6..d8ba84f6 100644 --- a/ScreenPlay/src/app.cpp +++ b/ScreenPlay/src/app.cpp @@ -1,7 +1,7 @@ // SPDX-License-Identifier: LicenseRef-EliasSteurerTachiom OR AGPL-3.0-only #include "ScreenPlay/app.h" -#if defined(Q_OS_OSX) +#if defined(Q_OS_MACOS) #include "ScreenPlayUtil/macutils.h" #endif @@ -75,7 +75,7 @@ App::App() QGuiApplication::setQuitOnLastWindowClosed(false); QString fontsPath = QGuiApplication::instance()->applicationDirPath() + "/assets/fonts/"; -#if defined(Q_OS_OSX) +#if defined(Q_OS_MACOS) fontsPath = QGuiApplication::instance()->applicationDirPath() + "/../Resources/fonts/"; #endif const QDir fontsDir(fontsPath); @@ -234,7 +234,7 @@ void App::exit() void App::showDockIcon(const bool show) { -#if defined(Q_OS_OSX) +#if defined(Q_OS_MACOS) MacUtils::instance()->showDockIcon(show); #endif } diff --git a/ScreenPlay/src/createimportvideo.cpp b/ScreenPlay/src/createimportvideo.cpp index b620f3cb..bcfa4950 100644 --- a/ScreenPlay/src/createimportvideo.cpp +++ b/ScreenPlay/src/createimportvideo.cpp @@ -723,7 +723,7 @@ QString CreateImportVideo::waitForFinished( m_process->setProgram(m_ffprobeExecutable); } -#ifdef Q_OS_OSX +#ifdef Q_OS_MACOS QProcess changeChmod; changeChmod.setProgram("chmod"); changeChmod.setArguments({ "+x", m_process->program() }); diff --git a/ScreenPlay/src/settings.cpp b/ScreenPlay/src/settings.cpp index 201a9afe..524573ca 100644 --- a/ScreenPlay/src/settings.cpp +++ b/ScreenPlay/src/settings.cpp @@ -60,7 +60,7 @@ Settings::Settings(const std::shared_ptr& globalVariables, #ifdef Q_OS_WIN setDesktopEnvironment(DesktopEnvironment::Windows); #endif -#ifdef Q_OS_OSX +#ifdef Q_OS_MACOS setDesktopEnvironment(DesktopEnvironment::OSX); #endif #ifdef Q_OS_LINUX diff --git a/ScreenPlayUtil/src/util.cpp b/ScreenPlayUtil/src/util.cpp index eaf02123..25cb82c5 100644 --- a/ScreenPlayUtil/src/util.cpp +++ b/ScreenPlayUtil/src/util.cpp @@ -131,7 +131,7 @@ QString executableAppEnding() #ifdef Q_OS_WIN return ".exe"; #endif -#ifdef Q_OS_OSX +#ifdef Q_OS_MACOS return ".app"; #endif return ""; diff --git a/ScreenPlayWallpaper/main.cpp b/ScreenPlayWallpaper/main.cpp index 0e875807..464d3800 100644 --- a/ScreenPlayWallpaper/main.cpp +++ b/ScreenPlayWallpaper/main.cpp @@ -18,7 +18,7 @@ Q_IMPORT_QML_PLUGIN(ScreenPlaySysInfoPlugin) #elif defined(Q_OS_LINUX) #include "src/linuxwaylandwindow.h" #include "src/linuxx11window.h" -#elif defined(Q_OS_OSX) +#elif defined(Q_OS_MACOS) #include "src/macwindow.h" #endif @@ -49,7 +49,7 @@ int main(int argc, char* argv[]) } else if (platformName == "wayland") { window = std::make_unique(); } -#elif defined(Q_OS_OSX) +#elif defined(Q_OS_MACOS) window = std::make_unique(); #endif diff --git a/ScreenPlayWidget/main.cpp b/ScreenPlayWidget/main.cpp index 0b25b869..50f89732 100644 --- a/ScreenPlayWidget/main.cpp +++ b/ScreenPlayWidget/main.cpp @@ -14,7 +14,7 @@ #if defined(Q_OS_WIN) Q_IMPORT_QML_PLUGIN(ScreenPlaySysInfoPlugin) #endif -#if defined(Q_OS_OSX) +#if defined(Q_OS_MACOS) #include "ScreenPlayUtil/macutils.h" #endif @@ -92,7 +92,7 @@ int main(int argc, char* argv[]) argumentList.at(3), // Type QPoint { positionX, positionY }); -#if defined(Q_OS_OSX) +#if defined(Q_OS_MACOS) MacUtils::showDockIcon(false); #endif logging = std::make_unique("ScreenPlayWidget_" + appID); From c9498b366e808fd72cfe6f70c4259be3c6918acd Mon Sep 17 00:00:00 2001 From: Elias Steurer Date: Sun, 12 Nov 2023 07:32:45 +0100 Subject: [PATCH 048/101] Remove old code --- ScreenPlay/src/monitorlistmodel.cpp | 20 ++-- ScreenPlayWallpaper/src/windowshook.cpp | 111 ------------------- ScreenPlayWallpaper/src/windowshook.h | 41 ------- ScreenPlayWallpaper/src/windowsintegration.h | 31 ------ Tools/setup.py | 2 +- 5 files changed, 11 insertions(+), 194 deletions(-) delete mode 100644 ScreenPlayWallpaper/src/windowshook.cpp delete mode 100644 ScreenPlayWallpaper/src/windowshook.h diff --git a/ScreenPlay/src/monitorlistmodel.cpp b/ScreenPlay/src/monitorlistmodel.cpp index a5d2e954..4a3fdfd0 100644 --- a/ScreenPlay/src/monitorlistmodel.cpp +++ b/ScreenPlay/src/monitorlistmodel.cpp @@ -114,16 +114,15 @@ void MonitorListModel::loadMonitors() #ifdef Q_OS_WIN QModelIndex index; - WinMonitorStats monitors; + auto monitors = WindowsIntegration().GetAllMonitors(); // This offset lets us center the monitor selection view in the center int offsetX = 0; int offsetY = 0; - const int moinitorCount = monitors.iMonitors.size(); - for (int i = 0; i < moinitorCount; i++) { - const int x = monitors.rcMonitors[i].left; - const int y = monitors.rcMonitors[i].top; + for (auto& monitor : monitors) { + const int x = monitor.position.left; + const int y = monitor.position.top; if (x < 0) { offsetX += (x * -1); } @@ -132,11 +131,11 @@ void MonitorListModel::loadMonitors() } } - for (int i = 0; i < moinitorCount; i++) { - const int width = std::abs(monitors.rcMonitors[i].right - monitors.rcMonitors[i].left); - const int height = std::abs(monitors.rcMonitors[i].top - monitors.rcMonitors[i].bottom); - const int x = monitors.rcMonitors[i].left; - const int y = monitors.rcMonitors[i].top; + for(int i = 0; auto& monitor : monitors) { + const int width = std::abs(monitor.position.right - monitor.position.left); + const int height = std::abs(monitor.position.top - monitor.position.bottom); + const int x = monitor.position.left; + const int y = monitor.position.top; QRect geometry( x + offsetX, y + offsetY, @@ -145,6 +144,7 @@ void MonitorListModel::loadMonitors() beginInsertRows(index, m_monitorList.size(), m_monitorList.size()); m_monitorList.append(Monitor { i, geometry }); endInsertRows(); + i++; } #else QModelIndex index; diff --git a/ScreenPlayWallpaper/src/windowshook.cpp b/ScreenPlayWallpaper/src/windowshook.cpp deleted file mode 100644 index 032721f0..00000000 --- a/ScreenPlayWallpaper/src/windowshook.cpp +++ /dev/null @@ -1,111 +0,0 @@ -#include "windowshook.h" - -BOOL CALLBACK WinMonitorStats::MonitorEnum(HMONITOR hMon, HDC hdc, LPRECT lprcMonitor, LPARAM pData) -{ - WinMonitorStats* pThis = reinterpret_cast(pData); - auto scaleFactor = DEVICE_SCALE_FACTOR::DEVICE_SCALE_FACTOR_INVALID; - GetScaleFactorForMonitor(hMon, &scaleFactor); - - UINT x = 0; - UINT y = 0; - GetDpiForMonitor(hMon, MONITOR_DPI_TYPE::MDT_RAW_DPI, &x, &y); - pThis->sizes.push_back({ x, y }); - pThis->scaleFactor.push_back(scaleFactor); - pThis->hMonitors.push_back(hMon); - pThis->hdcMonitors.push_back(hdc); - pThis->rcMonitors.push_back(*lprcMonitor); - pThis->iMonitors.push_back(static_cast(pThis->hdcMonitors.size())); - - // qInfo() << std::abs(lprcMonitor->right - lprcMonitor->left) << std::abs(lprcMonitor->top - lprcMonitor->bottom); - - return TRUE; -} -/*! - \brief Searches for the worker window for our window to parent to. -*/ -BOOL WINAPI SearchForWorkerWindow(HWND hwnd, LPARAM lparam) -{ - // 0xXXXXXXX "" WorkerW - // ... - // 0xXXXXXXX "" SHELLDLL_DefView - // 0xXXXXXXXX "FolderView" SysListView32 - // 0xXXXXXXXX "" WorkerW <---- We want this one - // 0xXXXXXXXX "Program Manager" Progman - if (FindWindowExW(hwnd, nullptr, L"SHELLDLL_DefView", nullptr)) - *reinterpret_cast(lparam) = FindWindowExW(nullptr, hwnd, L"WorkerW", nullptr); - return TRUE; -} - -bool WindowsHook::searchWorkerWindowToParentTo() -{ - - HWND progman_hwnd = FindWindowW(L"Progman", L"Program Manager"); - const DWORD WM_SPAWN_WORKER = 0x052C; - SendMessageTimeoutW(progman_hwnd, WM_SPAWN_WORKER, 0xD, 0x1, SMTO_NORMAL, - 10000, nullptr); - - return EnumWindows(SearchForWorkerWindow, reinterpret_cast(&windowHandleWorker)); -} - -/*! - \brief Returns scaling factor as reported by Windows. -*/ -float WindowsHook::getScaling(const int monitorIndex) const -{ - // Get all monitors - int monitorCount = GetSystemMetrics(SM_CMONITORS); - - if (monitorIndex < 0 || monitorIndex >= monitorCount) { - // Invalid monitor index - return 1.0f; - } - - DISPLAY_DEVICE displayDevice; - ZeroMemory(&displayDevice, sizeof(displayDevice)); - displayDevice.cb = sizeof(displayDevice); - - // Enumerate through monitors until we find the one we're looking for - for (int i = 0; EnumDisplayDevices(NULL, i, &displayDevice, 0); i++) { - if (i == monitorIndex) { - DEVMODE devMode; - ZeroMemory(&devMode, sizeof(devMode)); - devMode.dmSize = sizeof(devMode); - - // Get settings for selected monitor - if (!EnumDisplaySettings(displayDevice.DeviceName, ENUM_CURRENT_SETTINGS, &devMode)) { - // Unable to get monitor settings - return 1.0f; - } - - // Get DPI for selected monitor - HMONITOR hMonitor = MonitorFromPoint({ devMode.dmPosition.x, devMode.dmPosition.y }, MONITOR_DEFAULTTONEAREST); - UINT dpiX = 0, dpiY = 0; - if (SUCCEEDED(GetDpiForMonitor(hMonitor, MDT_EFFECTIVE_DPI, &dpiX, &dpiY))) { - return (float)dpiX / 96.0f; // Standard DPI is 96 - } - } - } - - // If we reach here, it means we couldn't find the monitor with the given index or couldn't get the DPI. - return 1.0f; -} - -/*! - \brief Returns true of at least one monitor has active scaling enabled. -*/ -bool WindowsHook::hasWindowScaling() const -{ - auto enumMonitorCallback = [](HMONITOR hMonitor, HDC hdcMonitor, LPRECT lprcMonitor, LPARAM dwData) -> BOOL { - int scaling = GetDeviceCaps(hdcMonitor, LOGPIXELSX) / 96; - if (scaling != 1) { - *(bool*)dwData = true; - return false; // Stop enumeration - } - return true; // Continue enumeration - }; - - bool hasScaling = false; - EnumDisplayMonitors(NULL, NULL, enumMonitorCallback, (LPARAM)&hasScaling); - - return hasScaling; -} \ No newline at end of file diff --git a/ScreenPlayWallpaper/src/windowshook.h b/ScreenPlayWallpaper/src/windowshook.h deleted file mode 100644 index d291b36e..00000000 --- a/ScreenPlayWallpaper/src/windowshook.h +++ /dev/null @@ -1,41 +0,0 @@ -#pragma once - -#ifndef NOMINMAX -#define NOMINMAX -#endif -#include -#include -#include -#include -#include - -struct WinMonitorStats { - - WinMonitorStats() - { - EnumDisplayMonitors(NULL, NULL, MonitorEnum, (LPARAM)this); - } - - static BOOL CALLBACK MonitorEnum(HMONITOR hMon, HDC hdc, LPRECT lprcMonitor, LPARAM pData); - std::vector iMonitors; - std::vector hMonitors; - std::vector hdcMonitors; - std::vector rcMonitors; - std::vector scaleFactor; - std::vector> sizes; - int index = 0; -}; - -struct Point { - int x = 0; - int y = 0; -}; - -struct WindowsHook { - bool searchWorkerWindowToParentTo(); - float getScaling(const int monitorIndex) const; - bool hasWindowScaling() const; - HWND windowHandle {}; - HWND windowHandleWorker {}; - Point zeroPoint; -}; \ No newline at end of file diff --git a/ScreenPlayWallpaper/src/windowsintegration.h b/ScreenPlayWallpaper/src/windowsintegration.h index b455150e..14cf94a6 100644 --- a/ScreenPlayWallpaper/src/windowsintegration.h +++ b/ScreenPlayWallpaper/src/windowsintegration.h @@ -41,38 +41,7 @@ BOOL CALLBACK GetMonitorByHandle(HMONITOR hMonitor, HDC hdcMonitor, LPRECT lprcM BOOL CALLBACK FindTheDesiredWnd(HWND hWnd, LPARAM lParam); BOOL WINAPI SearchForWorkerWindow(HWND hwnd, LPARAM lparam); -struct WinMonitorStats { - WinMonitorStats() - { - EnumDisplayMonitors(NULL, NULL, MonitorEnum, (LPARAM)this); - } - - static BOOL CALLBACK MonitorEnum(HMONITOR hMon, HDC hdc, LPRECT lprcMonitor, LPARAM pData) - { - WinMonitorStats* pThis = reinterpret_cast(pData); - auto scaleFactor = DEVICE_SCALE_FACTOR::DEVICE_SCALE_FACTOR_INVALID; - GetScaleFactorForMonitor(hMon, &scaleFactor); - - UINT x = 0; - UINT y = 0; - GetDpiForMonitor(hMon, MONITOR_DPI_TYPE::MDT_RAW_DPI, &x, &y); - pThis->sizes.push_back({ x, y }); - pThis->scaleFactor.push_back(scaleFactor); - pThis->hMonitors.push_back(hMon); - pThis->hdcMonitors.push_back(hdc); - pThis->rcMonitors.push_back(*lprcMonitor); - pThis->iMonitors.push_back(pThis->hdcMonitors.size()); - - return TRUE; - } - std::vector iMonitors; - std::vector hMonitors; - std::vector hdcMonitors; - std::vector rcMonitors; - std::vector scaleFactor; - std::vector> sizes; -}; struct Point { int x = 0; diff --git a/Tools/setup.py b/Tools/setup.py index 89fdaa1d..53d8589d 100755 --- a/Tools/setup.py +++ b/Tools/setup.py @@ -107,7 +107,7 @@ def main(): parser = argparse.ArgumentParser( description='Build and Package ScreenPlay') parser.add_argument('--skip-aqt', action="store_true", dest="skip_aqt", - help="Downloads QtCreator and needed binaries \Windows: C:\aqt\nLinux & macOS:~/aqt/.") + help="Downloads QtCreator and needed binaries Windows: C:\\aqt\\nLinux & macOS:~/aqt/.") parser.add_argument('--setup-godot', action="store_true", dest="setup_godot", help="Downloads Godot Editor.") args = parser.parse_args() From 33f744e0f4adb10e43e47741d8fba75b39ed6ca5 Mon Sep 17 00:00:00 2001 From: Elias Steurer Date: Thu, 16 Nov 2023 08:00:10 +0100 Subject: [PATCH 049/101] Add basic Godot wizard --- ScreenPlay/CMakeLists.txt | 3 + ScreenPlay/inc/public/ScreenPlay/wizards.h | 9 ++ ScreenPlay/qml/Create/CreateSidebar.qml | 8 ++ .../qml/Create/Wizards/GodotWallpaper.qml | 101 ++++++++++++++++++ .../WizardsFiles/Godot_v5/project.godot | 15 +++ .../WizardsFiles/Godot_v5/wallpaper.tscn | 16 +++ ScreenPlay/src/wizards.cpp | 67 ++++++++++++ 7 files changed, 219 insertions(+) create mode 100644 ScreenPlay/qml/Create/Wizards/GodotWallpaper.qml create mode 100644 ScreenPlay/qml/Create/WizardsFiles/Godot_v5/project.godot create mode 100644 ScreenPlay/qml/Create/WizardsFiles/Godot_v5/wallpaper.tscn diff --git a/ScreenPlay/CMakeLists.txt b/ScreenPlay/CMakeLists.txt index 584b1c55..edcf9319 100644 --- a/ScreenPlay/CMakeLists.txt +++ b/ScreenPlay/CMakeLists.txt @@ -73,11 +73,14 @@ set(QML qml/Create/Wizards/ImportWebm/ImportWebmConvert.qml qml/Create/Wizards/ImportWebm/ImportWebmInit.qml qml/Create/Wizards/QMLWallpaper.qml + qml/Create/Wizards/GodotWallpaper.qml qml/Create/Wizards/QMLWidget.qml qml/Create/Wizards/WebsiteWallpaper.qml qml/Create/Wizards/WizardPage.qml qml/Create/WizardsFiles/QMLWallpaperMain.qml qml/Create/WizardsFiles/QMLWidgetMain.qml + qml/Create/WizardsFiles/Godot_v5/project.godot + qml/Create/WizardsFiles/Godot_v5/wallpaper.tscn qml/Installed/Installed.qml qml/Installed/InstalledNavigation.qml qml/Installed/InstalledWelcomeScreen.qml diff --git a/ScreenPlay/inc/public/ScreenPlay/wizards.h b/ScreenPlay/inc/public/ScreenPlay/wizards.h index 10abc659..93ba97c0 100644 --- a/ScreenPlay/inc/public/ScreenPlay/wizards.h +++ b/ScreenPlay/inc/public/ScreenPlay/wizards.h @@ -82,6 +82,15 @@ public slots: const QString& previewThumbnail, const QVector& tags); + + void createGodotWallpaper( + const QString& title, + const QString& licenseName, + const QString& licenseFile, + const QString& createdBy, + const QString& previewThumbnail, + const QVector& tags); + void createGifWallpaper( const QString& title, const QString& licenseName, diff --git a/ScreenPlay/qml/Create/CreateSidebar.qml b/ScreenPlay/qml/Create/CreateSidebar.qml index bf1ef42b..04f66cac 100644 --- a/ScreenPlay/qml/Create/CreateSidebar.qml +++ b/ScreenPlay/qml/Create/CreateSidebar.qml @@ -87,6 +87,14 @@ Rectangle { objectName: "" } + ListElement { + headline: qsTr("Godot Wallpaper") + source: "qrc:/qml/ScreenPlayApp/qml/Create/Wizards/GodotWallpaper.qml" + category: "Code Wallpaper" + objectName: "" + } + + ListElement { headline: qsTr("QML Wallpaper") source: "qrc:/qml/ScreenPlayApp/qml/Create/Wizards/QMLWallpaper.qml" diff --git a/ScreenPlay/qml/Create/Wizards/GodotWallpaper.qml b/ScreenPlay/qml/Create/Wizards/GodotWallpaper.qml new file mode 100644 index 00000000..4f31d195 --- /dev/null +++ b/ScreenPlay/qml/Create/Wizards/GodotWallpaper.qml @@ -0,0 +1,101 @@ +import QtQuick +import Qt5Compat.GraphicalEffects +import QtQuick.Controls +import QtQuick.Controls.Material +import QtQuick.Layouts +import ScreenPlayApp +import ScreenPlay +import ScreenPlay.Create +import ScreenPlayUtil as Util + +WizardPage { + id: root + + sourceComponent: ColumnLayout { + id: rightWrapper + + function create() { + App.wizards.createGodotWallpaper(tfTitle.text, cbLicense.name, cbLicense.licenseFile, tfCreatedBy.text, previewSelector.imageSource, tagSelector.getTags()); + } + + spacing: 10 + + anchors { + top: parent.top + right: parent.right + left: parent.left + } + + Util.Headline { + text: qsTr("Create a Godot Wallpaper") + Layout.fillWidth: true + } + + Util.HeadlineSection { + text: qsTr("General") + } + + RowLayout { + spacing: 20 + + Util.TextField { + id: tfTitle + + Layout.fillWidth: true + placeholderText: qsTr("Wallpaper name") + required: true + onTextChanged: root.ready = text.length >= 1 + } + + Util.TextField { + id: tfCreatedBy + + Layout.fillWidth: true + placeholderText: qsTr("Created By") + } + } + + Util.TextField { + id: tfDescription + + Layout.fillWidth: true + placeholderText: qsTr("Description") + } + + Item { + height: 30 + } + + Util.HeadlineSection { + text: qsTr("License & Tags") + } + + RowLayout { + spacing: 20 + + Util.LicenseSelector { + id: cbLicense + } + + Util.TagSelector { + id: tagSelector + + Layout.fillWidth: true + } + } + + Item { + height: 30 + } + + Util.HeadlineSection { + text: qsTr("Preview Image") + } + + Util.ImageSelector { + id: previewSelector + + Layout.fillWidth: true + } + } +} diff --git a/ScreenPlay/qml/Create/WizardsFiles/Godot_v5/project.godot b/ScreenPlay/qml/Create/WizardsFiles/Godot_v5/project.godot new file mode 100644 index 00000000..ea0f2efb --- /dev/null +++ b/ScreenPlay/qml/Create/WizardsFiles/Godot_v5/project.godot @@ -0,0 +1,15 @@ +; Engine configuration file. +; It's best edited using the editor UI and not directly, +; since the parameters that go here are not all obvious. +; +; Format: +; [section] ; section goes between [] +; param=value ; assign values to parameters + +config_version=5 + +[application] + +config/name="Test" +run/main_scene="res://wallpaper.tscn" +config/features=PackedStringArray("4.2", "Forward Plus") diff --git a/ScreenPlay/qml/Create/WizardsFiles/Godot_v5/wallpaper.tscn b/ScreenPlay/qml/Create/WizardsFiles/Godot_v5/wallpaper.tscn new file mode 100644 index 00000000..d488b39d --- /dev/null +++ b/ScreenPlay/qml/Create/WizardsFiles/Godot_v5/wallpaper.tscn @@ -0,0 +1,16 @@ +[gd_scene format=3 uid="uid://d105uliklnkd5"] + +[node name="Node3D" type="Node3D"] + +[node name="Camera3D" type="Camera3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 5) + +[node name="CSGBox3D" type="CSGBox3D" parent="."] +transform = Transform3D(0.707107, -0.5, -0.5, 0, 0.707107, -0.707107, 0.707107, 0.5, 0.5, 0, 0, 0) + +[node name="OmniLight3D" type="OmniLight3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.41283, 1.52646) + +[node name="Label3D" type="Label3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.874896, 0.37249) +text = "Godot Wallpaper" diff --git a/ScreenPlay/src/wizards.cpp b/ScreenPlay/src/wizards.cpp index 5fd438b1..45d2756e 100644 --- a/ScreenPlay/src/wizards.cpp +++ b/ScreenPlay/src/wizards.cpp @@ -289,6 +289,73 @@ void Wizards::createQMLWallpaper( }); } + +/*! + \brief . +*/ +void Wizards::createGodotWallpaper( + const QString& title, + const QString& licenseName, + const QString& licenseFile, + const QString& createdBy, + const QString& previewThumbnail, + const QVector& tags) +{ + if (m_wizardFuture.isRunning()) { + qWarning() << "Another wizard is already running! Abort."; + return; + } + + m_wizardFuture = QtConcurrent::run([=]() { + std::optional folderName = createTemporaryFolder(); + + if (!folderName.has_value()) { + emit widgetCreationFinished(WizardResult::CreateProjectFolderError); + return; + } + + const QString workingPath = ScreenPlayUtil::toLocal(m_globalVariables->localStoragePath().toString() + "/" + folderName.value()); + + QJsonObject obj; + obj.insert("license", licenseName); + obj.insert("title", title); + obj.insert("createdBy", createdBy); + obj.insert("tags", ScreenPlayUtil::fillArray(tags)); + obj.insert("type", QVariant::fromValue(InstalledType::InstalledType::GodotWallpaper).toString()); + obj.insert("file", "wallpaper.tscn"); + + if (!previewThumbnail.isEmpty()) { + if (!Util::copyPreviewThumbnail(obj, previewThumbnail, workingPath)) { + emit widgetCreationFinished(WizardResult::CopyPreviewThumbnailError); + return; + } + } + + if (!Util::writeFileFromQrc(":/qml/ScreenPlayApp/assets/wizards/" + licenseFile, workingPath + "/" + licenseFile)) { + qWarning() << "Could not write " << licenseFile; + emit widgetCreationFinished(WizardResult::WriteLicenseFileError); + return; + } + + + if (!Util::writeSettings(obj, workingPath + "/project.json")) { + emit widgetCreationFinished(WizardResult::WriteProjectFileError); + return; + } + + if (!Util::writeFileFromQrc(":/qml/ScreenPlayApp/qml/Create/WizardsFiles/Godot_v5/project.godot", workingPath + "/project.godot")) { + qWarning() << "Could not write main.qml"; + return; + } + if (!Util::writeFileFromQrc(":/qml/ScreenPlayApp/qml/Create/WizardsFiles/Godot_v5/wallpaper.tscn", workingPath + "/wallpaper.tscn")) { + qWarning() << "Could not write main.qml"; + return; + } + + emit widgetCreationFinished(WizardResult::Ok, workingPath); + }); +} + void Wizards::createGifWallpaper( const QString& title, const QString& licenseName, From 6a9cda9df3da7c66b3471b5860810449a2d0fc7a Mon Sep 17 00:00:00 2001 From: Elias Steurer Date: Thu, 16 Nov 2023 08:02:53 +0100 Subject: [PATCH 050/101] Fix icon --- ScreenPlay/qml/Settings/Settings.qml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ScreenPlay/qml/Settings/Settings.qml b/ScreenPlay/qml/Settings/Settings.qml index b84dd0a8..67f48434 100644 --- a/ScreenPlay/qml/Settings/Settings.qml +++ b/ScreenPlay/qml/Settings/Settings.qml @@ -403,7 +403,7 @@ Item { Image { id: imgLogoHead - source: "https://assets.gitlab-static.net/uploads/-/system/user/avatar/64172/avatar.png" + source: "https://gitlab.com/uploads/-/system/user/avatar/64172/avatar.png" width: 120 height: 120 visible: false From b72c9904b20f55a59942cd6f5a5d54c4c5031848 Mon Sep 17 00:00:00 2001 From: Elias Steurer Date: Thu, 16 Nov 2023 09:41:11 +0100 Subject: [PATCH 051/101] Fix godot download --- Tools/defines.py | 13 +++++++++---- Tools/setup.py | 2 +- Tools/setup_godot.py | 43 +++++++++++++++++++++++-------------------- 3 files changed, 33 insertions(+), 25 deletions(-) diff --git a/Tools/defines.py b/Tools/defines.py index 362a0fe7..7e577b74 100644 --- a/Tools/defines.py +++ b/Tools/defines.py @@ -37,20 +37,25 @@ VCPKG_BASE_PACKAGES = [ PYTHON_EXECUTABLE = "python" if sys.platform == "win32" else "python3" FFMPEG_VERSION = "6.0" GODOT_VERSION = "4.2" -GODOT_RELEASE_TYPE = "beta5" -GODOT_DOWNLOAD_SERVER = "https://downloads.tuxfamily.org/godotengine" +GODOT_RELEASE_TYPE = "beta6" +GODOT_DOWNLOAD_SERVER = "https://github.com/godotengine/godot-builds/releases/download" if sys.platform == "win32": SCREENPLAYWALLPAPER_GODOT_EXECUTABLE = "ScreenPlayWallpaperGodot.exe" GODOT_EDITOR_EXECUTABLE = f"Godot_v{GODOT_VERSION}-{GODOT_RELEASE_TYPE}_win64.exe" + GODOT_EDITOR_DOWNLOAD_NAME = GODOT_EDITOR_EXECUTABLE + ".zip" GODOT_TEMPLATES_PATH = os.path.join(os.getenv( 'APPDATA'), f"Godot/templates/{GODOT_VERSION}.{GODOT_RELEASE_TYPE}") elif sys.platform == "darwin": SCREENPLAYWALLPAPER_GODOT_EXECUTABLE = "ScreenPlayWallpaperGodot.app" - GODOT_EDITOR_EXECUTABLE = f"Godot_v{GODOT_VERSION}-{GODOT_RELEASE_TYPE}_osx.universal" + # Godot_v4.2-beta6_macos.universal.zip + GODOT_EDITOR_EXECUTABLE = "Godot.app" + GODOT_EDITOR_DOWNLOAD_NAME = f"Godot_v{GODOT_VERSION}-{GODOT_RELEASE_TYPE}_macos.universal.zip" GODOT_TEMPLATES_PATH = "TODO" elif sys.platform == "linux": SCREENPLAYWALLPAPER_GODOT_EXECUTABLE = "ScreenPlayWallpaperGodot" - GODOT_EDITOR_EXECUTABLE = f"Godot_v{GODOT_VERSION}-{GODOT_RELEASE_TYPE}_x11.64" + # Godot_v4.2-beta6_linux.x86_64 + GODOT_EDITOR_EXECUTABLE = f"Godot_v{GODOT_VERSION}-{GODOT_RELEASE_TYPE}_linux.x86_64" + GODOT_EDITOR_DOWNLOAD_NAME = GODOT_EDITOR_EXECUTABLE + ".zip" # /home/eli/.local/share/godot/templates/ GODOT_TEMPLATES_PATH = os.path.join( Path.home(), f".local/share/godot/templates/{GODOT_VERSION}.{GODOT_RELEASE_TYPE}") diff --git a/Tools/setup.py b/Tools/setup.py index 53d8589d..765c9847 100755 --- a/Tools/setup.py +++ b/Tools/setup.py @@ -117,7 +117,7 @@ def main(): vcpkg_path = project_source_parent_path.joinpath("vcpkg").resolve() vcpkg_packages_list = defines.VCPKG_BASE_PACKAGES - if system() == "Windows" and args.setup_godot: + if system() != "Darwin" and args.setup_godot: if not setup_godot.execute(): raise RuntimeError("Unable to download godot") diff --git a/Tools/setup_godot.py b/Tools/setup_godot.py index d8c39d7b..6456c9ff 100644 --- a/Tools/setup_godot.py +++ b/Tools/setup_godot.py @@ -8,19 +8,22 @@ from pathlib import Path import defines import util -def download_godot(version: str, exe_zip_filename: str, export_templates: str, download_destination_path: str) -> bool: - # https://downloads.tuxfamily.org/godotengine/4.2/beta4/Godot_v4.2-beta4_win64.exe.zip - # https://downloads.tuxfamily.org/godotengine/4.2/Godot_v4.2-beta4_win64.exe.zip - download_export_templates = f"{defines.GODOT_DOWNLOAD_SERVER}/{version}/{defines.GODOT_RELEASE_TYPE}/{export_templates}" +def download_godot(exe_zip_filename: str, export_templates: str, download_destination_path: str) -> bool: + # https://github.com/godotengine/godot-builds/releases/download/4.2-beta6/Godot_v4.2-beta6_win64.exe.zip + subfolder = f"{defines.GODOT_VERSION}-{defines.GODOT_RELEASE_TYPE}" + base_url = f"{defines.GODOT_DOWNLOAD_SERVER}/{subfolder}" + + download_export_templates = f"{base_url}/{export_templates}" exe_destination_filepath = os.path.join( download_destination_path, exe_zip_filename) export_templates_destination_path = os.path.join( download_destination_path, export_templates) - # Godot adds ".stable" to the folder names for full releases: "AppData/Roaming/Godot/templates/3.4.stable": - print(f"Downloading Godot from {defines.GODOT_DOWNLOAD_SERVER}/") - download_link = f"{defines.GODOT_DOWNLOAD_SERVER}/{version}/{defines.GODOT_RELEASE_TYPE}/{exe_zip_filename}" - util.download(download_link, exe_destination_filepath, False) + # Godot adds ".stable" to the folder names for full releases: "AppData/Roaming/Godot/templates/4.2.stable": + download_editor = f"{base_url}/{exe_zip_filename}" + print(f"⬇️ Downloading Godot editor {download_editor}") + util.download(download_editor, exe_destination_filepath, False) + print(f"⬇️ Downloading Godot export templates {download_export_templates}") util.download(download_export_templates, export_templates_destination_path, False) @@ -28,7 +31,7 @@ def download_godot(version: str, exe_zip_filename: str, export_templates: str, d def unzip_godot(exe_zip_filepath: str, export_templates_filepath: str, destination_path: str) -> bool: - print("Unzip Godot") + print("🪛 Unzip Godot") util.unzip(exe_zip_filepath, destination_path) # The export templates contain a templates subfolder in which the content is. This is bad because it clashes @@ -38,10 +41,10 @@ def unzip_godot(exe_zip_filepath: str, export_templates_filepath: str, destinati godot_templates_dir = "" if sys.platform == "win32": godot_templates_dir = os.path.join( - os.getenv('APPDATA'), "Godot/templates/") + os.getenv('APPDATA'), "Godot/templates") elif sys.platform == "linux": godot_templates_dir = os.path.join( - str(Path.home()), ".local/share/godot/templates/") + str(Path.home()), ".local/share/godot/templates") os.makedirs(godot_templates_dir, exist_ok=True) export_templates_destination_version = f"{godot_templates_dir}/{defines.GODOT_VERSION}.{defines.GODOT_RELEASE_TYPE}" @@ -54,14 +57,14 @@ def unzip_godot(exe_zip_filepath: str, export_templates_filepath: str, destinati os.rename(os.path.join(godot_templates_dir, "templates"), export_templates_destination_version) - print(f"Remove {exe_zip_filepath}") + print(f"🚮 Remove {exe_zip_filepath}") try: os.remove(exe_zip_filepath) except OSError as error: print(f"Error deleting file: {error}") return False - print(f"Remove {export_templates_filepath}") + print(f"🚮 Remove {export_templates_filepath}") try: os.remove(export_templates_filepath) except OSError as error: @@ -72,22 +75,22 @@ def unzip_godot(exe_zip_filepath: str, export_templates_filepath: str, destinati def setup_godot() -> bool: - print(f"Set up GODOT version {defines.GODOT_VERSION} {defines.GODOT_RELEASE_TYPE}") + print(f"🚀 Set up GODOT version {defines.GODOT_VERSION} {defines.GODOT_RELEASE_TYPE}") destination_path = os.path.join(defines.THIRDPATH_PATH, "Godot") export_templates = f"Godot_v{defines.GODOT_VERSION}-{defines.GODOT_RELEASE_TYPE}_export_templates.tpz" export_templates_filepath = os.path.join( destination_path, export_templates) - exe_zip_filename = defines.GODOT_EDITOR_EXECUTABLE + '.zip' - exe_zip_filepath = os.path.join(destination_path, exe_zip_filename) - download_godot(defines.GODOT_VERSION, exe_zip_filename, + exe_zip_filepath = os.path.join(destination_path, defines.GODOT_EDITOR_DOWNLOAD_NAME) + download_godot( defines.GODOT_EDITOR_DOWNLOAD_NAME, export_templates, destination_path) if not unzip_godot(exe_zip_filepath, export_templates_filepath, destination_path): return False - + # Linux needs to change file permission to be able to run godot if sys.platform == "linux": - execute(f"chmod +x {defines.GODOT_EDITOR_EXECUTABLE}", - destination_path, False) + command = f"chmod +x {defines.GODOT_EDITOR_EXECUTABLE}" + print(f"Make editor executable: {command} at {destination_path}") + util.run(command,destination_path) return True From 269b70093de2bd6d40bf00ff0d3f601ba34546b4 Mon Sep 17 00:00:00 2001 From: Elias Steurer Date: Thu, 16 Nov 2023 09:52:35 +0100 Subject: [PATCH 052/101] Fix extraction of export template folder name changes in Godot 4 --- Tools/setup.py | 4 +--- Tools/setup_godot.py | 10 +++++----- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/Tools/setup.py b/Tools/setup.py index 765c9847..ef3163e0 100755 --- a/Tools/setup.py +++ b/Tools/setup.py @@ -108,8 +108,6 @@ def main(): description='Build and Package ScreenPlay') parser.add_argument('--skip-aqt', action="store_true", dest="skip_aqt", help="Downloads QtCreator and needed binaries Windows: C:\\aqt\\nLinux & macOS:~/aqt/.") - parser.add_argument('--setup-godot', action="store_true", dest="setup_godot", - help="Downloads Godot Editor.") args = parser.parse_args() root_path = Path(util.cd_repo_root_path()) @@ -117,7 +115,7 @@ def main(): vcpkg_path = project_source_parent_path.joinpath("vcpkg").resolve() vcpkg_packages_list = defines.VCPKG_BASE_PACKAGES - if system() != "Darwin" and args.setup_godot: + if system() != "Darwin": if not setup_godot.execute(): raise RuntimeError("Unable to download godot") diff --git a/Tools/setup_godot.py b/Tools/setup_godot.py index 6456c9ff..32de041b 100644 --- a/Tools/setup_godot.py +++ b/Tools/setup_godot.py @@ -35,16 +35,16 @@ def unzip_godot(exe_zip_filepath: str, export_templates_filepath: str, destinati util.unzip(exe_zip_filepath, destination_path) # The export templates contain a templates subfolder in which the content is. This is bad because it clashes - # with the folder structure where the version comes after: AppData\Roaming\Godot\templates\3.3.4.stable - # Rename: AppData\Roaming\Godot\templates\templates - # to : AppData\Roaming\Godot\templates\3.4.stable + # with the folder structure where the version comes after: /home/eli/.local/share/godot/export_templates/ + # Rename: AppData\Roaming\Godot\export_templates\templates + # to : AppData\Roaming\Godot\export_templates\3.4.stable godot_templates_dir = "" if sys.platform == "win32": godot_templates_dir = os.path.join( - os.getenv('APPDATA'), "Godot/templates") + os.getenv('APPDATA'), "Godot/export_templates") elif sys.platform == "linux": godot_templates_dir = os.path.join( - str(Path.home()), ".local/share/godot/templates") + str(Path.home()), ".local/share/godot/export_templates") os.makedirs(godot_templates_dir, exist_ok=True) export_templates_destination_version = f"{godot_templates_dir}/{defines.GODOT_VERSION}.{defines.GODOT_RELEASE_TYPE}" From 85e8d8abc8e6eb2565278e9ba899760a4b802fff Mon Sep 17 00:00:00 2001 From: Elias Steurer Date: Thu, 16 Nov 2023 11:15:29 +0100 Subject: [PATCH 053/101] Fix setting version number --- CMake/CMakeVariables.h.in | 1 + CMake/GenerateCMakeVariableHeader.cmake | 12 +++++++----- CMakeLists.txt | 6 +++--- ScreenPlay/src/app.cpp | 3 ++- 4 files changed, 13 insertions(+), 9 deletions(-) diff --git a/CMake/CMakeVariables.h.in b/CMake/CMakeVariables.h.in index 662516a7..85654134 100644 --- a/CMake/CMakeVariables.h.in +++ b/CMake/CMakeVariables.h.in @@ -1,5 +1,6 @@ #pragma once +#define SCREENPLAY_VERSION "@SCREENPLAY_VERSION@" #define SCREENPLAY_SOURCE_DIR "@SCREENPLAY_SOURCE_DIR@" #define SCREENPLAY_GODOT_VERSION "@SCREENPLAY_GODOT_VERSION@" #define SCREENPLAY_GODOT_RELEASE_TYPE "@SCREENPLAY_GODOT_RELEASE_TYPE@" diff --git a/CMake/GenerateCMakeVariableHeader.cmake b/CMake/GenerateCMakeVariableHeader.cmake index 7325133a..33401597 100644 --- a/CMake/GenerateCMakeVariableHeader.cmake +++ b/CMake/GenerateCMakeVariableHeader.cmake @@ -1,9 +1,9 @@ -# ! generate_cmake_variable_header : Generates a header CmakeVariables.h that contains defines for the variables specified in CmakeVariables.h.in! +# ! generate_cmake_variable_header : Generates a header CmakeVariables.h that contains defines for the variables specified in +# CmakeVariables.h.in! # # The generated CmakeVariables.h header can then be used to access e.g. the PROJECT_NAME define in C++ code. # -# Example -# generate_cmake_variable_header(${PROJECT_NAME}) +# Example generate_cmake_variable_header(${PROJECT_NAME}) # function(generate_cmake_variable_header TARGET) # NOTE: Also add to CMakeVariables.h.in ! @@ -12,6 +12,7 @@ function(generate_cmake_variable_header TARGET) set(SCREENPLAY_GODOT_RELEASE_TYPE ${GODOT_RELEASE_TYPE}) set(SCREENPLAY_BUILD_TYPE "${CMAKE_BUILD_TYPE}") set(SCREENPLAY_BUILD_DATE "${BUILD_DATE}") + set(SCREENPLAY_VERSION "${SCREENPLAY_VERSION}") set(SCREENPLAY_GIT_BRANCH_NAME "${GIT_BRANCH_NAME}") set(SCREENPLAY_GIT_COMMIT_HASH "${GIT_COMMIT_HASH}") @@ -19,7 +20,7 @@ function(generate_cmake_variable_header TARGET) if(${SCREENPLAY_DEPLOY}) set(SCREENPLAY_DEPLOY_VERSION 1) endif() - + set(SCREENPLAY_STEAM_VERSION 0) if(${SCREENPLAY_STEAM}) set(SCREENPLAY_STEAM_VERSION 1) @@ -27,7 +28,8 @@ function(generate_cmake_variable_header TARGET) # Specify the configuration file from which the header file will be generated configure_file(${CMAKE_SOURCE_DIR}/CMake/CMakeVariables.h.in ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}/CMakeVariables.h @ONLY) - message(STATUS "GENERATE: ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}/CMakeVariables.h and add ${TARGET} to ${CMAKE_CURRENT_BINARY_DIR}") + message( + STATUS "GENERATE: ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}/CMakeVariables.h and add ${TARGET} to ${CMAKE_CURRENT_BINARY_DIR}") # Add the directory containing the generated header target_include_directories(${TARGET} PRIVATE ${CMAKE_CURRENT_BINARY_DIR}) diff --git a/CMakeLists.txt b/CMakeLists.txt index 17a1347e..7e70f0bb 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.22.0) set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/CMake" ${CMAKE_MODULE_PATH}) include(GetProjectVersion) -get_project_version(PROJECT_VERSION) +get_project_version(SCREENPLAY_VERSION) # This must be set before project() if(APPLE) @@ -13,7 +13,7 @@ endif() project( ScreenPlay - VERSION ${PROJECT_VERSION} + VERSION ${SCREENPLAY_VERSION} DESCRIPTION "Modern, Cross Plattform, Live Wallpaper, Widgets and AppDrawer!" HOMEPAGE_URL "https://screen-play.app/" LANGUAGES CXX) @@ -166,7 +166,6 @@ if(${SCREENPLAY_INSTALLER}) endif() message(STATUS "[PROJECT] CMAKE_MODULE_PATH = ${CMAKE_MODULE_PATH}") -message(STATUS "[PROJECT] PROJECT_VERSION = ${PROJECT_VERSION}") message(STATUS "[PROJECT] CMAKE_VERSION = ${CMAKE_VERSION}") message(STATUS "[PROJECT] SCREENPLAY_QML_MODULES_PATH = ${SCREENPLAY_QML_MODULES_PATH}") message(STATUS "[PROJECT] CMAKE_TOOLCHAIN_FILE = ${CMAKE_TOOLCHAIN_FILE}") @@ -176,6 +175,7 @@ message(STATUS "[PROJECT] VCPKG_TARGET_TRIPLET = ${VCPKG_TARGET_TRIPLET} message(STATUS "[PROJECT] CMAKE_PREFIX_PATH = ${CMAKE_PREFIX_PATH}") message(STATUS "[PROJECT] GODOT_VERSION = ${GODOT_VERSION}") message(STATUS "[PROJECT] GODOT_EDITOR_NAME = ${GODOT_EDITOR_NAME}") +message(STATUS "[PROJECT] SCREENPLAY_VERSION = ${SCREENPLAY_VERSION}") message(STATUS "[OPTION] SCREENPLAY_DEPLOY = ${SCREENPLAY_DEPLOY}") message(STATUS "[OPTION] SCREENPLAY_INSTALLER = ${SCREENPLAY_INSTALLER}") message(STATUS "[OPTION] SCREENPLAY_STEAM = ${SCREENPLAY_STEAM}") diff --git a/ScreenPlay/src/app.cpp b/ScreenPlay/src/app.cpp index d8ba84f6..06ac8417 100644 --- a/ScreenPlay/src/app.cpp +++ b/ScreenPlay/src/app.cpp @@ -5,6 +5,7 @@ #include "ScreenPlayUtil/macutils.h" #endif +#include "ScreenPlay/CMakeVariables.h" #include "app.h" #include "steam/steam_qt_enums_generated.h" #include @@ -71,7 +72,7 @@ App::App() QGuiApplication::setOrganizationName("ScreenPlay"); QGuiApplication::setOrganizationDomain("screen-play.app"); QGuiApplication::setApplicationName("ScreenPlay"); - QGuiApplication::setApplicationVersion(QVersionNumber(0, 15, 0).toString()); + QGuiApplication::setApplicationVersion(QString(SCREENPLAY_VERSION)); QGuiApplication::setQuitOnLastWindowClosed(false); QString fontsPath = QGuiApplication::instance()->applicationDirPath() + "/assets/fonts/"; From 0e6079fe9f59e27a40d9cc9f21b514daf8a26130 Mon Sep 17 00:00:00 2001 From: Elias Steurer Date: Thu, 16 Nov 2023 11:15:44 +0100 Subject: [PATCH 054/101] Fix Godot version --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 7e70f0bb..0e86ec5c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -58,7 +58,7 @@ set(VCPKG_BIN_PATH "${VCPKG_INSTALLED_PATH}/bin") # Godot Editor set(GODOT_VERSION "v4.2") -set(GODOT_RELEASE_TYPE "beta4") +set(GODOT_RELEASE_TYPE "beta6") if(WIN32) set(GODOT_EDITOR_NAME "Godot_${GODOT_VERSION}-${GODOT_RELEASE_TYPE}_win64.exe") From 99e427b6cbcc97d813cc6b6e04bf6681a66df7c6 Mon Sep 17 00:00:00 2001 From: Elias Steurer Date: Thu, 16 Nov 2023 11:39:09 +0100 Subject: [PATCH 055/101] Add quick settings to tray icon Fix navigation and multi loading of installed content Fix installed reloading on content change and fix reload timer no limit the triggering, but always trigger 500ms later Fix settings checkbox triggering always when entering settings page Fix create wizard change page to installed --- .../public/ScreenPlay/installedlistmodel.h | 1 + ScreenPlay/main.qml | 114 ++++++++++-------- ScreenPlay/qml/Create/CreateSidebar.qml | 4 +- ScreenPlay/qml/Installed/Installed.qml | 3 +- ScreenPlay/qml/Navigation/Navigation.qml | 32 +++-- ScreenPlay/qml/Settings/SettingBool.qml | 2 +- ScreenPlay/qml/TrayIcon.qml | 104 +++++++++++++--- ScreenPlay/src/installedlistmodel.cpp | 25 ++-- ScreenPlayUtil/src/projectfile.cpp | 6 +- 9 files changed, 190 insertions(+), 101 deletions(-) diff --git a/ScreenPlay/inc/public/ScreenPlay/installedlistmodel.h b/ScreenPlay/inc/public/ScreenPlay/installedlistmodel.h index 32bdd3dc..cc0ce26a 100644 --- a/ScreenPlay/inc/public/ScreenPlay/installedlistmodel.h +++ b/ScreenPlay/inc/public/ScreenPlay/installedlistmodel.h @@ -96,6 +96,7 @@ private: QFileSystemWatcher m_fileSystemWatcher; QVector m_screenPlayFiles; int m_count { 0 }; + QTimer m_reloadLimiter; std::atomic_bool m_isLoading { false }; const std::shared_ptr& m_globalVariables; diff --git a/ScreenPlay/main.qml b/ScreenPlay/main.qml index 4ec06b04..3a6077cd 100644 --- a/ScreenPlay/main.qml +++ b/ScreenPlay/main.qml @@ -23,40 +23,45 @@ ApplicationWindow { function setTheme(theme) { switch (theme) { case Settings.System: - root.Material.theme = Material.System; - break; + root.Material.theme = Material.System + break case Settings.Dark: - root.Material.theme = Material.Dark; - break; + root.Material.theme = Material.Dark + break case Settings.Light: - root.Material.theme = Material.Light; - break; + root.Material.theme = Material.Light + break } } function switchPage(name) { if (nav.currentNavigationName === name) { if (name === "Installed") - App.installedListModel.reset(); + App.installedListModel.reset() } if (name === "Installed") { - stackView.replace("qrc:/qml/ScreenPlayApp/qml/Installed/Installed.qml", { - "sidebar": sidebar - }); - return; + stackView.replace( + "qrc:/qml/ScreenPlayApp/qml/Installed/Installed.qml", { + "sidebar": sidebar + }) + return } - stackView.replace("qrc:/qml/ScreenPlayApp/qml/" + name + "/" + name + ".qml", { - "modalSource": content - }); - sidebar.state = "inactive"; + stackView.replace( + "qrc:/qml/ScreenPlayApp/qml/" + name + "/" + name + ".qml", + { + "modalSource": content + }) + nav.setNavigation(name) + sidebar.state = "inactive" } - color: Material.theme === Material.Dark ? Qt.darker(Material.background) : Material.background + color: Material.theme === Material.Dark ? Qt.darker( + Material.background) : Material.background // Set visible if the -silent parameter was not set (see app.cpp end of constructor). visible: false width: 1400 height: 810 - title: "ScreenPlay Alpha - V" + App.version() + title: "ScreenPlay Alpha - v" + App.version() minimumHeight: 450 minimumWidth: 1050 @@ -72,25 +77,29 @@ ApplicationWindow { // https://bugreports.qt.io/browse/QTBUG-86047 Material.accent: Material.color(Material.Orange) onVisibilityChanged: { - if (root.visibility === 2) - App.installedListModel.reset(); + if (root.visibility !== 2) + return + } + onClosing: close => { - close.accepted = false; - if (App.screenPlayManager.activeWallpaperCounter === 0 && App.screenPlayManager.activeWidgetsCounter === 0) { - App.exit(); - } - const alwaysMinimize = settings.value("alwaysMinimize", null); - if (alwaysMinimize === null) { - console.error("Unable to retreive alwaysMinimize setting"); - } - if (alwaysMinimize === "true") { - root.hide(); - App.showDockIcon(false); - return; - } - exitDialog.open(); - } + close.accepted = false + if (App.screenPlayManager.activeWallpaperCounter === 0 + && App.screenPlayManager.activeWidgetsCounter === 0) { + App.exit() + } + const alwaysMinimize = settings.value("alwaysMinimize", null) + if (alwaysMinimize === null) { + console.error( + "Unable to retreive alwaysMinimize setting") + } + if (alwaysMinimize === "true") { + root.hide() + App.showDockIcon(false) + return + } + exitDialog.open() + } QCore.Settings { id: settings @@ -103,14 +112,15 @@ ApplicationWindow { } Component.onCompleted: { - setTheme(App.settings.theme); + setTheme(App.settings.theme) stackView.push("qrc:/qml/ScreenPlayApp/qml/Installed/Installed.qml", { - "sidebar": sidebar - }); + "sidebar": sidebar + }) if (!App.settings.silentStart) { - App.showDockIcon(true); - root.show(); + App.showDockIcon(true) + root.show() } + App.installedListModel.reset(); } Item { @@ -140,7 +150,7 @@ ApplicationWindow { Connections { function onThemeChanged(theme) { - setTheme(theme); + setTheme(theme) } target: App.settings @@ -148,7 +158,7 @@ ApplicationWindow { Connections { function onRequestNavigation(nav) { - switchPage(nav); + switchPage(nav) } target: App.util @@ -156,16 +166,18 @@ ApplicationWindow { Connections { function onRequestRaise() { - App.showDockIcon(true); - root.show(); + App.showDockIcon(true) + root.show() } function onActiveWidgetsCounterChanged() { - plausible.pageView("widget/count/" + App.screenPlayManager.activeWidgetsCounter); + plausible.pageView( + "widget/count/" + App.screenPlayManager.activeWidgetsCounter) } function onActiveWallpaperCounterChanged() { - plausible.pageView("wallpaper/count/" + App.screenPlayManager.activeWallpaperCounter); + plausible.pageView( + "wallpaper/count/" + App.screenPlayManager.activeWallpaperCounter) } target: App.screenPlayManager @@ -223,16 +235,16 @@ ApplicationWindow { Connections { function onSetSidebarActive(active) { if (active) - sidebar.state = "active"; + sidebar.state = "active" else - sidebar.state = "inactive"; + sidebar.state = "inactive" } function onSetNavigationItem(pos) { if (pos === 0) - nav.onPageChanged("Create"); + nav.onPageChanged("Create") else - nav.onPageChanged("Workshop"); + nav.onPageChanged("Workshop") } target: stackView.currentItem @@ -261,8 +273,8 @@ ApplicationWindow { } onChangePage: function (name) { - monitors.close(); - switchPage(name); + monitors.close() + switchPage(name) } } } diff --git a/ScreenPlay/qml/Create/CreateSidebar.qml b/ScreenPlay/qml/Create/CreateSidebar.qml index 04f66cac..50bb7aab 100644 --- a/ScreenPlay/qml/Create/CreateSidebar.qml +++ b/ScreenPlay/qml/Create/CreateSidebar.qml @@ -42,9 +42,7 @@ Rectangle { function onWizardExited() { root.expanded = true; - stackView.clear(StackView.PushTransition); - stackView.push("qrc:/qml/ScreenPlayApp/qml/Create/StartInfo.qml"); - listView.currentIndex = 0; + App.util.setNavigation("Installed"); App.util.setNavigationActive(true); } diff --git a/ScreenPlay/qml/Installed/Installed.qml b/ScreenPlay/qml/Installed/Installed.qml index 5ca7e255..d3b39704 100644 --- a/ScreenPlay/qml/Installed/Installed.qml +++ b/ScreenPlay/qml/Installed/Installed.qml @@ -41,7 +41,6 @@ Item { StackView.onActivated: { navWrapper.state = "in"; - App.installedListFilter.sortBySearchType(SearchType.All); checkIsContentInstalled(); } @@ -257,7 +256,7 @@ Item { Menu { id: contextMenu objectName: "installedItemContextMenu" - + // Must be var to support 64-bit size! property var publishedFileID: 0 property url absoluteStoragePath property string fileName diff --git a/ScreenPlay/qml/Navigation/Navigation.qml b/ScreenPlay/qml/Navigation/Navigation.qml index 16b5c639..6f6c4d87 100644 --- a/ScreenPlay/qml/Navigation/Navigation.qml +++ b/ScreenPlay/qml/Navigation/Navigation.qml @@ -13,7 +13,7 @@ Rectangle { id: root property string currentNavigationName: "Installed" - property var navArray: [navCreate, navWorkshop, navInstalled, navSettings, navCommunity] + property var navArray: [navCreate, navWorkshop, navInstalled,navCommunity, navSettings] property bool navActive: true property Item modalSource property int iconWidth: 16 @@ -28,13 +28,13 @@ Rectangle { else root.state = "disabled"; } - function setNavigation(name) { - var i = 0; - for (; i < navArray.length; i++) { - if (navArray[i].name === name) { + for (var i = 0; i < navArray.length; i++) { + print(navArray[i].objectName) + if (navArray[i].objectName === name) { navArray[i].state = "active"; root.currentNavigationName = name; + tabBar.currentIndex = navArray[i].index } else { navArray[i].state = "inactive"; } @@ -70,7 +70,7 @@ Rectangle { } TabBar { - id: row + id: tabBar height: 50 currentIndex: 2 @@ -84,55 +84,60 @@ Rectangle { CustomTabButton { id: navCreate + index: 0 icon.height: 22 icon.width: 22 text: qsTr("Create") + objectName: "Create" icon.source: "qrc:/qml/ScreenPlayApp/assets/icons/icon_plus.svg" onClicked: { root.onPageChanged("Create"); } - objectName: "createTab" } CustomTabButton { id: navWorkshop + index: 1 enabled: App.settings.steamVersion text: qsTr("Workshop") + objectName: "Workshop" icon.source: "qrc:/qml/ScreenPlayApp/assets/icons/icon_steam.svg" onClicked: { root.onPageChanged("Workshop"); } - objectName: "workshopTab" } CustomTabButton { id: navInstalled + index: 2 text: qsTr("Installed") + " " + App.installedListModel.count + objectName: "Installed" icon.source: "qrc:/qml/ScreenPlayApp/assets/icons/icon_installed.svg" onClicked: { root.onPageChanged("Installed"); } - objectName: "installedTab" } CustomTabButton { id: navCommunity + index: 3 text: qsTr("Community") + objectName: "Community" icon.source: "qrc:/qml/ScreenPlayApp/assets/icons/icon_community.svg" onClicked: { root.onPageChanged("Community"); } - objectName: "communityTab" } CustomTabButton { id: navSettings + index: 4 text: qsTr("Settings") + objectName: "Settings" icon.source: "qrc:/qml/ScreenPlayApp/assets/icons/icon_settings.svg" onClicked: { root.onPageChanged("Settings"); } - objectName: "settingsTab" } } @@ -142,6 +147,7 @@ Rectangle { font.pointSize: 12 height: parent.height width: implicitWidth + property int index: 0 background: Item { } font.capitalization: Font.MixedCase @@ -278,7 +284,7 @@ Rectangle { name: "disabled" PropertyChanges { - target: row + target: tabBar opacity: 0.3 } } @@ -289,7 +295,7 @@ Rectangle { to: "*" PropertyAnimation { - target: row + target: tabBar duration: 300 } } diff --git a/ScreenPlay/qml/Settings/SettingBool.qml b/ScreenPlay/qml/Settings/SettingBool.qml index d2915787..0f64af84 100644 --- a/ScreenPlay/qml/Settings/SettingBool.qml +++ b/ScreenPlay/qml/Settings/SettingBool.qml @@ -78,7 +78,7 @@ Item { id: radioButton checked: settingsBool.isChecked - onCheckedChanged: { + onClicked: { if (radioButton.checkState === Qt.Checked) checkboxChanged(true); else diff --git a/ScreenPlay/qml/TrayIcon.qml b/ScreenPlay/qml/TrayIcon.qml index 6e946522..38db305e 100644 --- a/ScreenPlay/qml/TrayIcon.qml +++ b/ScreenPlay/qml/TrayIcon.qml @@ -14,28 +14,90 @@ SystemTrayIcon { onActivated: function (reason) { switch (reason) { case SystemTrayIcon.Unknown: - break; + break case SystemTrayIcon.Context: - break; + break case SystemTrayIcon.DoubleClick: - window.show(); - break; + window.show() + break case SystemTrayIcon.Trigger: - break; + break case SystemTrayIcon.MiddleClick: - break; + break } } + function open(){ + App.showDockIcon(true) + window.show() + + } + menu: Menu { MenuItem { + id: miOpenScreenPlay text: qsTr("Open ScreenPlay") onTriggered: { - App.showDockIcon(true); - window.show(); + root.open() + } + } + MenuItem { + id: miChangeWallpaperSettings + text: qsTr("Change Wallpaper settings") + onTriggered: { + root.open() + App.util.setNavigation("Installed"); + App.util.setToggleWallpaperConfiguration() + } + } + MenuItem { + separator: true + } + + MenuItem { + text: qsTr("Browse Workshop") + onTriggered: { + root.open() + App.util.setNavigation("Workshop"); } } + MenuItem { + id: miCreate + text: qsTr("Create new Wallpaper or Widgets") + onTriggered: { + root.open() + App.util.setNavigation("Create"); + } + } + MenuItem { + id: miSettings + text: qsTr("Settings") + onTriggered: { + root.open() + App.util.setNavigation("Settings"); + } + } + + MenuItem { + separator: true + } + MenuItem { + text: qsTr("Forums") + onTriggered: { + Qt.openUrlExternally("https://forum.screen-play.app/") + } + } + MenuItem { + text: qsTr("Frequently Asked Questions (FAQ)") + onTriggered: { + Qt.openUrlExternally( + "https://kelteseth.gitlab.io/ScreenPlayDocs/Frequently%20Asked%20Questions/") + } + } + MenuItem { + separator: true + } MenuItem { id: miMuteAll @@ -44,13 +106,13 @@ SystemTrayIcon { text: qsTr("Mute all") onTriggered: { if (miMuteAll.isMuted) { - isMuted = false; - miMuteAll.text = qsTr("Mute all"); - App.screenPlayManager.setAllWallpaperValue("muted", "true"); + isMuted = false + miMuteAll.text = qsTr("Mute all") + App.screenPlayManager.setAllWallpaperValue("muted", "true") } else { - isMuted = true; - miMuteAll.text = qsTr("Unmute all"); - App.screenPlayManager.setAllWallpaperValue("muted", "false"); + isMuted = true + miMuteAll.text = qsTr("Unmute all") + App.screenPlayManager.setAllWallpaperValue("muted", "false") } } } @@ -63,13 +125,15 @@ SystemTrayIcon { text: qsTr("Pause all") onTriggered: { if (miStopAll.isPlaying) { - isPlaying = false; - miStopAll.text = qsTr("Pause all"); - App.screenPlayManager.setAllWallpaperValue("isPlaying", "true"); + isPlaying = false + miStopAll.text = qsTr("Pause all") + App.screenPlayManager.setAllWallpaperValue("isPlaying", + "true") } else { - isPlaying = true; - miStopAll.text = qsTr("Play all"); - App.screenPlayManager.setAllWallpaperValue("isPlaying", "false"); + isPlaying = true + miStopAll.text = qsTr("Play all") + App.screenPlayManager.setAllWallpaperValue("isPlaying", + "false") } } } diff --git a/ScreenPlay/src/installedlistmodel.cpp b/ScreenPlay/src/installedlistmodel.cpp index faf4a2e9..7fbf57fa 100644 --- a/ScreenPlay/src/installedlistmodel.cpp +++ b/ScreenPlay/src/installedlistmodel.cpp @@ -35,18 +35,23 @@ InstalledListModel::InstalledListModel( */ void InstalledListModel::init() { - if (!m_fileSystemWatcher.addPath(m_globalVariables->localStoragePath().toLocalFile())) { - qWarning() << "Could not setup file system watcher for changed files with path: " << m_globalVariables->localStoragePath().toLocalFile(); + QString projectsPath = m_globalVariables->localStoragePath().toLocalFile(); + QDirIterator projectFilesIter(projectsPath, { "*.qml", "*.html", "*.css", "*.js", "*.png", "project.json" }, QDir::Files | QDir::NoSymLinks, QDirIterator::Subdirectories); + while (projectFilesIter.hasNext()) { + m_fileSystemWatcher.addPath(projectFilesIter.next()); } + m_reloadLimiter.setInterval(500); + m_reloadLimiter.setSingleShot(true); + QObject::connect(&m_reloadLimiter, &QTimer::timeout, this, [this]() { + reset(); + }); - auto reloadLambda = [this]() { - QTimer::singleShot(500, this, [this]() { - reset(); - }); + auto restartTimer = [this]() { + m_reloadLimiter.start(); }; - QObject::connect(&m_fileSystemWatcher, &QFileSystemWatcher::directoryChanged, this, reloadLambda); - QObject::connect(&m_fileSystemWatcher, &QFileSystemWatcher::fileChanged, this, reloadLambda); + QObject::connect(&m_fileSystemWatcher, &QFileSystemWatcher::directoryChanged, this, restartTimer); + QObject::connect(&m_fileSystemWatcher, &QFileSystemWatcher::fileChanged, this, restartTimer); } /*! @@ -288,6 +293,10 @@ QVariantMap InstalledListModel::get(const QString& folderName) const */ void InstalledListModel::reset() { + if (m_isLoading) { + qInfo() << "loadInstalledContent is already running. Skip."; + return; + } beginResetModel(); m_screenPlayFiles.clear(); m_screenPlayFiles.squeeze(); diff --git a/ScreenPlayUtil/src/projectfile.cpp b/ScreenPlayUtil/src/projectfile.cpp index b756d1cf..b58394c6 100644 --- a/ScreenPlayUtil/src/projectfile.cpp +++ b/ScreenPlayUtil/src/projectfile.cpp @@ -105,13 +105,13 @@ bool ProjectFile::init() qWarning("Invalid videoCodec was specified inside the json object!"); } } else if (type == ScreenPlay::InstalledType::InstalledType::VideoWallpaper) { - qWarning("No videoCodec was specified inside the json object!"); + // qWarning("No videoCodec was specified inside the json object!"); if (file.endsWith(".mp4")) { videoCodec = ScreenPlay::VideoCodec::VideoCodec::H264; - qWarning("Eyeball to h264 because of .mp4"); + // qWarning("Eyeball to h264 because of .mp4"); } else if (file.endsWith(".webm")) { videoCodec = ScreenPlay::VideoCodec::VideoCodec::VP8; - qWarning("Eyeball to VP8 because of .webm"); + // qWarning("Eyeball to VP8 because of .webm"); } } From 893844f023c285914cf95c3e12cf544ab4d309bf Mon Sep 17 00:00:00 2001 From: Elias Steurer Date: Thu, 16 Nov 2023 13:27:50 +0100 Subject: [PATCH 056/101] Add edit menu entry --- ScreenPlay/CMakeLists.txt | 1 + ScreenPlay/inc/public/ScreenPlay/util.h | 5 +- ScreenPlay/inc/public/ScreenPlay/wizards.h | 6 +- ScreenPlay/qml/Installed/Installed.qml | 169 ++++++++++++-------- ScreenPlay/qml/Installed/ScreenPlayItem.qml | 1 + ScreenPlay/src/app.cpp | 3 +- ScreenPlay/src/profilelistmodel.cpp | 4 +- ScreenPlay/src/util.cpp | 13 +- 8 files changed, 129 insertions(+), 73 deletions(-) diff --git a/ScreenPlay/CMakeLists.txt b/ScreenPlay/CMakeLists.txt index edcf9319..73391ae7 100644 --- a/ScreenPlay/CMakeLists.txt +++ b/ScreenPlay/CMakeLists.txt @@ -185,6 +185,7 @@ set(RESOURCES assets/icons/icon_widgets.svg assets/icons/icon_window.svg assets/icons/item_banner_new.svg + assets/icons/icon_edit.svg assets/icons/monitor_setup.svg assets/icons/steam_default_avatar.png assets/images/Early_Access.png diff --git a/ScreenPlay/inc/public/ScreenPlay/util.h b/ScreenPlay/inc/public/ScreenPlay/util.h index 2d2eaf59..2502d653 100644 --- a/ScreenPlay/inc/public/ScreenPlay/util.h +++ b/ScreenPlay/inc/public/ScreenPlay/util.h @@ -58,7 +58,8 @@ class Util : public QObject { Q_PROPERTY(QString debugMessages READ debugMessages NOTIFY debugMessagesChanged) public: - Util(); + Util( + const std::shared_ptr& globalVariables); ~Util(); QString debugMessages() const { return m_debugMessages; } @@ -82,6 +83,7 @@ public slots: void openFolderInExplorer(const QString& url) const; QString toLocal(const QString& url) const; bool exportProject(QString contentPath, QString exportFileName); + bool openGodotEditor(QString contentPath) const; bool importProject(QString archivePath, QString extractionPath); void requestAllLicenses(); void requestDataProtection(); @@ -124,6 +126,7 @@ private: QFuture m_requestAllLicensesFuture; std::unique_ptr m_compressor; std::unique_ptr m_extractor; + const std::shared_ptr& m_globalVariables; }; } diff --git a/ScreenPlay/inc/public/ScreenPlay/wizards.h b/ScreenPlay/inc/public/ScreenPlay/wizards.h index 93ba97c0..aff61fc6 100644 --- a/ScreenPlay/inc/public/ScreenPlay/wizards.h +++ b/ScreenPlay/inc/public/ScreenPlay/wizards.h @@ -34,9 +34,11 @@ namespace ScreenPlay { class Wizards : public QObject { Q_OBJECT QML_ELEMENT + QML_UNCREATABLE("CPP ONLY") public: - explicit Wizards(const std::shared_ptr& globalVariables, QObject* parent = nullptr); - Wizards() { } + explicit Wizards( + const std::shared_ptr& globalVariables, + QObject* parent = nullptr); enum class WizardResult { Ok, diff --git a/ScreenPlay/qml/Installed/Installed.qml b/ScreenPlay/qml/Installed/Installed.qml index d3b39704..1c4c9470 100644 --- a/ScreenPlay/qml/Installed/Installed.qml +++ b/ScreenPlay/qml/Installed/Installed.qml @@ -25,23 +25,23 @@ Item { function checkIsContentInstalled() { if (App.installedListModel.count === 0) { - loaderHelp.active = true; - gridView.footerItem.isVisible = true; - gridView.visible = false; - navWrapper.visible = false; + loaderHelp.active = true + gridView.footerItem.isVisible = true + gridView.visible = false + navWrapper.visible = false } else { - loaderHelp.active = false; - gridView.footerItem.isVisible = false; - refresh = false; - gridView.contentY = -82; - gridView.visible = true; - navWrapper.visible = true; + loaderHelp.active = false + gridView.footerItem.isVisible = false + refresh = false + gridView.contentY = -82 + gridView.visible = true + navWrapper.visible = true } } StackView.onActivated: { - navWrapper.state = "in"; - checkIsContentInstalled(); + navWrapper.state = "in" + checkIsContentInstalled() } Action { @@ -51,12 +51,12 @@ Item { Connections { function onInstalledLoadingFinished() { - checkIsContentInstalled(); + checkIsContentInstalled() } function onCountChanged(count) { if (count === 0) - checkIsContentInstalled(); + checkIsContentInstalled() } target: App.installedListModel @@ -71,7 +71,7 @@ Item { Connections { function onSortChanged() { - gridView.positionViewAtBeginning(); + gridView.positionViewAtBeginning() } target: App.installedListFilter @@ -128,12 +128,12 @@ Item { } onContentYChanged: { if (contentY <= -180) - gridView.headerItem.isVisible = true; + gridView.headerItem.isVisible = true else - gridView.headerItem.isVisible = false; + gridView.headerItem.isVisible = false //Pull to refresh if (contentY <= -180 && !refresh && !isDragging) - App.installedListModel.reset(); + App.installedListModel.reset() } anchors { @@ -150,11 +150,11 @@ Item { opacity: 0 onIsVisibleChanged: { if (isVisible) { - txtHeader.color = Material.accent; - txtHeader.text = qsTr("Refreshing!"); + txtHeader.color = Material.accent + txtHeader.text = qsTr("Refreshing!") } else { - txtHeader.color = "gray"; - txtHeader.text = qsTr("Pull to refresh!"); + txtHeader.color = "gray" + txtHeader.text = qsTr("Pull to refresh!") } } @@ -162,7 +162,7 @@ Item { interval: 150 running: true onTriggered: { - animFadeIn.start(); + animFadeIn.start() } } @@ -206,7 +206,7 @@ Item { interval: 400 running: true onTriggered: { - animFadeInTxtFooter.start(); + animFadeInTxtFooter.start() } } @@ -236,15 +236,23 @@ Item { isScrolling: gridView.isScrolling onOpenContextMenu: function (position) { // Set the menu to the current item informations - contextMenu.publishedFileID = delegate.publishedFileID; - contextMenu.absoluteStoragePath = delegate.absoluteStoragePath; - contextMenu.fileName = delegate.customTitle; - const pos = delegate.mapToItem(root, position.x, position.y); + contextMenu.publishedFileID = delegate.publishedFileID + contextMenu.absoluteStoragePath = delegate.absoluteStoragePath + contextMenu.fileName = delegate.customTitle + contextMenu.type = delegate.type + print(delegate.publishedFileID) + if(contextMenu.godotItem) + contextMenu.godotItem.destroy() + const pos = delegate.mapToItem(root, position.x, position.y) // Disable duplicate opening. The can happen if we // call popup when we are in the closing animtion. if (contextMenu.visible || contextMenu.opened) - return; - contextMenu.popup(pos.x, pos.y); + return + if (delegate.type === InstalledType.GodotWallpaper) { + contextMenu.godotItem = editGodotWallpaperComp.createObject() + contextMenu.insertItem(0, contextMenu.godotItem) + } + contextMenu.popup(pos.x, pos.y) } } @@ -252,21 +260,37 @@ Item { snapMode: ScrollBar.SnapOnRelease } } + Component { + id: editGodotWallpaperComp + MenuItem { + text: qsTr("Edit Wallpaper") + objectName: "editWallpaper" + enabled: contextMenu.type === InstalledType.GodotWallpaper + icon.source: "qrc:/qml/ScreenPlayApp/assets/icons/icon_edit.svg" + onClicked: { + App.util.openGodotEditor(contextMenu.absoluteStoragePath) + } + } + } Menu { id: contextMenu objectName: "installedItemContextMenu" // Must be var to support 64-bit size! property var publishedFileID: 0 + property var type: 0 property url absoluteStoragePath property string fileName + // We need to dynamically add this menu item + // if it is a Godot Wallpaper, see onOpenContextMenu + property var godotItem MenuItem { text: qsTr("Open containing folder") objectName: "openFolder" icon.source: "qrc:/qml/ScreenPlayApp/assets/icons/icon_folder_open.svg" onClicked: { - App.util.openFolderInExplorer(contextMenu.absoluteStoragePath); + App.util.openFolderInExplorer(contextMenu.absoluteStoragePath) } } @@ -275,10 +299,12 @@ Item { objectName: enabled ? "removeItem" : "removeWorkshopItem" icon.source: "qrc:/qml/ScreenPlayApp/assets/icons/icon_import_export_.svg" onClicked: { - exportFileDialog.absoluteStoragePath = contextMenu.absoluteStoragePath; - let urlFileName = QCore.StandardPaths.writableLocation(QCore.StandardPaths.DesktopLocation) + "/" + contextMenu.fileName + ".screenplay"; - exportFileDialog.currentFile = urlFileName; - exportFileDialog.open(); + exportFileDialog.absoluteStoragePath = contextMenu.absoluteStoragePath + let urlFileName = QCore.StandardPaths.writableLocation( + QCore.StandardPaths.DesktopLocation) + "/" + + contextMenu.fileName + ".screenplay" + exportFileDialog.currentFile = urlFileName + exportFileDialog.open() } } @@ -286,18 +312,21 @@ Item { text: enabled ? qsTr("Remove Item") : qsTr("Remove via Workshop") objectName: enabled ? "removeItem" : "removeWorkshopItem" icon.source: "qrc:/qml/ScreenPlayApp/assets/icons/icon_delete.svg" - enabled: contextMenu.publishedFileID === 0 || !App.settings.steamVersion + enabled: contextMenu.publishedFileID === 0 + || !App.settings.steamVersion onClicked: { - deleteDialog.open(); + deleteDialog.open() } } MenuItem { text: qsTr("Open Workshop Page") - enabled: contextMenu.publishedFileID !== 0 && App.settings.steamVersion + enabled: contextMenu.publishedFileID !== 0 + && App.settings.steamVersion icon.source: "qrc:/qml/ScreenPlayApp/assets/icons/icon_steam.svg" onClicked: { - Qt.openUrlExternally("steam://url/CommunityFilePage/" + contextMenu.publishedFileID); + Qt.openUrlExternally( + "steam://url/CommunityFilePage/" + contextMenu.publishedFileID) } } } @@ -310,8 +339,9 @@ Item { modalSource: root.modalSource anchors.centerIn: Overlay.overlay onAccepted: { - root.sidebar.clear(); - App.installedListModel.deinstallItemAt(contextMenu.absoluteStoragePath); + root.sidebar.clear() + App.installedListModel.deinstallItemAt( + contextMenu.absoluteStoragePath) } } @@ -320,7 +350,7 @@ Item { fileMode: FileDialog.SaveFile property string absoluteStoragePath onAccepted: { - exportFileProgressDialog.open(); + exportFileProgressDialog.open() } } @@ -333,7 +363,9 @@ Item { modalSource: root.modalSource closePolicy: Popup.NoAutoClose onOpened: { - const success = App.util.exportProject(exportFileDialog.absoluteStoragePath, exportFileDialog.currentFile); + const success = App.util.exportProject( + exportFileDialog.absoluteStoragePath, + exportFileDialog.currentFile) } onClosed: exportProgressBar.value = 0 ColumnLayout { @@ -358,10 +390,10 @@ Item { id: exportConnections target: App.util function onCompressionProgressChanged(file, proc, total, br, bt) { - exportProgressBar.value = (br * 100 / bt); + exportProgressBar.value = (br * 100 / bt) } function onCompressionFinished() { - exportFileProgressDialog.close(); + exportFileProgressDialog.close() } } } @@ -381,28 +413,31 @@ Item { anchors.fill: parent property string filePath onEntered: function (drag) { - dropPopup.open(); + dropPopup.open() } onDropped: function (drop) { - dropPopup.close(); - dropArea.enabled = false; + dropPopup.close() + dropArea.enabled = false if (drop.urls.length > 1) { - importProjectErrorDialog.title = qsTr("We only support adding one item at once."); - importProjectErrorDialog.open(); - return; + importProjectErrorDialog.title = qsTr( + "We only support adding one item at once.") + importProjectErrorDialog.open() + return } - var file = ""; // Convert url to string - file = "" + drop.urls[0]; + var file = "" + // Convert url to string + file = "" + drop.urls[0] if (!file.endsWith('.screenplay')) { - importProjectErrorDialog.title = qsTr("File type not supported. We only support '.screenplay' files."); - importProjectErrorDialog.open(); - return; + importProjectErrorDialog.title = qsTr( + "File type not supported. We only support '.screenplay' files.") + importProjectErrorDialog.open() + return } - importDialog.open(); - dropArea.filePath = file; + importDialog.open() + dropArea.filePath = file } onExited: { - dropPopup.close(); + dropPopup.close() } Util.Dialog { @@ -423,9 +458,11 @@ Item { closePolicy: Popup.NoAutoClose onClosed: importProgressBar.value = 0 onOpened: { - const success = App.util.importProject(dropArea.filePath, App.globalVariables.localStoragePath); - print("finished", success); - dropArea.filePath = ""; + const success = App.util.importProject( + dropArea.filePath, + App.globalVariables.localStoragePath) + print("finished", success) + dropArea.filePath = "" } ColumnLayout { width: parent.width @@ -447,10 +484,10 @@ Item { id: importConnections target: App.util function onExtractionProgressChanged(file, proc, total, br, bt) { - importProgressBar.value = (br * 100 / bt); + importProgressBar.value = (br * 100 / bt) } function onExtractionFinished() { - importDialog.close(); + importDialog.close() } } } @@ -466,8 +503,8 @@ Item { modal: true onOpened: fileDropAnimation.state = "fileDrop" onClosed: { - fileDropAnimation.state = ""; - dropArea.enabled = true; + fileDropAnimation.state = "" + dropArea.enabled = true } Util.FileDropAnimation { diff --git a/ScreenPlay/qml/Installed/ScreenPlayItem.qml b/ScreenPlay/qml/Installed/ScreenPlayItem.qml index e91f4167..79ef8247 100644 --- a/ScreenPlay/qml/Installed/ScreenPlayItem.qml +++ b/ScreenPlay/qml/Installed/ScreenPlayItem.qml @@ -14,6 +14,7 @@ Item { property string screenId property url absoluteStoragePath property int type: InstalledType.Unknown + // Must be var to make it work wit 64bit ints property var publishedFileID: 0 property int itemIndex property bool isScrolling: false diff --git a/ScreenPlay/src/app.cpp b/ScreenPlay/src/app.cpp index 06ac8417..3bd9cde9 100644 --- a/ScreenPlay/src/app.cpp +++ b/ScreenPlay/src/app.cpp @@ -138,10 +138,9 @@ void App::init() using std::make_shared, std::make_unique; - // Util should be created as first so we redirect qDebugs etc. into the log - m_util = make_unique(); m_globalVariables = make_shared(); m_monitorListModel = make_shared(); + m_util = make_unique(m_globalVariables); m_profileListModel = make_shared(m_globalVariables); m_settings = make_shared(m_globalVariables); m_installedListModel = make_shared(m_globalVariables, m_settings); diff --git a/ScreenPlay/src/profilelistmodel.cpp b/ScreenPlay/src/profilelistmodel.cpp index c92c6a1d..95252a25 100644 --- a/ScreenPlay/src/profilelistmodel.cpp +++ b/ScreenPlay/src/profilelistmodel.cpp @@ -22,7 +22,9 @@ namespace ScreenPlay { /*! Constructor */ -ProfileListModel::ProfileListModel(const std::shared_ptr& globalVariables, QObject* parent) +ProfileListModel::ProfileListModel( + const std::shared_ptr& globalVariables, + QObject* parent) : QAbstractListModel(parent) , m_globalVariables { globalVariables } { diff --git a/ScreenPlay/src/util.cpp b/ScreenPlay/src/util.cpp index 669a91d6..7743c8c9 100644 --- a/ScreenPlay/src/util.cpp +++ b/ScreenPlay/src/util.cpp @@ -23,8 +23,10 @@ namespace ScreenPlay { /*! \brief Constructor. */ -Util::Util() +Util::Util( + const std::shared_ptr& globalVariables) : QObject(nullptr) + , m_globalVariables { globalVariables } { m_extractor = std::make_unique(); m_compressor = std::make_unique(); @@ -144,6 +146,15 @@ bool Util::exportProject(QString contentPath, QString exportFileName) return true; } +bool Util::openGodotEditor(QString contentPath) const +{ + const QList godotCmd = { "--editor", "--path", toLocal(contentPath) }; + QProcess process; + process.setProgram(m_globalVariables->godotEditorExecutablePath().toString()); + process.setArguments(godotCmd); + return process.startDetached(); +} + /*! \brief Imports a given project from a .screenplay zip file. The argument extractionPath must be copied otherwise it will get reset in qml before extracting. From f6495d1eaad5bb1927e139b88e342f3a391b29af Mon Sep 17 00:00:00 2001 From: Elias Steurer Date: Thu, 16 Nov 2023 13:28:11 +0100 Subject: [PATCH 057/101] Add missing file --- ScreenPlay/assets/icons/icon_edit.svg | 1 + 1 file changed, 1 insertion(+) create mode 100644 ScreenPlay/assets/icons/icon_edit.svg diff --git a/ScreenPlay/assets/icons/icon_edit.svg b/ScreenPlay/assets/icons/icon_edit.svg new file mode 100644 index 00000000..cb81b113 --- /dev/null +++ b/ScreenPlay/assets/icons/icon_edit.svg @@ -0,0 +1 @@ + \ No newline at end of file From 11faefdbfd3c4c11d46ce726a85ef0d50275d951 Mon Sep 17 00:00:00 2001 From: Elias Steurer Date: Thu, 16 Nov 2023 13:43:19 +0100 Subject: [PATCH 058/101] Add godot build copy as custom cmake step --- ScreenPlayWallpaper/Godot/GDExtention/CMakeLists.txt | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/ScreenPlayWallpaper/Godot/GDExtention/CMakeLists.txt b/ScreenPlayWallpaper/Godot/GDExtention/CMakeLists.txt index 60ea81de..b09722ae 100644 --- a/ScreenPlayWallpaper/Godot/GDExtention/CMakeLists.txt +++ b/ScreenPlayWallpaper/Godot/GDExtention/CMakeLists.txt @@ -32,8 +32,16 @@ project(ScreenPlayGodotWallpaper LANGUAGES CXX) # Create our library add_library(${PROJECT_NAME} SHARED) +# Runs after compilation +# Enable executing python scripts +find_package(Python COMPONENTS Interpreter) + +add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD + WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}/Tools" + COMMAND "${Python_EXECUTABLE}" "build_godot.py" "--build_path" "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}" + COMMENT "Running post-build step" +) -target_compile_features(${PROJECT_NAME} PRIVATE cxx_std_17) # LIB_ARCH is the architecture being built. It is set to the build system's architecture. For macOS, we build a universal library (both # arm64 and x86_64). From 7ea263dc2fecf9f8367746bfb89a7f0aae03f67d Mon Sep 17 00:00:00 2001 From: Elias Steurer Date: Fri, 17 Nov 2023 13:37:47 +0100 Subject: [PATCH 059/101] Add Godot export_presets to wizard to fix package of pck file Update godot-cpp Format all files Fix Godot wallpaper setup on primary screen --- Content/wallpaper_godot_fjord/project.godot | 2 +- ScreenPlay/CMakeLists.txt | 9 +- ScreenPlay/inc/public/ScreenPlay/wizards.h | 1 - ScreenPlay/main.qml | 109 ++++++------ ScreenPlay/qml/Create/CreateSidebar.qml | 1 - .../WizardsFiles/Godot_v5/export_presets.cfg | 15 ++ ScreenPlay/qml/Installed/Installed.qml | 160 ++++++++---------- ScreenPlay/qml/Navigation/Navigation.qml | 5 +- ScreenPlay/qml/TrayIcon.qml | 62 ++++--- ScreenPlay/src/monitorlistmodel.cpp | 4 +- ScreenPlay/src/wizards.cpp | 15 +- .../Godot/GDExtention/CMakeLists.txt | 11 +- .../Godot/GDExtention/extern/godot-cpp | 2 +- .../src/ScreenPlayGodotWallpaper.cpp | 106 ++++++------ .../Godot/ScreenPlayGodot/main.gd | 2 +- ScreenPlayWallpaper/qml/Test.qml | 9 +- .../src/windowsintegration.cpp | 8 +- ScreenPlayWallpaper/src/windowsintegration.h | 26 +-- 18 files changed, 274 insertions(+), 273 deletions(-) create mode 100644 ScreenPlay/qml/Create/WizardsFiles/Godot_v5/export_presets.cfg diff --git a/Content/wallpaper_godot_fjord/project.godot b/Content/wallpaper_godot_fjord/project.godot index cdad8da6..d60e8d8a 100644 --- a/Content/wallpaper_godot_fjord/project.godot +++ b/Content/wallpaper_godot_fjord/project.godot @@ -12,7 +12,7 @@ config_version=5 config/name="Fjord" run/main_scene="res://wallpaper.tscn" -config/features=PackedStringArray("4.1", "Mobile") +config/features=PackedStringArray("4.2", "Mobile") config/icon="res://icon.svg" [rendering] diff --git a/ScreenPlay/CMakeLists.txt b/ScreenPlay/CMakeLists.txt index 73391ae7..7736f125 100644 --- a/ScreenPlay/CMakeLists.txt +++ b/ScreenPlay/CMakeLists.txt @@ -60,6 +60,7 @@ set(QML qml/Create/StartInfoLinkImage.qml qml/Create/Wizard.qml qml/Create/Wizards/GifWallpaper.qml + qml/Create/Wizards/GodotWallpaper.qml qml/Create/Wizards/HTMLWallpaper.qml qml/Create/Wizards/HTMLWidget.qml qml/Create/Wizards/Importh264/Importh264.qml @@ -73,14 +74,14 @@ set(QML qml/Create/Wizards/ImportWebm/ImportWebmConvert.qml qml/Create/Wizards/ImportWebm/ImportWebmInit.qml qml/Create/Wizards/QMLWallpaper.qml - qml/Create/Wizards/GodotWallpaper.qml qml/Create/Wizards/QMLWidget.qml qml/Create/Wizards/WebsiteWallpaper.qml qml/Create/Wizards/WizardPage.qml - qml/Create/WizardsFiles/QMLWallpaperMain.qml - qml/Create/WizardsFiles/QMLWidgetMain.qml + qml/Create/WizardsFiles/Godot_v5/export_presets.cfg qml/Create/WizardsFiles/Godot_v5/project.godot qml/Create/WizardsFiles/Godot_v5/wallpaper.tscn + qml/Create/WizardsFiles/QMLWallpaperMain.qml + qml/Create/WizardsFiles/QMLWidgetMain.qml qml/Installed/Installed.qml qml/Installed/InstalledNavigation.qml qml/Installed/InstalledWelcomeScreen.qml @@ -149,6 +150,7 @@ set(RESOURCES assets/icons/icon_document.svg assets/icons/icon_done.svg assets/icons/icon_download.svg + assets/icons/icon_edit.svg assets/icons/icon_emptyWidget.svg assets/icons/icon_folder_open.svg assets/icons/icon_forum.svg @@ -185,7 +187,6 @@ set(RESOURCES assets/icons/icon_widgets.svg assets/icons/icon_window.svg assets/icons/item_banner_new.svg - assets/icons/icon_edit.svg assets/icons/monitor_setup.svg assets/icons/steam_default_avatar.png assets/images/Early_Access.png diff --git a/ScreenPlay/inc/public/ScreenPlay/wizards.h b/ScreenPlay/inc/public/ScreenPlay/wizards.h index aff61fc6..2150ef30 100644 --- a/ScreenPlay/inc/public/ScreenPlay/wizards.h +++ b/ScreenPlay/inc/public/ScreenPlay/wizards.h @@ -84,7 +84,6 @@ public slots: const QString& previewThumbnail, const QVector& tags); - void createGodotWallpaper( const QString& title, const QString& licenseName, diff --git a/ScreenPlay/main.qml b/ScreenPlay/main.qml index 3a6077cd..06a58e21 100644 --- a/ScreenPlay/main.qml +++ b/ScreenPlay/main.qml @@ -23,40 +23,36 @@ ApplicationWindow { function setTheme(theme) { switch (theme) { case Settings.System: - root.Material.theme = Material.System - break + root.Material.theme = Material.System; + break; case Settings.Dark: - root.Material.theme = Material.Dark - break + root.Material.theme = Material.Dark; + break; case Settings.Light: - root.Material.theme = Material.Light - break + root.Material.theme = Material.Light; + break; } } function switchPage(name) { if (nav.currentNavigationName === name) { if (name === "Installed") - App.installedListModel.reset() + App.installedListModel.reset(); } if (name === "Installed") { - stackView.replace( - "qrc:/qml/ScreenPlayApp/qml/Installed/Installed.qml", { - "sidebar": sidebar - }) - return + stackView.replace("qrc:/qml/ScreenPlayApp/qml/Installed/Installed.qml", { + "sidebar": sidebar + }); + return; } - stackView.replace( - "qrc:/qml/ScreenPlayApp/qml/" + name + "/" + name + ".qml", - { - "modalSource": content - }) - nav.setNavigation(name) - sidebar.state = "inactive" + stackView.replace("qrc:/qml/ScreenPlayApp/qml/" + name + "/" + name + ".qml", { + "modalSource": content + }); + nav.setNavigation(name); + sidebar.state = "inactive"; } - color: Material.theme === Material.Dark ? Qt.darker( - Material.background) : Material.background + color: Material.theme === Material.Dark ? Qt.darker(Material.background) : Material.background // Set visible if the -silent parameter was not set (see app.cpp end of constructor). visible: false width: 1400 @@ -78,28 +74,25 @@ ApplicationWindow { Material.accent: Material.color(Material.Orange) onVisibilityChanged: { if (root.visibility !== 2) - return - + return; } onClosing: close => { - close.accepted = false - if (App.screenPlayManager.activeWallpaperCounter === 0 - && App.screenPlayManager.activeWidgetsCounter === 0) { - App.exit() - } - const alwaysMinimize = settings.value("alwaysMinimize", null) - if (alwaysMinimize === null) { - console.error( - "Unable to retreive alwaysMinimize setting") - } - if (alwaysMinimize === "true") { - root.hide() - App.showDockIcon(false) - return - } - exitDialog.open() - } + close.accepted = false; + if (App.screenPlayManager.activeWallpaperCounter === 0 && App.screenPlayManager.activeWidgetsCounter === 0) { + App.exit(); + } + const alwaysMinimize = settings.value("alwaysMinimize", null); + if (alwaysMinimize === null) { + console.error("Unable to retreive alwaysMinimize setting"); + } + if (alwaysMinimize === "true") { + root.hide(); + App.showDockIcon(false); + return; + } + exitDialog.open(); + } QCore.Settings { id: settings @@ -112,13 +105,13 @@ ApplicationWindow { } Component.onCompleted: { - setTheme(App.settings.theme) + setTheme(App.settings.theme); stackView.push("qrc:/qml/ScreenPlayApp/qml/Installed/Installed.qml", { - "sidebar": sidebar - }) + "sidebar": sidebar + }); if (!App.settings.silentStart) { - App.showDockIcon(true) - root.show() + App.showDockIcon(true); + root.show(); } App.installedListModel.reset(); } @@ -150,7 +143,7 @@ ApplicationWindow { Connections { function onThemeChanged(theme) { - setTheme(theme) + setTheme(theme); } target: App.settings @@ -158,7 +151,7 @@ ApplicationWindow { Connections { function onRequestNavigation(nav) { - switchPage(nav) + switchPage(nav); } target: App.util @@ -166,18 +159,16 @@ ApplicationWindow { Connections { function onRequestRaise() { - App.showDockIcon(true) - root.show() + App.showDockIcon(true); + root.show(); } function onActiveWidgetsCounterChanged() { - plausible.pageView( - "widget/count/" + App.screenPlayManager.activeWidgetsCounter) + plausible.pageView("widget/count/" + App.screenPlayManager.activeWidgetsCounter); } function onActiveWallpaperCounterChanged() { - plausible.pageView( - "wallpaper/count/" + App.screenPlayManager.activeWallpaperCounter) + plausible.pageView("wallpaper/count/" + App.screenPlayManager.activeWallpaperCounter); } target: App.screenPlayManager @@ -235,16 +226,16 @@ ApplicationWindow { Connections { function onSetSidebarActive(active) { if (active) - sidebar.state = "active" + sidebar.state = "active"; else - sidebar.state = "inactive" + sidebar.state = "inactive"; } function onSetNavigationItem(pos) { if (pos === 0) - nav.onPageChanged("Create") + nav.onPageChanged("Create"); else - nav.onPageChanged("Workshop") + nav.onPageChanged("Workshop"); } target: stackView.currentItem @@ -273,8 +264,8 @@ ApplicationWindow { } onChangePage: function (name) { - monitors.close() - switchPage(name) + monitors.close(); + switchPage(name); } } } diff --git a/ScreenPlay/qml/Create/CreateSidebar.qml b/ScreenPlay/qml/Create/CreateSidebar.qml index 50bb7aab..a46fe60b 100644 --- a/ScreenPlay/qml/Create/CreateSidebar.qml +++ b/ScreenPlay/qml/Create/CreateSidebar.qml @@ -92,7 +92,6 @@ Rectangle { objectName: "" } - ListElement { headline: qsTr("QML Wallpaper") source: "qrc:/qml/ScreenPlayApp/qml/Create/Wizards/QMLWallpaper.qml" diff --git a/ScreenPlay/qml/Create/WizardsFiles/Godot_v5/export_presets.cfg b/ScreenPlay/qml/Create/WizardsFiles/Godot_v5/export_presets.cfg new file mode 100644 index 00000000..40ff0c71 --- /dev/null +++ b/ScreenPlay/qml/Create/WizardsFiles/Godot_v5/export_presets.cfg @@ -0,0 +1,15 @@ +[preset.0] + +name="Windows Desktop" +platform="Windows Desktop" +runnable=true +dedicated_server=false +custom_features="" +export_filter="all_resources" +include_filter="" +exclude_filter="" +export_path="" +encryption_include_filters="" +encryption_exclude_filters="" +encrypt_pck=false +encrypt_directory=false diff --git a/ScreenPlay/qml/Installed/Installed.qml b/ScreenPlay/qml/Installed/Installed.qml index 1c4c9470..a4e82ca7 100644 --- a/ScreenPlay/qml/Installed/Installed.qml +++ b/ScreenPlay/qml/Installed/Installed.qml @@ -25,23 +25,23 @@ Item { function checkIsContentInstalled() { if (App.installedListModel.count === 0) { - loaderHelp.active = true - gridView.footerItem.isVisible = true - gridView.visible = false - navWrapper.visible = false + loaderHelp.active = true; + gridView.footerItem.isVisible = true; + gridView.visible = false; + navWrapper.visible = false; } else { - loaderHelp.active = false - gridView.footerItem.isVisible = false - refresh = false - gridView.contentY = -82 - gridView.visible = true - navWrapper.visible = true + loaderHelp.active = false; + gridView.footerItem.isVisible = false; + refresh = false; + gridView.contentY = -82; + gridView.visible = true; + navWrapper.visible = true; } } StackView.onActivated: { - navWrapper.state = "in" - checkIsContentInstalled() + navWrapper.state = "in"; + checkIsContentInstalled(); } Action { @@ -51,12 +51,12 @@ Item { Connections { function onInstalledLoadingFinished() { - checkIsContentInstalled() + checkIsContentInstalled(); } function onCountChanged(count) { if (count === 0) - checkIsContentInstalled() + checkIsContentInstalled(); } target: App.installedListModel @@ -71,7 +71,7 @@ Item { Connections { function onSortChanged() { - gridView.positionViewAtBeginning() + gridView.positionViewAtBeginning(); } target: App.installedListFilter @@ -85,8 +85,6 @@ Item { property bool isScrolling: gridView.verticalVelocity !== 0 boundsBehavior: Flickable.DragOverBounds - maximumFlickVelocity: 3000 - flickDeceleration: 7500 anchors.fill: parent cellWidth: 340 cellHeight: 200 @@ -128,12 +126,12 @@ Item { } onContentYChanged: { if (contentY <= -180) - gridView.headerItem.isVisible = true + gridView.headerItem.isVisible = true; else - gridView.headerItem.isVisible = false + gridView.headerItem.isVisible = false; //Pull to refresh if (contentY <= -180 && !refresh && !isDragging) - App.installedListModel.reset() + App.installedListModel.reset(); } anchors { @@ -150,11 +148,11 @@ Item { opacity: 0 onIsVisibleChanged: { if (isVisible) { - txtHeader.color = Material.accent - txtHeader.text = qsTr("Refreshing!") + txtHeader.color = Material.accent; + txtHeader.text = qsTr("Refreshing!"); } else { - txtHeader.color = "gray" - txtHeader.text = qsTr("Pull to refresh!") + txtHeader.color = "gray"; + txtHeader.text = qsTr("Pull to refresh!"); } } @@ -162,7 +160,7 @@ Item { interval: 150 running: true onTriggered: { - animFadeIn.start() + animFadeIn.start(); } } @@ -206,7 +204,7 @@ Item { interval: 400 running: true onTriggered: { - animFadeInTxtFooter.start() + animFadeInTxtFooter.start(); } } @@ -236,23 +234,23 @@ Item { isScrolling: gridView.isScrolling onOpenContextMenu: function (position) { // Set the menu to the current item informations - contextMenu.publishedFileID = delegate.publishedFileID - contextMenu.absoluteStoragePath = delegate.absoluteStoragePath - contextMenu.fileName = delegate.customTitle - contextMenu.type = delegate.type - print(delegate.publishedFileID) - if(contextMenu.godotItem) - contextMenu.godotItem.destroy() - const pos = delegate.mapToItem(root, position.x, position.y) + contextMenu.publishedFileID = delegate.publishedFileID; + contextMenu.absoluteStoragePath = delegate.absoluteStoragePath; + contextMenu.fileName = delegate.customTitle; + contextMenu.type = delegate.type; + print(delegate.publishedFileID); + if (contextMenu.godotItem) + contextMenu.godotItem.destroy(); + const pos = delegate.mapToItem(root, position.x, position.y); // Disable duplicate opening. The can happen if we // call popup when we are in the closing animtion. if (contextMenu.visible || contextMenu.opened) - return + return; if (delegate.type === InstalledType.GodotWallpaper) { - contextMenu.godotItem = editGodotWallpaperComp.createObject() - contextMenu.insertItem(0, contextMenu.godotItem) + contextMenu.godotItem = editGodotWallpaperComp.createObject(); + contextMenu.insertItem(0, contextMenu.godotItem); } - contextMenu.popup(pos.x, pos.y) + contextMenu.popup(pos.x, pos.y); } } @@ -269,7 +267,7 @@ Item { enabled: contextMenu.type === InstalledType.GodotWallpaper icon.source: "qrc:/qml/ScreenPlayApp/assets/icons/icon_edit.svg" onClicked: { - App.util.openGodotEditor(contextMenu.absoluteStoragePath) + App.util.openGodotEditor(contextMenu.absoluteStoragePath); } } } @@ -290,7 +288,7 @@ Item { objectName: "openFolder" icon.source: "qrc:/qml/ScreenPlayApp/assets/icons/icon_folder_open.svg" onClicked: { - App.util.openFolderInExplorer(contextMenu.absoluteStoragePath) + App.util.openFolderInExplorer(contextMenu.absoluteStoragePath); } } @@ -299,12 +297,10 @@ Item { objectName: enabled ? "removeItem" : "removeWorkshopItem" icon.source: "qrc:/qml/ScreenPlayApp/assets/icons/icon_import_export_.svg" onClicked: { - exportFileDialog.absoluteStoragePath = contextMenu.absoluteStoragePath - let urlFileName = QCore.StandardPaths.writableLocation( - QCore.StandardPaths.DesktopLocation) + "/" - + contextMenu.fileName + ".screenplay" - exportFileDialog.currentFile = urlFileName - exportFileDialog.open() + exportFileDialog.absoluteStoragePath = contextMenu.absoluteStoragePath; + let urlFileName = QCore.StandardPaths.writableLocation(QCore.StandardPaths.DesktopLocation) + "/" + contextMenu.fileName + ".screenplay"; + exportFileDialog.currentFile = urlFileName; + exportFileDialog.open(); } } @@ -312,21 +308,18 @@ Item { text: enabled ? qsTr("Remove Item") : qsTr("Remove via Workshop") objectName: enabled ? "removeItem" : "removeWorkshopItem" icon.source: "qrc:/qml/ScreenPlayApp/assets/icons/icon_delete.svg" - enabled: contextMenu.publishedFileID === 0 - || !App.settings.steamVersion + enabled: contextMenu.publishedFileID === 0 || !App.settings.steamVersion onClicked: { - deleteDialog.open() + deleteDialog.open(); } } MenuItem { text: qsTr("Open Workshop Page") - enabled: contextMenu.publishedFileID !== 0 - && App.settings.steamVersion + enabled: contextMenu.publishedFileID !== 0 && App.settings.steamVersion icon.source: "qrc:/qml/ScreenPlayApp/assets/icons/icon_steam.svg" onClicked: { - Qt.openUrlExternally( - "steam://url/CommunityFilePage/" + contextMenu.publishedFileID) + Qt.openUrlExternally("steam://url/CommunityFilePage/" + contextMenu.publishedFileID); } } } @@ -339,9 +332,8 @@ Item { modalSource: root.modalSource anchors.centerIn: Overlay.overlay onAccepted: { - root.sidebar.clear() - App.installedListModel.deinstallItemAt( - contextMenu.absoluteStoragePath) + root.sidebar.clear(); + App.installedListModel.deinstallItemAt(contextMenu.absoluteStoragePath); } } @@ -350,7 +342,7 @@ Item { fileMode: FileDialog.SaveFile property string absoluteStoragePath onAccepted: { - exportFileProgressDialog.open() + exportFileProgressDialog.open(); } } @@ -363,9 +355,7 @@ Item { modalSource: root.modalSource closePolicy: Popup.NoAutoClose onOpened: { - const success = App.util.exportProject( - exportFileDialog.absoluteStoragePath, - exportFileDialog.currentFile) + const success = App.util.exportProject(exportFileDialog.absoluteStoragePath, exportFileDialog.currentFile); } onClosed: exportProgressBar.value = 0 ColumnLayout { @@ -390,10 +380,10 @@ Item { id: exportConnections target: App.util function onCompressionProgressChanged(file, proc, total, br, bt) { - exportProgressBar.value = (br * 100 / bt) + exportProgressBar.value = (br * 100 / bt); } function onCompressionFinished() { - exportFileProgressDialog.close() + exportFileProgressDialog.close(); } } } @@ -413,31 +403,29 @@ Item { anchors.fill: parent property string filePath onEntered: function (drag) { - dropPopup.open() + dropPopup.open(); } onDropped: function (drop) { - dropPopup.close() - dropArea.enabled = false + dropPopup.close(); + dropArea.enabled = false; if (drop.urls.length > 1) { - importProjectErrorDialog.title = qsTr( - "We only support adding one item at once.") - importProjectErrorDialog.open() - return + importProjectErrorDialog.title = qsTr("We only support adding one item at once."); + importProjectErrorDialog.open(); + return; } - var file = "" + var file = ""; // Convert url to string - file = "" + drop.urls[0] + file = "" + drop.urls[0]; if (!file.endsWith('.screenplay')) { - importProjectErrorDialog.title = qsTr( - "File type not supported. We only support '.screenplay' files.") - importProjectErrorDialog.open() - return + importProjectErrorDialog.title = qsTr("File type not supported. We only support '.screenplay' files."); + importProjectErrorDialog.open(); + return; } - importDialog.open() - dropArea.filePath = file + importDialog.open(); + dropArea.filePath = file; } onExited: { - dropPopup.close() + dropPopup.close(); } Util.Dialog { @@ -458,11 +446,9 @@ Item { closePolicy: Popup.NoAutoClose onClosed: importProgressBar.value = 0 onOpened: { - const success = App.util.importProject( - dropArea.filePath, - App.globalVariables.localStoragePath) - print("finished", success) - dropArea.filePath = "" + const success = App.util.importProject(dropArea.filePath, App.globalVariables.localStoragePath); + print("finished", success); + dropArea.filePath = ""; } ColumnLayout { width: parent.width @@ -484,10 +470,10 @@ Item { id: importConnections target: App.util function onExtractionProgressChanged(file, proc, total, br, bt) { - importProgressBar.value = (br * 100 / bt) + importProgressBar.value = (br * 100 / bt); } function onExtractionFinished() { - importDialog.close() + importDialog.close(); } } } @@ -503,8 +489,8 @@ Item { modal: true onOpened: fileDropAnimation.state = "fileDrop" onClosed: { - fileDropAnimation.state = "" - dropArea.enabled = true + fileDropAnimation.state = ""; + dropArea.enabled = true; } Util.FileDropAnimation { diff --git a/ScreenPlay/qml/Navigation/Navigation.qml b/ScreenPlay/qml/Navigation/Navigation.qml index 6f6c4d87..42bacd6b 100644 --- a/ScreenPlay/qml/Navigation/Navigation.qml +++ b/ScreenPlay/qml/Navigation/Navigation.qml @@ -13,7 +13,7 @@ Rectangle { id: root property string currentNavigationName: "Installed" - property var navArray: [navCreate, navWorkshop, navInstalled,navCommunity, navSettings] + property var navArray: [navCreate, navWorkshop, navInstalled, navCommunity, navSettings] property bool navActive: true property Item modalSource property int iconWidth: 16 @@ -30,11 +30,10 @@ Rectangle { } function setNavigation(name) { for (var i = 0; i < navArray.length; i++) { - print(navArray[i].objectName) if (navArray[i].objectName === name) { navArray[i].state = "active"; root.currentNavigationName = name; - tabBar.currentIndex = navArray[i].index + tabBar.currentIndex = navArray[i].index; } else { navArray[i].state = "inactive"; } diff --git a/ScreenPlay/qml/TrayIcon.qml b/ScreenPlay/qml/TrayIcon.qml index 38db305e..6543e5f5 100644 --- a/ScreenPlay/qml/TrayIcon.qml +++ b/ScreenPlay/qml/TrayIcon.qml @@ -14,23 +14,22 @@ SystemTrayIcon { onActivated: function (reason) { switch (reason) { case SystemTrayIcon.Unknown: - break + break; case SystemTrayIcon.Context: - break + break; case SystemTrayIcon.DoubleClick: - window.show() - break + window.show(); + break; case SystemTrayIcon.Trigger: - break + break; case SystemTrayIcon.MiddleClick: - break + break; } } - function open(){ - App.showDockIcon(true) - window.show() - + function open() { + App.showDockIcon(true); + window.show(); } menu: Menu { @@ -38,16 +37,16 @@ SystemTrayIcon { id: miOpenScreenPlay text: qsTr("Open ScreenPlay") onTriggered: { - root.open() + root.open(); } } MenuItem { id: miChangeWallpaperSettings text: qsTr("Change Wallpaper settings") onTriggered: { - root.open() + root.open(); App.util.setNavigation("Installed"); - App.util.setToggleWallpaperConfiguration() + App.util.setToggleWallpaperConfiguration(); } } MenuItem { @@ -57,7 +56,7 @@ SystemTrayIcon { MenuItem { text: qsTr("Browse Workshop") onTriggered: { - root.open() + root.open(); App.util.setNavigation("Workshop"); } } @@ -66,7 +65,7 @@ SystemTrayIcon { id: miCreate text: qsTr("Create new Wallpaper or Widgets") onTriggered: { - root.open() + root.open(); App.util.setNavigation("Create"); } } @@ -74,7 +73,7 @@ SystemTrayIcon { id: miSettings text: qsTr("Settings") onTriggered: { - root.open() + root.open(); App.util.setNavigation("Settings"); } } @@ -85,14 +84,13 @@ SystemTrayIcon { MenuItem { text: qsTr("Forums") onTriggered: { - Qt.openUrlExternally("https://forum.screen-play.app/") + Qt.openUrlExternally("https://forum.screen-play.app/"); } } MenuItem { text: qsTr("Frequently Asked Questions (FAQ)") onTriggered: { - Qt.openUrlExternally( - "https://kelteseth.gitlab.io/ScreenPlayDocs/Frequently%20Asked%20Questions/") + Qt.openUrlExternally("https://kelteseth.gitlab.io/ScreenPlayDocs/Frequently%20Asked%20Questions/"); } } MenuItem { @@ -106,13 +104,13 @@ SystemTrayIcon { text: qsTr("Mute all") onTriggered: { if (miMuteAll.isMuted) { - isMuted = false - miMuteAll.text = qsTr("Mute all") - App.screenPlayManager.setAllWallpaperValue("muted", "true") + isMuted = false; + miMuteAll.text = qsTr("Mute all"); + App.screenPlayManager.setAllWallpaperValue("muted", "true"); } else { - isMuted = true - miMuteAll.text = qsTr("Unmute all") - App.screenPlayManager.setAllWallpaperValue("muted", "false") + isMuted = true; + miMuteAll.text = qsTr("Unmute all"); + App.screenPlayManager.setAllWallpaperValue("muted", "false"); } } } @@ -125,15 +123,13 @@ SystemTrayIcon { text: qsTr("Pause all") onTriggered: { if (miStopAll.isPlaying) { - isPlaying = false - miStopAll.text = qsTr("Pause all") - App.screenPlayManager.setAllWallpaperValue("isPlaying", - "true") + isPlaying = false; + miStopAll.text = qsTr("Pause all"); + App.screenPlayManager.setAllWallpaperValue("isPlaying", "true"); } else { - isPlaying = true - miStopAll.text = qsTr("Play all") - App.screenPlayManager.setAllWallpaperValue("isPlaying", - "false") + isPlaying = true; + miStopAll.text = qsTr("Play all"); + App.screenPlayManager.setAllWallpaperValue("isPlaying", "false"); } } } diff --git a/ScreenPlay/src/monitorlistmodel.cpp b/ScreenPlay/src/monitorlistmodel.cpp index 4a3fdfd0..904d57ce 100644 --- a/ScreenPlay/src/monitorlistmodel.cpp +++ b/ScreenPlay/src/monitorlistmodel.cpp @@ -114,7 +114,7 @@ void MonitorListModel::loadMonitors() #ifdef Q_OS_WIN QModelIndex index; - auto monitors = WindowsIntegration().GetAllMonitors(); + auto monitors = WindowsIntegration().getAllMonitors(); // This offset lets us center the monitor selection view in the center int offsetX = 0; @@ -131,7 +131,7 @@ void MonitorListModel::loadMonitors() } } - for(int i = 0; auto& monitor : monitors) { + for (int i = 0; auto& monitor : monitors) { const int width = std::abs(monitor.position.right - monitor.position.left); const int height = std::abs(monitor.position.top - monitor.position.bottom); const int x = monitor.position.left; diff --git a/ScreenPlay/src/wizards.cpp b/ScreenPlay/src/wizards.cpp index 45d2756e..952cd541 100644 --- a/ScreenPlay/src/wizards.cpp +++ b/ScreenPlay/src/wizards.cpp @@ -289,7 +289,6 @@ void Wizards::createQMLWallpaper( }); } - /*! \brief . */ @@ -337,18 +336,26 @@ void Wizards::createGodotWallpaper( return; } - if (!Util::writeSettings(obj, workingPath + "/project.json")) { emit widgetCreationFinished(WizardResult::WriteProjectFileError); return; } if (!Util::writeFileFromQrc(":/qml/ScreenPlayApp/qml/Create/WizardsFiles/Godot_v5/project.godot", workingPath + "/project.godot")) { - qWarning() << "Could not write main.qml"; + qWarning() << "Could not write project.godot"; return; } + if (!Util::writeFileFromQrc(":/qml/ScreenPlayApp/qml/Create/WizardsFiles/Godot_v5/wallpaper.tscn", workingPath + "/wallpaper.tscn")) { - qWarning() << "Could not write main.qml"; + qWarning() << "Could not write wallpaper.tscn"; + return; + } + + // This presets file is needed for the export. Because we do only export + // package files, it does not matter that we hardcode "Windows Desktop" as + // export preset. + if (!Util::writeFileFromQrc(":/qml/ScreenPlayApp/qml/Create/WizardsFiles/Godot_v5/export_presets.cfg", workingPath + "/export_presets.cfg")) { + qWarning() << "Could not write export_presets.cfg"; return; } diff --git a/ScreenPlayWallpaper/Godot/GDExtention/CMakeLists.txt b/ScreenPlayWallpaper/Godot/GDExtention/CMakeLists.txt index b09722ae..a201be38 100644 --- a/ScreenPlayWallpaper/Godot/GDExtention/CMakeLists.txt +++ b/ScreenPlayWallpaper/Godot/GDExtention/CMakeLists.txt @@ -32,16 +32,15 @@ project(ScreenPlayGodotWallpaper LANGUAGES CXX) # Create our library add_library(${PROJECT_NAME} SHARED) -# Runs after compilation -# Enable executing python scripts +# Runs after compilation Enable executing python scripts find_package(Python COMPONENTS Interpreter) -add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD +add_custom_command( + TARGET ${PROJECT_NAME} + POST_BUILD WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}/Tools" COMMAND "${Python_EXECUTABLE}" "build_godot.py" "--build_path" "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}" - COMMENT "Running post-build step" -) - + COMMENT "Running post-build step") # LIB_ARCH is the architecture being built. It is set to the build system's architecture. For macOS, we build a universal library (both # arm64 and x86_64). diff --git a/ScreenPlayWallpaper/Godot/GDExtention/extern/godot-cpp b/ScreenPlayWallpaper/Godot/GDExtention/extern/godot-cpp index c1196a1a..c4b7b08c 160000 --- a/ScreenPlayWallpaper/Godot/GDExtention/extern/godot-cpp +++ b/ScreenPlayWallpaper/Godot/GDExtention/extern/godot-cpp @@ -1 +1 @@ -Subproject commit c1196a1ab0a1ca166d0e5e2f08f9fe4156118c5e +Subproject commit c4b7b08c917e4dd41e4a53d28660b7358e60d7b1 diff --git a/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayGodotWallpaper.cpp b/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayGodotWallpaper.cpp index 8d124242..b219fb0f 100644 --- a/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayGodotWallpaper.cpp +++ b/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayGodotWallpaper.cpp @@ -74,18 +74,26 @@ bool ScreenPlayGodotWallpaper::configureWindowGeometry() bool ScreenPlayGodotWallpaper::init(int activeScreen) { auto* displayServer = DisplayServer::get_singleton(); - { - int64_t handle_int = displayServer->window_get_native_handle(godot::DisplayServer::HandleType::WINDOW_HANDLE, activeScreen); - HWND hwnd = reinterpret_cast(static_cast(handle_int)); - m_windowsIntegration.setWindowHandle(hwnd); + + int64_t handle_int = displayServer->window_get_native_handle(godot::DisplayServer::HandleType::WINDOW_HANDLE); + HWND hwnd = reinterpret_cast(handle_int); + m_windowsIntegration.setWindowHandle(hwnd); + ShowWindow(m_windowsIntegration.windowHandle(), SW_HIDE); + if (!IsWindow(hwnd)) { + UtilityFunctions::print("ScreenPlayGodotWallpaper::init Could not get a valid window handle !", activeScreen, handle_int); + UtilityFunctions::print("init hwnd: ", (int64_t)hwnd, activeScreen, handle_int); + + std::vector monitors = m_windowsIntegration.getAllMonitors(); + for (const auto& monitor : monitors) { + UtilityFunctions::print(monitor.toString().c_str()); + } + return false; } - hideFromTaskbar(m_windowsIntegration.windowHandle()); if (!configureWindowGeometry()) { return false; } - ShowWindow(m_windowsIntegration.windowHandle(), SW_HIDE); - + hideFromTaskbar(m_windowsIntegration.windowHandle()); auto updateWindowSize = [&displayServer](const int width, const int height) { displayServer->window_set_size(godot::Vector2((real_t)width, (real_t)height)); }; @@ -101,38 +109,38 @@ bool ScreenPlayGodotWallpaper::init(int activeScreen) SetWindowText(m_windowsIntegration.windowHandle(), windowTitle.c_str()); ShowWindow(m_windowsIntegration.windowHandle(), SW_SHOW); - m_windowsIntegration.setupWindowMouseHook(); + // m_windowsIntegration.setupWindowMouseHook(); // Set up the mouse event handler - m_windowsIntegration.setMouseEventHandler([this](DWORD mouseButton, UINT type, POINT p) { - Ref mouse_event; - Ref motion_event; - switch (type) { - case WM_LBUTTONDOWN: - case WM_LBUTTONUP: - case WM_RBUTTONDOWN: - case WM_RBUTTONUP: - mouse_event.instantiate(); - mouse_event->set_position(Vector2(p.x, p.y)); - mouse_event->set_global_position(Vector2(p.x, p.y)); // Assuming global == local for this context - mouse_event->set_button_index( - type == WM_LBUTTONDOWN || type == WM_LBUTTONUP ? MOUSE_BUTTON_LEFT : MOUSE_BUTTON_RIGHT); - mouse_event->set_pressed(type == WM_LBUTTONDOWN || type == WM_RBUTTONDOWN); - break; - case WM_MOUSEMOVE: - motion_event.instantiate(); - motion_event->set_position(Vector2(p.x, p.y)); - motion_event->set_global_position(Vector2(p.x, p.y)); - break; - // Add more cases as needed - } + // m_windowsIntegration.setMouseEventHandler([this](DWORD mouseButton, UINT type, POINT p) { + // Ref mouse_event; + // Ref motion_event; + // switch (type) { + // case WM_LBUTTONDOWN: + // case WM_LBUTTONUP: + // case WM_RBUTTONDOWN: + // case WM_RBUTTONUP: + // mouse_event.instantiate(); + // mouse_event->set_position(Vector2(p.x, p.y)); + // mouse_event->set_global_position(Vector2(p.x, p.y)); // Assuming global == local for this context + // mouse_event->set_button_index( + // type == WM_LBUTTONDOWN || type == WM_LBUTTONUP ? MOUSE_BUTTON_LEFT : MOUSE_BUTTON_RIGHT); + // mouse_event->set_pressed(type == WM_LBUTTONDOWN || type == WM_RBUTTONDOWN); + // break; + // case WM_MOUSEMOVE: + // motion_event.instantiate(); + // motion_event->set_position(Vector2(p.x, p.y)); + // motion_event->set_global_position(Vector2(p.x, p.y)); + // break; + // // Add more cases as needed + // } - if (mouse_event.is_valid()) { - get_tree()->get_root()->get_viewport()->push_input(mouse_event); - } - if (motion_event.is_valid()) { - get_tree()->get_root()->get_viewport()->push_input(motion_event); - } - }); + // if (mouse_event.is_valid()) { + // get_tree()->get_root()->get_viewport()->push_input(mouse_event); + // } + // if (motion_event.is_valid()) { + // get_tree()->get_root()->get_viewport()->push_input(motion_event); + // } + // }); 2 return true; } @@ -222,18 +230,6 @@ void ScreenPlayGodotWallpaper::messageReceived(const std::string& key, const std std::cerr << "Out of range: " << oor.what() << std::endl; } } -void ScreenPlayGodotWallpaper::set_checkWallpaperVisible(bool visible) -{ - m_checkWallpaperVisible = visible; -} -bool ScreenPlayGodotWallpaper::get_screenPlayConnected() const -{ - return m_screenPlayConnected; -} -bool ScreenPlayGodotWallpaper::get_pipeConnected() const -{ - return m_pipeConnected; -} bool ScreenPlayGodotWallpaper::exit() { // Somehow this gets called at editor startup @@ -247,6 +243,18 @@ bool ScreenPlayGodotWallpaper::exit() ShowWindow(m_windowsIntegration.windowHandleWorker(), SW_HIDE); return true; } +void ScreenPlayGodotWallpaper::set_checkWallpaperVisible(bool visible) +{ + m_checkWallpaperVisible = visible; +} +bool ScreenPlayGodotWallpaper::get_screenPlayConnected() const +{ + return m_screenPlayConnected; +} +bool ScreenPlayGodotWallpaper::get_pipeConnected() const +{ + return m_pipeConnected; +} bool ScreenPlayGodotWallpaper::get_checkWallpaperVisible() const { return m_checkWallpaperVisible; diff --git a/ScreenPlayWallpaper/Godot/ScreenPlayGodot/main.gd b/ScreenPlayWallpaper/Godot/ScreenPlayGodot/main.gd index 96b4569a..dbf71198 100644 --- a/ScreenPlayWallpaper/Godot/ScreenPlayGodot/main.gd +++ b/ScreenPlayWallpaper/Godot/ScreenPlayGodot/main.gd @@ -55,7 +55,7 @@ func _ready(): # yet setup via screenplay_manager.init() get_tree().quit() return - Engine.set_max_fps(24) + Engine.set_max_fps(144) var ok = screen_play_wallpaper.init(screen_play_wallpaper.get_activeScreensList()[0]) if not ok: diff --git a/ScreenPlayWallpaper/qml/Test.qml b/ScreenPlayWallpaper/qml/Test.qml index befb8cc3..1f292e03 100644 --- a/ScreenPlayWallpaper/qml/Test.qml +++ b/ScreenPlayWallpaper/qml/Test.qml @@ -216,20 +216,17 @@ Rectangle { spacing: 20 TextField { placeholderText: "Edit me" - } Button { text: "Exit" onClicked: { - Qt.callLater(function () { - Wallpaper.terminate(); - }); + Qt.callLater(function () { + Wallpaper.terminate(); + }); } } - } - MultimediaView { width: 1000 height: 400 diff --git a/ScreenPlayWallpaper/src/windowsintegration.cpp b/ScreenPlayWallpaper/src/windowsintegration.cpp index 5841bd6e..def9feef 100644 --- a/ScreenPlayWallpaper/src/windowsintegration.cpp +++ b/ScreenPlayWallpaper/src/windowsintegration.cpp @@ -68,7 +68,7 @@ BOOL SearchForWorkerWindow(HWND hwnd, LPARAM lparam) return TRUE; } -std::vector WindowsIntegration::GetAllMonitors() +std::vector WindowsIntegration::getAllMonitors() { std::vector monitors; @@ -150,7 +150,7 @@ WindowsIntegration::MonitorResult WindowsIntegration::setupWallpaperForOneScreen return { std::nullopt, MonitorResultStatus::WorkerWindowHandleInvalidError }; } - std::vector monitors = GetAllMonitors(); + std::vector monitors = getAllMonitors(); for (const auto& monitor : monitors) { monitor.print(); if (monitor.index != activeScreen) @@ -212,7 +212,7 @@ WindowsIntegration::MonitorResult WindowsIntegration::setupWallpaperForOneScreen */ WindowsIntegration::SpanResult WindowsIntegration::setupWallpaperForMultipleScreens(const std::vector& activeScreens) { - std::vector monitors = GetAllMonitors(); + std::vector monitors = getAllMonitors(); int leftmost = INT_MAX; int topmost = INT_MAX; @@ -272,7 +272,7 @@ WindowsIntegration::SpanResult WindowsIntegration::setupWallpaperForMultipleScre */ WindowsIntegration::SpanResult WindowsIntegration::setupWallpaperForAllScreens() { - std::vector monitors = GetAllMonitors(); + std::vector monitors = getAllMonitors(); int leftmost = INT_MAX; int topmost = INT_MAX; diff --git a/ScreenPlayWallpaper/src/windowsintegration.h b/ScreenPlayWallpaper/src/windowsintegration.h index 14cf94a6..6643bd3d 100644 --- a/ScreenPlayWallpaper/src/windowsintegration.h +++ b/ScreenPlayWallpaper/src/windowsintegration.h @@ -7,6 +7,7 @@ // Do not change windows.h order ! #include +#include #include #include #include @@ -22,16 +23,21 @@ struct Monitor { RECT position; // Monitor's position and size SIZE size; // Monitor's width and height float scaleFactor; // Scale factor (DPI scaling as a factor, e.g., 1.5 for 150% scaling) - + std::string toString() const + { + return std::format( + "Monitor Info:\n" + "Monitor ID: {}\n" + "Index: {}\n" + "Position: ({}, {}, {}, {})\n" + "Size: ({}x{})\n" + "Scale Factor: {}\n", + (int64_t)monitorID, index, position.left, position.top, + position.right, position.bottom, size.cx, size.cy, scaleFactor); + } void print() const { - std::cout << "Monitor Info:" << std::endl; - std::cout << "Monitor ID: " << monitorID << std::endl; - std::cout << "Index: " << index << std::endl; - std::cout << "Position: (" << position.left << ", " << position.top << ", " - << position.right << ", " << position.bottom << ")" << std::endl; - std::cout << "Size: (" << size.cx << "x" << size.cy << ")" << std::endl; - std::cout << "Scale Factor: " << scaleFactor << std::endl; + std::cout << toString() << std::endl; } }; @@ -41,8 +47,6 @@ BOOL CALLBACK GetMonitorByHandle(HMONITOR hMonitor, HDC hdcMonitor, LPRECT lprcM BOOL CALLBACK FindTheDesiredWnd(HWND hWnd, LPARAM lParam); BOOL WINAPI SearchForWorkerWindow(HWND hwnd, LPARAM lparam); - - struct Point { int x = 0; int y = 0; @@ -81,7 +85,7 @@ public: bool searchWorkerWindowToParentTo(); float getScaling(const int monitorIndex) const; - std::vector GetAllMonitors(); + std::vector getAllMonitors(); int GetMonitorIndex(HMONITOR hMonitor); bool checkForFullScreenWindow(HWND windowHandle); WindowsIntegration::MonitorResult setupWallpaperForOneScreen(const int activeScreen, std::function updateWindowSize); From 395fe67bd4b1bd27c50199e99f700588f74ae3b6 Mon Sep 17 00:00:00 2001 From: Elias Steurer Date: Wed, 22 Nov 2023 10:33:00 +0100 Subject: [PATCH 060/101] Fix uninstalling items Path vairable changed and the logic did not make sense. First remove the item so that the qml engine removes all open images then remove the files. --- .../public/ScreenPlay/installedlistmodel.h | 2 +- ScreenPlay/qml/Installed/Installed.qml | 4 ++- ScreenPlay/src/installedlistmodel.cpp | 34 +++++++++---------- 3 files changed, 21 insertions(+), 19 deletions(-) diff --git a/ScreenPlay/inc/public/ScreenPlay/installedlistmodel.h b/ScreenPlay/inc/public/ScreenPlay/installedlistmodel.h index cc0ce26a..86b3f3ab 100644 --- a/ScreenPlay/inc/public/ScreenPlay/installedlistmodel.h +++ b/ScreenPlay/inc/public/ScreenPlay/installedlistmodel.h @@ -77,7 +77,7 @@ public slots: void append(const QString& projectJsonFilePath); void reset(); void init(); - void deinstallItemAt(const QString& absoluteStoragePath); + bool deinstallItemAt(const QString& absoluteStoragePath); void setCount(int count) { diff --git a/ScreenPlay/qml/Installed/Installed.qml b/ScreenPlay/qml/Installed/Installed.qml index a4e82ca7..92e03bf4 100644 --- a/ScreenPlay/qml/Installed/Installed.qml +++ b/ScreenPlay/qml/Installed/Installed.qml @@ -333,7 +333,9 @@ Item { anchors.centerIn: Overlay.overlay onAccepted: { root.sidebar.clear(); - App.installedListModel.deinstallItemAt(contextMenu.absoluteStoragePath); + if(!App.installedListModel.deinstallItemAt(contextMenu.absoluteStoragePath)){ + console.error("Unable to uninstall item",contextMenu.absoluteStoragePath) + } } } diff --git a/ScreenPlay/src/installedlistmodel.cpp b/ScreenPlay/src/installedlistmodel.cpp index 7fbf57fa..ed555713 100644 --- a/ScreenPlay/src/installedlistmodel.cpp +++ b/ScreenPlay/src/installedlistmodel.cpp @@ -59,28 +59,27 @@ void InstalledListModel::init() installed list. We wait for the qml engine to free all resources before we proceed. This like the preview.gif will be in use when clicking on an item */ -void InstalledListModel::deinstallItemAt(const QString& absoluteStoragePath) +bool InstalledListModel::deinstallItemAt(const QString& absoluteStoragePath) { - QTimer::singleShot(1000, this, [this, absoluteStoragePath]() { - int index = -1; - for (int i = 0; i < m_screenPlayFiles.size(); ++i) { - if (m_screenPlayFiles.at(i).projectJsonFilePath.absoluteFilePath() == absoluteStoragePath) { - index = i; - break; - } + const QString path = ScreenPlayUtil::toLocal(absoluteStoragePath); + int index = -1; + for (int i = 0; i < m_screenPlayFiles.size(); ++i) { + if (m_screenPlayFiles.at(i).projectJsonFilePath.path() == path) { + index = i; + break; } + } - if (index < 0 || index >= m_screenPlayFiles.count()) { - qWarning() << "Remove folder error, invalid index " << index; - return; - } + if (index < 0 || index >= m_screenPlayFiles.count()) { + qWarning() << "Remove folder error, invalid index " << index; + return false; + } - beginRemoveRows(QModelIndex(), index, index); - m_screenPlayFiles.removeAt(index); - endRemoveRows(); - - const QString path = ScreenPlayUtil::toLocal(absoluteStoragePath); + beginRemoveRows(QModelIndex(), index, index); + m_screenPlayFiles.removeAt(index); + endRemoveRows(); + QTimer::singleShot(1000, this, [this, path]() { QDir dir(path); bool success = true; if (!dir.exists()) { @@ -115,6 +114,7 @@ void InstalledListModel::deinstallItemAt(const QString& absoluteStoragePath) m_fileSystemWatcher.blockSignals(false); }); }); + return true; } /*! From fafd85d403a4e39796d4ef55abd5acff7c2f99e7 Mon Sep 17 00:00:00 2001 From: Elias Steurer Date: Wed, 22 Nov 2023 11:55:21 +0100 Subject: [PATCH 061/101] Fix website wallpaper not included in installed --- ScreenPlayUtil/src/projectfile.cpp | 31 ++++++++++++++++-------------- 1 file changed, 17 insertions(+), 14 deletions(-) diff --git a/ScreenPlayUtil/src/projectfile.cpp b/ScreenPlayUtil/src/projectfile.cpp index b58394c6..13fb6f68 100644 --- a/ScreenPlayUtil/src/projectfile.cpp +++ b/ScreenPlayUtil/src/projectfile.cpp @@ -36,22 +36,25 @@ bool ProjectFile::init() } type = typeParsed.value(); - // Required: - if (!obj.contains("file")) + // File is required. Website Wallpaper doe not have a file, but a url + if (!obj.contains("file") && type != ScreenPlay::InstalledType::InstalledType::WebsiteWallpaper) return false; - file = obj.value("file").toString(); - if (type == ScreenPlay::InstalledType::InstalledType::GodotWallpaper) { - QFileInfo fileInfo(folder.path() + "/wallpaper.tscn"); - if (!fileInfo.exists()) { - qCritical() << "Requested file:" << fileInfo.absoluteFilePath() << "does not exist!"; - return false; - } - } else { - QFileInfo fileInfo(folder.path() + "/" + file); - if (!fileInfo.exists()) { - qCritical() << "Requested file:" << fileInfo.absoluteFilePath() << "does not exist!"; - return false; + if (type != ScreenPlay::InstalledType::InstalledType::WebsiteWallpaper) { + file = obj.value("file").toString(); + + if (type == ScreenPlay::InstalledType::InstalledType::GodotWallpaper) { + QFileInfo fileInfo(folder.path() + "/wallpaper.tscn"); + if (!fileInfo.exists()) { + qCritical() << "Requested file:" << fileInfo.absoluteFilePath() << "does not exist!"; + return false; + } + } else { + QFileInfo fileInfo(folder.path() + "/" + file); + if (!fileInfo.exists()) { + qCritical() << "Requested file:" << fileInfo.absoluteFilePath() << "does not exist!"; + return false; + } } } From a21829ea0527aac3c022aa9f2e2da0a88c1fbd3e Mon Sep 17 00:00:00 2001 From: Elias Steurer Date: Wed, 22 Nov 2023 11:57:48 +0100 Subject: [PATCH 062/101] Add default thumbnail image creation in wizards --- ScreenPlay/inc/public/ScreenPlay/wizards.h | 1 + ScreenPlay/src/wizards.cpp | 87 +++++++++++++++++----- 2 files changed, 70 insertions(+), 18 deletions(-) diff --git a/ScreenPlay/inc/public/ScreenPlay/wizards.h b/ScreenPlay/inc/public/ScreenPlay/wizards.h index 2150ef30..2c00ebfd 100644 --- a/ScreenPlay/inc/public/ScreenPlay/wizards.h +++ b/ScreenPlay/inc/public/ScreenPlay/wizards.h @@ -113,6 +113,7 @@ signals: private: const std::shared_ptr m_globalVariables; const std::optional createTemporaryFolder() const; + void createPreviewImage(const QString& name, const QString& targetPath); private: QFuture m_wizardFuture; diff --git a/ScreenPlay/src/wizards.cpp b/ScreenPlay/src/wizards.cpp index 952cd541..3094ceb6 100644 --- a/ScreenPlay/src/wizards.cpp +++ b/ScreenPlay/src/wizards.cpp @@ -1,6 +1,10 @@ // SPDX-License-Identifier: LicenseRef-EliasSteurerTachiom OR AGPL-3.0-only #include "ScreenPlay/wizards.h" #include "ScreenPlayUtil/util.h" +#include +#include +#include +#include namespace ScreenPlay { /*! @@ -67,15 +71,13 @@ void Wizards::createQMLWidget(const QString& title, } if (!previewThumbnail.isEmpty()) { - QUrl previewThumbnailUrl { previewThumbnail }; - QFileInfo previewImageFile(previewThumbnailUrl.toLocalFile()); - obj.insert("previewThumbnail", previewImageFile.fileName()); - obj.insert("preview", previewImageFile.fileName()); - if (!QFile::copy(previewThumbnailUrl.toLocalFile(), workingPath + "/" + previewImageFile.fileName())) { - qWarning() << "Could not copy" << previewThumbnailUrl.toLocalFile() << " to " << workingPath + "/" + previewImageFile.fileName(); - emit widgetCreationFinished(WizardResult::CopyError); + if (!Util::copyPreviewThumbnail(obj, previewThumbnail, workingPath)) { + emit widgetCreationFinished(WizardResult::CopyPreviewThumbnailError); return; } + } else { + obj.insert("preview", "preview.png"); + createPreviewImage(title, workingPath); } if (!Util::writeSettings(obj, workingPath + "/project.json")) { @@ -136,13 +138,13 @@ void Wizards::createHTMLWidget(const QString& title, QFileInfo previewImageFile(previewThumbnailUrl.toLocalFile()); if (!previewThumbnail.isEmpty()) { - obj.insert("previewThumbnail", previewImageFile.fileName()); - obj.insert("preview", previewImageFile.fileName()); - if (!QFile::copy(previewThumbnailUrl.toLocalFile(), workingPath + "/" + previewImageFile.fileName())) { - qWarning() << "Could not copy" << previewThumbnailUrl.toLocalFile() << " to " << workingPath + "/" + previewImageFile.fileName(); - emit widgetCreationFinished(WizardResult::CopyError); + if (!Util::copyPreviewThumbnail(obj, previewThumbnail, workingPath)) { + emit widgetCreationFinished(WizardResult::CopyPreviewThumbnailError); return; } + } else { + obj.insert("preview", "preview.png"); + createPreviewImage(title, workingPath); } if (!Util::writeSettings(obj, workingPath + "/project.json")) { @@ -201,15 +203,13 @@ void Wizards::createHTMLWallpaper( } if (!previewThumbnail.isEmpty()) { - QUrl previewThumbnailUrl { previewThumbnail }; - QFileInfo previewImageFile(previewThumbnailUrl.toLocalFile()); - obj.insert("previewThumbnail", previewImageFile.fileName()); - obj.insert("preview", previewImageFile.fileName()); - if (!QFile::copy(previewThumbnailUrl.toLocalFile(), workingPath + "/" + previewImageFile.fileName())) { - qWarning() << "Could not copy" << previewThumbnailUrl.toLocalFile() << " to " << workingPath + "/" + previewImageFile.fileName(); + if (!Util::copyPreviewThumbnail(obj, previewThumbnail, workingPath)) { emit widgetCreationFinished(WizardResult::CopyPreviewThumbnailError); return; } + } else { + obj.insert("preview", "preview.png"); + createPreviewImage(title, workingPath); } if (!Util::writeSettings(obj, workingPath + "/project.json")) { @@ -260,6 +260,9 @@ void Wizards::createQMLWallpaper( emit widgetCreationFinished(WizardResult::CopyPreviewThumbnailError); return; } + } else { + obj.insert("preview", "preview.png"); + createPreviewImage(title, workingPath); } if (!Util::writeFileFromQrc(":/qml/ScreenPlayApp/assets/wizards/" + licenseFile, workingPath + "/" + licenseFile)) { @@ -328,6 +331,9 @@ void Wizards::createGodotWallpaper( emit widgetCreationFinished(WizardResult::CopyPreviewThumbnailError); return; } + } else { + obj.insert("preview", "preview.png"); + createPreviewImage(title, workingPath); } if (!Util::writeFileFromQrc(":/qml/ScreenPlayApp/assets/wizards/" + licenseFile, workingPath + "/" + licenseFile)) { @@ -452,6 +458,9 @@ void Wizards::createWebsiteWallpaper( emit widgetCreationFinished(WizardResult::CopyPreviewThumbnailError); return; } + } else { + obj.insert("preview", "preview.png"); + createPreviewImage(title, workingPath); } if (!Util::writeSettings(obj, workingPath + "/project.json")) { @@ -482,6 +491,48 @@ const std::optional Wizards::createTemporaryFolder() const return folderName; } + +/*! + \brief Creates a default preview.png. +*/ +void Wizards::createPreviewImage(const QString& name, const QString& targetPath) +{ + // Step 1: Create QImage and QPainter + QImage image(749, 442, QImage::Format_ARGB32); + QPainter painter(&image); + + // Step 2: Select Random Colors (example colors, replace with Material colors) + // These are just placeholder colors, replace with actual Material colors + QColor colors[] = { QColor("#B71C1C"), QColor("#1B5E20"), QColor("#0D47A1"), QColor("#FFD600"), QColor("#4A148C") }; + int randomIndex1 = QRandomGenerator::global()->bounded(5); + int randomIndex2 = QRandomGenerator::global()->bounded(5); + + // Step 3: Create and Set Gradient + QLinearGradient gradient(QPointF(0, image.height()), QPointF(image.width(), 0)); + gradient.setColorAt(0, colors[randomIndex1].darker()); // Dark color + gradient.setColorAt(1, colors[randomIndex2].lighter()); // Bright color + + painter.fillRect(image.rect(), gradient); + + // Step 4: Draw Text + // Set the font size depending on the size of the image + painter.setPen(Qt::white); + int fontSize = qMin(image.width(), image.height()) / 10; // Adjust proportion as needed + QFont font = painter.font(); + font.setPointSize(fontSize); + painter.setFont(font); + + // Define a margin and adjust the rect accordingly + int margin = 30; + QRect rect(margin, margin, image.width() - 2 * margin, image.height() - 2 * margin); + + // Draw text within the adjusted rect + QTextOption option(Qt::AlignCenter); + painter.drawText(rect, name, option); + + // Step 5: Save Image + image.save(targetPath + "/preview.png"); +} } #include "moc_wizards.cpp" From 0185d6d95249e3cc5d7ff180aff4c0a84ce20567 Mon Sep 17 00:00:00 2001 From: Elias Steurer Date: Thu, 23 Nov 2023 11:37:50 +0100 Subject: [PATCH 063/101] Add proper Godot package export caching We now have 3 versions saved in the godot project.json. version: Project version. Every version bump will trigger a reexport. We just save the major and minor version for now. Godot does have pretty good version compability. We will need this information later when we upgrade to newer Godot versions godotVersionMajor godotVersionMinor Update to latest Godot RC1 --- CMake/CMakeVariables.h.in | 2 + CMake/GenerateCMakeVariableHeader.cmake | 8 ++- CMakeLists.txt | 19 +++++-- .../public/ScreenPlay/screenplaywallpaper.h | 8 ++- ScreenPlay/src/screenplaywallpaper.cpp | 51 +++++++++++++++---- ScreenPlay/src/wizards.cpp | 8 +++ .../src/ScreenPlayGodotWallpaper.cpp | 13 +++++ .../src/ScreenPlayGodotWallpaper.h | 4 ++ .../Godot/ScreenPlayGodot/main.gd | 5 +- .../Godot/ScreenPlayGodot/project.godot | 8 +-- Tools/defines.py | 2 +- 11 files changed, 104 insertions(+), 24 deletions(-) diff --git a/CMake/CMakeVariables.h.in b/CMake/CMakeVariables.h.in index 85654134..930271db 100644 --- a/CMake/CMakeVariables.h.in +++ b/CMake/CMakeVariables.h.in @@ -3,6 +3,8 @@ #define SCREENPLAY_VERSION "@SCREENPLAY_VERSION@" #define SCREENPLAY_SOURCE_DIR "@SCREENPLAY_SOURCE_DIR@" #define SCREENPLAY_GODOT_VERSION "@SCREENPLAY_GODOT_VERSION@" +#define SCREENPLAY_GODOT_VERSION_MAJOR @SCREENPLAY_GODOT_VERSION_MAJOR@ +#define SCREENPLAY_GODOT_VERSION_MINOR @SCREENPLAY_GODOT_VERSION_MINOR@ #define SCREENPLAY_GODOT_RELEASE_TYPE "@SCREENPLAY_GODOT_RELEASE_TYPE@" #define SCREENPLAY_BUILD_TYPE "@SCREENPLAY_BUILD_TYPE@" #define SCREENPLAY_GIT_BRANCH_NAME "@SCREENPLAY_GIT_BRANCH_NAME@" diff --git a/CMake/GenerateCMakeVariableHeader.cmake b/CMake/GenerateCMakeVariableHeader.cmake index 33401597..1329b2c2 100644 --- a/CMake/GenerateCMakeVariableHeader.cmake +++ b/CMake/GenerateCMakeVariableHeader.cmake @@ -6,9 +6,15 @@ # Example generate_cmake_variable_header(${PROJECT_NAME}) # function(generate_cmake_variable_header TARGET) - # NOTE: Also add to CMakeVariables.h.in ! + # ⚠️ Also add to CMakeVariables.h.in ⚠️ + set(SCREENPLAY_SOURCE_DIR ${CMAKE_SOURCE_DIR}) + # Like v4.2-beta3 or v5.0.1-stable set(SCREENPLAY_GODOT_VERSION ${GODOT_VERSION}) + # Only single numbers + set(SCREENPLAY_GODOT_VERSION_MAJOR ${GODOT_VERSION_MAJOR}) + set(SCREENPLAY_GODOT_VERSION_MINOR ${GODOT_VERSION_MINOR}) + # stable, rc1 or beta5 set(SCREENPLAY_GODOT_RELEASE_TYPE ${GODOT_RELEASE_TYPE}) set(SCREENPLAY_BUILD_TYPE "${CMAKE_BUILD_TYPE}") set(SCREENPLAY_BUILD_DATE "${BUILD_DATE}") diff --git a/CMakeLists.txt b/CMakeLists.txt index 0e86ec5c..1a47c10e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -57,15 +57,26 @@ set(VCPKG_INSTALLED_PATH "${VCPKG_PATH}/installed/${VCPKG_ARCH}") set(VCPKG_BIN_PATH "${VCPKG_INSTALLED_PATH}/bin") # Godot Editor -set(GODOT_VERSION "v4.2") -set(GODOT_RELEASE_TYPE "beta6") +set(GODOT_VERSION_MAJOR "4") +set(GODOT_VERSION_MINOR "2") +set(GODOT_VERSION_PATCH "") + +set(GODOT_RELEASE_TYPE "rc1") +# Use an if statement to check if GODOT_VERSION_PATCH is empty or not +if (GODOT_VERSION_PATCH STREQUAL "") + # If patch version is empty, don't include it and the preceding dot + set(GODOT_VERSION "v${GODOT_VERSION_MAJOR}.${GODOT_VERSION_MINOR}-${GODOT_RELEASE_TYPE}") +else() + # If patch version is not empty, include it and the preceding dot + set(GODOT_VERSION "v${GODOT_VERSION_MAJOR}.${GODOT_VERSION_MINOR}.${GODOT_VERSION_PATCH}-${GODOT_RELEASE_TYPE}") +endif() if(WIN32) - set(GODOT_EDITOR_NAME "Godot_${GODOT_VERSION}-${GODOT_RELEASE_TYPE}_win64.exe") + set(GODOT_EDITOR_NAME "Godot_${GODOT_VERSION}_win64.exe") elseif(APPLE) set(GODOT_EDITOR_NAME "Godot.app") elseif(UNIX) - set(GODOT_EDITOR_NAME "Godot_${GODOT_VERSION}-${GODOT_RELEASE_TYPE}_linux.x86_64") + set(GODOT_EDITOR_NAME "Godot_${GODOT_VERSION}_linux.x86_64") else() message(FATAL_ERROR "Unsupported OS") endif() diff --git a/ScreenPlay/inc/public/ScreenPlay/screenplaywallpaper.h b/ScreenPlay/inc/public/ScreenPlay/screenplaywallpaper.h index 271b128b..33fd323e 100644 --- a/ScreenPlay/inc/public/ScreenPlay/screenplaywallpaper.h +++ b/ScreenPlay/inc/public/ScreenPlay/screenplaywallpaper.h @@ -3,10 +3,13 @@ #pragma once #include +#include +#include #include #include #include - +#include +#include #include #include "ScreenPlay/globalvariables.h" @@ -210,7 +213,7 @@ public slots: } private: - bool exportGodotProject(const QString& absolutePath, int timeoutMilliseconds = 30000); + bool exportGodotProject(); private: const std::shared_ptr m_globalVariables; @@ -218,6 +221,7 @@ private: const std::shared_ptr m_settings; ProjectSettingsListModel m_projectSettingsListModel; + QJsonObject m_projectJson; QVector m_screenNumber; QProcess m_process; QString m_previewImage; diff --git a/ScreenPlay/src/screenplaywallpaper.cpp b/ScreenPlay/src/screenplaywallpaper.cpp index f8c91aa1..2732c3a4 100644 --- a/ScreenPlay/src/screenplaywallpaper.cpp +++ b/ScreenPlay/src/screenplaywallpaper.cpp @@ -16,7 +16,8 @@ namespace ScreenPlay { /*! \brief Constructor for ScreenPlayWallpaper. */ -ScreenPlayWallpaper::ScreenPlayWallpaper(const QVector& screenNumber, +ScreenPlayWallpaper::ScreenPlayWallpaper( + const QVector& screenNumber, const std::shared_ptr& globalVariables, const QString& appID, const QString& absolutePath, @@ -42,7 +43,10 @@ ScreenPlayWallpaper::ScreenPlayWallpaper(const QVector& screenNumber, , m_playbackRate { playbackRate } , m_settings { settings } { - + std::optional projectOpt = ScreenPlayUtil::openJsonFileToObject(absolutePath + "/project.json"); + if (projectOpt.has_value()) { + m_projectJson = projectOpt.value(); + } QJsonObject projectSettingsListModelProperties; if (type == InstalledType::InstalledType::VideoWallpaper) { projectSettingsListModelProperties.insert("volume", m_volume); @@ -66,7 +70,7 @@ ScreenPlayWallpaper::ScreenPlayWallpaper(const QVector& screenNumber, QString tmpScreenNumber; if (m_screenNumber.length() > 1) { - for (const int number : qAsConst(m_screenNumber)) { + for (const int number : std::as_const(m_screenNumber)) { // IMPORTANT: NO TRAILING COMMA! if (number == m_screenNumber.back()) { tmpScreenNumber += QString::number(number); @@ -92,13 +96,22 @@ ScreenPlayWallpaper::ScreenPlayWallpaper(const QVector& screenNumber, if (m_type != InstalledType::InstalledType::GodotWallpaper) { m_appArgumentsList.append(" --disable-features=HardwareMediaKeyHandling"); } + if (m_type == InstalledType::InstalledType::GodotWallpaper) { + if (m_projectJson.contains("version")) { + const quint64 version = m_projectJson.value("version").toInt(); + const QString packageFileName = QString("project-v%1.zip").arg(version); + m_appArgumentsList.append(packageFileName); + } + } } bool ScreenPlayWallpaper::start() { if (m_type == InstalledType::InstalledType::GodotWallpaper) { - exportGodotProject(m_absolutePath); + if (!exportGodotProject()) + return false; } + m_process.setArguments(m_appArgumentsList); if (m_type == InstalledType::InstalledType::GodotWallpaper) { m_process.setProgram(m_globalVariables->godotWallpaperExecutablePath().toString()); @@ -293,22 +306,40 @@ bool ScreenPlayWallpaper::replace( return success; } -bool ScreenPlayWallpaper::exportGodotProject(const QString& absolutePath, int timeoutMilliseconds) +/*! + \brief . +*/ +bool ScreenPlayWallpaper::exportGodotProject() { + if (!m_projectJson.contains("version")) + return false; + + const quint64 version = m_projectJson.value("version").toInt(); + const QString packageFileName = QString("project-v%1.zip").arg(version); + QFileInfo godotPackageFile(m_absolutePath + "/" + packageFileName); + // Skip reexport + if (godotPackageFile.exists()) + return true; + + qInfo() << "No suitable version found for Godot package" << packageFileName << " at" << godotPackageFile.absoluteFilePath() << " exporting a new pck as zip."; + // Prepare the Godot export command - const QList godotCmd = { "--export-pack", "--headless", "Windows Desktop", "project.zip" }; + const QList + godotCmd + = { "--export-pack", "--headless", "Windows Desktop", packageFileName }; // Create QProcess instance to run the command QProcess process; // Set the working directory to the given absolute path - process.setWorkingDirectory(absolutePath); + process.setWorkingDirectory(m_absolutePath); process.setProgram(m_globalVariables->godotEditorExecutablePath().toString()); // Start the Godot export process process.setArguments(godotCmd); process.start(); // Wait for the process to finish or timeout + const int timeoutMilliseconds = 30000; if (!process.waitForFinished(timeoutMilliseconds)) { qCritical() << "Godot export process timed out or failed to start."; return false; @@ -331,9 +362,9 @@ bool ScreenPlayWallpaper::exportGodotProject(const QString& absolutePath, int ti } // Check if the project.zip file was created - QString zipPath = QDir(absolutePath).filePath("project.zip"); + QString zipPath = QDir(m_absolutePath).filePath(packageFileName); if (!QFile::exists(zipPath)) { - qCritical() << "Expected export file (project.zip) was not created."; + qCritical() << "Expected export file (" << packageFileName << ") was not created."; return false; } @@ -342,7 +373,7 @@ bool ScreenPlayWallpaper::exportGodotProject(const QString& absolutePath, int ti // but for simplicity, we're just checking its size here) QFileInfo zipInfo(zipPath); if (zipInfo.size() <= 0) { - qCritical() << "The exported project.zip file seems to be invalid."; + qCritical() << "The exported " << packageFileName << " file seems to be invalid."; return false; } diff --git a/ScreenPlay/src/wizards.cpp b/ScreenPlay/src/wizards.cpp index 3094ceb6..78d4f709 100644 --- a/ScreenPlay/src/wizards.cpp +++ b/ScreenPlay/src/wizards.cpp @@ -1,5 +1,6 @@ // SPDX-License-Identifier: LicenseRef-EliasSteurerTachiom OR AGPL-3.0-only #include "ScreenPlay/wizards.h" +#include "ScreenPlay/CMakeVariables.h" #include "ScreenPlayUtil/util.h" #include #include @@ -322,6 +323,13 @@ void Wizards::createGodotWallpaper( obj.insert("license", licenseName); obj.insert("title", title); obj.insert("createdBy", createdBy); + // Every version change will trigger an reexport + obj.insert("version", 1); + // Something like v4.2-beta3 or v5.0.1-stable + QString godotVersionMajor = QString::number(SCREENPLAY_GODOT_VERSION_MAJOR); + QString godotVersionMinor = QString::number(SCREENPLAY_GODOT_VERSION_MINOR); + obj.insert("godotVersionMajor", godotVersionMajor); + obj.insert("godotVersionMinor", godotVersionMinor); obj.insert("tags", ScreenPlayUtil::fillArray(tags)); obj.insert("type", QVariant::fromValue(InstalledType::InstalledType::GodotWallpaper).toString()); obj.insert("file", "wallpaper.tscn"); diff --git a/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayGodotWallpaper.cpp b/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayGodotWallpaper.cpp index b219fb0f..7476a1d6 100644 --- a/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayGodotWallpaper.cpp +++ b/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayGodotWallpaper.cpp @@ -33,6 +33,9 @@ void ScreenPlayGodotWallpaper::_bind_methods() ClassDB::bind_method(godot::D_METHOD("get_activeScreensList"), &ScreenPlayGodotWallpaper::get_activeScreensList); ClassDB::bind_method(godot::D_METHOD("set_activeScreensList", "screens"), &ScreenPlayGodotWallpaper::set_activeScreensList); + ClassDB::bind_method(godot::D_METHOD("get_projectPackageFile"), &ScreenPlayGodotWallpaper::get_projectPackageFile); + ClassDB::bind_method(godot::D_METHOD("set_projectPackageFile", "projectPackageFile"), &ScreenPlayGodotWallpaper::set_projectPackageFile); + ClassDB::bind_method(godot::D_METHOD("get_projectPath"), &ScreenPlayGodotWallpaper::get_projectPath); ClassDB::bind_method(godot::D_METHOD("set_projectPath", "path"), &ScreenPlayGodotWallpaper::set_projectPath); @@ -54,6 +57,16 @@ void ScreenPlayGodotWallpaper::hideFromTaskbar(HWND hwnd) SetWindowLong(hwnd, GWL_EXSTYLE, lExStyle); } +godot::String ScreenPlayGodotWallpaper::get_projectPackageFile() const +{ + return m_projectPackageFile; +} + +void ScreenPlayGodotWallpaper::set_projectPackageFile(const godot::String& projectPackageFile) +{ + m_projectPackageFile = projectPackageFile; +} + bool ScreenPlayGodotWallpaper::configureWindowGeometry() { if (!m_windowsIntegration.searchWorkerWindowToParentTo()) { diff --git a/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayGodotWallpaper.h b/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayGodotWallpaper.h index ea1d12ff..b8fcb18b 100644 --- a/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayGodotWallpaper.h +++ b/ScreenPlayWallpaper/Godot/GDExtention/src/ScreenPlayGodotWallpaper.h @@ -57,6 +57,9 @@ public: bool send_ping(); bool exit(); + godot::String get_projectPackageFile() const; + void set_projectPackageFile(const godot::String& projectPackageFile); + protected: static void _bind_methods(); @@ -70,6 +73,7 @@ private: godot::String m_appID = ""; godot::String m_projectPath = ""; + godot::String m_projectPackageFile = ""; WindowsIntegration m_windowsIntegration; double m_timesinceLastRead = 0.0; bool m_pipeConnected = false; diff --git a/ScreenPlayWallpaper/Godot/ScreenPlayGodot/main.gd b/ScreenPlayWallpaper/Godot/ScreenPlayGodot/main.gd index dbf71198..71d21a4c 100644 --- a/ScreenPlayWallpaper/Godot/ScreenPlayGodot/main.gd +++ b/ScreenPlayWallpaper/Godot/ScreenPlayGodot/main.gd @@ -44,7 +44,7 @@ func _ready(): get_tree().quit() return #screen_play_wallpaper.set_projectPath("C:\\Code\\cpp\\ScreenPlay\\ScreenPlay\\Content\\wallpaper_godot_fjord") - path = screen_play_wallpaper.get_projectPath() + "/project.zip" + path = screen_play_wallpaper.get_projectPath() + "/" + screen_play_wallpaper.get_projectPackageFile() else: get_tree().quit() return @@ -99,7 +99,7 @@ func parse_args(): if args[0] == "res://main.tscn": offset = 1 - if args.size() < 7: # Adjust this number based on the expected number of arguments + if args.size() < 8: # Adjust this number based on the expected number of arguments print("Not enough arguments provided!") return false @@ -122,6 +122,7 @@ func parse_args(): var type = args[5] # This might need further parsing depending on its expected format screen_play_wallpaper.set_checkWallpaperVisible(args[6 + offset].to_lower() == "true") screen_play_wallpaper.set_activeScreensList(activeScreensList) + screen_play_wallpaper.set_projectPackageFile(args[7 + offset]) # Print or use the parsed values as needed print("Parsing done:", activeScreensList, screen_play_wallpaper.get_projectPath(), screen_play_wallpaper.get_appID(), screen_play_wallpaper.get_volume(), type, screen_play_wallpaper.get_checkWallpaperVisible()) diff --git a/ScreenPlayWallpaper/Godot/ScreenPlayGodot/project.godot b/ScreenPlayWallpaper/Godot/ScreenPlayGodot/project.godot index cb14a4c2..d48bcd61 100644 --- a/ScreenPlayWallpaper/Godot/ScreenPlayGodot/project.godot +++ b/ScreenPlayWallpaper/Godot/ScreenPlayGodot/project.godot @@ -23,14 +23,14 @@ config/icon="res://icon.svg" window/size/viewport_width=1 window/size/viewport_height=1 -window/size/mode=1 -window/size/initial_position_type=0 -window/size/initial_position=Vector2i(9999999, 9999999) +window/size/resizable=false window/size/borderless=true +window/size/transparent=true +window/energy_saving/keep_screen_on=false [editor] -run/main_run_args="\"0\" \"C:/Code/Cpp/ScreenPlay/ScreenPlay/Content/wallpaper_godot_fjord\" \"appID=test\" \"1\" \"Cover\" \"GodotWallpaper\" \"1\"" +run/main_run_args="\"1\" \"C:/Code/Cpp/ScreenPlay/ScreenPlay/Content/wallpaper_godot_fjord\" \"appID=test\" \"1\" \"Cover\" \"GodotWallpaper\" \"1\" \"project-v1.zip\"" [filesystem] diff --git a/Tools/defines.py b/Tools/defines.py index 7e577b74..39466cc2 100644 --- a/Tools/defines.py +++ b/Tools/defines.py @@ -37,7 +37,7 @@ VCPKG_BASE_PACKAGES = [ PYTHON_EXECUTABLE = "python" if sys.platform == "win32" else "python3" FFMPEG_VERSION = "6.0" GODOT_VERSION = "4.2" -GODOT_RELEASE_TYPE = "beta6" +GODOT_RELEASE_TYPE = "rc1" GODOT_DOWNLOAD_SERVER = "https://github.com/godotengine/godot-builds/releases/download" if sys.platform == "win32": SCREENPLAYWALLPAPER_GODOT_EXECUTABLE = "ScreenPlayWallpaperGodot.exe" From 972bdc6db335d15e8741d6d9c66d15a1cd0746b7 Mon Sep 17 00:00:00 2001 From: Elias Steurer Date: Thu, 23 Nov 2023 11:38:36 +0100 Subject: [PATCH 064/101] Change preview font to Noto Sans Light Move colors to member --- ScreenPlay/inc/public/ScreenPlay/wizards.h | 8 ++++++++ ScreenPlay/src/wizards.cpp | 6 +++--- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/ScreenPlay/inc/public/ScreenPlay/wizards.h b/ScreenPlay/inc/public/ScreenPlay/wizards.h index 2c00ebfd..6a342689 100644 --- a/ScreenPlay/inc/public/ScreenPlay/wizards.h +++ b/ScreenPlay/inc/public/ScreenPlay/wizards.h @@ -2,6 +2,7 @@ #pragma once +#include #include #include #include @@ -117,5 +118,12 @@ private: private: QFuture m_wizardFuture; + QVector m_gradientColors = { + QColor("#B71C1C"), + QColor("#1B5E20"), + QColor("#0D47A1"), + QColor("#FFD600"), + QColor("#4A148C") + }; }; } diff --git a/ScreenPlay/src/wizards.cpp b/ScreenPlay/src/wizards.cpp index 78d4f709..4deb51b8 100644 --- a/ScreenPlay/src/wizards.cpp +++ b/ScreenPlay/src/wizards.cpp @@ -511,14 +511,13 @@ void Wizards::createPreviewImage(const QString& name, const QString& targetPath) // Step 2: Select Random Colors (example colors, replace with Material colors) // These are just placeholder colors, replace with actual Material colors - QColor colors[] = { QColor("#B71C1C"), QColor("#1B5E20"), QColor("#0D47A1"), QColor("#FFD600"), QColor("#4A148C") }; int randomIndex1 = QRandomGenerator::global()->bounded(5); int randomIndex2 = QRandomGenerator::global()->bounded(5); // Step 3: Create and Set Gradient QLinearGradient gradient(QPointF(0, image.height()), QPointF(image.width(), 0)); - gradient.setColorAt(0, colors[randomIndex1].darker()); // Dark color - gradient.setColorAt(1, colors[randomIndex2].lighter()); // Bright color + gradient.setColorAt(0, m_gradientColors[randomIndex1].darker()); // Dark color + gradient.setColorAt(1, m_gradientColors[randomIndex2].lighter()); // Bright color painter.fillRect(image.rect(), gradient); @@ -527,6 +526,7 @@ void Wizards::createPreviewImage(const QString& name, const QString& targetPath) painter.setPen(Qt::white); int fontSize = qMin(image.width(), image.height()) / 10; // Adjust proportion as needed QFont font = painter.font(); + font.setFamily("Noto Sans Light"); font.setPointSize(fontSize); painter.setFont(font); From 226fddd72210312e0018be5fed818b8bb25dda20 Mon Sep 17 00:00:00 2001 From: Elias Steurer Date: Thu, 23 Nov 2023 11:39:45 +0100 Subject: [PATCH 065/101] Refactor code for const and explicitly disable qml creation --- ScreenPlay/inc/public/ScreenPlay/create.h | 1 + ScreenPlay/inc/public/ScreenPlay/globalvariables.h | 1 + ScreenPlay/inc/public/ScreenPlay/monitorlistmodel.h | 1 + ScreenPlay/inc/public/ScreenPlay/screenplaymanager.h | 1 + ScreenPlay/inc/public/ScreenPlay/screenplaywallpaper.h | 8 +------- ScreenPlay/inc/public/ScreenPlay/screenplaywidget.h | 1 + ScreenPlay/src/screenplaymanager.cpp | 6 +++--- ScreenPlay/src/screenplaywallpaper.cpp | 2 +- 8 files changed, 10 insertions(+), 11 deletions(-) diff --git a/ScreenPlay/inc/public/ScreenPlay/create.h b/ScreenPlay/inc/public/ScreenPlay/create.h index ebadca23..511540be 100644 --- a/ScreenPlay/inc/public/ScreenPlay/create.h +++ b/ScreenPlay/inc/public/ScreenPlay/create.h @@ -32,6 +32,7 @@ namespace ScreenPlay { class Create : public QObject { Q_OBJECT QML_ELEMENT + QML_UNCREATABLE("") Q_PROPERTY(QString workingDir READ workingDir WRITE setWorkingDir NOTIFY workingDirChanged) Q_PROPERTY(float progress READ progress WRITE setProgress NOTIFY progressChanged) diff --git a/ScreenPlay/inc/public/ScreenPlay/globalvariables.h b/ScreenPlay/inc/public/ScreenPlay/globalvariables.h index 7b7a6a15..9d317aa2 100644 --- a/ScreenPlay/inc/public/ScreenPlay/globalvariables.h +++ b/ScreenPlay/inc/public/ScreenPlay/globalvariables.h @@ -16,6 +16,7 @@ namespace ScreenPlay { class GlobalVariables : public QObject { Q_OBJECT QML_ELEMENT + QML_UNCREATABLE("") Q_PROPERTY(QVersionNumber version READ version CONSTANT) Q_PROPERTY(QUrl localStoragePath READ localStoragePath WRITE setLocalStoragePath NOTIFY localStoragePathChanged FINAL) diff --git a/ScreenPlay/inc/public/ScreenPlay/monitorlistmodel.h b/ScreenPlay/inc/public/ScreenPlay/monitorlistmodel.h index ed80ce6e..068c8d28 100644 --- a/ScreenPlay/inc/public/ScreenPlay/monitorlistmodel.h +++ b/ScreenPlay/inc/public/ScreenPlay/monitorlistmodel.h @@ -41,6 +41,7 @@ struct Monitor { class MonitorListModel : public QAbstractListModel { Q_OBJECT QML_ELEMENT + QML_UNCREATABLE("") public: explicit MonitorListModel(QObject* parent = nullptr); diff --git a/ScreenPlay/inc/public/ScreenPlay/screenplaymanager.h b/ScreenPlay/inc/public/ScreenPlay/screenplaymanager.h index 7c15c7de..8de67422 100644 --- a/ScreenPlay/inc/public/ScreenPlay/screenplaymanager.h +++ b/ScreenPlay/inc/public/ScreenPlay/screenplaymanager.h @@ -24,6 +24,7 @@ namespace ScreenPlay { class ScreenPlayManager : public QObject { Q_OBJECT QML_ELEMENT + QML_UNCREATABLE("") Q_PROPERTY(int activeWallpaperCounter READ activeWallpaperCounter WRITE setActiveWallpaperCounter NOTIFY activeWallpaperCounterChanged) Q_PROPERTY(int activeWidgetsCounter READ activeWidgetsCounter WRITE setActiveWidgetsCounter NOTIFY activeWidgetsCounterChanged) diff --git a/ScreenPlay/inc/public/ScreenPlay/screenplaywallpaper.h b/ScreenPlay/inc/public/ScreenPlay/screenplaywallpaper.h index 33fd323e..81c7f38b 100644 --- a/ScreenPlay/inc/public/ScreenPlay/screenplaywallpaper.h +++ b/ScreenPlay/inc/public/ScreenPlay/screenplaywallpaper.h @@ -22,27 +22,21 @@ namespace ScreenPlay { class ScreenPlayWallpaper : public QObject { Q_OBJECT QML_ELEMENT + QML_UNCREATABLE("") Q_PROPERTY(bool isConnected READ isConnected WRITE setIsConnected NOTIFY isConnectedChanged) - Q_PROPERTY(QVector screenNumber READ screenNumber WRITE setScreenNumber NOTIFY screenNumberChanged) - Q_PROPERTY(float volume READ volume WRITE setVolume NOTIFY volumeChanged) Q_PROPERTY(float playbackRate READ playbackRate WRITE setPlaybackRate NOTIFY playbackRateChanged) Q_PROPERTY(bool isLooping READ isLooping WRITE setIsLooping NOTIFY isLoopingChanged) - Q_PROPERTY(QString file READ file WRITE setFile NOTIFY fileChanged) Q_PROPERTY(QString absolutePath READ absolutePath WRITE setAbsolutePath NOTIFY absolutePathChanged) Q_PROPERTY(QString previewImage READ previewImage WRITE setPreviewImage NOTIFY previewImageChanged) Q_PROPERTY(QString appID READ appID WRITE setAppID NOTIFY appIDChanged) - Q_PROPERTY(FillMode::FillMode fillMode READ fillMode WRITE setFillMode NOTIFY fillModeChanged) Q_PROPERTY(InstalledType::InstalledType type READ type WRITE setType NOTIFY typeChanged) public: - // Default constructor needed for qml engine - ScreenPlayWallpaper() { } - explicit ScreenPlayWallpaper( const QVector& screenNumber, const std::shared_ptr& globalVariables, diff --git a/ScreenPlay/inc/public/ScreenPlay/screenplaywidget.h b/ScreenPlay/inc/public/ScreenPlay/screenplaywidget.h index fa6e587f..9090902f 100644 --- a/ScreenPlay/inc/public/ScreenPlay/screenplaywidget.h +++ b/ScreenPlay/inc/public/ScreenPlay/screenplaywidget.h @@ -23,6 +23,7 @@ namespace ScreenPlay { class ScreenPlayWidget : public QObject { Q_OBJECT QML_ELEMENT + QML_UNCREATABLE("") Q_PROPERTY(QString absolutePath READ absolutePath WRITE setAbsolutePath NOTIFY absolutePathChanged) Q_PROPERTY(QString previewImage READ previewImage WRITE setPreviewImage NOTIFY previewImageChanged) diff --git a/ScreenPlay/src/screenplaymanager.cpp b/ScreenPlay/src/screenplaymanager.cpp index ebc8dec2..7357bcb6 100644 --- a/ScreenPlay/src/screenplaymanager.cpp +++ b/ScreenPlay/src/screenplaymanager.cpp @@ -303,7 +303,7 @@ bool ScreenPlayManager::removeWallpaperAt(int index) */ bool ScreenPlayManager::requestProjectSettingsAtMonitorIndex(const int index) { - for (const std::shared_ptr& uPtrWallpaper : qAsConst(m_screenPlayWallpapers)) { + for (const std::shared_ptr& uPtrWallpaper : std::as_const(m_screenPlayWallpapers)) { if (uPtrWallpaper->screenNumber()[0] == index) { emit projectSettingsListModelResult( @@ -514,12 +514,12 @@ bool ScreenPlayManager::saveProfiles() m_saveLimiter.stop(); QJsonArray wallpaper {}; - for (const auto& activeWallpaper : qAsConst(m_screenPlayWallpapers)) { + for (const auto& activeWallpaper : std::as_const(m_screenPlayWallpapers)) { wallpaper.append(activeWallpaper->getActiveSettingsJson()); } QJsonArray widgets {}; - for (const auto& activeWidget : qAsConst(m_screenPlayWidgets)) { + for (const auto& activeWidget : std::as_const(m_screenPlayWidgets)) { widgets.append(activeWidget->getActiveSettingsJson()); } diff --git a/ScreenPlay/src/screenplaywallpaper.cpp b/ScreenPlay/src/screenplaywallpaper.cpp index 2732c3a4..6b90cad0 100644 --- a/ScreenPlay/src/screenplaywallpaper.cpp +++ b/ScreenPlay/src/screenplaywallpaper.cpp @@ -139,7 +139,7 @@ bool ScreenPlayWallpaper::start() QJsonObject ScreenPlayWallpaper::getActiveSettingsJson() { QJsonArray screenNumber; - for (const int i : qAsConst(m_screenNumber)) { + for (const int i : std::as_const(m_screenNumber)) { screenNumber.append(i); } From ce397137c929e2d8c230ede6f2dcc18b2adfc73e Mon Sep 17 00:00:00 2001 From: Elias Steurer Date: Thu, 23 Nov 2023 12:22:04 +0100 Subject: [PATCH 066/101] Add spinner script to default wallpaper --- ScreenPlay/CMakeLists.txt | 1 + ScreenPlay/qml/Create/WizardsFiles/Godot_v5/spinner.gd | 6 ++++++ ScreenPlay/qml/Create/WizardsFiles/Godot_v5/wallpaper.tscn | 5 ++++- ScreenPlay/src/wizards.cpp | 5 +++++ 4 files changed, 16 insertions(+), 1 deletion(-) create mode 100644 ScreenPlay/qml/Create/WizardsFiles/Godot_v5/spinner.gd diff --git a/ScreenPlay/CMakeLists.txt b/ScreenPlay/CMakeLists.txt index 7736f125..db71df4f 100644 --- a/ScreenPlay/CMakeLists.txt +++ b/ScreenPlay/CMakeLists.txt @@ -79,6 +79,7 @@ set(QML qml/Create/Wizards/WizardPage.qml qml/Create/WizardsFiles/Godot_v5/export_presets.cfg qml/Create/WizardsFiles/Godot_v5/project.godot + qml/Create/WizardsFiles/Godot_v5/spinner.gd qml/Create/WizardsFiles/Godot_v5/wallpaper.tscn qml/Create/WizardsFiles/QMLWallpaperMain.qml qml/Create/WizardsFiles/QMLWidgetMain.qml diff --git a/ScreenPlay/qml/Create/WizardsFiles/Godot_v5/spinner.gd b/ScreenPlay/qml/Create/WizardsFiles/Godot_v5/spinner.gd new file mode 100644 index 00000000..2e5cdb3b --- /dev/null +++ b/ScreenPlay/qml/Create/WizardsFiles/Godot_v5/spinner.gd @@ -0,0 +1,6 @@ +extends CSGBox3D + +var rotation_speed = 3.0 + +func _process(delta): + rotate_y(rotation_speed * delta) diff --git a/ScreenPlay/qml/Create/WizardsFiles/Godot_v5/wallpaper.tscn b/ScreenPlay/qml/Create/WizardsFiles/Godot_v5/wallpaper.tscn index d488b39d..714824ae 100644 --- a/ScreenPlay/qml/Create/WizardsFiles/Godot_v5/wallpaper.tscn +++ b/ScreenPlay/qml/Create/WizardsFiles/Godot_v5/wallpaper.tscn @@ -1,4 +1,6 @@ -[gd_scene format=3 uid="uid://d105uliklnkd5"] +[gd_scene load_steps=2 format=3 uid="uid://d105uliklnkd5"] + +[ext_resource type="Script" path="res://spinner.gd" id="1_ggnsn"] [node name="Node3D" type="Node3D"] @@ -7,6 +9,7 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 5) [node name="CSGBox3D" type="CSGBox3D" parent="."] transform = Transform3D(0.707107, -0.5, -0.5, 0, 0.707107, -0.707107, 0.707107, 0.5, 0.5, 0, 0, 0) +script = ExtResource("1_ggnsn") [node name="OmniLight3D" type="OmniLight3D" parent="."] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.41283, 1.52646) diff --git a/ScreenPlay/src/wizards.cpp b/ScreenPlay/src/wizards.cpp index 4deb51b8..ad1aadbf 100644 --- a/ScreenPlay/src/wizards.cpp +++ b/ScreenPlay/src/wizards.cpp @@ -360,6 +360,11 @@ void Wizards::createGodotWallpaper( return; } + if (!Util::writeFileFromQrc(":/qml/ScreenPlayApp/qml/Create/WizardsFiles/Godot_v5/spinner.gd", workingPath + "/spinner.gd")) { + qWarning() << "Could not write spinner.gd"; + return; + } + if (!Util::writeFileFromQrc(":/qml/ScreenPlayApp/qml/Create/WizardsFiles/Godot_v5/wallpaper.tscn", workingPath + "/wallpaper.tscn")) { qWarning() << "Could not write wallpaper.tscn"; return; From 2f7719d05662707b2ee93397c53b1e04e79f521a Mon Sep 17 00:00:00 2001 From: Elias Steurer Date: Thu, 23 Nov 2023 12:22:58 +0100 Subject: [PATCH 067/101] Cleanup unused files --- ScreenPlay/CMakeLists.txt | 5 +---- ScreenPlay/assets/particle/backgroundGlow.png | Bin 117301 -> 0 bytes ScreenPlay/assets/particle/dot.png | Bin 3306 -> 0 bytes ScreenPlay/assets/shader/movingcolorramp.fsh | 18 ------------------ ScreenPlay/assets/tests/video_import.mp4 | Bin 18418424 -> 0 bytes .../WizardsFiles}/QmlProject.qmlproject | 0 ScreenPlay/src/wizards.cpp | 2 +- ScreenPlay/tests/tst_main.cpp | 2 +- ScreenPlayWallpaper/CMakeLists.txt | 2 +- ScreenPlayWallpaper/qml/Test.qml | 8 -------- 10 files changed, 4 insertions(+), 33 deletions(-) delete mode 100644 ScreenPlay/assets/particle/backgroundGlow.png delete mode 100644 ScreenPlay/assets/particle/dot.png delete mode 100644 ScreenPlay/assets/shader/movingcolorramp.fsh delete mode 100644 ScreenPlay/assets/tests/video_import.mp4 rename ScreenPlay/{assets/wizards => qml/Create/WizardsFiles}/QmlProject.qmlproject (100%) diff --git a/ScreenPlay/CMakeLists.txt b/ScreenPlay/CMakeLists.txt index db71df4f..f3fe18fb 100644 --- a/ScreenPlay/CMakeLists.txt +++ b/ScreenPlay/CMakeLists.txt @@ -207,9 +207,6 @@ set(RESOURCES assets/licenses/Apache2.txt assets/licenses/OFL.txt assets/macos/app.screenplay.plist - assets/particle/backgroundGlow.png - assets/particle/dot.png - assets/shader/movingcolorramp.fsh assets/startinfo/blender.png assets/startinfo/flaticon.png assets/startinfo/forums.png @@ -238,7 +235,6 @@ set(RESOURCES assets/wizards/License_CC_Attribution-ShareAlike_4.0.txt assets/wizards/License_CC_Attribution_4.0.txt assets/wizards/License_GPL_3.0.txt - assets/wizards/QmlProject.qmlproject assets/WorkshopPreview.html legal/DataProtection.txt legal/gpl-3.0.txt @@ -247,6 +243,7 @@ set(RESOURCES legal/OpenSSL.txt profiles.json qml/Create/WizardsFiles/HTMLWallpaperMain.html + qml/Create/WizardsFiles/QmlProject.qmlproject qml/Create/WizardsFiles/HTMLWidgetMain.html qml/Create/WizardsFiles/QMLWallpaperMain.qml qml/Create/WizardsFiles/QMLWidgetMain.qml diff --git a/ScreenPlay/assets/particle/backgroundGlow.png b/ScreenPlay/assets/particle/backgroundGlow.png deleted file mode 100644 index ba18cc8dd73d2d28e18b52815f74999d3ddf7cbe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 117301 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ưC}ZQ$KUgC+9M_1I{+4T6C3zH9JD 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

Xzh<4)4{gf|LA_&47Ol0B8w-2mjbpqL7=> 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 diff --git a/ScreenPlay/assets/particle/dot.png b/ScreenPlay/assets/particle/dot.png deleted file mode 100644 index 082a04d18253f8d348320c2068cb02d3635f1b0f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3306 zcmb7Hc{tSH_kYiPkTtZKB8{O!-x-u4V#e5)>_n1fHGUW-~YeQbI!f@+?WRf4gfmnFubQ%fOiNK z>+RzgqzhYZZiPYpZs@|Ckd~^Jcmr==KhwLx-u8E`9K7xZcxl~$p;5v*VcI-^o8BRw z(6F0zP;{P!W zy$N2ye)teSToCj(rY9D6J46=-Q~8}lbD~YC`+CS%x6)sW!^j9EQF(L{`j20YY z@1WwNq+H~Q19DH#{ditDqjl;!UIYESKQ0!OneFd;fu10EyN3~Y^M&X zq;RpwYM=Yxzc%)#aXs5r>uA04qyGA9nL?$?~! zD=#>$(pX`bd`SCTiK+buxW6s=tio9%>yN!Qb$i^U%11K4u8=1<{hPkIH4*(SLhjy! zdlyx|))@GPMQylNqgut~aYau8as$N2N9mhIFS_2+1OFheHfGDRADy_N^hu#bCRSef znNvU6d98}v_xDM|k$)-?o<35$--+x2O*q@9S0{K(j@Oz(c+;x{01!F+TR}i>9)!0y zZ)S*b2+Lc3HW55=QNmEVF7V5fpZi=~P*vq=&r?xe>XJ?xpIkJ`a_zfdr%euh^79ag z14VkQH3p3TGP&b)S4-C4NniLU=z%hA{P=OKu#)Ac^moz&q}1tzL1@!801eW zsp-_)k(ZU8p|^i>7;P*Q8zHD07HRha@3hjPWpev4ZOR!=0YOC2>$WGBOHK=H=1$D=*t6z|2+trWY+v8s6K)T(_ zx`4AsLH+C2{&23_*OOHWHx=N))QQZ2CGQ$$U9Ss|h!3*EYwvOH+LNsaGN;tsf$2S-KrP-fne;NXRti7z-8}wbeJY)Gm8P!@~ms+uJSQZpoGUtf@5JM z8jh4=R-B2db|GS{YpY;k@5cDu)4mB6o+!xT{%fIJ7VWnvEVw_$o`jltG9Mn+8&4WYyo1dWN$s8eYs6XX{ zxe;IIk!x(3Vxdk$y`8=X*VpdnB=a(*DjUCGN7_ktXdW#Nmx#ZpssnSbco$PTKIZP< z9a%kNDN|cn(8CObxGTq@M>$FiqPbEvdLKd5sh7}O-c?(VP5gV|m*3i^z$SQG87t?Z za8QpAGTpO|ns+ZZ;t*4&WB=wW_|AeqNh6?MWd1r8Duw7^g3HWg!4x0M2SnKeI+cyY z$+n6KQ_1Gl_qH4Cm%9;3Tuo)l2V;8>4SaV^W@)w6Tzfvx-QL_std|M4ksh5JmHgv6 zS{I-ISY}}w9jXOd2RArlqhfPc(IYccl|pf^PWf)3QuV+IfwS`+E1moh7XbO?L2K*a z5KWf(I$|)yG+sgn;#!t`aGGRpDTtc);iK=wk~V1s0nR>;X-Q_viOlExg;@iX!H~dI z5s#(^67S28=Wj!f!D6I2dEt#Ct&RzQ=q$eMx)5zRp8b3-)@1}=3M=!>FzgU6JVOi` zc8yA1of>76yn7-8lr!&>#E81^8HT71zLQA-AjlSP5d!t0tyi=sf8oNtlmj85t1XPU zUmj`8*3M-~$}2-yenZ1r)A4MA91dUAv$t$z1nE$#15Doy9A=IuuY%i5qy~P`K1&H@gcT7brv(Yl5gAoe1FAlFh61X zq5Aqw>R(z|RaPZwt$raxDt?7D3()B99i_ij{if>0C!dUHxaa)I>T(()zRg3sMFJ zxz*z{fk@uAYRSqqjqv(zy9u;n&{K<=tUc-sian3DN!QLlz3KhuKm&8A#v5XMBxEfcawU2^7&w4 zJ=Zi+K5jL&DKqdQ$f3z^(z(1*;chHRNmJw^;@jtsT(&E~h*6}NcFv{CS#+5kiwa$y zw5hl)(SaF!+#FA{W2LWcQ@aBAsBai9ab6A}*5^q|?ybHl_JIle&Uf}A{it*TCun|0 zQo427NG|?^k@n=}LiIO5i`7i?wThso*Ws27#?|+nzoD-vF6EHchl&S(g;FO11Ri*O zyc?A{pvLI6yk6d@8g#Mx;ZrL)v*uG`g6w> zyuXcUy^=H6$2V57Ln3o;Pieei%)Hk%F+GzgY0>84407-_a{w(nCVkYm{QUN6{6Z?p zOE3W=?(gk_@|)8lil5(EewO>leGx|)x>-{$L7W)h7X8u>{t<(b?WY+*92jA{*`C?r zU8;+*iS!l^`2|L5+?tz5@vMN`&umEaSkzp#0FE<21DAP()d+1O_fe;4=R%1xRG64+ zLbJ#rbsx4U=A{X%AtcG7k{i^smn_+qR!XDt9=O*Zj0ayv?Cg=H?UlRFGO;<^lti_b z+@1iT-A^+4B6`es^<+Ymz@tg^69 zlbj3RPF<7aD~_3l_r_fnDohdfy}r^)k&UtimVWtiI9_gedCgoZeQ-D8IHW_*P*3$^ z8WZlQGn>cl%YFi)h>i zIswicmc7XgO1Vzza})$BBp@3ZoDTllz}~YdB@3!{xg*kK!D(!CfU1t`W1tY_oX%ge ze;MR%kv(jvH~d=s56ZDyFV|}>MJb~YQ^$;P(rys>TD*2cDNY;4y9wQ=MG80s778}cv#9E?rATO(rwD_cWL9wtt@ z|1N;OjlPweqcIPoD+?#1D-#O~z}lF{$=VFy=w$FMF);${9NoU-zFS=fBOWGtMn+CX zdZu3hYjam)Bi;X!GJc2XI_TS&8uKu-0u0R@Y_0Wm|BD3x9gMB4%pG}{0qm~qMuxy| zlcBx!cYu+xzLC4F&36D3EfW*KMBfppYv*WbZucMJ{}R~S>Dro@I2r?a=vV+iGl%a8 zM;;b7fR(MSrM}s>ru+Ym07olx!|%cTKLaDc#^Ha97@Aw_1OFR{xed_R!Ak!d^ldk= za&pjj(>1iUw$lfG>xSPn0Uh+sZN5`{10D4L!)SDc5Dp6y$-`!CP`_WG_oY#iSPN1(AC4=cdj?wi%`N&F`LJGZ|5_niGlKZq{~ zgp7i5XdwLBE4fawOfF1ruWOHjQpqR37DFXPF&4%74beZuC547_)9QNVSPZm!Yldvx zjYw^N;mQ$7Buu;?K3MRv4?1xf_tXlThf!!N0hkLz)LyDk#LT)L@Ufq?SE`TW^R21- z(MxzpsN6_YB#~4(JP?Sp znU8l*O_cz6^BbG|kS^^N!U@Z`pIZ4HIMg2|eH0mJcj(AIEf!W*(ifj;jWY9AevvC* zd51X&Z;+w=9{hKKZ-$((yE)ko9q6szT&S23r|(e5NAs2q&MTqhLX31lzfJi zKSjM3dc0OhfYDI7U*>2-G$JnEhGbTrk?FgMmx`e6zh5;2iNYl|-Pz4& ztr36d`txZlLFz$f)I05QH$NW({hWHq6iGi7^*s(d0+Y5)p7z3N+HfT+tzYSE0;L-X zWgKbYzbq7=s^vrBXqV+SCz>uyV$`-V;19rL(B?kLH9SFk!-BkhQDW)gHgBUAIuI$C zw$=|}jmD9w)_emtRE;-U^(}wBmIluClXzcX@Qmb^7yiDLBi zSXw*%A+49f1{#n*px{&njJ9-ht)q0S<86b!IIi)tbqj%-P>pY+2mUMzEHJof*Sf#> zT=xot#aD`kD?N)GgVbLssdqxt0S!BoosJ3n)V7|`#EP57+jeUkjFQy-`U)AR#r^4g z=|?!`KUEtbL)pOlW`z+!JUb8n;3iLLB> zmB_I4amY#62tK>rmfv($aC~<8Ot){NQfL=&DQ1WA=1@QnLn!7)TX`&+?R~L3hKOxq ze_GRPQkD37!cZ+C)r<4qL}nxZfVS+dh$j`h`i{MGgnxs1*uW0%zEe9GOW`k!zC5OT zW$|E#lr2!q8F$u7)}$7H1`dw|oeY_R0!AaoRn+{{K&cC+@9|%1YhFL6$p^NX{c-rS zj+)$4yeCg@x)^R9P4#A#U$tDxc_S4{!NuRgSbhHN!n#B%1|1e9*k z?Y^>&Xlxl!_;96v#zSBpdGhEhF43sk}K`yt~o6;mk#+2yD$ay_mz zwDA72bLG^m})X> zuSdf`%mw}kFBC0UBhYjy7fS>-YtgX7OS{*IU#dF#J3kZ2z4>-8l2*}on4Vj3DAmLc z!3;DeJjMvSBi8T=(m zlUdhRa)-cT;v#syY`E+ZssjcCxxOl5)k*Ki0p<02&`jm+cmj^K!8%C*1d@qp`3$!k7<4PkT$au%+PtuZeylj&HkT-Tp;#02Ri z;_~DbR{1PbYZYHW=BnLQ}Y0F{b5D4%gWzJa4j>+k~!%h8>( z@ec1dHy@<3SH(3AO-Ox=?ur5jnmnw^?;@+fE2nR#YI(f@>hqW75RfZ*JZ4;tLFOO*$HJN##-WRuD^PF23450Yc~YcmC{=kftMD;S!1Zn z>g^d$M3T>43n90Y|F@A=Gy3*-u-b^hwL$RIpH=B&1l;p6 z68@e?%JiW=)>B*P0~2X5O|4;QRy4T8ndNhji*{H2>iEj`&9d?4w~^j^@vlriXI1GT z!l*r^1ho%AdfvasOtLruQ6jP{Db&QD0?-Kdjbdc(VL-qk0kgy|#V@U%0K7Hm*mw>9BLtO|S2!VL%Xj;9I^_ z8mpD9;7|gOR3xZO6D`H}rjI@qXlC;S0-hBt>s7e+XJGFpO7zt4Ecxkjhk2py{7no6 z%T)$slA)KZqDdp4CK$ZF zUv)2XYJ5b1uoj3-RYE~{3F39D0T%nKbw=j4G*HT5g;7c7%+@N=j~jy)-g}gzD0g9s z4AUPAeb)219BuU#>Sk_g`F{gUedJU8&!evAvKOxL^-L`z zd$#%%W+a=*i^q31Noxv~t_3|OPiNtDoaFc2pYw@M?w)qJx)5CfK(5%4G(8!laME!U zz8Abj)FuO0* zIlkG&0eqr9rR3YOQAQ=;DEZ|*B9u*mCMmm&xe+gm#4laYZGQn2Pm41)UfO~chvv;K z^7VXGJ6}*Ux@wvp+IIZ1VJ$On$+yZ_OIH9NFaeE1{w<$k`7-dI9MtZht#9u_!wcE) zQ2rh0teJVOI_Mu}E8>)R$!5@J-s)cxhdtrC>f!Ap2uCJj*f>1+=`cnRNzBb^vcL}D zx`5ep5mXpHNU1~3vhV34&vT8xgl(*ZZ;r;baNW)%L0I%&N=lvAUzDFto3Il~V4+x0 z=*K&dpR;GSDIfkN27j>8mMtvW4J=Pb{!wKWD{e ziCQ~gKem#2;k6>7k;C_Lg!^NV2mjhnp{x3d1!-4>6Ia_LOKaLGRku`d(JN2qJd_@H z4~}^y2bT&^VE&%o5*lj7;5K~N*NfHFaSVWYqa{9cUs(4m)LHI$eq-f|0}USw!YCi| z*$*KVh4Yes7?#1LY#__oSB|=P&OWkW(u#Sw0)*`8BvMi9gtVD5oJLyJCa_XoqqaAB z<5hwjk*vV*+^sy^cA$6L5Dd%X>OtT7QA9?Oi|yc zt%uO4h2K_~2}+iNly{L04inbx2g9MDHvLT#LZYz3K{4rQGU-{Mg5bj;UrtY;Hk+}o zm@$F?9a>gD2a*duFLzIqa+q$>Y)zyJbMum^BsdKQ8Ns@eHMtNid2REwuBMFYg^IZ% zfAwlOL~11{5O?tp9i{}r;pSZ%9ck-AHR#2u<4A6%L-`z+89MGrc)(VnxVS#?5~q*huQ$FC}<(W4}uWg3#CU{a~A3E~(${{rrSQ zwRSlUU3h>hR(yuyq^6*t?8>otN=t_wPs@lD;gH4_k3v znrX&N#%S>2lrj-4#J|S3o7%SLpvtL9rH-C@`qA^T&e~!* zu0py;@Fn8fl{bf$^RXES5JqEBCpNZUz92A@@;59O+g` zG=mr3yHDfRnB`=zy3zKi>H^T31OBy&^v+Q}NK!2ALd^IN7i{{N#)?83>?Jk+@wJNe zi3ICQEI~LS0m)uT-qvcL`*w0NHhIS8-^&c~ljG7mokXpRQJfdBQzsmHfnB$o))qqw z-`VY(r&s;Sf!sr()XYLUiJmM`0uPVUUfYa#uqx=JK*$&SaKUrZhsUNAYoWz3 znqYjxMiEA8*#Y7McrAwQiv0E`x3#?%y)kchm`-m1YdIYvObO#{SnkuIW}Tr6eF*B9 z!rJ#hY3mb+4@W3a@un{I)69iW19lR}hK9&en*LRV_?g8om2e^jnhk|p=Nng?9FIs8 ziJY-+W5$`r75T5*nkyMCnj)qrJIA6bwUS)qdmvnF7&KFfD6zL^HW3J7P}1KcS;0CZ znIEksm~0p~)W#7pdp^fwaiq@^%b=v3QNd@nr?Hwx!Z3u;Vxpsn-va+$8Q}#AHq^MH zi^_ynMRrzT@h!q%lxq)qtPl)kP9v^0wJ?LT+Lva%-n}AL4EwHSr?+7AHIh@~(G?|~ zJsE3;%!5K>@5wiOrWRvIK&!A7sjc*EYg!ILU7$1G*(7=R9^z^+C4o7Nc`FFbES;r) zDXAqnTY`PutM>5q785CfW~RP5-)^K46+rs!W&nPnNBwq0fx4=HI0Nae=N!Nn0(-Bt zE&{XFoq^&4k~rzFA1@ev{DdU}YNpo_}C5{YjzQa8D+Nvj{mmtQs{*k&NF&XWd ze9zCcV6Hf_{0))|}F{Fv{PK<-&b*0cG*F{Q#{v$EE!=Ts$tfi?*{NfbD zpO55XJ;!5CPYym6d?_NS@``HDL-hzStQU|y;@WoGrJqwY&Zq!dH2Q>HQuOTj6(AoD z8arK#GnOJ$$hd~;mRd_Xc+Nl5>EGxm{$ZKlh(KO9_#?!-9A1kl_}HBNavi&FzcKO# zlHj$0j2N&K3e@SekNxW(58-Vd>~zO8>7F!oL0Si%F47ec^_k4)z8v73WKI6G{b(+oLq!5Jqw!WBS*`dtZ95{ z5^odq7P}j^BNYz`+2!DK7Z@VdkU;iVTiF?rpPu~ENLf40ch^CnMIf5{P>tRFXPz7J z08jGagyY9NQo5KR+1G@gSZe>z_wk5ftQS2Ma>i2BgBJ9~V+X_%y7~8|FhY7@y6`X` z?b7y(8qNt4NDsweppe;i7RO!lb?ZBy5N+L+s*ILi{()?9DQJYl*D5~DJ5$5 z^!B3~TNgTxQ*c)wkytV=sUyK-P0aGT(*n}HU&eFri@Dir`wa~}ul4w%(0-nEP5z}T zJsF{I<0-BjU(z#R7Zx{UyDC1$e*H@^gsF11nhk-+E8Jc_By)dy!1duS(&Mgvulzs` z=+ik4Mh|lLz>-wR9oQ^J;7xv>@J6hKB^0ML8bq%kBuD!rWe77ZA&0qS|5X2_cp(G7 zvJg$2>O%Y^8NrkBq+4?Hbmm0NR*@k+_tE(pfJ?ZvNpe*zp)*MS8DGL2$DVMTZ0pAP zR5T688&#JJrRE{Y$Ri5NUE>vUc&+xVoADBrA7G(uqlWI3*72Ay`|85%@zX`TLLwh+ zI1%6G(NgAT)TI*_KY-Pv+YVEGP7Rx8!7Qt>Ua}anr0WzLHD0zOAyraE=GE~T05B-_Z-z&`U1GPp7lL2ZYJZ0|3s3L<$O_uRXJ4ax;#OV4h zk2|Sr?TAVPhSWu|O!_Q{2ZxOaVKo>$xg_m8x4SElo1MC?_!B);fK-7D_R8$?^~=(r z<1M!eAm-zB;7I8AHfwbIzHn7~|7+b@bcuKSdirprY#zWDM-k%&MP8rl4}L$7mH5L) z<@pp&?;k8_tz5u~Mj%RUeQ18#+qB1SgFQfNSM>7hZz z!5bL61-_3ZN*jUeibI?edH=G&b8S&`=gnNfu6b9Sz1g?BZotlgk~N4F#*OSvX!i7# zC99%;(dwK~VvU^7*_bE7w^`s7N=bXlqaEh=VeU3lmy)N{&)*q*TyhUHbcB6G;CqfMY(B{HE%(d|W8ouji zTLAiB$l*@01F@)3oVrr#Ept)Ts#T=*Uty-^EZ>uLPF%N)wjKA-|7m2FqNVLIvaN$j$la{H;3s|C&u|2~B3 z1&sEb{;o5X3E{LvXBrIELs>m;ib3m+ZRH1bOiKbqY#NkOI@VGyfM?U(RLrGt@b?^y^EAf1zok=%WHMN`DlC2BAli!JU~ zB$ImsDncIgdhI$1NUcKnaRJB>+5ep9#vH(|(TLJLm+K>4da??MEqRYMm#>xA(A_UA z+q-f11-&2vRyvkBFo=FS;F~hS^1FSilZy12CiVwBUmVl(5kq%%2RU9yfv2W_K{|s5 zPn@gFiiVPiJ9@-p+O7X=q{5++JlJUwF3JR9Kh*pTEA1+>Mb5+KB8oegl${m6+AoJ) zn{NHMS6LQZ)iOWzy6F9!nVT|*e32A;QCM@k+8P~m6oHpTHAibwf2RV!c5BxL^}q~X z=_7EGobkeWRKEFFkLZBdqsJR(J_By63D84=ayVklZrgo?ho#jCJJbEb8cl1mpG+oZJ|>HBeLKK5?he9hJ&He30FPMuRRosE9nTY z+15#JbO6Lz5Xo;5vB6-N3kJ#7rP!4s5i2Jgkmp;auX9%=uXGH{iNcERB^T}S7qf8k zec`SeH&Z#=vyk;~T(HnwiVOBW;%Ya4$6|P!O`^;CFguVFr0;;ItTSkZA0&P0@Y>sS z6&AS~(CV%2YT-q8!fiu_iB4YtMN-S(UVY{1Y!cfC0Y-j1Y_^H>6bp7MDA=)lKovHb zl6j9S#+Bc4YE!f#k+xA2nWtF*8E<4Tzx7LYx*!~WPgxeh+C3*x$m~^`jf=i{$!mEcqLt?|f$bZGB-F?aXHzy({$E;h2 z+$vVLG)`_*arrD%ts%*A_7cIw3Q@1)LQ$YrP&-+J9lrsyyBxS6$UO%+0`dSw`ci8)mV&QvIBzH7P{-VS{Hc z{o}k9dN+f~z3d@SZL|`*gQM9@Es3Cg_Le0SeCbQ*X@Ih7C``iyNqx|HDoXZ|VaSe! z=&9=F4m@tnL4%B;HCfn*?mnd6vsXJvrbHc~EPy`#c5fYz@p;K~mZ)*+Jayrnr5dHm zc7`Uee6Tesj(%-ZUp>ExEZPCc9(L)2-j!i*fMuP5fiL1nCeerR6Fy$GZeugsR$$%< zKSXr9Gd$gRlTl+D@}`6-T=V<1qk!D>Nus^p?-X-lRmybg{7uNfY@<}Nbg2&?(bQ9v zg5zLUE~5TFKHK}S;L>Rp!@&uLW{9+*A=0FErU2??AzdqyNfX8EG5!sm!I2J{B``^h ztW{(<;l_u!d^IyMPjZIM0;dE!85s3UUOPJgvC^9gAE^l6;T{v2%C*_3+CLe1i%4WBNi# zl@zn*wQ%4{KTqj3`RSNTP12w_M_b=O)46ir*V$tHSvk#3QTt%s?*NTmX*C-K^xsMm zFAUK;l=!sS-=8kmq@Pv#6P0D$dq_m0P99S#Z!$|~L{VS_­emHwJd5aHyGU@x(* zhinH*Ynz|)X6_HYBgI~u(*ty>`6*G;*HvN(r80(rFnRvU+T?(0K}L;j{^wm@J-%D~ za7#2!uI57k`WV~lyoKOa33%Ll+d6nVRsw>uZMImxCG?m#&zC8{`2Fg$fPQ~#MUg|+ zL%i{K^ADB&D^o8#@xThI8a!t=i3|{k!yf|biGqzmI?MR5nwt)7kQj!Qs)95+bD`)PyaVjcN4i=Q@OtIX!}*LHOI z5hF(4&nqxi2yh-z{xc07sYs;LASl>buyK0~n1n6W>~>jX8rrw*5)COH?BcTuj=9

rV7fn0cV9r*%w>zJd$`rbzq@KIZg5~C8 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%0AQ<4o2I&4 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