コード例 #1
0
void GERBER_LAYER_WIDGET::ReFill()
{
    Freeze();

    ClearLayerRows();

    for( int layer = 0; layer < GERBER_DRAWLAYERS_COUNT; ++layer )
    {
        wxString msg = GetImagesList()->GetDisplayName( layer );

        bool visible = true;

        if( auto canvas = myframe->GetGalCanvas() )
        {
            visible = canvas->GetView()->IsLayerVisible( GERBER_DRAW_LAYER( layer ) );
        }
        else
        {
            visible = myframe->IsLayerVisible( layer );
        }

        AppendLayerRow( LAYER_WIDGET::ROW( msg, layer,
                        myframe->GetLayerColor( GERBER_DRAW_LAYER( layer ) ),
                        wxEmptyString, visible, true ) );
    }

    Thaw();
}
コード例 #2
0
bool GERBVIEW_FRAME::Clear_DrawLayers( bool query )
{
    if( GetGerberLayout() == NULL )
        return false;

    if( query && GetScreen()->IsModify() )
    {
        if( !IsOK( this, _( "Current data will be lost?" ) ) )
            return false;
    }

    if( auto canvas = GetGalCanvas() )
    {
        canvas->GetView()->Clear();
    }

    GetImagesList()->DeleteAllImages();

    GetGerberLayout()->SetBoundingBox( EDA_RECT() );

    SetActiveLayer( 0 );
    ReFillLayerWidget();
    syncLayerBox();
    return true;
}
コード例 #3
0
void GERBER_LAYER_WIDGET::onPopupSelection( wxCommandEvent& event )
{
    int  rowCount;
    int  menuId = event.GetId();
    bool visible = (menuId == ID_SHOW_ALL_LAYERS) ? true : false;
    long visibleLayers = 0;
    bool force_active_layer_visible;

    m_alwaysShowActiveLayer = ( menuId == ID_ALWAYS_SHOW_NO_LAYERS_BUT_ACTIVE );
    force_active_layer_visible = ( menuId == ID_SHOW_NO_LAYERS_BUT_ACTIVE ||
                                   menuId == ID_ALWAYS_SHOW_NO_LAYERS_BUT_ACTIVE );

    switch( menuId )
    {
    case ID_SHOW_ALL_LAYERS:
    case ID_SHOW_NO_LAYERS:
    case ID_ALWAYS_SHOW_NO_LAYERS_BUT_ACTIVE:
    case ID_SHOW_NO_LAYERS_BUT_ACTIVE:
        rowCount = GetLayerRowCount();
        for( int row=0; row < rowCount; ++row )
        {
            wxCheckBox* cb = (wxCheckBox*) getLayerComp( row, COLUMN_COLOR_LYR_CB );
            int layer = getDecodedId( cb->GetId() );
            bool loc_visible = visible;

            if( force_active_layer_visible && (layer == myframe->getActiveLayer() ) )
                loc_visible = true;

            cb->SetValue( loc_visible );

            if( loc_visible )
                visibleLayers |= 1 << row;
            else
                visibleLayers &= ~( 1 << row );
        }

        myframe->SetVisibleLayers( visibleLayers );
        myframe->GetCanvas()->Refresh();
        break;

    case ID_SORT_GBR_LAYERS:
        GetImagesList()->SortImagesByZOrder();
        myframe->ReFillLayerWidget();
        myframe->syncLayerBox( true );
        myframe->GetCanvas()->Refresh();
        break;
    }
}
コード例 #4
0
void GERBER_LAYER_WIDGET::ReFill()
{
    Freeze();

    ClearLayerRows();

    for( int layer = 0; layer < GERBER_DRAWLAYERS_COUNT; ++layer )
    {
        wxString msg = GetImagesList()->GetDisplayName( layer );

        AppendLayerRow( LAYER_WIDGET::ROW( msg, layer,
                        myframe->GetLayerColor( layer ), wxEmptyString, true ) );
    }

    Thaw();

    installRightLayerClickHandler();
}
コード例 #5
0
void GERBVIEW_FRAME::Erase_Current_DrawLayer( bool query )
{
    int layer = GetActiveLayer();
    wxString msg;

    msg.Printf( _( "Clear layer %d?" ), layer + 1 );

    if( query && !IsOK( this, msg ) )
        return;

    SetCurItem( NULL );

    GetImagesList()->DeleteImage( layer );

    ReFillLayerWidget();
    syncLayerBox();
    m_canvas->Refresh();
}
コード例 #6
0
/*
 * Virtual Function useAlternateBitmap
 * return true if bitmaps shown in Render layer list
 * must be alternate bitmap (when a gerber image is loaded), or false to use "normal" bitmap
 */
bool GERBER_LAYER_WIDGET::useAlternateBitmap(int aRow)
{
    return GetImagesList()->GetGbrImage( aRow ) != NULL;
}