22#ifndef CONFIGURATION_H
23#define CONFIGURATION_H
28#include <wx/display.h>
29#include <wx/fontenum.h>
30#include <wx/hashmap.h>
43#include <unordered_map>
52#include <wx/wupdlock.h>
55#define MC_LINE_SKIP Scale_Px(2)
56#define MC_TEXT_PADDING Scale_Px(1)
58#define PAREN_OPEN_TOP_UNICODE "\u239b"
59#define PAREN_OPEN_EXTEND_UNICODE "\u239c"
60#define PAREN_OPEN_BOTTOM_UNICODE "\u239d"
61#define PAREN_CLOSE_TOP_UNICODE "\u239e"
62#define PAREN_CLOSE_EXTEND_UNICODE "\u239f"
63#define PAREN_CLOSE_BOTTOM_UNICODE "\u23a0"
64#define SUM_SIGN "\u2211"
65#define PROD_SIGN "\u220F"
70#define MC_HCARET_WIDTH 25
72#define MC_EXP_INDENT static_cast<wxCoord>(Scale_Px(2))
73static constexpr AFontSize MC_MIN_SIZE{ 6.0f };
74static constexpr AFontSize MC_MAX_SIZE{ 48.0f };
77#define LABELWIDTH_MIN 3
78#define LABELWIDTH_MAX 10
105 std::atomic<long> manualAnchorsFromBuiltin{0};
106 std::atomic<long> manualAnchorsFromCache{0};
107 std::atomic<long> manualAnchorsCompiled{0};
108 std::atomic<long> maximaProcessesSpawned{0};
109 std::atomic<long> fontCacheHits{0};
110 std::atomic<long> fontCacheMisses{0};
111 std::atomic<long> recalculationNeeded_FontInvalid{0};
112 std::atomic<long> recalculationNeeded_SizeInvalid{0};
113 std::atomic<long> recalculationNeeded_FontMismatch{0};
114 std::atomic<long> recalculationNeeded_ConfigChanged{0};
115 std::atomic<long> recalculationNeeded_CellsAppended{0};
116 std::atomic<long> recalculationNeeded_EditorDirty{0};
117 std::atomic<long> cellsConvertedToLinear{0};
118 std::atomic<long> cellsConvertedTo2D{0};
140 static PerformanceStats g_stats;
157 html_export_invalidChoice
160 enum showLabels : int8_t
162 labels_automatic = 0,
163 labels_prefer_user = 1,
166 labels_invalidSelection
189 using StringBoolHash = std::unordered_map<wxString, bool, wxStringHash>;
194 const wxEnvVariableHashMap& MaximaEnvVars()
const {
return m_maximaEnvVars;}
198 void SetMaximaEnvVar(
const wxString &name,
const wxString &value){m_maximaEnvVars[name] = value;}
242 void UnsetContext() {m_renderContext.
SetRecalcDC(
nullptr);}
278 using EscCodeContainer = std::unordered_map<wxString, wxString, wxStringHash>;
279 using EscCodeIterator = EscCodeContainer::const_iterator;
307 return GetZoomFactor() * m_styleStore[TS_MATH].GetFontSize() / 2;
318 {
return m_hideBrackets; }
331 {
return m_overlayScrollbars; }
338 {
return m_printScale; }
343 void PrintMargin_Top(
double margin){m_printMargin_Top = margin;}
344 void PrintMargin_Bot(
double margin){m_printMargin_Bot = margin;}
345 void PrintMargin_Left(
double margin){m_printMargin_Left = margin;}
346 void PrintMargin_Right(
double margin){m_printMargin_Right = margin;}
347 double PrintMargin_Top()
const {
return m_printMargin_Top;}
348 double PrintMargin_Bot()
const {
return m_printMargin_Bot;}
349 double PrintMargin_Left()
const {
return m_printMargin_Left;}
350 double PrintMargin_Right()
const {
return m_printMargin_Right;}
357 if(m_zoomFactor != newzoom)
359 m_zoomFactor = newzoom;
371 {
return m_zoomFactor; }
377 void SetRecalcDC(wxDC *dc)
380 wxString GetFontName(
TextStyle ts = TS_CODE_DEFAULT)
const;
384 wxString GetSymbolFontName()
const;
389 return wxString(wxS(
"°,\\'\"()[]-{}^+*/&§?:;=#<>$"));
392 wxFontWeight IsBold(
long st)
const;
394 wxFontStyle IsItalic(
long st)
const;
396 bool IsUnderlined(
long st)
const {
return m_styleStore[st].IsUnderlined();}
403 {
return m_labelWidth * 14; }
407 {
return m_labelWidth; }
411 if(m_labelWidth != labelWidth)
413 m_labelWidth = labelWidth;
431 int AutosaveMinutes()
const {
return m_autoSaveMinutes;}
432 void AutosaveMinutes(
int minutes){m_autoSaveMinutes = minutes;}
491 if(m_indent != indent)
496 bool IncrementalSearch()
const {
return m_incrementalSearch;}
499 void IncrementalSearch(
bool incrementalSearch) { m_incrementalSearch = incrementalSearch; }
501 int MaxLayoutTime()
const {
return m_maxLayoutTime; }
502 void MaxLayoutTime(
int time) { m_maxLayoutTime = time; }
504 enum class LayoutStrategy {
505 layout2DWheneverPossible = 0,
509 LayoutStrategy GetLayoutStrategy()
const {
return m_layoutStrategy; }
510 void SetLayoutStrategy(LayoutStrategy s) {
511 if (s != m_layoutStrategy)
513 m_layoutStrategy = s;
546 if ((mode != m_oversizedMatrices) ||
547 (perMatrixOverridable != m_oversizedMatricesOverridable))
549 m_oversizedMatrices = mode;
550 m_oversizedMatricesOverridable = perMatrixOverridable;
563 if (requested && m_oversizedMatricesOverridable)
565 return m_oversizedMatrices;
582 ImageBackdrop GetImageBackdrop()
const {
return m_imageBackdrop; }
583 void SetImageBackdrop(
ImageBackdrop mode) { m_imageBackdrop = mode; }
589 switch (m_imageBackdrop) {
616 void SetLayoutDeadline(
int seconds) {
619 void ClearLayoutCancelled() {
622 bool IsLayoutCancelled()
const {
645 return m_lineWidth_em;
650 bool AutoSaveAsTempFile()
const {
return m_autoSaveAsTempFile;}
651 void AutoSaveAsTempFile(
bool asTempFile){m_autoSaveAsTempFile = asTempFile;}
655 { m_lineWidth_em = width; }
667 bool SaveUntitled()
const {
return m_saveUntitled;}
668 void SaveUntitled(
bool save) {m_saveUntitled = save;}
670 bool CursorJump()
const {
return m_cursorJump;}
671 void CursorJump(
bool save){m_cursorJump = save;}
683 bool NumpadEnterEvaluates()
const {
return m_numpadEnterEvaluates;}
684 void NumpadEnterEvaluates(
bool eval){m_numpadEnterEvaluates = eval;}
686 bool SaveImgFileName()
const {
return m_saveImgFileName;}
687 void SaveImgFileName(
bool save) { m_saveImgFileName = save;}
691 {
return m_autoWrap > 0; }
695 {
return m_autoWrap > 1; }
709 m_autoWrap = autoWrap;
718 {
return m_autoIndent; }
720 void SetAutoIndent(
bool autoIndent){m_autoIndent = autoIndent;}
725 if(m_indentMaths != indent)
727 m_indentMaths = indent;}
730 static const wxString &GetStyleName(
TextStyle textStyle);
753 static const std::vector<std::pair<TextStyle, wxString>> &
StyleConfigKeys();
780 void MakeStylesConsistent();
781 void Outdated(
bool outdated)
782 { m_outdated = outdated; }
786 {
return m_keepPercent; }
791 if(m_keepPercent != keepPercent)
793 m_keepPercent = keepPercent;
796 wxString GetTeXCMRI()
const
797 {
return m_fontCMRI; }
799 wxString GetTeXCMSY()
const
800 {
return m_fontCMSY; }
802 wxString GetTeXCMEX()
const
803 {
return m_fontCMEX; }
805 wxString GetTeXCMMI()
const
806 {
return m_fontCMMI; }
808 wxString GetTeXCMTI()
const
809 {
return m_fontCMTI; }
811 bool ShowCodeCells()
const
812 {
return m_showCodeCells; }
814 void ShowCodeCells(
bool show);
831 {
return m_renderContext.
Printing(); }
837 bool UsePngCairo()
const {
return m_usepngCairo;}
838 void UsePngCairo(
bool usepngCairo) { m_usepngCairo = usepngCairo;}
840 bool GetMatchParens()
const {
return m_matchParens; }
841 void SetMatchParens(
bool matchParens) { m_matchParens = matchParens; }
842 bool ShowMatchingParens()
const {
return m_showMatchingParens; }
843 void ShowMatchingParens(
bool show) { m_showMatchingParens = show; }
850 if(m_changeAsterisk != changeAsterisk)
852 m_changeAsterisk = changeAsterisk;
855 bool HidemultiplicationSign()
const {
return m_hidemultiplicationsign;}
857 void HidemultiplicationSign(
bool show) {
858 if(m_hidemultiplicationsign != show)
860 m_hidemultiplicationsign = show;
863 bool Latin2Greek()
const
864 {
return m_latin2greek;}
866 void Latin2Greek(
bool latin2greek) {
867 if(m_latin2greek != latin2greek)
869 m_latin2greek = latin2greek;
872 bool GreekSidebar_ShowLatinLookalikes()
const {
return m_greekSidebar_ShowLatinLookalikes;}
873 void GreekSidebar_ShowLatinLookalikes(
bool show){m_greekSidebar_ShowLatinLookalikes = show;}
875 bool GreekSidebar_Show_mu()
const {
return m_greekSidebar_Show_mu;}
876 void GreekSidebar_Show_mu(
bool show) {m_greekSidebar_Show_mu = show;}
878 wxString SymbolPaneAdditionalChars()
const
879 {
return m_symbolPaneAdditionalChars;}
880 void SymbolPaneAdditionalChars(wxString symbols) {m_symbolPaneAdditionalChars = std::move(symbols);}
889 {
return wxm::ParseSymbolShortcuts(m_symbolShortcuts);}
890 void SymbolShortcuts(
const std::vector<wxm::SymbolShortcut> &shortcuts)
891 {m_symbolShortcuts = wxm::SerializeSymbolShortcuts(shortcuts);}
910 {
return m_notifyIfIdle; }
912 void NotifyIfIdle(
bool notify) {m_notifyIfIdle = notify;}
916 {
return m_findDialogDockable; }
938 void AiChatProvider(
int provider) { m_aiChatProvider = provider; }
951 wxString AiApiKeyOpenAI()
const;
952 void AiApiKeyOpenAI(
const wxString &
key);
953 wxString AiApiKeyGoogle()
const;
954 void AiApiKeyGoogle(
const wxString &
key);
955 wxString AiApiKeyQwen()
const;
956 void AiApiKeyQwen(
const wxString &
key);
962 wxString AiApiKeyDeepSeek()
const;
963 void AiApiKeyDeepSeek(
const wxString &
key);
964 wxString AiApiKeyOpenRouter()
const;
965 void AiApiKeyOpenRouter(
const wxString &
key);
971 void AiModelAnthropic(
const wxString &model) { m_aiModelAnthropic = model; }
972 wxString AiModelOpenAI()
const {
return m_aiModelOpenAI; }
973 void AiModelOpenAI(
const wxString &model) { m_aiModelOpenAI = model; }
974 wxString AiModelGoogle()
const {
return m_aiModelGoogle; }
975 void AiModelGoogle(
const wxString &model) { m_aiModelGoogle = model; }
976 wxString AiModelQwen()
const {
return m_aiModelQwen; }
977 void AiModelQwen(
const wxString &model) { m_aiModelQwen = model; }
978 wxString AiModelGitHubModels()
const {
return m_aiModelGitHubModels; }
979 void AiModelGitHubModels(
const wxString &model) { m_aiModelGitHubModels = model; }
980 wxString AiModelDeepSeek()
const {
return m_aiModelDeepSeek; }
981 void AiModelDeepSeek(
const wxString &model) { m_aiModelDeepSeek = model; }
982 wxString AiModelOpenRouter()
const {
return m_aiModelOpenRouter; }
983 void AiModelOpenRouter(
const wxString &model) { m_aiModelOpenRouter = model; }
1004 {
return m_displayedDigits; }
1006 void SetDisplayedDigits(
long displayedDigits)
1008 wxASSERT_MSG(displayedDigits >= 0, _(
"Bug: Maximum number of digits that is to be displayed is too low!"));
1009 if(m_displayedDigits != displayedDigits)
1011 m_displayedDigits = displayedDigits;
1018 FileToSave(
const wxString &filename,
const wxMemoryBuffer &data):
1020 m_filename(filename)
1023 const wxString FileName()
const{
return m_filename;}
1024 const wxMemoryBuffer Data()
const{
return m_data;}
1026 const wxMemoryBuffer m_data;
1027 const wxString m_filename;
1034 TextsnippetToDraw(
const wxPoint &pos,
const wxString &text,
const wxColor &color):
1040 const wxPoint Pos()
const{
return m_pos;}
1041 const wxString Text()
const{
return m_text;}
1042 const wxColor Color()
const{
return m_color;}
1044 const wxPoint m_pos;
1045 const wxString m_text;
1046 const wxColor m_color;
1049 void PushFileToSave(
const wxString &filename,
const wxMemoryBuffer &data)
1050 { m_filesToSave.emplace_front(filename, data); }
1052 wxRect GetUpdateRegion()
const {
return m_renderContext.
GetUpdateRegion();}
1053 const std::list<FileToSave> &GetFilesToSave()
const {
return m_filesToSave;}
1054 void ClearFilesToSave () { m_filesToSave.clear();}
1063 void SetFilesToSave(std::list<FileToSave> files) { m_filesToSave = std::move(files); }
1064 void SetUpdateRegion(wxRect rect){m_renderContext.
SetUpdateRegion(rect);}
1070 bool GetInsertAns()
const
1071 {
return m_insertAns; }
1073 void SetInsertAns(
bool insertAns){ m_insertAns = insertAns; }
1075 bool GetOpenHCaret()
const
1076 {
return m_openHCaret; }
1078 void SetOpenHCaret(
bool openHCaret){ m_openHCaret = openHCaret; }
1080 bool RestartOnReEvaluation()
const
1081 {
return m_restartOnReEvaluation; }
1083 void RestartOnReEvaluation(
bool arg){ m_restartOnReEvaluation = arg; }
1115 {
return m_rightToLeftDocument; }
1119 if (m_rightToLeftDocument != rightToLeft)
1121 return m_rightToLeftDocument = rightToLeft;
1126 {
return m_showBrackets; }
1130 if(m_showBrackets != show)
1132 return m_showBrackets = show;
1137 {
return m_printBrackets; }
1139 showLabels GetLabelChoice()
const
1140 {
return m_showLabelChoice; }
1142 bool ShowInputLabels()
const {
return m_showInputLabels;}
1143 void ShowInputLabels(
bool show) {
1144 if(m_showInputLabels != show)
1146 m_showInputLabels = show;
1151 Appearance GetAppearance()
const {
return m_appearance; }
1162 if (m_appearance == Appearance::dark)
return true;
1163 if (m_appearance == Appearance::light)
return false;
1169 long RecentItems(){
return std::max(m_recentItems,
static_cast<long>(0));}
1170 void RecentItems(
long items){ m_recentItems = items; }
1174 {
return (m_showLabelChoice < labels_useronly); }
1178 {
return m_showLabelChoice > labels_automatic; }
1182 {
return m_showLabelChoice < labels_none; }
1186 if(m_showLabelChoice != choice)
1188 m_showLabelChoice = choice;
1193 m_printBrackets = print;
1228 {m_useInternalHelpBrowser = useInternalHelpBrowser;}
1234 {m_singlePageManual = singlePageManual;}
1248 static wxString
FindProgram(
const wxString &location);
1252 {
return m_fixReorderedIndices; }
1258 if(m_mathJaxURL_UseUser)
1259 return m_mathJaxURL;
1261 return MathJaXURL_Auto();}
1262 wxString MathJaXURL_User()
const {
return m_mathJaxURL;}
1263 bool MathJaXURL_UseUser()
const {
return m_mathJaxURL_UseUser;}
1264 void MathJaXURL_UseUser(
bool useUser){m_mathJaxURL_UseUser = useUser;}
1266 bool EnterEvaluates()
const {
return m_enterEvaluates;}
1267 void EnterEvaluates(
bool enterEvaluates) {m_enterEvaluates = enterEvaluates;}
1268 static wxString MathJaXURL_Auto() {
return wxS(
"https://cdn.jsdelivr.net/npm/mathjax@4/tex-mml-chtml.js");}
1272 bool HideMarkerForThisMessage(
const wxString& message);
1273 void HideMarkerForThisMessage(
const wxString &message,
bool hide)
1274 {m_hideMarkerForThisMessage[message] = hide;}
1275 bool UseSVG()
const {
return m_useSVG;}
1276 void UseSVG(
bool useSVG) { m_useSVG = useSVG ;}
1279 m_showLength = length;
1288 if(m_parenthesisDrawMode != mode)
1290 m_parenthesisDrawMode = mode;
1293 void TocShowsSectionNumbers(
bool showSectionNumbers) { m_TOCshowsSectionNumbers = showSectionNumbers; }
1295 bool TocShowsSectionNumbers()
const {
return m_TOCshowsSectionNumbers;}
1343 {
if (m_recalculateRequest) m_recalculateRequest(
group);}
1346 {m_recalculateRequest = std::move(callback);}
1357 {
if (m_recalculateAllRequest) m_recalculateAllRequest();}
1360 {m_recalculateAllRequest = std::move(callback);}
1362 long DefaultPort()
const {
return m_defaultPort;}
1363 void DefaultPort(
long port){m_defaultPort = port;}
1364 bool GetAbortOnError()
const {
return m_abortOnError;}
1365 void SetAbortOnError(
bool abortOnError) {m_abortOnError = abortOnError;}
1367 long GetLanguage()
const {
return m_language;}
1368 void SetLanguage(
long language) {m_language = language;}
1373 {m_maxGnuplotMegabytes = megaBytes;}
1375 bool OfferKnownAnswers()
const {
return m_offerKnownAnswers;}
1376 void OfferKnownAnswers(
bool offerKnownAnswers)
1377 {m_offerKnownAnswers = offerKnownAnswers;}
1387 {m_screenReaderAnnouncesMathML =
mathML;}
1389 wxString Documentclass()
const {
return m_documentclass;}
1390 void Documentclass(wxString clss){m_documentclass = std::move(clss);}
1391 wxString DocumentclassOptions()
const {
return m_documentclassOptions;}
1392 void DocumentclassOptions(wxString classOptions){m_documentclassOptions = std::move(classOptions);}
1397 {m_htmlEquationFormat = HTMLequationFormat;}
1399 AFontSize GetDefaultFontSize()
const {
return m_styleStore[TS_CODE_DEFAULT].GetFontSize(); }
1400 AFontSize GetMathFontSize()
const {
return m_styleStore[TS_MATH].GetFontSize(); }
1404 void SetAutosubscript_Num(
long autosubscriptnum) {m_autoSubscript = autosubscriptnum;}
1405 wxString GetAutosubscript_string()
const;
1414 void SetVisibleRegion(wxRect visibleRegion){
1415 if(m_renderContext.
GetVisibleRegion().GetWidth() != visibleRegion.GetWidth())
1419 wxRect GetVisibleRegion()
const {
return m_renderContext.
GetVisibleRegion();}
1420 void SetWorksheetPosition(wxPoint worksheetPosition){m_renderContext.
SetWorksheetPosition(worksheetPosition);}
1422 wxString MaximaShareDir()
const {
return m_maximaSession.
ShareDir();}
1423 void MaximaShareDir(wxString dir){m_maximaSession.
ShareDir(std::move(dir));}
1424 wxString MaximaDemoDir()
const {
return m_maximaSession.
DemoDir();}
1425 void MaximaDemoDir(wxString dir){m_maximaSession.
DemoDir(std::move(dir));}
1426 void InLispMode(
bool lisp){m_maximaSession.
InLispMode(lisp);}
1427 bool InLispMode()
const {
return m_maximaSession.
InLispMode();}
1428 void BitmapScale(
int factor){m_bitmapScale = factor;}
1429 int BitmapScale()
const {
return m_bitmapScale;}
1430 void DefaultPlotHeight(
int px){m_defaultPlotHeight = px;}
1431 int DefaultPlotHeight()
const {
return m_defaultPlotHeight;}
1432 void DefaultPlotWidth(
int px){m_defaultPlotWidth = px;}
1433 int DefaultPlotWidth()
const {
return m_defaultPlotWidth;}
1434 void DefaultFramerate(
double fps){m_defaultFramerate = fps;}
1435 double DefaultFramerate()
const {
return m_defaultFramerate;}
1436 void TocDepth(
int depth){m_tocDepth = depth;}
1437 int TocDepth()
const {
return m_tocDepth;}
1438 bool TeXExponentsAfterSubscript()
const {
return m_TeXExponentsAfterSubscript;}
1439 void TeXExponentsAfterSubscript(
bool ExponentsAfterSubscript)
1440 {m_TeXExponentsAfterSubscript = ExponentsAfterSubscript;}
1441 bool UsePartialForDiff()
const {
return m_usePartialForDiff;}
1442 void UsePartialForDiff(
bool usePartialForDiff)
1443 {m_usePartialForDiff = usePartialForDiff;}
1451 {
if (m_adjustWorksheetSizeRequest) m_adjustWorksheetSizeRequest();}
1454 {m_adjustWorksheetSizeRequest = std::move(callback);}
1481 bool WrapLatexMath()
const {
return m_wrapLatexMath;}
1482 void WrapLatexMath(
bool wrapLatexMath){m_wrapLatexMath = wrapLatexMath;}
1483 bool AllowNetworkHelp()
const {
return m_allowNetworkHelp;}
1484 void AllowNetworkHelp(
bool allowNetworkHelp){m_allowNetworkHelp = allowNetworkHelp;}
1485 bool ShowAllDigits()
const {
return m_showAllDigits;}
1486 void ShowAllDigits(
bool shw){
1487 if(m_showAllDigits != shw)
1489 m_showAllDigits = shw;
1491 bool LineBreaksInLongNums()
const {
return m_lineBreaksInLongNums;}
1492 void LineBreaksInLongNums(
bool brk){
1493 if(m_lineBreaksInLongNums != brk)
1495 m_lineBreaksInLongNums = brk;
1503 if(m_digitGrouping !=
group)
1505 m_digitGrouping =
group;
1511 if(m_digitGroupingMinDigits != digits)
1513 m_digitGroupingMinDigits = digits;
1518 void ExportContainsWXMX(
bool exportContainsWXMX){m_exportContainsWXMX = exportContainsWXMX;}
1519 bool ExportContainsWXMX()
const {
return m_exportContainsWXMX;}
1529 {m_htmlExportSelfContained = selfContained;}
1530 void WizardTab(
long tab){m_wizardTab = tab;}
1531 long WizardTab()
const {
return m_wizardTab;}
1533 void Display2d_Unicode(
bool unicode){m_display2d_Unicode = unicode;}
1534 bool Display2d_Unicode()
const {
return m_display2d_Unicode;}
1537 bool UseWGnuplot()
const {
return m_useWgnuplot;}
1538 void UseWGnuplot(
bool usewgnuplot) {m_useWgnuplot = usewgnuplot;}
1540 wxString TexPreamble()
const {
return m_texPreamble;}
1541 void TexPreamble(wxString texPreamble) {m_texPreamble = std::move(texPreamble);}
1543 void SetMaximaVersion(
const wxString &version){m_maximaSession.
SetMaximaVersion(version);}
1544 wxString GetMaximaVersion()
const {
return m_maximaSession.
GetMaximaVersion();}
1545 void SetMaximaArch(
const wxString &arch){m_maximaSession.
SetMaximaArch(arch);}
1546 wxString GetMaximaArch()
const {
return m_maximaSession.
GetMaximaArch();}
1547 void SetLispVersion(
const wxString &version){m_maximaSession.
SetLispVersion(version);}
1548 wxString GetLispVersion()
const {
return m_maximaSession.
GetLispVersion();}
1549 void SetLispType(
const wxString &type){m_maximaSession.
SetLispType(type);}
1550 wxString GetLispType()
const {
return m_maximaSession.
GetLispType();}
1564 bool StyleAffectsCode(
TextStyle style)
const;
1565 bool StyleAffectsMathOut(
TextStyle style)
const;
1566 bool StyleAffectsColorOnly(
TextStyle style)
const;
1605 std::random_device m_rd;
1607 std::default_random_engine m_eng;
1608 wxEnvVariableHashMap m_maximaEnvVars;
1632 static bool UseThreads(){
return m_use_threads;}
1633 static void UseThreads(
bool use){m_use_threads = use;}
1634 static void SetMaximaLang(
const wxString &LANG){m_maxima_LANG = LANG;}
1635 static wxString GetMaximaLang(){
return m_maxima_LANG;}
1638 static wxString m_maxima_LANG;
1639 std::list<FileToSave> m_filesToSave;
1643 StringBoolHash m_hideMarkerForThisMessage;
1646 mathDisplayMode m_displayMode = display_2d;
1647 static bool m_debugMode;
1648 bool m_showInputLabels;
1650 bool m_display2d_Unicode;
1651 bool m_usePartialForDiff;
1653 bool m_autoSaveAsTempFile;
1657 bool m_autodetectMaxima;
1659 bool m_autodetectHelpBrowser;
1661 bool m_useInternalHelpBrowser;
1663 bool m_singlePageManual;
1665 bool m_incrementalSearch;
1667 long m_autoSubscript;
1675 std::function<void(
GroupCell *)> m_recalculateRequest;
1677 std::function<void()> m_recalculateAllRequest;
1679 std::function<void()> m_adjustWorksheetSizeRequest;
1682 bool m_wrapLatexMath;
1683 bool m_allowNetworkHelp;
1684 bool m_exportContainsWXMX;
1685 bool m_htmlExportSelfContained;
1686 wxString m_texPreamble;
1689 bool m_TeXExponentsAfterSubscript;
1690 wxString m_helpBrowserUserLocation;
1691 wxString m_maximaUserLocation;
1693 bool m_hideBrackets;
1695 bool m_overlayScrollbars;
1697 double m_printScale;
1698 double m_printMargin_Top;
1699 double m_printMargin_Bot;
1700 double m_printMargin_Left;
1701 double m_printMargin_Right;
1703 bool m_rightToLeftDocument;
1705 bool m_showBrackets;
1707 bool m_printBrackets;
1713 bool m_changeAsterisk;
1715 bool m_notifyIfIdle;
1717 bool m_findDialogDockable;
1719 bool m_mcpServerEnabled;
1721 int m_mcpServerPort;
1723 int m_aiChatProvider;
1724 wxString m_aiModelAnthropic;
1725 wxString m_aiModelOpenAI;
1726 wxString m_aiModelGoogle;
1727 wxString m_aiModelQwen;
1728 wxString m_aiModelGitHubModels;
1729 wxString m_aiModelDeepSeek;
1730 wxString m_aiModelOpenRouter;
1732 wxString m_aiCustomProvidersJson;
1734 wxString m_aiActiveCustomProviderId;
1736 long m_displayedDigits;
1742 bool m_showAllDigits;
1744 bool m_lineBreaksInLongNums;
1746 bool m_digitGrouping;
1748 long m_digitGroupingMinDigits;
1759 double m_zoomFactor;
1761 wxString m_maximaParameters;
1763 bool m_restartOnReEvaluation;
1764 wxString m_fontCMRI, m_fontCMSY, m_fontCMEX, m_fontCMMI, m_fontCMTI;
1765 long m_lineWidth_em;
1766 showLabels m_showLabelChoice;
1767 bool m_fixReorderedIndices;
1768 wxString m_mathJaxURL;
1769 bool m_mathJaxURL_UseUser;
1770 bool m_showCodeCells;
1773 bool m_enterEvaluates;
1776 bool m_TOCshowsSectionNumbers;
1778 bool m_abortOnError;
1779 bool m_showMatchingParens;
1780 bool m_hidemultiplicationsign;
1781 bool m_offerKnownAnswers;
1782 bool m_screenReaderAnnouncesMathML;
1784 long m_maxGnuplotMegabytes;
1785 long m_defaultPlotHeight;
1786 long m_defaultPlotWidth;
1787 bool m_saveUntitled;
1789 bool m_arrowKeysSkipOutput;
1790 bool m_numpadEnterEvaluates;
1791 bool m_saveImgFileName;
1792 wxString m_documentclass;
1793 wxString m_documentclassOptions;
1796 wxColour m_defaultBackgroundColor;
1797 bool m_greekSidebar_ShowLatinLookalikes;
1799 bool m_useWgnuplot =
false;
1801 bool m_greekSidebar_Show_mu;
1802 wxString m_symbolPaneAdditionalChars;
1804 wxString m_symbolShortcuts;
1805 Appearance m_appearance = Appearance::followSystem;
1808 double m_defaultFramerate;
1810 int m_autoSaveMinutes;
1811 int m_maxLayoutTime;
1812 LayoutStrategy m_layoutStrategy = LayoutStrategy::layout2DIfFits;
1815 bool m_oversizedMatricesOverridable =
true;
1820 int m_worksheetTopOffset = 0;
1821 wxString m_wxMathML_Filename;
1822 bool m_maximaHelpInConsole =
false;
1823 std::atomic<std::int_fast32_t> m_cellCfgCnt{0};
1824 static bool m_use_threads;
1833 m_configuration = configuration;
1850 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.
Keyboard shortcuts that type a symbol into the worksheet (GH #2578).
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:230
A Type-Safe Fixed-Point Font Size.
Definition: FontAttribs.h:99
The base class all cell types the worksheet can consist of are derived from.
Definition: Cell.h:148
Stores the information about a file we need to write during the save process.
Definition: Configuration.h:1016
Stores the information about a file we need to write during the save process.
Definition: Configuration.h:1032
The configuration storage for the current worksheet.
Definition: Configuration.h:102
void SetOversizedMatrices(OversizedMatrices mode, bool perMatrixOverridable=true)
Sets how oversized matrices are shown.
Definition: Configuration.h:545
void RecalculateForce()
Force every cell to be recalculated on the next layout pass.
Definition: Configuration.h:1628
bool HTMLExportSelfContained() const
Does the HTML export produce one self-contained file?
Definition: Configuration.h:1527
wxDC * GetRecalcDC() const
Get a drawing context suitable for size calculations.
Definition: Configuration.h:374
wxString AiActiveCustomProviderId() const
Which custom provider is active, by AiCustomProviderConfig::id – meaningful only when AiChatProvider(...
Definition: Configuration.h:996
Appearance
How wxMaxima chooses between the light and the dark style set.
Definition: Configuration.h:1150
wxString HelpBrowserUserLocation() const
Returns the location of the web browser the user has selected.
Definition: Configuration.h:1237
void SetShortcutForSymbol(const wxString &symbol, const wxString &shortcut)
Gives a symbol a shortcut, or none if shortcut is empty.
Definition: Configuration.cpp:1506
wxColor EditorBackgroundColor()
Determine the default background color of editorcells.
Definition: Configuration.cpp:1015
long GetAsciiArtColumns() const
How many columns of the ASCII-art monospace font (TS_ASCIIMATHS) fit into GetLineWidth()?...
Definition: Configuration.cpp:1075
long GetAutosubscript_Num() const
Get the worksheet this configuration storage is valid for.
Definition: Configuration.h:1403
void SetViewCellPointers(ViewCellPointers *p)
Register the transient view-state half of the cell-pointer registry.
Definition: Configuration.h:1334
bool ShowAutomaticLabels() const
Do we want to show maxima's automatic labels (o1, t1, i1,...)?
Definition: Configuration.h:1173
void AutodetectHelpBrowser(bool autodetect)
Autodetect the web browser?
Definition: Configuration.h:1222
bool FontRendersChar(wxUniChar ch, const wxFont &font= *wxNORMAL_FONT)
True if we are confident that the font renders this char.
Definition: Configuration.h:1555
void MathJaXURL(wxString url)
Returns the URL MathJaX can be found at.
Definition: Configuration.h:1270
double GetInterEquationSkip() const
Extra space to leave between two equations in output cells.
Definition: Configuration.h:302
static bool GetDebugmode()
Enable costly checks?
Definition: Configuration.h:1572
bool GetChangeAsterisk() const
Use Unicode centered dots for multiplication signs?
Definition: Configuration.h:846
std::list< FileToSave > TakeFilesToSave()
Hands out the list of files to save, leaving it empty.
Definition: Configuration.h:1061
void SetZoomFactor_temporarily(double newzoom)
Sets the zoom factor without storing the new value in the config file/registry.
Definition: Configuration.h:356
static bool SystemIsDark()
Whether the OS reports a dark appearance (false where wx cannot tell).
Definition: Configuration.cpp:519
static bool ShowHelpInSidebarFromOldKey(bool stored, bool storedOnWindows, bool defaultValue)
What the "useInternalHelpBrowser" key of an old config means now.
Definition: Configuration.cpp:1332
void SetAutoWrap(long autoWrap)
Sets the auto wrap mode.
Definition: Configuration.h:708
wxSize GetPPI() const
Get the resolution.
Definition: Configuration.cpp:225
bool GetAutoWrap() const
Do we want to have automatic line breaks for text cells?
Definition: Configuration.h:690
void ClearAndEnableRedrawTracing()
Clear the memory of ReportMultipleRedraws()
Definition: Configuration.cpp:1025
void ReportMultipleRedraws()
Report if a cell has been redrawn 2 or more times during a simple Draw() command.
Definition: Configuration.cpp:1031
static wxString FindProgram(const wxString &location)
Could a maxima binary be found in the path we expect it to be in?
Definition: Configuration.cpp:586
wxString AiModelAnthropic() const
The model id to request from each provider; defaults to AiProviderDefaultModel() but the user can ove...
Definition: Configuration.h:970
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:1391
bool DrawImageBackdrop()
Whether images are to be drawn on the TS_IMAGE_BACKDROP colour right now.
Definition: Configuration.h:588
void FontChanged()
To be called if a font has changed.
Definition: Configuration.h:627
static double GetMaxZoomFactor()
The upper limit we allow for the zoom factor.
Definition: Configuration.h:293
wxBrush GetTooltipBrush() const
Get the brush to be used for worksheet objects that provide a mouse-over tooltip.
Definition: Configuration.cpp:566
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:523
bool HideBrackets() const
Hide brackets that are not under the pointer?
Definition: Configuration.h:317
bool NotifyIfIdle() const
Notify the user if maxima is idle?
Definition: Configuration.h:909
OversizedMatrices OversizedMatricesFor(std::optional< OversizedMatrices > requested) const
How one specific matrix that is too large for the window is shown.
Definition: Configuration.h:562
void RequestRecalculateAll() const
Ask the view to schedule a recalculation of the WHOLE worksheet.
Definition: Configuration.h:1356
static EscCodeIterator EscCodesBegin()
Iterators over the escape code list.
Definition: Configuration.cpp:531
void SetPrinting(bool printing)
Are we currently printing?
Definition: Configuration.cpp:1043
static wxString MaximaDefaultLocation()
The auto-detected maxima location.
Definition: Configuration.cpp:1171
bool McpServerEnabled() const
Run the MCP (Model Context Protocol) server, exposing the current worksheet's contents (cells,...
Definition: Configuration.h:926
static constexpr long DigitGroupingMinDigits_Min
The smallest value DigitGroupingMinDigits() accepts: 1 digit has no groups.
Definition: Configuration.h:1516
int McpServerPort() const
Which localhost TCP port the MCP server listens on, if enabled.
Definition: Configuration.h:930
void SetLabelChoice(showLabels choice)
Sets the value of the Configuration ChoiceBox that treads displaying labels.
Definition: Configuration.h:1185
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:1323
void SetKeepPercent(bool keepPercent)
Do we want to display "%e" as "%e" and "%pi" as "%pi"?
Definition: Configuration.h:789
bool SinglePageManual() const
Prefer the single-page manual?
Definition: Configuration.h:1231
void ClearMaximaEnvVars()
Forget all custom environment variables for the maxima process.
Definition: Configuration.h:196
void WriteStyles(const wxString &file={})
Saves the style settings.
Definition: Configuration.cpp:1532
const std::vector< TextStyle > & GetMathStylesList() const
Which styles affect how math output is displayed?
Definition: Configuration.h:1561
DocumentCellPointers * GetDocumentCellPointers() const
The registry of special cells (selection, active cell, errors, ...) of this document.
Definition: Configuration.h:1328
wxColor DefaultBackgroundColor()
Determine the default background color of the worksheet.
Definition: Configuration.cpp:1011
bool UseDarkMode() const
Whether the dark style set is currently active.
Definition: Configuration.h:1161
wxString MaximaUserLocation() const
Returns the location of the maxima binary the user has selected.
Definition: Configuration.h:1214
Style * GetWritableStyle(TextStyle textStyle)
Get the text Style for a given text style identifier.
Definition: Configuration.h:1309
wxCoord GetLabelWidth() const
Get the width of worksheet labels [in unscaled pixels].
Definition: Configuration.h:402
void WriteSettings(const wxString &file={})
Saves the settings to a file.
Definition: Configuration.cpp:1203
wxString MaximaHelpFormatCommand() const
The command that sets Maxima's output_format_for_help accordingly.
Definition: Configuration.cpp:932
mathDisplayMode DisplayMode() const
Does maxima output 1D, 2D or 2D ASCII equations?
Definition: Configuration.h:201
long DigitGroupingMinDigits() const
How many digits a number needs before DigitGrouping() groups them.
Definition: Configuration.h:1508
wxCoord GetIndent() const
Get the indentation of GroupCells.
Definition: Configuration.h:417
std::int_fast32_t CellCfgCnt() const
A counter that increases every time we need to recalculate all worksheet cells.
Definition: Configuration.h:1621
bool ShowLabels() const
Do we want at all to show labels?
Definition: Configuration.h:1181
bool FindDialogDockable() const
Show "Find and Replace" as a dockable sidebar instead of a floating dialog?
Definition: Configuration.h:915
wxString MaximaParameters() const
Parameters to the maxima binary.
Definition: Configuration.h:1203
wxSize GetCanvasSize() const
Reads the size of the current worksheet's visible window. See SetCanvasSize.
Definition: Configuration.h:1086
void InternalHelpBrowser(bool useInternalHelpBrowser)
Use the internal help browser? If not a external web browser is used.
Definition: Configuration.h:1227
double GetZoomFactor() const
Determines the zoom factor the worksheet is displayed at.
Definition: Configuration.h:370
long LineWidth_em() const
The minimum sensible line width in widths of a letter.
Definition: Configuration.h:642
void SinglePageManual(bool singlePageManual)
Prefer the single-page manual?
Definition: Configuration.h:1233
ImageBackdrop
What is drawn behind the transparent parts of an image (GH #2227)
Definition: Configuration.h:574
@ none
Nothing: the worksheet shows through.
@ always
Always the backdrop colour.
@ onDarkBackground
The backdrop colour, but only if the worksheet's background is dark (the default)
wxString AiApiKeyGitHubModels() const
A GitHub personal access token (fine-grained, "Models: read" permission) – see AiProviderKind::GitHub...
bool IndentMaths() const
Do we want to indent all maths?
Definition: Configuration.h:723
wxString MaximaLocation() const
Returns the location of the maxima binary.
Definition: Configuration.cpp:1164
void SetBackgroundBrush(const wxBrush &brush)
Set the brush to be used for the worksheet background.
Definition: Configuration.cpp:562
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:1525
bool FixedFontInTextControls() const
Use a typewriter font in wizard entry fields that can contain maxima commands?
Definition: Configuration.h:247
MatrixScrollHost * GetMatrixScrollHost() const
What gives a scrolling matrix its scrollbars, if anything.
Definition: Configuration.h:606
bool GetAutoIndent() const
Do we want automatic indentation?
Definition: Configuration.h:717
long LabelWidth() const
Get the width of worksheet labels [in chars].
Definition: Configuration.h:406
wxString ShortcutForSymbol(const wxString &symbol) const
The shortcut that types this symbol, or an empty string.
Definition: Configuration.cpp:1499
void SetRecalcContext(wxDC &dc)
Set the drawing context that is currently active.
Definition: Configuration.h:238
double PrintScale() const
Hide brackets that are not under the pointer?
Definition: Configuration.h:337
wxString GetWorkingDirectory() const
Get maxima's working directory.
Definition: Configuration.h:210
long GetBaseIndent() const
The y position the worksheet starts at.
Definition: Configuration.h:468
void SetRecalculateAllRequestCallback(std::function< void()> callback)
Set the callback RequestRecalculateAll() / RecalculateForce() notify through.
Definition: Configuration.h:1359
void DisplayMode(mathDisplayMode mode)
Tell the config if maxima outputs 1D, 2D or 2D ASCII equations, currently.
Definition: Configuration.h:203
long MaxGnuplotMegabytes() const
The maximum number of Megabytes of gnuplot sources we should store.
Definition: Configuration.h:1371
long GetGroupSkip() const
The vertical space between GroupCells.
Definition: Configuration.h:477
void HelpBrowserUserLocation(wxString helpBrowser)
Sets the location of the web browser the user has detected.
Definition: Configuration.h:1240
void SetWorksheetTopOffset(int offset)
Sets the extra top margin.
Definition: Configuration.h:465
void SetWorkingDirectory(wxString dir)
Set maxima's working directory.
Definition: Configuration.h:206
bool CheckKeepPercent() const
Do we want to display "%e" as "%e" and "%pi" as "%pi"?
Definition: Configuration.h:785
const std::vector< TextStyle > & GetCodeStylesList() const
Which styles affect how code is displayed?
Definition: Configuration.h:1559
static const wxString CharsNeedingQuotes()
Returns a list of chars we need to escape in maxima.
Definition: Configuration.h:387
void SetAppearance(Appearance a)
Choose the appearance and update which style set is active.
Definition: Configuration.h:1153
wxString MathJaXURL() const
Returns the URL MathJaX can be found at.
Definition: Configuration.h:1257
bool RightToLeftDocument() const
Does the document read right-to-left (Arabic, Hebrew, Persian, Urdu)?
Definition: Configuration.h:1114
void UpdateBackgroundBrush()
Refresh the cached document-background brush from the active style set.
Definition: Configuration.cpp:557
void AutodetectMaxima(bool autodetectmaxima)
Autodetect maxima's location?
Definition: Configuration.h:1200
void SetChangeAsterisk(bool changeAsterisk)
Use Unicode centered dots for multiplication signs?
Definition: Configuration.h:849
std::random_device::result_type RandomEntropy()
One sample of OS entropy (std::random_device).
Definition: Configuration.h:1611
bool IsOperator(const wxString &name) const
Coincides name with a operator known to maxima?
Definition: Configuration.h:191
bool MaximaHelpInConsole() const
Does Maxima answer ?, ?? and describe() with plain text in the worksheet?
Definition: Configuration.h:1582
void PrintScale(double scale)
Define if we want to hide brackets that are not under the pointer.
Definition: Configuration.h:341
void InitStyles()
Initialize the text styles on construction.
Definition: Configuration.cpp:512
static void SetDebugmode()
Enable costly checks.
Definition: Configuration.h:1570
static double GetMinZoomFactor()
The lower limit we allow for the zoom factor.
Definition: Configuration.h:289
bool AutodetectMaxima() const
Autodetect maxima's location? (If false the user-specified location is used)
Definition: Configuration.h:1198
wxScrolledCanvas * GetWorkSheet() const
Get the worksheet canvas this configuration storage is valid for.
Definition: Configuration.h:1317
bool ClipToDrawRegion() const
Do we want to save time by only redrawing the area currently shown on the screen?
Definition: Configuration.h:1411
void SetZoomFactor(double newzoom)
Sets the zoom factor the worksheet is displayed at.
Definition: Configuration.cpp:1112
bool DigitGrouping() const
Separate the digit groups of long numbers by a small gap? (GH #192)
Definition: Configuration.h:1501
bool ShowBrackets() const
Show the cell brackets [displayed left to each group cell showing its extend]?
Definition: Configuration.h:1125
bool FixReorderedIndices() const
Renumber out-of-order cell labels on saving.
Definition: Configuration.h:1251
void AddMaximaOperator(const wxString &name)
Register name as an operator known to maxima.
Definition: Configuration.h:193
bool GetPrinting() const
Are we currently printing?
Definition: Configuration.h:830
wxBrush GetBackgroundBrush() const
Get the brush to be used for the worksheet background.
Definition: Configuration.h:251
void SetIndent(long indent)
Set the indentation of GroupCells.
Definition: Configuration.h:489
bool GetAutoWrapCode() const
Do we want to have automatic line breaks for code cells?
Definition: Configuration.h:694
long GetLineWidth() const
Returns the maximum sensible width for a text line [in characters]:
Definition: Configuration.cpp:1052
void SetFilesToSave(std::list< FileToSave > files)
Replaces the list of files to save; see TakeFilesToSave().
Definition: Configuration.h:1063
void FixedFontInTextControls(bool fixed)
Use a typewriter font in wizard entry fields that can contain maxima commands?
Definition: Configuration.h:249
static EscCodeIterator EscCodesEnd()
Iterators over the escape code list.
Definition: Configuration.cpp:534
void RequestAdjustWorksheetSize() const
Ask the view (if any) to re-adjust its worksheet (scroll) size.
Definition: Configuration.h:1450
wxCoord GetCellBracketWidth() const
The width we allocate for our cell brackets.
Definition: Configuration.h:311
void MaximaUserLocation(wxString maxima)
Sets the location of the maxima binary.
Definition: Configuration.h:1217
bool OfferInternalHelpBrowser() const
If we decide that the HTML browser in the sidebar doesn't work for every platform....
Definition: Configuration.cpp:1339
bool OverlayScrollbars() const
Use GTK's overlay scrollbars on the worksheet?
Definition: Configuration.h:330
void ClipToDrawRegion(bool clipToDrawRegion)
Do we want to save time by only redrawing the area currently shown on the screen?
Definition: Configuration.h:1413
wxColour GetColor(TextStyle style)
Gets the color for a text style.
Definition: Configuration.cpp:1304
long GetCursorWidth() const
How much vertical space is to be left between two group cells?
Definition: Configuration.h:435
static wxString m_configfileLocation_override
Where to store the configuration.
Definition: Configuration.h:276
static wxColour TooltipMarkerColour(const wxColour &background)
The color the background of a cell with a mouse-over tooltip is tinted to.
Definition: Configuration.cpp:571
void LineWidth_em(long width)
Set the minimum sensible line width in widths of a letter.
Definition: Configuration.h:654
void MakeTemporary()
Makes this configuration temporary.
Definition: Configuration.h:232
std::default_random_engine & RandomEngine()
The pseudo-random engine, e.g. to feed a distribution.
Definition: Configuration.h:1613
wxString MaximaHelpFormatName() const
The value of Maxima's output_format_for_help MaximaHelpInConsole() stands for.
Definition: Configuration.cpp:926
void HideBrackets(bool hide)
Define if we want to hide brackets that are not under the pointer.
Definition: Configuration.h:321
double GetDefaultLineWidth() const
Calculates the default line width for the worksheet.
Definition: Configuration.h:633
ViewCellPointers * GetViewCellPointers() const
The transient view-state half of the cell-pointer registry (null if none).
Definition: Configuration.h:1332
int GetWorksheetTopOffset() const
An extra top margin of less than one scroll unit, in px.
Definition: Configuration.h:459
wxCoord Scale_Px(double px) const
Scales a distance [in pixels] according to the zoom factor.
Definition: Configuration.cpp:1311
void ReadConfig()
Read the config from the wxConfig object.
Definition: Configuration.cpp:633
void SetRecalculateRequestCallback(std::function< void(GroupCell *)> callback)
Set the callback RequestRecalculate() notifies the view through.
Definition: Configuration.h:1345
InitOpt
Definition: Configuration.h:176
@ temporary
This configuration is temporary and shouldn't redetect Maxima etc.
Definition: Configuration.h:178
bool InternalHelpBrowser() const
Use the internal help browser? If not a external web browser is used.
Definition: Configuration.h:1225
bool ScreenReaderAnnouncesMathML() const
Announce maxima's output to screen readers as MathML?
Definition: Configuration.h:1385
void SetParenthesisDrawMode(drawMode mode)
Which way do we want to draw parenthesis?
Definition: Configuration.h:1287
drawMode
Definition: Configuration.h:170
@ ascii
Use ascii characters only.
Definition: Configuration.h:171
@ handdrawn
A parenthesis sign that was created using draw commands.
Definition: Configuration.h:172
void OverlayScrollbars(bool overlay)
Define if the worksheet should use GTK's overlay scrollbars.
Definition: Configuration.h:334
void SetCanvasSize(wxSize siz)
Sets the size of the current worksheet's visible window.
Definition: Configuration.h:1090
void MaximaParameters(wxString parameters)
The parameters we pass to the maxima binary.
Definition: Configuration.h:1205
void NotifyOfCellRedraw(const Cell *cell)
Record that this cell has been drawn to ReportMultipleRedraws()
Definition: Configuration.cpp:1019
long ShowLength() const
The choice for the "maximum output length to display" setting.
Definition: Configuration.h:1282
void ResetAllToDefaults()
Reset the whole configuration to its default values.
Definition: Configuration.cpp:245
std::vector< wxm::SymbolShortcut > SymbolShortcuts() const
The keyboard shortcuts that type a symbol into the worksheet (GH #2578).
Definition: Configuration.h:888
OversizedMatrices
How to show a matrix too large for the window.
Definition: Configuration.h:522
@ scroll
Show a window-sized part of it, with native scrollbars.
@ elide
Leave out the middle rows/columns, marking the gap with ⋯ ⋮ ⋱ (the default)
@ showInFull
Draw it whole; the worksheet grows, and scrolls, to fit it.
int AiChatProvider() const
Which AI provider the AI chat sidebar talks to, as an AiProviderKind cast to int (0 = AiProviderKind:...
Definition: Configuration.h:937
void SetMaximaEnvVar(const wxString &name, const wxString &value)
Set a custom environment variable for the maxima process.
Definition: Configuration.h:198
wxString AiCustomProvidersJson() const
User-added custom providers (beyond the four built-in ones), as a JSON array – see AiCustomProviderCo...
Definition: Configuration.h:990
void ReadStyles(const wxString &file={})
Reads the style settings.
Definition: Configuration.cpp:1175
void SetMatrixScrollHost(MatrixScrollHost *host)
Sets the scrollbar host.
Definition: Configuration.h:614
htmlExportFormat
The export formats we support for HTML equations.
Definition: Configuration.h:144
@ mathML_mathJaX
Native MathML, plus MathJaX downloaded as a fall-back only for the few browsers that still lack MathM...
Definition: Configuration.h:152
@ mathJaX_TeX
Deprecated: the TeX-via-MathJaX HTML export was removed. The value is kept so saved configurations mi...
Definition: Configuration.h:148
@ mathML
Native MathML with no MathJaX at all: the exported page makes no external requests....
Definition: Configuration.h:156
void SetAdjustWorksheetSizeRequestCallback(std::function< void()> callback)
Set the callback RequestAdjustWorksheetSize() notifies the view through.
Definition: Configuration.h:1453
void SetDocumentCellPointers(DocumentCellPointers *p)
Register the document-model half of the cell-pointer registry.
Definition: Configuration.h:1330
bool UseUserLabels() const
Do we want at all to show labels?
Definition: Configuration.h:1177
bool ArrowKeysSkipOutput() const
Do the Up and Down keys skip over a cell's output?
Definition: Configuration.h:680
void WriteSymbolShortcuts() const
Writes the symbol shortcuts to the config file right away.
Definition: Configuration.cpp:1518
bool UpdateNeeded() const
true means: The system's config storage has changed since the configuration has been read
Definition: Configuration.cpp:1351
std::size_t ShowLength_Bytes() const
The "maximum output length to display" setting in cells.
Definition: Configuration.cpp:1550
long GetDisplayedDigits() const
Returns the maximum number of displayed digits.
Definition: Configuration.h:1003
const Style * GetStyle(TextStyle textStyle) const
Get the text Style for a given text style identifier.
Definition: Configuration.h:1301
bool AutodetectHelpBrowser() const
Autodetect the web browser? (If false the user-specified location is used)
Definition: Configuration.h:1220
void SetWorkSheet(wxScrolledCanvas *workSheet)
Set the worksheet canvas this configuration storage is valid for.
Definition: Configuration.cpp:216
wxString AiApiKeyAnthropic() const
The user's API key for each provider, kept separate so switching providers in Options doesn't lose th...
void ShowLength(long length)
The choice for the "maximum output length to display" setting.
Definition: Configuration.h:1278
void LabelWidth(long labelWidth)
Set the width of worksheet labels [in chars].
Definition: Configuration.h:409
void RequestRecalculate(GroupCell *group) const
Ask the view (if any) to recalculate the layout starting at the given group cell.
Definition: Configuration.h:1342
const std::vector< TextStyle > & GetColorOnlyStylesList() const
Which styles affect only colors?
Definition: Configuration.h:1563
bool PrintBrackets() const
Print the cell brackets [displayed left to each group cell showing its extend]?
Definition: Configuration.h:1136
The document-model half of the cell-pointer registry.
Definition: CellPointers.h:54
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:88
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:94
bool InLispMode() const
Is maxima currently in lisp mode (where commands need no trailing ";")?
Definition: MaximaSessionInfo.h:107
void SetLispType(const wxString &type)
Sets the type of the lisp the connected Maxima runs on.
Definition: MaximaSessionInfo.h:91
void SetMaximaArch(const wxString &arch)
Sets the processor architecture the connected Maxima runs on.
Definition: MaximaSessionInfo.h:83
wxString GetMaximaArch() const
The processor architecture the connected Maxima runs on.
Definition: MaximaSessionInfo.h:81
wxString GetLispVersion() const
The version of the lisp the connected Maxima runs on.
Definition: MaximaSessionInfo.h:85
wxString DemoDir() const
The directory maxima's demo files live in.
Definition: MaximaSessionInfo.h:102
void AddOperator(const wxString &name)
Registers name as an operator known to maxima.
Definition: MaximaSessionInfo.h:74
void SetWorkingDirectory(wxString dir)
Sets maxima's working directory.
Definition: MaximaSessionInfo.h:96
wxString ShareDir() const
The directory maxima's shared files (e.g. the manual) live in.
Definition: MaximaSessionInfo.h:98
wxString GetLispType() const
The type of the lisp the connected Maxima runs on.
Definition: MaximaSessionInfo.h:89
void SetMaximaVersion(const wxString &version)
Sets the version of the connected Maxima.
Definition: MaximaSessionInfo.h:79
void SetLispVersion(const wxString &version)
Sets the version of the lisp the connected Maxima runs on.
Definition: MaximaSessionInfo.h:87
wxString GetMaximaVersion() const
The version of the connected Maxima.
Definition: MaximaSessionInfo.h:77
bool IsOperator(const wxString &name) const
Is this name an operator known to maxima?
Definition: MaximaSessionInfo.h:71
Clears the configuration's "Clip to draw region" flag until this class is left.
Definition: Configuration.h:1846
Sets the configuration's "printing" flag until this class is left.
Definition: Configuration.h:1829
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:67
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:109
const std::vector< TextStyle > & MathStylesList() const
The styles that share the 2d-math font.
Definition: Styles.h:107
const std::vector< TextStyle > & CodeStylesList() const
The styles that share the code-default font/attributes.
Definition: Styles.h:105
void SetUseDark(bool dark)
Select which set indexing/iteration return.
Definition: Styles.h:57
The view/interaction half of the cell-pointer registry.
Definition: CellPointers.h:341
One mechanically persisted scalar setting: its config key and the member variable it is stored in.
Definition: Configuration.h:760
const wxChar * key
The key the setting is stored under in the configuration store.
Definition: Configuration.h:762
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:767