Skip to content

Commit bf590d4

Browse files
authored
Merge pull request #16 from francisrath/master
Allow selection of single output and folder deletion
2 parents f984c70 + bdee554 commit bf590d4

File tree

1 file changed

+42
-21
lines changed

1 file changed

+42
-21
lines changed

plugins/gerber_to_order_action.py

Lines changed: 42 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -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

323327
class 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 += '\nat\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

Comments
 (0)