Merge pull request #393 from icenine451/cooker-0.7.0b-icenine451

Cooker 0.7.0b icenine451
This commit is contained in:
icenine451 2023-05-15 16:39:43 -04:00 committed by GitHub
commit 14cfbfe8e9
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
28 changed files with 270 additions and 39 deletions

View file

@ -1,5 +1,5 @@
config_file_format^pcsx2
target_file^$pcsx2qtconf
target_file^$pcsx2conf
defaults_file^$emuconfigs/PCSX2/PCSX2.ini
change^cheevos^Enabled^true^Achievements
change^cheevos^Username^$cheevos_username^Achievements

View file

@ -1,10 +1,6 @@
config_file_format^retroarch
target_file^/var/config/retroarch/config/Snes9x/snes.cfg
defaults_file^$emuconfigs/retroarch/retroarch.cfg
change^cheevos^cheevos_enable^true
change^cheevos^cheevos_token^$cheevos_token
change^cheevos^cheevos_username^$cheevos_username
change^cheevos_hardcore^cheevos_hardcore_mode_enable^true
change^borders^input_overlay^/var/config/retroarch/overlays/borders/pegasus/snes87.cfg
change^borders^input_overlay_aspect_adjust_landscape^0.305000
change^borders^input_overlay_scale_landscape^1.050000

View file

@ -0,0 +1,14 @@
config_file_format^retroarch
target_file^/var/config/retroarch/config/Gambatte/gb.cfg
defaults_file^$emuconfigs/retroarch/retroarch.cfg
change^borders^aspect_ratio_index^23
change^borders^custom_viewport_height^576
change^borders^custom_viewport_width^640
change^borders^custom_viewport_x^320
change^borders^custom_viewport_y^20
change^borders^input_overlay^/var/config/retroarch/overlays/borders/pegasus/gb.cfg
change^borders^input_overlay_aspect_adjust_landscape^0.110000
change^borders^input_overlay_enable^true
change^borders^input_overlay_scale_landscape^1.205000
change^borders^input_overlay_y_offset_landscape^0.005000
enable^nintendo_button_layout^/var/config/retroarch/config/remaps/Gambatte/gb.rmp

View file

@ -0,0 +1,13 @@
config_file_format^retroarch
target_file^/var/config/retroarch/config/mGBA/gba.cfg
defaults_file^$emuconfigs/retroarch/retroarch.cfg
change^borders^aspect_ratio_index^23
change^borders^custom_viewport_height^600
change^borders^custom_viewport_width^900
change^borders^custom_viewport_x^190
change^borders^custom_viewport_y^37
change^borders^input_overlay^/var/config/retroarch/overlays/borders/pegasus/gba.cfg
change^borders^input_overlay_aspect_adjust_landscape^0.105000
change^borders^input_overlay_enable^true
change^borders^input_overlay_scale_landscape^1.140000
enable^nintendo_button_layout^/var/config/retroarch/config/remaps/Gambatte/gbc.rmp

View file

@ -0,0 +1,14 @@
config_file_format^retroarch
target_file^/var/config/retroarch/config/Gambatte/gbc.cfg
defaults_file^$emuconfigs/retroarch/retroarch.cfg
change^borders^aspect_ratio_index^23
change^borders^custom_viewport_height^576
change^borders^custom_viewport_width^640
change^borders^custom_viewport_x^320
change^borders^custom_viewport_y^20
change^borders^input_overlay^/var/config/retroarch/overlays/borders/pegasus/gbc.cfg
change^borders^input_overlay_aspect_adjust_landscape^0.110000
change^borders^input_overlay_enable^true
change^borders^input_overlay_scale_landscape^1.205000
change^borders^input_overlay_y_offset_landscape^0.005000
enable^nintendo_button_layout^/var/config/retroarch/config/remaps/Gambatte/gbc.rmp

View file

