wxMaxima
Classes | Public Types | Public Member Functions | Static Public Member Functions | Public Attributes | Static Public Attributes | Protected Types | Protected Member Functions | Protected Attributes | Static Protected Attributes | Friends | List of all members
wxMaxima Class Reference
Inheritance diagram for wxMaxima:
Inheritance graph
[legend]
Collaboration diagram for wxMaxima:
Collaboration graph
[legend]

Classes

struct  ServerDeleter
 
class  VersionNumber
 A version number that can be compared using "<" and ">". More...
 

Public Types

enum  TimerIDs { KEYBOARD_INACTIVITY_TIMER_ID, AUTO_SAVE_TIMER_ID, MAXIMA_STDOUT_POLL_ID }
 An enum of individual IDs for all timers this class handles. More...
 
- Public Types inherited from wxMaximaFrame
enum  Event {
  menu_pane_hideall = wxID_HIGHEST + 2500, menu_pane_math, menu_pane_history, menu_pane_structure,
  menu_pane_xmlInspector, menu_pane_format, menu_pane_greek, menu_pane_unicode,
  menu_pane_log, menu_pane_variables, menu_pane_draw, menu_pane_symbols,
  menu_pane_stats, menu_pane_dockAll, input_line_id, refresh_id,
  menu_batch_id, menu_load_id, menu_sconsole_id, menu_interrupt_id,
  menu_solve, menu_solve_to_poly, menu_solve_num, menu_allroots,
  menu_bfallroots, menu_realroots, menu_solve_lin, menu_solve_algsys,
  menu_eliminate, menu_solve_ode, menu_ivp_1, menu_ivp_2,
  menu_bvp, menu_gen_mat, menu_gen_mat_lambda, menu_enter_mat,
  menu_csv2mat, menu_mat2csv, menu_csv2list, menu_list2csv,
  menu_matrix_row, menu_matrix_col, menu_matrix_row_list, menu_matrix_col_list,
  menu_submatrix, menu_matrix_multiply, menu_matrix_exponent, menu_matrix_hadamard_product,
  menu_matrix_hadamard_exponent, menu_invert_mat, menu_cpoly, menu_determinant,
  menu_rank, menu_eigen, menu_eigvect, menu_fun_def,
  menu_adjoint_mat, menu_transpose, menu_map_mat, menu_ratsimp,
  menu_radsimp, menu_factor, menu_gfactor, menu_expand,
  menu_talg, menu_tellrat, menu_modulus, menu_trigsimp,
  menu_trigreduce, menu_trigexpand, menu_trigrat, menu_rectform,
  menu_polarform, menu_demoivre, menu_exponentialize, menu_num_out,
  menu_stringdisp, menu_to_float, menu_to_bfloat, menu_to_numer,
  menu_num_domain, menu_set_precision, menu_set_displayprecision, menu_engineeringFormat,
  menu_engineeringFormatSetup, menu_functions, menu_variables, menu_clear_var,
  menu_clear_fun, menu_integrate, menu_risch, menu_laplace,
  menu_ilt, menu_continued_fraction, menu_gcd, menu_lcm,
  menu_divide, menu_partfrac, menu_sum, menu_limit,
  menu_lbfgs, menu_series, menu_pade, menu_map,
  menu_diff, menu_solve_de, menu_atvalue, menu_lhs,
  menu_rhs, menu_wxmaximahelp, menu_maximahelp, menu_example,
  menu_apropos, menu_product, menu_make_list, menu_apply,
  menu_time, menu_factsimp, menu_factcomb, menu_realpart,
  menu_imagpart, menu_subst, menu_jumptoerror, menu_math_as_1D_ASCII,
  menu_math_as_2D_ASCII, menu_math_as_graphics, menu_noAutosubscript, menu_defaultAutosubscript,
  menu_alwaysAutosubscript, menu_autosubscriptIndividual, menu_declareAutosubscript, menu_noAutosubscriptIndividual,
  menu_roundedMatrixParens, menu_squareMatrixParens, menu_straightMatrixParens, menu_angledMatrixParens,
  menu_noMatrixParens, menu_draw_2d, menu_draw_3d, menu_draw_explicit,
  menu_draw_implicit, menu_draw_parametric, menu_draw_points, menu_draw_fgcolor,
  menu_draw_fillcolor, menu_draw_title, menu_draw_key, menu_draw_grid,
  menu_draw_axis, menu_draw_accuracy, menu_draw_contour, menu_license,
  button_factor_id, button_solve, button_solve_ode, button_limit,
  button_taylor, button_expand, button_ratsimp, button_radcan,
  button_trigsimp, button_trigexpand, button_trigreduce, button_trigrat,
  button_integrate, button_diff, button_sum, button_product,
  button_button_constant, button_factor, button_subst, button_plot2,
  button_plot3, button_rectform, button_map, gp_plot2,
  gp_plot3, menu_animationautostart, menu_animationframerate, menu_display,
  menu_soft_restart, menu_plot_format, menu_build_info, menu_bug_report,
  menu_add_path, menu_evaluate_all_visible, menu_evaluate_all, menu_show_tip,
  menu_copy_matlab_from_worksheet, menu_copy_tex_from_worksheet, menu_copy_text_from_worksheet, menu_logcontract,
  menu_logexpand, menu_to_fact, menu_to_gamma, menu_texform,
  menu_debugmode, menu_debugmode_off, menu_debugmode_lisp, menu_debugmode_all,
  button_enter, menu_zoom_80, menu_zoom_120, menu_zoom_150,
  menu_zoom_200, menu_zoom_300, menu_copy_as_bitmap, menu_copy_as_svg,
  menu_save_as_svg, menu_copy_as_emf, menu_save_as_emf, menu_copy_as_rtf,
  menu_copy_to_file, menu_export_html, menu_change_var, menu_nouns,
  menu_evaluate, menu_convert_to_code, menu_add_comment, menu_convert_to_comment,
  menu_add_subsubsection, menu_add_heading5, menu_add_heading6, menu_convert_to_subsubsection,
  menu_convert_to_heading5, menu_convert_to_heading6, menu_add_subsection, menu_convert_to_subsection,
  menu_add_section, menu_convert_to_section, menu_add_title, menu_convert_to_title,
  menu_add_pagebreak, menu_fold_all_cells, menu_unfold_all_cells, menu_insert_input,
  menu_insert_previous_input, menu_insert_previous_output, menu_autocomplete, menu_autocomplete_templates,
  menu_paste_input, menu_fullscreen, menu_remove_output, menu_list_create_from_elements,
  menu_list_create_from_rule, menu_list_create_from_list, menu_list_create_from_args, menu_list_list2matrix,
  menu_list_matrix2list, menu_list_actual_values_storage, menu_list_sort, menu_list_remove_duplicates,
  menu_list_length, menu_list_push, menu_list_pop, menu_list_reverse,
  menu_list_first, menu_list_last, menu_list_lastn, menu_list_rest,
  menu_list_restN, menu_list_nth, menu_list_map, menu_list_use_actual_values,
  menu_list_extract_value, menu_list_as_function_arguments, menu_list_do_for_each_element, menu_list_remove_element,
  menu_list_append_item_start, menu_list_append_item_end, menu_list_append_list, menu_list_interleave,
  menu_recent_packages, menu_recent_package_0, menu_recent_package_1, menu_recent_package_2,
  menu_recent_package_3, menu_recent_package_4, menu_recent_package_5, menu_recent_package_6,
  menu_recent_package_7, menu_recent_package_8, menu_recent_package_9, menu_recent_package_10,
  menu_recent_package_11, menu_recent_package_12, menu_recent_package_13, menu_recent_package_14,
  menu_recent_package_15, menu_recent_package_16, menu_recent_package_17, menu_recent_package_18,
  menu_recent_package_19, menu_recent_package_20, menu_recent_package_21, menu_recent_package_22,
  menu_recent_package_23, menu_recent_package_24, menu_recent_package_25, menu_recent_package_26,
  menu_recent_package_27, menu_recent_package_28, menu_recent_package_29, menu_recent_documents,
  menu_recent_document_0, menu_recent_document_1, menu_recent_document_2, menu_recent_document_3,
  menu_recent_document_4, menu_recent_document_5, menu_recent_document_6, menu_recent_document_7,
  menu_recent_document_8, menu_recent_document_9, menu_recent_document_10, menu_recent_document_11,
  menu_recent_document_12, menu_recent_document_13, menu_recent_document_14, menu_recent_document_15,
  menu_recent_document_16, menu_recent_document_17, menu_recent_document_18, menu_recent_document_19,
  menu_recent_document_20, menu_recent_document_21, menu_recent_document_22, menu_recent_document_23,
  menu_recent_document_24, menu_recent_document_25, menu_recent_document_26, menu_recent_document_27,
  menu_recent_document_28, menu_recent_document_29, menu_recent_document_separator, menu_unsaved_document_0,
  menu_unsaved_document_1, menu_unsaved_document_2, menu_unsaved_document_3, menu_unsaved_document_4,
  menu_unsaved_document_5, menu_unsaved_document_6, menu_unsaved_document_7, menu_unsaved_document_8,
  menu_unsaved_document_9, menu_unsaved_document_10, menu_unsaved_document_11, menu_unsaved_document_12,
  menu_unsaved_document_13, menu_unsaved_document_14, menu_unsaved_document_15, menu_unsaved_document_16,
  menu_unsaved_document_17, menu_unsaved_document_18, menu_unsaved_document_19, menu_unsaved_document_20,
  menu_unsaved_document_21, menu_unsaved_document_22, menu_unsaved_document_23, menu_unsaved_document_24,
  menu_unsaved_document_25, menu_unsaved_document_26, menu_unsaved_document_27, menu_unsaved_document_28,
  menu_unsaved_document_29, menu_insert_image, menu_stats_mean, menu_stats_median,
  menu_stats_var, menu_stats_dev, menu_stats_tt1, menu_stats_tt2,
  menu_stats_tnorm, menu_stats_linreg, menu_stats_lsquares, menu_stats_histogram,
  menu_stats_scatterplot, menu_stats_barsplot, menu_stats_piechart, menu_stats_boxplot,
  menu_stats_readm, menu_stats_enterm, menu_stats_subsample, menu_format_code,
  menu_format_text, menu_format_heading6, menu_format_heading5, menu_format_subsubsection,
  menu_format_subsection, menu_format_section, menu_format_title, menu_format_image,
  menu_format_pagebreak, menu_help_tutorials, menu_help_tutorials_start, menu_help_solving,
  menu_help_diffequations, menu_help_numberformats, menu_help_tolerances, menu_help_listaccess,
  menu_help_memoizing, menu_help_3d, menu_help_varnames, menu_help_fittingData,
  menu_help_tutorials_end, menu_show_toolbar, menu_history_previous, menu_history_next,
  menu_check_updates, socket_client_id, socket_server_id, maxima_process_id,
  gnuplot_query_terminals_id, gnuplot_process_id, menu_additionalSymbols, enable_unicodePane,
  menu_showLatinGreekLookalikes, menu_showGreekMu, menu_invertWorksheetBackground
}
 
