1
0
mirror of https://gitlab.com/kelteseth/ScreenPlay.git synced 2024-11-05 10:32:28 +01:00

Add working Windows pipes connection

This commit is contained in:
Elias Steurer 2023-10-22 17:29:06 +02:00
parent 94024be77d
commit 1441998435
42 changed files with 1219 additions and 564 deletions

View File

@ -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"
]
}

121
.vscode/tasks.json vendored
View File

@ -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"

View File

@ -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}")

View File

@ -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

View File

@ -119,7 +119,7 @@ Item {
bottom: parent.bottom
bottomMargin: -width * .65
}
SequentialAnimation on opacity {
SequentialAnimation on opacity {
loops: Animation.Infinite
OpacityAnimator {

View File

@ -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

View File

@ -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
}

View File

@ -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
}

View File

@ -105,7 +105,7 @@ Item {
source: image
opacity: status === Image.Ready ? 1 : 0
Behavior on opacity {
Behavior on opacity {
PropertyAnimation {
duration: 250
}

View File

@ -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

View File

@ -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;
}
}
}

View File

@ -622,6 +622,10 @@ ScreenPlay will only quit if no Wallpaper are running.</source>
<source>Widgets</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Search for Wallpaper &amp; Widgets</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>InstalledWelcomeScreen</name>
@ -815,14 +819,6 @@ ScreenPlay will only quit if no Wallpaper are running.</source>
<source>ScreenPlay will start with Windows and will setup your Desktop every time for you.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>High priority Autostart</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>This options grants ScreenPlay a higher autostart priority than other apps.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Send anonymous crash reports and statistics</source>
<translation type="unfinished"></translation>
@ -875,22 +871,6 @@ ScreenPlay will only quit if no Wallpaper are running.</source>
<source>Light</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Performance</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Pause wallpaper video rendering while another app is in the foreground</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>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!</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Default Fill Mode</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Set this property to define how the video is scaled to fit the target area.</source>
<translation type="unfinished"></translation>
@ -971,6 +951,30 @@ ScreenPlay will only quit if no Wallpaper are running.</source>
<source>Privacy</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Show default installed content</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>ScreenPlay will show build in content.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Wallpaper and Widgets</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Pause wallpaper video rendering while another app is in the foreground.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>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!</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Default Wallpaper Fill Mode</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>SettingsExpander</name>
@ -1037,6 +1041,37 @@ ScreenPlay will only quit if no Wallpaper are running.</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>TrayIcon</name>
<message>
<source>ScreenPlay - Double click to change you settings.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Open ScreenPlay</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Mute all</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Unmute all</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Pause all</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Play all</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Quit ScreenPlay</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>WebsiteWallpaper</name>
<message>

View File

@ -624,6 +624,10 @@ ScreenPlay will only quit if no Wallpaper are running.</translation>
<source>Widgets</source>
<translation type="unfinished">Widgets</translation>
</message>
<message>
<source>Search for Wallpaper &amp; Widgets</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>InstalledWelcomeScreen</name>
@ -817,14 +821,6 @@ ScreenPlay will only quit if no Wallpaper are running.</translation>
<source>ScreenPlay will start with Windows and will setup your Desktop every time for you.</source>
<translation>ScreenPlay startet mit Windows und richtet deinen Desktop jedes Mal für dich ein.</translation>
</message>
<message>
<source>High priority Autostart</source>
<translation>Hohe Priorität für Autostart</translation>
</message>
<message>
<source>This options grants ScreenPlay a higher autostart priority than other apps.</source>
<translation>Diese Option gewährt ScreenPlay eine höhere Autostartpriorität als anderen Anwendungen.</translation>
</message>
<message>
<source>Send anonymous crash reports and statistics</source>
<translation>Sende anonyme Absturzberichte und Statistiken</translation>
@ -877,22 +873,6 @@ ScreenPlay will only quit if no Wallpaper are running.</translation>
<source>Light</source>
<translation>Hell</translation>
</message>
<message>
<source>Performance</source>
<translation>Leistung</translation>
</message>
<message>
<source>Pause wallpaper video rendering while another app is in the foreground</source>
<translation>Pausiere Wallpaper Video Rendering wenn eine andere App im Vordergrund ist</translation>
</message>
<message>
<source>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!</source>
<translation>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!</translation>
</message>
<message>
<source>Default Fill Mode</source>
<translation>Standard-Füllmodus</translation>
</message>
<message>
<source>Set this property to define how the video is scaled to fit the target area.</source>
<translation>Lege diese Eigenschaft fest, um zu definieren, wie das Video skaliert wird, damit es in den Zielbereich passt.</translation>
@ -973,6 +953,30 @@ ScreenPlay will only quit if no Wallpaper are running.</translation>
<source>Privacy</source>
<translation>Datenschutz</translation>
</message>
<message>
<source>Show default installed content</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>ScreenPlay will show build in content.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Wallpaper and Widgets</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Pause wallpaper video rendering while another app is in the foreground.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>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!</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Default Wallpaper Fill Mode</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>SettingsExpander</name>
@ -1039,6 +1043,37 @@ ScreenPlay will only quit if no Wallpaper are running.</translation>
<translation type="unfinished">Below you can find tools to create wallaper, beyond the tools that ScreenPlay provides for you!</translation>
</message>
</context>
<context>
<name>TrayIcon</name>
<message>
<source>ScreenPlay - Double click to change you settings.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Open ScreenPlay</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Mute all</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Unmute all</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Pause all</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Play all</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Quit ScreenPlay</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>WebsiteWallpaper</name>
<message>

View File

@ -625,6 +625,10 @@ ScreenPlay will only quit if no Wallpaper are running.</translation>
<source>Widgets</source>
<translation>Widgets</translation>
</message>
<message>
<source>Search for Wallpaper &amp; Widgets</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>InstalledWelcomeScreen</name>
@ -818,14 +822,6 @@ ScreenPlay will only quit if no Wallpaper are running.</translation>
<source>ScreenPlay will start with Windows and will setup your Desktop every time for you.</source>
<translation type="unfinished">ScreenPlay will start with Windows and will setup your Desktop every time for you.</translation>
</message>
<message>
<source>High priority Autostart</source>
<translation type="unfinished">High priority Autostart</translation>
</message>
<message>
<source>This options grants ScreenPlay a higher autostart priority than other apps.</source>
<translation type="unfinished">This options grants ScreenPlay a higher autostart priority than other apps.</translation>
</message>
<message>
<source>Send anonymous crash reports and statistics</source>
<translation type="unfinished">Send anonymous crash reports and statistics</translation>
@ -878,22 +874,6 @@ ScreenPlay will only quit if no Wallpaper are running.</translation>
<source>Light</source>
<translation type="unfinished">Light</translation>
</message>
<message>
<source>Performance</source>
<translation type="unfinished">Performance</translation>
</message>
<message>
<source>Pause wallpaper video rendering while another app is in the foreground</source>
<translation type="unfinished">Pause wallpaper video rendering while another app is in the foreground</translation>
</message>
<message>
<source>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!</source>
<translation type="unfinished">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!</translation>
</message>
<message>
<source>Default Fill Mode</source>
<translation type="unfinished">Default Fill Mode</translation>
</message>
<message>
<source>Set this property to define how the video is scaled to fit the target area.</source>
<translation type="unfinished">Set this property to define how the video is scaled to fit the target area.</translation>
@ -974,6 +954,30 @@ ScreenPlay will only quit if no Wallpaper are running.</translation>
<source>Privacy</source>
<translation type="unfinished">Privacy</translation>
</message>
<message>
<source>Show default installed content</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>ScreenPlay will show build in content.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Wallpaper and Widgets</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Pause wallpaper video rendering while another app is in the foreground.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>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!</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Default Wallpaper Fill Mode</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>SettingsExpander</name>
@ -1040,6 +1044,37 @@ ScreenPlay will only quit if no Wallpaper are running.</translation>
<translation type="unfinished">Below you can find tools to create wallaper, beyond the tools that ScreenPlay provides for you!</translation>
</message>
</context>
<context>
<name>TrayIcon</name>
<message>
<source>ScreenPlay - Double click to change you settings.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Open ScreenPlay</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Mute all</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Unmute all</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Pause all</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Play all</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Quit ScreenPlay</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>WebsiteWallpaper</name>
<message>

View File

@ -625,6 +625,10 @@ ScreenPlay will only quit if no Wallpaper are running.</translation>
<source>Widgets</source>
<translation>Widgets</translation>
</message>
<message>
<source>Search for Wallpaper &amp; Widgets</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>InstalledWelcomeScreen</name>
@ -818,14 +822,6 @@ ScreenPlay will only quit if no Wallpaper are running.</translation>
<source>ScreenPlay will start with Windows and will setup your Desktop every time for you.</source>
<translation>ScreenPlay démarrera avec Windows et configurera votre bureau à chaque fois pour vous.</translation>
</message>
<message>
<source>High priority Autostart</source>
<translation>Démarrage automatique haute priorité</translation>
</message>
<message>
<source>This options grants ScreenPlay a higher autostart priority than other apps.</source>
<translation>Cette option accorde à ScreenPlay une priorité de démarrage automatique plus élevée que les autres applications.</translation>
</message>
<message>
<source>Send anonymous crash reports and statistics</source>
<translation>Envoyer des rapports d&apos;incidents et des statistiques anonymes</translation>
@ -878,22 +874,6 @@ ScreenPlay will only quit if no Wallpaper are running.</translation>
<source>Light</source>
<translation>Clair</translation>
</message>
<message>
<source>Performance</source>
<translation>Performance</translation>
</message>
<message>
<source>Pause wallpaper video rendering while another app is in the foreground</source>
<translation>Mettre en pause le rendu vidéo du fond d&apos;écran quand une autre application est en premier plan</translation>
</message>
<message>
<source>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!</source>
<translation>Nous désactivons le rendu vidéo (pas l&apos;audio) pour obtenir les meilleures performances. Si vous rencontrez des problèmes, vous pouvez désactiver ce comportement ici. Redémarrage du fond d&apos;écran requis !</translation>
</message>
<message>
<source>Default Fill Mode</source>
<translation>Mode de remplissage par défaut</translation>
</message>
<message>
<source>Set this property to define how the video is scaled to fit the target area.</source>
<translation>Définissez cette propriété afin de déterminer la façon dont la vidéo est mise à l&apos;échelle pour s&apos;adapter à la zone cible.</translation>
@ -974,6 +954,30 @@ ScreenPlay will only quit if no Wallpaper are running.</translation>
<source>Privacy</source>
<translation>Confidentialité</translation>
</message>
<message>
<source>Show default installed content</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>ScreenPlay will show build in content.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Wallpaper and Widgets</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Pause wallpaper video rendering while another app is in the foreground.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>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!</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Default Wallpaper Fill Mode</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>SettingsExpander</name>
@ -1040,6 +1044,37 @@ ScreenPlay will only quit if no Wallpaper are running.</translation>
<translation>Vous trouverez ci-dessous des outils pour créer des fonds d&apos;écran, au-delà des outils que ScreenPlay met à votre disposition !</translation>
</message>
</context>
<context>
<name>TrayIcon</name>
<message>
<source>ScreenPlay - Double click to change you settings.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Open ScreenPlay</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Mute all</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Unmute all</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Pause all</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Play all</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Quit ScreenPlay</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>WebsiteWallpaper</name>
<message>

View File

@ -625,6 +625,10 @@ ScreenPlay will only quit if no Wallpaper are running.</translation>
<source>Widgets</source>
<translation type="unfinished">Widgets</translation>
</message>
<message>
<source>Search for Wallpaper &amp; Widgets</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>InstalledWelcomeScreen</name>
@ -818,14 +822,6 @@ ScreenPlay will only quit if no Wallpaper are running.</translation>
<source>ScreenPlay will start with Windows and will setup your Desktop every time for you.</source>
<translation>ScreenPlay si avvierà con Windows e configurerà il desktop ogni volta per te.</translation>
</message>
<message>
<source>High priority Autostart</source>
<translation>Avvio automatico ad alta priorità</translation>
</message>
<message>
<source>This options grants ScreenPlay a higher autostart priority than other apps.</source>
<translation>Questa opzione garantisce a ScreenPlay una priorità di avvio automatico più alta di altre applicazioni.</translation>
</message>
<message>
<source>Send anonymous crash reports and statistics</source>
<translation>Invia report e statistiche anonime sui crash</translation>
@ -878,22 +874,6 @@ ScreenPlay will only quit if no Wallpaper are running.</translation>
<source>Light</source>
<translation>Chiaro</translation>
</message>
<message>
<source>Performance</source>
<translation>Prestazioni</translation>
</message>
<message>
<source>Pause wallpaper video rendering while another app is in the foreground</source>
<translation>Metti in pausa il rendering video dello sfondo mentre un&apos;altra app è in primo piano</translation>
</message>
<message>
<source>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!</source>
<translation>Disattiviamo il rendering video (non l&apos;audio!) per migliori prestazioni. Se hai problemi puoi disabilitare questa opzione qui. È necessario riavviare lo sfondo!</translation>
</message>
<message>
<source>Default Fill Mode</source>
<translation>Modalità riempimento predefinita</translation>
</message>
<message>
<source>Set this property to define how the video is scaled to fit the target area.</source>
<translation>Imposta questa proprietà per definire come il video viene adattato all&apos;area di destinazione.</translation>
@ -974,6 +954,30 @@ ScreenPlay will only quit if no Wallpaper are running.</translation>
<source>Privacy</source>
<translation>Privacy</translation>
</message>
<message>
<source>Show default installed content</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>ScreenPlay will show build in content.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Wallpaper and Widgets</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Pause wallpaper video rendering while another app is in the foreground.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>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!</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Default Wallpaper Fill Mode</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>SettingsExpander</name>
@ -1040,6 +1044,37 @@ ScreenPlay will only quit if no Wallpaper are running.</translation>
<translation type="unfinished">Below you can find tools to create wallaper, beyond the tools that ScreenPlay provides for you!</translation>
</message>
</context>
<context>
<name>TrayIcon</name>
<message>
<source>ScreenPlay - Double click to change you settings.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Open ScreenPlay</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Mute all</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Unmute all</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Pause all</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Play all</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Quit ScreenPlay</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>WebsiteWallpaper</name>
<message>

View File

@ -625,6 +625,10 @@ ScreenPlay will only quit if no Wallpaper are running.</translation>
<source>Widgets</source>
<translation type="unfinished">Widgets</translation>
</message>
<message>
<source>Search for Wallpaper &amp; Widgets</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>InstalledWelcomeScreen</name>
@ -818,14 +822,6 @@ ScreenPlay will only quit if no Wallpaper are running.</translation>
<source>ScreenPlay will start with Windows and will setup your Desktop every time for you.</source>
<translation type="unfinished">ScreenPlay will start with Windows and will setup your Desktop every time for you.</translation>
</message>
<message>
<source>High priority Autostart</source>
<translation type="unfinished">High priority Autostart</translation>
</message>
<message>
<source>This options grants ScreenPlay a higher autostart priority than other apps.</source>
<translation type="unfinished">This options grants ScreenPlay a higher autostart priority than other apps.</translation>
</message>
<message>
<source>Send anonymous crash reports and statistics</source>
<translation type="unfinished">Send anonymous crash reports and statistics</translation>
@ -878,22 +874,6 @@ ScreenPlay will only quit if no Wallpaper are running.</translation>
<source>Light</source>
<translation type="unfinished">Light</translation>
</message>
<message>
<source>Performance</source>
<translation type="unfinished">Performance</translation>
</message>
<message>
<source>Pause wallpaper video rendering while another app is in the foreground</source>
<translation type="unfinished">Pause wallpaper video rendering while another app is in the foreground</translation>
</message>
<message>
<source>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!</source>
<translation type="unfinished">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!</translation>
</message>
<message>
<source>Default Fill Mode</source>
<translation type="unfinished">Default Fill Mode</translation>
</message>
<message>
<source>Set this property to define how the video is scaled to fit the target area.</source>
<translation type="unfinished">Set this property to define how the video is scaled to fit the target area.</translation>
@ -974,6 +954,30 @@ ScreenPlay will only quit if no Wallpaper are running.</translation>
<source>Privacy</source>
<translation type="unfinished">Privacy</translation>
</message>
<message>
<source>Show default installed content</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>ScreenPlay will show build in content.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Wallpaper and Widgets</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Pause wallpaper video rendering while another app is in the foreground.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>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!</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Default Wallpaper Fill Mode</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>SettingsExpander</name>
@ -1040,6 +1044,37 @@ ScreenPlay will only quit if no Wallpaper are running.</translation>
<translation type="unfinished">Below you can find tools to create wallaper, beyond the tools that ScreenPlay provides for you!</translation>
</message>
</context>
<context>
<name>TrayIcon</name>
<message>
<source>ScreenPlay - Double click to change you settings.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Open ScreenPlay</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Mute all</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Unmute all</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Pause all</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Play all</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Quit ScreenPlay</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>WebsiteWallpaper</name>
<message>

View File

@ -625,6 +625,10 @@ ScreenPlay will only quit if no Wallpaper are running.</translation>
<source>Widgets</source>
<translation type="unfinished">Widgets</translation>
</message>
<message>
<source>Search for Wallpaper &amp; Widgets</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>InstalledWelcomeScreen</name>
@ -818,14 +822,6 @@ ScreenPlay will only quit if no Wallpaper are running.</translation>
<source>ScreenPlay will start with Windows and will setup your Desktop every time for you.</source>
<translation type="unfinished">ScreenPlay will start with Windows and will setup your Desktop every time for you.</translation>
</message>
<message>
<source>High priority Autostart</source>
<translation type="unfinished">High priority Autostart</translation>
</message>
<message>
<source>This options grants ScreenPlay a higher autostart priority than other apps.</source>
<translation type="unfinished">This options grants ScreenPlay a higher autostart priority than other apps.</translation>
</message>
<message>
<source>Send anonymous crash reports and statistics</source>
<translation type="unfinished">Send anonymous crash reports and statistics</translation>
@ -878,22 +874,6 @@ ScreenPlay will only quit if no Wallpaper are running.</translation>
<source>Light</source>
<translation type="unfinished">Light</translation>
</message>
<message>
<source>Performance</source>
<translation type="unfinished">Performance</translation>
</message>
<message>
<source>Pause wallpaper video rendering while another app is in the foreground</source>
<translation type="unfinished">Pause wallpaper video rendering while another app is in the foreground</translation>
</message>
<message>
<source>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!</source>
<translation type="unfinished">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!</translation>
</message>
<message>
<source>Default Fill Mode</source>
<translation type="unfinished">Default Fill Mode</translation>
</message>
<message>
<source>Set this property to define how the video is scaled to fit the target area.</source>
<translation type="unfinished">Set this property to define how the video is scaled to fit the target area.</translation>
@ -974,6 +954,30 @@ ScreenPlay will only quit if no Wallpaper are running.</translation>
<source>Privacy</source>
<translation type="unfinished">Privacy</translation>
</message>
<message>
<source>Show default installed content</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>ScreenPlay will show build in content.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Wallpaper and Widgets</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Pause wallpaper video rendering while another app is in the foreground.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>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!</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Default Wallpaper Fill Mode</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>SettingsExpander</name>
@ -1040,6 +1044,37 @@ ScreenPlay will only quit if no Wallpaper are running.</translation>
<translation type="unfinished">Below you can find tools to create wallaper, beyond the tools that ScreenPlay provides for you!</translation>
</message>
</context>
<context>
<name>TrayIcon</name>
<message>
<source>ScreenPlay - Double click to change you settings.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Open ScreenPlay</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Mute all</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Unmute all</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Pause all</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Play all</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Quit ScreenPlay</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>WebsiteWallpaper</name>
<message>

View File

@ -625,6 +625,10 @@ ScreenPlay will only quit if no Wallpaper are running.</translation>
<source>Widgets</source>
<translation type="unfinished">Widgets</translation>
</message>
<message>
<source>Search for Wallpaper &amp; Widgets</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>InstalledWelcomeScreen</name>
@ -818,14 +822,6 @@ ScreenPlay will only quit if no Wallpaper are running.</translation>
<source>ScreenPlay will start with Windows and will setup your Desktop every time for you.</source>
<translation>ScreenPlay zostanie uruchomione przy starcie systemu Windows i ustawi dla Ciebie tapetę za każdym razem.</translation>
</message>
<message>
<source>High priority Autostart</source>
<translation>Wysoki priorytet autostartu</translation>
</message>
<message>
<source>This options grants ScreenPlay a higher autostart priority than other apps.</source>
<translation>Ta opcja nadaje ScreenPlay wyższy priorytet autostartu w porównaniu do innych aplikacji.</translation>
</message>
<message>
<source>Send anonymous crash reports and statistics</source>
<translation>Wysyłaj anonimowe raporty o awariach oraz statystyki</translation>
@ -878,22 +874,6 @@ ScreenPlay will only quit if no Wallpaper are running.</translation>
<source>Light</source>
<translation>Jasny</translation>
</message>
<message>
<source>Performance</source>
<translation>Wydajność</translation>
</message>
<message>
<source>Pause wallpaper video rendering while another app is in the foreground</source>
<translation>Wstrzymaj renderowanie tapety wideo, gdy inna aplikacja jest na pierwszym planie</translation>
</message>
<message>
<source>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!</source>
<translation>Wyłączamy renderowanie wideo (dźwięk zostaje!) dla najlepszej wydajności. W przypadku problemów, możesz wyłączyć funkcję tutaj. Wymaga ponownego uruchomienia tapety!</translation>
</message>
<message>
<source>Default Fill Mode</source>
<translation>Domyślny tryb wypełniania</translation>
</message>
<message>
<source>Set this property to define how the video is scaled to fit the target area.</source>
<translation>To ustawienie określa, w jaki sposób film jest skalowany, aby dopasować go do obszaru docelowego.</translation>
@ -974,6 +954,30 @@ ScreenPlay will only quit if no Wallpaper are running.</translation>
<source>Privacy</source>
<translation>Prywatność</translation>
</message>
<message>
<source>Show default installed content</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>ScreenPlay will show build in content.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Wallpaper and Widgets</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Pause wallpaper video rendering while another app is in the foreground.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>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!</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Default Wallpaper Fill Mode</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>SettingsExpander</name>
@ -1040,6 +1044,37 @@ ScreenPlay will only quit if no Wallpaper are running.</translation>
<translation>Poniżej znajdziesz dodatkowe narzędzia do tworzenia tapety poza tymi, które oferuje dla Ciebie ScreenPlay!</translation>
</message>
</context>
<context>
<name>TrayIcon</name>
<message>
<source>ScreenPlay - Double click to change you settings.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Open ScreenPlay</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Mute all</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Unmute all</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Pause all</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Play all</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Quit ScreenPlay</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>WebsiteWallpaper</name>
<message>

View File

@ -625,6 +625,10 @@ ScreenPlay will only quit if no Wallpaper are running.</translation>
<source>Widgets</source>
<translation type="unfinished">Widgets</translation>
</message>
<message>
<source>Search for Wallpaper &amp; Widgets</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>InstalledWelcomeScreen</name>
@ -818,14 +822,6 @@ ScreenPlay will only quit if no Wallpaper are running.</translation>
<source>ScreenPlay will start with Windows and will setup your Desktop every time for you.</source>
<translation type="unfinished">ScreenPlay will start with Windows and will setup your Desktop every time for you.</translation>
</message>
<message>
<source>High priority Autostart</source>
<translation type="unfinished">High priority Autostart</translation>
</message>
<message>
<source>This options grants ScreenPlay a higher autostart priority than other apps.</source>
<translation type="unfinished">This options grants ScreenPlay a higher autostart priority than other apps.</translation>
</message>
<message>
<source>Send anonymous crash reports and statistics</source>
<translation type="unfinished">Send anonymous crash reports and statistics</translation>
@ -878,22 +874,6 @@ ScreenPlay will only quit if no Wallpaper are running.</translation>
<source>Light</source>
<translation type="unfinished">Light</translation>
</message>
<message>
<source>Performance</source>
<translation type="unfinished">Performance</translation>
</message>
<message>
<source>Pause wallpaper video rendering while another app is in the foreground</source>
<translation type="unfinished">Pause wallpaper video rendering while another app is in the foreground</translation>
</message>
<message>
<source>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!</source>
<translation type="unfinished">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!</translation>
</message>
<message>
<source>Default Fill Mode</source>
<translation type="unfinished">Default Fill Mode</translation>
</message>
<message>
<source>Set this property to define how the video is scaled to fit the target area.</source>
<translation type="unfinished">Set this property to define how the video is scaled to fit the target area.</translation>
@ -974,6 +954,30 @@ ScreenPlay will only quit if no Wallpaper are running.</translation>
<source>Privacy</source>
<translation type="unfinished">Privacy</translation>
</message>
<message>
<source>Show default installed content</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>ScreenPlay will show build in content.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Wallpaper and Widgets</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Pause wallpaper video rendering while another app is in the foreground.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>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!</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Default Wallpaper Fill Mode</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>SettingsExpander</name>
@ -1040,6 +1044,37 @@ ScreenPlay will only quit if no Wallpaper are running.</translation>
<translation type="unfinished">Below you can find tools to create wallaper, beyond the tools that ScreenPlay provides for you!</translation>
</message>
</context>
<context>
<name>TrayIcon</name>
<message>
<source>ScreenPlay - Double click to change you settings.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Open ScreenPlay</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Mute all</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Unmute all</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Pause all</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Play all</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Quit ScreenPlay</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>WebsiteWallpaper</name>
<message>

View File

@ -625,6 +625,10 @@ ScreenPlay will only quit if no Wallpaper are running.</translation>
<source>Widgets</source>
<translation type="unfinished">Widgets</translation>
</message>
<message>
<source>Search for Wallpaper &amp; Widgets</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>InstalledWelcomeScreen</name>
@ -818,14 +822,6 @@ ScreenPlay will only quit if no Wallpaper are running.</translation>
<source>ScreenPlay will start with Windows and will setup your Desktop every time for you.</source>
<translation type="unfinished">ScreenPlay will start with Windows and will setup your Desktop every time for you.</translation>
</message>
<message>
<source>High priority Autostart</source>
<translation type="unfinished">High priority Autostart</translation>
</message>
<message>
<source>This options grants ScreenPlay a higher autostart priority than other apps.</source>
<translation type="unfinished">This options grants ScreenPlay a higher autostart priority than other apps.</translation>
</message>
<message>
<source>Send anonymous crash reports and statistics</source>
<translation type="unfinished">Send anonymous crash reports and statistics</translation>
@ -878,22 +874,6 @@ ScreenPlay will only quit if no Wallpaper are running.</translation>
<source>Light</source>
<translation type="unfinished">Light</translation>
</message>
<message>
<source>Performance</source>
<translation type="unfinished">Performance</translation>
</message>
<message>
<source>Pause wallpaper video rendering while another app is in the foreground</source>
<translation type="unfinished">Pause wallpaper video rendering while another app is in the foreground</translation>
</message>
<message>
<source>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!</source>
<translation type="unfinished">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!</translation>
</message>
<message>
<source>Default Fill Mode</source>
<translation type="unfinished">Default Fill Mode</translation>
</message>
<message>
<source>Set this property to define how the video is scaled to fit the target area.</source>
<translation type="unfinished">Set this property to define how the video is scaled to fit the target area.</translation>
@ -974,6 +954,30 @@ ScreenPlay will only quit if no Wallpaper are running.</translation>
<source>Privacy</source>
<translation type="unfinished">Privacy</translation>
</message>
<message>
<source>Show default installed content</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>ScreenPlay will show build in content.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Wallpaper and Widgets</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Pause wallpaper video rendering while another app is in the foreground.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>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!</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Default Wallpaper Fill Mode</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>SettingsExpander</name>
@ -1040,6 +1044,37 @@ ScreenPlay will only quit if no Wallpaper are running.</translation>
<translation type="unfinished">Below you can find tools to create wallaper, beyond the tools that ScreenPlay provides for you!</translation>
</message>
</context>
<context>
<name>TrayIcon</name>
<message>
<source>ScreenPlay - Double click to change you settings.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Open ScreenPlay</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Mute all</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Unmute all</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Pause all</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Play all</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Quit ScreenPlay</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>WebsiteWallpaper</name>
<message>

View File

@ -625,6 +625,10 @@ ScreenPlay will only quit if no Wallpaper are running.</translation>
<source>Widgets</source>
<translation type="unfinished">Widgets</translation>
</message>
<message>
<source>Search for Wallpaper &amp; Widgets</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>InstalledWelcomeScreen</name>
@ -818,14 +822,6 @@ ScreenPlay will only quit if no Wallpaper are running.</translation>
<source>ScreenPlay will start with Windows and will setup your Desktop every time for you.</source>
<translation>ScreenPlay, Windows ile başlayacak ve her seferinde sizin için Masaüstünüzü kuracaktır.</translation>
</message>
<message>
<source>High priority Autostart</source>
<translation>Yüksek öncelikli Otomatik başlatma</translation>
</message>
<message>
<source>This options grants ScreenPlay a higher autostart priority than other apps.</source>
<translation>Bu seçenekler, ScreenPlay&apos;e diğer uygulamalardan daha yüksek bir otomatik başlatma önceliği verir.</translation>
</message>
<message>
<source>Send anonymous crash reports and statistics</source>
<translation type="unfinished">Send anonymous crash reports and statistics</translation>
@ -878,22 +874,6 @@ ScreenPlay will only quit if no Wallpaper are running.</translation>
<source>Light</source>
<translation>Aydınlık</translation>
</message>
<message>
<source>Performance</source>
<translation>Performans</translation>
</message>
<message>
<source>Pause wallpaper video rendering while another app is in the foreground</source>
<translation>Başka bir uygulama ön plandayken duvar kağıdı video oluşturmayı duraklatın</translation>
</message>
<message>
<source>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!</source>
<translation>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!</translation>
</message>
<message>
<source>Default Fill Mode</source>
<translation>Varsayılan Doldurma Modu</translation>
</message>
<message>
<source>Set this property to define how the video is scaled to fit the target area.</source>
<translation>Videonun hedef alana sığacak şekilde nasıl ölçeklendirileceğini tanımlamak için bu özelliği ayarlayın.</translation>
@ -974,6 +954,30 @@ ScreenPlay will only quit if no Wallpaper are running.</translation>
<source>Privacy</source>
<translation type="unfinished">Privacy</translation>
</message>
<message>
<source>Show default installed content</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>ScreenPlay will show build in content.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Wallpaper and Widgets</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Pause wallpaper video rendering while another app is in the foreground.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>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!</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Default Wallpaper Fill Mode</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>SettingsExpander</name>
@ -1040,6 +1044,37 @@ ScreenPlay will only quit if no Wallpaper are running.</translation>
<translation type="unfinished">Below you can find tools to create wallaper, beyond the tools that ScreenPlay provides for you!</translation>
</message>
</context>
<context>
<name>TrayIcon</name>
<message>
<source>ScreenPlay - Double click to change you settings.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Open ScreenPlay</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Mute all</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Unmute all</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Pause all</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Play all</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Quit ScreenPlay</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>WebsiteWallpaper</name>
<message>

View File

@ -625,6 +625,10 @@ ScreenPlay will only quit if no Wallpaper are running.</translation>
<source>Widgets</source>
<translation type="unfinished">Widgets</translation>
</message>
<message>
<source>Search for Wallpaper &amp; Widgets</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>InstalledWelcomeScreen</name>
@ -818,14 +822,6 @@ ScreenPlay will only quit if no Wallpaper are running.</translation>
<source>ScreenPlay will start with Windows and will setup your Desktop every time for you.</source>
<translation>ScreenPlay sẽ chạy cùng với Windows sẽ thiết lập màn hình nền cho bạn.</translation>
</message>
<message>
<source>High priority Autostart</source>
<translation>Tự đng mở ưu tiên hơn</translation>
</message>
<message>
<source>This options grants ScreenPlay a higher autostart priority than other apps.</source>
<translation>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.</translation>
</message>
<message>
<source>Send anonymous crash reports and statistics</source>
<translation>Gửi báo cáo sự cố liệu thống n danh</translation>
@ -878,22 +874,6 @@ ScreenPlay will only quit if no Wallpaper are running.</translation>
<source>Light</source>
<translation>Sáng</translation>
</message>
<message>
<source>Performance</source>
<translation>Hiệu suất</translation>
</message>
<message>
<source>Pause wallpaper video rendering while another app is in the foreground</source>
<translation>Tạm dừng nh nền video khi một ng dụng khác đang mở phía trước</translation>
</message>
<message>
<source>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!</source>
<translation>Chúng tôi tắt hiển thị video (không phải âm thanh!) Đ hiệu suất tốt nhất. Nếu bạn gặp sự cố, bạn thể 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!</translation>
</message>
<message>
<source>Default Fill Mode</source>
<translation>Cách lấp đy mặc đnh</translation>
</message>
<message>
<source>Set this property to define how the video is scaled to fit the target area.</source>
<translation>Đ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.</translation>
@ -974,6 +954,30 @@ ScreenPlay will only quit if no Wallpaper are running.</translation>
<source>Privacy</source>
<translation>Quyền riêng </translation>
</message>
<message>
<source>Show default installed content</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>ScreenPlay will show build in content.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Wallpaper and Widgets</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Pause wallpaper video rendering while another app is in the foreground.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>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!</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Default Wallpaper Fill Mode</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>SettingsExpander</name>
@ -1040,6 +1044,37 @@ ScreenPlay will only quit if no Wallpaper are running.</translation>
<translation type="unfinished">Below you can find tools to create wallaper, beyond the tools that ScreenPlay provides for you!</translation>
</message>
</context>
<context>
<name>TrayIcon</name>
<message>
<source>ScreenPlay - Double click to change you settings.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Open ScreenPlay</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Mute all</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Unmute all</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Pause all</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Play all</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Quit ScreenPlay</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>WebsiteWallpaper</name>
<message>

View File

@ -625,6 +625,10 @@ ScreenPlay will only quit if no Wallpaper are running.</translation>
<source>Widgets</source>
<translation type="unfinished">Widgets</translation>
</message>
<message>
<source>Search for Wallpaper &amp; Widgets</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>InstalledWelcomeScreen</name>
@ -818,14 +822,6 @@ ScreenPlay will only quit if no Wallpaper are running.</translation>
<source>ScreenPlay will start with Windows and will setup your Desktop every time for you.</source>
<translation>ScreenPlay将在操作系统启动时启动</translation>
</message>
<message>
<source>High priority Autostart</source>
<translation></translation>
</message>
<message>
<source>This options grants ScreenPlay a higher autostart priority than other apps.</source>
<translation>ScreenPlay比其他应用程序更高的自启动优先级</translation>
</message>
<message>
<source>Send anonymous crash reports and statistics</source>
<translation></translation>
@ -878,22 +874,6 @@ ScreenPlay will only quit if no Wallpaper are running.</translation>
<source>Light</source>
<translation></translation>
</message>
<message>
<source>Performance</source>
<translation></translation>
</message>
<message>
<source>Pause wallpaper video rendering while another app is in the foreground</source>
<translation></translation>
</message>
<message>
<source>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!</source>
<translation> </translation>
</message>
<message>
<source>Default Fill Mode</source>
<translation></translation>
</message>
<message>
<source>Set this property to define how the video is scaled to fit the target area.</source>
<translation></translation>
@ -974,6 +954,30 @@ ScreenPlay will only quit if no Wallpaper are running.</translation>
<source>Privacy</source>
<translation></translation>
</message>
<message>
<source>Show default installed content</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>ScreenPlay will show build in content.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Wallpaper and Widgets</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Pause wallpaper video rendering while another app is in the foreground.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>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!</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Default Wallpaper Fill Mode</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>SettingsExpander</name>
@ -1040,6 +1044,37 @@ ScreenPlay will only quit if no Wallpaper are running.</translation>
<translation>ScreenPlay提供的壁纸创建工具</translation>
</message>
</context>
<context>
<name>TrayIcon</name>
<message>
<source>ScreenPlay - Double click to change you settings.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Open ScreenPlay</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Mute all</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Unmute all</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Pause all</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Play all</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Quit ScreenPlay</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>WebsiteWallpaper</name>
<message>

View File

@ -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();

View File

@ -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

View File

@ -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")

View File

@ -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<DWORD>(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<DWORD>(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;
}

View File

@ -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<WindowsHook> 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;

View File

@ -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<DWORD>(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<size_t>(bytesWritten) != message.size()) {
std::cerr << "Bytes written mismatch." << std::endl;
return false;
}
return true;
}

View File

@ -0,0 +1,42 @@
#pragma once
#include <iostream>
#include <string>
#include <windows.h>
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;
};

View File

@ -0,0 +1,27 @@
// SPDX-License-Identifier: LicenseRef-EliasSteurerTachiom OR AGPL-3.0-only
#include "WindowsPipe.h"
#define CATCH_CONFIG_MAIN
#include <catch2/catch_test_macros.hpp>
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";
}
}
}

View File

@ -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()

View File

@ -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)

View File

@ -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"
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"

View File

@ -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

View File

@ -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):

View File

@ -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

View File

@ -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]

View File

@ -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

View File

@ -512,7 +512,7 @@ Item {
}
}
Behavior on contentHeight {
Behavior on contentHeight {
PropertyAnimation {
duration: 400
property: "contentHeight"

View File

@ -114,7 +114,8 @@ def main():
vcpkg_packages_list = [
"curl",
"cpp-httplib",
"libarchive"
"libarchive",
"catch2"
]
if not args.skip_aqt:
setup_qt()