Commit a1998410 authored by charras's avatar charras

Some enhancements and fixes. (see changelog)

parent cacb2225
...@@ -4,6 +4,15 @@ KiCad ChangeLog 2009 ...@@ -4,6 +4,15 @@ KiCad ChangeLog 2009
Please add newer entries at the top, list the date and your name with Please add newer entries at the top, list the date and your name with
email address. email address.
2009-Dec-30 UPDATE Jean-Pierre Charras <jean-pierre.charras@gipsa-lab.inpg.fr>
================================================================================
++pcbnew
Added option to use some usual Gerber files extension, depending on the layer
Do not allow in plot menu to output files for non enabled layers.
++Kicad and Gerbview
Display Gerber files that use usual files extension (in tree project or dialog files)
(See http://en.wikipedia.org/wiki/Gerber_File)
2009-Dec-20 UPDATE Dick Hollenbeck <dick@softplc.com> 2009-Dec-20 UPDATE Dick Hollenbeck <dick@softplc.com>
================================================================================ ================================================================================
++pcbnew ++pcbnew
......
...@@ -521,7 +521,7 @@ void WinEDA_DrawPanel::EraseScreen( wxDC* DC ) ...@@ -521,7 +521,7 @@ void WinEDA_DrawPanel::EraseScreen( wxDC* DC )
#ifndef WX_ZOOM #ifndef WX_ZOOM
GRSFilledRect( &m_ClipBox, DC, m_ClipBox.GetX(), m_ClipBox.GetY(), GRSFilledRect( &m_ClipBox, DC, m_ClipBox.GetX(), m_ClipBox.GetY(),
m_ClipBox.GetRight(), m_ClipBox.GetBottom(), m_ClipBox.GetRight(), m_ClipBox.GetBottom(),
g_DrawBgColor, g_DrawBgColor ); 0, g_DrawBgColor, g_DrawBgColor );
#else #else
EDA_Rect tmp = m_ClipBox; EDA_Rect tmp = m_ClipBox;
...@@ -534,7 +534,7 @@ void WinEDA_DrawPanel::EraseScreen( wxDC* DC ) ...@@ -534,7 +534,7 @@ void WinEDA_DrawPanel::EraseScreen( wxDC* DC )
GRSFilledRect( &m_ClipBox, DC, m_ClipBox.GetX(), m_ClipBox.GetY(), GRSFilledRect( &m_ClipBox, DC, m_ClipBox.GetX(), m_ClipBox.GetY(),
m_ClipBox.GetRight(), m_ClipBox.GetBottom(), m_ClipBox.GetRight(), m_ClipBox.GetBottom(),
g_DrawBgColor, g_DrawBgColor ); 0, g_DrawBgColor, g_DrawBgColor );
m_ClipBox = tmp; m_ClipBox = tmp;
#endif #endif
......
...@@ -60,15 +60,22 @@ static int PenMinWidth = 1; /* minimum pen width (must be> 0) ...@@ -60,15 +60,22 @@ static int PenMinWidth = 1; /* minimum pen width (must be> 0)
* (Useful for printing) */ * (Useful for printing) */
static bool ForceBlackPen; /* if true: draws in black instead of static bool ForceBlackPen; /* if true: draws in black instead of
* color for printing. */ * color for printing. */
static int xcliplo = 0, static int xcliplo = 0,
ycliplo = 0, ycliplo = 0,
xcliphi = 2000, xcliphi = 2000,
ycliphi = 2000; ycliphi = 2000;
static int lastcolor = -1; static int lastcolor = -1;
static int lastwidth = -1; static int lastwidth = -1;
static int s_Last_Pen_Style = -1; static int s_Last_Pen_Style = -1;
static wxDC* lastDC = NULL; static wxDC* lastDC = NULL;
/* Local functions: */
static void GRSRect( EDA_Rect* ClipBox, wxDC* DC, int x1, int y1,
int x2, int y2, int Color );
static void GRSRect( EDA_Rect* ClipBox, wxDC* DC, int x1, int y1,
int x2, int y2, int width, int Color );
/* /*
* Macro clipping the trace of a line: * Macro clipping the trace of a line:
* Line (x1, y1 x2, y2) is clipped to remain within * Line (x1, y1 x2, y2) is clipped to remain within
...@@ -362,9 +369,13 @@ void GRSetDrawMode( wxDC* DC, int draw_mode ) ...@@ -362,9 +369,13 @@ void GRSetDrawMode( wxDC* DC, int draw_mode )
if( draw_mode & GR_OR ) if( draw_mode & GR_OR )
#if defined(__WXMAC__) && (wxMAC_USE_CORE_GRAPHICS || wxCHECK_VERSION( 2, 9, 0 ) ) #if defined(__WXMAC__) && (wxMAC_USE_CORE_GRAPHICS || wxCHECK_VERSION( 2, 9, 0 ) )
DC->SetLogicalFunction( wxCOPY ); DC->SetLogicalFunction( wxCOPY );
#else #else
DC->SetLogicalFunction( wxOR ); DC->SetLogicalFunction( wxOR );
#endif #endif
else if( draw_mode & GR_XOR ) else if( draw_mode & GR_XOR )
...@@ -372,9 +383,13 @@ void GRSetDrawMode( wxDC* DC, int draw_mode ) ...@@ -372,9 +383,13 @@ void GRSetDrawMode( wxDC* DC, int draw_mode )
else if( draw_mode & GR_NXOR ) else if( draw_mode & GR_NXOR )
#if defined(__WXMAC__) && (wxMAC_USE_CORE_GRAPHICS || wxCHECK_VERSION( 2, 9, 0 ) ) #if defined(__WXMAC__) && (wxMAC_USE_CORE_GRAPHICS || wxCHECK_VERSION( 2, 9, 0 ) )
DC->SetLogicalFunction( wxXOR ); DC->SetLogicalFunction( wxXOR );
#else #else
DC->SetLogicalFunction( wxEQUIV ); DC->SetLogicalFunction( wxEQUIV );
#endif #endif
else else
...@@ -1397,7 +1412,7 @@ void GRArc( EDA_Rect* ClipBox, wxDC* DC, int xc, int yc, int StAngle, ...@@ -1397,7 +1412,7 @@ void GRArc( EDA_Rect* ClipBox, wxDC* DC, int xc, int yc, int StAngle,
GRSetColorPen( DC, Color ); GRSetColorPen( DC, Color );
GRSetBrush( DC, Color, FALSE ); GRSetBrush( DC, Color, FALSE );
DC->DrawArc( GRMapX( xc + x1 ), GRMapY( yc - y1 ), GRMapX( xc + x2 ), DC->DrawArc( GRMapX( xc + x1 ), GRMapY( yc - y1 ), GRMapX( xc + x2 ),
GRMapY( yc - y2 ), GRMapX( xc ), GRMapY( yc ) ); GRMapY( yc - y2 ), GRMapX( xc ), GRMapY( yc ) );
} }
...@@ -1422,13 +1437,9 @@ void GRArc( EDA_Rect* ClipBox, ...@@ -1422,13 +1437,9 @@ void GRArc( EDA_Rect* ClipBox,
/* /*
* Draw a rectangle in drawing space. * Draw a rectangle in drawing space.
*/ */
void GRRect( EDA_Rect* ClipBox, void GRRect( EDA_Rect* ClipBox, wxDC* DC,
wxDC* DC, int x1, int y1, int x2, int y2,
int x1, int Color )
int y1,
int x2,
int y2,
int Color )
{ {
x1 = GRMapX( x1 ); x1 = GRMapX( x1 );
y1 = GRMapY( y1 ); y1 = GRMapY( y1 );
...@@ -1438,18 +1449,25 @@ void GRRect( EDA_Rect* ClipBox, ...@@ -1438,18 +1449,25 @@ void GRRect( EDA_Rect* ClipBox,
GRSRect( ClipBox, DC, x1, y1, x2, y2, Color ); GRSRect( ClipBox, DC, x1, y1, x2, y2, Color );
} }
void GRRect( EDA_Rect* aClipBox, wxDC* aDC,
const EDA_Rect& aRect,
int aColor )
{
int x1 = GRMapX( aRect.GetX() );
int y1 = GRMapY( aRect.GetY() );
int x2 = GRMapX( aRect.GetRight() );
int y2 = GRMapY( aRect.GetBottom() );
GRSRect( aClipBox, aDC, x1, y1, x2, y2, aColor );
}
/* /*
* Draw a rectangle in drawing space. * Draw a rectangle (thick lines) in drawing space.
*/ */
void GRRect( EDA_Rect* ClipBox, void GRRect( EDA_Rect* ClipBox, wxDC* DC,
wxDC* DC, int x1, int y1, int x2, int y2,
int x1, int width, int Color )
int y1,
int x2,
int y2,
int width,
int Color )
{ {
x1 = GRMapX( x1 ); x1 = GRMapX( x1 );
y1 = GRMapY( y1 ); y1 = GRMapY( y1 );
...@@ -1460,6 +1478,20 @@ void GRRect( EDA_Rect* ClipBox, ...@@ -1460,6 +1478,20 @@ void GRRect( EDA_Rect* ClipBox,
GRSRect( ClipBox, DC, x1, y1, x2, y2, width, Color ); GRSRect( ClipBox, DC, x1, y1, x2, y2, width, Color );
} }
void GRRect( EDA_Rect* aClipBox, wxDC* aDC,
const EDA_Rect& aRect,
int aWidth, int aColor )
{
int x1 = GRMapX( aRect.GetX() );
int y1 = GRMapY( aRect.GetY() );
int x2 = GRMapX( aRect.GetRight() );
int y2 = GRMapY( aRect.GetBottom() );
int width = ZoomValue( aWidth );
GRSRect( aClipBox, aDC, x1, y1, x2, y2, width, aColor );
}
/* /*
* Draw a rectangle (filled with AreaColor) in drawing space. * Draw a rectangle (filled with AreaColor) in drawing space.
...@@ -1543,31 +1575,10 @@ void GRSRect( EDA_Rect* ClipBox, wxDC* DC, int x1, int y1, int x2, int y2, ...@@ -1543,31 +1575,10 @@ void GRSRect( EDA_Rect* ClipBox, wxDC* DC, int x1, int y1, int x2, int y2,
} }
/*
* Draw a filled rectangle in screen space.
*/
void GRSFilledRect( EDA_Rect* ClipBox,
wxDC* DC,
int x1,
int y1,
int x2,
int y2,
int Color,
int BgColor )
{
GRSFilledRect( ClipBox, DC, x1, y1, x2, y2, 0, Color, BgColor );
}
void GRSFilledRect( EDA_Rect* ClipBox, void GRSFilledRect( EDA_Rect* ClipBox, wxDC* DC,
wxDC* DC, int x1, int y1, int x2, int y2,
int x1, int width, int Color, int BgColor )
int y1,
int x2,
int y2,
int width,
int Color,
int BgColor )
{ {
if( x1 > x2 ) if( x1 > x2 )
EXCHG( x1, x2 ); EXCHG( x1, x2 );
...@@ -1635,11 +1646,11 @@ void ClipAndDrawFilledPoly( EDA_Rect* aClipBox, ...@@ -1635,11 +1646,11 @@ void ClipAndDrawFilledPoly( EDA_Rect* aClipBox,
clippedPolygon.clear(); clippedPolygon.clear();
for( int ii = 0; ii < n; ii++ ) for( int ii = 0; ii < n; ii++ )
inputPolygon.push_back( PointF( (REAL) aPoints[ii].x, inputPolygon.push_back( PointF( (REAL) aPoints[ii].x,
(REAL) aPoints[ii].y ) ); (REAL) aPoints[ii].y ) );
RectF window( (REAL) aClipBox->GetX(), (REAL) aClipBox->GetY(), RectF window( (REAL) aClipBox->GetX(), (REAL) aClipBox->GetY(),
(REAL) aClipBox->GetWidth(), (REAL) aClipBox->GetWidth(),
(REAL) aClipBox->GetHeight() ); (REAL) aClipBox->GetHeight() );
SutherlandHodgman sh( window ); SutherlandHodgman sh( window );
sh.Clip( inputPolygon, outputPolygon ); sh.Clip( inputPolygon, outputPolygon );
...@@ -1649,13 +1660,14 @@ void ClipAndDrawFilledPoly( EDA_Rect* aClipBox, ...@@ -1649,13 +1660,14 @@ void ClipAndDrawFilledPoly( EDA_Rect* aClipBox,
++cit ) ++cit )
{ {
clippedPolygon.push_back( wxPoint( wxRound( cit->X ), clippedPolygon.push_back( wxPoint( wxRound( cit->X ),
wxRound( cit->Y ) ) ); wxRound( cit->Y ) ) );
} }
if( clippedPolygon.size() ) if( clippedPolygon.size() )
aDC->DrawPolygon( clippedPolygon.size(), &clippedPolygon[0] ); aDC->DrawPolygon( clippedPolygon.size(), &clippedPolygon[0] );
} }
#endif #endif
......
...@@ -451,7 +451,7 @@ bool LIB_COMPONENT::Save( FILE* aFile ) ...@@ -451,7 +451,7 @@ bool LIB_COMPONENT::Save( FILE* aFile )
if( fprintf( aFile, "DEF" ) < 0 ) if( fprintf( aFile, "DEF" ) < 0 )
return false; return false;
if( ( value.m_Attributs & TEXT_NO_VISIBLE ) == 0 ) if( value.IsVisible() )
{ {
if( fprintf( aFile, " %s", CONV_TO_UTF8( value.m_Text ) ) < 0 ) if( fprintf( aFile, " %s", CONV_TO_UTF8( value.m_Text ) ) < 0 )
return false; return false;
...@@ -859,7 +859,7 @@ EDA_Rect LIB_COMPONENT::GetBoundaryBox( int aUnit, int aConvert ) ...@@ -859,7 +859,7 @@ EDA_Rect LIB_COMPONENT::GetBoundaryBox( int aUnit, int aConvert )
continue; continue;
if ( ( item.Type() == COMPONENT_FIELD_DRAW_TYPE ) if ( ( item.Type() == COMPONENT_FIELD_DRAW_TYPE )
&& ( ( ( LIB_TEXT& ) item ).m_Attributs & TEXT_NO_VISIBLE ) ) && !( ( LIB_FIELD& ) item ).IsVisible() )
continue; continue;
bBox.Merge( item.GetBoundingBox() ); bBox.Merge( item.GetBoundingBox() );
......
...@@ -84,9 +84,16 @@ public: ...@@ -84,9 +84,16 @@ public:
int aColor, int aDrawMode, void* aData, int aColor, int aDrawMode, void* aData,
const int aTransformMatrix[2][2] ); const int aTransformMatrix[2][2] );
/** Function IsVisible
* @return true is this field is visible, false if flagged invisible
*/
bool IsVisible()
{
return (m_Attributs & TEXT_NO_VISIBLE) == 0 ? true : false;
}
/** /**
* Return the bounding rectangle of the field text. * Return the bounding rectangle of the field text.
*
* @return Bounding rectangle. * @return Bounding rectangle.
*/ */
virtual EDA_Rect GetBoundingBox(); virtual EDA_Rect GetBoundingBox();
......
...@@ -67,6 +67,14 @@ public: ...@@ -67,6 +67,14 @@ public:
*/ */
int GetPenSize( ); int GetPenSize( );
/** Function IsVisible
* @return true is this field is visible, false if flagged invisible
*/
bool IsVisible()
{
return (m_Attributs & TEXT_NO_VISIBLE) == 0 ? true : false;
}
/** /**
* Function Draw * Function Draw
*/ */
......
...@@ -205,8 +205,7 @@ void SCH_COMPONENT::Draw( WinEDA_DrawPanel* panel, wxDC* DC, ...@@ -205,8 +205,7 @@ void SCH_COMPONENT::Draw( WinEDA_DrawPanel* panel, wxDC* DC,
SCH_FIELD* field = GetField( REFERENCE ); SCH_FIELD* field = GetField( REFERENCE );
if( ( ( field->m_Attributs & TEXT_NO_VISIBLE ) == 0 ) if( field->IsVisible() && !( field->m_Flags & IS_MOVED ) )
&& !( field->m_Flags & IS_MOVED ) )
{ {
if( Entry->GetPartCount() > 1 ) if( Entry->GetPartCount() > 1 )
{ {
...@@ -236,23 +235,20 @@ void SCH_COMPONENT::Draw( WinEDA_DrawPanel* panel, wxDC* DC, ...@@ -236,23 +235,20 @@ void SCH_COMPONENT::Draw( WinEDA_DrawPanel* panel, wxDC* DC,
{ {
EDA_Rect BoundaryBox; EDA_Rect BoundaryBox;
BoundaryBox = GetBoundaryBox(); BoundaryBox = GetBoundaryBox();
int x1 = BoundaryBox.GetX(); GRRect( &panel->m_ClipBox, DC, BoundaryBox, BROWN );
int y1 = BoundaryBox.GetY(); #if 1
int x2 = BoundaryBox.GetRight(); if( GetField( REFERENCE )->IsVisible() )
int y2 = BoundaryBox.GetBottom(); {
GRRect( &panel->m_ClipBox, DC, x1, y1, x2, y2, BROWN ); BoundaryBox = GetField( REFERENCE )->GetBoundaryBox();
BoundaryBox = GetField( REFERENCE )->GetBoundaryBox(); GRRect( &panel->m_ClipBox, DC, BoundaryBox, BROWN );
x1 = BoundaryBox.GetX(); }
y1 = BoundaryBox.GetY();
x2 = BoundaryBox.GetRight(); if( GetField( VALUE )->IsVisible() )
y2 = BoundaryBox.GetBottom(); {
GRRect( &panel->m_ClipBox, DC, x1, y1, x2, y2, BROWN ); BoundaryBox = GetField( VALUE )->GetBoundaryBox();
BoundaryBox = GetField( VALUE )->GetBoundaryBox(); GRRect( &panel->m_ClipBox, DC, BoundaryBox, BROWN );
x1 = BoundaryBox.GetX(); }
y1 = BoundaryBox.GetY(); #endif
x2 = BoundaryBox.GetRight();
y2 = BoundaryBox.GetBottom();
GRRect( &panel->m_ClipBox, DC, x1, y1, x2, y2, BROWN );
} }
#endif #endif
} }
...@@ -530,7 +526,13 @@ LIB_PIN* SCH_COMPONENT::GetPin( const wxString& number ) ...@@ -530,7 +526,13 @@ LIB_PIN* SCH_COMPONENT::GetPin( const wxString& number )
return Entry->GetPin( number, m_Multi, m_Convert ); return Entry->GetPin( number, m_Multi, m_Convert );
} }
/**
* Function GetBoundaryBox
* returns the orthogonal, bounding box of this object for display purposes.
* This box should be an enclosing perimeter for graphic items and pins.
* this include only fields defined in library
* use GetBoundingBox() to include fields in schematic
*/
EDA_Rect SCH_COMPONENT::GetBoundaryBox() const EDA_Rect SCH_COMPONENT::GetBoundaryBox() const
{ {
LIB_COMPONENT* Entry = CMP_LIBRARY::FindLibraryComponent( m_ChipName ); LIB_COMPONENT* Entry = CMP_LIBRARY::FindLibraryComponent( m_ChipName );
...@@ -1064,6 +1066,13 @@ bool SCH_COMPONENT::Save( FILE* f ) const ...@@ -1064,6 +1066,13 @@ bool SCH_COMPONENT::Save( FILE* f ) const
} }
/**
* Function GetBoundingBox
* returns the orthogonal, bounding box of this object for display purposes.
* This box should be an enclosing perimeter for visible components of this
* object, and the units should be in the pcb or schematic coordinate system.
* It is OK to overestimate the size by a few counts.
*/
EDA_Rect SCH_COMPONENT::GetBoundingBox() EDA_Rect SCH_COMPONENT::GetBoundingBox()
{ {
const int PADDING = 40; const int PADDING = 40;
...@@ -1074,11 +1083,13 @@ EDA_Rect SCH_COMPONENT::GetBoundingBox() ...@@ -1074,11 +1083,13 @@ EDA_Rect SCH_COMPONENT::GetBoundingBox()
// Include BoundingBoxes of fields // Include BoundingBoxes of fields
for( int ii = 0; ii < GetFieldCount(); ii++ ) for( int ii = 0; ii < GetFieldCount(); ii++ )
{ {
if( ! GetField( ii )->IsVisible() )
continue;
bbox.Merge( GetField( ii )->GetBoundaryBox() ); bbox.Merge( GetField( ii )->GetBoundaryBox() );
} }
// ... add padding // ... add padding
bbox.Inflate( PADDING, PADDING ); bbox.Inflate( PADDING );
return bbox; return bbox;
} }
......
...@@ -209,6 +209,13 @@ public: ...@@ -209,6 +209,13 @@ public:
*/ */
void SetTimeStamp( long aNewTimeStamp); void SetTimeStamp( long aNewTimeStamp);
/**
* Function GetBoundaryBox
* returns the orthogonal, bounding box of this object for display purposes.
* This box should be an enclosing perimeter for graphic items and pins.
* this include only fields defined in library
* use GetBoundingBox() to include fields in schematic
*/
EDA_Rect GetBoundaryBox() const; EDA_Rect GetBoundaryBox() const;
/** /**
......
...@@ -22,8 +22,6 @@ ...@@ -22,8 +22,6 @@
/* Used for EDA_BaseStruct, .m_Select member */ /* Used for EDA_BaseStruct, .m_Select member */
#define IS_SELECTED 1 #define IS_SELECTED 1
#define TEXT_NO_VISIBLE 1
//#define GR_DEFAULT_DRAWMODE GR_COPY //#define GR_DEFAULT_DRAWMODE GR_COPY
#define GR_DEFAULT_DRAWMODE GR_COPY #define GR_DEFAULT_DRAWMODE GR_COPY
......
...@@ -417,7 +417,6 @@ bool IsItemInBox( EDA_Rect& aBox, SCH_ITEM* DrawStruct ) ...@@ -417,7 +417,6 @@ bool IsItemInBox( EDA_Rect& aBox, SCH_ITEM* DrawStruct )
case TYPE_SCH_TEXT: case TYPE_SCH_TEXT:
case TYPE_SCH_HIERLABEL: case TYPE_SCH_HIERLABEL:
case TYPE_SCH_GLOBALLABEL: case TYPE_SCH_GLOBALLABEL:
case TYPE_SCH_COMPONENT:
case DRAW_SHEET_STRUCT_TYPE: case DRAW_SHEET_STRUCT_TYPE:
case TYPE_SCH_MARKER: case TYPE_SCH_MARKER:
BoundaryBox = DrawStruct->GetBoundingBox(); BoundaryBox = DrawStruct->GetBoundingBox();
...@@ -425,6 +424,14 @@ bool IsItemInBox( EDA_Rect& aBox, SCH_ITEM* DrawStruct ) ...@@ -425,6 +424,14 @@ bool IsItemInBox( EDA_Rect& aBox, SCH_ITEM* DrawStruct )
return true; return true;
break; break;
case TYPE_SCH_COMPONENT:
// Use a more restrictive area than GetBoundingBox()
// Area is restricted to the body area, excludint fields outside this area
BoundaryBox = ((SCH_COMPONENT*)DrawStruct)->GetBoundaryBox();
if( aBox.Intersects( BoundaryBox ) )
return true;
break;
case DRAW_HIERARCHICAL_PIN_SHEET_STRUCT_TYPE: case DRAW_HIERARCHICAL_PIN_SHEET_STRUCT_TYPE:
break; break;
......
...@@ -5,6 +5,9 @@ ...@@ -5,6 +5,9 @@
#ifndef PROGRAM_H #ifndef PROGRAM_H
#define PROGRAM_H #define PROGRAM_H
#define HIGHLIGHT_COLOR WHITE
#define TEXT_NO_VISIBLE 1
#include "wxEeschemaStruct.h" #include "wxEeschemaStruct.h"
#include "macros.h" #include "macros.h"
#include "base_struct.h" #include "base_struct.h"
...@@ -17,9 +20,6 @@ ...@@ -17,9 +20,6 @@
#include "class_text-label.h" #include "class_text-label.h"
#include "class_schematic_items.h" #include "class_schematic_items.h"
#define HIGHLIGHT_COLOR WHITE
#define TEXT_NO_VISIBLE 1
/* Rotation, mirror of graphic items in components bodies are handled by a /* Rotation, mirror of graphic items in components bodies are handled by a
* transform matrix. The default matix is useful to draw lib entries with * transform matrix. The default matix is useful to draw lib entries with
......
...@@ -110,9 +110,14 @@ bool WinEDA_GerberFrame::LoadOneGerberFile( const wxString& FullFileName, ...@@ -110,9 +110,14 @@ bool WinEDA_GerberFrame::LoadOneGerberFile( const wxString& FullFileName,
{ {
wxString current_path = filename.GetPath(); wxString current_path = filename.GetPath();
/* Standard gerber filetypes */ /* Standard gerber filetypes
filetypes += _( "Gerber files (.gbr .gbx .lgr .ger .pho)| \ * (See http://en.wikipedia.org/wiki/Gerber_File)
.gbr;*.GBR;*.gbx;*.GBX;*.lgr;*.LGR;*.ger;*.GER;*.pho;*.PHO|" ); * the .pho extension is the default used in Pcbnew
*/
filetypes = _( "Gerber files (.gb* .gt* .lgr .ger .pho)" );
filetypes << wxT("|");
filetypes += wxT("*.gb*;*.GB*;.gt*;.GT*;.gko;.GKO;*.GPB;*.gpb;*.lgr;*.LGR;*.ger;*.GER;*.pho;*.PHO" );
filetypes << wxT("|");
/* Special gerber filetypes */ /* Special gerber filetypes */
filetypes += _( "Top layer (*.GTL)|*.GTL;*.gtl|" ); filetypes += _( "Top layer (*.GTL)|*.GTL;*.gtl|" );
......
...@@ -175,15 +175,15 @@ public: ...@@ -175,15 +175,15 @@ public:
bool Inside( int x, int y ) { return Inside( wxPoint( x, y ) ); } bool Inside( int x, int y ) { return Inside( wxPoint( x, y ) ); }
wxSize GetSize() { return m_Size; } wxSize GetSize() { return m_Size; }
int GetX() { return m_Pos.x; } int GetX() const { return m_Pos.x; }
int GetY() { return m_Pos.y; } int GetY() const { return m_Pos.y; }
wxPoint GetOrigin() { return m_Pos; } wxPoint GetOrigin() { return m_Pos; }
wxPoint GetPosition() { return m_Pos; } wxPoint GetPosition() { return m_Pos; }
wxPoint GetEnd() { return wxPoint( GetRight(), GetBottom() ); } wxPoint GetEnd() const { return wxPoint( GetRight(), GetBottom() ); }
int GetWidth() { return m_Size.x; } int GetWidth() const { return m_Size.x; }
int GetHeight() { return m_Size.y; } int GetHeight() const { return m_Size.y; }
int GetRight() { return m_Pos.x + m_Size.x; } int GetRight() const { return m_Pos.x + m_Size.x; }
int GetBottom() { return m_Pos.y + m_Size.y; } int GetBottom() const { return m_Pos.y + m_Size.y; }
void SetOrigin( const wxPoint& pos ) { m_Pos = pos; } void SetOrigin( const wxPoint& pos ) { m_Pos = pos; }
void SetOrigin( int x, int y ) { m_Pos.x = x; m_Pos.y = y; } void SetOrigin( int x, int y ) { m_Pos.x = x; m_Pos.y = y; }
void SetSize( const wxSize& size ) { m_Size = size; } void SetSize( const wxSize& size ) { m_Size = size; }
......
...@@ -58,6 +58,10 @@ void GRForceBlackPen( bool flagforce ); ...@@ -58,6 +58,10 @@ void GRForceBlackPen( bool flagforce );
bool GetGRForceBlackPenState( void ); bool GetGRForceBlackPenState( void );
void SetPenMinWidth( int minwidth ); void SetPenMinWidth( int minwidth );
void GRSPutPixel( EDA_Rect* ClipBox, wxDC* DC, int x, int y, int color );
void GRSFilledRect( EDA_Rect* ClipBox, wxDC* DC, int x1, int y1,
int x2, int y2, int width, int Color, int BgColor );
void GRLine( EDA_Rect* aClipBox, wxDC* aDC, wxPoint aStart, wxPoint aEnd, void GRLine( EDA_Rect* aClipBox, wxDC* aDC, wxPoint aStart, wxPoint aEnd,
int aWidth, int aColor ); int aWidth, int aColor );
void GRLine( EDA_Rect* ClipBox, wxDC* DC, int x1, int y1, int x2, void GRLine( EDA_Rect* ClipBox, wxDC* DC, int x1, int y1, int x2,
...@@ -205,24 +209,19 @@ void GRSetColor( int Color ); ...@@ -205,24 +209,19 @@ void GRSetColor( int Color );
void GRSetDefaultPalette(); void GRSetDefaultPalette();
int GRGetColor(); int GRGetColor();
void GRPutPixel( EDA_Rect* ClipBox, wxDC* DC, int x, int y, int color ); void GRPutPixel( EDA_Rect* ClipBox, wxDC* DC, int x, int y, int color );
void GRSPutPixel( EDA_Rect* ClipBox, wxDC* DC, int x, int y, int color );
int GRGetPixel( wxDC* DC, int x, int y ); int GRGetPixel( wxDC* DC, int x, int y );
void GRFilledRect( EDA_Rect* ClipBox, wxDC* DC, int x1, int y1, void GRFilledRect( EDA_Rect* ClipBox, wxDC* DC, int x1, int y1,
int x2, int y2, int Color, int BgColor ); int x2, int y2, int Color, int BgColor );
void GRFilledRect( EDA_Rect* ClipBox, wxDC* DC, int x1, int y1, void GRFilledRect( EDA_Rect* ClipBox, wxDC* DC, int x1, int y1,
int x2, int y2, int width, int Color, int BgColor ); int x2, int y2, int width, int Color, int BgColor );
void GRSFilledRect( EDA_Rect* ClipBox, wxDC* DC, int x1, int y1,
int x2, int y2, int Color, int BgColor );
void GRSFilledRect( EDA_Rect* ClipBox, wxDC* DC, int x1, int y1,
int x2, int y2, int width, int Color, int BgColor );
void GRRect( EDA_Rect* ClipBox, wxDC* DC, int x1, int y1, void GRRect( EDA_Rect* ClipBox, wxDC* DC, int x1, int y1,
int x2, int y2, int Color ); int x2, int y2, int Color );
void GRRect( EDA_Rect* ClipBox, wxDC* DC,const EDA_Rect& aRect,
int Color );
void GRRect( EDA_Rect* ClipBox, wxDC* DC, int x1, int y1, void GRRect( EDA_Rect* ClipBox, wxDC* DC, int x1, int y1,
int x2, int y2, int width, int Color ); int x2, int y2, int width, int Color );
void GRSRect( EDA_Rect* ClipBox, wxDC* DC, int x1, int y1, void GRRect( EDA_Rect* aClipBox, wxDC* aDC,const EDA_Rect& aRect,
int x2, int y2, int Color ); int aWidth, int aColor );
void GRSRect( EDA_Rect* ClipBox, wxDC* DC, int x1, int y1,
int x2, int y2, int width, int Color );
#endif /* define GR_BASIC */ #endif /* define GR_BASIC */
No preview for this file type
...@@ -2,8 +2,8 @@ msgid "" ...@@ -2,8 +2,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: kicad\n" "Project-Id-Version: kicad\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2009-12-29 11:30+0100\n" "POT-Creation-Date: 2009-12-30 18:30+0100\n"
"PO-Revision-Date: 2009-12-29 11:34+0100\n" "PO-Revision-Date: 2009-12-30 18:34+0100\n"
"Last-Translator: \n" "Last-Translator: \n"
"Language-Team: kicad team <jean-pierre.charras@ujf-grenoble.fr>\n" "Language-Team: kicad team <jean-pierre.charras@ujf-grenoble.fr>\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
...@@ -2423,236 +2423,244 @@ msgstr "&3D Visu" ...@@ -2423,236 +2423,244 @@ msgstr "&3D Visu"
msgid "&Help" msgid "&Help"
msgstr "&Aide" msgstr "&Aide"
#: pcbnew/pcbplot.cpp:178 #: pcbnew/pcbplot.cpp:184
#: pcbnew/pcbplot.cpp:327 #: pcbnew/pcbplot.cpp:328
msgid "Plot" msgid "Plot"
msgstr "Tracer" msgstr "Tracer"
#: pcbnew/pcbplot.cpp:226 #: pcbnew/pcbplot.cpp:232
msgid "Plot Format" msgid "Plot Format"
msgstr "Format de tracé" msgstr "Format de tracé"
#: pcbnew/pcbplot.cpp:240 #: pcbnew/pcbplot.cpp:243
msgid "HPGL Options:" msgid "HPGL Options:"
msgstr "Options HPGL:" msgstr "Options HPGL:"
#: pcbnew/pcbplot.cpp:245 #: pcbnew/pcbplot.cpp:248
msgid "Pen size" msgid "Pen size"
msgstr "Diam plume" msgstr "Diam plume"
#: pcbnew/pcbplot.cpp:252 #: pcbnew/pcbplot.cpp:255
msgid "Pen Speed (cm/s)" msgid "Pen Speed (cm/s)"
msgstr "Vitesse Plume ( cm/s )" msgstr "Vitesse Plume ( cm/s )"
#: pcbnew/pcbplot.cpp:256 #: pcbnew/pcbplot.cpp:259
msgid "Set pen speed in cm/s" msgid "Set pen speed in cm/s"
msgstr "Ajuster Vitesse plume en centimètres par seconde" msgstr "Ajuster Vitesse plume en centimètres par seconde"
#: pcbnew/pcbplot.cpp:258 #: pcbnew/pcbplot.cpp:261
msgid "Pen ovr" msgid "Pen ovr"
msgstr "Recouvrement" msgstr "Recouvrement"
#: pcbnew/pcbplot.cpp:264 #: pcbnew/pcbplot.cpp:267
msgid "Set plot overlay for filling" msgid "Set plot overlay for filling"
msgstr "Ajuste recouvrement des tracés pour les remplissages" msgstr "Ajuste recouvrement des tracés pour les remplissages"
#: pcbnew/pcbplot.cpp:266 #: pcbnew/pcbplot.cpp:269
msgid "Line width" msgid "Line width"
msgstr "Epaisseur ligne" msgstr "Epaisseur ligne"
#: pcbnew/pcbplot.cpp:272 #: pcbnew/pcbplot.cpp:276
msgid "Set lines width used to plot in sketch mode and plot pads outlines on silk screen layers" msgid "Set lines width used to plot in sketch mode and plot pads outlines on silk screen layers"
msgstr "Ajuste l'épaisseur des lignes utilisées pour tracer en mode contour et pour les contours des pads sur les couches de sérigraphie" msgstr "Ajuste l'épaisseur des lignes utilisées pour tracer en mode contour et pour les contours des pads sur les couches de sérigraphie"
#: pcbnew/pcbplot.cpp:277 #: pcbnew/pcbplot.cpp:281
msgid "Absolute" msgid "Absolute"
msgstr "Absolu" msgstr "Absolu"
#: pcbnew/pcbplot.cpp:277 #: pcbnew/pcbplot.cpp:281
msgid "Auxiliary axis" msgid "Auxiliary axis"
msgstr "Axe Auxiliaire" msgstr "Axe Auxiliaire"
#: pcbnew/pcbplot.cpp:280 #: pcbnew/pcbplot.cpp:284
msgid "Plot Origin" msgid "Plot Origin"
msgstr "Origine des Coord de Tracé" msgstr "Origine des Coord de Tracé"
#: pcbnew/pcbplot.cpp:308 #: pcbnew/pcbplot.cpp:309
msgid "X scale adjust" msgid "X scale adjust"
msgstr "Ajustage Echelle X" msgstr "Ajustage Echelle X"
#: pcbnew/pcbplot.cpp:311 #: pcbnew/pcbplot.cpp:312
msgid "Set X scale adjust for exact scale plotting" msgid "Set X scale adjust for exact scale plotting"
msgstr "Ajuster échelle X pour traçage à l'échelle exacte" msgstr "Ajuster échelle X pour traçage à l'échelle exacte"
#: pcbnew/pcbplot.cpp:315 #: pcbnew/pcbplot.cpp:316
msgid "Y scale adjust" msgid "Y scale adjust"
msgstr "Ajustage Echelle Y" msgstr "Ajustage Echelle Y"
#: pcbnew/pcbplot.cpp:318 #: pcbnew/pcbplot.cpp:319
msgid "Set Y scale adjust for exact scale plotting" msgid "Set Y scale adjust for exact scale plotting"
msgstr "Ajuster échelle Y pour traçage à l'échelle exacte" msgstr "Ajuster échelle Y pour traçage à l'échelle exacte"
#: pcbnew/pcbplot.cpp:321 #: pcbnew/pcbplot.cpp:322
msgid "Plot negative" msgid "Plot negative"
msgstr "Tracé en Négatif" msgstr "Tracé en Négatif"
#: pcbnew/pcbplot.cpp:330 #: pcbnew/pcbplot.cpp:331
msgid "Save Options" msgid "Save Options"
msgstr "Sauver Options" msgstr "Sauver Options"
#: pcbnew/pcbplot.cpp:334 #: pcbnew/pcbplot.cpp:335
msgid "Generate drill file" msgid "Generate drill file"
msgstr "Créer Fichier de perçage" msgstr "Créer Fichier de perçage"
#: pcbnew/pcbplot.cpp:337 #: pcbnew/pcbplot.cpp:338
msgid "Close" msgid "Close"
msgstr "Fermer" msgstr "Fermer"
#: pcbnew/pcbplot.cpp:383 #: pcbnew/pcbplot.cpp:384
msgid "Use Proper Gerber Extensions"
msgstr "Utiliser Extensions Gerber Particulières"
#: pcbnew/pcbplot.cpp:390
msgid "Use Proper Gerber Extensions - .GBL, .GTL, etc..."
msgstr "Utiliser les extensions GERBER specifiques aux couches - .GBL, .GTL, etc..."
#: pcbnew/pcbplot.cpp:397
msgid "Exclude pcb edge layer" msgid "Exclude pcb edge layer"
msgstr "Exclure couche contours PCB" msgstr "Exclure couche contours PCB"
#: pcbnew/pcbplot.cpp:387 #: pcbnew/pcbplot.cpp:401
msgid "Exclude contents of the pcb edge layer from all other layers" msgid "Exclude contents of the pcb edge layer from all other layers"
msgstr "Exclure les tracés contour PCB des autres couches" msgstr "Exclure les tracés contour PCB des autres couches"
#: pcbnew/pcbplot.cpp:394 #: pcbnew/pcbplot.cpp:408
msgid "Print sheet reference" msgid "Print sheet reference"
msgstr "Imprimer cartouche" msgstr "Imprimer cartouche"
#: pcbnew/pcbplot.cpp:405 #: pcbnew/pcbplot.cpp:419
msgid "Print pads on silkscreen" msgid "Print pads on silkscreen"
msgstr "Pads sur Sérigraphie" msgstr "Pads sur Sérigraphie"
#: pcbnew/pcbplot.cpp:413 #: pcbnew/pcbplot.cpp:426
msgid "Enable/disable print/plot pads on silkscreen layers" msgid "Enable/disable print/plot pads on silkscreen layers"
msgstr "Active/désactive tracé des pastilles sur les couches de sérigraphie" msgstr "Active/désactive tracé des pastilles sur les couches de sérigraphie"
#: pcbnew/pcbplot.cpp:417 #: pcbnew/pcbplot.cpp:430
msgid "Always print pads" msgid "Always print pads"
msgstr "Toujours tracer pads" msgstr "Toujours tracer pads"
#: pcbnew/pcbplot.cpp:423 #: pcbnew/pcbplot.cpp:435
msgid "Force print/plot pads on ALL layers" msgid "Force print/plot pads on ALL layers"
msgstr "Force le tracé des pastilles sur TOUTES les couches" msgstr "Force le tracé des pastilles sur TOUTES les couches"
#: pcbnew/pcbplot.cpp:428 #: pcbnew/pcbplot.cpp:440
msgid "Print module value" msgid "Print module value"
msgstr "Imprimer Valeur Module" msgstr "Imprimer Valeur Module"
#: pcbnew/pcbplot.cpp:432 #: pcbnew/pcbplot.cpp:444
msgid "Enable/disable print/plot module value on silkscreen layers" msgid "Enable/disable print/plot module value on silkscreen layers"
msgstr "Active/désactive le tracé des textes valeurs des modules sur couches de sérigraphie" msgstr "Active/désactive le tracé des textes valeurs des modules sur couches de sérigraphie"
#: pcbnew/pcbplot.cpp:436 #: pcbnew/pcbplot.cpp:448
msgid "Print module reference" msgid "Print module reference"
msgstr "Imprimer Référence Module" msgstr "Imprimer Référence Module"
#: pcbnew/pcbplot.cpp:440 #: pcbnew/pcbplot.cpp:452
msgid "Enable/disable print/plot module reference on silkscreen layers" msgid "Enable/disable print/plot module reference on silkscreen layers"
msgstr "Active/désactive le tracé des textes référence des modules sur couches de sérigraphie" msgstr "Active/désactive le tracé des textes référence des modules sur couches de sérigraphie"
#: pcbnew/pcbplot.cpp:444 #: pcbnew/pcbplot.cpp:456
msgid "Print other module texts" msgid "Print other module texts"
msgstr "Imprimer autres textes module" msgstr "Imprimer autres textes module"
#: pcbnew/pcbplot.cpp:448 #: pcbnew/pcbplot.cpp:460
msgid "Enable/disable print/plot module field texts on silkscreen layers" msgid "Enable/disable print/plot module field texts on silkscreen layers"
msgstr "Active/désactive le tracé des textes des champs des modules sur couches de sérigraphie" msgstr "Active/désactive le tracé des textes des champs des modules sur couches de sérigraphie"
#: pcbnew/pcbplot.cpp:453 #: pcbnew/pcbplot.cpp:465
msgid "Force print invisible texts" msgid "Force print invisible texts"
msgstr "Force tracé textes invisibles" msgstr "Force tracé textes invisibles"
#: pcbnew/pcbplot.cpp:457 #: pcbnew/pcbplot.cpp:469
msgid "Force print/plot module invisible texts on silkscreen layers" msgid "Force print/plot module invisible texts on silkscreen layers"
msgstr "Force le tracé des textes invisibles sur couches de sérigraphie" msgstr "Force le tracé des textes invisibles sur couches de sérigraphie"
#: pcbnew/pcbplot.cpp:462 #: pcbnew/pcbplot.cpp:475
msgid "No drill mark" msgid "No drill mark"
msgstr "Pas de marque" msgstr "Pas de marque"
#: pcbnew/pcbplot.cpp:463 #: pcbnew/pcbplot.cpp:476
msgid "Small mark" msgid "Small mark"
msgstr "Petite marque" msgstr "Petite marque"
#: pcbnew/pcbplot.cpp:464 #: pcbnew/pcbplot.cpp:477
msgid "Real drill" msgid "Real drill"
msgstr "Perçage réel" msgstr "Perçage réel"
#: pcbnew/pcbplot.cpp:468 #: pcbnew/pcbplot.cpp:481
msgid "Pads Drill Opt" msgid "Pads Drill Opt"
msgstr "Options Perçage Pads" msgstr "Options Perçage Pads"
#: pcbnew/pcbplot.cpp:477 #: pcbnew/pcbplot.cpp:490
msgid "Auto scale" msgid "Auto scale"
msgstr "Ech. auto" msgstr "Ech. auto"
#: pcbnew/pcbplot.cpp:478 #: pcbnew/pcbplot.cpp:491
msgid "Scale 1" msgid "Scale 1"
msgstr "Echelle 1" msgstr "Echelle 1"
#: pcbnew/pcbplot.cpp:479 #: pcbnew/pcbplot.cpp:492
msgid "Scale 1.5" msgid "Scale 1.5"
msgstr "Echelle 1,5" msgstr "Echelle 1,5"
#: pcbnew/pcbplot.cpp:480 #: pcbnew/pcbplot.cpp:493
msgid "Scale 2" msgid "Scale 2"
msgstr "Echelle 2" msgstr "Echelle 2"
#: pcbnew/pcbplot.cpp:481 #: pcbnew/pcbplot.cpp:494
msgid "Scale 3" msgid "Scale 3"
msgstr "Echelle 3" msgstr "Echelle 3"
#: pcbnew/pcbplot.cpp:485 #: pcbnew/pcbplot.cpp:498
msgid "Scale Opt" msgid "Scale Opt"
msgstr "Echelle" msgstr "Echelle"
#: pcbnew/pcbplot.cpp:492 #: pcbnew/pcbplot.cpp:507
msgid "Line" msgid "Line"
msgstr "Ligne" msgstr "Ligne"
#: pcbnew/pcbplot.cpp:492 #: pcbnew/pcbplot.cpp:507
msgid "Filled" msgid "Filled"
msgstr "Plein" msgstr "Plein"
#: pcbnew/pcbplot.cpp:493 #: pcbnew/pcbplot.cpp:508
msgid "Sketch" msgid "Sketch"
msgstr "Contour" msgstr "Contour"
#: pcbnew/pcbplot.cpp:495 #: pcbnew/pcbplot.cpp:511
msgid "Plot Mode" msgid "Plot Mode"
msgstr "Mode de Tracé" msgstr "Mode de Tracé"
#: pcbnew/pcbplot.cpp:503 #: pcbnew/pcbplot.cpp:519
msgid "Plot mirror" msgid "Plot mirror"
msgstr "Tracé Miroir" msgstr "Tracé Miroir"
#: pcbnew/pcbplot.cpp:509 #: pcbnew/pcbplot.cpp:525
msgid "Vias on mask" msgid "Vias on mask"
msgstr "Vias sur masque" msgstr "Vias sur masque"
#: pcbnew/pcbplot.cpp:513 #: pcbnew/pcbplot.cpp:529
msgid "Print/plot vias on mask layers. They are in this case not protected" msgid "Print/plot vias on mask layers. They are in this case not protected"
msgstr "Trace vias sur vernis épargne. Elles seront non protégées" msgstr "Trace vias sur vernis épargne. Elles seront non protégées"
#: pcbnew/pcbplot.cpp:762 #: pcbnew/pcbplot.cpp:784
msgid "Adobe post script files (.ps)|*.ps" msgid "Adobe post script files (.ps)|*.ps"
msgstr "Fichiers Adobe post script (.ps)|*.ps" msgstr "Fichiers Adobe post script (.ps)|*.ps"
#: pcbnew/pcbplot.cpp:768 #: pcbnew/pcbplot.cpp:790
msgid "GERBER photo plot files (.pho)|*.pho" msgid "GERBER photo plot files (.pho .gbr)|*.pho;*.gbr"
msgstr "Fichiers phottraçage GERBER (.pho)|*.pho" msgstr "Fichiers photraçage GERBER (.pho .gbr)|*.pho;*.gbr"
#: pcbnew/pcbplot.cpp:786 #: pcbnew/pcbplot.cpp:808
msgid "Warning: Scale option set to a very small value" msgid "Warning: Scale option set to a very small value"
msgstr "Attention: option d'échelle ajustée à une valeur très petite" msgstr "Attention: option d'échelle ajustée à une valeur très petite"
#: pcbnew/pcbplot.cpp:789 #: pcbnew/pcbplot.cpp:811
msgid "Warning: Scale option set to a very large value" msgid "Warning: Scale option set to a very large value"
msgstr "Attention: option d'échelle ajustée à une valeur très grande" msgstr "Attention: option d'échelle ajustée à une valeur très grande"
#: pcbnew/pcbplot.cpp:838 #: pcbnew/pcbplot.cpp:939
msgid "No layer selected" msgid "No layer selected"
msgstr "Pas de couche sélectionnée" msgstr "Pas de couche sélectionnée"
...@@ -9710,7 +9718,7 @@ msgstr "Imprimer Tout" ...@@ -9710,7 +9718,7 @@ msgstr "Imprimer Tout"
msgid "Current" msgid "Current"
msgstr "Courant" msgstr "Courant"
#: eeschema/class_sch_component.cpp:1103 #: eeschema/class_sch_component.cpp:1114
msgid "Power symbol" msgid "Power symbol"
msgstr "Symbole d'alimentation" msgstr "Symbole d'alimentation"
...@@ -11220,105 +11228,105 @@ msgstr "Fichier exécutable (" ...@@ -11220,105 +11228,105 @@ msgstr "Fichier exécutable ("
msgid "Select Prefered Editor" msgid "Select Prefered Editor"
msgstr "Sélection Editeur Préféré" msgstr "Sélection Editeur Préféré"
#: kicad/treeprj_frame.cpp:123 #: kicad/treeprj_frame.cpp:126
msgid "&Run" msgid "&Run"
msgstr "Exécute&r" msgstr "Exécute&r"
#: kicad/treeprj_frame.cpp:124 #: kicad/treeprj_frame.cpp:127
msgid "Run the Python Script" msgid "Run the Python Script"
msgstr "Exécuter le Script Python" msgstr "Exécuter le Script Python"
#: kicad/treeprj_frame.cpp:133 #: kicad/treeprj_frame.cpp:136
#: kicad/treeprj_frame.cpp:208 #: kicad/treeprj_frame.cpp:211
msgid "&Edit in a text editor" msgid "&Edit in a text editor"
msgstr "Editer avec un éditeur de Texte" msgstr "Editer avec un éditeur de Texte"
#: kicad/treeprj_frame.cpp:134 #: kicad/treeprj_frame.cpp:137
msgid "&Open the file in a Text Editor" msgid "&Open the file in a Text Editor"
msgstr "&Ouvrir le fichier avec un Editeur de texte" msgstr "&Ouvrir le fichier avec un Editeur de texte"
#: kicad/treeprj_frame.cpp:151 #: kicad/treeprj_frame.cpp:154
msgid "New D&irectory" msgid "New D&irectory"
msgstr "&Nouveau Répertoire" msgstr "&Nouveau Répertoire"
#: kicad/treeprj_frame.cpp:152 #: kicad/treeprj_frame.cpp:155
msgid "Create a New Directory" msgid "Create a New Directory"
msgstr "Créer un nouveau Répertoire" msgstr "Créer un nouveau Répertoire"
#: kicad/treeprj_frame.cpp:161 #: kicad/treeprj_frame.cpp:164
msgid "New P&ython Script" msgid "New P&ython Script"
msgstr "Nouveau Script P&ython" msgstr "Nouveau Script P&ython"
#: kicad/treeprj_frame.cpp:162 #: kicad/treeprj_frame.cpp:165
msgid "Create a New Python Script" msgid "Create a New Python Script"
msgstr "Créer un nouveau script Python" msgstr "Créer un nouveau script Python"
#: kicad/treeprj_frame.cpp:171 #: kicad/treeprj_frame.cpp:174
msgid "New &Text File" msgid "New &Text File"
msgstr "Nouveau Fichier &Texte" msgstr "Nouveau Fichier &Texte"
#: kicad/treeprj_frame.cpp:172 #: kicad/treeprj_frame.cpp:175
msgid "Create a New Txt File" msgid "Create a New Txt File"
msgstr "Créer un nouveau Fichier texte" msgstr "Créer un nouveau Fichier texte"
#: kicad/treeprj_frame.cpp:180 #: kicad/treeprj_frame.cpp:183
msgid "New &File" msgid "New &File"
msgstr "Nouveau &Fichier" msgstr "Nouveau &Fichier"
#: kicad/treeprj_frame.cpp:181 #: kicad/treeprj_frame.cpp:184
msgid "Create a New File" msgid "Create a New File"
msgstr "Créer un nouveau Fichier" msgstr "Créer un nouveau Fichier"
#: kicad/treeprj_frame.cpp:195 #: kicad/treeprj_frame.cpp:198
msgid "&Rename file" msgid "&Rename file"
msgstr "&Renommer fichier" msgstr "&Renommer fichier"
#: kicad/treeprj_frame.cpp:196 #: kicad/treeprj_frame.cpp:199
#: kicad/treeprj_frame.cpp:198 #: kicad/treeprj_frame.cpp:201
msgid "&Rename directory" msgid "&Rename directory"
msgstr "&Renommer répertoire" msgstr "&Renommer répertoire"
#: kicad/treeprj_frame.cpp:197 #: kicad/treeprj_frame.cpp:200
msgid "Rename file" msgid "Rename file"
msgstr "Renommer fichier" msgstr "Renommer fichier"
#: kicad/treeprj_frame.cpp:209 #: kicad/treeprj_frame.cpp:212
msgid "Open the file in a Text Editor" msgid "Open the file in a Text Editor"
msgstr "Ouvrir le fichier avec un Editeur de texte" msgstr "Ouvrir le fichier avec un Editeur de texte"
#: kicad/treeprj_frame.cpp:217 #: kicad/treeprj_frame.cpp:220
msgid "&Delete File" msgid "&Delete File"
msgstr "&Supprimer Fichier" msgstr "&Supprimer Fichier"
#: kicad/treeprj_frame.cpp:218 #: kicad/treeprj_frame.cpp:221
msgid "&Delete Directory" msgid "&Delete Directory"
msgstr "&Supprimer le Répertoire" msgstr "&Supprimer le Répertoire"
#: kicad/treeprj_frame.cpp:219 #: kicad/treeprj_frame.cpp:222
msgid "Delete the File" msgid "Delete the File"
msgstr "Supprimer le fichier" msgstr "Supprimer le fichier"
#: kicad/treeprj_frame.cpp:220 #: kicad/treeprj_frame.cpp:223
msgid "&Delete the Directory and its content" msgid "&Delete the Directory and its content"
msgstr "Effacer le Répertoire et son contenu" msgstr "Effacer le Répertoire et son contenu"
#: kicad/treeprj_frame.cpp:546 #: kicad/treeprj_frame.cpp:549
msgid "Create New File" msgid "Create New File"
msgstr "Créer un Nouveau Fichier" msgstr "Créer un Nouveau Fichier"
#: kicad/treeprj_frame.cpp:547 #: kicad/treeprj_frame.cpp:550
msgid "Create New Directory" msgid "Create New Directory"
msgstr "Créer un nouveau Répertoire" msgstr "Créer un nouveau Répertoire"
#: kicad/treeprj_frame.cpp:556 #: kicad/treeprj_frame.cpp:559
msgid "noname." msgid "noname."
msgstr "noname." msgstr "noname."
#: kicad/treeprj_frame.cpp:1085 #: kicad/treeprj_frame.cpp:1088
msgid "Change filename: " msgid "Change filename: "
msgstr "Changer Nom Fichier: " msgstr "Changer Nom Fichier: "
#: kicad/treeprj_frame.cpp:1087 #: kicad/treeprj_frame.cpp:1090
msgid "Change filename" msgid "Change filename"
msgstr "Changer Nom Fichier" msgstr "Changer Nom Fichier"
...@@ -11360,14 +11368,14 @@ msgid "%d errors while reading Gerber file [%s]" ...@@ -11360,14 +11368,14 @@ msgid "%d errors while reading Gerber file [%s]"
msgstr "%d erreurs pendant lecture fichier gerber [%s]" msgstr "%d erreurs pendant lecture fichier gerber [%s]"
#: gerbview/readgerb.cpp:267 #: gerbview/readgerb.cpp:267
#: gerbview/files.cpp:183 #: gerbview/files.cpp:185
#: gerbview/files.cpp:216 #: gerbview/files.cpp:218
#, c-format #, c-format
msgid "Gerber DCODE files (%s)|*.%s" msgid "Gerber DCODE files (%s)|*.%s"
msgstr "Fichiers Gerber DCODE (%s)|*.%s" msgstr "Fichiers Gerber DCODE (%s)|*.%s"
#: gerbview/readgerb.cpp:272 #: gerbview/readgerb.cpp:272
#: gerbview/files.cpp:189 #: gerbview/files.cpp:191
msgid "Load GERBER DCODE File" msgid "Load GERBER DCODE File"
msgstr "Charger Fichier de DCodes" msgstr "Charger Fichier de DCodes"
...@@ -11384,62 +11392,62 @@ msgid "Not yet available..." ...@@ -11384,62 +11392,62 @@ msgid "Not yet available..."
msgstr "non encore disponible" msgstr "non encore disponible"
#: gerbview/files.cpp:114 #: gerbview/files.cpp:114
msgid "Gerber files (.gbr .gbx .lgr .ger .pho)| .gbr;*.GBR;*.gbx;*.GBX;*.lgr;*.LGR;*.ger;*.GER;*.pho;*.PHO|" msgid "Gerber files (.gb* .gt* .lgr .ger .pho)"
msgstr "Fichiers Gerber (.gbr .gbx .lgr .ger .pho)| *.gbr;*.GBR;*.gbx;*.GBX;*.lgr;*.LGR;*.ger;*.GER;*.pho;*.PHO|" msgstr "Fichiers Gerber .gb* .gt* .lgr .ger .pho)"
#: gerbview/files.cpp:118 #: gerbview/files.cpp:120
msgid "Top layer (*.GTL)|*.GTL;*.gtl|" msgid "Top layer (*.GTL)|*.GTL;*.gtl|"
msgstr "Couche composant" msgstr "Couche composant"
#: gerbview/files.cpp:119 #: gerbview/files.cpp:121
msgid "Bottom layer (*.GBL)|*.GBL;*.gbl|" msgid "Bottom layer (*.GBL)|*.GBL;*.gbl|"
msgstr "Couche cuivre" msgstr "Couche cuivre"
#: gerbview/files.cpp:120 #: gerbview/files.cpp:122
msgid "Bottom solder resist (*.GBS)|*.GBS;*.gbs|" msgid "Bottom solder resist (*.GBS)|*.GBS;*.gbs|"
msgstr "Masque soudure cuivre (*.GBS)|*.GBS;*.gbs|" msgstr "Masque soudure cuivre (*.GBS)|*.GBS;*.gbs|"
#: gerbview/files.cpp:121 #: gerbview/files.cpp:123
msgid "Top solder resist (*.GTS)|*.GTS;*.gts|" msgid "Top solder resist (*.GTS)|*.GTS;*.gts|"
msgstr "Masque soudure composant (*.GTS)|*.GTS;*.gts|" msgstr "Masque soudure composant (*.GTS)|*.GTS;*.gts|"
#: gerbview/files.cpp:122 #: gerbview/files.cpp:124
msgid "Bottom overlay (*.GBO)|*.GBO;*.gbo|" msgid "Bottom overlay (*.GBO)|*.GBO;*.gbo|"
msgstr "Simple face, CMS coté Cuivre." msgstr "Bottom overlay (*.GBO)|*.GBO;*.gbo|"
#: gerbview/files.cpp:123 #: gerbview/files.cpp:125
msgid "Top overlay (*.GTO)|*.GTO;*.gto|" msgid "Top overlay (*.GTO)|*.GTO;*.gto|"
msgstr "Top overlay (*.GTO)|*.GTO;*.gto|" msgstr "Top overlay (*.GTO)|*.GTO;*.gto|"
#: gerbview/files.cpp:124 #: gerbview/files.cpp:126
msgid "Bottom paste (*.GBP)|*.GBP;*.gbp|" msgid "Bottom paste (*.GBP)|*.GBP;*.gbp|"
msgstr "Bottom paste (*.GBP)|*.GBP;*.gbp|" msgstr "Masque pate à souder cuivre (*.GBP)|*.GBP;*.gbp|"
#: gerbview/files.cpp:125 #: gerbview/files.cpp:127
msgid "Top paste (*.GTP)|*.GTP;*.gtp|" msgid "Top paste (*.GTP)|*.GTP;*.gtp|"
msgstr "Masque pate à souder composant (*.GTP)|*.GTP;*.gtp|" msgstr "Masque pate à souder composant (*.GTP)|*.GTP;*.gtp|"
#: gerbview/files.cpp:126 #: gerbview/files.cpp:128
msgid "Keep-out layer (*.GKO)|*.GKO;*.gko|" msgid "Keep-out layer (*.GKO)|*.GKO;*.gko|"
msgstr "Couche de \"Keep-out\" (*.GKO)|*.GKO;*.gko|" msgstr "Couche de \"Keep-out\" (*.GKO)|*.GKO;*.gko|"
#: gerbview/files.cpp:127 #: gerbview/files.cpp:129
msgid "Mechanical layers (*.GMx)|*.GM1;*.gm1;*.GM2;*.gm2;*.GM3;*.gm3|" msgid "Mechanical layers (*.GMx)|*.GM1;*.gm1;*.GM2;*.gm2;*.GM3;*.gm3|"
msgstr "Couches mécaniques (*.GMx)|*.GM1;*.gm1;*.GM2;*.gm2;*.GM3;*.gm3|" msgstr "Couches mécaniques (*.GMx)|*.GM1;*.gm1;*.GM2;*.gm2;*.GM3;*.gm3|"
#: gerbview/files.cpp:128 #: gerbview/files.cpp:130
msgid "Top Pad Master (*.GPT)|*.GPT;*.gpt|" msgid "Top Pad Master (*.GPT)|*.GPT;*.gpt|"
msgstr "Top Pad Master (*.GPT)|*.GPT;*.gpt|" msgstr "Top Pad Master (*.GPT)|*.GPT;*.gpt|"
#: gerbview/files.cpp:129 #: gerbview/files.cpp:131
msgid "Bottom Pad Master (*.GPB)|*.GPB;*.gpb|" msgid "Bottom Pad Master (*.GPB)|*.GPB;*.gpb|"
msgstr "Bottom Pad Master (*.GPB)|*.GPB;*.gpb|" msgstr "Bottom Pad Master (*.GPB)|*.GPB;*.gpb|"
#: gerbview/files.cpp:139 #: gerbview/files.cpp:141
msgid "Open Gerber File" msgid "Open Gerber File"
msgstr "Ouvrir Fichier Gerber" msgstr "Ouvrir Fichier Gerber"
#: gerbview/files.cpp:220 #: gerbview/files.cpp:222
msgid "Save Gerber File" msgid "Save Gerber File"
msgstr "Sauver Fichier Gerber" msgstr "Sauver Fichier Gerber"
...@@ -12842,6 +12850,12 @@ msgstr "Options d'Affichage" ...@@ -12842,6 +12850,12 @@ msgstr "Options d'Affichage"
msgid "Page Settings" msgid "Page Settings"
msgstr "Ajustage opt Page" msgstr "Ajustage opt Page"
#~ msgid ""
#~ "Gerber files (.gbr .gbx .lgr .ger .pho)| .gbr;*.GBR;*.gbx;*.GBX;*.lgr;*."
#~ "LGR;*.ger;*.GER;*.pho;*.PHO|"
#~ msgstr ""
#~ "Fichiers Gerber (.gbr .gbx .lgr .ger .pho)| *.gbr;*.GBR;*.gbx;*.GBX;*.lgr;"
#~ "*.LGR;*.ger;*.GER;*.pho;*.PHO|"
#~ msgid "&Name:" #~ msgid "&Name:"
#~ msgstr "&Nom:" #~ msgstr "&Nom:"
#~ msgid "N&umber:" #~ msgid "N&umber:"
......
...@@ -40,8 +40,11 @@ const wxChar* s_AllowedExtensionsToList[] = ...@@ -40,8 +40,11 @@ const wxChar* s_AllowedExtensionsToList[] =
wxT( "^[^$].*\\.brd$" ), wxT( "^[^$].*\\.brd$" ),
wxT( "^.*\\.net$" ), wxT( "^.*\\.net$" ),
wxT( "^.*\\.txt$" ), wxT( "^.*\\.txt$" ),
wxT( "^.*\\.pho$" ), wxT( "^.*\\.pho$" ), // Gerber file
wxT( "^.*\\.gbr$" ), wxT( "^.*\\.gbr$" ), // Gerber file
wxT( "^.*\\.gb[alops]$" ), // Gerber back (or bottom) layer file
wxT( "^.*\\.gt[alops]$" ), // Gerber front (or top) layer file
wxT( "^.*\\.g[0-9]{1,2}$" ), // Gerber inner layer file
wxT( "^.*\\.odt$" ), wxT( "^.*\\.odt$" ),
wxT( "^.*\\.sxw$" ), wxT( "^.*\\.sxw$" ),
wxT( "^.*\\.htm$" ), wxT( "^.*\\.htm$" ),
......
...@@ -14,11 +14,14 @@ ...@@ -14,11 +14,14 @@
#include "worksheet.h" #include "worksheet.h"
#include "pcbnew_id.h" #include "pcbnew_id.h"
#include "protos.h" #include "protos.h"
#include "pcbstruct.h"
#include "class_board_design_settings.h"
#define PLOT_DEFAULT_MARGE 300 // mils #define PLOT_DEFAULT_MARGE 300 // mils
/* Keywords to r/w options in config */ /* Keywords to r/w options in config */
#define OPTKEY_EDGELAYER_GERBER wxT( "EdgeLayerGerberOpt" ) #define OPTKEY_EDGELAYER_GERBER wxT( "EdgeLayerGerberOpt" )
#define OPTKEY_GERBER_EXTENSIONS wxT( "GerberOptUseLayersExt" )
#define OPTKEY_XFINESCALE_ADJ wxT( "PlotXFineScaleAdj" ) #define OPTKEY_XFINESCALE_ADJ wxT( "PlotXFineScaleAdj" )
#define OPTKEY_YFINESCALE_ADJ wxT( "PlotYFineScaleAdj" ) #define OPTKEY_YFINESCALE_ADJ wxT( "PlotYFineScaleAdj" )
#define OPTKEY_PADS_ON_SILKSCREEN wxT( "PlotPadsOnSilkscreen" ) #define OPTKEY_PADS_ON_SILKSCREEN wxT( "PlotPadsOnSilkscreen" )
...@@ -37,12 +40,13 @@ PCB_Plot_Options::PCB_Plot_Options() ...@@ -37,12 +40,13 @@ PCB_Plot_Options::PCB_Plot_Options()
Sel_Texte_Divers = true; Sel_Texte_Divers = true;
DrillShapeOpt = PCB_Plot_Options::SMALL_DRILL_SHAPE; DrillShapeOpt = PCB_Plot_Options::SMALL_DRILL_SHAPE;
Trace_Mode = FILLED; Trace_Mode = FILLED;
Scale = 1.0; Scale = 1.0;
ScaleAdjX = 1.0; ScaleAdjX = 1.0;
ScaleAdjY = 1.0; ScaleAdjY = 1.0;
PlotScaleOpt = 1; PlotScaleOpt = 1;
} }
static long s_SelectedLayers = LAYER_BACK | LAYER_FRONT | static long s_SelectedLayers = LAYER_BACK | LAYER_FRONT |
SILKSCREEN_LAYER_FRONT | SILKSCREEN_LAYER_BACK; SILKSCREEN_LAYER_FRONT | SILKSCREEN_LAYER_BACK;
...@@ -69,7 +73,8 @@ enum id_plotps { ...@@ -69,7 +73,8 @@ enum id_plotps {
ID_PRINT_PAD_ON_SILKSCREEN, ID_PRINT_PAD_ON_SILKSCREEN,
ID_FORCE_PRINT_PAD, ID_FORCE_PRINT_PAD,
ID_CREATE_DRILL_FILE, ID_CREATE_DRILL_FILE,
ID_SEL_PLOT_OFFSET_OPTION ID_SEL_PLOT_OFFSET_OPTION,
ID_USE_GERBER_EXTENSIONS
}; };
...@@ -94,6 +99,7 @@ public: ...@@ -94,6 +99,7 @@ public:
wxCheckBox* m_PlotMirorOpt; wxCheckBox* m_PlotMirorOpt;
wxCheckBox* m_PlotNoViaOnMaskOpt; wxCheckBox* m_PlotNoViaOnMaskOpt;
wxCheckBox* m_Exclude_Edges_Pcb; wxCheckBox* m_Exclude_Edges_Pcb;
wxCheckBox* m_Use_Gerber_Extensions;
wxCheckBox* m_Plot_Sheet_Ref; wxCheckBox* m_Plot_Sheet_Ref;
wxCheckBox* m_Plot_Invisible_Text; wxCheckBox* m_Plot_Invisible_Text;
wxCheckBox* m_Plot_Text_Value; wxCheckBox* m_Plot_Text_Value;
...@@ -110,8 +116,8 @@ public: ...@@ -110,8 +116,8 @@ public:
WinEDA_DFloatValueCtrl* m_FineAdjustXscaleOpt; WinEDA_DFloatValueCtrl* m_FineAdjustXscaleOpt;
WinEDA_DFloatValueCtrl* m_FineAdjustYscaleOpt; WinEDA_DFloatValueCtrl* m_FineAdjustYscaleOpt;
double m_XScaleAdjust; double m_XScaleAdjust;
double m_YScaleAdjust; double m_YScaleAdjust;
bool useA4() bool useA4()
{ {
...@@ -130,15 +136,16 @@ public: ...@@ -130,15 +136,16 @@ public:
// change the A4 to the simple postscript, according to the // change the A4 to the simple postscript, according to the
// PlotFormat enum // PlotFormat enum
switch (radioNdx) switch( radioNdx )
{ {
case 3: case 3:
radioNdx = PLOT_FORMAT_POST; radioNdx = PLOT_FORMAT_POST;
break; break;
case 4:
radioNdx = PLOT_FORMAT_DXF; case 4:
break; radioNdx = PLOT_FORMAT_DXF;
} break;
}
return PlotFormat( radioNdx ); return PlotFormat( radioNdx );
} }
...@@ -160,14 +167,14 @@ private: ...@@ -160,14 +167,14 @@ private:
}; };
BEGIN_EVENT_TABLE( WinEDA_PlotFrame, wxDialog ) BEGIN_EVENT_TABLE( WinEDA_PlotFrame, wxDialog )
EVT_INIT_DIALOG( WinEDA_PlotFrame::OnInitDialog ) EVT_INIT_DIALOG( WinEDA_PlotFrame::OnInitDialog )
EVT_CLOSE( WinEDA_PlotFrame::OnClose ) EVT_CLOSE( WinEDA_PlotFrame::OnClose )
EVT_BUTTON( wxID_CANCEL, WinEDA_PlotFrame::OnQuit ) EVT_BUTTON( wxID_CANCEL, WinEDA_PlotFrame::OnQuit )
EVT_BUTTON( ID_EXEC_PLOT, WinEDA_PlotFrame::Plot ) EVT_BUTTON( ID_EXEC_PLOT, WinEDA_PlotFrame::Plot )
EVT_BUTTON( ID_SAVE_OPT_PLOT, WinEDA_PlotFrame::SaveOptPlot ) EVT_BUTTON( ID_SAVE_OPT_PLOT, WinEDA_PlotFrame::SaveOptPlot )
EVT_BUTTON( ID_CREATE_DRILL_FILE, WinEDA_PlotFrame::CreateDrillFile ) EVT_BUTTON( ID_CREATE_DRILL_FILE, WinEDA_PlotFrame::CreateDrillFile )
EVT_RADIOBOX( ID_SEL_PLOT_FORMAT, WinEDA_PlotFrame::SetCommands ) EVT_RADIOBOX( ID_SEL_PLOT_FORMAT, WinEDA_PlotFrame::SetCommands )
EVT_RADIOBOX( ID_SCALE_OPT, WinEDA_PlotFrame::OnSetScaleOpt ) EVT_RADIOBOX( ID_SCALE_OPT, WinEDA_PlotFrame::OnSetScaleOpt )
END_EVENT_TABLE() END_EVENT_TABLE()
...@@ -228,12 +235,9 @@ void WinEDA_PlotFrame::OnInitDialog( wxInitDialogEvent& event ) ...@@ -228,12 +235,9 @@ void WinEDA_PlotFrame::OnInitDialog( wxInitDialogEvent& event )
5, fmtmsg, 1, wxRA_SPECIFY_COLS ); 5, fmtmsg, 1, wxRA_SPECIFY_COLS );
MidRightBoxSizer->Add( m_PlotFormatOpt, 0, wxGROW | wxALL, 5 ); MidRightBoxSizer->Add( m_PlotFormatOpt, 0, wxGROW | wxALL, 5 );
if( config ) config->Read( OPTKEY_OUTPUT_FORMAT, &g_pcb_plot_options.PlotFormat );
{ config->Read( OPTKEY_PLOT_LINEWIDTH_VALUE,
config->Read( OPTKEY_OUTPUT_FORMAT, &g_pcb_plot_options.PlotFormat ); &g_pcb_plot_options.PlotLine_Width );
config->Read( OPTKEY_PLOT_LINEWIDTH_VALUE,
&g_pcb_plot_options.PlotLine_Width );
}
m_PlotFormatOpt->SetSelection( g_pcb_plot_options.PlotFormat ); m_PlotFormatOpt->SetSelection( g_pcb_plot_options.PlotFormat );
...@@ -269,7 +273,8 @@ void WinEDA_PlotFrame::OnInitDialog( wxInitDialogEvent& event ) ...@@ -269,7 +273,8 @@ void WinEDA_PlotFrame::OnInitDialog( wxInitDialogEvent& event )
MidRightBoxSizer, MidRightBoxSizer,
PCB_INTERNAL_UNIT ); PCB_INTERNAL_UNIT );
m_LinesWidth->SetToolTip( _( "Set lines width used to plot in sketch \ m_LinesWidth->SetToolTip( _(
"Set lines width used to plot in sketch \
mode and plot pads outlines on silk screen layers" ) ); mode and plot pads outlines on silk screen layers" ) );
// Create the right column commands // Create the right column commands
...@@ -292,12 +297,9 @@ mode and plot pads outlines on silk screen layers" ) ); ...@@ -292,12 +297,9 @@ mode and plot pads outlines on silk screen layers" ) );
// Create scale adjust option // Create scale adjust option
m_XScaleAdjust = m_YScaleAdjust = 1.0; m_XScaleAdjust = m_YScaleAdjust = 1.0;
if( config ) config->Read( OPTKEY_EDGELAYER_GERBER, &g_pcb_plot_options.Exclude_Edges_Pcb );
{ config->Read( OPTKEY_XFINESCALE_ADJ, &m_XScaleAdjust );
config->Read( OPTKEY_EDGELAYER_GERBER, &g_pcb_plot_options.Exclude_Edges_Pcb ); config->Read( OPTKEY_YFINESCALE_ADJ, &m_YScaleAdjust );
config->Read( OPTKEY_XFINESCALE_ADJ, &m_XScaleAdjust );
config->Read( OPTKEY_YFINESCALE_ADJ, &m_YScaleAdjust );
}
// Test for a reasonable scale value. Set to 1 if problem // Test for a reasonable scale value. Set to 1 if problem
if( m_XScaleAdjust < MIN_SCALE || m_YScaleAdjust < MIN_SCALE if( m_XScaleAdjust < MIN_SCALE || m_YScaleAdjust < MIN_SCALE
...@@ -331,7 +333,7 @@ scale plotting" ) ); ...@@ -331,7 +333,7 @@ scale plotting" ) );
RightBoxSizer->Add( button, 0, wxGROW | wxALL, 5 ); RightBoxSizer->Add( button, 0, wxGROW | wxALL, 5 );
button = new wxButton( this, ID_CREATE_DRILL_FILE, button = new wxButton( this, ID_CREATE_DRILL_FILE,
_( "Generate drill file" ) ); _( "Generate drill file" ) );
RightBoxSizer->Add( button, 0, wxGROW | wxALL, 5 ); RightBoxSizer->Add( button, 0, wxGROW | wxALL, 5 );
button = new wxButton( this, wxID_CANCEL, _( "Close" ) ); button = new wxButton( this, wxID_CANCEL, _( "Close" ) );
...@@ -341,7 +343,7 @@ scale plotting" ) ); ...@@ -341,7 +343,7 @@ scale plotting" ) );
wxBoxSizer* OneColumnLayerBoxSizer = new wxBoxSizer( wxVERTICAL ); wxBoxSizer* OneColumnLayerBoxSizer = new wxBoxSizer( wxVERTICAL );
LayersBoxSizer->Add( OneColumnLayerBoxSizer, 0, wxGROW | wxALL, 5 ); LayersBoxSizer->Add( OneColumnLayerBoxSizer, 0, wxGROW | wxALL, 5 );
int mask = 1; int mask = 1;
for( int layer = 0; layer<NB_LAYERS; layer++, mask <<= 1 ) for( int layer = 0; layer<NB_LAYERS; layer++, mask <<= 1 )
{ {
...@@ -376,11 +378,33 @@ scale plotting" ) ); ...@@ -376,11 +378,33 @@ scale plotting" ) );
} }
} }
// Disable checkboxes if the corresponding layer is not enabled
for( int layer = 0; layer<NB_LAYERS; layer++, mask <<= 1 )
{
if( ! board->m_BoardSettings->IsLayerEnabled( layer ) )
{
m_BoxSelectLayer[layer]->Enable( false );
m_BoxSelectLayer[layer]->SetValue( false );
}
}
// Option for using proper Gerber extensions
m_Use_Gerber_Extensions = new wxCheckBox( this,
ID_USE_GERBER_EXTENSIONS,
_( "Use Proper Gerber Extensions" ) );
long ltmp;
config->Read( OPTKEY_GERBER_EXTENSIONS, &ltmp );
m_Use_Gerber_Extensions->SetValue( ltmp );
m_Use_Gerber_Extensions->SetToolTip(
_( "Use Proper Gerber Extensions - .GBL, .GTL, etc..." ) );
LeftBoxSizer->Add( m_Use_Gerber_Extensions, 0, wxGROW | wxALL, 1 );
// Option for excluding contents of "Edges Pcb" layer // Option for excluding contents of "Edges Pcb" layer
m_Exclude_Edges_Pcb = new wxCheckBox( this, m_Exclude_Edges_Pcb = new wxCheckBox( this,
ID_EXCLUDE_EDGES_PCB, ID_EXCLUDE_EDGES_PCB,
_( "Exclude pcb edge layer" ) ); _( "Exclude pcb edge layer" ) );
m_Exclude_Edges_Pcb->SetValue( g_pcb_plot_options.Exclude_Edges_Pcb ); m_Exclude_Edges_Pcb->SetValue( g_pcb_plot_options.Exclude_Edges_Pcb );
m_Exclude_Edges_Pcb->SetToolTip( m_Exclude_Edges_Pcb->SetToolTip(
...@@ -391,7 +415,7 @@ scale plotting" ) ); ...@@ -391,7 +415,7 @@ scale plotting" ) );
if( m_Parent->m_Print_Sheet_Ref ) if( m_Parent->m_Print_Sheet_Ref )
{ {
m_Plot_Sheet_Ref = new wxCheckBox( this, ID_PRINT_REF, m_Plot_Sheet_Ref = new wxCheckBox( this, ID_PRINT_REF,
_( "Print sheet reference" ) ); _( "Print sheet reference" ) );
m_Plot_Sheet_Ref->SetValue( g_pcb_plot_options.Plot_Frame_Ref ); m_Plot_Sheet_Ref->SetValue( g_pcb_plot_options.Plot_Frame_Ref );
LeftBoxSizer->Add( m_Plot_Sheet_Ref, 0, wxGROW | wxALL, 1 ); LeftBoxSizer->Add( m_Plot_Sheet_Ref, 0, wxGROW | wxALL, 1 );
...@@ -401,12 +425,11 @@ scale plotting" ) ); ...@@ -401,12 +425,11 @@ scale plotting" ) );
// Option to plot pads on silkscreen layers or all layers // Option to plot pads on silkscreen layers or all layers
m_Plot_Pads_on_Silkscreen = new wxCheckBox( this, m_Plot_Pads_on_Silkscreen = new wxCheckBox( this,
ID_PRINT_PAD_ON_SILKSCREEN, ID_PRINT_PAD_ON_SILKSCREEN,
_( "Print pads on silkscreen" ) ); _( "Print pads on silkscreen" ) );
if( config ) config->Read( OPTKEY_PADS_ON_SILKSCREEN,
config->Read( OPTKEY_PADS_ON_SILKSCREEN, &g_pcb_plot_options.PlotPadsOnSilkLayer );
&g_pcb_plot_options.PlotPadsOnSilkLayer );
m_Plot_Pads_on_Silkscreen->SetValue( &g_pcb_plot_options.PlotPadsOnSilkLayer ); m_Plot_Pads_on_Silkscreen->SetValue( &g_pcb_plot_options.PlotPadsOnSilkLayer );
m_Plot_Pads_on_Silkscreen->SetToolTip( m_Plot_Pads_on_Silkscreen->SetToolTip(
...@@ -414,10 +437,9 @@ scale plotting" ) ); ...@@ -414,10 +437,9 @@ scale plotting" ) );
LeftBoxSizer->Add( m_Plot_Pads_on_Silkscreen, 0, wxGROW | wxALL, 1 ); LeftBoxSizer->Add( m_Plot_Pads_on_Silkscreen, 0, wxGROW | wxALL, 1 );
m_Force_Plot_Pads = new wxCheckBox( this, ID_FORCE_PRINT_PAD, m_Force_Plot_Pads = new wxCheckBox( this, ID_FORCE_PRINT_PAD,
_( "Always print pads" ) ); _( "Always print pads" ) );
if( config ) config->Read( OPTKEY_ALWAYS_PRINT_PADS,
config->Read( OPTKEY_ALWAYS_PRINT_PADS, &g_pcb_plot_options.Plot_Pads_All_Layers );
&g_pcb_plot_options.Plot_Pads_All_Layers );
m_Force_Plot_Pads->SetValue( g_pcb_plot_options.Plot_Pads_All_Layers ); m_Force_Plot_Pads->SetValue( g_pcb_plot_options.Plot_Pads_All_Layers );
m_Force_Plot_Pads->SetToolTip( _( "Force print/plot pads on ALL layers" ) ); m_Force_Plot_Pads->SetToolTip( _( "Force print/plot pads on ALL layers" ) );
...@@ -425,7 +447,7 @@ scale plotting" ) ); ...@@ -425,7 +447,7 @@ scale plotting" ) );
// Options to plot texts on footprints // Options to plot texts on footprints
m_Plot_Text_Value = new wxCheckBox( this, ID_PRINT_VALUE, m_Plot_Text_Value = new wxCheckBox( this, ID_PRINT_VALUE,
_( "Print module value" ) ); _( "Print module value" ) );
m_Plot_Text_Value->SetValue( g_pcb_plot_options.Sel_Texte_Valeur ); m_Plot_Text_Value->SetValue( g_pcb_plot_options.Sel_Texte_Valeur );
m_Plot_Text_Value->SetToolTip( m_Plot_Text_Value->SetToolTip(
...@@ -433,7 +455,7 @@ scale plotting" ) ); ...@@ -433,7 +455,7 @@ scale plotting" ) );
LeftBoxSizer->Add( m_Plot_Text_Value, 0, wxGROW | wxALL, 1 ); LeftBoxSizer->Add( m_Plot_Text_Value, 0, wxGROW | wxALL, 1 );
m_Plot_Text_Ref = new wxCheckBox( this, ID_PRINT_REF, m_Plot_Text_Ref = new wxCheckBox( this, ID_PRINT_REF,
_( "Print module reference" ) ); _( "Print module reference" ) );
m_Plot_Text_Ref->SetValue( g_pcb_plot_options.Sel_Texte_Reference ); m_Plot_Text_Ref->SetValue( g_pcb_plot_options.Sel_Texte_Reference );
m_Plot_Text_Ref->SetToolTip( m_Plot_Text_Ref->SetToolTip(
...@@ -441,7 +463,7 @@ scale plotting" ) ); ...@@ -441,7 +463,7 @@ scale plotting" ) );
LeftBoxSizer->Add( m_Plot_Text_Ref, 0, wxGROW | wxALL, 1 ); LeftBoxSizer->Add( m_Plot_Text_Ref, 0, wxGROW | wxALL, 1 );
m_Plot_Text_Div = new wxCheckBox( this, ID_PRINT_MODULE_TEXTS, m_Plot_Text_Div = new wxCheckBox( this, ID_PRINT_MODULE_TEXTS,
_( "Print other module texts" ) ); _( "Print other module texts" ) );
m_Plot_Text_Div->SetValue( g_pcb_plot_options.Sel_Texte_Divers ); m_Plot_Text_Div->SetValue( g_pcb_plot_options.Sel_Texte_Divers );
m_Plot_Text_Div->SetToolTip( m_Plot_Text_Div->SetToolTip(
...@@ -449,8 +471,8 @@ scale plotting" ) ); ...@@ -449,8 +471,8 @@ scale plotting" ) );
LeftBoxSizer->Add( m_Plot_Text_Div, 0, wxGROW | wxALL, 1 ); LeftBoxSizer->Add( m_Plot_Text_Div, 0, wxGROW | wxALL, 1 );
m_Plot_Invisible_Text = new wxCheckBox( this, m_Plot_Invisible_Text = new wxCheckBox( this,
ID_FORCE_PRINT_INVISIBLE_TEXT, ID_FORCE_PRINT_INVISIBLE_TEXT,
_( "Force print invisible texts" ) ); _( "Force print invisible texts" ) );
m_Plot_Invisible_Text->SetValue( g_pcb_plot_options.Sel_Texte_Invisible ); m_Plot_Invisible_Text->SetValue( g_pcb_plot_options.Sel_Texte_Invisible );
m_Plot_Invisible_Text->SetToolTip( m_Plot_Invisible_Text->SetToolTip(
...@@ -458,7 +480,8 @@ scale plotting" ) ); ...@@ -458,7 +480,8 @@ scale plotting" ) );
LeftBoxSizer->Add( m_Plot_Invisible_Text, 0, wxGROW | wxALL, 1 ); LeftBoxSizer->Add( m_Plot_Invisible_Text, 0, wxGROW | wxALL, 1 );
static const wxString drillmsg[3] = { static const wxString drillmsg[3] =
{
_( "No drill mark" ), _( "No drill mark" ),
_( "Small mark" ), _( "Small mark" ),
_( "Real drill" ) _( "Real drill" )
...@@ -489,8 +512,11 @@ scale plotting" ) ); ...@@ -489,8 +512,11 @@ scale plotting" ) );
m_Scale_Opt->SetSelection( g_pcb_plot_options.PlotScaleOpt ); m_Scale_Opt->SetSelection( g_pcb_plot_options.PlotScaleOpt );
MidLeftBoxSizer->Add( m_Scale_Opt, 0, wxGROW | wxALL, 5 ); MidLeftBoxSizer->Add( m_Scale_Opt, 0, wxGROW | wxALL, 5 );
static const wxString list_opt3[3] = { _( "Line" ), _( "Filled" ), static const wxString list_opt3[3] =
_( "Sketch" ) }; {
_( "Line" ), _( "Filled" ),
_( "Sketch" )
};
m_PlotModeOpt = new wxRadioBox( this, ID_PLOT_MODE_OPT, _( "Plot Mode" ), m_PlotModeOpt = new wxRadioBox( this, ID_PLOT_MODE_OPT, _( "Plot Mode" ),
wxDefaultPosition, wxDefaultSize, wxDefaultPosition, wxDefaultSize,
...@@ -500,13 +526,13 @@ scale plotting" ) ); ...@@ -500,13 +526,13 @@ scale plotting" ) );
MidLeftBoxSizer->Add( m_PlotModeOpt, 0, wxGROW | wxALL, 5 ); MidLeftBoxSizer->Add( m_PlotModeOpt, 0, wxGROW | wxALL, 5 );
m_PlotMirorOpt = new wxCheckBox( this, ID_MIROR_OPT, m_PlotMirorOpt = new wxCheckBox( this, ID_MIROR_OPT,
_( "Plot mirror" ) ); _( "Plot mirror" ) );
m_PlotMirorOpt->SetValue( g_pcb_plot_options.Plot_Set_MIROIR ); m_PlotMirorOpt->SetValue( g_pcb_plot_options.Plot_Set_MIROIR );
MidLeftBoxSizer->Add( m_PlotMirorOpt, 0, wxGROW | wxALL, 5 ); MidLeftBoxSizer->Add( m_PlotMirorOpt, 0, wxGROW | wxALL, 5 );
m_PlotNoViaOnMaskOpt = new wxCheckBox( this, ID_MASKVIA_OPT, m_PlotNoViaOnMaskOpt = new wxCheckBox( this, ID_MASKVIA_OPT,
_( "Vias on mask" ) ); _( "Vias on mask" ) );
m_PlotNoViaOnMaskOpt->SetValue( g_pcb_plot_options.DrawViaOnMaskLayer ); m_PlotNoViaOnMaskOpt->SetValue( g_pcb_plot_options.DrawViaOnMaskLayer );
m_PlotNoViaOnMaskOpt->SetToolTip( m_PlotNoViaOnMaskOpt->SetToolTip(
...@@ -526,7 +552,7 @@ scale plotting" ) ); ...@@ -526,7 +552,7 @@ scale plotting" ) );
} }
void WinEDA_PlotFrame::OnQuit( wxCommandEvent& WXUNUSED( event ) ) void WinEDA_PlotFrame::OnQuit( wxCommandEvent& WXUNUSED(event) )
{ {
Close( true ); // true is to force the frame to close Close( true ); // true is to force the frame to close
} }
...@@ -543,16 +569,19 @@ void WinEDA_PlotFrame::CreateDrillFile( wxCommandEvent& event ) ...@@ -543,16 +569,19 @@ void WinEDA_PlotFrame::CreateDrillFile( wxCommandEvent& event )
( (WinEDA_PcbFrame*) m_Parent )->InstallDrillFrame( event ); ( (WinEDA_PcbFrame*) m_Parent )->InstallDrillFrame( event );
} }
void WinEDA_PlotFrame::OnSetScaleOpt( wxCommandEvent& event ) void WinEDA_PlotFrame::OnSetScaleOpt( wxCommandEvent& event )
{ {
/* Disable sheet reference for scale != 1:1 */ /* Disable sheet reference for scale != 1:1 */
bool scale1 = ( m_Scale_Opt->GetSelection() == 1 ); bool scale1 = ( m_Scale_Opt->GetSelection() == 1 );
m_Plot_Sheet_Ref->Enable( scale1 ); m_Plot_Sheet_Ref->Enable( scale1 );
if ( !scale1 ) if( !scale1 )
m_Plot_Sheet_Ref->SetValue( false ); m_Plot_Sheet_Ref->SetValue( false );
} }
void WinEDA_PlotFrame::SetCommands( wxCommandEvent& event ) void WinEDA_PlotFrame::SetCommands( wxCommandEvent& event )
{ {
int format = getFormat(); int format = getFormat();
...@@ -572,6 +601,7 @@ void WinEDA_PlotFrame::SetCommands( wxCommandEvent& event ) ...@@ -572,6 +601,7 @@ void WinEDA_PlotFrame::SetCommands( wxCommandEvent& event )
m_HPGLPenOverlayOpt->Enable( false ); m_HPGLPenOverlayOpt->Enable( false );
m_Exclude_Edges_Pcb->SetValue( false ); m_Exclude_Edges_Pcb->SetValue( false );
m_Exclude_Edges_Pcb->Enable( false ); m_Exclude_Edges_Pcb->Enable( false );
m_Use_Gerber_Extensions->Enable( false );
m_Scale_Opt->Enable( true ); m_Scale_Opt->Enable( true );
m_FineAdjustXscaleOpt->Enable( true ); m_FineAdjustXscaleOpt->Enable( true );
m_FineAdjustYscaleOpt->Enable( true ); m_FineAdjustYscaleOpt->Enable( true );
...@@ -591,6 +621,7 @@ void WinEDA_PlotFrame::SetCommands( wxCommandEvent& event ) ...@@ -591,6 +621,7 @@ void WinEDA_PlotFrame::SetCommands( wxCommandEvent& event )
m_HPGLPenSpeedOpt->Enable( false ); m_HPGLPenSpeedOpt->Enable( false );
m_HPGLPenOverlayOpt->Enable( false ); m_HPGLPenOverlayOpt->Enable( false );
m_Exclude_Edges_Pcb->Enable( true ); m_Exclude_Edges_Pcb->Enable( true );
m_Use_Gerber_Extensions->Enable( true );
m_Scale_Opt->SetSelection( 1 ); m_Scale_Opt->SetSelection( 1 );
m_Scale_Opt->Enable( false ); m_Scale_Opt->Enable( false );
m_FineAdjustXscaleOpt->Enable( false ); m_FineAdjustXscaleOpt->Enable( false );
...@@ -611,6 +642,7 @@ void WinEDA_PlotFrame::SetCommands( wxCommandEvent& event ) ...@@ -611,6 +642,7 @@ void WinEDA_PlotFrame::SetCommands( wxCommandEvent& event )
m_HPGLPenOverlayOpt->Enable( true ); m_HPGLPenOverlayOpt->Enable( true );
m_Exclude_Edges_Pcb->SetValue( false ); m_Exclude_Edges_Pcb->SetValue( false );
m_Exclude_Edges_Pcb->Enable( false ); m_Exclude_Edges_Pcb->Enable( false );
m_Use_Gerber_Extensions->Enable( false );
m_Scale_Opt->Enable( true ); m_Scale_Opt->Enable( true );
m_FineAdjustXscaleOpt->Enable( false ); m_FineAdjustXscaleOpt->Enable( false );
m_FineAdjustYscaleOpt->Enable( false ); m_FineAdjustYscaleOpt->Enable( false );
...@@ -631,6 +663,7 @@ void WinEDA_PlotFrame::SetCommands( wxCommandEvent& event ) ...@@ -631,6 +663,7 @@ void WinEDA_PlotFrame::SetCommands( wxCommandEvent& event )
m_HPGLPenOverlayOpt->Enable( false ); m_HPGLPenOverlayOpt->Enable( false );
m_Exclude_Edges_Pcb->SetValue( false ); m_Exclude_Edges_Pcb->SetValue( false );
m_Exclude_Edges_Pcb->Enable( false ); m_Exclude_Edges_Pcb->Enable( false );
m_Use_Gerber_Extensions->Enable( false );
m_Scale_Opt->Enable( false ); m_Scale_Opt->Enable( false );
m_Scale_Opt->SetSelection( 1 ); m_Scale_Opt->SetSelection( 1 );
m_FineAdjustXscaleOpt->Enable( false ); m_FineAdjustXscaleOpt->Enable( false );
...@@ -670,7 +703,7 @@ void WinEDA_PlotFrame::SaveOptPlot( wxCommandEvent& event ) ...@@ -670,7 +703,7 @@ void WinEDA_PlotFrame::SaveOptPlot( wxCommandEvent& event )
g_pcb_plot_options.PlotOrient = PLOT_MIROIR; g_pcb_plot_options.PlotOrient = PLOT_MIROIR;
else else
g_pcb_plot_options.PlotOrient = 0; g_pcb_plot_options.PlotOrient = 0;
g_pcb_plot_options.Trace_Mode = (GRTraceMode)m_PlotModeOpt->GetSelection(); g_pcb_plot_options.Trace_Mode = (GRTraceMode) m_PlotModeOpt->GetSelection();
g_pcb_plot_options.DrawViaOnMaskLayer = m_PlotNoViaOnMaskOpt->GetValue(); g_pcb_plot_options.DrawViaOnMaskLayer = m_PlotNoViaOnMaskOpt->GetValue();
g_pcb_plot_options.HPGL_Pen_Diam = m_HPGLPenSizeOpt->GetValue(); g_pcb_plot_options.HPGL_Pen_Diam = m_HPGLPenSizeOpt->GetValue();
...@@ -683,28 +716,27 @@ void WinEDA_PlotFrame::SaveOptPlot( wxCommandEvent& event ) ...@@ -683,28 +716,27 @@ void WinEDA_PlotFrame::SaveOptPlot( wxCommandEvent& event )
wxConfig* config = wxGetApp().m_EDA_Config; wxConfig* config = wxGetApp().m_EDA_Config;
if( config ) config->Write( OPTKEY_EDGELAYER_GERBER,
g_pcb_plot_options.Exclude_Edges_Pcb );
config->Write( OPTKEY_GERBER_EXTENSIONS,
m_Use_Gerber_Extensions->GetValue() );
config->Write( OPTKEY_XFINESCALE_ADJ, m_XScaleAdjust );
config->Write( OPTKEY_YFINESCALE_ADJ, m_YScaleAdjust );
config->Write( OPTKEY_PADS_ON_SILKSCREEN,
g_pcb_plot_options.PlotPadsOnSilkLayer );
config->Write( OPTKEY_ALWAYS_PRINT_PADS,
g_pcb_plot_options.Plot_Pads_All_Layers );
int formatNdx = m_PlotFormatOpt->GetSelection();
config->Write( OPTKEY_OUTPUT_FORMAT, formatNdx );
config->Write( OPTKEY_PLOT_LINEWIDTH_VALUE,
g_pcb_plot_options.PlotLine_Width );
wxString layerKey;
for( int layer = 0; layer<NB_LAYERS; ++layer )
{ {
config->Write( OPTKEY_EDGELAYER_GERBER, layerKey.Printf( OPTKEY_LAYERBASE, layer );
g_pcb_plot_options.Exclude_Edges_Pcb ); config->Write( layerKey, m_BoxSelectLayer[layer]->IsChecked() );
config->Write( OPTKEY_XFINESCALE_ADJ, m_XScaleAdjust );
config->Write( OPTKEY_YFINESCALE_ADJ, m_YScaleAdjust );
config->Write( OPTKEY_PADS_ON_SILKSCREEN,
g_pcb_plot_options.PlotPadsOnSilkLayer );
config->Write( OPTKEY_ALWAYS_PRINT_PADS,
g_pcb_plot_options.Plot_Pads_All_Layers );
int formatNdx = m_PlotFormatOpt->GetSelection();
config->Write( OPTKEY_OUTPUT_FORMAT, formatNdx );
config->Write( OPTKEY_PLOT_LINEWIDTH_VALUE,
g_pcb_plot_options.PlotLine_Width );
wxString layerKey;
for( int layer = 0; layer<NB_LAYERS; ++layer )
{
layerKey.Printf( OPTKEY_LAYERBASE, layer );
config->Write( layerKey, m_BoxSelectLayer[layer]->IsChecked() );
}
} }
g_pcb_plot_options.Plot_PS_Negative = m_Plot_PS_Negative->GetValue(); g_pcb_plot_options.Plot_PS_Negative = m_Plot_PS_Negative->GetValue();
...@@ -764,8 +796,8 @@ void WinEDA_PlotFrame::Plot( wxCommandEvent& event ) ...@@ -764,8 +796,8 @@ void WinEDA_PlotFrame::Plot( wxCommandEvent& event )
case PLOT_FORMAT_GERBER: case PLOT_FORMAT_GERBER:
g_pcb_plot_options.Scale = 1.0; // No scale option allowed in gerber format g_pcb_plot_options.Scale = 1.0; // No scale option allowed in gerber format
ext = wxT( "pho" ); ext = wxT( "pho" );
wildcard = _( "GERBER photo plot files (.pho)|*.pho" ); wildcard = _( "GERBER photo plot files (.pho .gbr)|*.pho;*.gbr" );
break; break;
case PLOT_FORMAT_HPGL: case PLOT_FORMAT_HPGL:
...@@ -783,10 +815,10 @@ void WinEDA_PlotFrame::Plot( wxCommandEvent& event ) ...@@ -783,10 +815,10 @@ void WinEDA_PlotFrame::Plot( wxCommandEvent& event )
// Test for a reasonable scale value // Test for a reasonable scale value
if( g_pcb_plot_options.Scale < MIN_SCALE ) if( g_pcb_plot_options.Scale < MIN_SCALE )
DisplayInfoMessage( this, DisplayInfoMessage( this,
_( "Warning: Scale option set to a very small value" ) ); _( "Warning: Scale option set to a very small value" ) );
if( g_pcb_plot_options.Scale > MAX_SCALE ) if( g_pcb_plot_options.Scale > MAX_SCALE )
DisplayInfoMessage( this, DisplayInfoMessage( this,
_( "Warning: Scale option set to a very large value" ) ); _( "Warning: Scale option set to a very large value" ) );
int mask = 1; int mask = 1;
s_SelectedLayers = 0; s_SelectedLayers = 0;
...@@ -802,9 +834,90 @@ void WinEDA_PlotFrame::Plot( wxCommandEvent& event ) ...@@ -802,9 +834,90 @@ void WinEDA_PlotFrame::Plot( wxCommandEvent& event )
fn = m_Parent->GetScreen()->m_FileName; fn = m_Parent->GetScreen()->m_FileName;
// Create file name. // Create file name.
fn.SetName( fn.GetName() + wxT( "-" ) + wxString layername = board->GetLayerName( layer_to_plot );
board->GetLayerName( layer_to_plot ) ); layername.Trim(true); layername.Trim(false); // remove leading and trailing spaces if any
fn.SetExt( ext ); fn.SetName( fn.GetName() + wxT( "-" ) + layername );
// Use Gerber Extensions based on layer number
// (See http://en.wikipedia.org/wiki/Gerber_File)
if( (format == PLOT_FORMAT_GERBER) && m_Use_Gerber_Extensions->GetValue() )
{
switch( layer_to_plot )
{
case LAYER_N_FRONT:
fn.SetExt( wxT( "gtl" ) );
break;
case LAYER_N_2:
case LAYER_N_3:
case LAYER_N_4:
case LAYER_N_5:
case LAYER_N_6:
case LAYER_N_7:
case LAYER_N_8:
case LAYER_N_9:
case LAYER_N_10:
case LAYER_N_11:
case LAYER_N_12:
case LAYER_N_13:
case LAYER_N_14:
case LAYER_N_15:
// TODO: use g1 to gxx according to the
// new internal layers designation
// (1 is the first internal layer from the front layer)
fn.SetExt( wxT( "gbr" ) );
break;
case LAYER_N_BACK:
fn.SetExt( wxT( "gbl" ) );
break;
case ADHESIVE_N_BACK:
fn.SetExt( wxT( "gba" ) );
break;
case ADHESIVE_N_FRONT:
fn.SetExt( wxT( "gta" ) );
break;
case SOLDERPASTE_N_BACK:
fn.SetExt( wxT( "gbp" ) );
break;
case SOLDERPASTE_N_FRONT:
fn.SetExt( wxT( "gtp" ) );
break;
case SILKSCREEN_N_BACK:
fn.SetExt( wxT( "gbo" ) );
break;
case SILKSCREEN_N_FRONT:
fn.SetExt( wxT( "gto" ) );
break;
case SOLDERMASK_N_BACK:
fn.SetExt( wxT( "gbs" ) );
break;
case SOLDERMASK_N_FRONT:
fn.SetExt( wxT( "gts" ) );
break;
case DRAW_N:
case COMMENT_N:
case ECO1_N:
case ECO2_N:
case EDGE_N:
fn.SetExt( wxT( "gbr" ) );
break;
}
}
else
{
fn.SetExt( ext );
}
switch( format ) switch( format )
{ {
...@@ -816,7 +929,7 @@ void WinEDA_PlotFrame::Plot( wxCommandEvent& event ) ...@@ -816,7 +929,7 @@ void WinEDA_PlotFrame::Plot( wxCommandEvent& event )
case PLOT_FORMAT_GERBER: case PLOT_FORMAT_GERBER:
m_Parent->Genere_GERBER( fn.GetFullPath(), layer_to_plot, m_Parent->Genere_GERBER( fn.GetFullPath(), layer_to_plot,
s_PlotOriginIsAuxAxis, s_PlotOriginIsAuxAxis,
g_pcb_plot_options.Trace_Mode ); g_pcb_plot_options.Trace_Mode );
break; break;
case PLOT_FORMAT_HPGL: case PLOT_FORMAT_HPGL:
......
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