Commit 98fab0b5 authored by dickelbeck's avatar dickelbeck

visibles work, update TODO.txt

parent 0f366f84
...@@ -19,9 +19,9 @@ option(KICAD_CYRILLIC "enable/disable building using cyrillic (needs unicode) (d ...@@ -19,9 +19,9 @@ option(KICAD_CYRILLIC "enable/disable building using cyrillic (needs unicode) (d
option(wxUSE_UNICODE "enable/disable building unicode (default OFF)") option(wxUSE_UNICODE "enable/disable building unicode (default OFF)")
option(KICAD_GOST "enable/disable building using GOST notation for multiple gates per package (default OFF)") option(KICAD_GOST "enable/disable building using GOST notation for multiple gates per package (default OFF)")
# these are now mandatorily set to ON, and now done so in CMakeModules/config.h.cmake
option(KICAD_AUIMANAGER "Enable use of wxAuiManager (default ON)" ON) #option(KICAD_AUIMANAGER "Enable use of wxAuiManager (default ON)" ON)
option(KICAD_AUITOOLBAR "Enable use of wxAuiToolBar (default ON)" ON) #option(KICAD_AUITOOLBAR "Enable use of wxAuiToolBar (default ON)" ON)
# Comment this out if you don't want to build with Python support. # Comment this out if you don't want to build with Python support.
...@@ -138,8 +138,8 @@ if( KICAD_AUIMANAGER OR KICAD_AUITOOLBAR ) ...@@ -138,8 +138,8 @@ if( KICAD_AUIMANAGER OR KICAD_AUITOOLBAR )
# On Apple only wxwidgets 2.9 or higher doesn't need to find aui part of base # On Apple only wxwidgets 2.9 or higher doesn't need to find aui part of base
if(APPLE) if(APPLE)
find_package(wxWidgets COMPONENTS gl adv html core net base QUIET) find_package(wxWidgets COMPONENTS gl adv html core net base QUIET)
endif(APPLE) endif(APPLE)
else( KICAD_AUIMANAGER OR KICAD_AUITOOLBAR ) else( KICAD_AUIMANAGER OR KICAD_AUITOOLBAR )
find_package(wxWidgets COMPONENTS gl adv html core net base QUIET) find_package(wxWidgets COMPONENTS gl adv html core net base QUIET)
endif( KICAD_AUIMANAGER OR KICAD_AUITOOLBAR ) endif( KICAD_AUIMANAGER OR KICAD_AUITOOLBAR )
......
...@@ -49,8 +49,13 @@ ...@@ -49,8 +49,13 @@
#define strnicmp _strnicmp #define strnicmp _strnicmp
#endif #endif
#if 1
// now mandatory, not configurable
#define KICAD_AUIMANAGER 1
#define KICAD_AUITOOLBAR 1
#else
#cmakedefine KICAD_AUIMANAGER 1 #cmakedefine KICAD_AUIMANAGER 1
#cmakedefine KICAD_AUITOOLBAR 1 #cmakedefine KICAD_AUITOOLBAR 1
#endif
#endif /* __CONFIG_H__ */ #endif /* __CONFIG_H__ */
...@@ -59,25 +59,36 @@ from folks with less than that minimum. ...@@ -59,25 +59,36 @@ from folks with less than that minimum.
PCBNew PCBNew
------ ------
* Fix the color box which shows which layer is selected, or change tool tip. P1) Fix the color box which shows which layer is selected, or change tool tip.
It is not tracking layer changes. Look into WinEDA_PcbFrame::syncLayerBox(), It is not tracking layer changes. Look into WinEDA_PcbFrame::syncLayerBox(),
which is probably where fix should go. which is probably where fix should go.
* Fix block copy/move preview to not view only a border, we should * Fix block copy/move preview to not view only a border, we should
see the moved/copied parts. see the moved/copied parts.
* Fix DIALOG_PAD_PROPERTIES_BASE class to use actual layer names in the BOARD. * Fix DIALOG_PAD_PROPERTIES_BASE class to use actual layer names in the BOARD.
* Use BOARD_ITEM::MenuIcon() in the onrightclick.cpp * Use BOARD_ITEM::MenuIcon() in the onrightclick.cpp
* Document specctra round tripper, and fix the english translation of help. * Document specctra round tripper, and fix the english translation of help.
* Add ARC support to gerber polygons. * Add ARC support to gerber polygons.
* Need to add polygon aperture type. * Need to add polygon aperture type.
Then example 2 in RS274xrevd_e.pdf will draw properly. Then example 2 in RS274xrevd_e.pdf will draw properly.
* Complete the migration to PCB_VISIBLEs and put them into the board,
including grid, so they are saved with a board.
* Write accessors for grid control, so that the write accessor can fire
change notifications to known listeners. But again, grid boolean should
be in the board and accessed via BOARD::IsElementVisible( GRID_VISIBLE );
* Figure out why BOARD::IsElementVisible( PAD_{FR,BK}_VISIBLE ) is never tested,
and why the pads cannot be turned off. Did something get broke?
* Via visibility does not respond to the LAYER_WIDGET.
Dick: Dick:
* Get the nested quote support for DSNLEXER fixed up and committed. * Get the nested quote support for DSNLEXER fixed up and committed.
LAYER_WIDGET for PCBNEW LAYER_WIDGET for PCBNEW
...@@ -95,5 +106,9 @@ L7) make the bitmapbutton a staticbitmap, and make its size dependent on ...@@ -95,5 +106,9 @@ L7) make the bitmapbutton a staticbitmap, and make its size dependent on
L8) LAYER_WIDGET::GetBestSize() needs platform independence. L8) LAYER_WIDGET::GetBestSize() needs platform independence.
L9) On board load, ReFill() is called, this should also update the Render
checkboxes and colors. Will need to extend the widget API.
Dick: Dick:
L9) still thinking about background colors, easier now without wxformbuilder. L9) still thinking about background colors, easier now without wxformbuilder.
...@@ -385,6 +385,8 @@ void BOARD::SetVisibleLayers( int aLayerMask ) ...@@ -385,6 +385,8 @@ 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 )
{ {
m_BoardSettings->SetVisibleElements( aMask ); m_BoardSettings->SetVisibleElements( aMask );
...@@ -397,6 +399,54 @@ int BOARD::GetVisibleElements() const ...@@ -397,6 +399,54 @@ int BOARD::GetVisibleElements() const
} }
bool BOARD::IsElementVisible( int aPCB_VISIBLE ) const
{
// @todo move these special cases into default, by moving globals into the board.
switch( aPCB_VISIBLE )
{
/*
case GRID_VISIBLE:
myframe->m_Draw_Grid = isEnabled;
break;
*/
case MOD_FR_VISIBLE:
return DisplayOpt.Show_Modules_Cmp;
case MOD_BK_VISIBLE:
return DisplayOpt.Show_Modules_Cu;
default:
return m_BoardSettings->IsElementVisible( aPCB_VISIBLE );
}
}
void BOARD::SetElementVisibility( int aPCB_VISIBLE, bool isEnabled )
{
switch( aPCB_VISIBLE )
{
/*
case GRID_VISIBLE:
myframe->m_Draw_Grid = isEnabled;
break;
*/
// @todo move these special cases into default, by moving globals into the board.
case MOD_FR_VISIBLE:
DisplayOpt.Show_Modules_Cmp = isEnabled;
break;
case MOD_BK_VISIBLE:
DisplayOpt.Show_Modules_Cu = isEnabled;
break;
default:
m_BoardSettings->SetElementVisibility( aPCB_VISIBLE, isEnabled );
}
}
int BOARD::GetVisibleElementColor( int aPCB_VISIBLE ) int BOARD::GetVisibleElementColor( int aPCB_VISIBLE )
{ {
int color = -1; int color = -1;
...@@ -410,7 +460,7 @@ int BOARD::GetVisibleElementColor( int aPCB_VISIBLE ) ...@@ -410,7 +460,7 @@ int BOARD::GetVisibleElementColor( int aPCB_VISIBLE )
case VIA_THROUGH_VISIBLE: color = g_ModuleTextCUColor; break; case VIA_THROUGH_VISIBLE: color = g_ModuleTextCUColor; break;
case MOD_TEXT_FR_VISIBLE: color = g_ModuleTextCUColor; break; case MOD_TEXT_FR_VISIBLE: color = g_ModuleTextCUColor; break;
case MOD_TEXT_BK_VISIBLE: color = g_ModuleTextCUColor; break; case MOD_TEXT_BK_VISIBLE: color = g_ModuleTextCUColor; break;
case MOD_TEXT_INVISIBLE: color = g_ModuleTextNOVColor; break; case MOD_TEXT_INVISIBLE: color = g_ModuleTextNOVColor; break;
case ANCHOR_VISIBLE: color = g_AnchorColor; break; case ANCHOR_VISIBLE: color = g_AnchorColor; break;
case PAD_FR_VISIBLE: color = g_PadCMPColor; break; case PAD_FR_VISIBLE: color = g_PadCMPColor; break;
case PAD_BK_VISIBLE: color = g_PadCUColor; break; case PAD_BK_VISIBLE: color = g_PadCUColor; break;
...@@ -434,8 +484,8 @@ void BOARD::SetVisibleElementColor( int aPCB_VISIBLE, int aColor ) ...@@ -434,8 +484,8 @@ void BOARD::SetVisibleElementColor( int aPCB_VISIBLE, int aColor )
case VIA_BBLIND_VISIBLE: m_BoardSettings->m_ViaColor[VIA_BLIND_BURIED] = aColor; break; case VIA_BBLIND_VISIBLE: m_BoardSettings->m_ViaColor[VIA_BLIND_BURIED] = aColor; break;
case VIA_THROUGH_VISIBLE: g_ModuleTextCUColor = aColor; break; case VIA_THROUGH_VISIBLE: g_ModuleTextCUColor = aColor; break;
case MOD_TEXT_FR_VISIBLE: g_ModuleTextCUColor = aColor; break; case MOD_TEXT_FR_VISIBLE: g_ModuleTextCUColor = aColor; break;
case MOD_TEXT_BK_VISIBLE: g_ModuleTextCUColor = aColor; break; case MOD_TEXT_BK_VISIBLE: g_ModuleTextCUColor = aColor; break;
case MOD_TEXT_INVISIBLE: g_ModuleTextNOVColor = aColor; break; case MOD_TEXT_INVISIBLE: g_ModuleTextNOVColor = aColor; break;
case ANCHOR_VISIBLE: g_AnchorColor = aColor; break; case ANCHOR_VISIBLE: g_AnchorColor = aColor; break;
case PAD_FR_VISIBLE: g_PadCMPColor = aColor; break; case PAD_FR_VISIBLE: g_PadCMPColor = aColor; break;
case PAD_BK_VISIBLE: g_PadCUColor = aColor; break; case PAD_BK_VISIBLE: g_PadCUColor = aColor; break;
......
...@@ -283,6 +283,9 @@ public: ...@@ -283,6 +283,9 @@ public:
*/ */
void SetVisibleLayers( int aLayerMask ); void SetVisibleLayers( int aLayerMask );
// these 2 functions are not tidy at this time, since there are PCB_VISIBLEs that
// are not stored in the bitmap.
/** /**
* Function GetVisibleElements * Function GetVisibleElements
* is a proxy function that calls the correspondent function in m_BoardSettings * is a proxy function that calls the correspondent function in m_BoardSettings
...@@ -301,6 +304,25 @@ public: ...@@ -301,6 +304,25 @@ public:
*/ */
void SetVisibleElements( int aMask ); void SetVisibleElements( int aMask );
/**
* Function IsElementVisible
* tests whether a given element category is visible. Keep this as an
* inline function.
* @param aPCB_VISIBLE is from the enum by the same name
* @return bool - true if the element is visible.
* @see enum PCB_VISIBLE
*/
bool IsElementVisible( int aPCB_VISIBLE ) const;
/**
* Function SetElementVisibility
* changes the visibility of an element category
* @param aPCB_VISIBLE is from the enum by the same name
* @param aNewState = The new visibility state of the element category
* @see enum PCB_VISIBLE
*/
void SetElementVisibility( int aPCB_VISIBLE, bool aNewState );
/** /**
* Function GetVisibleElementColor * Function GetVisibleElementColor
* returns the color of a pcb visible element. * returns the color of a pcb visible element.
......
...@@ -137,8 +137,7 @@ PCB_LAYER_WIDGET::PCB_LAYER_WIDGET( WinEDA_PcbFrame* aParent, wxWindow* aFocusOw ...@@ -137,8 +137,7 @@ PCB_LAYER_WIDGET::PCB_LAYER_WIDGET( WinEDA_PcbFrame* aParent, wxWindow* aFocusOw
// this window frame must have an established BOARD, i.e. after SetBoard() // this window frame must have an established BOARD, i.e. after SetBoard()
renderRows[row].color = board->GetVisibleElementColor( renderRows[row].id ); renderRows[row].color = board->GetVisibleElementColor( renderRows[row].id );
} }
// @todo renderRows[row].state = board->IsElementVisible( renderRows[row].id );
// renderRows[row].state = GetBoard()->IsElementVisible( renderRows[row].id );
} }
AppendRenderRows( renderRows, DIM(renderRows) ); AppendRenderRows( renderRows, DIM(renderRows) );
...@@ -380,27 +379,13 @@ void PCB_LAYER_WIDGET::OnRenderEnable( int aId, bool isEnabled ) ...@@ -380,27 +379,13 @@ void PCB_LAYER_WIDGET::OnRenderEnable( int aId, bool isEnabled )
// see todo above, don't really want anything except IsElementVisible() here. // see todo above, don't really want anything except IsElementVisible() here.
case GRID_VISIBLE: case GRID_VISIBLE:
// @todo, make read/write accessors for grid control so the write accessor can fire updates to
// grid state listeners. I think the grid state should be kept in the BOARD.
myframe->m_Draw_Grid = isEnabled; myframe->m_Draw_Grid = isEnabled;
break; break;
case MOD_FR_VISIBLE:
DisplayOpt.Show_Modules_Cmp = isEnabled;
break;
case MOD_BK_VISIBLE:
DisplayOpt.Show_Modules_Cu = isEnabled;
break;
default: default:
brd->SetElementVisibility( aId, isEnabled );
int visibleElements = brd->GetVisibleElements();
if( isEnabled )
visibleElements |= (1 << aId );
else
visibleElements &= ~(1 << aId);
brd->SetVisibleElements( visibleElements );
} }
myframe->DrawPanel->Refresh(); myframe->DrawPanel->Refresh();
......
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