22#ifndef CONFIGURATION_H
23#define CONFIGURATION_H
28#include <wx/display.h>
29#include <wx/fontenum.h>
30#include <wx/hashmap.h>
41#include <unordered_map>
49#include <wx/wupdlock.h>
52#define MC_LINE_SKIP Scale_Px(2)
53#define MC_TEXT_PADDING Scale_Px(1)
55#define PAREN_OPEN_TOP_UNICODE "\u239b"
56#define PAREN_OPEN_EXTEND_UNICODE "\u239c"
57#define PAREN_OPEN_BOTTOM_UNICODE "\u239d"
58#define PAREN_CLOSE_TOP_UNICODE "\u239e"
59#define PAREN_CLOSE_EXTEND_UNICODE "\u239f"
60#define PAREN_CLOSE_BOTTOM_UNICODE "\u23a0"
61#define SUM_SIGN "\u2211"
62#define PROD_SIGN "\u220F"
67#define MC_HCARET_WIDTH 25
69#define MC_EXP_INDENT static_cast<wxCoord>(Scale_Px(2))
70static constexpr AFontSize MC_MIN_SIZE{ 6.0f };
71static constexpr AFontSize MC_MAX_SIZE{ 48.0f };
74#define LABELWIDTH_MIN 3
75#define LABELWIDTH_MAX 10
100 std::atomic<long> manualAnchorsFromBuiltin{0};
101 std::atomic<long> manualAnchorsFromCache{0};
102 std::atomic<long> manualAnchorsCompiled{0};
103 std::atomic<long> maximaProcessesSpawned{0};
104 std::atomic<long> fontCacheHits{0};
105 std::atomic<long> fontCacheMisses{0};
106 std::atomic<long> recalculationNeeded_FontInvalid{0};
107 std::atomic<long> recalculationNeeded_SizeInvalid{0};
108 std::atomic<long> recalculationNeeded_FontMismatch{0};
109 std::atomic<long> recalculationNeeded_ConfigChanged{0};
110 std::atomic<long> recalculationNeeded_CellsAppended{0};
111 std::atomic<long> recalculationNeeded_EditorDirty{0};
112 std::atomic<long> cellsConvertedToLinear{0};
113 std::atomic<long> cellsConvertedTo2D{0};
118 enum maximaHelpFormat{
130 html_export_invalidChoice
133 enum showLabels : int8_t
135 labels_automatic = 0,
136 labels_prefer_user = 1,
139 labels_invalidSelection
162 typedef std::unordered_map <wxString, bool, wxStringHash> StringBoolHash;
167 const wxEnvVariableHashMap& MaximaEnvVars()
const {
return m_maximaEnvVars;}
171 void SetMaximaEnvVar(
const wxString &name,
const wxString &value){m_maximaEnvVars[name] = value;}
204 void UnsetContext() {m_renderContext.
SetRecalcDC(NULL);}
225 using EscCodeContainer = std::unordered_map<wxString, wxString, wxStringHash>;
226 using EscCodeIterator = EscCodeContainer::const_iterator;
229 static const wxString &
GetEscCode(
const wxString &key);
254 return GetZoomFactor() * m_styleStore[TS_MATH].GetFontSize() / 2;
265 {
return m_hideBrackets; }
272 {
return m_printScale; }
277 void PrintMargin_Top(
double margin){m_printMargin_Top = margin;}
278 void PrintMargin_Bot(
double margin){m_printMargin_Bot = margin;}
279 void PrintMargin_Left(
double margin){m_printMargin_Left = margin;}
280 void PrintMargin_Right(
double margin){m_printMargin_Right = margin;}
281 double PrintMargin_Top()
const {
return m_printMargin_Top;}
282 double PrintMargin_Bot()
const {
return m_printMargin_Bot;}
283 double PrintMargin_Left()
const {
return m_printMargin_Left;}
284 double PrintMargin_Right()
const {
return m_printMargin_Right;}
291 if(m_zoomFactor != newzoom)
293 m_zoomFactor = newzoom;
305 {
return m_zoomFactor; }
311 void SetRecalcDC(wxDC *dc)
314 wxString GetFontName(
TextStyle ts = TS_CODE_DEFAULT)
const;
318 wxString GetSymbolFontName()
const;
323 return wxString(wxS(
"°,\\'\"()[]-{}^+*/&§?:;=#<>$"));
326 wxFontWeight IsBold(
long st)
const;
328 wxFontStyle IsItalic(
long st)
const;
330 bool IsUnderlined(
long st)
const {
return m_styleStore[st].IsUnderlined();}
337 {
return m_labelWidth * 14; }
341 {
return m_labelWidth; }
345 if(m_labelWidth != labelWidth)
347 m_labelWidth = labelWidth;
365 int AutosaveMinutes()
const {
return m_autoSaveMinutes;}
366 void AutosaveMinutes(
int minutes){m_autoSaveMinutes = minutes;}
408 if(m_indent != indent)
413 bool IncrementalSearch()
const {
return m_incrementalSearch;}
416 void IncrementalSearch(
bool incrementalSearch) { m_incrementalSearch = incrementalSearch; }
418 int MaxLayoutTime()
const {
return m_maxLayoutTime; }
419 void MaxLayoutTime(
int time) { m_maxLayoutTime = time; }
421 enum class LayoutStrategy {
422 layout2DWheneverPossible = 0,
426 LayoutStrategy GetLayoutStrategy()
const {
return m_layoutStrategy; }
427 void SetLayoutStrategy(LayoutStrategy s) { m_layoutStrategy = s; }
429 void SetLayoutDeadline(
int seconds) {
432 void ClearLayoutCancelled() {
435 bool IsLayoutCancelled()
const {
458 return m_lineWidth_em;
463 bool AutoSaveAsTempFile()
const {
return m_autoSaveAsTempFile;}
464 void AutoSaveAsTempFile(
bool asTempFile){m_autoSaveAsTempFile = asTempFile;}
468 { m_lineWidth_em = width; }
475 bool SaveUntitled()
const {
return m_saveUntitled;}
476 void SaveUntitled(
bool save) {m_saveUntitled = save;}
478 bool CursorJump()
const {
return m_cursorJump;}
479 void CursorJump(
bool save){m_cursorJump = save;}
481 bool NumpadEnterEvaluates()
const {
return m_numpadEnterEvaluates;}
482 void NumpadEnterEvaluates(
bool eval){m_numpadEnterEvaluates = eval;}
484 bool SaveImgFileName()
const {
return m_saveImgFileName;}
485 void SaveImgFileName(
bool save) { m_saveImgFileName = save;}
489 {
return m_autoWrap > 0; }
506 {
return m_autoIndent; }
508 void SetAutoIndent(
bool autoIndent){m_autoIndent = autoIndent;}
513 if(m_indentMaths != indent)
515 m_indentMaths = indent;}
518 static const wxString &GetStyleName(
TextStyle textStyle);
541 static const std::vector<std::pair<TextStyle, wxString>> &
StyleConfigKeys();
568 void MakeStylesConsistent();
569 void Outdated(
bool outdated)
570 { m_outdated = outdated; }
574 {
return m_keepPercent; }
579 if(m_keepPercent != keepPercent)
581 m_keepPercent = keepPercent;
584 wxString GetTeXCMRI()
const
585 {
return m_fontCMRI; }
587 wxString GetTeXCMSY()
const
588 {
return m_fontCMSY; }
590 wxString GetTeXCMEX()
const
591 {
return m_fontCMEX; }
593 wxString GetTeXCMMI()
const
594 {
return m_fontCMMI; }
596 wxString GetTeXCMTI()
const
597 {
return m_fontCMTI; }
599 bool ShowCodeCells()
const
600 {
return m_showCodeCells; }
602 void ShowCodeCells(
bool show);
619 {
return m_renderContext.
Printing(); }
625 bool UsePngCairo()
const {
return m_usepngCairo;}
626 void UsePngCairo(
bool usepngCairo) { m_usepngCairo = usepngCairo;}
628 bool GetMatchParens()
const {
return m_matchParens; }
629 void SetMatchParens(
bool matchParens) { m_matchParens = matchParens; }
630 bool ShowMatchingParens()
const {
return m_showMatchingParens; }
631 void ShowMatchingParens(
bool show) { m_showMatchingParens = show; }
638 if(m_changeAsterisk != changeAsterisk)
640 m_changeAsterisk = changeAsterisk;
643 bool HidemultiplicationSign()
const {
return m_hidemultiplicationsign;}
645 void HidemultiplicationSign(
bool show) {
646 if(m_hidemultiplicationsign != show)
648 m_hidemultiplicationsign = show;
651 bool Latin2Greek()
const
652 {
return m_latin2greek;}
654 void Latin2Greek(
bool latin2greek) {
655 if(m_latin2greek != latin2greek)
657 m_latin2greek = latin2greek;
660 bool GreekSidebar_ShowLatinLookalikes()
const {
return m_greekSidebar_ShowLatinLookalikes;}
661 void GreekSidebar_ShowLatinLookalikes(
bool show){m_greekSidebar_ShowLatinLookalikes = show;}
663 bool GreekSidebar_Show_mu()
const {
return m_greekSidebar_Show_mu;}
664 void GreekSidebar_Show_mu(
bool show) {m_greekSidebar_Show_mu = show;}
666 wxString SymbolPaneAdditionalChars()
const
667 {
return m_symbolPaneAdditionalChars;}
668 void SymbolPaneAdditionalChars(wxString symbols) {m_symbolPaneAdditionalChars = std::move(symbols);}
672 {
return m_notifyIfIdle; }
674 void NotifyIfIdle(
bool notify) {m_notifyIfIdle = notify;}
681 {
return m_displayedDigits; }
683 void SetDisplayedDigits(
long displayedDigits)
685 wxASSERT_MSG(displayedDigits >= 0, _(
"Bug: Maximum number of digits that is to be displayed is too low!"));
686 if(m_displayedDigits != displayedDigits)
688 m_displayedDigits = displayedDigits;
695 FileToSave(
const wxString &filename,
const wxMemoryBuffer &data):
700 const wxString FileName()
const{
return m_filename;}
701 const wxMemoryBuffer Data()
const{
return m_data;}
703 const wxMemoryBuffer m_data;
704 const wxString m_filename;
711 TextsnippetToDraw(
const wxPoint &pos,
const wxString &text,
const wxColor &color):
717 const wxPoint Pos()
const{
return m_pos;}
718 const wxString Text()
const{
return m_text;}
719 const wxColor Color()
const{
return m_color;}
722 const wxString m_text;
723 const wxColor m_color;
726 void PushFileToSave(
const wxString &filename,
const wxMemoryBuffer &data)
727 { m_filesToSave.emplace_front(
FileToSave(filename, data)); }
729 wxRect GetUpdateRegion()
const {
return m_renderContext.
GetUpdateRegion();}
730 const std::list<FileToSave> &GetFilesToSave()
const {
return m_filesToSave;}
731 void ClearFilesToSave () { m_filesToSave.clear();}
732 void SetUpdateRegion(wxRect rect){m_renderContext.
SetUpdateRegion(rect);}
738 bool GetInsertAns()
const
739 {
return m_insertAns; }
741 void SetInsertAns(
bool insertAns){ m_insertAns = insertAns; }
743 bool GetOpenHCaret()
const
744 {
return m_openHCaret; }
746 void SetOpenHCaret(
bool openHCaret){ m_openHCaret = openHCaret; }
748 bool RestartOnReEvaluation()
const
749 {
return m_restartOnReEvaluation; }
751 void RestartOnReEvaluation(
bool arg){ m_restartOnReEvaluation = arg; }
768 {
return m_showBrackets; }
772 if(m_showBrackets != show)
774 return m_showBrackets = show;
779 {
return m_printBrackets; }
781 showLabels GetLabelChoice()
const
782 {
return m_showLabelChoice; }
784 bool ShowInputLabels()
const {
return m_showInputLabels;}
785 void ShowInputLabels(
bool show) {
786 if(m_showInputLabels != show)
788 m_showInputLabels = show;
793 Appearance GetAppearance()
const {
return m_appearance; }
804 if (m_appearance == Appearance::dark)
return true;
805 if (m_appearance == Appearance::light)
return false;
811 long UndoLimit(){
return std::max(m_undoLimit,
static_cast<long>(0));}
812 void UndoLimit(
long limit){ m_undoLimit = limit; }
814 long RecentItems(){
return std::max(m_recentItems,
static_cast<long>(0));}
815 void RecentItems(
long items){ m_recentItems = items; }
819 {
return (m_showLabelChoice < labels_useronly); }
823 {
return m_showLabelChoice > labels_automatic; }
827 {
return m_showLabelChoice < labels_none; }
831 if(m_showLabelChoice != choice)
833 m_showLabelChoice = choice;
838 m_printBrackets = print;
873 {m_useInternalHelpBrowser = useInternalHelpBrowser;}
879 {m_singlePageManual = singlePageManual;}
893 static wxString
FindProgram(
const wxString &location);
897 {
return m_fixReorderedIndices; }
903 if(m_mathJaxURL_UseUser)
906 return MathJaXURL_Auto();}
907 wxString MathJaXURL_User()
const {
return m_mathJaxURL;}
908 bool MathJaXURL_UseUser()
const {
return m_mathJaxURL_UseUser;}
909 void MathJaXURL_UseUser(
bool useUser){m_mathJaxURL_UseUser = useUser;}
911 bool EnterEvaluates()
const {
return m_enterEvaluates;}
912 void EnterEvaluates(
bool enterEvaluates) {m_enterEvaluates = enterEvaluates;}
913 static wxString MathJaXURL_Auto() {
return wxS(
"https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js");}
915 void MathJaXURL(wxString url){m_mathJaxURL = std::move(url);}
917 bool CopyBitmap()
const {
return m_copyBitmap;}
918 void CopyBitmap(
bool copyBitmap){ m_copyBitmap = copyBitmap; }
920 bool CopyMathML()
const {
return m_copyMathML;}
921 void CopyMathML(
bool copyMathML){ m_copyMathML = copyMathML;}
922 bool CopyMathMLHTML()
const {
return m_copyMathMLHTML;}
923 void CopyMathMLHTML(
bool copyMathMLHTML){ m_copyMathMLHTML = copyMathMLHTML; }
924 bool HideMarkerForThisMessage(wxString message);
925 void HideMarkerForThisMessage(
const wxString &message,
bool hide)
926 {m_hideMarkerForThisMessage[message] = hide;}
927 bool CopyRTF()
const {
return m_copyRTF;}
928 void CopyRTF(
bool copyRTF) { m_copyRTF = copyRTF; }
929 bool CopySVG()
const {
return m_copySVG;}
930 void CopySVG(
bool copySVG) { m_copySVG = copySVG; }
931 bool CopyEMF()
const {
return m_copyEMF;}
932 void CopyEMF(
bool copyEMF) { m_copyEMF = copyEMF; }
933 bool UseSVG()
const {
return m_useSVG;}
934 void UseSVG(
bool useSVG) { m_useSVG = useSVG ;}
937 m_showLength = length;
946 if(m_parenthesisDrawMode != mode)
948 m_parenthesisDrawMode = mode;
951 void TocShowsSectionNumbers(
bool showSectionNumbers) { m_TOCshowsSectionNumbers = showSectionNumbers; }
953 bool TocShowsSectionNumbers()
const {
return m_TOCshowsSectionNumbers;}
955 void UseUnicodeMaths(
bool useunicodemaths)
956 { m_useUnicodeMaths = useunicodemaths; }
957 bool UseUnicodeMaths()
const {
return m_useUnicodeMaths;}
1000 {
if (m_recalculateRequest) m_recalculateRequest(group);}
1003 {m_recalculateRequest = std::move(callback);}
1005 long DefaultPort()
const {
return m_defaultPort;}
1006 void DefaultPort(
long port){m_defaultPort = port;}
1007 bool GetAbortOnError()
const {
return m_abortOnError;}
1008 void SetAbortOnError(
bool abortOnError) {m_abortOnError = abortOnError;}
1010 long GetLanguage()
const {
return m_language;}
1011 void SetLanguage(
long language) {m_language = language;}
1016 {m_maxGnuplotMegabytes = megaBytes;}
1018 bool OfferKnownAnswers()
const {
return m_offerKnownAnswers;}
1019 void OfferKnownAnswers(
bool offerKnownAnswers)
1020 {m_offerKnownAnswers = offerKnownAnswers;}
1022 wxString Documentclass()
const {
return m_documentclass;}
1023 void Documentclass(wxString clss){m_documentclass = std::move(clss);}
1024 wxString DocumentclassOptions()
const {
return m_documentclassOptions;}
1025 void DocumentclassOptions(wxString classOptions){m_documentclassOptions = std::move(classOptions);}
1030 {m_htmlEquationFormat = HTMLequationFormat;}
1032 AFontSize GetDefaultFontSize()
const {
return m_styleStore[TS_CODE_DEFAULT].GetFontSize(); }
1033 AFontSize GetMathFontSize()
const {
return m_styleStore[TS_MATH].GetFontSize(); }
1037 void SetAutosubscript_Num(
long autosubscriptnum) {m_autoSubscript = autosubscriptnum;}
1038 wxString GetAutosubscript_string()
const;
1047 void SetVisibleRegion(wxRect visibleRegion){
1048 if(m_renderContext.
GetVisibleRegion().GetWidth() != visibleRegion.GetWidth())
1052 wxRect GetVisibleRegion()
const {
return m_renderContext.
GetVisibleRegion();}
1053 void SetWorksheetPosition(wxPoint worksheetPosition){m_renderContext.
SetWorksheetPosition(worksheetPosition);}
1055 wxString MaximaShareDir()
const {
return m_maximaSession.
ShareDir();}
1056 void MaximaShareDir(wxString dir){m_maximaSession.
ShareDir(std::move(dir));}
1057 wxString MaximaDemoDir()
const {
return m_maximaSession.
DemoDir();}
1058 void MaximaDemoDir(wxString dir){m_maximaSession.
DemoDir(std::move(dir));}
1059 void InLispMode(
bool lisp){m_maximaSession.
InLispMode(lisp);}
1060 bool InLispMode()
const {
return m_maximaSession.
InLispMode();}
1061 void BitmapScale(
int factor){m_bitmapScale = factor;}
1062 int BitmapScale()
const {
return m_bitmapScale;}
1063 void DefaultPlotHeight(
int px){m_defaultPlotHeight = px;}
1064 int DefaultPlotHeight()
const {
return m_defaultPlotHeight;}
1065 void DefaultPlotWidth(
int px){m_defaultPlotWidth = px;}
1066 int DefaultPlotWidth()
const {
return m_defaultPlotWidth;}
1067 void DefaultFramerate(
int fps){m_defaultFramerate = fps;}
1068 int DefaultFramerate()
const {
return m_defaultFramerate;}
1069 void TocDepth(
int depth){m_tocDepth = depth;}
1070 int TocDepth()
const {
return m_tocDepth;}
1071 bool TeXExponentsAfterSubscript()
const {
return m_TeXExponentsAfterSubscript;}
1072 void TeXExponentsAfterSubscript(
bool ExponentsAfterSubscript)
1073 {m_TeXExponentsAfterSubscript = ExponentsAfterSubscript;}
1074 bool UsePartialForDiff()
const {
return m_usePartialForDiff;}
1075 void UsePartialForDiff(
bool usePartialForDiff)
1076 {m_usePartialForDiff = usePartialForDiff;}
1084 {
if (m_adjustWorksheetSizeRequest) m_adjustWorksheetSizeRequest();}
1087 {m_adjustWorksheetSizeRequest = std::move(callback);}
1102 bool WrapLatexMath()
const {
return m_wrapLatexMath;}
1103 void WrapLatexMath(
bool wrapLatexMath){m_wrapLatexMath = wrapLatexMath;}
1104 bool AllowNetworkHelp()
const {
return m_allowNetworkHelp;}
1105 void AllowNetworkHelp(
bool allowNetworkHelp){m_allowNetworkHelp = allowNetworkHelp;}
1106 bool ShowAllDigits()
const {
return m_showAllDigits;}
1107 void ShowAllDigits(
bool shw){
1108 if(m_showAllDigits != shw)
1110 m_showAllDigits = shw;
1112 bool LineBreaksInLongNums()
const {
return m_lineBreaksInLongNums;}
1113 void LineBreaksInLongNums(
bool brk){
1114 if(m_lineBreaksInLongNums != brk)
1116 m_lineBreaksInLongNums = brk;
1118 int MaxClipbrdBitmapMegabytes()
const {
return m_maxClipbrd_BitmapMegabytes;}
1119 void MaxClipbrdBitmapMegabytes(
int maxClipbrd_BitmapMegabytes)
1120 {m_maxClipbrd_BitmapMegabytes = maxClipbrd_BitmapMegabytes;}
1122 void MaximaUsesHtmlBrowser(
bool maximaUsesHhtmlBrowser){m_maximaUsesHhtmlBrowser = maximaUsesHhtmlBrowser;}
1123 bool MaximaUsesHtmlBrowser()
const {
return m_maximaUsesHhtmlBrowser;}
1124 void MaximaUsesWxmaximaBrowser(
bool maximaUsesWxmaximaBrowser){m_maximaUsesWxmaximaBrowser = maximaUsesWxmaximaBrowser;}
1126 void ExportContainsWXMX(
bool exportContainsWXMX){m_exportContainsWXMX = exportContainsWXMX;}
1127 bool ExportContainsWXMX()
const {
return m_exportContainsWXMX;}
1128 void WizardTab(
long tab){m_wizardTab = tab;}
1129 long WizardTab()
const {
return m_wizardTab;}
1131 void Display2d_Unicode(
bool unicode){m_display2d_Unicode = unicode;}
1132 bool Display2d_Unicode()
const {
return m_display2d_Unicode;}
1135 bool UseWGnuplot()
const {
return m_useWgnuplot;}
1136 void UseWGnuplot(
bool usewgnuplot) {m_useWgnuplot = usewgnuplot;}
1138 wxString TexPreamble()
const {
return m_texPreamble;}
1139 void TexPreamble(wxString texPreamble) {m_texPreamble = std::move(texPreamble);}
1141 void SetMaximaVersion(
const wxString &version){m_maximaSession.
SetMaximaVersion(version);}
1142 wxString GetMaximaVersion()
const {
return m_maximaSession.
GetMaximaVersion();}
1143 void SetMaximaArch(
const wxString &arch){m_maximaSession.
SetMaximaArch(arch);}
1144 wxString GetMaximaArch()
const {
return m_maximaSession.
GetMaximaArch();}
1145 void SetLispVersion(
const wxString &version){m_maximaSession.
SetLispVersion(version);}
1146 wxString GetLispVersion()
const {
return m_maximaSession.
GetLispVersion();}
1147 void SetLispType(
const wxString &type){m_maximaSession.
SetLispType(type);}
1148 wxString GetLispType()
const {
return m_maximaSession.
GetLispType();}
1162 bool StyleAffectsCode(
TextStyle style)
const;
1163 bool StyleAffectsMathOut(
TextStyle style)
const;
1164 bool StyleAffectsColorOnly(
TextStyle style)
const;
1171 maximaHelpFormat MaximaHelpFormat()
const;
1172 void MaximaHelpFormat(maximaHelpFormat format) {m_maximaHelpFormat = format;}
1186 std::random_device m_rd;
1188 std::default_random_engine m_eng;
1189 wxEnvVariableHashMap m_maximaEnvVars;
1203 void RecalculateForce() { m_cellCfgCnt++; }
1204 static bool UseThreads(){
return m_use_threads;}
1205 static void UseThreads(
bool use){m_use_threads = use;}
1206 static void SetMaximaLang(
const wxString &LANG){m_maxima_LANG = LANG;}
1207 static wxString GetMaximaLang(){
return m_maxima_LANG;}
1210 static wxString m_maxima_LANG;
1211 std::list<FileToSave> m_filesToSave;
1215 StringBoolHash m_hideMarkerForThisMessage;
1218 mathDisplayMode m_displayMode = display_2d;
1219 static bool m_debugMode;
1220 bool m_showInputLabels;
1222 bool m_display2d_Unicode;
1223 bool m_usePartialForDiff;
1224 bool m_maximaUsesHhtmlBrowser;
1225 bool m_maximaUsesWxmaximaBrowser;
1227 bool m_autoSaveAsTempFile;
1231 bool m_autodetectMaxima;
1233 bool m_autodetectHelpBrowser;
1235 bool m_useInternalHelpBrowser;
1237 bool m_singlePageManual;
1239 bool m_incrementalSearch;
1241 long m_autoSubscript;
1247 std::function<void(
GroupCell *)> m_recalculateRequest;
1249 std::function<void()> m_adjustWorksheetSizeRequest;
1252 bool m_wrapLatexMath;
1253 bool m_allowNetworkHelp;
1254 bool m_exportContainsWXMX;
1255 wxString m_texPreamble;
1258 bool m_TeXExponentsAfterSubscript;
1259 wxString m_helpBrowserUserLocation;
1260 wxString m_maximaUserLocation;
1262 bool m_hideBrackets;
1264 double m_printScale;
1265 double m_printMargin_Top;
1266 double m_printMargin_Bot;
1267 double m_printMargin_Left;
1268 double m_printMargin_Right;
1270 bool m_showBrackets;
1272 bool m_printBrackets;
1278 bool m_changeAsterisk;
1280 bool m_notifyIfIdle;
1282 long m_displayedDigits;
1288 bool m_showAllDigits;
1290 bool m_lineBreaksInLongNums;
1301 double m_zoomFactor;
1303 wxString m_maximaParameters;
1305 bool m_restartOnReEvaluation;
1306 wxString m_fontCMRI, m_fontCMSY, m_fontCMEX, m_fontCMMI, m_fontCMTI;
1307 long m_lineWidth_em;
1308 showLabels m_showLabelChoice;
1309 bool m_fixReorderedIndices;
1310 wxString m_mathJaxURL;
1311 bool m_mathJaxURL_UseUser;
1312 bool m_showCodeCells;
1315 bool m_copyMathMLHTML;
1318 bool m_enterEvaluates;
1324 bool m_TOCshowsSectionNumbers;
1325 bool m_useUnicodeMaths;
1327 bool m_abortOnError;
1328 bool m_showMatchingParens;
1329 bool m_hidemultiplicationsign;
1330 bool m_offerKnownAnswers;
1332 long m_maxGnuplotMegabytes;
1333 long m_defaultPlotHeight;
1334 long m_defaultPlotWidth;
1335 bool m_saveUntitled;
1337 bool m_numpadEnterEvaluates;
1338 bool m_saveImgFileName;
1339 wxString m_documentclass;
1340 wxString m_documentclassOptions;
1343 wxColour m_defaultBackgroundColor;
1344 wxBrush m_tooltipBrush;
1345 bool m_greekSidebar_ShowLatinLookalikes;
1347 bool m_useWgnuplot =
false;
1349 bool m_greekSidebar_Show_mu;
1350 wxString m_symbolPaneAdditionalChars;
1351 Appearance m_appearance = Appearance::followSystem;
1355 int m_defaultFramerate;
1357 int m_maxClipbrd_BitmapMegabytes;
1358 int m_autoSaveMinutes;
1359 int m_maxLayoutTime;
1360 LayoutStrategy m_layoutStrategy = LayoutStrategy::layout2DIfFits;
1361 wxString m_wxMathML_Filename;
1362 maximaHelpFormat m_maximaHelpFormat;
1363 std::atomic<std::int_fast32_t> m_cellCfgCnt{0};
1364 static bool m_use_threads;
1373 m_configuration = configuration;
1390 m_configuration = configuration;
Declares FontRenderabilityCache: which chars can each font render?
This file declares a message dialog that sends its contents to the log message sink.
Declares MaximaSessionInfo: what we know about the connected Maxima.
Declares RenderContext: the per-render-pass state of a worksheet.
This file declares the class Styles.
This file declares everything needed for the text style system used to style all the elements on the ...
TextStyle
All text styles known to wxMaxima.
Definition: TextStyle.h:231
A Type-Safe Fixed-Point Font Size.
Definition: FontAttribs.h:97
The storage for pointers to cells.
Definition: CellPointers.h:45
The base class all cell types the worksheet can consist of are derived from.
Definition: Cell.h:141
Stores the information about a file we need to write during the save process.
Definition: Configuration.h:693
Stores the information about a file we need to write during the save process.
Definition: Configuration.h:709
The configuration storage for the current worksheet.
Definition: Configuration.h:97
wxDC * GetRecalcDC() const
Get a drawing context suitable for size calculations.
Definition: Configuration.h:308
Appearance
How wxMaxima chooses between the light and the dark style set.
Definition: Configuration.h:792
wxString HelpBrowserUserLocation() const
Returns the location of the web browser the user has selected.
Definition: Configuration.h:882
wxColor EditorBackgroundColor()
Determine the default background color of editorcells.
Definition: Configuration.cpp:873
long GetAutosubscript_Num() const
Get the worksheet this configuration storage is valid for.
Definition: Configuration.h:1036
bool ShowAutomaticLabels() const
Do we want to show maxima's automatic labels (o1, t1, i1,...)?
Definition: Configuration.h:818
void AutodetectHelpBrowser(bool autodetect)
Autodetect the web browser?
Definition: Configuration.h:867
bool FontRendersChar(wxUniChar ch, const wxFont &font= *wxNORMAL_FONT)
True if we are confident that the font renders this char.
Definition: Configuration.h:1153
void MathJaXURL(wxString url)
Returns the URL MathJaX can be found at.
Definition: Configuration.h:915
double GetInterEquationSkip() const
Extra space to leave between two equations in output cells.
Definition: Configuration.h:249
static bool GetDebugmode()
Enable costly checks?
Definition: Configuration.h:1170
bool GetChangeAsterisk() const
Use Unicode centered dots for multiplication signs?
Definition: Configuration.h:634
void SetZoomFactor_temporarily(double newzoom)
Sets the zoom factor without storing the new value in the config file/registry.
Definition: Configuration.h:290
static bool SystemIsDark()
Whether the OS reports a dark appearance (false where wx cannot tell).
Definition: Configuration.cpp:483
void SetAutoWrap(long autoWrap)
Sets the auto wrap mode.
Definition: Configuration.h:502
wxSize GetPPI() const
Get the resolution.
Definition: Configuration.cpp:210
bool GetAutoWrap() const
Do we want to have automatic line breaks for text cells?
Definition: Configuration.h:488
void ClearAndEnableRedrawTracing()
Clear the memory of ReportMultipleRedraws()
Definition: Configuration.cpp:883
void ReportMultipleRedraws()
Report if a cell has been redrawn 2 or more times during a simple Draw() command.
Definition: Configuration.cpp:889
static wxString FindProgram(const wxString &location)
Could a maxima binary be found in the path we expect it to be in?
Definition: Configuration.cpp:534
static const std::vector< ScalarSetting > & ScalarConfigSettings()
The single source of truth pairing each mechanical scalar setting's config key with the member cachin...
Definition: Configuration.cpp:1223
void FontChanged()
To be called if a font has changed.
Definition: Configuration.h:440
static double GetMaxZoomFactor()
The upper limit we allow for the zoom factor.
Definition: Configuration.h:240
wxBrush GetTooltipBrush() const
Get the brush to be used for worksheet objects that provide a mouse-over tooltip.
Definition: Configuration.h:215
static const wxString & GetEscCode(const wxString &key)
Retrieve a symbol for the escape codes that can be typed after hitting the Escape key in the workshee...
Definition: Configuration.cpp:491
bool HideBrackets() const
Hide brackets that are not under the pointer?
Definition: Configuration.h:264
bool NotifyIfIdle() const
Notify the user if maxima is idle?
Definition: Configuration.h:671
static EscCodeIterator EscCodesBegin()
Iterators over the escape code list.
Definition: Configuration.cpp:499
CellPointers * GetCellPointers() const
The registry of special cells (selection, active cell, errors, ...) of this document.
Definition: Configuration.h:989
void SetPrinting(bool printing)
Are we currently printing?
Definition: Configuration.cpp:901
static wxString MaximaDefaultLocation()
The auto-detected maxima location.
Definition: Configuration.cpp:981
void SetLabelChoice(showLabels choice)
Sets the value of the Configuration ChoiceBox that treads displaying labels.
Definition: Configuration.h:830
bool InUpdateRegion(wxRect rect) const
Whether any part of the given rectangle is within the current update region, or true if drawing is no...
Definition: Configuration.cpp:1144
void SetKeepPercent(bool keepPercent)
Do we want to display "%e" as "%e" and "%pi" as "%pi"?
Definition: Configuration.h:577
bool SinglePageManual() const
Prefer the single-page manual?
Definition: Configuration.h:876
void ClearMaximaEnvVars()
Forget all custom environment variables for the maxima process.
Definition: Configuration.h:169
void WriteStyles(const wxString &file={})
Saves the style settings.
Definition: Configuration.cpp:1287
const std::vector< TextStyle > & GetMathStylesList() const
Which styles affect how math output is displayed?
Definition: Configuration.h:1159
wxColor DefaultBackgroundColor()
Determine the default background color of the worksheet.
Definition: Configuration.cpp:869
bool UseDarkMode() const
Whether the dark style set is currently active.
Definition: Configuration.h:803
wxString MaximaUserLocation() const
Returns the location of the maxima binary the user has selected.
Definition: Configuration.h:859
Style * GetWritableStyle(TextStyle textStyle)
Get the text Style for a given text style identifier.
Definition: Configuration.h:971
wxCoord GetLabelWidth() const
Get the width of worksheet labels [in unscaled pixels].
Definition: Configuration.h:336
void WriteSettings(const wxString &file={})
Saves the settings to a file.
Definition: Configuration.cpp:1013
mathDisplayMode DisplayMode() const
Does maxima output 1D, 2D or 2D ASCII equations?
Definition: Configuration.h:174
wxCoord GetIndent() const
Get the indentation of GroupCells.
Definition: Configuration.h:351
std::int_fast32_t CellCfgCnt() const
A counter that increases every time we need to recalculate all worksheet cells.
Definition: Configuration.h:1202
bool ShowLabels() const
Do we want at all to show labels?
Definition: Configuration.h:826
wxString MaximaParameters() const
Parameters to the maxima binary.
Definition: Configuration.h:848
wxSize GetCanvasSize() const
Reads the size of the current worksheet's visible window. See SetCanvasSize.
Definition: Configuration.h:754
void InternalHelpBrowser(bool useInternalHelpBrowser)
Use the internal help browser? If not a external web browser is used.
Definition: Configuration.h:872
double GetZoomFactor() const
Determines the zoom factor the worksheet is displayed at.
Definition: Configuration.h:304
long LineWidth_em() const
The minimum sensible line width in widths of a letter.
Definition: Configuration.h:455
void SinglePageManual(bool singlePageManual)
Prefer the single-page manual?
Definition: Configuration.h:878
bool IndentMaths() const
Do we want to indent all maths?
Definition: Configuration.h:511
wxString MaximaLocation() const
Returns the location of the maxima binary.
Definition: Configuration.cpp:974
void SetBackgroundBrush(const wxBrush &brush)
Set the brush to be used for the worksheet background.
Definition: Configuration.cpp:528
void SetCellPointers(CellPointers *cellPointers)
Set the CellPointers registry cells constructed with this configuration use.
Definition: Configuration.h:991
static const std::vector< std::pair< TextStyle, wxString > > & StyleConfigKeys()
The single source of truth mapping each persisted text style to its config-key prefix.
Definition: Configuration.cpp:1280
bool FixedFontInTextControls() const
Use a typewriter font in wizard entry fields that can contain maxima commands?
Definition: Configuration.h:209
bool GetAutoIndent() const
Do we want automatic indentation?
Definition: Configuration.h:505
long LabelWidth() const
Get the width of worksheet labels [in chars].
Definition: Configuration.h:340
void SetRecalcContext(wxDC &dc)
Set the drawing context that is currently active.
Definition: Configuration.h:200
double PrintScale() const
Hide brackets that are not under the pointer?
Definition: Configuration.h:271
wxString GetWorkingDirectory() const
Get maxima's working directory.
Definition: Configuration.h:183
long GetBaseIndent() const
The y position the worksheet starts at.
Definition: Configuration.h:385
void DisplayMode(mathDisplayMode mode)
Tell the config if maxima outputs 1D, 2D or 2D ASCII equations, currently.
Definition: Configuration.h:176
static bool GetAutoWrapCode()
Do we want to have automatic line breaks for code cells?
Definition: Configuration.h:493
long MaxGnuplotMegabytes() const
The maximum number of Megabytes of gnuplot sources we should store.
Definition: Configuration.h:1014
long GetGroupSkip() const
The vertical space between GroupCells.
Definition: Configuration.h:394
void HelpBrowserUserLocation(wxString helpBrowser)
Sets the location of the web browser the user has detected.
Definition: Configuration.h:885
void SetWorkingDirectory(wxString dir)
Set maxima's working directory.
Definition: Configuration.h:179
bool CheckKeepPercent() const
Do we want to display "%e" as "%e" and "%pi" as "%pi"?
Definition: Configuration.h:573
const std::vector< TextStyle > & GetCodeStylesList() const
Which styles affect how code is displayed?
Definition: Configuration.h:1157
static const wxString CharsNeedingQuotes()
Returns a list of chars we need to escape in maxima.
Definition: Configuration.h:321
void SetAppearance(Appearance a)
Choose the appearance and update which style set is active.
Definition: Configuration.h:795
wxString MathJaXURL() const
Returns the URL MathJaX can be found at.
Definition: Configuration.h:902
void UpdateBackgroundBrush()
Refresh the cached document-background brush from the active style set.
Definition: Configuration.cpp:523
void AutodetectMaxima(bool autodetectmaxima)
Autodetect maxima's location?
Definition: Configuration.h:845
void SetChangeAsterisk(bool changeAsterisk)
Use Unicode centered dots for multiplication signs?
Definition: Configuration.h:637
std::random_device::result_type RandomEntropy()
One sample of OS entropy (std::random_device).
Definition: Configuration.h:1192
void PrintScale(double scale)
Define if we want to hide brackets that are not under the pointer.
Definition: Configuration.h:275
void InitStyles()
Initialize the text styles on construction.
Definition: Configuration.cpp:476
static void SetDebugmode()
Enable costly checks.
Definition: Configuration.h:1168
static double GetMinZoomFactor()
The lower limit we allow for the zoom factor.
Definition: Configuration.h:236
bool AutodetectMaxima() const
Autodetect maxima's location? (If false the user-specified location is used)
Definition: Configuration.h:843
wxScrolledCanvas * GetWorkSheet() const
Get the worksheet canvas this configuration storage is valid for.
Definition: Configuration.h:979
bool ClipToDrawRegion() const
Do we want to save time by only redrawing the area currently shown on the screen?
Definition: Configuration.h:1044
void SetZoomFactor(double newzoom)
Sets the zoom factor the worksheet is displayed at.
Definition: Configuration.cpp:945
bool ShowBrackets() const
Show the cell brackets [displayed left to each group cell showing its extend]?
Definition: Configuration.h:767
bool FixReorderedIndices() const
Renumber out-of-order cell labels on saving.
Definition: Configuration.h:896
void AddMaximaOperator(const wxString &name)
Register name as an operator known to maxima.
Definition: Configuration.h:166
bool GetPrinting() const
Are we currently printing?
Definition: Configuration.h:618
wxBrush GetBackgroundBrush() const
Get the brush to be used for the worksheet background.
Definition: Configuration.h:213
void SetIndent(long indent)
Set the indentation of GroupCells.
Definition: Configuration.h:406
long GetLineWidth() const
Returns the maximum sensible width for a text line [in characters]:
Definition: Configuration.cpp:910
void FixedFontInTextControls(bool fixed)
Use a typewriter font in wizard entry fields that can contain maxima commands?
Definition: Configuration.h:211
static EscCodeIterator EscCodesEnd()
Iterators over the escape code list.
Definition: Configuration.cpp:502
void RequestAdjustWorksheetSize() const
Ask the view (if any) to re-adjust its worksheet (scroll) size.
Definition: Configuration.h:1083
wxCoord GetCellBracketWidth() const
The width we allocate for our cell brackets.
Definition: Configuration.h:258
void MaximaUserLocation(wxString maxima)
Sets the location of the maxima binary.
Definition: Configuration.h:862
bool OfferInternalHelpBrowser() const
If we decide that the HTML browser in the sidebar doesn't work for every platform....
Definition: Configuration.cpp:1153
void ClipToDrawRegion(bool clipToDrawRegion)
Do we want to save time by only redrawing the area currently shown on the screen?
Definition: Configuration.h:1046
wxColour GetColor(TextStyle style)
Gets the color for a text style.
Definition: Configuration.cpp:1125
long GetCursorWidth() const
How much vertical space is to be left between two group cells?
Definition: Configuration.h:369
static wxString m_configfileLocation_override
Where to store the configuration.
Definition: Configuration.h:223
void LineWidth_em(long width)
Set the minimum sensible line width in widths of a letter.
Definition: Configuration.h:467
std::default_random_engine & RandomEngine()
The pseudo-random engine, e.g. to feed a distribution.
Definition: Configuration.h:1194
void HideBrackets(bool hide)
Define if we want to hide brackets that are not under the pointer.
Definition: Configuration.h:268
double GetDefaultLineWidth() const
Calculates the default line width for the worksheet.
Definition: Configuration.h:446
wxCoord Scale_Px(double px) const
Scales a distance [in pixels] according to the zoom factor.
Definition: Configuration.cpp:1132
void ReadConfig()
Read the config from the wxConfig object.
Definition: Configuration.cpp:581
void SetRecalculateRequestCallback(std::function< void(GroupCell *)> callback)
Set the callback RequestRecalculate() notifies the view through.
Definition: Configuration.h:1002
InitOpt
Definition: Configuration.h:149
@ temporary
This configuration is temporary and shouldn't redetect Maxima etc.
Definition: Configuration.h:151
bool InternalHelpBrowser() const
Use the internal help browser? If not a external web browser is used.
Definition: Configuration.h:870
void SetParenthesisDrawMode(drawMode mode)
Which way do we want to draw parenthesis?
Definition: Configuration.h:945
drawMode
Definition: Configuration.h:143
@ ascii
Use ascii characters only.
Definition: Configuration.h:144
@ handdrawn
A parenthesis sign that was created using draw commands.
Definition: Configuration.h:145
void SetCanvasSize(wxSize siz)
Sets the size of the current worksheet's visible window.
Definition: Configuration.h:758
void MaximaParameters(wxString parameters)
The parameters we pass to the maxima binary.
Definition: Configuration.h:850
void NotifyOfCellRedraw(const Cell *cell)
Record that this cell has been drawn to ReportMultipleRedraws()
Definition: Configuration.cpp:877
long ShowLength() const
The choice for the "maximum output length to display" setting.
Definition: Configuration.h:940
void ResetAllToDefaults()
Reset the whole configuration to its default values.
Definition: Configuration.cpp:232
void SetMaximaEnvVar(const wxString &name, const wxString &value)
Set a custom environment variable for the maxima process.
Definition: Configuration.h:171
void ReadStyles(const wxString &file={})
Reads the style settings.
Definition: Configuration.cpp:985
htmlExportFormat
The export formats we support for HTML equations.
Definition: Configuration.h:125
void SetAdjustWorksheetSizeRequestCallback(std::function< void()> callback)
Set the callback RequestAdjustWorksheetSize() notifies the view through.
Definition: Configuration.h:1086
bool UseUserLabels() const
Do we want at all to show labels?
Definition: Configuration.h:822
bool UpdateNeeded() const
true means: The system's config storage has changed since the configuration has been read
Definition: Configuration.cpp:1169
std::size_t ShowLength_Bytes() const
The "maximum output length to display" setting in cells.
Definition: Configuration.cpp:1305
long GetDisplayedDigits() const
Returns the maximum number of displayed digits.
Definition: Configuration.h:680
const Style * GetStyle(TextStyle textStyle) const
Get the text Style for a given text style identifier.
Definition: Configuration.h:963
bool AutodetectHelpBrowser() const
Autodetect the web browser? (If false the user-specified location is used)
Definition: Configuration.h:865
void SetWorkSheet(wxScrolledCanvas *workSheet)
Set the worksheet canvas this configuration storage is valid for.
Definition: Configuration.cpp:201
bool IsOperator(wxString name) const
Coincides name with a operator known to maxima?
Definition: Configuration.h:164
void ShowLength(long length)
The choice for the "maximum output length to display" setting.
Definition: Configuration.h:936
void LabelWidth(long labelWidth)
Set the width of worksheet labels [in chars].
Definition: Configuration.h:343
void RequestRecalculate(GroupCell *group) const
Ask the view (if any) to recalculate the layout starting at the given group cell.
Definition: Configuration.h:999
const std::vector< TextStyle > & GetColorOnlyStylesList() const
Which styles affect only colors?
Definition: Configuration.h:1161
bool PrintBrackets() const
Print the cell brackets [displayed left to each group cell showing its extend]?
Definition: Configuration.h:778
Caches which characters each font can actually render.
Definition: FontRenderabilityCache.h:65
bool FontRendersChar(wxUniChar ch, const wxFont &font)
True if we are confident that the font renders this char.
Definition: FontRenderabilityCache.cpp:32
A cell grouping input (and, if there is one, also the output) cell to a foldable item.
Definition: GroupCell.h:87
What we know about the Maxima instance we are talking to.
Definition: MaximaSessionInfo.h:48
wxString GetWorkingDirectory() const
Maxima's working directory.
Definition: MaximaSessionInfo.h:95
bool InLispMode() const
Is maxima currently in lisp mode (where commands need no trailing ";")?
Definition: MaximaSessionInfo.h:108
void SetLispType(const wxString &type)
Sets the type of the lisp the connected Maxima runs on.
Definition: MaximaSessionInfo.h:92
void SetMaximaArch(const wxString &arch)
Sets the processor architecture the connected Maxima runs on.
Definition: MaximaSessionInfo.h:84
wxString GetMaximaArch() const
The processor architecture the connected Maxima runs on.
Definition: MaximaSessionInfo.h:82
wxString GetLispVersion() const
The version of the lisp the connected Maxima runs on.
Definition: MaximaSessionInfo.h:86
wxString DemoDir() const
The directory maxima's demo files live in.
Definition: MaximaSessionInfo.h:103
void AddOperator(const wxString &name)
Registers name as an operator known to maxima.
Definition: MaximaSessionInfo.h:75
void SetWorkingDirectory(wxString dir)
Sets maxima's working directory.
Definition: MaximaSessionInfo.h:97
wxString ShareDir() const
The directory maxima's shared files (e.g. the manual) live in.
Definition: MaximaSessionInfo.h:99
wxString GetLispType() const
The type of the lisp the connected Maxima runs on.
Definition: MaximaSessionInfo.h:90
void SetMaximaVersion(const wxString &version)
Sets the version of the connected Maxima.
Definition: MaximaSessionInfo.h:80
void SetLispVersion(const wxString &version)
Sets the version of the lisp the connected Maxima runs on.
Definition: MaximaSessionInfo.h:88
wxString GetMaximaVersion() const
The version of the connected Maxima.
Definition: MaximaSessionInfo.h:78
bool IsOperator(const wxString &name) const
Is this name an operator known to maxima?
Definition: MaximaSessionInfo.h:72
Clears the configuration's "Clip to draw region" flag until this class is left.
Definition: Configuration.h:1386
Sets the configuration's "printing" flag until this class is left.
Definition: Configuration.h:1369
The state of the current worksheet render pass.
Definition: RenderContext.h:60
void SetRecalcDC(wxDC *dc)
Tells us which dc to measure text sizes on.
Definition: RenderContext.h:79
void SetWorksheetPosition(wxPoint worksheetPosition)
Sets where the worksheet is to be drawn.
Definition: RenderContext.h:170
void ClearLayoutCancelled()
Stops the layout deadline and clears the cancelled flag.
Definition: RenderContext.h:187
wxRect GetUpdateRegion() const
The rectangle of the worksheet that is currently being redrawn.
Definition: RenderContext.h:105
void SetVisibleRegion(wxRect visibleRegion)
Sets the rectangle of the worksheet that is currently visible.
Definition: RenderContext.h:112
bool ClipToDrawRegion() const
Do we want to omit drawing outside the current update region?
Definition: RenderContext.h:162
bool Printing() const
Are we currently rendering for the printer rather than the screen?
Definition: RenderContext.h:115
void SetLayoutDeadline(int seconds)
Starts a layout deadline this many seconds in the future.
Definition: RenderContext.h:179
wxBrush GetBackgroundBrush() const
The brush the worksheet's background is painted with.
Definition: RenderContext.h:174
void SetCanvasSize(wxSize siz)
Sets the size of the worksheet's visible window.
Definition: RenderContext.h:102
bool IsLayoutCancelled() const
Has the current layout pass exceeded its deadline?
Definition: RenderContext.h:193
wxDC * GetRecalcDC() const
The dc "recalculate" (measuring text) currently draws to.
Definition: RenderContext.h:77
wxPoint GetWorksheetPosition() const
Where is the worksheet to be drawn?
Definition: RenderContext.h:168
wxSize GetCanvasSize() const
The size of the worksheet's visible window.
Definition: RenderContext.h:100
wxRect GetVisibleRegion() const
The rectangle of the worksheet that is currently visible.
Definition: RenderContext.h:110
void SetUpdateRegion(wxRect rect)
Sets the rectangle of the worksheet that is currently being redrawn.
Definition: RenderContext.h:107
Text Style Definition.
Definition: TextStyle.h:63
Storage for the worksheet's per-TextStyle text styles.
Definition: Styles.h:42
const std::vector< TextStyle > & ColorOnlyStylesList() const
The styles where only the color is configurable.
Definition: Styles.h:107
const std::vector< TextStyle > & MathStylesList() const
The styles that share the 2d-math font.
Definition: Styles.h:105
const std::vector< TextStyle > & CodeStylesList() const
The styles that share the code-default font/attributes.
Definition: Styles.h:103
void SetUseDark(bool dark)
Select which set indexing/iteration return.
Definition: Styles.h:57
One mechanically persisted scalar setting: its config key and the member variable it is stored in.
Definition: Configuration.h:548
const wxChar * key
The key the setting is stored under in the configuration store.
Definition: Configuration.h:550
std::variant< bool Configuration::*, int Configuration::*, long Configuration::*, double Configuration::*, wxString Configuration::* > member
Which member of Configuration holds the setting's cached value.
Definition: Configuration.h:555