minor enhancements. Fixing a crash in build_BOM.cpp (temporary fix, until Dick finishes fields rework)
This commit is contained in:
commit
ab056f3ed6
|
@ -106,9 +106,9 @@ Installation from source code
|
|||
|
||||
Some dependencies must be satisfied for the correct installation of KiCad:
|
||||
|
||||
wxWidgets >= 2.6.3.3 http://www.wxwidgets.org/
|
||||
CMake >= 2.4.6 http://www.cmake.org/
|
||||
Boost C++ Libraries http://www.boost.org/
|
||||
wxWidgets >= 2.8.11 http://www.wxwidgets.org/
|
||||
CMake >= 2.6.4 http://www.cmake.org/
|
||||
Boost C++ Libraries (files used by kicad are provided in kicad sources) http://www.boost.org/
|
||||
OpenGL
|
||||
Linux: Mesa 3D Graphics Library http://www.mesa3d.org/
|
||||
Windows: built-in
|
||||
|
|
|
@ -9,7 +9,17 @@ set(BITMAP2COMPONENT_SRCS
|
|||
bitmap2cmp_gui
|
||||
)
|
||||
|
||||
add_executable(bitmap2component WIN32 MACOSX_BUNDLE ${BITMAP2COMPONENT_SRCS} ${BITMAP2COMPONENT_RESOURCES})
|
||||
if(WIN32)
|
||||
if(MINGW)
|
||||
# BITMAP2COMPONENT_RESOURCES variable is set by the macro.
|
||||
mingw_resource_compiler(bitmap2component)
|
||||
else(MINGW)
|
||||
set(BITMAP2COMPONENT_RESOURCES bitmap2component.rc)
|
||||
endif(MINGW)
|
||||
endif(WIN32)
|
||||
add_executable(bitmap2component WIN32 MACOSX_BUNDLE
|
||||
${BITMAP2COMPONENT_SRCS}
|
||||
${BITMAP2COMPONENT_RESOURCES})
|
||||
|
||||
|
||||
target_link_libraries( bitmap2component
|
||||
|
|
|
@ -23,17 +23,22 @@
|
|||
*/
|
||||
#include "wx/wx.h"
|
||||
#include "wx/config.h"
|
||||
#include "wx/filename.h"
|
||||
|
||||
#include "bitmap2cmp_gui_base.h"
|
||||
|
||||
#include "potracelib.h"
|
||||
#include "bitmap_io.h"
|
||||
|
||||
#include "bitmap2component.xpm"
|
||||
|
||||
#define KEYWORD_FRAME_POSX wxT( "bmconverter_Pos_x" )
|
||||
#define KEYWORD_FRAME_POSY wxT( "bmconverter_Pos_y" )
|
||||
#define KEYWORD_FRAME_SIZEX wxT( "bmconverter_Size_x" )
|
||||
#define KEYWORD_FRAME_SIZEY wxT( "bmconverter_Size_y" )
|
||||
|
||||
#define KEYWORD_FRAME_POSX wxT( "Bmconverter_Pos_x" )
|
||||
#define KEYWORD_FRAME_POSY wxT( "Bmconverter_Pos_y" )
|
||||
#define KEYWORD_FRAME_SIZEX wxT( "Bmconverter_Size_x" )
|
||||
#define KEYWORD_FRAME_SIZEY wxT( "Bmconverter_Size_y" )
|
||||
#define KEYWORD_LAST_INPUT_FILE wxT( "Last_input" )
|
||||
#define KEYWORD_LAST_OUTPUT_FILE wxT( "Last_output" )
|
||||
|
||||
extern int bitmap2component( potrace_bitmap_t* aPotrace_bitmap, FILE* aOutfile, int aFormat );
|
||||
|
||||
|
@ -49,7 +54,8 @@ private:
|
|||
wxBitmap m_Greyscale_Bitmap;
|
||||
wxImage m_NB_Image;
|
||||
wxBitmap m_BN_Bitmap;
|
||||
wxString m_ImgFileName;
|
||||
wxString m_BitmapFileName;
|
||||
wxString m_ConvertedFileName;
|
||||
wxSize m_FrameSize;
|
||||
wxPoint m_FramePos;
|
||||
wxConfig * m_Config;
|
||||
|
@ -72,7 +78,6 @@ private:
|
|||
void ExportFile( FILE* aOutfile, int aFormat );
|
||||
};
|
||||
|
||||
|
||||
BM2CMP_FRAME::BM2CMP_FRAME() : BM2CMP_FRAME_BASE( NULL )
|
||||
{
|
||||
m_Config = new wxConfig();
|
||||
|
@ -80,11 +85,18 @@ BM2CMP_FRAME::BM2CMP_FRAME() : BM2CMP_FRAME_BASE( NULL )
|
|||
m_Config->Read( KEYWORD_FRAME_POSY, & m_FramePos.y, -1 );
|
||||
m_Config->Read( KEYWORD_FRAME_SIZEX, & m_FrameSize.x, -1 );
|
||||
m_Config->Read( KEYWORD_FRAME_SIZEY, & m_FrameSize.y, -1 );
|
||||
m_Config->Read( KEYWORD_LAST_INPUT_FILE, &m_BitmapFileName );
|
||||
m_Config->Read( KEYWORD_LAST_OUTPUT_FILE, &m_ConvertedFileName );
|
||||
|
||||
#ifdef __WINDOWS__
|
||||
SetIcon( wxICON( bitmap2component_icon ) );
|
||||
#else
|
||||
SetIcon( wxICON( bitmap2component ) );
|
||||
#endif
|
||||
|
||||
wxString msg( wxT( " 0000 " ) );
|
||||
wxString msg( wxT( "000000" ) );
|
||||
m_gridInfo->SetCellValue( 0, 0, msg );
|
||||
m_gridInfo->SetCellValue( 1, 0, msg );
|
||||
m_gridInfo->SetCellValue( 2, 0, msg );
|
||||
if( GetSizer() )
|
||||
{
|
||||
GetSizer()->SetSizeHints( this );
|
||||
|
@ -108,6 +120,8 @@ BM2CMP_FRAME::~BM2CMP_FRAME()
|
|||
m_Config->Write( KEYWORD_FRAME_POSY, (long) m_FramePos.y );
|
||||
m_Config->Write( KEYWORD_FRAME_SIZEX, (long) m_FrameSize.x );
|
||||
m_Config->Write( KEYWORD_FRAME_SIZEY, (long) m_FrameSize.y );
|
||||
m_Config->Write( KEYWORD_LAST_INPUT_FILE, m_BitmapFileName );
|
||||
m_Config->Write( KEYWORD_LAST_OUTPUT_FILE, m_ConvertedFileName );
|
||||
|
||||
delete m_Config;
|
||||
|
||||
|
@ -136,18 +150,24 @@ void BM2CMP_FRAME::OnPaint( wxPaintEvent& event )
|
|||
*/
|
||||
void BM2CMP_FRAME::OnLoadFile( wxCommandEvent& event )
|
||||
{
|
||||
wxFileDialog FileDlg( this, _( "Choose Image" ), ::wxGetCwd(), wxEmptyString,
|
||||
wxFileName fn(m_BitmapFileName);
|
||||
wxString path = fn.GetPath();
|
||||
if( path.IsEmpty() || !wxDirExists(path) )
|
||||
path = wxGetCwd();
|
||||
|
||||
wxFileDialog FileDlg( this, _( "Choose Image" ), path, wxEmptyString,
|
||||
_( "Image Files " ) + wxImage::GetImageExtWildcard(),
|
||||
wxFD_OPEN );
|
||||
int diag = FileDlg.ShowModal();
|
||||
|
||||
if( diag != wxID_OK )
|
||||
return;
|
||||
m_ImgFileName = FileDlg.GetPath();
|
||||
|
||||
if( !m_Pict_Image.LoadFile( m_ImgFileName ) )
|
||||
m_BitmapFileName = FileDlg.GetPath();
|
||||
|
||||
if( !m_Pict_Image.LoadFile( m_BitmapFileName ) )
|
||||
{
|
||||
wxMessageBox( _( "Couldn't load image from '%s'." ), m_ImgFileName.c_str() );
|
||||
wxMessageBox( _( "Couldn't load image from <%s>" ), m_BitmapFileName.c_str() );
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -236,22 +256,26 @@ void BM2CMP_FRAME::OnThresholdChange( wxScrollEvent& event )
|
|||
|
||||
void BM2CMP_FRAME::OnExportEeschema( wxCommandEvent& event )
|
||||
{
|
||||
wxFileName fn(m_ConvertedFileName);
|
||||
wxString path = fn.GetPath();
|
||||
if( path.IsEmpty() || !wxDirExists(path) )
|
||||
path = ::wxGetCwd();
|
||||
wxString msg = _( "Schematic lib file (*.lib)|*.lib" );
|
||||
wxFileDialog FileDlg( this, _( "Create lib file" ), ::wxGetCwd(), wxEmptyString,
|
||||
wxFileDialog FileDlg( this, _( "Create lib file" ), path, wxEmptyString,
|
||||
msg,
|
||||
wxFD_SAVE | wxFD_OVERWRITE_PROMPT );
|
||||
int diag = FileDlg.ShowModal();
|
||||
|
||||
if( diag != wxID_OK )
|
||||
return;
|
||||
wxString filename = FileDlg.GetPath();
|
||||
m_ConvertedFileName = FileDlg.GetPath();
|
||||
|
||||
FILE* outfile;
|
||||
outfile = wxFopen( filename, wxT( "w" ) );
|
||||
outfile = wxFopen( m_ConvertedFileName, wxT( "w" ) );
|
||||
if( outfile == NULL )
|
||||
{
|
||||
wxString msg;
|
||||
msg.Printf( _( "File %s could not be created" ), filename.c_str() );
|
||||
msg.Printf( _( "File %s could not be created" ), m_ConvertedFileName.c_str() );
|
||||
wxMessageBox( msg );
|
||||
return;
|
||||
}
|
||||
|
@ -263,22 +287,26 @@ void BM2CMP_FRAME::OnExportEeschema( wxCommandEvent& event )
|
|||
|
||||
void BM2CMP_FRAME::OnExportPcbnew( wxCommandEvent& event )
|
||||
{
|
||||
wxFileName fn(m_ConvertedFileName);
|
||||
wxString path = fn.GetPath();
|
||||
if( path.IsEmpty() || !wxDirExists(path) )
|
||||
path = ::wxGetCwd();
|
||||
wxString msg = _( "Footprint export file (*.emp)|*.emp" );
|
||||
wxFileDialog FileDlg( this, _( "Create footprint export file" ), ::wxGetCwd(), wxEmptyString,
|
||||
wxFileDialog FileDlg( this, _( "Create footprint export file" ), path, wxEmptyString,
|
||||
msg,
|
||||
wxFD_SAVE | wxFD_OVERWRITE_PROMPT );
|
||||
int diag = FileDlg.ShowModal();
|
||||
|
||||
if( diag != wxID_OK )
|
||||
return;
|
||||
wxString filename = FileDlg.GetPath();
|
||||
m_ConvertedFileName = FileDlg.GetPath();
|
||||
|
||||
FILE* outfile;
|
||||
outfile = wxFopen( filename, wxT( "w" ) );
|
||||
outfile = wxFopen( m_ConvertedFileName, wxT( "w" ) );
|
||||
if( outfile == NULL )
|
||||
{
|
||||
wxString msg;
|
||||
msg.Printf( _( "File %s could not be created" ), filename.c_str() );
|
||||
msg.Printf( _( "File %s could not be created" ), m_ConvertedFileName.c_str() );
|
||||
wxMessageBox( msg );
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -32,10 +32,8 @@
|
|||
#include <vector>
|
||||
|
||||
#include "potracelib.h"
|
||||
//#include "bitmap_io.h"
|
||||
#include "auxiliary.h"
|
||||
|
||||
|
||||
#ifndef max
|
||||
#define max( a, b ) ( ( (a) > (b) ) ? (a) : (b) )
|
||||
#endif
|
||||
|
|
Binary file not shown.
After Width: | Height: | Size: 2.2 KiB |
|
@ -0,0 +1,2 @@
|
|||
bitmap2component_icon ICON bitmap2component.ico
|
||||
#include "wx/msw/wx.rc"
|
|
@ -0,0 +1,54 @@
|
|||
/* XPM */
|
||||
const char *bitmap2component_xpm[] = {
|
||||
/* columns rows colors chars-per-pixel */
|
||||
"32 32 16 1",
|
||||
"@ c #592904",
|
||||
"# c #974704",
|
||||
"$ c #5455D0",
|
||||
"o c #090915",
|
||||
"- c #2E1604",
|
||||
"+ c #4B4BB5",
|
||||
"* c #222352",
|
||||
"X c #0F1128",
|
||||
": c #BE5904",
|
||||
" c #0CFA0C",
|
||||
"% c #FC7A04",
|
||||
"= c #323378",
|
||||
"; c #753704",
|
||||
"O c #3C3B8F",
|
||||
"& c #DF6904",
|
||||
". c #050204",
|
||||
/* pixels */
|
||||
" . ..",
|
||||
" .",
|
||||
" ",
|
||||
"........................ .. ",
|
||||
"........................ .. ",
|
||||
" X.oO ... ",
|
||||
"+++X@#.X+ $ ... .",
|
||||
"...o@%&@.*$$X.o= ... ..",
|
||||
"....@%%%#-..-#;.... ........",
|
||||
"....@%%&%&-.#%%-.... .......",
|
||||
"....@%%%%;..;%&......====O+$ ",
|
||||
"....@%%:-....o..............= ",
|
||||
"....@&@.... +*O ......%%%%&#.X ",
|
||||
"....-..... .....%%&%%%:...",
|
||||
"OO O=+ . *.%%%%%&%@X ",
|
||||
" ... =.%%%%%%%#..",
|
||||
" . O.%%%%&%%;.=",
|
||||
".......... .....%%%%%%%-..",
|
||||
"....@@..... ......%%%%%%;...",
|
||||
"....@%:-....X.........###;;-.= ",
|
||||
"....@%%&#...-#@...........o*$ ",
|
||||
"....@%%%%&-.#%%...... $ ",
|
||||
"....@%%%%#..;%%..... .......",
|
||||
"....@%%&-....-..... ........",
|
||||
"XXXo@%;.X+ +*=$ ... ..",
|
||||
" X-.oO ... .",
|
||||
" X.= ... ",
|
||||
"........................ .. ",
|
||||
"........................ .. ",
|
||||
" ",
|
||||
" .",
|
||||
" . .."
|
||||
};
|
File diff suppressed because it is too large
Load Diff
|
@ -797,6 +797,10 @@ int DIALOG_BUILD_BOM::PrintComponentsListByPart(
|
|||
// Store fields. Store non empty fields only.
|
||||
for( int jj = FOOTPRINT; jj < currCmp->GetFieldCount(); jj++ )
|
||||
{
|
||||
//Ensure fields exists in dummy component
|
||||
if( dummyCmp.GetFieldCount() <= jj )
|
||||
dummyCmp.AddField( *currCmp->GetField( jj ) );
|
||||
// store useful data
|
||||
if( !currCmp->GetField( jj )->m_Text.IsEmpty() )
|
||||
dummyCmp.GetField( jj )->m_Text = currCmp->GetField( jj )->m_Text;
|
||||
}
|
||||
|
@ -845,21 +849,27 @@ int DIALOG_BUILD_BOM::PrintComponentsListByPart(
|
|||
CONV_TO_UTF8( currCmp->GetField( DATASHEET) ->m_Text ) );
|
||||
#endif
|
||||
|
||||
fprintf( f, "%c%s", s_ExportSeparatorSymbol,
|
||||
CONV_TO_UTF8( RNames ) );
|
||||
|
||||
// print fields, on demand
|
||||
for( int jj = FIELD1; jj <= FIELD8 ; jj++ )
|
||||
int last_nonempty_field_idx = 0;
|
||||
for( int jj = FOOTPRINT; jj < dummyCmp.GetFieldCount(); jj++ )
|
||||
if ( !dummyCmp.GetField( jj )->m_Text.IsEmpty() )
|
||||
last_nonempty_field_idx = jj;
|
||||
for( int jj = FIELD1; jj <= last_nonempty_field_idx ; jj++ )
|
||||
{
|
||||
if ( IsFieldChecked( jj ) )
|
||||
fprintf( f, "%c%4s", s_ExportSeparatorSymbol,
|
||||
CONV_TO_UTF8( dummyCmp.GetField( jj )->m_Text ) );
|
||||
}
|
||||
|
||||
fprintf( f, "%c%s\n", s_ExportSeparatorSymbol,
|
||||
CONV_TO_UTF8( RNames ) );
|
||||
fprintf( f, "\n" );
|
||||
|
||||
// Clear strings and values, to prepare next component
|
||||
qty = 0;
|
||||
RNames.Empty();
|
||||
for( int jj = FOOTPRINT; jj < currCmp->GetFieldCount(); jj++ )
|
||||
for( int jj = FOOTPRINT; jj < dummyCmp.GetFieldCount(); jj++ )
|
||||
dummyCmp.GetField( jj )->m_Text.Empty();
|
||||
}
|
||||
|
||||
|
|
|
@ -194,7 +194,7 @@ bool WinEDA_SchematicFrame::LoadOneEEProject( const wxString& FileName, bool IsN
|
|||
GetChars( fn.GetFullPath() ),
|
||||
GetChars( errMsg ) );
|
||||
DisplayError( this, prompt );
|
||||
msg += wxT( " ->Error" );
|
||||
msg += _( " ->Error" );
|
||||
}
|
||||
|
||||
PrintMsg( msg );
|
||||
|
|
|
@ -204,8 +204,7 @@ void WinEDA_PcbFrame::AutoMoveModulesOnPcb( bool PlaceModulesHorsPcb )
|
|||
if( PlaceModulesHorsPcb && !EdgeExists )
|
||||
{
|
||||
DisplayError( this,
|
||||
_( "Could not automatically place modules. No board \
|
||||
edges detected." ) );
|
||||
_( "Could not automatically place modules. No board outlines detected." ) );
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
|
@ -105,12 +105,10 @@ EDA_Rect EDGE_MODULE::GetBoundingBox()
|
|||
if( Module )
|
||||
{
|
||||
RotatePoint( &pt.x, &pt.y, Module->m_Orient );
|
||||
pt.x += Module->m_Pos.x;
|
||||
pt.y += Module->m_Pos.y;
|
||||
pt += Module->m_Pos;
|
||||
}
|
||||
|
||||
pt.x += m_Start0.x;
|
||||
pt.y += m_Start0.y;
|
||||
pt += m_Start0;
|
||||
bbox.m_Pos.x = MIN( bbox.m_Pos.x, pt.x );
|
||||
bbox.m_Pos.y = MIN( bbox.m_Pos.y, pt.y );
|
||||
p_end.x = MAX( p_end.x, pt.x );
|
||||
|
|
|
@ -58,7 +58,7 @@ DIALOG_GENDRILL_BASE::DIALOG_GENDRILL_BASE( wxWindow* parent, wxWindowID id, con
|
|||
int m_Choice_Drill_MapNChoices = sizeof( m_Choice_Drill_MapChoices ) / sizeof( wxString );
|
||||
m_Choice_Drill_Map = new wxRadioBox( this, wxID_ANY, _("Drill Sheet:"), wxDefaultPosition, wxDefaultSize, m_Choice_Drill_MapNChoices, m_Choice_Drill_MapChoices, 1, wxRA_SPECIFY_COLS );
|
||||
m_Choice_Drill_Map->SetSelection( 0 );
|
||||
m_Choice_Drill_Map->SetToolTip( _("Creates a drill map in PSr HPGL or others formats") );
|
||||
m_Choice_Drill_Map->SetToolTip( _("Creates a drill map in PS, HPGL or others formats") );
|
||||
|
||||
bMiddleBoxSizer->Add( m_Choice_Drill_Map, 0, wxALL|wxEXPAND, 5 );
|
||||
|
||||
|
|
|
@ -335,7 +335,7 @@
|
|||
<property name="size"></property>
|
||||
<property name="style">wxRA_SPECIFY_COLS</property>
|
||||
<property name="subclass"></property>
|
||||
<property name="tooltip">Creates a drill map in PSr HPGL or others formats</property>
|
||||
<property name="tooltip">Creates a drill map in PS, HPGL or others formats</property>
|
||||
<property name="window_extra_style"></property>
|
||||
<property name="window_name"></property>
|
||||
<property name="window_style"></property>
|
||||
|
|
Loading…
Reference in New Issue