89 lines
2.2 KiB
Python
89 lines
2.2 KiB
Python
#https://opensource.org/licenses/MIT
|
|
|
|
import os
|
|
import webbrowser
|
|
import shutil
|
|
import wx
|
|
import datetime
|
|
from threading import Thread
|
|
from .result_event import *
|
|
from .config import *
|
|
from .process import *
|
|
|
|
|
|
class PCBWayThread(Thread):
|
|
def __init__(self, wxObject):
|
|
Thread.__init__(self)
|
|
self.process = PCBWayProcess()
|
|
self.wxObject = wxObject
|
|
self.start()
|
|
|
|
def run(self):
|
|
|
|
try:
|
|
|
|
p_name = self.process.get_basedir()
|
|
|
|
self.report(5)
|
|
|
|
temp_dir = p_name + productionDir + datetime.datetime.now().strftime('%Y-%m-%d-%H-%M-%S')
|
|
|
|
self.report(15)
|
|
|
|
os.makedirs(temp_dir)
|
|
os.makedirs(temp_dir + "gerber")
|
|
|
|
self.report(25)
|
|
|
|
self.process.get_gerber_file(temp_dir + "gerber")
|
|
|
|
self.report(35)
|
|
|
|
self.process.get_netlist_file(temp_dir)
|
|
|
|
self.report(45)
|
|
|
|
self.process.get_components_file(temp_dir)
|
|
|
|
self.report(55)
|
|
|
|
temp_file = shutil.make_archive(self.process.get_basename() + "_gerber", 'zip', temp_dir + "gerber")
|
|
|
|
self.report(60)
|
|
|
|
shutil.move(temp_file, temp_dir)
|
|
shutil.rmtree(temp_dir + "gerber")
|
|
|
|
self.report(65)
|
|
|
|
temp_file = os.path.join(temp_dir, os.path.basename(temp_file))
|
|
|
|
self.report(75)
|
|
|
|
readsofar = 0
|
|
totalsize = os.path.getsize(temp_file)
|
|
with open(temp_file, 'rb') as file:
|
|
while True:
|
|
data = file.read(10)
|
|
if not data:
|
|
break
|
|
readsofar += len(data)
|
|
percent = readsofar * 1e2 / totalsize
|
|
self.report(75 + percent / 9)
|
|
|
|
webbrowser.open("file://%s" % (temp_dir))
|
|
|
|
except Exception as e:
|
|
wx.MessageBox(str(e), "Error", wx.OK | wx.ICON_ERROR)
|
|
self.report(-1)
|
|
return
|
|
|
|
self.report(-1)
|
|
|
|
def report(self, status):
|
|
wx.PostEvent(self.wxObject, ResultEvent(status))
|
|
|
|
|
|
|
|
|
|
|