diff --git a/change_log.txt b/change_log.txt index 8ca9a545aa..0cb3843934 100644 --- a/change_log.txt +++ b/change_log.txt @@ -4,6 +4,25 @@ Started 2007-June-11 Please add newer entries at the top, list the date and your name with email address. +2007-Oct-11 UPDATE Geoff Harland +================================================================================ ++ pcbnew + * The previously provided "Exit" button within the "Colors:" dialog box has been + replaced with "OK", "Cancel", and "Apply" buttons, and the code for editing the + visibility of the Grid layer from that dialog now is "cleaner" than before. + Details associated with buttons within that dialog box moved from set_color.cpp + to set_color.h (matching implementation for GerbView's corresponding dialog box). + * Fixed bug which previously prevented the Copper layer from being selected as the + current layer when only one copper layer is enabled (and made some modifications + to the code for selecting the next copper layer and previous copper layer). ++ gerbview + * The code for editing the visibility of the Grid layer from the "GerbView Layer + Colors:" dialog box is "cleaner" than before, and assorted other beautification. ++ eeschema + * The options.cpp file (which is no longer used) has been removed, and replaced + with options.cpp.notused + + 2007-Oct-10 UPDATE Dick Hollenbeck ================================================================================ + pcbnew diff --git a/eeschema/options.cpp b/eeschema/options.cpp.notused similarity index 100% rename from eeschema/options.cpp rename to eeschema/options.cpp.notused diff --git a/pcbnew/basepcbframe.cpp b/pcbnew/basepcbframe.cpp index 2d8c6054cd..f1747a636f 100644 --- a/pcbnew/basepcbframe.cpp +++ b/pcbnew/basepcbframe.cpp @@ -154,20 +154,47 @@ void WinEDA_BasePcbFrame::GetComponentFromRedoList( void ) void WinEDA_BasePcbFrame::SwitchLayer( wxDC* DC, int layer ) /*****************************************************************/ -//Note: virtual, overridden in WinEDA_PcbFrame; +// Note: virtual, overridden in WinEDA_PcbFrame; { int preslayer = GetScreen()->m_Active_Layer; - //if there is only one layer, don't switch. - if( m_Pcb->m_BoardSettings->m_CopperLayerCount <= 1 ) - layer = COPPER_LAYER_N; // Of course we select the copper layer - - //otherwise, we select the requested layer only if it is possible - if( layer != LAYER_CMP_N && layer >= m_Pcb->m_BoardSettings->m_CopperLayerCount - 1 ) + // Check if the specified layer matches the present layer + if( layer == preslayer ) return; - if( preslayer == layer ) - return; + // Copper layers cannot be selected unconditionally; how many + // of those layers are currently enabled needs to be checked. + if( (layer >= COPPER_LAYER_N) && (layer <= CMP_N) ) + { + // If only one copper layer is enabled, the only such layer + // that can be selected to is the "Copper" layer (so the + // selection of any other copper layer is disregarded). + if( m_Pcb->m_BoardSettings->m_CopperLayerCount < 2 ) + { + if( layer != COPPER_LAYER_N ) + { + return; + } + } + + // If more than one copper layer is enabled, the "Copper" + // and "Component" layers can be selected, but the total + // number of copper layers determines which internal + // layers are also capable of being selected. + else + { + if( (layer != COPPER_LAYER_N) && (layer != LAYER_CMP_N) + && (layer >= m_Pcb->m_BoardSettings->m_CopperLayerCount - 1) ) + { + return; + } + } + } + + // Is yet more checking required? E.g. when the layer to be selected + // is a non-copper layer, or when switching between a copper layer + // and a non-copper layer, or vice-versa? + // ... GetScreen()->m_Active_Layer = layer; diff --git a/pcbnew/edit.cpp b/pcbnew/edit.cpp index b4f8fc330b..d2dfc94996 100644 --- a/pcbnew/edit.cpp +++ b/pcbnew/edit.cpp @@ -13,6 +13,8 @@ #include "id.h" #include "protos.h" +// Uncomment following line to enable wxBell() command (which beeps speaker) +// #include static void Process_Move_Item( WinEDA_PcbFrame* frame, EDA_BaseStruct* DrawStruct, wxDC* DC ); @@ -621,7 +623,7 @@ void WinEDA_PcbFrame::Process_Special_Functions( wxCommandEvent& event ) break; case ID_POPUP_PCB_SELECT_NO_CU_LAYER: - itmp = SelectLayer( GetScreen()->m_Active_Layer, CMP_N + 1, -1 ); + itmp = SelectLayer( GetScreen()->m_Active_Layer, FIRST_NO_COPPER_LAYER, -1 ); if( itmp >= 0 ) GetScreen()->m_Active_Layer = itmp; DrawPanel->MouseToCursorSchema(); @@ -982,36 +984,73 @@ void WinEDA_PcbFrame::SwitchLayer( wxDC* DC, int layer ) { int preslayer = GetScreen()->m_Active_Layer; - //if there is only one layer, don't switch. - if( m_Pcb->m_BoardSettings->m_CopperLayerCount <= 1 ) + // Check if the specified layer matches the present layer + if( layer == preslayer ) return; - //otherwise, must be at least 2 layers. see if it is possible. - if( layer == COPPER_LAYER_N || layer == LAYER_CMP_N - || layer < m_Pcb->m_BoardSettings->m_CopperLayerCount - 1 ) + // Copper layers cannot be selected unconditionally; how many + // of those layers are currently enabled needs to be checked. + if( (layer >= COPPER_LAYER_N) && (layer <= CMP_N) ) { - if( preslayer == layer ) - return; + // If only one copper layer is enabled, the only such layer + // that can be selected to is the "Copper" layer (so the + // selection of any other copper layer is disregarded). + if( m_Pcb->m_BoardSettings->m_CopperLayerCount < 2 ) + { + if( layer != COPPER_LAYER_N ) + { + // Uncomment following command (and line 17) to beep + // the speaker. (Doing that would provide feedback to + // the user that the (layer-switching) command has been + // "acknowledged", but is unable to be acted upon.) +// wxBell(); + return; + } + } + + // If more than one copper layer is enabled, the "Copper" + // and "Component" layers can be selected, but the total + // number of copper layers determines which internal + // layers are also capable of being selected. + else + { + if( (layer != COPPER_LAYER_N) && (layer != LAYER_CMP_N) + && (layer >= m_Pcb->m_BoardSettings->m_CopperLayerCount - 1) ) + { + // Uncomment following command (and line 17) to beep + // the speaker. (Doing that would provide feedback to + // the user that the (layer-switching) command has been + // "acknowledged", but is unable to be acted upon.) +// wxBell(); + return; + } + } + EDA_BaseStruct* current = GetScreen()->GetCurItem(); - //see if we are drawing a segment; if so, add a via? + // See if we are drawing a segment; if so, add a via? if( m_ID_current_state == ID_TRACK_BUTT && current != NULL ) { if( current->Type() == TYPETRACK && (current->m_Flags & IS_NEW) ) { - //want to set the routing layers so that it switches properly - - //see the implementation of Other_Layer_Route - the working - //layer is used to 'start' the via and set the layer masks appropriately. + // Want to set the routing layers so that it switches properly - + // see the implementation of Other_Layer_Route - the working + // layer is used to 'start' the via and set the layer masks appropriately. GetScreen()->m_Route_Layer_TOP = preslayer; GetScreen()->m_Route_Layer_BOTTOM = layer; GetScreen()->m_Active_Layer = preslayer; Other_Layer_Route( (TRACK*) GetScreen()->GetCurItem(), DC ); } } - - GetScreen()->m_Active_Layer = layer; - - if( DisplayOpt.ContrastModeDisplay ) - GetScreen()->SetRefreshReq(); } + + // Is yet more checking required? E.g. when the layer to be selected + // is a non-copper layer, or when switching between a copper layer + // and a non-copper layer, or vice-versa? + // ... + + GetScreen()->m_Active_Layer = layer; + + if( DisplayOpt.ContrastModeDisplay ) + GetScreen()->SetRefreshReq(); } diff --git a/pcbnew/hotkeys.cpp b/pcbnew/hotkeys.cpp index 648dd4c52e..598c234fcd 100644 --- a/pcbnew/hotkeys.cpp +++ b/pcbnew/hotkeys.cpp @@ -23,7 +23,7 @@ * add the HkMyNewEntry pointer in the s_board_edit_Hotkey_List list ( or/and the s_module_edit_Hotkey_List list) * Add the new code in the switch in OnHotKey() function. * when the variable PopupOn is true, an item is currently edited. - * This can be usefull if the new function cannot be executed while an item is currently being edited + * This can be useful if the new function cannot be executed while an item is currently being edited * ( For example, one cannot start a new wire when a component is moving.) * * Note: If an hotkey is a special key, be sure the corresponding wxWidget keycode (WXK_XXXX) @@ -202,28 +202,27 @@ void WinEDA_PcbFrame::OnHotKey( wxDC* DC, int hotkey, case HK_SWITCH_LAYER_TO_PREVIOUS: ll = GetScreen()->m_Active_Layer; - if( ll > CMP_N ) + if( (ll <= COPPER_LAYER_N) || (ll > CMP_N) ) break; - if( ll <= COPPER_LAYER_N ) - break; - if( m_Pcb->m_BoardSettings->m_CopperLayerCount <= 1 ) // Single layer + if( m_Pcb->m_BoardSettings->m_CopperLayerCount < 2 ) // Single layer ll = COPPER_LAYER_N; - if( ll == CMP_N ) + else if( ll == CMP_N ) ll = MAX( COPPER_LAYER_N, m_Pcb->m_BoardSettings->m_CopperLayerCount - 2 ); - else if( ll > COPPER_LAYER_N ) + else ll--; SwitchLayer( DC, ll ); break; case HK_SWITCH_LAYER_TO_NEXT: ll = GetScreen()->m_Active_Layer; - if( ll >= CMP_N ) + if( (ll < COPPER_LAYER_N) || (ll >= CMP_N) ) break; - ll++; - if( ll >= m_Pcb->m_BoardSettings->m_CopperLayerCount - 1 ) - ll = CMP_N; - if( m_Pcb->m_BoardSettings->m_CopperLayerCount <= 1 ) // Single layer + if( m_Pcb->m_BoardSettings->m_CopperLayerCount < 2 ) // Single layer ll = COPPER_LAYER_N; + else if( ll >= m_Pcb->m_BoardSettings->m_CopperLayerCount - 2 ) + ll = CMP_N; + else + ll++; SwitchLayer( DC, ll ); break; diff --git a/pcbnew/set_color.cpp b/pcbnew/set_color.cpp index df3bc93cb7..5608f70c73 100644 --- a/pcbnew/set_color.cpp +++ b/pcbnew/set_color.cpp @@ -10,20 +10,21 @@ /* Variables locales */ -int CurrentColor; +const int BUTT_SIZE_X = 25; +const int BUTT_SIZE_Y = 15; + +const int COLOR_COUNT = 43; // 43 = 29 (layers) + 11 (others) + 3 (headings) + // Is there a better way to determine how many elements CurrentColor requires? +int CurrentColor[COLOR_COUNT]; // Holds color for each layer while dialog box open + /* Fonctions locales: */ /* Macro utile : */ #define ADR( numlayer ) &g_DesignSettings.m_LayerColor[(numlayer)] -#define BUTT_SIZE_X 25 -#define BUTT_SIZE_Y 15 - - enum col_sel_id { ID_COLOR_RESET_SHOW_LAYER_ON = 1800, ID_COLOR_RESET_SHOW_LAYER_OFF, - ID_COLOR_EXIT, ID_COLOR_CHECKBOX_ONOFF, ID_COLOR_SETUP }; @@ -38,447 +39,15 @@ struct ColorButton int* m_Color; ///< pointer to color variable to manipulate bool m_NoDisplayIsColor; ///< TRUE if bit ITEM_NOT_SHOW of the color variable should be manipulated bool* m_NoDisplay; ///< pointer to the on/off display control variable, if it is not the color variable + int m_Id; wxBitmapButton* m_Button; int m_State; wxCheckBox* m_CheckBox; ///< Display ON/OFF toggle }; +#include "set_color.h" // Include description and list of tools and buttons -static ColorButton Msg_Layers_Cu = -{ - _( "Copper Layers" ), -1 /* Title */ -}; - -static ColorButton Layer_1_Butt = -{ - wxEmptyString, - COPPER_LAYER_N, /* Title */ - ADR( COPPER_LAYER_N ), /* adr du parametre optionnel */ - TRUE // toggle bit ITEM_NOT_SHOW of the color variable -}; - -static ColorButton Layer_2_Butt = -{ - wxEmptyString, - 1, /* Title */ - ADR( 1 ), /* adr du parametre optionnel */ - TRUE // toggle bit ITEM_NOT_SHOW of the color variable -}; - -static ColorButton Layer_3_Butt = -{ - wxEmptyString, - 2, /* Title */ - ADR( 2 ), /* adr du parametre optionnel */ - TRUE // toggle bit ITEM_NOT_SHOW of the color variable -}; - -static ColorButton Layer_4_Butt = -{ - wxEmptyString, - 3, /* Title */ - ADR( 3 ), /* adr du parametre optionnel */ - TRUE // toggle bit ITEM_NOT_SHOW of the color variable -}; - -static ColorButton Layer_5_Butt = -{ - wxEmptyString, - 4, /* Title */ - ADR( 4 ), /* adr du parametre optionnel */ - TRUE // toggle bit ITEM_NOT_SHOW of the color variable -}; - -static ColorButton Layer_6_Butt = -{ - wxEmptyString, - 5, /* Title */ - ADR( 5 ), /* adr du parametre optionnel */ - TRUE // toggle bit ITEM_NOT_SHOW of the color variable -}; - -static ColorButton Layer_7_Butt = -{ - wxEmptyString, - 6, /* Title */ - ADR( 6 ), /* adr du parametre optionnel */ - TRUE // toggle bit ITEM_NOT_SHOW of the color variable -}; - -static ColorButton Layer_8_Butt = -{ - wxEmptyString, - 7, /* Title */ - ADR( 7 ), /* adr du parametre optionnel */ - TRUE // toggle bit ITEM_NOT_SHOW of the color variable -}; - -static ColorButton Layer_9_Butt = -{ - wxEmptyString, - 8, /* Title */ - ADR( 8 ), /* adr du parametre optionnel */ - TRUE // toggle bit ITEM_NOT_SHOW of the color variable -}; - -static ColorButton Layer_10_Butt = -{ - wxEmptyString, - 9, /* Title */ - ADR( 9 ), /* adr du parametre optionnel */ - TRUE // toggle bit ITEM_NOT_SHOW of the color variable -}; - -static ColorButton Layer_11_Butt = -{ - wxEmptyString, - 10, /* Title */ - ADR( 10 ), /* adr du parametre optionnel */ - TRUE // toggle bit ITEM_NOT_SHOW of the color variable -}; - -static ColorButton Layer_12_Butt = -{ - wxEmptyString, - 11, /* Title */ - ADR( 11 ), /* adr du parametre optionnel */ - TRUE // toggle bit ITEM_NOT_SHOW of the color variable -}; - -static ColorButton Layer_13_Butt = -{ - wxEmptyString, - 12, /* Title */ - ADR( 12 ), /* adr du parametre optionnel */ - TRUE // toggle bit ITEM_NOT_SHOW of the color variable -}; - -static ColorButton Layer_14_Butt = -{ - wxEmptyString, - 13, /* Title */ - ADR( 13 ), /* adr du parametre optionnel */ - TRUE // toggle bit ITEM_NOT_SHOW of the color variable -}; - -static ColorButton Layer_15_Butt = -{ - wxEmptyString, - 14, /* Title */ - ADR( 14 ), /* adr du parametre optionnel */ - TRUE // toggle bit ITEM_NOT_SHOW of the color variable -}; - -static ColorButton Layer_16_Butt = -{ - wxEmptyString, - CMP_N, /* Title */ - ADR( CMP_N ), /* adr du parametre optionnel */ - TRUE // toggle bit ITEM_NOT_SHOW of the color variable -}; - - -static ColorButton Msg_Layers_Tech = -{ - _( "Tech Layers" ), -1 /* Title */ -}; - -static ColorButton Layer_17_Butt = -{ - wxEmptyString, - ADHESIVE_N_CU, /* Title */ - ADR( ADHESIVE_N_CU ), /* adr du parametre optionnel */ - TRUE // toggle bit ITEM_NOT_SHOW of the color variable -}; - -static ColorButton Layer_18_Butt = -{ - wxEmptyString, - ADHESIVE_N_CMP, /* Title */ - ADR( ADHESIVE_N_CMP ), /* adr du parametre optionnel */ - TRUE // toggle bit ITEM_NOT_SHOW of the color variable -}; - -static ColorButton Layer_19_Butt = -{ - wxEmptyString, - SOLDERPASTE_N_CU, /* Title */ - ADR( SOLDERPASTE_N_CU ), /* adr du parametre optionnel */ - TRUE // toggle bit ITEM_NOT_SHOW of the color variable -}; - -static ColorButton Layer_20_Butt = -{ - wxEmptyString, - SOLDERPASTE_N_CMP, /* Title */ - ADR( SOLDERPASTE_N_CMP ), /* adr du parametre optionnel */ - TRUE // toggle bit ITEM_NOT_SHOW of the color variable -}; - -static ColorButton Layer_21_Butt = -{ - wxEmptyString, - SILKSCREEN_N_CU, /* Title */ - ADR( SILKSCREEN_N_CU ), /* adr du parametre optionnel */ - TRUE // toggle bit ITEM_NOT_SHOW of the color variable -}; - -static ColorButton Layer_22_Butt = -{ - wxEmptyString, - SILKSCREEN_N_CMP, /* Title */ - ADR( SILKSCREEN_N_CMP ), /* adr du parametre optionnel */ - TRUE // toggle bit ITEM_NOT_SHOW of the color variable -}; - -static ColorButton Layer_23_Butt = -{ - wxEmptyString, - SOLDERMASK_N_CU, /* Title */ - ADR( SOLDERMASK_N_CU ), /* adr du parametre optionnel */ - TRUE /* adr du parametre display on/off */ -}; - -static ColorButton Layer_24_Butt = -{ - wxEmptyString, - SOLDERMASK_N_CMP, /* Title */ - ADR( SOLDERMASK_N_CMP ), /* adr du parametre optionnel */ - TRUE // toggle bit ITEM_NOT_SHOW of the color variable -}; - -static ColorButton Layer_25_Butt = -{ - wxEmptyString, - DRAW_N, /* Title */ - ADR( DRAW_N ), /* adr du parametre optionnel */ - TRUE // toggle bit ITEM_NOT_SHOW of the color variable -}; - -static ColorButton Layer_26_Butt = -{ - wxEmptyString, - COMMENT_N, /* Title */ - ADR( COMMENT_N ), /* adr du parametre optionnel */ - TRUE // toggle bit ITEM_NOT_SHOW of the color variable -}; - -static ColorButton Layer_27_Butt = -{ - wxEmptyString, - ECO1_N, /* Title */ - ADR( ECO1_N ), /* adr du parametre optionnel */ - TRUE // toggle bit ITEM_NOT_SHOW of the color variable -}; - -static ColorButton Layer_28_Butt = -{ - wxEmptyString, - ECO2_N, /* Title */ - ADR( ECO2_N ), /* adr du parametre optionnel */ - TRUE // toggle bit ITEM_NOT_SHOW of the color variable -}; - -static ColorButton Layer_29_Butt = -{ - wxEmptyString, - EDGE_N, /* Title */ - ADR( EDGE_N ), /* adr du parametre optionnel */ - TRUE // toggle bit ITEM_NOT_SHOW of the color variable -}; - - -static ColorButton Msg_Others_Items = -{ - wxT( "Others" ), -1 /* Title */ -}; - -static ColorButton Via_Normale_Butt = -{ - wxT( "*" ), - VIA_NORMALE, /* Title */ - &g_DesignSettings.m_ViaColor[VIA_NORMALE], /* adr du parametre optionnel */ - TRUE // toggle bit ITEM_NOT_SHOW of the color variable -}; - -static ColorButton Via_Aveugle_Butt = -{ - wxT( "*" ), - VIA_ENTERREE, /* Title */ - &g_DesignSettings.m_ViaColor[VIA_ENTERREE], /* adr du parametre optionnel */ - TRUE // toggle bit ITEM_NOT_SHOW of the color variable -}; - -static ColorButton Via_Borgne_Butt = -{ - wxT( "*" ), - VIA_BORGNE, /* Title */ - &g_DesignSettings.m_ViaColor[VIA_BORGNE], /* adr du parametre optionnel */ - TRUE // toggle bit ITEM_NOT_SHOW of the color variable -}; - -static ColorButton Ratsnest_Butt = -{ - _( "Ratsnest" ), /* Title */ - -1, - &g_DesignSettings.m_RatsnestColor, /* adr du parametre optionnel */ - FALSE, - &g_Show_Ratsnest // address of boolean display control parameter to toggle -}; - -static ColorButton Pad_Cu_Butt = -{ - _( "Pad Cu" ), /* Title */ - -1, - &g_PadCUColor, /* adr du parametre optionnel */ - TRUE // toggle bit ITEM_NOT_SHOW of the color variable -}; - -static ColorButton Pad_Cmp_Butt = -{ - _( "Pad Cmp" ), /* Title */ - -1, - &g_PadCMPColor, /* adr du parametre optionnel */ - TRUE // toggle bit ITEM_NOT_SHOW of the color variable -}; - -static ColorButton Text_Mod_Cu_Butt = -{ - _( "Text Module Cu" ), /* Title */ - -1, - &g_ModuleTextCUColor, /* adr du parametre optionnel */ - TRUE // toggle bit ITEM_NOT_SHOW of the color variable -}; - -static ColorButton Text_Mod_Cmp_Butt = -{ - _( "Text Module Cmp" ), /* Title */ - -1, - &g_ModuleTextCMPColor, /* adr du parametre optionnel */ - TRUE // toggle bit ITEM_NOT_SHOW of the color variable -}; - -static ColorButton Text_Mod_NoVisible_Butt = -{ - _( "Text Module invisible" ), /* Title */ - -1, - &g_ModuleTextNOVColor, /* adr du parametre optionnel */ - TRUE // toggle bit ITEM_NOT_SHOW of the color variable -}; - -static ColorButton Anchors_Butt = -{ - _( "Anchors" ), /* Title */ - -1, - &g_AnchorColor, /* adr du parametre optionnel */ - TRUE // toggle bit ITEM_NOT_SHOW of the color variable -}; - -static ColorButton Grid_Butt = -{ - _( "Grid" ), /* Title */ - -1, - &g_GridColor, /* adr du parametre optionnel */ - FALSE, - &g_ShowGrid // address of boolean display control parameter to toggle -}; - -static ColorButton Show_Zones_Butt = -{ - _( "Show Zones" ), /* Title */ - -1, - NULL, /* adr du parametre optionnel */ - FALSE, - &DisplayOpt.DisplayZones // address of boolean display control parameter to toggle -}; - -static ColorButton Show_Pads_Noconnect_Butt = -{ - _( "Show Noconnect" ), /* Title */ - -1, - NULL, /* adr du parametre optionnel */ - FALSE, - &DisplayOpt.DisplayPadNoConn // address of boolean display control parameter to toggle -}; - -static ColorButton Show_Modules_Cmp_Butt = -{ - _( "Show Modules Cmp" ), /* Title */ - -1, - NULL, /* adr du parametre optionnel */ - FALSE, - &DisplayOpt.Show_Modules_Cmp // address of boolean display control parameter to toggle -}; - -static ColorButton Show_Modules_Cu_Butt = -{ - _( "Show Modules Cu" ), /* Title */ - -1, - NULL, /* adr du parametre optionnel */ - FALSE, - &DisplayOpt.Show_Modules_Cu // address of boolean display control parameter to toggle -}; - - -static ColorButton* laytool_list[] = { - &Msg_Layers_Cu, - &Layer_1_Butt, - &Layer_2_Butt, - &Layer_3_Butt, - &Layer_4_Butt, - &Layer_5_Butt, - &Layer_6_Butt, - &Layer_7_Butt, - &Layer_8_Butt, - &Layer_9_Butt, - &Layer_10_Butt, - &Layer_11_Butt, - &Layer_12_Butt, - &Layer_13_Butt, - &Layer_14_Butt, - &Layer_15_Butt, - &Layer_16_Butt, - - &Msg_Layers_Tech, - &Layer_17_Butt, - &Layer_18_Butt, - &Layer_19_Butt, - &Layer_20_Butt, - &Layer_21_Butt, - &Layer_22_Butt, - &Layer_23_Butt, - &Layer_24_Butt, - &Layer_25_Butt, - &Layer_26_Butt, - &Layer_27_Butt, - &Layer_28_Butt, - &Layer_29_Butt, - -// &Layer_30_Butt, -// &Layer_31_Butt, -// &Layer_32_Butt, - - &Msg_Others_Items, - &Via_Normale_Butt, - &Via_Aveugle_Butt, - &Via_Borgne_Butt, - &Ratsnest_Butt, - &Pad_Cu_Butt, - &Pad_Cmp_Butt, - &Text_Mod_Cu_Butt, - &Text_Mod_Cmp_Butt, - &Text_Mod_NoVisible_Butt, - &Anchors_Butt, - &Grid_Butt, - - &Show_Zones_Butt, - &Show_Pads_Noconnect_Butt, - &Show_Modules_Cmp_Butt, - &Show_Modules_Cu_Butt, - - NULL -}; /*************************************************************/ /* classe derivee pour la frame de Configuration des couleurs*/ @@ -496,9 +65,11 @@ public: ~WinEDA_SetColorsFrame() { }; private: - void OnQuit( wxCommandEvent& event ); void SetColor( wxCommandEvent& event ); - void SetDisplayOnOff( wxCommandEvent& event ); + void OnOkClick( wxCommandEvent& event ); + void OnCancelClick( wxCommandEvent& event ); + void OnApplyClick( wxCommandEvent& event ); + void UpdateLayerSettings(); void ResetDisplayLayersCu( wxCommandEvent& event ); DECLARE_EVENT_TABLE() @@ -509,8 +80,9 @@ private: BEGIN_EVENT_TABLE( WinEDA_SetColorsFrame, wxDialog ) EVT_BUTTON( ID_COLOR_RESET_SHOW_LAYER_OFF, WinEDA_SetColorsFrame::ResetDisplayLayersCu ) EVT_BUTTON( ID_COLOR_RESET_SHOW_LAYER_ON, WinEDA_SetColorsFrame::ResetDisplayLayersCu ) - EVT_BUTTON( ID_COLOR_EXIT, WinEDA_SetColorsFrame::OnQuit ) - EVT_CHECKBOX( ID_COLOR_CHECKBOX_ONOFF, WinEDA_SetColorsFrame::SetDisplayOnOff ) + EVT_BUTTON( wxID_OK, WinEDA_SetColorsFrame::OnOkClick ) + EVT_BUTTON( wxID_CANCEL, WinEDA_SetColorsFrame::OnCancelClick ) + EVT_BUTTON( wxID_APPLY, WinEDA_SetColorsFrame::OnApplyClick ) EVT_BUTTON( ID_COLOR_SETUP, WinEDA_SetColorsFrame::SetColor ) EVT_BUTTON( ID_COLOR_SETUP + 1, WinEDA_SetColorsFrame::SetColor ) EVT_BUTTON( ID_COLOR_SETUP + 2, WinEDA_SetColorsFrame::SetColor ) @@ -554,7 +126,7 @@ BEGIN_EVENT_TABLE( WinEDA_SetColorsFrame, wxDialog ) EVT_BUTTON( ID_COLOR_SETUP + 40, WinEDA_SetColorsFrame::SetColor ) EVT_BUTTON( ID_COLOR_SETUP + 41, WinEDA_SetColorsFrame::SetColor ) EVT_BUTTON( ID_COLOR_SETUP + 42, WinEDA_SetColorsFrame::SetColor ) - EVT_BUTTON( ID_COLOR_SETUP + 43, WinEDA_SetColorsFrame::SetColor ) +// EVT_BUTTON( ID_COLOR_SETUP + 43, WinEDA_SetColorsFrame::SetColor ) // EVT_BUTTON( ID_COLOR_SETUP + 44, WinEDA_SetColorsFrame::SetColor ) END_EVENT_TABLE() @@ -582,27 +154,24 @@ WinEDA_SetColorsFrame::WinEDA_SetColorsFrame( int ii, yy, xx, butt_ID, buttcolor; wxPoint pos; wxSize winsize; - int w = BUTT_SIZE_X; - int h = BUTT_SIZE_Y; wxString msg; m_Parent = parent; - SetFont( *g_DialogFont ); pos.x = 5; pos.y = START_Y; - + for( ii = 0; laytool_list[ii] != NULL; ii++ ) { if( !laytool_list[ii]->m_Color && !laytool_list[ii]->m_NoDisplay ) { if( pos.y != START_Y ) { - pos.x += w + 120; + pos.x += BUTT_SIZE_X + 120; pos.y = START_Y; } - + if( laytool_list[ii]->m_LayerNumber >= 0 ) { if( laytool_list[ii]->m_Title == wxT( "*" ) ) @@ -616,7 +185,7 @@ WinEDA_SetColorsFrame::WinEDA_SetColorsFrame( msg = wxGetTranslation( laytool_list[ii]->m_Title.GetData() ); new wxStaticText( this, -1, msg, - wxPoint (pos.x + 10, pos.y - 18 ), wxSize( -1, -1 ), 0 ); + wxPoint( pos.x + 10, pos.y - 18 ), wxSize( -1, -1 ), 0 ); continue; } @@ -640,49 +209,40 @@ WinEDA_SetColorsFrame::WinEDA_SetColorsFrame( else if( laytool_list[ii]->m_NoDisplay ) laytool_list[ii]->m_CheckBox->SetValue( *laytool_list[ii]->m_NoDisplay ); - xx = 3 + laytool_list[ii]->m_CheckBox->GetSize().x; + xx = laytool_list[ii]->m_CheckBox->GetSize().x + 3; if( laytool_list[ii]->m_Color ) { wxMemoryDC iconDC; - - wxBitmap ButtBitmap( w, h ); - + wxBitmap ButtBitmap( BUTT_SIZE_X, BUTT_SIZE_Y ); iconDC.SelectObject( ButtBitmap ); - buttcolor = *laytool_list[ii]->m_Color & MASKCOLOR; - + CurrentColor[ii] = buttcolor; wxBrush Brush; - iconDC.SelectObject( ButtBitmap ); iconDC.SetPen( *wxBLACK_PEN ); - Brush.SetColour( ColorRefs[buttcolor].m_Red, ColorRefs[buttcolor].m_Green, ColorRefs[buttcolor].m_Blue ); - Brush.SetStyle( wxSOLID ); iconDC.SetBrush( Brush ); - iconDC.DrawRectangle( 0, 0, w, h ); + iconDC.DrawRectangle( 0, 0, BUTT_SIZE_X, BUTT_SIZE_Y ); ButtonB = new wxBitmapButton( this, butt_ID, ButtBitmap, wxPoint(pos.x + xx, pos.y), - wxSize(w, h) ); - + wxSize(BUTT_SIZE_X, BUTT_SIZE_Y) ); laytool_list[ii]->m_Button = ButtonB; - xx += 3 + w; + xx += BUTT_SIZE_X + 3; } if( laytool_list[ii]->m_LayerNumber >= 0 ) { if( laytool_list[ii]->m_Title == wxT( "*" ) ) - { msg = g_ViaType_Name[laytool_list[ii]->m_LayerNumber]; - } else msg = ReturnPcbLayerName( laytool_list[ii]->m_LayerNumber ); } @@ -690,44 +250,70 @@ WinEDA_SetColorsFrame::WinEDA_SetColorsFrame( msg = wxGetTranslation( laytool_list[ii]->m_Title.GetData() ); new wxStaticText( this, -1, msg, - wxPoint (pos.x + xx, pos.y + 1 ), + wxPoint( pos.x + xx, pos.y + 1 ), wxSize( -1, -1 ), 0 ); - yy = h + 5; + yy = BUTT_SIZE_Y + 5; pos.y += yy; } - pos.x = 150; - pos.y = 300; + pos.x = 5; + pos.y = 355; wxButton* Button = new wxButton( this, ID_COLOR_RESET_SHOW_LAYER_ON, _( "Show All" ), pos ); - Button->SetForegroundColour( wxColor( 0, 100, 0 ) ); - pos.y += Button->GetSize().y + 2; + pos.x += Button->GetSize().x + 10; + Button = new wxButton( this, ID_COLOR_RESET_SHOW_LAYER_OFF, _( "Show None" ), pos ); - Button->SetForegroundColour( wxColor( 100, 0, 0 ) ); - pos.x += Button->GetSize().x + 50; - Button = new wxButton( this, ID_COLOR_EXIT, - _( "Exit" ), pos ); + pos.x = MAX( pos.x + 20, 480 - 3 * Button->GetSize().x ); + Button = new wxButton( this, wxID_OK, _("OK"), pos ); + Button->SetForegroundColour( *wxRED ); + + pos.x += Button->GetSize().x + 10; + + Button = new wxButton( this, wxID_CANCEL, _("Cancel"), pos ); Button->SetForegroundColour( *wxBLUE ); - winsize.x = 500; + pos.x += Button->GetSize().x + 10; + + Button = new wxButton( this, wxID_APPLY, _("Apply"), pos ); + + winsize.x = MAX( 500, pos.x + Button->GetSize().x + 10 ); winsize.y = pos.y + Button->GetSize().y + 5; SetClientSize( winsize ); } /**********************************************************************/ -void WinEDA_SetColorsFrame::OnQuit( wxCommandEvent& WXUNUSED (event) ) +void WinEDA_SetColorsFrame::OnOkClick( wxCommandEvent& WXUNUSED (event) ) /**********************************************************************/ { - Close( true ); // true is to force the frame to close + UpdateLayerSettings(); + m_Parent->ReDrawPanel(); + EndModal( 1 ); +} + + +/*******************************************************************/ +void WinEDA_SetColorsFrame::OnCancelClick(wxCommandEvent& WXUNUSED(event)) +/*******************************************************************/ +{ + EndModal( -1 ); +} + + +/*******************************************************************/ +void WinEDA_SetColorsFrame::OnApplyClick(wxCommandEvent& WXUNUSED(event)) +/*******************************************************************/ +{ + UpdateLayerSettings(); + m_Parent->ReDrawPanel(); } @@ -738,11 +324,8 @@ void WinEDA_SetColorsFrame::SetColor( wxCommandEvent& event ) int ii; int id = event.GetId(); int color; - int w = BUTT_SIZE_X, h = BUTT_SIZE_Y; - - color = DisplayColorFrame( this, - *laytool_list[id - ID_COLOR_SETUP]->m_Color ); + color = DisplayColorFrame( this, CurrentColor[id - ID_COLOR_SETUP] ); if( color < 0 ) return; @@ -750,59 +333,53 @@ void WinEDA_SetColorsFrame::SetColor( wxCommandEvent& event ) { if( laytool_list[ii]->m_Id != id ) continue; - + if( laytool_list[ii]->m_Color == NULL ) continue; - if( *laytool_list[ii]->m_Color == color ) + if( CurrentColor[ii] == color ) break; - *laytool_list[ii]->m_Color = color; + CurrentColor[ii] = color; wxMemoryDC iconDC; wxBitmapButton* Button = laytool_list[ii]->m_Button; wxBitmap ButtBitmap = Button->GetBitmapLabel(); iconDC.SelectObject( ButtBitmap ); - - int buttcolor = *laytool_list[ii]->m_Color; - + int buttcolor = CurrentColor[ii]; wxBrush Brush; - iconDC.SetPen( *wxBLACK_PEN ); - Brush.SetColour( ColorRefs[buttcolor].m_Red, ColorRefs[buttcolor].m_Green, ColorRefs[buttcolor].m_Blue ); - Brush.SetStyle( wxSOLID ); iconDC.SetBrush( Brush ); - iconDC.DrawRectangle( 0, 0, w, h ); + iconDC.DrawRectangle( 0, 0, BUTT_SIZE_X, BUTT_SIZE_Y ); Button->SetBitmapLabel( ButtBitmap ); - Button->Refresh(); - - SetDisplayOnOff( event ); - - m_Parent->m_CurrentScreen->SetRefreshReq(); } - Refresh( FALSE ); } /******************************************************************/ -void WinEDA_SetColorsFrame::SetDisplayOnOff( wxCommandEvent& event ) +void WinEDA_SetColorsFrame::UpdateLayerSettings() /******************************************************************/ { for( int ii = 0; laytool_list[ii] != NULL; ii++ ) { - if( laytool_list[ii]->m_CheckBox == NULL ) - continue; - +// if( laytool_list[ii]->m_CheckBox == NULL ) +// continue; + + // Although some of the items listed within laytool_list[] + // do not have any checkboxes associated with them, the + // previous command is still not necessary (as those items + // are processed satisfactorily by the following command). + if( !laytool_list[ii]->m_NoDisplayIsColor && (laytool_list[ii]->m_NoDisplay == NULL) ) continue; @@ -810,22 +387,27 @@ void WinEDA_SetColorsFrame::SetDisplayOnOff( wxCommandEvent& event ) if( laytool_list[ii]->m_NoDisplayIsColor ) { if( laytool_list[ii]->m_CheckBox->GetValue() ) - *laytool_list[ii]->m_Color &= ~ITEM_NOT_SHOW; + *laytool_list[ii]->m_Color = CurrentColor[ii] & ~ITEM_NOT_SHOW; else - *laytool_list[ii]->m_Color |= ITEM_NOT_SHOW; + *laytool_list[ii]->m_Color = CurrentColor[ii] | ITEM_NOT_SHOW; } else { - *laytool_list[ii]->m_NoDisplay = laytool_list[ii]->m_CheckBox->GetValue(); - - // a hack, we have g_DrawGrid and m_Parent->m_Draw_Grid both. - // show me a better way, please. - if( laytool_list[ii]->m_NoDisplay == &g_ShowGrid ) - m_Parent->m_Draw_Grid = g_ShowGrid; - } + if( laytool_list[ii]->m_Color ) + *laytool_list[ii]->m_Color = CurrentColor[ii]; - m_Parent->m_CurrentScreen->SetRefreshReq(); +// if( laytool_list[ii]->m_CheckBox ) +// *laytool_list[ii]->m_NoDisplay = laytool_list[ii]->m_CheckBox->GetValue(); + + // As there is a checkbox associated with every layer listed + // within this particular dialog box, the previous command can + // be replaced with this following command. + + *laytool_list[ii]->m_NoDisplay = laytool_list[ii]->m_CheckBox->GetValue(); + } } + // Additional command required for updating visibility of grid. + m_Parent->m_Draw_Grid = g_ShowGrid; } @@ -839,9 +421,6 @@ void WinEDA_SetColorsFrame::ResetDisplayLayersCu( wxCommandEvent& event ) { if( laytool_list[ii]->m_CheckBox == NULL ) continue; - laytool_list[ii]->m_CheckBox->SetValue( NewState ); } - - SetDisplayOnOff( event ); } diff --git a/pcbnew/set_color.h b/pcbnew/set_color.h new file mode 100644 index 0000000000..a21b7aaa74 --- /dev/null +++ b/pcbnew/set_color.h @@ -0,0 +1,435 @@ +/* Set up the button list for the color selection for pcbnew layers */ + +static ColorButton Msg_Layers_Cu = +{ + _( "Copper Layers" ), -1 // Title +}; + +static ColorButton Layer_1_Butt = +{ + wxEmptyString, + COPPER_LAYER_N, // Layer + ADR( COPPER_LAYER_N ), // Address of optional parameter + TRUE // Toggle ITEM_NOT_SHOW bit of the color variable +}; + +static ColorButton Layer_2_Butt = +{ + wxEmptyString, + 1, // Layer + ADR( 1 ), // Address of optional parameter + TRUE // Toggle ITEM_NOT_SHOW bit of the color variable +}; + +static ColorButton Layer_3_Butt = +{ + wxEmptyString, + 2, // Layer + ADR( 2 ), // Address of optional parameter + TRUE // Toggle ITEM_NOT_SHOW bit of the color variable +}; + +static ColorButton Layer_4_Butt = +{ + wxEmptyString, + 3, // Layer + ADR( 3 ), // Address of optional parameter + TRUE // Toggle ITEM_NOT_SHOW bit of the color variable +}; + +static ColorButton Layer_5_Butt = +{ + wxEmptyString, + 4, // Layer + ADR( 4 ), // Address of optional parameter + TRUE // Toggle ITEM_NOT_SHOW bit of the color variable +}; + +static ColorButton Layer_6_Butt = +{ + wxEmptyString, + 5, // Layer + ADR( 5 ), // Address of optional parameter + TRUE // Toggle ITEM_NOT_SHOW bit of the color variable +}; + +static ColorButton Layer_7_Butt = +{ + wxEmptyString, + 6, // Layer + ADR( 6 ), // Address of optional parameter + TRUE // Toggle ITEM_NOT_SHOW bit of the color variable +}; + +static ColorButton Layer_8_Butt = +{ + wxEmptyString, + 7, // Layer + ADR( 7 ), // Address of optional parameter + TRUE // Toggle ITEM_NOT_SHOW bit of the color variable +}; + +static ColorButton Layer_9_Butt = +{ + wxEmptyString, + 8, // Layer + ADR( 8 ), // Address of optional parameter + TRUE // Toggle ITEM_NOT_SHOW bit of the color variable +}; + +static ColorButton Layer_10_Butt = +{ + wxEmptyString, + 9, // Layer + ADR( 9 ), // Address of optional parameter + TRUE // Toggle ITEM_NOT_SHOW bit of the color variable +}; + +static ColorButton Layer_11_Butt = +{ + wxEmptyString, + 10, // Layer + ADR( 10 ), // Address of optional parameter + TRUE // Toggle ITEM_NOT_SHOW bit of the color variable +}; + +static ColorButton Layer_12_Butt = +{ + wxEmptyString, + 11, // Layer + ADR( 11 ), // Address of optional parameter + TRUE // Toggle ITEM_NOT_SHOW bit of the color variable +}; + +static ColorButton Layer_13_Butt = +{ + wxEmptyString, + 12, // Layer + ADR( 12 ), // Address of optional parameter + TRUE // Toggle ITEM_NOT_SHOW bit of the color variable +}; + +static ColorButton Layer_14_Butt = +{ + wxEmptyString, + 13, // Layer + ADR( 13 ), // Address of optional parameter + TRUE // Toggle ITEM_NOT_SHOW bit of the color variable +}; + +static ColorButton Layer_15_Butt = +{ + wxEmptyString, + 14, // Layer + ADR( 14 ), // Address of optional parameter + TRUE // Toggle ITEM_NOT_SHOW bit of the color variable +}; + +static ColorButton Layer_16_Butt = +{ + wxEmptyString, + CMP_N, // Layer + ADR( CMP_N ), // Address of optional parameter + TRUE // Toggle ITEM_NOT_SHOW bit of the color variable +}; + + +static ColorButton Msg_Layers_Tech = +{ + _( "Tech Layers" ), -1 // Title +}; + +static ColorButton Layer_17_Butt = +{ + wxEmptyString, + ADHESIVE_N_CU, // Layer + ADR( ADHESIVE_N_CU ), // Address of optional parameter + TRUE // Toggle ITEM_NOT_SHOW bit of the color variable +}; + +static ColorButton Layer_18_Butt = +{ + wxEmptyString, + ADHESIVE_N_CMP, // Layer + ADR( ADHESIVE_N_CMP ), // Address of optional parameter + TRUE // Toggle ITEM_NOT_SHOW bit of the color variable +}; + +static ColorButton Layer_19_Butt = +{ + wxEmptyString, + SOLDERPASTE_N_CU, // Layer + ADR( SOLDERPASTE_N_CU ), // Address of optional parameter + TRUE // Toggle ITEM_NOT_SHOW bit of the color variable +}; + +static ColorButton Layer_20_Butt = +{ + wxEmptyString, + SOLDERPASTE_N_CMP, // Layer + ADR( SOLDERPASTE_N_CMP ), // Address of optional parameter + TRUE // Toggle ITEM_NOT_SHOW bit of the color variable +}; + +static ColorButton Layer_21_Butt = +{ + wxEmptyString, + SILKSCREEN_N_CU, // Layer + ADR( SILKSCREEN_N_CU ), // Address of optional parameter + TRUE // Toggle ITEM_NOT_SHOW bit of the color variable +}; + +static ColorButton Layer_22_Butt = +{ + wxEmptyString, + SILKSCREEN_N_CMP, // Layer + ADR( SILKSCREEN_N_CMP ), // Address of optional parameter + TRUE // Toggle ITEM_NOT_SHOW bit of the color variable +}; + +static ColorButton Layer_23_Butt = +{ + wxEmptyString, + SOLDERMASK_N_CU, // Layer + ADR( SOLDERMASK_N_CU ), // Address of optional parameter + TRUE // Toggle ITEM_NOT_SHOW bit of the color variable +}; + +static ColorButton Layer_24_Butt = +{ + wxEmptyString, + SOLDERMASK_N_CMP, // Layer + ADR( SOLDERMASK_N_CMP ), // Address of optional parameter + TRUE // Toggle ITEM_NOT_SHOW bit of the color variable +}; + +static ColorButton Layer_25_Butt = +{ + wxEmptyString, + DRAW_N, // Layer + ADR( DRAW_N ), // Address of optional parameter + TRUE // Toggle ITEM_NOT_SHOW bit of the color variable +}; + +static ColorButton Layer_26_Butt = +{ + wxEmptyString, + COMMENT_N, // Layer + ADR( COMMENT_N ), // Address of optional parameter + TRUE // Toggle ITEM_NOT_SHOW bit of the color variable +}; + +static ColorButton Layer_27_Butt = +{ + wxEmptyString, + ECO1_N, // Layer + ADR( ECO1_N ), // Address of optional parameter + TRUE // Toggle ITEM_NOT_SHOW bit of the color variable +}; + +static ColorButton Layer_28_Butt = +{ + wxEmptyString, + ECO2_N, // Layer + ADR( ECO2_N ), // Address of optional parameter + TRUE // Toggle ITEM_NOT_SHOW bit of the color variable +}; + +static ColorButton Layer_29_Butt = +{ + wxEmptyString, + EDGE_N, // Layer + ADR( EDGE_N ), // Address of optional parameter + TRUE // Toggle ITEM_NOT_SHOW bit of the color variable +}; + + +static ColorButton Msg_Others_Items = +{ + wxT( "Others" ), -1 // Title +}; + +static ColorButton Via_Normale_Butt = +{ + wxT( "*" ), + VIA_NORMALE, // Layer + &g_DesignSettings.m_ViaColor[VIA_NORMALE], // Address of optional parameter + TRUE // Toggle ITEM_NOT_SHOW bit of the color variable +}; + +static ColorButton Via_Aveugle_Butt = +{ + wxT( "*" ), + VIA_ENTERREE, // Layer + &g_DesignSettings.m_ViaColor[VIA_ENTERREE], // Address of optional parameter + TRUE // Toggle ITEM_NOT_SHOW bit of the color variable +}; + +static ColorButton Via_Borgne_Butt = +{ + wxT( "*" ), + VIA_BORGNE, // Layer + &g_DesignSettings.m_ViaColor[VIA_BORGNE], // Address of optional parameter + TRUE // Toggle ITEM_NOT_SHOW bit of the color variable +}; + +static ColorButton Ratsnest_Butt = +{ + _( "Ratsnest" ), // Title + -1, + &g_DesignSettings.m_RatsnestColor, // Address of optional parameter + FALSE, + &g_Show_Ratsnest // Address of boolean display control parameter to toggle +}; + +static ColorButton Pad_Cu_Butt = +{ + _( "Pad Cu" ), // Title + -1, + &g_PadCUColor, // Address of optional parameter + TRUE // Toggle ITEM_NOT_SHOW bit of the color variable +}; + +static ColorButton Pad_Cmp_Butt = +{ + _( "Pad Cmp" ), // Title + -1, + &g_PadCMPColor, // Address of optional parameter + TRUE // Toggle ITEM_NOT_SHOW bit of the color variable +}; + +static ColorButton Text_Mod_Cu_Butt = +{ + _( "Text Module Cu" ), // Title + -1, + &g_ModuleTextCUColor, // Address of optional parameter + TRUE // Toggle ITEM_NOT_SHOW bit of the color variable +}; + +static ColorButton Text_Mod_Cmp_Butt = +{ + _( "Text Module Cmp" ), // Title + -1, + &g_ModuleTextCMPColor, // Address of optional parameter + TRUE // Toggle ITEM_NOT_SHOW bit of the color variable +}; + +static ColorButton Text_Mod_NoVisible_Butt = +{ + _( "Text Module invisible" ), // Title + -1, + &g_ModuleTextNOVColor, // Address of optional parameter + TRUE // Toggle ITEM_NOT_SHOW bit of the color variable +}; + +static ColorButton Anchors_Butt = +{ + _( "Anchors" ), // Title + -1, + &g_AnchorColor, // Address of optional parameter + TRUE // Toggle ITEM_NOT_SHOW bit of the color variable +}; + +static ColorButton Grid_Butt = +{ + _( "Grid" ), // Title + -1, + &g_GridColor, // Address of optional parameter + FALSE, + &g_ShowGrid // Address of boolean display control parameter to toggle +}; + +static ColorButton Show_Zones_Butt = +{ + _( "Show Zones" ), // Title + -1, + NULL, // Address of optional parameter + FALSE, + &DisplayOpt.DisplayZones // Address of boolean display control parameter to toggle +}; + +static ColorButton Show_Pads_Noconnect_Butt = +{ + _( "Show Noconnect" ), // Title + -1, + NULL, // Address of optional parameter + FALSE, + &DisplayOpt.DisplayPadNoConn // Address of boolean display control parameter to toggle +}; + +static ColorButton Show_Modules_Cmp_Butt = +{ + _( "Show Modules Cmp" ), // Title + -1, + NULL, // Address of optional parameter + FALSE, + &DisplayOpt.Show_Modules_Cmp // Address of boolean display control parameter to toggle +}; + +static ColorButton Show_Modules_Cu_Butt = +{ + _( "Show Modules Cu" ), // Title + -1, + NULL, // Address of optional parameter + FALSE, + &DisplayOpt.Show_Modules_Cu // Address of boolean display control parameter to toggle +}; + + +static ColorButton* laytool_list[] = { + &Msg_Layers_Cu, + &Layer_1_Butt, + &Layer_2_Butt, + &Layer_3_Butt, + &Layer_4_Butt, + &Layer_5_Butt, + &Layer_6_Butt, + &Layer_7_Butt, + &Layer_8_Butt, + &Layer_9_Butt, + &Layer_10_Butt, + &Layer_11_Butt, + &Layer_12_Butt, + &Layer_13_Butt, + &Layer_14_Butt, + &Layer_15_Butt, + &Layer_16_Butt, + + &Msg_Layers_Tech, + &Layer_17_Butt, + &Layer_18_Butt, + &Layer_19_Butt, + &Layer_20_Butt, + &Layer_21_Butt, + &Layer_22_Butt, + &Layer_23_Butt, + &Layer_24_Butt, + &Layer_25_Butt, + &Layer_26_Butt, + &Layer_27_Butt, + &Layer_28_Butt, + &Layer_29_Butt, +// &Layer_30_Butt, +// &Layer_31_Butt, +// &Layer_32_Butt, + + &Msg_Others_Items, + &Via_Normale_Butt, + &Via_Aveugle_Butt, + &Via_Borgne_Butt, + &Ratsnest_Butt, + &Pad_Cu_Butt, + &Pad_Cmp_Butt, + &Text_Mod_Cu_Butt, + &Text_Mod_Cmp_Butt, + &Text_Mod_NoVisible_Butt, + &Anchors_Butt, + &Grid_Butt, + + &Show_Zones_Butt, + &Show_Pads_Noconnect_Butt, + &Show_Modules_Cmp_Butt, + &Show_Modules_Cu_Butt, + + NULL +};