void GBR_LAYER_BOX_SELECTOR::Resync() { #define BM_SIZE 14 Freeze(); Clear(); GERBER_FILE_IMAGE_LIST& images = GERBER_FILE_IMAGE_LIST::GetImagesList(); for( unsigned layerid = 0; layerid < images.ImagesMaxCount(); ++layerid ) { wxBitmap layerbmp( BM_SIZE, BM_SIZE ); wxString layername; if( !IsLayerEnabled( layerid ) ) continue; // Prepare Bitmap SetBitmapLayer( layerbmp, layerid ); layername = GetLayerName( layerid ); Append( layername, layerbmp, (void*)(intptr_t) layerid ); } // Ensure the width of the widget is enough to show the text and the icon SetMinSize( wxSize( -1, -1 ) ); int minwidth = GetBestSize().x + BM_SIZE + 10; SetMinSize( wxSize( minwidth, -1 ) ); Thaw(); }
// Reload the Layers void PCB_LAYER_BOX_SELECTOR::Resync() { Clear(); // Tray to fix a minimum width fot the BitmapComboBox int minwidth = 80; wxClientDC dc( GetParent() ); // The DC for "this" is not always initialized const int BM_SIZE = 14; LSET show = LSET::AllLayersMask() & ~m_layerMaskDisable; LSET activated = getEnabledLayers() & ~m_layerMaskDisable; wxString layerstatus; for( LSEQ seq = show.UIOrder(); seq; ++seq ) { LAYER_ID layerid = *seq; if( !m_showNotEnabledBrdlayers && !activated[layerid] ) continue; else if( !activated[layerid] ) layerstatus = wxT( " " ) + _( "(not activated)" ); else layerstatus.Empty(); wxBitmap layerbmp( BM_SIZE, BM_SIZE ); SetBitmapLayer( layerbmp, layerid ); wxString layername = GetLayerName( layerid ) + layerstatus; if( m_layerhotkeys && m_hotkeys ) { int id = layer2hotkey_id( layerid ); if( id != -1 ) layername = AddHotkeyName( layername, m_hotkeys, id, IS_COMMENT ); } Append( layername, layerbmp, (void*)(intptr_t) layerid ); int w, h; dc.GetTextExtent ( layername, &w, &h ); minwidth = std::max( minwidth, w ); } minwidth += BM_SIZE + 35; // Take in account the bitmap size and margins SetMinSize( wxSize( minwidth, -1 ) ); }
// Reload the Layers void PCB_LAYER_BOX_SELECTOR::Resync() { Clear(); static DECLARE_LAYERS_ORDER_LIST( layertranscode ); static DECLARE_LAYERS_HOTKEY( layerhk ); // Tray to fix a minimum width fot the BitmapComboBox int minwidth = 80, h; wxClientDC dc( GetParent() ); // The DC for "this" is not always initialized #define BM_SIZE 14 for( LAYER_NUM i = FIRST_LAYER; i < NB_LAYERS; ++i ) { wxBitmap layerbmp( BM_SIZE, BM_SIZE ); wxString layername; LAYER_NUM layerid = i; if( m_layerorder ) layerid = layertranscode[i]; if( ! IsLayerEnabled( layerid ) ) continue; if( ( m_layerMaskDisable & GetLayerMask( layerid ) ) ) continue; SetBitmapLayer( layerbmp, layerid ); layername = GetLayerName( layerid ); if( m_layerhotkeys && m_hotkeys != NULL ) layername = AddHotkeyName( layername, m_hotkeys, layerhk[layerid], IS_COMMENT ); Append( layername, layerbmp, (void*)(intptr_t) layerid ); int w; dc.GetTextExtent ( layername, &w, &h ); minwidth = std::max( minwidth, w ); } minwidth += BM_SIZE + 35; // Take in account the bitmap size and margins SetMinSize( wxSize( minwidth, -1 ) ); }
void GBR_LAYER_BOX_SELECTOR::Resync() { Clear(); for( int layerid = 0; layerid < GERBER_DRAWLAYERS_COUNT; ++layerid ) { wxBitmap layerbmp( 14, 14 ); wxString layername; if( !IsLayerEnabled( layerid ) ) continue; // Prepare Bitmap SetBitmapLayer( layerbmp, layerid ); layername = GetLayerName( layerid ); Append( layername, layerbmp, (void*)(intptr_t) layerid ); } }