From e9921a71fcbdfea72d732c9eeb0dfe090954e7d4 Mon Sep 17 00:00:00 2001 From: dickelbeck Date: Tue, 2 Oct 2007 16:00:55 +0000 Subject: [PATCH] resizeable borders option --- common/common.cpp | 2 +- pcbnew/files.cpp | 2 +- pcbnew/pcbpiste.cpp | 417 +++++++++++++++++++++++--------------------- 3 files changed, 221 insertions(+), 200 deletions(-) diff --git a/common/common.cpp b/common/common.cpp index 846744dc10..23cd540ea5 100644 --- a/common/common.cpp +++ b/common/common.cpp @@ -319,7 +319,7 @@ END_EVENT_TABLE() /***************************************************************************/ WinEDA_TextFrame::WinEDA_TextFrame( wxWindow* parent, const wxString& title ) : wxDialog( parent, -1, title, wxPoint( -1, -1 ), wxSize( 250, 350 ), - wxDEFAULT_DIALOG_STYLE | wxFRAME_FLOAT_ON_PARENT ) + wxDEFAULT_DIALOG_STYLE | wxFRAME_FLOAT_ON_PARENT | MAYBE_RESIZE_BORDER ) /***************************************************************************/ { wxSize size; diff --git a/pcbnew/files.cpp b/pcbnew/files.cpp index 71236c0a02..be5c056108 100644 --- a/pcbnew/files.cpp +++ b/pcbnew/files.cpp @@ -235,7 +235,7 @@ int WinEDA_PcbFrame::LoadOnePcbFile( const wxString& FullFileName, wxDC* DC, boo g_SaveTime = time( NULL ); -#if 1 && defined(DEBUG) +#if 0 && defined(DEBUG) // note this seems to freeze up pcbnew when run under the kicad project // manager. runs fine from command prompt. // output the board object tree to stdout: diff --git a/pcbnew/pcbpiste.cpp b/pcbnew/pcbpiste.cpp index af995e980e..adbcb28e92 100644 --- a/pcbnew/pcbpiste.cpp +++ b/pcbnew/pcbpiste.cpp @@ -1,9 +1,9 @@ - /******************************************************/ - /* Fonctions diverses (swap..) relatives au pistes */ - /* et fonctions de test */ - /******************************************************/ +/******************************************************/ +/* Fonctions diverses (swap..) relatives au pistes */ +/* et fonctions de test */ +/******************************************************/ - /* Fichier PCBPISTE.CPP */ +/* Fichier PCBPISTE.CPP */ #include "fctsys.h" #include "gr_basic.h" @@ -17,11 +17,11 @@ static int New_Layer[32]; enum swap_layer_id { - ID_SWAP_LAYER_EXECUTE = 1800, - ID_SWAP_LAYER_CANCEL, - ID_SWAP_LAYER_BUTTON_SELECT, - ID_SWAP_LAYER_DESELECT, - ID_SWAP_LAYER_SELECT + ID_SWAP_LAYER_EXECUTE = 1800, + ID_SWAP_LAYER_CANCEL, + ID_SWAP_LAYER_BUTTON_SELECT, + ID_SWAP_LAYER_DESELECT, + ID_SWAP_LAYER_SELECT }; @@ -29,256 +29,277 @@ enum swap_layer_id { /* classe pour la frame de selection de layers */ /***********************************************/ -class WinEDA_SwapLayerFrame: public wxDialog +class WinEDA_SwapLayerFrame : public wxDialog { private: - WinEDA_BasePcbFrame *m_Parent; - wxRadioBox * m_LayerList; + WinEDA_BasePcbFrame* m_Parent; + wxRadioBox* m_LayerList; public: - // Constructor and destructor - WinEDA_SwapLayerFrame(WinEDA_BasePcbFrame *parent); - ~WinEDA_SwapLayerFrame() {}; + // Constructor and destructor + WinEDA_SwapLayerFrame( WinEDA_BasePcbFrame * parent ); + ~WinEDA_SwapLayerFrame() { }; private: - void Sel_Layer(wxCommandEvent& event); - void Cancel(wxCommandEvent& event); - void Execute(wxCommandEvent& event); - DECLARE_EVENT_TABLE() + void Sel_Layer( wxCommandEvent& event ); + void Cancel( wxCommandEvent& event ); + void Execute( wxCommandEvent& event ); + DECLARE_EVENT_TABLE() }; /* Table des evenements pour WinEDA_SwapLayerFrame */ -BEGIN_EVENT_TABLE(WinEDA_SwapLayerFrame, wxDialog) - EVT_BUTTON(ID_SWAP_LAYER_EXECUTE, WinEDA_SwapLayerFrame::Execute) - EVT_BUTTON(ID_SWAP_LAYER_CANCEL, WinEDA_SwapLayerFrame::Cancel) - EVT_BUTTON(ID_SWAP_LAYER_DESELECT, WinEDA_SwapLayerFrame::Sel_Layer) - EVT_BUTTON(ID_SWAP_LAYER_BUTTON_SELECT, WinEDA_SwapLayerFrame::Sel_Layer) - EVT_RADIOBOX(ID_SWAP_LAYER_SELECT, WinEDA_SwapLayerFrame::Sel_Layer) +BEGIN_EVENT_TABLE( WinEDA_SwapLayerFrame, wxDialog ) +EVT_BUTTON( ID_SWAP_LAYER_EXECUTE, WinEDA_SwapLayerFrame::Execute ) +EVT_BUTTON( ID_SWAP_LAYER_CANCEL, WinEDA_SwapLayerFrame::Cancel ) +EVT_BUTTON( ID_SWAP_LAYER_DESELECT, WinEDA_SwapLayerFrame::Sel_Layer ) +EVT_BUTTON( ID_SWAP_LAYER_BUTTON_SELECT, WinEDA_SwapLayerFrame::Sel_Layer ) +EVT_RADIOBOX( ID_SWAP_LAYER_SELECT, WinEDA_SwapLayerFrame::Sel_Layer ) END_EVENT_TABLE() -WinEDA_SwapLayerFrame::WinEDA_SwapLayerFrame(WinEDA_BasePcbFrame *parent): - wxDialog(parent, -1, _("Swap Layers:"),wxPoint(-1,-1), - wxSize(470, 450), DIALOG_STYLE ) +WinEDA_SwapLayerFrame::WinEDA_SwapLayerFrame( WinEDA_BasePcbFrame* parent ) : + wxDialog( parent, -1, _( "Swap Layers:" ), wxPoint( -1, -1 ), + wxSize( 470, 450 ), DIALOG_STYLE ) { #define START_Y 15 -wxButton * Button; -int ii; -wxPoint pos; -wxString g_Layer_Name_Pair[32]; -wxSize winsize; - - m_Parent = parent; - SetFont(*g_DialogFont); + wxButton* Button; + int ii; + wxPoint pos; + wxString g_Layer_Name_Pair[32]; + wxSize winsize; - for ( ii = 0; ii < NB_LAYERS; ii++ ) - { - g_Layer_Name_Pair[ii] = ReturnPcbLayerName(ii) + wxT(" -> ") + _("No Change"); - } - pos.x = 5; pos.y = START_Y; - m_LayerList = new wxRadioBox(this, ID_SWAP_LAYER_SELECT, _("Layers"), - pos, wxSize(-1,-1), 29, g_Layer_Name_Pair, 16, wxRA_SPECIFY_ROWS); - - winsize.y = m_LayerList->GetRect().GetBottom(); + m_Parent = parent; + SetFont( *g_DialogFont ); - pos.x = m_LayerList->GetRect().GetRight() + 12; - Button = new wxButton(this,ID_SWAP_LAYER_CANCEL, - _("Cancel"), pos); - Button->SetForegroundColour(*wxRED); - winsize.x = MAX(winsize.x,Button->GetRect().GetRight()); + for( ii = 0; ii < NB_LAYERS; ii++ ) + { + g_Layer_Name_Pair[ii] = ReturnPcbLayerName( ii ) + wxT( " -> " ) + _( "No Change" ); + } - pos.y += Button->GetSize().y + 5; - Button = new wxButton(this,ID_SWAP_LAYER_EXECUTE, - _("OK"), pos); - Button->SetForegroundColour(*wxBLUE); - winsize.x = MAX(winsize.x,Button->GetRect().GetRight()); + pos.x = 5; pos.y = START_Y; + m_LayerList = new wxRadioBox( this, ID_SWAP_LAYER_SELECT, _( "Layers" ), + pos, wxSize( -1, + -1 ), 29, g_Layer_Name_Pair, 16, wxRA_SPECIFY_ROWS ); - pos.y += Button->GetSize().y + 15; - Button = new wxButton(this,ID_SWAP_LAYER_DESELECT, - _("Deselect"), pos); - Button->SetForegroundColour(wxColour(0,100,0)); - winsize.x = MAX(winsize.x,Button->GetRect().GetRight()); + winsize.y = m_LayerList->GetRect().GetBottom(); - pos.y += Button->GetSize().y + 5; - Button = new wxButton(this,ID_SWAP_LAYER_BUTTON_SELECT, - _("Select"), pos); - Button->SetForegroundColour(wxColour(0,100,100)); - winsize.x = MAX(winsize.x,Button->GetRect().GetRight()); - - winsize.x += 10; winsize.y += 10; - SetClientSize(winsize); + pos.x = m_LayerList->GetRect().GetRight() + 12; + Button = new wxButton( this, ID_SWAP_LAYER_CANCEL, + _( "Cancel" ), pos ); + Button->SetForegroundColour( *wxRED ); + winsize.x = MAX( winsize.x, Button->GetRect().GetRight() ); + + pos.y += Button->GetSize().y + 5; + Button = new wxButton( this, ID_SWAP_LAYER_EXECUTE, + _( "OK" ), pos ); + + Button->SetForegroundColour( *wxBLUE ); + winsize.x = MAX( winsize.x, Button->GetRect().GetRight() ); + + pos.y += Button->GetSize().y + 15; + Button = new wxButton( this, ID_SWAP_LAYER_DESELECT, + _( "Deselect" ), pos ); + + Button->SetForegroundColour( wxColour( 0, 100, 0 ) ); + winsize.x = MAX( winsize.x, Button->GetRect().GetRight() ); + + pos.y += Button->GetSize().y + 5; + Button = new wxButton( this, ID_SWAP_LAYER_BUTTON_SELECT, + _( "Select" ), pos ); + + Button->SetForegroundColour( wxColour( 0, 100, 100 ) ); + winsize.x = MAX( winsize.x, Button->GetRect().GetRight() ); + + winsize.x += 10; winsize.y += 10; + SetClientSize( winsize ); } /***************************************************************/ -void WinEDA_SwapLayerFrame::Sel_Layer(wxCommandEvent& event) +void WinEDA_SwapLayerFrame::Sel_Layer( wxCommandEvent& event ) /***************************************************************/ { - int ii, jj; + int ii, jj; - ii = m_LayerList->GetSelection(); + ii = m_LayerList->GetSelection(); - switch ( event.GetId()) - { - case ID_SWAP_LAYER_DESELECT: - if ( New_Layer[ii] != -1 ) - { - New_Layer[ii] = -1; - m_LayerList->SetString(ii, ReturnPcbLayerName(ii) + - + wxT(" -> ") + _("No Change") ); - } - break; + switch( event.GetId() ) + { + case ID_SWAP_LAYER_DESELECT: + if( New_Layer[ii] != -1 ) + { + New_Layer[ii] = -1; + m_LayerList->SetString( ii, ReturnPcbLayerName( ii ) + + + wxT( " -> " ) + _( "No Change" ) ); + } + break; - case ID_SWAP_LAYER_BUTTON_SELECT: - case ID_SWAP_LAYER_SELECT: - jj = m_Parent->SelectLayer(ii, -1, -1); - if ( (jj < 0) || (jj >= 29) ) return; + case ID_SWAP_LAYER_BUTTON_SELECT: + case ID_SWAP_LAYER_SELECT: + jj = m_Parent->SelectLayer( ii, -1, -1 ); + if( (jj < 0) || (jj >= 29) ) + return; - if ( ii != jj ) - { - New_Layer[ii] = jj; - m_LayerList->SetString(ii, - ReturnPcbLayerName(ii) + wxT(" -> ") + ReturnPcbLayerName(jj) ); - } - break; - } + if( ii != jj ) + { + New_Layer[ii] = jj; + m_LayerList->SetString( ii, + ReturnPcbLayerName( ii ) + wxT( " -> " ) + + ReturnPcbLayerName( jj ) ); + } + break; + } } -/*********************************************************/ -void WinEDA_SwapLayerFrame::Cancel(wxCommandEvent& event) -/*********************************************************/ -{ - EndModal(-1); -} /*********************************************************/ -void WinEDA_SwapLayerFrame::Execute(wxCommandEvent& event) +void WinEDA_SwapLayerFrame::Cancel( wxCommandEvent& event ) /*********************************************************/ { - EndModal(1); + EndModal( -1 ); +} + + +/*********************************************************/ +void WinEDA_SwapLayerFrame::Execute( wxCommandEvent& event ) +/*********************************************************/ +{ + EndModal( 1 ); } /********************************************************/ -void WinEDA_PcbFrame::Swap_Layers(wxCommandEvent & event) +void WinEDA_PcbFrame::Swap_Layers( wxCommandEvent& event ) /********************************************************/ /* Swap layers */ { -int ii, jj ; -TRACK * pt_segm ; -DRAWSEGMENT * pt_drawsegm; -EDA_BaseStruct * PtStruct; + int ii, jj; + TRACK* pt_segm; + DRAWSEGMENT* pt_drawsegm; + EDA_BaseStruct* PtStruct; - /* Init default values */ - for ( ii = 0 ; ii < 32 ; ii++ ) New_Layer[ii] = -1 ; + /* Init default values */ + for( ii = 0; ii < 32; ii++ ) + New_Layer[ii] = -1; -WinEDA_SwapLayerFrame * frame = new WinEDA_SwapLayerFrame(this); - ii = frame->ShowModal(); frame->Destroy(); + WinEDA_SwapLayerFrame* frame = new WinEDA_SwapLayerFrame( this ); - if ( ii != 1 ) return; + ii = frame->ShowModal(); frame->Destroy(); - /* Modifications des pistes */ - pt_segm = (TRACK*) m_Pcb->m_Track; - for ( ; pt_segm != NULL;pt_segm = (TRACK*)pt_segm->Pnext ) - { - m_CurrentScreen->SetModify(); - if( pt_segm->Type() == TYPEVIA ) - { - SEGVIA * Via = (SEGVIA *) pt_segm; - if ( Via->Shape() == VIA_NORMALE ) continue; - int top_layer, bottom_layer; - Via->ReturnLayerPair(&top_layer, &bottom_layer); - if( New_Layer[bottom_layer] >= 0) - bottom_layer = New_Layer[bottom_layer]; - if( New_Layer[top_layer] >= 0) - top_layer = New_Layer[top_layer]; - Via->SetLayerPair(top_layer, bottom_layer); - } - else - { - jj = pt_segm->m_Layer; - if( New_Layer[jj] >= 0) pt_segm->m_Layer = New_Layer[jj]; - } - } + if( ii != 1 ) + return; - /* Modifications des zones */ - pt_segm = (TRACK*) m_Pcb->m_Zone; - for ( ; pt_segm != NULL;pt_segm = (TRACK*)pt_segm->Pnext ) - { - m_CurrentScreen->SetModify(); - jj = pt_segm->m_Layer; - if( New_Layer[jj] >= 0) pt_segm->m_Layer = New_Layer[jj]; - } + /* Modifications des pistes */ + pt_segm = (TRACK*) m_Pcb->m_Track; + for( ; pt_segm != NULL; pt_segm = (TRACK*) pt_segm->Pnext ) + { + m_CurrentScreen->SetModify(); + if( pt_segm->Type() == TYPEVIA ) + { + SEGVIA* Via = (SEGVIA*) pt_segm; + if( Via->Shape() == VIA_NORMALE ) + continue; + int top_layer, bottom_layer; + Via->ReturnLayerPair( &top_layer, &bottom_layer ); + if( New_Layer[bottom_layer] >= 0 ) + bottom_layer = New_Layer[bottom_layer]; + if( New_Layer[top_layer] >= 0 ) + top_layer = New_Layer[top_layer]; + Via->SetLayerPair( top_layer, bottom_layer ); + } + else + { + jj = pt_segm->m_Layer; + if( New_Layer[jj] >= 0 ) + pt_segm->m_Layer = New_Layer[jj]; + } + } - /* Modifications des autres segments */ - PtStruct = m_Pcb->m_Drawings; - for ( ; PtStruct != NULL ; PtStruct = PtStruct->Pnext ) - { - if( PtStruct->Type() == TYPEDRAWSEGMENT ) - { - m_CurrentScreen->SetModify(); - pt_drawsegm = (DRAWSEGMENT *) PtStruct; - jj = pt_drawsegm->m_Layer; - if( New_Layer[jj] >= 0) pt_drawsegm->m_Layer = New_Layer[jj]; - } - } - DrawPanel->Refresh(TRUE); + /* Modifications des zones */ + pt_segm = (TRACK*) m_Pcb->m_Zone; + for( ; pt_segm != NULL; pt_segm = (TRACK*) pt_segm->Pnext ) + { + m_CurrentScreen->SetModify(); + jj = pt_segm->m_Layer; + if( New_Layer[jj] >= 0 ) + pt_segm->m_Layer = New_Layer[jj]; + } + + /* Modifications des autres segments */ + PtStruct = m_Pcb->m_Drawings; + for( ; PtStruct != NULL; PtStruct = PtStruct->Pnext ) + { + if( PtStruct->Type() == TYPEDRAWSEGMENT ) + { + m_CurrentScreen->SetModify(); + pt_drawsegm = (DRAWSEGMENT*) PtStruct; + jj = pt_drawsegm->m_Layer; + if( New_Layer[jj] >= 0 ) + pt_drawsegm->m_Layer = New_Layer[jj]; + } + } + + DrawPanel->Refresh( TRUE ); } + /*********************************************************/ -void WinEDA_PcbFrame::Liste_Equipot(wxCommandEvent & event) +void WinEDA_PcbFrame::Liste_Equipot( wxCommandEvent& event ) /*********************************************************/ { -EQUIPOT * Equipot ; -wxString msg; -WinEDA_TextFrame * List; -int ii, jj; + EQUIPOT* Equipot; + wxString msg; + WinEDA_TextFrame* List; + int ii, jj; - msg = wxT("*"); - Get_Message(_("Filter for net names:"),msg, this); - if ( msg.IsEmpty() ) return; + msg = wxT( "*" ); + Get_Message( _( "Filter for net names:" ), msg, this ); + if( msg.IsEmpty() ) + return; - List = new WinEDA_TextFrame(this, _("List Nets") ); + List = new WinEDA_TextFrame( this, _( "List Nets" ) ); - Equipot = (EQUIPOT*) m_Pcb->m_Equipots; - for ( ; Equipot != NULL; Equipot = (EQUIPOT*)Equipot->Pnext ) - { - wxString Line; - /* calcul adr relative du nom de la pastille reference de la piste */ - if( ! WildCompareString(msg, Equipot->m_Netname, FALSE ) ) continue ; + Equipot = (EQUIPOT*) m_Pcb->m_Equipots; + for( ; Equipot != NULL; Equipot = (EQUIPOT*) Equipot->Pnext ) + { + wxString Line; + /* calcul adr relative du nom de la pastille reference de la piste */ + if( !WildCompareString( msg, Equipot->m_Netname, FALSE ) ) + continue; - Line.Printf( wxT("net_code = %3.3d [%.16s] "),Equipot->m_NetCode, - Equipot->m_Netname.GetData()); - List->Append(Line); - } - ii = List->ShowModal(); List->Destroy(); - if (ii < 0) return; + Line.Printf( wxT( "net_code = %3.3d [%.16s] " ), Equipot->m_NetCode, + Equipot->m_Netname.GetData() ); + List->Append( Line ); + } - /* Recherche du numero de net rellement selectionné */ - Equipot = (EQUIPOT*) m_Pcb->m_Equipots; - for ( jj = 0; Equipot != NULL; Equipot = (EQUIPOT*)Equipot->Pnext ) - { - /* calcul adr relative du nom de la pastille reference de la piste */ - if( ! WildCompareString(msg, Equipot->m_Netname, FALSE) ) continue ; - if ( ii == jj ) - { - ii = Equipot->m_NetCode; - break; - } - jj++; - } + ii = List->ShowModal(); List->Destroy(); + if( ii < 0 ) + return; + /* Recherche du numero de net rellement selectionné */ + Equipot = (EQUIPOT*) m_Pcb->m_Equipots; + for( jj = 0; Equipot != NULL; Equipot = (EQUIPOT*) Equipot->Pnext ) + { + /* calcul adr relative du nom de la pastille reference de la piste */ + if( !WildCompareString( msg, Equipot->m_Netname, FALSE ) ) + continue; + if( ii == jj ) + { + ii = Equipot->m_NetCode; + break; + } + jj++; + } -wxClientDC dc(DrawPanel); - DrawPanel->PrepareGraphicContext(&dc); + wxClientDC dc( DrawPanel ); - if(g_HightLigt_Status) Hight_Light(&dc); - g_HightLigth_NetCode = ii; - Hight_Light(&dc); + DrawPanel->PrepareGraphicContext( &dc ); + + if( g_HightLigt_Status ) + Hight_Light( &dc ); + g_HightLigth_NetCode = ii; + Hight_Light( &dc ); } - - -