Commit 8f62c6aa authored by jean-pierre charras's avatar jean-pierre charras
Browse files

Move AddMenuItem inline functions outside wxstruct.h in a new file (menu_helpers.h)

Enhancements in AddMenuItem (that accepts now a menu type)
Partial use of the Edwin van den Oetelaar's patch (patch not fully working or correct)
parent f2f0f66a
Loading
Loading
Loading
Loading
+3 −7
Original line number Diff line number Diff line
@@ -189,13 +189,9 @@ Info_3D_Visu::Info_3D_Visu()

    m_Layers = 1;
    m_BoardSettings  = NULL;
    m_Draw3DAxis     = true;
    m_Draw3DModule   = true;
    m_Draw3DZone     = true;
    m_Draw3DComments = true;
    m_Draw3DDrawings = true;
    m_Draw3DEco1     = true;
    m_Draw3DEco2     = true;
    // default all special item layers Visible
    for (ii=0; ii< FL_LAST; ii++)
        m_DrawFlags[ii]=true;
}


+27 −47
Original line number Diff line number Diff line
@@ -206,7 +206,7 @@ GLuint EDA_3D_CANVAS::CreateDrawGL_List()
    glColorMaterial( GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE );

    // draw axis
    if( g_Parm_3D_Visu.m_Draw3DAxis )
    if (g_Parm_3D_Visu.m_DrawFlags[g_Parm_3D_Visu.FL_AXIS])
    {
        glEnable( GL_COLOR_MATERIAL );
        SetGLColor( WHITE );
@@ -223,37 +223,7 @@ GLuint EDA_3D_CANVAS::CreateDrawGL_List()
    }

    // Draw epoxy limits (do not use, works and test in progress)
#if 0
    glEnable( GL_FOG );
    GLfloat param;

//	param = GL_LINEAR;
//	glFogfv(GL_FOG_MODE, & param);
    param = 0.2;
    glFogfv( GL_FOG_DENSITY, &param );
    param = g_Parm_3D_Visu.m_LayerZcoord[15];
    glFogfv( GL_FOG_END, &param );
    glBegin( GL_QUADS );
    SetGLColor( g_Parm_3D_Visu.m_BoardSettings->m_LayerColor[LAYER_N_FRONT] );
    double sx   = DataScale3D * g_Parm_3D_Visu.m_BoardSize.x / 2;
    double sy   = DataScale3D * g_Parm_3D_Visu.m_BoardSize.y / 2;
    double zpos = g_Parm_3D_Visu.m_LayerZcoord[15];
    glNormal3f( 0.0, 0.0, 1.0 ); // Normal is Z axis
    sx = sy = 0.5;
    glVertex3f( -sx, -sy, zpos );
    glVertex3f( -sx, sy, zpos );
    glVertex3f( sx, sy, zpos );
    glVertex3f( sx, -sy, zpos );
    glEnd();
    glBegin( GL_QUADS );
    SetGLColor( g_Parm_3D_Visu.m_BoardSettings->m_LayerColor[LAYER_N_BACK] );
    glNormal3f( 0.0, 0.0, -1.0 ); // Normal is -Z axis
    glVertex3f( -sx, -sy, 0 );
    glVertex3f( -sx, sy, 0 );
    glVertex3f( sx, sy, 0 );
    glVertex3f( sx, -sy, 0 );
    glEnd();
