KiCad PCB EDA Suite
|
Some useful functions to handle strings. More...
#include <clocale>
#include <cmath>
#include <map>
#include <core/map_helpers.h>
#include <fmt/core.h>
#include <macros.h>
#include <richio.h>
#include <string_utils.h>
#include <wx_filename.h>
#include <fmt/chrono.h>
#include <wx/log.h>
#include <wx/regex.h>
#include "locale_io.h"
Go to the source code of this file.
Functions | |
bool | IsFullFileNameValid (const wxString &aFullFilename) |
Checks if a full filename is valid, i.e. | |
wxString | ConvertToNewOverbarNotation (const wxString &aOldStr) |
Convert the old ~...~ overbar notation to the new ~{...} one. | |
bool | ConvertSmartQuotesAndDashes (wxString *aString) |
Convert curly quotes and em/en dashes to straight quotes and dashes. | |
wxString | EscapeString (const wxString &aSource, ESCAPE_CONTEXT aContext) |
The Escape/Unescape routines use HTML-entity-reference-style encoding to handle characters which are: (a) not legal in filenames (b) used as control characters in LIB_IDs (c) used to delineate hierarchical paths. | |
wxString | UnescapeString (const wxString &aSource) |
wxString | TitleCaps (const wxString &aString) |
Capitalize the first letter in each word. | |
int | ReadDelimitedText (wxString *aDest, const char *aSource) |
Copy bytes from aSource delimited string segment to aDest wxString. | |
int | ReadDelimitedText (char *aDest, const char *aSource, int aDestSize) |
Copy bytes from aSource delimited string segment to aDest buffer. | |
std::string | EscapedUTF8 (const wxString &aString) |
Return an 8 bit UTF8 string given aString in Unicode form. | |
wxString | EscapeHTML (const wxString &aString) |
Return a new wxString escaped for embedding in HTML. | |
wxString | UnescapeHTML (const wxString &aString) |
Return a new wxString unescaped from HTML format. | |
wxString | RemoveHTMLTags (const wxString &aInput) |
Removes HTML tags from a string. | |
wxString | LinkifyHTML (wxString aStr) |
Wraps links in HTML tags. | |
bool | NoPrintableChars (const wxString &aString) |
Return true if the string is empty or contains only whitespace. | |
int | PrintableCharCount (const wxString &aString) |
Return the number of printable (ie: non-formatting) chars. | |
char * | StrPurge (char *text) |
Remove leading and training spaces, tabs and end of line chars in text. | |
char * | GetLine (FILE *File, char *Line, int *LineNum, int SizeLine) |
Read one line line from aFile. | |
wxString | GetISO8601CurrentDateTime () |
int | StrNumCmp (const wxString &aString1, const wxString &aString2, bool aIgnoreCase) |
Compare two strings with alphanumerical content. | |
bool | WildCompareString (const wxString &pattern, const wxString &string_to_tst, bool case_sensitive) |
Compare a string against wild card (* and ?) pattern using the usual rules. | |
bool | ApplyModifier (double &value, const wxString &aString) |
bool | convertSeparators (wxString *value) |
int | ValueStringCompare (const wxString &strFWord, const wxString &strSWord) |
Compare strings like the strcmp function but handle numbers and modifiers within the string text correctly for sorting. | |
int | SplitString (const wxString &strToSplit, wxString *strBeginning, wxString *strDigits, wxString *strEnd) |
Break a string into three parts: he alphabetic preamble, the numeric part, and any alphabetic ending. | |
int | GetTrailingInt (const wxString &aStr) |
Gets the trailing int, if any, from a string. | |
wxString | GetIllegalFileNameWxChars () |
bool | ReplaceIllegalFileNameChars (std::string *aName, int aReplaceChar) |
Checks aName for illegal file name characters. | |
bool | ReplaceIllegalFileNameChars (wxString &aName, int aReplaceChar) |
void | wxStringSplit (const wxString &aText, wxArrayString &aStrings, wxChar aSplitter) |
Split aString to a string list separated at aSplitter. | |
void | StripTrailingZeros (wxString &aStringValue, unsigned aTrailingZeroAllowed) |
Remove trailing zeros from a string containing a converted float number. | |
std::string | FormatDouble2Str (double aValue) |
Print a float number without using scientific notation and no trailing 0 This function is intended in uses to write to file, it ignores locale. | |
std::string | UIDouble2Str (double aValue) |
Print a float number without using scientific notation and no trailing 0 We want to avoid scientific notation in S-expr files (not easy to read) for floating numbers. | |
wxString | From_UTF8 (const char *cstring) |
wxString | From_UTF8 (const std::string &aString) |
Convert an expected UTF8 encoded std::string to a wxString. | |
wxString | NormalizeFileUri (const wxString &aFileUri) |
Normalize file path aFileUri to URI convention. | |
Variables | |
static const char | illegalFileNameChars [] = "\\/:\"<>|*?" |
Illegal file name characters used to ensure file names will be valid on all supported platforms. | |
Some useful functions to handle strings.
Definition in file string_utils.cpp.
bool ApplyModifier | ( | double & | value, |
const wxString & | aString | ||
) |
Although the two 'μ's look the same, they are U+03BC and U+00B5
Definition at line 946 of file string_utils.cpp.
Referenced by ValueStringCompare().
bool convertSeparators | ( | wxString * | value | ) |
Definition at line 998 of file string_utils.cpp.
Referenced by SIM_MODEL::InferSimModel(), and ValueStringCompare().
bool ConvertSmartQuotesAndDashes | ( | wxString * | aString | ) |
Convert curly quotes and em/en dashes to straight quotes and dashes.
Definition at line 152 of file string_utils.cpp.
Referenced by PANEL_SETUP_RULES::ImportSettingsFrom(), WX_HTML_REPORT_PANEL::onBtnSaveToFile(), SCINTILLA_TRICKS::onCharHook(), and PANEL_SETUP_RULES::TransferDataToWindow().
wxString ConvertToNewOverbarNotation | ( | const wxString & | aOldStr | ) |
Convert the old ~...~
overbar notation to the new ~{...}
one.
Definition at line 80 of file string_utils.cpp.
Referenced by escapeName(), CADSTAR_ARCHIVE_PARSER::HandleTextOverbar(), SCH_IO_KICAD_LEGACY_LIB_CACHE::loadField(), PCB_IO_KICAD_LEGACY::loadMODULE_TEXT(), PCB_IO_KICAD_LEGACY::loadNETCLASS(), PCB_IO_KICAD_LEGACY::loadNETINFO_ITEM(), PCB_IO_KICAD_LEGACY::loadPAD(), PCB_IO_KICAD_LEGACY::loadPCB_TEXT(), SCH_IO_KICAD_LEGACY_LIB_CACHE::loadPin(), SCH_IO_KICAD_LEGACY::loadSheet(), SCH_IO_KICAD_LEGACY::loadText(), SCH_IO_KICAD_LEGACY_LIB_CACHE::loadText(), NET_SETTINGS::migrateSchema0to1(), SCH_IO_KICAD_SEXPR_PARSER::parseBusAlias(), PCB_IO_KICAD_SEXPR_PARSER::parseEDA_TEXT(), SCH_IO_KICAD_SEXPR_PARSER::parseEDA_TEXT(), PCB_IO_KICAD_SEXPR_PARSER::parseNETCLASS(), PCB_IO_KICAD_SEXPR_PARSER::parseNETINFO_ITEM(), PCB_IO_KICAD_SEXPR_PARSER::parsePAD(), SCH_IO_KICAD_SEXPR_PARSER::parseSymbolPin(), and DRAWING_SHEET_PARSER::parseText().
std::string EscapedUTF8 | ( | const wxString & | aString | ) |
Return an 8 bit UTF8 string given aString in Unicode form.
Any double quoted or back slashes are prefixed with a '\' byte and the form of this UTF8 byte string is compatible with function ReadDelimitedText().
aString | is the input string to convert. |
Definition at line 504 of file string_utils.cpp.
References TO_UTF8.
Referenced by SCH_IO_KICAD_LEGACY::Format(), SCH_IO_KICAD_LEGACY_LIB_CACHE::saveField(), SCH_IO_KICAD_LEGACY::saveField(), SCH_IO_KICAD_LEGACY::saveSheet(), and SCH_IO_KICAD_SEXPR::saveSheet().
wxString EscapeHTML | ( | const wxString & | aString | ) |
Return a new wxString escaped for embedding in HTML.
Definition at line 545 of file string_utils.cpp.
Referenced by BOARD_NETLIST_UPDATER::addNewFootprint(), BACK_ANNOTATE::applyChangelist(), BOOST_AUTO_TEST_CASE(), BOARD_INSPECTION_TOOL::DiffFootprint(), EE_INSPECTION_TOOL::DiffSymbol(), FOOTPRINT_LIST::DisplayErrors(), PANEL_DESIGN_BLOCK_CHOOSER::displayErrors(), DRC_ENGINE::EvalRules(), DRC_ENGINE::EvalZoneConnection(), FOOTPRINT_INFO_GENERATOR::GenerateHtml(), DESIGN_BLOCK_TREE_MODEL_ADAPTER::GenerateInfo(), FOOTPRINT_INFO_GENERATOR::GetHtmlFieldRow(), BOARD_INSPECTION_TOOL::InspectClearance(), DRC_ENGINE::ProcessAssertions(), BACK_ANNOTATE::processNetNameChange(), BOARD_NETLIST_UPDATER::replaceFootprint(), BOARD_INSPECTION_TOOL::reportHeader(), FOOTPRINT_INFO_GENERATOR::SetHtmlAliasOf(), FOOTPRINT_INFO_GENERATOR::SetHtmlDesc(), FOOTPRINT_INFO_GENERATOR::SetHtmlKeywords(), FOOTPRINT_INFO_GENERATOR::SetHtmlName(), PANEL_PACKAGES_VIEW::setPackageDetails(), BOARD_NETLIST_UPDATER::testConnectivity(), BOARD_NETLIST_UPDATER::updateComponentClass(), BOARD_NETLIST_UPDATER::updateComponentPadConnections(), BOARD_NETLIST_UPDATER::updateCopperZoneNets(), BOARD_NETLIST_UPDATER::updateFootprintParameters(), and BOARD_NETLIST_UPDATER::UpdateNetlist().
wxString EscapeString | ( | const wxString & | aSource, |
ESCAPE_CONTEXT | aContext | ||
) |
The Escape/Unescape routines use HTML-entity-reference-style encoding to handle characters which are: (a) not legal in filenames (b) used as control characters in LIB_IDs (c) used to delineate hierarchical paths.
Definition at line 179 of file string_utils.cpp.
References CTX_CSV, CTX_FILENAME, CTX_IPC, CTX_JS_STR, CTX_LEGACY_LIBID, CTX_LIBID, CTX_LINE, CTX_NETNAME, CTX_NO_SPACE, and CTX_QUOTED_STR.
Referenced by AltiumToKiCadLibID(), SCH_LABEL_BASE::cacheShownText(), SCH_EDIT_TOOL::ChangeTextType(), SYMBOL_VIEWER_FRAME::ClickOnLibList(), SYMBOL_VIEWER_FRAME::ClickOnSymbolList(), collectItemsForSyncParts(), SCH_CONNECTION::ConfigureFromLabel(), SCH_IO_MGR::ConvertLibrary(), DIALOG_FIELD_PROPERTIES::DIALOG_FIELD_PROPERTIES(), CONNECTION_SUBGRAPH::driverName(), EasyEdaToKiCadLibID(), SYMBOL_EDITOR_EDIT_TOOL::editFieldProperties(), PDF_PLOTTER::EndPlot(), CONNECTION_GRAPH::ercCheckBusToNetConflicts(), CONNECTION_GRAPH::ercCheckSingleGlobalLabel(), TEXT_BUTTON_SYMBOL_CHOOSER::escapeLibId(), PCB_IO_EASYEDAPRO_PARSER::fillFootprintModelInfo(), PCB_EDIT_FRAME::FindItemsFromSyncSelection(), RESCUE_SYMBOL_LIB_TABLE_CANDIDATE::FindRescues(), PCB_IO_KICAD_SEXPR::format(), CADSTAR_ARCHIVE_PARSER::generateLibName(), SCH_PIN::GetDefaultNetName(), getLibIdValue(), DIALOG_LIB_NEW_SYMBOL::GetName(), DIALOG_LIB_NEW_SYMBOL::GetParentSymbolName(), FIELDS_GRID_TABLE::GetValue(), SYMBOL_EDIT_FRAME::ImportSymbol(), SCH_IO_KICAD_LEGACY_LIB_CACHE::loadField(), SCH_IO_EAGLE::loadInstance(), CADSTAR_SCH_ARCHIVE_LOADER::loadLibPart(), SCH_IO_EAGLE::loadLibrary(), CADSTAR_SCH_ARCHIVE_LOADER::loadPartsLibrary(), LoadSchematic(), SCH_IO_EASYEDAPRO::LoadSchematicFile(), CADSTAR_SCH_ARCHIVE_LOADER::loadSchematicSymbolInstances(), SCH_IO_EAGLE::loadSegments(), SCH_IO_KICAD_SEXPR::LoadSymbol(), netList(), PCB_NET_INSPECTOR_PANEL::onRenameSelectedNet(), NET_SETTINGS::ParseBusGroup(), PCB_IO_EASYEDA_PARSER::ParseToBoardItemContainer(), SYMBOL_EDITOR_CONTROL::RenameSymbol(), SCH_LABEL_BASE::Replace(), SCH_IO_KICAD_SEXPR_LIB_CACHE::saveDcmInfoAsFields(), SCH_LABEL_BASE::SCH_LABEL_BASE(), CVPCB_MAINFRAME::SendComponentSelectionToSch(), SCH_EDIT_FRAME::SendSelectItemsToPcb(), FIELDS_GRID_TABLE::SetValue(), LIB_TABLE_GRID::SetValue(), PGPROPERTY_STRING::StringToValue(), EASYEDAPRO::ToKiCadLibID(), DIALOG_LABEL_PROPERTIES::TransferDataFromWindow(), DIALOG_LIB_SYMBOL_PROPERTIES::TransferDataFromWindow(), DIALOG_SHEET_PIN_PROPERTIES::TransferDataFromWindow(), DIALOG_TEXTBOX_PROPERTIES::TransferDataFromWindow(), DIALOG_FIELD_PROPERTIES::TransferDataToWindow(), DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR::TransferDataToWindow(), DIALOG_EXCHANGE_FOOTPRINTS::ViewAndSelectFootprint(), and FOOTPRINT_LIST_IMPL::WriteCacheToFile().
std::string FormatDouble2Str | ( | double | aValue | ) |
Print a float number without using scientific notation and no trailing 0 This function is intended in uses to write to file, it ignores locale.
We cannot always just use the g or the f format to print a fp number this helper function uses the f format when needed, or g when f is not well working and then removes trailing 0
Definition at line 1370 of file string_utils.cpp.
Referenced by BOOST_AUTO_TEST_CASE(), GBR_TO_PCB_EXPORTER::export_non_copper_item(), GBR_TO_PCB_EXPORTER::export_via(), PCB_IO_KICAD_SEXPR::format(), DS_DATA_MODEL_IO::format(), DS_DATA_MODEL_IO::Format(), EDA_TEXT::Format(), STROKE_PARAMS::Format(), BOARD_STACKUP::FormatBoardStackup(), DS_DATA_MODEL_IO::formatCoordinate(), formatFill(), DS_DATA_MODEL_IO::formatRepeatParameters(), PCB_IO_KICAD_SEXPR::formatSetup(), PCB_IO_KICAD_SEXPR::formatTeardropParameters(), SCH_IO_KICAD_SEXPR::saveJunction(), GBR_TO_PCB_EXPORTER::writeCopperLineItem(), GBR_TO_PCB_EXPORTER::writePcbFilledCircle(), GBR_TO_PCB_EXPORTER::writePcbPolygon(), and GBR_TO_PCB_EXPORTER::writePcbZoneItem().
wxString From_UTF8 | ( | const char * | cstring | ) |
Definition at line 1430 of file string_utils.cpp.
Referenced by DXF_IMPORT_PLUGIN::addLinetype(), SCH_REFERENCE::Annotate(), SCH_EDITOR_CONTROL::AssignFootprints(), MARKUP::NODE::asWxString(), CVPCB_MAINFRAME::buildEquivalenceList(), PLACEFILE_GERBER_WRITER::CreatePlaceFile(), DIALOG_EXCHANGE_FOOTPRINTS::DIALOG_EXCHANGE_FOOTPRINTS(), DIALOG_PLUGIN_OPTIONS::DIALOG_PLUGIN_OPTIONS(), CLI::FP_EXPORT_SVG_COMMAND::doPerform(), CLI::JOBSET_RUN_COMMAND::doPerform(), CLI::PCB_DRC_COMMAND::doPerform(), CLI::PCB_EXPORT_3D_COMMAND::doPerform(), CLI::PCB_EXPORT_BASE_COMMAND::doPerform(), CLI::PCB_EXPORT_DRILL_COMMAND::doPerform(), CLI::PCB_EXPORT_DXF_COMMAND::doPerform(), CLI::PCB_EXPORT_GERBERS_COMMAND::doPerform(), CLI::PCB_EXPORT_IPC2581_COMMAND::doPerform(), CLI::PCB_EXPORT_PDF_COMMAND::doPerform(), CLI::PCB_EXPORT_POS_COMMAND::doPerform(), CLI::PCB_EXPORT_SVG_COMMAND::doPerform(), CLI::SCH_ERC_COMMAND::doPerform(), CLI::SCH_EXPORT_BOM_COMMAND::doPerform(), CLI::SCH_EXPORT_NETLIST_COMMAND::doPerform(), CLI::SCH_EXPORT_PLOT_COMMAND::doPerform(), CLI::SYM_EXPORT_SVG_COMMAND::doPerform(), CLI::VERSION_COMMAND::doPerform(), EXCELLON_IMAGE::Execute_EXCELLON_G_Command(), SCH_EDIT_FRAME::ExecuteRemoteCommand(), PCB_EDIT_FRAME::ExecuteRemoteCommand(), PCB_EDIT_FRAME::Export_IDF3(), EXPORTER_PCB_VRML::ExportVRML_File(), PCB_IO_GEDA::FootprintEnumerate(), PCB_IO_KICAD_LEGACY::FootprintEnumerate(), GERBER_JOBFILE_READER::formatStringFromJSON(), DSN::SPECCTRA_DB::FromSESSION(), GENDRILL_WRITER_BASE::genDrillMapFile(), fontconfig::FONTCONFIG::getFamilyStringByLang(), SEXPR::PARSER::GetFileContents(), DISPLAY_FOOTPRINTS_FRAME::GetFootprint(), GetIllegalFileNameWxChars(), BACK_ANNOTATE::getPcbModulesFromString(), getToVector3(), NETLIST_READER::GuessNetlistFileType(), PGM_BASE::HandleException(), SCH_EDITOR_CONTROL::IncrementAnnotations(), EDA_3D_CANVAS::initializeOpenGL(), fontconfig::FONTCONFIG::ListFonts(), CMP_READER::Load(), LEGACY_NETLIST_READER::loadComponent(), PCB_IO_KICAD_LEGACY::loadDIMENSION(), SCH_IO_KICAD_LEGACY_LIB_CACHE::loadDocs(), PCB_IO_KICAD_LEGACY::loadFOOTPRINT(), LEGACY_NETLIST_READER::loadFootprintFilters(), LEGACY_NETLIST_READER::loadNet(), PCB_IO_KICAD_LEGACY::loadNETCLASS(), PCB_IO_KICAD_LEGACY::loadNETINFO_ITEM(), PCB_IO_KICAD_LEGACY::loadPAD(), PCB_IO_KICAD_LEGACY::loadPCB_TEXT(), PCB_IO_KICAD_LEGACY::loadSETUP(), PCB_IO_KICAD_LEGACY::loadSHEET(), SCH_IO_KICAD_LEGACY::loadText(), main(), DSN::SPECCTRA_DB::makeTRACK(), DSN::SPECCTRA_DB::makeVIA(), EDA_3D_MODEL_VIEWER::ogl_initialize(), APP_TEST::OnInit(), APP_TEST::OnRun(), PCB_PLOT_PARAMS_PARSER::Parse(), TEMPLATE_FIELDNAME::Parse(), X2_ATTRIBUTE::ParseAttribCmd(), KICAD_NETLIST_PARSER::parseComponent(), PCB_IO_KICAD_SEXPR_PARSER::parseFOOTPRINT_unchecked(), PCB_IO_KICAD_SEXPR_PARSER::parseLayer(), KICAD_NETLIST_PARSER::parseLibPartList(), KICAD_NETLIST_PARSER::parseNet(), parseQuotedString(), PCB_CALCULATOR_DATAFILE_PARSER::ParseRegulatorDescr(), PCB_IO_KICAD_SEXPR_PARSER::parseRenderCache(), parseUnquotedString(), pcbnewRunPythonMethodWithReturnedString(), CLI::COMMAND::Perform(), CLI::COMMAND::PrintHelp(), printHelp(), SCH_EDITOR_CONTROL::processCmpToFootprintLinkFile(), Py2wxString(), GERBER_FILE_IMAGE::ReadApertureMacro(), ReadDelimitedText(), CVPCB_MAINFRAME::readNetListAndFpFiles(), PCB_EDIT_FRAME::RecreateBOMFileFromBoard(), CVPCB_MAINFRAME::refreshAfterSymbolSearch(), REPORTER::Report(), PANEL_TEMPLATE_FIELDNAMES::TransferDataFromWindow(), DIALOG_PLUGIN_OPTIONS::TransferDataToWindow(), FOOTPRINT_EDIT_FRAME::UpdateTitle(), and DS_DATA_MODEL_STRINGIO::~DS_DATA_MODEL_STRINGIO().
wxString From_UTF8 | ( | const std::string & | aString | ) |
Convert an expected UTF8 encoded std::string to a wxString.
If fails, try to convert using current locale If still fails, return the initial string (can be already a converted string)
Definition at line 1447 of file string_utils.cpp.
wxString GetIllegalFileNameWxChars | ( | ) |
Definition at line 1259 of file string_utils.cpp.
References From_UTF8(), and illegalFileNameChars.
Referenced by ReplaceIllegalFileNameChars().
wxString GetISO8601CurrentDateTime | ( | ) |
Definition at line 786 of file string_utils.cpp.
Referenced by GENDRILL_WRITER_BASE::GenDrillReportFile(), PLACE_FILE_EXPORTER::GenPositionData(), PLACE_FILE_EXPORTER::GenReportData(), ERC_REPORT::GetTextReport(), NETLIST_EXPORTER_XML::makeDesignHeader(), RecreateCmpFile(), EXCELLON_WRITER::writeEXCELLONHeader(), STEP_PCB_MODEL::WriteGLTF(), PCB_CALCULATOR_DATAFILE::WriteHeader(), ERC_REPORT::WriteJsonReport(), DRC_REPORT::WriteJsonReport(), NETLIST_EXPORTER_ALLEGRO::WriteNetlist(), NETLIST_EXPORTER_CADSTAR::WriteNetlist(), NETLIST_EXPORTER_ORCADPCB2::WriteNetlist(), STEP_PCB_MODEL::WritePLY(), and DRC_REPORT::WriteTextReport().
char * GetLine | ( | FILE * | aFile, |
char * | Line, | ||
int * | LineNum = nullptr , |
||
int | SizeLine = 255 |
||
) |
Read one line line from aFile.
Definition at line 770 of file string_utils.cpp.
Referenced by CVPCB_MAINFRAME::buildEquivalenceList().
int GetTrailingInt | ( | const wxString & | aStr | ) |
Gets the trailing int, if any, from a string.
aStr | the string to check. |
Definition at line 1235 of file string_utils.cpp.
Referenced by BOOST_AUTO_TEST_CASE(), compareFootprintsbyRef(), FOOTPRINT::GetNextPadNumber(), and FOOTPRINT::IncrementReference().
bool IsFullFileNameValid | ( | const wxString & | aFullFilename | ) |
Checks if a full filename is valid, i.e.
does not contains illegal chars path separators are allowed
Definition at line 53 of file string_utils.cpp.
Referenced by DIALOG_SHEET_PROPERTIES::TransferDataFromWindow().
wxString LinkifyHTML | ( | wxString | aStr | ) |
Definition at line 648 of file string_utils.cpp.
Referenced by FOOTPRINT_INFO_GENERATOR::GenerateHtml(), DESIGN_BLOCK_TREE_MODEL_ADAPTER::GenerateInfo(), and FOOTPRINT_INFO_GENERATOR::SetHtmlDesc().
bool NoPrintableChars | ( | const wxString & | aString | ) |
Return true if the string is empty or contains only whitespace.
Definition at line 659 of file string_utils.cpp.
Referenced by SCH_DRAWING_TOOLS::createNewText(), DRAWING_TOOL::PlaceText(), and SYMBOL_EDITOR_DRAWING_TOOLS::TwoClickPlace().
wxString NormalizeFileUri | ( | const wxString & | aFileUri | ) |
Normalize file path aFileUri to URI convention.
Unfortunately none of the wxWidgets objects results in acceptable file URIs which breaks PDF plotting URI links. This is an attempt to normalize Windows local file paths to a URI that PDF readers that can run JavaScript can handle.
aFileUri | is the string to be normalized. |
Definition at line 1464 of file string_utils.cpp.
Referenced by PDF_PLOTTER::EndPlot().
int PrintableCharCount | ( | const wxString & | aString | ) |
Return the number of printable (ie: non-formatting) chars.
Used to approximate rendered text size when speed is more important than accuracy.
Definition at line 671 of file string_utils.cpp.
Referenced by KIGFX::PCB_PAINTER::draw(), and BRDITEMS_PLOTTER::PlotPadNumber().
int ReadDelimitedText | ( | char * | aDest, |
const char * | aSource, | ||
int | aDestSize | ||
) |
Copy bytes from aSource delimited string segment to aDest buffer.
The extracted string will be null terminated even if truncation is necessary because aDestSize was not large enough.
aDest | is the destination byte buffer. |
aSource | is the source bytes as a C string. |
aDestSize | is the size of the destination byte buffer. |
Definition at line 455 of file string_utils.cpp.
int ReadDelimitedText | ( | wxString * | aDest, |
const char * | aSource | ||
) |
Copy bytes from aSource delimited string segment to aDest wxString.
aDest | is the destination wxString. |
aSource | is the source C string holding utf8 encoded bytes. |
Definition at line 410 of file string_utils.cpp.
References From_UTF8().
Referenced by PCB_IO_KICAD_LEGACY::load3D(), PCB_IO_KICAD_LEGACY::loadDIMENSION(), PCB_IO_KICAD_LEGACY::loadMODULE_TEXT(), PCB_IO_KICAD_LEGACY::loadNETCLASS(), PCB_IO_KICAD_LEGACY::loadNETINFO_ITEM(), PCB_IO_KICAD_LEGACY::loadPAD(), PCB_IO_KICAD_LEGACY::loadPCB_TEXT(), PCB_IO_KICAD_LEGACY::loadSHEET(), and PCB_IO_KICAD_LEGACY::loadZONE_CONTAINER().
wxString RemoveHTMLTags | ( | const wxString & | aInput | ) |
Removes HTML tags from a string.
Do not use for filtering potentially malicious inputs and rendering as HTML without escaping.
Definition at line 639 of file string_utils.cpp.
Referenced by convertDescription().
bool ReplaceIllegalFileNameChars | ( | std::string * | aName, |
int | aReplaceChar = 0 |
||
) |
Checks aName for illegal file name characters.
The Windows (DOS) file system forbidden characters already include the forbidden file name characters for both Posix and OSX systems. The characters \/?*|"<> are illegal and are replaced with xx where xx the hexadecimal equivalent of the replaced character. This replacement may not be as elegant as using an underscore ('_') or hyphen ('-') but it guarantees that there will be no naming conflicts when fixing footprint library names. however, if aReplaceChar is given, it will replace the illegal chars
aName | is a point to a std::string object containing the footprint name to verify. |
aReplaceChar | (if not 0) is the replacement char. |
Definition at line 1265 of file string_utils.cpp.
References illegalFileNameChars, and StrPrintf().
Referenced by EDEVICE::EDEVICE(), EELEMENT::EELEMENT(), PCB_IO_KICAD_SEXPR::FootprintSave(), PCB_IO_KICAD_LEGACY::loadAllSections(), FABMASTER::loadFootprints(), PCB_IO_EAGLE::loadLibrary(), LP_CACHE::LoadModules(), SCH_IO_EAGLE::loadSheet(), CADSTAR_SCH_ARCHIVE_LOADER::loadSheetAndChildSheets(), and CADSTAR_SCH_ARCHIVE_LOADER::loadSheets().
bool ReplaceIllegalFileNameChars | ( | wxString & | aName, |
int | aReplaceChar | ||
) |
Definition at line 1295 of file string_utils.cpp.
References GetIllegalFileNameWxChars().
int SplitString | ( | const wxString & | strToSplit, |
wxString * | strBeginning, | ||
wxString * | strDigits, | ||
wxString * | strEnd | ||
) |
Break a string into three parts: he alphabetic preamble, the numeric part, and any alphabetic ending.
For example C10A is split to C 10 A
Definition at line 1174 of file string_utils.cpp.
Referenced by ValueStringCompare().
void StripTrailingZeros | ( | wxString & | aStringValue, |
unsigned | aTrailingZeroAllowed = 1 |
||
) |
Remove trailing zeros from a string containing a converted float number.
The trailing zeros are removed if the mantissa has more than aTrailingZeroAllowed digits and some trailing zeros.
Definition at line 1348 of file string_utils.cpp.
int StrNumCmp | ( | const wxString & | aString1, |
const wxString & | aString2, | ||
bool | aIgnoreCase = false |
||
) |
Compare two strings with alphanumerical content.
This function is equivalent to strncmp() or strncasecmp() if aIgnoreCase is true except that strings containing numbers are compared by their integer value not by their ASCII code. In other words U10 would be greater than U2.
aString1 | A wxString reference to the reference string. |
aString2 | A wxString reference to the comparison string. |
aIgnoreCase | Use true to make the comparison case insensitive. |
Definition at line 800 of file string_utils.cpp.
Referenced by REGULATOR_LIST::Add(), BOOST_AUTO_TEST_CASE(), CVPCB_MAINFRAME::BuildLibrariesList(), ChangeArrayCompare(), FIELDS_EDITOR_GRID_DATA_MODEL::cmp(), SCH_PIN_TABLE_DATA_MODEL::compare(), PIN_TABLE_DATA_MODEL::compare(), NETLIST_EXPORTER_ALLEGRO::CompareLibPin(), SCH_SHEET::ComparePageNum(), NETLIST_EXPORTER_ALLEGRO::extractComponentsInfo(), DESIGN_BLOCK_TREE_MODEL_ADAPTER::getDesignBlocks(), FP_TREE_MODEL_ADAPTER::getFootprints(), NETLIST_EXPORTER_XML::makeSymbols(), myCompareFunction(), DIALOG_SIM_MODEL< T >::newParamProperty(), FOOTPRINT::cmp_pads::operator()(), operator<(), SCH_REFERENCE_LIST::sortByReferenceOnly(), sortFPlist(), and sortPinsByNumber().
char * StrPurge | ( | char * | text | ) |
Remove leading and training spaces, tabs and end of line chars in text.
Definition at line 751 of file string_utils.cpp.
References text.
Referenced by PCB_IO_KICAD_LEGACY::loadAllSections(), EXCELLON_IMAGE::LoadFile(), PCB_IO_KICAD_LEGACY::loadFOOTPRINT(), GERBER_FILE_IMAGE::LoadGerberFile(), LP_CACHE::LoadModules(), LEGACY_NETLIST_READER::LoadNetlist(), PCB_IO_KICAD_LEGACY::loadPAD(), EXCELLON_IMAGE::TestFileIsExcellon(), and GERBER_FILE_IMAGE::TestFileIsRS274().
wxString TitleCaps | ( | const wxString & | aString | ) |
Capitalize the first letter in each word.
Definition at line 389 of file string_utils.cpp.
References wxStringSplit().
Referenced by SYMBOL_EDITOR_EDIT_TOOL::editFieldProperties(), and SCH_EDIT_TOOL::editFieldText().
std::string UIDouble2Str | ( | double | aValue | ) |
Print a float number without using scientific notation and no trailing 0 We want to avoid scientific notation in S-expr files (not easy to read) for floating numbers.
We cannot always just use the g or the f format to print a fp number this helper function uses the f format when needed, or g when f is not well working and then removes trailing 0
Definition at line 1400 of file string_utils.cpp.
Referenced by BOOST_AUTO_TEST_CASE(), DIELECTRIC_SUBSTRATE::FormatEpsilonR(), BOARD_STACKUP_ITEM::FormatEpsilonR(), DIELECTRIC_SUBSTRATE::FormatLossTangent(), BOARD_STACKUP_ITEM::FormatLossTangent(), PANEL_SETUP_BOARD_STACKUP::lazyBuildRowUI(), NUMERIC_EVALUATOR::parseSetResult(), and PANEL_SETUP_BOARD_STACKUP::synchronizeWithBoard().
wxString UnescapeHTML | ( | const wxString & | aString | ) |
Return a new wxString unescaped from HTML format.
Definition at line 571 of file string_utils.cpp.
References get_opt().
Referenced by BOOST_AUTO_TEST_CASE(), SCH_IO_EAGLE::loadLibrary(), PCB_IO_EAGLE::makeFootprint(), SCH_EASYEDAPRO_PARSER::ParseSchematic(), SCH_EASYEDA_PARSER::ParseSchematic(), SCH_EASYEDAPRO_PARSER::ParseSymbol(), SCH_EASYEDA_PARSER::ParseSymbolShapes(), and PCB_IO_EASYEDA_PARSER::ParseToBoardItemContainer().
wxString UnescapeString | ( | const wxString & | aSource | ) |
Definition at line 305 of file string_utils.cpp.
References UnescapeString().
Referenced by NET_SELECTOR_COMBOPOPUP::Accept(), DIALOG_EDIT_SYMBOLS_LIBID::AddRowToGrid(), NETLIST_EXPORTER_XML::addSymbolFields(), SCH_CONNECTION::AppendInfoToMsgPanel(), APPEARANCE_CONTROLS::buildNetClassMenu(), EDA_TEXT::cacheShownText(), SCH_EDIT_TOOL::ChangeTextType(), SCH_CONNECTION::ConfigureFromLabel(), DIALOG_CHANGE_SYMBOLS::DIALOG_CHANGE_SYMBOLS(), DIALOG_LIB_NEW_SYMBOL::DIALOG_LIB_NEW_SYMBOL(), DIALOG_UPDATE_SYMBOL_FIELDS::DIALOG_UPDATE_SYMBOL_FIELDS(), KIGFX::PCB_PAINTER::draw(), GRID_CELL_ESCAPED_TEXT_RENDERER::Draw(), EDA_TEXT::EDA_TEXT(), SYMBOL_EDITOR_CONTROL::EditLibrarySymbol(), KIUI::EllipsizeMenuText(), KIUI::EllipsizeStatusText(), CONNECTION_GRAPH::ercCheckBusToBusEntryConflicts(), CONNECTION_GRAPH::ercCheckHierSheets(), SCH_EDIT_FRAME::ExecuteRemoteCommand(), findItemsFromSyncSelection(), PCB_EDIT_FRAME::FindItemsFromSyncSelection(), PCB_NET_INSPECTOR_PANEL::formatNetName(), FOOTPRINT_INFO_GENERATOR::GenerateHtml(), DESIGN_BLOCK_TREE_MODEL_ADAPTER::GenerateInfo(), NETLIST_EXPORTER_SPICE::GenerateItemPinNetName(), RESCUE_SYMBOL_LIB_TABLE_CANDIDATE::GetActionDescription(), GRID_CELL_ESCAPED_TEXT_RENDERER::GetBestSize(), SCH_PIN::getItemDescription(), SCH_FIELD::GetItemDescription(), SCH_DIRECTIVE_LABEL::GetItemDescription(), SCH_PIN::GetItemDescription(), NET_SELECTOR_COMBOPOPUP::getListContent(), SCH_FIELD::GetMsgPanelInfo(), SCH_JUNCTION::GetMsgPanelInfo(), SCH_LABEL_BASE::GetMsgPanelInfo(), SCH_LINE::GetMsgPanelInfo(), SCH_PIN::GetMsgPanelInfo(), SCH_SYMBOL::GetMsgPanelInfo(), GERBER_DRAW_ITEM::GetMsgPanelInfo(), FOOTPRINT::GetMsgPanelInfo(), PCB_TUNING_PATTERN::GetMsgPanelInfo(), NETINFO_ITEM::GetMsgPanelInfo(), PAD::GetMsgPanelInfo(), ZONE::GetMsgPanelInfo(), PCB_TRACK::GetMsgPanelInfoBase_Common(), BOARD_CONNECTED_ITEM::GetNetnameMsg(), GetNetNavigatorItemText(), FOOTPRINT_SEARCH_HANDLER::getResultCell(), ZONE_SEARCH_HANDLER::getResultCell(), TEXT_SEARCH_HANDLER::getResultCell(), NETS_SEARCH_HANDLER::getResultCell(), RATSNEST_SEARCH_HANDLER::getResultCell(), LIB_BUFFER::GetSymbolNames(), DIALOG_CHANGE_SYMBOLS::getSymbolReferences(), DIALOG_COPPER_ZONE::getUnescapedNetName(), FIELDS_GRID_TABLE::GetValue(), LIB_TABLE_GRID::GetValue(), LIB_TREE_MODEL_ADAPTER::GetValue(), SYMBOL_TREE_SYNCHRONIZING_ADAPTER::GetValue(), FP_TREE_SYNCHRONIZING_ADAPTER::GetValue(), GERBVIEW_CONTROL::HighlightControl(), SCH_CONNECTION::IsBusLabel(), DIALOG_CHANGE_SYMBOLS::isMatch(), SYMBOL_EDIT_FRAME::KiwayMailIn(), DIALOG_CHANGE_SYMBOLS::launchMatchIdSymbolBrowser(), DIALOG_CHANGE_SYMBOLS::launchNewIdSymbolBrowser(), PCB_NET_INSPECTOR_PANEL::LIST_ITEM::LIST_ITEM(), SCH_IO_EAGLE::loadInstance(), SIMULATOR_FRAME_UI::loadLegacyWorkbook(), SCH_IO_KICAD_LEGACY_LIB_CACHE::LoadPart(), NETLIST_EXPORTER_XML::makeSymbols(), SCH_FIELD::Matches(), SCH_LABEL_BASE::Matches(), PCB_TEXT::Matches(), PCB_TEXTBOX::Matches(), SCH_CONNECTION::MightBeBusLabel(), PCB_NET_INSPECTOR_PANEL::netFilterMatches(), PCB_NET_INSPECTOR_PANEL::onAddGroup(), TEXT_BUTTON_SYMBOL_CHOOSER::OnButtonClick(), DIALOG_EDIT_SYMBOLS_LIBID::onClickOrphansButton(), APPEARANCE_CONTROLS::OnNetGridRightClick(), PCB_NET_INSPECTOR_PANEL::onRenameSelectedNet(), SCH_IO_KICAD_SEXPR_PARSER::parseProperty(), BOARD_EDITOR_CONTROL::PlaceFootprint(), BRDITEMS_PLOTTER::PlotPadNumber(), DIALOG_CHANGE_SYMBOLS::processSymbols(), FOOTPRINT_LIST_IMPL::ReadCacheFromFile(), NETINFO_LIST::RebuildDisplayNetnames(), SIMULATOR_FRAME_UI::rebuildSignalsList(), SYMBOL_VIEWER_FRAME::ReCreateLibList(), SYMBOL_VIEWER_FRAME::ReCreateSymbolList(), SCH_EDIT_FRAME::RefreshNetNavigator(), FOOTPRINT_EDIT_FRAME::ReloadFootprint(), LIB_BUFFER::SaveBuffer(), SYMBOL_EDIT_FRAME::SetCurSymbol(), FOOTPRINT_INFO_GENERATOR::SetHtmlAliasOf(), FOOTPRINT_INFO_GENERATOR::SetHtmlDesc(), FOOTPRINT_INFO_GENERATOR::SetHtmlName(), DIALOG_EDIT_SYMBOLS_LIBID::setLibIdByBrowser(), DIALOG_LIB_NEW_SYMBOL::SetName(), NETINFO_ITEM::SetNetname(), SYMBOL_VIEWER_FRAME::SetSelectedLibrary(), NET_SELECTOR::SetSelectedNet(), NET_SELECTOR::SetSelectedNetcode(), SYMBOL_VIEWER_FRAME::SetSelectedSymbol(), FIELDS_GRID_TABLE::SetValue(), PCB_EDIT_FRAME::ShowFindDialog(), SCH_EDIT_FRAME::ShowFindReplaceDialog(), SCH_EDITOR_CONTROL::SimProbe(), ERC_TESTER::TestLibSymbolIssues(), DIALOG_EDIT_SYMBOLS_LIBID::TransferDataFromWindow(), DIALOG_FIELD_PROPERTIES::TransferDataFromWindow(), DIALOG_LIB_SYMBOL_PROPERTIES::TransferDataFromWindow(), DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR::TransferDataFromWindow(), DIALOG_LABEL_PROPERTIES::TransferDataToWindow(), DIALOG_LIB_SYMBOL_PROPERTIES::TransferDataToWindow(), DIALOG_SHEET_PIN_PROPERTIES::TransferDataToWindow(), DIALOG_SYMBOL_PROPERTIES::TransferDataToWindow(), DIALOG_TEXTBOX_PROPERTIES::TransferDataToWindow(), UnescapeString(), HIGHLIGHT_MENU::update(), SYMBOL_EDIT_FRAME::UpdateAfterSymbolProperties(), BOARD_NETLIST_UPDATER::updateComponentPadConnections(), BOARD_NETLIST_UPDATER::updateCopperZoneNets(), SCH_SYMBOL::UpdateFields(), PCB_PROPERTIES_PANEL::updateLists(), ROUTER_TOOL::UpdateMessagePanel(), PCB_CONTROL::UpdateMessagePanel(), SCH_EDIT_FRAME::UpdateNetHighlightStatus(), GERBVIEW_FRAME::updateNetnameListSelectBox(), SCH_EDITOR_CONTROL::updatePastedSymbol(), SYMBOL_VIEWER_FRAME::updatePreviewSymbol(), SCH_SCREEN::UpdateSymbolLinks(), SYMBOL_EDIT_FRAME::UpdateSymbolMsgPanelInfo(), SYMBOL_EDIT_FRAME::UpdateTitle(), ValueStringCompare(), PGPROPERTY_STRING::ValueToString(), and DIALOG_GLOBAL_EDIT_TEXT_AND_GRAPHICS::visitItem().
int ValueStringCompare | ( | const wxString & | strFWord, |
const wxString & | strSWord | ||
) |
Compare strings like the strcmp function but handle numbers and modifiers within the string text correctly for sorting.
eg. 1mF > 55uF
Definition at line 1117 of file string_utils.cpp.
References ApplyModifier(), convertSeparators(), SplitString(), and UnescapeString().
Referenced by FIELDS_EDITOR_GRID_DATA_MODEL::cmp(), and PCB_NET_INSPECTOR_PANEL::DATA_MODEL::Compare().
bool WildCompareString | ( | const wxString & | pattern, |
const wxString & | string_to_tst, | ||
bool | case_sensitive = true |
||
) |
Compare a string against wild card (* and ?) pattern using the usual rules.
Definition at line 882 of file string_utils.cpp.
Referenced by FROM_TO_CACHE::cacheFromToPaths(), LIBEVAL::VALUE::EqualTo(), DIALOG_EXCHANGE_FOOTPRINTS::isMatch(), DIALOG_CHANGE_SYMBOLS::isMatch(), FIELDS_EDITOR_GRID_DATA_MODEL::RebuildRows(), and DIALOG_GLOBAL_EDIT_TEXT_AND_GRAPHICS::visitItem().
void wxStringSplit | ( | const wxString & | aText, |
wxArrayString & | aStrings, | ||
wxChar | aSplitter | ||
) |
Split aString to a string list separated at aSplitter.
aText | is the text to split. |
aStrings | will contain the split lines. |
aSplitter | is the 'split' character. |
Definition at line 1326 of file string_utils.cpp.
Referenced by KIFONT::FONT::getLinePositions(), EDA_TEXT::GetTextBox(), FEATURES_MANAGER::InitFeatureList(), fontconfig::FONTCONFIG::isLanguageMatch(), KIFONT::FONT::LinebreakText(), HTML_MESSAGE_BOX::ListSet(), CADSTAR_SCH_ARCHIVE_LOADER::loadSymdef(), SIM_MODEL::MigrateSimModel(), PANEL_SETUP_RULES::OnErrorLinkClicked(), pcbnewGetWizardsBackTrace(), CLI::COMMAND::Perform(), SCH_TEXT::Plot(), SCH_TEXTBOX::Plot(), BRDITEMS_PLOTTER::PlotText(), EDA_TEXT::Print(), and TitleCaps().
|
static |
Illegal file name characters used to ensure file names will be valid on all supported platforms.
This is the list of illegal file name characters for Windows which includes the illegal file name characters for Linux and OSX.
Definition at line 49 of file string_utils.cpp.
Referenced by GetIllegalFileNameWxChars(), and ReplaceIllegalFileNameChars().