Fix various STEP export dialog issues.

The file filter wild card was defined incorrectly causing the file picker
to not display *.stp and *.step file extensions.  Change the wildcard per
wxFileDialog documentation.

Prevent the file extension from being forced to .stp even when the user
defined a different extension in the file picker.

Override TransferDataFromWindow to test for file existence and warn user
only once if a file overwrite can occur.

Minor STEP export dialog string and layout improvements.

Make kicad2step honor user's file extension rather than always setting it
to .stp.

Fixes lp:1709636

https://bugs.launchpad.net/kicad/+bug/1709636
This commit is contained in:
Wayne Stambaugh 2017-08-09 13:17:26 -04:00
parent 8a1a3ed36c
commit 15478bda41
5 changed files with 2043 additions and 2061 deletions

View File

@ -6,6 +6,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) 2016 Cirilo Bernardo * Copyright (C) 2016 Cirilo Bernardo
* Copyright (C) 2016-2017 KiCad Developers, see AUTHORS.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
@ -30,6 +31,8 @@
#include "wxPcbStruct.h" #include "wxPcbStruct.h"
#include "kiface_i.h" #include "kiface_i.h"
#include "confirm.h"
#include "pcbnew.h" #include "pcbnew.h"
#include "class_board.h" #include "class_board.h"
#include "dialog_export_step_base.h" #include "dialog_export_step_base.h"
@ -176,9 +179,32 @@ public:
event.Skip(); event.Skip();
} }
bool TransferDataFromWindow() override;
}; };
bool DIALOG_EXPORT_STEP::TransferDataFromWindow()
{
if( !wxDialog::TransferDataFromWindow() )
return false;
wxFileName fn = m_filePickerSTEP->GetFileName();
if( fn.FileExists() )
{
wxString msg( _( "File: " ) );
msg.append( fn.GetFullPath() );
msg.append( "\n" );
msg.append( _( "already exists. Do you want overwrite this file?" ) );
if( wxMessageBox( msg, _( "STEP Export" ), wxYES_NO | wxICON_QUESTION, this ) == wxNO )
return false;
}
return true;
}
void PCB_EDIT_FRAME::OnExportSTEP( wxCommandEvent& event ) void PCB_EDIT_FRAME::OnExportSTEP( wxCommandEvent& event )
{ {
@ -189,8 +215,8 @@ void PCB_EDIT_FRAME::OnExportSTEP( wxCommandEvent& event )
{ {
if( !doAutoSave() ) if( !doAutoSave() )
{ {
wxMessageBox( _( "STEP export failed; please save the PCB and try again" ), DisplayErrorMessage( this,
_( "STEP Export" ) ); _( "STEP export failed! Please save the PCB and try again" ) );
return; return;
} }
@ -211,45 +237,13 @@ void PCB_EDIT_FRAME::OnExportSTEP( wxCommandEvent& event )
DIALOG_EXPORT_STEP dlg( this ); DIALOG_EXPORT_STEP dlg( this );
dlg.FilePicker()->SetPath( brdFile.GetFullPath() ); dlg.FilePicker()->SetPath( brdFile.GetFullPath() );
bool fileOverwrite = false;
wxString outputFile;
while( !fileOverwrite ) if ( dlg.ShowModal() != wxID_OK )
{ return;
if ( dlg.ShowModal() != wxID_OK )
return;
brdFile = dlg.FilePicker()->GetPath(); wxString outputFile = dlg.FilePicker()->GetPath();
brdFile.SetExt( "stp" );
outputFile = brdFile.GetFullPath();
if( wxFile::Exists( outputFile ) )
{
wxString msg( _( "File: " ) );
msg.append( outputFile );
msg.append( "\n" );
msg.append( _( "File exists, overwrite?" ) );
int resp = wxMessageBox( msg, _( "STEP Export" ), wxYES_NO | wxCANCEL, this );
switch( resp )
{
case wxCANCEL:
return;
case wxYES:
fileOverwrite = true;
break;
default:
break;
}
}
else
{
fileOverwrite = true;
}
}
brdFile.SetExt( brdExt );
outputFile.Prepend( "\"" ); outputFile.Prepend( "\"" );
outputFile.Append( "\"" ); outputFile.Append( "\"" );
bool aUseDrillOrg = dlg.GetDrillOrgOption(); bool aUseDrillOrg = dlg.GetDrillOrgOption();
@ -307,10 +301,7 @@ void PCB_EDIT_FRAME::OnExportSTEP( wxCommandEvent& event )
if( result ) if( result )
{ {
wxMessageBox( DisplayErrorMessage( this, _( "Unable to create STEP file. Check that the board has a "
_( "Unable to create STEP file; check that the board has a valid outline and models." ), "valid outline and models." ), cmdK2S );
_( "STEP Export" ), wxOK );
} }
return;
} }

View File

@ -1,196 +1,182 @@
/////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////
// C++ code generated with wxFormBuilder (version Sep 8 2016) // C++ code generated with wxFormBuilder (version Jun 5 2014)
// http://www.wxformbuilder.org/ // http://www.wxformbuilder.org/
// //
// PLEASE DO "NOT" EDIT THIS FILE! // PLEASE DO "NOT" EDIT THIS FILE!
/////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////
#include "dialog_export_step_base.h" #include "dialog_export_step_base.h"
/////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////
DIALOG_EXPORT_STEP_BASE::DIALOG_EXPORT_STEP_BASE( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : DIALOG_SHIM( parent, id, title, pos, size, style ) DIALOG_EXPORT_STEP_BASE::DIALOG_EXPORT_STEP_BASE( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : DIALOG_SHIM( parent, id, title, pos, size, style )
{ {
this->SetSizeHints( wxDefaultSize, wxDefaultSize ); this->SetSizeHints( wxDefaultSize, wxDefaultSize );
wxBoxSizer* bSizerSTEPFile; wxBoxSizer* bSizerSTEPFile;
bSizerSTEPFile = new wxBoxSizer( wxVERTICAL ); bSizerSTEPFile = new wxBoxSizer( wxVERTICAL );
m_txtBrdFile = new wxStaticText( this, wxID_ANY, _("STEP File name:"), wxDefaultPosition, wxDefaultSize, 0 ); m_txtBrdFile = new wxStaticText( this, wxID_ANY, _("File name:"), wxDefaultPosition, wxDefaultSize, 0 );
m_txtBrdFile->Wrap( -1 ); m_txtBrdFile->Wrap( -1 );
bSizerSTEPFile->Add( m_txtBrdFile, 0, wxALL, 5 ); bSizerSTEPFile->Add( m_txtBrdFile, 0, wxALL, 5 );
m_filePickerSTEP = new wxFilePickerCtrl( this, wxID_ANY, wxEmptyString, _("Select a STEP export filename"), wxT("*.stp,*.step"), wxDefaultPosition, wxSize( 450,-1 ), wxFLP_OVERWRITE_PROMPT|wxFLP_SAVE|wxFLP_USE_TEXTCTRL ); m_filePickerSTEP = new wxFilePickerCtrl( this, wxID_ANY, wxEmptyString, _("Select a STEP export filename"), wxT("STEP files (*.stp;*.step)|*.stp;*.step"), wxDefaultPosition, wxSize( -1,-1 ), wxFLP_SAVE|wxFLP_USE_TEXTCTRL );
bSizerSTEPFile->Add( m_filePickerSTEP, 0, wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 5 ); bSizerSTEPFile->Add( m_filePickerSTEP, 0, wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
m_staticline2 = new wxStaticLine( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL ); m_staticline2 = new wxStaticLine( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
bSizerSTEPFile->Add( m_staticline2, 0, wxEXPAND | wxALL, 5 ); bSizerSTEPFile->Add( m_staticline2, 0, wxEXPAND | wxALL, 5 );
wxBoxSizer* bSizer2; wxBoxSizer* bSizer2;
bSizer2 = new wxBoxSizer( wxHORIZONTAL ); bSizer2 = new wxBoxSizer( wxHORIZONTAL );
wxBoxSizer* bSizer7; wxBoxSizer* bSizer7;
bSizer7 = new wxBoxSizer( wxVERTICAL ); bSizer7 = new wxBoxSizer( wxVERTICAL );
m_staticText6 = new wxStaticText( this, wxID_ANY, _("STEP coordinates origin options:"), wxDefaultPosition, wxDefaultSize, 0 ); m_staticText6 = new wxStaticText( this, wxID_ANY, _("Coordinate origin options:"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticText6->Wrap( -1 ); m_staticText6->Wrap( -1 );
m_staticText6->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_BOLD, false, wxEmptyString ) ); m_staticText6->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), 70, 90, 92, false, wxEmptyString ) );
bSizer7->Add( m_staticText6, 0, wxALL, 5 ); bSizer7->Add( m_staticText6, 0, wxALL, 5 );
wxFlexGridSizer* fgSizer2; wxFlexGridSizer* fgSizer2;
fgSizer2 = new wxFlexGridSizer( 0, 2, 0, 0 ); fgSizer2 = new wxFlexGridSizer( 0, 2, 0, 0 );
fgSizer2->SetFlexibleDirection( wxBOTH ); fgSizer2->SetFlexibleDirection( wxBOTH );
fgSizer2->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED ); fgSizer2->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
fgSizer2->Add( 0, 0, 1, wxEXPAND|wxRIGHT|wxLEFT, 5 ); fgSizer2->Add( 0, 0, 1, wxEXPAND|wxRIGHT|wxLEFT, 5 );
m_cbDrillOrigin = new wxCheckBox( this, wxID_ANY, _("Drill and plot axis origin"), wxDefaultPosition, wxDefaultSize, 0 ); m_cbDrillOrigin = new wxCheckBox( this, wxID_ANY, _("Drill and plot axis origin"), wxDefaultPosition, wxDefaultSize, 0 );
m_cbDrillOrigin->SetToolTip( _("Use the auxiliary axis origin (used in plot and drill geneation) as STEP coordinates origin.") ); m_cbDrillOrigin->SetToolTip( _("Use the auxiliary axis origin (used in plot and drill geneation) as STEP coordinates origin.") );
fgSizer2->Add( m_cbDrillOrigin, 0, wxALL, 5 ); fgSizer2->Add( m_cbDrillOrigin, 0, wxALL, 5 );
fgSizer2->Add( 0, 0, 1, wxEXPAND, 5 ); fgSizer2->Add( 0, 0, 1, wxEXPAND, 5 );
m_cbAuxOrigin = new wxCheckBox( this, wxID_ANY, _("Grid origin"), wxDefaultPosition, wxDefaultSize, 0 ); m_cbAuxOrigin = new wxCheckBox( this, wxID_ANY, _("Grid origin"), wxDefaultPosition, wxDefaultSize, 0 );
m_cbAuxOrigin->SetToolTip( _("Use the grid origin as STEP coordinates origin.") ); m_cbAuxOrigin->SetToolTip( _("Use the grid origin as STEP coordinates origin.") );
fgSizer2->Add( m_cbAuxOrigin, 0, wxALL, 5 ); fgSizer2->Add( m_cbAuxOrigin, 0, wxALL, 5 );
fgSizer2->Add( 0, 0, 1, wxEXPAND, 5 ); fgSizer2->Add( 0, 0, 1, wxEXPAND, 5 );
m_cbUserOrigin = new wxCheckBox( this, wxID_ANY, _("User defined origin"), wxDefaultPosition, wxDefaultSize, 0 ); m_cbUserOrigin = new wxCheckBox( this, wxID_ANY, _("User defined origin"), wxDefaultPosition, wxDefaultSize, 0 );
m_cbUserOrigin->SetToolTip( _("Use this option if you want to define a specific coordinate origin value.") ); m_cbUserOrigin->SetToolTip( _("Use this option if you want to define a specific coordinate origin value.") );
fgSizer2->Add( m_cbUserOrigin, 0, wxALL, 5 ); fgSizer2->Add( m_cbUserOrigin, 0, wxALL, 5 );
bSizer7->Add( fgSizer2, 1, wxEXPAND, 5 ); bSizer7->Add( fgSizer2, 1, wxEXPAND, 5 );
bSizer2->Add( bSizer7, 1, wxEXPAND|wxRIGHT|wxLEFT, 5 ); bSizer2->Add( bSizer7, 1, wxEXPAND|wxRIGHT|wxLEFT, 5 );
wxBoxSizer* bSizer3; wxBoxSizer* bSizer3;
bSizer3 = new wxBoxSizer( wxVERTICAL ); bSizer3 = new wxBoxSizer( wxVERTICAL );
m_staticText2 = new wxStaticText( this, wxID_ANY, _("User defined origin:"), wxDefaultPosition, wxDefaultSize, 0 ); m_staticText2 = new wxStaticText( this, wxID_ANY, _("User defined origin:"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticText2->Wrap( -1 ); m_staticText2->Wrap( -1 );
m_staticText2->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_BOLD, false, wxEmptyString ) ); m_staticText2->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), 70, 90, 92, false, wxEmptyString ) );
bSizer3->Add( m_staticText2, 0, wxALL, 5 ); bSizer3->Add( m_staticText2, 0, wxALL, 5 );
wxFlexGridSizer* fgSizer1; wxFlexGridSizer* fgSizer1;
fgSizer1 = new wxFlexGridSizer( 0, 3, 0, 0 ); fgSizer1 = new wxFlexGridSizer( 0, 3, 0, 0 );
fgSizer1->SetFlexibleDirection( wxBOTH ); fgSizer1->SetFlexibleDirection( wxBOTH );
fgSizer1->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED ); fgSizer1->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
fgSizer1->Add( 0, 0, 1, wxEXPAND|wxRIGHT|wxLEFT, 5 ); fgSizer1->Add( 0, 0, 1, wxEXPAND|wxRIGHT|wxLEFT, 5 );
m_staticText5 = new wxStaticText( this, wxID_ANY, _("Units:"), wxDefaultPosition, wxDefaultSize, 0 ); m_staticText5 = new wxStaticText( this, wxID_ANY, _("Units:"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticText5->Wrap( -1 ); m_staticText5->Wrap( -1 );
fgSizer1->Add( m_staticText5, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); fgSizer1->Add( m_staticText5, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
wxString m_STEP_OrgUnitChoiceChoices[] = { _("mm"), _("inch") }; wxString m_STEP_OrgUnitChoiceChoices[] = { _("mm"), _("inch") };
int m_STEP_OrgUnitChoiceNChoices = sizeof( m_STEP_OrgUnitChoiceChoices ) / sizeof( wxString ); int m_STEP_OrgUnitChoiceNChoices = sizeof( m_STEP_OrgUnitChoiceChoices ) / sizeof( wxString );
m_STEP_OrgUnitChoice = new wxChoice( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, m_STEP_OrgUnitChoiceNChoices, m_STEP_OrgUnitChoiceChoices, 0 ); m_STEP_OrgUnitChoice = new wxChoice( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, m_STEP_OrgUnitChoiceNChoices, m_STEP_OrgUnitChoiceChoices, 0 );
m_STEP_OrgUnitChoice->SetSelection( 0 ); m_STEP_OrgUnitChoice->SetSelection( 0 );
fgSizer1->Add( m_STEP_OrgUnitChoice, 0, wxALIGN_CENTER_VERTICAL|wxALL|wxEXPAND, 5 ); fgSizer1->Add( m_STEP_OrgUnitChoice, 0, wxALIGN_CENTER_VERTICAL|wxALL|wxEXPAND, 5 );
fgSizer1->Add( 0, 0, 1, wxEXPAND|wxRIGHT|wxLEFT, 5 ); fgSizer1->Add( 0, 0, 1, wxEXPAND|wxRIGHT|wxLEFT, 5 );
m_staticText3 = new wxStaticText( this, wxID_ANY, _("X Position:"), wxDefaultPosition, wxDefaultSize, 0 ); m_staticText3 = new wxStaticText( this, wxID_ANY, _("X position:"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticText3->Wrap( -1 ); m_staticText3->Wrap( -1 );
fgSizer1->Add( m_staticText3, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); fgSizer1->Add( m_staticText3, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
m_STEP_Xorg = new wxTextCtrl( this, wxID_ANY, _("0"), wxDefaultPosition, wxDefaultSize, 0 ); m_STEP_Xorg = new wxTextCtrl( this, wxID_ANY, _("0"), wxDefaultPosition, wxDefaultSize, 0 );
#ifdef __WXGTK__ m_STEP_Xorg->SetMaxLength( 8 );
if ( !m_STEP_Xorg->HasFlag( wxTE_MULTILINE ) ) fgSizer1->Add( m_STEP_Xorg, 0, wxALIGN_CENTER_VERTICAL|wxALL|wxEXPAND, 5 );
{
m_STEP_Xorg->SetMaxLength( 8 );
} fgSizer1->Add( 0, 0, 1, wxEXPAND|wxRIGHT|wxLEFT, 5 );
#else
m_STEP_Xorg->SetMaxLength( 8 ); m_staticText4 = new wxStaticText( this, wxID_ANY, _("Y position:"), wxDefaultPosition, wxDefaultSize, 0 );
#endif m_staticText4->Wrap( -1 );
fgSizer1->Add( m_STEP_Xorg, 0, wxALIGN_CENTER_VERTICAL|wxALL|wxEXPAND, 5 ); fgSizer1->Add( m_staticText4, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
m_STEP_Yorg = new wxTextCtrl( this, wxID_ANY, _("0"), wxDefaultPosition, wxDefaultSize, 0 );
fgSizer1->Add( 0, 0, 1, wxEXPAND|wxRIGHT|wxLEFT, 5 ); m_STEP_Yorg->SetMaxLength( 8 );
fgSizer1->Add( m_STEP_Yorg, 0, wxALIGN_CENTER_VERTICAL|wxALL|wxEXPAND, 5 );
m_staticText4 = new wxStaticText( this, wxID_ANY, _("Y Position:"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticText4->Wrap( -1 );
fgSizer1->Add( m_staticText4, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); bSizer3->Add( fgSizer1, 1, wxEXPAND, 5 );
m_STEP_Yorg = new wxTextCtrl( this, wxID_ANY, _("0"), wxDefaultPosition, wxDefaultSize, 0 );
#ifdef __WXGTK__ bSizer2->Add( bSizer3, 1, wxEXPAND|wxRIGHT|wxLEFT, 5 );
if ( !m_STEP_Yorg->HasFlag( wxTE_MULTILINE ) )
{ wxBoxSizer* bSizer8;
m_STEP_Yorg->SetMaxLength( 8 ); bSizer8 = new wxBoxSizer( wxVERTICAL );
}
#else m_staticText7 = new wxStaticText( this, wxID_ANY, _("Other options:"), wxDefaultPosition, wxDefaultSize, 0 );
m_STEP_Yorg->SetMaxLength( 8 ); m_staticText7->Wrap( -1 );
#endif m_staticText7->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), 70, 90, 92, false, wxEmptyString ) );
fgSizer1->Add( m_STEP_Yorg, 0, wxALIGN_CENTER_VERTICAL|wxALL|wxEXPAND, 5 );
bSizer8->Add( m_staticText7, 0, wxALL, 5 );
bSizer3->Add( fgSizer1, 1, wxEXPAND, 5 ); wxFlexGridSizer* fgSizer3;
fgSizer3 = new wxFlexGridSizer( 0, 2, 0, 0 );
fgSizer3->SetFlexibleDirection( wxBOTH );
bSizer2->Add( bSizer3, 1, wxEXPAND|wxRIGHT|wxLEFT, 5 ); fgSizer3->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
wxBoxSizer* bSizer8;
bSizer8 = new wxBoxSizer( wxVERTICAL ); fgSizer3->Add( 0, 0, 1, wxEXPAND|wxRIGHT|wxLEFT, 5 );
m_staticText7 = new wxStaticText( this, wxID_ANY, _("Other options:"), wxDefaultPosition, wxDefaultSize, 0 ); m_cbRemoveVirtual = new wxCheckBox( this, wxID_ANY, _("Ignore virtual components"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticText7->Wrap( -1 ); fgSizer3->Add( m_cbRemoveVirtual, 0, wxALL, 5 );
m_staticText7->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_BOLD, false, wxEmptyString ) );
bSizer8->Add( m_staticText7, 0, wxALL, 5 ); bSizer8->Add( fgSizer3, 1, wxEXPAND, 5 );
wxFlexGridSizer* fgSizer3;
fgSizer3 = new wxFlexGridSizer( 0, 2, 0, 0 ); bSizer2->Add( bSizer8, 1, wxEXPAND|wxRIGHT|wxLEFT, 5 );
fgSizer3->SetFlexibleDirection( wxBOTH );
fgSizer3->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
bSizerSTEPFile->Add( bSizer2, 1, wxEXPAND, 5 );
fgSizer3->Add( 0, 0, 1, wxEXPAND|wxRIGHT|wxLEFT, 5 ); m_staticline1 = new wxStaticLine( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
bSizerSTEPFile->Add( m_staticline1, 0, wxEXPAND | wxALL, 5 );
m_cbRemoveVirtual = new wxCheckBox( this, wxID_ANY, _("Ignore Virtual Components"), wxDefaultPosition, wxDefaultSize, 0 );
fgSizer3->Add( m_cbRemoveVirtual, 0, wxALL, 5 ); m_sdbSizer = new wxStdDialogButtonSizer();
m_sdbSizerOK = new wxButton( this, wxID_OK );
m_sdbSizer->AddButton( m_sdbSizerOK );
bSizer8->Add( fgSizer3, 1, wxEXPAND, 5 ); m_sdbSizerCancel = new wxButton( this, wxID_CANCEL );
m_sdbSizer->AddButton( m_sdbSizerCancel );
m_sdbSizer->Realize();
bSizer2->Add( bSizer8, 1, wxEXPAND|wxRIGHT|wxLEFT, 5 );
bSizerSTEPFile->Add( m_sdbSizer, 0, wxBOTTOM|wxEXPAND|wxLEFT|wxRIGHT, 5 );
bSizerSTEPFile->Add( bSizer2, 1, wxEXPAND, 5 );
this->SetSizer( bSizerSTEPFile );
m_staticline1 = new wxStaticLine( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL ); this->Layout();
bSizerSTEPFile->Add( m_staticline1, 0, wxEXPAND | wxALL, 5 ); bSizerSTEPFile->Fit( this );
m_sdbSizer = new wxStdDialogButtonSizer(); this->Centre( wxBOTH );
m_sdbSizerOK = new wxButton( this, wxID_OK ); }
m_sdbSizer->AddButton( m_sdbSizerOK );
m_sdbSizerCancel = new wxButton( this, wxID_CANCEL ); DIALOG_EXPORT_STEP_BASE::~DIALOG_EXPORT_STEP_BASE()
m_sdbSizer->AddButton( m_sdbSizerCancel ); {
m_sdbSizer->Realize(); }
bSizerSTEPFile->Add( m_sdbSizer, 0, wxBOTTOM|wxEXPAND|wxLEFT|wxRIGHT, 5 );
this->SetSizer( bSizerSTEPFile );
this->Layout();
bSizerSTEPFile->Fit( this );
this->Centre( wxBOTH );
}
DIALOG_EXPORT_STEP_BASE::~DIALOG_EXPORT_STEP_BASE()
{
}

File diff suppressed because it is too large Load Diff

View File

@ -1,71 +1,71 @@
/////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////
// C++ code generated with wxFormBuilder (version Sep 8 2016) // C++ code generated with wxFormBuilder (version Jun 5 2014)
// http://www.wxformbuilder.org/ // http://www.wxformbuilder.org/
// //
// PLEASE DO "NOT" EDIT THIS FILE! // PLEASE DO "NOT" EDIT THIS FILE!
/////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////
#ifndef __DIALOG_EXPORT_STEP_BASE_H__ #ifndef __DIALOG_EXPORT_STEP_BASE_H__
#define __DIALOG_EXPORT_STEP_BASE_H__ #define __DIALOG_EXPORT_STEP_BASE_H__
#include <wx/artprov.h> #include <wx/artprov.h>
#include <wx/xrc/xmlres.h> #include <wx/xrc/xmlres.h>
#include <wx/intl.h> #include <wx/intl.h>
class DIALOG_SHIM; class DIALOG_SHIM;
#include "dialog_shim.h" #include "dialog_shim.h"
#include <wx/string.h> #include <wx/string.h>
#include <wx/stattext.h> #include <wx/stattext.h>
#include <wx/gdicmn.h> #include <wx/gdicmn.h>
#include <wx/font.h> #include <wx/font.h>
#include <wx/colour.h> #include <wx/colour.h>
#include <wx/settings.h> #include <wx/settings.h>
#include <wx/filepicker.h> #include <wx/filepicker.h>
#include <wx/statline.h> #include <wx/statline.h>
#include <wx/checkbox.h> #include <wx/checkbox.h>
#include <wx/sizer.h> #include <wx/sizer.h>
#include <wx/choice.h> #include <wx/choice.h>
#include <wx/textctrl.h> #include <wx/textctrl.h>
#include <wx/valtext.h> #include <wx/valtext.h>
#include <wx/button.h> #include <wx/button.h>
#include <wx/dialog.h> #include <wx/dialog.h>
/////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////
/// Class DIALOG_EXPORT_STEP_BASE /// Class DIALOG_EXPORT_STEP_BASE
/////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////
class DIALOG_EXPORT_STEP_BASE : public DIALOG_SHIM class DIALOG_EXPORT_STEP_BASE : public DIALOG_SHIM
{ {
private: private:
protected: protected:
wxStaticText* m_txtBrdFile; wxStaticText* m_txtBrdFile;
wxFilePickerCtrl* m_filePickerSTEP; wxFilePickerCtrl* m_filePickerSTEP;
wxStaticLine* m_staticline2; wxStaticLine* m_staticline2;
wxStaticText* m_staticText6; wxStaticText* m_staticText6;
wxCheckBox* m_cbDrillOrigin; wxCheckBox* m_cbDrillOrigin;
wxCheckBox* m_cbAuxOrigin; wxCheckBox* m_cbAuxOrigin;
wxCheckBox* m_cbUserOrigin; wxCheckBox* m_cbUserOrigin;
wxStaticText* m_staticText2; wxStaticText* m_staticText2;
wxStaticText* m_staticText5; wxStaticText* m_staticText5;
wxChoice* m_STEP_OrgUnitChoice; wxChoice* m_STEP_OrgUnitChoice;
wxStaticText* m_staticText3; wxStaticText* m_staticText3;
wxTextCtrl* m_STEP_Xorg; wxTextCtrl* m_STEP_Xorg;
wxStaticText* m_staticText4; wxStaticText* m_staticText4;
wxTextCtrl* m_STEP_Yorg; wxTextCtrl* m_STEP_Yorg;
wxStaticText* m_staticText7; wxStaticText* m_staticText7;
wxCheckBox* m_cbRemoveVirtual; wxCheckBox* m_cbRemoveVirtual;
wxStaticLine* m_staticline1; wxStaticLine* m_staticline1;
wxStdDialogButtonSizer* m_sdbSizer; wxStdDialogButtonSizer* m_sdbSizer;
wxButton* m_sdbSizerOK; wxButton* m_sdbSizerOK;
wxButton* m_sdbSizerCancel; wxButton* m_sdbSizerCancel;
public: public:
DIALOG_EXPORT_STEP_BASE( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("Export STEP"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( -1,-1 ), long style = wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER ); DIALOG_EXPORT_STEP_BASE( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("Export STEP"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( -1,-1 ), long style = wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER );
~DIALOG_EXPORT_STEP_BASE(); ~DIALOG_EXPORT_STEP_BASE();
}; };
#endif //__DIALOG_EXPORT_STEP_BASE_H__ #endif //__DIALOG_EXPORT_STEP_BASE_H__

View File

@ -2,6 +2,7 @@
* This program source code file is part of kicad2mcad * This program source code file is part of kicad2mcad
* *
* Copyright (C) 2016 Cirilo Bernardo <cirilo.bernardo@gmail.com> * Copyright (C) 2016 Cirilo Bernardo <cirilo.bernardo@gmail.com>
* Copyright (C) 2016-2017 KiCad Developers, see AUTHORS.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
@ -219,12 +220,16 @@ int KICAD2MCAD::OnRun()
else else
tfname.Assign( m_outputFile ); tfname.Assign( m_outputFile );
// Set the file extension if the user's requested file name does not have an extension.
if( !tfname.HasExt() )
{
#ifdef SUPPORTS_IGES #ifdef SUPPORTS_IGES
if( m_fmtIGES ) if( m_fmtIGES )
tfname.SetExt( "igs" ); tfname.SetExt( "igs" );
else else
#endif #endif
tfname.SetExt( "stp" ); tfname.SetExt( "stp" );
}
wxString outfile = tfname.GetFullPath(); wxString outfile = tfname.GetFullPath();