@ -0,0 +1,8 @@
config_file_format^retroarch
target_file^/var/config/retroarch/config/Genesis Plus GX/genesis.cfg
defaults_file^$emuconfigs/retroarch/retroarch.cfg
change^borders^input_overlay^input_overlay^/var/config/retroarch/overlays/borders/pegasus/genesis.cfg
change^borders^input_overlay_aspect_adjust_landscape^0.100000
change^borders^input_overlay_enable^true
change^borders^input_overlay_scale_landscape^1.040000
change^widescreen^aspect_ratio_index^24

View file

@ -0,0 +1,11 @@
config_file_format^retroarch
target_file^/var/config/retroarch/config/Genesis Plus GX/gg.cfg
defaults_file^$emuconfigs/retroarch/retroarch.cfg
change^borders^input_overlay^aspect_ratio_index^23
change^borders^custom_viewport_width^800
change^borders^custom_viewport_x^240
change^borders^custom_viewport_y^43
change^borders^input_overlay^/var/config/retroarch/overlays/borders/pegasus/gg.cfg
change^borders^input_overlay_aspect_adjust_landscape^-0.080000
change^borders^input_overlay_enable^true
change^borders^input_overlay_scale_landscape^1.345000

View file

@ -0,0 +1,8 @@
config_file_format^retroarch
target_file^/var/config/retroarch/config/Mupen64Plus-Next/n64.cfg
defaults_file^$emuconfigs/retroarch/retroarch.cfg
change^borders^input_overlay^/var/config/retroarch/overlays/borders/pegasus/N64.cfg
change^borders^input_overlay_aspect_adjust_landscape^0.145000
change^borders^input_overlay_enable^true
change^widescreen^aspect_ratio_index^24
enable^nintendo_button_layout^/var/config/retroarch/config/remaps/Snes9x/snes.rmp

View file

@ -0,0 +1,8 @@
config_file_format^retroarch
target_file^/var/config/retroarch/config/SwanStation/psx.cfg
defaults_file^$emuconfigs/retroarch/retroarch.cfg
change^borders^input_overlay^/var/config/retrodeck/overlays/borders/pegasus/psx.cfg
change^borders^input_overlay_aspect_adjust_landscape^0.120000
change^borders^input_overlay_enable^true
change^borders^input_overlay_scale_landscape^1.040000
change^widescreen^aspect_ratio_index^24

View file

@ -0,0 +1,4 @@
input_player1_btn_a = "0"
input_player1_btn_b = "8"
input_player1_btn_x = "1"
input_player1_btn_y = "9"

View file

@ -0,0 +1,4 @@
input_player1_btn_a = "0"
input_player1_btn_b = "8"
input_player1_btn_x = "1"
input_player1_btn_y = "9"

View file

@ -0,0 +1,4 @@
input_player1_btn_a = "0"
input_player1_btn_b = "8"
input_player1_btn_x = "1"
input_player1_btn_y = "9"

View file

@ -0,0 +1,4 @@
input_player1_btn_a = "0"
input_player1_btn_b = "8"
input_player1_btn_x = "1"
input_player1_btn_y = "9"

View file

@ -0,0 +1,4 @@
input_player1_btn_a = "0"
input_player1_btn_b = "8"
input_player1_btn_x = "1"
input_player1_btn_y = "9"

View file

@ -0,0 +1,11 @@
duckstation^Duckstation (Sony Playstation Standalone)
gb^Nintendo GameBoy
gba^Nintendo GameBoy Advance
gbc^Nintendo GameBoy Color
genesis^Sega Genesis/Master System
gg^Sega GameGear
n64^Nintendo 64
pcsx2^PCSX2 (Sony Playstation 2 Standalone)
psx_ra^Sony Playstation (RetroArch Core)
retroarch^RetroArch (Multi-emulator Frontend)
snes^Nintendo Super Nintendo

View file

@ -29,20 +29,34 @@ default_user=
developer_options=false
[cheevos]
Duckstation=false
PCSX2=false
RetroArch=false
duckstation=false
pcsx2=false
retroarch=false
[cheevos_hardcore]
Duckstation=false
PCSX2=false
RetroArch=false
duckstation=false
pcsx2=false
retroarch=false
[borders]
SNES=false
gb=false
gba=false
gbc=false
genesis=false
gg=false
n64=false
psx_ra=false
snes=false
[widescreen]
SNES=false
genesis=false
n64=false
psx_ra=false
snes=false
[nintendo_button_layout]
SNES=false
gb=false
gba=false
gbc=false
n64=false
snes=false

View file

@ -2,5 +2,5 @@
change^DSP^Backend^Pulse^primehack^$primehackconf
change^Settings^AspectRatio^1^primehack^$primehackgfxconf
# Update "ask on quit" and "save on quit" on supported emulators (PCSX2, Duckstation)
change^UI^ConfirmShutdown^false^pcsx2^$pcsx2qtconf
change^Main^ConfirmPowerOff^false^duckstation^$duckstationconf
change^UI^ConfirmShutdown^false^pcsx2^$pcsx2conf
change^Main^ConfirmPowerOff^false^duckstation^$duckstationconf

View file

@ -1,6 +1,6 @@
accessibility_enable = "false"
accessibility_narrator_speech_speed = "5"
ai_service_enable = "true"
ai_service_enable = "false"
ai_service_mode = "1"
ai_service_pause = "false"
ai_service_source_lang = "0"

View file

@ -1269,7 +1269,7 @@
<platform>ps3</platform>
<theme>ps3</theme>
</system>
<system>
<!-- <system>
<name>ps4</name>
<fullname>Sony PlayStation 4</fullname>
<path>%ROMPATH%/ps4</path>
@ -1277,7 +1277,7 @@
<command>PLACEHOLDER %ROM%</command>
<platform>ps4</platform>
<theme>ps4</theme>
</system>
</system> -->
<system>
<name>psp</name>
<fullname>Sony PlayStation Portable</fullname>

View file

