From 4720c89b416d6c5991d67fcbb8178898b4c35d52 Mon Sep 17 00:00:00 2001 From: easyw Date: Sun, 23 Feb 2020 15:29:08 +0100 Subject: [PATCH] tiding up the repos --- AnnularChecker/.gitignore | 51 ++ AnnularChecker/AnnularDlg.fbp | 58 ++ AnnularChecker/AnnularDlg.py | 3 + .../__pycache__/__init__.cpython-36.pyc | Bin 209 -> 0 bytes .../annular_checker.cpython-36.pyc | Bin 11995 -> 0 bytes .../annular_checker_html.cpython-36.pyc | Bin 10294 -> 0 bytes AnnularChecker/annular_checker.py | 17 +- FabricationPositions/.gitignore | 51 ++ FabricationPositions/PositionsDlg.fbp | 58 ++ FabricationPositions/PositionsDlg.py | 3 + .../__pycache__/__init__.cpython-36.pyc | Bin 238 -> 0 bytes .../fabrication_positions.cpython-36.pyc | Bin 12389 -> 0 bytes FabricationPositions/fabrication.png | Bin 0 -> 1054 bytes FabricationPositions/fabrication.svg | 100 +++ FabricationPositions/fabrication_positions.py | 128 +--- MoveToLayer/.gitignore | 51 ++ MoveToLayer/Move2LayerDlg.fbp | 663 ++++++++++++++++++ MoveToLayer/Move2LayerDlg.py | 8 +- MoveToLayer/add_polygon.png | Bin 0 -> 919 bytes MoveToLayer/add_polygon.svg | 109 +++ MoveToLayer/move_to_layer.py | 3 + PcbToDxf/.gitignore | 51 ++ Snap2Grid/.gitignore | 51 ++ Snap2Grid/Snap2GridDlg.fbp | 58 ++ Snap2Grid/Snap2GridDlg.py | 3 + Snap2Grid/snap2grid.py | 4 +- 26 files changed, 1327 insertions(+), 143 deletions(-) create mode 100644 AnnularChecker/.gitignore delete mode 100644 AnnularChecker/__pycache__/__init__.cpython-36.pyc delete mode 100644 AnnularChecker/__pycache__/annular_checker.cpython-36.pyc delete mode 100644 AnnularChecker/__pycache__/annular_checker_html.cpython-36.pyc create mode 100644 FabricationPositions/.gitignore delete mode 100644 FabricationPositions/__pycache__/__init__.cpython-36.pyc delete mode 100644 FabricationPositions/__pycache__/fabrication_positions.cpython-36.pyc create mode 100644 FabricationPositions/fabrication.png create mode 100644 FabricationPositions/fabrication.svg create mode 100644 MoveToLayer/.gitignore create mode 100644 MoveToLayer/Move2LayerDlg.fbp create mode 100644 MoveToLayer/add_polygon.png create mode 100644 MoveToLayer/add_polygon.svg create mode 100644 PcbToDxf/.gitignore create mode 100644 Snap2Grid/.gitignore diff --git a/AnnularChecker/.gitignore b/AnnularChecker/.gitignore new file mode 100644 index 0000000..06703cd --- /dev/null +++ b/AnnularChecker/.gitignore @@ -0,0 +1,51 @@ +# Windows image file caches +Thumbs.db +ehthumbs.db + +# Folder config file +Desktop.ini + +# Recycle Bin used on file shares +$RECYCLE.BIN/ + +# Windows Installer files, back +*.cab +*.msi +*.msm +*.msp +*.bak + +# Windows shortcuts +*.lnk + +# Python executable +*.pyc + +# ========================= +# Operating System Files +# ========================= + +# OSX +# ========================= + +.DS_Store +.AppleDouble +.LSOverride + +# Thumbnails +._* + +# Files that might appear in the root of a volume +.DocumentRevisions-V100 +.fseventsd +.Spotlight-V100 +.TemporaryItems +.Trashes +.VolumeIcon.icns + +# Directories potentially created on remote AFP share +.AppleDB +.AppleDesktop +Network Trash Folder +Temporary Items +.apdisk diff --git a/AnnularChecker/AnnularDlg.fbp b/AnnularChecker/AnnularDlg.fbp index 7d576be..0b33042 100644 --- a/AnnularChecker/AnnularDlg.fbp +++ b/AnnularChecker/AnnularDlg.fbp @@ -58,6 +58,64 @@ bSizer3 wxVERTICAL none + + 5 + wxALIGN_CENTER_HORIZONTAL|wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + + 1 + m_bitmapAR + 1 + + + protected + 1 + + Resizable + 1 + + ; ; forward_declare + 0 + + + + + + 5 wxALL|wxEXPAND diff --git a/AnnularChecker/AnnularDlg.py b/AnnularChecker/AnnularDlg.py index e147ed3..98a071c 100644 --- a/AnnularChecker/AnnularDlg.py +++ b/AnnularChecker/AnnularDlg.py @@ -23,6 +23,9 @@ class AnnularDlg ( wx.Dialog ): bSizer3 = wx.BoxSizer( wx.VERTICAL ) + self.m_bitmapAR = wx.StaticBitmap( self, wx.ID_ANY, wx.NullBitmap, wx.DefaultPosition, wx.DefaultSize, 0 ) + bSizer3.Add( self.m_bitmapAR, 0, wx.ALIGN_CENTER_HORIZONTAL|wx.ALL, 5 ) + self.m_LabelTitle = wx.StaticText( self, wx.ID_ANY, u"Check annular ring", wx.DefaultPosition, wx.DefaultSize, 0 ) self.m_LabelTitle.Wrap( -1 ) diff --git a/AnnularChecker/__pycache__/__init__.cpython-36.pyc b/AnnularChecker/__pycache__/__init__.cpython-36.pyc deleted file mode 100644 index b16f157ff1b62e9521e6ce40031722dff70cec48..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 209 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 diff --git a/AnnularChecker/__pycache__/annular_checker_html.cpython-36.pyc b/AnnularChecker/__pycache__/annular_checker_html.cpython-36.pyc deleted file mode 100644 index 16311f17fdd8aaba43b06433f322216f5547d3bd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10294 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 aSMPv~5dF`jpGhYuAr5g+^~ng}-}_&9qKG&E diff --git a/AnnularChecker/annular_checker.py b/AnnularChecker/annular_checker.py index eaf8bf6..25254e6 100644 --- a/AnnularChecker/annular_checker.py +++ b/AnnularChecker/annular_checker.py @@ -126,6 +126,8 @@ class Annular_Dlg(AnnularDlg.AnnularDlg): #c1.Bind(wx.EVT_CHECKBOX, self.OntextMetric, c1) #self.m_checkBoxPHD.Bind(wx.EVT_CHECKBOX, self.OnClickCheck, self.m_checkBoxPHD) self.m_checkBoxPHD.Bind(wx.EVT_CHECKBOX, self.OnClickCheck) + self.m_bitmapAR.SetBitmap(wx.Bitmap(os.path.join(os.path.dirname(__file__), "./annular.png"))) + #self.Bind(wx.EVT_CHECKBOX, self.OnClickCheck) #self.m_buttonDelete.Bind(wx.EVT_BUTTON, self.onDeleteClick) #self.m_buttonReconnect.Bind(wx.EVT_BUTTON, self.onConnectClick) @@ -452,21 +454,6 @@ else: annular_check().register() -# "b64_data" is a variable containing your base64 encoded jpeg -annular_ico_b64_data =\ -""" -iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAIQQAACEEB+v+u9gAAABl0RVh0U29mdHdhcmUAd3d -3Lmlua3NjYXBlLm9yZ5vuPBoAAAJ5SURBVDiNdZRNSFRRFMd/976ZJjeBn2PUoiLaiMFkFkHIQ0NBdBUlJuIqiixmIYjQRgiJYKAMXRRSi6TCD5gaWiSFsy -gixOyDpDAog8wn9SISapz33m0x82bmzcOzO/97/r973nn3XqGUojjCybIm4BhQD9Rl5XlgDnhi6ObTYo8oBIWTZeXAMNDlalW/FJYmMLd5fONA1NBN0wcKJ -8sagftAZWRJcWHS5vCiouJ3pnClUvC8VnDtpOTTDgGwCpwydHM2Bwony8LAe6koH7hjc37aQXN8XwzAv5DgUo9krF0C/ABqDN1ck9n1G0D54C2H6OTmEICt -KcXQTZvTCQegAhgFEFWzpW1A4uAHRaLfQhbPXgD+/8HfkKBhNMDXMACtEmgC6L/reCBWKGAzMmLxbQWWl2Fw0FJavqIkpYhO2m7aHADqNQcOLXq3DcSuKnp -6Ajmhry8g1tfTxGJBVzryLuepl0Bk16qiJJUHKU0qOjryEDe6u4OF6e7vitCGAohIAFk0XCWEQkp8oWmeVAAiu78EFj5vF6S2iFyBtGxJPJ72gSYmPNpyOH -McgAUJzFkazO/zetLRc4J43MayIJWCsTHLuTzkaellTa7rOVE1W9oOPDz6VjF90fI14QQ1RzhKCNsRhfpGEBqvB1jaKQDapKGbCeDBs/2C8Rb/XGTalsUQg -Fin5kKmDN185DrPAD8HzmrcbpUony0flgZXujSGT+SuSC94L20LcA8obXiduSp1H8kdiz8l8KJWEOvUeLNXuJAuQzdnPKAsrBoYAY4DaA7sWck8I1+qKex0 -Cug1dHPNFcQmD1sL0AwcACJZeQF4BcwYuvm42PMfVgD11Y9MUIEAAAAASUVORK5CYII= -""" - - # execfile("annular.py") # annular.py Testing PCB for Annular Ring >= 0.15 # AR violation of 0.1 at XY 172.974,110.744 diff --git a/FabricationPositions/.gitignore b/FabricationPositions/.gitignore new file mode 100644 index 0000000..06703cd --- /dev/null +++ b/FabricationPositions/.gitignore @@ -0,0 +1,51 @@ +# Windows image file caches +Thumbs.db +ehthumbs.db + +# Folder config file +Desktop.ini + +# Recycle Bin used on file shares +$RECYCLE.BIN/ + +# Windows Installer files, back +*.cab +*.msi +*.msm +*.msp +*.bak + +# Windows shortcuts +*.lnk + +# Python executable +*.pyc + +# ========================= +# Operating System Files +# ========================= + +# OSX +# ========================= + +.DS_Store +.AppleDouble +.LSOverride + +# Thumbnails +._* + +# Files that might appear in the root of a volume +.DocumentRevisions-V100 +.fseventsd +.Spotlight-V100 +.TemporaryItems +.Trashes +.VolumeIcon.icns + +# Directories potentially created on remote AFP share +.AppleDB +.AppleDesktop +Network Trash Folder +Temporary Items +.apdisk diff --git a/FabricationPositions/PositionsDlg.fbp b/FabricationPositions/PositionsDlg.fbp index ebc96d7..6eeb1cf 100644 --- a/FabricationPositions/PositionsDlg.fbp +++ b/FabricationPositions/PositionsDlg.fbp @@ -119,6 +119,64 @@ -1 + + 5 + wxALIGN_CENTER_HORIZONTAL|wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + + 1 + m_bitmapFab + 1 + + + protected + 1 + + Resizable + 1 + + ; ; forward_declare + 0 + + + + + + 5 wxEXPAND | wxALL diff --git a/FabricationPositions/PositionsDlg.py b/FabricationPositions/PositionsDlg.py index ea0ca4a..36cd0c3 100644 --- a/FabricationPositions/PositionsDlg.py +++ b/FabricationPositions/PositionsDlg.py @@ -28,6 +28,9 @@ class PositionsDlg ( wx.Dialog ): bSizer3.Add( self.m_comment, 0, wx.ALL|wx.EXPAND, 5 ) + self.m_bitmapFab = wx.StaticBitmap( self, wx.ID_ANY, wx.NullBitmap, wx.DefaultPosition, wx.DefaultSize, 0 ) + bSizer3.Add( self.m_bitmapFab, 0, wx.ALIGN_CENTER_HORIZONTAL|wx.ALL, 5 ) + self.m_staticline2 = wx.StaticLine( self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_HORIZONTAL ) bSizer3.Add( self.m_staticline2, 0, wx.EXPAND |wx.ALL, 5 ) diff --git a/FabricationPositions/__pycache__/__init__.cpython-36.pyc b/FabricationPositions/__pycache__/__init__.cpython-36.pyc deleted file mode 100644 index d39deea7a07932796b881bbacc7c2d43be543bbc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 238 zcmXr!<>j*2xG&a&fq~&M5W@izkmUfx#Zo{bg&~D8has0Sijk2am9d#2i>aA`ks*aC zm_d{IB_mLQCgUyc^whl6qQsKa0RLb=P39=kw8W&M%;dz9%>2Cgg8br45Tm#VWbQ4F zqSW-v;*!*&l?+8JKmjoE%SS&WKQ~oBH?dS-FB_;cCB7i1G(9t~SRc&OO-u$Ep<9xl spHr;whA=$WI0|-M{il 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 + + + + + image/svg+xml + + + + + + + + + + + + + + + + + diff --git a/FabricationPositions/fabrication_positions.py b/FabricationPositions/fabrication_positions.py index 64205d8..cc901f4 100644 --- a/FabricationPositions/fabrication_positions.py +++ b/FabricationPositions/fabrication_positions.py @@ -62,21 +62,6 @@ def generate_POS(dir): out_filename_top_VIRTUAL=path+os.sep+dir+name+"_POS_top_Virtual.txt" out_filename_bot_VIRTUAL=path+os.sep+dir+name+"_POS_bot_Virtual.txt" out_filename_ALL=path+os.sep+dir+name+"_POS_All.txt" - #out_filename=path+os.sep+name+"_POS.txt" - #LogMsg1+="written to:" + lsep + out_filename_top_SMD + lsep - #LogMsg1+="written to:" + lsep + out_filename_bot_SMD + lsep - #LogMsg1+="written to:" + lsep + out_filename_top_THD + lsep - #LogMsg1+="written to:" + lsep + out_filename_bot_THD + lsep - #LogMsg1+="written to:" + lsep + out_filename_top_VIRTUAL + lsep - #LogMsg1+="written to:" + lsep + out_filename_bot_VIRTUAL + lsep - #LogMsg1+="written to:" + lsep + out_filename_ALL + lsep - # print (LogMsg) - # - # print ("### Module positions - created on %s ###" % datetime.datetime.now().strftime("%Y-%m-%d %H:%M")) - # print ("### Printed by get_pos v1") - # print ("## Unit = mm, Angle = deg.") - # print ("## Side : All") - # print ("# Ref Val Package PosX PosY Rot Side Type") Header_1="### Module positions - created on " + datetime.datetime.now().strftime("%Y-%m-%d %H:%M")+lsep Header_1+="### Printed by pcb_positions plugin"+lsep @@ -306,6 +291,7 @@ class Positions_Dlg(PositionsDlg.PositionsDlg): PositionsDlg.PositionsDlg.__init__(self, parent) #self.GetSizer().Fit(self) self.SetMinSize(self.GetSize()) + self.m_bitmapFab.SetBitmap(wx.Bitmap(os.path.join(os.path.dirname(__file__), "./fabrication.png"))) # self.m_buttonDelete.Bind(wx.EVT_BUTTON, self.onDeleteClick) # self.m_buttonReconnect.Bind(wx.EVT_BUTTON, self.onConnectClick) # if wx.__version__ < '4.0': @@ -333,7 +319,7 @@ class generatePOS( pcbnew.ActionPlugin ): self.description should be a comprehensive description of the plugin """ - self.name = "Generate Fabrication POS output\nversion "+___version___ + self.name = "Fabrication Position output \nversion "+___version___ self.category = "Fabrication Output" self.description = "Generate POS output for SMD, THD, Virtual\nand Board Statistics" #self.SetIcon(PyEmbeddedImage(getPos_ico_b64_data).GetIcon()) @@ -359,74 +345,6 @@ class generatePOS( pcbnew.ActionPlugin ): else: None # Cancel -## -###class displayDialog(wx.Dialog): -### """ -### The default frame -### http://stackoverflow.com/questions/3566603/how-do-i-make-wx-textctrl-multi-line-text-update-smoothly -### """ -### -### #---------------------------------------------------------------------- -### #def __init__(self): -### # """Constructor""" -### # wx.Frame.__init__(self, None, title="Display Frame", style=wx.DEFAULT_FRAME_STYLE, wx.ICON_INFORMATION) -### # panel = wx.Panel(self) -### def __init__(self, parent): -### wx.Dialog.__init__(self, parent, id=-1, title="Generate POS output")# -### #, style=wx.DEFAULT_DIALOG_STYLE, wx.ICON_INFORMATION) -### #, style=wx.DEFAULT_DIALOG_STYLE, wx.ICON_INFORMATION) -### #, pos=DefaultPosition, size=DefaultSize, style = wx.DEFAULT_FRAME_STYLE & (~wx.MAXIMIZE_BOX), name="fname") -### #, wx.ICON_INFORMATION) #, title="Annular Check", style=wx.DEFAULT_FRAME_STYLE, wx.ICON_INFORMATION) -### # -### -### self.SetIcon(PyEmbeddedImage(getPos_ico_b64_data).GetIcon()) -### #wx.IconFromBitmap(wx.Bitmap("icon.ico", wx.BITMAP_TYPE_ANY))) -### self.panel = wx.Panel(self) -### self.title = wx.StaticText(self.panel, label="Generate POS debug:") -### #self.result = wx.StaticText(self.panel, label="") -### #self.result.SetForegroundColour('#FF0000') -### self.button = wx.Button(self.panel, label="Close") -### #self.lblname = wx.StaticText(self.panel, label="Your name:") -### #self.editname = wx.TextCtrl(self.panel, size=(140, -1)) -### self.editname = wx.TextCtrl(self.panel, size = (600, 500), style = wx.TE_MULTILINE|wx.TE_READONLY) -### -### -### # Set sizer for the frame, so we can change frame size to match widgets -### self.windowSizer = wx.BoxSizer() -### self.windowSizer.Add(self.panel, 1, wx.ALL | wx.EXPAND) -### -### # Set sizer for the panel content -### self.sizer = wx.GridBagSizer(5, 0) -### self.sizer.Add(self.title, (0, 0)) -### #self.sizer.Add(self.result, (1, 0)) -### #self.sizer.Add(self.lblname, (1, 0)) -### self.sizer.Add(self.editname, (1, 0)) -### self.sizer.Add(self.button, (2, 0), (1, 2), flag=wx.EXPAND) -### -### # Set simple sizer for a nice border -### self.border = wx.BoxSizer() -### self.border.Add(self.sizer, 1, wx.ALL | wx.EXPAND, 5) -### -### # Use the sizers -### self.panel.SetSizerAndFit(self.border) -### self.SetSizerAndFit(self.windowSizer) -### #self.result.SetLabel(msg) -### # Set event handlers -### #self.Show() -### self.button.Bind(wx.EVT_BUTTON, self.OnClose) -### self.Bind(wx.EVT_CLOSE,self.OnClose) -### -### def OnClose(self,e): -### #wx.LogMessage("c") -### e.Skip() -### #self.Close() -### self.Destroy() -### -### #def OnButton(self, e): -### # self.result.SetLabel(self.editname.GetValue()) -### def setMsg(self, t_msg): -### self.editname.SetValue(t_msg) -### def GenPos(dir): def f_mm(raw): @@ -465,47 +383,5 @@ def GenPos(dir): #generatePOS().register() -# "b64_data" is a variable containing your base64 encoded jpeg -getPos_ico_b64_data =\ -""" -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 -gg== -""" - - - # execfile("round_tracks.py") diff --git a/MoveToLayer/.gitignore b/MoveToLayer/.gitignore new file mode 100644 index 0000000..06703cd --- /dev/null +++ b/MoveToLayer/.gitignore @@ -0,0 +1,51 @@ +# Windows image file caches +Thumbs.db +ehthumbs.db + +# Folder config file +Desktop.ini + +# Recycle Bin used on file shares +$RECYCLE.BIN/ + +# Windows Installer files, back +*.cab +*.msi +*.msm +*.msp +*.bak + +# Windows shortcuts +*.lnk + +# Python executable +*.pyc + +# ========================= +# Operating System Files +# ========================= + +# OSX +# ========================= + +.DS_Store +.AppleDouble +.LSOverride + +# Thumbnails +._* + +# Files that might appear in the root of a volume +.DocumentRevisions-V100 +.fseventsd +.Spotlight-V100 +.TemporaryItems +.Trashes +.VolumeIcon.icns + +# Directories potentially created on remote AFP share +.AppleDB +.AppleDesktop +Network Trash Folder +Temporary Items +.apdisk diff --git a/MoveToLayer/Move2LayerDlg.fbp b/MoveToLayer/Move2LayerDlg.fbp new file mode 100644 index 0000000..dafcfc7 --- /dev/null +++ b/MoveToLayer/Move2LayerDlg.fbp @@ -0,0 +1,663 @@ + + + + + + Python + 1 + source_name + 0 + 0 + res + UTF-8 + connect + Move2LayerDlg + 1000 + none + + 0 + Move2LayerDlg + + . + + 1 + 1 + 1 + 1 + UI + 0 + 0 + + 0 + wxAUI_MGR_DEFAULT + + wxBOTH + + 1 + 1 + impl_virtual + + + + 0 + wxID_ANY + + + Move2LayerDlg + + 568,263 + wxCAPTION|wxCLOSE_BOX|wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER + + Move to Layer + + + + + + + bSizer3 + wxVERTICAL + none + + 5 + wxALL|wxEXPAND + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Selected Objects will be Moved to chosen Layer + 0 + + 0 + + + 0 + + 1 + m_comment + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + 5 + + 0 + + + bSizer31 + wxHORIZONTAL + none + + 5 + wxALL|wxEXPAND + 1 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Layer + 0 + + 0 + + + 0 + + 1 + m_staticTextLayer + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + 5 + wxALL|wxEXPAND + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + -1,-1 + 0 + -1,-1 + 1 + m_comboBoxLayer + 1 + + + protected + 1 + + Resizable + -1 + 1 + 250,-1 + + ; ; forward_declare + 0 + + + wxFILTER_NONE + wxDefaultValidator + + Combo! + + + + + + + 5 + wxALIGN_CENTER_VERTICAL|wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + + 1 + m_bitmapLayers + 1 + + + protected + 1 + + Resizable + 1 + + ; ; forward_declare + 0 + + + + + + + + 5 + wxALIGN_CENTER_VERTICAL|wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + + 1 + m_bitmapDwgs + 1 + + + protected + 1 + + Resizable + 1 + + ; ; forward_declare + 0 + + + + + + + + + + 5 + wxEXPAND | wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + + 1 + m_staticline1 + 1 + + + protected + 1 + + Resizable + 1 + + wxLI_HORIZONTAL + ; ; forward_declare + 0 + + + + + + + + 5 + wxALIGN_RIGHT|wxEXPAND + 0 + + + bSizer1 + wxHORIZONTAL + none + + 5 + wxALL|wxEXPAND|wxALIGN_CENTER_VERTICAL + 1 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + 0 + + + 0 + + 1 + m_staticText101 + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + + 1 + 0 + 0 + + 1 + + 1 + 0 + + Dock + 0 + Left + 1 + + 1 + + + 0 + 0 + wxID_OK + Apply + + 0 + + 0 + + + 0 + + 1 + m_buttonOK + 1 + + + protected + 1 + + + + Resizable + 1 + + + + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + + 1 + 0 + 1 + + 1 + + 0 + 0 + + Dock + 0 + Left + 1 + + 1 + + + 0 + 0 + wxID_CANCEL + Cancel + + 0 + + 0 + + + 0 + + 1 + m_buttonCancel + 1 + + + protected + 1 + + + + Resizable + 1 + + + + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + + + + + + 5 + wxEXPAND + 1 + + + bSizer4 + wxVERTICAL + none + + + + + + diff --git a/MoveToLayer/Move2LayerDlg.py b/MoveToLayer/Move2LayerDlg.py index 66ed329..ad184af 100644 --- a/MoveToLayer/Move2LayerDlg.py +++ b/MoveToLayer/Move2LayerDlg.py @@ -23,7 +23,7 @@ class Move2LayerDlg ( wx.Dialog ): bSizer3 = wx.BoxSizer( wx.VERTICAL ) - self.m_comment = wx.StaticText( self, wx.ID_ANY, u"Selected Objects will Move to chosen Layer", wx.DefaultPosition, wx.DefaultSize, 0 ) + self.m_comment = wx.StaticText( self, wx.ID_ANY, u"Selected Objects will be Moved to chosen Layer", wx.DefaultPosition, wx.DefaultSize, 0 ) self.m_comment.Wrap( -1 ) bSizer3.Add( self.m_comment, 0, wx.ALL|wx.EXPAND, 5 ) @@ -39,6 +39,12 @@ class Move2LayerDlg ( wx.Dialog ): self.m_comboBoxLayer = wx.ComboBox( self, wx.ID_ANY, u"Combo!", wx.DefaultPosition, wx.Size( 250,-1 ), m_comboBoxLayerChoices, 0 ) bSizer31.Add( self.m_comboBoxLayer, 0, wx.ALL|wx.EXPAND, 5 ) + self.m_bitmapLayers = wx.StaticBitmap( self, wx.ID_ANY, wx.NullBitmap, wx.DefaultPosition, wx.DefaultSize, 0 ) + bSizer31.Add( self.m_bitmapLayers, 0, wx.ALIGN_CENTER_VERTICAL|wx.ALL, 5 ) + + self.m_bitmapDwgs = wx.StaticBitmap( self, wx.ID_ANY, wx.NullBitmap, wx.DefaultPosition, wx.DefaultSize, 0 ) + bSizer31.Add( self.m_bitmapDwgs, 0, wx.ALIGN_CENTER_VERTICAL|wx.ALL, 5 ) + bSizer3.Add( bSizer31, 0, 0, 5 ) diff --git a/MoveToLayer/add_polygon.png b/MoveToLayer/add_polygon.png new file mode 100644 index 0000000000000000000000000000000000000000..a2384a5ab8767f6db0fc48f48b6ea32907e0b53a GIT binary patch literal 919 zcmV;I18Dq-P)$c6sux=0oUF!eivP>7Nw?68 zsW(%0BZ#bJp=pPu;GN!j;f3@{ib%_}bAP}KkqyTNDu~$FfEBT_URaA-Q#(3V(=<)e zHaV{stqe=s6ZA)@%ldBkXsNo-d-DG1c0Nt3WP$Ty-KM~z~Ald?N=9N0Fl~)W73c*LKuKw7V%?}GZitd;!@0f?xMxI8`%Rg-hex|f%i4<9UhZk~Q>DYs~XvJ@+ZmQ7fe)nmti%Kgdw z1e=1tXWUlJf2)%vr2`)*8FhDEyl~q0CN*u-(9p0a5NP?+Lbk006&Cza;M%3K#+S{pXfp#D*)p{Vs=NDuK?qTvK)4S+E#B+a5U? zD@z*>s-p-}lFw8vPz3jj;dUUK(L#@^pBWS86q9C#KHs3JMCuk&F0upR3ec;7-9Qzj zwt{A4v%2j{2ISg^x=qOJ1a<*_;7efDtU6hsHyZV58#~87epvmiNTKkCJxLMOk<-BJ zjmX>i;r9dg)&(Fk4%te;IZHPR+yMy#cfoZFcEmP&o1Mv+>(pyg_21a>g$yWw`XlwR z?){IJzuJhLNe5dlZQ`dNz6HntJwO)_fovD}`xh!|hk5@2UC*S!+6Tqmux-3h7tUtx tjVSC%YPxk6d^g|b<*?93lq0+MhL<>kH7cH+BAEaH002ovPDHLkV1k$Krsx0w literal 0 HcmV?d00001 diff --git a/MoveToLayer/add_polygon.svg b/MoveToLayer/add_polygon.svg new file mode 100644 index 0000000..9ab7fbc --- /dev/null +++ b/MoveToLayer/add_polygon.svg @@ -0,0 +1,109 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + diff --git a/MoveToLayer/move_to_layer.py b/MoveToLayer/move_to_layer.py index 8425071..86b0299 100644 --- a/MoveToLayer/move_to_layer.py +++ b/MoveToLayer/move_to_layer.py @@ -78,6 +78,9 @@ class Move2Layer_Dlg(Move2LayerDlg.Move2LayerDlg): Move2LayerDlg.Move2LayerDlg.__init__(self, parent) #self.GetSizer().Fit(self) self.SetMinSize(self.GetSize()) + + self.m_bitmapLayers.SetBitmap(wx.Bitmap(os.path.join(os.path.dirname(__file__), "./add_polygon.png"))) + self.m_bitmapDwgs.SetBitmap(wx.Bitmap(os.path.join(os.path.dirname(__file__), "./move2layer.png"))) # self.m_buttonDelete.Bind(wx.EVT_BUTTON, self.onDeleteClick) # self.m_buttonReconnect.Bind(wx.EVT_BUTTON, self.onConnectClick) # if wx.__version__ < '4.0': diff --git a/PcbToDxf/.gitignore b/PcbToDxf/.gitignore new file mode 100644 index 0000000..06703cd --- /dev/null +++ b/PcbToDxf/.gitignore @@ -0,0 +1,51 @@ +# Windows image file caches +Thumbs.db +ehthumbs.db + +# Folder config file +Desktop.ini + +# Recycle Bin used on file shares +$RECYCLE.BIN/ + +# Windows Installer files, back +*.cab +*.msi +*.msm +*.msp +*.bak + +# Windows shortcuts +*.lnk + +# Python executable +*.pyc + +# ========================= +# Operating System Files +# ========================= + +# OSX +# ========================= + +.DS_Store +.AppleDouble +.LSOverride + +# Thumbnails +._* + +# Files that might appear in the root of a volume +.DocumentRevisions-V100 +.fseventsd +.Spotlight-V100 +.TemporaryItems +.Trashes +.VolumeIcon.icns + +# Directories potentially created on remote AFP share +.AppleDB +.AppleDesktop +Network Trash Folder +Temporary Items +.apdisk diff --git a/Snap2Grid/.gitignore b/Snap2Grid/.gitignore new file mode 100644 index 0000000..06703cd --- /dev/null +++ b/Snap2Grid/.gitignore @@ -0,0 +1,51 @@ +# Windows image file caches +Thumbs.db +ehthumbs.db + +# Folder config file +Desktop.ini + +# Recycle Bin used on file shares +$RECYCLE.BIN/ + +# Windows Installer files, back +*.cab +*.msi +*.msm +*.msp +*.bak + +# Windows shortcuts +*.lnk + +# Python executable +*.pyc + +# ========================= +# Operating System Files +# ========================= + +# OSX +# ========================= + +.DS_Store +.AppleDouble +.LSOverride + +# Thumbnails +._* + +# Files that might appear in the root of a volume +.DocumentRevisions-V100 +.fseventsd +.Spotlight-V100 +.TemporaryItems +.Trashes +.VolumeIcon.icns + +# Directories potentially created on remote AFP share +.AppleDB +.AppleDesktop +Network Trash Folder +Temporary Items +.apdisk diff --git a/Snap2Grid/Snap2GridDlg.fbp b/Snap2Grid/Snap2GridDlg.fbp index 6becf11..723beb8 100644 --- a/Snap2Grid/Snap2GridDlg.fbp +++ b/Snap2Grid/Snap2GridDlg.fbp @@ -254,6 +254,64 @@ + + 5 + wxALIGN_CENTER_VERTICAL|wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + + 1 + m_bitmapS2G + 1 + + + protected + 1 + + Resizable + 1 + + ; ; forward_declare + 0 + + + + + + diff --git a/Snap2Grid/Snap2GridDlg.py b/Snap2Grid/Snap2GridDlg.py index 55c4f1d..a870395 100644 --- a/Snap2Grid/Snap2GridDlg.py +++ b/Snap2Grid/Snap2GridDlg.py @@ -40,6 +40,9 @@ class Snap2GridDlg ( wx.Dialog ): self.m_comboBoxGrid.SetSelection( 0 ) bSizer31.Add( self.m_comboBoxGrid, 0, wx.ALL|wx.EXPAND, 5 ) + self.m_bitmapS2G = wx.StaticBitmap( self, wx.ID_ANY, wx.NullBitmap, wx.DefaultPosition, wx.DefaultSize, 0 ) + bSizer31.Add( self.m_bitmapS2G, 0, wx.ALIGN_CENTER_VERTICAL|wx.ALL, 5 ) + bSizer3.Add( bSizer31, 0, 0, 5 ) diff --git a/Snap2Grid/snap2grid.py b/Snap2Grid/snap2grid.py index a8f98f4..2de96bd 100644 --- a/Snap2Grid/snap2grid.py +++ b/Snap2Grid/snap2grid.py @@ -12,7 +12,7 @@ #import pcbnew #pcbnew.GetWizardsBackTrace() -__version__ = '1.0.1' +__version__ = '1.0.2' import sys, os import pcbnew import datetime @@ -57,6 +57,8 @@ class Snap2Grid_Dlg(Snap2GridDlg.Snap2GridDlg): Snap2GridDlg.Snap2GridDlg.__init__(self, parent) #self.GetSizer().Fit(self) self.SetMinSize(self.GetSize()) + self.m_bitmapS2G.SetBitmap(wx.Bitmap(os.path.join(os.path.dirname(__file__), "./snap2grid.png"))) + #self.SetIcon(wx.IconFromBitmap(wx.Bitmap(os.path.join(os.path.dirname(__file__), "./snap2grid.png")))) #self.m_buttonDelete.Bind(wx.EVT_BUTTON, self.onDeleteClick) #self.m_buttonReconnect.Bind(wx.EVT_BUTTON, self.onConnectClick) #if wx.__version__ < '4.0':