From d497b62fb373932fb5c46aaf7357eb0e5a1ac8b4 Mon Sep 17 00:00:00 2001 From: Miguel Angel Ajo Date: Thu, 10 May 2012 22:49:07 +0200 Subject: [PATCH] Cosmetic fixes, before moving to wxGrid --- pcbnew/footprint_wizard.cpp | 30 +++++++++-- pcbnew/footprint_wizard_frame.cpp | 19 ++----- pcbnew/footprint_wizard_frame.h | 1 + pcbnew/scripting/board.i | 16 ++++++ pcbnew/scripting/examples/listPcbLibrary.py | 2 +- .../scripting/plugins/fpc_footprint_wizard.py | 50 +++++++++++-------- 6 files changed, 76 insertions(+), 42 deletions(-) mode change 100644 => 100755 pcbnew/scripting/examples/listPcbLibrary.py diff --git a/pcbnew/footprint_wizard.cpp b/pcbnew/footprint_wizard.cpp index 151f7fd363..485072124c 100644 --- a/pcbnew/footprint_wizard.cpp +++ b/pcbnew/footprint_wizard.cpp @@ -31,11 +31,13 @@ void FOOTPRINT_WIZARD_FRAME::Process_Special_Functions( wxCommandEvent& event ) switch( event.GetId() ) { case ID_FOOTPRINT_WIZARD_NEXT: - //SelectAndViewFootprint( NEXT_PART ); + m_PageList->SetSelection(m_PageList->GetSelection()+1,true); break; case ID_FOOTPRINT_WIZARD_PREVIOUS: - //SelectAndViewFootprint( PREVIOUS_PART ); + int page = m_PageList->GetSelection()-1; + if (page<0) page=0; + m_PageList->SetSelection(page,true); break; default: @@ -76,10 +78,30 @@ void FOOTPRINT_WIZARD_FRAME::DisplayWizardInfos() SetTitle( msg ); } +void FOOTPRINT_WIZARD_FRAME::ReloadFootprint() +{ + SetCurItem( NULL ); + // Delete the current footprint + GetBoard()->m_Modules.DeleteAll(); + MODULE *m = m_FootprintWizard->GetModule(); + if (m) + { + /* Here we should make a copy of the object before adding to board*/ + m->SetParent((EDA_ITEM*)GetBoard()); + GetBoard()->m_Modules.Append(m); + wxPoint p(0,0); + m->SetPosition(p); + } + else + { + printf ("m_FootprintWizard->GetModule() returns NULL\n"); + } + m_canvas->Refresh(); +} void FOOTPRINT_WIZARD_FRAME::SelectFootprintWizard() { - DIALOG_FOOTPRINT_WIZARD_LIST *selectWizard = + DIALOG_FOOTPRINT_WIZARD_LIST *selectWizard = new DIALOG_FOOTPRINT_WIZARD_LIST(this); selectWizard->ShowModal(); @@ -92,6 +114,8 @@ void FOOTPRINT_WIZARD_FRAME::SelectFootprintWizard() m_wizardDescription = m_FootprintWizard->GetDescription(); } + ReloadFootprint(); + Zoom_Automatique(false); DisplayWizardInfos(); ReCreatePageList(); ReCreateParameterList(); diff --git a/pcbnew/footprint_wizard_frame.cpp b/pcbnew/footprint_wizard_frame.cpp index 9c21caa2fa..ec3004c02a 100644 --- a/pcbnew/footprint_wizard_frame.cpp +++ b/pcbnew/footprint_wizard_frame.cpp @@ -396,24 +396,11 @@ void FOOTPRINT_WIZARD_FRAME::ClickOnParameterList( wxCommandEvent& event ) wxString name = m_ParameterList->GetString( ii ); - SetCurItem( NULL ); - // Delete the current footprint - GetBoard()->m_Modules.DeleteAll(); - MODULE *m = m_FootprintWizard->GetModule(); - if (m) - { - /* Here we should make a copy of the object before adding to board*/ - m->SetParent(GetBoard()); - GetBoard()->m_Modules.Append(m); - } - else - { - printf ("m_FootprintWizard->GetModule() returns NULL\n"); - } + + ReloadFootprint(); DisplayWizardInfos(); - Zoom_Automatique( false ); - m_canvas->Refresh(); + } diff --git a/pcbnew/footprint_wizard_frame.h b/pcbnew/footprint_wizard_frame.h index b4cead97d4..f544151d27 100644 --- a/pcbnew/footprint_wizard_frame.h +++ b/pcbnew/footprint_wizard_frame.h @@ -92,6 +92,7 @@ private: void ReCreatePageList(); void ReCreateParameterList(); void SelectFootprintWizard(); + void ReloadFootprint(); void Process_Special_Functions( wxCommandEvent& event ); diff --git a/pcbnew/scripting/board.i b/pcbnew/scripting/board.i index 55426db705..e5b51cdef3 100644 --- a/pcbnew/scripting/board.i +++ b/pcbnew/scripting/board.i @@ -94,3 +94,19 @@ return self.ShowShape(self.GetShape()) } } + +%extend BOARD_ITEM +{ + %pythoncode + { + def SetPos(self,p): + self.SetPosition(p) + self.SetPos0(p) + + def SetStartEnd(self,start,end): + self.SetStart(start) + self.SetStart0(start) + self.SetEnd(end) + self.SetEnd0(end) + } +} diff --git a/pcbnew/scripting/examples/listPcbLibrary.py b/pcbnew/scripting/examples/listPcbLibrary.py old mode 100644 new mode 100755 index 10b82bf981..c8a6325f82 --- a/pcbnew/scripting/examples/listPcbLibrary.py +++ b/pcbnew/scripting/examples/listPcbLibrary.py @@ -5,5 +5,5 @@ for name in lst: m = FootprintLoad("/usr/share/kicad/modules/sockets.mod",name) print name,"->",m.GetLibRef(), m.GetReference() for p in m.GetPads(): - print "\t",p.GetPadName(),p.GetPosition(), p.GetOffset() + print "\t",p.GetPadName(),p.GetPosition(),p.GetPos0(), p.GetOffset() \ No newline at end of file diff --git a/pcbnew/scripting/plugins/fpc_footprint_wizard.py b/pcbnew/scripting/plugins/fpc_footprint_wizard.py index 4abd3766fa..a7a9c88ad5 100644 --- a/pcbnew/scripting/plugins/fpc_footprint_wizard.py +++ b/pcbnew/scripting/plugins/fpc_footprint_wizard.py @@ -9,57 +9,61 @@ class FPCFootprintWizard(FootprintWizardPlugin): self.description = "FPC Footprint Wizard" self.parameters = { "Pads": - {"n":40,"pitch":0.5,"width":0.25,"height":1.6}, + {"n":40,"pitch":FromMM(0.5), + "width":FromMM(0.25),"height":FromMM(1.6)}, "Shield": - {"shield_to_pad":1.6,"from_top":1.3,"width":1.5,"height":2} + {"shield_to_pad":FromMM(1.6),"from_top":FromMM(1.3), + "width":FromMM(1.5),"height":FromMM(2)}, + } def smdRectPad(self,module,size,pos,name): pad = D_PAD(module) - # print "smdRectPad( size=",size,"pos=",pos,"name=",name,")" + # print "smdRectPad( size=",size,"pos=",pos,"name=",name,")" pad.SetSize(size) pad.SetShape(PAD_RECT) pad.SetAttribute(PAD_SMD) pad.SetLayerMask(PAD_SMD_DEFAULT_LAYERS) pad.SetPos0(pos) - pad.SetPosition(pos) + pad.SetPosition(pos) pad.SetPadName(name) return pad def BuildFootprint(self): - pads = self.parameters["Pads"]["n"] - pad_width = self.parameters["Pads"]["width"] - pad_height = self.parameters["Pads"]["height"] - pad_pitch = self.parameters["Pads"]["pitch"] - shl_width = self.parameters["Shield"]["width"] - shl_height = self.parameters["Shield"]["height"] - shl_to_pad = self.parameters["Shield"]["shield_to_pad"] - shl_from_top = self.parameters["Shield"]["from_top"] + p = self.parameters + pads = p["Pads"]["n"] + pad_width = p["Pads"]["width"] + pad_height = p["Pads"]["height"] + pad_pitch = p["Pads"]["pitch"] + shl_width = p["Shield"]["width"] + shl_height = p["Shield"]["height"] + shl_to_pad = p["Shield"]["shield_to_pad"] + shl_from_top = p["Shield"]["from_top"] - size_pad = wxSizeMM(pad_width,pad_height) - size_shld = wxSizeMM(shl_width,shl_height) + size_pad = wxSize(pad_width,pad_height) + size_shld = wxSize(shl_width,shl_height) - # create a new module, it's parent is our previously created pcb + # create a new module module = MODULE(None) module.SetReference("FPC"+str(pads)) # give it a reference name - module.m_Reference.SetPos0(wxPointMM(-1,-1)) - module.m_Reference.SetPosition(wxPointMM(-1,-1)) + module.m_Reference.SetPos0(wxPointMM(-1,-2)) + module.m_Reference.SetPosition(wxPointMM(-1,-2)) + # create a pad array and add it to the module - for n in range (0,pads): - pad = self.smdRectPad(module,size_pad,wxPointMM(pad_pitch*n,0),str(n+1)) + pad = self.smdRectPad(module,size_pad,wxPoint(pad_pitch*n,0),str(n+1)) module.Add(pad) pad_s0 = self.smdRectPad(module, size_shld, - wxPointMM(-shl_to_pad,shl_from_top), + wxPoint(-shl_to_pad,shl_from_top), "0") pad_s1 = self.smdRectPad(module, size_shld, - wxPointMM((pads-1)*pad_pitch+shl_to_pad,shl_from_top), + wxPoint((pads-1)*pad_pitch+shl_to_pad,shl_from_top), "0") module.Add(pad_s0) @@ -67,7 +71,9 @@ class FPCFootprintWizard(FootprintWizardPlugin): e = EDGE_MODULE(module) e.SetStart0(wxPointMM(-1,0)) + e.SetStart(wxPointMM(-1,0)) e.SetEnd0(wxPointMM(0,0)) + e.SetEnd(wxPointMM(0,0)) e.SetWidth(FromMM(0.2)) e.SetLayer(EDGE_LAYER) e.SetShape(S_SEGMENT) @@ -77,7 +83,7 @@ class FPCFootprintWizard(FootprintWizardPlugin): module.SetLibRef("FPC"+str(pads)) self.module = module - # print "Module built and set:", module + # print "Module built and set:", module # create our footprint wizard fpc_wizard = FPCFootprintWizard()