22#ifndef CONFIGURATION_H
23#define CONFIGURATION_H
28#include <wx/display.h>
29#include <wx/fontenum.h>
30#include <wx/hashmap.h>
36#include <unordered_map>
42#include <wx/wupdlock.h>
44#define MC_LINE_SKIP Scale_Px(2)
45#define MC_TEXT_PADDING Scale_Px(1)
47#define PAREN_OPEN_TOP_UNICODE "\u239b"
48#define PAREN_OPEN_EXTEND_UNICODE "\u239c"
49#define PAREN_OPEN_BOTTOM_UNICODE "\u239d"
50#define PAREN_CLOSE_TOP_UNICODE "\u239e"
51#define PAREN_CLOSE_EXTEND_UNICODE "\u239f"
52#define PAREN_CLOSE_BOTTOM_UNICODE "\u23a0"
53#define SUM_SIGN "\u2211"
54#define PROD_SIGN "\u220F"
59#define MC_HCARET_WIDTH 25
61#define MC_EXP_INDENT static_cast<wxCoord>(Scale_Px(2))
62static constexpr AFontSize MC_MIN_SIZE{ 6.0f };
63static constexpr AFontSize MC_MAX_SIZE{ 48.0f };
66#define LABELWIDTH_MIN 3
67#define LABELWIDTH_MAX 10
87 enum maximaHelpFormat{
99 html_export_invalidChoice
102 enum showLabels : int8_t
104 labels_automatic = 0,
105 labels_prefer_user = 1,
108 labels_invalidSelection
131 typedef std::unordered_map <wxString, bool, wxStringHash> StringBoolHash;
132 typedef std::unordered_map <wxString, wxString, wxStringHash> RenderablecharsHash;
133 typedef std::unordered_map <wxString, int, wxStringHash> StringHash;
139 const wxEnvVariableHashMap& MaximaEnvVars()
const {
return m_maximaEnvVars;}
140 wxEnvVariableHashMap m_maximaEnvVars;
149 { m_workingdir = std::move(dir); }
153 {
return m_workingdir; }
172 void UnsetContext() {m_dc = NULL;}
195 using EscCodeContainer = std::unordered_map<wxString, wxString, wxStringHash>;
196 using EscCodeIterator = EscCodeContainer::const_iterator;
199 static const wxString &
GetEscCode(
const wxString &key);
235 {
return m_hideBrackets; }
242 {
return m_printScale; }
247 void PrintMargin_Top(
double margin){m_printMargin_Top = margin;}
248 void PrintMargin_Bot(
double margin){m_printMargin_Bot = margin;}
249 void PrintMargin_Left(
double margin){m_printMargin_Left = margin;}
250 void PrintMargin_Right(
double margin){m_printMargin_Right = margin;}
251 double PrintMargin_Top()
const {
return m_printMargin_Top;}
252 double PrintMargin_Bot()
const {
return m_printMargin_Bot;}
253 double PrintMargin_Left()
const {
return m_printMargin_Left;}
254 double PrintMargin_Right()
const {
return m_printMargin_Right;}
261 if(m_zoomFactor != newzoom)
263 m_zoomFactor = newzoom;
275 {
return m_zoomFactor; }
281 void SetRecalcDC(wxDC *dc)
284 wxString GetFontName(
TextStyle ts = TS_CODE_DEFAULT)
const;
288 wxString GetSymbolFontName()
const;
293 return wxString(wxS(
"°,\\'\"()[]-{}^+*/&§?:;=#<>$"));
296 wxFontWeight IsBold(
long st)
const;
298 wxFontStyle IsItalic(
long st)
const;
300 bool IsUnderlined(
long st)
const {
return m_styles[st].IsUnderlined();}
307 {
return m_labelWidth * 14; }
311 {
return m_labelWidth; }
315 if(m_labelWidth != labelWidth)
317 m_labelWidth = labelWidth;
335 int AutosaveMinutes()
const {
return m_autoSaveMinutes;}
336 void AutosaveMinutes(
int minutes){m_autoSaveMinutes = minutes;}
378 if(m_indent != indent)
383 bool IncrementalSearch()
const {
return m_incrementalSearch;}
386 void IncrementalSearch(
bool incrementalSearch) { m_incrementalSearch = incrementalSearch; }
388 int MaxLayoutTime()
const {
return m_maxLayoutTime; }
389 void MaxLayoutTime(
int time) { m_maxLayoutTime = time; }
394 CharsExist(
const wxString &chars,
bool exist) : chars(chars), exist(exist) {}
396 std::vector<CharsExist> m_charsInFont;
401 m_charsInFont.clear();
418 return m_lineWidth_em;
423 bool AutoSaveAsTempFile()
const {
return m_autoSaveAsTempFile;}
424 void AutoSaveAsTempFile(
bool asTempFile){m_autoSaveAsTempFile = asTempFile;}
428 { m_lineWidth_em = width; }
435 bool SaveUntitled()
const {
return m_saveUntitled;}
436 void SaveUntitled(
bool save) {m_saveUntitled = save;}
438 bool CursorJump()
const {
return m_cursorJump;}
439 void CursorJump(
bool save){m_cursorJump = save;}
441 bool NumpadEnterEvaluates()
const {
return m_numpadEnterEvaluates;}
442 void NumpadEnterEvaluates(
bool eval){m_numpadEnterEvaluates = eval;}
444 bool SaveImgFileName()
const {
return m_saveImgFileName;}
445 void SaveImgFileName(
bool save) { m_saveImgFileName = save;}
449 {
return m_autoWrap > 0; }
466 {
return m_autoIndent; }
468 void SetAutoIndent(
bool autoIndent){m_autoIndent = autoIndent;}
473 if(m_indentMaths != indent)
475 m_indentMaths = indent;}
478 static const wxString &GetStyleName(
TextStyle textStyle);
494 void MakeStylesConsistent();
495 void Outdated(
bool outdated)
496 { m_outdated = outdated; }
500 {
return m_keepPercent; }
505 if(m_keepPercent != keepPercent)
507 m_keepPercent = keepPercent;
510 wxString GetTeXCMRI()
const
511 {
return m_fontCMRI; }
513 wxString GetTeXCMSY()
const
514 {
return m_fontCMSY; }
516 wxString GetTeXCMEX()
const
517 {
return m_fontCMEX; }
519 wxString GetTeXCMMI()
const
520 {
return m_fontCMMI; }
522 wxString GetTeXCMTI()
const
523 {
return m_fontCMTI; }
525 bool ShowCodeCells()
const
526 {
return m_showCodeCells; }
528 void ShowCodeCells(
bool show);
545 {
return m_printing; }
559 bool UsePngCairo()
const {
return m_usepngCairo;}
560 void UsePngCairo(
bool usepngCairo) { m_usepngCairo = usepngCairo;}
562 bool GetMatchParens()
const {
return m_matchParens; }
563 void SetMatchParens(
bool matchParens) { m_matchParens = matchParens; }
564 bool ShowMatchingParens()
const {
return m_showMatchingParens; }
565 void ShowMatchingParens(
bool show) { m_showMatchingParens = show; }
572 if(m_changeAsterisk != changeAsterisk)
574 m_changeAsterisk = changeAsterisk;
577 bool HidemultiplicationSign()
const {
return m_hidemultiplicationsign;}
579 void HidemultiplicationSign(
bool show) {
580 if(m_hidemultiplicationsign != show)
582 m_hidemultiplicationsign = show;
585 bool Latin2Greek()
const
586 {
return m_latin2greek;}
588 void Latin2Greek(
bool latin2greek) {
589 if(m_latin2greek != latin2greek)
591 m_latin2greek = latin2greek;
594 bool GreekSidebar_ShowLatinLookalikes()
const {
return m_greekSidebar_ShowLatinLookalikes;}
595 void GreekSidebar_ShowLatinLookalikes(
bool show){m_greekSidebar_ShowLatinLookalikes = show;}
597 bool GreekSidebar_Show_mu()
const {
return m_greekSidebar_Show_mu;}
598 void GreekSidebar_Show_mu(
bool show) {m_greekSidebar_Show_mu = show;}
600 wxString SymbolPaneAdditionalChars()
const
601 {
return m_symbolPaneAdditionalChars;}
602 void SymbolPaneAdditionalChars(wxString symbols) {m_symbolPaneAdditionalChars = std::move(symbols);}
606 {
return m_notifyIfIdle; }
608 void NotifyIfIdle(
bool notify) {m_notifyIfIdle = notify;}
615 {
return m_displayedDigits; }
617 void SetDisplayedDigits(
long displayedDigits)
619 wxASSERT_MSG(displayedDigits >= 0, _(
"Bug: Maximum number of digits that is to be displayed is too low!"));
620 if(m_displayedDigits != displayedDigits)
622 m_displayedDigits = displayedDigits;
629 FileToSave(
const wxString &filename,
const wxMemoryBuffer &data):
634 const wxString FileName()
const{
return m_filename;}
635 const wxMemoryBuffer Data()
const{
return m_data;}
637 const wxMemoryBuffer m_data;
638 const wxString m_filename;
645 TextsnippetToDraw(
const wxPoint &pos,
const wxString &text,
const wxColor &color):
651 const wxPoint Pos()
const{
return m_pos;}
652 const wxString Text()
const{
return m_text;}
653 const wxColor Color()
const{
return m_color;}
656 const wxString m_text;
657 const wxColor m_color;
661 void PushFileToSave(
const wxString &filename,
const wxMemoryBuffer &data)
662 { m_filesToSave.emplace_front(
FileToSave(filename, data)); }
664 wxRect GetUpdateRegion()
const {
return m_updateRegion;}
665 const std::list<FileToSave> &GetFilesToSave()
const {
return m_filesToSave;}
666 void ClearFilesToSave () { m_filesToSave.clear();}
667 void SetUpdateRegion(wxRect rect){m_updateRegion = rect;}
673 bool GetInsertAns()
const
674 {
return m_insertAns; }
676 void SetInsertAns(
bool insertAns){ m_insertAns = insertAns; }
678 bool GetOpenHCaret()
const
679 {
return m_openHCaret; }
681 void SetOpenHCaret(
bool openHCaret){ m_openHCaret = openHCaret; }
683 bool RestartOnReEvaluation()
const
684 {
return m_restartOnReEvaluation; }
686 void RestartOnReEvaluation(
bool arg){ m_restartOnReEvaluation = arg; }
690 {
return m_canvasSize; }
695 if(m_canvasSize.GetWidth() != siz.GetWidth())
702 {
return m_showBrackets; }
706 if(m_showBrackets != show)
708 return m_showBrackets = show;
713 {
return m_printBrackets; }
715 showLabels GetLabelChoice()
const
716 {
return m_showLabelChoice; }
718 bool ShowInputLabels()
const {
return m_showInputLabels;}
719 void ShowInputLabels(
bool show) {
720 if(m_showInputLabels != show)
722 m_showInputLabels = show;
725 bool InvertBackground()
const {
return m_invertBackground;}
726 void InvertBackground(
bool invert){ m_invertBackground = invert; }
728 long UndoLimit(){
return std::max(m_undoLimit,
static_cast<long>(0));}
729 void UndoLimit(
long limit){ m_undoLimit = limit; }
731 long RecentItems(){
return std::max(m_recentItems,
static_cast<long>(0));}
732 void RecentItems(
long items){ m_recentItems = items; }
736 {
return (m_showLabelChoice < labels_useronly); }
740 {
return m_showLabelChoice > labels_automatic; }
744 {
return m_showLabelChoice < labels_none; }
748 if(m_showLabelChoice != choice)
750 m_showLabelChoice = choice;
755 m_printBrackets = print;
790 {m_useInternalHelpBrowser = useInternalHelpBrowser;}
796 {m_singlePageManual = singlePageManual;}
810 static wxString
FindProgram(
const wxString &location);
814 {
return m_fixReorderedIndices; }
820 if(m_mathJaxURL_UseUser)
823 return MathJaXURL_Auto();}
824 wxString MathJaXURL_User()
const {
return m_mathJaxURL;}
825 bool MathJaXURL_UseUser()
const {
return m_mathJaxURL_UseUser;}
826 void MathJaXURL_UseUser(
bool useUser){m_mathJaxURL_UseUser = useUser;}
828 bool EnterEvaluates()
const {
return m_enterEvaluates;}
829 void EnterEvaluates(
bool enterEvaluates) {m_enterEvaluates = enterEvaluates;}
830 static wxString MathJaXURL_Auto() {
return wxS(
"https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js");}
832 void MathJaXURL(wxString url){m_mathJaxURL = std::move(url);}
834 bool CopyBitmap()
const {
return m_copyBitmap;}
835 void CopyBitmap(
bool copyBitmap){ m_copyBitmap = copyBitmap; }
837 bool CopyMathML()
const {
return m_copyMathML;}
838 void CopyMathML(
bool copyMathML){ m_copyMathML = copyMathML;}
839 bool CopyMathMLHTML()
const {
return m_copyMathMLHTML;}
840 void CopyMathMLHTML(
bool copyMathMLHTML){ m_copyMathMLHTML = copyMathMLHTML; }
841 bool HideMarkerForThisMessage(wxString message);
842 void HideMarkerForThisMessage(
const wxString &message,
bool hide)
843 {m_hideMarkerForThisMessage[message] = hide;}
844 bool CopyRTF()
const {
return m_copyRTF;}
845 void CopyRTF(
bool copyRTF) { m_copyRTF = copyRTF; }
846 bool CopySVG()
const {
return m_copySVG;}
847 void CopySVG(
bool copySVG) { m_copySVG = copySVG; }
848 bool CopyEMF()
const {
return m_copyEMF;}
849 void CopyEMF(
bool copyEMF) { m_copyEMF = copyEMF; }
850 bool UseSVG()
const {
return m_useSVG;}
851 void UseSVG(
bool useSVG) { m_useSVG = useSVG ;}
854 m_showLength = length;
863 if(m_parenthesisDrawMode != mode)
865 m_parenthesisDrawMode = mode;
868 void TocShowsSectionNumbers(
bool showSectionNumbers) { m_TOCshowsSectionNumbers = showSectionNumbers; }
870 bool TocShowsSectionNumbers()
const {
return m_TOCshowsSectionNumbers;}
872 void UseUnicodeMaths(
bool useunicodemaths)
873 { m_useUnicodeMaths = useunicodemaths; }
874 bool UseUnicodeMaths()
const {
return m_useUnicodeMaths;}
876 StringBoolHash m_hideMarkerForThisMessage;
897 long DefaultPort()
const {
return m_defaultPort;}
898 void DefaultPort(
long port){m_defaultPort = port;}
899 bool GetAbortOnError()
const {
return m_abortOnError;}
900 void SetAbortOnError(
bool abortOnError) {m_abortOnError = abortOnError;}
902 long GetLanguage()
const {
return m_language;}
903 void SetLanguage(
long language) {m_language = language;}
908 {m_maxGnuplotMegabytes = megaBytes;}
910 bool OfferKnownAnswers()
const {
return m_offerKnownAnswers;}
911 void OfferKnownAnswers(
bool offerKnownAnswers)
912 {m_offerKnownAnswers = offerKnownAnswers;}
914 wxString Documentclass()
const {
return m_documentclass;}
915 void Documentclass(wxString clss){m_documentclass = std::move(clss);}
916 wxString DocumentclassOptions()
const {
return m_documentclassOptions;}
917 void DocumentclassOptions(wxString classOptions){m_documentclassOptions = std::move(classOptions);}
922 {m_htmlEquationFormat = HTMLequationFormat;}
929 void SetAutosubscript_Num(
long autosubscriptnum) {m_autoSubscript = autosubscriptnum;}
930 wxString GetAutosubscript_string()
const;
938 void ClipToDrawRegion(
bool clipToDrawRegion){m_clipToDrawRegion = clipToDrawRegion; m_forceUpdate =
true;}
939 void SetVisibleRegion(wxRect visibleRegion){
940 if(m_visibleRegion.GetWidth() != visibleRegion.GetWidth())
942 m_visibleRegion = visibleRegion;
944 wxRect GetVisibleRegion()
const {
return m_visibleRegion;}
945 void SetWorksheetPosition(wxPoint worksheetPosition){m_worksheetPosition = worksheetPosition;}
946 wxPoint GetWorksheetPosition()
const {
return m_worksheetPosition;}
947 wxString MaximaShareDir()
const {
return m_maximaShareDir;}
948 void MaximaShareDir(wxString dir){m_maximaShareDir = std::move(dir);}
949 wxString MaximaDemoDir()
const {
return m_maximaDemoDir;}
950 void MaximaDemoDir(wxString dir){m_maximaDemoDir = std::move(dir);}
951 void InLispMode(
bool lisp){m_inLispMode = lisp;}
952 bool InLispMode()
const {
return m_inLispMode;}
953 void BitmapScale(
int factor){m_bitmapScale = factor;}
954 int BitmapScale()
const {
return m_bitmapScale;}
955 void DefaultPlotHeight(
int px){m_defaultPlotHeight = px;}
956 int DefaultPlotHeight()
const {
return m_defaultPlotHeight;}
957 void DefaultPlotWidth(
int px){m_defaultPlotWidth = px;}
958 int DefaultPlotWidth()
const {
return m_defaultPlotWidth;}
959 void DefaultFramerate(
int fps){m_defaultFramerate = fps;}
960 int DefaultFramerate()
const {
return m_defaultFramerate;}
961 void TocDepth(
int depth){m_tocDepth = depth;}
962 int TocDepth()
const {
return m_tocDepth;}
963 bool TeXExponentsAfterSubscript()
const {
return m_TeXExponentsAfterSubscript;}
964 void TeXExponentsAfterSubscript(
bool ExponentsAfterSubscript)
965 {m_TeXExponentsAfterSubscript = ExponentsAfterSubscript;}
966 bool UsePartialForDiff()
const {
return m_usePartialForDiff;}
967 void UsePartialForDiff(
bool usePartialForDiff)
968 {m_usePartialForDiff = usePartialForDiff;}
983 bool WrapLatexMath()
const {
return m_wrapLatexMath;}
984 void WrapLatexMath(
bool wrapLatexMath){m_wrapLatexMath = wrapLatexMath;}
985 bool AllowNetworkHelp()
const {
return m_allowNetworkHelp;}
986 void AllowNetworkHelp(
bool allowNetworkHelp){m_allowNetworkHelp = allowNetworkHelp;}
987 bool ShowAllDigits()
const {
return m_showAllDigits;}
988 void ShowAllDigits(
bool shw){
989 if(m_showAllDigits != shw)
991 m_showAllDigits = shw;
993 bool LineBreaksInLongNums()
const {
return m_lineBreaksInLongNums;}
994 void LineBreaksInLongNums(
bool brk){
995 if(m_lineBreaksInLongNums != brk)
997 m_lineBreaksInLongNums = brk;
999 int MaxClipbrdBitmapMegabytes()
const {
return m_maxClipbrd_BitmapMegabytes;}
1000 void MaxClipbrdBitmapMegabytes(
int maxClipbrd_BitmapMegabytes)
1001 {m_maxClipbrd_BitmapMegabytes = maxClipbrd_BitmapMegabytes;}
1003 void MaximaUsesHtmlBrowser(
bool maximaUsesHhtmlBrowser){m_maximaUsesHhtmlBrowser = maximaUsesHhtmlBrowser;}
1004 bool MaximaUsesHtmlBrowser()
const {
return m_maximaUsesHhtmlBrowser;}
1005 void MaximaUsesWxmaximaBrowser(
bool maximaUsesWxmaximaBrowser){m_maximaUsesWxmaximaBrowser = maximaUsesWxmaximaBrowser;}
1007 void ExportContainsWXMX(
bool exportContainsWXMX){m_exportContainsWXMX = exportContainsWXMX;}
1008 bool ExportContainsWXMX()
const {
return m_exportContainsWXMX;}
1009 void WizardTab(
long tab){m_wizardTab = tab;}
1010 long WizardTab()
const {
return m_wizardTab;}
1012 void Display2d_Unicode(
bool unicode){m_display2d_Unicode = unicode;}
1013 bool Display2d_Unicode()
const {
return m_display2d_Unicode;}
1016 bool UseWGnuplot()
const {
return m_useWgnuplot;}
1017 void UseWGnuplot(
bool usewgnuplot) {m_useWgnuplot = usewgnuplot;}
1019 wxString TexPreamble()
const {
return m_texPreamble;}
1020 void TexPreamble(wxString texPreamble) {m_texPreamble = std::move(texPreamble);}
1022 void SetMaximaVersion(
const wxString &version){m_maximaVersion = version;}
1023 wxString GetMaximaVersion()
const {
return m_maximaVersion;}
1024 void SetMaximaArch(
const wxString &arch){m_maximaArch = arch;}
1025 wxString GetMaximaArch()
const {
return m_maximaArch;}
1026 void SetLispVersion(
const wxString &version){m_lispVersion = version;}
1027 wxString GetLispVersion()
const {
return m_lispVersion;}
1028 void SetLispType(
const wxString &type){m_lispType = type;}
1029 wxString GetLispType()
const {
return m_lispType;}
1035 bool FontRendersChar(wxUniChar ch,
const wxFont &font = *wxNORMAL_FONT);
1036 wxTextCtrl *LastActiveTextCtrl()
const {
return m_lastActiveTextCtrl; }
1037 void LastActiveTextCtrl(wxTextCtrl *last);
1045 bool StyleAffectsCode(
TextStyle style)
const;
1046 bool StyleAffectsMathOut(
TextStyle style)
const;
1047 bool StyleAffectsColorOnly(
TextStyle style)
const;
1054 maximaHelpFormat MaximaHelpFormat()
const;
1055 void MaximaHelpFormat(maximaHelpFormat format) {m_maximaHelpFormat = format;}
1058 wxString m_maximaArch;
1059 wxString m_lispVersion;
1060 wxString m_lispType;
1061 wxString m_maximaVersion;
1083 void RecalculateForce() { m_cellCfgCnt++; }
1084 static bool UseThreads(){
return m_use_threads;}
1085 static void UseThreads(
bool use){m_use_threads = use;}
1086 static void SetMaximaLang(
const wxString &LANG){m_maxima_LANG = LANG;}
1087 static wxString GetMaximaLang(){
return m_maxima_LANG;}
1090 static wxString m_maxima_LANG;
1092 std::vector<TextStyle> m_codeStyles;
1094 std::vector<TextStyle> m_2dMathStyles;
1096 std::vector<TextStyle> m_colorOnlyStyles;
1097 std::list<FileToSave> m_filesToSave;
1098 RenderablecharsHash m_renderableChars;
1099 RenderablecharsHash m_nonRenderableChars;
1101 static bool FontDisplaysChar(wxUniChar ch,
const wxFont &font = *wxNORMAL_FONT);
1103 static bool CharVisiblyDifferent(wxChar ch, wxChar otherChar,
const wxFont &font = *wxNORMAL_FONT);
1104 mathDisplayMode m_displayMode = display_2d;
1105 using CellRedrawTrace = std::vector<const Cell*>;
1106 static bool m_debugMode;
1107 bool m_showInputLabels;
1109 bool m_display2d_Unicode;
1110 bool m_usePartialForDiff;
1111 bool m_maximaUsesHhtmlBrowser;
1112 bool m_maximaUsesWxmaximaBrowser;
1114 bool m_autoSaveAsTempFile;
1118 bool m_autodetectMaxima;
1120 bool m_autodetectHelpBrowser;
1122 bool m_useInternalHelpBrowser;
1124 bool m_singlePageManual;
1126 wxRect m_updateRegion;
1128 bool m_incrementalSearch;
1130 long m_autoSubscript;
1132 wxWindow *m_workSheet = NULL;
1134 std::unique_ptr<wxClientDC> m_worksheetDC;
1149 bool m_wrapLatexMath;
1150 bool m_allowNetworkHelp;
1151 bool m_exportContainsWXMX;
1152 wxString m_texPreamble;
1155 wxString m_workingdir;
1156 bool m_TeXExponentsAfterSubscript;
1157 wxString m_helpBrowserUserLocation;
1158 wxString m_maximaUserLocation;
1160 bool m_hideBrackets;
1162 double m_printScale;
1163 double m_printMargin_Top;
1164 double m_printMargin_Bot;
1165 double m_printMargin_Left;
1166 double m_printMargin_Right;
1168 wxSize m_canvasSize;
1170 bool m_showBrackets;
1172 bool m_printBrackets;
1178 bool m_changeAsterisk;
1180 bool m_notifyIfIdle;
1182 long m_displayedDigits;
1188 bool m_showAllDigits;
1190 bool m_lineBreaksInLongNums;
1201 double m_zoomFactor;
1203 wxString m_maximaShareDir;
1204 wxString m_maximaDemoDir;
1206 bool m_clipToDrawRegion =
true;
1208 wxString m_maximaParameters;
1210 bool m_restartOnReEvaluation;
1211 wxString m_fontCMRI, m_fontCMSY, m_fontCMEX, m_fontCMMI, m_fontCMTI;
1213 long m_lineWidth_em;
1214 showLabels m_showLabelChoice;
1215 bool m_fixReorderedIndices;
1216 wxString m_mathJaxURL;
1217 bool m_mathJaxURL_UseUser;
1218 bool m_showCodeCells;
1221 bool m_copyMathMLHTML;
1226 bool m_enterEvaluates;
1232 bool m_TOCshowsSectionNumbers;
1233 bool m_useUnicodeMaths;
1235 bool m_abortOnError;
1236 bool m_showMatchingParens;
1237 bool m_hidemultiplicationsign;
1238 bool m_offerKnownAnswers;
1240 long m_maxGnuplotMegabytes;
1241 long m_defaultPlotHeight;
1242 long m_defaultPlotWidth;
1243 bool m_saveUntitled;
1245 bool m_numpadEnterEvaluates;
1246 bool m_saveImgFileName;
1254 std::unique_ptr<CellRedrawTrace> m_cellRedrawTrace;
1255 wxString m_documentclass;
1256 wxString m_documentclassOptions;
1259 wxRect m_visibleRegion;
1261 wxPoint m_worksheetPosition;
1263 wxColour m_defaultBackgroundColor;
1265 wxBrush m_BackgroundBrush;
1266 wxBrush m_tooltipBrush;
1267 bool m_greekSidebar_ShowLatinLookalikes;
1269 bool m_useWgnuplot =
false;
1271 bool m_greekSidebar_Show_mu;
1272 wxString m_symbolPaneAdditionalChars;
1273 bool m_invertBackground;
1277 int m_defaultFramerate;
1279 int m_maxClipbrd_BitmapMegabytes;
1280 int m_autoSaveMinutes;
1281 int m_maxLayoutTime;
1282 wxString m_wxMathML_Filename;
1283 maximaHelpFormat m_maximaHelpFormat;
1284 wxTextCtrl *m_lastActiveTextCtrl = NULL;
1285 std::atomic<std::int_fast32_t> m_cellCfgCnt{0};
1286 static bool m_use_threads;
1295 m_configuration = configuration;
1312 m_configuration = configuration;
This file declares a message dialog that sends its contents to the log message sink.
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
@ NUMBEROFSTYLES
This is not a style, but its value tells us how many styles are defined.
Definition: TextStyle.h:272
A Type-Safe Fixed-Point Font Size.
Definition: FontAttribs.h:98
The base class all cell types the worksheet can consist of are derived from.
Definition: Cell.h:142
Stores the information about a file we need to write during the save process.
Definition: Configuration.h:627
Stores the information about a file we need to write during the save process.
Definition: Configuration.h:643
The configuration storage for the current worksheet.
Definition: Configuration.h:85
wxColor MakeColorDifferFromBackground(wxColor color)
Make this color differ from the background by a noticeable amount.
Definition: Configuration.cpp:1406
wxDC * GetRecalcDC() const
Get a drawing context suitable for size calculations.
Definition: Configuration.h:278
wxString HelpBrowserUserLocation() const
Returns the location of the web browser the user has selected.
Definition: Configuration.h:799
wxColor EditorBackgroundColor()
Determine the default background color of editorcells.
Definition: Configuration.cpp:998
long GetAutosubscript_Num() const
Get the worksheet this configuration storage is valid for.
Definition: Configuration.h:928
bool ShowAutomaticLabels() const
Do we want to show maxima's automatic labels (o1, t1, i1,...)?
Definition: Configuration.h:735
void AutodetectHelpBrowser(bool autodetect)
Autodetect the web browser?
Definition: Configuration.h:784
bool FontRendersChar(wxUniChar ch, const wxFont &font= *wxNORMAL_FONT)
True if we are confident that the font renders this char.
Definition: Configuration.cpp:1437
void MathJaXURL(wxString url)
Returns the URL MathJaX can be found at.
Definition: Configuration.h:832
double GetInterEquationSkip() const
Extra space to leave between two equations in output cells.
Definition: Configuration.h:219
static bool GetDebugmode()
Enable costly checks?
Definition: Configuration.h:1053
bool GetChangeAsterisk() const
Use Unicode centered dots for multiplication signs?
Definition: Configuration.h:568
void SetZoomFactor_temporarily(double newzoom)
Sets the zoom factor without storing the new value in the config file/registry.
Definition: Configuration.h:260
void SetAutoWrap(long autoWrap)
Sets the auto wrap mode.
Definition: Configuration.h:462
wxSize GetPPI() const
Get the resolution.
Definition: Configuration.cpp:214
bool GetAutoWrap() const
Do we want to have automatic line breaks for text cells?
Definition: Configuration.h:448
void ClearAndEnableRedrawTracing()
Clear the memory of ReportMultipleRedraws()
Definition: Configuration.cpp:1015
void ReportMultipleRedraws()
Report if a cell has been redrawn 2 or more times during a simple Draw() command.
Definition: Configuration.cpp:1024
static wxString FindProgram(const wxString &location)
Could a maxima binary be found in the path we expect it to be in?
Definition: Configuration.cpp:577
static wxColour InvertColour(wxColour col)
Inverts a color: In 2020 wxColor still lacks this functionality.
Definition: Configuration.cpp:1060
void FontChanged()
To be called if a font has changed.
Definition: Configuration.h:399
static double GetMaxZoomFactor()
The upper limit we allow for the zoom factor.
Definition: Configuration.h:210
wxBrush GetTooltipBrush() const
Get the brush to be used for worksheet objects that provide a mouse-over tooltip.
Definition: Configuration.h:183
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:539
bool HideBrackets() const
Hide brackets that are not under the pointer?
Definition: Configuration.h:234
bool NotifyIfIdle() const
Notify the user if maxima is idle?
Definition: Configuration.h:605
static EscCodeIterator EscCodesBegin()
Iterators over the escape code list.
Definition: Configuration.cpp:547
wxWindow * GetWorkSheet() const
Get the worksheet this configuration storage is valid for.
Definition: Configuration.h:893
void SetPrinting(bool printing)
Are we currently printing?
Definition: Configuration.cpp:1050
static wxString MaximaDefaultLocation()
The auto-detected maxima location.
Definition: Configuration.cpp:1196
StringHash m_maximaOperators
All maxima operator names we know.
Definition: Configuration.h:136
void SetLabelChoice(showLabels choice)
Sets the value of the Configuration ChoiceBox that treads displaying labels.
Definition: Configuration.h:747
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:1428
void SetKeepPercent(bool keepPercent)
Do we want to display "%e" as "%e" and "%pi" as "%pi"?
Definition: Configuration.h:503
bool SinglePageManual() const
Prefer the single-page manual?
Definition: Configuration.h:793
void WriteStyles(const wxString &file={})
Saves the style settings.
Definition: Configuration.cpp:1696
const std::vector< TextStyle > & GetMathStylesList() const
Which styles affect how math output is displayed?
Definition: Configuration.h:1042
wxColor DefaultBackgroundColor()
Determine the default background color of the worksheet.
Definition: Configuration.cpp:991
wxString MaximaUserLocation() const
Returns the location of the maxima binary the user has selected.
Definition: Configuration.h:776
Style * GetWritableStyle(TextStyle textStyle)
Get the text Style for a given text style identifier.
Definition: Configuration.h:890
wxCoord GetLabelWidth() const
Get the width of worksheet labels [in unscaled pixels].
Definition: Configuration.h:306
void WriteSettings(const wxString &file={})
Saves the settings to a file.
Definition: Configuration.cpp:1268
mathDisplayMode DisplayMode() const
Does maxima output 1D, 2D or 2D ASCII equations?
Definition: Configuration.h:143
wxCoord GetIndent() const
Get the indentation of GroupCells.
Definition: Configuration.h:321
std::int_fast32_t CellCfgCnt() const
A counter that increases every time we need to recalculate all worksheet cells.
Definition: Configuration.h:1082
bool ShowLabels() const
Do we want at all to show labels?
Definition: Configuration.h:743
static std::unordered_map< TextStyle, wxString > m_styleNames
The list of names for the worksheet's text styles.
Definition: Configuration.h:194
std::random_device m_rd
Our random device.
Definition: Configuration.h:1072
wxString MaximaParameters() const
Parameters to the maxima binary.
Definition: Configuration.h:765
wxSize GetCanvasSize() const
Reads the size of the current worksheet's visible window. See SetCanvasSize.
Definition: Configuration.h:689
void InternalHelpBrowser(bool useInternalHelpBrowser)
Use the internal help browser? If not a external web browser is used.
Definition: Configuration.h:789
double GetZoomFactor() const
Determines the zoom factor the worksheet is displayed at.
Definition: Configuration.h:274
long LineWidth_em() const
The minimum sensible line width in widths of a letter.
Definition: Configuration.h:415
void SinglePageManual(bool singlePageManual)
Prefer the single-page manual?
Definition: Configuration.h:795
bool IndentMaths() const
Do we want to indent all maths?
Definition: Configuration.h:471
wxString MaximaLocation() const
Returns the location of the maxima binary.
Definition: Configuration.cpp:1189
void SetBackgroundBrush(const wxBrush &brush)
Set the brush to be used for the worksheet background.
Definition: Configuration.cpp:571
bool FixedFontInTextControls() const
Use a typewriter font in wizard entry fields that can contain maxima commands?
Definition: Configuration.h:177
bool GetAutoIndent() const
Do we want automatic indentation?
Definition: Configuration.h:465
long LabelWidth() const
Get the width of worksheet labels [in chars].
Definition: Configuration.h:310
void SetRecalcContext(wxDC &dc)
Set the drawing context that is currently active.
Definition: Configuration.h:168
double PrintScale() const
Hide brackets that are not under the pointer?
Definition: Configuration.h:241
wxString GetWorkingDirectory() const
Get maxima's working directory.
Definition: Configuration.h:152
long GetBaseIndent() const
The y position the worksheet starts at.
Definition: Configuration.h:355
void DisplayMode(mathDisplayMode mode)
Tell the config if maxima outputs 1D, 2D or 2D ASCII equations, currently.
Definition: Configuration.h:145
static bool GetAutoWrapCode()
Do we want to have automatic line breaks for code cells?
Definition: Configuration.h:453
long MaxGnuplotMegabytes() const
The maximum number of Megabytes of gnuplot sources we should store.
Definition: Configuration.h:906
long GetGroupSkip() const
The vertical space between GroupCells.
Definition: Configuration.h:364
void HelpBrowserUserLocation(wxString helpBrowser)
Sets the location of the web browser the user has detected.
Definition: Configuration.h:802
void SetWorkingDirectory(wxString dir)
Set maxima's working directory.
Definition: Configuration.h:148
bool CheckKeepPercent() const
Do we want to display "%e" as "%e" and "%pi" as "%pi"?
Definition: Configuration.h:499
const std::vector< TextStyle > & GetCodeStylesList() const
Which styles affect how code is displayed?
Definition: Configuration.h:1040
static const wxString CharsNeedingQuotes()
Returns a list of chars we need to escape in maxima.
Definition: Configuration.h:291
wxString MathJaXURL() const
Returns the URL MathJaX can be found at.
Definition: Configuration.h:819
void AutodetectMaxima(bool autodetectmaxima)
Autodetect maxima's location?
Definition: Configuration.h:762
void SetChangeAsterisk(bool changeAsterisk)
Use Unicode centered dots for multiplication signs?
Definition: Configuration.h:571
std::default_random_engine m_eng
Our random engine.
Definition: Configuration.h:1074
void PrintScale(double scale)
Define if we want to hide brackets that are not under the pointer.
Definition: Configuration.h:245
void SetWorkSheet(wxWindow *workSheet)
Set the worksheet this configuration storage is valid for.
Definition: Configuration.cpp:198
void InitStyles()
Initialize the text styles on construction.
Definition: Configuration.cpp:482
static void SetDebugmode()
Enable costly checks.
Definition: Configuration.h:1051
static double GetMinZoomFactor()
The lower limit we allow for the zoom factor.
Definition: Configuration.h:206
bool AutodetectMaxima() const
Autodetect maxima's location? (If false the user-specified location is used)
Definition: Configuration.h:760
bool ClipToDrawRegion() const
Do we want to save time by only redrawing the area currently shown on the screen?
Definition: Configuration.h:936
void SetZoomFactor(double newzoom)
Sets the zoom factor the worksheet is displayed at.
Definition: Configuration.cpp:1092
bool ShowBrackets() const
Show the cell brackets [displayed left to each group cell showing its extend]?
Definition: Configuration.h:701
bool FixReorderedIndices() const
Renumber out-of-order cell labels on saving.
Definition: Configuration.h:813
bool GetPrinting() const
Are we currently printing?
Definition: Configuration.h:544
wxBrush GetBackgroundBrush() const
Get the brush to be used for the worksheet background.
Definition: Configuration.h:181
void SetIndent(long indent)
Set the indentation of GroupCells.
Definition: Configuration.h:376
long GetLineWidth() const
Returns the maximum sensible width for a text line [in characters]:
Definition: Configuration.cpp:1065
void FixedFontInTextControls(bool fixed)
Use a typewriter font in wizard entry fields that can contain maxima commands?
Definition: Configuration.h:179
static EscCodeIterator EscCodesEnd()
Iterators over the escape code list.
Definition: Configuration.cpp:550
wxCoord GetCellBracketWidth() const
The width we allocate for our cell brackets.
Definition: Configuration.h:228
void MaximaUserLocation(wxString maxima)
Sets the location of the maxima binary.
Definition: Configuration.h:779
bool OfferInternalHelpBrowser() const
If we decide that the HTML browser in the sidebar doesn't work for every platform....
Definition: Configuration.cpp:1542
void ClipToDrawRegion(bool clipToDrawRegion)
Do we want to save time by only redrawing the area currently shown on the screen?
Definition: Configuration.h:938
wxColour GetColor(TextStyle style)
Gets the color for a text style.
Definition: Configuration.cpp:1383
long GetCursorWidth() const
How much vertical space is to be left between two group cells?
Definition: Configuration.h:339
static wxString m_configfileLocation_override
Where to store the configuration.
Definition: Configuration.h:191
void LineWidth_em(long width)
Set the minimum sensible line width in widths of a letter.
Definition: Configuration.h:427
void HideBrackets(bool hide)
Define if we want to hide brackets that are not under the pointer.
Definition: Configuration.h:238
double GetDefaultLineWidth() const
Calculates the default line width for the worksheet.
Definition: Configuration.h:406
wxCoord Scale_Px(double px) const
Scales a distance [in pixels] according to the zoom factor.
Definition: Configuration.cpp:1394
void ReadConfig()
Read the config from the wxConfig object.
Definition: Configuration.cpp:620
InitOpt
Definition: Configuration.h:118
@ temporary
This configuration is temporary and shouldn't redetect Maxima etc.
Definition: Configuration.h:120
bool InternalHelpBrowser() const
Use the internal help browser? If not a external web browser is used.
Definition: Configuration.h:787
void SetParenthesisDrawMode(drawMode mode)
Which way do we want to draw parenthesis?
Definition: Configuration.h:862
drawMode
Definition: Configuration.h:112
@ ascii
Use ascii characters only.
Definition: Configuration.h:113
@ handdrawn
A parenthesis sign that was created using draw commands.
Definition: Configuration.h:114
void SetCanvasSize(wxSize siz)
Sets the size of the current worksheet's visible window.
Definition: Configuration.h:693
void MaximaParameters(wxString parameters)
The parameters we pass to the maxima binary.
Definition: Configuration.h:767
void NotifyOfCellRedraw(const Cell *cell)
Record that this cell has been drawn to ReportMultipleRedraws()
Definition: Configuration.cpp:1005
long ShowLength() const
The choice for the "maximum output length to display" setting.
Definition: Configuration.h:857
void ResetAllToDefaults()
Reset the whole configuration to its default values.
Definition: Configuration.cpp:236
void ReadStyles(const wxString &file={})
Reads the style settings.
Definition: Configuration.cpp:1200
htmlExportFormat
The export formats we support for HTML equations.
Definition: Configuration.h:94
bool IsOperator(wxString name)
Coincides name with a operator known to maxima?
Definition: Configuration.h:138
bool UseUserLabels() const
Do we want at all to show labels?
Definition: Configuration.h:739
bool UpdateNeeded() const
true means: The system's config storage has changed since the configuration has been read
Definition: Configuration.cpp:1558
std::size_t ShowLength_Bytes() const
The "maximum output length to display" setting in cells.
Definition: Configuration.cpp:1717
long GetDisplayedDigits() const
Returns the maximum number of displayed digits.
Definition: Configuration.h:614
const Style * GetStyle(TextStyle textStyle) const
Get the text Style for a given text style identifier.
Definition: Configuration.h:882
bool AutodetectHelpBrowser() const
Autodetect the web browser? (If false the user-specified location is used)
Definition: Configuration.h:782
void ShowLength(long length)
The choice for the "maximum output length to display" setting.
Definition: Configuration.h:853
void LabelWidth(long labelWidth)
Set the width of worksheet labels [in chars].
Definition: Configuration.h:313
const std::vector< TextStyle > & GetColorOnlyStylesList() const
Which styles affect only colors?
Definition: Configuration.h:1044
bool PrintBrackets() const
Print the cell brackets [displayed left to each group cell showing its extend]?
Definition: Configuration.h:712
Clears the configuration's "Clip to draw region" flag until this class is left.
Definition: Configuration.h:1308
Sets the configuration's "printing" flag until this class is left.
Definition: Configuration.h:1291
Text Style Definition.
Definition: TextStyle.h:63
AFontSize GetFontSize() const
The size of this style's font, asserted to be valid.
Definition: TextStyle.cpp:108
Definition: Configuration.h:391