@ -238,6 +238,14 @@ backup_retrodeck_userdata() {
zip -rq9 "$backups_folder/$(date +"%0m%0d")_retrodeck_userdata.zip" "$saves_folder" "$states_folder" "$bios_folder" "$media_folder" "$themes_folder" "$logs_folder" "$screenshots_folder" "$mods_folder" "$texture_packs_folder" "$borders_folder" > $logs_folder/$(date +"%0m%0d")_backup_log.log
}
make_name_pretty() {
# This function will take an internal system name (like "gbc") and return a pretty version for user display ("Nintendo GameBoy Color")
# USAGE: make_name_pretty "system name"
local system=$(grep "$1^" "$pretty_system_names_reference_list")
IFS='^' read -r internal_name pretty_name < <(echo "$system")
echo "$pretty_name"
}
finit_browse() {
# Function for choosing data directory location during first/forced init
path_selected=false

View file

@ -43,8 +43,9 @@ helper_files_list="$emuconfigs/defaults/retrodeck/reference_lists/helper_files_l
rd_appdata="/app/share/appdata/net.retrodeck.retrodeck.appdata.xml" # The shipped appdata XML file for this version
rpcs3_firmware="http://dus01.ps3.update.playstation.net/update/ps3/image/us/2023_0228_05fe32f5dc8c78acbcd84d36ee7fdc5b/PS3UPDAT.PUP"
RA_API_URL="https://retroachievements.org/dorequest.php" # API URL for RetroAchievements.org
presets_dir="$emuconfigs/defaults/retrodeck/presets"
incompatible_presets_reference_list="$emuconfigs/defaults/retrodeck/reference_lists/incompatible_presets.cfg"
presets_dir="$emuconfigs/defaults/retrodeck/presets" # Repository for all system preset config files
incompatible_presets_reference_list="$emuconfigs/defaults/retrodeck/reference_lists/incompatible_presets.cfg" # A config file listing all incompatible presets for reference (eg. cannot have borders and widescreen enabled simultaniously)
pretty_system_names_reference_list="$emuconfigs/defaults/retrodeck/reference_lists/pretty_system_names.cfg" # An internal translation list for turning internal names (eg. gbc) to "pretty" names (Nintendo GameBoy Color)
# Config files for emulators with single config files

View file

@ -88,7 +88,7 @@ get_setting_value() {
if [[ -z $current_section_name ]]; then
echo $(grep -o -P "(?<=^$current_setting_name=).*" $1)
else
sed -n '\^\['"$current_section_name"'\]^,\^\^'"$current_setting_name"'^{ \^\['"$current_section_name"'\]^! { \^\^'"$current_setting_name"'^ p } }' $1 | grep -o -P "(?<=^$current_setting_name=).*"
sed -n -E '\^\['"$current_section_name"'\]^,\^\^'"$current_setting_name"'|\[^{ \^\['"$current_section_name"'\]^! { \^\^'"$current_setting_name"'^ p } }' $1 | grep -o -P "(?<=^$current_setting_name=).*"
fi
;;
@ -96,7 +96,7 @@ get_setting_value() {
if [[ -z $current_section_name ]]; then
echo $(grep -o -P "(?<=^$current_setting_name = \").*(?=\")" $1)
else
sed -n '\^\['"$current_section_name"'\]^,\^\^'"$current_setting_name"'^{ \^\['"$current_section_name"'\]^! { \^\^'"$current_setting_name"'^ p } }' $1 | grep -o -P "(?<=^$current_setting_name = \").*(?=\")"
sed -n -E '\^\['"$current_section_name"'\]^,\^\^'"$current_setting_name"'|\[^{ \^\['"$current_section_name"'\]^! { \^\^'"$current_setting_name"'^ p } }' $1 | grep -o -P "(?<=^$current_setting_name = \").*(?=\")"
fi
;;
@ -104,7 +104,7 @@ get_setting_value() {
if [[ -z $current_section_name ]]; then
echo $(grep -o -P "(?<=^$current_setting_name = ).*" $1)
else
sed -n '\^\['"$current_section_name"'\]^,\^\^'"$current_setting_name"'^{ \^\['"$current_section_name"'\]^! { \^\^'"$current_setting_name"'^ p } }' $1 | grep -o -P "(?<=^$current_setting_name = ).*"
sed -n -E '\^\['"$current_section_name"'\]^,\^\^'"$current_setting_name"'|\[^{ \^\['"$current_section_name"'\]^! { \^\^'"$current_setting_name"'^ p } }' $1 | grep -o -P "(?<=^$current_setting_name = ).*"
fi
;;

View file

@ -90,9 +90,9 @@ post_update() {
set_setting_value $rd_conf "borders_folder" "$rdhome/borders"
conf_read
mv -f "$pcsx2qtconf" "$pcsx2qtconf.bak"
generate_single_patch "$emuconfigs/PCSX2/PCSX2.ini" "$pcsx2qtconf.bak" "/var/config/PCSX2/inis/PCSX2-cheevos-upgrade.patch" pcsx2
deploy_single_patch "$emuconfigs/PCSX2/PCSX2.ini" "/var/config/PCSX2/inis/PCSX2-cheevos-upgrade.patch" "$pcsx2qtconf"
mv -f "$pcsx2conf" "$pcsx2conf.bak"
generate_single_patch "$emuconfigs/PCSX2/PCSX2.ini" "$pcsx2conf.bak" "/var/config/PCSX2/inis/PCSX2-cheevos-upgrade.patch" pcsx2
deploy_single_patch "$emuconfigs/PCSX2/PCSX2.ini" "/var/config/PCSX2/inis/PCSX2-cheevos-upgrade.patch" "$pcsx2conf"
rm -f "/var/config/PCSX2/inis/PCSX2-cheevos-upgrade.patch"
mv -f "$duckstationconf" "$duckstationconf.bak"
generate_single_patch "$emuconfigs/duckstation/settings.ini" "$duckstationconf.bak" "/var/config/duckstation/duckstation-cheevos-upgrade.patch" pcsx2
@ -152,6 +152,7 @@ post_update() {
set_setting_value "$duckstationconf" "Card1Path" "$saves_folder/psx/duckstation/memcards/shared_card_1.mcd" "duckstation" "MemoryCards"
set_setting_value "$duckstationconf" "Card2Path" "$saves_folder/psx/duckstation/memcards/shared_card_2.mcd" "duckstation" "MemoryCards"
set_setting_value "$duckstationconf" "Directory" "$saves_folder/psx/duckstation/memcards" "duckstation" "MemoryCards"
set_setting_value "$duckstationconf" "RecursivePaths" "$roms_folder/psx" "duckstation" "GameList"
mkdir -p "$states_folder/psx"
mv -t "$states_folder/psx/" "$states_folder/duckstation"
unlink "/var/data/duckstation/savestates"

View file

@ -83,6 +83,7 @@ prepare_emulator() {
set_setting_value "$raconf" "savefile_directory" "$saves_folder" "retroarch"
set_setting_value "$raconf" "savestate_directory" "$states_folder" "retroarch"
set_setting_value "$raconf" "screenshot_directory" "$screenshots_folder" "retroarch"
set_setting_value "$raconf" "log_dir" "$logs_folder" "retroarch"
fi
# PPSSPP
@ -126,6 +127,7 @@ prepare_emulator() {
set_setting_value "$raconf" "savefile_directory" "$saves_folder" "retroarch"
set_setting_value "$raconf" "savestate_directory" "$states_folder" "retroarch"
set_setting_value "$raconf" "screenshot_directory" "$screenshots_folder" "retroarch"
set_setting_value "$raconf" "log_dir" "$logs_folder" "retroarch"
fi
fi
@ -258,6 +260,7 @@ prepare_emulator() {
set_setting_value "$multi_user_data_folder/$SteamAppUser/data/duckstation/settings.ini" "Card1Path" "$saves_folder/psx/duckstation/memcards/shared_card_1.mcd" "duckstation" "MemoryCards"
set_setting_value "$multi_user_data_folder/$SteamAppUser/data/duckstation/settings.ini" "Card2Path" "$saves_folder/psx/duckstation/memcards/shared_card_2.mcd" "duckstation" "MemoryCards"
set_setting_value "$multi_user_data_folder/$SteamAppUser/data/duckstation/settings.ini" "Directory" "$saves_folder/psx/duckstation/memcards" "duckstation" "MemoryCards"
set_setting_value "$multi_user_data_folder/$SteamAppUser/data/duckstation/settings.ini" "RecursivePaths" "$roms_folder/psx" "duckstation" "GameList"
dir_prep "$multi_user_data_folder/$SteamAppUser/config/duckstation" "/var/config/duckstation"
else # Single-user actions
rm -rf /var/config/duckstation
@ -267,6 +270,7 @@ prepare_emulator() {
set_setting_value "$duckstationconf" "Card1Path" "$saves_folder/psx/duckstation/memcards/shared_card_1.mcd" "duckstation" "MemoryCards"
set_setting_value "$duckstationconf" "Card2Path" "$saves_folder/psx/duckstation/memcards/shared_card_2.mcd" "duckstation" "MemoryCards"
set_setting_value "$duckstationconf" "Directory" "$saves_folder/psx/duckstation/memcards" "duckstation" "MemoryCards"
set_setting_value "$duckstationconf" "RecursivePaths" "$roms_folder/psx" "duckstation" "GameList"
fi
dir_prep "$saves_folder/psx/duckstation/memcards" "/var/config/duckstation/memcards" # TODO: This shouldn't be needed anymore, verify
dir_prep "$states_folder/psx/duckstation" "/var/config/duckstation/savestates" # This is hard-coded in Duckstation, always needed
@ -276,6 +280,7 @@ prepare_emulator() {
set_setting_value "$duckstationconf" "Card1Path" "$saves_folder/psx/duckstation/memcards/shared_card_1.mcd" "duckstation" "MemoryCards"
set_setting_value "$duckstationconf" "Card2Path" "$saves_folder/psx/duckstation/memcards/shared_card_2.mcd" "duckstation" "MemoryCards"
set_setting_value "$duckstationconf" "Directory" "$saves_folder/psx/duckstation/memcards" "duckstation" "MemoryCards"
set_setting_value "$duckstationconf" "RecursivePaths" "$roms_folder/psx" "duckstation" "GameList"
dir_prep "$states_folder/psx/duckstation" "/var/config/duckstation/savestates" # This is hard-coded in Duckstation, always needed
fi
fi

View file

@ -24,16 +24,18 @@ change_preset_dialog() {
elif [[ "$system_value" == "false" ]]; then
current_disabled_systems=("${current_disabled_systems[@]}" "$system_name")
fi
current_preset_settings=("${current_preset_settings[@]}" "$system_value" "$system_name")
current_preset_settings=("${current_preset_settings[@]}" "$system_value" "$(make_name_pretty $system_name)" "$system_name")
done < <(printf '%s\n' "$section_results")
choice=$(zenity \
--list --width=1200 --height=720 \
--checklist \
--separator="," \
--hide-column=3 --print-column=3 \
--text="Enable $pretty_preset_name:" \
--column "Enabled" \
--column "Emulator" \
--column "internal_system_name" \
"${current_preset_settings[@]}")
local rc=$?
@ -101,9 +103,8 @@ build_preset_config(){
local system_being_changed="$1"
shift
local presets_being_changed="$*"
for preset in $presets_being_changed
for current_preset in $presets_being_changed
do
current_preset="$preset"
local preset_section=$(sed -n '/\['"$current_preset"'\]/, /\[/{ /\['"$current_preset"'\]/! { /\[/! p } }' $rd_conf | sed '/^$/d')
while IFS= read -r system_line
do

@ -1 +1 @@
Subproject commit 78786102fc04cf104ef9bf2f0ebcacbdda357ae0
Subproject commit 0b1cfb79e591e10488a3262d6b38db843c39a409

@ -1 +1 @@
Subproject commit 50314360ded6fa3b9f0b602513b1164b7a6636ed
Subproject commit a2441b964afefd8cd1cebcdf562c7878670daf42

View file

@ -137,10 +137,6 @@ configurator_welcome_dialog() {
;;
"" )
if [[ $(check_desktop_mode) == "true" && "$launched_from_cli" == "true" ]]; then
launched_from_cli="false"
launch_rd_after_exit=$(configurator_generic_question_dialog "RetroDECK Configurator" "Would you like to launch RetroDECK after closing the Configurator?")
fi
exit 1
;;
@ -183,6 +179,7 @@ configurator_global_presets_and_settings_dialog() {
"Enable/Disable Borders" "Enable or disable borders in supported systems" \
"Enable/Disable Widescreen" "Enable or disable widescreen in supported systems" \
"RetroAchievements Login" "Log into the RetroAchievements service in supported systems" \
"RetroAchievements Logout" "Disable RetroAchievements service in supported systems" \
"RetroAchievements Hardcore Mode" "Enable RetroAchievements hardcore mode (no cheats, rewind, save states etc.) in supported emulators" \
"Nintendo Button Layout" "Enable or disable Nintendo button layout (swapped A/B and X/Y) in supported systems" )
@ -210,6 +207,11 @@ configurator_global_presets_and_settings_dialog() {
configurator_global_presets_and_settings_dialog
;;
"RetroAchievements Logout" ) # This is a workaround to allow disabling cheevos without having to enter login credentials
change_preset_dialog "cheevos"
configurator_global_presets_and_settings_dialog
;;
"RetroAchievements Hardcore Mode" )
change_preset_dialog "cheevos_hardcore"
configurator_global_presets_and_settings_dialog
@ -1079,7 +1081,8 @@ configurator_developer_dialog() {
"Change Multi-user mode" "Enable or disable multi-user support" \
"Change Update Channel" "Change between normal and cooker builds" \
"Change Update Check Setting" "Enable or disable online checks for new versions of RetroDECK" \
"Browse the Wiki" "Browse the RetroDECK wiki online" )
"Browse the Wiki" "Browse the RetroDECK wiki online" \
"USB Import" "Prepare a USB device for ROMs or import an existing collection" )
case $choice in
@ -1099,6 +1102,10 @@ configurator_developer_dialog() {
xdg-open "https://github.com/XargonWan/RetroDECK/wiki"
;;
"USB Import" )
configurator_usb_import_dialog
;;
"" ) # No selection made or Back button clicked
configurator_welcome_dialog
;;
@ -1189,11 +1196,102 @@ configurator_online_update_setting_dialog() {
fi
}
configurator_usb_import_dialog() {
choice=$(zenity --list --title="RetroDECK Configurator Utility - Developer Options" --cancel-label="Back" \
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" --width=1200 --height=720 \
--column="Choice" --column="Description" \
"Prepare USB device" "Create ROM folders on a selected USB device" \
"Import from USB" "Import collection from a previously prepared device" )
case $choice in
"Prepare USB device" )
external_devices=()
while read -r size device_path; do
device_name=$(basename "$device_path")
external_devices=("${external_devices[@]}" "$device_name" "$size" "$device_path")
done < <(df --output=size,target | grep media | grep -v $default_sd | awk '{$1=$1;print}')
if [[ "${#external_devices[@]}" -gt 0 ]]; then
choice=$(zenity --list --title="RetroDECK Configurator Utility - USB Migration Tool" --cancel-label="Back" \
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" --width=1200 --height=720 \
--hide-column=3 --print-column=3 \
--column "Device Name" \
--column "Device Size" \
--column "path" \
"${external_devices[@]}")
if [[ ! -z "$choice" ]]; then
emulationstation --home "$choice" --create-system-dirs
rm -rf "$choice/.emulationstation" # Cleanup unnecessary folder
fi
else
configurator_generic_dialog "RetroDeck Configurator - USB Import" "There were no USB devices found."
fi
configurator_usb_import_dialog
;;
"Import from USB" )
external_devices=()
while read -r size device_path; do
if [[ -d "$device_path/ROMs" ]]; then
device_name=$(basename "$device_path")
external_devices=("${external_devices[@]}" "$device_name" "$size" "$device_path")
fi
done < <(df --output=size,target | grep media | grep -v $default_sd | awk '{$1=$1;print}')
if [[ "${#external_devices[@]}" -gt 0 ]]; then
choice=$(zenity --list --title="RetroDECK Configurator Utility - USB Migration Tool" --cancel-label="Back" \
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" --width=1200 --height=720 \
--hide-column=3 --print-column=3 \
--column "Device Name" \
--column "Device Size" \
--column "path" \
"${external_devices[@]}")
if [[ ! -z "$choice" ]]; then
if [[ $(verify_space "$choice/ROMs" "$roms_folder") == "false" ]];
if [[ $(configurator_generic_question_dialog "RetroDECK Configurator Utility - USB Migration Tool" "You MAY not have enough free space to import this ROM library.\n\nThis utility only imports new additions from the USB device, so if there are a lot of the same ROMs in both locations you are likely going to be fine\nbut we are not able to verify how much data will be transferred before it happens.\n\nIf you are unsure, please verify your available free space before continuing.\n\nDo you want to continue now?") == "true" ]]; then
(
rsync -a --mkpath "$choice/ROMs/"* "$roms_folder"
) |
zenity --icon-name=net.retrodeck.retrodeck --progress --no-cancel --auto-close \
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
--title "RetroDECK Configurator Utility - USB Import In Progress"
configurator_generic_dialog "RetroDECK Configurator - USB Migration Tool" "The import process is complete!"
fi
else
(
rsync -a --mkpath "$choice/ROMs/"* "$roms_folder"
) |
zenity --icon-name=net.retrodeck.retrodeck --progress --no-cancel --auto-close \
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
--title "RetroDECK Configurator Utility - USB Import In Progress"
configurator_generic_dialog "RetroDECK Configurator - USB Migration Tool" "The import process is complete!"
fi
fi
else
configurator_generic_dialog "RetroDeck Configurator - USB Import" "There were no USB devices found with an importable folder."
fi
configurator_usb_import_dialog
;;
"" ) # No selection made or Back button clicked
configurator_developer_dialog
;;
esac
}
# Functions to run at exit, without keeping Configurator running in background
launch_retrodeck_after_configurator_close() {
if [[ $launch_rd_after_exit == "true" ]]; then
start_retrodeck
if [[ $(check_desktop_mode) == "true" && "$launched_from_cli" == "true" ]]; then
if [[ $(configurator_generic_question_dialog "RetroDECK Configurator" "Would you like to launch RetroDECK after closing the Configurator?") == "true" ]]; then
start_retrodeck
fi
fi
}