Move multiple wxMessageBox to DisplayErrorMessage
Also provide protection for headless running in multiple callsites Fixes https://gitlab.com/kicad/code/kicad/issues/13575
This commit is contained in:
parent
ae55b1581e
commit
7e5a2450b8
|
@ -39,6 +39,9 @@ static std::unordered_map<unsigned long, int> doNotShowAgainDlgs;
|
||||||
|
|
||||||
bool IsGUI()
|
bool IsGUI()
|
||||||
{
|
{
|
||||||
|
if( !wxTheApp )
|
||||||
|
return false;
|
||||||
|
|
||||||
#if wxCHECK_VERSION( 3, 1, 6 )
|
#if wxCHECK_VERSION( 3, 1, 6 )
|
||||||
return wxTheApp->IsGUI();
|
return wxTheApp->IsGUI();
|
||||||
#else
|
#else
|
||||||
|
|
|
@ -1219,7 +1219,7 @@ bool EDA_BASE_FRAME::IsWritable( const wxFileName& aFileName, bool aVerbose )
|
||||||
if( !msg.IsEmpty() )
|
if( !msg.IsEmpty() )
|
||||||
{
|
{
|
||||||
if( aVerbose )
|
if( aVerbose )
|
||||||
wxMessageBox( msg );
|
DisplayErrorMessage( this, msg );
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -1230,6 +1230,9 @@ bool EDA_BASE_FRAME::IsWritable( const wxFileName& aFileName, bool aVerbose )
|
||||||
|
|
||||||
void EDA_BASE_FRAME::CheckForAutoSaveFile( const wxFileName& aFileName )
|
void EDA_BASE_FRAME::CheckForAutoSaveFile( const wxFileName& aFileName )
|
||||||
{
|
{
|
||||||
|
if( !IsGUI() )
|
||||||
|
return;
|
||||||
|
|
||||||
wxCHECK_RET( aFileName.IsOk(), wxT( "Invalid file name!" ) );
|
wxCHECK_RET( aFileName.IsOk(), wxT( "Invalid file name!" ) );
|
||||||
|
|
||||||
wxFileName autoSaveFileName = aFileName;
|
wxFileName autoSaveFileName = aFileName;
|
||||||
|
|
|
@ -428,7 +428,7 @@ void EDA_DRAW_FRAME::OnUpdateSelectZoom( wxUpdateUIEvent& aEvent )
|
||||||
|
|
||||||
void EDA_DRAW_FRAME::PrintPage( const RENDER_SETTINGS* aSettings )
|
void EDA_DRAW_FRAME::PrintPage( const RENDER_SETTINGS* aSettings )
|
||||||
{
|
{
|
||||||
wxMessageBox( wxT("EDA_DRAW_FRAME::PrintPage() error") );
|
DisplayErrorMessage( this, wxT("EDA_DRAW_FRAME::PrintPage() error") );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -488,8 +488,7 @@ bool FILENAME_RESOLVER::addPath( const SEARCH_PATH& aPath )
|
||||||
msg.append( wxT( "\n" ) );
|
msg.append( wxT( "\n" ) );
|
||||||
msg.append( _( "Existing path:" ) + wxS( " " ) );
|
msg.append( _( "Existing path:" ) + wxS( " " ) );
|
||||||
msg.append( sPL->m_Pathvar );
|
msg.append( sPL->m_Pathvar );
|
||||||
DisplayErrorMessage( nullptr, msg );
|
DisplayErrorMessage( nullptr, _( "Bad alias (duplicate name)" ), msg );
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1395,6 +1395,9 @@ bool SCH_EDIT_FRAME::updateAutoSaveFile()
|
||||||
|
|
||||||
void SCH_EDIT_FRAME::CheckForAutoSaveFile( const wxFileName& aFileName )
|
void SCH_EDIT_FRAME::CheckForAutoSaveFile( const wxFileName& aFileName )
|
||||||
{
|
{
|
||||||
|
if( !IsGUI() )
|
||||||
|
return;
|
||||||
|
|
||||||
wxCHECK_RET( aFileName.IsOk(), wxT( "Invalid file name!" ) );
|
wxCHECK_RET( aFileName.IsOk(), wxT( "Invalid file name!" ) );
|
||||||
|
|
||||||
wxLogTrace( traceAutoSave,
|
wxLogTrace( traceAutoSave,
|
||||||
|
|
|
@ -227,7 +227,7 @@ bool SCH_BASE_FRAME::saveSymbolLibTables( bool aGlobal, bool aProject )
|
||||||
{
|
{
|
||||||
success = false;
|
success = false;
|
||||||
msg.Printf( _( "Error saving global symbol library table:\n%s" ), ioe.What() );
|
msg.Printf( _( "Error saving global symbol library table:\n%s" ), ioe.What() );
|
||||||
wxMessageBox( msg, _( "File Save Error" ), wxOK | wxICON_ERROR );
|
DisplayErrorMessage( this, msg );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -244,7 +244,7 @@ bool SCH_BASE_FRAME::saveSymbolLibTables( bool aGlobal, bool aProject )
|
||||||
success = false;
|
success = false;
|
||||||
msg.Printf( _( "Error saving project-specific symbol library table:\n%s" ),
|
msg.Printf( _( "Error saving project-specific symbol library table:\n%s" ),
|
||||||
ioe.What() );
|
ioe.What() );
|
||||||
wxMessageBox( msg, _( "File Save Error" ), wxOK | wxICON_ERROR );
|
DisplayErrorMessage( this, msg );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -194,4 +194,11 @@ int OKOrCancelDialog( wxWindow* aParent, const wxString& aWarning, const wxStrin
|
||||||
int SelectSingleOption( wxWindow* aParent, const wxString& aTitle, const wxString& aMessage,
|
int SelectSingleOption( wxWindow* aParent, const wxString& aTitle, const wxString& aMessage,
|
||||||
const wxArrayString& aOptions );
|
const wxArrayString& aOptions );
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Determine if the application is running with a GUI
|
||||||
|
*
|
||||||
|
* @return true if there is a GUI and false otherwise
|
||||||
|
*/
|
||||||
|
bool IsGUI();
|
||||||
|
|
||||||
#endif /* __INCLUDE__CONFIRM_H__ */
|
#endif /* __INCLUDE__CONFIRM_H__ */
|
||||||
|
|
|
@ -576,12 +576,11 @@ int PCB_EDIT_FRAME::inferLegacyEdgeClearance( BOARD* aBoard )
|
||||||
if( mixed )
|
if( mixed )
|
||||||
{
|
{
|
||||||
// If they had different widths then we can't ensure that fills will be the same.
|
// If they had different widths then we can't ensure that fills will be the same.
|
||||||
wxMessageBox( _( "If the zones on this board are refilled the Copper Edge Clearance "
|
DisplayInfoMessage( this, _( "If the zones on this board are refilled the Copper Edge Clearance "
|
||||||
"setting will be used (see Board Setup > Design Rules > Constraints).\n"
|
"setting will be used (see Board Setup > Design Rules > Constraints).\n"
|
||||||
"This may result in different fills from previous KiCad versions which "
|
"This may result in different fills from previous KiCad versions which "
|
||||||
"used the line thicknesses of the board boundary on the Edge Cuts "
|
"used the line thicknesses of the board boundary on the Edge Cuts "
|
||||||
"layer." ),
|
"layer." ) );
|
||||||
_( "Edge Clearance Warning" ), wxOK | wxICON_WARNING, this );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return std::max( 0, edgeWidth / 2 );
|
return std::max( 0, edgeWidth / 2 );
|
||||||
|
|
|
@ -1267,7 +1267,7 @@ void FOOTPRINT_EDIT_FRAME::OnSaveFootprintAsPng( wxCommandEvent& event )
|
||||||
|
|
||||||
if( id.empty() )
|
if( id.empty() )
|
||||||
{
|
{
|
||||||
wxMessageBox( _( "No footprint selected." ) );
|
DisplayErrorMessage( this, _( "No footprint selected." ) );
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -364,7 +364,7 @@ void FOOTPRINT_EDIT_FRAME::ExportFootprint( FOOTPRINT* aFootprint )
|
||||||
|
|
||||||
if( fp == nullptr )
|
if( fp == nullptr )
|
||||||
{
|
{
|
||||||
wxMessageBox( wxString::Format( _( "Insufficient permissions to write file '%s'." ),
|
DisplayErrorMessage( this, wxString::Format( _( "Insufficient permissions to write file '%s'." ),
|
||||||
dlg.GetPath() ) );
|
dlg.GetPath() ) );
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
@ -27,6 +27,7 @@
|
||||||
#include <functional>
|
#include <functional>
|
||||||
using namespace std::placeholders;
|
using namespace std::placeholders;
|
||||||
|
|
||||||
|
#include <confirm.h>
|
||||||
#include <kiway.h>
|
#include <kiway.h>
|
||||||
#include <pcb_edit_frame.h>
|
#include <pcb_edit_frame.h>
|
||||||
#include <netlist_reader/pcb_netlist.h>
|
#include <netlist_reader/pcb_netlist.h>
|
||||||
|
@ -44,7 +45,6 @@ using namespace std::placeholders;
|
||||||
#include <tools/pcb_actions.h>
|
#include <tools/pcb_actions.h>
|
||||||
#include <tools/pcb_selection_tool.h>
|
#include <tools/pcb_selection_tool.h>
|
||||||
#include <project/project_file.h> // LAST_PATH_TYPE
|
#include <project/project_file.h> // LAST_PATH_TYPE
|
||||||
#include <wx/msgdlg.h>
|
|
||||||
|
|
||||||
|
|
||||||
bool PCB_EDIT_FRAME::ReadNetlistFromFile( const wxString &aFilename, NETLIST& aNetlist,
|
bool PCB_EDIT_FRAME::ReadNetlistFromFile( const wxString &aFilename, NETLIST& aNetlist,
|
||||||
|
@ -60,7 +60,7 @@ bool PCB_EDIT_FRAME::ReadNetlistFromFile( const wxString &aFilename, NETLIST& aN
|
||||||
if( !netlistReader.get() )
|
if( !netlistReader.get() )
|
||||||
{
|
{
|
||||||
msg.Printf( _( "Cannot open netlist file '%s'." ), aFilename );
|
msg.Printf( _( "Cannot open netlist file '%s'." ), aFilename );
|
||||||
wxMessageBox( msg, _( "Netlist Load Error." ), wxOK | wxICON_ERROR, this );
|
DisplayErrorMessage( this, msg );
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -71,7 +71,7 @@ bool PCB_EDIT_FRAME::ReadNetlistFromFile( const wxString &aFilename, NETLIST& aN
|
||||||
catch( const IO_ERROR& ioe )
|
catch( const IO_ERROR& ioe )
|
||||||
{
|
{
|
||||||
msg.Printf( _( "Error loading netlist.\n%s" ), ioe.What().GetData() );
|
msg.Printf( _( "Error loading netlist.\n%s" ), ioe.What().GetData() );
|
||||||
wxMessageBox( msg, _( "Netlist Load Error" ), wxOK | wxICON_ERROR );
|
DisplayErrorMessage( this, msg );
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1824,7 +1824,7 @@ void PCB_EDIT_FRAME::RunEeschema()
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
msg.Printf( _( "Schematic file '%s' not found." ), schematic.GetFullPath() );
|
msg.Printf( _( "Schematic file '%s' not found." ), schematic.GetFullPath() );
|
||||||
wxMessageBox( msg, _( "KiCad Error" ), wxOK | wxICON_ERROR, this );
|
DisplayErrorMessage( this, msg );
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1853,8 +1853,7 @@ void PCB_EDIT_FRAME::RunEeschema()
|
||||||
}
|
}
|
||||||
catch( const IO_ERROR& err )
|
catch( const IO_ERROR& err )
|
||||||
{
|
{
|
||||||
wxMessageBox( _( "Eeschema failed to load." ) + wxS( "\n" ) + err.What(),
|
DisplayErrorMessage( this, _( "Eeschema failed to load." ) + wxS( "\n" ) + err.What() );
|
||||||
_( "KiCad Error" ), wxOK | wxICON_ERROR, this );
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -2569,7 +2569,7 @@ void PCB_PLUGIN::FootprintSave( const wxString& aLibraryPath, const FOOTPRINT* a
|
||||||
"Would you like to create it?"),
|
"Would you like to create it?"),
|
||||||
aLibraryPath );
|
aLibraryPath );
|
||||||
|
|
||||||
if( wxMessageBox( msg, _( "Library Not Found"), wxYES_NO | wxICON_QUESTION ) != wxYES )
|
if( !IsGUI() || wxMessageBox( msg, _( "Library Not Found"), wxYES_NO | wxICON_QUESTION ) != wxYES )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
// Save throws its own IO_ERROR on failure, so no need to recreate here
|
// Save throws its own IO_ERROR on failure, so no need to recreate here
|
||||||
|
|
Loading…
Reference in New Issue