@@ -268,6 +268,7 @@ def createZip(
268268 drillExtensionRenameTo ,
269269 drillMinimalHeader ,
270270 sizeLabel ,
271+ keepGerbers ,
271272):
272273 board = pcbnew .GetBoard ()
273274 boardFileName = board .GetFileName ()
@@ -317,25 +318,40 @@ def createZip(
317318 removeFileIfExists (zipFilePathWildCard )
318319 shutil .make_archive (os .path .splitext (zipFilePath )[0 ], 'zip' , outputDirPath , gerberDirName )
319320
321+ if not keepGerbers :
322+ removeDirIfExists (gerberDirPathWildCard )
323+
320324 return zipFilePath
321325
322326
323327class Dialog (wx .Dialog ):
324328 def __init__ (self , parent ):
325- wx .Dialog .__init__ (self , parent , id = - 1 , title = pluginName )
326- panel = wx .Panel (self )
327- description = wx .StaticText (panel , label = 'Export gerber and zip files.' )
328- execbtn = wx .Button (panel , label = 'Export' )
329- clsbtn = wx .Button (panel , label = 'Close' )
330- clsbtn .Bind (wx .EVT_BUTTON , self .OnClose )
331- execbtn .Bind (wx .EVT_BUTTON , self .OnExec )
332- buttonSizer = wx .BoxSizer (wx .HORIZONTAL )
333- buttonSizer .Add (execbtn )
334- buttonSizer .Add (clsbtn )
335- layout = wx .BoxSizer (wx .VERTICAL )
336- layout .Add (description , flag = wx .EXPAND | wx .BOTTOM | wx .TOP | wx .LEFT , border = 5 )
337- layout .Add (buttonSizer , flag = wx .EXPAND | wx .LEFT , border = 5 )
338- panel .SetSizer (layout )
329+ super ().__init__ (parent , title = "Export Options" )
330+
331+ sizer = wx .BoxSizer (wx .VERTICAL )
332+
333+ vbox = wx .BoxSizer (wx .VERTICAL | wx .EXPAND )
334+ heading = wx .StaticText (self , label = "Select manufacturer to export for:" )
335+ vbox .Add (heading , flag = wx .ALL , border = 10 )
336+
337+ manufacturer_choices = ["All manufacturers" ] + [service ["name" ] for service in pcbServices ]
338+ self .manufacturer = wx .RadioBox (self , choices = manufacturer_choices , style = wx .RA_VERTICAL )
339+ vbox .Add (self .manufacturer , flag = wx .LEFT | wx .RIGHT | wx .EXPAND , border = 10 )
340+
341+ self .keepGerbers = wx .CheckBox (self , label = "Keep folder(s) with gerbers layers" )
342+ vbox .Add (self .keepGerbers , flag = wx .LEFT | wx .RIGHT | wx .EXPAND , border = 10 )
343+ sizer .Add (vbox )
344+
345+ hbox = wx .BoxSizer (wx .HORIZONTAL )
346+ export_btn = wx .Button (self , label = "Export" )
347+ cancel_btn = wx .Button (self , label = "Cancel" )
348+
349+ hbox .Add (export_btn , flag = wx .RIGHT , border = 5 )
350+ hbox .Add (cancel_btn )
351+ vbox .Add (hbox , flag = wx .ALIGN_CENTER | wx .ALL , border = 10 )
352+ self .SetSizerAndFit (sizer )
353+ export_btn .Bind (wx .EVT_BUTTON , self .OnExec )
354+ cancel_btn .Bind (wx .EVT_BUTTON , self .OnClose )
339355
340356 def OnClose (self ,e ):
341357 e .Skip ()
@@ -345,7 +361,14 @@ def OnExec(self,e):
345361 try :
346362 zipFiles = []
347363 sizeLabel = createSizeLabelOfBoard (pcbnew .GetBoard ())
348- for pcbService in pcbServices :
364+ keepGerbers = self .keepGerbers .GetValue ()
365+
366+ if self .manufacturer .GetSelection () == 0 :
367+ pcbServicesToProcess = pcbServices
368+ else :
369+ pcbServicesToProcess = [pcbServices [self .manufacturer .GetSelection ()- 1 ]]
370+
371+ for pcbService in pcbServicesToProcess :
349372 path = createZip (
350373 pcbServiceName = pcbService ['name' ],
351374 useAuxOrigin = pcbService ['useAuxOrigin' ],
@@ -356,16 +379,14 @@ def OnExec(self,e):
356379 layerRenameRules = pcbService ['layerRenameRules' ],
357380 drillExtensionRenameTo = pcbService ['drillExtensionRenameTo' ],
358381 sizeLabel = sizeLabel ,
382+ keepGerbers = keepGerbers
359383 )
360384 zipFiles .append (path )
361- message = ''
362385 if len (zipFiles ) > 0 :
363- message = 'Exported\n '
364- message += '\n ' .join (map (lambda path : os .path .basename (path ), zipFiles ))
365- message += '\n at\n ' + os .path .dirname (zipFiles [0 ])
386+ wx .LaunchDefaultApplication (os .path .dirname (zipFiles [0 ]))
366387 else :
367- message = 'Select some service to export.'
368- wx . MessageBox ( message , pluginName , wx . OK | wx . ICON_INFORMATION )
388+ wx . MessageBox ( 'Select some service to export.' , pluginName , wx . OK | wx . ICON_INFORMATION )
389+ self . Close ( )
369390 except Exception as e :
370391 wx .MessageBox ('Error: ' + str (e ) + '\n \n ' + traceback .format_exc (), pluginName , wx .OK | wx .ICON_INFORMATION )
371392 e .Skip ()
0 commit comments