Commit 3d311f83 authored by Dick Hollenbeck's avatar Dick Hollenbeck
Browse files

*) Remove more wxString static constructors which were crashing in PAGE_INFO assignment

   to a new BOARD in the footprint editor.  This is PAGE_INFO::A4 and company.
   
*) Remove static storage of the BOARD in the module editor.
parent 737ef50c
Loading
Loading
Loading
Loading
+16 −15
Original line number Original line Diff line number Diff line
@@ -38,21 +38,22 @@




// Standard paper sizes nicknames.
// Standard paper sizes nicknames.
const wxString PAGE_INFO::A4( wxT( "A4" ) );
const wxChar PAGE_INFO::A4[] = wxT( "A4" );
const wxString PAGE_INFO::A3( wxT( "A3" ) );
const wxChar PAGE_INFO::A3[] = wxT( "A3" );
const wxString PAGE_INFO::A2( wxT( "A2" ) );
const wxChar PAGE_INFO::A2[] = wxT( "A2" );
const wxString PAGE_INFO::A1( wxT( "A1" ) );
const wxChar PAGE_INFO::A1[] = wxT( "A1" );
const wxString PAGE_INFO::A0( wxT( "A0" ) );
const wxChar PAGE_INFO::A0[] = wxT( "A0" );
const wxString PAGE_INFO::A( wxT( "A" ) );
const wxChar PAGE_INFO::A[]  = wxT( "A" );
const wxString PAGE_INFO::B( wxT( "B" ) );
const wxChar PAGE_INFO::B[]  = wxT( "B" ) ;
const wxString PAGE_INFO::C( wxT( "C" ) );
const wxChar PAGE_INFO::C[]  = wxT( "C" );
const wxString PAGE_INFO::D( wxT( "D" ) );
const wxChar PAGE_INFO::D[]  = wxT( "D" );
const wxString PAGE_INFO::E( wxT( "E" ) );
const wxChar PAGE_INFO::E[]  = wxT( "E" );
const wxString PAGE_INFO::GERBER( wxT( "GERBER" ) );

const wxString PAGE_INFO::USLetter( wxT( "USLetter" ) );
const wxChar PAGE_INFO::GERBER[]   = wxT( "GERBER" );
const wxString PAGE_INFO::USLegal( wxT( "USLegal" ) );
const wxChar PAGE_INFO::USLetter[] = wxT( "USLetter" );
const wxString PAGE_INFO::USLedger( wxT( "USLedger" ) );
const wxChar PAGE_INFO::USLegal[]  = wxT( "USLegal" );
const wxString PAGE_INFO::Custom( wxT( "User" ) );
const wxChar PAGE_INFO::USLedger[] = wxT( "USLedger" );
const wxChar PAGE_INFO::Custom[]   = wxT( "User" );