#endif
    // TODO

    // move the board in order to draw it with its center at 0,0 3D coordinates
    glTranslatef( -g_Parm_3D_Visu.m_BoardPos.x * g_Parm_3D_Visu.m_BoardScale,
@@ -271,7 +241,7 @@ GLuint EDA_3D_CANVAS::CreateDrawGL_List()
            Draw3D_Track( track );
    }

    if( g_Parm_3D_Visu.m_Draw3DZone )
    if (g_Parm_3D_Visu.m_DrawFlags[g_Parm_3D_Visu.FL_ZONE])
    {
        // Draw segments used to fill copper areas. outdated!
        for( segzone = pcb->m_Zone; segzone != NULL; segzone = segzone->Next() )
@@ -707,7 +677,7 @@ void MODULE::Draw3D( EDA_3D_CANVAS* glcanvas )
    S3D_MASTER* Struct3D  = m_3D_Drawings;
    bool        As3dShape = false;

    if( g_Parm_3D_Visu.m_Draw3DModule )
    if (g_Parm_3D_Visu.m_DrawFlags[g_Parm_3D_Visu.FL_MODULE])
    {
        glPushMatrix();

@@ -1430,23 +1400,33 @@ void EDA_3D_CANVAS::Draw3D_Polygon( std::vector<wxPoint>& aCornersList, double a

static int Get3DLayerEnable( int act_layer )
{
    bool enablelayer;

    enablelayer = true;

    if( act_layer == DRAW_N && !g_Parm_3D_Visu.m_Draw3DDrawings )
        enablelayer = false;
    int i = -1;
    // see if layer needs to be shown
    // check the flags
    switch (act_layer)
    {
        case DRAW_N:
            i=g_Parm_3D_Visu.FL_DRAWINGS;
            break;

    if( act_layer == COMMENT_N && !g_Parm_3D_Visu.m_Draw3DComments )
        enablelayer = false;
        case COMMENT_N:
            i=g_Parm_3D_Visu.FL_COMMENTS;
            break;

    if( act_layer == ECO1_N && !g_Parm_3D_Visu.m_Draw3DEco1 )
        enablelayer = false;
        case ECO1_N:
            i=g_Parm_3D_Visu.FL_ECO1;
            break;

    if( act_layer == ECO2_N && !g_Parm_3D_Visu.m_Draw3DEco2 )
        enablelayer = false;
        case ECO2_N:
            i=g_Parm_3D_Visu.FL_ECO2;
            break;
    }
    // the layer was not a layer with a flag, so show it
    if (i < 0)
        return true;

    return enablelayer;
    // if the layer has a flag, return the flag
    return g_Parm_3D_Visu.m_DrawFlags[i];
}


+17 −84
Original line number Diff line number Diff line
@@ -222,8 +222,10 @@ void EDA_3D_FRAME::RedrawActiveWindow( wxDC* DC, bool EraseBg )
void EDA_3D_FRAME::Process_Special_Functions( wxCommandEvent& event )
{
#define ROT_ANGLE 10.0
    int id = event.GetId();
    bool isChecked = event.IsChecked();

    switch( event.GetId() )
    switch( id )
    {
    case ID_RELOAD3D_BOARD:
        NewDisplay();
@@ -285,31 +287,38 @@ void EDA_3D_FRAME::Process_Special_Functions( wxCommandEvent& event )
        return;

    case ID_MENU3D_AXIS_ONOFF:
        Set3DAxisOnOff();
        g_Parm_3D_Visu.m_DrawFlags[g_Parm_3D_Visu.FL_AXIS] = isChecked;
        NewDisplay();
        return;

    case ID_MENU3D_MODULE_ONOFF:
        Set3DModuleOnOff();
        g_Parm_3D_Visu.m_DrawFlags[g_Parm_3D_Visu.FL_MODULE] = isChecked;
        NewDisplay();
        return;

    case ID_MENU3D_ZONE_ONOFF:
        Set3DZoneOnOff();
        g_Parm_3D_Visu.m_DrawFlags[g_Parm_3D_Visu.FL_ZONE] = isChecked;
        NewDisplay();
        return;

    case ID_MENU3D_COMMENTS_ONOFF:
        Set3DCommentsOnOff();
        g_Parm_3D_Visu.m_DrawFlags[g_Parm_3D_Visu.FL_COMMENTS] = isChecked;
        NewDisplay();
        return;

    case ID_MENU3D_DRAWINGS_ONOFF:
        Set3DDrawingsOnOff();
        g_Parm_3D_Visu.m_DrawFlags[g_Parm_3D_Visu.FL_DRAWINGS] = isChecked;
        NewDisplay();
        return;

    case ID_MENU3D_ECO1_ONOFF:
        Set3DEco1OnOff();
        g_Parm_3D_Visu.m_DrawFlags[g_Parm_3D_Visu.FL_ECO1] = isChecked;
        NewDisplay();
        return;

    case ID_MENU3D_ECO2_ONOFF:
        Set3DEco2OnOff();
        g_Parm_3D_Visu.m_DrawFlags[g_Parm_3D_Visu.FL_ECO2] = isChecked;
        NewDisplay();
        return;

    default:
@@ -367,79 +376,3 @@ void EDA_3D_FRAME::Set3DBgColor()
        NewDisplay();
    }
}


void EDA_3D_FRAME::Set3DAxisOnOff()
{
    if( g_Parm_3D_Visu.m_Draw3DAxis )
        g_Parm_3D_Visu.m_Draw3DAxis = false;
    else
        g_Parm_3D_Visu.m_Draw3DAxis = true;

    NewDisplay();
}


void EDA_3D_FRAME::Set3DModuleOnOff()
{
    if( g_Parm_3D_Visu.m_Draw3DModule )
        g_Parm_3D_Visu.m_Draw3DModule = false;
    else
        g_Parm_3D_Visu.m_Draw3DModule = true;

    NewDisplay();
}


void EDA_3D_FRAME::Set3DZoneOnOff()
{
    if( g_Parm_3D_Visu.m_Draw3DZone )
        g_Parm_3D_Visu.m_Draw3DZone = false;
    else
        g_Parm_3D_Visu.m_Draw3DZone = true;
    NewDisplay();
}


void EDA_3D_FRAME::Set3DCommentsOnOff()
{
    if( g_Parm_3D_Visu.m_Draw3DComments )
        g_Parm_3D_Visu.m_Draw3DComments = false;
    else
        g_Parm_3D_Visu.m_Draw3DComments = true;

    NewDisplay();
}


void EDA_3D_FRAME::Set3DDrawingsOnOff()
{
    if( g_Parm_3D_Visu.m_Draw3DDrawings )
        g_Parm_3D_Visu.m_Draw3DDrawings = false;
    else
        g_Parm_3D_Visu.m_Draw3DDrawings = true;

    NewDisplay();
}


void EDA_3D_FRAME::Set3DEco1OnOff()
{
    if( g_Parm_3D_Visu.m_Draw3DEco1 )
        g_Parm_3D_Visu.m_Draw3DEco1 = false;
    else
        g_Parm_3D_Visu.m_Draw3DEco1 = true;

    NewDisplay();
}


void EDA_3D_FRAME::Set3DEco2OnOff()
{
    if( g_Parm_3D_Visu.m_Draw3DEco2 )
        g_Parm_3D_Visu.m_Draw3DEco2 = false;
    else
        g_Parm_3D_Visu.m_Draw3DEco2 = true;

    NewDisplay();
}
+32 −22
Original line number Diff line number Diff line
@@ -30,6 +30,7 @@
#include <fctsys.h>

#include <3d_viewer.h>
#include <menus_helpers.h>


void EDA_3D_FRAME::ReCreateHToolbar()
@@ -132,13 +133,13 @@ void EDA_3D_FRAME::ReCreateMenuBar()
    bool full_options = true;

    // If called from the display frame of CvPcb, only some options are relevant
    if( Parent()->GetName() == wxT( "CmpFrame" ) )
    // Called from CvPcb: do not display all options
    if( Parent()->GetName() == wxT( "CmpFrame" ) ) {
        full_options = false;
    }

    wxMenuBar* menuBar   = new wxMenuBar;

    wxMenu*    fileMenu  = new wxMenu;
    wxMenu*    prefsMenu = new wxMenu;

    menuBar->Append( fileMenu, _( "&File" ) );

@@ -153,34 +154,43 @@ void EDA_3D_FRAME::ReCreateMenuBar()
    fileMenu->AppendSeparator();
    fileMenu->Append( wxID_EXIT, _( "&Exit" ) );

    wxMenu* referencesMenu = new wxMenu;
    menuBar->Append( referencesMenu, _( "&Preferences" ) );
    menuBar->Append( prefsMenu, _( "&Preferences" ) );

    AddMenuItem( referencesMenu, ID_MENU3D_BGCOLOR_SELECTION,
    AddMenuItem( prefsMenu, ID_MENU3D_BGCOLOR_SELECTION,
                 _( "Choose background color" ), KiBitmap( palette_xpm ) );

    AddMenuItem( referencesMenu, ID_MENU3D_AXIS_ONOFF,
                 _( "3D Axis On/Off" ), KiBitmap( axis3d_front_xpm ) );
    wxMenuItem* item;
    item = AddMenuItem( prefsMenu, ID_MENU3D_AXIS_ONOFF,
            _( "Show 3D &Axis" ), KiBitmap( axis3d_front_xpm ), wxITEM_CHECK );
    item->Check(g_Parm_3D_Visu.m_DrawFlags[g_Parm_3D_Visu.FL_AXIS]);


    if( full_options )
    {
        AddMenuItem( referencesMenu, ID_MENU3D_MODULE_ONOFF,
                     _( "3D Footprints Shapes On/Off" ), KiBitmap( shape_3d_xpm ) );
       item = AddMenuItem( prefsMenu, ID_MENU3D_MODULE_ONOFF,
               _( "Show 3D F&ootprints" ), KiBitmap( shape_3d_xpm ), wxITEM_CHECK );
       item->Check(g_Parm_3D_Visu.m_DrawFlags[g_Parm_3D_Visu.FL_MODULE]);

       item = AddMenuItem( prefsMenu, ID_MENU3D_ZONE_ONOFF,
               _( "Show Zone &Filling" ), KiBitmap( add_zone_xpm ), wxITEM_CHECK );
       item->Check(g_Parm_3D_Visu.m_DrawFlags[g_Parm_3D_Visu.FL_ZONE]);

        AddMenuItem( referencesMenu, ID_MENU3D_ZONE_ONOFF,
                     _( "Zone Filling On/Off" ), KiBitmap( add_zone_xpm ) );
       item = AddMenuItem( prefsMenu, ID_MENU3D_COMMENTS_ONOFF,
               _( "Show &Comments Layer" ), KiBitmap( edit_sheet_xpm ), wxITEM_CHECK );
       item->Check(g_Parm_3D_Visu.m_DrawFlags[g_Parm_3D_Visu.FL_COMMENTS]);

        AddMenuItem( referencesMenu, ID_MENU3D_COMMENTS_ONOFF,
                     _( "Comments Layer On/Off" ), KiBitmap( edit_sheet_xpm ) );
       item = AddMenuItem( prefsMenu, ID_MENU3D_DRAWINGS_ONOFF,
               _( "Show &Drawings Layer" ), KiBitmap( add_polygon_xpm ), wxITEM_CHECK );
       item->Check(g_Parm_3D_Visu.m_DrawFlags[g_Parm_3D_Visu.FL_DRAWINGS]);

        AddMenuItem( referencesMenu, ID_MENU3D_DRAWINGS_ONOFF,
                     _( "Drawings Layer On/Off" ), KiBitmap( add_polygon_xpm ) );
       item = AddMenuItem( prefsMenu, ID_MENU3D_ECO1_ONOFF,
               _( "Show Eco&1 Layer" ), KiBitmap( tools_xpm ), wxITEM_CHECK );
       item->Check(g_Parm_3D_Visu.m_DrawFlags[g_Parm_3D_Visu.FL_ECO1]);

        AddMenuItem( referencesMenu, ID_MENU3D_ECO1_ONOFF,
                     _( "Eco1 Layer On/Off" ), KiBitmap( tools_xpm ) );
       item = AddMenuItem( prefsMenu, ID_MENU3D_ECO2_ONOFF,
               _( "Show Eco&2 Layer" ), KiBitmap( tools_xpm ), wxITEM_CHECK );
       item->Check(g_Parm_3D_Visu.m_DrawFlags[g_Parm_3D_Visu.FL_ECO2]);

        AddMenuItem( referencesMenu, ID_MENU3D_ECO2_ONOFF,
                     _( "Eco2 Layer On/Off" ), KiBitmap( tools_xpm ) );
    }

    SetMenuBar( menuBar );
+8 −15
Original line number Diff line number Diff line
@@ -134,19 +134,20 @@ class SEGVIA;
/* information needed to display 3D board */
class Info_3D_Visu
{

public:
    enum {
        FL_AXIS=0,        FL_MODULE,        FL_ZONE,
        FL_COMMENTS,      FL_DRAWINGS,      FL_ECO1,          FL_ECO2,
        FL_LAST
    };

    double    m_Beginx, m_Beginy;   /* position of mouse */
    double    m_Quat[4];            /* orientation of object */
    double    m_Rot[4];             /* man rotation of object */
    double    m_Zoom;               /* field of view in degrees */
    S3D_Color m_BgColor;
    bool      m_Draw3DAxis;
    bool      m_Draw3DModule;
    bool      m_Draw3DZone;
    bool      m_Draw3DComments;
    bool      m_Draw3DDrawings;
    bool      m_Draw3DEco1;
    bool      m_Draw3DEco2;
    bool      m_DrawFlags[FL_LAST]; /* show these special items */
    wxPoint   m_BoardPos;
    wxSize    m_BoardSize;
    int       m_Layers;
@@ -320,14 +321,6 @@ public:

    void NewDisplay();
    void Set3DBgColor();
    void Set3DAxisOnOff();
    void Set3DModuleOnOff();
    void Set3DPlaceOnOff();
    void Set3DZoneOnOff();
    void Set3DCommentsOnOff();
    void Set3DDrawingsOnOff();
    void Set3DEco1OnOff();
    void Set3DEco2OnOff();

    DECLARE_EVENT_TABLE()
};
Loading