enum  ToolbarStatus {
  wait_for_start, process_wont_start, sending, waiting,
  calculating, parsing, transferring, userinput,
  disconnected
}
 

Public Member Functions

 wxMaxima (wxWindow *parent, int id, wxLocale *locale, const wxString title, const wxString &filename=wxEmptyString, const wxPoint pos=wxDefaultPosition, const wxSize size=wxDefaultSize)
 
void OnTimerEvent (wxTimerEvent &event)
 Is triggered when a timer this class is responsible for requires.
 
void ShowTip (bool force)
 
void SetWXMdata (const wxString &data)
 
void EvalOnStartup (bool eval)
 Do we want to evaluate the document on startup?
 
void ExitAfterEval (bool exitaftereval)
 Do we want to exit the program after evaluation?
 
void StripLispComments (wxString &s)
 
void LaunchHelpBrowser (wxString uri)
 Launches the help browser on the uri passed as an argument.
 
void SendMaxima (wxString s, bool addToHistory=false)
 
bool OpenFile (const wxString &file, const wxString &command={})
 Open a file.
 
bool DocumentSaved ()
 Does this document need saving?
 
void LoadImage (wxString file)
 Load an image from a file into the worksheet.
 
bool QueryVariableValue ()
 Query the value of a new maxima variable.
 
- Public Member Functions inherited from wxMaximaFrame
 wxMaximaFrame (wxWindow *parent, int id, const wxString &title, const wxPoint &pos=wxDefaultPosition, const wxSize &size=wxDefaultSize, long style=wxDEFAULT_FRAME_STYLE|wxSYSTEM_MENU|wxCAPTION, bool becomeLogTarget=true)
 
virtual ~wxMaximaFrame ()
 
void ShowToolBar (bool show)
 
void UpdateRecentDocuments ()
 
bool IsPaneDisplayed (Event id)
 
void ShowPane (Event id, bool show=true)
 
void AddToHistory (const wxString &cmd)
 Adds a command to the list of recently used maxima commands.
 
void EvaluationQueueLength (int length, int numberOfCommands=-1)
 
void StatusMaximaBusy (ToolbarStatus status)
 
void UpdateStatusMaximaBusy ()
 
void StatusSaveStart ()
 Set the status to "Maxima is saving".
 
void StatusSaveFinished ()
 Set the status to "Maxima has finished saving".
 
void StatusSaveFailed ()
 Set the status to "Saving has failed".
 
void StatusExportStart ()
 Set the status to "Maxima is exporting".
 
void StatusExportFinished ()
 Set the status to "Maxima has finished exporting".
 
void StatusExportFailed ()
 Set the status to "Exporting has failed".
 
void LeftStatusText (const wxString &text, bool saveInLog=true)
 
void RightStatusText (const wxString &text, bool saveInLog=true)
 

Static Public Member Functions

static void PipeToStdout ()
 Pipe maxima's output to stdout.
 
static void ExitOnError ()
 
static void EnableIPC ()
 
static void ExtraMaximaArgs (const wxString &args)
 

Public Attributes

wxTimer m_maximaStdoutPollTimer
 A timer that polls for output from the maxima process.
 
- Public Attributes inherited from wxMaximaFrame
ToolbarStatus m_StatusMaximaBusy
 True=Maxima is currently busy.
 
ToolbarStatus m_StatusMaximaBusy_next
 

Static Public Attributes

const static wxString m_promptSuffix
 The marker for the end of a input prompt.
 

Protected Types

enum  AppendOpt { NewLine = 1, BigSkip = 2, PromptToolTip = 4, DefaultOpt = NewLine|BigSkip }
 

Protected Member Functions

wxString ReadPotentiallyUnclosedTag (wxStringTokenizer &lines, wxString firstLine)
 Reads a potentially unclosed XML tag and closes it.
 
void OnActivate (wxActivateEvent &event)
 Called when this window is activated or deactivated.
 
void OnMinimize (wxIconizeEvent &event)
 Called when this window is minimized.
 
void ConfigChanged ()
 Is called on start and whenever the configuration changes.
 
void OnJumpToError (wxCommandEvent &event)
 Called when the "Scroll to last error" button is pressed.
 
void OnSymbolAdd (wxCommandEvent &event)
 Sends a new char to the symbols sidebar.
 
void OnFollow (wxCommandEvent &event)
 Called when the "Scroll to currently evaluated" button is pressed.
 
void ShowMaximaHelp (wxString={})
 Show the help for Maxima.
 
void ShowMaximaHelpWithoutAnchor ()
 Show the help for Maxima (without handling of anchors).
 
void ShowWxMaximaHelp ()
 Show the help for wxMaxima.
 
void ShowHelp (const wxString &keyword)
 Try to determine if help is needed for maxima or wxMaxima and show this help.
 
void CheckForUpdates (bool reportUpToDate=false)
 
void OnRecentDocument (wxCommandEvent &event)
 
void OnRecentPackage (wxCommandEvent &event)
 
void OnUnsavedDocument (wxCommandEvent &event)
 
void OnChar (wxKeyEvent &event)
 
void OnKeyDown (wxKeyEvent &event)
 
void OnIdle (wxIdleEvent &event)
 
bool InterpretDataFromMaxima (const wxString &newData)
 
