KiCad PCB EDA Suite
confirm.cpp File Reference
#include <wx/stockitem.h>
#include <wx/richmsgdlg.h>
#include <wx/choicdlg.h>
#include <confirm.h>
#include <dialogs/html_message_box.h>
#include <functional>
#include <unordered_map>

Go to the source code of this file.

Functions

bool OverrideLock (wxWindow *aParent, const wxString &aMessage)
 Display a dialog indicating the file is already open, with an option to reset the lock. More...
 
int UnsavedChangesDialog (wxWindow *parent, const wxString &aMessage, bool *aApplyToAll)
 A specialized version of HandleUnsavedChanges which handles an apply-to-all checkbox. More...
 
int UnsavedChangesDialog (wxWindow *parent, const wxString &aMessage)
 
bool ConfirmRevertDialog (wxWindow *parent, const wxString &aMessage)
 Display a confirmation dialog for a revert action. More...
 
bool HandleUnsavedChanges (wxWindow *aParent, const wxString &aMessage, const std::function< bool()> &aSaveFunction)
 Display a dialog with Save, Cancel and Discard Changes buttons. More...
 
int OKOrCancelDialog (wxWindow *aParent, const wxString &aWarning, const wxString &aMessage, const wxString &aDetailedMessage, const wxString &aOKLabel, const wxString &aCancelLabel, bool *aApplyToAll)
 Display a warning dialog with aMessage and returns the user response. More...
 
void DisplayError (wxWindow *aParent, const wxString &aText, int aDisplayTime)
 Display an error or warning message box with aMessage. More...
 
void DisplayErrorMessage (wxWindow *aParent, const wxString &aText, const wxString &aExtraInfo)
 Display an error message with aMessage. More...
 
void DisplayInfoMessage (wxWindow *aParent, const wxString &aMessage, const wxString &aExtraInfo)
 Display an informational message box with aMessage. More...
 
bool IsOK (wxWindow *aParent, const wxString &aMessage)
 Display a yes/no dialog with aMessage and returns the user response. More...
 
int SelectSingleOption (wxWindow *aParent, const wxString &aTitle, const wxString &aMessage, const wxArrayString &aOptions)
 Display a dialog with radioboxes asking the user to select an option. More...
 

Variables

static std::unordered_map< unsigned long, int > doNotShowAgainDlgs
 

Function Documentation

◆ ConfirmRevertDialog()

bool ConfirmRevertDialog ( wxWindow *  parent,
const wxString &  aMessage 
)

Display a confirmation dialog for a revert action.

Definition at line 228 of file confirm.cpp.

229 {
230  wxMessageDialog dlg( parent, aMessage, wxEmptyString,
231  wxOK | wxCANCEL | wxOK_DEFAULT | wxICON_WARNING | wxCENTER );
232  dlg.SetExtendedMessage( _( "Your current changes will be permanently lost." ) );
233  dlg.SetOKCancelLabels( _( "Revert" ), _( "Cancel" ) );
234 
235  return dlg.ShowModal() == wxID_OK;
236 }
#define _(s)

References _.

Referenced by SYMBOL_EDIT_FRAME::Revert(), and FOOTPRINT_EDIT_FRAME::RevertFootprint().

◆ DisplayError()

void DisplayError ( wxWindow *  aParent,
const wxString &  aText,
int  aDisplayTime = 0 
)

Display an error or warning message box with aMessage.

Warning
Setting displaytime does not work. Do not use it.

Definition at line 279 of file confirm.cpp.

280 {
281  wxMessageDialog* dlg;
282  int icon = aDisplayTime > 0 ? wxICON_INFORMATION : wxICON_ERROR;
283 
284  dlg = new wxMessageDialog( aParent, aText, _( "Warning" ),
285  wxOK | wxCENTRE | wxRESIZE_BORDER | icon | wxSTAY_ON_TOP );
286 
287  dlg->ShowModal();
288  dlg->Destroy();
289 }
#define _(s)

References _.

