From c1ff38c7a0d2d578638324212677d2e855fb190f Mon Sep 17 00:00:00 2001 From: ellensp <530024+ellensp@users.noreply.github.com> Date: Mon, 23 May 2022 14:19:10 +1200 Subject: [PATCH] =?UTF-8?q?=F0=9F=9A=B8=20Firmware=20upload=20destination?= =?UTF-8?q?=20prompt=20(using=20Tk)=20(#24074)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../scripts/upload_prompt_extra_script.py | 52 +++++++++++++++++++ ini/stm32f1.ini | 7 +++ 2 files changed, 59 insertions(+) create mode 100755 buildroot/share/PlatformIO/scripts/upload_prompt_extra_script.py diff --git a/buildroot/share/PlatformIO/scripts/upload_prompt_extra_script.py b/buildroot/share/PlatformIO/scripts/upload_prompt_extra_script.py new file mode 100755 index 0000000000..87cc945089 --- /dev/null +++ b/buildroot/share/PlatformIO/scripts/upload_prompt_extra_script.py @@ -0,0 +1,52 @@ +# +# upload_prompt_extra_script.py +# set the output_port +# +from __future__ import print_function + +has_tkinter = False +try: + import sys + if sys.version_info[0] < 3: + import Tkinter as tk + import tkFileDialog as fileDialog + from Tkinter import Tk + else: + import tkinter as tk + from tkinter import Tk + from tkinter import filedialog as fileDialog + has_tkinter = True +except: + pass + +import pioutil +if has_tkinter and pioutil.is_pio_build(): + + Import("env") + + def print_error(e): + print('\nUnable to find destination disk (%s)\n' %( e ) ) + + def before_upload(source, target, env): + # + # Find a disk for upload + # + upload_disk = '' + + root = Tk() # pointing root to Tk() to use it as Tk() in program. + root.withdraw() # Hides small tkinter window. + + root.attributes('-topmost', True) # Opened windows will be active. above all windows despite of selection. + + upload_disk = fileDialog.askdirectory(title="Select the root of your SDCARD") # Returns opened path as str + if not upload_disk: + print_error('Canceled') + return + else: + env.Replace( + UPLOAD_FLAGS="-P$UPLOAD_PORT" + ) + env.Replace(UPLOAD_PORT=upload_disk) + print('\nUpload disk: ', upload_disk, '\n') + + env.AddPreAction("upload", before_upload) diff --git a/ini/stm32f1.ini b/ini/stm32f1.ini index 6bf6a1cb85..4b3714f6d4 100644 --- a/ini/stm32f1.ini +++ b/ini/stm32f1.ini @@ -148,6 +148,10 @@ upload_protocol = custom [env:STM32F103RE_creality] extends = STM32F103Rx_creality board = genericSTM32F103RE +extra_scripts = ${STM32F103Rx_creality.extra_scripts} + buildroot/share/PlatformIO/scripts/upload_prompt_extra_script.py +upload_protocol = mbed + [env:STM32F103RE_creality_xfer] extends = STM32F103Rx_creality_xfer @@ -164,6 +168,9 @@ board_upload.offset_address = 0x08010000 [env:STM32F103RC_creality] extends = STM32F103Rx_creality board = genericSTM32F103RC +extra_scripts = ${STM32F103Rx_creality.extra_scripts} + buildroot/share/PlatformIO/scripts/upload_prompt_extra_script.py +upload_protocol = mbed [env:STM32F103RC_creality_xfer] extends = STM32F103Rx_creality_xfer