void MenuCommand (const wxString &cmd)
 Inserts command cmd into the worksheet. More...
 
void FileMenu (wxCommandEvent &event)
 Processes "file menu" clicks.
 
void MaximaMenu (wxCommandEvent &event)
 Processes "maxima menu" clicks.
 
void MatrixMenu (wxCommandEvent &event)
 Processes "algebra menu" clicks.
 
void EquationsMenu (wxCommandEvent &event)
 Processes "equations menu" clicks.
 
void CalculusMenu (wxCommandEvent &event)
 event handling for menus
 
void SimplifyMenu (wxCommandEvent &event)
 Processes "Simplify menu" clicks.
 
void PlotMenu (wxCommandEvent &event)
 Processes "Plot menu" cloicks.
 
void ListMenu (wxCommandEvent &event)
 Processes "list menu" clicks.
 
void DrawMenu (wxCommandEvent &event)
 Processes "draw menu" clicks.
 
void NumericalMenu (wxCommandEvent &event)
 Processes "Numerical menu" clicks.
 
void HelpMenu (wxCommandEvent &event)
 Processes "Help menu" clicks.
 
void EditMenu (wxCommandEvent &event)
 Processes "Edit menu" clicks.
 
void ReplaceSuggestion (wxCommandEvent &event)
 Processes clicks on suggestions.
 
void Interrupt (wxCommandEvent &event)
 
void UpdateMenus ()
 Make the menu item, toolbars and panes visible that should be visible right now. More...
 
void UpdateToolBar ()
 Enables and disables the Right toolbar buttons.
 
void UpdateSlider ()
 Updates the slider to show the right frame. More...
 
void ShowPane (wxCommandEvent &event)
 
void OnProcessEvent (wxProcessEvent &event)
 
void OnGnuplotClose (wxProcessEvent &event)
 
void OnGnuplotQueryTerminals (wxProcessEvent &event)
 
void PopupMenu (wxCommandEvent &event)
 
void StatsMenu (wxCommandEvent &event)
 
void ChangeCellStyle (wxCommandEvent &event)
 Is triggered when the textstyle drop-down box's value is changed.
 
void OnFind (wxFindDialogEvent &event)
 Is triggered when the "Find" button in the search dialog is pressed.
 
void OnFindClose (wxFindDialogEvent &event)
 Is triggered when the "Close" button in the search dialog is pressed.
 
void OnReplace (wxFindDialogEvent &event)
 Is triggered when the "Replace" button in the search dialog is pressed.
 
void OnReplaceAll (wxFindDialogEvent &event)
 Is triggered when the "Replace All" button in the search dialog is pressed.
 
void OnMaximaConnect ()
 Is called if maxima connects to wxMaxima.
 
void MaximaEvent (::MaximaEvent &event)
 Maxima sends or receives data, or disconnects. More...
 
void ServerEvent (wxSocketEvent &event)
 Server event: Maxima connects. More...
 
void AddDrawParameter (wxString cmd, int dimensionsOfNewDrawCommand=2)
 
TextCellConsoleAppend (wxString s, CellType type, const wxString &userLabel={})
 append maxima output to console More...
 
void DoConsoleAppend (wxString s, CellType type, AppendOpt opts=AppendOpt::DefaultOpt, const wxString &userLabel={})
 
TextCellDoRawConsoleAppend (wxString s, CellType type, AppendOpt opts={})
 
void EditInputMenu (wxCommandEvent &event)
 
void VarReadEvent (wxCommandEvent &event)
 Trigger reading all variables from Maxima that are shown in the Variables sidebar.
 
void VarAddAllEvent (wxCommandEvent &event)
 Trigger adding all variables to the variables sidebar.
 
void EvaluateEvent (wxCommandEvent &event)
 Handle the evaluation event.
 
void InsertMenu (wxCommandEvent &event)
 
void PrintMenu (wxCommandEvent &event)
 
void SliderEvent (wxScrollEvent &event)
 
void NetworkDClick (wxCommandEvent &ev)
 Issued on double click on the network status.
 
void HistoryDClick (wxCommandEvent &event)
 Issued on double click on a history item.
 
void TableOfContentsSelection (wxListEvent &event)
 Issued on double click on a table of contents item.
 
void OnInspectorEvent (wxCommandEvent &ev)
 
void DumpProcessOutput ()
 
void TriggerEvaluation ()
 Try to evaluate the next command for maxima that is in the evaluation queue. More...
 
void TryUpdateInspector ()
 
bool UpdateDrawPane ()
 
wxString ExtractFirstExpression (const wxString &entry)
 
wxString GetDefaultEntry ()
 
bool StartServer ()
 starts the server
 
bool StartMaxima (bool force=false)
 
void OnClose (wxCloseEvent &event)
 close wxMaxima window
 
wxString GetCommand (bool params=true)
 returns the command to start maxima More...
 
void ReadStdErr ()
 Polls the stderr and stdout of maxima for input.
 
void ReadFirstPrompt (wxString &data)
 
bool ParseNextChunkFromMaxima (wxString &data)
 
int FindTagEnd (const wxString &data, const wxString &tag)
 Find the end of a tag in wxMaxima's output.
 
void ReadMiscText (const wxString &data)
 
void ReadPrompt (wxString &data)
 
void ReadStatusBar (wxString &data)
 
void ReadMath (wxString &data)
 
void ReadMaximaIPC (wxString &data)
 
void ReadLoadSymbols (wxString &data)
 
void ReadSuppressedOutput (wxString &data)
 Read (and discard) suppressed output.
 
void ReadVariables (wxString &data)
 
void ReadAddVariables (wxString &data)
 
void VariableActionUserDir (const wxString &value)
 
void VariableActionTempDir (const wxString &value)
 
void VariableActionDebugmode (const wxString &value)
 
void VariableActionAutoconfVersion (const wxString &value)
 
void VariableActionAutoconfHost (const wxString &value)
 
void VariableActionMaximaInfodir (const wxString &value)
 
void VariableActionMaximaHtmldir (const wxString &value)
 
void VariableActionGnuplotCommand (const wxString &value)
 
void VariableActionMaximaSharedir (const wxString &value)
 
void VariableActionLispName (const wxString &value)
 
void VariableActionLispVersion (const wxString &value)
 
void VariableActionWxLoadFileName (const wxString &value)
 
void VariableActionWxSubscripts (const wxString &value)
 
void VariableActionLmxChar (const wxString &value)
 
void VariableActionDisplay2D (const wxString &value)
 
void VariableActionAltDisplay2D (const wxString &value)
 
void VariableActionNumer (const wxString &value)
 
void VariableActionAlgebraic (const wxString &value)
 
void VariableActionShowtime (const wxString &value)
 
void VariableActionDomain (const wxString &value)
 
void VariableActionAutoplay (const wxString &value)
 
void VariableActionEngineeringFormat (const wxString &value)
 
void VariableActionStringdisp (const wxString &value)
 
void VariableActionOperators (const wxString &value)
 
long long GetTotalCpuTime ()
 
long long GetMaximaCpuTime ()
 
double GetMaximaCPUPercentage ()
 
bool SaveNecessary ()
 Does this file contain anything worth saving?
 
void SetupVariables ()
 
void KillMaxima (bool logMessage=true)
 kills the maxima process
 
void ResetTitle (bool saved, bool force=false)
 
void BecomeLogTarget ()
 
void FirstOutput ()
 
bool OpenXML (const wxString &file, Worksheet *document)
 
bool CheckWXMXVersion (const wxString &docversion)
 Complains if the version string from the XML file indicates too low a maxima version.
 
bool OpenMACFile (const wxString &file, Worksheet *document, bool clearDocument=true)
 Opens a .mac file or a .out file from Xmaxima.
 
bool OpenWXMFile (const wxString &file, Worksheet *document, bool clearDocument=true)
 Opens a wxm file.
 
bool OpenWXMXFile (const wxString &file, Worksheet *document, bool clearDocument=true)
 Opens a wxmx file.
 
std::unique_ptr< GroupCellCreateTreeFromXMLNode (wxXmlNode *xmlcells, const wxString &wxmxfilename={})
 Loads a wxmx description.
 
bool SaveFile (bool forceSave=false)
 
bool SaveOnClose ()
 Try to save the file before closing it - or return false.
 
bool AutoSave ()
 
int SaveDocumentP ()
 
void SetCWD (wxString file)
 Set the current working directory file I/O from maxima is relative to.
 
wxString GetCWD ()
 Get the current working directory file I/O from maxima is relative to.
 
void GnuplotCommandName (wxString gnuplot)
 Sets gnuplot's command name and tries to determine gnuplot's path.
 
- Protected Member Functions inherited from wxMaximaFrame
void OnNotificationClose (wxCommandEvent WXUNUSED(&event))
 Issued if a notification is closed.
 
void RemoveTempAutosavefile ()
 Remove an eventual temporary autosave file.
 
void ReReadConfig ()
 Re-read the configuration.
 
void RegisterAutoSaveFile ()
 Remember a temporary autosave file name.
 
void DockAllSidebars (wxCommandEvent &ev)
 
virtual wxSize DoGetBestClientSize () const
 The default size for the window.
 
bool ToolbarIsShown ()
 

Protected Attributes

wxProcess * m_gnuplotProcess = NULL
 The gnuplot process info.
 
wxProcess * m_gnuplotTerminalQueryProcess = NULL
 Info about the gnuplot process we start for querying the terminals it supports.
 
bool m_isActive
 Is this window active?
 
bool m_dataFromMaximaIs
 
wxString m_maximaVariable_wxSubscripts
 
wxString m_maximaVariable_lmxchar
 
wxString m_maximaVariable_display2d
 
wxString m_maximaVariable_altdisplay2d
 
wxString m_maximaVariable_engineeringFormat
 
bool m_readMaximaVariables = false
 
std::unique_ptr< Maximam_client
 
std::unique_ptr< wxSocketServer, ServerDeleterm_server
 
wxProcess * m_process
 
wxInputStream * m_maximaStdout
 The stdout of the maxima process.
 
wxInputStream * m_maximaStderr
 The stderr of the maxima process.
 
int m_port
 
wxString m_currentOutputEnd
 
wxString m_currentOutput
 All from maxima's current output we still haven't interpreted.
 
bool m_dispReadOut
 what is displayed in statusbar
 
wxString m_lastPrompt
 
wxString m_lastPath
 
std::unique_ptr< wxPrintData > m_printData
 
bool m_closing
 
wxString m_openFile
 
wxString m_maximaTempDir
 The directory with maxima's temp files.
 
wxString m_maximaHtmlDir
 
bool m_fileSaved
 
wxString m_maximaArch
 
wxString m_lispVersion
 
wxString m_lispType
 
wxString m_gnuplotcommand
 Maxima's idea about gnuplot's location.
 
int m_commandIndex
 The Char the current command starts at in the current WorkingGroup.
 
wxFindReplaceData m_findData
 
MathParser m_parser
 
