Grebview: add info in layer manager for Excellon drill filles, similar to X2 file function info in X2 gerber files.
This commit is contained in:
parent
49fa6f92a2
commit
30c7821ba2
|
@ -548,6 +548,9 @@ int EDA_BASE_FRAME::ReadHotkeyConfigFile( const wxString& aFilename,
|
||||||
{
|
{
|
||||||
wxFile cfgfile( aFilename );
|
wxFile cfgfile( aFilename );
|
||||||
|
|
||||||
|
if( !cfgfile.IsOpened() ) // There is a problem to open file
|
||||||
|
return 0;
|
||||||
|
|
||||||
// get length
|
// get length
|
||||||
cfgfile.SeekEnd();
|
cfgfile.SeekEnd();
|
||||||
wxFileOffset size = cfgfile.Tell();
|
wxFileOffset size = cfgfile.Tell();
|
||||||
|
|
|
@ -455,7 +455,7 @@ const wxString GERBER_IMAGE_LIST::GetDisplayName( int aIdx )
|
||||||
if( aIdx >= 0 && aIdx < (int)m_GERBER_List.size() )
|
if( aIdx >= 0 && aIdx < (int)m_GERBER_List.size() )
|
||||||
gerber = m_GERBER_List[aIdx];
|
gerber = m_GERBER_List[aIdx];
|
||||||
|
|
||||||
if( gerber && gerber->m_InUse)
|
if( IsUsed(aIdx ) )
|
||||||
{
|
{
|
||||||
if( gerber->m_FileFunction )
|
if( gerber->m_FileFunction )
|
||||||
name.Printf( _( "Layer %d (%s, %s)" ), aIdx + 1,
|
name.Printf( _( "Layer %d (%s, %s)" ), aIdx + 1,
|
||||||
|
|
|
@ -95,7 +95,7 @@ void X2_ATTRIBUTE::DbgListPrms()
|
||||||
* buff = the buffer containing current Gerber data (GERBER_BUFZ size)
|
* buff = the buffer containing current Gerber data (GERBER_BUFZ size)
|
||||||
* text = a pointer to the first char to read in Gerber data
|
* text = a pointer to the first char to read in Gerber data
|
||||||
*/
|
*/
|
||||||
bool X2_ATTRIBUTE::ParseAttribCmd( FILE* aFile, char *aBuffer, int aBuffSize, char*& aText )
|
bool X2_ATTRIBUTE::ParseAttribCmd( FILE* aFile, char *aBuffer, int aBuffSize, char* &aText )
|
||||||
{
|
{
|
||||||
bool ok = true;
|
bool ok = true;
|
||||||
wxString data;
|
wxString data;
|
||||||
|
|
|
@ -97,7 +97,7 @@ public:
|
||||||
* or the end of line if the line does not contain '%' or aBuffer == NULL (X1 mode)
|
* or the end of line if the line does not contain '%' or aBuffer == NULL (X1 mode)
|
||||||
* @return true if no error.
|
* @return true if no error.
|
||||||
*/
|
*/
|
||||||
bool ParseAttribCmd( FILE* aFile, char *aBuffer, int aBuffSize, char*& aText );
|
bool ParseAttribCmd( FILE* aFile, char *aBuffer, int aBuffSize, char* &aText );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Debug function: pring using wxLogMessage le list of parameters
|
* Debug function: pring using wxLogMessage le list of parameters
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/*
|
/*
|
||||||
* This program source code file is part of KiCad, a free EDA CAD application.
|
* 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) 2004-2010 Jean-Pierre Charras, jp.charras at wanadoo.fr
|
||||||
* Copyright (C) 2010 SoftPLC Corporation, Dick Hollenbeck <dick@softplc.com>
|
* Copyright (C) 2010 SoftPLC Corporation, Dick Hollenbeck <dick@softplc.com>
|
||||||
* Copyright (C) 2010 KiCad Developers, see change_log.txt for contributors.
|
* Copyright (C) 2010 KiCad Developers, see change_log.txt for contributors.
|
||||||
*
|
*
|
||||||
|
|
|
@ -8,8 +8,8 @@
|
||||||
/*
|
/*
|
||||||
* This program source code file is part of KiCad, a free EDA CAD application.
|
* This program source code file is part of KiCad, a free EDA CAD application.
|
||||||
*
|
*
|
||||||
* Copyright (C) 1992-2011 Jean-Pierre Charras <jean-pierre.charras@gipsa-lab.inpg.fr>
|
* Copyright (C) 1992-2014 Jean-Pierre Charras <jp.charras at wanadoo.fr>
|
||||||
* Copyright (C) 1992-2011 KiCad Developers, see change_log.txt for contributors.
|
* Copyright (C) 1992-2014 KiCad Developers, see change_log.txt for contributors.
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or
|
* This program is free software; you can redistribute it and/or
|
||||||
* modify it under the terms of the GNU General Public License
|
* modify it under the terms of the GNU General Public License
|
||||||
|
@ -75,6 +75,7 @@
|
||||||
#include <class_GERBER.h>
|
#include <class_GERBER.h>
|
||||||
#include <class_excellon.h>
|
#include <class_excellon.h>
|
||||||
#include <kicad_string.h>
|
#include <kicad_string.h>
|
||||||
|
#include <class_X2_gerber_attributes.h>
|
||||||
|
|
||||||
#include <cmath>
|
#include <cmath>
|
||||||
|
|
||||||
|
@ -93,18 +94,24 @@ extern double ReadDouble( char*& text, bool aSkipSeparator = true );
|
||||||
extern void fillFlashedGBRITEM( GERBER_DRAW_ITEM* aGbrItem,
|
extern void fillFlashedGBRITEM( GERBER_DRAW_ITEM* aGbrItem,
|
||||||
APERTURE_T aAperture,
|
APERTURE_T aAperture,
|
||||||
int Dcode_index,
|
int Dcode_index,
|
||||||
int aLayer,
|
int aLayer,
|
||||||
const wxPoint& aPos,
|
const wxPoint& aPos,
|
||||||
wxSize aSize,
|
wxSize aSize,
|
||||||
bool aLayerNegative );
|
bool aLayerNegative );
|
||||||
void fillLineGBRITEM( GERBER_DRAW_ITEM* aGbrItem,
|
void fillLineGBRITEM( GERBER_DRAW_ITEM* aGbrItem,
|
||||||
int Dcode_index,
|
int Dcode_index,
|
||||||
int aLayer,
|
int aLayer,
|
||||||
const wxPoint& aStart,
|
const wxPoint& aStart,
|
||||||
const wxPoint& aEnd,
|
const wxPoint& aEnd,
|
||||||
wxSize aPenSize,
|
wxSize aPenSize,
|
||||||
bool aLayerNegative );
|
bool aLayerNegative );
|
||||||
|
|
||||||
|
// Getber X2 files have a file attribute which specify the type of image
|
||||||
|
// (copper, solder paste ... and sides tpo, bottom or inner copper layers)
|
||||||
|
// Excellon drill files do not have attributes, so, just to identify the image
|
||||||
|
// In gerbview, we add this attribute, like a Gerber drill file
|
||||||
|
static const char file_attribute[] = ".FileFunction,Other,Drill*";
|
||||||
|
|
||||||
static EXCELLON_CMD excellonHeaderCmdList[] =
|
static EXCELLON_CMD excellonHeaderCmdList[] =
|
||||||
{
|
{
|
||||||
{ "M0", DRILL_M_END, -1 }, // End of Program - No Rewind
|
{ "M0", DRILL_M_END, -1 }, // End of Program - No Rewind
|
||||||
|
@ -168,16 +175,16 @@ static EXCELLON_CMD excellon_G_CmdList[] =
|
||||||
bool GERBVIEW_FRAME::Read_EXCELLON_File( const wxString& aFullFileName )
|
bool GERBVIEW_FRAME::Read_EXCELLON_File( const wxString& aFullFileName )
|
||||||
{
|
{
|
||||||
wxString msg;
|
wxString msg;
|
||||||
int layer = getActiveLayer(); // current layer used in GerbView
|
int layerId = getActiveLayer(); // current layer used in GerbView
|
||||||
EXCELLON_IMAGE* drill_Layer = (EXCELLON_IMAGE*) g_GERBER_List.GetGbrImage( layer );
|
EXCELLON_IMAGE* drill_Layer = (EXCELLON_IMAGE*) g_GERBER_List.GetGbrImage( layerId );
|
||||||
|
|
||||||
if( drill_Layer == NULL )
|
if( drill_Layer == NULL )
|
||||||
{
|
{
|
||||||
drill_Layer = new EXCELLON_IMAGE( this, layer );
|
drill_Layer = new EXCELLON_IMAGE( this, layerId );
|
||||||
layer = g_GERBER_List.AddGbrImage( drill_Layer, layer );
|
layerId = g_GERBER_List.AddGbrImage( drill_Layer, layerId );
|
||||||
}
|
}
|
||||||
|
|
||||||
if( layer < 0 )
|
if( layerId < 0 )
|
||||||
{
|
{
|
||||||
DisplayError( this, _( "No room to load file" ) );
|
DisplayError( this, _( "No room to load file" ) );
|
||||||
return false;
|
return false;
|
||||||
|
@ -220,7 +227,7 @@ bool EXCELLON_IMAGE::Read_EXCELLON_File( FILE * aFile,
|
||||||
m_FileName = aFullFileName;
|
m_FileName = aFullFileName;
|
||||||
m_Current_File = aFile;
|
m_Current_File = aFile;
|
||||||
|
|
||||||
SetLocaleTo_C_standard();
|
LOCALE_IO toggleIo;
|
||||||
|
|
||||||
// FILE_LINE_READER will close the file.
|
// FILE_LINE_READER will close the file.
|
||||||
if( m_Current_File == NULL )
|
if( m_Current_File == NULL )
|
||||||
|
@ -289,7 +296,16 @@ bool EXCELLON_IMAGE::Read_EXCELLON_File( FILE * aFile,
|
||||||
} // End switch
|
} // End switch
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
SetLocaleTo_Default();
|
|
||||||
|
// Add our file attribute, to identify the drill file
|
||||||
|
X2_ATTRIBUTE dummy;
|
||||||
|
char* text = (char*)file_attribute;
|
||||||
|
dummy.ParseAttribCmd( m_Current_File, NULL, 0, text );
|
||||||
|
delete m_FileFunction;
|
||||||
|
m_FileFunction = new X2_ATTRIBUTE_FILEFUNCTION( dummy );
|
||||||
|
|
||||||
|
m_InUse = true;
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -77,7 +77,7 @@ bool GERBVIEW_FRAME::Read_GERBER_File( const wxString& GERBER_FullFileName,
|
||||||
if( path != wxEmptyString )
|
if( path != wxEmptyString )
|
||||||
wxSetWorkingDirectory( path );
|
wxSetWorkingDirectory( path );
|
||||||
|
|
||||||
SetLocaleTo_C_standard();
|
LOCALE_IO toggleIo;
|
||||||
|
|
||||||
while( true )
|
while( true )
|
||||||
{
|
{
|
||||||
|
@ -171,8 +171,8 @@ bool GERBVIEW_FRAME::Read_GERBER_File( const wxString& GERBER_FullFileName,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fclose( gerber->m_Current_File );
|
fclose( gerber->m_Current_File );
|
||||||
SetLocaleTo_Default();
|
|
||||||
|
|
||||||
gerber->m_InUse = true;
|
gerber->m_InUse = true;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue