/* * Update the layer manager icons (layers only) * Useful when loading a file or clearing a layer because they change */ void GERBER_LAYER_WIDGET::UpdateLayerIcons() { int row_count = GetLayerRowCount(); for( int row = 0; row < row_count ; row++ ) { wxStaticBitmap* bm = (wxStaticBitmap*) getLayerComp( row, COLUMN_ICON_ACTIVE ); if( bm == NULL) continue; if( row == m_CurrentRow ) bm->SetBitmap( useAlternateBitmap(row) ? *m_RightArrowAlternateBitmap : *m_RightArrowBitmap ); else bm->SetBitmap( useAlternateBitmap(row) ? *m_BlankAlternateBitmap : *m_BlankBitmap ); } }
void LAYER_WIDGET::insertLayerRow( int aRow, const ROW& aSpec ) { wxASSERT( aRow >= 0 ); int col; int index = aRow * LYR_COLUMN_COUNT; const int flags = wxALIGN_CENTER_VERTICAL | wxALIGN_LEFT; auto& iconProvider = useAlternateBitmap(aRow) ? alternativeRowIcons : defaultRowIcons; // column 0 col = COLUMN_ICON_ACTIVE; auto sbm = new INDICATOR_ICON( m_LayerScrolledWindow, iconProvider, ROW_ICON_PROVIDER::STATE::OFF, encodeId( col, aSpec.id ) ); sbm->Bind( wxEVT_LEFT_DOWN, &LAYER_WIDGET::OnLeftDownLayers, this ); m_LayersFlexGridSizer->wxSizer::Insert( index+col, sbm, 0, flags ); // column 1 (COLUMN_COLORBM) col = COLUMN_COLORBM; auto bmb = new COLOR_SWATCH( m_LayerScrolledWindow, aSpec.color, encodeId( col, aSpec.id ), AreArbitraryColorsAllowed(), getBackgroundLayerColor() ); bmb->Bind( wxEVT_LEFT_DOWN, &LAYER_WIDGET::OnLeftDownLayers, this ); bmb->Bind( COLOR_SWATCH_CHANGED, &LAYER_WIDGET::OnLayerSwatchChanged, this ); bmb->SetToolTip( _("Left double click or middle click for color change, right click for menu" ) ); m_LayersFlexGridSizer->wxSizer::Insert( index+col, bmb, 0, flags ); // column 2 (COLUMN_COLOR_LYR_CB) col = COLUMN_COLOR_LYR_CB; wxCheckBox* cb = new wxCheckBox( m_LayerScrolledWindow, encodeId( col, aSpec.id ), wxEmptyString ); cb->SetValue( aSpec.state ); cb->Bind( wxEVT_COMMAND_CHECKBOX_CLICKED, &LAYER_WIDGET::OnLayerCheckBox, this ); cb->SetToolTip( _( "Enable this for visibility" ) ); m_LayersFlexGridSizer->wxSizer::Insert( index+col, cb, 0, flags ); // column 3 (COLUMN_COLOR_LYRNAME) col = COLUMN_COLOR_LYRNAME; wxStaticText* st = new wxStaticText( m_LayerScrolledWindow, encodeId( col, aSpec.id ), aSpec.rowName ); shrinkFont( st, m_PointSize ); st->Bind( wxEVT_LEFT_DOWN, &LAYER_WIDGET::OnLeftDownLayers, this ); st->SetToolTip( aSpec.tooltip ); m_LayersFlexGridSizer->wxSizer::Insert( index+col, st, 0, flags ); // Bind right click eventhandler to all columns wxString layerName( aSpec.rowName ); sbm->Bind( wxEVT_RIGHT_DOWN, [this, bmb, layerName] ( wxMouseEvent& aEvt ) { OnRightDownLayer( aEvt, bmb, layerName ); } ); bmb->Bind( wxEVT_RIGHT_DOWN, [this, bmb, layerName] ( wxMouseEvent& aEvt ) { OnRightDownLayer( aEvt, bmb, layerName ); } ); cb->Bind( wxEVT_RIGHT_DOWN, [this, bmb, layerName] ( wxMouseEvent& aEvt ) { OnRightDownLayer( aEvt, bmb, layerName ); } ); st->Bind( wxEVT_RIGHT_DOWN, [this, bmb, layerName] ( wxMouseEvent& aEvt ) { OnRightDownLayer( aEvt, bmb, layerName ); } ); }