From 2e13ccf0488ebc4c882c035a358280246c9049b6 Mon Sep 17 00:00:00 2001
From: dickelbeck <Unknown>
Date: Fri, 24 Aug 2007 03:40:04 +0000
Subject: [PATCH] see change_log.txt's 2007-Aug-23 UPDATE

---
 change_log.txt            |   24 +-
 common/base_struct.cpp    |    4 +
 include/base_struct.h     |   50 +-
 include/class_collector.h |   22 +-
 include/pcbstruct.h       |    7 +
 include/wxstruct.h        |   16 +-
 pcbnew/class_board.cpp    |   70 ++-
 pcbnew/class_module.cpp   |   31 +-
 pcbnew/class_module.h     |   15 +-
 pcbnew/class_text_mod.cpp |   34 ++
 pcbnew/class_text_mod.h   |   25 +
 pcbnew/classpcb.cpp       |   16 +
 pcbnew/classtrc.cpp       |  695 ++++++++++++-----------
 pcbnew/collectors.cpp     |   84 ++-
 pcbnew/collectors.h       |   41 +-
 pcbnew/controle.cpp       |   44 +-
 pcbnew/files.cpp          |    2 +-
 pcbnew/locate.cpp         |   25 +-
 pcbnew/pcbframe.cpp       |    4 +-
 pcbnew/protos.h           |    2 +-
 pcbnew/set_color.cpp      | 1116 +++++++++++++++++++------------------
 21 files changed, 1351 insertions(+), 976 deletions(-)

diff --git a/change_log.txt b/change_log.txt
index 6316022548..fb396ecdfc 100644
--- a/change_log.txt
+++ b/change_log.txt
@@ -7,9 +7,21 @@ email address.
 
 2007-Aug-23 UPDATE   Dick Hollenbeck <dick@softplc.com>
 ================================================================================
-  @todo add constructor initializers for classes that were derived from
-   EDA_BaseLineStruct but are now not.  Its late, will do tomorrow.
-  @todo test yesterday's changes, it builds, may not run right yet.
++ eeschema & pcbnew
+  * Fixed MODULE::Visit() and BOARD::Vist() so they traverse certain lists
+    only once and they are working nicely now.
+  * You can test the GENERALCOLLECTOR::Scan() code by compiling with DEBUG=1 on
+    the command line and enabling the stuff near line 124 in
+    pcbnew/controle.cpp, then watch Show( std::cout ) show the selected items in
+    xml format on your console. (launch pcbnew from command line.)
+    @todo:
+    The layer selection mechanism used by the collector is still inadequate, so
+    tomorrow I will add a new class COLLECTORS_GUIDE which can be used by a
+    COLLECTOR to control its operation. It adds the concept of layer
+    locking, even though PCBNEW does not support that in the UI yet.
+    @todo:
+    add constructor initializers for classes that were derived from
+    EDA_BaseLineStruct but are now not. Its late, will do tomorrow.
 
 
 2007-Aug-22 UPDATE   Dick Hollenbeck <dick@softplc.com>
@@ -18,15 +30,15 @@ email address.
   Things are still pretty transient, should be stable a day or two:
   * Fixed a filename case sensitivity problem that would show up on Linux
     but probably not on Windows: bitmap/Reload.xpm needed uppercase R.
-  * Wedged a new class BOARD_ITEM underneath all PCB drawable classes, this is
+  * Wedged a new class BOARD_ITEM underneath all PCB drawable classes. This is
     a big change and may introduce a bug or two, but it is worth it for the
-    future, because we can introduce virtual functions there that do not impact
+    future, because we can add virtual functions there that do not impact
     the entire project (since everything is derived from EDA_BaseStruct).
     The corresponding class in EESCHEMA seems to be DrawPartStruct, so we had
     nothing in PCBNEW like that.
     BOARD_ITEM::GetLayer() and SetLayer() introduced, more functions to come.
     Much of this work is geared towards making collectors.cpp's ARROWCOLLECTOR::Inspect()
-    very very simple, and that can be model for future work.
+    very very simple, and that can be a model for future work.
   * Changed min() and max() macros to MIN() and MAX() because min() and max()
     are actually reserved according to the C++ standard! (and their usage prevented
     the use of #include <vector>).
diff --git a/common/base_struct.cpp b/common/base_struct.cpp
index d9445aa3d7..b124110dfe 100644
--- a/common/base_struct.cpp
+++ b/common/base_struct.cpp
@@ -210,6 +210,10 @@ SEARCH_RESULT EDA_BaseStruct::Visit( INSPECTOR* inspector, const void* testData,
         const KICAD_T scanTypes[] )
 {
     KICAD_T     stype;
+
+#if defined(DEBUG)
+    std::cout <<  GetClass().mb_str() << ' ';
+#endif
     
     for( const KICAD_T* p = scanTypes;  (stype=*p) != EOT;   ++p )
     {
diff --git a/include/base_struct.h b/include/base_struct.h
index fdfd389151..aa012e12d1 100644
--- a/include/base_struct.h
+++ b/include/base_struct.h
@@ -133,7 +133,7 @@ public:
     EDA_BaseStruct* m_Son;              /* Linked list: Link (son struct) */
     EDA_BaseStruct* m_Image;            /* Link to an image copy for undelete or abort command */
 
-    int             m_Flags;            // flags for editions and other
+    int             m_Flags;            // flags for editing and other misc. uses
 #define IS_CHANGED      (1<<0)    
 #define IS_LINKED       (1<<1)
 #define IN_EDIT         (1<<2)
@@ -154,7 +154,6 @@ public:
 
     unsigned long   m_TimeStamp;        // Time stamp used for logical links
     int             m_Selected;         /* Used by block commands, and selective editing */
-//    int             m_Layer;            ///< used by many derived classes, so make common
 
 private:
     int             m_Status;
@@ -394,23 +393,60 @@ public:
     {
     }
 
-    BOARD_ITEM* Next()      { return (BOARD_ITEM*) Pnext; }
-
+    BOARD_ITEM* Next() const         { return (BOARD_ITEM*) Pnext; }
+    BOARD_ITEM* GetParent() const    { return (BOARD_ITEM*) m_Parent; }
     
     /**
      * Function GetLayer
      * returns the layer this item is on.
      */
-    int         GetLayer() const  { return m_Layer; }
+    int GetLayer() const  { return m_Layer; }
     
     /**
      * Function SetLayer
      * sets the layer this item is on.
      * @param aLayer The layer number.
      */
-    void        SetLayer( int aLayer )  { m_Layer = aLayer; }
+    void  SetLayer( int aLayer )  { m_Layer = aLayer; }
+   
+
+    /**
+     * Function IsOnLayer
+     * tests to see if this object is on the given layer.  Is virtual so
+     * objects like D_PAD, which reside on multiple layers can do their own
+     * form of testing.
+     * @param aLayer The layer to test for.
+     * @return bool - true if on given layer, else false.
+     */
+    virtual bool IsOnLayer( int aLayer ) const
+    {
+        return m_Layer == aLayer;
+    }
+
     
-        
+    /**
+     * Function IsOnOneOfTheseLayers
+     * returns true if this object is on one of the given layers.  Is virtual so
+     * objects like D_PAD, which reside on multiple layers, can do their own
+     * form of testing.
+     * @param aLayerMask The bit-mapped set of layers to test for.
+     * @return bool - true if on one of the given layers, else false.
+     */
+    virtual bool IsOnOneOfTheseLayers( int aLayerMask ) const
+    {
+        return ( (1<<m_Layer) & aLayerMask ) != 0;
+    }
+
+    
+    /**
+     * Function IsLocked
+     * @returns bool - true if the object is locked, else false
+     */
+    virtual bool IsLocked() const
+    {
+        return false;   // only MODULEs can be locked at this time.
+    }
+
 };
 
 
diff --git a/include/class_collector.h b/include/class_collector.h
index 0585d26c95..2915ed910b 100644
--- a/include/class_collector.h
+++ b/include/class_collector.h
@@ -34,7 +34,6 @@
 
 
 class EDA_BaseStruct;
-class BOARD;
 
 
 /**
@@ -48,16 +47,10 @@ class BOARD;
  *
  * Later, after collection, the user can iterate through all the objects 
  * in the remembered collection using GetCount() and the [int] operator.
- *
- * Philosophy: this class knows nothing of the context in which as BOARD is used
- * and that means it knows nothing about which layers are visible or current, 
- * but can handle those concerns by the SetPreferredLayer() function.
  */
 class COLLECTOR : public INSPECTOR
 {
 protected:
-//    int             m_Type;
-
     /// Which object types to scan
     const KICAD_T*  m_ScanTypes;
 
@@ -84,20 +77,9 @@ public:
 
     virtual ~COLLECTOR()
     {
-        // empty the list so that ~list() does not try and delete all
-        // the objects that it holds.  list is not the owner of such objects
-        // and this prevents a double free()ing.
-        Empty();
     }
 
     
-    /**
-     * Function Type
-     * returns the type of the collector.
-    int Type() const { return m_Type; }
-     */
-
-    
     void SetPreferredLayer( int aPreferredLayer )
     {
         m_PreferredLayer = aPreferredLayer;
@@ -108,7 +90,7 @@ public:
      * Function GetCount
      * returns the number of objects in the list
      */
-    int GetCount() const
+    unsigned GetCount() const
     {
         return list.size();
     }
@@ -143,7 +125,7 @@ public:
      */
     EDA_BaseStruct* operator[]( int ndx ) const
     {
-        if( (unsigned)ndx < (unsigned)GetCount() )
+        if( (unsigned)ndx < GetCount() )
             return list[ ndx ];
         return NULL;
     }
diff --git a/include/pcbstruct.h b/include/pcbstruct.h
index 2e4b042289..26566d8df6 100644
--- a/include/pcbstruct.h
+++ b/include/pcbstruct.h
@@ -175,6 +175,13 @@ public:
 
 public:
     EDA_BoardDesignSettings( void );
+    
+    /**
+     * Function GetVisibleLayers
+     * returns a bit-map of all the layers that are visible.
+     * @return int - the visible layers in bit-mapped form.
+     */
+    int     GetVisibleLayers();
 };
 
 
diff --git a/include/wxstruct.h b/include/wxstruct.h
index 6d17af0059..cd5481eb78 100644
--- a/include/wxstruct.h
+++ b/include/wxstruct.h
@@ -96,7 +96,7 @@ class WinEDA3D_DrawFrame;
 class PARAM_CFG_BASE;
 class Ki_PageDescr;
 class Ki_HotkeyInfo;
-class ARROWCOLLECTOR;
+class GENERALCOLLECTOR;
 
 
 enum id_librarytype {
@@ -372,6 +372,11 @@ private:
     virtual void    GetComponentFromUndoList( void );
     virtual void    GetComponentFromRedoList( void );
 
+#if defined(DEBUG)
+protected:
+    GENERALCOLLECTOR*  m_Collector;
+#endif
+   
     
 public:
     // Read/write fonctions:
@@ -385,8 +390,8 @@ public:
 
     // Gestion du PCB
     bool            Clear_Pcb( wxDC* DC, bool query );
-    EDA_BaseStruct* PcbGeneralLocateAndDisplay();
-    EDA_BaseStruct* Locate( int typeloc, int LayerSearch );
+    BOARD_ITEM*     PcbGeneralLocateAndDisplay();
+    BOARD_ITEM*     Locate( int typeloc, int LayerSearch );
 
     // Gestion du curseur
     void            place_marqueur( wxDC* DC, const wxPoint& pos, char* pt_bitmap,
@@ -517,11 +522,6 @@ private:
     bool             m_SelViaSizeBox_Changed;
     wxMenu*          m_FilesMenu;
 
-#if defined(DEBUG)    
-    ARROWCOLLECTOR*  m_ArrowCollector;          ///< while arrow icon tool
-#endif
-
-
 public:
     WinEDA_PcbFrame( wxWindow* father, WinEDA_App* parent, const wxString& title,
                      const wxPoint& pos, const wxSize& size );
diff --git a/pcbnew/class_board.cpp b/pcbnew/class_board.cpp
index 394e1e044f..05188bf431 100644
--- a/pcbnew/class_board.cpp
+++ b/pcbnew/class_board.cpp
@@ -311,13 +311,21 @@ SEARCH_RESULT BOARD::Visit( INSPECTOR* inspector, const void* testData,
     KICAD_T         stype;
     SEARCH_RESULT   result = SEARCH_CONTINUE;
     const KICAD_T*  p = scanTypes;
+    bool            done=false;
+
+#if defined(DEBUG)
+    std::cout <<  GetClass().mb_str() << ' ';
+#endif    
     
-    while( (stype = *p++) != EOT )
+    while( !done )
     {
+        stype = *p;
         switch( stype )
         {
         case TYPEPCB:
             result = inspector->Inspect( this, testData );  // inspect me
+            // skip over any types handled in the above call.
+            ++p;
             break;
 
         /*  Instances of the requested KICAD_T live in a list, either one
@@ -332,7 +340,21 @@ SEARCH_RESULT BOARD::Visit( INSPECTOR* inspector, const void* testData,
         case TYPETEXTEMODULE:
         case TYPEEDGEMODULE:
             // this calls MODULE::Visit() on each module.
-            result = IterateForward( m_Modules, inspector, testData, scanTypes );
+            result = IterateForward( m_Modules, inspector, testData, p );
+            // skip over any types handled in the above call.
+            for(;;)
+            {
+                switch( stype = *++p )
+                {
+                case TYPEMODULE:
+                case TYPEPAD:
+                case TYPETEXTEMODULE:
+                case TYPEEDGEMODULE:
+                    continue;
+                default:;
+                }
+                break;
+            }
             break;
 
         case TYPEDRAWSEGMENT:
@@ -340,27 +362,59 @@ SEARCH_RESULT BOARD::Visit( INSPECTOR* inspector, const void* testData,
         case TYPEMARQUEUR:
         case TYPECOTATION:
         case TYPEMIRE:
-            result = IterateForward( m_Drawings, inspector, testData, scanTypes );
+            result = IterateForward( m_Drawings, inspector, testData, p );
+            // skip over any types handled in the above call.
+            for(;;)
+            {
+                switch( stype = *++p )
+                {
+                case TYPEDRAWSEGMENT:
+                case TYPETEXTE:
+                case TYPEMARQUEUR:
+                case TYPECOTATION:
+                case TYPEMIRE:
+                    continue;
+                default:;
+                }
+                break;
+            }
+                ;
             break;
             
         case TYPEVIA:
         case TYPETRACK:
-            result = IterateForward( m_Track, inspector, testData, scanTypes );
+            result = IterateForward( m_Track, inspector, testData, p );
+            // skip over any types handled in the above call.
+            for(;;)
+            {
+                switch( stype = *++p )
+                {
+                case TYPEVIA:
+                case TYPETRACK:
+                    continue;
+                default:;
+                }
+                break;
+            }
             break;            
             
         case PCB_EQUIPOT_STRUCT_TYPE:
-            result = IterateForward( m_Equipots, inspector, testData, scanTypes );
+            result = IterateForward( m_Equipots, inspector, testData, p );
+            ++p;
             break;            
 
         case TYPEZONE:
-            result = IterateForward( m_Zone, inspector, testData, scanTypes );
+            result = IterateForward( m_Zone, inspector, testData, p );
+            ++p;
             break;
             
         case TYPEEDGEZONE:
-            result = IterateForward( m_CurrentLimitZone, inspector, testData, scanTypes );
+            result = IterateForward( m_CurrentLimitZone, inspector, testData, p );
+            ++p;
             break;            
             
-        default:
+        default:        // catch EOT or ANY OTHER type here and return.
+            done = true;
             break;
         }
         
diff --git a/pcbnew/class_module.cpp b/pcbnew/class_module.cpp
index 5d4c306a94..726ed828cc 100644
--- a/pcbnew/class_module.cpp
+++ b/pcbnew/class_module.cpp
@@ -1181,17 +1181,25 @@ SEARCH_RESULT MODULE::Visit( INSPECTOR* inspector, const void* testData,
     KICAD_T         stype;
     SEARCH_RESULT   result = SEARCH_CONTINUE;
     const KICAD_T*  p = scanTypes;
+    bool            done = false;
+    
+#if defined(DEBUG)
+    std::cout <<  GetClass().mb_str() << ' ';
+#endif    
 
-    while( (stype = *p++) != EOT )
+    while( !done )
     {
+        stype = *p;
         switch( stype )
         {
         case TYPEMODULE:
             result = inspector->Inspect( this, testData );  // inspect me
+            ++p;
             break;
             
         case TYPEPAD:
-            result = IterateForward( m_Pads, inspector, testData, scanTypes );
+            result = IterateForward( m_Pads, inspector, testData, p );
+            ++p;
             break;
             
         case TYPETEXTEMODULE:
@@ -1203,15 +1211,26 @@ SEARCH_RESULT MODULE::Visit( INSPECTOR* inspector, const void* testData,
             if( result == SEARCH_QUIT )
                 break;
 
-            // m_Drawings can hold TYPETEXTMODULE also?
-            result = IterateForward( m_Drawings, inspector, testData, scanTypes );
-            break;
+            // m_Drawings can hold TYPETEXTMODULE also, so fall thru
             
         case TYPEEDGEMODULE:
-            result = IterateForward( m_Drawings, inspector, testData, scanTypes );
+            result = IterateForward( m_Drawings, inspector, testData, p );
+            // skip over any types handled in the above call.
+            for(;;)
+            {
+                switch( stype = *++p )
+                {
+                case TYPETEXTEMODULE:
+                case TYPEEDGEMODULE:
+                    continue;
+                default: ;
+                }
+                break;
+            }
             break;
                 
         default:
+            done = true;
             break;
         }
         
diff --git a/pcbnew/class_module.h b/pcbnew/class_module.h
index fb4c7c57e5..eb6c70d55e 100644
--- a/pcbnew/class_module.h
+++ b/pcbnew/class_module.h
@@ -92,9 +92,10 @@ public:
 
     /**
      * Function IsLocked
+     * (virtual from BOARD_ITEM ) 
      * @returns bool - true if the MODULE is locked, else false
      */
-    bool IsLocked()
+    bool IsLocked() const
     {
         return (m_ModuleStatus & MODULE_is_LOCKED) != 0;
     }
@@ -114,7 +115,7 @@ public:
     }
 
 
-    /* Readind and writing data on files */
+    /* Reading and writing data on files */
     int     WriteDescr( FILE* File );
     int     Write_3D_Descr( FILE* File );
     int     ReadDescr( FILE* File, int* LineNum = NULL );
@@ -147,6 +148,16 @@ public:
     bool    HitTest( const wxPoint& refPos );
 
     
+    /**
+     * Function GetReference
+     * @return wxString - the reference designator text.
+     */
+    const wxString& GetReference()
+    {
+        return m_Reference->m_Text;
+    }
+    
+    
     /**
      * Function Visit
      * should be re-implemented for each derived class in order to handle
diff --git a/pcbnew/class_text_mod.cpp b/pcbnew/class_text_mod.cpp
index 5be4cf7d9c..b42e31f2c3 100644
--- a/pcbnew/class_text_mod.cpp
+++ b/pcbnew/class_text_mod.cpp
@@ -369,6 +369,40 @@ void TEXTE_MODULE::Display_Infos( WinEDA_DrawFrame* frame )
 }
 
 
+// see class_text_mod.h
+bool TEXTE_MODULE::IsOnLayer( int aLayer ) const
+{
+    if( m_Layer == aLayer )
+        return true;
+
+    /* test the parent, which is a MODULE */
+    if( aLayer == GetParent()->GetLayer() )
+        return true;
+    
+    if( aLayer == CUIVRE_N )
+    {
+        if( m_Layer==ADHESIVE_N_CU || m_Layer==SILKSCREEN_N_CU )
+            return true;
+    }
+    
+    else if( aLayer == CMP_N )
+    {
+        if( m_Layer==ADHESIVE_N_CMP || m_Layer==SILKSCREEN_N_CMP )
+            return true;
+    }
+    
+    return false;
+}
+
+    
+/* see class_text_mod.h
+bool TEXTE_MODULE::IsOnOneOfTheseLayers( int aLayerMask ) const
+{
+    
+}
+*/
+
+
 #if defined(DEBUG)
 /**
  * Function Show
diff --git a/pcbnew/class_text_mod.h b/pcbnew/class_text_mod.h
index def913a6f4..5553138a71 100644
--- a/pcbnew/class_text_mod.h
+++ b/pcbnew/class_text_mod.h
@@ -73,6 +73,31 @@ public:
      * @return bool - true if a hit, else false
      */
     bool    HitTest( const wxPoint& posref );
+
+    /**
+     * Function IsOnLayer
+     * tests to see if this object is on the given layer.  Is virtual so
+     * objects like D_PAD, which reside on multiple layers can do their own
+     * form of testing.
+     * virtual inheritance from BOARD_ITEM.
+     * @param aLayer The layer to test for.
+     * @return bool - true if on given layer, else false.
+     */
+    bool IsOnLayer( int aLayer ) const;
+    
+    /**
+     * Function IsOnOneOfTheseLayers
+     * returns true if this object is on one of the given layers.  Is virtual so
+     * objects like D_PAD, which reside on multiple layers, can do their own
+     * form of testing.
+     * virtual inheritance from BOARD_ITEM.
+     * @param aLayerMask The bit-mapped set of layers to test for.
+     * @return bool - true if on one of the given layers, else false.
+    bool IsOnOneOfTheseLayers( int aLayerMask ) const;
+     */
+
+    
+
     
 #if defined(DEBUG)
     /**
diff --git a/pcbnew/classpcb.cpp b/pcbnew/classpcb.cpp
index 8802062aef..8327880929 100644
--- a/pcbnew/classpcb.cpp
+++ b/pcbnew/classpcb.cpp
@@ -429,3 +429,19 @@ EDA_BoardDesignSettings::EDA_BoardDesignSettings( void )
     m_PadCMPColor   = RED;              // Pad color for the COPPER side of the pad
     m_RatsnestColor = WHITE;            // Ratsnest color
 }
+
+
+// see pcbstruct.h
+int EDA_BoardDesignSettings::GetVisibleLayers()
+{
+    int layerMask = 0;
+    
+    for( int i=0, mask=1;  i< 32;   ++i, mask<<=1 )
+    {
+        if( !(m_LayerColor[i] & ITEM_NOT_SHOW) )
+            layerMask |= mask;
+    }
+    
+    return layerMask;
+}
+
diff --git a/pcbnew/classtrc.cpp b/pcbnew/classtrc.cpp
index 735dac5c23..f7142292e9 100644
--- a/pcbnew/classtrc.cpp
+++ b/pcbnew/classtrc.cpp
@@ -13,448 +13,501 @@
 #endif
 
 
-
-	/**************************************/
-	/* Classes pour Pistes, Vias et Zones */
-	/**************************************/
+/**************************************/
+/* Classes pour Pistes, Vias et Zones */
+/**************************************/
 
 /* Constructeur des classes type pistes, vias et zones */
 
-TRACK::TRACK(EDA_BaseStruct * StructFather, DrawStructureType idtype):
-		SEGDRAW_Struct( StructFather, idtype)
+TRACK::TRACK( EDA_BaseStruct* StructFather, DrawStructureType idtype ) :
+    SEGDRAW_Struct( StructFather, idtype )
 {
-	m_Shape = S_SEGMENT;
-	start = end = NULL;
-	m_NetCode = 0;
-	m_Sous_Netcode = 0;
+    m_Shape        = S_SEGMENT;
+    start          = end = NULL;
+    m_NetCode      = 0;
+    m_Sous_Netcode = 0;
 }
 
-SEGZONE::SEGZONE(EDA_BaseStruct * StructFather):
-		TRACK( StructFather, TYPEZONE)
+
+SEGZONE::SEGZONE( EDA_BaseStruct* StructFather ) :
+    TRACK( StructFather, TYPEZONE )
 {
 }
 
-SEGVIA::SEGVIA(EDA_BaseStruct * StructFather):
-		TRACK( StructFather, TYPEVIA)
+
+SEGVIA::SEGVIA( EDA_BaseStruct* StructFather ) :
+    TRACK( StructFather, TYPEVIA )
 {
 }
 
+
 /******************************************/
-bool SEGVIA::IsViaOnLayer(int layer_number )
+bool SEGVIA::IsViaOnLayer( int layer_number )
 /******************************************/
+
 /* Retoune TRUE si Via sur layer layer_number
-*/
+ */
 {
-int via_type = Shape();
+    int via_type = Shape();
 
-	if( via_type == VIA_NORMALE )
-	{
-		if ( layer_number <= LAYER_CMP_N ) return TRUE;
-		else return FALSE;
-	}
+    if( via_type == VIA_NORMALE )
+    {
+        if( layer_number <= LAYER_CMP_N )
+            return TRUE;
+        else
+            return FALSE;
+    }
 
-	// VIA_BORGNE ou  VIA_ENTERREE:
+    // VIA_BORGNE ou  VIA_ENTERREE:
 
-int bottom_layer, top_layer;
-	ReturnLayerPair(& top_layer, & bottom_layer);
-	if ( (bottom_layer <= layer_number) && (top_layer >= layer_number) )
-		return TRUE;
-	else return FALSE;
+    int bottom_layer, top_layer;
+    ReturnLayerPair( &top_layer, &bottom_layer );
+    if( (bottom_layer <= layer_number) && (top_layer >= layer_number) )
+        return TRUE;
+    else
+        return FALSE;
 }
 
 
 /*********************************************************/
-void SEGVIA::SetLayerPair(int top_layer, int bottom_layer)
+void SEGVIA::SetLayerPair( int top_layer, int bottom_layer )
 /*********************************************************/
+
 /* Met a jour .m_Layer pour une via:
-	m_Layer code les 2 couches limitant la via
-*/
+ *  m_Layer code les 2 couches limitant la via
+ */
 {
-int via_type = m_Shape & 255;
+    int via_type = m_Shape & 255;
 
-	if( via_type == VIA_NORMALE )
-	{
-		top_layer = LAYER_CMP_N; bottom_layer = LAYER_CUIVRE_N;
-	}
+    if( via_type == VIA_NORMALE )
+    {
+        top_layer = LAYER_CMP_N; bottom_layer = LAYER_CUIVRE_N;
+    }
 
-	if ( bottom_layer > top_layer ) EXCHG (bottom_layer, top_layer);
-	m_Layer = (top_layer & 15) + ( (bottom_layer & 15) << 4 );
+    if( bottom_layer > top_layer )
+        EXCHG( bottom_layer, top_layer );
+    m_Layer = (top_layer & 15) + ( (bottom_layer & 15) << 4 );
 }
 
+
 /***************************************************************/
-void SEGVIA::ReturnLayerPair(int * top_layer, int * bottom_layer)
+void SEGVIA::ReturnLayerPair( int* top_layer, int* bottom_layer )
 /***************************************************************/
+
 /* Retourne les 2 couches limitant la via
-	les pointeurs top_layer et bottom_layer peuvent etre NULLs
-*/
+ *  les pointeurs top_layer et bottom_layer peuvent etre NULLs
+ */
 {
-int b_layer = (m_Layer >> 4) & 15;
-int t_layer = m_Layer & 15;
+    int b_layer = (m_Layer >> 4) & 15;
+    int t_layer = m_Layer & 15;
 
-	if ( b_layer > t_layer ) EXCHG (b_layer, t_layer);
-	if ( top_layer ) * top_layer = t_layer;
-	if ( bottom_layer ) * bottom_layer = b_layer;
+    if( b_layer > t_layer )
+        EXCHG( b_layer, t_layer );
+    if( top_layer )
+        *top_layer = t_layer;
+    if( bottom_layer )
+        *bottom_layer = b_layer;
 }
 
 
 /************************/
-TRACK * TRACK::Next(void)
+TRACK* TRACK::Next( void )
 /************************/
 {
-	return (TRACK *) Pnext;
+    return (TRACK*) Pnext;
 }
 
 
-
 /* supprime du chainage la structure Struct
-  les structures arrieres et avant sont chainees directement
+ *  les structures arrieres et avant sont chainees directement
  */
 void TRACK::UnLink( void )
 {
-	/* Modification du chainage arriere */
-	if( Pback )
-		{
-		if( Pback->m_StructType != TYPEPCB)
-			{
-			Pback->Pnext = Pnext;
-			}
+    /* Modification du chainage arriere */
+    if( Pback )
+    {
+        if( Pback->m_StructType != TYPEPCB )
+        {
+            Pback->Pnext = Pnext;
+        }
+        else                                /* Le chainage arriere pointe sur la structure "Pere" */
+        {
+            if( GetState( DELETED ) )       // A REVOIR car Pback = NULL si place en undelete
+            {
+                if( g_UnDeleteStack )
+                    g_UnDeleteStack[g_UnDeleteStackPtr - 1] = Pnext;
+            }
+            else
+            {
+                if( m_StructType == TYPEZONE )
+                {
+                    ( (BOARD*) Pback )->m_Zone = (TRACK*) Pnext;
+                }
+                else
+                {
+                    ( (BOARD*) Pback )->m_Track = (TRACK*) Pnext;
+                }
+            }
+        }
+    }
 
-		else /* Le chainage arriere pointe sur la structure "Pere" */
-			{
-			if ( GetState(DELETED) )	// A REVOIR car Pback = NULL si place en undelete
-				{
-				if( g_UnDeleteStack ) g_UnDeleteStack[g_UnDeleteStackPtr-1] = Pnext;
-				}
-			else
-				{
-				if (m_StructType == TYPEZONE)
-					{
-					((BOARD*)Pback)->m_Zone = (TRACK*)Pnext;
-					}
-				else
-					{
-					((BOARD*)Pback)->m_Track = (TRACK*)Pnext;
-					}
-				}
-			}
-		}
+    /* Modification du chainage avant */
+    if( Pnext )
+        Pnext->Pback = Pback;
 
-	/* Modification du chainage avant */
-	if( Pnext) Pnext->Pback = Pback;
-
-	Pnext = Pback = NULL;
+    Pnext = Pback = NULL;
 }
 
+
 /************************************************************/
-void TRACK::Insert(BOARD * Pcb, EDA_BaseStruct * InsertPoint)
+void TRACK::Insert( BOARD* Pcb, EDA_BaseStruct* InsertPoint )
 /************************************************************/
+
 /* Ajoute un element ou une liste  a une liste de base
-	Si Insertpoint == NULL: insertion en debut de
-		liste Pcb->Track ou Pcb->Zone
-	Insertion a la suite de InsertPoint
-	Si InsertPoint == NULL, insertion en tete de liste
-*/
+ *  Si Insertpoint == NULL: insertion en debut de
+ *      liste Pcb->Track ou Pcb->Zone
+ *  Insertion a la suite de InsertPoint
+ *  Si InsertPoint == NULL, insertion en tete de liste
+ */
 {
-TRACK* track, *NextS;
-	/* Insertion du debut de la chaine a greffer */
-	if (InsertPoint == NULL)
-		{
-		Pback = Pcb;
-		if (m_StructType == TYPEZONE)
-			{
-			NextS = Pcb->m_Zone; Pcb->m_Zone = this;
-			}
-		else
-			{
-			NextS = Pcb->m_Track; Pcb->m_Track = this;
-			}
-		}
+    TRACK* track, * NextS;
 
-	else
-		{
-		NextS = (TRACK*)InsertPoint->Pnext;
-		Pback = InsertPoint;
-		InsertPoint->Pnext = this;
-		}
+    /* Insertion du debut de la chaine a greffer */
+    if( InsertPoint == NULL )
+    {
+        Pback = Pcb;
+        if( m_StructType == TYPEZONE )
+        {
+            NextS = Pcb->m_Zone; Pcb->m_Zone = this;
+        }
+        else
+        {
+            NextS = Pcb->m_Track; Pcb->m_Track = this;
+        }
+    }
+    else
+    {
+        NextS = (TRACK*) InsertPoint->Pnext;
+        Pback = InsertPoint;
+        InsertPoint->Pnext = this;
+    }
 
-	/* Chainage de la fin de la liste a greffer */
-	track = this;
-	while ( track->Pnext ) track = (TRACK*) track->Pnext;
-	/* Track pointe la fin de la chaine a greffer */
-	track->Pnext = NextS;
-	if ( NextS ) NextS->Pback = track;
+    /* Chainage de la fin de la liste a greffer */
+    track = this;
+    while( track->Pnext )
+        track = (TRACK*) track->Pnext;
+
+    /* Track pointe la fin de la chaine a greffer */
+    track->Pnext = NextS;
+    if( NextS )
+        NextS->Pback = track;
 }
 
 
 /***********************************************/
-TRACK * TRACK::GetBestInsertPoint( BOARD * Pcb )
+TRACK* TRACK::GetBestInsertPoint( BOARD* Pcb )
 /***********************************************/
+
 /* Recherche du meilleur point d'insertion pour le nouveau segment de piste
-   Retourne
-		un pointeur sur le segment de piste APRES lequel l'insertion
-			 doit se faire ( dernier segment du net d'apartenance )
-		NULL si pas de piste ( liste vide );
-*/
+ *  Retourne
+ *      un pointeur sur le segment de piste APRES lequel l'insertion
+ *           doit se faire ( dernier segment du net d'apartenance )
+ *      NULL si pas de piste ( liste vide );
+ */
 {
-TRACK * track, * NextTrack;
+    TRACK* track, * NextTrack;
 
-	if( m_StructType == TYPEZONE ) track = Pcb->m_Zone;
-	else track = Pcb->m_Track;
+    if( m_StructType == TYPEZONE )
+        track = Pcb->m_Zone;
+    else
+        track = Pcb->m_Track;
 
-	/* Traitement du debut de liste */
-	if ( track == NULL ) return(NULL);	/* pas de piste ! */
-	if ( m_NetCode < track->m_NetCode ) /* insertion en tete de liste */
-		return(NULL);
+    /* Traitement du debut de liste */
+    if( track == NULL )
+        return NULL;                    /* pas de piste ! */
+    if( m_NetCode < track->m_NetCode )  /* insertion en tete de liste */
+        return NULL;
 
-	while( (NextTrack = (TRACK*)track->Pnext) != NULL )
-		{
-		if ( NextTrack->m_NetCode > this->m_NetCode ) break;
-		track = NextTrack;
-		}
-	return ( track);
+    while( (NextTrack = (TRACK*) track->Pnext) != NULL )
+    {
+        if( NextTrack->m_NetCode > this->m_NetCode )
+            break;
+        track = NextTrack;
+    }
+
+    return track;
 }
 
+
 /* Recherche du debut du net
-   ( les elements sont classes par net_code croissant )
-	la recherche se fait a partir de this
-	si net_code == -1 le netcode de this sera utilise
-	Retourne un pointeur sur le debut du net, ou NULL si net non trouve
-*/
-TRACK * TRACK::GetStartNetCode(int NetCode )
+ *  ( les elements sont classes par net_code croissant )
+ *  la recherche se fait a partir de this
+ *  si net_code == -1 le netcode de this sera utilise
+ *  Retourne un pointeur sur le debut du net, ou NULL si net non trouve
+ */
+TRACK* TRACK::GetStartNetCode( int NetCode )
 {
-TRACK * Track = this;
-int ii = 0;
+    TRACK* Track = this;
+    int    ii    = 0;
 
-	if( NetCode == -1 ) NetCode = m_NetCode;
+    if( NetCode == -1 )
+        NetCode = m_NetCode;
 
-	while( Track != NULL)
-		{
-		if ( Track->m_NetCode > NetCode ) break;
-		if ( Track->m_NetCode == NetCode )
-			{
-			ii++; break;
-			}
- 		Track = (TRACK*) Track->Pnext;
-		}
-	if ( ii ) return(Track);
-	else return (NULL);
+    while( Track != NULL )
+    {
+        if( Track->m_NetCode > NetCode )
+            break;
+        if( Track->m_NetCode == NetCode )
+        {
+            ii++; break;
+        }
+        Track = (TRACK*) Track->Pnext;
+    }
+
+    if( ii )
+        return Track;
+    else
+        return NULL;
 }
 
+
 /* Recherche de la fin du net
-	Retourne un pointeur sur la fin du net, ou NULL si net non trouve
-*/
-TRACK * TRACK::GetEndNetCode(int NetCode)
+ *  Retourne un pointeur sur la fin du net, ou NULL si net non trouve
+ */
+TRACK* TRACK::GetEndNetCode( int NetCode )
 {
-TRACK * NextS, * Track = this;
-int ii = 0;
+    TRACK* NextS, * Track = this;
+    int    ii = 0;
 
-	if( Track == NULL ) return(NULL);
+    if( Track == NULL )
+        return NULL;
 
-	if( NetCode == -1 ) NetCode = m_NetCode;
+    if( NetCode == -1 )
+        NetCode = m_NetCode;
 
-	while( Track != NULL)
-		{
-		NextS = (TRACK*)Track->Pnext;
-		if(Track->m_NetCode == NetCode) ii++;
-		if ( NextS == NULL ) break;
-		if ( NextS->m_NetCode > NetCode) break;
-		Track = NextS;
-		}
-	if ( ii ) return(Track);
-	else return (NULL);
+    while( Track != NULL )
+    {
+        NextS = (TRACK*) Track->Pnext;
+        if( Track->m_NetCode == NetCode )
+            ii++;
+        if( NextS == NULL )
+            break;
+        if( NextS->m_NetCode > NetCode )
+            break;
+        Track = NextS;
+    }
+
+    if( ii )
+        return Track;
+    else
+        return NULL;
 }
 
 
 /**********************************/
-TRACK * TRACK:: Copy( int NbSegm  )
+TRACK* TRACK:: Copy( int NbSegm  )
 /**********************************/
+
 /* Copie d'un Element ou d'une chaine de n elements
-	Retourne un pointeur sur le nouvel element ou le debut de la
-	nouvelle chaine
-*/
+ *  Retourne un pointeur sur le nouvel element ou le debut de la
+ *  nouvelle chaine
+ */
 {
-TRACK * NewTrack, * FirstTrack, *OldTrack, * Source = this;
-int ii;
+    TRACK* NewTrack, * FirstTrack, * OldTrack, * Source = this;
+    int    ii;
 
-	FirstTrack = NewTrack = new TRACK(NULL);
-	*NewTrack = * Source;
+    FirstTrack = NewTrack = new TRACK( NULL );
 
-	/* correction du chainage */
-	NewTrack->Pback = NewTrack->Pnext = NULL;
+    *NewTrack = *Source;
 
-	/* reset des pointeurs auxiliaires */
-	NewTrack->start = NewTrack->end = NULL;
+    /* correction du chainage */
+    NewTrack->Pback = NewTrack->Pnext = NULL;
 
-	if( NbSegm <=1 ) return (FirstTrack);
+    /* reset des pointeurs auxiliaires */
+    NewTrack->start = NewTrack->end = NULL;
 
-	for( ii = 1; ii < NbSegm; ii++ )
-		{
-		Source = (TRACK*) Source->Pnext;
-		if( Source == NULL ) break;
-		OldTrack = NewTrack;
-		NewTrack = new TRACK(m_Parent);
-		if ( NewTrack == NULL ) break;
-		NewTrack->m_StructType = Source->m_StructType;
-		NewTrack->m_Shape = Source->m_Shape;
-		NewTrack->m_NetCode = Source->m_NetCode;
-		NewTrack->m_Flags = Source->m_Flags;
-		NewTrack->m_TimeStamp = Source->m_TimeStamp;
-		NewTrack->SetStatus(Source->ReturnStatus() );
-		NewTrack->m_Layer = Source->m_Layer;
-		NewTrack->m_Start = Source->m_Start;
-		NewTrack->m_End = Source->m_End;
-		NewTrack->m_Width = Source->m_Width;
+    if( NbSegm <=1 )
+        return FirstTrack;
 
-		NewTrack->Insert(NULL, OldTrack);
-		}
+    for( ii = 1; ii < NbSegm; ii++ )
+    {
+        Source = (TRACK*) Source->Pnext;
+        if( Source == NULL )
+            break;
+        OldTrack = NewTrack;
+        NewTrack = new TRACK( m_Parent );
 
-	 return (FirstTrack);
+        if( NewTrack == NULL )
+            break;
+        NewTrack->m_StructType = Source->m_StructType;
+        NewTrack->m_Shape     = Source->m_Shape;
+        NewTrack->m_NetCode   = Source->m_NetCode;
+        NewTrack->m_Flags     = Source->m_Flags;
+        NewTrack->m_TimeStamp = Source->m_TimeStamp;
+        NewTrack->SetStatus( Source->ReturnStatus() );
+        NewTrack->m_Layer = Source->m_Layer;
+        NewTrack->m_Start = Source->m_Start;
+        NewTrack->m_End   = Source->m_End;
+        NewTrack->m_Width = Source->m_Width;
+
+        NewTrack->Insert( NULL, OldTrack );
+    }
+
+    return FirstTrack;
 }
 
+
 /********************************************/
-bool TRACK::WriteTrackDescr(FILE * File)
+bool TRACK::WriteTrackDescr( FILE* File )
 /********************************************/
 {
-int type;
+    int type;
 
-	type = 0;
-	if( m_StructType == TYPEVIA ) type = 1;
+    type = 0;
+    if( m_StructType == TYPEVIA )
+        type = 1;
 
-	if( GetState(DELETED) ) return FALSE;
+    if( GetState( DELETED ) )
+        return FALSE;
 
-	fprintf( File,"Po %d %d %d %d %d %d\n",m_Shape,
-			m_Start.x, m_Start.y, m_End.x, m_End.y, m_Width );
+    fprintf( File, "Po %d %d %d %d %d %d\n", m_Shape,
+             m_Start.x, m_Start.y, m_End.x, m_End.y, m_Width );
 
-	fprintf( File,"De %d %d %d %lX %X\n",
-			m_Layer, type ,m_NetCode,
-			m_TimeStamp, ReturnStatus());
-	return TRUE;
+    fprintf( File, "De %d %d %d %lX %X\n",
+            m_Layer, type, m_NetCode,
+            m_TimeStamp, ReturnStatus() );
+    return TRUE;
 }
 
+
 /**********************************************************************/
-void TRACK::Draw(WinEDA_DrawPanel * panel, wxDC * DC, int draw_mode)
+void TRACK::Draw( WinEDA_DrawPanel* panel, wxDC* DC, int draw_mode )
 /*********************************************************************/
- /* routine de trace de 1 segment de piste.
-Parametres :
-	draw_mode = mode ( GR_XOR, GR_OR..)
-*/
+
+/* routine de trace de 1 segment de piste.
+ *  Parametres :
+ *  draw_mode = mode ( GR_XOR, GR_OR..)
+ */
 {
-int l_piste;
-int color;
-int zoom;
-int rayon;
-int curr_layer = ((PCB_SCREEN*)panel->GetScreen())->m_Active_Layer;
+    int l_piste;
+    int color;
+    int zoom;
+    int rayon;
+    int curr_layer = ( (PCB_SCREEN*) panel->GetScreen() )->m_Active_Layer;
 
-	if(m_StructType == TYPEZONE && (! DisplayOpt.DisplayZones) )
-		return;
+    if( m_StructType == TYPEZONE && (!DisplayOpt.DisplayZones) )
+        return;
 
-	GRSetDrawMode(DC, draw_mode);
+    GRSetDrawMode( DC, draw_mode );
 
-	if ( m_StructType == TYPEVIA ) /* VIA rencontree */
-		color = g_DesignSettings.m_ViaColor[m_Shape];
-	else color = g_DesignSettings.m_LayerColor[m_Layer];
+    if( m_StructType == TYPEVIA ) /* VIA rencontree */
+        color = g_DesignSettings.m_ViaColor[m_Shape];
+    else
+        color = g_DesignSettings.m_LayerColor[m_Layer];
 
-	if( (color & (ITEM_NOT_SHOW | HIGHT_LIGHT_FLAG)) == ITEM_NOT_SHOW) return ;
+    if( ( color & (ITEM_NOT_SHOW | HIGHT_LIGHT_FLAG) ) == ITEM_NOT_SHOW )
+        return;
 
-	if ( DisplayOpt.ContrastModeDisplay )
-	{
-		if ( m_StructType == TYPEVIA )
-		{
-			if ( ! ((SEGVIA*)this)->IsViaOnLayer(curr_layer) )
-			{
-				color &= ~MASKCOLOR;
-				color |= DARKDARKGRAY;
-			}
-		}
-		else if ( m_Layer != curr_layer)
-		{
-			color &= ~MASKCOLOR;
-			color |= DARKDARKGRAY;
-		}
-	}
+    if( DisplayOpt.ContrastModeDisplay )
+    {
+        if( m_StructType == TYPEVIA )
+        {
+            if( !( (SEGVIA*) this )->IsViaOnLayer( curr_layer ) )
+            {
+                color &= ~MASKCOLOR;
+                color |= DARKDARKGRAY;
+            }
+        }
+        else if( m_Layer != curr_layer )
+        {
+            color &= ~MASKCOLOR;
+            color |= DARKDARKGRAY;
+        }
+    }
 
-	if( draw_mode & GR_SURBRILL)
-		{
-		if( draw_mode & GR_AND)	color &= ~HIGHT_LIGHT_FLAG;
-		else color |= HIGHT_LIGHT_FLAG;
-		}
-	if ( color & HIGHT_LIGHT_FLAG)
-		color = ColorRefs[color & MASKCOLOR].m_LightColor;
+    if( draw_mode & GR_SURBRILL )
+    {
+        if( draw_mode & GR_AND )
+            color &= ~HIGHT_LIGHT_FLAG;
+        else
+            color |= HIGHT_LIGHT_FLAG;
+    }
+    if( color & HIGHT_LIGHT_FLAG )
+        color = ColorRefs[color & MASKCOLOR].m_LightColor;
 
-	zoom = panel->GetZoom();
+    zoom = panel->GetZoom();
 
-	l_piste = m_Width >> 1;
+    l_piste = m_Width >> 1;
 
-	if ( m_StructType == TYPEVIA ) /* VIA rencontree */
-		{
-		rayon = l_piste; if( rayon < zoom ) rayon = zoom;
-		GRCircle(&panel->m_ClipBox, DC, m_Start.x, m_Start.y, rayon, color) ;
-		if ( rayon > (4*zoom) )
-			{
-			GRCircle(&panel->m_ClipBox, DC, m_Start.x, m_Start.y,
-						rayon-(2*zoom) , color);
+    if( m_StructType == TYPEVIA ) /* VIA rencontree */
+    {
+        rayon = l_piste; if( rayon < zoom )
+            rayon = zoom;
+        GRCircle( &panel->m_ClipBox, DC, m_Start.x, m_Start.y, rayon, color );
+        if( rayon > (4 * zoom) )
+        {
+            GRCircle( &panel->m_ClipBox, DC, m_Start.x, m_Start.y,
+                      rayon - (2 * zoom), color );
 
-			if(DisplayOpt.DisplayTrackIsol)
-				 GRCircle(&panel->m_ClipBox, DC, m_Start.x, m_Start.y,
-						rayon + g_DesignSettings.m_TrackClearence, color);
-			}
-		return;
-		}
+            if( DisplayOpt.DisplayTrackIsol )
+                GRCircle( &panel->m_ClipBox, DC, m_Start.x, m_Start.y,
+                          rayon + g_DesignSettings.m_TrackClearence, color );
+        }
+        return;
+    }
 
-	if(m_Shape == S_CIRCLE)
-		{
-		rayon = (int)hypot((double)(m_End.x - m_Start.x),
-							(double)(m_End.y - m_Start.y) );
-		if ( (l_piste/zoom) < L_MIN_DESSIN)
-			{
-			GRCircle(&panel->m_ClipBox, DC, m_Start.x, m_Start.y, rayon , color) ;
-			}
+    if( m_Shape == S_CIRCLE )
+    {
+        rayon = (int) hypot( (double) (m_End.x - m_Start.x),
+                            (double) (m_End.y - m_Start.y) );
+        if( (l_piste / zoom) < L_MIN_DESSIN )
+        {
+            GRCircle( &panel->m_ClipBox, DC, m_Start.x, m_Start.y, rayon, color );
+        }
+        else
+        {
+            if( l_piste <= zoom ) /* trace simplifie si l_piste/zoom <= 1 */
+            {
+                GRCircle( &panel->m_ClipBox, DC, m_Start.x, m_Start.y, rayon, color );
+            }
+            else if( ( !DisplayOpt.DisplayPcbTrackFill) || GetState( FORCE_SKETCH ) )
+            {
+                GRCircle( &panel->m_ClipBox, DC, m_Start.x, m_Start.y, rayon - l_piste, color );
+                GRCircle( &panel->m_ClipBox, DC, m_Start.x, m_Start.y, rayon + l_piste, color );
+            }
+            else
+            {
+                GRCircle( &panel->m_ClipBox, DC, m_Start.x, m_Start.y, rayon,
+                          m_Width, color );
+            }
+        }
+        return;
+    }
 
-		else
-			{
-			if(l_piste <= zoom) /* trace simplifie si l_piste/zoom <= 1 */
-				{
-				GRCircle(&panel->m_ClipBox, DC, m_Start.x, m_Start.y, rayon, color);
-				}
-			else if( ( ! DisplayOpt.DisplayPcbTrackFill) || GetState(FORCE_SKETCH))
-				{
-				GRCircle(&panel->m_ClipBox, DC, m_Start.x, m_Start.y, rayon-l_piste, color);
-				GRCircle(&panel->m_ClipBox, DC, m_Start.x, m_Start.y, rayon+l_piste, color);
-				}
-			else
-				{
-				GRCircle(&panel->m_ClipBox, DC, m_Start.x, m_Start.y, rayon,
-						m_Width, color);
-				}
-			}
-		return;
-		}
+    if( (l_piste / zoom) < L_MIN_DESSIN )
+    {
+        GRLine( &panel->m_ClipBox, DC, m_Start.x, m_Start.y,
+                m_End.x, m_End.y, color );
+        return;
+    }
 
-	if ( (l_piste/zoom) < L_MIN_DESSIN)
-		{
-		GRLine(&panel->m_ClipBox, DC, m_Start.x, m_Start.y,
-					m_End.x, m_End.y, color);
-		return;
-		}
+    if( (!DisplayOpt.DisplayPcbTrackFill) || GetState( FORCE_SKETCH ) )
+    {
+        GRCSegm( &panel->m_ClipBox, DC, m_Start.x, m_Start.y,
+                 m_End.x, m_End.y, m_Width, color );
+    }
+    else
+    {
+        GRFillCSegm( &panel->m_ClipBox, DC, m_Start.x, m_Start.y,
+                     m_End.x, m_End.y, m_Width, color );
+    }
 
-	if( (! DisplayOpt.DisplayPcbTrackFill) || GetState(FORCE_SKETCH) )
-		{
-		GRCSegm(&panel->m_ClipBox, DC, m_Start.x, m_Start.y,
-						m_End.x, m_End.y, m_Width, color) ;
-		}
-	else
-		{
-		GRFillCSegm(&panel->m_ClipBox, DC, m_Start.x, m_Start.y,
-				m_End.x, m_End.y, m_Width, color) ;
-		}
-
-	/* Trace de l'isolation (pour segments type CUIVRE et TRACK uniquement */
-	if( (DisplayOpt.DisplayTrackIsol) && (m_Layer <= CMP_N )
-		&& ( m_StructType == TYPETRACK) )
-		{
-		GRCSegm(&panel->m_ClipBox, DC, m_Start.x, m_Start.y,
-				m_End.x, m_End.y,
-				m_Width + (g_DesignSettings.m_TrackClearence*2), color) ;
-		}
+    /* Trace de l'isolation (pour segments type CUIVRE et TRACK uniquement */
+    if( (DisplayOpt.DisplayTrackIsol) && (m_Layer <= CMP_N )
+       && ( m_StructType == TYPETRACK) )
+    {
+        GRCSegm( &panel->m_ClipBox, DC, m_Start.x, m_Start.y,
+                 m_End.x, m_End.y,
+                 m_Width + (g_DesignSettings.m_TrackClearence * 2), color );
+    }
 }
-
diff --git a/pcbnew/collectors.cpp b/pcbnew/collectors.cpp
index f00dc5339a..5df1bff17c 100644
--- a/pcbnew/collectors.cpp
+++ b/pcbnew/collectors.cpp
@@ -34,7 +34,7 @@
 
 
 // see collectors.h
-const KICAD_T ARROWCOLLECTOR::AllBoardItems[] = {
+const KICAD_T GENERALCOLLECTOR::AllBoardItems[] = {
     TYPETEXTE, 
     TYPEDRAWSEGMENT, 
     TYPECOTATION,
@@ -59,45 +59,82 @@ const KICAD_T ARROWCOLLECTOR::AllBoardItems[] = {
  * @return SEARCH_RESULT - SEARCH_QUIT if the Iterator is to stop the scan,
  *   else SCAN_CONTINUE;
  */ 
-SEARCH_RESULT ARROWCOLLECTOR::Inspect( EDA_BaseStruct* testItem, const void* notUsed )
+SEARCH_RESULT GENERALCOLLECTOR::Inspect( EDA_BaseStruct* testItem, const void* notUsed )
 {
     BOARD_ITEM* item = (BOARD_ITEM*) testItem;
+
+#if 1   // debugging
+    static int breakhere = 0;
+    switch( item->m_StructType )
+    {
+    case TYPEPAD:
+            breakhere++;
+            break;
+    case TYPEVIA:
+            breakhere++;
+            break;
+    case TYPETRACK:
+            breakhere++;
+            break;
+    case TYPETEXTE: 
+            breakhere++;
+            break;
+    case TYPEDRAWSEGMENT: 
+            breakhere++;
+            break;
+    case TYPECOTATION:
+            breakhere++;
+            break;
+    case TYPETEXTEMODULE:
+            TEXTE_MODULE* tm;
+            tm = (TEXTE_MODULE*) item;
+            if( tm->m_Text == wxT("U5") )
+            {
+                breakhere++;
+            }
+            break;
+    case TYPEMODULE:
+            breakhere++;
+            break;
+    default:
+            breakhere++;
+            break;
+    }
+#endif
     
     switch( item->m_StructType )
     {
     case TYPEPAD:
     case TYPEVIA:
-        /*
-        if( item->IsOnOneOfTheseLayers( m_LayerMask ) )
-        {
-            if( item->HitTest( refPos ) )
-                Append2nd( testItem );
-        }
-        */
-        break;
-
     case TYPETRACK:
     case TYPETEXTE: 
     case TYPEDRAWSEGMENT: 
     case TYPECOTATION:
     case TYPETEXTEMODULE:
     case TYPEMODULE:
-        if( item->GetLayer() == m_PreferredLayer )
+        
+        // The primary search criteria:
+        if( item->IsOnLayer( m_PreferredLayer ) )
         {
             if( item->HitTest( m_RefPos ) )
-                Append( item );
+            {
+                if( !item->IsLocked() )
+                    Append( item );
+                else
+                    Append2nd( item );      // 2nd if locked.
+            }
         }
-        /*
+        
+        // The secondary search criteria
         else if( item->IsOnOneOfTheseLayers( m_LayerMask ) )
         {
             if( item->HitTest( m_RefPos ) )
                 Append2nd( item );
         }
-        */
         break;
         
     default:
-        ;   // nothing
+        printf("OOPS, not expecting class type %d\n", item->m_StructType );
     }
 
     return SEARCH_CONTINUE;
@@ -105,16 +142,23 @@ SEARCH_RESULT ARROWCOLLECTOR::Inspect( EDA_BaseStruct* testItem, const void* not
 
 
 // see collectors.h 
-void ARROWCOLLECTOR::Scan( BOARD* board, const wxPoint& refPos, 
+void GENERALCOLLECTOR::Scan( BOARD* board, const wxPoint& refPos, 
                           int aPreferredLayer, int aLayerMask )
 {
     Empty();        // empty the collection, primary criteria list
     Empty2nd();     // empty the collection, secondary criteria list
     
+    SetPreferredLayer( aPreferredLayer );
+    SetLayerMask( aLayerMask );
+    
     /*  remember where the snapshot was taken from and pass refPos to
         the Inspect() function.
     */        
-    SetRefPos( refPos );        
+    SetRefPos( refPos );
+
+#if defined(DEBUG)
+    std::cout << '\n';
+#endif
     
     // visit the board with the INSPECTOR (me).
     board->Visit(   this,       // INSPECTOR* inspector
@@ -123,7 +167,9 @@ void ARROWCOLLECTOR::Scan( BOARD* board, const wxPoint& refPos,
     
     SetTimeNow();               // when snapshot was taken
     
-    // @todo: append 2nd list onto end of the first "list" 
+    // append 2nd list onto end of the first "list" 
+    for( unsigned i=0;  i<list2nd.size();  ++i )
+        Append( list2nd[i] );
     
     Empty2nd();
 }
diff --git a/pcbnew/collectors.h b/pcbnew/collectors.h
index 5a52ae3bef..fc5739f2ab 100644
--- a/pcbnew/collectors.h
+++ b/pcbnew/collectors.h
@@ -33,26 +33,18 @@
 
 #include "class_collector.h"
 
-
-
-class RAT1COLLECTOR : public COLLECTOR
-{
-    ;
-};
-
-
 /**
- * Class ARROWCOLLECTOR
+ * Class GENERALCOLLECTOR
  * is intended for use when the right click button is pressed, or when the 
  * plain "arrow" tool is in effect.  This class can be used by window classes
  * such as WinEDA_PcbFrame.
  *
- * Philosophy: this class knows nothing of the context in which as BOARD is used
+ * Philosophy: this class knows nothing of the context in which a BOARD is used
  * and that means it knows nothing about which layers are visible or current, 
  * but can handle those concerns by the SetPreferredLayer() function and the
  * SetLayerMask() fuction.
  */
-class ARROWCOLLECTOR : public COLLECTOR
+class GENERALCOLLECTOR : public COLLECTOR
 {
     /**
      * A place to hold collected objects which don't match precisely the search 
@@ -60,7 +52,7 @@ class ARROWCOLLECTOR : public COLLECTOR
      * "2nd" choice, which will be appended to the end of COLLECTOR's prime 
      * "list" at the end of the search.
      */
-    std::vector<EDA_BaseStruct*>    list2nd;
+    std::vector<BOARD_ITEM*>    list2nd;
     
 
     /**
@@ -77,9 +69,9 @@ public:
 
 
     /**
-     * Constructor ARROWCOLLECTOR
+     * Constructor GENERALCOLLECTOR
      */ 
-    ARROWCOLLECTOR()
+    GENERALCOLLECTOR()
     {
         m_LayerMask = 0;
         SetScanTypes( AllBoardItems );
@@ -90,7 +82,7 @@ public:
         list2nd.clear();
     }
 
-    void Append2nd( EDA_BaseStruct* item )
+    void Append2nd( BOARD_ITEM* item )
     {
         list2nd.push_back( item );
     }
@@ -99,7 +91,7 @@ public:
     /**
      * Function SetLayerMask
      * takes a bit-mapped layer mask and records it.  During the scan/search,
-     * this is used as a secondary criterion.  That is, if there is no direct 
+     * this is used as a secondary search criterion.  That is, if there is no direct 
      * layer match with COLLECTOR::m_PreferredLayer (the primary criterion), 
      * then an object on any layer given in this bit-map is recorded as a 
      * second choice object if it also HitTest()s true.
@@ -115,6 +107,21 @@ public:
     }
 
     
+    /**
+     * Function operator[int]
+     * overloads COLLECTOR::operator[](int) to return a BOARD_ITEM* instead of
+     * an EDA_BaseStruct* type.
+     * @param ndx The index into the list.
+     * @return BOARD_ITEM* - or something derived from it, or NULL.
+     */
+    BOARD_ITEM* operator[]( int ndx ) const
+    {
+        if( (unsigned)ndx < (unsigned)GetCount() )
+            return (BOARD_ITEM*) list[ ndx ];
+        return NULL;
+    }
+
+    
     /**
      * Function Inspect
      * is the examining function within the INSPECTOR which is passed to the 
@@ -133,6 +140,8 @@ public:
      * scans a BOARD using this class's Inspector method, which does the collection.
      * @param board A BOARD to scan.
      * @param refPos A wxPoint to use in hit-testing.
+     * @param aPreferredLayer The layer meeting the primary search criterion.
+     * @param aLayerMask The layers, in bit-mapped form, meeting the secondary search criterion.
      */
     void Scan( BOARD* board, const wxPoint& refPos, int aPreferredLayer, int aLayerMask );
 };
diff --git a/pcbnew/controle.cpp b/pcbnew/controle.cpp
index de12c5b81a..9c657302ed 100644
--- a/pcbnew/controle.cpp
+++ b/pcbnew/controle.cpp
@@ -16,6 +16,7 @@
 
 #include "id.h"
 #include "protos.h"
+#include "collectors.h"
 
 /* Routines Locales : */
 
@@ -44,8 +45,6 @@ void RemoteCommand( const char* cmdline )
     if( (idcmd == NULL) || (text == NULL) )
         return;
 
-    // @todo: this code does not reposition the window when the chosen part is scrolled off screen. 
-    
     if( strcmp( idcmd, "$PART:" ) == 0 )
     {
         msg    = CONV_FROM_UTF8( text );
@@ -93,11 +92,11 @@ void RemoteCommand( const char* cmdline )
         
         if( netcode > 0 )    /* hightlighted the net selected net*/
         {
-            if( g_HightLigt_Status )	/* erase the old hightlighted net */
+            if( g_HightLigt_Status )        /* erase the old hightlighted net */
                 frame->Hight_Light( &dc );
             
             g_HightLigth_NetCode = netcode;
-            frame->Hight_Light( &dc );	/* hightlighted the new one */
+            frame->Hight_Light( &dc );      /* hightlighted the new one */
             
             frame->DrawPanel->CursorOff( &dc );
             frame->GetScreen()->m_Curseur = pad->m_Pos;
@@ -113,13 +112,13 @@ void RemoteCommand( const char* cmdline )
         frame->Affiche_Message( msg );
     }
         
-    if( module )    // center the module on screen.
+    if( module )    // if found, center the module on screen.
         frame->Recadre_Trace( false );
 }
 
 
 /***********************************************************************/
-EDA_BaseStruct* WinEDA_BasePcbFrame::PcbGeneralLocateAndDisplay( void )
+BOARD_ITEM* WinEDA_BasePcbFrame::PcbGeneralLocateAndDisplay()
 /***********************************************************************/
 
 /* Search an item under the mouse cursor.
@@ -127,12 +126,43 @@ EDA_BaseStruct* WinEDA_BasePcbFrame::PcbGeneralLocateAndDisplay( void )
  *  if nothing found, an item will be searched without layer restriction
  */
 {
-    EDA_BaseStruct* item;
+    BOARD_ITEM* item;
+    
+#if defined(DEBUG)
 
+    // test scaffolding for Scan():
+    m_Collector->Scan( m_Pcb, 
+                       GetScreen()->RefPos(true), 
+                       
+                       // these two are inadequate, because the layer support
+                       // in Kicad is not elegant or easily understood.
+                       // The final solution will be a new class COLLECTORS_GUIDE!
+                       GetScreen()->m_Active_Layer,
+                       g_DesignSettings.GetVisibleLayers() 
+                       );
+
+    // use only the first one collected for now.
+    item = (*m_Collector)[0];  // grab first one, may be NULL
+    
+    std::cout << "collected " << m_Collector->GetCount() << '\n';       // debugging only
+    
+    if( item )
+    {
+        item->Display_Infos( this );
+        
+        // debugging: print out the collected items, showing their order too.
+        for( unsigned i=0; i<m_Collector->GetCount();  ++i )
+            (*m_Collector)[i]->Show( 0, std::cout ); 
+    }
+    return item;
+    
+#else
+    
     item = Locate( CURSEUR_OFF_GRILLE, GetScreen()->m_Active_Layer );
     if( item == NULL )
         item = Locate( CURSEUR_OFF_GRILLE, -1 );
     return item;
+#endif    
 }
 
 
diff --git a/pcbnew/files.cpp b/pcbnew/files.cpp
index 98e6304d0a..c4f6f44908 100644
--- a/pcbnew/files.cpp
+++ b/pcbnew/files.cpp
@@ -235,7 +235,7 @@ int WinEDA_PcbFrame::LoadOnePcbFile( const wxString& FullFileName, wxDC* DC, boo
     g_SaveTime = time( NULL );
 
     
-#if 0 && defined(DEBUG) 
+#if 1 && defined(DEBUG) 
     // note this seems to freeze up pcbnew when run under the kicad project 
     // manager.  runs fine from command prompt.
     // output the board object tree to stdout:
diff --git a/pcbnew/locate.cpp b/pcbnew/locate.cpp
index 6c9ebe82b7..df38a13543 100644
--- a/pcbnew/locate.cpp
+++ b/pcbnew/locate.cpp
@@ -15,7 +15,7 @@
 
                                              
 /* fonctions locales */
-EDA_BaseStruct* Locate_MirePcb( EDA_BaseStruct* PtStruct, int LayerSearch, int typeloc );
+MIREPCB* Locate_MirePcb( BOARD_ITEM* PtStruct, int LayerSearch, int typeloc );
 D_PAD* Locate_Any_Pad( BOARD* Pcb, const wxPoint& ref_pos, bool OnlyCurrentLayer );
 
 
@@ -84,7 +84,7 @@ D_PAD* ReturnPad( MODULE* module, const wxString& name )
 
 
 /*******************************************************************************/
-EDA_BaseStruct* WinEDA_BasePcbFrame::Locate( int typeloc, int LayerSearch )
+BOARD_ITEM* WinEDA_BasePcbFrame::Locate( int typeloc, int LayerSearch )
 /*******************************************************************************/
 
 /* General locate function
@@ -93,7 +93,7 @@ EDA_BaseStruct* WinEDA_BasePcbFrame::Locate( int typeloc, int LayerSearch )
  */
 {
     int             masque_layer;
-    EDA_BaseStruct* item;
+    BOARD_ITEM*     item;
 
     item = Locate_Texte_Pcb( m_Pcb->m_Drawings, LayerSearch, typeloc );
     if( item ) 
@@ -324,7 +324,7 @@ EDGE_MODULE* Locate_Edge_Module( MODULE* module, int typeloc )
 
 
 /*************************************************************************/
-EDA_BaseStruct* Locate_Cotation( BOARD* Pcb, int LayerSearch, int typeloc )
+COTATION* Locate_Cotation( BOARD* Pcb, int LayerSearch, int typeloc )
 /*************************************************************************/
 
 /* Serach for a cotation item , on LayerSearch,
@@ -334,8 +334,8 @@ EDA_BaseStruct* Locate_Cotation( BOARD* Pcb, int LayerSearch, int typeloc )
 {
     wxPoint  ref_pos = RefPos( typeloc );
 
-    EDA_BaseStruct* PtStruct = Pcb->m_Drawings;
-    for( ; PtStruct != NULL; PtStruct = PtStruct->Pnext )
+    BOARD_ITEM* PtStruct = Pcb->m_Drawings;
+    for( ; PtStruct != NULL; PtStruct = PtStruct->Next() )
     {
         if( PtStruct->m_StructType != TYPECOTATION )
             continue;
@@ -1027,8 +1027,7 @@ TRACK* Fast_Locate_Via( TRACK* start_adr, TRACK* end_adr,
 
 
 /***********************************************************************/
-EDA_BaseStruct* Locate_MirePcb( EDA_BaseStruct* PtStruct, int LayerSearch,
-                                int typeloc )
+MIREPCB* Locate_MirePcb( BOARD_ITEM* PtStruct, int LayerSearch, int typeloc )
 /***********************************************************************/
 
 /* Search for a photo target
@@ -1041,20 +1040,18 @@ EDA_BaseStruct* Locate_MirePcb( EDA_BaseStruct* PtStruct, int LayerSearch,
 
     ref_pos = RefPos( typeloc );
 
-    for( ; PtStruct != NULL; PtStruct = PtStruct->Pnext )
+    for( ; PtStruct != NULL; PtStruct = PtStruct->Next() )
     {
-        MIREPCB* item;
         if( PtStruct->m_StructType != TYPEMIRE )
             continue;
 
-        item = (MIREPCB*) PtStruct;
-        if( LayerSearch != -1 && item->GetLayer() != LayerSearch )
+        if( LayerSearch != -1  &&  PtStruct->GetLayer() != LayerSearch )
             continue;
 
-        if( item->HitTest( ref_pos ) )
+        if( PtStruct->HitTest( ref_pos ) )
             break;
     }
 
-    return PtStruct;
+    return (MIREPCB*) PtStruct;
 }
 
diff --git a/pcbnew/pcbframe.cpp b/pcbnew/pcbframe.cpp
index 35f0fe2cae..2e40aae584 100644
--- a/pcbnew/pcbframe.cpp
+++ b/pcbnew/pcbframe.cpp
@@ -193,7 +193,7 @@ WinEDA_PcbFrame::WinEDA_PcbFrame( wxWindow* father, WinEDA_App* parent,
     m_SelViaSizeBox_Changed    = FALSE;
     
 #if defined(DEBUG)    
-    m_ArrowCollector           = new ARROWCOLLECTOR();
+    m_Collector                = new GENERALCOLLECTOR();
 #endif    
 
     m_DisplayPcbTrackFill = DisplayOpt.DisplayPcbTrackFill;
@@ -243,7 +243,7 @@ WinEDA_PcbFrame::~WinEDA_PcbFrame( void )
     m_CurrentScreen = ScreenPcb;
     
 #if defined(DEBUG)    
-    delete m_ArrowCollector;
+    delete m_Collector;
 #endif    
 }
 
diff --git a/pcbnew/protos.h b/pcbnew/protos.h
index cc99d22034..9a8b230f2a 100644
--- a/pcbnew/protos.h
+++ b/pcbnew/protos.h
@@ -203,7 +203,7 @@ TRACK * Locate_Zone(TRACK * start_adresse, const wxPoint & ref_pos,int layer);
 	La recherche commence a l'adresse start_adresse
 	*/
 
-EDA_BaseStruct * Locate_Cotation(BOARD * Pcb, int LayerSearch, int typeloc);
+COTATION* Locate_Cotation(BOARD * Pcb, int LayerSearch, int typeloc);
 	/* Localise un element de cotation, en priorite sur la couche active,
 		et a defaut sur les autres couches
 		 retourne un pointeur sur l'element (TRACK ou TEXTE_PCB) localise
diff --git a/pcbnew/set_color.cpp b/pcbnew/set_color.cpp
index b15fb0e1c3..e9e45f0b5b 100644
--- a/pcbnew/set_color.cpp
+++ b/pcbnew/set_color.cpp
@@ -14,779 +14,819 @@ int CurrentColor;
 /* Fonctions locales: */
 
 /* Macro utile : */
-#define ADR(numlayer) &g_DesignSettings.m_LayerColor[(numlayer)]
+#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
+    ID_COLOR_RESET_SHOW_LAYER_ON = 1800,
+    ID_COLOR_RESET_SHOW_LAYER_OFF,
+    ID_COLOR_EXIT,
+    ID_COLOR_CHECKBOX_ONOFF,
+    ID_COLOR_SETUP
 };
 
-	/**********************************/
-	/* Liste des menus de Menu_Layers */
-	/**********************************/
+/**********************************/
+/* Liste des menus de Menu_Layers */
+/**********************************/
 struct ColorButton
-	{
-	const wxString m_Title;
-	int m_LayerNumber;
-	int * m_Color;		// Pointeur sur la variable couleur
-	bool m_NoDisplayIsColor;	// TRUE si bit ITEM_NOT_SHOW de la variable Color
-	bool * m_NoDisplay;	// Pointeur sur la variable Display on/off si ce n'est pas la var
-						// Color
-	int m_Id;
-	wxBitmapButton * m_Button;
-	int m_State;
-	wxCheckBox * m_CheckBox;	// Option Display ON/OFF
-};
-
-static ColorButton Msg_Layers_Cu=
 {
-	_("Copper Layers"), -1			/* Title */
+    const wxString m_Title;
+    int            m_LayerNumber;
+    int*           m_Color;             // Pointeur sur la variable couleur
+    bool           m_NoDisplayIsColor;  // TRUE si bit ITEM_NOT_SHOW de la variable Color
+    bool*          m_NoDisplay;         // Pointeur sur la variable Display on/off si ce n'est pas la var
+                                // Color
+    int             m_Id;
+    wxBitmapButton* m_Button;
+    int             m_State;
+    wxCheckBox*     m_CheckBox; // Option Display ON/OFF
 };
 
-static ColorButton Msg_Layers_Tech=
+static ColorButton Msg_Layers_Cu =
 {
-	_("Tech Layers"), -1				/* Title */
+    _( "Copper Layers" ), -1           /* Title */
 };
 
-static ColorButton Layer_1_Butt=
+static ColorButton Msg_Layers_Tech =
 {
-	wxEmptyString,
-	CUIVRE_N,		/* Title */
-	ADR(CUIVRE_N),	/* adr du parametre optionnel */
-	TRUE		  	/* parametre display on/off = bit ITEM_NOT_SHOW */
+    _( "Tech Layers" ), -1             /* Title */
 };
 
-static ColorButton Layer_2_Butt=
+static ColorButton Layer_1_Butt =
 {
-	wxEmptyString,
-	1,				/* Title */
-	ADR(1),		/* adr du parametre optionnel */
-	TRUE		/* parametre display on/off = bit ITEM_NOT_SHOW */
+    wxEmptyString,
+    CUIVRE_N,           /* Title */
+    ADR( CUIVRE_N ),    /* adr du parametre optionnel */
+    TRUE                /* parametre display on/off = bit ITEM_NOT_SHOW */
 };
 
-static ColorButton Layer_3_Butt=
+static ColorButton Layer_2_Butt =
 {
-	wxEmptyString,
-	2,				/* Title */
-	ADR(2),		/* adr du parametre optionnel */
-	TRUE		/* parametre display on/off = bit ITEM_NOT_SHOW */
+    wxEmptyString,
+    1,              /* Title */
+    ADR( 1 ),       /* adr du parametre optionnel */
+    TRUE            /* parametre display on/off = bit ITEM_NOT_SHOW */
 };
 
-static ColorButton Layer_4_Butt=
+static ColorButton Layer_3_Butt =
 {
-	wxEmptyString,
-	3,				/* Title */
-	ADR(3),		/* adr du parametre optionnel */
-	TRUE		/* parametre display on/off = bit ITEM_NOT_SHOW */
+    wxEmptyString,
+    2,              /* Title */
+    ADR( 2 ),       /* adr du parametre optionnel */
+    TRUE            /* parametre display on/off = bit ITEM_NOT_SHOW */
 };
 
-static ColorButton Layer_5_Butt=
+static ColorButton Layer_4_Butt =
 {
-	wxEmptyString,
-	4,				/* Title */
-	ADR(4),		/* adr du parametre optionnel */
-	TRUE		/* parametre display on/off = bit ITEM_NOT_SHOW */
+    wxEmptyString,
+    3,              /* Title */
+    ADR( 3 ),       /* adr du parametre optionnel */
+    TRUE            /* parametre display on/off = bit ITEM_NOT_SHOW */
 };
 
-static ColorButton Layer_6_Butt=
+static ColorButton Layer_5_Butt =
 {
-	wxEmptyString,
-	5,				/* Title */
-	ADR(5),		/* adr du parametre optionnel */
-	TRUE		/* parametre display on/off = bit ITEM_NOT_SHOW */
+    wxEmptyString,
+    4,              /* Title */
+    ADR( 4 ),       /* adr du parametre optionnel */
+    TRUE            /* parametre display on/off = bit ITEM_NOT_SHOW */
 };
 
-static ColorButton Layer_7_Butt=
+static ColorButton Layer_6_Butt =
 {
-	wxEmptyString,
-	6,				/* Title */
-	ADR(6),		/* adr du parametre optionnel */
-	TRUE		/* parametre display on/off = bit ITEM_NOT_SHOW */
+    wxEmptyString,
+    5,              /* Title */
+    ADR( 5 ),       /* adr du parametre optionnel */
+    TRUE            /* parametre display on/off = bit ITEM_NOT_SHOW */
 };
 
-static ColorButton Layer_8_Butt=
+static ColorButton Layer_7_Butt =
 {
-	wxEmptyString,
-	7,				/* Title */
-	ADR(7),		/* adr du parametre optionnel */
-	TRUE		/* parametre display on/off = bit ITEM_NOT_SHOW */
+    wxEmptyString,
+    6,              /* Title */
+    ADR( 6 ),       /* adr du parametre optionnel */
+    TRUE            /* parametre display on/off = bit ITEM_NOT_SHOW */
 };
 
-static ColorButton Layer_9_Butt=
+static ColorButton Layer_8_Butt =
 {
-	wxEmptyString,
-	8,				/* Title */
-	ADR(8),		/* adr du parametre optionnel */
-	TRUE		/* parametre display on/off = bit ITEM_NOT_SHOW */
+    wxEmptyString,
+    7,              /* Title */
+    ADR( 7 ),       /* adr du parametre optionnel */
+    TRUE            /* parametre display on/off = bit ITEM_NOT_SHOW */
 };
 
-static ColorButton Layer_10_Butt=
+static ColorButton Layer_9_Butt =
 {
-	wxEmptyString,
-	9,		/* Title */
-	ADR(9),			/* adr du parametre optionnel */
-	TRUE		/* parametre display on/off = bit ITEM_NOT_SHOW */
+    wxEmptyString,
+    8,              /* Title */
+    ADR( 8 ),       /* adr du parametre optionnel */
+    TRUE            /* parametre display on/off = bit ITEM_NOT_SHOW */
 };
 
-static ColorButton Layer_11_Butt=
+static ColorButton Layer_10_Butt =
 {
-	wxEmptyString,
-	10,		/* Title */
-	ADR(10),   		/* adr du parametre optionnel */
-	TRUE			/* parametre display on/off = bit ITEM_NOT_SHOW */
+    wxEmptyString,
+    9,              /* Title */
+    ADR( 9 ),       /* adr du parametre optionnel */
+    TRUE            /* parametre display on/off = bit ITEM_NOT_SHOW */
 };
 
-static ColorButton Layer_12_Butt=
+static ColorButton Layer_11_Butt =
 {
-	wxEmptyString,
-	11,	/* Title */
-	ADR(11),	/* adr du parametre optionnel */
-	TRUE		/* parametre display on/off = bit ITEM_NOT_SHOW */
+    wxEmptyString,
+    10,             /* Title */
+    ADR( 10 ),      /* adr du parametre optionnel */
+    TRUE            /* parametre display on/off = bit ITEM_NOT_SHOW */
 };
 
-static ColorButton Layer_13_Butt=
+static ColorButton Layer_12_Butt =
 {
-	wxEmptyString,
-	12,			/* Title */
-	ADR(12),			/* adr du parametre optionnel */
-	TRUE		/* parametre display on/off = bit ITEM_NOT_SHOW */
+    wxEmptyString,
+    11,             /* Title */
+    ADR( 11 ),      /* adr du parametre optionnel */
+    TRUE            /* parametre display on/off = bit ITEM_NOT_SHOW */
 };
 
-static ColorButton Layer_14_Butt=
+static ColorButton Layer_13_Butt =
 {
-	wxEmptyString,
-	13,			/* Title */
-	ADR(13),			/* adr du parametre optionnel */
-	TRUE		/* parametre display on/off = bit ITEM_NOT_SHOW */
+    wxEmptyString,
+    12,             /* Title */
+    ADR( 12 ),      /* adr du parametre optionnel */
+    TRUE            /* parametre display on/off = bit ITEM_NOT_SHOW */
 };
 
-static ColorButton Layer_15_Butt=
+static ColorButton Layer_14_Butt =
 {
-	wxEmptyString,
-	14,				/* Title */
-	ADR(14),		/* adr du parametre optionnel */
-	TRUE		/* parametre display on/off = bit ITEM_NOT_SHOW */
+    wxEmptyString,
+    13,             /* Title */
+    ADR( 13 ),      /* adr du parametre optionnel */
+    TRUE            /* parametre display on/off = bit ITEM_NOT_SHOW */
 };
 
-static ColorButton Layer_16_Butt=
+static ColorButton Layer_15_Butt =
 {
-	wxEmptyString,
-	CMP_N,	 	/* Title */
-	ADR(CMP_N),			/* adr du parametre optionnel */
-	TRUE		/* parametre display on/off = bit ITEM_NOT_SHOW */
+    wxEmptyString,
+    14,             /* Title */
+    ADR( 14 ),      /* adr du parametre optionnel */
+    TRUE            /* parametre display on/off = bit ITEM_NOT_SHOW */
 };
 
-static ColorButton Layer_17_Butt=
+static ColorButton Layer_16_Butt =
 {
-	wxEmptyString,
-	ADHESIVE_N_CU,	  		/* Title */
-	ADR(ADHESIVE_N_CU),		/* adr du parametre optionnel */
-	TRUE		/* parametre display on/off = bit ITEM_NOT_SHOW */
+    wxEmptyString,
+    CMP_N,          /* Title */
+    ADR( CMP_N ),   /* adr du parametre optionnel */
+    TRUE            /* parametre display on/off = bit ITEM_NOT_SHOW */
 };
 
-static ColorButton Layer_18_Butt=
+static ColorButton Layer_17_Butt =
 {
-	wxEmptyString,
-	ADHESIVE_N_CMP,			/* Title */
-	ADR(ADHESIVE_N_CMP),	/* adr du parametre optionnel */
-	TRUE		/* parametre display on/off = bit ITEM_NOT_SHOW */
+    wxEmptyString,
+    ADHESIVE_N_CU,          /* Title */
+    ADR( ADHESIVE_N_CU ),   /* adr du parametre optionnel */
+    TRUE                    /* parametre display on/off = bit ITEM_NOT_SHOW */
 };
 
-static ColorButton Layer_19_Butt=
+static ColorButton Layer_18_Butt =
 {
-	wxEmptyString,
-	SOLDERPASTE_N_CU,				/* Title */
-	ADR(SOLDERPASTE_N_CU),		/* adr du parametre optionnel */
-	TRUE		/* parametre display on/off = bit ITEM_NOT_SHOW */
+    wxEmptyString,
+    ADHESIVE_N_CMP,         /* Title */
+    ADR( ADHESIVE_N_CMP ),  /* adr du parametre optionnel */
+    TRUE                    /* parametre display on/off = bit ITEM_NOT_SHOW */
 };
 
-static ColorButton Layer_20_Butt=
+static ColorButton Layer_19_Butt =
 {
-	wxEmptyString,
-	SOLDERPASTE_N_CMP,			/* Title */
-	ADR(SOLDERPASTE_N_CMP),		/* adr du parametre optionnel */
-	TRUE		/* parametre display on/off = bit ITEM_NOT_SHOW */
+    wxEmptyString,
+    SOLDERPASTE_N_CU,           /* Title */
+    ADR( SOLDERPASTE_N_CU ),    /* adr du parametre optionnel */
+    TRUE                        /* parametre display on/off = bit ITEM_NOT_SHOW */
 };
 
-static ColorButton Layer_21_Butt=
+static ColorButton Layer_20_Butt =
 {
-	wxEmptyString,
-	SILKSCREEN_N_CU,	 		/* Title */
-	ADR(SILKSCREEN_N_CU),		/* adr du parametre optionnel */
-	TRUE		/* parametre display on/off = bit ITEM_NOT_SHOW */
+    wxEmptyString,
+    SOLDERPASTE_N_CMP,          /* Title */
+    ADR( SOLDERPASTE_N_CMP ),   /* adr du parametre optionnel */
+    TRUE                        /* parametre display on/off = bit ITEM_NOT_SHOW */
 };
 
-static ColorButton Layer_22_Butt=
+static ColorButton Layer_21_Butt =
 {
-	wxEmptyString,
-	SILKSCREEN_N_CMP,	 		/* Title */
-	ADR(SILKSCREEN_N_CMP),		/* adr du parametre optionnel */
-	TRUE		/* parametre display on/off = bit ITEM_NOT_SHOW */
+    wxEmptyString,
+    SILKSCREEN_N_CU,        /* Title */
+    ADR( SILKSCREEN_N_CU ), /* adr du parametre optionnel */
+    TRUE                    /* parametre display on/off = bit ITEM_NOT_SHOW */
 };
 
-static ColorButton Layer_23_Butt=
+static ColorButton Layer_22_Butt =
 {
-	wxEmptyString,
-	SOLDERMASK_N_CU,				/* Title */
-	ADR(SOLDERMASK_N_CU),	/* adr du parametre optionnel */
-	TRUE					/* adr du parametre display on/off */
+    wxEmptyString,
+    SILKSCREEN_N_CMP,           /* Title */
+    ADR( SILKSCREEN_N_CMP ),    /* adr du parametre optionnel */
+    TRUE                        /* parametre display on/off = bit ITEM_NOT_SHOW */
 };
 
-static ColorButton Layer_24_Butt=
+static ColorButton Layer_23_Butt =
 {
-	wxEmptyString,
-	SOLDERMASK_N_CMP,				/* Title */
-	ADR(SOLDERMASK_N_CMP),	/* adr du parametre optionnel */
-	TRUE		/* parametre display on/off = bit ITEM_NOT_SHOW */
+    wxEmptyString,
+    SOLDERMASK_N_CU,        /* Title */
+    ADR( SOLDERMASK_N_CU ), /* adr du parametre optionnel */
+    TRUE                    /* adr du parametre display on/off */
 };
 
-static ColorButton Layer_25_Butt=
+static ColorButton Layer_24_Butt =
 {
-	wxEmptyString,
-	DRAW_N,				/* Title */
-	ADR(DRAW_N),		/* adr du parametre optionnel */
-	TRUE		/* parametre display on/off = bit ITEM_NOT_SHOW */
+    wxEmptyString,
+    SOLDERMASK_N_CMP,           /* Title */
+    ADR( SOLDERMASK_N_CMP ),    /* adr du parametre optionnel */
+    TRUE                        /* parametre display on/off = bit ITEM_NOT_SHOW */
 };
 
-static ColorButton Layer_26_Butt=
+static ColorButton Layer_25_Butt =
 {
-	wxEmptyString,
-	COMMENT_N,			/* Title */
-	ADR(COMMENT_N),		/* adr du parametre optionnel */
-	TRUE		/* parametre display on/off = bit ITEM_NOT_SHOW */
+    wxEmptyString,
+    DRAW_N,         /* Title */
+    ADR( DRAW_N ),  /* adr du parametre optionnel */
+    TRUE            /* parametre display on/off = bit ITEM_NOT_SHOW */
 };
 
-static ColorButton Layer_27_Butt=
+static ColorButton Layer_26_Butt =
 {
-	wxEmptyString,
-	ECO1_N,			/* Title */
-	ADR(ECO1_N),		/* adr du parametre optionnel */
-	TRUE		/* parametre display on/off = bit ITEM_NOT_SHOW */
+    wxEmptyString,
+    COMMENT_N,          /* Title */
+    ADR( COMMENT_N ),   /* adr du parametre optionnel */
+    TRUE                /* parametre display on/off = bit ITEM_NOT_SHOW */
 };
 
-static ColorButton Layer_28_Butt=
+static ColorButton Layer_27_Butt =
 {
-	wxEmptyString,
-	ECO2_N,			/* Title */
-	ADR(ECO2_N),		/* adr du parametre optionnel */
-	TRUE		/* parametre display on/off = bit ITEM_NOT_SHOW */
+    wxEmptyString,
+    ECO1_N,         /* Title */
+    ADR( ECO1_N ),  /* adr du parametre optionnel */
+    TRUE            /* parametre display on/off = bit ITEM_NOT_SHOW */
 };
 
-static ColorButton Layer_29_Butt=
+static ColorButton Layer_28_Butt =
 {
-	wxEmptyString,
-	EDGE_N,			/* Title */
-	ADR(EDGE_N),		/* adr du parametre optionnel */
-	TRUE		/* parametre display on/off = bit ITEM_NOT_SHOW */
+    wxEmptyString,
+    ECO2_N,         /* Title */
+    ADR( ECO2_N ),  /* adr du parametre optionnel */
+    TRUE            /* parametre display on/off = bit ITEM_NOT_SHOW */
 };
 
-
-static ColorButton Msg_Others_Items=
+static ColorButton Layer_29_Butt =
 {
-	wxT("Others"), -1					/* Title */
+    wxEmptyString,
+    EDGE_N,         /* Title */
+    ADR( EDGE_N ),  /* adr du parametre optionnel */
+    TRUE            /* parametre display on/off = bit ITEM_NOT_SHOW */
 };
 
-static ColorButton Via_Normale_Butt=
+
+static ColorButton Msg_Others_Items =
 {
-	wxT("*"),
-	VIA_NORMALE,			/* Title */
-	&g_DesignSettings.m_ViaColor[VIA_NORMALE],	/* adr du parametre optionnel */
-	TRUE		/* parametre display on/off = bit ITEM_NOT_SHOW */
+    wxT( "Others" ), -1                    /* Title */
 };
 
-static ColorButton Via_Aveugle_Butt=
+static ColorButton Via_Normale_Butt =
 {
-	wxT("*"),
-	VIA_ENTERREE,		/* Title */
-	&g_DesignSettings.m_ViaColor[VIA_ENTERREE],		/* adr du parametre optionnel */
-	TRUE		/* parametre display on/off = bit ITEM_NOT_SHOW */
+    wxT( "*" ),
+    VIA_NORMALE,                                /* Title */
+    &g_DesignSettings.m_ViaColor[VIA_NORMALE],  /* adr du parametre optionnel */
+    TRUE                                        /* parametre display on/off = bit ITEM_NOT_SHOW */
 };
 
-static ColorButton Via_Borgne_Butt=
+static ColorButton Via_Aveugle_Butt =
 {
-	wxT("*"),
-	VIA_BORGNE,		/* Title */
-	&g_DesignSettings.m_ViaColor[VIA_BORGNE],		/* adr du parametre optionnel */
-	TRUE		/* parametre display on/off = bit ITEM_NOT_SHOW */
+    wxT( "*" ),
+    VIA_ENTERREE,                                   /* Title */
+    &g_DesignSettings.m_ViaColor[VIA_ENTERREE],     /* adr du parametre optionnel */
+    TRUE                                            /* parametre display on/off = bit ITEM_NOT_SHOW */
 };
 
-static ColorButton Ratsnest_Butt=
+static ColorButton Via_Borgne_Butt =
 {
-	_("Ratsnest"),			/* Title */
-	-1,
-	&g_DesignSettings.m_RatsnestColor,	/* adr du parametre optionnel */
-	FALSE, &g_Show_Ratsnest		/* adr du parametre avec flag ITEM_NOT_SHOW */
+    wxT( "*" ),
+    VIA_BORGNE,                                     /* Title */
+    &g_DesignSettings.m_ViaColor[VIA_BORGNE],       /* adr du parametre optionnel */
+    TRUE                                            /* parametre display on/off = bit ITEM_NOT_SHOW */
 };
 
-static ColorButton Pad_Cu_Butt=
+static ColorButton Ratsnest_Butt =
 {
-	_("Pad Cu"),				/* Title */
-	-1,
-	&g_PadCUColor,	/* adr du parametre optionnel */
-	TRUE		/* parametre display on/off = bit ITEM_NOT_SHOW */
+    _( "Ratsnest" ),                    /* Title */
+    -1,
+    &g_DesignSettings.m_RatsnestColor,  /* adr du parametre optionnel */
+    FALSE, &g_Show_Ratsnest             /* adr du parametre avec flag ITEM_NOT_SHOW */
 };
 
-static ColorButton Pad_Cmp_Butt=
+static ColorButton Pad_Cu_Butt =
 {
-	_("Pad Cmp"),				/* Title */
-	-1,
-	&g_PadCMPColor,		/* adr du parametre optionnel */
-	TRUE		/* parametre display on/off = bit ITEM_NOT_SHOW */
+    _( "Pad Cu" ),  /* Title */
+    -1,
+    &g_PadCUColor,  /* adr du parametre optionnel */
+    TRUE            /* parametre display on/off = bit ITEM_NOT_SHOW */
 };
 
-static ColorButton Text_Mod_Cu_Butt=
+static ColorButton Pad_Cmp_Butt =
 {
-	_("Text Module Cu"),					/* Title */
-	-1,
-	&g_ModuleTextCUColor,		/* adr du parametre optionnel */
-	TRUE		/* parametre display on/off = bit ITEM_NOT_SHOW */
+    _( "Pad Cmp" ), /* Title */
+    -1,
+    &g_PadCMPColor, /* adr du parametre optionnel */
+    TRUE            /* parametre display on/off = bit ITEM_NOT_SHOW */
 };
 
-static ColorButton Text_Mod_Cmp_Butt=
+static ColorButton Text_Mod_Cu_Butt =
 {
-	_("Text Module Cmp"),				/* Title */
-	-1,
-	&g_ModuleTextCMPColor,		/* adr du parametre optionnel */
-	TRUE		/* parametre display on/off = bit ITEM_NOT_SHOW */
+    _( "Text Module Cu" ),  /* Title */
+    -1,
+    &g_ModuleTextCUColor,   /* adr du parametre optionnel */
+    TRUE                    /* parametre display on/off = bit ITEM_NOT_SHOW */
 };
 
-static ColorButton Text_Mod_NoVisible_Butt=
+static ColorButton Text_Mod_Cmp_Butt =
 {
-	_("Text Module invisible"),	/* Title */
-	-1,
-	&g_ModuleTextNOVColor,	/* adr du parametre optionnel */
-	TRUE		/* parametre display on/off = bit ITEM_NOT_SHOW */
+    _( "Text Module Cmp" ), /* Title */
+    -1,
+    &g_ModuleTextCMPColor,  /* adr du parametre optionnel */
+    TRUE                    /* parametre display on/off = bit ITEM_NOT_SHOW */
 };
 
-static ColorButton Anchors_Butt=
+static ColorButton Text_Mod_NoVisible_Butt =
 {
-	_("Anchors"),				/* Title */
-	-1,
-	&g_AnchorColor,		/* adr du parametre optionnel */
-	TRUE		/* parametre display on/off = bit ITEM_NOT_SHOW */
+    _( "Text Module invisible" ),   /* Title */
+    -1,
+    &g_ModuleTextNOVColor,          /* adr du parametre optionnel */
+    TRUE                            /* parametre display on/off = bit ITEM_NOT_SHOW */
 };
 
-static ColorButton Grid_Butt=
+static ColorButton Anchors_Butt =
 {
-	_("Grid"),				/* Title */
-	-1,
-	&g_PcbGridColor,		/* adr du parametre optionnel */
-	FALSE,
-	&g_ShowGrid		/* parametre display on/off = bit ITEM_NOT_SHOW */
+    _( "Anchors" ), /* Title */
+    -1,
+    &g_AnchorColor, /* adr du parametre optionnel */
+    TRUE            /* parametre display on/off = bit ITEM_NOT_SHOW */
 };
 
-static ColorButton Show_Zones_Butt=
+static ColorButton Grid_Butt =
 {
-	_("Show Zones"),		/* Title */
-	-1,
-	NULL,				/* adr du parametre optionnel */
-	FALSE,
-	&DisplayOpt.DisplayZones	/* adr du parametre avec flag ITEM_NOT_SHOW */
+    _( "Grid" ),        /* Title */
+    -1,
+    &g_PcbGridColor,    /* adr du parametre optionnel */
+    FALSE,
+    &g_ShowGrid         /* parametre display on/off = bit ITEM_NOT_SHOW */
 };
 
-static ColorButton Show_Pads_Noconnect_Butt=
+static ColorButton Show_Zones_Butt =
 {
-	_("Show Noconnect"),		/* Title */
-	-1,
-	NULL,				/* adr du parametre optionnel */
-	FALSE,
-	&DisplayOpt.DisplayPadNoConn	/* adr du parametre avec flag ITEM_NOT_SHOW */
+    _( "Show Zones" ),          /* Title */
+    -1,
+    NULL,                       /* adr du parametre optionnel */
+    FALSE,
+    &DisplayOpt.DisplayZones    /* adr du parametre avec flag ITEM_NOT_SHOW */
 };
 
-static ColorButton Show_Modules_Cmp_Butt=
+static ColorButton Show_Pads_Noconnect_Butt =
 {
-	_("Show Modules Cmp"),		/* Title */
-	-1,
-	NULL,				/* adr du parametre optionnel */
-	FALSE,
-	&DisplayOpt.Show_Modules_Cmp	/* adr du parametre avec flag ITEM_NOT_SHOW */
+    _( "Show Noconnect" ),          /* Title */
+    -1,
+    NULL,                           /* adr du parametre optionnel */
+    FALSE,
+    &DisplayOpt.DisplayPadNoConn    /* adr du parametre avec flag ITEM_NOT_SHOW */
 };
 
-static ColorButton Show_Modules_Cu_Butt=
+static ColorButton Show_Modules_Cmp_Butt =
 {
-	_("Show Modules Cu"),		/* Title */
-	-1,
-	NULL,				/* adr du parametre optionnel */
-	FALSE,
-	&DisplayOpt.Show_Modules_Cu	/* adr du parametre avec flag ITEM_NOT_SHOW */
+    _( "Show Modules Cmp" ),        /* Title */
+    -1,
+    NULL,                           /* adr du parametre optionnel */
+    FALSE,
+    &DisplayOpt.Show_Modules_Cmp    /* adr du parametre avec flag ITEM_NOT_SHOW */
+};
+
+static ColorButton Show_Modules_Cu_Butt =
+{
+    _( "Show Modules Cu" ),     /* Title */
+    -1,
+    NULL,                       /* adr du parametre optionnel */
+    FALSE,
+    &DisplayOpt.Show_Modules_Cu /* adr du parametre avec flag ITEM_NOT_SHOW */
 };
 
 
-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,
+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,
 
-	&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,
 
-	&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,
+    &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,
+    &Show_Zones_Butt,
+    &Show_Pads_Noconnect_Butt,
+    &Show_Modules_Cmp_Butt,
+    &Show_Modules_Cu_Butt,
 
-	NULL
+    NULL
 };
 
 /*************************************************************/
 /* classe derivee pour la frame de Configuration des couleurs*/
 /*************************************************************/
 
-class WinEDA_SetColorsFrame: public wxDialog
+class WinEDA_SetColorsFrame : public wxDialog
 {
 private:
-	WinEDA_DrawFrame *m_Parent;
+    WinEDA_DrawFrame* m_Parent;
 
 public:
 
-	// Constructor and destructor
-	WinEDA_SetColorsFrame(WinEDA_DrawFrame *parent, const wxPoint& framepos);
-	~WinEDA_SetColorsFrame(void) {};
+    // Constructor and destructor
+    WinEDA_SetColorsFrame( WinEDA_DrawFrame * parent, const wxPoint &framepos );
+    ~WinEDA_SetColorsFrame( void ) { };
 
 private:
-	void OnQuit(wxCommandEvent& event);
-	void SetColor(wxCommandEvent& event);
-	void SetDisplayOnOff(wxCommandEvent& event);
-	void ResetDisplayLayersCu(wxCommandEvent& event);
-	DECLARE_EVENT_TABLE()
+    void    OnQuit( wxCommandEvent& event );
+    void    SetColor( wxCommandEvent& event );
+    void    SetDisplayOnOff( wxCommandEvent& event );
+    void    ResetDisplayLayersCu( wxCommandEvent& event );
 
+    DECLARE_EVENT_TABLE()
 };
+
+
 /* Table des evenements pour WinEDA_SetColorsFrame */
-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(ID_COLOR_SETUP, WinEDA_SetColorsFrame::SetColor)
-	EVT_BUTTON(ID_COLOR_SETUP+1, WinEDA_SetColorsFrame::SetColor)
-	EVT_BUTTON(ID_COLOR_SETUP+2, WinEDA_SetColorsFrame::SetColor)
-	EVT_BUTTON(ID_COLOR_SETUP+3, WinEDA_SetColorsFrame::SetColor)
-	EVT_BUTTON(ID_COLOR_SETUP+4, WinEDA_SetColorsFrame::SetColor)
-	EVT_BUTTON(ID_COLOR_SETUP+5, WinEDA_SetColorsFrame::SetColor)
-	EVT_BUTTON(ID_COLOR_SETUP+6, WinEDA_SetColorsFrame::SetColor)
-	EVT_BUTTON(ID_COLOR_SETUP+7, WinEDA_SetColorsFrame::SetColor)
-	EVT_BUTTON(ID_COLOR_SETUP+8, WinEDA_SetColorsFrame::SetColor)
-	EVT_BUTTON(ID_COLOR_SETUP+9, WinEDA_SetColorsFrame::SetColor)
-	EVT_BUTTON(ID_COLOR_SETUP+10, WinEDA_SetColorsFrame::SetColor)
-	EVT_BUTTON(ID_COLOR_SETUP+11, WinEDA_SetColorsFrame::SetColor)
-	EVT_BUTTON(ID_COLOR_SETUP+12, WinEDA_SetColorsFrame::SetColor)
-	EVT_BUTTON(ID_COLOR_SETUP+13, WinEDA_SetColorsFrame::SetColor)
-	EVT_BUTTON(ID_COLOR_SETUP+14, WinEDA_SetColorsFrame::SetColor)
-	EVT_BUTTON(ID_COLOR_SETUP+15, WinEDA_SetColorsFrame::SetColor)
-	EVT_BUTTON(ID_COLOR_SETUP+16, WinEDA_SetColorsFrame::SetColor)
-	EVT_BUTTON(ID_COLOR_SETUP+17, WinEDA_SetColorsFrame::SetColor)
-	EVT_BUTTON(ID_COLOR_SETUP+18, WinEDA_SetColorsFrame::SetColor)
-	EVT_BUTTON(ID_COLOR_SETUP+19, WinEDA_SetColorsFrame::SetColor)
-	EVT_BUTTON(ID_COLOR_SETUP+20, WinEDA_SetColorsFrame::SetColor)
-	EVT_BUTTON(ID_COLOR_SETUP+21, WinEDA_SetColorsFrame::SetColor)
-	EVT_BUTTON(ID_COLOR_SETUP+22, WinEDA_SetColorsFrame::SetColor)
-	EVT_BUTTON(ID_COLOR_SETUP+23, WinEDA_SetColorsFrame::SetColor)
-	EVT_BUTTON(ID_COLOR_SETUP+24, WinEDA_SetColorsFrame::SetColor)
-	EVT_BUTTON(ID_COLOR_SETUP+25, WinEDA_SetColorsFrame::SetColor)
-	EVT_BUTTON(ID_COLOR_SETUP+26, WinEDA_SetColorsFrame::SetColor)
-	EVT_BUTTON(ID_COLOR_SETUP+27, WinEDA_SetColorsFrame::SetColor)
-	EVT_BUTTON(ID_COLOR_SETUP+28, WinEDA_SetColorsFrame::SetColor)
-	EVT_BUTTON(ID_COLOR_SETUP+29, WinEDA_SetColorsFrame::SetColor)
-	EVT_BUTTON(ID_COLOR_SETUP+30, WinEDA_SetColorsFrame::SetColor)
-	EVT_BUTTON(ID_COLOR_SETUP+31, WinEDA_SetColorsFrame::SetColor)
-	EVT_BUTTON(ID_COLOR_SETUP+32, WinEDA_SetColorsFrame::SetColor)
-	EVT_BUTTON(ID_COLOR_SETUP+33, WinEDA_SetColorsFrame::SetColor)
-	EVT_BUTTON(ID_COLOR_SETUP+34, WinEDA_SetColorsFrame::SetColor)
-	EVT_BUTTON(ID_COLOR_SETUP+35, WinEDA_SetColorsFrame::SetColor)
-	EVT_BUTTON(ID_COLOR_SETUP+36, WinEDA_SetColorsFrame::SetColor)
-	EVT_BUTTON(ID_COLOR_SETUP+37, WinEDA_SetColorsFrame::SetColor)
-	EVT_BUTTON(ID_COLOR_SETUP+38, WinEDA_SetColorsFrame::SetColor)
-	EVT_BUTTON(ID_COLOR_SETUP+39, WinEDA_SetColorsFrame::SetColor)
-	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+44, WinEDA_SetColorsFrame::SetColor)
+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( ID_COLOR_SETUP, WinEDA_SetColorsFrame::SetColor )
+    EVT_BUTTON( ID_COLOR_SETUP + 1, WinEDA_SetColorsFrame::SetColor )
+    EVT_BUTTON( ID_COLOR_SETUP + 2, WinEDA_SetColorsFrame::SetColor )
+    EVT_BUTTON( ID_COLOR_SETUP + 3, WinEDA_SetColorsFrame::SetColor )
+    EVT_BUTTON( ID_COLOR_SETUP + 4, WinEDA_SetColorsFrame::SetColor )
+    EVT_BUTTON( ID_COLOR_SETUP + 5, WinEDA_SetColorsFrame::SetColor )
+    EVT_BUTTON( ID_COLOR_SETUP + 6, WinEDA_SetColorsFrame::SetColor )
+    EVT_BUTTON( ID_COLOR_SETUP + 7, WinEDA_SetColorsFrame::SetColor )
+    EVT_BUTTON( ID_COLOR_SETUP + 8, WinEDA_SetColorsFrame::SetColor )
+    EVT_BUTTON( ID_COLOR_SETUP + 9, WinEDA_SetColorsFrame::SetColor )
+    EVT_BUTTON( ID_COLOR_SETUP + 10, WinEDA_SetColorsFrame::SetColor )
+    EVT_BUTTON( ID_COLOR_SETUP + 11, WinEDA_SetColorsFrame::SetColor )
+    EVT_BUTTON( ID_COLOR_SETUP + 12, WinEDA_SetColorsFrame::SetColor )
+    EVT_BUTTON( ID_COLOR_SETUP + 13, WinEDA_SetColorsFrame::SetColor )
+    EVT_BUTTON( ID_COLOR_SETUP + 14, WinEDA_SetColorsFrame::SetColor )
+    EVT_BUTTON( ID_COLOR_SETUP + 15, WinEDA_SetColorsFrame::SetColor )
+    EVT_BUTTON( ID_COLOR_SETUP + 16, WinEDA_SetColorsFrame::SetColor )
+    EVT_BUTTON( ID_COLOR_SETUP + 17, WinEDA_SetColorsFrame::SetColor )
+    EVT_BUTTON( ID_COLOR_SETUP + 18, WinEDA_SetColorsFrame::SetColor )
+    EVT_BUTTON( ID_COLOR_SETUP + 19, WinEDA_SetColorsFrame::SetColor )
+    EVT_BUTTON( ID_COLOR_SETUP + 20, WinEDA_SetColorsFrame::SetColor )
+    EVT_BUTTON( ID_COLOR_SETUP + 21, WinEDA_SetColorsFrame::SetColor )
+    EVT_BUTTON( ID_COLOR_SETUP + 22, WinEDA_SetColorsFrame::SetColor )
+    EVT_BUTTON( ID_COLOR_SETUP + 23, WinEDA_SetColorsFrame::SetColor )
+    EVT_BUTTON( ID_COLOR_SETUP + 24, WinEDA_SetColorsFrame::SetColor )
+    EVT_BUTTON( ID_COLOR_SETUP + 25, WinEDA_SetColorsFrame::SetColor )
+    EVT_BUTTON( ID_COLOR_SETUP + 26, WinEDA_SetColorsFrame::SetColor )
+    EVT_BUTTON( ID_COLOR_SETUP + 27, WinEDA_SetColorsFrame::SetColor )
+    EVT_BUTTON( ID_COLOR_SETUP + 28, WinEDA_SetColorsFrame::SetColor )
+    EVT_BUTTON( ID_COLOR_SETUP + 29, WinEDA_SetColorsFrame::SetColor )
+    EVT_BUTTON( ID_COLOR_SETUP + 30, WinEDA_SetColorsFrame::SetColor )
+    EVT_BUTTON( ID_COLOR_SETUP + 31, WinEDA_SetColorsFrame::SetColor )
+    EVT_BUTTON( ID_COLOR_SETUP + 32, WinEDA_SetColorsFrame::SetColor )
+    EVT_BUTTON( ID_COLOR_SETUP + 33, WinEDA_SetColorsFrame::SetColor )
+    EVT_BUTTON( ID_COLOR_SETUP + 34, WinEDA_SetColorsFrame::SetColor )
+    EVT_BUTTON( ID_COLOR_SETUP + 35, WinEDA_SetColorsFrame::SetColor )
+    EVT_BUTTON( ID_COLOR_SETUP + 36, WinEDA_SetColorsFrame::SetColor )
+    EVT_BUTTON( ID_COLOR_SETUP + 37, WinEDA_SetColorsFrame::SetColor )
+    EVT_BUTTON( ID_COLOR_SETUP + 38, WinEDA_SetColorsFrame::SetColor )
+    EVT_BUTTON( ID_COLOR_SETUP + 39, WinEDA_SetColorsFrame::SetColor )
+    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 + 44, WinEDA_SetColorsFrame::SetColor )
 END_EVENT_TABLE()
 
 /*****************************************************/
-void DisplayColorSetupFrame(WinEDA_DrawFrame * parent,
-							const wxPoint & framepos)
+void DisplayColorSetupFrame( WinEDA_DrawFrame* parent,
+                             const wxPoint&    framepos )
 /*****************************************************/
 {
-	WinEDA_SetColorsFrame * frame =
-			new WinEDA_SetColorsFrame(parent, framepos);
-	frame->ShowModal(); frame->Destroy();
+    WinEDA_SetColorsFrame* frame =
+        new WinEDA_SetColorsFrame( parent,framepos);
+
+    frame->ShowModal(); frame->Destroy();
 }
 
 
 /**********************************************************************/
-WinEDA_SetColorsFrame::WinEDA_SetColorsFrame(WinEDA_DrawFrame *parent,
-							const wxPoint& framepos):
-			wxDialog(parent, -1, _("Colors:"), framepos,
-			wxSize(-1, -1),
-			DIALOG_STYLE )
+WinEDA_SetColorsFrame::WinEDA_SetColorsFrame( WinEDA_DrawFrame* parent,
+                                              const wxPoint&    framepos ) :
+    wxDialog( parent, -1, _( "Colors:" ), framepos,
+              wxSize( -1, -1 ),
+              DIALOG_STYLE )
 /**********************************************************************/
 {
 #define START_Y 25
-wxBitmapButton * ButtonB;
-int ii, yy, xx, butt_ID, buttcolor;
-wxPoint pos;
-wxSize winsize;
-int w = BUTT_SIZE_X, h = BUTT_SIZE_Y;
-wxString msg;
-	
-	m_Parent = parent;
-	SetFont(*g_DialogFont);
+    wxBitmapButton* ButtonB;
+    int             ii, yy, xx, butt_ID, buttcolor;
+    wxPoint         pos;
+    wxSize          winsize;
+    int             w = BUTT_SIZE_X;
+    int             h = BUTT_SIZE_Y;
+    wxString        msg;
 
-	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.y = START_Y;
-			}
-			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);
-			}
-			else
-				msg = wxGetTranslation(laytool_list[ii]->m_Title.GetData());
+    m_Parent = parent;
+    SetFont( *g_DialogFont );
 
-			new wxStaticText(this, -1, msg ,
-				wxPoint(pos.x + 10, pos.y - 18 ), wxSize(-1,-1), 0 );
-			continue;
-		}
+    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.y = START_Y;
+            }
+            
+            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 );
+            }
+            else
+                msg = wxGetTranslation( laytool_list[ii]->m_Title.GetData() );
 
-		if ( laytool_list[ii]->m_Id == 0 )
-			laytool_list[ii]->m_Id = ID_COLOR_SETUP + ii;
-		butt_ID = laytool_list[ii]->m_Id;
+            new wxStaticText( this, -1, msg,
+                              wxPoint (pos.x + 10, pos.y - 18 ), wxSize( -1, -1 ), 0 );
 
-		laytool_list[ii]->m_CheckBox = new wxCheckBox(this,
-						ID_COLOR_CHECKBOX_ONOFF, wxEmptyString,
-						pos);
+            continue;
+        }
 
-		if ( laytool_list[ii]->m_NoDisplayIsColor )
-		{
-			if ( *laytool_list[ii]->m_Color & ITEM_NOT_SHOW )
-				laytool_list[ii]->m_CheckBox->SetValue(FALSE);
-			else laytool_list[ii]->m_CheckBox->SetValue(TRUE);
-		}
+        if( laytool_list[ii]->m_Id == 0 )
+            laytool_list[ii]->m_Id = ID_COLOR_SETUP + ii;
+        
+        butt_ID = laytool_list[ii]->m_Id;
 
-		else if ( laytool_list[ii]->m_NoDisplay )
-			laytool_list[ii]->m_CheckBox->SetValue(*laytool_list[ii]->m_NoDisplay);
+        laytool_list[ii]->m_CheckBox = new wxCheckBox( this,
+                                                       ID_COLOR_CHECKBOX_ONOFF, wxEmptyString,
+                                                       pos );
 
-		xx = 3 + laytool_list[ii]->m_CheckBox->GetSize().x;
+        if( laytool_list[ii]->m_NoDisplayIsColor )
+        {
+            if( *laytool_list[ii]->m_Color & ITEM_NOT_SHOW )
+                laytool_list[ii]->m_CheckBox->SetValue( FALSE );
+            else
+                laytool_list[ii]->m_CheckBox->SetValue( TRUE );
+        }
+        else if( laytool_list[ii]->m_NoDisplay )
+            laytool_list[ii]->m_CheckBox->SetValue( *laytool_list[ii]->m_NoDisplay );
 
-		if( laytool_list[ii]->m_Color )
-		{
-			wxMemoryDC iconDC;
-			wxBitmap ButtBitmap(w,h);
-			iconDC.SelectObject( ButtBitmap );
-			buttcolor = *laytool_list[ii]->m_Color & MASKCOLOR;
-			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);
+        xx = 3 + laytool_list[ii]->m_CheckBox->GetSize().x;
 
-			iconDC.SetBrush(Brush);
-			iconDC.DrawRectangle(0,0, w, h);
+        if( laytool_list[ii]->m_Color )
+        {
+            wxMemoryDC iconDC;
+            
+            wxBitmap ButtBitmap( w, h );
 
-			ButtonB = new wxBitmapButton(this, butt_ID,
-						ButtBitmap,
-						wxPoint(pos.x + xx, pos.y),
-						wxSize(w,h) );
-			laytool_list[ii]->m_Button = ButtonB;
-			xx += 3 + w;
-		}
+            iconDC.SelectObject( ButtBitmap );
+            
+            buttcolor = *laytool_list[ii]->m_Color & MASKCOLOR;
+            
+            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 );
 
-		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);
-		}
-		else
-			msg = wxGetTranslation(laytool_list[ii]->m_Title.GetData());
+            iconDC.SetBrush( Brush );
+            iconDC.DrawRectangle( 0, 0, w, h );
 
-		new wxStaticText(this,-1, msg,
-					wxPoint(pos.x + xx , pos.y + 1 ),
-					wxSize(-1,-1), 0 );
+            ButtonB = new wxBitmapButton( this, butt_ID,
+                                         ButtBitmap,
+                                         wxPoint(pos.x + xx, pos.y),
+                                         wxSize(w, h) );
 
-		yy = h + 5;
-		pos.y += yy;
-		}
+            laytool_list[ii]->m_Button = ButtonB;
+            xx += 3 + w;
+        }
 
-	pos.x = 150; pos.y = 300;
-	wxButton * Button = new wxButton(this,ID_COLOR_RESET_SHOW_LAYER_ON,
-						_("Show All"), pos);
-	Button->SetForegroundColour(wxColor(0,100,0));
+        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 );
+        }
+        else
+            msg = wxGetTranslation( laytool_list[ii]->m_Title.GetData() );
 
-	pos.y += Button->GetSize().y + 2;
-	Button = new wxButton(this,ID_COLOR_RESET_SHOW_LAYER_OFF,
-						_("Show None"), pos);
-	Button->SetForegroundColour(wxColor(100,0,0));
+        new wxStaticText( this, -1, msg,
+                          wxPoint (pos.x + xx, pos.y + 1 ),
+                          wxSize( -1, -1 ), 0 );
 
-	pos.x += Button->GetSize().x + 50;
-	Button = new wxButton(this,ID_COLOR_EXIT,
-						_("Exit"), pos);
-	Button->SetForegroundColour(*wxBLUE);
-	winsize.x = 500; winsize.y = pos.y + Button->GetSize().y + 5;
-	SetClientSize(winsize);
+        yy     = h + 5;
+        pos.y += yy;
+    }
+
+    pos.x = 150; 
+    pos.y = 300;
+    
+    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;
+    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 );
+
+    Button->SetForegroundColour( *wxBLUE );
+    
+    winsize.x = 500; 
+    winsize.y = pos.y + Button->GetSize().y + 5;
+    SetClientSize( winsize );
 }
 
 
 /**********************************************************************/
-void  WinEDA_SetColorsFrame::OnQuit(wxCommandEvent& WXUNUSED(event))
+void WinEDA_SetColorsFrame::OnQuit( wxCommandEvent& WXUNUSED (event) )
 /**********************************************************************/
 {
-    Close(true);    // true is to force the frame to close
+    Close( true );    // true is to force the frame to close
 }
 
 
 /**********************************************************/
-void WinEDA_SetColorsFrame::SetColor(wxCommandEvent& event)
+void WinEDA_SetColorsFrame::SetColor( wxCommandEvent& event )
 /**********************************************************/
 {
-int ii;
-int id = event.GetId();
-int color;
-int w = BUTT_SIZE_X, h = BUTT_SIZE_Y;
+    int ii;
+    int id = event.GetId();
+    int color;
+    int w = BUTT_SIZE_X, h = BUTT_SIZE_Y;
 
+    color = DisplayColorFrame( this );
+    if( color < 0 )
+        return;
 
-	color = DisplayColorFrame(this);
-	if ( color < 0) return;
+    for( ii = 0; laytool_list[ii] != NULL; ii++ )
+    {
+        if( laytool_list[ii]->m_Id != id )
+            continue;
+        
+        if( laytool_list[ii]->m_Color == NULL )
+            continue;
 
-	for ( ii = 0; laytool_list[ii] != NULL; ii++ )
-	{
-		if( laytool_list[ii]->m_Id != id) continue;
-		if( laytool_list[ii]->m_Color == NULL) continue;
+        if( *laytool_list[ii]->m_Color == color )
+            break;
 
-		if( *laytool_list[ii]->m_Color == color) break;
+        *laytool_list[ii]->m_Color = color;
+        wxMemoryDC      iconDC;
 
-		*laytool_list[ii]->m_Color = color;
-		wxMemoryDC iconDC;
+        wxBitmapButton* Button = laytool_list[ii]->m_Button;
 
-		wxBitmapButton * Button = laytool_list[ii]->m_Button;
+        wxBitmap        ButtBitmap = Button->GetBitmapLabel();
+        iconDC.SelectObject( ButtBitmap );
+        int             buttcolor = *laytool_list[ii]->m_Color;
+        
+        wxBrush         Brush;
+        
+        iconDC.SetPen( *wxBLACK_PEN );
+        Brush.SetColour(
+            ColorRefs[buttcolor].m_Red,
+            ColorRefs[buttcolor].m_Green,
+            ColorRefs[buttcolor].m_Blue
+            );
+        
+        Brush.SetStyle( wxSOLID );
 
-		wxBitmap ButtBitmap = Button->GetBitmapLabel();
-		iconDC.SelectObject( ButtBitmap );
-		int buttcolor = *laytool_list[ii]->m_Color;
-		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 );
+        Button->SetBitmapLabel( ButtBitmap );
+        Button->Refresh();
+        SetDisplayOnOff( event );
+        m_Parent->m_CurrentScreen->SetRefreshReq();
+    }
 
-		iconDC.SetBrush(Brush);
-		iconDC.DrawRectangle(0,0, w, h);
-		Button->SetBitmapLabel(ButtBitmap);
-		Button->Refresh();
-		SetDisplayOnOff(event);
-		m_Parent->m_CurrentScreen->SetRefreshReq();
-	}
-	Refresh(FALSE);
+    Refresh( FALSE );
 }
 
 
 /******************************************************************/
-void WinEDA_SetColorsFrame::SetDisplayOnOff(wxCommandEvent& event)
+void WinEDA_SetColorsFrame::SetDisplayOnOff( wxCommandEvent& event )
 /******************************************************************/
 {
-	for ( int ii = 0; laytool_list[ii] != NULL; ii++ )
-		{
-		if ( laytool_list[ii]->m_CheckBox == NULL ) continue;
-		if ( ! laytool_list[ii]->m_NoDisplayIsColor &&
-			 (laytool_list[ii]->m_NoDisplay == NULL) ) continue;
+    for( int ii = 0; laytool_list[ii] != NULL; ii++ )
+    {
+        if( laytool_list[ii]->m_CheckBox == NULL )
+            continue;
+        
+        if( !laytool_list[ii]->m_NoDisplayIsColor
+           && (laytool_list[ii]->m_NoDisplay == NULL) )
+            continue;
 
-		if ( laytool_list[ii]->m_NoDisplayIsColor )
-			{
-			if ( laytool_list[ii]->m_CheckBox->GetValue() )
-				*laytool_list[ii]->m_Color &= ~ITEM_NOT_SHOW;
-			else *laytool_list[ii]->m_Color |= ITEM_NOT_SHOW;
-			}
+        if( laytool_list[ii]->m_NoDisplayIsColor )
+        {
+            if( laytool_list[ii]->m_CheckBox->GetValue() )
+                *laytool_list[ii]->m_Color &= ~ITEM_NOT_SHOW;
+            else
+                *laytool_list[ii]->m_Color |= ITEM_NOT_SHOW;
+        }
+        else
+        {
+            *laytool_list[ii]->m_NoDisplay = laytool_list[ii]->m_CheckBox->GetValue();
+        }
 
-		else
-			{
-			*laytool_list[ii]->m_NoDisplay = laytool_list[ii]->m_CheckBox->GetValue();
-			}
-
-		m_Parent->m_CurrentScreen->SetRefreshReq();
-		}
+        m_Parent->m_CurrentScreen->SetRefreshReq();
+    }
 }
 
 
 /**********************************************************************/
-void WinEDA_SetColorsFrame::ResetDisplayLayersCu(wxCommandEvent& event)
+void WinEDA_SetColorsFrame::ResetDisplayLayersCu( wxCommandEvent& event )
 /**********************************************************************/
 {
-bool NewState = (event.GetId() == ID_COLOR_RESET_SHOW_LAYER_ON) ? TRUE : FALSE;
+    bool NewState = (event.GetId() == ID_COLOR_RESET_SHOW_LAYER_ON) ? TRUE : FALSE;
 
-	for ( int ii = 1; ii < 17; ii++ )
-		{
-		if ( laytool_list[ii]->m_CheckBox == NULL ) continue;
-		laytool_list[ii]->m_CheckBox->SetValue(NewState);
-		}
+    for( int ii = 1; ii < 17; ii++ )
+    {
+        if( laytool_list[ii]->m_CheckBox == NULL )
+            continue;
+        
+        laytool_list[ii]->m_CheckBox->SetValue( NewState );
+    }
 
-	SetDisplayOnOff(event);
+    SetDisplayOnOff( event );
 }
-