From 0d966f05564593dd80aef2bc94910f67ed5a235b Mon Sep 17 00:00:00 2001 From: Lurenaud Date: Fri, 10 Feb 2023 13:31:09 +0100 Subject: [PATCH] support multiple files input from GUI --- scripts/export.py | 86 +++++++++++++++++++++++++++-------------------- 1 file changed, 49 insertions(+), 37 deletions(-) diff --git a/scripts/export.py b/scripts/export.py index 3cc9d3e..2756575 100644 --- a/scripts/export.py +++ b/scripts/export.py @@ -8,10 +8,9 @@ from rich.progress import track from rich import print import PySimpleGUI as sg -def run(cmdinput): - +def dirToFileList(folder): # folder input - input = next(os.walk(cmdinput)) + input = next(os.walk(folder)) files = input[2] path = input[0] @@ -24,6 +23,17 @@ def run(cmdinput): path = path.replace('/', '\\') # print("New path: ", path) + filesList = [] + for f in files: + f = f.replace('/', '\\') + filesList.append(str(path) + '\\' + str(f)) + + runFiles(filesList) + + +def runFiles(files): + currentPath = str(pathlib.Path().resolve()) + partFiles = [s for s in files if ".SLDPRT" in s] # get only parts files drwgFiles = [s for s in files if ".SLDDRW" in s] # get only drawings files @@ -37,53 +47,55 @@ def run(cmdinput): # Check if each part has drawings and print for p in partWithoutExention: if str(p) not in str(drwgFiles): - print(p, " doesn't have drawing file") + print(p, " doesn't have drawing file\n") - - - outputFolder = str(path) + "\\export\\" - # print("Out folder: ", outputFolder) - - # create export directory - if not os.path.exists(outputFolder): - os.makedirs(outputFolder) - # print("\nExport folder created\n") + for p in files: # create export directory + outputFolder = os.path.split(p)[0] + "\\export\\" + # print("Out folder: ", outputFolder) + if not os.path.exists(outputFolder): + os.makedirs(outputFolder) + # print("\nExport folder created\n") # part files for i in track(partWithoutExention, description="Exporting step files...", total=len(partWithoutExention)): - input = str(i) - commandstep = "PowerShell -NoProfile -ExecutionPolicy Bypass -File " + currentPath + '\export-step.ps1 "' + path + "\\" + input + '" "' + outputFolder + input + '"' + path, input = os.path.split(i) + i = i.replace('/', '\\') + path = path.replace('/', '\\') + outputFolder = path + "\\export\\" + + commandstep = "PowerShell -NoProfile -ExecutionPolicy Bypass -File " + currentPath + '\scripts\export-step.ps1 "' + i + '" "' + outputFolder + input + '"' # print(commandstep) subprocess.run(commandstep, capture_output=True) # drawings files for i in track(drwgWithoutExtension, description="Exporting PDF and DXF...", total = len(drwgWithoutExtension)): - input = str(i) - commandPdfDxf = "PowerShell -NoProfile -ExecutionPolicy Bypass -File " + currentPath + '\export-pdf-dxf.ps1 "' + path + "\\" + input + '" "' + outputFolder + input + '"' + path, input = os.path.split(i) + i = i.replace('/', '\\') + path = path.replace('/', '\\') + outputFolder = path + "\\export\\" + commandPdfDxf = "PowerShell -NoProfile -ExecutionPolicy Bypass -File " + currentPath + '\scripts\export-pdf-dxf.ps1 "' + i + '" "' + outputFolder + input + '"' # print(commandPdfDxf) subprocess.run(commandPdfDxf, capture_output=True) - -if len(sys.argv) > 1: - cmd = str(sys.argv[1] ) - run(cmd) -else: - fname = sg.Window('Files exporter', - [[sg.Text('Folder to export')], - [sg.In(), sg.FolderBrowse()], - [sg.Open(), sg.Cancel()]]).read(close=True)[1][0] - - if not fname: - sg.popup("Cancel", "No filename supplied") - raise SystemExit("Cancelling: no filename supplied") +if __name__ == '__main__': + if len(sys.argv) > 1: + cmd = str(sys.argv[1] ) + dirToFileList(cmd) else: - # sg.popup('The filename you chose was', fname) - print(fname) - cmd = str(fname) - run(cmd) + fname = sg.Window('Exporter', + [[sg.Text('Folder to export')], + [sg.In(), sg.FilesBrowse(button_text="Open files"), sg.FolderBrowse(button_text="Open folder")], + [sg.Open(), sg.Cancel()]]).read(close=True)[1][0] -# a = input() -# print(a) -print("Done") + if not fname: + sg.popup("Cancel", "No filename supplied") + raise SystemExit("Cancelling: no filename supplied") + else: + if os.path.isdir(fname): + dirToFileList(str(fname)) + else: + runFiles(str(fname).split(';')) + + print("Done")