Gerbview: Added new LayerBox

This commit is contained in:
Marco Serantoni 2010-11-04 22:43:42 +01:00
parent 7873b46e45
commit a8d5e06818
7 changed files with 49 additions and 8 deletions

View File

@ -20,6 +20,7 @@ set(COMMON_SRCS
block_commande.cpp
build_version.cpp
class_colors_design_settings.cpp
class_layerchoicebox.cpp
class_marker_base.cpp
class_plotter.cpp
class_undoredo_container.cpp

View File

@ -29,6 +29,10 @@ WinEDALayerChoiceBox::WinEDALayerChoiceBox( WinEDA_Toolbar* parent, wxWindowID i
{
m_layerorder = true;
m_layerhotkeys = true;
m_hotkeys = NULL;
if( choices != NULL )
ResyncBitmapOnly();
}
@ -40,6 +44,10 @@ WinEDALayerChoiceBox::WinEDALayerChoiceBox( WinEDA_Toolbar* parent, wxWindowID i
{
m_layerorder = true;
m_layerhotkeys = true;
m_hotkeys = NULL;
if( !choices.IsEmpty() )
ResyncBitmapOnly();
}
@ -136,10 +144,38 @@ void WinEDALayerChoiceBox::Resync()
layername = board->GetLayerName( layerid );
if( m_layerhotkeys )
layername = AddHotkeyName( layername, s_Board_Editor_Hokeys_Descr,
layerhk[layerid], false );
if( m_layerhotkeys && m_hotkeys != NULL )
layername = AddHotkeyName( layername, m_hotkeys, layerhk[layerid], false );
Append( layername, layerbmp, (void*) layerid );
}
}
void WinEDALayerChoiceBox::ResyncBitmapOnly()
{
WinEDA_BasePcbFrame* pcbFrame = (WinEDA_BasePcbFrame*) GetParent()->GetParent();
BOARD* board = pcbFrame->GetBoard();
int elements = GetCount();
for( int i = 0; i < elements; i++ )
{
wxBitmap layerbmp( 14, 14 );
wxMemoryDC bmpDC;
wxBrush brush;
wxString layername;
int layerid = i;
// Prepare Bitmap
bmpDC.SelectObject( layerbmp );
brush.SetColour( MakeColour( board->GetLayerColor( layerid ) ) );
brush.SetStyle( wxSOLID );
bmpDC.SetBrush( brush );
bmpDC.DrawRectangle( 0, 0, layerbmp.GetWidth(), layerbmp.GetHeight() );
bmpDC.SetBrush( *wxTRANSPARENT_BRUSH );
bmpDC.SetPen( *wxBLACK_PEN );
bmpDC.DrawRectangle( 0, 0, layerbmp.GetWidth(), layerbmp.GetHeight() );
SetItemBitmap(i, layerbmp);
}
}

View File

@ -13,7 +13,7 @@
#include "gerbview_id.h"
#include "hotkeys.h"
#include "class_GERBER.h"
#include "class_layerchoicebox.h"
void WinEDA_GerberFrame::ReCreateHToolbar( void )
{
@ -89,7 +89,7 @@ void WinEDA_GerberFrame::ReCreateHToolbar( void )
choices.Add( msg );
}
m_SelLayerBox = new WinEDAChoiceBox( m_HToolBar,
m_SelLayerBox = new WinEDALayerChoiceBox( m_HToolBar,
ID_TOOLBARH_GERBVIEW_SELECT_LAYER,
wxDefaultPosition, wxSize( 150, -1 ),
choices );

View File

@ -8,7 +8,7 @@
#include "id.h"
#include "class_gerbview_layer_widget.h"
#include "class_layerchoicebox.h"
/**
* Command IDs for the gerber file viewer.
@ -44,7 +44,7 @@ protected:
GERBER_LAYER_WIDGET* m_LayersManager;
public:
WinEDAChoiceBox* m_SelLayerBox;
WinEDALayerChoiceBox* m_SelLayerBox;
WinEDAChoiceBox* m_SelLayerTool;
wxTextCtrl* m_TextInfo; // a wxTextCtrl used to display some info about
// gerber data (format..)

View File

@ -1,6 +1,7 @@
#ifndef CLASS_LAYERCHOICEBOX_H
#define CLASS_LAYERCHOICEBOX_H 1
#include "hotkeys_basic.h"
#include <wx/bmpcbox.h>
/* class to display a layer list.
@ -33,9 +34,12 @@ public:
// Reload the Layers
void Resync();
void ResyncBitmapOnly();
bool SetLayersOrdered(bool value);
bool SetLayersHotkeys(bool value);
// Hotkey Info
struct Ki_HotkeyInfoSectionDescriptor* m_hotkeys;
};
#define DECLARE_LAYERS_HOTKEY(list) int list[LAYER_COUNT] = \

View File

@ -32,7 +32,6 @@ set(PCBNEW_SRCS
block.cpp
block_module_editor.cpp
build_BOM_from_board.cpp
class_layerchoicebox.cpp
class_pcb_layer_widget.cpp
clean.cpp
# cleaningoptions_dialog.cpp

View File

@ -700,6 +700,7 @@ WinEDALayerChoiceBox* WinEDA_PcbFrame::ReCreateLayerBox( WinEDA_Toolbar* parent
if( m_SelLayerBox == NULL )
return NULL;
m_SelLayerBox->m_hotkeys = s_Board_Editor_Hokeys_Descr;
m_SelLayerBox->Resync();
m_SelLayerBox->SetToolTip( _( "+/- to switch" ) );