bool m_maximaBusy
 
- Protected Attributes inherited from wxMaximaFrame
long m_bytesFromMaxima
 How many bytes did maxima send us until now?
 
long m_pid
 The process id of maxima. Is determined by ReadFirstPrompt.
 
wxString m_tempfileName
 The last name GetTempAutosavefileName() has returned.
 
StatusBarm_statusBar
 The status bar.
 
MainMenuBarm_MenuBar
 The menu bar.
 
wxMenu * m_FileMenu
 The file menu.
 
wxMenu * m_EditMenu
 The edit menu.
 
wxMenu * m_CellMenu
 The cell menu.
 
wxMenu * m_Edit_Zoom_Sub
 The zoom submenu.
 
wxMenu * m_Maxima_Panes_Sub
 The panes submenu.
 
wxMenu * m_EquationsMenu
 The equations menu.
 
wxMenu * m_MaximaMenu
 The maxima menu.
 
wxMenu * m_Algebra_Menu
 The algebra menu.
 
wxMenu * m_SimplifyMenu
 The simplify menu.
 
wxMenu * m_Simplify_Gamma_Sub
 The factorials and gamma submenu.
 
wxMenu * m_debugTypeMenu
 Contains the menu for the debugger trigger settingxc.
 
wxMenu * m_Simplify_Trig_Sub
 The trigonometric submenu.
 
wxMenu * m_Simplify_Complex_Sub
 The complex submenu.
 
wxMenu * m_CalculusMenu
 The calculus menu.
 
wxMenu * m_PlotMenu
 The plot menu.
 
wxMenu * m_listMenu
 The list menu.
 
wxMenu * m_NumericMenu
 The numeric menu.
 
wxMenu * m_HelpMenu
 The help menu.
 
long m_drawDimensions_last
 Are we inside a 2d or 3d draw command?
 
bool m_newRightStatusText
 Do we have new text to output in the Right half of the Status Bar?
 
bool m_newLeftStatusText
 Do we have new text to output in the Left half of the Status Bar?
 
wxString m_rightStatusText
 The text for the Right half of the Status Bar.
 
wxString m_leftStatusText
 The text for the Left half of the Status Bar.
 
DrawPane * m_drawPane
 The sidebar with the draw commands.
 
bool m_historyVisible
 
bool m_xmlMonitorVisible
 
SymbolsPane * m_symbolsPane
 
int m_EvaluationQueueLength
 The current length of the evaluation queue of commands we still need to send to maxima.
 
bool m_updateEvaluationQueueLengthDisplay
 Do we need to update the display showing the evaluation queue length?
 
int m_commandsLeftInCurrentCell
 The number of commands left in the current of the evaluation queue item.
 
bool m_first
 Do we expect the 1st prompt from maxima to appear?
 
wxAuiManager m_manager
 The manager for dynamic screen layouts.
 
XmlInspectorm_xmlInspector
 A XmlInspector-like xml monitor.
 
bool m_forceStatusbarUpdate
 true=force an update of the status bar at the next call of StatusMaximaBusy()
 
LogPanem_logPane
 The panel the log and debug messages will appear on.
 
Worksheetm_worksheet
 The worksheet itself.
 
Historym_history
 The history pane.
 
RecentDocuments m_recentDocuments
 
RecentDocuments m_unsavedDocuments
 
RecentDocuments m_recentPackages
 
wxMenu * m_recentDocumentsMenu
 
wxMenu * m_recentPackagesMenu
 
wxMenu * m_autoSubscriptMenu
 
wxMenu * m_equationTypeMenuMenu
 
wxMenu * m_roundedMatrixParensMenu
 

Static Protected Attributes

static wxRegEx m_xmlOpeningTagName
 Finds the name of an opening tag.
 
static wxRegEx m_xmlOpeningTag
 Looks if this opening tag is actually complete.
 
static wxString m_mathPrefix1
 A marker for the start of maths.
 
static wxString m_mathPrefix2
 A marker for the start of maths.
 
static wxString m_mathSuffix1
 A marker for the end of maths.
 
static wxString m_mathSuffix2
 A marker for the end of maths.
 
static wxString m_promptPrefix
 The marker for the start of a input prompt.
 
static wxString m_variablesPrefix
 The marker for the start of a variables section.
 
static wxString m_variablesSuffix
 The marker for the end of a variables section.
 
static wxString m_statusbarPrefix
 The marker for the start of a prompt. More...
 
static wxString m_statusbarSuffix
 The marker for the end of a variables section.
 
static wxString m_addVariablesPrefix
 The marker for the start of a "add variables" section.
 
static wxString m_addVariablesSuffix
 The marker for the end of a "add variables" section.
 
static wxString m_symbolsPrefix
 The marker for the start of a list of autocompletion templates.
 
static wxString m_symbolsSuffix
 The marker for the end of a list of autocompletion templates.
 
static wxString m_suppressOutputPrefix
 The marker that tells to start suppressing any output from maxima.
 
static wxString m_suppressOutputSuffix
 The marker that tells to stop to suppress any output from maxima.
 
static wxString m_firstPrompt
 The first prompt maxima will output.
 
static wxString m_emptywxxmlSymbols
 An empty wxxml symbols section.
 
static int m_exitCode = 0
 
static wxRegEx m_funRegEx
 
static wxRegEx m_varRegEx
 
static wxRegEx m_blankStatementRegEx
 
static wxRegEx m_sbclCompilationRegEx
 

Friends

class MaximaIPC
 

Member Enumeration Documentation