Referenced by DIALOG_COPPER_ZONE::AcceptOptions(), FOOTPRINT_VIEWER_FRAME::AddFootprintToPCB(), PCB_BASE_EDIT_FRAME::AddLibrary(), SYMBOL_EDIT_FRAME::AddLibraryFile(), PCB_CONTROL::AppendBoard(), SYMBOL_EDIT_FRAME::backupFile(), SCH_EDIT_FRAME::CheckSheetForRecursion(), FOOTPRINT_VIEWER_FRAME::ClickOnFootprintList(), SCH_EDIT_FRAME::ConvertPart(), DIALOG_GEN_FOOTPRINT_POSITION::CreateAsciiFiles(), MICROWAVE_TOOL::createFootprint(), DIALOG_GEN_FOOTPRINT_POSITION::CreateGerberFiles(), SPICE_SIMULATOR::CreateInstance(), PCB_BASE_EDIT_FRAME::createNewLibrary(), UNIT_BINDER::delayedFocusHandler(), FOOTPRINT_EDIT_FRAME::DeleteFootprintFromLibrary(), PANEL_SETUP_LAYERS::DenyChangeCheckBox(), FIELDS_EDITOR_GRID_TRICKS::doPopupSelection(), doPrintFile(), DIALOG_SIM_SETTINGS::evaluateDCControls(), ExecuteFile(), FOOTPRINT_EDIT_FRAME::ExportFootprint(), PCB_EDIT_FRAME::ExportFootprintsToLibrary(), GBR_TO_PCB_EXPORTER::ExportPcb(), DIALOG_EXPORT_SVG::ExportSVGFile(), SYMBOL_EDIT_FRAME::ExportSymbol(), PCB_EDIT_FRAME::ExportToGenCAD(), NETLIST_EXPORTER_PSPICE::Format(), DIALOG_GENDRILL::GenDrillAndMapFiles(), DIALOG_SPICE_MODEL::generatePowerSource(), PCB_EDIT_FRAME::GenFootprintsReport(), GetAssociatedDocument(), DISPLAY_FOOTPRINTS_FRAME::GetFootprint(), FOOTPRINT_EDIT_FRAME::ImportFootprint(), SCH_EDITOR_CONTROL::ImportFPAssignments(), SYMBOL_EDIT_FRAME::ImportSymbol(), DIALOG_PRINT_GENERIC::initPrintData(), SYMBOL_EDIT_FRAME::LoadSymbol(), SCH_EDIT_FRAME::NewProject(), DIALOG_SYMBOL_FIELDS_TABLE::OnAddField(), DIALOG_CONFIG_EQUFILES::OnAddFiles(), DIALOG_BOM::OnAddGenerator(), DIALOG_NET_INSPECTOR::onAddNet(), DIALOG_SYMBOL_FIELDS_TABLE::OnColumnItemToggled(), DIALOG_LIB_SYMBOL_PROPERTIES::OnDeleteField(), DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR::OnDeleteField(), DIALOG_SHEET_PROPERTIES::OnDeleteField(), DIALOG_SYMBOL_PROPERTIES::OnDeleteField(), DIALOG_FOOTPRINT_PROPERTIES::OnDeleteField(), DIALOG_LIB_SYMBOL_PROPERTIES::OnGridCellChanging(), DIALOG_SYMBOL_PROPERTIES::OnGridCellChanging(), SCH_EDIT_FRAME::OnOpenCvpcb(), DIALOG_PRINT_GENERIC::onPrintButtonClick(), DIALOG_PRINT_GENERIC::onPrintPreview(), DIALOG_NET_INSPECTOR::onRenameNet(), DIALOG_ERC::OnSaveReport(), DIALOG_DRC::OnSaveReport(), DIALOG_SHEET_PROPERTIES::onSheetFilenameChanged(), PCB_DRAW_PANEL_GAL::OnShow(), SCH_EDIT_FRAME::OnUpdatePCB(), DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR::OnUpdateUI(), DIALOG_LIB_SYMBOL_PROPERTIES::OnUpdateUI(), DIALOG_FOOTPRINT_PROPERTIES::OnUpdateUI(), OpenPDF(), PCB_EDIT_FRAME::OpenProjectFiles(), SCH_EDIT_FRAME::OpenProjectFiles(), SCH_EDITOR_CONTROL::Paste(), SYMBOL_GRID_TRICKS::paste_text(), FP_GRID_TRICKS::paste_text(), DIALOG_PLOT::Plot(), NETLIST_EXPORTER_PSPICE::ProcessNetlist(), MWAVE_POLYGONAL_SHAPE_DLG::ReadDataShapeDescr(), PCB_EDIT_FRAME::RecreateBOMFileFromBoard(), PCB_EDIT_FRAME::RecreateCmpFileFromBoard(), KIGFX::VERTEX_MANAGER::Reserve(), FOOTPRINT_EDIT_FRAME::SaveFootprintAs(), FOOTPRINT_EDIT_FRAME::SaveFootprintInLibrary(), FOOTPRINT_EDIT_FRAME::SaveFootprintToBoard(), FOOTPRINT_EDIT_FRAME::SaveLibraryAs(), PCB_EDIT_FRAME::SavePcbCopy(), PCB_EDIT_FRAME::SavePcbFile(), SCH_EDIT_FRAME::saveSchematicFile(), SYMBOL_EDIT_FRAME::saveSymbolAs(), KIGFX::GPU_MANAGER::SetShader(), EDA_DRAW_PANEL_GAL::SwitchBackend(), PCB_EDIT_FRAME::TestStandalone(), DIALOG_GLOBAL_FP_LIB_TABLE_CONFIG::TransferDataFromWindow(), DIALOG_GLOBAL_SYM_LIB_TABLE_CONFIG::TransferDataFromWindow(), DIALOG_TRACK_VIA_SIZE::TransferDataFromWindow(), DIALOG_TRACK_VIA_PROPERTIES::TransferDataFromWindow(), DIALOG_SCH_IMPORT_SETTINGS::TransferDataFromWindow(), DIALOG_IMPORT_SETTINGS::TransferDataFromWindow(), DIALOG_NON_COPPER_ZONES_EDITOR::TransferDataFromWindow(), DIALOG_RULE_AREA_PROPERTIES::TransferDataFromWindow(), DIALOG_PRINT_USING_PRINTER::TransferDataFromWindow(), DIALOG_TEXT_PROPERTIES::TransferDataFromWindow(), DIALOG_FIELD_PROPERTIES::TransferDataFromWindow(), DIALOG_TEXT_AND_LABEL_PROPERTIES::TransferDataFromWindow(), DIALOG_SHEET_PROPERTIES::TransferDataFromWindow(), DIALOG_SIM_SETTINGS::TransferDataFromWindow(), DIALOG_GRAPHIC_ITEM_PROPERTIES::TransferDataFromWindow(), DIALOG_PAD_PRIMITIVES_PROPERTIES::TransferDataFromWindow(), DIALOG_EDIT_SYMBOLS_LIBID::TransferDataFromWindow(), REGEX_VALIDATOR::Validate(), SPICE_VALIDATOR::Validate(), KIGFX::VERTEX_MANAGER::Vertex(), KIGFX::VERTEX_MANAGER::Vertices(), NETLIST_EXPORTER_ORCADPCB2::WriteNetlist(), NETLIST_EXPORTER_CADSTAR::WriteNetlist(), NETLIST_EXPORTER_KICAD::WriteNetlist(), and LEGACY_RESCUER::WriteRescueLibrary().

◆ DisplayErrorMessage()

void DisplayErrorMessage ( wxWindow *  aParent,
const wxString &  aMessage,
const wxString &  aExtraInfo = wxEmptyString 
)

Display an error message with aMessage.

Parameters
aParentis the parent window
aMessageis the message text to display
aExtraInfois extra data that can be optionally displayed in a collapsible pane

Definition at line 292 of file confirm.cpp.

293 {
294  wxMessageDialog* dlg;
295 
296  dlg = new wxMessageDialog( aParent, aText, _( "Error" ),
297  wxOK | wxCENTRE | wxRESIZE_BORDER | wxICON_ERROR | wxSTAY_ON_TOP );
298 
299  if( !aExtraInfo.IsEmpty() )
300  dlg->SetExtendedMessage( aExtraInfo );
301 
302  dlg->ShowModal();
303  dlg->Destroy();
304 }
#define _(s)

References _.

Referenced by FOOTPRINT_VIEWER_FRAME::AddFootprintToPCB(), SYMBOL_EDITOR_CONTROL::AddSymbolToSchematic(), SIM_PLOT_FRAME::AddTuner(), PANEL_SETUP_LAYERS::addUserDefinedLayer(), CVPCB_ASSOCIATION_TOOL::Associate(), CVPCB_MAINFRAME::AssociateFootprint(), PANEL_FP_LIB_TABLE::browseLibrariesHandler(), checkGlError(), SCH_EDIT_FRAME::CreateArchiveLibrary(), PROJECT_TREE_ITEM::Delete(), WIDGET_HOTKEY_LIST::editItem(), PCB_EDIT_FRAME::ExportSpecctraFile(), SYMBOL_EDIT_FRAME::ExportSymbol(), BACK_ANNOTATE::FetchNetlistFromPCB(), PCB_EDIT_FRAME::FetchNetlistFromSchematic(), PL_EDITOR_FRAME::Files_io(), EDA_BASE_FRAME::GetFileFromHistory(), SCH_EDIT_FRAME::importFile(), PCB_EDIT_FRAME::ImportSpecctraSession(), SYMBOL_EDIT_FRAME::ImportSymbol(), PGM_BASE::InitPgm(), FOOTPRINT_EDIT_FRAME::KiwayMailIn(), SYMBOL_EDIT_FRAME::KiwayMailIn(), SCH_EDIT_FRAME::LoadSheetFromFile(), SYMBOL_EDIT_FRAME::LoadSymbolFromCurrentLib(), SETTINGS_MANAGER::MigrateIfNeeded(), KICAD_MANAGER_CONTROL::NewFromTemplate(), KICAD_MANAGER_CONTROL::NewProject(), DIALOG_SCHEMATIC_SETUP::OnAuxiliaryAction(), DIALOG_BOARD_SETUP::OnAuxiliaryAction(), PANEL_SYM_LIB_TABLE::onConvertLegacyLibraries(), DIALOG_EXPORT_STEP::onExportButton(), PCB_EDIT_FRAME::OnExportSTEP(), PCB_EDIT_FRAME::OnExportVRML(), CV::IFACE::OnKifaceStart(), PCB::IFACE::OnKifaceStart(), SCH::IFACE::OnKifaceStart(), PANEL_SETUP_NETCLASSES::OnRemoveNetclassClick(), SIM_PLOT_FRAME::onSettings(), DIALOG_SHEET_PROPERTIES::onSheetFilenameChanged(), PANEL_TEXT_VARIABLES::OnUpdateUI(), DIALOG_CONFIGURE_PATHS::OnUpdateUI(), PCB_EDIT_FRAME::OpenProjectFiles(), SCH_EDIT_FRAME::OpenProjectFiles(), PROJECT::PcbFootprintLibs(), KIWAY::Player(), SYMBOL_EDIT_FRAME::Save(), SYMBOL_EDIT_FRAME::saveLibrary(), KICAD_MANAGER_CONTROL::SaveProjectAs(), DIALOG_BOARD_STATISTICS::saveReportClicked(), SchGetLibSymbol(), KIWAY::SetLanguage(), SYMBOL_VIEWER_FRAME::ShowModal(), FOOTPRINT_VIEWER_FRAME::ShowModal(), SIM_PLOT_FRAME::StartSimulation(), DIALOG_PNS_DIFF_PAIR_DIMENSIONS::TransferDataFromWindow(), DIALOG_LIB_SYMBOL_PROPERTIES::TransferDataFromWindow(), DIALOG_PIN_PROPERTIES::TransferDataFromWindow(), SYMBOL_EDIT_FRAME::UpdateAfterSymbolProperties(), BOARD_EDITOR_CONTROL::UpdateSchematicFromPCB(), DIALOG_SHEET_PROPERTIES::Validate(), DIALOG_SYMBOL_PROPERTIES::Validate(), IPC356D_WRITER::Write(), and SYMBOL_LIB_TABLE_RESCUER::WriteRescueLibrary().

◆ DisplayInfoMessage()

void DisplayInfoMessage ( wxWindow *  parent,
const wxString &  aMessage,
const wxString &  aExtraInfo = wxEmptyString 
)

Display an informational message box with aMessage.

Parameters
aParentis the parent window
aMessageis the message text to display
aExtraInfois the extra data that can be optionally displayed in a collapsible pane

Definition at line 307 of file confirm.cpp.

308 {
309  wxMessageDialog* dlg;
310  int icon = wxICON_INFORMATION;
311 
312  dlg = new wxMessageDialog( aParent, aMessage, _( "Information" ),
313  wxOK | wxCENTRE | wxRESIZE_BORDER | icon | wxSTAY_ON_TOP );
314 
315  if( !aExtraInfo.IsEmpty() )
316  dlg->SetExtendedMessage( aExtraInfo );
317 
318  dlg->ShowModal();
319  dlg->Destroy();
320 }
#define _(s)

References _.

Referenced by SCH_EDIT_FRAME::checkForNoFullyDefinedLibIds(), EE_INSPECTION_TOOL::CheckSymbol(), PCB_BASE_FRAME::CreateNewFootprint(), FOOTPRINT_EDIT_FRAME::DeleteFootprintFromLibrary(), DIALOG_SYMBOL_REMAP::DIALOG_SYMBOL_REMAP(), EDA_DRAW_PANEL_GAL::DoRePaint(), FOOTPRINT_EDIT_FRAME::ExportFootprint(), PCB_EDIT_FRAME::ExportFootprintsToLibrary(), GERBVIEW_CONTROL::ExportToPcbnew(), PCB_EDIT_FRAME::Files_io_from_id(), DIALOG_PRINT_GENERIC::getScaleValue(), PGM_BASE::GetTextEditor(), SIM_PLOT_FRAME::onAddSignal(), CV::IFACE::OnKifaceStart(), SCH_DRAW_PANEL::OnShow(), SCH_EDIT_FRAME::OpenProjectFiles(), DIALOG_PLOT::Plot(), BOARD_EDITOR_CONTROL::RepairBoard(), FOOTPRINT_EDITOR_CONTROL::RepairFootprint(), FOOTPRINT_EDIT_FRAME::SaveFootprint(), FOOTPRINT_EDIT_FRAME::SaveFootprintAs(), FOOTPRINT_EDIT_FRAME::SaveLibraryAs(), PCB_EDIT_FRAME::SavePcbCopy(), ROUTER_TOOL::SelectCopperLayerPair(), KICAD_MANAGER_CONTROL::ShowPlayer(), and EDA_DRAW_PANEL_GAL::SwitchBackend().

◆ HandleUnsavedChanges()

bool HandleUnsavedChanges ( wxWindow *  aParent,
const wxString &  aMessage,
const std::function< bool()> &  aSaveFunction 
)

Display a dialog with Save, Cancel and Discard Changes buttons.

Parameters
aParent= the parent window
aMessage= the main message to put in dialog
aSaveFunction= a function to save changes, if requested. Must return true if the save was successful and false otherwise (which will result in HandleUnsavedChanges() returning wxID_CANCEL).
Returns
wxID_YES, wxID_CANCEL, wxID_NO.

Definition at line 239 of file confirm.cpp.

241 {
242  switch( UnsavedChangesDialog( aParent, aMessage ) )
243  {
244  case wxID_YES: return aSaveFunction();
245  case wxID_NO: return true;
246  default:
247  case wxID_CANCEL: return false;
248  }
249 }
int UnsavedChangesDialog(wxWindow *parent, const wxString &aMessage, bool *aApplyToAll)
A specialized version of HandleUnsavedChanges which handles an apply-to-all checkbox.
Definition: confirm.cpp:176

References UnsavedChangesDialog().

Referenced by SCH_EDIT_FRAME::AskToSaveChanges(), FOOTPRINT_EDIT_FRAME::canCloseWindow(), PL_EDITOR_FRAME::canCloseWindow(), CVPCB_MAINFRAME::canCloseWindow(), SIM_PLOT_FRAME::canCloseWindow(), PCB_EDIT_FRAME::canCloseWindow(), SCH_EDIT_FRAME::canCloseWindow(), FOOTPRINT_EDIT_FRAME::Clear_Pcb(), FOOTPRINT_EDITOR_CONTROL::CreateFootprint(), PL_EDITOR_FRAME::Files_io(), PCB_EDIT_FRAME::Files_io_from_id(), SYMBOL_EDIT_FRAME::LoadSymbol(), DIALOG_LIB_EDIT_PIN_TABLE::OnClose(), DIALOG_SYMBOL_FIELDS_TABLE::OnClose(), PL_EDITOR_FRAME::OnFileHistory(), and PCB_EDIT_FRAME::OpenProjectFiles().

◆ IsOK()

bool IsOK ( wxWindow *  aParent,
const wxString &  aMessage 
)

Display a yes/no dialog with aMessage and returns the user response.

Parameters
aParentis the parent window. NULL can be used if the parent is the top level window.
aMessageis the message to display in the dialog box.
Returns
True if user selected the yes button, otherwise false.

Definition at line 323 of file confirm.cpp.

324 {
325  wxMessageDialog dlg( aParent, aMessage, _( "Confirmation" ),
326  wxYES_NO | wxCENTRE | wxICON_QUESTION | wxSTAY_ON_TOP );
327  dlg.SetEscapeId( wxID_NO );
328 
329  return dlg.ShowModal() == wxID_YES;
330 }
#define _(s)

References _.

Referenced by DIALOG_IMAGE_EDITOR::CheckValues(), SCH_EDIT_TOOL::CleanupSheetPins(), GERBVIEW_FRAME::Clear_DrawLayers(), PCB_EDIT_FRAME::Clear_Pcb(), CVPCB_ASSOCIATION_TOOL::DeleteAll(), FOOTPRINT_EDIT_FRAME::DeleteFootprintFromLibrary(), SYMBOL_EDIT_FRAME::DeleteSymbolFromLibrary(), DIALOG_GLOBAL_DELETION::DoGlobalDeletions(), GERBVIEW_FRAME::Erase_Current_DrawLayer(), PCB_EDIT_FRAME::ExportFootprintsToLibrary(), PCB_EDIT_FRAME::Files_io_from_id(), KICAD_MANAGER_CONTROL::NewProject(), SCH_EDIT_FRAME::OnAppendProject(), DIALOG_BOARD_REANNOTATE::OnApplyClick(), PANEL_SETUP_RULES::onCharHook(), PANEL_SYM_LIB_TABLE::onConvertLegacyLibraries(), DIALOG_NET_INSPECTOR::onDeleteNet(), DIALOG_SHEET_PROPERTIES::onSheetFilenameChanged(), PCB_EDIT_FRAME::OpenProjectFiles(), SCH_EDIT_FRAME::OpenProjectFiles(), CVPCB_MAINFRAME::ReadNetListAndFpFiles(), SCH_EDIT_FRAME::ReadyToNetlist(), DIALOG_BOARD_REANNOTATE::ReannotateBoard(), DIALOG_PIN_PROPERTIES::TransferDataFromWindow(), PANEL_SETUP_LAYERS::TransferDataFromWindow(), and DIALOG_LIB_SYMBOL_PROPERTIES::Validate().

◆ OKOrCancelDialog()

int OKOrCancelDialog ( wxWindow *  aParent,
const wxString &  aWarning,
const wxString &  aMessage,
const wxString &  aDetailedMessage = wxEmptyString,
const wxString &  aOKLabel = wxEmptyString,
const wxString &  aCancelLabel = wxEmptyString,
bool *  aApplyToAll = nullptr 
)

Display a warning dialog with aMessage and returns the user response.

Parameters
aParentis the parent window. NULL can be used if the parent is the top level window.
aWarningis the warning to display in the top part of the dialog box using a bold font.
aMessageis the message to display in the lower part of the dialog box using the default system UI font.
aDetailedMessageis the message to display in the "Show detailed information" section. Passing wxEmptyString will hide this portion of the dialog.
aOKLabelis the text to display in the OK button.
aCancelLabelis the text to display in the cancel button.
Returns
wxID_OK or wxID_CANCEL depending on the button the user selected.

Definition at line 252 of file confirm.cpp.

255 {
256  wxRichMessageDialog dlg( aParent, aMessage, aWarning,
257  wxOK | wxCANCEL | wxOK_DEFAULT | wxICON_WARNING | wxCENTER );
258 
259  dlg.SetOKCancelLabels( ( aOKLabel.IsEmpty() ) ? _( "OK" ) : aOKLabel,
260  ( aCancelLabel.IsEmpty() ) ? _( "Cancel" ) : aCancelLabel );
261 
262  if( !aDetailedMessage.IsEmpty() )
263  dlg.SetExtendedMessage( aDetailedMessage );
264 
265  if( aApplyToAll )
266  dlg.ShowCheckBox( _( "Apply to all" ), true );
267 
268  int ret = dlg.ShowModal();
269 
270  if( aApplyToAll )
271  *aApplyToAll = dlg.IsCheckBoxChecked();
272 
273  // Returns wxID_OK or wxID_CANCEL
274  return ret;
275 }
#define _(s)

References _.

Referenced by PANEL_SYM_LIB_TABLE::browseLibrariesHandler(), PANEL_FP_LIB_TABLE::browseLibrariesHandler(), SYMBOL_EDIT_FRAME::Save(), SYMBOL_EDIT_FRAME::saveAllLibraries(), and ROUTER_TOOL::saveRouterDebugLog().

◆ OverrideLock()

bool OverrideLock ( wxWindow *  aParent,
const wxString &  aMessage 
)

Display a dialog indicating the file is already open, with an option to reset the lock.

Returns
true if the lock was reset.

Definition at line 154 of file confirm.cpp.

155 {
156 #ifdef __APPLE__
157  // wxMessageDialog gets the button spacing wrong on Mac so we have to use wxRichMessageDialog.
158  // Note that its warning icon is more like wxMessageDialog's error icon, so we use it instead
159  // of wxICON_ERROR.
160  wxRichMessageDialog dlg( aParent, aMessage, _( "File Open Error" ),
161  wxYES_NO | wxICON_WARNING | wxCENTER );
162  dlg.SetExtendedMessage( _( "Interleaved saves may produce very unexpected results." )
163  + wxS( "\n" ) );
164  dlg.SetYesNoLabels( _( "OK" ), _( "Open Anyway" ) );
165 #else
166  wxMessageDialog dlg( aParent, aMessage, _( "File Open Error" ),
167  wxYES_NO | wxICON_ERROR | wxCENTER );
168  dlg.SetExtendedMessage( _( "Interleaved saves may produce very unexpected results." ) );
169  dlg.SetYesNoLabels( _( "OK" ), _( "Open Anyway" ) );
170 #endif
171 
172  return dlg.ShowModal() == wxID_NO;
173 }
#define _(s)

References _.

Referenced by SCH_EDIT_FRAME::importFile(), PCB_EDIT_FRAME::OpenProjectFiles(), and SCH_EDIT_FRAME::OpenProjectFiles().

◆ SelectSingleOption()

int SelectSingleOption ( wxWindow *  aParent,
const wxString &  aTitle,
const wxString &  aMessage,
const wxArrayString &  aOptions 
)

Display a dialog with radioboxes asking the user to select an option.

Parameters
aParentis the parent window.
aTitleis the dialog title.
aMessageis a text label displayed in the first row of the dialog.
aOptionsis a vector of possible options.
Returns
Index of the selected option or -1 when the dialog has been canceled.

Definition at line 333 of file confirm.cpp.

335 {
336  wxSingleChoiceDialog dlg( aParent, aMessage, aTitle, aOptions );
337 
338  if( dlg.ShowModal() != wxID_OK )
339  return -1;
340 
341  return dlg.GetSelection();
342 }

◆ UnsavedChangesDialog() [1/2]

int UnsavedChangesDialog ( wxWindow *  aParent,
const wxString &  aMessage,
bool *  aApplyToAll 
)

A specialized version of HandleUnsavedChanges which handles an apply-to-all checkbox.

Parameters
aParent= the parent window
aMessage= the main message to put in dialog
aApplyToAll= if non-null an "Apply to all" checkbox will be shown and it's value written back to the bool.
Returns
wxID_YES, wxID_CANCEL, wxID_NO.

Definition at line 176 of file confirm.cpp.

177 {
178  static bool s_apply_to_all = false;
179 
180  wxRichMessageDialog dlg( parent, aMessage, _( "Save Changes?" ),
181  wxYES_NO | wxCANCEL | wxYES_DEFAULT | wxICON_WARNING | wxCENTER );
182  dlg.SetExtendedMessage( _( "If you don't save, all your changes will be permanently lost." )
183  + wxS( "\n" ) );
184  dlg.SetYesNoLabels( _( "Save" ), _( "Discard Changes" ) );
185 
186  if( aApplyToAll )
187  dlg.ShowCheckBox( _( "Apply to all" ), s_apply_to_all );
188 
189  int ret = dlg.ShowModal();
190 
191  if( aApplyToAll )
192  {
193  *aApplyToAll = dlg.IsCheckBoxChecked();
194  s_apply_to_all = dlg.IsCheckBoxChecked();
195  }
196 
197  // Returns wxID_YES, wxID_NO, or wxID_CANCEL
198  return ret;
199 }
#define _(s)

References _.

Referenced by SYMBOL_EDIT_FRAME::canCloseWindow(), HandleUnsavedChanges(), InvokeSchEditSymbolLibTable(), SYMBOL_EDIT_FRAME::saveAllLibraries(), and UnsavedChangesDialog().

◆ UnsavedChangesDialog() [2/2]

int UnsavedChangesDialog ( wxWindow *  parent,
const wxString &  aMessage 
)

Definition at line 202 of file confirm.cpp.

203 {
204 #ifdef __APPLE__
205  // wxMessageDialog gets the button order (and spacing) wrong on Mac so we have to use
206  // wxRichMessageDialog.
207  return UnsavedChangesDialog( parent, aMessage, nullptr );
208 #else
209  #ifdef _WIN32
210  // wxMessageDialog on windows invokes TaskDialogIndirect which is a native function for a dialog
211  // As a result it skips wxWidgets for modal management...and we don't parent frames properly
212  // among other things for Windows to do the right thing by default
213  // Disable all the windows manually to avoid being able to hit this dialog from the tool frame and kicad frame at the same time
214  wxWindowDisabler disable( true );
215  #endif
216 
217  wxMessageDialog dlg( parent, aMessage, _( "Save Changes?" ),
218  wxYES_NO | wxCANCEL | wxYES_DEFAULT | wxICON_WARNING | wxCENTER );
219  dlg.SetExtendedMessage( _( "If you don't save, all your changes will be permanently lost." ) );
220  dlg.SetYesNoLabels( _( "Save" ), _( "Discard Changes" ) );
221 
222  // Returns wxID_YES, wxID_NO, or wxID_CANCEL
223  return dlg.ShowModal();
224 #endif
225 }
int UnsavedChangesDialog(wxWindow *parent, const wxString &aMessage, bool *aApplyToAll)
A specialized version of HandleUnsavedChanges which handles an apply-to-all checkbox.
Definition: confirm.cpp:176
#define _(s)

References _, and UnsavedChangesDialog().

Variable Documentation

◆ doNotShowAgainDlgs

std::unordered_map<unsigned long, int> doNotShowAgainDlgs
static