// Standard page sizes in mils, all constants
// Standard page sizes in mils, all constants
+14 −14
Original line number Original line Diff line number Diff line
@@ -703,21 +703,21 @@ void DIALOG_PAGES_SETTINGS::GetPageLayoutInfoFromDialog()
    {
    {
        PAGE_INFO       pageInfo;   // SetType() later to lookup size
        PAGE_INFO       pageInfo;   // SetType() later to lookup size


        static const wxString* papers[] = {
        static const wxChar* papers[] = {
            // longest common string first, since sequential search below
            // longest common string first, since sequential search below
            &PAGE_INFO::A4,
            PAGE_INFO::A4,
            &PAGE_INFO::A3,
            PAGE_INFO::A3,
            &PAGE_INFO::A2,
            PAGE_INFO::A2,
            &PAGE_INFO::A1,
            PAGE_INFO::A1,
            &PAGE_INFO::A0,
            PAGE_INFO::A0,
            &PAGE_INFO::A,
            PAGE_INFO::A,
            &PAGE_INFO::B,
            PAGE_INFO::B,
            &PAGE_INFO::C,
            PAGE_INFO::C,
            &PAGE_INFO::D,
            PAGE_INFO::D,
            &PAGE_INFO::E,
            PAGE_INFO::E,
            &PAGE_INFO::USLetter,
            PAGE_INFO::USLetter,
            &PAGE_INFO::USLegal,
            PAGE_INFO::USLegal,
            &PAGE_INFO::USLedger,
            PAGE_INFO::USLedger,
        };
        };


        unsigned i;
        unsigned i;
+16 −15
Original line number Original line Diff line number Diff line
@@ -201,21 +201,22 @@ public:
    // paper size names which are part of the public API, pass to SetType() or
    // paper size names which are part of the public API, pass to SetType() or
    // above constructor.
    // above constructor.


    static const wxString A4;
    // these were once wxStrings, but it caused static construction sequence problems:
    static const wxString A3;
    static const wxChar A4[];
    static const wxString A2;
    static const wxChar A3[];
    static const wxString A1;
    static const wxChar A2[];
    static const wxString A0;
    static const wxChar A1[];
    static const wxString A;
    static const wxChar A0[];
    static const wxString B;
    static const wxChar A[];
    static const wxString C;
    static const wxChar B[];
    static const wxString D;
    static const wxChar C[];
    static const wxString E;
    static const wxChar D[];
    static const wxString GERBER;
    static const wxChar E[];
    static const wxString USLetter;
    static const wxChar GERBER[];
    static const wxString USLegal;
    static const wxChar USLetter[];
    static const wxString USLedger;
    static const wxChar USLegal[];
    static const wxString Custom;     ///< "User" defined page type
    static const wxChar USLedger[];
    static const wxChar Custom[];     ///< "User" defined page type




    /**
    /**
+4 −0
Original line number Original line Diff line number Diff line
@@ -436,6 +436,7 @@ void FOOTPRINT_EDIT_FRAME::Process_Special_Functions( wxCommandEvent& event )
                // and connexions are kept)
                // and connexions are kept)
                // and the source_module (old module) is deleted
                // and the source_module (old module) is deleted
                PICKED_ITEMS_LIST pickList;
                PICKED_ITEMS_LIST pickList;

                pcbframe->Exchange_Module( source_module, newmodule, &pickList );
                pcbframe->Exchange_Module( source_module, newmodule, &pickList );
                newmodule->SetTimeStamp( module_in_edit->GetLink() );
                newmodule->SetTimeStamp( module_in_edit->GetLink() );


@@ -445,6 +446,7 @@ void FOOTPRINT_EDIT_FRAME::Process_Special_Functions( wxCommandEvent& event )
            else        // This is an insert command
            else        // This is an insert command
            {
            {
                wxPoint cursor_pos = pcbframe->GetCrossHairPosition();
                wxPoint cursor_pos = pcbframe->GetCrossHairPosition();

                pcbframe->SetCrossHairPosition( wxPoint( 0, 0 ) );
                pcbframe->SetCrossHairPosition( wxPoint( 0, 0 ) );
                pcbframe->PlaceModule( newmodule, NULL );
                pcbframe->PlaceModule( newmodule, NULL );
                pcbframe->SetCrossHairPosition( cursor_pos );
                pcbframe->SetCrossHairPosition( cursor_pos );
@@ -551,7 +553,9 @@ void FOOTPRINT_EDIT_FRAME::Process_Special_Functions( wxCommandEvent& event )
        if( GetBoard()->m_Modules )
        if( GetBoard()->m_Modules )
        {
        {
            SetCurItem( GetBoard()->m_Modules );
            SetCurItem( GetBoard()->m_Modules );

            DIALOG_MODULE_MODULE_EDITOR dialog( this, (MODULE*) GetScreen()-> GetCurItem() );
            DIALOG_MODULE_MODULE_EDITOR dialog( this, (MODULE*) GetScreen()-> GetCurItem() );

            int ret = dialog.ShowModal();
            int ret = dialog.ShowModal();
            GetScreen()->GetCurItem()->ClearFlags();
            GetScreen()->GetCurItem()->ClearFlags();


+0 −1
Original line number Original line Diff line number Diff line
@@ -406,7 +406,6 @@ protected:
    /// protected so only friend PCB::IFACE::CreateWindow() can act as sole factory.
    /// protected so only friend PCB::IFACE::CreateWindow() can act as sole factory.
    FOOTPRINT_EDIT_FRAME( KIWAY* aKiway, wxWindow* aParent );
    FOOTPRINT_EDIT_FRAME( KIWAY* aKiway, wxWindow* aParent );


    static BOARD*   s_Pcb;      ///< retain board across invocations of module editor


    /**
    /**
     * Function GetComponentFromUndoList
     * Function GetComponentFromUndoList
Loading