◆ TimerIDs

An enum of individual IDs for all timers this class handles.

Enumerator
KEYBOARD_INACTIVITY_TIMER_ID 

The keyboard was inactive long enough that we can attempt an auto-save.

AUTO_SAVE_TIMER_ID 

The time between two auto-saves has elapsed.

MAXIMA_STDOUT_POLL_ID 

We look if we got new data from maxima's stdout.

Member Function Documentation

◆ AddDrawParameter()

void wxMaxima::AddDrawParameter ( wxString  cmd,
int  dimensionsOfNewDrawCommand = 2 
)
protected

Add a parameter to a draw command

Parameters
cmdThe parameter to add to the draw command
dimensionsOfNewDrawCommandThe number of dimensions the new draw command needs to have if we need to create one..

◆ AutoSave()

bool wxMaxima::AutoSave ( )
protected

Save the project in a temp file.

Returns false if a save was necessary, but not possible.

◆ BecomeLogTarget()

void wxMaxima::BecomeLogTarget ( )
protected

Makes this window the debug log target of all windows from this maxima process

Only necessary on the mac where the same process creates loads of windows.

◆ ConsoleAppend()

TextCell * wxMaxima::ConsoleAppend ( wxString  s,
CellType  type,
const wxString &  userLabel = {} 
)
protected

append maxima output to console


Appending stuff to output

ConsoleAppend adds a new line s of type to the console window.

It will call DoConsoleAppend if s is in xml and DoRawCosoleAppend if s is not in xml.

◆ DoRawConsoleAppend()

TextCell * wxMaxima::DoRawConsoleAppend ( wxString  s,
CellType  type,
AppendOpt  opts = {} 
)
protected

Append one or more lines of ordinary unicode text to the console

Returns
A pointer to the last line that was appended or NULL, if there is no such line

◆ EditInputMenu()

void wxMaxima::EditInputMenu ( wxCommandEvent &  event)
protected

Spawn the "configure" menu.

Todo:
Inform maxima about the new default plot window size.

◆ GetCommand()

wxString wxMaxima::GetCommand ( bool  params = true)
protected

returns the command to start maxima


Getting configuration

◆ GetMaximaCPUPercentage()

double wxMaxima::GetMaximaCPUPercentage ( )
protected

How much CPU horsepower is maxima using currently?

Returns
The percentage of the CPU horsepower maxima is using or -1, if this value is unknown.

◆ GetMaximaCpuTime()

long long wxMaxima::GetMaximaCpuTime ( )
protected

How much CPU time has maxima used till now? Used by GetMaximaCPUPercentage.

Returns
The CPU time maxima has used in the same unit as GetTotalCpuTime(); -1 means: Unable to determine this value.

◆ GetTotalCpuTime()

long long wxMaxima::GetTotalCpuTime ( )
protected

How much CPU time has been used by the system until now? Used by GetMaximaCPUPercentage.

Returns
The CPU time elapsed in the same unit as GetMaximaCpuTime(); -1 means: Unable to determine this value.

◆ InterpretDataFromMaxima()

bool wxMaxima::InterpretDataFromMaxima ( const wxString &  newData)
protected

Read and interpret the new data from maxima

We don't interpret this data directly in the idle event since if we block somewhere in the idle event we block gnome.

Returns
  • true, if there was new data
  • false, if there wasn't any new data.

◆ Interrupt()

void wxMaxima::Interrupt ( wxCommandEvent &  event)
protected

Interrupt button and hotkey presses

◆ MaximaEvent()

void wxMaxima::MaximaEvent ( ::MaximaEvent event)
protected

Maxima sends or receives data, or disconnects.


Socket stuff

◆ MenuCommand()

void wxMaxima::MenuCommand ( const wxString &  cmd)
protected

Inserts command cmd into the worksheet.


Menu and button events

◆ OnIdle()

void wxMaxima::OnIdle ( wxIdleEvent &  event)
protected

The idle task that refreshes the gui (worksheet, menus, title line,...)

In GUIs normally all events (mouse events, key presses,...) are put into a queue and then are executed one by one. This makes sure that they will be processed in order - but makes a gui a more or less single-processor-task.

If the queue is empty (which means that the computer has caught up with the incoming events) this function is called once.

Moving the screen update to this function makes sure that we don't do many subsequent updates slowing down the computer any further if there are still a handful of key presses to process lowering the average response times of the program.

The worksheet is refreshed by a timer task in case the computer is too busy to execute the idle task at all.


Idle event

wxm data the worksheet is populated from

◆ OpenXML()

bool wxMaxima::OpenXML ( const wxString &  file,
Worksheet document 
)
protected

Opens a content.xml file that has been extracted from a broken .wxmx file

◆ ParseNextChunkFromMaxima()

bool wxMaxima::ParseNextChunkFromMaxima ( wxString &  data)
protected

Reads an XML tag or a piece of status text from maxima's output

Todo:
Is there any way to handle the (perhaps, thanks to the flush commands in maxima) theoretical case that maxima might stop sending data in the middle of an XML tag and then resume sending data with the next XML packet?

◆ PrintMenu()

void wxMaxima::PrintMenu ( wxCommandEvent &  event)
protected

Menu and button events

◆ ReadAddVariables()

void wxMaxima::ReadAddVariables ( wxString &  data)
protected

Reads the "add variable to watch list" tag maxima can send us

◆ ReadFirstPrompt()

void wxMaxima::ReadFirstPrompt ( wxString &  data)
protected

Determines the process id of maxima from its initial output

This function does several things:

  • it sets m_pid to the process id of maxima
  • it discards all data until this point
  • and it prepares the worksheet for editing.
Parameters
dataThe string ReadFirstPrompt() does read its data from. After leaving this function data is empty again.

Dealing with stuff read from the socket

◆ ReadMath()

void wxMaxima::ReadMath ( wxString &  data)
protected

Reads the math cell's contents from Maxima.

Math cells are enclosed between the tags <mth> and </mth>. This function removes the from data after appending them to the console.

After processing the status bar marker is removed from data.

◆ ReadMaximaIPC()

void wxMaxima::ReadMaximaIPC ( wxString &  data)
inlineprotected

Reads autocompletion templates we get on definition of a function or variable

After processing the templates they are removed from data.

◆ ReadMiscText()

void wxMaxima::ReadMiscText ( const wxString &  data)
protected

Reads text that isn't enclosed between xml tags.

Some commands provide status messages before the math output or the command has finished. This function makes wxMaxima output them directly as they arrive.

After processing the lines not enclosed in xml tags they are removed from data.

◆ ReadPrompt()

void wxMaxima::ReadPrompt ( wxString &  data)
protected

Reads the input prompt from Maxima.

After processing the input prompt it is removed from data.

◆ ReadStatusBar()

void wxMaxima::ReadStatusBar ( wxString &  data)
protected

Reads the output of wxstatusbar() commands

wxstatusbar allows the user to give and update visual feedback from long-running commands and makes sure this feedback is deleted once the command is finished.

◆ ReadVariables()

void wxMaxima::ReadVariables ( wxString &  data)
protected

Reads the variable values maxima advertises to us

◆ ResetTitle()

void wxMaxima::ResetTitle ( bool  saved,
bool  force = false 
)
protected

Update the title

Updates the "saved" status, as well, but does only do anything if saved has changed or force is true.

Parameters
savedThe new "saved" status
forceForce update if the "saved" status hasn't changed.

◆ SaveFile()

bool wxMaxima::SaveFile ( bool  forceSave = false)
protected

Saves the current file

Parameters
forceSavetrue means: Always ask for a file name before saving.

◆ SendMaxima()

void wxMaxima::SendMaxima ( wxString  s,
bool  addToHistory = false 
)

Check for function/variable definitions

Create a template from the input

◆ ServerEvent()

void wxMaxima::ServerEvent ( wxSocketEvent &  event)
protected

Server event: Maxima connects.

ServerEvent is triggered when maxima connects to the socket server.

◆ SetupVariables()

void wxMaxima::SetupVariables ( )
protected

Setup maxima's variables

This method is called once when maxima starts. It loads wxmathml.lisp and sets some option variables.

Todo:
Set pngcairo to be the default terminal as soon as the mac platform supports it.

◆ ShowPane()

void wxMaxima::ShowPane ( wxCommandEvent &  event)
protected

Toggle the visibility of a pane

Parameters
eventThe event that triggered calling this function.

◆ ShowTip()

void wxMaxima::ShowTip ( bool  force)

Tips and help

◆ StartMaxima()

bool wxMaxima::StartMaxima ( bool  force = false)
protected

starts maxima (uses getCommand) or restarts it if needed

Normally a restart is only needed if

  • maxima isn't currently in the process of starting up or
  • maxima is running and has never evaluated any program so a restart won't change anything
    Parameters
    forcetrue means to restart maxima unconditionally.

Maxima process stuff

◆ StripLispComments()

void wxMaxima::StripLispComments ( wxString &  s)

Remove empty statements

We need to remove any statement which would be considered empty and thus cause an error. Comments within non-empty expressions seem to be fine.

What we need to remove is any statements which are any amount of whitespace and any amount of comments, in any order, ended by a semicolon, and nothing else.

The most that should be left over is a single empty statement, ";".

Parameters
sThe command string from which to remove comment expressions.

◆ TriggerEvaluation()

void wxMaxima::TriggerEvaluation ( )
protected

Try to evaluate the next command for maxima that is in the evaluation queue.

Tries to evaluate next group cell in queue.

◆ UpdateMenus()

void wxMaxima::UpdateMenus ( )
protected

Make the menu item, toolbars and panes visible that should be visible right now.

Enables and disables the Right menu buttons

◆ UpdateSlider()

void wxMaxima::UpdateSlider ( )
protected

Updates the slider to show the right frame.


Plot Slider

◆ VariableActionMaximaSharedir()

void wxMaxima::VariableActionMaximaSharedir ( const wxString &  value)
protected

READ FUNCTIONS FOR AUTOCOMPLETION

Member Data Documentation

◆ m_closing

bool wxMaxima::m_closing
protected

Did we tell maxima to close?

If we didn't we respan an unexpectedly-closing maxima.

◆ m_currentOutputEnd

wxString wxMaxima::m_currentOutputEnd
protected

The end of Maxima's current uninterpreted output, see m_currentOutput.

If we just want to look if Maxima's current output contains an ending tag this is the place we can search in fast.

wxEmptyString means that the current output isn't long enough to make creating this string worthwhile.

◆ m_server

std::unique_ptr<wxSocketServer, ServerDeleter> wxMaxima::m_server
protected

The server maxima connects to as client

The destructor of the server causes crashes if there are still pending events. Instead we need to call destroy.

◆ m_statusbarPrefix

wxString wxMaxima::m_statusbarPrefix
staticprotected

The marker for the start of a prompt.

The marker for the end of a prompt The marker for the start of a variables section


The documentation for this class was generated from the following files: