Commit 2e29b4f1 authored by Dick Hollenbeck's avatar Dick Hollenbeck

* Add PCB_EDIT_FRAME::syncLayerVisibilities(), PCB_LAYER_MANAGER::SyncLayerVisibilities().

  * Save all visibilities, layer and render, in BOARD and restore on load.
parent 3976d508
...@@ -4,6 +4,13 @@ KiCad ChangeLog 2012 ...@@ -4,6 +4,13 @@ KiCad ChangeLog 2012
Please add newer entries at the top, list the date and your name with Please add newer entries at the top, list the date and your name with
email address. email address.
2012-Mar-11 UPDATE Dick Hollenbeck <dick@softplc.com>
================================================================================
++pcbnew
* Add PCB_EDIT_FRAME::syncLayerVisibilities, PCB_LAYER_MANAGER::SyncLayerVisibilities().
* Save all visibilities, layer and render, in BOARD and restore on load.
2012-Feb-19 UPDATE Dick Hollenbeck <dick@softplc.com> 2012-Feb-19 UPDATE Dick Hollenbeck <dick@softplc.com>
================================================================================ ================================================================================
++pcbnew ++pcbnew
......
...@@ -265,7 +265,7 @@ wxString ReturnStringFromValue( EDA_UNITS_T aUnit, int aValue, int aInternal_Uni ...@@ -265,7 +265,7 @@ wxString ReturnStringFromValue( EDA_UNITS_T aUnit, int aValue, int aInternal_Uni
value_to_print = To_User_Unit( aUnit, aValue, aInternal_Unit ); value_to_print = To_User_Unit( aUnit, aValue, aInternal_Unit );
/* Yet another 'if Pcbnew' :( */ // Yet another 'if Pcbnew' :(
StringValue.Printf( ( aInternal_Unit > 1000 ) ? wxT( "%.4f" ) : wxT( "%.3f" ), StringValue.Printf( ( aInternal_Unit > 1000 ) ? wxT( "%.4f" ) : wxT( "%.3f" ),
value_to_print ); value_to_print );
...@@ -293,12 +293,12 @@ int ReturnValueFromString( EDA_UNITS_T aUnit, const wxString& TextValue, int Int ...@@ -293,12 +293,12 @@ int ReturnValueFromString( EDA_UNITS_T aUnit, const wxString& TextValue, int Int
int Value; int Value;
double dtmp = 0; double dtmp = 0;
/* Acquire the 'right' decimal point separator */ // Acquire the 'right' decimal point separator
const struct lconv* lc = localeconv(); const struct lconv* lc = localeconv();
wxChar decimal_point = lc->decimal_point[0]; wxChar decimal_point = lc->decimal_point[0];
wxString buf( TextValue.Strip( wxString::both ) ); wxString buf( TextValue.Strip( wxString::both ) );
/* Convert the period in decimal point */ // Convert the period in decimal point
buf.Replace( wxT( "." ), wxString( decimal_point, 1 ) ); buf.Replace( wxT( "." ), wxString( decimal_point, 1 ) );
// An ugly fix needed by WxWidgets 2.9.1 that sometimes // An ugly fix needed by WxWidgets 2.9.1 that sometimes
...@@ -306,7 +306,7 @@ int ReturnValueFromString( EDA_UNITS_T aUnit, const wxString& TextValue, int Int ...@@ -306,7 +306,7 @@ int ReturnValueFromString( EDA_UNITS_T aUnit, const wxString& TextValue, int Int
// TODO: remove this line if WxWidgets 2.9.2 fixes this issue // TODO: remove this line if WxWidgets 2.9.2 fixes this issue
buf.Replace( wxT( "," ), wxString( decimal_point, 1 ) ); buf.Replace( wxT( "," ), wxString( decimal_point, 1 ) );
/* Find the end of the numeric part */ // Find the end of the numeric part
unsigned brk_point = 0; unsigned brk_point = 0;
while( brk_point < buf.Len() ) while( brk_point < buf.Len() )
...@@ -321,10 +321,10 @@ int ReturnValueFromString( EDA_UNITS_T aUnit, const wxString& TextValue, int Int ...@@ -321,10 +321,10 @@ int ReturnValueFromString( EDA_UNITS_T aUnit, const wxString& TextValue, int Int
++brk_point; ++brk_point;
} }
/* Extract the numeric part */ // Extract the numeric part
buf.Left( brk_point ).ToDouble( &dtmp ); buf.Left( brk_point ).ToDouble( &dtmp );
/* Check the optional unit designator (2 ch significant) */ // Check the optional unit designator (2 ch significant)
wxString unit( buf.Mid( brk_point ).Strip( wxString::leading ).Left( 2 ).Lower() ); wxString unit( buf.Mid( brk_point ).Strip( wxString::leading ).Left( 2 ).Lower() );
if( unit == wxT( "in" ) || unit == wxT( "\"" ) ) if( unit == wxT( "in" ) || unit == wxT( "\"" ) )
...@@ -335,7 +335,7 @@ int ReturnValueFromString( EDA_UNITS_T aUnit, const wxString& TextValue, int Int ...@@ -335,7 +335,7 @@ int ReturnValueFromString( EDA_UNITS_T aUnit, const wxString& TextValue, int Int
{ {
aUnit = MILLIMETRES; aUnit = MILLIMETRES;
} }
else if( unit == wxT( "mi" ) || unit == wxT( "th" ) ) /* Mils or thous */ else if( unit == wxT( "mi" ) || unit == wxT( "th" ) ) // Mils or thous
{ {
aUnit = INCHES; aUnit = INCHES;
dtmp /= 1000; dtmp /= 1000;
......
...@@ -207,6 +207,7 @@ static void InitKiCadAboutNew( AboutAppInfo& info ) ...@@ -207,6 +207,7 @@ static void InitKiCadAboutNew( AboutAppInfo& info )
info.AddDeveloper( new Contributor( wxT( "Jean-Pierre Charras" ), info.AddDeveloper( new Contributor( wxT( "Jean-Pierre Charras" ),
wxT( "jean-pierre.charras@gipsa-lab.inpg.fr" ) ) ); wxT( "jean-pierre.charras@gipsa-lab.inpg.fr" ) ) );
info.AddDeveloper( new Contributor( wxT( "Dick Hollenbeck" ), wxT( "dick@softplc.com" ) ) ); info.AddDeveloper( new Contributor( wxT( "Dick Hollenbeck" ), wxT( "dick@softplc.com" ) ) );
info.AddDeveloper( new Contributor( wxT( "Frank Bennett" ), wxT( "bennett78@lpbroadband.net" ) ) );
info.AddDeveloper( new Contributor( wxT( "Hauptmech" ), wxT( "hauptmech@gmail.com" ) ) ); info.AddDeveloper( new Contributor( wxT( "Hauptmech" ), wxT( "hauptmech@gmail.com" ) ) );
info.AddDeveloper( new Contributor( wxT( "Jerry Jacobs" ), info.AddDeveloper( new Contributor( wxT( "Jerry Jacobs" ),
wxT( "xor.gate.engineering@gmail.com" ) ) ); wxT( "xor.gate.engineering@gmail.com" ) ) );
......
...@@ -155,7 +155,7 @@ public: ...@@ -155,7 +155,7 @@ public:
/** /**
* Function IsCustom * Function IsCustom
* returns true if the type is "User" * returns true if the type is Custom
*/ */
bool IsCustom() const; bool IsCustom() const;
...@@ -196,8 +196,6 @@ public: ...@@ -196,8 +196,6 @@ public:
const wxSize GetSizeIU() const { return wxSize( GetWidthIU(), GetHeightIU() ); } const wxSize GetSizeIU() const { return wxSize( GetWidthIU(), GetHeightIU() ); }
#endif #endif
// wxPoint GetOffsetMils() const { return m_Offset; }
int GetLeftMarginMils() const { return m_left_margin; } int GetLeftMarginMils() const { return m_left_margin; }
int GetRightMarginMils() const { return m_right_margin; } int GetRightMarginMils() const { return m_right_margin; }
int GetTopMarginMils() const { return m_top_margin; } int GetTopMarginMils() const { return m_top_margin; }
...@@ -268,12 +266,12 @@ private: ...@@ -268,12 +266,12 @@ private:
}; };
extern wxString g_ProductName; extern wxString g_ProductName;
/// Default user lib path can be left void, if the standard lib path is used /// Default user lib path can be left void, if the standard lib path is used
extern wxString g_UserLibDirBuffer; extern wxString g_UserLibDirBuffer;
extern bool g_ShowPageLimits; ///< true to display the page limits extern bool g_ShowPageLimits; ///< true to display the page limits
/// Name of default configuration file. (kicad.pro) /// Name of default configuration file. (kicad.pro)
extern wxString g_Prj_Default_Config_FullFilename; extern wxString g_Prj_Default_Config_FullFilename;
......
...@@ -11,6 +11,8 @@ ...@@ -11,6 +11,8 @@
#include <boost/ptr_container/ptr_vector.hpp> #include <boost/ptr_container/ptr_vector.hpp>
/** Type of parameter in the configuration file */ /** Type of parameter in the configuration file */
enum paramcfg_id { enum paramcfg_id {
PARAM_INT, PARAM_INT,
...@@ -31,11 +33,15 @@ enum paramcfg_id { ...@@ -31,11 +33,15 @@ enum paramcfg_id {
#define INT_MAXVAL 0x7FFFFFFF #define INT_MAXVAL 0x7FFFFFFF
/** /**
* Class PARAM_CFG_BASE * Class PARAM_CFG_BASE
* is a base class which establishes the virtual functions ReadParam and SaveParam, * is a base class which establishes the interface functions ReadParam and SaveParam,
* which are re-implemented by a number of base classes, and these function's * which are implemented by a number of derived classes, and these function's
* doxygen comments are inherited also. * doxygen comments are inherited also.
* <p>
* See kicad.odt or kicad.pdf, chapter 2 :
* "Installation and configuration/Initialization of the default config".
*/ */
class PARAM_CFG_BASE class PARAM_CFG_BASE
{ {
......
...@@ -133,8 +133,8 @@ protected: ...@@ -133,8 +133,8 @@ protected:
/** /**
* Function syncLayerWidgetLayer * Function syncLayerWidgetLayer
* updates the currently "selected" layer within the PCB_LAYER_WIDGET. * updates the currently layer "selection" within the PCB_LAYER_WIDGET.
* The currently active layer is defined by the return value of getActiveLayer(). * The currently selected layer is defined by the return value of getActiveLayer().
* <p> * <p>
* This function cannot be inline without including layer_widget.h in * This function cannot be inline without including layer_widget.h in
* here and we do not want to do that. * here and we do not want to do that.
...@@ -150,6 +150,14 @@ protected: ...@@ -150,6 +150,14 @@ protected:
*/ */
void syncRenderStates(); void syncRenderStates();
/**
* Function syncLayerVisibilities
* updates each "Layer" checkbox in the layer widget according
* to each layer's current visibility determined by IsLayerVisible(), and is
* helpful immediately after loading a BOARD which may have state information in it.
*/
void syncLayerVisibilities();
virtual void unitsChangeRefresh(); virtual void unitsChangeRefresh();
/** /**
......
...@@ -516,18 +516,15 @@ void BOARD::SetVisibleLayers( int aLayerMask ) ...@@ -516,18 +516,15 @@ void BOARD::SetVisibleLayers( int aLayerMask )
} }
// these are not tidy, since there are PCB_VISIBLEs that are not stored in the bitmap.
void BOARD::SetVisibleElements( int aMask ) void BOARD::SetVisibleElements( int aMask )
{ {
/* Call SetElementVisibility for each item, // Call SetElementVisibility for each item
* to ensure specific calculations that can be needed by some items // to ensure specific calculations that can be needed by some items,
* just change the visibility flags could be not sufficient // just changing the visibility flags could be not sufficient.
*/
for( int ii = 0; ii < PCB_VISIBLE( END_PCB_VISIBLE_LIST ); ii++ ) for( int ii = 0; ii < PCB_VISIBLE( END_PCB_VISIBLE_LIST ); ii++ )
{ {
int item_mask = 1 << ii; int item_mask = 1 << ii;
SetElementVisibility( ii, aMask & item_mask ); SetElementVisibility( ii, bool( aMask & item_mask ) );
} }
} }
...@@ -563,8 +560,8 @@ void BOARD::SetElementVisibility( int aPCB_VISIBLE, bool isEnabled ) ...@@ -563,8 +560,8 @@ void BOARD::SetElementVisibility( int aPCB_VISIBLE, bool isEnabled )
{ {
case RATSNEST_VISIBLE: case RATSNEST_VISIBLE:
// we must clear or set the CH_VISIBLE flags to hide/show ratsnet // we must clear or set the CH_VISIBLE flags to hide/show ratsnest
// because we have a tool to show hide ratsnest relative to a pad or a module // because we have a tool to show/hide ratsnest relative to a pad or a module
// so the hide/show option is a per item selection // so the hide/show option is a per item selection
if( IsElementVisible( RATSNEST_VISIBLE ) ) if( IsElementVisible( RATSNEST_VISIBLE ) )
{ {
......
...@@ -46,7 +46,7 @@ ...@@ -46,7 +46,7 @@
#include <pcbnew_id.h> #include <pcbnew_id.h>
// this is a read only template that is copied and modified before adding to LAYER_WIDGET /// This is a read only template that is copied and modified before adding to LAYER_WIDGET
const LAYER_WIDGET::ROW PCB_LAYER_WIDGET::s_render_rows[] = { const LAYER_WIDGET::ROW PCB_LAYER_WIDGET::s_render_rows[] = {
#define RR LAYER_WIDGET::ROW // Render Row abreviation to reduce source width #define RR LAYER_WIDGET::ROW // Render Row abreviation to reduce source width
...@@ -221,8 +221,30 @@ void PCB_LAYER_WIDGET::SyncRenderStates() ...@@ -221,8 +221,30 @@ void PCB_LAYER_WIDGET::SyncRenderStates()
for( unsigned row=0; row<DIM(s_render_rows); ++row ) for( unsigned row=0; row<DIM(s_render_rows); ++row )
{ {
// this does not fire an event int rowId = s_render_rows[row].id;
SetRenderState( s_render_rows[row].id, board->IsElementVisible( s_render_rows[row].id ) );
// this does not fire a UI event
SetRenderState( rowId, board->IsElementVisible( rowId ) );
}
}
void PCB_LAYER_WIDGET::SyncLayerVisibilities()
{
BOARD* board = myframe->GetBoard();
int count = GetLayerRowCount();
for( int row=0; row<count; ++row )
{
// this utilizes more implementation knowledge than ideal, eventually
// add member ROW getRow() or similar to base LAYER_WIDGET.
wxWindow* w = getLayerComp( row, 0 );
int layerId = getDecodedId( w->GetId() );
// this does not fire a UI event
SetLayerVisible( layerId, board->IsLayerVisible( layerId ) );
} }
} }
......
...@@ -66,6 +66,14 @@ public: ...@@ -66,6 +66,14 @@ public:
*/ */
void SyncRenderStates(); void SyncRenderStates();
/**
* Function SyncLayerVisibilities
* updates each "Layer" checkbox in this layer widget according
* to each layer's current visibility determined by IsLayerVisible(), and is
* helpful immediately after loading a BOARD which may have state information in it.
*/
void SyncLayerVisibilities();
/** /**
* Function SetLayersManagerTabsText * Function SetLayersManagerTabsText
* Update the layer manager tabs labels * Update the layer manager tabs labels
......
...@@ -370,10 +370,17 @@ this file again." ) ); ...@@ -370,10 +370,17 @@ this file again." ) );
ReFillLayerWidget(); ReFillLayerWidget();
ReCreateLayerBox( NULL ); ReCreateLayerBox( NULL );
syncLayerWidgetLayer();
// upate the layer widget to match board visibility states, both layers and render columns.
syncLayerVisibilities();
syncLayerWidgetLayer();
syncRenderStates(); syncRenderStates();
// Update the RATSNEST items, which were not loaded at the time
// BOARD::SetVisibleElements() was called from within any PLUGIN.
// See case RATSNEST_VISIBLE: in BOARD::SetElementVisibility()
GetBoard()->SetVisibleElements( GetBoard()->GetVisibleElements() );
updateTraceWidthSelectBox(); updateTraceWidthSelectBox();
updateViaSizeSelectBox(); updateViaSizeSelectBox();
......
...@@ -217,12 +217,25 @@ int PCB_BASE_FRAME::ReadGeneralDescrPcb( LINE_READER* aReader ) ...@@ -217,12 +217,25 @@ int PCB_BASE_FRAME::ReadGeneralDescrPcb( LINE_READER* aReader )
data = strtok( NULL, delims ); data = strtok( NULL, delims );
sscanf( data, "%X", &enabledLayers ); sscanf( data, "%X", &enabledLayers );
// Setup layer visibility // layer usage
GetBoard()->SetEnabledLayers( enabledLayers ); GetBoard()->SetEnabledLayers( enabledLayers );
// layer visibility equals layer usage, unless overridden later via "VisibleLayers"
GetBoard()->SetVisibleLayers( enabledLayers ); GetBoard()->SetVisibleLayers( enabledLayers );
continue; continue;
} }
if( stricmp( data, "VisibleLayers" ) == 0 )
{
int visibleLayers = -1;
data = strtok( NULL, delims );
sscanf( data, "%X", &visibleLayers );
GetBoard()->SetVisibleLayers( visibleLayers );
continue;
}
if( strncmp( data, "Ly", 2 ) == 0 ) // Old format for Layer count if( strncmp( data, "Ly", 2 ) == 0 ) // Old format for Layer count
{ {
int Masque_Layer = 1, ii; int Masque_Layer = 1, ii;
...@@ -634,7 +647,13 @@ int PCB_BASE_FRAME::ReadSetup( LINE_READER* aReader ) ...@@ -634,7 +647,13 @@ int PCB_BASE_FRAME::ReadSetup( LINE_READER* aReader )
GetScreen()->m_GridOrigin.x = Ox; GetScreen()->m_GridOrigin.x = Ox;
GetScreen()->m_GridOrigin.y = Oy; GetScreen()->m_GridOrigin.y = Oy;
continue;
}
if( stricmp( line, "VisibleElements" ) == 0 )
{
int visibleElements = strtoul( data, 0, 16 );
bds.SetVisibleElements( visibleElements );
continue; continue;
} }
#endif #endif
...@@ -778,6 +797,8 @@ static int WriteSetup( FILE* aFile, PCB_EDIT_FRAME* aFrame, BOARD* aBoard ) ...@@ -778,6 +797,8 @@ static int WriteSetup( FILE* aFile, PCB_EDIT_FRAME* aFrame, BOARD* aBoard )
aFrame->GetOriginAxisPosition().x, aFrame->GetOriginAxisPosition().x,
aFrame->GetOriginAxisPosition().y ); aFrame->GetOriginAxisPosition().y );
fprintf( aFile, "VisibleElements %X\n", bds.GetVisibleElements() );
STRING_FORMATTER sf; STRING_FORMATTER sf;
g_PcbPlotOptions.Format( &sf, 0 ); g_PcbPlotOptions.Format( &sf, 0 );
...@@ -810,7 +831,12 @@ bool PCB_EDIT_FRAME::WriteGeneralDescrPcb( FILE* File ) ...@@ -810,7 +831,12 @@ bool PCB_EDIT_FRAME::WriteGeneralDescrPcb( FILE* File )
fprintf( File, fprintf( File,
"Ly %8X\n", "Ly %8X\n",
g_TabAllCopperLayerMask[NbLayers - 1] | ALL_NO_CU_LAYERS ); g_TabAllCopperLayerMask[NbLayers - 1] | ALL_NO_CU_LAYERS );
fprintf( File, "EnabledLayers %08X\n", GetBoard()->GetEnabledLayers() ); fprintf( File, "EnabledLayers %08X\n", GetBoard()->GetEnabledLayers() );
if( GetBoard()->GetEnabledLayers() != GetBoard()->GetVisibleLayers() )
fprintf( File, "VisibleLayers %08X\n", GetBoard()->GetVisibleLayers() );
fprintf( File, "Links %d\n", GetBoard()->GetRatsnestsCount() ); fprintf( File, "Links %d\n", GetBoard()->GetRatsnestsCount() );
fprintf( File, "NoConn %d\n", GetBoard()->m_NbNoconnect ); fprintf( File, "NoConn %d\n", GetBoard()->m_NbNoconnect );
......
...@@ -356,11 +356,19 @@ void KICAD_PLUGIN::loadGENERAL() ...@@ -356,11 +356,19 @@ void KICAD_PLUGIN::loadGENERAL()
{ {
int enabledLayers = hexParse( line + SZ( "EnabledLayers" ) ); int enabledLayers = hexParse( line + SZ( "EnabledLayers" ) );
// Setup layer visibility // layer usage
m_board->SetEnabledLayers( enabledLayers ); m_board->SetEnabledLayers( enabledLayers );
// layer visibility equals layer usage, unless overridden later via "VisibleLayers"
m_board->SetVisibleLayers( enabledLayers ); m_board->SetVisibleLayers( enabledLayers );
} }
else if( TESTLINE( "VisibleLayers" ) )
{
int visibleLayers = hexParse( line + SZ( "VisibleLayers" ) );
m_board->SetVisibleLayers( visibleLayers );
}
else if( TESTLINE( "Ly" ) ) // Old format for Layer count else if( TESTLINE( "Ly" ) ) // Old format for Layer count
{ {
int layer_mask = hexParse( line + SZ( "Ly" ) ); int layer_mask = hexParse( line + SZ( "Ly" ) );
...@@ -607,18 +615,6 @@ void KICAD_PLUGIN::loadSETUP() ...@@ -607,18 +615,6 @@ void KICAD_PLUGIN::loadSETUP()
} }
} }
/* no more used
else if( TESTLINE( "TrackWidth" ) )
{
}
else if( TESTLINE( "ViaSize" ) )
{
}
else if( TESTLINE( "MicroViaSize" ) )
{
}
*/
else if( TESTLINE( "TrackWidthList" ) ) else if( TESTLINE( "TrackWidthList" ) )
{ {
BIU tmp = biuParse( line + SZ( "TrackWidthList" ) ); BIU tmp = biuParse( line + SZ( "TrackWidthList" ) );
...@@ -794,6 +790,12 @@ void KICAD_PLUGIN::loadSETUP() ...@@ -794,6 +790,12 @@ void KICAD_PLUGIN::loadSETUP()
*/ */
} }
else if( TESTLINE( "VisibleElements" ) )
{
int visibleElements = hexParse( line + SZ( "VisibleElements" ) );
bds.SetVisibleElements( visibleElements );
}
else if( TESTLINE( "$EndSETUP" ) ) else if( TESTLINE( "$EndSETUP" ) )
{ {
m_board->SetDesignSettings( bds ); m_board->SetDesignSettings( bds );
...@@ -2765,6 +2767,10 @@ void KICAD_PLUGIN::saveGENERAL() const ...@@ -2765,6 +2767,10 @@ void KICAD_PLUGIN::saveGENERAL() const
*/ */
fprintf( m_fp, "EnabledLayers %08X\n", m_board->GetEnabledLayers() ); fprintf( m_fp, "EnabledLayers %08X\n", m_board->GetEnabledLayers() );
if( m_board->GetEnabledLayers() != m_board->GetVisibleLayers() )
fprintf( m_fp, "VisibleLayers %08X\n", m_board->GetVisibleLayers() );
fprintf( m_fp, "Links %d\n", m_board->GetRatsnestsCount() ); fprintf( m_fp, "Links %d\n", m_board->GetRatsnestsCount() );
fprintf( m_fp, "NoConn %d\n", m_board->m_NbNoconnect ); fprintf( m_fp, "NoConn %d\n", m_board->m_NbNoconnect );
...@@ -2918,6 +2924,8 @@ void KICAD_PLUGIN::saveSETUP() const ...@@ -2918,6 +2924,8 @@ void KICAD_PLUGIN::saveSETUP() const
} }
*/ */
fprintf( m_fp, "VisibleElements %X\n", bds.GetVisibleElements() );
fprintf( m_fp, "$EndSETUP\n\n" ); fprintf( m_fp, "$EndSETUP\n\n" );
} }
......
...@@ -200,6 +200,7 @@ wxBitmap LAYER_WIDGET::makeBitmap( int aColor ) ...@@ -200,6 +200,7 @@ wxBitmap LAYER_WIDGET::makeBitmap( int aColor )
return bitmap; return bitmap;
} }
wxBitmapButton* LAYER_WIDGET::makeColorButton( wxWindow* aParent, int aColor, int aID ) wxBitmapButton* LAYER_WIDGET::makeColorButton( wxWindow* aParent, int aColor, int aID )
{ {
// dynamically make a wxBitMap and brush it with the appropriate color, // dynamically make a wxBitMap and brush it with the appropriate color,
...@@ -218,6 +219,7 @@ wxBitmapButton* LAYER_WIDGET::makeColorButton( wxWindow* aParent, int aColor, in ...@@ -218,6 +219,7 @@ wxBitmapButton* LAYER_WIDGET::makeColorButton( wxWindow* aParent, int aColor, in
return ret; return ret;
} }
void LAYER_WIDGET::OnLeftDownLayers( wxMouseEvent& event ) void LAYER_WIDGET::OnLeftDownLayers( wxMouseEvent& event )
{ {
int row; int row;
...@@ -325,6 +327,7 @@ void LAYER_WIDGET::OnMiddleDownRenderColor( wxMouseEvent& event ) ...@@ -325,6 +327,7 @@ void LAYER_WIDGET::OnMiddleDownRenderColor( wxMouseEvent& event )
passOnFocus(); passOnFocus();
} }
void LAYER_WIDGET::OnRenderCheckBox( wxCommandEvent& event ) void LAYER_WIDGET::OnRenderCheckBox( wxCommandEvent& event )
{ {
wxCheckBox* eventSource = (wxCheckBox*) event.GetEventObject(); wxCheckBox* eventSource = (wxCheckBox*) event.GetEventObject();
...@@ -457,7 +460,7 @@ void LAYER_WIDGET::insertRenderRow( int aRow, const ROW& aSpec ) ...@@ -457,7 +460,7 @@ void LAYER_WIDGET::insertRenderRow( int aRow, const ROW& aSpec )
else // == -1, no color selection wanted else // == -1, no color selection wanted
{ {
// need a place holder within the sizer to keep grid full. // need a place holder within the sizer to keep grid full.
wxPanel* invisible = new wxPanel( m_RenderScrolledWindow ); wxPanel* invisible = new wxPanel( m_RenderScrolledWindow, encodeId( col, aSpec.id ) );
m_RenderFlexGridSizer->wxSizer::Insert( index+col, invisible, 0, flags ); m_RenderFlexGridSizer->wxSizer::Insert( index+col, invisible, 0, flags );
} }
......
...@@ -166,11 +166,12 @@ protected: ...@@ -166,11 +166,12 @@ protected:
/** /**
* Function getLayerComp * Function getLayerComp
* returns the component within the m_LayersFlexGridSizer at aRow and aCol * returns the component within the m_LayersFlexGridSizer at @a aRow and @a aCol
* or NULL if \a these parameters are out of range. * or NULL if these parameters are out of range.
* *
* @param aRow is the row index * @param aRow is the row index
* @param aColumn is the column * @param aColumn is the column
* @return wxWindow - the component installed within the sizer at given grid coordinate.
*/ */
wxWindow* getLayerComp( int aRow, int aColumn ); wxWindow* getLayerComp( int aRow, int aColumn );
wxWindow* getRenderComp( int aRow, int aColumn ); wxWindow* getRenderComp( int aRow, int aColumn );
...@@ -278,7 +279,6 @@ public: ...@@ -278,7 +279,6 @@ public:
AppendRenderRow( aRowsArray[row] ); AppendRenderRow( aRowsArray[row] );
} }
/** /**
* Function ClearRenderRows * Function ClearRenderRows
* empties out the render rows. * empties out the render rows.
...@@ -419,5 +419,4 @@ public: ...@@ -419,5 +419,4 @@ public:
//-----</abstract functions>------------------------------------------ //-----</abstract functions>------------------------------------------
}; };
#endif // LAYERWIDGET_H_ #endif // LAYERWIDGET_H_
...@@ -653,6 +653,12 @@ void PCB_EDIT_FRAME::syncRenderStates() ...@@ -653,6 +653,12 @@ void PCB_EDIT_FRAME::syncRenderStates()
} }
void PCB_EDIT_FRAME::syncLayerVisibilities()
{
m_Layers->SyncLayerVisibilities();
}
void PCB_EDIT_FRAME::unitsChangeRefresh() void PCB_EDIT_FRAME::unitsChangeRefresh()
{ {
PCB_BASE_FRAME::unitsChangeRefresh(); // Update the grid size select box. PCB_BASE_FRAME::unitsChangeRefresh(); // Update the grid size select box.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment