Commit 98ba50f8 authored by charras's avatar charras

Use layer_widget in Gerbview

Added sample gerber files for test (gerbview has problem with 2 files)
parent 9a6f753c
......@@ -18,6 +18,7 @@ endif(APPLE)
set(GERBVIEW_SRCS
block.cpp
class_gerbview_layer_widget.cpp
controle.cpp
dcode.cpp
deltrack.cpp
......@@ -50,6 +51,7 @@ set(GERBVIEW_SRCS
set(GERBVIEW_EXTRA_SRCS
../share/setpage.cpp
../pcbnew/layer_widget.cpp
../pcbnew/printout_controler.cpp
)
......
/*
* This program source code file is part of KICAD, a free EDA CAD application.
*
* Copyright (C) 2004-2010 Jean-Pierre Charras, jean-pierre.charras@gpisa-lab.inpg.fr
* Copyright (C) 2010 SoftPLC Corporation, Dick Hollenbeck <dick@softplc.com>
* Copyright (C) 2010 Kicad Developers, see change_log.txt for contributors.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, you may find one here:
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
* or you may search the http://www.gnu.org website for the version 2 license,
* or you may write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
*/
/*********************************************************/
/* class_gerbview_layer_widget.cpp - gerbview layers manager. */
/*********************************************************/
#include "fctsys.h"
#include "common.h"
#include "class_drawpanel.h"
#include "pcbstruct.h"
#include "gerbview.h"
#include "wxGerberFrame.h"
#include "layer_widget.h"
#include "class_gerbview_layer_widget.h"
/**
* Class GERBER_LAYER_WIDGET
* is here to implement the abtract functions of LAYER_WIDGET so they
* may be tied into the WinEDA_GerberFrame's data and so we can add a popup
* menu which is specific to PCBNEW's needs.
*/
GERBER_LAYER_WIDGET::GERBER_LAYER_WIDGET( WinEDA_GerberFrame* aParent, wxWindow* aFocusOwner, int aPointSize ) :
LAYER_WIDGET( aParent, aFocusOwner, aPointSize ),
myframe( aParent )
{
BOARD* board = myframe->GetBoard();
// Fixed "Rendering" tab rows within the LAYER_WIDGET, only the initial color
// is changed before appending to the LAYER_WIDGET. This is an automatic variable
// not a static variable, change the color & state after copying from code to renderRows
// on the stack.
LAYER_WIDGET::ROW renderRows[2] = {
#define RR LAYER_WIDGET::ROW // Render Row abreviation to reduce source width
// text id color tooltip checked
RR( _( "Grid" ), GERBER_GRID_VISIBLE, WHITE, _( "Show the (x,y) grid dots" ) ),
RR( _( "DCodes" ), DCODES_VISIBLE, WHITE, _( "Show DCodes identification" ) ),
};
for( unsigned row=0; row<DIM(renderRows); ++row )
{
if( renderRows[row].color != -1 ) // does this row show a color?
{
// this window frame must have an established BOARD, i.e. after SetBoard()
renderRows[row].color = board->GetVisibleElementColor( renderRows[row].id );
}
renderRows[row].state = board->IsElementVisible( renderRows[row].id );
}
AppendRenderRows( renderRows, DIM(renderRows) );
//-----<Popup menu>-------------------------------------------------
// handle the popup menu over the layer window.
m_LayerScrolledWindow->Connect( wxEVT_RIGHT_DOWN,
wxMouseEventHandler( GERBER_LAYER_WIDGET::onRightDownLayers ), NULL, this );
// since Popupmenu() calls this->ProcessEvent() we must call this->Connect()
// and not m_LayerScrolledWindow->Connect()
Connect( ID_SHOW_ALL_COPPERS, ID_SHOW_NO_COPPERS, wxEVT_COMMAND_MENU_SELECTED,
wxCommandEventHandler( GERBER_LAYER_WIDGET::onPopupSelection ), NULL, this );
// install the right click handler into each control at end of ReFill()
// using installRightLayerClickHandler
}
void GERBER_LAYER_WIDGET::installRightLayerClickHandler()
{
int rowCount = GetLayerRowCount();
for( int row=0; row<rowCount; ++row )
{
for( int col=0; col<LYR_COLUMN_COUNT; ++col )
{
wxWindow* w = getLayerComp( row, col );
w->Connect( wxEVT_RIGHT_DOWN, wxMouseEventHandler(
GERBER_LAYER_WIDGET::onRightDownLayers ), NULL, this );
}
}
}
void GERBER_LAYER_WIDGET::onRightDownLayers( wxMouseEvent& event )
{
wxMenu menu;
// menu text is capitalized:
// http://library.gnome.org/devel/hig-book/2.20/design-text-labels.html.en#layout-capitalization
menu.Append( new wxMenuItem( &menu, ID_SHOW_ALL_COPPERS,
_("Show All Layers") ) );
menu.Append( new wxMenuItem( &menu, ID_SHOW_NO_COPPERS,
_( "Hide All Layers" ) ) );
PopupMenu( &menu );
passOnFocus();
}
void GERBER_LAYER_WIDGET::onPopupSelection( wxCommandEvent& event )
{
int rowCount;
int menuId = event.GetId();
bool visible;
switch( menuId )
{
case ID_SHOW_ALL_COPPERS:
visible = true;
goto L_change_coppers;
case ID_SHOW_NO_COPPERS:
visible = false;
L_change_coppers:
int lastCu = -1;
rowCount = GetLayerRowCount();
for( int row=rowCount-1; row>=0; --row )
{
wxCheckBox* cb = (wxCheckBox*) getLayerComp( row, 3 );
int layer = getDecodedId( cb->GetId() );
if( IsValidCopperLayerIndex( layer ) )
{
lastCu = row;
break;
}
}
for( int row=0; row<rowCount; ++row )
{
wxCheckBox* cb = (wxCheckBox*) getLayerComp( row, 3 );
int layer = getDecodedId( cb->GetId() );
if( IsValidCopperLayerIndex( layer ) )
{
cb->SetValue( visible );
bool isLastCopperLayer = (row==lastCu);
OnLayerVisible( layer, visible, isLastCopperLayer );
if( isLastCopperLayer )
break;
}
}
break;
}
}
void GERBER_LAYER_WIDGET::ReFill()
{
BOARD* brd = myframe->GetBoard();
int layer;
ClearLayerRows();
for( layer = 0; layer < LAYER_COUNT; layer++ )
{
wxString msg;
msg.Printf( _("Layer %d"), layer+1 );
AppendLayerRow( LAYER_WIDGET::ROW( msg, layer, brd->GetLayerColor( layer ), wxEmptyString, true ) );
}
installRightLayerClickHandler();
}
//-----<LAYER_WIDGET callbacks>-------------------------------------------
void GERBER_LAYER_WIDGET::OnLayerColorChange( int aLayer, int aColor )
{
myframe->GetBoard()->SetLayerColor( aLayer, aColor );
myframe->DrawPanel->Refresh();
}
bool GERBER_LAYER_WIDGET::OnLayerSelect( int aLayer )
{
// the layer change from the GERBER_LAYER_WIDGET can be denied by returning
// false from this function.
// myframe->setActiveLayer( aLayer, false );
// myframe->syncLayerBox();
if(DisplayOpt.ContrastModeDisplay)
myframe->DrawPanel->Refresh();
return true;
}
void GERBER_LAYER_WIDGET::OnLayerVisible( int aLayer, bool isVisible, bool isFinal )
{
BOARD* brd = myframe->GetBoard();
int visibleLayers = brd->GetVisibleLayers();
if( isVisible )
visibleLayers |= (1 << aLayer);
else
visibleLayers &= ~(1 << aLayer);
brd->SetVisibleLayers( visibleLayers );
if( isFinal )
myframe->DrawPanel->Refresh();
}
void GERBER_LAYER_WIDGET::OnRenderColorChange( int aId, int aColor )
{
myframe->GetBoard()->SetVisibleElementColor( aId, aColor );
myframe->DrawPanel->Refresh();
}
void GERBER_LAYER_WIDGET::OnRenderEnable( int aId, bool isEnabled )
{
BOARD* brd = myframe->GetBoard();
brd->SetElementVisibility( aId, isEnabled );
myframe->DrawPanel->Refresh();
}
//-----</LAYER_WIDGET callbacks>------------------------------------------
/*
* This program source code file is part of KICAD, a free EDA CAD application.
*
* Copyright (C) 2004-2010 Jean-Pierre Charras, jean-pierre.charras@gpisa-lab.inpg.fr
* Copyright (C) 2010 SoftPLC Corporation, Dick Hollenbeck <dick@softplc.com>
* Copyright (C) 2010 Kicad Developers, see change_log.txt for contributors.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, you may find one here:
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
* or you may search the http://www.gnu.org website for the version 2 license,
* or you may write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
*/
/************************************************************/
/* class_gerber_layer_widget.h : header for the layers manager */
/************************************************************/
#ifndef _CLASS_GERBER_LAYER_WIDGET_H_
#define _CLASS_GERBER_LAYER_WIDGET_H_
#include "layer_widget.h"
/**
* Class GERBER_LAYER_WIDGET
* is here to implement the abtract functions of LAYER_WIDGET so they
* may be tied into the WinEDA_GerberFrame's data and so we can add a popup
* menu which is specific to PCBNEW's needs.
*/
class GERBER_LAYER_WIDGET : public LAYER_WIDGET
{
WinEDA_GerberFrame* myframe;
// popup menu ids.
#define ID_SHOW_ALL_COPPERS wxID_HIGHEST
#define ID_SHOW_NO_COPPERS (wxID_HIGHEST+1)
/**
* Function OnRightDownLayers
* puts up a popup menu for the layer panel.
*/
void onRightDownLayers( wxMouseEvent& event );
void onPopupSelection( wxCommandEvent& event );
/// this is for the popup menu, the right click handler has to be installed
/// on every child control within the layer panel.
void installRightLayerClickHandler();
public:
/**
* Constructor
* @param aPointSize is the font point size to use within the widget. This
* effectively sets the overal size of the widget via the row height and bitmap
* button sizes.
*/
GERBER_LAYER_WIDGET( WinEDA_GerberFrame* aParent, wxWindow* aFocusOwner, int aPointSize = 10 );
void ReFill();
//-----<implement LAYER_WIDGET abstract callback functions>-----------
void OnLayerColorChange( int aLayer, int aColor );
bool OnLayerSelect( int aLayer );
void OnLayerVisible( int aLayer, bool isVisible, bool isFinal );
void OnRenderColorChange( int aId, int aColor );
void OnRenderEnable( int aId, bool isEnabled );
//-----</implement LAYER_WIDGET abstract callback functions>----------
};
#endif // _CLASS_GERBER_LAYER_WIDGET_H_
......@@ -49,7 +49,7 @@ void WinEDA_GerberFrame::OnLeftClick( wxDC* DC, const wxPoint& MousePos )
break;
case ID_PCB_DELETE_ITEM_BUTT:
case ID_GERBVIEW_DELETE_ITEM_BUTT:
DrawStruct = GerberGeneralLocateAndDisplay();
if( DrawStruct == NULL )
break;
......@@ -126,7 +126,7 @@ void WinEDA_GerberFrame::Process_Special_Functions( wxCommandEvent& event )
Files_io( event );
break;
case ID_PCB_GLOBAL_DELETE:
case ID_GERBVIEW_GLOBAL_DELETE:
Erase_Current_Layer( TRUE );
break;
......@@ -152,20 +152,11 @@ void WinEDA_GerberFrame::Process_Special_Functions( wxCommandEvent& event )
case ID_POPUP_CANCEL_CURRENT_COMMAND:
break;
case ID_POPUP_PCB_DELETE_TRACKSEG:
DrawPanel->MouseToCursorSchema();
if( GetScreen()->GetCurItem() == NULL )
break;
Delete_Segment( &dc, (TRACK*) GetScreen()->GetCurItem() );
GetScreen()->SetCurItem( NULL );
GetScreen()->SetModify();
break;
case ID_PCB_DELETE_ITEM_BUTT:
case ID_GERBVIEW_DELETE_ITEM_BUTT:
SetToolID( id, wxCURSOR_BULLSEYE, wxT( "Delete item" ) );
break;
case ID_TOOLBARH_PCB_SELECT_LAYER:
case ID_TOOLBARH_GERBVIEW_SELECT_LAYER:
GetScreen()->m_Active_Layer = m_SelLayerBox->GetChoice();
DrawPanel->Refresh( TRUE );
break;
......
%ICAS*%
%FSLAX44Y44*%
%OFA0B0*%
%SFA1B1*%
%MOMM*%
%AMFRECTNOHOLE10*
21,1,1.5748,2.2860,0.0000,0.0000,0*
%
%AMFRECTNOHOLE11*
21,1,0.5080,1.1430,0.0000,0.0000,180*
%
%AMFRECTNOHOLE12*
21,1,1.5240,2.0320,0.0000,0.0000,180*
%
%AMFRECTNOHOLE13*
21,1,1.5240,2.0320,0.0000,0.0000,270*
%
%AMFRECTNOHOLE14*
21,1,1.5240,2.0320,0.0000,0.0000,90*
%
%AMFRECTNOHOLE15*
21,1,0.8890,1.3970,0.0000,0.0000,270*
%
%ADD10FRECTNOHOLE10*%
%ADD11FRECTNOHOLE11*%
%ADD12FRECTNOHOLE12*%
%ADD13FRECTNOHOLE13*%
%ADD14FRECTNOHOLE14*%
%ADD15FRECTNOHOLE15*%
%ADD17C,0.3048X0.0000X0.0000*%
%ADD19C,1.6764X0.0000X0.0000*%
%ADD22C,2.2860X0.0000X0.0000*%
%LNBottom*%
G54D10*
X2279650Y-1339850D3*
X1809750Y-1339850D3*
G54D11*
X2355850Y-1435100D3*
X2343150Y-1371600D3*
X2355850Y-1371600D3*
X2368550Y-1371600D3*
X2381250Y-1371600D3*
X2393950Y-1371600D3*
X2406650Y-1371600D3*
X2419350Y-1371600D3*
X2432050Y-1371600D3*
X2432050Y-1435100D3*
X2419350Y-1435100D3*
X2406650Y-1435100D3*
X2393950Y-1435100D3*
X2381250Y-1435100D3*
X2368550Y-1435100D3*
X2343150Y-1435100D3*
X1885950Y-1435100D3*
X1873250Y-1371600D3*
X1885950Y-1371600D3*
X1898650Y-1371600D3*
X1911350Y-1371600D3*
X1924050Y-1371600D3*
X1936750Y-1371600D3*
X1949450Y-1371600D3*
X1962150Y-1371600D3*
X1962150Y-1435100D3*
X1949450Y-1435100D3*
X1936750Y-1435100D3*
X1924050Y-1435100D3*
X1911350Y-1435100D3*
X1898650Y-1435100D3*
X1873250Y-1435100D3*
G54D12*
X2024380Y-1430020D3*
X1991360Y-1430020D3*
G54D13*
X2272030Y-1418590D3*
X2272030Y-1451610D3*
G54D14*
X2101850Y-1369060D3*
X2101850Y-1336040D3*
X2228850Y-1369060D3*
X2228850Y-1336040D3*
X2190750Y-1369060D3*
X2190750Y-1336040D3*
X2152650Y-1369060D3*
X2152650Y-1336040D3*
G54D15*
X1986280Y-1386205D3*
X1986280Y-1405255D3*
X2321560Y-1384935D3*
X2321560Y-1403985D3*
X2059940Y-1339215D3*
X2059940Y-1358265D3*
G54D17*
X1873250Y-1439291D2*
X1873250Y-1435100D1*
X1873250Y-1441867D2*
X1873250Y-1439291D1*
X1874738Y-1443355D2*
X1873250Y-1441867D1*
X1881450Y-1445546D2*
X1874738Y-1443355D1*
X1883990Y-1445546D2*
X1881450Y-1445546D1*
X1887910Y-1445546D2*
X1883990Y-1445546D1*
X1890068Y-1444625D2*
X1887910Y-1445546D1*
X1892300Y-1442393D2*
X1890068Y-1444625D1*
X1892300Y-1427807D2*
X1892300Y-1442393D1*
X1894532Y-1425575D2*
X1892300Y-1427807D1*
X1896690Y-1424654D2*
X1894532Y-1425575D1*
X1900610Y-1424654D2*
X1896690Y-1424654D1*
X1902768Y-1425575D2*
X1900610Y-1424654D1*
X1905000Y-1427807D2*
X1902768Y-1425575D1*
X1905000Y-1442393D2*
X1905000Y-1427807D1*
X1907232Y-1444625D2*
X1905000Y-1442393D1*
X1909390Y-1445546D2*
X1907232Y-1444625D1*
X1922090Y-1445546D2*
X1909390Y-1445546D1*
X1926010Y-1445546D2*
X1922090Y-1445546D1*
X1928168Y-1444625D2*
X1926010Y-1445546D1*
X1930400Y-1442393D2*
X1928168Y-1444625D1*
X1930400Y-1427807D2*
X1930400Y-1442393D1*
X1932632Y-1425575D2*
X1930400Y-1427807D1*
X1937330Y-1424654D2*
X1932632Y-1425575D1*
X1941250Y-1424654D2*
X1937330Y-1424654D1*
X1948180Y-1424686D2*
X1941250Y-1424654D1*
X1949450Y-1430909D2*
X1949450Y-1435100D1*
X1949450Y-1428333D2*
X1949450Y-1430909D1*
X1948180Y-1424686D2*
X1949450Y-1428333D1*
X2419350Y-1430909D2*
X2419350Y-1435100D1*
X2419350Y-1428333D2*
X2419350Y-1430909D1*
X2417862Y-1426845D2*
X2419350Y-1428333D1*
X2411150Y-1424654D2*
X2417862Y-1426845D1*
X2408610Y-1424654D2*
X2411150Y-1424654D1*
X2404690Y-1424654D2*
X2408610Y-1424654D1*
X2402532Y-1425575D2*
X2404690Y-1424654D1*
X2400300Y-1427807D2*
X2402532Y-1425575D1*
X2400300Y-1447822D2*
X2400300Y-1427807D1*
X2398931Y-1451126D2*
X2400300Y-1447822D1*
X2389021Y-1461036D2*
X2398931Y-1451126D1*
X2385717Y-1462405D2*
X2389021Y-1461036D1*
X2378280Y-1463326D2*
X2385717Y-1462405D1*
X2363900Y-1463326D2*
X2378280Y-1463326D1*
X2358820Y-1463326D2*
X2363900Y-1463326D1*
X2355177Y-1461817D2*
X2358820Y-1463326D1*
X2345008Y-1451648D2*
X2355177Y-1461817D1*
X2343499Y-1448005D2*
X2345008Y-1451648D1*
X2343150Y-1445023D2*
X2343499Y-1448005D1*
X2343150Y-1439291D2*
X2343150Y-1445023D1*
X2343150Y-1435100D2*
X2343150Y-1439291D1*
X2223421Y-1342136D2*
X2228850Y-1336040D1*
X2223421Y-1345620D2*
X2223421Y-1342136D1*
X2223262Y-1348486D2*
X2223421Y-1345620D1*
X2110486Y-1338929D2*
X2101850Y-1336040D1*
X2113970Y-1338929D2*
X2110486Y-1338929D1*
X2140530Y-1348391D2*
X2113970Y-1338929D1*
X2175252Y-1356856D2*
X2140530Y-1348391D1*
X2195572Y-1356856D2*
X2175252Y-1356856D1*
X2206248Y-1356856D2*
X2195572Y-1356856D1*
X2206467Y-1356765D2*
X2206248Y-1356856D1*
X2223262Y-1348486D2*
X2206467Y-1356765D1*
X2093214Y-1338929D2*
X2101850Y-1336040D1*
X2089730Y-1338929D2*
X2093214Y-1338929D1*
X2072640Y-1343914D2*
X2089730Y-1338929D1*
X2057686Y-1361186D2*
X2059940Y-1358265D1*
X2057686Y-1364670D2*
X2057686Y-1361186D1*
X2054915Y-1367441D2*
X2057686Y-1364670D1*
X1999062Y-1404116D2*
X2054915Y-1367441D1*
X1998687Y-1404271D2*
X1999062Y-1404116D1*
X1995106Y-1405255D2*
X1998687Y-1404271D1*
X1991741Y-1405255D2*
X1995106Y-1405255D1*
X1986280Y-1405255D2*
X1991741Y-1405255D1*
X2062194Y-1355344D2*
X2059940Y-1358265D1*
X2062194Y-1351860D2*
X2062194Y-1355344D1*
X2064965Y-1349089D2*
X2062194Y-1351860D1*
X2068885Y-1348391D2*
X2064965Y-1349089D1*
X2071656Y-1345620D2*
X2068885Y-1348391D1*
X2072640Y-1343914D2*
X2071656Y-1345620D1*
X2065401Y-1339215D2*
X2059940Y-1339215D1*
X2068766Y-1339215D2*
X2065401Y-1339215D1*
X2071370Y-1341819D2*
X2068766Y-1339215D1*
X2072640Y-1343914D2*
X2071370Y-1341819D1*
X2316099Y-1403985D2*
X2321560Y-1403985D1*
X2308957Y-1403985D2*
X2316099Y-1403985D1*
X2308220Y-1403680D2*
X2308957Y-1403985D1*
X2303742Y-1401492D2*
X2308220Y-1403680D1*
X2240970Y-1356709D2*
X2303742Y-1401492D1*
X2223262Y-1348486D2*
X2240970Y-1356709D1*
X2323814Y-1406906D2*
X2321560Y-1403985D1*
X2323814Y-1410390D2*
X2323814Y-1406906D1*
X2335879Y-1431345D2*
X2323814Y-1410390D1*
X2338650Y-1434116D2*
X2335879Y-1431345D1*
X2340610Y-1434116D2*
X2338650Y-1434116D1*
X2342134Y-1434116D2*
X2340610Y-1434116D1*
X2343150Y-1435100D2*
X2342134Y-1434116D1*
X1980819Y-1405255D2*
X1986280Y-1405255D1*
X1977454Y-1405255D2*
X1980819Y-1405255D1*
X1948180Y-1424686D2*
X1977454Y-1405255D1*
X2030476Y-1426210D2*
X2024380Y-1430020D1*
X2057095Y-1426210D2*
X2030476Y-1426210D1*
X2057095Y-1422400D2*
X2057095Y-1426210D1*
X2158079Y-1375156D2*
X2152650Y-1369060D1*
X2158079Y-1378640D2*
X2158079Y-1375156D1*
X2162099Y-1416050D2*
X2158079Y-1378640D1*
X2162099Y-1422400D2*
X2162099Y-1416050D1*
X2232101Y-1375156D2*
X2228850Y-1369060D1*
X2232101Y-1416050D2*
X2232101Y-1375156D1*
X2232101Y-1422400D2*
X2232101Y-1416050D1*
X2161286Y-1338929D2*
X2152650Y-1336040D1*
X2164770Y-1338929D2*
X2161286Y-1338929D1*
X2178691Y-1348244D2*
X2164770Y-1338929D1*
X2199011Y-1348244D2*
X2178691Y-1348244D1*
X2202809Y-1348244D2*
X2199011Y-1348244D1*
X2205494Y-1345559D2*
X2202809Y-1348244D1*
X2213959Y-1326460D2*
X2205494Y-1345559D1*
X2216730Y-1323689D2*
X2213959Y-1326460D1*
X2220650Y-1323689D2*
X2216730Y-1323689D1*
X2240970Y-1323689D2*
X2220650Y-1323689D1*
X2243741Y-1326460D2*
X2240970Y-1323689D1*
X2267045Y-1353240D2*
X2243741Y-1326460D1*
X2302606Y-1389893D2*
X2267045Y-1353240D1*
X2309617Y-1396904D2*
X2302606Y-1389893D1*
X2329637Y-1396904D2*
X2309617Y-1396904D1*
X2331181Y-1398448D2*
X2329637Y-1396904D1*
X2349500Y-1427807D2*
X2331181Y-1398448D1*
X2349500Y-1442393D2*
X2349500Y-1427807D1*
X2352544Y-1446612D2*
X2349500Y-1442393D1*
X2360213Y-1454281D2*
X2352544Y-1446612D1*
X2360588Y-1454436D2*
X2360213Y-1454281D1*
X2373288Y-1454436D2*
X2360588Y-1454436D1*
X2384132Y-1454436D2*
X2373288Y-1454436D1*
X2384507Y-1454281D2*
X2384132Y-1454436D1*
X2392176Y-1446612D2*
X2384507Y-1454281D1*
X2392331Y-1446237D2*
X2392176Y-1446612D1*
X2393950Y-1441867D2*
X2392331Y-1446237D1*
X2393950Y-1439291D2*
X2393950Y-1441867D1*
X2393950Y-1435100D2*
X2393950Y-1439291D1*
X2144014Y-1333151D2*
X2152650Y-1336040D1*
X2140530Y-1333151D2*
X2144014Y-1333151D1*
X2113970Y-1323689D2*
X2140530Y-1333151D1*
X2093650Y-1323689D2*
X2113970Y-1323689D1*
X2089730Y-1323689D2*
X2093650Y-1323689D1*
X2050995Y-1330039D2*
X2089730Y-1323689D1*
X2048224Y-1332810D2*
X2050995Y-1330039D1*
X1997996Y-1392610D2*
X2048224Y-1332810D1*
X1995225Y-1395381D2*
X1997996Y-1392610D1*
X1973873Y-1396079D2*
X1995225Y-1395381D1*
X1973498Y-1396234D2*
X1973873Y-1396079D1*
X1931474Y-1416700D2*
X1973498Y-1396234D1*
X1924050Y-1424146D2*
X1931474Y-1416700D1*
X1924050Y-1429385D2*
X1924050Y-1424146D1*
X1924050Y-1430909D2*
X1924050Y-1429385D1*
X1924050Y-1435100D2*
X1924050Y-1430909D1*
X2432050Y-1439291D2*
X2432050Y-1435100D1*
X2432050Y-1441867D2*
X2432050Y-1439291D1*
X2419949Y-1456684D2*
X2432050Y-1441867D1*
X2407279Y-1469354D2*
X2419949Y-1456684D1*
X2399792Y-1476714D2*
X2407279Y-1469354D1*
X2399384Y-1476986D2*
X2399792Y-1476714D1*
X2389669Y-1481010D2*
X2399384Y-1476986D1*
X2389187Y-1481106D2*
X2389669Y-1481010D1*
X2368233Y-1481106D2*
X2389187Y-1481106D1*
X2355533Y-1481106D2*
X2368233Y-1481106D1*
X1908468Y-1454436D2*
X2355533Y-1481106D1*
X1908093Y-1454281D2*
X1908468Y-1454436D1*
X1904602Y-1450975D2*
X1908093Y-1454281D1*
X1898650Y-1445023D2*
X1904602Y-1450975D1*
X1898650Y-1440815D2*
X1898650Y-1445023D1*
X1898650Y-1439291D2*
X1898650Y-1440815D1*
X1898650Y-1435100D2*
X1898650Y-1439291D1*
X2432050Y-1342898D2*
X2432050Y-1339850D1*
X2416093Y-1352419D2*
X2432050Y-1342898D1*
X2408424Y-1360088D2*
X2416093Y-1352419D1*
X2408269Y-1360463D2*
X2408424Y-1360088D1*
X2406650Y-1364833D2*
X2408269Y-1360463D1*
X2406650Y-1367409D2*
X2406650Y-1364833D1*
X2406650Y-1371600D2*
X2406650Y-1367409D1*
X2381250Y-1342898D2*
X2381250Y-1339850D1*
X2381250Y-1367409D2*
X2381250Y-1342898D1*
X2381250Y-1371600D2*
X2381250Y-1367409D1*
X2330450Y-1342898D2*
X2330450Y-1339850D1*
X2354362Y-1363345D2*
X2330450Y-1342898D1*
X2355850Y-1364833D2*
X2354362Y-1363345D1*
X2355850Y-1365885D2*
X2355850Y-1364833D1*
X2355850Y-1367409D2*
X2355850Y-1365885D1*
X2355850Y-1371600D2*
X2355850Y-1367409D1*
X2282793Y-1349756D2*
X2279650Y-1339850D1*
X2282793Y-1353240D2*
X2282793Y-1349756D1*
X2311940Y-1390471D2*
X2282793Y-1353240D1*
X2313484Y-1392015D2*
X2311940Y-1390471D1*
X2333503Y-1392015D2*
X2313484Y-1392015D1*
X2340515Y-1399027D2*
X2333503Y-1392015D1*
X2355850Y-1424146D2*
X2340515Y-1399027D1*
X2355850Y-1429385D2*
X2355850Y-1424146D1*
X2355850Y-1430909D2*
X2355850Y-1429385D1*
X2355850Y-1435100D2*
X2355850Y-1430909D1*
X2457450Y-1260602D2*
X2457450Y-1263650D1*
X2419782Y-1181100D2*
X2457450Y-1260602D1*
X2419782Y-1174750D2*
X2419782Y-1181100D1*
X2406650Y-1260602D2*
X2406650Y-1263650D1*
X2349779Y-1181100D2*
X2406650Y-1260602D1*
X2349779Y-1174750D2*
X2349779Y-1181100D1*
X2355850Y-1260602D2*
X2355850Y-1263650D1*
X2279802Y-1181100D2*
X2355850Y-1260602D1*
X2279802Y-1174750D2*
X2279802Y-1181100D1*
X2305050Y-1260602D2*
X2305050Y-1263650D1*
X2209800Y-1181100D2*
X2305050Y-1260602D1*
X2209800Y-1174750D2*
X2209800Y-1181100D1*
X2279650Y-1260602D2*
X2279650Y-1263650D1*
X2174799Y-1181100D2*
X2279650Y-1260602D1*
X2174799Y-1174750D2*
X2174799Y-1181100D1*
X2330450Y-1260602D2*
X2330450Y-1263650D1*
X2244801Y-1181100D2*
X2330450Y-1260602D1*
X2244801Y-1174750D2*
X2244801Y-1181100D1*
X2381250Y-1260602D2*
X2381250Y-1263650D1*
X2314804Y-1181100D2*
X2381250Y-1260602D1*
X2314804Y-1174750D2*
X2314804Y-1181100D1*
X2432050Y-1260602D2*
X2432050Y-1263650D1*
X2384781Y-1181100D2*
X2432050Y-1260602D1*
X2384781Y-1174750D2*
X2384781Y-1181100D1*
X2482850Y-1260602D2*
X2482850Y-1263650D1*
X2454783Y-1181100D2*
X2482850Y-1260602D1*
X2454783Y-1174750D2*
X2454783Y-1181100D1*
X2342134Y-1370616D2*
X2343150Y-1371600D1*
X2338650Y-1370616D2*
X2342134Y-1370616D1*
X2334342Y-1367024D2*
X2338650Y-1370616D1*
X2305050Y-1342898D2*
X2334342Y-1367024D1*
X2305050Y-1339850D2*
X2305050Y-1342898D1*
X2355850Y-1342898D2*
X2355850Y-1339850D1*
X2366776Y-1360088D2*
X2355850Y-1342898D1*
X2366931Y-1360463D2*
X2366776Y-1360088D1*
X2368550Y-1364833D2*
X2366931Y-1360463D1*
X2368550Y-1367409D2*
X2368550Y-1364833D1*
X2368550Y-1371600D2*
X2368550Y-1367409D1*
X2406650Y-1342898D2*
X2406650Y-1339850D1*
X2395724Y-1360088D2*
X2406650Y-1342898D1*
X2395569Y-1360463D2*
X2395724Y-1360088D1*
X2393950Y-1364833D2*
X2395569Y-1360463D1*
X2393950Y-1367409D2*
X2393950Y-1364833D1*
X2393950Y-1371600D2*
X2393950Y-1367409D1*
X2457450Y-1342898D2*
X2457450Y-1339850D1*
X2437560Y-1355933D2*
X2457450Y-1342898D1*
X2420838Y-1363345D2*
X2437560Y-1355933D1*
X2419350Y-1364833D2*
X2420838Y-1363345D1*
X2419350Y-1365885D2*
X2419350Y-1364833D1*
X2419350Y-1367409D2*
X2419350Y-1365885D1*
X2419350Y-1371600D2*
X2419350Y-1367409D1*
X1962150Y-1342898D2*
X1962150Y-1339850D1*
X1946193Y-1352419D2*
X1962150Y-1342898D1*
X1938524Y-1360088D2*
X1946193Y-1352419D1*
X1938369Y-1360463D2*
X1938524Y-1360088D1*
X1936750Y-1364833D2*
X1938369Y-1360463D1*
X1936750Y-1367409D2*
X1936750Y-1364833D1*
X1936750Y-1371600D2*
X1936750Y-1367409D1*
X1911350Y-1342898D2*
X1911350Y-1339850D1*
X1911350Y-1367409D2*
X1911350Y-1342898D1*
X1911350Y-1371600D2*
X1911350Y-1367409D1*
X1860550Y-1342898D2*
X1860550Y-1339850D1*
X1884462Y-1363345D2*
X1860550Y-1342898D1*
X1885950Y-1364833D2*
X1884462Y-1363345D1*
X1885950Y-1365885D2*
X1885950Y-1364833D1*
X1885950Y-1367409D2*
X1885950Y-1365885D1*
X1885950Y-1371600D2*
X1885950Y-1367409D1*
X1816100Y-1346549D2*
X1809750Y-1339850D1*
X1819584Y-1346549D2*
X1816100Y-1346549D1*
X1822355Y-1349320D2*
X1819584Y-1346549D1*
X1885950Y-1428333D2*
X1822355Y-1349320D1*
X1885950Y-1430909D2*
X1885950Y-1428333D1*
X1885950Y-1435100D2*
X1885950Y-1430909D1*
X1987550Y-1260602D2*
X1987550Y-1263650D1*
X2045132Y-1181100D2*
X1987550Y-1260602D1*
X2045132Y-1174750D2*
X2045132Y-1181100D1*
X1936750Y-1260602D2*
X1936750Y-1263650D1*
X1975129Y-1181100D2*
X1936750Y-1260602D1*
X1975129Y-1174750D2*
X1975129Y-1181100D1*
X1885950Y-1260602D2*
X1885950Y-1263650D1*
X1905152Y-1181100D2*
X1885950Y-1260602D1*
X1905152Y-1174750D2*
X1905152Y-1181100D1*
X1835150Y-1260602D2*
X1835150Y-1263650D1*
X1835150Y-1181100D2*
X1835150Y-1260602D1*
X1835150Y-1174750D2*
X1835150Y-1181100D1*
X1809750Y-1260602D2*
X1809750Y-1263650D1*
X1800149Y-1181100D2*
X1809750Y-1260602D1*
X1800149Y-1174750D2*
X1800149Y-1181100D1*
X1860550Y-1260602D2*
X1860550Y-1263650D1*
X1870151Y-1181100D2*
X1860550Y-1260602D1*
X1870151Y-1174750D2*
X1870151Y-1181100D1*
X1911350Y-1260602D2*
X1911350Y-1263650D1*
X1940154Y-1181100D2*
X1911350Y-1260602D1*
X1940154Y-1174750D2*
X1940154Y-1181100D1*
X1962150Y-1260602D2*
X1962150Y-1263650D1*
X2010131Y-1181100D2*
X1962150Y-1260602D1*
X2010131Y-1174750D2*
X2010131Y-1181100D1*
X2012950Y-1260602D2*
X2012950Y-1263650D1*
X2080133Y-1181100D2*
X2012950Y-1260602D1*
X2080133Y-1174750D2*
X2080133Y-1181100D1*
X1872234Y-1370616D2*
X1873250Y-1371600D1*
X1868750Y-1370616D2*
X1872234Y-1370616D1*
X1835150Y-1342898D2*
X1868750Y-1370616D1*
X1835150Y-1339850D2*
X1835150Y-1342898D1*
X1885950Y-1342898D2*
X1885950Y-1339850D1*
X1896876Y-1360088D2*
X1885950Y-1342898D1*
X1897031Y-1360463D2*
X1896876Y-1360088D1*
X1898650Y-1364833D2*
X1897031Y-1360463D1*
X1898650Y-1367409D2*
X1898650Y-1364833D1*
X1898650Y-1371600D2*
X1898650Y-1367409D1*
X1936750Y-1342898D2*
X1936750Y-1339850D1*
X1925824Y-1360088D2*
X1936750Y-1342898D1*
X1925669Y-1360463D2*
X1925824Y-1360088D1*
X1924050Y-1364833D2*
X1925669Y-1360463D1*
X1924050Y-1367409D2*
X1924050Y-1364833D1*
X1924050Y-1371600D2*
X1924050Y-1367409D1*
X1987550Y-1342898D2*
X1987550Y-1339850D1*
X1967660Y-1355933D2*
X1987550Y-1342898D1*
X1950938Y-1363345D2*
X1967660Y-1355933D1*
X1949450Y-1364833D2*
X1950938Y-1363345D1*
X1949450Y-1365885D2*
X1949450Y-1364833D1*
X1949450Y-1367409D2*
X1949450Y-1365885D1*
X1949450Y-1371600D2*
X1949450Y-1367409D1*
X1985264Y-1434116D2*
X1991360Y-1430020D1*
X1963166Y-1434116D2*
X1985264Y-1434116D1*
X1962150Y-1435100D2*
X1963166Y-1434116D1*
X2196179Y-1329944D2*
X2190750Y-1336040D1*
X2196179Y-1326460D2*
X2196179Y-1329944D1*
X2198950Y-1323689D2*
X2196179Y-1326460D1*
X2212893Y-1314954D2*
X2198950Y-1323689D1*
X2213268Y-1314799D2*
X2212893Y-1314954D1*
X2224112Y-1314799D2*
X2213268Y-1314799D1*
X2244432Y-1314799D2*
X2224112Y-1314799D1*
X2289484Y-1323689D2*
X2244432Y-1314799D1*
X2292255Y-1326460D2*
X2289484Y-1323689D1*
X2292255Y-1330380D2*
X2292255Y-1326460D1*
X2292096Y-1331513D2*
X2292255Y-1330380D1*
X2292096Y-1337609D2*
X2292096Y-1331513D1*
X2292150Y-1348318D2*
X2292096Y-1337609D1*
X2299630Y-1355798D2*
X2292150Y-1348318D1*
X2338558Y-1379765D2*
X2299630Y-1355798D1*
X2339292Y-1380497D2*
X2338558Y-1379765D1*
X2342449Y-1382831D2*
X2339292Y-1380497D1*
X2354144Y-1394526D2*
X2342449Y-1382831D1*
X2366215Y-1415477D2*
X2354144Y-1394526D1*
X2368550Y-1421115D2*
X2366215Y-1415477D1*
X2368550Y-1429385D2*
X2368550Y-1421115D1*
X2368550Y-1430909D2*
X2368550Y-1429385D1*
X2368550Y-1435100D2*
X2368550Y-1430909D1*
X2263394Y-1453801D2*
X2272030Y-1451610D1*
X2154403Y-1453801D2*
X2263394Y-1453801D1*
X1944950Y-1445546D2*
X2154403Y-1453801D1*
X1938238Y-1443355D2*
X1944950Y-1445546D1*
X1936750Y-1441867D2*
X1938238Y-1443355D1*
X1936750Y-1440815D2*
X1936750Y-1441867D1*
X1936750Y-1439291D2*
X1936750Y-1440815D1*
X1936750Y-1435100D2*
X1936750Y-1439291D1*
X2280666Y-1454499D2*
X2272030Y-1451610D1*
X2284150Y-1454499D2*
X2280666Y-1454499D1*
X2357051Y-1472216D2*
X2284150Y-1454499D1*
X2374969Y-1472216D2*
X2357051Y-1472216D1*
X2377924Y-1471764D2*
X2374969Y-1472216D1*
X2386980Y-1468755D2*
X2377924Y-1471764D1*
X2392618Y-1466420D2*
X2386980Y-1468755D1*
X2404315Y-1454723D2*
X2392618Y-1466420D1*
X2406650Y-1449085D2*
X2404315Y-1454723D1*
X2406650Y-1440815D2*
X2406650Y-1449085D1*
X2406650Y-1439291D2*
X2406650Y-1440815D1*
X2406650Y-1435100D2*
X2406650Y-1439291D1*
X2196179Y-1375156D2*
X2190750Y-1369060D1*
X2196179Y-1378640D2*
X2196179Y-1375156D1*
X2197100Y-1416050D2*
X2196179Y-1378640D1*
X2197100Y-1422400D2*
X2197100Y-1416050D1*
X2263394Y-1421479D2*
X2272030Y-1418590D1*
X2259910Y-1421479D2*
X2263394Y-1421479D1*
X2257139Y-1424250D2*
X2259910Y-1421479D1*
X2247720Y-1435986D2*
X2257139Y-1424250D1*
X2239337Y-1444369D2*
X2247720Y-1435986D1*
X2238028Y-1444911D2*
X2239337Y-1444369D1*
X2226174Y-1444911D2*
X2238028Y-1444911D1*
X2156172Y-1444911D2*
X2226174Y-1444911D1*
X2154863Y-1444369D2*
X2156172Y-1444911D1*
X2127098Y-1428750D2*
X2154863Y-1444369D1*
X2127098Y-1422400D2*
X2127098Y-1428750D1*
X2012950Y-1336802D2*
X2012950Y-1339850D1*
X2115134Y-1181100D2*
X2012950Y-1336802D1*
X2115134Y-1174750D2*
X2115134Y-1181100D1*
X2012950Y-1342898D2*
X2012950Y-1339850D1*
X1982470Y-1376426D2*
X2012950Y-1342898D1*
X2482850Y-1336802D2*
X2482850Y-1339850D1*
X2495963Y-1272019D2*
X2482850Y-1336802D1*
X2495963Y-1261377D2*
X2495963Y-1272019D1*
X2495963Y-1255281D2*
X2495963Y-1261377D1*
X2489784Y-1181100D2*
X2495963Y-1255281D1*
X2489784Y-1174750D2*
X2489784Y-1181100D1*
X1962150Y-1375791D2*
X1962150Y-1371600D1*
X1962150Y-1378367D2*
X1962150Y-1375791D1*
X1960662Y-1379855D2*
X1962150Y-1378367D1*
X1923377Y-1408383D2*
X1960662Y-1379855D1*
X1913208Y-1418552D2*
X1923377Y-1408383D1*
X1911699Y-1422195D2*
X1913208Y-1418552D1*
X1911350Y-1428333D2*
X1911699Y-1422195D1*
X1911350Y-1430909D2*
X1911350Y-1428333D1*
X1911350Y-1435100D2*
X1911350Y-1430909D1*
X1963166Y-1372584D2*
X1962150Y-1371600D1*
X1966650Y-1372584D2*
X1963166Y-1372584D1*
X1982470Y-1376426D2*
X1966650Y-1372584D1*
X2432050Y-1375791D2*
X2432050Y-1371600D1*
X2432050Y-1378367D2*
X2432050Y-1375791D1*
X2430562Y-1379855D2*
X2432050Y-1378367D1*
X2382738Y-1426845D2*
X2430562Y-1379855D1*
X2381250Y-1428333D2*
X2382738Y-1426845D1*
X2381250Y-1429385D2*
X2381250Y-1428333D1*
X2381250Y-1430909D2*
X2381250Y-1429385D1*
X2381250Y-1435100D2*
X2381250Y-1430909D1*
X2433066Y-1370616D2*
X2432050Y-1371600D1*
X2436550Y-1370616D2*
X2433066Y-1370616D1*
X2462960Y-1355933D2*
X2436550Y-1370616D1*
X2482850Y-1342898D2*
X2462960Y-1355933D1*
X2482850Y-1339850D2*
X2482850Y-1342898D1*
X2489784Y-1168400D2*
X2489784Y-1174750D1*
X2462019Y-1152781D2*
X2489784Y-1168400D1*
X2460710Y-1152239D2*
X2462019Y-1152781D1*
X2180726Y-1152239D2*
X2460710Y-1152239D1*
X2168872Y-1152239D2*
X2180726Y-1152239D1*
X2115134Y-1168400D2*
X2168872Y-1152239D1*
X2115134Y-1174750D2*
X2115134Y-1168400D1*
X2096421Y-1375156D2*
X2101850Y-1369060D1*
X2096421Y-1378640D2*
X2096421Y-1375156D1*
X2092096Y-1416050D2*
X2096421Y-1378640D1*
X2092096Y-1422400D2*
X2092096Y-1416050D1*
X2327021Y-1384935D2*
X2321560Y-1384935D1*
X2334163Y-1384935D2*
X2327021Y-1384935D1*
X2334900Y-1385240D2*
X2334163Y-1384935D1*
X2339073Y-1387885D2*
X2334900Y-1385240D1*
X2349090Y-1397902D2*
X2339073Y-1387885D1*
X2361218Y-1420512D2*
X2349090Y-1397902D1*
X2362200Y-1422883D2*
X2361218Y-1420512D1*
X2362200Y-1442393D2*
X2362200Y-1422883D1*
X2364432Y-1444625D2*
X2362200Y-1442393D1*
X2366590Y-1445546D2*
X2364432Y-1444625D1*
X2369130Y-1445546D2*
X2366590Y-1445546D1*
X2373050Y-1445546D2*
X2369130Y-1445546D1*
X2379762Y-1443355D2*
X2373050Y-1445546D1*
X2381250Y-1441867D2*
X2379762Y-1443355D1*
X2381250Y-1440815D2*
X2381250Y-1441867D1*
X2381250Y-1439291D2*
X2381250Y-1440815D1*
X2381250Y-1435100D2*
X2381250Y-1439291D1*
X1984026Y-1383284D2*
X1986280Y-1386205D1*
X1984026Y-1379800D2*
X1984026Y-1383284D1*
X1982470Y-1376426D2*
X1984026Y-1379800D1*
G54D19*
X2279650Y-1260602D2*
X2279650Y-1266698D1*
X2305050Y-1260602D2*
X2305050Y-1266698D1*
X2330450Y-1260602D2*
X2330450Y-1266698D1*
X2355850Y-1260602D2*
X2355850Y-1266698D1*
X2381250Y-1260602D2*
X2381250Y-1266698D1*
X2406650Y-1260602D2*
X2406650Y-1266698D1*
X2432050Y-1260602D2*
X2432050Y-1266698D1*
X2457450Y-1260602D2*
X2457450Y-1266698D1*
X2482850Y-1260602D2*
X2482850Y-1266698D1*
X2482850Y-1336802D2*
X2482850Y-1342898D1*
X2457450Y-1336802D2*
X2457450Y-1342898D1*
X2432050Y-1336802D2*
X2432050Y-1342898D1*
X2406650Y-1336802D2*
X2406650Y-1342898D1*
X2381250Y-1336802D2*
X2381250Y-1342898D1*
X2355850Y-1336802D2*
X2355850Y-1342898D1*
X2330450Y-1336802D2*
X2330450Y-1342898D1*
X2305050Y-1336802D2*
X2305050Y-1342898D1*
X1809750Y-1260602D2*
X1809750Y-1266698D1*
X1835150Y-1260602D2*
X1835150Y-1266698D1*
X1860550Y-1260602D2*
X1860550Y-1266698D1*
X1885950Y-1260602D2*
X1885950Y-1266698D1*
X1911350Y-1260602D2*
X1911350Y-1266698D1*
X1936750Y-1260602D2*
X1936750Y-1266698D1*
X1962150Y-1260602D2*
X1962150Y-1266698D1*
X1987550Y-1260602D2*
X1987550Y-1266698D1*
X2012950Y-1260602D2*
X2012950Y-1266698D1*
X2012950Y-1336802D2*
X2012950Y-1342898D1*
X1987550Y-1336802D2*
X1987550Y-1342898D1*
X1962150Y-1336802D2*
X1962150Y-1342898D1*
X1936750Y-1336802D2*
X1936750Y-1342898D1*
X1911350Y-1336802D2*
X1911350Y-1342898D1*
X1885950Y-1336802D2*
X1885950Y-1342898D1*
X1860550Y-1336802D2*
X1860550Y-1342898D1*
X1835150Y-1336802D2*
X1835150Y-1342898D1*
G54D22*
X2162099Y-1428750D2*
X2162099Y-1416050D1*
X2197100Y-1428750D2*
X2197100Y-1416050D1*
X2232101Y-1428750D2*
X2232101Y-1416050D1*
X2127098Y-1428750D2*
X2127098Y-1416050D1*
X2057095Y-1428750D2*
X2057095Y-1416050D1*
X2092096Y-1428750D2*
X2092096Y-1416050D1*
X2244801Y-1168400D2*
X2244801Y-1181100D1*
X2209800Y-1168400D2*
X2209800Y-1181100D1*
X2174799Y-1168400D2*
X2174799Y-1181100D1*
X2279802Y-1168400D2*
X2279802Y-1181100D1*
X2314804Y-1168400D2*
X2314804Y-1181100D1*
X2489784Y-1168400D2*
X2489784Y-1181100D1*
X2454783Y-1168400D2*
X2454783Y-1181100D1*
X2349779Y-1168400D2*
X2349779Y-1181100D1*
X2384781Y-1168400D2*
X2384781Y-1181100D1*
X2419782Y-1168400D2*
X2419782Y-1181100D1*
X1870151Y-1168400D2*
X1870151Y-1181100D1*
X1835150Y-1168400D2*
X1835150Y-1181100D1*
X1800149Y-1168400D2*
X1800149Y-1181100D1*
X1905152Y-1168400D2*
X1905152Y-1181100D1*
X1940154Y-1168400D2*
X1940154Y-1181100D1*
X2115134Y-1168400D2*
X2115134Y-1181100D1*
X2080133Y-1168400D2*
X2080133Y-1181100D1*
X1975129Y-1168400D2*
X1975129Y-1181100D1*
X2010131Y-1168400D2*
X2010131Y-1181100D1*
X2045132Y-1168400D2*
X2045132Y-1181100D1*
M02*
%ICAS*%
%FSLAX44Y44*%
%OFA0B0*%
%SFA1B1*%
%MOMM*%
%AMFRECTNOHOLE10*
21,1,1.5748,2.2860,0.0000,0.0000,0*
%
%AMFRECTNOHOLE11*
21,1,0.5080,1.1430,0.0000,0.0000,180*
%
%AMFRECTNOHOLE12*
21,1,1.5240,2.0320,0.0000,0.0000,180*
%
%AMFRECTNOHOLE13*
21,1,1.5240,2.0320,0.0000,0.0000,270*
%
%AMFRECTNOHOLE14*
21,1,1.5240,2.0320,0.0000,0.0000,90*
%
%AMFRECTNOHOLE15*
21,1,0.8890,1.3970,0.0000,0.0000,270*
%
%ADD10FRECTNOHOLE10*%
%ADD11FRECTNOHOLE11*%
%ADD12FRECTNOHOLE12*%
%ADD13FRECTNOHOLE13*%
%ADD14FRECTNOHOLE14*%
%ADD15FRECTNOHOLE15*%
%ADD17C,0.3048X0.0000X0.0000*%
%ADD19C,1.6764X0.0000X0.0000*%
%ADD22C,2.2860X0.0000X0.0000*%
%LNBottom_arc*%
G54D10*
X2279650Y-1339850D3*
X1809750Y-1339850D3*
G54D11*
X2355850Y-1435100D3*
X2343150Y-1371600D3*
X2355850Y-1371600D3*
X2368550Y-1371600D3*
X2381250Y-1371600D3*
X2393950Y-1371600D3*
X2406650Y-1371600D3*
X2419350Y-1371600D3*
X2432050Y-1371600D3*
X2432050Y-1435100D3*
X2419350Y-1435100D3*
X2406650Y-1435100D3*
X2393950Y-1435100D3*
X2381250Y-1435100D3*
X2368550Y-1435100D3*
X2343150Y-1435100D3*
X1885950Y-1435100D3*
X1873250Y-1371600D3*
X1885950Y-1371600D3*
X1898650Y-1371600D3*
X1911350Y-1371600D3*
X1924050Y-1371600D3*
X1936750Y-1371600D3*
X1949450Y-1371600D3*
X1962150Y-1371600D3*
X1962150Y-1435100D3*
X1949450Y-1435100D3*
X1936750Y-1435100D3*
X1924050Y-1435100D3*
X1911350Y-1435100D3*
X1898650Y-1435100D3*
X1873250Y-1435100D3*
G54D12*
X2024380Y-1430020D3*
X1991360Y-1430020D3*
G54D13*
X2272030Y-1418590D3*
X2272030Y-1451610D3*
G54D14*
X2101850Y-1369060D3*
X2101850Y-1336040D3*
X2228850Y-1369060D3*
X2228850Y-1336040D3*
X2190750Y-1369060D3*
X2190750Y-1336040D3*
X2152650Y-1369060D3*
X2152650Y-1336040D3*
G54D15*
X1986280Y-1386205D3*
X1986280Y-1405255D3*
X2321560Y-1384935D3*
X2321560Y-1403985D3*
X2059940Y-1339215D3*
X2059940Y-1358265D3*
G54D17*
X1947035Y-1424656D2*
X1948180Y-1424686D1*
G75*
G01X1947035Y-1424656D2*
G03X1946910Y-1424654I-125J-4729D1*
G74*
X1939290Y-1424654D2*
X1946910Y-1424654D1*
G75*
G01X1939290Y-1424654D2*
G03X1938432Y-1424732I0J-4731D1*
G74*
X1933519Y-1425638D2*
X1938432Y-1424732D1*
G75*
G01X1933519Y-1425638D2*
G03X1930400Y-1429385I691J-3747D1*
G74*
X1930400Y-1440815D2*
X1930400Y-1429385D1*
G75*
G01X1927972Y-1444366D2*
G03X1930400Y-1440815I-1382J3551D1*
G74*
X1925765Y-1445224D2*
X1927972Y-1444366D1*
G75*
G01X1924050Y-1445546D2*
G03X1925765Y-1445224I0J4731D1*
G74*
X1911350Y-1445546D2*
X1924050Y-1445546D1*
G75*
G01X1909635Y-1445224D2*
G03X1911350Y-1445546I1715J4409D1*
G74*
X1907428Y-1444366D2*
X1909635Y-1445224D1*
G75*
G01X1905000Y-1440815D2*
G03X1907428Y-1444366I3810J0D1*
G74*
X1905000Y-1429385D2*
X1905000Y-1440815D1*
G75*
G01X1905000Y-1429385D2*
G03X1902572Y-1425834I-3810J0D1*
G74*
X1900365Y-1424976D2*
X1902572Y-1425834D1*
G75*
G01X1900365Y-1424976D2*
G03X1896935Y-1424976I-1715J-4409D1*
G74*
X1894728Y-1425834D2*
X1896935Y-1424976D1*
G75*
G01X1894728Y-1425834D2*
G03X1892300Y-1429385I1382J-3551D1*
G74*
X1892300Y-1440815D2*
X1892300Y-1429385D1*
G75*
G01X1889872Y-1444366D2*
G03X1892300Y-1440815I-1382J3551D1*
G74*
X1887665Y-1445224D2*
X1889872Y-1444366D1*
G75*
G01X1885950Y-1445546D2*
G03X1887665Y-1445224I0J4731D1*
G74*
X1883410Y-1445546D2*
X1885950Y-1445546D1*
G75*
G01X1882050Y-1445346D2*
G03X1883410Y-1445546I1360J4531D1*
G74*
X1875060Y-1443248D2*
X1882050Y-1445346D1*
G75*
G01X1873250Y-1440815D2*
G03X1875060Y-1443248I2540J0D1*
G74*
X1873250Y-1439291D2*
X1873250Y-1440815D1*
X1873250Y-1435100D2*
X1873250Y-1439291D1*
X1949348Y-1428671D2*
X1948180Y-1424686D1*
G75*
G01X1949450Y-1429385D2*
G03X1949348Y-1428671I-2540J0D1*
G74*
X1949450Y-1430909D2*
X1949450Y-1429385D1*
X1949450Y-1435100D2*
X1949450Y-1430909D1*
X2343150Y-1439291D2*
X2343150Y-1440815D1*
X2343150Y-1435100D2*
X2343150Y-1439291D1*
G75*
G01X2343150Y-1440815D2*
G03X2343586Y-1444115I12700J0D1*
G74*
X2344272Y-1446664D2*
X2343586Y-1444115D1*
G75*
G01X2344272Y-1446664D2*
G03X2366010Y-1463326I21738J5849D1*
G74*
X2371090Y-1463326D2*
X2366010Y-1463326D1*
G75*
G01X2371090Y-1463326D2*
G03X2373811Y-1463161I0J22511D1*
G74*
X2381320Y-1462247D2*
X2373811Y-1463161D1*
G75*
G01X2381320Y-1462247D2*
G03X2400300Y-1440815I-2610J21432D1*
G74*
X2400300Y-1429385D2*
X2400300Y-1440815D1*
G75*
G01X2402728Y-1425834D2*
G03X2400300Y-1429385I1382J-3551D1*
G74*
X2404935Y-1424976D2*
X2402728Y-1425834D1*
G75*
G01X2406650Y-1424654D2*
G03X2404935Y-1424976I0J-4731D1*
G74*
X2409190Y-1424654D2*
X2406650Y-1424654D1*
G75*
G01X2410550Y-1424854D2*
G03X2409190Y-1424654I-1360J-4531D1*
G74*
X2417540Y-1426952D2*
X2410550Y-1424854D1*
G75*
G01X2419350Y-1429385D2*
G03X2417540Y-1426952I-2540J0D1*
G74*
X2419350Y-1430909D2*
X2419350Y-1429385D1*
X2419350Y-1435100D2*
X2419350Y-1430909D1*
X2223421Y-1343660D2*
X2223262Y-1348486D1*
X2223421Y-1342136D2*
X2223421Y-1343660D1*
X2228850Y-1336040D2*
X2223421Y-1342136D1*
X2206079Y-1355801D2*
X2223262Y-1348486D1*
G75*
G01X2200910Y-1356856D2*
G03X2206079Y-1355801I0J13196D1*
G74*
X2180590Y-1356856D2*
X2200910Y-1356856D1*
G75*
G01X2177658Y-1356526D2*
G03X2180590Y-1356856I2932J12866D1*
G74*
X2141439Y-1348273D2*
X2177658Y-1356526D1*
G75*
G01X2141021Y-1348157D2*
G03X2141439Y-1348273I1469J4497D1*
G74*
X2113479Y-1339163D2*
X2141021Y-1348157D1*
G75*
G01X2113479Y-1339163D2*
G03X2112010Y-1338929I-1469J-4497D1*
G74*
X2110486Y-1338929D2*
X2112010Y-1338929D1*
X2101850Y-1336040D2*
X2110486Y-1338929D1*
X2090454Y-1339093D2*
X2072640Y-1343914D1*
G75*
G01X2091690Y-1338929D2*
G03X2090454Y-1339093I0J-4731D1*
G74*
X2093214Y-1338929D2*
X2091690Y-1338929D1*
X2101850Y-1336040D2*
X2093214Y-1338929D1*
X1991741Y-1405255D2*
X1993265Y-1405255D1*
X1986280Y-1405255D2*
X1991741Y-1405255D1*
G75*
G01X1993265Y-1405255D2*
G03X1995173Y-1404825I0J4445D1*
G74*
X1999113Y-1402952D2*
X1995173Y-1404825D1*
G75*
G01X1999113Y-1402952D2*
G03X2000651Y-1402095I-5848J12302D1*
G74*
X2055520Y-1366685D2*
X2000651Y-1402095D1*
G75*
G01X2055520Y-1366685D2*
G03X2057686Y-1362710I-2565J3975D1*
G74*
X2057686Y-1361186D2*
X2057686Y-1362710D1*
X2059940Y-1358265D2*
X2057686Y-1361186D1*
X2070716Y-1346491D2*
X2072640Y-1343914D1*
G75*
G01X2068648Y-1348066D2*
G03X2070716Y-1346491I-1723J4406D1*
G74*
X2065202Y-1349414D2*
X2068648Y-1348066D1*
G75*
G01X2065202Y-1349414D2*
G03X2062194Y-1353820I1723J-4406D1*
G74*
X2062194Y-1355344D2*
X2062194Y-1353820D1*
X2059940Y-1358265D2*
X2062194Y-1355344D1*
X2070500Y-1341018D2*
X2072640Y-1343914D1*
G75*
G01X2070500Y-1341018D2*
G03X2066925Y-1339215I-3575J-2642D1*
G74*
X2065401Y-1339215D2*
X2066925Y-1339215D1*
X2059940Y-1339215D2*
X2065401Y-1339215D1*
X2241086Y-1357189D2*
X2223262Y-1348486D1*
G75*
G01X2241707Y-1357553D2*
G03X2241086Y-1357189I-2697J-3887D1*
G74*
X2303714Y-1400585D2*
X2241707Y-1357553D1*
G75*
G01X2303714Y-1400585D2*
G03X2314575Y-1403985I10861J15650D1*
G74*
X2316099Y-1403985D2*
X2314575Y-1403985D1*
X2321560Y-1403985D2*
X2316099Y-1403985D1*
X2342134Y-1434116D2*
X2340610Y-1434116D1*
X2343150Y-1435100D2*
X2342134Y-1434116D1*
G75*
G01X2336510Y-1431746D2*
G03X2340610Y-1434116I4100J2361D1*
G74*
X2324445Y-1410791D2*
X2336510Y-1431746D1*
G75*
G01X2323814Y-1408430D2*
G03X2324445Y-1410791I4731J0D1*
G74*
X2323814Y-1406906D2*
X2323814Y-1408430D1*
X2321560Y-1403985D2*
X2323814Y-1406906D1*
X1976867Y-1405977D2*
X1948180Y-1424686D1*
G75*
G01X1979295Y-1405255D2*
G03X1976867Y-1405977I0J-4445D1*
G74*
X1980819Y-1405255D2*
X1979295Y-1405255D1*
X1986280Y-1405255D2*
X1980819Y-1405255D1*
X2057095Y-1422400D2*
X2057095Y-1426210D1*
X2032000Y-1426210D2*
X2057095Y-1426210D1*
X2030476Y-1426210D2*
X2032000Y-1426210D1*
X2024380Y-1430020D2*
X2030476Y-1426210D1*
X2162099Y-1422400D2*
X2162099Y-1416050D1*
X2158104Y-1377164D2*
X2162099Y-1416050D1*
G75*
G01X2158079Y-1376680D2*
G03X2158104Y-1377164I4731J0D1*
G74*
X2158079Y-1375156D2*
X2158079Y-1376680D1*
X2152650Y-1369060D2*
X2158079Y-1375156D1*
X2232101Y-1422400D2*
X2232101Y-1416050D1*
X2232101Y-1376680D2*
X2232101Y-1416050D1*
X2232101Y-1375156D2*
X2232101Y-1376680D1*
X2228850Y-1369060D2*
X2232101Y-1375156D1*
X2393950Y-1439291D2*
X2393950Y-1440815D1*
X2393950Y-1435100D2*
X2393950Y-1439291D1*
G75*
G01X2393626Y-1442056D2*
G03X2393950Y-1440815I-2216J1241D1*
G74*
X2390595Y-1447470D2*
X2393626Y-1442056D1*
G75*
G01X2378710Y-1454436D2*
G03X2390595Y-1447470I0J13621D1*
G74*
X2366010Y-1454436D2*
X2378710Y-1454436D1*
G75*
G01X2355488Y-1449464D2*
G03X2366010Y-1454436I10522J8649D1*
G74*
X2350367Y-1443234D2*
X2355488Y-1449464D1*
G75*
G01X2349500Y-1440815D2*
G03X2350367Y-1443234I3810J0D1*
G74*
X2349500Y-1429385D2*
X2349500Y-1440815D1*
G75*
G01X2349500Y-1429385D2*
G03X2348927Y-1427376I-3810J0D1*
G74*
X2330785Y-1398150D2*
X2348927Y-1427376D1*
G75*
G01X2330785Y-1398150D2*
G03X2328545Y-1396904I-2240J-1390D1*
G74*
X2314575Y-1396904D2*
X2328545Y-1396904D1*
G75*
G01X2305992Y-1393277D2*
G03X2314575Y-1396904I8583J8342D1*
G74*
X2268383Y-1354577D2*
X2305992Y-1393277D1*
G75*
G01X2268227Y-1354409D2*
G03X2268383Y-1354577I3549J3129D1*
G74*
X2242559Y-1325291D2*
X2268227Y-1354409D1*
G75*
G01X2242559Y-1325291D2*
G03X2239010Y-1323689I-3549J-3129D1*
G74*
X2218690Y-1323689D2*
X2239010Y-1323689D1*
G75*
G01X2218690Y-1323689D2*
G03X2214436Y-1326349I0J-4731D1*
G74*
X2205031Y-1345667D2*
X2214436Y-1326349D1*
G75*
G01X2200910Y-1348244D2*
G03X2205031Y-1345667I0J4584D1*
G74*
X2180590Y-1348244D2*
X2200910Y-1348244D1*
G75*
G01X2178188Y-1347565D2*
G03X2180590Y-1348244I2402J3905D1*
G74*
X2165289Y-1339630D2*
X2178188Y-1347565D1*
G75*
G01X2165289Y-1339630D2*
G03X2162810Y-1338929I-2479J-4030D1*
G74*
X2161286Y-1338929D2*
X2162810Y-1338929D1*
X2152650Y-1336040D2*
X2161286Y-1338929D1*
X1924050Y-1430909D2*
X1924050Y-1429385D1*
X1924050Y-1435100D2*
X1924050Y-1430909D1*
G75*
G01X1931192Y-1417966D2*
G03X1924050Y-1429385I5558J-11419D1*
G74*
X1973334Y-1397453D2*
X1931192Y-1417966D1*
G75*
G01X1978636Y-1396095D2*
G03X1973334Y-1397453I659J-13605D1*
G74*
X1993494Y-1395375D2*
X1978636Y-1396095D1*
G75*
G01X1993494Y-1395375D2*
G03X1996876Y-1393706I-229J4725D1*
G74*
X2049344Y-1331714D2*
X1996876Y-1393706D1*
G75*
G01X2052190Y-1330101D2*
G03X2049344Y-1331714I765J-4669D1*
G74*
X2090925Y-1323751D2*
X2052190Y-1330101D1*
G75*
G01X2091690Y-1323689D2*
G03X2090925Y-1323751I0J-4731D1*
G74*
X2112010Y-1323689D2*
X2091690Y-1323689D1*
G75*
G01X2113479Y-1323923D2*
G03X2112010Y-1323689I-1469J-4497D1*
G74*
X2141021Y-1332917D2*
X2113479Y-1323923D1*
G75*
G01X2141021Y-1332917D2*
G03X2142490Y-1333151I1469J4497D1*
G74*
X2144014Y-1333151D2*
X2142490Y-1333151D1*
X2152650Y-1336040D2*
X2144014Y-1333151D1*
X1898650Y-1439291D2*
X1898650Y-1440815D1*
X1898650Y-1435100D2*
X1898650Y-1439291D1*
G75*
G01X1898650Y-1440815D2*
G03X1906745Y-1452651I12700J0D1*
G74*
X1908951Y-1453509D2*
X1906745Y-1452651D1*
G75*
G01X1908951Y-1453509D2*
G03X1913087Y-1454412I4939J12694D1*
G74*
X2363633Y-1481036D2*
X1913087Y-1454412D1*
G75*
G01X2363633Y-1481036D2*
G03X2366010Y-1481106I2377J40221D1*
G74*
X2378710Y-1481106D2*
X2366010Y-1481106D1*
G75*
G01X2378710Y-1481106D2*
G03X2406914Y-1469589I0J40291D1*
G74*
X2413391Y-1463240D2*
X2406914Y-1469589D1*
G75*
G01X2413391Y-1463240D2*
G03X2415196Y-1461314I-21981J22425D1*
G74*
X2431434Y-1442473D2*
X2415196Y-1461314D1*
G75*
G01X2431434Y-1442473D2*
G03X2432050Y-1440815I-1924J1658D1*
G74*
X2432050Y-1439291D2*
X2432050Y-1440815D1*
X2432050Y-1435100D2*
X2432050Y-1439291D1*
X2406650Y-1367409D2*
X2406650Y-1365885D1*
X2406650Y-1371600D2*
X2406650Y-1367409D1*
G75*
G01X2406974Y-1364644D2*
G03X2406650Y-1365885I2216J-1241D1*
G74*
X2410005Y-1359230D2*
X2406974Y-1364644D1*
G75*
G01X2414404Y-1354505D2*
G03X2410005Y-1359230I7486J-11380D1*
G74*
X2432050Y-1342898D2*
X2414404Y-1354505D1*
X2432050Y-1339850D2*
X2432050Y-1342898D1*
X2381250Y-1367409D2*
X2381250Y-1365885D1*
X2381250Y-1371600D2*
X2381250Y-1367409D1*
X2381250Y-1342898D2*
X2381250Y-1365885D1*
X2381250Y-1339850D2*
X2381250Y-1342898D1*
X2355850Y-1367409D2*
X2355850Y-1365885D1*
X2355850Y-1371600D2*
X2355850Y-1367409D1*
G75*
G01X2355850Y-1365885D2*
G03X2354965Y-1363958I-2540J0D1*
G74*
X2330450Y-1342898D2*
X2354965Y-1363958D1*
X2330450Y-1339850D2*
X2330450Y-1342898D1*
X2355850Y-1430909D2*
X2355850Y-1429385D1*
X2355850Y-1435100D2*
X2355850Y-1430909D1*
G75*
G01X2355850Y-1429385D2*
G03X2353999Y-1422782I-12700J0D1*
G74*
X2338770Y-1397762D2*
X2353999Y-1422782D1*
G75*
G01X2338770Y-1397762D2*
G03X2328545Y-1392015I-10225J-6223D1*
G74*
X2314575Y-1392015D2*
X2328545Y-1392015D1*
G75*
G01X2312497Y-1391000D2*
G03X2314575Y-1392015I2078J1620D1*
G74*
X2283793Y-1354189D2*
X2312497Y-1391000D1*
G75*
G01X2282793Y-1351280D2*
G03X2283793Y-1354189I4731J0D1*
G74*
X2282793Y-1349756D2*
X2282793Y-1351280D1*
X2279650Y-1339850D2*
X2282793Y-1349756D1*
X2419782Y-1174750D2*
X2419782Y-1181100D1*
X2457450Y-1260602D2*
X2419782Y-1181100D1*
X2457450Y-1263650D2*
X2457450Y-1260602D1*
X2349779Y-1174750D2*
X2349779Y-1181100D1*
X2406650Y-1260602D2*
X2349779Y-1181100D1*
X2406650Y-1263650D2*
X2406650Y-1260602D1*
X2279802Y-1174750D2*
X2279802Y-1181100D1*
X2355850Y-1260602D2*
X2279802Y-1181100D1*
X2355850Y-1263650D2*
X2355850Y-1260602D1*
X2209800Y-1174750D2*
X2209800Y-1181100D1*
X2305050Y-1260602D2*
X2209800Y-1181100D1*
X2305050Y-1263650D2*
X2305050Y-1260602D1*
X2174799Y-1174750D2*
X2174799Y-1181100D1*
X2279650Y-1260602D2*
X2174799Y-1181100D1*
X2279650Y-1263650D2*
X2279650Y-1260602D1*
X2244801Y-1174750D2*
X2244801Y-1181100D1*
X2330450Y-1260602D2*
X2244801Y-1181100D1*
X2330450Y-1263650D2*
X2330450Y-1260602D1*
X2314804Y-1174750D2*
X2314804Y-1181100D1*
X2381250Y-1260602D2*
X2314804Y-1181100D1*
X2381250Y-1263650D2*
X2381250Y-1260602D1*
X2384781Y-1174750D2*
X2384781Y-1181100D1*
X2432050Y-1260602D2*
X2384781Y-1181100D1*
X2432050Y-1263650D2*
X2432050Y-1260602D1*
X2454783Y-1174750D2*
X2454783Y-1181100D1*
X2482850Y-1260602D2*
X2454783Y-1181100D1*
X2482850Y-1263650D2*
X2482850Y-1260602D1*
X2305050Y-1339850D2*
X2305050Y-1342898D1*
X2337614Y-1369546D2*
X2305050Y-1342898D1*
G75*
G01X2337614Y-1369546D2*
G03X2340610Y-1370616I2996J3661D1*
G74*
X2342134Y-1370616D2*
X2340610Y-1370616D1*
X2343150Y-1371600D2*
X2342134Y-1370616D1*
X2368550Y-1367409D2*
X2368550Y-1365885D1*
X2368550Y-1371600D2*
X2368550Y-1367409D1*
G75*
G01X2368550Y-1365885D2*
G03X2368226Y-1364644I-2540J0D1*
G74*
X2365195Y-1359230D2*
X2368226Y-1364644D1*
X2365195Y-1359230D2*
X2365132Y-1359120D1*
X2355850Y-1342898D2*
X2365132Y-1359120D1*
X2355850Y-1339850D2*
X2355850Y-1342898D1*
X2393950Y-1367409D2*
X2393950Y-1365885D1*
X2393950Y-1371600D2*
X2393950Y-1367409D1*
G75*
G01X2394274Y-1364644D2*
G03X2393950Y-1365885I2216J-1241D1*
G74*
X2397305Y-1359230D2*
X2394274Y-1364644D1*
X2397368Y-1359120D2*
X2397305Y-1359230D1*
X2406650Y-1342898D2*
X2397368Y-1359120D1*
X2406650Y-1339850D2*
X2406650Y-1342898D1*
X2419350Y-1367409D2*
X2419350Y-1365885D1*
X2419350Y-1371600D2*
X2419350Y-1367409D1*
G75*
G01X2420712Y-1363635D2*
G03X2419350Y-1365885I1178J-2250D1*
G74*
X2438132Y-1354515D2*
X2420712Y-1363635D1*
G75*
G01X2438132Y-1354515D2*
G03X2438820Y-1354128I-6082J11617D1*
G74*
X2457450Y-1342898D2*
X2438820Y-1354128D1*
X2457450Y-1339850D2*
X2457450Y-1342898D1*
X1936750Y-1367409D2*
X1936750Y-1365885D1*
X1936750Y-1371600D2*
X1936750Y-1367409D1*
G75*
G01X1937074Y-1364644D2*
G03X1936750Y-1365885I2216J-1241D1*
G74*
X1940105Y-1359230D2*
X1937074Y-1364644D1*
G75*
G01X1944504Y-1354505D2*
G03X1940105Y-1359230I7486J-11380D1*
G74*
X1962150Y-1342898D2*
X1944504Y-1354505D1*
X1962150Y-1339850D2*
X1962150Y-1342898D1*
X1911350Y-1367409D2*
X1911350Y-1365885D1*
X1911350Y-1371600D2*
X1911350Y-1367409D1*
X1911350Y-1342898D2*
X1911350Y-1365885D1*
X1911350Y-1339850D2*
X1911350Y-1342898D1*
X1885950Y-1367409D2*
X1885950Y-1365885D1*
X1885950Y-1371600D2*
X1885950Y-1367409D1*
G75*
G01X1885950Y-1365885D2*
G03X1885065Y-1363958I-2540J0D1*
G74*
X1860550Y-1342898D2*
X1885065Y-1363958D1*
X1860550Y-1339850D2*
X1860550Y-1342898D1*
X1885950Y-1430909D2*
X1885950Y-1429385D1*
X1885950Y-1435100D2*
X1885950Y-1430909D1*
G75*
G01X1885950Y-1429385D2*
G03X1885387Y-1427791I-2540J0D1*
G74*
X1821307Y-1348311D2*
X1885387Y-1427791D1*
G75*
G01X1821307Y-1348311D2*
G03X1817624Y-1346549I-3683J-2969D1*
G74*
X1816100Y-1346549D2*
X1817624Y-1346549D1*
X1809750Y-1339850D2*
X1816100Y-1346549D1*
X2045132Y-1174750D2*
X2045132Y-1181100D1*
X1987550Y-1260602D2*
X2045132Y-1181100D1*
X1987550Y-1263650D2*
X1987550Y-1260602D1*
X1975129Y-1174750D2*
X1975129Y-1181100D1*
X1936750Y-1260602D2*
X1975129Y-1181100D1*
X1936750Y-1263650D2*
X1936750Y-1260602D1*
X1905152Y-1174750D2*
X1905152Y-1181100D1*
X1885950Y-1260602D2*
X1905152Y-1181100D1*
X1885950Y-1263650D2*
X1885950Y-1260602D1*
X1835150Y-1174750D2*
X1835150Y-1181100D1*
X1835150Y-1260602D2*
X1835150Y-1181100D1*
X1835150Y-1263650D2*
X1835150Y-1260602D1*
X1800149Y-1174750D2*
X1800149Y-1181100D1*
X1809750Y-1260602D2*
X1800149Y-1181100D1*
X1809750Y-1263650D2*
X1809750Y-1260602D1*
X1870151Y-1174750D2*
X1870151Y-1181100D1*
X1860550Y-1260602D2*
X1870151Y-1181100D1*
X1860550Y-1263650D2*
X1860550Y-1260602D1*
X1940154Y-1174750D2*
X1940154Y-1181100D1*
X1911350Y-1260602D2*
X1940154Y-1181100D1*
X1911350Y-1263650D2*
X1911350Y-1260602D1*
X2010131Y-1174750D2*
X2010131Y-1181100D1*
X1962150Y-1260602D2*
X2010131Y-1181100D1*
X1962150Y-1263650D2*
X1962150Y-1260602D1*
X2080133Y-1174750D2*
X2080133Y-1181100D1*
X2012950Y-1260602D2*
X2080133Y-1181100D1*
X2012950Y-1263650D2*
X2012950Y-1260602D1*
X1835150Y-1339850D2*
X1835150Y-1342898D1*
X1867714Y-1369546D2*
X1835150Y-1342898D1*
G75*
G01X1867714Y-1369546D2*
G03X1870710Y-1370616I2996J3661D1*
G74*
X1872234Y-1370616D2*
X1870710Y-1370616D1*
X1873250Y-1371600D2*
X1872234Y-1370616D1*
X1898650Y-1367409D2*
X1898650Y-1365885D1*
X1898650Y-1371600D2*
X1898650Y-1367409D1*
G75*
G01X1898650Y-1365885D2*
G03X1898326Y-1364644I-2540J0D1*
G74*
X1895295Y-1359230D2*
X1898326Y-1364644D1*
X1895295Y-1359230D2*
X1895232Y-1359120D1*
X1885950Y-1342898D2*
X1895232Y-1359120D1*
X1885950Y-1339850D2*
X1885950Y-1342898D1*
X1924050Y-1367409D2*
X1924050Y-1365885D1*
X1924050Y-1371600D2*
X1924050Y-1367409D1*
G75*
G01X1924374Y-1364644D2*
G03X1924050Y-1365885I2216J-1241D1*
G74*
X1927405Y-1359230D2*
X1924374Y-1364644D1*
X1927468Y-1359120D2*
X1927405Y-1359230D1*
X1936750Y-1342898D2*
X1927468Y-1359120D1*
X1936750Y-1339850D2*
X1936750Y-1342898D1*
X1949450Y-1367409D2*
X1949450Y-1365885D1*
X1949450Y-1371600D2*
X1949450Y-1367409D1*
G75*
G01X1950812Y-1363635D2*
G03X1949450Y-1365885I1178J-2250D1*
G74*
X1968232Y-1354515D2*
X1950812Y-1363635D1*
G75*
G01X1968232Y-1354515D2*
G03X1968920Y-1354128I-6082J11617D1*
G74*
X1987550Y-1342898D2*
X1968920Y-1354128D1*
X1987550Y-1339850D2*
X1987550Y-1342898D1*
X1963166Y-1434116D2*
X1964690Y-1434116D1*
X1962150Y-1435100D2*
X1963166Y-1434116D1*
X1983740Y-1434116D2*
X1964690Y-1434116D1*
X1985264Y-1434116D2*
X1983740Y-1434116D1*
X1991360Y-1430020D2*
X1985264Y-1434116D1*
X2368550Y-1430909D2*
X2368550Y-1429385D1*
X2368550Y-1435100D2*
X2368550Y-1430909D1*
G75*
G01X2368550Y-1429385D2*
G03X2365950Y-1417614I-27940J0D1*
G74*
X2355802Y-1395769D2*
X2365950Y-1417614D1*
G75*
G01X2355802Y-1395769D2*
G03X2339520Y-1380452I-27257J-12661D1*
G74*
X2339398Y-1380404D2*
X2339520Y-1380452D1*
G75*
G01X2338811Y-1380103D2*
G03X2339398Y-1380404I1799J2788D1*
G74*
X2298026Y-1353782D2*
X2338811Y-1380103D1*
G75*
G01X2292096Y-1342898D2*
G03X2298026Y-1353782I12954J0D1*
G74*
X2292096Y-1336802D2*
X2292096Y-1342898D1*
G75*
G01X2292112Y-1336162D2*
G03X2292096Y-1336802I12938J-640D1*
G74*
X2292249Y-1333385D2*
X2292112Y-1336162D1*
G75*
G01X2292249Y-1333385D2*
G03X2292255Y-1333151I-4725J234D1*
G74*
X2292255Y-1328420D2*
X2292255Y-1333151D1*
G75*
G01X2292255Y-1328420D2*
G03X2288391Y-1323769I-4731J0D1*
G74*
X2241506Y-1315030D2*
X2288391Y-1323769D1*
G75*
G01X2241506Y-1315030D2*
G03X2239010Y-1314799I-2496J-13390D1*
G74*
X2218690Y-1314799D2*
X2239010Y-1314799D1*
G75*
G01X2218690Y-1314799D2*
G03X2211879Y-1316624I0J-13621D1*
G74*
X2198544Y-1324323D2*
X2211879Y-1316624D1*
G75*
G01X2198544Y-1324323D2*
G03X2196179Y-1328420I2366J-4097D1*
G74*
X2196179Y-1329944D2*
X2196179Y-1328420D1*
X2190750Y-1336040D2*
X2196179Y-1329944D1*
X1936750Y-1439291D2*
X1936750Y-1440815D1*
X1936750Y-1435100D2*
X1936750Y-1439291D1*
G75*
G01X1936750Y-1440815D2*
G03X1938560Y-1443248I2540J0D1*
G74*
X1945550Y-1445346D2*
X1938560Y-1443248D1*
G75*
G01X1945550Y-1445346D2*
G03X1946728Y-1445543I1360J4531D1*
G74*
X2161137Y-1453783D2*
X1946728Y-1445543D1*
G75*
G01X2161137Y-1453783D2*
G03X2162099Y-1453801I962J25033D1*
G74*
X2261870Y-1453801D2*
X2162099Y-1453801D1*
X2263394Y-1453801D2*
X2261870Y-1453801D1*
X2272030Y-1451610D2*
X2263394Y-1453801D1*
X2406650Y-1439291D2*
X2406650Y-1440815D1*
X2406650Y-1435100D2*
X2406650Y-1439291D1*
G75*
G01X2391400Y-1465707D2*
G03X2406650Y-1440815I-12690J24892D1*
G74*
X2385352Y-1468790D2*
X2391400Y-1465707D1*
G75*
G01X2371090Y-1472216D2*
G03X2385352Y-1468790I0J31401D1*
G74*
X2366010Y-1472216D2*
X2371090Y-1472216D1*
G75*
G01X2359209Y-1471471D2*
G03X2366010Y-1472216I6801J30656D1*
G74*
X2283215Y-1454611D2*
X2359209Y-1471471D1*
G75*
G01X2283215Y-1454611D2*
G03X2282190Y-1454499I-1025J-4619D1*
G74*
X2280666Y-1454499D2*
X2282190Y-1454499D1*
X2272030Y-1451610D2*
X2280666Y-1454499D1*
X2197100Y-1422400D2*
X2197100Y-1416050D1*
X2196180Y-1376791D2*
X2197100Y-1416050D1*
G75*
G01X2196179Y-1376680D2*
G03X2196180Y-1376791I4731J0D1*
G74*
X2196179Y-1375156D2*
X2196179Y-1376680D1*
X2190750Y-1369060D2*
X2196179Y-1375156D1*
X2127098Y-1422400D2*
X2127098Y-1428750D1*
X2154637Y-1443085D2*
X2127098Y-1428750D1*
G75*
G01X2154637Y-1443085D2*
G03X2162099Y-1444911I7462J14335D1*
G74*
X2232101Y-1444911D2*
X2162099Y-1444911D1*
G75*
G01X2232101Y-1444911D2*
G03X2244343Y-1439300I0J16161D1*
G74*
X2258286Y-1423121D2*
X2244343Y-1439300D1*
G75*
G01X2261870Y-1421479D2*
G03X2258286Y-1423121I0J-4731D1*
G74*
X2263394Y-1421479D2*
X2261870Y-1421479D1*
X2272030Y-1418590D2*
X2263394Y-1421479D1*
X2115134Y-1174750D2*
X2115134Y-1181100D1*
X2012950Y-1336802D2*
X2115134Y-1181100D1*
X2012950Y-1339850D2*
X2012950Y-1336802D1*
X2012950Y-1342898D2*
X1982470Y-1376426D1*
X2012950Y-1339850D2*
X2012950Y-1342898D1*
X2489784Y-1174750D2*
X2489784Y-1181100D1*
X2495923Y-1259579D2*
X2489784Y-1181100D1*
G75*
G01X2495963Y-1260602D2*
G03X2495923Y-1259579I-13113J0D1*
G74*
X2495963Y-1266698D2*
X2495963Y-1260602D1*
G75*
G01X2495732Y-1269151D2*
G03X2495963Y-1266698I-12882J2453D1*
G74*
X2482850Y-1336802D2*
X2495732Y-1269151D1*
X2482850Y-1339850D2*
X2482850Y-1336802D1*
X1911350Y-1430909D2*
X1911350Y-1429385D1*
X1911350Y-1435100D2*
X1911350Y-1430909D1*
G75*
G01X1911394Y-1428916D2*
G03X1911350Y-1429385I2496J-469D1*
G74*
X1912086Y-1425231D2*
X1911394Y-1428916D1*
G75*
G01X1920235Y-1411738D2*
G03X1912086Y-1425231I13975J-17647D1*
G74*
X1961187Y-1379306D2*
X1920235Y-1411738D1*
G75*
G01X1961187Y-1379306D2*
G03X1962150Y-1377315I-1577J1991D1*
G74*
X1962150Y-1375791D2*
X1962150Y-1377315D1*
X1962150Y-1371600D2*
X1962150Y-1375791D1*
X1965718Y-1372697D2*
X1982470Y-1376426D1*
G75*
G01X1965718Y-1372697D2*
G03X1964690Y-1372584I-1028J-4618D1*
G74*
X1963166Y-1372584D2*
X1964690Y-1372584D1*
X1962150Y-1371600D2*
X1963166Y-1372584D1*
X2381250Y-1430909D2*
X2381250Y-1429385D1*
X2381250Y-1435100D2*
X2381250Y-1430909D1*
G75*
G01X2382009Y-1427574D2*
G03X2381250Y-1429385I1781J-1811D1*
G74*
X2431291Y-1379126D2*
X2382009Y-1427574D1*
G75*
G01X2431291Y-1379126D2*
G03X2432050Y-1377315I-1781J1811D1*
G74*
X2432050Y-1375791D2*
X2432050Y-1377315D1*
X2432050Y-1371600D2*
X2432050Y-1375791D1*
X2482850Y-1339850D2*
X2482850Y-1342898D1*
X2464220Y-1354128D2*
X2482850Y-1342898D1*
G75*
G01X2464041Y-1354234D2*
G03X2464220Y-1354128I-6591J11336D1*
G74*
X2436968Y-1369975D2*
X2464041Y-1354234D1*
G75*
G01X2434590Y-1370616D2*
G03X2436968Y-1369975I0J4731D1*
G74*
X2433066Y-1370616D2*
X2434590Y-1370616D1*
X2432050Y-1371600D2*
X2433066Y-1370616D1*
X2115134Y-1174750D2*
X2115134Y-1168400D1*
X2170422Y-1152843D2*
X2115134Y-1168400D1*
G75*
G01X2174799Y-1152239D2*
G03X2170422Y-1152843I0J-16161D1*
G74*
X2454783Y-1152239D2*
X2174799Y-1152239D1*
G75*
G01X2462245Y-1154065D2*
G03X2454783Y-1152239I-7462J-14335D1*
G74*
X2489784Y-1168400D2*
X2462245Y-1154065D1*
X2489784Y-1174750D2*
X2489784Y-1168400D1*
X2092096Y-1422400D2*
X2092096Y-1416050D1*
X2096392Y-1377200D2*
X2092096Y-1416050D1*
G75*
G01X2096392Y-1377200D2*
G03X2096421Y-1376680I-4702J520D1*
G74*
X2096421Y-1375156D2*
X2096421Y-1376680D1*
X2101850Y-1369060D2*
X2096421Y-1375156D1*
X2381250Y-1439291D2*
X2381250Y-1440815D1*
X2381250Y-1435100D2*
X2381250Y-1439291D1*
G75*
G01X2379440Y-1443248D2*
G03X2381250Y-1440815I-730J2433D1*
G74*
X2372450Y-1445346D2*
X2379440Y-1443248D1*
G75*
G01X2371090Y-1445546D2*
G03X2372450Y-1445346I0J4731D1*
G74*
X2368550Y-1445546D2*
X2371090Y-1445546D1*
G75*
G01X2366835Y-1445224D2*
G03X2368550Y-1445546I1715J4409D1*
G74*
X2364628Y-1444366D2*
X2366835Y-1445224D1*
G75*
G01X2362200Y-1440815D2*
G03X2364628Y-1444366I3810J0D1*
G74*
X2362200Y-1429385D2*
X2362200Y-1440815D1*
G75*
G01X2362200Y-1429385D2*
G03X2360110Y-1420710I-19050J0D1*
G74*
X2348587Y-1398179D2*
X2360110Y-1420710D1*
G75*
G01X2348587Y-1398179D2*
G03X2342670Y-1390902I-20042J-10251D1*
G74*
X2340499Y-1389152D2*
X2342670Y-1390902D1*
G75*
G01X2340499Y-1389152D2*
G03X2328545Y-1384935I-11954J-14833D1*
G74*
X2327021Y-1384935D2*
X2328545Y-1384935D1*
X2321560Y-1384935D2*
X2327021Y-1384935D1*
X1983771Y-1380228D2*
X1982470Y-1376426D1*
G75*
G01X1984026Y-1381760D2*
G03X1983771Y-1380228I-4731J0D1*
G74*
X1984026Y-1383284D2*
X1984026Y-1381760D1*
X1986280Y-1386205D2*
X1984026Y-1383284D1*
G54D19*
X2279650Y-1260602D2*
X2279650Y-1266698D1*
X2305050Y-1260602D2*
X2305050Y-1266698D1*
X2330450Y-1260602D2*
X2330450Y-1266698D1*
X2355850Y-1260602D2*
X2355850Y-1266698D1*
X2381250Y-1260602D2*
X2381250Y-1266698D1*
X2406650Y-1260602D2*
X2406650Y-1266698D1*
X2432050Y-1260602D2*
X2432050Y-1266698D1*
X2457450Y-1260602D2*
X2457450Y-1266698D1*
X2482850Y-1260602D2*
X2482850Y-1266698D1*
X2482850Y-1336802D2*
X2482850Y-1342898D1*
X2457450Y-1336802D2*
X2457450Y-1342898D1*
X2432050Y-1336802D2*
X2432050Y-1342898D1*
X2406650Y-1336802D2*
X2406650Y-1342898D1*
X2381250Y-1336802D2*
X2381250Y-1342898D1*
X2355850Y-1336802D2*
X2355850Y-1342898D1*
X2330450Y-1336802D2*
X2330450Y-1342898D1*
X2305050Y-1336802D2*
X2305050Y-1342898D1*
X1809750Y-1260602D2*
X1809750Y-1266698D1*
X1835150Y-1260602D2*
X1835150Y-1266698D1*
X1860550Y-1260602D2*
X1860550Y-1266698D1*
X1885950Y-1260602D2*
X1885950Y-1266698D1*
X1911350Y-1260602D2*
X1911350Y-1266698D1*
X1936750Y-1260602D2*
X1936750Y-1266698D1*
X1962150Y-1260602D2*
X1962150Y-1266698D1*
X1987550Y-1260602D2*
X1987550Y-1266698D1*
X2012950Y-1260602D2*
X2012950Y-1266698D1*
X2012950Y-1336802D2*
X2012950Y-1342898D1*
X1987550Y-1336802D2*
X1987550Y-1342898D1*
X1962150Y-1336802D2*
X1962150Y-1342898D1*
X1936750Y-1336802D2*
X1936750Y-1342898D1*
X1911350Y-1336802D2*
X1911350Y-1342898D1*
X1885950Y-1336802D2*
X1885950Y-1342898D1*
X1860550Y-1336802D2*
X1860550Y-1342898D1*
X1835150Y-1336802D2*
X1835150Y-1342898D1*
G54D22*
X2162099Y-1428750D2*
X2162099Y-1416050D1*
X2197100Y-1428750D2*
X2197100Y-1416050D1*
X2232101Y-1428750D2*
X2232101Y-1416050D1*
X2127098Y-1428750D2*
X2127098Y-1416050D1*
X2057095Y-1428750D2*
X2057095Y-1416050D1*
X2092096Y-1428750D2*
X2092096Y-1416050D1*
X2244801Y-1168400D2*
X2244801Y-1181100D1*
X2209800Y-1168400D2*
X2209800Y-1181100D1*
X2174799Y-1168400D2*
X2174799Y-1181100D1*
X2279802Y-1168400D2*
X2279802Y-1181100D1*
X2314804Y-1168400D2*
X2314804Y-1181100D1*
X2489784Y-1168400D2*
X2489784Y-1181100D1*
X2454783Y-1168400D2*
X2454783Y-1181100D1*
X2349779Y-1168400D2*
X2349779Y-1181100D1*
X2384781Y-1168400D2*
X2384781Y-1181100D1*
X2419782Y-1168400D2*
X2419782Y-1181100D1*
X1870151Y-1168400D2*
X1870151Y-1181100D1*
X1835150Y-1168400D2*
X1835150Y-1181100D1*
X1800149Y-1168400D2*
X1800149Y-1181100D1*
X1905152Y-1168400D2*
X1905152Y-1181100D1*
X1940154Y-1168400D2*
X1940154Y-1181100D1*
X2115134Y-1168400D2*
X2115134Y-1181100D1*
X2080133Y-1168400D2*
X2080133Y-1181100D1*
X1975129Y-1168400D2*
X1975129Y-1181100D1*
X2010131Y-1168400D2*
X2010131Y-1181100D1*
X2045132Y-1168400D2*
X2045132Y-1181100D1*
M02*
......@@ -57,9 +57,9 @@ BEGIN_EVENT_TABLE( WinEDA_GerberFrame, WinEDA_BasePcbFrame )
ID_CONFIG_AND_PREFERENCES_END,
WinEDA_GerberFrame::Process_Config )
EVT_MENU( ID_COLORS_SETUP, WinEDA_GerberFrame::Process_Config )
EVT_MENU( ID_MENU_GERBVIEW_SHOW_HIDE_LAYERS_MANAGER_DIALOG, WinEDA_GerberFrame::OnSelectOptionToolbar )
EVT_MENU( ID_OPTIONS_SETUP, WinEDA_GerberFrame::InstallGerberGeneralOptionsFrame )
EVT_MENU( ID_PCB_DISPLAY_OPTIONS_SETUP, WinEDA_GerberFrame::InstallGerberDisplayOptionsDialog )
EVT_MENU( ID_GERBVIEW_DISPLAY_OPTIONS_SETUP, WinEDA_GerberFrame::InstallGerberDisplayOptionsDialog )
EVT_MENU_RANGE( ID_LANGUAGE_CHOICE, ID_LANGUAGE_CHOICE_END,
WinEDA_DrawFrame::SetLanguage )
......@@ -74,7 +74,7 @@ BEGIN_EVENT_TABLE( WinEDA_GerberFrame, WinEDA_BasePcbFrame )
// menu Miscellaneous
EVT_MENU( ID_PCB_GLOBAL_DELETE,
EVT_MENU( ID_GERBVIEW_GLOBAL_DELETE,
WinEDA_GerberFrame::Process_Special_Functions )
// Menu Help
......@@ -88,7 +88,7 @@ BEGIN_EVENT_TABLE( WinEDA_GerberFrame, WinEDA_BasePcbFrame )
EVT_TOOL( wxID_UNDO, WinEDA_GerberFrame::Process_Special_Functions )
EVT_TOOL( ID_GEN_PRINT, WinEDA_GerberFrame::ToPrinter )
EVT_TOOL( ID_FIND_ITEMS, WinEDA_GerberFrame::Process_Special_Functions )
EVT_KICAD_CHOICEBOX( ID_TOOLBARH_PCB_SELECT_LAYER,
EVT_KICAD_CHOICEBOX( ID_TOOLBARH_GERBVIEW_SELECT_LAYER,
WinEDA_GerberFrame::Process_Special_Functions )
EVT_KICAD_CHOICEBOX( ID_TOOLBARH_GERBER_SELECT_TOOL,
......@@ -96,7 +96,7 @@ BEGIN_EVENT_TABLE( WinEDA_GerberFrame, WinEDA_BasePcbFrame )
// Vertical toolbar:
EVT_TOOL( ID_NO_SELECT_BUTT, WinEDA_GerberFrame::Process_Special_Functions )
EVT_TOOL( ID_PCB_DELETE_ITEM_BUTT,
EVT_TOOL( ID_GERBVIEW_DELETE_ITEM_BUTT,
WinEDA_GerberFrame::Process_Special_Functions )
EVT_MENU_RANGE( ID_POPUP_GENERAL_START_RANGE, ID_POPUP_GENERAL_END_RANGE,
......@@ -109,6 +109,8 @@ BEGIN_EVENT_TABLE( WinEDA_GerberFrame, WinEDA_BasePcbFrame )
// Option toolbar
EVT_TOOL_RANGE( ID_TB_OPTIONS_START, ID_TB_OPTIONS_END,
WinEDA_GerberFrame::OnSelectOptionToolbar )
EVT_TOOL( ID_TB_OPTIONS_SHOW_LAYERS_MANAGER_VERTICAL_TOOLBAR,
WinEDA_GerberFrame::OnSelectOptionToolbar )
END_EVENT_TABLE()
......@@ -120,6 +122,7 @@ WinEDA_GerberFrame::WinEDA_GerberFrame( wxWindow* father,
WinEDA_BasePcbFrame( father, GERBER_FRAME, title, pos, size, style )
{
m_FrameName = wxT( "GerberFrame" );
m_show_layer_manager_tools = true;
m_Draw_Axis = true; // true to show X and Y axis on screen
m_Draw_Sheet_Ref = FALSE; // TRUE for reference drawings.
......@@ -136,8 +139,20 @@ WinEDA_GerberFrame::WinEDA_GerberFrame( wxWindow* father,
SetBaseScreen( ScreenPcb );
ActiveScreen = ScreenPcb;
LoadSettings();
SetBoard( new BOARD( NULL, this ) );
GetBoard()->SetEnabledLayers( FULL_LAYERS ); // All 32 layers enabled at first.
// Create the PCB_LAYER_WIDGET *after* SetBoard():
wxFont font = wxSystemSettings::GetFont( wxSYS_DEFAULT_GUI_FONT );
int pointSize = font.GetPointSize();
int screenHeight = wxSystemSettings::GetMetric( wxSYS_SCREEN_Y );
if( screenHeight <= 900 )
pointSize = (pointSize * 8) / 10;
m_LayersManager = new GERBER_LAYER_WIDGET( this, DrawPanel, pointSize );
// LoadSettings() *after* creating m_LayersManager, because LoadSettings()
// initialize parameters in m_LayersManager
LoadSettings();
SetSize( m_FramePos.x, m_FramePos.y, m_FrameSize.x, m_FrameSize.y );
GetScreen()->SetGrid( ID_POPUP_GRID_LEVEL_1000 + m_LastGridSizeId );
......@@ -146,7 +161,6 @@ WinEDA_GerberFrame::WinEDA_GerberFrame( wxWindow* father,
ReCreateVToolbar();
ReCreateOptToolbar();
#if defined(KICAD_AUIMANAGER)
m_auimgr.SetManagedWindow( this );
wxAuiPaneInfo horiz;
......@@ -162,13 +176,23 @@ WinEDA_GerberFrame::WinEDA_GerberFrame( wxWindow* father,
vert.TopDockable( false ).BottomDockable( false );
horiz.LeftDockable( false ).RightDockable( false );
// LAYER_WIDGET is floatable, but initially docked at far right
wxAuiPaneInfo lyrs;
lyrs.MinSize( m_LayersManager->GetBestSize() ); // updated in ReFillLayerWidget
lyrs.BestSize( m_LayersManager->GetBestSize() );
lyrs.CloseButton( false );
lyrs.Caption( _( "Visibles" ) );
lyrs.IsFloatable();
if( m_HToolBar )
m_auimgr.AddPane( m_HToolBar,
wxAuiPaneInfo( horiz ).Name( wxT( "m_HToolBar" ) ).Top().Row( 0 ) );
if( m_VToolBar )
m_auimgr.AddPane( m_VToolBar,
wxAuiPaneInfo( vert ).Name( wxT( "m_VToolBar" ) ).Right() );
wxAuiPaneInfo( vert ).Name( wxT( "m_VToolBar" ) ).Right().Row( 1 ) );
m_auimgr.AddPane( m_LayersManager, lyrs.Name( wxT( "m_LayersManagerToolBar" ) ).Right().Row( 0 ) );
if( m_OptionsToolBar )
m_auimgr.AddPane( m_OptionsToolBar,
......@@ -183,7 +207,8 @@ WinEDA_GerberFrame::WinEDA_GerberFrame( wxWindow* father,
wxAuiPaneInfo( horiz ).Name( wxT( "MsgPanel" ) ).Bottom() );
m_auimgr.Update();
#endif
ReFillLayerWidget(); // this is near end because contents establish size
}
......@@ -197,34 +222,6 @@ WinEDA_GerberFrame::~WinEDA_GerberFrame()
void WinEDA_GerberFrame::OnCloseWindow( wxCloseEvent& Event )
{
PCB_SCREEN* screen = ScreenPcb;
#if 0 // unused currently
while( screen )
{
if( screen->IsModify() )
break;
screen = screen->Next();
}
if( screen )
{
if( !IsOK( this, _( "Layer modified, Continue ?" ) ) )
{
Event.Veto();
return;
}
}
#endif
while( screen ) // Modify delete flag to prevent further message.
{
screen->ClrModify();
screen = screen->Next();
}
SetBaseScreen( ActiveScreen = ScreenPcb );
SaveSettings();
Destroy();
}
......@@ -307,15 +304,23 @@ void WinEDA_GerberFrame::SetToolbars()
g_DisplayPolygonsModeSketch == 0 ? 0 : 1 );
m_OptionsToolBar->ToggleTool( ID_TB_OPTIONS_SHOW_DCODES,
DisplayOpt.DisplayPadNum );
}
IsElementVisible( DCODES_VISIBLE) );
m_OptionsToolBar->ToggleTool( ID_TB_OPTIONS_SHOW_LAYERS_MANAGER_VERTICAL_TOOLBAR,
m_show_layer_manager_tools );
if( m_show_layer_manager_tools )
GetMenuBar()->SetLabel(ID_MENU_GERBVIEW_SHOW_HIDE_LAYERS_MANAGER_DIALOG,
_("Hide &Layers Manager" ) );
else
GetMenuBar()->SetLabel(ID_MENU_GERBVIEW_SHOW_HIDE_LAYERS_MANAGER_DIALOG,
_("Show &Layers Manager" ) );
}
DisplayUnitsMsg();
#if defined(KICAD_AUIMANAGER)
if( m_auimgr.GetManagedWindow() )
m_auimgr.Update();
#endif
}
......@@ -356,6 +361,10 @@ void WinEDA_GerberFrame::LoadSettings()
{
m_Draw_Sheet_Ref = true;
}
long tmp;
config->Read( GerbviewShowDCodes, &tmp, 1);
SetElementVisibility( DCODES_VISIBLE, tmp);
}
/**************************************/
......@@ -384,4 +393,71 @@ void WinEDA_GerberFrame::SaveSettings()
}
}
config->Write( GerbviewShowPageSizeOption, pageSize_opt );
config->Write( GerbviewShowDCodes, IsElementVisible( DCODES_VISIBLE) );
}
void WinEDA_GerberFrame::ReFillLayerWidget()
{
m_LayersManager->ReFill();
wxAuiPaneInfo& lyrs = m_auimgr.GetPane( m_LayersManager );
wxSize bestz = m_LayersManager->GetBestSize();
lyrs.MinSize( bestz );
lyrs.BestSize( bestz );
lyrs.FloatingSize( bestz );
if( lyrs.IsDocked() )
m_auimgr.Update();
else
m_LayersManager->SetSize( bestz );
}
/** Function IsGridVisible() , virtual
* @return true if the grid must be shown
*/
bool WinEDA_GerberFrame::IsGridVisible()
{
return IsElementVisible(GERBER_GRID_VISIBLE);
}
/** Function SetGridVisibility() , virtual
* It may be overloaded by derived classes
* if you want to store/retrieve the grid visiblity in configuration.
* @param aVisible = true if the grid must be shown
*/
void WinEDA_GerberFrame::SetGridVisibility(bool aVisible)
{
SetElementVisibility(GERBER_GRID_VISIBLE, aVisible);
}
/** Function GetGridColor() , virtual
* @return the color of the grid
*/
int WinEDA_GerberFrame::GetGridColor()
{
return GetBoard()->GetVisibleElementColor( GERBER_GRID_VISIBLE );
}
/** Function SetGridColor() , virtual
* @param aColor = the new color of the grid
*/
void WinEDA_GerberFrame::SetGridColor(int aColor)
{
GetBoard()->SetVisibleElementColor( GERBER_GRID_VISIBLE, aColor );
}
/**
* Function SetElementVisibility
* changes the visibility of an element category
* @param aGERBER_VISIBLE is from the enum by the same name
* @param aNewState = The new visibility state of the element category
* @see enum aGERBER_VISIBLE
*/
void WinEDA_GerberFrame::SetElementVisibility( int aGERBER_VISIBLE, bool aNewState )
{
GetBoard()->SetElementVisibility( aGERBER_VISIBLE, aNewState );
m_LayersManager->SetRenderState( aGERBER_VISIBLE, aNewState );
}
......@@ -41,6 +41,7 @@ const wxString GerbviewProjectFileWildcard( _( "GerbView project files (.cnf)|*.
// Config keywords
const wxString GerbviewShowPageSizeOption( wxT( "ShowPageSizeOpt" ) );
extern const wxString GerbviewShowDCodes( wxT( "ShowDCodesOpt" ) );
GERBER* g_GERBER_List[32];
......@@ -105,9 +106,6 @@ bool WinEDA_App::OnInit()
/* Gerbview mainframe title */
frame->SetTitle( GetTitle() + wxT( " " ) + GetBuildVersion() );
frame->SetBoard( new BOARD( NULL, frame ) );
frame->GetBoard()->SetEnabledLayers( FULL_LAYERS ); // All 32 layers enabled at first.
// Initialize some display options
DisplayOpt.DisplayPadIsol = false; // Pad clearance has no meaning
......
......@@ -29,11 +29,11 @@ typedef enum
* Enum ITEM_VISIBLE
* is a set of visible PCB elements.
*/
enum ITEM_VISIBLE
enum GERBER_VISIBLE
{
DCODES_VISIBLE,
END_ITEM_VISIBLE_LIST // sentinel
DCODES_VISIBLE = 1, // visible item id cannot be 0 because this id is used as wxWidget id
GERBER_GRID_VISIBLE,
END_GERBER_VISIBLE_LIST // sentinel
};
extern wxString g_PhotoFilenameExt;
......@@ -52,6 +52,7 @@ extern Ki_PageDescr* g_GerberPageSizeList[];
// Config keywords
extern const wxString GerbviewShowPageSizeOption;
extern const wxString GerbviewShowDCodes;
/**
* Enum APERTURE_T
......
......@@ -33,10 +33,6 @@ void WinEDA_GerberFrame::Process_Config( wxCommandEvent& event )
switch( id )
{
case ID_COLORS_SETUP:
DisplayColorSetupFrame( this, pos );
break;
case ID_CONFIG_REQ:
{
InstallConfigFrame( pos );
......
......@@ -73,14 +73,6 @@ static PARAM_CFG_INT ViaFillCfg
TRUE
);
static PARAM_CFG_BOOL PadShowNumCfg // Show DCodes
(
INSETUP,
wxT("PadSNum"),
&DisplayOpt.DisplayPadNum,
TRUE
);
static PARAM_CFG_SETCOLOR ColorLayer0Cfg
(
INSETUP,
......@@ -379,7 +371,6 @@ PARAM_CFG_BASE * ParamCfgList[] =
& SegmFillCfg,
& PadFillCfg,
& ViaFillCfg, //TODO: Will adding this line break tha pcbnew file compatibility?
& PadShowNumCfg,
& ColorLayer0Cfg,
& ColorLayer1Cfg,
& ColorLayer2Cfg,
......
......@@ -19,11 +19,11 @@
class DIALOG_DISPLAY_OPTIONS : public DIALOG_DISPLAY_OPTIONS_BASE
{
private:
WinEDA_BasePcbFrame* m_Parent;
WinEDA_GerberFrame* m_Parent;
public:
DIALOG_DISPLAY_OPTIONS( WinEDA_BasePcbFrame* parent );
DIALOG_DISPLAY_OPTIONS( WinEDA_GerberFrame* parent );
~DIALOG_DISPLAY_OPTIONS() {};
private:
......@@ -40,7 +40,7 @@ void WinEDA_GerberFrame::InstallGerberDisplayOptionsDialog( wxCommandEvent& even
DrawPanel->Refresh();
}
DIALOG_DISPLAY_OPTIONS::DIALOG_DISPLAY_OPTIONS( WinEDA_BasePcbFrame *parent) :
DIALOG_DISPLAY_OPTIONS::DIALOG_DISPLAY_OPTIONS( WinEDA_GerberFrame *parent) :
DIALOG_DISPLAY_OPTIONS_BASE( parent, wxID_ANY )
{
m_Parent = parent;
......@@ -76,7 +76,7 @@ DIALOG_DISPLAY_OPTIONS::DIALOG_DISPLAY_OPTIONS( WinEDA_BasePcbFrame *parent) :
}
}
m_OptDisplayDCodes->SetValue( DisplayOpt.DisplayPadNum );
m_OptDisplayDCodes->SetValue( m_Parent->IsElementVisible( DCODES_VISIBLE ) );
GetSizer()->Fit( this );
GetSizer()->SetSizeHints( this );
......@@ -113,7 +113,7 @@ void DIALOG_DISPLAY_OPTIONS::OnOKBUttonClick( wxCommandEvent& event )
else
g_DisplayPolygonsModeSketch = 0;
DisplayOpt.DisplayPadNum = m_OptDisplayDCodes->GetValue();
m_Parent->SetElementVisibility( DCODES_VISIBLE, m_OptDisplayDCodes->GetValue() );
m_Parent->m_DisplayPadFill = m_Parent->m_DisplayViaFill =
DisplayOpt.DisplayViaFill;
......
......@@ -15,11 +15,17 @@ enum gerbview_ids
{
ID_MAIN_MENUBAR = ID_END_LIST,
ID_TOOLBARH_PCB_SELECT_LAYER,
ID_PCB_DELETE_ITEM_BUTT,
ID_PCB_GLOBAL_DELETE,
ID_POPUP_PCB_DELETE_TRACKSEG,
ID_PCB_DISPLAY_OPTIONS_SETUP
ID_MENU_GERBVIEW_SHOW_HIDE_LAYERS_MANAGER_DIALOG,
ID_TOOLBARH_GERBVIEW_SELECT_LAYER,
ID_GERBVIEW_DELETE_ITEM_BUTT,
ID_GERBVIEW_GLOBAL_DELETE,
ID_POPUP_GERBVIEW_DELETE_TRACKSEG,
ID_GERBVIEW_DISPLAY_OPTIONS_SETUP,
ID_TB_OPTIONS_SHOW_LAYERS_MANAGER_VERTICAL_TOOLBAR,
ID_TB_OPTIONS_SHOW_DCODES,
ID_GERBER_END_LIST
};
#endif /* __GERBVIEW_IDS_H__ */
......@@ -80,10 +80,6 @@ bool WinEDA_GerberFrame::OnRightClick( const wxPoint& MousePos,
switch( DrawStruct->Type() )
{
case TYPE_TRACK:
// PopMenu->AppendSeparator();
// PopMenu->Append(ID_POPUP_PCB_EDIT_TRACK, _("Edit"));
// PopMenu->Append(ID_POPUP_PCB_DELETE_TRACKSEG, _("Delete"));
break;
......
......@@ -16,7 +16,7 @@
#include "gerbview.h"
#include "protos.h"
#include <wx/spinctrl.h>
#include "gerbview_id.h"
/** Function OnSelectOptionToolbar
......@@ -25,11 +25,24 @@
void WinEDA_GerberFrame::OnSelectOptionToolbar( wxCommandEvent& event )
{
int id = event.GetId();
bool state;
switch( id )
{
case ID_MENU_GERBVIEW_SHOW_HIDE_LAYERS_MANAGER_DIALOG:
state = ! m_show_layer_manager_tools;
id = ID_TB_OPTIONS_SHOW_LAYERS_MANAGER_VERTICAL_TOOLBAR;
break;
default:
state = m_OptionsToolBar->GetToolState( id );
break;
}
switch( id )
{
case ID_TB_OPTIONS_SHOW_GRID:
SetGridVisibility( m_OptionsToolBar->GetToolState( id ) );
SetGridVisibility( state );
DrawPanel->Refresh( TRUE );
break;
......@@ -45,17 +58,17 @@ void WinEDA_GerberFrame::OnSelectOptionToolbar( wxCommandEvent& event )
case ID_TB_OPTIONS_SHOW_POLAR_COORD:
Affiche_Message( wxEmptyString );
DisplayOpt.DisplayPolarCood = m_OptionsToolBar->GetToolState( id );
DisplayOpt.DisplayPolarCood = state;
UpdateStatusBar();
break;
case ID_TB_OPTIONS_SELECT_CURSOR:
m_CursorShape = m_OptionsToolBar->GetToolState( id );
m_CursorShape = state;
DrawPanel->Refresh( TRUE );
break;
case ID_TB_OPTIONS_SHOW_PADS_SKETCH:
if( m_OptionsToolBar->GetToolState( id ) )
if( state )
{
DisplayOpt.DisplayPadFill = m_DisplayPadFill = false;
}
......@@ -67,7 +80,7 @@ void WinEDA_GerberFrame::OnSelectOptionToolbar( wxCommandEvent& event )
break;
case ID_TB_OPTIONS_SHOW_VIAS_SKETCH:
if( m_OptionsToolBar->GetToolState( id ) )
if( state )
{
DisplayOpt.DisplayViaFill = m_DisplayViaFill = false;
}
......@@ -79,7 +92,7 @@ void WinEDA_GerberFrame::OnSelectOptionToolbar( wxCommandEvent& event )
break;
case ID_TB_OPTIONS_SHOW_TRACKS_SKETCH:
if( m_OptionsToolBar->GetToolState( id ) )
if(state )
{
m_DisplayPcbTrackFill = FALSE;
DisplayOpt.DisplayPcbTrackFill = FALSE;
......@@ -93,7 +106,7 @@ void WinEDA_GerberFrame::OnSelectOptionToolbar( wxCommandEvent& event )
break;
case ID_TB_OPTIONS_SHOW_POLYGONS_SKETCH:
if( m_OptionsToolBar->GetToolState( id ) ) // Polygons filled asked
if( state ) // Polygons filled asked
g_DisplayPolygonsModeSketch = 1;
else
g_DisplayPolygonsModeSketch = 0;
......@@ -101,10 +114,17 @@ void WinEDA_GerberFrame::OnSelectOptionToolbar( wxCommandEvent& event )
break;
case ID_TB_OPTIONS_SHOW_DCODES:
DisplayOpt.DisplayPadNum = m_OptionsToolBar->GetToolState( id );
SetElementVisibility( DCODES_VISIBLE, state );
DrawPanel->Refresh( TRUE );
break;
case ID_TB_OPTIONS_SHOW_LAYERS_MANAGER_VERTICAL_TOOLBAR:
// show/hide auxiliary Vertical layers and visibility manager toolbar
m_show_layer_manager_tools = state;
m_auimgr.GetPane( wxT( "m_LayersManagerToolBar" ) ).Show( m_show_layer_manager_tools );
m_auimgr.Update();
break;
default:
DisplayError( this,
wxT( "WinEDA_PcbFrame::OnSelectOptionToolbar error" ) );
......
......@@ -73,17 +73,18 @@ void WinEDA_GerberFrame::ReCreateMenuBar( void )
wxGetApp().m_fileHistory.AddFilesToMenu( filesMenu );
// Configuration:
// Configuration and preferences:
wxMenu* configmenu = new wxMenu;
ADD_MENUITEM_WITH_HELP( configmenu, ID_CONFIG_REQ, _( "&File Ext" ),
_( "Set files extensions" ), config_xpm );
ADD_MENUITEM_WITH_HELP( configmenu, ID_COLORS_SETUP, _( "&Colors" ),
_( "Select colors and display for layers" ),
palette_xpm );
ADD_MENUITEM_WITH_HELP( configmenu, ID_MENU_GERBVIEW_SHOW_HIDE_LAYERS_MANAGER_DIALOG,
_( "Hide &Layers Manager" ),
_( "Show/hide the layers manager toolbar" ),
layers_manager_xpm );
ADD_MENUITEM_WITH_HELP( configmenu, ID_OPTIONS_SETUP, _( "&Options" ),
_( "Select general options" ), preference_xpm );
ADD_MENUITEM_WITH_HELP( configmenu, ID_PCB_DISPLAY_OPTIONS_SETUP,
ADD_MENUITEM_WITH_HELP( configmenu, ID_GERBVIEW_DISPLAY_OPTIONS_SETUP,
_( "Display" ),
_( "Select how items are displayed" ),
display_options_xpm );
......@@ -98,11 +99,6 @@ void WinEDA_GerberFrame::ReCreateMenuBar( void )
configmenu->AppendSeparator();
AddHotkeyConfigMenu( configmenu );
/* wxMenu *drill_menu = new wxMenu;
* postprocess_menu->Append(ID_PCB_GEN_DRILL_FILE, "Create &Drill file",
* "Gen Drill (EXCELLON] file and/or Drill sheet");
*/
wxMenu* miscellaneous_menu = new wxMenu;
ADD_MENUITEM_WITH_HELP( miscellaneous_menu, ID_GERBVIEW_SHOW_LIST_DCODES,
_( "&List DCodes" ),
......@@ -112,7 +108,7 @@ void WinEDA_GerberFrame::ReCreateMenuBar( void )
_( "Show source file for the current layer" ),
tools_xpm );
miscellaneous_menu->AppendSeparator();
ADD_MENUITEM_WITH_HELP( miscellaneous_menu, ID_PCB_GLOBAL_DELETE,
ADD_MENUITEM_WITH_HELP( miscellaneous_menu, ID_GERBVIEW_GLOBAL_DELETE,
_( "&Delete Layer" ),
_( "Delete current layer" ), general_deletions_xpm );
......@@ -155,10 +151,6 @@ void WinEDA_GerberFrame::ReCreateHToolbar( void )
m_HToolBar = new WinEDA_Toolbar( TOOLBAR_MAIN, this, ID_H_TOOLBAR, TRUE );
#if !defined(KICAD_AUIMANAGER)
SetToolBar( (wxToolBar*)m_HToolBar );
#endif
// Set up toolbar
m_HToolBar->AddTool( ID_NEW_BOARD, wxEmptyString,
wxBitmap( new_xpm ),
......@@ -168,33 +160,9 @@ void WinEDA_GerberFrame::ReCreateHToolbar( void )
wxBitmap( open_xpm ),
_( "Open existing Layer" ) );
#if 0
m_HToolBar->AddTool( ID_SAVE_PROJECT, wxEmptyString,
wxBitmap( save_button ),
_( "Save" ) );
m_HToolBar->AddSeparator();
m_HToolBar->AddTool( ID_SHEET_SET, wxEmptyString,
wxBitmap( sheetset_xpm ),
_( "page settings (size, texts)" ) );
#endif
m_HToolBar->AddSeparator();
#if 0
m_HToolBar->AddTool( wxID_CUT, wxEmptyString,
wxBitmap( cut_button ),
_( "Cut selected item" ) );
m_HToolBar->AddTool( wxID_COPY, wxEmptyString,
wxBitmap( copy_button ),
_( "Copy selected item" ) );
m_HToolBar->AddTool( wxID_PASTE, wxEmptyString,
wxBitmap( paste_xpm ),
_( "Paste" ) );
#endif
m_HToolBar->AddTool( wxID_UNDO, wxEmptyString,
wxBitmap( undelete_xpm ),
......@@ -243,7 +211,7 @@ void WinEDA_GerberFrame::ReCreateHToolbar( void )
}
m_SelLayerBox = new WinEDAChoiceBox( m_HToolBar,
ID_TOOLBARH_PCB_SELECT_LAYER,
ID_TOOLBARH_GERBVIEW_SELECT_LAYER,
wxDefaultPosition, wxSize( 150, -1 ),
choices );
m_SelLayerBox->SetSelection( GetScreen()->m_Active_Layer );
......@@ -288,29 +256,8 @@ void WinEDA_GerberFrame::ReCreateVToolbar( void )
m_VToolBar->AddTool( ID_NO_SELECT_BUTT, wxEmptyString,
wxBitmap( cursor_xpm ) );
m_VToolBar->ToggleTool( ID_NO_SELECT_BUTT, TRUE );
#if 0
m_VToolBar->AddSeparator();
m_VToolBar->AddTool( ID_COMPONENT_BUTT, wxEmptyString,
wxBitmap( component_button ),
_( "Add flashes" ) );
m_VToolBar->AddTool( ID_BUS_BUTT, wxEmptyString,
wxBitmap( bus_button ),
_( "Add lines" ) );
m_VToolBar->AddTool( ID_JUNCTION_BUTT, wxEmptyString,
wxBitmap( junction_xpm ),
_( "Add layer alignment target" ) );
m_VToolBar->AddSeparator();
m_VToolBar->AddTool( ID_PCB_ADD_TEXT_BUTT, wxEmptyString,
wxBitmap( tool_text_xpm ),
_( "Add text" ) );
#endif
m_VToolBar->AddSeparator();
m_VToolBar->AddTool( ID_PCB_DELETE_ITEM_BUTT, wxEmptyString,
m_VToolBar->AddTool( ID_GERBVIEW_DELETE_ITEM_BUTT, wxEmptyString,
wxBitmap( delete_body_xpm ),
_( "Delete items" ) );
......@@ -369,7 +316,16 @@ void WinEDA_GerberFrame::ReCreateOptToolbar( void )
wxBitmap( show_dcodenumber_xpm ),
_( "Show dcode number" ), wxITEM_CHECK );
m_OptionsToolBar->Realize();
// Tools to show/hide toolbars:
m_OptionsToolBar->AddSeparator();
m_OptionsToolBar->AddTool( ID_TB_OPTIONS_SHOW_LAYERS_MANAGER_VERTICAL_TOOLBAR,
wxEmptyString,
wxBitmap( layers_manager_xpm ),
_(
"Show/hide the layers manager toolbar" ),
wxITEM_CHECK );
m_OptionsToolBar->Realize();
SetToolbars();
}
......@@ -189,7 +189,7 @@ void WinEDA_GerberFrame::Trace_Gerber( wxDC* DC, int draw_mode, int printmasklay
SetPenMinWidth( tmp );
if( DisplayOpt.DisplayPadNum )
if( IsElementVisible( DCODES_VISIBLE) )
Affiche_DCodes_Pistes( DrawPanel, DC, GetBoard(), GR_COPY );
GetScreen()->ClrRefreshReq();
......
......@@ -7,6 +7,7 @@
#include "id.h"
#include "class_gerbview_layer_widget.h"
/**
......@@ -37,10 +38,18 @@ class WinEDA_GerberFrame: this is the main window used in gerbview
class WinEDA_GerberFrame : public WinEDA_BasePcbFrame
{
friend class PCB_LAYER_WIDGET;
protected:
GERBER_LAYER_WIDGET* m_LayersManager;
public:
WinEDAChoiceBox* m_SelLayerBox;
WinEDAChoiceBox* m_SelLayerTool;
private:
bool m_show_layer_manager_tools;
public:
WinEDA_GerberFrame( wxWindow* father, const wxString& title,
const wxPoint& pos, const wxSize& size,
......@@ -50,6 +59,64 @@ public:
void Update_config();
void OnCloseWindow( wxCloseEvent& Event );
/** Function IsGridVisible() , virtual
* @return true if the grid must be shown
*/
virtual bool IsGridVisible();
/** Function SetGridVisibility() , virtual
* It may be overloaded by derived classes
* if you want to store/retrieve the grid visiblity in configuration.
* @param aVisible = true if the grid must be shown
*/
virtual void SetGridVisibility(bool aVisible);
/** Function GetGridColor() , virtual
* @return the color of the grid
*/
virtual int GetGridColor();
/** Function SetGridColor() , virtual
* @param aColor = the new color of the grid
*/
virtual void SetGridColor(int aColor);
/**
* Function IsElementVisible
* tests whether a given element category is visible. Keep this as an
* inline function.
* @param aGERBER_VISIBLE is from the enum by the same name
* @return bool - true if the element is visible.
* @see enum PCB_VISIBLE
*/
bool IsElementVisible( int aGERBER_VISIBLE )
{
return GetBoard()->IsElementVisible( aGERBER_VISIBLE );
}
/**
* Function SetElementVisibility
* changes the visibility of an element category
* @param aGERBER_VISIBLE is from the enum by the same name
* @param aNewState = The new visibility state of the element category
* @see enum PCB_VISIBLE
*/
void SetElementVisibility( int aGERBER_VISIBLE, bool aNewState );
/**
* Function SetVisibleAlls
* Set the status of all visible element categories and layers to VISIBLE
*/
void SetVisibleAlls( );
/**
* Function ReFillLayerWidget
* changes out all the layers in m_Layers and may be called upon
* loading a new BOARD.
*/
void ReFillLayerWidget();
/**
* Load applications settings specific to the PCBNew.
*
......
......@@ -231,7 +231,6 @@ enum main_id
ID_TB_OPTIONS_SHOW_TRACKS_SKETCH,
ID_TB_OPTIONS_SHOW_MODULE_TEXT_SKETCH,
ID_TB_OPTIONS_SHOW_MODULE_EDGE_SKETCH,
ID_TB_OPTIONS_SHOW_DCODES,
ID_TB_OPTIONS_SHOW_HIGH_CONTRAST_MODE,
ID_TB_OPTIONS_SHOW_EXTRA_VERTICAL_TOOLBAR1,
ID_TB_OPTIONS_SHOW_POLYGONS_SKETCH,
......
No preview for this file type
......@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: kicad\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2010-02-01 11:23+0100\n"
"PO-Revision-Date: 2010-02-01 11:24+0100\n"
"POT-Creation-Date: 2010-02-03 08:57+0100\n"
"PO-Revision-Date: 2010-02-03 09:01+0100\n"
"Last-Translator: \n"
"Language-Team: kicad team <jean-pierre.charras@ujf-grenoble.fr>\n"
"MIME-Version: 1.0\n"
......@@ -1931,216 +1931,23 @@ msgstr "Nb Segms"
msgid "Error: Unexpected end of file !"
msgstr "Erreur: Fin de fichier inattendue !"
#: pcbnew/pcbframe.cpp:114
msgid "Through Via"
msgstr "Via Traversante"
#: pcbnew/pcbframe.cpp:114
msgid "Show through vias"
msgstr "Afficher vias traversantes"
#: pcbnew/pcbframe.cpp:115
msgid "Bl/Buried Via"
msgstr "Via Av/Enterrée"
#: pcbnew/pcbframe.cpp:115
msgid "Show blind or buried vias"
msgstr "Afficher vias enterrées/aveugles"
#: pcbnew/pcbframe.cpp:116
msgid "Micro Via"
msgstr "Micro Via"
#: pcbnew/pcbframe.cpp:116
msgid "Show micro vias"
msgstr "Afficher micro vias"
#: pcbnew/pcbframe.cpp:117
msgid "Ratsnest"
msgstr "Chevelu"
#: pcbnew/pcbframe.cpp:117
msgid "Show unconnected nets as a ratsnest"
msgstr "Afficher les connexions maquantes comme chevelul"
#: pcbnew/pcbframe.cpp:119
msgid "Pads Front"
msgstr "Pad Dessus"
#: pcbnew/pcbframe.cpp:119
msgid "Show footprint pads on board's front"
msgstr "Afficher les pads placés sur le dessus du ciruit imprimé"
#: pcbnew/pcbframe.cpp:120
msgid "Pads Back"
msgstr "Pads Dessous"
#: pcbnew/pcbframe.cpp:120
msgid "Show footprint pads on board's back"
msgstr "Afficher les pads placés sur le dessous du ciruit imprimé"
#: pcbnew/pcbframe.cpp:122
msgid "Text Front"
msgstr "Texte Dessus"
#: pcbnew/pcbframe.cpp:122
#: pcbnew/pcbframe.cpp:123
msgid "Show footprint text on board's back"
msgstr "Afficher les textes sur modules situés sur le dessous du ciruit imprimé"
#: pcbnew/pcbframe.cpp:123
msgid "Text Back"
msgstr "Texte Dessous"
#: pcbnew/pcbframe.cpp:124
msgid "Hidden Text"
msgstr "Texte Invisible"
#: pcbnew/pcbframe.cpp:124
msgid "Show footprint text marked as invisible"
msgstr "Afficher les textes sur modules marqués comme invisibles"
#: pcbnew/pcbframe.cpp:126
msgid "Anchors"
msgstr "Ancres"
#: pcbnew/pcbframe.cpp:126
msgid "Show footprint and text origins as a cross"
msgstr "Afficher origines des textes et modules par une croix"
#: pcbnew/pcbframe.cpp:127
msgid "Show the (x,y) grid dots"
msgstr "Afficher les points de grille"
#: pcbnew/pcbframe.cpp:128
msgid "No-Connects"
msgstr "Non Connectés"
#: pcbnew/pcbframe.cpp:128
msgid "Show a marker on pads which have no net connected"
msgstr "Afficher un marqueur sur pads qui ne sont pad connectés"
#: pcbnew/pcbframe.cpp:129
msgid "Modules Front"
msgstr "Modules Dessus"
#: pcbnew/pcbframe.cpp:129
msgid "Show footprints that are on board's front"
msgstr "Afficher les modules situés sur le dessus du ciruit imprimé"
#: pcbnew/pcbframe.cpp:130
msgid "Modules Back"
msgstr "Modules Dessous"
#: pcbnew/pcbframe.cpp:130
msgid "Show footprints that are on board's back"
msgstr "Afficher les modules situés sur le dessous du ciruit imprimé"
#: pcbnew/pcbframe.cpp:131
msgid "Values"
msgstr "Valeurs"
#: pcbnew/pcbframe.cpp:131
msgid "Show footprint's values"
msgstr "Afficher les valeurs des modules"
#: pcbnew/pcbframe.cpp:132
msgid "References"
msgstr "Références"
#: pcbnew/pcbframe.cpp:132
msgid "Show footprint's references"
msgstr "Afficher les références des modules"
#: pcbnew/pcbframe.cpp:185
msgid "Show All Cu"
msgstr "Afficher toutes couches cuivre"
#: pcbnew/pcbframe.cpp:188
msgid "Hide All Cu"
msgstr "Cacher Cu"
#: pcbnew/pcbframe.cpp:262
msgid "Front copper layer"
msgstr "Couche cuivre dessus"
#: pcbnew/pcbframe.cpp:270
msgid "An innner copper layer"
msgstr "Couche interne"
#: pcbnew/pcbframe.cpp:278
msgid "Back copper layer"
msgstr "Couche cuivre dessous"
#: pcbnew/pcbframe.cpp:286
msgid "Adhesive on board's front"
msgstr "Afficher couche adhésive situés sur le dessus du ciruit imprimé"
#: pcbnew/pcbframe.cpp:287
msgid "Adhesive on board's back"
msgstr "Couche adhésive sur le dessous du circuit imprimé"
#: pcbnew/pcbframe.cpp:288
msgid "Solder paste on board's front"
msgstr "Couche de pâte à souder sur dessus du circuit imprimé"
#: pcbnew/pcbframe.cpp:289
msgid "Solder paste on board's back"
msgstr "Couche de pate à souder sur dessous du circuit imprimé"
#: pcbnew/pcbframe.cpp:290
msgid "Silkscreen on board's front"
msgstr "Sérigraphie sur le dessus du ciruit imprimé"
#: pcbnew/pcbframe.cpp:291
msgid "Silkscreen on board's back"
msgstr "Sérigraphie sur le dessous du ciruit imprimé "
#: pcbnew/pcbframe.cpp:292
msgid "Solder mask on board's front"
msgstr "Couche masque soudure sur le dessus du ciruit imprimée"
#: pcbnew/pcbframe.cpp:293
msgid "Solder mask on board's back"
msgstr "Couche masque soudure sur le dessous du ciruit imprimée"
#: pcbnew/pcbframe.cpp:294
msgid "Explanatory drawings"
msgstr "Couche dessins explicatifs"
#: pcbnew/pcbframe.cpp:295
msgid "Explanatory comments"
msgstr "Couche commentaires"
#: pcbnew/pcbframe.cpp:296
msgid "TDB"
msgstr ""
#: pcbnew/pcbframe.cpp:297
msgid "TBD"
msgstr ""
#: pcbnew/pcbframe.cpp:298
msgid "Board's perimeter definition"
msgstr "Couche de définition des contours du circuit imprimé"
#: pcbnew/pcbframe.cpp:675
#: pcbnew/pcbframe.cpp:335
msgid "Visibles"
msgstr "Visibles"
#: pcbnew/pcbframe.cpp:766
#: pcbnew/pcbframe.cpp:426
msgid "Board modified, Save before exit ?"
msgstr "Circuit Imprimé modifié, Sauver avant de quitter ?"
#: pcbnew/pcbframe.cpp:767
#: pcbnew/pcbframe.cpp:427
msgid "Confirmation"
msgstr "Confirmation"
#: pcbnew/pcbframe.cpp:806
#: pcbnew/pcbframe.cpp:466
msgid "3D Frame already opened"
msgstr "Fenêtre 3D déjà ouverte"
#: pcbnew/pcbframe.cpp:810
#: pcbnew/pcbframe.cpp:470
msgid "3D Viewer"
msgstr "Visu 3D"
......@@ -2301,6 +2108,199 @@ msgstr "Pour une liste de pads non connecté, clic droit pour ouvrir un menu"
msgid "Unconnected"
msgstr "Non connecté"
#: pcbnew/class_pcb_layer_widget.cpp:69
msgid "Through Via"
msgstr "Via Traversante"
#: pcbnew/class_pcb_layer_widget.cpp:69
msgid "Show through vias"
msgstr "Afficher vias traversantes"
#: pcbnew/class_pcb_layer_widget.cpp:70
msgid "Bl/Buried Via"
msgstr "Via Av/Enterrée"
#: pcbnew/class_pcb_layer_widget.cpp:70
msgid "Show blind or buried vias"
msgstr "Afficher vias enterrées/aveugles"
#: pcbnew/class_pcb_layer_widget.cpp:71
msgid "Micro Via"
msgstr "Micro Via"
#: pcbnew/class_pcb_layer_widget.cpp:71
msgid "Show micro vias"
msgstr "Afficher micro vias"
#: pcbnew/class_pcb_layer_widget.cpp:72
msgid "Ratsnest"
msgstr "Chevelu"
#: pcbnew/class_pcb_layer_widget.cpp:72
msgid "Show unconnected nets as a ratsnest"
msgstr "Afficher les connexions maquantes comme chevelul"
#: pcbnew/class_pcb_layer_widget.cpp:74
msgid "Pads Front"
msgstr "Pad Dessus"
#: pcbnew/class_pcb_layer_widget.cpp:74
msgid "Show footprint pads on board's front"
msgstr "Afficher les pads placés sur le dessus du ciruit imprimé"
#: pcbnew/class_pcb_layer_widget.cpp:75
msgid "Pads Back"
msgstr "Pads Dessous"
#: pcbnew/class_pcb_layer_widget.cpp:75
msgid "Show footprint pads on board's back"
msgstr "Afficher les pads placés sur le dessous du ciruit imprimé"
#: pcbnew/class_pcb_layer_widget.cpp:77
msgid "Text Front"
msgstr "Texte Dessus"
#: pcbnew/class_pcb_layer_widget.cpp:77
#: pcbnew/class_pcb_layer_widget.cpp:78
msgid "Show footprint text on board's back"
msgstr "Afficher les textes sur modules situés sur le dessous du ciruit imprimé"
#: pcbnew/class_pcb_layer_widget.cpp:78
msgid "Text Back"
msgstr "Texte Dessous"
#: pcbnew/class_pcb_layer_widget.cpp:79
msgid "Hidden Text"
msgstr "Texte Invisible"
#: pcbnew/class_pcb_layer_widget.cpp:79
msgid "Show footprint text marked as invisible"
msgstr "Afficher les textes sur modules marqués comme invisibles"
#: pcbnew/class_pcb_layer_widget.cpp:81
msgid "Anchors"
msgstr "Ancres"
#: pcbnew/class_pcb_layer_widget.cpp:81
msgid "Show footprint and text origins as a cross"
msgstr "Afficher origines des textes et modules par une croix"
#: pcbnew/class_pcb_layer_widget.cpp:82
msgid "Show the (x,y) grid dots"
msgstr "Afficher les points de grille"
#: pcbnew/class_pcb_layer_widget.cpp:83
msgid "No-Connects"
msgstr "Non Connectés"
#: pcbnew/class_pcb_layer_widget.cpp:83
msgid "Show a marker on pads which have no net connected"
msgstr "Afficher un marqueur sur pads qui ne sont pad connectés"
#: pcbnew/class_pcb_layer_widget.cpp:84
msgid "Modules Front"
msgstr "Modules Dessus"
#: pcbnew/class_pcb_layer_widget.cpp:84
msgid "Show footprints that are on board's front"
msgstr "Afficher les modules situés sur le dessus du ciruit imprimé"
#: pcbnew/class_pcb_layer_widget.cpp:85
msgid "Modules Back"
msgstr "Modules Dessous"
#: pcbnew/class_pcb_layer_widget.cpp:85
msgid "Show footprints that are on board's back"
msgstr "Afficher les modules situés sur le dessous du ciruit imprimé"
#: pcbnew/class_pcb_layer_widget.cpp:86
msgid "Values"
msgstr "Valeurs"
#: pcbnew/class_pcb_layer_widget.cpp:86
msgid "Show footprint's values"
msgstr "Afficher les valeurs des modules"
#: pcbnew/class_pcb_layer_widget.cpp:87
msgid "References"
msgstr "Références"
#: pcbnew/class_pcb_layer_widget.cpp:87
msgid "Show footprint's references"
msgstr "Afficher les références des modules"
#: pcbnew/class_pcb_layer_widget.cpp:140
msgid "Show All Cu"
msgstr "Afficher toutes couches cuivre"
#: pcbnew/class_pcb_layer_widget.cpp:143
msgid "Hide All Cu"
msgstr "Cacher Cu"
#: pcbnew/class_pcb_layer_widget.cpp:217
msgid "Front copper layer"
msgstr "Couche cuivre dessus"
#: pcbnew/class_pcb_layer_widget.cpp:225
msgid "An innner copper layer"
msgstr "Couche interne"
#: pcbnew/class_pcb_layer_widget.cpp:233
msgid "Back copper layer"
msgstr "Couche cuivre dessous"
#: pcbnew/class_pcb_layer_widget.cpp:241
msgid "Adhesive on board's front"
msgstr "Afficher couche adhésive situés sur le dessus du ciruit imprimé"
#: pcbnew/class_pcb_layer_widget.cpp:242
msgid "Adhesive on board's back"
msgstr "Couche adhésive sur le dessous du circuit imprimé"
#: pcbnew/class_pcb_layer_widget.cpp:243
msgid "Solder paste on board's front"
msgstr "Couche de pâte à souder sur dessus du circuit imprimé"
#: pcbnew/class_pcb_layer_widget.cpp:244
msgid "Solder paste on board's back"
msgstr "Couche de pate à souder sur dessous du circuit imprimé"
#: pcbnew/class_pcb_layer_widget.cpp:245
msgid "Silkscreen on board's front"
msgstr "Sérigraphie sur le dessus du ciruit imprimé"
#: pcbnew/class_pcb_layer_widget.cpp:246
msgid "Silkscreen on board's back"
msgstr "Sérigraphie sur le dessous du ciruit imprimé "
#: pcbnew/class_pcb_layer_widget.cpp:247
msgid "Solder mask on board's front"
msgstr "Couche masque soudure sur le dessus du ciruit imprimée"
#: pcbnew/class_pcb_layer_widget.cpp:248
msgid "Solder mask on board's back"
msgstr "Couche masque soudure sur le dessous du ciruit imprimée"
#: pcbnew/class_pcb_layer_widget.cpp:249
msgid "Explanatory drawings"
msgstr "Couche dessins explicatifs"
#: pcbnew/class_pcb_layer_widget.cpp:250
msgid "Explanatory comments"
msgstr "Couche commentaires"
#: pcbnew/class_pcb_layer_widget.cpp:251
msgid "TDB"
msgstr ""
#: pcbnew/class_pcb_layer_widget.cpp:252
msgid "TBD"
msgstr ""
#: pcbnew/class_pcb_layer_widget.cpp:253
msgid "Board's perimeter definition"
msgstr "Couche de définition des contours du circuit imprimé"
#: pcbnew/moduleframe.cpp:254
msgid "Module Editor: Module modified! Continue?"
msgstr "Editeur de Module: Module modifié! Continuer ?"
......@@ -3958,28 +3958,28 @@ msgstr "Contours_PCB"
msgid "BAD INDEX"
msgstr "BAD INDEX"
#: pcbnew/class_board.cpp:907
#: pcbnew/class_board.cpp:893
#: pcbnew/class_module.cpp:867
msgid "Pads"
msgstr "Pads"
#: pcbnew/class_board.cpp:910
#: pcbnew/class_board.cpp:896
msgid "Vias"
msgstr "Vias"
#: pcbnew/class_board.cpp:913
#: pcbnew/class_board.cpp:899
msgid "Nodes"
msgstr "Nodes"
#: pcbnew/class_board.cpp:916
#: pcbnew/class_board.cpp:902
msgid "Nets"
msgstr "Nets"
#: pcbnew/class_board.cpp:924
#: pcbnew/class_board.cpp:910
msgid "Links"
msgstr "Liens"
#: pcbnew/class_board.cpp:927
#: pcbnew/class_board.cpp:913
msgid "Connect"
msgstr "Connect"
......@@ -7022,7 +7022,7 @@ msgstr "Epaiss. ligne par défaut"
msgid "Plot: %s\n"
msgstr "Trace: %s\n"
#: eeschema/libframe.cpp:292
#: eeschema/libframe.cpp:291
msgid ""
"Component was modified!\n"
"Discard changes?"
......@@ -7030,7 +7030,7 @@ msgstr ""
"Le composant a été modifié\n"
"Perdre les changements"
#: eeschema/libframe.cpp:305
#: eeschema/libframe.cpp:304
#, c-format
msgid ""
"Library \"%s\" was modified!\n"
......@@ -7039,40 +7039,40 @@ msgstr ""
"Librairie \"%s\" modifiée!\n"
"Perdre les changements ?"
#: eeschema/libframe.cpp:415
#: eeschema/libframe.cpp:414
#, c-format
msgid "Part %c"
msgstr "Composant %c"
#: eeschema/libframe.cpp:677
#: eeschema/libframe.cpp:676
msgid "Add pin"
msgstr "Addition de \"pins\""
#: eeschema/libframe.cpp:681
#: eeschema/libframe.cpp:680
msgid "Set pin options"
msgstr "Choix options de pin"
#: eeschema/libframe.cpp:698
#: eeschema/libframe.cpp:697
msgid "Add rectangle"
msgstr "Ajout de rectangle"
#: eeschema/libframe.cpp:702
#: eeschema/libframe.cpp:701
msgid "Add circle"
msgstr "Ajout de cercle"
#: eeschema/libframe.cpp:706
#: eeschema/libframe.cpp:705
msgid "Add arc"
msgstr "Ajout d'arc"
#: eeschema/libframe.cpp:710
#: eeschema/libframe.cpp:709
msgid "Add line"
msgstr "Addition de lignes"
#: eeschema/libframe.cpp:714
#: eeschema/libframe.cpp:713
msgid "Set anchor position"
msgstr "Ajuster Position Ancre"
#: eeschema/libframe.cpp:724
#: eeschema/libframe.cpp:723
msgid "Export"
msgstr "Exporter"
......@@ -7111,19 +7111,19 @@ msgstr "Labels"
msgid "Hierar."
msgstr "Hiérar."
#: eeschema/eelayer.cpp:239
#: eeschema/eelayer.cpp:238
msgid "White"
msgstr "Blanc"
#: eeschema/eelayer.cpp:240
#: eeschema/eelayer.cpp:239
msgid "Black"
msgstr "Noir"
#: eeschema/eelayer.cpp:243
#: eeschema/eelayer.cpp:242
msgid "Background Color:"
msgstr "Couleur du Fond:"
#: eeschema/eelayer.cpp:275
#: eeschema/eelayer.cpp:274
msgid "Apply"
msgstr "Appliquer"
......@@ -8361,27 +8361,6 @@ msgstr "> %-28.28s PinSheet %-7.7s (Feuille %s) pos: %3.3f, %3.3f\n"
msgid "#End labels\n"
msgstr "#End labels\n"
#: eeschema/eeschema.cpp:131
msgid "Eeschema is already running, Continue?"
msgstr "Eeschema est en cours d'exécution. Continuer ?"
#: eeschema/class_libentry.cpp:59
msgid "none"
msgstr "rien"
#: eeschema/class_libentry.cpp:321
msgid "value"
msgstr "valeur"
#: eeschema/class_libentry.cpp:321
msgid "reference"
msgstr "référence"
#: eeschema/class_libentry.cpp:323
#, c-format
msgid "An attempt was made to remove the %s field from component %s in library %s."
msgstr "Une tentative a été faite pour supprimer le champ %s du composant %s en librairie %s."
#: eeschema/tool_sch.cpp:34
#: eeschema/menubar.cpp:45
msgid "New schematic project"
......@@ -8412,6 +8391,7 @@ msgid "Navigate schematic hierarchy"
msgstr "Navigateur de hiérarchie"
#: eeschema/tool_sch.cpp:84
#: eeschema/menubar.cpp:92
msgid "Print schematic"
msgstr "Impression des feuilles de schéma"
......@@ -8464,12 +8444,12 @@ msgid "Place a bus"
msgstr "Placer un bus"
#: eeschema/tool_sch.cpp:179
#: eeschema/menubar.cpp:294
#: eeschema/menubar.cpp:296
msgid "Place a wire to bus entry"
msgstr "Placer une Entrée de Bus (type fil vers bus)"
#: eeschema/tool_sch.cpp:183
#: eeschema/menubar.cpp:301
#: eeschema/menubar.cpp:303
msgid "Place a bus to bus entry"
msgstr "Placer une Entrée de Bus (type bus vers bus)"
......@@ -8478,7 +8458,7 @@ msgid "Place no connect flag"
msgstr "Placer symbole de non connexion"
#: eeschema/tool_sch.cpp:192
#: eeschema/menubar.cpp:313
#: eeschema/menubar.cpp:315
msgid "Place net name"
msgstr "Place nom de net"
......@@ -8495,7 +8475,7 @@ msgid "Place a junction"
msgstr "Placer une jonction"
#: eeschema/tool_sch.cpp:206
#: eeschema/menubar.cpp:336
#: eeschema/menubar.cpp:338
msgid "Place a hierarchical label. This label will be seen as a pin sheet in the sheet symbol"
msgstr "Placer un label hiérachique. Ce label sera vu comme une pin dans la feuille mère symbole"
......@@ -8524,7 +8504,7 @@ msgid "Turn grid off"
msgstr "Ne pas afficher la grille"
#: eeschema/tool_sch.cpp:270
#: eeschema/schframe.cpp:497
#: eeschema/schframe.cpp:505
msgid "Show hidden pins"
msgstr "Force affichage des pins invisibles"
......@@ -8532,6 +8512,51 @@ msgstr "Force affichage des pins invisibles"
msgid "HV orientation for wires and bus"
msgstr "Force direction H, V pour les fils et bus"
#: eeschema/eeschema_config.cpp:333
msgid "Save Project Settings"
msgstr "Sauver Optionsr Projet"
#: eeschema/eeschema.cpp:131
msgid "Eeschema is already running, Continue?"
msgstr "Eeschema est en cours d'exécution. Continuer ?"
#: eeschema/class_libentry.cpp:59
msgid "none"
msgstr "rien"
#: eeschema/class_libentry.cpp:321
msgid "value"
msgstr "valeur"
#: eeschema/class_libentry.cpp:321
msgid "reference"
msgstr "référence"
#: eeschema/class_libentry.cpp:323
#, c-format
msgid "An attempt was made to remove the %s field from component %s in library %s."
msgstr "Une tentative a été faite pour supprimer le champ %s du composant %s en librairie %s."
#: eeschema/schframe.cpp:358
msgid "Schematic modified, Save before exit ?"
msgstr "Schématique modifiée, Sauver avant de quitter ?"
#: eeschema/schframe.cpp:493
msgid "Draw wires and buses in any direction"
msgstr "Tracer les fils et bus avec direction quelconque"
#: eeschema/schframe.cpp:494
msgid "Draw horizontal and vertical wires and buses only"
msgstr "Autoriser fils et bus verticaux et horizontaux seulement"
#: eeschema/schframe.cpp:504
msgid "Do not show hidden pins"
msgstr "Ne pas affichager les pins invisibles"
#: eeschema/schframe.cpp:596
msgid "Schematic"
msgstr "Schématique"
#: eeschema/find.cpp:210
msgid "Pin "
msgstr "Pin "
......@@ -8745,279 +8770,255 @@ msgstr "Ouvrir un projet schématique existant"
msgid "Open a recent opened schematic project"
msgstr "Ouvrir un projet schématique récemment ouvert"
#: eeschema/menubar.cpp:69
#: eeschema/menubar.cpp:70
msgid "&Save Whole Schematic Project\tCtrl+S"
msgstr "Sauver Tout le Projet Schématique\tCtrl+S"
#: eeschema/menubar.cpp:70
#: eeschema/menubar.cpp:71
msgid "Save all sheets in the schematic project"
msgstr "Sauver toutes les feuilles du projet schématique"
#: eeschema/menubar.cpp:74
msgid "&Save Current Sheet Only"
msgstr "Sauver la Feuille &Courante:"
#: eeschema/menubar.cpp:75
msgid "Save &Current Sheet Only"
msgstr "Sauver la Feuille &Courante Seule"
#: eeschema/menubar.cpp:76
msgid "Save only current schematic sheet"
msgstr "Sauver seulement la feuille active"
#: eeschema/menubar.cpp:81
#: eeschema/menubar.cpp:82
msgid "Save Current Sheet &as\tShift+Ctrl+S"
msgstr "Sauver Feuille Courante &sous\tShift+Ctrl+S"
#: eeschema/menubar.cpp:82
#: eeschema/menubar.cpp:83
msgid "Save current schematic sheet as..."
msgstr "Sauver la feuille active sous ..."
#: eeschema/menubar.cpp:90
#: eeschema/menubar.cpp:91
#, fuzzy
msgid "P&rint\tCtrl+P"
msgstr "&Ouvrir\tCtrl+O"
#: eeschema/menubar.cpp:91
msgid "Print schematic sheet"
msgstr "Impression des feuilles de schéma"
#: eeschema/menubar.cpp:98
#: eeschema/menubar.cpp:99
msgid "Plot PostScript"
msgstr "Tracé Postscript"
#: eeschema/menubar.cpp:99
#: eeschema/menubar.cpp:100
msgid "Plot schematic sheet in PostScript format"
msgstr "Tracer les feuilles schématiques en format Postscript"
#: eeschema/menubar.cpp:104
#: eeschema/menubar.cpp:105
msgid "Plot HPGL"
msgstr "Tracé HPGL"
#: eeschema/menubar.cpp:105
#: eeschema/menubar.cpp:106
msgid "Plot schematic sheet in HPGL format"
msgstr "Tracer les feuilles schématiques en format HPGL"
#: eeschema/menubar.cpp:110
#: eeschema/menubar.cpp:111
msgid "Plot SVG"
msgstr "Tracé SVG"
#: eeschema/menubar.cpp:111
#: eeschema/menubar.cpp:112
msgid "Plot schematic sheet in SVG format"
msgstr "Tracer les feuilles schématiques en format SVG"
#: eeschema/menubar.cpp:116
#: eeschema/menubar.cpp:117
msgid "Plot DXF"
msgstr "Tracé DXF"
#: eeschema/menubar.cpp:117
#: eeschema/menubar.cpp:118
msgid "Plot schematic sheet in DXF format"
msgstr "Tracer les feuilles schématiques en format DXF"
#: eeschema/menubar.cpp:125
#: eeschema/menubar.cpp:126
msgid "Plot to Clipboard"
msgstr "Tracé dans Presse papier"
#: eeschema/menubar.cpp:126
#: eeschema/menubar.cpp:127
msgid "Export drawings to clipboard"
msgstr " Exporter le dessin dans le presse-papier"
#: eeschema/menubar.cpp:134
#: eeschema/menubar.cpp:135
msgid "Plot schematic sheet in HPGL, PostScript or SVG format"
msgstr "Tracer les feuilles schématiques en format HPGL, POSTSCRIPT ou SVG"
#: eeschema/menubar.cpp:141
#: eeschema/menubar.cpp:143
msgid "Quit EESchema"
msgstr "Quitter EESchema"
#: eeschema/menubar.cpp:182
#: eeschema/menubar.cpp:184
msgid "&Find\tCtrl+F"
msgstr "&Chercher\tCtrl+F"
#: eeschema/menubar.cpp:191
#: eeschema/menubar.cpp:193
msgid "Backannotate"
msgstr "Rétro Annotation"
#: eeschema/menubar.cpp:192
#: eeschema/menubar.cpp:194
msgid "Back annotated footprint fields"
msgstr "Rétroannotation des champs modules"
#: eeschema/menubar.cpp:238
#: eeschema/menubar.cpp:240
msgid "Fit the schematic sheet on the screen"
msgstr "Ajuster la feuille de schéma à l'écran"
#: eeschema/menubar.cpp:254
#: eeschema/menubar.cpp:256
msgid "Redraw the schematic view"
msgstr "Redessin de l'écran"
#: eeschema/menubar.cpp:268
#: eeschema/menubar.cpp:270
msgid "&Component"
msgstr "&Composant"
#: eeschema/menubar.cpp:269
#: eeschema/menubar.cpp:271
msgid "Place the component"
msgstr "Placer le Composant"
#: eeschema/menubar.cpp:274
#: eeschema/menubar.cpp:276
msgid "&Power port"
msgstr "Power Symbole"
#: eeschema/menubar.cpp:275
#: eeschema/menubar.cpp:277
msgid "Place the power port"
msgstr "Placer le Symbole Power"
#: eeschema/menubar.cpp:280
#: eeschema/menubar.cpp:282
msgid "&Wire"
msgstr "&Fil"
#: eeschema/menubar.cpp:281
#: eeschema/menubar.cpp:283
msgid "Place the wire"
msgstr "Place fil"
#: eeschema/menubar.cpp:286
#: eeschema/menubar.cpp:288
msgid "&Bus"
msgstr "&Bus"
#: eeschema/menubar.cpp:287
#: eeschema/menubar.cpp:289
msgid "Place bus"
msgstr "Place bus"
#: eeschema/menubar.cpp:293
#: eeschema/menubar.cpp:295
msgid "W&ire to bus entry"
msgstr "Entrées de bus (type fil vers bus)"
#: eeschema/menubar.cpp:300
#: eeschema/menubar.cpp:302
msgid "B&us to bus entry"
msgstr "Entrées de bus (type bus vers bus)"
#: eeschema/menubar.cpp:306
#: eeschema/menubar.cpp:308
msgid "No connect flag"
msgstr "Symbole de Non Connexion"
#: eeschema/menubar.cpp:307
#: eeschema/menubar.cpp:309
msgid "Place a no connect flag"
msgstr "Placer un Symbole de Non Connexion"
#: eeschema/menubar.cpp:312
#: eeschema/menubar.cpp:314
msgid "Net name"
msgstr "Net Name"
#: eeschema/menubar.cpp:318
#: eeschema/menubar.cpp:320
msgid "Global label"
msgstr "Label Global"
#: eeschema/menubar.cpp:319
#: eeschema/menubar.cpp:321
msgid "Place a global label. Warning: all global labels with the same name are connected in whole hierarchy"
msgstr "Placer un label global. Attention: tous les labels globaux avec le même nom sont connectés dans toute la hiérarchie"
#: eeschema/menubar.cpp:325
#: eeschema/menubar.cpp:327
msgid "Junction"
msgstr "Jonction"
#: eeschema/menubar.cpp:326
#: eeschema/menubar.cpp:328
msgid "Place junction"
msgstr "Place jonction"
#: eeschema/menubar.cpp:335
#: eeschema/menubar.cpp:337
msgid "Hierarchical label"
msgstr "Label Hiérarchique"
#: eeschema/menubar.cpp:343
#: eeschema/menubar.cpp:345
msgid "Hierarchical sheet"
msgstr "Feuille Hiérrachique"
#: eeschema/menubar.cpp:344
#: eeschema/menubar.cpp:346
msgid "Create a hierarchical sheet"
msgstr "Créer une Feuille Hiérachique"
#: eeschema/menubar.cpp:350
#: eeschema/menubar.cpp:352
msgid "Import Hierarchical Label"
msgstr "Importer Label Hiérarchique"
#: eeschema/menubar.cpp:351
#: eeschema/menubar.cpp:353
msgid "Place a pin sheet created by importing a hierarchical label from sheet"
msgstr "Placer une pin hiérarchique créée par importation d'un label hiérarchique de la feuille"
#: eeschema/menubar.cpp:358
#: eeschema/menubar.cpp:360
msgid "Add Hierarchical Pin to Sheet"
msgstr "Ajouter Pins de Hiérarchie dans feuille"
#: eeschema/menubar.cpp:359
#: eeschema/menubar.cpp:361
msgid "Place a hierarchical pin to sheet"
msgstr "Addition de pins de hiérarchie dans les feuilles symboles de hiérarchie"
#: eeschema/menubar.cpp:369
#: eeschema/menubar.cpp:371
msgid "Graphic line or polygon"
msgstr "Ligne ou polygone graphique"
#: eeschema/menubar.cpp:370
#: eeschema/menubar.cpp:372
msgid "Place graphic lines or polygons"
msgstr "Placer lignes ou polygones graphiques"
#: eeschema/menubar.cpp:377
#: eeschema/menubar.cpp:379
msgid "Graphic text"
msgstr "Texte graphique"
#: eeschema/menubar.cpp:378
#: eeschema/menubar.cpp:380
msgid "Place graphic text for comment"
msgstr "Placer textes graphiques en commentaire."
#: eeschema/menubar.cpp:392
#: eeschema/menubar.cpp:394
msgid "Library preferences"
msgstr "Préférences pour Librairie"
#: eeschema/menubar.cpp:397
#: eeschema/menubar.cpp:399
msgid "&Colors"
msgstr "&Couleurs"
#: eeschema/menubar.cpp:398
#: eeschema/menubar.cpp:400
msgid "Color preferences"
msgstr "Préférences de couleurs"
#: eeschema/menubar.cpp:403
#: eeschema/menubar.cpp:405
msgid "&Options"
msgstr "&Options"
#: eeschema/menubar.cpp:404
#: eeschema/menubar.cpp:406
msgid "Eeschema general options and preferences"
msgstr "Options et préférences générales de Eeschema"
#: eeschema/menubar.cpp:418
#: eeschema/menubar.cpp:420
msgid "&Save preferences"
msgstr "&Sauver Préférences"
#: eeschema/menubar.cpp:424
#: eeschema/menubar.cpp:426
msgid "&Read preferences"
msgstr "&Lire Préférences"
#: eeschema/menubar.cpp:436
#: eeschema/menubar.cpp:438
msgid "Open the eeschema manual"
msgstr "Ouvrir la documentation de eeschema"
#: eeschema/menubar.cpp:444
#: eeschema/menubar.cpp:446
msgid "About eeschema schematic designer"
msgstr "Au sujet de Eeschema (outil de conception schématique)"
#: eeschema/menubar.cpp:457
#: eeschema/menubar.cpp:459
msgid "&Place"
msgstr "&Placer"
#: eeschema/schframe.cpp:350
msgid "Schematic modified, Save before exit ?"
msgstr "Schématique modifiée, Sauver avant de quitter ?"
#: eeschema/schframe.cpp:485
msgid "Draw wires and buses in any direction"
msgstr "Tracer les fils et bus avec direction quelconque"
#: eeschema/schframe.cpp:486
msgid "Draw horizontal and vertical wires and buses only"
msgstr "Autoriser fils et bus verticaux et horizontaux seulement"
#: eeschema/schframe.cpp:496
msgid "Do not show hidden pins"
msgstr "Ne pas affichager les pins invisibles"
#: eeschema/schframe.cpp:588
msgid "Schematic"
msgstr "Schématique"
#: eeschema/files-io.cpp:71
msgid "Clear schematic hierarchy?"
msgstr "Effacer la hiérarchie schématique?"
......@@ -9830,31 +9831,39 @@ msgid "Text Shape:"
msgstr "Aspect Texte:"
#: eeschema/dialog_bodygraphictext_properties_base.cpp:82
#: eeschema/dialog_edit_libentry_fields_in_lib_base.cpp:56
msgid "Align left"
msgstr "Alignement à gauche"
#: eeschema/dialog_bodygraphictext_properties_base.cpp:82
#: eeschema/dialog_bodygraphictext_properties_base.cpp:88
#: eeschema/dialog_edit_libentry_fields_in_lib_base.cpp:56
#: eeschema/dialog_edit_libentry_fields_in_lib_base.cpp:69
msgid "Align center"
msgstr "Alignement au centre"
#: eeschema/dialog_bodygraphictext_properties_base.cpp:82
#: eeschema/dialog_edit_libentry_fields_in_lib_base.cpp:56
msgid "Align right"
msgstr "Alignement à droite"
#: eeschema/dialog_bodygraphictext_properties_base.cpp:84
#: eeschema/dialog_edit_libentry_fields_in_lib_base.cpp:58
msgid "Horiz. Justify"
msgstr "Justification Horiz."
#: eeschema/dialog_bodygraphictext_properties_base.cpp:88
#: eeschema/dialog_edit_libentry_fields_in_lib_base.cpp:69
msgid "Align bottom"
msgstr "Alignement en bas"
#: eeschema/dialog_bodygraphictext_properties_base.cpp:88
#: eeschema/dialog_edit_libentry_fields_in_lib_base.cpp:69
msgid "Align top"
msgstr "Alignement au sommet"
#: eeschema/dialog_bodygraphictext_properties_base.cpp:90
#: eeschema/dialog_edit_libentry_fields_in_lib_base.cpp:71
msgid "Vert. Justify"
msgstr "Vert. Justifié"
......@@ -9943,12 +9952,10 @@ msgid "Datasheet"
msgstr "Documentation"
#: eeschema/dialog_SVG_print_base.cpp:25
#: eeschema/dialog_print_using_printer_base.cpp:25
msgid "Default Pen Size"
msgstr "Dimension Plume par Défaut"
#: eeschema/dialog_SVG_print_base.cpp:30
#: eeschema/dialog_print_using_printer_base.cpp:30
msgid "Selection of the default pen thickness used to draw items, when their thickness is set to 0."
msgstr "Valeur de la dimension de la plume utilisée par défaut pour tracer les éléments, lorsque leur épaisseur est à 0."
......@@ -9960,17 +9967,34 @@ msgstr "Imprimer Page Courante"
msgid "Print All"
msgstr "Imprimer Tout"
#: eeschema/dialog_print_using_printer_base.cpp:52
msgid "Current"
msgstr "Courant"
#: eeschema/dialog_print_using_printer_base.cpp:22
msgid "Print sheet &reference and title block"
msgstr "Imprimer ca&rtouche"
#: eeschema/dialog_print_using_printer_base.cpp:52
msgid "All"
msgstr "Tout"
#: eeschema/dialog_print_using_printer_base.cpp:29
msgid "Print in &black and white only"
msgstr "Imprimer en &noir et blanc seulement"
#: eeschema/eeschema_config.cpp:328
msgid "Save Project Settings"
msgstr "Sauver Optionsr Projet"
#: eeschema/dialog_print_using_printer_base.cpp:38
msgid "Page Setup"
msgstr "Options Page"
#: eeschema/dialog_print_using_printer.cpp:241
msgid "Print Schematic"
msgstr "Impression Schématique"
#: eeschema/dialog_print_using_printer.cpp:246
msgid "An error occurred attempting to print the schematic."
msgstr "Une erreur s'est produite lors de l'impression."
#: eeschema/dialog_print_using_printer.cpp:247
msgid "Printing"
msgstr "Impression"
#: eeschema/dialog_print_using_printer.cpp:260
#, c-format
msgid "Print page %d"
msgstr "Imprimer page %d"
#: eeschema/eelibs_read_libraryfiles.cpp:61
msgid "\n"
......@@ -9984,23 +10008,6 @@ msgstr " erreur!"
msgid "The following libraries could not be found:"
msgstr "Les librairies suivantes n'ont pas pu être trouvées:"
#: eeschema/dialog_print_using_printer.cpp:113
msgid "Error initializing printer information."
msgstr "Erreur init info imprimante"
#: eeschema/dialog_print_using_printer.cpp:239
msgid "Printer error!"
msgstr "Problème d'imprimante!"
#: eeschema/dialog_print_using_printer.cpp:308
msgid "There was a problem printing."
msgstr "Il y a un problème d'impression."
#: eeschema/dialog_print_using_printer.cpp:322
#, c-format
msgid "Print page %d"
msgstr "Imprimer page %d"
#: eeschema/class_BodyItem_Text.cpp:85
#, c-format
msgid "text only had %d parameters of the required 8"
......@@ -10203,6 +10210,11 @@ msgstr "Filtrage Modules"
msgid "Undefined"
msgstr "Non Défini"
#: eeschema/classes_body_items.cpp:68
#: eeschema/classes_body_items.cpp:74
msgid "All"
msgstr "Tout"
#: eeschema/classes_body_items.cpp:76
msgid "no"
msgstr "non"
......@@ -10435,9 +10447,6 @@ msgstr "Taille du te&xte:"
#: eeschema/dialog_sch_sheet_props_base.cpp:42
#: eeschema/dialog_sch_sheet_props_base.cpp:63
#: eeschema/dialog_lib_edit_pin_base.cpp:41
#: eeschema/dialog_lib_edit_pin_base.cpp:64
#: eeschema/dialog_lib_edit_pin_base.cpp:87
msgid "units"
msgstr "unités"
......@@ -10897,7 +10906,7 @@ msgstr "Clock Active Bas"
msgid "Active Low Output"
msgstr "Sortie Active Bas"
#: cvpcb/cvframe.cpp:284
#: cvpcb/cvframe.cpp:285
msgid ""
"Net and component list modified.\n"
"Save before exit ?"
......@@ -10905,26 +10914,26 @@ msgstr ""
"Netlist et liste composants modifiés,\n"
"Sauver avant de quitter ?"
#: cvpcb/cvframe.cpp:308
#: cvpcb/cvframe.cpp:309
msgid "Problem when saving files, exit anyway ?"
msgstr "Problème en sauvant les fichiers, quitter quand même"
#: cvpcb/cvframe.cpp:434
#: cvpcb/cvframe.cpp:435
msgid "Delete selections"
msgstr "Effacement des associations existantes"
#: cvpcb/cvframe.cpp:448
#: cvpcb/cvframe.cpp:449
#: cvpcb/init.cpp:65
#: cvpcb/init.cpp:115
#, c-format
msgid "Components: %d (free: %d)"
msgstr "Composants: %d (libres: %d)"
#: cvpcb/cvframe.cpp:470
#: cvpcb/cvframe.cpp:471
msgid "unnamed"
msgstr "non nommé"
#: cvpcb/cvframe.cpp:472
#: cvpcb/cvframe.cpp:473
msgid "Open Net List"
msgstr "Ouvrir Fichier Netliste"
......@@ -11028,11 +11037,11 @@ msgstr "Cvpcb est en cours d'exécution. Continuer ?"
msgid " [no file]"
msgstr " [pas de fichier]"
#: cvpcb/setvisu.cpp:47
#: cvpcb/setvisu.cpp:48
msgid "Footprint: "
msgstr "Module: "
#: cvpcb/setvisu.cpp:50
#: cvpcb/setvisu.cpp:51
msgid "Lib: "
msgstr "Lib: "
......@@ -11124,22 +11133,22 @@ msgstr "Modules (Tous): %d"
msgid "Footprints (filtered): %d"
msgstr "Modules (filtrés): %d"
#: cvpcb/loadcmp.cpp:46
#: cvpcb/loadcmp.cpp:47
#, c-format
msgid "PCB foot print library file <%s> could not be found in the default search paths."
msgstr "Le fichier librairie de modules PCB <%s> n'a pas pu être trouvé dans les chemins de recherche par défaut."
#: cvpcb/loadcmp.cpp:57
#: cvpcb/loadcmp.cpp:58
#, c-format
msgid "Could not open PCB foot print library file <%s>."
msgstr "Ne peut ouvrir le fichier librairie de modules PCB <%s>."
#: cvpcb/loadcmp.cpp:70
#: cvpcb/loadcmp.cpp:71
#, c-format
msgid "<%s> is not a valid Kicad PCB foot print library."
msgstr "<%s> in'est pas un fichier de module PCB Kicad valide."
#: cvpcb/loadcmp.cpp:131
#: cvpcb/loadcmp.cpp:132
#, c-format
msgid "Module %s not found"
msgstr "Module %s non trouvé"
......@@ -11216,62 +11225,42 @@ msgstr "Montre la liste filtrée des modules pour le composant courant"
msgid "Display the full footprint list (without filtering)"
msgstr "Montre la liste complète des modules"
#: cvpcb/displayframe.cpp:156
msgid "Display Options"
msgstr "Options d'Affichage"
#: cvpcb/displayframe.cpp:162
msgid "Zoom in (F1)"
msgstr "Zoom + (F1)"
#: cvpcb/displayframe.cpp:166
msgid "Zoom out (F2)"
msgstr "Zoom - (F2)"
#: cvpcb/displayframe.cpp:170
msgid "Redraw view (F3)"
msgstr "Redessin de l'écran (F3)"
#: cvpcb/displayframe.cpp:174
msgid "Zoom auto (Home)"
msgstr "Zoom Automatique (Home)"
#: cvpcb/dialog_display_options.cpp:150
#: cvpcb/dialog_display_options.cpp:162
#: cvpcb/dialog_display_options.cpp:151
#: cvpcb/dialog_display_options.cpp:163
msgid "&Line"
msgstr "&Ligne"
#: cvpcb/dialog_display_options.cpp:151
#: cvpcb/dialog_display_options.cpp:163
#: cvpcb/dialog_display_options.cpp:152
#: cvpcb/dialog_display_options.cpp:164
msgid "&Filled"
msgstr "&Plein"
#: cvpcb/dialog_display_options.cpp:152
#: cvpcb/dialog_display_options.cpp:164
#: cvpcb/dialog_display_options.cpp:153
#: cvpcb/dialog_display_options.cpp:165
msgid "&Sketch"
msgstr "&Contour"
#: cvpcb/dialog_display_options.cpp:154
#: cvpcb/dialog_display_options.cpp:155
msgid "Edges:"
msgstr "Contours:"
#: cvpcb/dialog_display_options.cpp:177
#: cvpcb/dialog_display_options.cpp:178
msgid "Fill &pad"
msgstr "&Pad Plein"
#: cvpcb/dialog_display_options.cpp:183
#: cvpcb/dialog_display_options.cpp:184
msgid "Fill &via"
msgstr "&Via Pleine"
#: cvpcb/dialog_display_options.cpp:189
#: cvpcb/dialog_display_options.cpp:190
msgid "Show pad &number"
msgstr "Afficher le n° de &pad"
#: cvpcb/dialog_display_options.cpp:193
#: cvpcb/dialog_display_options.cpp:194
msgid "Display pad number"
msgstr "Afficher numéro des pastilles"
#: cvpcb/dialog_display_options.cpp:220
#: cvpcb/dialog_display_options.cpp:221
msgid "&Apply"
msgstr "&Appliquer"
......@@ -11279,6 +11268,26 @@ msgstr "&Appliquer"
msgid "Footprint alias files"
msgstr "Fichier Alias Modules"
#: cvpcb/class_DisplayFootprintsFrame.cpp:157
msgid "Display Options"
msgstr "Options d'Affichage"
#: cvpcb/class_DisplayFootprintsFrame.cpp:163
msgid "Zoom in (F1)"
msgstr "Zoom + (F1)"
#: cvpcb/class_DisplayFootprintsFrame.cpp:167
msgid "Zoom out (F2)"
msgstr "Zoom - (F2)"
#: cvpcb/class_DisplayFootprintsFrame.cpp:171
msgid "Redraw view (F3)"
msgstr "Redessin de l'écran (F3)"
#: cvpcb/class_DisplayFootprintsFrame.cpp:175
msgid "Zoom auto (Home)"
msgstr "Zoom Automatique (Home)"
#: kicad/kicad.cpp:78
#: kicad/prjconfig.cpp:108
msgid "Working dir: "
......@@ -11809,20 +11818,20 @@ msgstr "Ext. Fichiers Gerber"
msgid "D code File Ext:"
msgstr "Ext. Fichiers DCodes:"
#: gerbview/set_color.cpp:247
#: gerbview/set_color.cpp:273
#: gerbview/set_color.cpp:249
#: gerbview/set_color.cpp:275
msgid "Show None"
msgstr "Rien Afficher"
#: gerbview/set_color.cpp:256
#: gerbview/set_color.cpp:258
msgid "Show All"
msgstr "Tout Afficher"
#: gerbview/set_color.cpp:268
#: gerbview/set_color.cpp:270
msgid "Switch on all of the Gerber layers"
msgstr "Affiche toutes les couches Gerber"
#: gerbview/set_color.cpp:276
#: gerbview/set_color.cpp:278
msgid "Switch off all of the Gerber layers"
msgstr "N'affiche pas les couches Gerber"
......@@ -11852,7 +11861,7 @@ msgstr "Effacer couche %d"
msgid "GerbView project files (.cnf)|*.cnf"
msgstr "Fichiers projet GerbView (.cnf)|*.cnf"
#: gerbview/gerbview.cpp:91
#: gerbview/gerbview.cpp:92
msgid "GerbView is already running. Continue?"
msgstr "Gerbview est en cours d'exécution. Continuer ?"
......@@ -12178,9 +12187,21 @@ msgstr " Afficher Limites de Page"
msgid "Show D codes"
msgstr "Montrer DCodes"
#: gerbview/gerberframe.cpp:212
msgid "Layer modified, Continue ?"
msgstr "Couche modifiée, Continuer ?"
#: gerbview/class_gerbview_layer_widget.cpp:64
msgid "DCodes"
msgstr "DCodes"
#: gerbview/class_gerbview_layer_widget.cpp:64
msgid "Show DCodes identification"
msgstr ""
#: gerbview/class_gerbview_layer_widget.cpp:118
msgid "Show All Layers"
msgstr "Monter Toutes les Couches"
#: gerbview/class_gerbview_layer_widget.cpp:121
msgid "Hide All Layers"
msgstr "Cacher Toutes les Couches"
#: common/gestfich.cpp:446
#, c-format
......@@ -12364,27 +12385,27 @@ msgstr "Fichiers \"Portable document format\" (*.pdf)|*.pdf"
msgid "All files (*)|*"
msgstr "Tous les fichiers (*)|*"
#: common/common.cpp:228
#: common/common.cpp:227
msgid " (\"):"
msgstr " (\"):"
#: common/common.cpp:250
#: common/common.cpp:249
msgid "inches"
msgstr "Pouces"
#: common/common.cpp:258
#: common/common.cpp:257
msgid "centimeters"
msgstr "centimètres"
#: common/common.cpp:261
#: common/common.cpp:260
msgid "Unknown"
msgstr "Inconnu"
#: common/common.cpp:339
#: common/common.cpp:338
msgid " \""
msgstr " \""
#: common/drawframe.cpp:330
#: common/drawframe.cpp:332
msgid "??"
msgstr "??"
......@@ -12945,19 +12966,19 @@ msgstr "ERC Warning"
msgid "Erc Error"
msgstr "ERC Erreur"
#: eeschema/eelayer.h:255
#: eeschema/eelayer.h:246
msgid "Device"
msgstr "Composant"
#: eeschema/eelayer.h:261
#: eeschema/eelayer.h:252
msgid "Sheets"
msgstr "Feuilles"
#: eeschema/eelayer.h:267
#: eeschema/eelayer.h:258
msgid "Erc Mark"
msgstr "Marqueur ERC"
#: eeschema/eelayer.h:273
#: eeschema/eelayer.h:264
msgid "Other"
msgstr "Autre"
......@@ -13181,6 +13202,18 @@ msgstr "Options d'Affichage"
msgid "Page Settings"
msgstr "Ajustage opt Page"
#~ msgid "Print schematic sheet"
#~ msgstr "Impression des feuilles de schéma"
#~ msgid "Current"
#~ msgstr "Courant"
#~ msgid "Error initializing printer information."
#~ msgstr "Erreur init info imprimante"
#~ msgid "Printer error!"
#~ msgstr "Problème d'imprimante!"
#~ msgid "There was a problem printing."
#~ msgstr "Il y a un problème d'impression."
#~ msgid "Layer modified, Continue ?"
#~ msgstr "Couche modifiée, Continuer ?"
#~ msgid "Switch on all of the copper layers"
#~ msgstr "Affiche toutes les couches cuivre"
#~ msgid "Switch off all of the copper layers"
......@@ -13249,8 +13282,6 @@ msgstr "Ajustage opt Page"
#~ msgstr "Sauver sous..."
#~ msgid "Show board in the 3D viewer"
#~ msgstr "Visualisation du circuit en 3D"
#~ msgid "Show All Copper Layers"
#~ msgstr "Monter Toutes les Couches Cuivre."
#~ msgid "Show No Copper Layers"
#~ msgstr "Monter aucune Couche Cuivre."
#~ msgid "Click here to select this layer"
......@@ -13355,8 +13386,6 @@ msgstr "Ajustage opt Page"
#~ msgstr "&Style:"
#~ msgid "On-board, copper"
#~ msgstr "PCB, cuivre"
#~ msgid "All Layers On"
#~ msgstr "Toutes Couches Actives"
#~ msgid "Single Side"
#~ msgstr "Simple Face"
#~ msgid "Single Side, SMD on Back"
......
......@@ -27,6 +27,7 @@ set(PCBNEW_SRCS
block.cpp
block_module_editor.cpp
build_BOM_from_board.cpp
class_pcb_layer_widget.cpp
clean.cpp
# cleaningoptions_dialog.cpp
connect.cpp
......
/*
* This program source code file is part of KICAD, a free EDA CAD application.
*
* Copyright (C) 2004-2010 Jean-Pierre Charras, jean-pierre.charras@gpisa-lab.inpg.fr
* Copyright (C) 2010 SoftPLC Corporation, Dick Hollenbeck <dick@softplc.com>
* Copyright (C) 2010 Kicad Developers, see change_log.txt for contributors.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, you may find one here:
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
* or you may search the http://www.gnu.org website for the version 2 license,
* or you may write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
*/
/******************************************************/
/* class_pcb_layer_widget.cpp - Pcbnew layers manager */
/******************************************************/
#include "fctsys.h"
#include "appl_wxstruct.h"
#include "common.h"
#include "class_drawpanel.h"
#include "confirm.h"
#include "pcbnew.h"
#include "wxPcbStruct.h"
#include "pcbstruct.h" // enum PCB_VISIBLE
#include "collectors.h"
#include "bitmaps.h"
#include "pcbnew_id.h"
#include "layer_widget.h"
#include "class_pcb_layer_widget.h"
/**
* Class PCB_LAYER_WIDGET
* is here to implement the abtract functions of LAYER_WIDGET so they
* may be tied into the WinEDA_PcbFrame's data and so we can add a popup
* menu which is specific to PCBNEW's needs.
*/
PCB_LAYER_WIDGET::PCB_LAYER_WIDGET( WinEDA_PcbFrame* aParent, wxWindow* aFocusOwner, int aPointSize ) :
LAYER_WIDGET( aParent, aFocusOwner, aPointSize ),
myframe( aParent )
{
BOARD* board = myframe->GetBoard();
// Fixed "Rendering" tab rows within the LAYER_WIDGET, only the initial color
// is changed before appending to the LAYER_WIDGET. This is an automatic variable
// not a static variable, change the color & state after copying from code to renderRows
// on the stack.
LAYER_WIDGET::ROW renderRows[16] = {
#define RR LAYER_WIDGET::ROW // Render Row abreviation to reduce source width
// text id color tooltip checked
RR( _( "Through Via" ), VIA_THROUGH_VISIBLE, WHITE, _( "Show through vias" ) ),
RR( _( "Bl/Buried Via" ), VIA_BBLIND_VISIBLE, WHITE, _( "Show blind or buried vias" ) ),
RR( _( "Micro Via" ), VIA_MICROVIA_VISIBLE, WHITE, _( "Show micro vias") ),
RR( _( "Ratsnest" ), RATSNEST_VISIBLE, WHITE, _( "Show unconnected nets as a ratsnest") ),
RR( _( "Pads Front" ), PAD_FR_VISIBLE, WHITE, _( "Show footprint pads on board's front" ) ),
RR( _( "Pads Back" ), PAD_BK_VISIBLE, WHITE, _( "Show footprint pads on board's back" ) ),
RR( _( "Text Front" ), MOD_TEXT_FR_VISIBLE, WHITE, _( "Show footprint text on board's back" ) ),
RR( _( "Text Back" ), MOD_TEXT_BK_VISIBLE, WHITE, _( "Show footprint text on board's back" ) ),
RR( _( "Hidden Text" ), MOD_TEXT_INVISIBLE, WHITE, _( "Show footprint text marked as invisible" ) ),
RR( _( "Anchors" ), ANCHOR_VISIBLE, WHITE, _( "Show footprint and text origins as a cross" ) ),
RR( _( "Grid" ), GRID_VISIBLE, WHITE, _( "Show the (x,y) grid dots" ) ),
RR( _( "No-Connects" ), NO_CONNECTS_VISIBLE, -1, _( "Show a marker on pads which have no net connected" ) ),
RR( _( "Modules Front" ), MOD_FR_VISIBLE, -1, _( "Show footprints that are on board's front") ),
RR( _( "Modules Back" ), MOD_BK_VISIBLE, -1, _( "Show footprints that are on board's back") ),
RR( _( "Values" ), MOD_VALUES_VISIBLE, -1, _( "Show footprint's values") ),
RR( _( "References" ), MOD_REFERENCES_VISIBLE, -1, _( "Show footprint's references") ),
};
for( unsigned row=0; row<DIM(renderRows); ++row )
{
if( renderRows[row].color != -1 ) // does this row show a color?
{
// this window frame must have an established BOARD, i.e. after SetBoard()
renderRows[row].color = board->GetVisibleElementColor( renderRows[row].id );
}
renderRows[row].state = board->IsElementVisible( renderRows[row].id );
}
AppendRenderRows( renderRows, DIM(renderRows) );
//-----<Popup menu>-------------------------------------------------
// handle the popup menu over the layer window.
m_LayerScrolledWindow->Connect( wxEVT_RIGHT_DOWN,
wxMouseEventHandler( PCB_LAYER_WIDGET::onRightDownLayers ), NULL, this );
// since Popupmenu() calls this->ProcessEvent() we must call this->Connect()
// and not m_LayerScrolledWindow->Connect()
Connect( ID_SHOW_ALL_COPPERS, ID_SHOW_NO_COPPERS, wxEVT_COMMAND_MENU_SELECTED,
wxCommandEventHandler( PCB_LAYER_WIDGET::onPopupSelection ), NULL, this );
// install the right click handler into each control at end of ReFill()
// using installRightLayerClickHandler
}
void PCB_LAYER_WIDGET::installRightLayerClickHandler()
{
int rowCount = GetLayerRowCount();
for( int row=0; row<rowCount; ++row )
{
for( int col=0; col<LYR_COLUMN_COUNT; ++col )
{
wxWindow* w = getLayerComp( row, col );
w->Connect( wxEVT_RIGHT_DOWN, wxMouseEventHandler(
PCB_LAYER_WIDGET::onRightDownLayers ), NULL, this );
}
}
}
void PCB_LAYER_WIDGET::onRightDownLayers( wxMouseEvent& event )
{
wxMenu menu;
// menu text is capitalized:
// http://library.gnome.org/devel/hig-book/2.20/design-text-labels.html.en#layout-capitalization
menu.Append( new wxMenuItem( &menu, ID_SHOW_ALL_COPPERS,
_("Show All Cu") ) );
menu.Append( new wxMenuItem( &menu, ID_SHOW_NO_COPPERS,
_( "Hide All Cu" ) ) );
PopupMenu( &menu );
passOnFocus();
}
void PCB_LAYER_WIDGET::onPopupSelection( wxCommandEvent& event )
{
int rowCount;
int menuId = event.GetId();
bool visible;
switch( menuId )
{
case ID_SHOW_ALL_COPPERS:
visible = true;
goto L_change_coppers;
case ID_SHOW_NO_COPPERS:
visible = false;
L_change_coppers:
int lastCu = -1;
rowCount = GetLayerRowCount();
for( int row=rowCount-1; row>=0; --row )
{
wxCheckBox* cb = (wxCheckBox*) getLayerComp( row, 3 );
int layer = getDecodedId( cb->GetId() );
if( IsValidCopperLayerIndex( layer ) )
{
lastCu = row;
break;
}
}
for( int row=0; row<rowCount; ++row )
{
wxCheckBox* cb = (wxCheckBox*) getLayerComp( row, 3 );
int layer = getDecodedId( cb->GetId() );
if( IsValidCopperLayerIndex( layer ) )
{
cb->SetValue( visible );
bool isLastCopperLayer = (row==lastCu);
OnLayerVisible( layer, visible, isLastCopperLayer );
if( isLastCopperLayer )
break;
}
}
break;
}
}
void PCB_LAYER_WIDGET::ReFill()
{
BOARD* brd = myframe->GetBoard();
int layer;
int enabledLayers = brd->GetEnabledLayers();
// m_Layers->Freeze(); // no screen updates until done modifying
ClearLayerRows();
// show all coppers first, with front on top, back on bottom, then technical layers
layer = LAYER_N_FRONT;
if( enabledLayers & (1 << layer) )
{
AppendLayerRow( LAYER_WIDGET::ROW(
brd->GetLayerName( layer ), layer, brd->GetLayerColor( layer ), _("Front copper layer"), true ) );
}
for( layer = LAYER_N_FRONT-1; layer >= 1; --layer )
{
if( enabledLayers & (1 << layer) )
{
AppendLayerRow( LAYER_WIDGET::ROW(
brd->GetLayerName( layer ), layer, brd->GetLayerColor( layer ), _("An innner copper layer"), true ) );
}
}
layer = LAYER_N_BACK;
if( enabledLayers & (1 << layer) )
{
AppendLayerRow( LAYER_WIDGET::ROW(
brd->GetLayerName( layer ), layer, brd->GetLayerColor( layer ), _("Back copper layer"), true ) );
}
// technical layers are shown in this order:
static const struct {
int layerId;
wxString tooltip;
} techLayerSeq[] = {
{ ADHESIVE_N_FRONT, _( "Adhesive on board's front" ) },
{ ADHESIVE_N_BACK, _( "Adhesive on board's back" ) },
{ SOLDERPASTE_N_FRONT, _( "Solder paste on board's front" )},
{ SOLDERPASTE_N_BACK, _( "Solder paste on board's back" ) },
{ SILKSCREEN_N_FRONT, _( "Silkscreen on board's front" ) },
{ SILKSCREEN_N_BACK, _( "Silkscreen on board's back" ) },
{ SOLDERMASK_N_FRONT, _( "Solder mask on board's front" ) },
{ SOLDERMASK_N_BACK, _( "Solder mask on board's back" ) },
{ DRAW_N, _( "Explanatory drawings" ) },
{ COMMENT_N, _( "Explanatory comments" ) },
{ ECO1_N, _( "TDB" ) },
{ ECO2_N, _( "TBD" ) },
{ EDGE_N, _( "Board's perimeter definition" ) },
};
for( unsigned i=0; i<DIM(techLayerSeq); ++i )
{
layer = techLayerSeq[i].layerId;
if( !(enabledLayers & (1 << layer)) )
continue;
AppendLayerRow( LAYER_WIDGET::ROW(
brd->GetLayerName( layer ), layer, brd->GetLayerColor( layer ),
techLayerSeq[i].tooltip, true ) );
}
installRightLayerClickHandler();
// m_Layers->Thaw();
}
//-----<LAYER_WIDGET callbacks>-------------------------------------------
void PCB_LAYER_WIDGET::OnLayerColorChange( int aLayer, int aColor )
{
myframe->GetBoard()->SetLayerColor( aLayer, aColor );
myframe->DrawPanel->Refresh();
}
bool PCB_LAYER_WIDGET::OnLayerSelect( int aLayer )
{
// the layer change from the PCB_LAYER_WIDGET can be denied by returning
// false from this function.
myframe->setActiveLayer( aLayer, false );
myframe->syncLayerBox();
if(DisplayOpt.ContrastModeDisplay)
myframe->DrawPanel->Refresh();
return true;
}
void PCB_LAYER_WIDGET::OnLayerVisible( int aLayer, bool isVisible, bool isFinal )
{
BOARD* brd = myframe->GetBoard();
int visibleLayers = brd->GetVisibleLayers();
if( isVisible )
visibleLayers |= (1 << aLayer);
else
visibleLayers &= ~(1 << aLayer);
brd->SetVisibleLayers( visibleLayers );
if( isFinal )
myframe->DrawPanel->Refresh();
}
void PCB_LAYER_WIDGET::OnRenderColorChange( int aId, int aColor )
{
myframe->GetBoard()->SetVisibleElementColor( aId, aColor );
myframe->DrawPanel->Refresh();
}
void PCB_LAYER_WIDGET::OnRenderEnable( int aId, bool isEnabled )
{
BOARD* brd = myframe->GetBoard();
/* @todo:
move:
GRID_VISIBLE, ? maybe not this one
into m_VisibleElements and get rid of globals.
*/
switch( aId )
{
// see todo above, don't really want anything except IsElementVisible() here.
case GRID_VISIBLE:
// @todo, make read/write accessors for grid control so the write accessor can fire updates to
// grid state listeners. I think the grid state should be kept in the BOARD.
brd->SetElementVisibility( aId, isEnabled ); // set visibilty flag also in list, and myframe->m_Draw_Grid
break;
default:
brd->SetElementVisibility( aId, isEnabled );
}
myframe->DrawPanel->Refresh();
}
//-----</LAYER_WIDGET callbacks>------------------------------------------
/*
* This program source code file is part of KICAD, a free EDA CAD application.
*
* Copyright (C) 2004-2010 Jean-Pierre Charras, jean-pierre.charras@gpisa-lab.inpg.fr
* Copyright (C) 2010 SoftPLC Corporation, Dick Hollenbeck <dick@softplc.com>
* Copyright (C) 2010 Kicad Developers, see change_log.txt for contributors.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, you may find one here:
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
* or you may search the http://www.gnu.org website for the version 2 license,
* or you may write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
*/
/************************************************************/
/* class_pcb_layer_widget.h : header for the layers manager */
/************************************************************/
#ifndef _CLASS_PCB_LAYER_WIDGET_H_
#define _CLASS_PCB_LAYER_WIDGET_H_
/**
* Class PCB_LAYER_WIDGET
* is here to implement the abtract functions of LAYER_WIDGET so they
* may be tied into the WinEDA_PcbFrame's data and so we can add a popup
* menu which is specific to PCBNEW's needs.
*/
class PCB_LAYER_WIDGET : public LAYER_WIDGET
{
WinEDA_PcbFrame* myframe;
// popup menu ids.
#define ID_SHOW_ALL_COPPERS wxID_HIGHEST
#define ID_SHOW_NO_COPPERS (wxID_HIGHEST+1)
/**
* Function OnRightDownLayers
* puts up a popup menu for the layer panel.
*/
void onRightDownLayers( wxMouseEvent& event );
void onPopupSelection( wxCommandEvent& event );
/// this is for the popup menu, the right click handler has to be installed
/// on every child control within the layer panel.
void installRightLayerClickHandler();
public:
/**
* Constructor
* @param aPointSize is the font point size to use within the widget. This
* effectively sets the overal size of the widget via the row height and bitmap
* button sizes.
*/
PCB_LAYER_WIDGET( WinEDA_PcbFrame* aParent, wxWindow* aFocusOwner, int aPointSize = 10 );
void ReFill();
//-----<implement LAYER_WIDGET abstract callback functions>-----------
void OnLayerColorChange( int aLayer, int aColor );
bool OnLayerSelect( int aLayer );
void OnLayerVisible( int aLayer, bool isVisible, bool isFinal );
void OnRenderColorChange( int aId, int aColor );
void OnRenderEnable( int aId, bool isEnabled );
//-----</implement LAYER_WIDGET abstract callback functions>----------
};
#endif // _CLASS_PCB_LAYER_WIDGET_H_
......@@ -44,18 +44,6 @@ void Dialog_GeneralOptions::init()
wxString timevalue;
timevalue << g_TimeOut / 60;
m_SaveTime->SetValue( timevalue );
/*
* int layer_count[] = {1,2,4,6,8,10,12,14,16};
* m_LayerNumber->SetSelection(1);
* for ( unsigned ii = 0; ii < sizeof(layer_count); ii++ )
* {
* if ( g_DesignSettings.m_CopperLayerCount != layer_count[ii] )
* continue;
* m_LayerNumber->SetSelection(ii);
* break;
* }
*/
m_MaxShowLinks->SetValue( g_MaxLinksShowed );
m_DrcOn->SetValue( Drc_On );
......@@ -249,21 +237,11 @@ void WinEDA_PcbFrame::OnSelectOptionToolbar( wxCommandEvent& event )
case ID_TB_OPTIONS_SHOW_EXTRA_VERTICAL_TOOLBAR1:
m_show_microwave_tools = state;
#if !defined(KICAD_AUIMANAGER)
// show auxiliary Vertical toolbar (Microwave tool)
m_AuxVToolBar->Show(m_show_microwave_tools);
{
wxSizeEvent SizeEv( GetSize() );
OnSize( SizeEv );
}
#else
m_auimgr.GetPane( wxT( "m_AuxVToolBar" ) ).Show( m_show_microwave_tools );
m_auimgr.Update();
#endif
break;
case ID_TB_OPTIONS_SHOW_MANAGE_LAYERS_VERTICAL_TOOLBAR:
#if defined(KICAD_AUIMANAGER)
case ID_TB_OPTIONS_SHOW_LAYERS_MANAGER_VERTICAL_TOOLBAR:
// show auxiliary Vertical layers and visibility manager toolbar
m_show_layer_manager_tools = state;
m_auimgr.GetPane( wxT( "m_LayersManagerToolBar" ) ).Show( m_show_layer_manager_tools );
......@@ -274,7 +252,6 @@ void WinEDA_PcbFrame::OnSelectOptionToolbar( wxCommandEvent& event )
else
GetMenuBar()->SetLabel(ID_MENU_PCB_SHOW_HIDE_LAYERS_MANAGER_DIALOG,
_("Show &Layers Manager" ) );
#endif
break;
default:
......
......@@ -397,7 +397,7 @@ void WinEDA_PcbFrame::ReCreateMenuBar()
item = new wxMenuItem( configmenu, ID_MENU_PCB_SHOW_HIDE_LAYERS_MANAGER_DIALOG,
_( "Hide &Layers Manager" ),
_( "Show/hide the layers manager toolbar" ) );
item->SetBitmap( palette_xpm );
item->SetBitmap( layers_manager_xpm );
configmenu->Append( item );
/* General */
......
......@@ -45,350 +45,7 @@
#include "kbool/include/kbool/booleng.h"
#include "layer_widget.h"
#include "dialog_design_rules.h"
/**
* Class PCB_LAYER_WIDGET
* is here to implement the abtract functions of LAYER_WIDGET so they
* may be tied into the WinEDA_PcbFrame's data and so we can add a popup
* menu which is specific to PCBNEW's needs.
*/
class PCB_LAYER_WIDGET : public LAYER_WIDGET
{
WinEDA_PcbFrame* myframe;
// popup menu ids.
#define ID_SHOW_ALL_COPPERS wxID_HIGHEST
#define ID_SHOW_NO_COPPERS (wxID_HIGHEST+1)
/**
* Function OnRightDownLayers
* puts up a popup menu for the layer panel.
*/
void onRightDownLayers( wxMouseEvent& event );
void onPopupSelection( wxCommandEvent& event );
/// this is for the popup menu, the right click handler has to be installed
/// on every child control within the layer panel.
void installRightLayerClickHandler();
public:
/**
* Constructor
* @param aPointSize is the font point size to use within the widget. This
* effectively sets the overal size of the widget via the row height and bitmap
* button sizes.
*/
PCB_LAYER_WIDGET( WinEDA_PcbFrame* aParent, wxWindow* aFocusOwner, int aPointSize = 10 );
void ReFill();
//-----<implement LAYER_WIDGET abstract callback functions>-----------
void OnLayerColorChange( int aLayer, int aColor );
bool OnLayerSelect( int aLayer );
void OnLayerVisible( int aLayer, bool isVisible, bool isFinal );
void OnRenderColorChange( int aId, int aColor );
void OnRenderEnable( int aId, bool isEnabled );
//-----</implement LAYER_WIDGET abstract callback functions>----------
};
PCB_LAYER_WIDGET::PCB_LAYER_WIDGET( WinEDA_PcbFrame* aParent, wxWindow* aFocusOwner, int aPointSize ) :
LAYER_WIDGET( aParent, aFocusOwner, aPointSize ),
myframe( aParent )
{
BOARD* board = myframe->GetBoard();
// Fixed "Rendering" tab rows within the LAYER_WIDGET, only the initial color
// is changed before appending to the LAYER_WIDGET. This is an automatic variable
// not a static variable, change the color & state after copying from code to renderRows
// on the stack.
LAYER_WIDGET::ROW renderRows[16] = {
#define RR LAYER_WIDGET::ROW // Render Row abreviation to reduce source width
// text id color tooltip checked
RR( _( "Through Via" ), VIA_THROUGH_VISIBLE, WHITE, _( "Show through vias" ) ),
RR( _( "Bl/Buried Via" ), VIA_BBLIND_VISIBLE, WHITE, _( "Show blind or buried vias" ) ),
RR( _( "Micro Via" ), VIA_MICROVIA_VISIBLE, WHITE, _( "Show micro vias") ),
RR( _( "Ratsnest" ), RATSNEST_VISIBLE, WHITE, _( "Show unconnected nets as a ratsnest") ),
RR( _( "Pads Front" ), PAD_FR_VISIBLE, WHITE, _( "Show footprint pads on board's front" ) ),
RR( _( "Pads Back" ), PAD_BK_VISIBLE, WHITE, _( "Show footprint pads on board's back" ) ),
RR( _( "Text Front" ), MOD_TEXT_FR_VISIBLE, WHITE, _( "Show footprint text on board's back" ) ),
RR( _( "Text Back" ), MOD_TEXT_BK_VISIBLE, WHITE, _( "Show footprint text on board's back" ) ),
RR( _( "Hidden Text" ), MOD_TEXT_INVISIBLE, WHITE, _( "Show footprint text marked as invisible" ) ),
RR( _( "Anchors" ), ANCHOR_VISIBLE, WHITE, _( "Show footprint and text origins as a cross" ) ),
RR( _( "Grid" ), GRID_VISIBLE, WHITE, _( "Show the (x,y) grid dots" ) ),
RR( _( "No-Connects" ), NO_CONNECTS_VISIBLE, -1, _( "Show a marker on pads which have no net connected" ) ),
RR( _( "Modules Front" ), MOD_FR_VISIBLE, -1, _( "Show footprints that are on board's front") ),
RR( _( "Modules Back" ), MOD_BK_VISIBLE, -1, _( "Show footprints that are on board's back") ),
RR( _( "Values" ), MOD_VALUES_VISIBLE, -1, _( "Show footprint's values") ),
RR( _( "References" ), MOD_REFERENCES_VISIBLE, -1, _( "Show footprint's references") ),
};
for( unsigned row=0; row<DIM(renderRows); ++row )
{
if( renderRows[row].color != -1 ) // does this row show a color?
{
// this window frame must have an established BOARD, i.e. after SetBoard()
renderRows[row].color = board->GetVisibleElementColor( renderRows[row].id );
}
renderRows[row].state = board->IsElementVisible( renderRows[row].id );
}
AppendRenderRows( renderRows, DIM(renderRows) );
//-----<Popup menu>-------------------------------------------------
// handle the popup menu over the layer window.
m_LayerScrolledWindow->Connect( wxEVT_RIGHT_DOWN,
wxMouseEventHandler( PCB_LAYER_WIDGET::onRightDownLayers ), NULL, this );
// since Popupmenu() calls this->ProcessEvent() we must call this->Connect()
// and not m_LayerScrolledWindow->Connect()
Connect( ID_SHOW_ALL_COPPERS, ID_SHOW_NO_COPPERS, wxEVT_COMMAND_MENU_SELECTED,
wxCommandEventHandler( PCB_LAYER_WIDGET::onPopupSelection ), NULL, this );
// install the right click handler into each control at end of ReFill()
// using installRightLayerClickHandler
}
void PCB_LAYER_WIDGET::installRightLayerClickHandler()
{
int rowCount = GetLayerRowCount();
for( int row=0; row<rowCount; ++row )
{
for( int col=0; col<LYR_COLUMN_COUNT; ++col )
{
wxWindow* w = getLayerComp( row, col );
w->Connect( wxEVT_RIGHT_DOWN, wxMouseEventHandler(
PCB_LAYER_WIDGET::onRightDownLayers ), NULL, this );
}
}
}
void PCB_LAYER_WIDGET::onRightDownLayers( wxMouseEvent& event )
{
wxMenu menu;
// menu text is capitalized:
// http://library.gnome.org/devel/hig-book/2.20/design-text-labels.html.en#layout-capitalization
menu.Append( new wxMenuItem( &menu, ID_SHOW_ALL_COPPERS,
_("Show All Cu") ) );
menu.Append( new wxMenuItem( &menu, ID_SHOW_NO_COPPERS,
_( "Hide All Cu" ) ) );
PopupMenu( &menu );
passOnFocus();
}
void PCB_LAYER_WIDGET::onPopupSelection( wxCommandEvent& event )
{
int rowCount;
int menuId = event.GetId();
bool visible;
switch( menuId )
{
case ID_SHOW_ALL_COPPERS:
visible = true;
goto L_change_coppers;
case ID_SHOW_NO_COPPERS:
visible = false;
L_change_coppers:
int lastCu = -1;
rowCount = GetLayerRowCount();
for( int row=rowCount-1; row>=0; --row )
{
wxCheckBox* cb = (wxCheckBox*) getLayerComp( row, 3 );
int layer = getDecodedId( cb->GetId() );
if( IsValidCopperLayerIndex( layer ) )
{
lastCu = row;
break;
}
}
for( int row=0; row<rowCount; ++row )
{
wxCheckBox* cb = (wxCheckBox*) getLayerComp( row, 3 );
int layer = getDecodedId( cb->GetId() );
if( IsValidCopperLayerIndex( layer ) )
{
cb->SetValue( visible );
bool isLastCopperLayer = (row==lastCu);
OnLayerVisible( layer, visible, isLastCopperLayer );
if( isLastCopperLayer )
break;
}
}
break;
}
}
void PCB_LAYER_WIDGET::ReFill()
{
BOARD* brd = myframe->GetBoard();
int layer;
int enabledLayers = brd->GetEnabledLayers();
// m_Layers->Freeze(); // no screen updates until done modifying
ClearLayerRows();
// show all coppers first, with front on top, back on bottom, then technical layers
layer = LAYER_N_FRONT;
if( enabledLayers & (1 << layer) )
{
AppendLayerRow( LAYER_WIDGET::ROW(
brd->GetLayerName( layer ), layer, brd->GetLayerColor( layer ), _("Front copper layer"), true ) );
}
for( layer = LAYER_N_FRONT-1; layer >= 1; --layer )
{
if( enabledLayers & (1 << layer) )
{
AppendLayerRow( LAYER_WIDGET::ROW(
brd->GetLayerName( layer ), layer, brd->GetLayerColor( layer ), _("An innner copper layer"), true ) );
}
}
layer = LAYER_N_BACK;
if( enabledLayers & (1 << layer) )
{
AppendLayerRow( LAYER_WIDGET::ROW(
brd->GetLayerName( layer ), layer, brd->GetLayerColor( layer ), _("Back copper layer"), true ) );
}
// technical layers are shown in this order:
static const struct {
int layerId;
wxString tooltip;
} techLayerSeq[] = {
{ ADHESIVE_N_FRONT, _( "Adhesive on board's front" ) },
{ ADHESIVE_N_BACK, _( "Adhesive on board's back" ) },
{ SOLDERPASTE_N_FRONT, _( "Solder paste on board's front" )},
{ SOLDERPASTE_N_BACK, _( "Solder paste on board's back" ) },
{ SILKSCREEN_N_FRONT, _( "Silkscreen on board's front" ) },
{ SILKSCREEN_N_BACK, _( "Silkscreen on board's back" ) },
{ SOLDERMASK_N_FRONT, _( "Solder mask on board's front" ) },
{ SOLDERMASK_N_BACK, _( "Solder mask on board's back" ) },
{ DRAW_N, _( "Explanatory drawings" ) },
{ COMMENT_N, _( "Explanatory comments" ) },
{ ECO1_N, _( "TDB" ) },
{ ECO2_N, _( "TBD" ) },
{ EDGE_N, _( "Board's perimeter definition" ) },
};
for( unsigned i=0; i<DIM(techLayerSeq); ++i )
{
layer = techLayerSeq[i].layerId;
if( !(enabledLayers & (1 << layer)) )
continue;
AppendLayerRow( LAYER_WIDGET::ROW(
brd->GetLayerName( layer ), layer, brd->GetLayerColor( layer ),
techLayerSeq[i].tooltip, true ) );
}
installRightLayerClickHandler();
// m_Layers->Thaw();
}
//-----<LAYER_WIDGET callbacks>-------------------------------------------
void PCB_LAYER_WIDGET::OnLayerColorChange( int aLayer, int aColor )
{
myframe->GetBoard()->SetLayerColor( aLayer, aColor );
myframe->DrawPanel->Refresh();
}
bool PCB_LAYER_WIDGET::OnLayerSelect( int aLayer )
{
// the layer change from the PCB_LAYER_WIDGET can be denied by returning
// false from this function.
myframe->setActiveLayer( aLayer, false );
myframe->syncLayerBox();
if(DisplayOpt.ContrastModeDisplay)
myframe->DrawPanel->Refresh();
return true;
}
void PCB_LAYER_WIDGET::OnLayerVisible( int aLayer, bool isVisible, bool isFinal )
{
BOARD* brd = myframe->GetBoard();
int visibleLayers = brd->GetVisibleLayers();
if( isVisible )
visibleLayers |= (1 << aLayer);
else
visibleLayers &= ~(1 << aLayer);
brd->SetVisibleLayers( visibleLayers );
if( isFinal )
myframe->DrawPanel->Refresh();
}
void PCB_LAYER_WIDGET::OnRenderColorChange( int aId, int aColor )
{
myframe->GetBoard()->SetVisibleElementColor( aId, aColor );
myframe->DrawPanel->Refresh();
}
void PCB_LAYER_WIDGET::OnRenderEnable( int aId, bool isEnabled )
{
BOARD* brd = myframe->GetBoard();
/* @todo:
move:
GRID_VISIBLE, ? maybe not this one
into m_VisibleElements and get rid of globals.
*/
switch( aId )
{
// see todo above, don't really want anything except IsElementVisible() here.
case GRID_VISIBLE:
// @todo, make read/write accessors for grid control so the write accessor can fire updates to
// grid state listeners. I think the grid state should be kept in the BOARD.
brd->SetElementVisibility( aId, isEnabled ); // set visibilty flag also in list, and myframe->m_Draw_Grid
break;
default:
brd->SetElementVisibility( aId, isEnabled );
}
myframe->DrawPanel->Refresh();
}
//-----</LAYER_WIDGET callbacks>------------------------------------------
#include "class_pcb_layer_widget.h"
......@@ -634,6 +291,9 @@ WinEDA_PcbFrame::WinEDA_PcbFrame( wxWindow* father,
m_InternalUnits = PCB_INTERNAL_UNIT; // Unites internes = 1/10000 inch
SetBaseScreen( ScreenPcb );
// LoadSettings() *after* creating m_LayersManager, because LoadSettings()
// initialize parameters in m_LayersManager
LoadSettings();
SetSize( m_FramePos.x, m_FramePos.y, m_FrameSize.x, m_FrameSize.y );
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment