From b53b5e54fe94209718afbb1040ef1c7e95f0e075 Mon Sep 17 00:00:00 2001 From: Paul Licameli Date: Fri, 13 Dec 2019 20:11:00 -0500 Subject: [PATCH] Comments about preference keys that store localized string values... ... which is wrong in general, but describe why that's pardonable --- src/ProjectFileManager.cpp | 5 +++++ src/import/Import.cpp | 18 +++++++++++------- 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/src/ProjectFileManager.cpp b/src/ProjectFileManager.cpp index 43b863753..576e80ac0 100644 --- a/src/ProjectFileManager.cpp +++ b/src/ProjectFileManager.cpp @@ -1057,6 +1057,11 @@ wxArrayString ProjectFileManager::ShowOpenDialog(const wxString &extraformat, co for (int i = 0; i < index; i++) { mask = mask.AfterFirst(wxT('|')).AfterFirst(wxT('|')); } + + // PRL: Preference keys /DefaultOpenType and /LastOpenType, unusually, + // store localized strings! + // The bad consequences of a change of locale are not severe -- only that + // a default choice of file type for an open dialog is not remembered gPrefs->Write(wxT("/DefaultOpenType"), mask.BeforeFirst(wxT('|'))); gPrefs->Write(wxT("/LastOpenType"), mask.BeforeFirst(wxT('|'))); gPrefs->Flush(); diff --git a/src/import/Import.cpp b/src/import/Import.cpp index 73abbab5d..314e2fcd2 100644 --- a/src/import/Import.cpp +++ b/src/import/Import.cpp @@ -369,10 +369,6 @@ bool Importer::Import(const FilePath &fName, // This list is used to remember plugins that should have been compatible with the file. ImportPluginPtrs compatiblePlugins; - // If user explicitly selected a filter, - // then we should try importing via corresponding plugin first - wxString type = gPrefs->Read(wxT("/LastOpenType"),wxT("")); - // Not implemented (yet?) wxString mime_type = wxT("*"); @@ -380,13 +376,21 @@ bool Importer::Import(const FilePath &fName, bool usersSelectionOverrides; gPrefs->Read(wxT("/ExtendedImport/OverrideExtendedImportByOpenFileDialogChoice"), &usersSelectionOverrides, false); - wxLogDebug(wxT("LastOpenType is %s"),type); - wxLogDebug(wxT("OverrideExtendedImportByOpenFileDialogChoice is %i"),usersSelectionOverrides); - if (usersSelectionOverrides) { + // If user explicitly selected a filter, + // then we should try importing via corresponding plugin first + wxString type = gPrefs->Read(wxT("/LastOpenType"),wxT("")); + + wxLogDebug(wxT("LastOpenType is %s"),type); + wxLogDebug(wxT("OverrideExtendedImportByOpenFileDialogChoice is %i"),usersSelectionOverrides); + for (const auto &plugin : sImportPluginList()) { + // PRL: Preference keys /DefaultOpenType and /LastOpenType, unusually, + // store localized strings! + // The bad consequences of a change of locale are not severe -- only that + // a default choice of file type for an open dialog is not remembered if (plugin->GetPluginFormatDescription().CompareTo(type) == 0) { // This plugin corresponds to user-selected filter, try it first.