Minor fixes: fix issue Bug #1420910 (Linux specific).
Rename eeschema/dialogs/dialog_sch_find.fbp to dialog_schematic_find_base.fbp, to be consistent with other dialogs. Pcbnew run from the project manager: add menu Save Copy As..., which is the same command as Save As ... in stand alone mode, but with the constraints of a project (no cwd change, no board filename change, and keep project settings)
This commit is contained in:
parent
74e83e924a
commit
1a74913063
|
@ -81,7 +81,16 @@ void DIALOG_CHOOSE_COMPONENT::OnSearchBoxChange( wxCommandEvent& aEvent )
|
||||||
{
|
{
|
||||||
m_search_container->UpdateSearchTerm( m_searchBox->GetLineText( 0 ) );
|
m_search_container->UpdateSearchTerm( m_searchBox->GetLineText( 0 ) );
|
||||||
updateSelection();
|
updateSelection();
|
||||||
|
|
||||||
|
// On Windows, but not on Linux, the focus is given to
|
||||||
|
// the m_libraryComponentTree, after modificatuons.
|
||||||
|
// We want the focus for m_searchBox.
|
||||||
|
//
|
||||||
|
// We cannot call SetFocus on Linux because it changes the current text selection
|
||||||
|
// and the text edit cursor position.
|
||||||
|
#ifdef __WINDOWS__
|
||||||
m_searchBox->SetFocus();
|
m_searchBox->SetFocus();
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -848,12 +848,14 @@ public:
|
||||||
/**
|
/**
|
||||||
* Function AppendBoardFile
|
* Function AppendBoardFile
|
||||||
* appends a board file onto the current one, creating God knows what.
|
* appends a board file onto the current one, creating God knows what.
|
||||||
|
* the main purpose is only to allow panelizing boards.
|
||||||
*/
|
*/
|
||||||
bool AppendBoardFile( const wxString& aFullFileName, int aCtl );
|
bool AppendBoardFile( const wxString& aFullFileName, int aCtl );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Function SavePcbFile
|
* Function SavePcbFile
|
||||||
* writes the board data structures to \a a aFileName
|
* writes the board data structures to \a a aFileName
|
||||||
|
* Creates backup when requested and update flags (modified and saved flgs)
|
||||||
*
|
*
|
||||||
* @param aFileName The file name to write or wxEmptyString to prompt user for
|
* @param aFileName The file name to write or wxEmptyString to prompt user for
|
||||||
* file name.
|
* file name.
|
||||||
|
@ -864,8 +866,18 @@ public:
|
||||||
*/
|
*/
|
||||||
bool SavePcbFile( const wxString& aFileName, bool aCreateBackupFile = CREATE_BACKUP_FILE );
|
bool SavePcbFile( const wxString& aFileName, bool aCreateBackupFile = CREATE_BACKUP_FILE );
|
||||||
|
|
||||||
int SavePcbFormatAscii( FILE* File );
|
/**
|
||||||
bool WriteGeneralDescrPcb( FILE* File );
|
* Function SavePcbCopy
|
||||||
|
* writes the board data structures to \a a aFileName
|
||||||
|
* but unlike SavePcbFile, does not make anything else
|
||||||
|
* (no backup, borad fliename change, no flag changes ...)
|
||||||
|
* Used under a project mgr to save under a new name the current board
|
||||||
|
*
|
||||||
|
* When not under a project mgr, the full SavePcbFile is used.
|
||||||
|
* @param aFileName The file name to write.
|
||||||
|
* @return True if file was saved successfully.
|
||||||
|
*/
|
||||||
|
bool SavePcbCopy( const wxString& aFileName );
|
||||||
|
|
||||||
// BOARD handling
|
// BOARD handling
|
||||||
|
|
||||||
|
|
|
@ -327,14 +327,20 @@ void PCB_EDIT_FRAME::Files_io( wxCommandEvent& event )
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
// Fall through
|
// Fall through
|
||||||
case ID_SAVE_BOARD_AS:
|
case ID_COPY_BOARD_AS:
|
||||||
|
case ID_SAVE_BOARD_AS:
|
||||||
{
|
{
|
||||||
wxString pro_dir = wxPathOnly( Prj().GetProjectFullName() );
|
wxString pro_dir = wxPathOnly( Prj().GetProjectFullName() );
|
||||||
wxFileName fn( pro_dir, _( "noname" ), KiCadPcbFileExtension );
|
wxFileName fn( pro_dir, _( "noname" ), KiCadPcbFileExtension );
|
||||||
wxString filename = fn.GetFullPath();
|
wxString filename = fn.GetFullPath();
|
||||||
|
|
||||||
if( AskSaveBoardFileName( this, &filename ) )
|
if( AskSaveBoardFileName( this, &filename ) )
|
||||||
SavePcbFile( filename, true );
|
{
|
||||||
|
if( id == ID_COPY_BOARD_AS )
|
||||||
|
SavePcbCopy( filename );
|
||||||
|
else
|
||||||
|
SavePcbFile( filename, NO_BACKUP_FILE );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -412,7 +418,7 @@ bool PCB_EDIT_FRAME::OpenProjectFiles( const std::vector<wxString>& aFileSet, in
|
||||||
if( response == wxID_CANCEL )
|
if( response == wxID_CANCEL )
|
||||||
return false;
|
return false;
|
||||||
else if( response == wxID_YES )
|
else if( response == wxID_YES )
|
||||||
SavePcbFile( GetBoard()->GetFileName(), true );
|
SavePcbFile( GetBoard()->GetFileName(), CREATE_BACKUP_FILE );
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// response == wxID_NO, fall thru
|
// response == wxID_NO, fall thru
|
||||||
|
@ -660,6 +666,8 @@ bool PCB_EDIT_FRAME::SavePcbFile( const wxString& aFileName, bool aCreateBackupF
|
||||||
|
|
||||||
wxString backupFileName;
|
wxString backupFileName;
|
||||||
|
|
||||||
|
// aCreateBackupFile == false is mainly used to write autosave files
|
||||||
|
// or new files in save as... command
|
||||||
if( aCreateBackupFile )
|
if( aCreateBackupFile )
|
||||||
{
|
{
|
||||||
backupFileName = create_backup_file( aFileName );
|
backupFileName = create_backup_file( aFileName );
|
||||||
|
@ -733,6 +741,58 @@ bool PCB_EDIT_FRAME::SavePcbFile( const wxString& aFileName, bool aCreateBackupF
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool PCB_EDIT_FRAME::SavePcbCopy( const wxString& aFileName )
|
||||||
|
{
|
||||||
|
wxFileName pcbFileName = aFileName;
|
||||||
|
|
||||||
|
// Ensure the file ext is the right ext:
|
||||||
|
pcbFileName.SetExt( KiCadPcbFileExtension );
|
||||||
|
|
||||||
|
if( !IsWritable( pcbFileName ) )
|
||||||
|
{
|
||||||
|
wxString msg = wxString::Format( _(
|
||||||
|
"No access rights to write to file '%s'" ),
|
||||||
|
GetChars( pcbFileName.GetFullPath() )
|
||||||
|
);
|
||||||
|
|
||||||
|
DisplayError( this, msg );
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
GetBoard()->m_Status_Pcb &= ~CONNEXION_OK;
|
||||||
|
GetBoard()->SynchronizeNetsAndNetClasses();
|
||||||
|
|
||||||
|
// Select default Netclass before writing file.
|
||||||
|
// Useful to save default values in headers
|
||||||
|
SetCurrentNetClass( NETCLASS::Default );
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
PLUGIN::RELEASER pi( IO_MGR::PluginFind( IO_MGR::KICAD ) );
|
||||||
|
|
||||||
|
wxASSERT( pcbFileName.IsAbsolute() );
|
||||||
|
|
||||||
|
pi->Save( pcbFileName.GetFullPath(), GetBoard(), NULL );
|
||||||
|
}
|
||||||
|
catch( const IO_ERROR& ioe )
|
||||||
|
{
|
||||||
|
wxString msg = wxString::Format( _(
|
||||||
|
"Error saving board file '%s'.\n%s" ),
|
||||||
|
GetChars( pcbFileName.GetFullPath() ),
|
||||||
|
GetChars( ioe.errorText )
|
||||||
|
);
|
||||||
|
DisplayError( this, msg );
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
DisplayInfoMessage( this, wxString::Format( _( "Board copied to:\n'%s'" ),
|
||||||
|
GetChars( pcbFileName.GetFullPath() ) ) );
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
bool PCB_EDIT_FRAME::doAutoSave()
|
bool PCB_EDIT_FRAME::doAutoSave()
|
||||||
{
|
{
|
||||||
wxFileName tmpFileName = Prj().AbsolutePath( GetBoard()->GetFileName() );
|
wxFileName tmpFileName = Prj().AbsolutePath( GetBoard()->GetFileName() );
|
||||||
|
|
|
@ -111,14 +111,29 @@ void PCB_EDIT_FRAME::ReCreateMenuBar()
|
||||||
_( "Save current board" ),
|
_( "Save current board" ),
|
||||||
KiBitmap( save_xpm ) );
|
KiBitmap( save_xpm ) );
|
||||||
|
|
||||||
if( Kiface().IsSingle() ) // not when under a project mgr
|
// Save as menu:
|
||||||
|
// under a project mgr we do not want to modify the board filename
|
||||||
|
// to keep consistency with the project mgr which expects files names same as prj name
|
||||||
|
// for main files
|
||||||
|
// when not under a project mgr, we are free to change filenames, cwd ...
|
||||||
|
if( Kiface().IsSingle() ) // not when under a project mgr (pcbnew is run as stand alone)
|
||||||
{
|
{
|
||||||
text = AddHotkeyName( _( "Sa&ve As..." ), g_Board_Editor_Hokeys_Descr, HK_SAVE_BOARD_AS );
|
text = AddHotkeyName( _( "Sa&ve As..." ), g_Board_Editor_Hokeys_Descr, HK_SAVE_BOARD_AS );
|
||||||
AddMenuItem( filesMenu, ID_SAVE_BOARD_AS, text,
|
AddMenuItem( filesMenu, ID_SAVE_BOARD_AS, text,
|
||||||
_( "Save the current board as..." ),
|
_( "Save the current board as..." ),
|
||||||
KiBitmap( save_as_xpm ) );
|
KiBitmap( save_as_xpm ) );
|
||||||
filesMenu->AppendSeparator();
|
|
||||||
}
|
}
|
||||||
|
// under a project mgr, we can save a copy of the board,
|
||||||
|
// but do not change the current board file name
|
||||||
|
else
|
||||||
|
{
|
||||||
|
text = AddHotkeyName( _( "Sa&ve Copy As..." ), g_Board_Editor_Hokeys_Descr, HK_SAVE_BOARD_AS );
|
||||||
|
AddMenuItem( filesMenu, ID_COPY_BOARD_AS, text,
|
||||||
|
_( "Save a copy of the current board as..." ),
|
||||||
|
KiBitmap( save_as_xpm ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
filesMenu->AppendSeparator();
|
||||||
|
|
||||||
AddMenuItem( filesMenu, ID_MENU_READ_BOARD_BACKUP_FILE,
|
AddMenuItem( filesMenu, ID_MENU_READ_BOARD_BACKUP_FILE,
|
||||||
_( "Revert to Last" ),
|
_( "Revert to Last" ),
|
||||||
|
|
|
@ -120,6 +120,7 @@ BEGIN_EVENT_TABLE( PCB_EDIT_FRAME, PCB_BASE_FRAME )
|
||||||
|
|
||||||
EVT_MENU( ID_APPEND_FILE, PCB_EDIT_FRAME::Files_io )
|
EVT_MENU( ID_APPEND_FILE, PCB_EDIT_FRAME::Files_io )
|
||||||
EVT_MENU( ID_SAVE_BOARD_AS, PCB_EDIT_FRAME::Files_io )
|
EVT_MENU( ID_SAVE_BOARD_AS, PCB_EDIT_FRAME::Files_io )
|
||||||
|
EVT_MENU( ID_COPY_BOARD_AS, PCB_EDIT_FRAME::Files_io )
|
||||||
EVT_MENU_RANGE( wxID_FILE1, wxID_FILE9, PCB_EDIT_FRAME::OnFileHistory )
|
EVT_MENU_RANGE( wxID_FILE1, wxID_FILE9, PCB_EDIT_FRAME::OnFileHistory )
|
||||||
|
|
||||||
EVT_MENU( ID_GEN_PLOT, PCB_EDIT_FRAME::ToPlotter )
|
EVT_MENU( ID_GEN_PLOT, PCB_EDIT_FRAME::ToPlotter )
|
||||||
|
|
|
@ -21,6 +21,7 @@ enum pcbnew_ids
|
||||||
ID_OPEN_MODULE_VIEWER,
|
ID_OPEN_MODULE_VIEWER,
|
||||||
ID_READ_NETLIST,
|
ID_READ_NETLIST,
|
||||||
ID_SET_RELATIVE_OFFSET,
|
ID_SET_RELATIVE_OFFSET,
|
||||||
|
ID_COPY_BOARD_AS,
|
||||||
|
|
||||||
// Right vertical tool bar command IDs.
|
// Right vertical tool bar command IDs.
|
||||||
ID_PCB_HIGHLIGHT_BUTT,
|
ID_PCB_HIGHLIGHT_BUTT,
|
||||||
|
|
Loading…
Reference in New Issue