From 8695c884a196c62a308f509c76b6564fd95ba8a8 Mon Sep 17 00:00:00 2001
From: Htylol <dixperm909@yandex.ru>
Date: Sun, 20 Oct 2024 13:38:46 +0500
Subject: [PATCH] Improvements for name_desktop

---
 data_from_portwine/locales/PortProton.pot     |  4 +++
 .../locales/es/LC_MESSAGES/PortProton.po      |  5 +++
 .../locales/ru/LC_MESSAGES/PortProton.po      |  7 ++++
 data_from_portwine/scripts/functions_helper   | 34 ++++++++++++++++---
 4 files changed, 45 insertions(+), 5 deletions(-)

diff --git a/data_from_portwine/locales/PortProton.pot b/data_from_portwine/locales/PortProton.pot
index f0ec6caa..ae1265b7 100644
--- a/data_from_portwine/locales/PortProton.pot
+++ b/data_from_portwine/locales/PortProton.pot
@@ -41,6 +41,10 @@ msgstr  ""
 msgid   "Newest DXVK, VKD3D, D8VK (Vulkan v1.3+)"
 msgstr  ""
 
+msgid   "A higher number of duplicate desktop files were found for this file."
+        "\\nShould I delete the extra ones or not?"
+msgstr  ""
+
 msgid   "Gallium Nine (DirectX 9 for MESA)"
 msgstr  ""
 
diff --git a/data_from_portwine/locales/es/LC_MESSAGES/PortProton.po b/data_from_portwine/locales/es/LC_MESSAGES/PortProton.po
index fd4a3c39..5dfd2e07 100644
--- a/data_from_portwine/locales/es/LC_MESSAGES/PortProton.po
+++ b/data_from_portwine/locales/es/LC_MESSAGES/PortProton.po
@@ -1872,6 +1872,11 @@ msgstr "Agregar acceso directo a la biblioteca de STEAM"
 msgid "Name"
 msgstr "Nombre"
 
+msgid ""
+"A higher number of duplicate desktop files were found for this file."
+"\\nShould I delete the extra ones or not?"
+msgstr ""
+
 msgid "For adding shortcut to STEAM, needed restart.\\n\\nRestart STEAM now?"
 msgstr ""
 "Para agregar el acceso directo a STEAM, es necesario reiniciar.\\n\\¿Quieres "
diff --git a/data_from_portwine/locales/ru/LC_MESSAGES/PortProton.po b/data_from_portwine/locales/ru/LC_MESSAGES/PortProton.po
index 932cc075..5d9408ad 100644
--- a/data_from_portwine/locales/ru/LC_MESSAGES/PortProton.po
+++ b/data_from_portwine/locales/ru/LC_MESSAGES/PortProton.po
@@ -55,6 +55,13 @@ msgstr "Gallium Zink (трансляция OpenGL в Vulkan)"
 msgid "CREATE SHORTCUT"
 msgstr "СОЗДАТЬ ЯРЛЫК"
 
+msgid ""
+"A higher number of duplicate desktop files were found for this file."
+"\\nShould I delete the extra ones or not?"
+msgstr ""
+"Для этого файла было обнаружено большее количество дубликатов\\nфайлов "
+"рабочего стола. Удалить лишние или нет?"
+
 msgid "Create shortcut for select file..."
 msgstr "Создать ярлык для выбранного файла..."
 
diff --git a/data_from_portwine/scripts/functions_helper b/data_from_portwine/scripts/functions_helper
index 20b8b675..87ce82ad 100755
--- a/data_from_portwine/scripts/functions_helper
+++ b/data_from_portwine/scripts/functions_helper
@@ -786,7 +786,7 @@ debug_timer () {
 
 # Поиск нужного .desktop файла по $portwine_exe
 search_desktop_file () {
-    local count desktop_file desktop_file_new EXEC_DESKTOP EXEC_DESKTOP_NEW TIME_TOTAL i j df
+    local count desktop_file desktop_file_new EXEC_DESKTOP EXEC_DESKTOP_NEW TIME_TOTAL i j
     unset TIME_CURRENT_ARRAY DESKTOP_FILES_ARRAY
     count=0
     for desktop_file in "$PORT_WINE_PATH"/* ; do
@@ -5424,10 +5424,26 @@ portwine_create_shortcut () {
     [[ -z "${PW_SHORTCUT_DESKTOP}" ]] && PW_SHORTCUT_DESKTOP="TRUE"
     [[ -z "${PW_SHORTCUT_STEAM}" ]] && PW_SHORTCUT_STEAM="FALSE"
 
-    if [[ -z "${PORTPROTON_NAME}" ]] ; then
-        name_desktop="$(basename "$portwine_exe")"
+    name_desktop_basename="$(basename "${portwine_exe//.exe/}")"
+    search_desktop_file
+    if [[ -n $df ]] ; then
+        name_desktop_df="${df//"$PORT_WINE_PATH/"/}"
+        name_desktop_df="${name_desktop_df//.desktop/}"
+        if [[ $(echo "$name_desktop_basename" | tr '[:lower:]' '[:upper:]') =~ $(echo "$name_desktop_df" | tr '[:lower:]' '[:upper:]') ]]
+        then
+            name_desktop="$name_desktop_df"
+        elif [[ -n $PORTPROTON_NAME ]] && [[ ${DESKTOP_FILES_ARRAY[*]} =~ $PORTPROTON_NAME ]]
+        then
+            name_desktop="$PORTPROTON_NAME"
+        else
+            name_desktop="$name_desktop_df"
+        fi
     else
-        name_desktop="${PORTPROTON_NAME}"
+        if [[ -z $PORTPROTON_NAME ]] ; then
+            name_desktop="$name_desktop_basename"
+        else
+            name_desktop="$PORTPROTON_NAME"
+        fi
     fi
     export name_desktop
 
@@ -5477,7 +5493,15 @@ portwine_create_shortcut () {
 
         edit_user_conf_from_gui PW_SHORTCUT_MENU PW_SHORTCUT_DESKTOP PW_SHORTCUT_STEAM
 
-        try_remove_file "${PORT_WINE_PATH}/${name_desktop}.desktop"
+        if [[ -n ${DESKTOP_FILES_ARRAY[1]} ]] ; then
+            if yad_question "${translations[A higher number of duplicate desktop files were found for this file.\\nShould I delete the extra ones or not?]}" ; then
+                for rm in "${DESKTOP_FILES_ARRAY[@]}" ; do
+                    rm -f "$rm"
+                done
+            fi
+        else
+            try_remove_file "${PORT_WINE_PATH}/${name_desktop}.desktop"
+        fi
 
         echo "[Desktop Entry]" > "${PORT_WINE_PATH}/${name_desktop}.desktop"
         echo "Name=${name_desktop}" >> "${PORT_WINE_PATH}/${name_desktop}.desktop"