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>
41#include <wx/wupdlock.h>
42#include <wx/webview.h>
44#include <wx/msw/webview_ie.h>
47#define MC_LINE_SKIP Scale_Px(2)
48#define MC_TEXT_PADDING Scale_Px(1)
50#define PAREN_OPEN_TOP_UNICODE "\u239b"
51#define PAREN_OPEN_EXTEND_UNICODE "\u239c"
52#define PAREN_OPEN_BOTTOM_UNICODE "\u239d"
53#define PAREN_CLOSE_TOP_UNICODE "\u239e"
54#define PAREN_CLOSE_EXTEND_UNICODE "\u239f"
55#define PAREN_CLOSE_BOTTOM_UNICODE "\u23a0"
56#define SUM_SIGN "\u2211"
57#define PROD_SIGN "\u220F"
62#define MC_HCARET_WIDTH 25
64#define MC_EXP_INDENT static_cast<wxCoord>(Scale_Px(2))
65static constexpr AFontSize MC_MIN_SIZE{ 6.0f };
66static constexpr AFontSize MC_MAX_SIZE{ 48.0f };
69#define LABELWIDTH_MIN 3
70#define LABELWIDTH_MAX 10
90 enum maximaHelpFormat{
102 html_export_invalidChoice
105 enum showLabels : int8_t
107 labels_automatic = 0,
108 labels_prefer_user = 1,
111 labels_invalidSelection
134 typedef std::unordered_map <wxString, bool, wxStringHash> StringBoolHash;
135 typedef std::unordered_map <wxString, wxString, wxStringHash> RenderablecharsHash;
136 typedef std::unordered_map <wxString, int, wxStringHash> StringHash;
142 const wxEnvVariableHashMap& MaximaEnvVars()
const {
return m_maximaEnvVars;}
143 wxEnvVariableHashMap m_maximaEnvVars;
152 { m_workingdir = std::move(dir); }
156 {
return m_workingdir; }
175 void UnsetContext() {m_dc = NULL;}
198 using EscCodeContainer = std::unordered_map<wxString, wxString, wxStringHash>;
199 using EscCodeIterator = EscCodeContainer::const_iterator;
202 static const wxString &
GetEscCode(
const wxString &key);
238 {
return m_hideBrackets; }
245 {
return m_printScale; }
250 void PrintMargin_Top(
double margin){m_printMargin_Top = margin;}
251 void PrintMargin_Bot(
double margin){m_printMargin_Bot = margin;}
252 void PrintMargin_Left(
double margin){m_printMargin_Left = margin;}
253 void PrintMargin_Right(
double margin){m_printMargin_Right = margin;}
254 double PrintMargin_Top()
const {
return m_printMargin_Top;}
255 double PrintMargin_Bot()
const {
return m_printMargin_Bot;}
256 double PrintMargin_Left()
const {
return m_printMargin_Left;}
257 double PrintMargin_Right()
const {
return m_printMargin_Right;}
264 if(m_zoomFactor != newzoom)
266 m_zoomFactor = newzoom; ;
278 {
return m_zoomFactor; }
284 void SetRecalcDC(wxDC *dc)
287 wxString GetFontName(
TextStyle ts = TS_CODE_DEFAULT)
const;
291 wxString GetSymbolFontName()
const;
293 wxFontWeight IsBold(
long st)
const;
295 wxFontStyle IsItalic(
long st)
const;
297 bool IsUnderlined(
long st)
const {
return m_styles[st].IsUnderlined();}
304 {
return m_labelWidth * 14; }
308 {
return m_labelWidth; }
312 if(m_labelWidth != labelWidth)
314 m_labelWidth = labelWidth;
332 int AutosaveMinutes()
const {
return m_autoSaveMinutes;}
333 void AutosaveMinutes(
int minutes){m_autoSaveMinutes = minutes;}
375 if(m_indent != indent)
380 bool IncrementalSearch()
const {
return m_incrementalSearch;}
383 void IncrementalSearch(
bool incrementalSearch) { m_incrementalSearch = incrementalSearch; }
388 CharsExist(
const wxString &chars,
bool exist) : chars(chars), exist(exist) {}
390 std::vector<CharsExist> m_charsInFont;
395 m_charsInFont.clear();
412 return m_lineWidth_em;
417 bool AutoSaveAsTempFile()
const {
return m_autoSaveAsTempFile;}
418 void AutoSaveAsTempFile(
bool asTempFile){m_autoSaveAsTempFile = asTempFile;}
422 { m_lineWidth_em = width; }
429 bool SaveUntitled()
const {
return m_saveUntitled;}
430 void SaveUntitled(
bool save) {m_saveUntitled = save;}
432 bool CursorJump()
const {
return m_cursorJump;}
433 void CursorJump(
bool save){m_cursorJump = save;}
435 bool NumpadEnterEvaluates()
const {
return m_numpadEnterEvaluates;}
436 void NumpadEnterEvaluates(
bool eval){m_numpadEnterEvaluates = eval;}
438 bool SaveImgFileName()
const {
return m_saveImgFileName;}
439 void SaveImgFileName(
bool save) { m_saveImgFileName = save;}
443 {
return m_autoWrap > 0; }
460 {
return m_autoIndent; }
462 void SetAutoIndent(
bool autoIndent){m_autoIndent = autoIndent;}
467 if(m_indentMaths != indent)
469 m_indentMaths = indent;}
472 static const wxString &GetStyleName(
TextStyle textStyle);
488 void MakeStylesConsistent();
489 void Outdated(
bool outdated)
490 { m_outdated = outdated; }
494 {
return m_keepPercent; }
499 if(m_keepPercent != keepPercent)
501 m_keepPercent = keepPercent;
504 wxString GetTeXCMRI()
const
505 {
return m_fontCMRI; }
507 wxString GetTeXCMSY()
const
508 {
return m_fontCMSY; }
510 wxString GetTeXCMEX()
const
511 {
return m_fontCMEX; }
513 wxString GetTeXCMMI()
const
514 {
return m_fontCMMI; }
516 wxString GetTeXCMTI()
const
517 {
return m_fontCMTI; }
519 bool ShowCodeCells()
const
520 {
return m_showCodeCells; }
522 void ShowCodeCells(
bool show);
539 {
return m_printing; }
553 bool UsePngCairo()
const {
return m_usepngCairo;}
554 void UsePngCairo(
bool usepngCairo) { m_usepngCairo = usepngCairo;}
556 bool GetMatchParens()
const {
return m_matchParens; }
557 void SetMatchParens(
bool matchParens) { m_matchParens = matchParens; }
558 bool ShowMatchingParens()
const {
return m_showMatchingParens; }
559 void ShowMatchingParens(
bool show) { m_showMatchingParens = show; }
566 if(m_changeAsterisk != changeAsterisk)
568 m_changeAsterisk = changeAsterisk;
571 bool HidemultiplicationSign()
const {
return m_hidemultiplicationsign;}
573 void HidemultiplicationSign(
bool show) {
574 if(m_hidemultiplicationsign != show)
576 m_hidemultiplicationsign = show;
579 bool Latin2Greek()
const
580 {
return m_latin2greek;}
582 void Latin2Greek(
bool latin2greek) {
583 if(m_latin2greek != latin2greek)
585 m_latin2greek = latin2greek;
588 bool GreekSidebar_ShowLatinLookalikes()
const {
return m_greekSidebar_ShowLatinLookalikes;}
589 void GreekSidebar_ShowLatinLookalikes(
bool show){m_greekSidebar_ShowLatinLookalikes = show;}
591 bool GreekSidebar_Show_mu()
const {
return m_greekSidebar_Show_mu;}
592 void GreekSidebar_Show_mu(
bool show) {m_greekSidebar_Show_mu = show;}
594 wxString SymbolPaneAdditionalChars()
const
595 {
return m_symbolPaneAdditionalChars;}
596 void SymbolPaneAdditionalChars(wxString symbols) {m_symbolPaneAdditionalChars = std::move(symbols);}
600 {
return m_notifyIfIdle; }
602 void NotifyIfIdle(
bool notify) {m_notifyIfIdle = notify;}
609 {
return m_displayedDigits; }
611 void SetDisplayedDigits(
long displayedDigits)
613 wxASSERT_MSG(displayedDigits >= 0, _(
"Bug: Maximum number of digits that is to be displayed is too low!"));
614 if(m_displayedDigits != displayedDigits)
616 m_displayedDigits = displayedDigits;
623 FileToSave(
const wxString &filename,
const wxMemoryBuffer &data):
628 const wxString FileName()
const{
return m_filename;}
629 const wxMemoryBuffer Data()
const{
return m_data;}
631 const wxMemoryBuffer m_data;
632 const wxString m_filename;
639 TextsnippetToDraw(
const wxPoint &pos,
const wxString &text,
const wxColor &color):
645 const wxPoint Pos()
const{
return m_pos;}
646 const wxString Text()
const{
return m_text;}
647 const wxColor Color()
const{
return m_color;}
650 const wxString m_text;
651 const wxColor m_color;
655 void PushFileToSave(
const wxString &filename,
const wxMemoryBuffer &data)
656 { m_filesToSave.emplace_front(
FileToSave(filename, data)); }
658 wxRect GetUpdateRegion()
const {
return m_updateRegion;}
659 const std::list<FileToSave> &GetFilesToSave()
const {
return m_filesToSave;}
660 void ClearFilesToSave () { m_filesToSave.clear();}
661 void SetUpdateRegion(wxRect rect){m_updateRegion = rect;}
667 bool GetInsertAns()
const
668 {
return m_insertAns; }
670 void SetInsertAns(
bool insertAns){ m_insertAns = insertAns; }
672 bool GetOpenHCaret()
const
673 {
return m_openHCaret; }
675 void SetOpenHCaret(
bool openHCaret){ m_openHCaret = openHCaret; }
677 bool RestartOnReEvaluation()
const
678 {
return m_restartOnReEvaluation; }
680 void RestartOnReEvaluation(
bool arg){ m_restartOnReEvaluation = arg; }
684 {
return m_canvasSize; }
689 if(m_canvasSize.GetWidth() != siz.GetWidth())
696 {
return m_showBrackets; }
700 if(m_showBrackets != show)
702 return m_showBrackets = show;
707 {
return m_printBrackets; }
709 showLabels GetLabelChoice()
const
710 {
return m_showLabelChoice; }
712 bool ShowInputLabels()
const {
return m_showInputLabels;}
713 void ShowInputLabels(
bool show) {
714 if(m_showInputLabels != show)
716 m_showInputLabels = show;
719 bool InvertBackground()
const {
return m_invertBackground;}
720 void InvertBackground(
bool invert){ m_invertBackground = invert; }
722 long UndoLimit(){
return std::max(m_undoLimit,
static_cast<long>(0));}
723 void UndoLimit(
long limit){ m_undoLimit = limit; }
725 long RecentItems(){
return std::max(m_recentItems,
static_cast<long>(0));}
726 void RecentItems(
long items){ m_recentItems = items; }
730 {
return (m_showLabelChoice < labels_useronly); }
734 {
return m_showLabelChoice > labels_automatic; }
738 {
return m_showLabelChoice < labels_none; }
742 if(m_showLabelChoice != choice)
744 m_showLabelChoice = choice;
749 m_printBrackets = print;
784 {m_useInternalHelpBrowser = useInternalHelpBrowser;}
790 {m_singlePageManual = singlePageManual;}
804 static wxString
FindProgram(
const wxString &location);
808 {
return m_fixReorderedIndices; }
814 if(m_mathJaxURL_UseUser)
817 return MathJaXURL_Auto();}
818 wxString MathJaXURL_User()
const {
return m_mathJaxURL;}
819 bool MathJaXURL_UseUser()
const {
return m_mathJaxURL_UseUser;}
820 void MathJaXURL_UseUser(
bool useUser){m_mathJaxURL_UseUser = useUser;}
822 bool EnterEvaluates()
const {
return m_enterEvaluates;}
823 void EnterEvaluates(
bool enterEvaluates) {m_enterEvaluates = enterEvaluates;}
824 static wxString MathJaXURL_Auto() {
return wxS(
"https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js");}
826 void MathJaXURL(wxString url){m_mathJaxURL = std::move(url);}
828 bool CopyBitmap()
const {
return m_copyBitmap;}
829 void CopyBitmap(
bool copyBitmap){ m_copyBitmap = copyBitmap; }
831 bool CopyMathML()
const {
return m_copyMathML;}
832 void CopyMathML(
bool copyMathML){ m_copyMathML = copyMathML;}
833 bool CopyMathMLHTML()
const {
return m_copyMathMLHTML;}
834 void CopyMathMLHTML(
bool copyMathMLHTML){ m_copyMathMLHTML = copyMathMLHTML; }
835 bool HideMarkerForThisMessage(wxString message);
836 void HideMarkerForThisMessage(
const wxString &message,
bool hide)
837 {m_hideMarkerForThisMessage[message] = hide;}
838 bool CopyRTF()
const {
return m_copyRTF;}
839 void CopyRTF(
bool copyRTF) { m_copyRTF = copyRTF; }
840 bool CopySVG()
const {
return m_copySVG;}
841 void CopySVG(
bool copySVG) { m_copySVG = copySVG; }
842 bool CopyEMF()
const {
return m_copyEMF;}
843 void CopyEMF(
bool copyEMF) { m_copyEMF = copyEMF; }
844 bool UseSVG()
const {
return m_useSVG;}
845 void UseSVG(
bool useSVG) { m_useSVG = useSVG ;}
848 m_showLength = length;
857 if(m_parenthesisDrawMode != mode)
859 m_parenthesisDrawMode = mode;
862 void TocShowsSectionNumbers(
bool showSectionNumbers) { m_TOCshowsSectionNumbers = showSectionNumbers; }
864 bool TocShowsSectionNumbers()
const {
return m_TOCshowsSectionNumbers;}
866 void UseUnicodeMaths(
bool useunicodemaths)
867 { m_useUnicodeMaths = useunicodemaths; }
868 bool UseUnicodeMaths()
const {
return m_useUnicodeMaths;}
870 StringBoolHash m_hideMarkerForThisMessage;
891 long DefaultPort()
const {
return m_defaultPort;}
892 void DefaultPort(
long port){m_defaultPort = port;}
893 bool GetAbortOnError()
const {
return m_abortOnError;}
894 void SetAbortOnError(
bool abortOnError) {m_abortOnError = abortOnError;}
896 long GetLanguage()
const {
return m_language;}
897 void SetLanguage(
long language) {m_language = language;}
902 {m_maxGnuplotMegabytes = megaBytes;}
904 bool OfferKnownAnswers()
const {
return m_offerKnownAnswers;}
905 void OfferKnownAnswers(
bool offerKnownAnswers)
906 {m_offerKnownAnswers = offerKnownAnswers;}
908 wxString Documentclass()
const {
return m_documentclass;}
909 void Documentclass(wxString clss){m_documentclass = std::move(clss);}
910 wxString DocumentclassOptions()
const {
return m_documentclassOptions;}
911 void DocumentclassOptions(wxString classOptions){m_documentclassOptions = std::move(classOptions);}
916 {m_htmlEquationFormat = HTMLequationFormat;}
923 void SetAutosubscript_Num(
long autosubscriptnum) {m_autoSubscript = autosubscriptnum;}
924 wxString GetAutosubscript_string()
const;
932 void ClipToDrawRegion(
bool clipToDrawRegion){m_clipToDrawRegion = clipToDrawRegion; m_forceUpdate =
true;}
933 void SetVisibleRegion(wxRect visibleRegion){
934 if(m_visibleRegion.GetWidth() != visibleRegion.GetWidth())
936 m_visibleRegion = visibleRegion;
938 wxRect GetVisibleRegion()
const {
return m_visibleRegion;}
939 void SetWorksheetPosition(wxPoint worksheetPosition){m_worksheetPosition = worksheetPosition;}
940 wxPoint GetWorksheetPosition()
const {
return m_worksheetPosition;}
941 wxString MaximaShareDir()
const {
return m_maximaShareDir;}
942 void MaximaShareDir(wxString dir){m_maximaShareDir = std::move(dir);}
943 wxString MaximaDemoDir()
const {
return m_maximaDemoDir;}
944 void MaximaDemoDir(wxString dir){m_maximaDemoDir = std::move(dir);}
945 void InLispMode(
bool lisp){m_inLispMode = lisp;}
946 bool InLispMode()
const {
return m_inLispMode;}
947 void BitmapScale(
int factor){m_bitmapScale = factor;}
948 int BitmapScale()
const {
return m_bitmapScale;}
949 void DefaultPlotHeight(
int px){m_defaultPlotHeight = px;}
950 int DefaultPlotHeight()
const {
return m_defaultPlotHeight;}
951 void DefaultPlotWidth(
int px){m_defaultPlotWidth = px;}
952 int DefaultPlotWidth()
const {
return m_defaultPlotWidth;}
953 void DefaultFramerate(
int fps){m_defaultFramerate = fps;}
954 int DefaultFramerate()
const {
return m_defaultFramerate;}
955 void TocDepth(
int depth){m_tocDepth = depth;}
956 int TocDepth()
const {
return m_tocDepth;}
957 bool TeXExponentsAfterSubscript()
const {
return m_TeXExponentsAfterSubscript;}
958 void TeXExponentsAfterSubscript(
bool ExponentsAfterSubscript)
959 {m_TeXExponentsAfterSubscript = ExponentsAfterSubscript;}
960 bool UsePartialForDiff()
const {
return m_usePartialForDiff;}
961 void UsePartialForDiff(
bool usePartialForDiff)
962 {m_usePartialForDiff = usePartialForDiff;}
977 bool WrapLatexMath()
const {
return m_wrapLatexMath;}
978 void WrapLatexMath(
bool wrapLatexMath){m_wrapLatexMath = wrapLatexMath;}
979 bool AllowNetworkHelp()
const {
return m_allowNetworkHelp;}
980 void AllowNetworkHelp(
bool allowNetworkHelp){m_allowNetworkHelp = allowNetworkHelp;}
981 bool ShowAllDigits()
const {
return m_showAllDigits;}
982 void ShowAllDigits(
bool shw){
983 if(m_showAllDigits != shw)
985 m_showAllDigits = shw;
987 bool LineBreaksInLongNums()
const {
return m_lineBreaksInLongNums;}
988 void LineBreaksInLongNums(
bool brk){
989 if(m_lineBreaksInLongNums != brk)
991 m_lineBreaksInLongNums = brk;
993 int MaxClipbrdBitmapMegabytes()
const {
return m_maxClipbrd_BitmapMegabytes;}
994 void MaxClipbrdBitmapMegabytes(
int maxClipbrd_BitmapMegabytes)
995 {m_maxClipbrd_BitmapMegabytes = maxClipbrd_BitmapMegabytes;}
997 void MaximaUsesHtmlBrowser(
bool maximaUsesHhtmlBrowser){m_maximaUsesHhtmlBrowser = maximaUsesHhtmlBrowser;}
998 bool MaximaUsesHtmlBrowser()
const {
return m_maximaUsesHhtmlBrowser;}
999 void MaximaUsesWxmaximaBrowser(
bool maximaUsesWxmaximaBrowser){m_maximaUsesWxmaximaBrowser = maximaUsesWxmaximaBrowser;}
1001 void ExportContainsWXMX(
bool exportContainsWXMX){m_exportContainsWXMX = exportContainsWXMX;}
1002 bool ExportContainsWXMX()
const {
return m_exportContainsWXMX;}
1003 void WizardTab(
long tab){m_wizardTab = tab;}
1004 long WizardTab()
const {
return m_wizardTab;}
1006 void Display2d_Unicode(
bool unicode){m_display2d_Unicode = unicode;}
1007 bool Display2d_Unicode()
const {
return m_display2d_Unicode;}
1010 bool UseWGnuplot()
const {
return m_useWgnuplot;}
1011 void UseWGnuplot(
bool usewgnuplot) {m_useWgnuplot = usewgnuplot;}
1013 wxString TexPreamble()
const {
return m_texPreamble;}
1014 void TexPreamble(wxString texPreamble) {m_texPreamble = std::move(texPreamble);}
1016 void SetMaximaVersion(
const wxString &version){m_maximaVersion = version;}
1017 wxString GetMaximaVersion()
const {
return m_maximaVersion;}
1018 void SetMaximaArch(
const wxString &arch){m_maximaArch = arch;}
1019 wxString GetMaximaArch()
const {
return m_maximaArch;}
1020 void SetLispVersion(
const wxString &version){m_lispVersion = version;}
1021 wxString GetLispVersion()
const {
return m_lispVersion;}
1022 void SetLispType(
const wxString &type){m_lispType = type;}
1023 wxString GetLispType()
const {
return m_lispType;}
1029 bool FontRendersChar(wxUniChar ch,
const wxFont &font = *wxNORMAL_FONT);
1030 wxTextCtrl *LastActiveTextCtrl()
const {
return m_lastActiveTextCtrl; }
1031 void LastActiveTextCtrl(wxTextCtrl *last);
1039 bool StyleAffectsCode(
TextStyle style)
const;
1040 bool StyleAffectsMathOut(
TextStyle style)
const;
1041 bool StyleAffectsColorOnly(
TextStyle style)
const;
1048 maximaHelpFormat MaximaHelpFormat()
const;
1049 void MaximaHelpFormat(maximaHelpFormat format) {m_maximaHelpFormat = format;}
1052 wxString m_maximaArch;
1053 wxString m_lispVersion;
1054 wxString m_lispType;
1055 wxString m_maximaVersion;
1077 void RecalculateForce() { m_cellCfgCnt++; }
1078 static bool UseThreads(){
return m_use_threads;}
1079 static void UseThreads(
bool use){m_use_threads = use;}
1080 static void SetMaximaLang(
const wxString &LANG){m_maxima_LANG = LANG;}
1081 static wxString GetMaximaLang(){
return m_maxima_LANG;}
1084 static wxString m_maxima_LANG;
1086 std::vector<TextStyle> m_codeStyles;
1088 std::vector<TextStyle> m_2dMathStyles;
1090 std::vector<TextStyle> m_colorOnlyStyles;
1091 std::list<FileToSave> m_filesToSave;
1092 RenderablecharsHash m_renderableChars;
1093 RenderablecharsHash m_nonRenderableChars;
1095 static bool FontDisplaysChar(wxUniChar ch,
const wxFont &font = *wxNORMAL_FONT);
1097 static bool CharVisiblyDifferent(wxChar ch, wxChar otherChar,
const wxFont &font = *wxNORMAL_FONT);
1098 mathDisplayMode m_displayMode = display_2d;
1099 using CellRedrawTrace = std::vector<const Cell*>;
1100 static bool m_debugMode;
1101 bool m_showInputLabels;
1103 bool m_display2d_Unicode;
1104 bool m_usePartialForDiff;
1105 bool m_maximaUsesHhtmlBrowser;
1106 bool m_maximaUsesWxmaximaBrowser;
1108 bool m_autoSaveAsTempFile;
1112 bool m_autodetectMaxima;
1114 bool m_autodetectHelpBrowser;
1116 bool m_useInternalHelpBrowser;
1118 bool m_singlePageManual;
1120 wxRect m_updateRegion;
1122 bool m_incrementalSearch;
1124 long m_autoSubscript;
1126 wxWindow *m_workSheet = NULL;
1128 std::unique_ptr<wxClientDC> m_worksheetDC;
1143 bool m_wrapLatexMath;
1144 bool m_allowNetworkHelp;
1145 bool m_exportContainsWXMX;
1146 wxString m_texPreamble;
1149 wxString m_workingdir;
1150 bool m_TeXExponentsAfterSubscript;
1151 wxString m_helpBrowserUserLocation;
1152 wxString m_maximaUserLocation;
1154 bool m_hideBrackets;
1156 double m_printScale;
1157 double m_printMargin_Top;
1158 double m_printMargin_Bot;
1159 double m_printMargin_Left;
1160 double m_printMargin_Right;
1162 wxSize m_canvasSize;
1164 bool m_showBrackets;
1166 bool m_printBrackets;
1172 bool m_changeAsterisk;
1174 bool m_notifyIfIdle;
1176 long m_displayedDigits;
1182 bool m_showAllDigits;
1184 bool m_lineBreaksInLongNums;
1195 double m_zoomFactor;
1197 wxString m_maximaShareDir;
1198 wxString m_maximaDemoDir;
1200 bool m_clipToDrawRegion =
true;
1202 wxString m_maximaParameters;
1204 bool m_restartOnReEvaluation;
1205 wxString m_fontCMRI, m_fontCMSY, m_fontCMEX, m_fontCMMI, m_fontCMTI;
1207 long m_lineWidth_em;
1208 showLabels m_showLabelChoice;
1209 bool m_fixReorderedIndices;
1210 wxString m_mathJaxURL;
1211 bool m_mathJaxURL_UseUser;
1212 bool m_showCodeCells;
1215 bool m_copyMathMLHTML;
1220 bool m_enterEvaluates;
1226 bool m_TOCshowsSectionNumbers;
1227 bool m_useUnicodeMaths;
1229 bool m_abortOnError;
1230 bool m_showMatchingParens;
1231 bool m_hidemultiplicationsign;
1232 bool m_offerKnownAnswers;
1234 long m_maxGnuplotMegabytes;
1235 long m_defaultPlotHeight;
1236 long m_defaultPlotWidth;
1237 bool m_saveUntitled;
1239 bool m_numpadEnterEvaluates;
1240 bool m_saveImgFileName;
1248 std::unique_ptr<CellRedrawTrace> m_cellRedrawTrace;
1249 wxString m_documentclass;
1250 wxString m_documentclassOptions;
1253 wxRect m_visibleRegion;
1255 wxPoint m_worksheetPosition;
1257 wxColour m_defaultBackgroundColor;
1259 wxBrush m_BackgroundBrush;
1260 wxBrush m_tooltipBrush;
1261 bool m_greekSidebar_ShowLatinLookalikes;
1263 bool m_useWgnuplot =
false;
1265 bool m_greekSidebar_Show_mu;
1266 wxString m_symbolPaneAdditionalChars;
1267 bool m_invertBackground;
1271 int m_defaultFramerate;
1273 int m_maxClipbrd_BitmapMegabytes;
1274 int m_autoSaveMinutes;
1275 wxString m_wxMathML_Filename;
1276 maximaHelpFormat m_maximaHelpFormat;
1277 wxTextCtrl *m_lastActiveTextCtrl = NULL;
1278 std::int_fast32_t m_cellCfgCnt = 0;
1279 static bool m_use_threads;
1288 m_configuration = configuration;
1305 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:621
Stores the information about a file we need to write during the save process.
Definition: Configuration.h:637
The configuration storage for the current worksheet.
Definition: Configuration.h:88
wxColor MakeColorDifferFromBackground(wxColor color)
Make this color differ from the background by a noticeable amount.
Definition: Configuration.cpp:1412
wxDC * GetRecalcDC() const
Get a drawing context suitable for size calculations.
Definition: Configuration.h:281
wxString HelpBrowserUserLocation() const
Returns the location of the web browser the user has selected.
Definition: Configuration.h:793
wxColor EditorBackgroundColor()
Determine the default background color of editorcells.
Definition: Configuration.cpp:1005
long GetAutosubscript_Num() const
Get the worksheet this configuration storage is valid for.
Definition: Configuration.h:922
bool ShowAutomaticLabels() const
Do we want to show maxima's automatic labels (o1, t1, i1,...)?
Definition: Configuration.h:729
void AutodetectHelpBrowser(bool autodetect)
Autodetect the web browser?
Definition: Configuration.h:778
bool FontRendersChar(wxUniChar ch, const wxFont &font= *wxNORMAL_FONT)
True if we are confident that the font renders this char.
Definition: Configuration.cpp:1443
void MathJaXURL(wxString url)
Returns the URL MathJaX can be found at.
Definition: Configuration.h:826
double GetInterEquationSkip() const
Extra space to leave between two equations in output cells.
Definition: Configuration.h:222
static bool GetDebugmode()
Enable costly checks?
Definition: Configuration.h:1047
bool GetChangeAsterisk() const
Use Unicode centered dots for multiplication signs?
Definition: Configuration.h:562
void SetZoomFactor_temporarily(double newzoom)
Sets the zoom factor without storing the new value in the config file/registry.
Definition: Configuration.h:263
void SetAutoWrap(long autoWrap)
Sets the auto wrap mode.
Definition: Configuration.h:456
wxSize GetPPI() const
Get the resolution.
Definition: Configuration.cpp:220
bool GetAutoWrap() const
Do we want to have automatic line breaks for text cells?
Definition: Configuration.h:442
void ClearAndEnableRedrawTracing()
Clear the memory of ReportMultipleRedraws()
Definition: Configuration.cpp:1022
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:582
static wxColour InvertColour(wxColour col)
Inverts a color: In 2020 wxColor still lacks this functionality.
Definition: Configuration.cpp:1067
void FontChanged()
To be called if a font has changed.
Definition: Configuration.h:393
static double GetMaxZoomFactor()
The upper limit we allow for the zoom factor.
Definition: Configuration.h:213
wxBrush GetTooltipBrush() const
Get the brush to be used for worksheet objects that provide a mouse-over tooltip.
Definition: Configuration.h:186
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:544
bool HideBrackets() const
Hide brackets that are not under the pointer?
Definition: Configuration.h:237
bool NotifyIfIdle() const
Notify the user if maxima is idle?
Definition: Configuration.h:599
static EscCodeIterator EscCodesBegin()
Iterators over the escape code list.
Definition: Configuration.cpp:552
wxWindow * GetWorkSheet() const
Get the worksheet this configuration storage is valid for.
Definition: Configuration.h:887
void SetPrinting(bool printing)
Are we currently printing?
Definition: Configuration.cpp:1057
static wxString MaximaDefaultLocation()
The auto-detected maxima location.
Definition: Configuration.cpp:1203
StringHash m_maximaOperators
All maxima operator names we know.
Definition: Configuration.h:139
void SetLabelChoice(showLabels choice)
Sets the value of the Configuration ChoiceBox that treads displaying labels.
Definition: Configuration.h:741
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:1434
void SetKeepPercent(bool keepPercent)
Do we want to display "%e" as "%e" and "%pi" as "%pi"?
Definition: Configuration.h:497
bool SinglePageManual() const
Prefer the single-page manual?
Definition: Configuration.h:787
void WriteStyles(const wxString &file={})
Saves the style settings.
Definition: Configuration.cpp:1702
const std::vector< TextStyle > & GetMathStylesList() const
Which styles affect how math output is displayed?
Definition: Configuration.h:1036
wxColor DefaultBackgroundColor()
Determine the default background color of the worksheet.
Definition: Configuration.cpp:998
wxString MaximaUserLocation() const
Returns the location of the maxima binary the user has selected.
Definition: Configuration.h:770
Style * GetWritableStyle(TextStyle textStyle)
Get the text Style for a given text style identifier.
Definition: Configuration.h:884
wxCoord GetLabelWidth() const
Get the width of worksheet labels [in unscaled pixels].
Definition: Configuration.h:303
void WriteSettings(const wxString &file={})
Saves the settings to a file.
Definition: Configuration.cpp:1275
mathDisplayMode DisplayMode() const
Does maxima output 1D, 2D or 2D ASCII equations?
Definition: Configuration.h:146
wxCoord GetIndent() const
Get the indentation of GroupCells.
Definition: Configuration.h:318
std::int_fast32_t CellCfgCnt() const
A counter that increases every time we need to recalculate all worksheet cells.
Definition: Configuration.h:1076
bool ShowLabels() const
Do we want at all to show labels?
Definition: Configuration.h:737
static std::unordered_map< TextStyle, wxString > m_styleNames
The list of names for the worksheet's text styles.
Definition: Configuration.h:197
std::random_device m_rd
Our random device.
Definition: Configuration.h:1066
wxString MaximaParameters() const
Parameters to the maxima binary.
Definition: Configuration.h:759
wxSize GetCanvasSize() const
Reads the size of the current worksheet's visible window. See SetCanvasSize.
Definition: Configuration.h:683
void InternalHelpBrowser(bool useInternalHelpBrowser)
Use the internal help browser? If not a external web browser is used.
Definition: Configuration.h:783
double GetZoomFactor() const
Determines the zoom factor the worksheet is displayed at.
Definition: Configuration.h:277
long LineWidth_em() const
The minimum sensible line width in widths of a letter.
Definition: Configuration.h:409
void SinglePageManual(bool singlePageManual)
Prefer the single-page manual?
Definition: Configuration.h:789
bool IndentMaths() const
Do we want to indent all maths?
Definition: Configuration.h:465
wxString MaximaLocation() const
Returns the location of the maxima binary.
Definition: Configuration.cpp:1196
void SetBackgroundBrush(const wxBrush &brush)
Set the brush to be used for the worksheet background.
Definition: Configuration.cpp:576
bool FixedFontInTextControls() const
Use a typewriter font in wizard entry fields that can contain maxima commands?
Definition: Configuration.h:180
bool GetAutoIndent() const
Do we want automatic indentation?
Definition: Configuration.h:459
long LabelWidth() const
Get the width of worksheet labels [in chars].
Definition: Configuration.h:307
void SetRecalcContext(wxDC &dc)
Set the drawing context that is currently active.
Definition: Configuration.h:171
double PrintScale() const
Hide brackets that are not under the pointer?
Definition: Configuration.h:244
wxString GetWorkingDirectory() const
Get maxima's working directory.
Definition: Configuration.h:155
long GetBaseIndent() const
The y position the worksheet starts at.
Definition: Configuration.h:352
void DisplayMode(mathDisplayMode mode)
Tell the config if maxima outputs 1D, 2D or 2D ASCII equations, currently.
Definition: Configuration.h:148
static bool GetAutoWrapCode()
Do we want to have automatic line breaks for code cells?
Definition: Configuration.h:447
long MaxGnuplotMegabytes() const
The maximum number of Megabytes of gnuplot sources we should store.
Definition: Configuration.h:900
long GetGroupSkip() const
The vertical space between GroupCells.
Definition: Configuration.h:361
void HelpBrowserUserLocation(wxString helpBrowser)
Sets the location of the web browser the user has detected.
Definition: Configuration.h:796
void SetWorkingDirectory(wxString dir)
Set maxima's working directory.
Definition: Configuration.h:151
bool CheckKeepPercent() const
Do we want to display "%e" as "%e" and "%pi" as "%pi"?
Definition: Configuration.h:493
const std::vector< TextStyle > & GetCodeStylesList() const
Which styles affect how code is displayed?
Definition: Configuration.h:1034
wxString MathJaXURL() const
Returns the URL MathJaX can be found at.
Definition: Configuration.h:813
void AutodetectMaxima(bool autodetectmaxima)
Autodetect maxima's location?
Definition: Configuration.h:756
void SetChangeAsterisk(bool changeAsterisk)
Use Unicode centered dots for multiplication signs?
Definition: Configuration.h:565
std::default_random_engine m_eng
Our random engine.
Definition: Configuration.h:1068
void PrintScale(double scale)
Define if we want to hide brackets that are not under the pointer.
Definition: Configuration.h:248
void SetWorkSheet(wxWindow *workSheet)
Set the worksheet this configuration storage is valid for.
Definition: Configuration.cpp:204
void InitStyles()
Initialize the text styles on construction.
Definition: Configuration.cpp:487
static void SetDebugmode()
Enable costly checks.
Definition: Configuration.h:1045
static double GetMinZoomFactor()
The lower limit we allow for the zoom factor.
Definition: Configuration.h:209
bool AutodetectMaxima() const
Autodetect maxima's location? (If false the user-specified location is used)
Definition: Configuration.h:754
bool ClipToDrawRegion() const
Do we want to save time by only redrawing the area currently shown on the screen?
Definition: Configuration.h:930
void SetZoomFactor(double newzoom)
Sets the zoom factor the worksheet is displayed at.
Definition: Configuration.cpp:1099
bool ShowBrackets() const
Show the cell brackets [displayed left to each group cell showing its extend]?
Definition: Configuration.h:695
bool FixReorderedIndices() const
Renumber out-of-order cell labels on saving.
Definition: Configuration.h:807
bool GetPrinting() const
Are we currently printing?
Definition: Configuration.h:538
wxBrush GetBackgroundBrush() const
Get the brush to be used for the worksheet background.
Definition: Configuration.h:184
void SetIndent(long indent)
Set the indentation of GroupCells.
Definition: Configuration.h:373
long GetLineWidth() const
Returns the maximum sensible width for a text line [in characters]:
Definition: Configuration.cpp:1072
void FixedFontInTextControls(bool fixed)
Use a typewriter font in wizard entry fields that can contain maxima commands?
Definition: Configuration.h:182
static EscCodeIterator EscCodesEnd()
Iterators over the escape code list.
Definition: Configuration.cpp:555
wxCoord Scale_Px(double px) const
Scales a distance [in pixels] according to the zoom factor.
Definition: Configuration.cpp:1400
wxCoord GetCellBracketWidth() const
The width we allocate for our cell brackets.
Definition: Configuration.h:231
void MaximaUserLocation(wxString maxima)
Sets the location of the maxima binary.
Definition: Configuration.h:773
bool OfferInternalHelpBrowser() const
If we decide that the HTML browser in the sidebar doesn't work for every platform....
Definition: Configuration.cpp:1548
void ClipToDrawRegion(bool clipToDrawRegion)
Do we want to save time by only redrawing the area currently shown on the screen?
Definition: Configuration.h:932
wxColour GetColor(TextStyle style)
Gets the color for a text style.
Definition: Configuration.cpp:1389
long GetCursorWidth() const
How much vertical space is to be left between two group cells?
Definition: Configuration.h:336
static wxString m_configfileLocation_override
Where to store the configuration.
Definition: Configuration.h:194
void LineWidth_em(long width)
Set the minimum sensible line width in widths of a letter.
Definition: Configuration.h:421
void HideBrackets(bool hide)
Define if we want to hide brackets that are not under the pointer.
Definition: Configuration.h:241
double GetDefaultLineWidth() const
Calculates the default line width for the worksheet.
Definition: Configuration.h:400
void ReadConfig()
Read the config from the wxConfig object.
Definition: Configuration.cpp:627
InitOpt
Definition: Configuration.h:121
@ temporary
This configuration is temporary and shouldn't redetect Maxima etc.
Definition: Configuration.h:123
bool InternalHelpBrowser() const
Use the internal help browser? If not a external web browser is used.
Definition: Configuration.h:781
void SetParenthesisDrawMode(drawMode mode)
Which way do we want to draw parenthesis?
Definition: Configuration.h:856
drawMode
Definition: Configuration.h:115
@ ascii
Use ascii characters only.
Definition: Configuration.h:116
@ handdrawn
A parenthesis sign that was created using draw commands.
Definition: Configuration.h:117
void SetCanvasSize(wxSize siz)
Sets the size of the current worksheet's visible window.
Definition: Configuration.h:687
void MaximaParameters(wxString parameters)
The parameters we pass to the maxima binary.
Definition: Configuration.h:761
void NotifyOfCellRedraw(const Cell *cell)
Record that this cell has been drawn to ReportMultipleRedraws()
Definition: Configuration.cpp:1012
long ShowLength() const
The choice for the "maximum output length to display" setting.
Definition: Configuration.h:851
void ResetAllToDefaults()
Reset the whole configuration to its default values.
Definition: Configuration.cpp:242
void ReadStyles(const wxString &file={})
Reads the style settings.
Definition: Configuration.cpp:1207
htmlExportFormat
The export formats we support for HTML equations.
Definition: Configuration.h:97
bool IsOperator(wxString name)
Coincides name with a operator known to maxima?
Definition: Configuration.h:141
bool UseUserLabels() const
Do we want at all to show labels?
Definition: Configuration.h:733
bool UpdateNeeded() const
true means: The system's config storage has changed since the configuration has been read
Definition: Configuration.cpp:1564
std::size_t ShowLength_Bytes() const
The "maximum output length to display" setting in cells.
Definition: Configuration.cpp:1723
long GetDisplayedDigits() const
Returns the maximum number of displayed digits.
Definition: Configuration.h:608
const Style * GetStyle(TextStyle textStyle) const
Get the text Style for a given text style identifier.
Definition: Configuration.h:876
bool AutodetectHelpBrowser() const
Autodetect the web browser? (If false the user-specified location is used)
Definition: Configuration.h:776
void ShowLength(long length)
The choice for the "maximum output length to display" setting.
Definition: Configuration.h:847
void LabelWidth(long labelWidth)
Set the width of worksheet labels [in chars].
Definition: Configuration.h:310
const std::vector< TextStyle > & GetColorOnlyStylesList() const
Which styles affect only colors?
Definition: Configuration.h:1038
bool PrintBrackets() const
Print the cell brackets [displayed left to each group cell showing its extend]?
Definition: Configuration.h:706
Clears the configuration's "Clip to draw region" flag until this class is left.
Definition: Configuration.h:1301
Sets the configuration's "printing" flag until this class is left.
Definition: Configuration.h:1284
Text Style Definition.
Definition: TextStyle.h:63
AFontSize GetFontSize() const
The size of this style's font, asserted to be valid.
Definition: TextStyle.cpp:101
Definition: Configuration.h:385