30#ifndef WXMAXIMAFRAME_H
31#define WXMAXIMAFRAME_H
37#include <wx/dirctrl.h>
38#include <wx/filehistory.h>
39#include <wx/listbox.h>
40#include <wx/bmpbuttn.h>
42#include <wx/aui/aui.h>
43#include <wx/notifmsg.h>
44#include <wx/wrapsizer.h>
48#include "wizards/ScrollingGenWizPanel.h"
53#include "BuildConfig.h"
57#include "sidebars/PerformanceSidebar.h"
68 wxMaximaFrame(wxWindow *parent,
int id,
const wxString &title,
69 const wxPoint &pos = wxDefaultPosition,
70 const wxSize &size = wxDefaultSize,
71 long style = wxDEFAULT_FRAME_STYLE | wxSYSTEM_MENU | wxCAPTION);
83 static std::size_t CountWindows();
111 void ShowPane(
int id,
bool show =
true);
126 .Show(!
m_manager.GetPane(wxS(
"log")).IsShown());
132 m_manager.GetPane(
"wizard").Show(
true).Caption(title);
135 void HideWizardPane()
164 void UpdateStatusMaximaBusy();
275 void HideAllSidebars(wxCommandEvent &ev);
277 wxString wxMaximaManualLocation();
280 const std::unordered_map<int, wxString> &
GetSidebarNames()
const {
return m_sidebarNames;}
285 std::unordered_map<int, wxString> m_sidebarNames;
287 std::unordered_map<int, wxString> m_sidebarCaption;
289 std::size_t m_bytesFromMaxima_last = 0;
290 wxTimer m_bytesReadDisplayTimer;
292 bool m_StatusSaving =
false;
299 bool m_newStatusText =
false;
301 wxString m_leftStatusText;
303 bool m_forceStatusbarUpdate =
false;
311 void SetupFileMenu();
312 void SetupEditMenu();
313 void SetupViewMenu();
314 void SetupCellMenu();
315 void SetupMaximaMenu();
316 void SetupEquationsMenu();
317 void SetupMatrixMenu();
318 void SetupCalculusMenu();
319 void SetupSimplifyMenu();
320 void SetupListMenu();
321 void SetupPlotMenu();
322 void SetupNumericMenu();
323 void SetupHelpMenu();
326 void StatusText(
const wxString &text,
bool saveInLog =
true);
347 std::array<wxString, 10> m_statusTextHistory;
348 void OnMenuStatusText(wxMenuEvent &event);
349 std::unordered_map<wxWindowID, wxString> m_demoFilesIDs;
362 bool ToolbarIsShown();
377 wxMenu *m_recentDocumentsMenu = NULL;
378 wxMenu *m_unsavedDocumentsMenu = NULL;
379 wxMenu *m_recentPackagesMenu = NULL;
380 wxMenu *m_autoSubscriptMenu = NULL;
381 wxMenu *m_equationTypeMenuMenu = NULL;
382 wxMenu *m_roundedMatrixParensMenu = NULL;
This file declares the class EventIDs that contains unique IDs for many events wxMaxima needs.
This file declares the class HelpBrowser.
This file contains the definition of the class History that handles the recently issued commands for ...
This file declares a (hopefully) flicker-free main menu bar.
The definition of the class RecentDocuments that provides a recent files mechanism that is extensible...
This file contains the definition of the class History that handles the recently issued commands for ...
This file contains the definition of the class TableOfContents that handles the table of contents pan...
This file defines the class Worksheet.
This file contains the definition of the class XmlInspector that handles the table of contents pane.
The configuration storage for the current worksheet.
Definition: Configuration.h:98
Definition: FindReplacePane.h:50
Definition: HelpBrowser.h:49
This class generates a pane containing the last commands that were issued.
Definition: History.h:56
void AddToHistory(const wxString &cmd)
Add a file to the recently opened files list.
Definition: History.cpp:263
A menu bar that flickers less on MS windows.
Definition: MainMenuBar.h:37
A class that maintains a list of recent documents.
Definition: RecentDocuments.h:42
The class that draws the status bar.
Definition: StatusBar.h:47
MaximaStatus
Definition: StatusBar.h:84
This class generates a pane containing the table of contents.
Definition: TableOfContents.h:52
A "variables" sidepane.
Definition: VariablesPane.h:44
The canvas that contains the spreadsheet the whole program is about.
Definition: Worksheet.h:116
This class generates a pane displaying the communication between maxima and wxMaxima.
Definition: XmlInspector.h:40
The frame containing the menu and the sidebars.
Definition: wxMaximaFrame.h:66
wxMenu * m_FileMenu
The file menu.
Definition: wxMaximaFrame.h:225
void UpdateRecentDocuments()
Update the recent documents list.
Definition: wxMaximaFrame.cpp:2197
void StatusSaveFailed()
Set the status to "Saving has failed".
Definition: wxMaximaFrame.cpp:627
void RegisterAutoSaveFile()
Remember a temporary autosave file name.
Definition: wxMaximaFrame.cpp:2252
const std::unordered_map< int, wxString > & GetSidebarNames() const
Get the list of human-readable sidebarnames and IDs.
Definition: wxMaximaFrame.h:280
bool m_first
Do we expect the 1st prompt from maxima to appear?
Definition: wxMaximaFrame.h:360
virtual ~wxMaximaFrame()
The destructor.
Definition: wxMaximaFrame.cpp:639
wxMenu * m_EditMenu
The edit menu.
Definition: wxMaximaFrame.h:227
TableOfContents * m_tableOfContents
The table of contents pane.
Definition: wxMaximaFrame.h:196
FindReplacePane::FindReplaceData m_findPaneData
The data backing the dockable find/replace sidebar (GH #2249) – kept separate from wxMaxima::m_findDa...
Definition: wxMaximaFrame.h:342
void StatusSaveFinished()
Set the status to "Maxima has finished saving".
Definition: wxMaximaFrame.cpp:611
int m_commandsLeftInCurrentCell
The number of commands left in the current of the evaluation queue item.
Definition: wxMaximaFrame.h:357
void TogglePaneVisibility(int id)
Hides or unhides the pane with the given ID.
Definition: wxMaximaFrame.cpp:2331
void ReReadConfig()
Re-read the configuration.
Definition: wxMaximaFrame.cpp:2222
wxMenu * m_Simplify_Complex_Sub
The complex submenu.
Definition: wxMaximaFrame.h:249
bool IsXMLInspectorShown()
Is the XML inspector shown?
Definition: wxMaximaFrame.h:113
StatusBar::MaximaStatus StatusMaximaBusy() const
The status Maxima is currently displayed as being in.
Definition: wxMaximaFrame.h:163
void StatusExportStart()
Set the status to "Maxima is exporting".
Definition: wxMaximaFrame.cpp:615
void ClearPendingStatusText()
Mark the pending left-half status text as having been displayed.
Definition: wxMaximaFrame.h:169
virtual wxSize DoGetBestClientSize() const
The default size for the window.
Definition: wxMaximaFrame.cpp:517
wxMenu * m_PlotMenu
The plot menu.
Definition: wxMaximaFrame.h:254
PerformanceSidebar * m_performanceSidebar
The panel showing performance statistics.
Definition: wxMaximaFrame.h:373
wxMenu * m_Maxima_Panes_Sub
The panes submenu.
Definition: wxMaximaFrame.h:233
wxMenu * m_EquationsMenu
The equations menu.
Definition: wxMaximaFrame.h:235
bool m_updateEvaluationQueueLengthDisplay
Do we need to update the display showing the evaluation queue length?
Definition: wxMaximaFrame.h:355
wxMenu * m_gentranMenu
The gentran menu.
Definition: wxMaximaFrame.h:219
void ToggleXMLInspector()
Hide or unhide the XML inspector.
Definition: wxMaximaFrame.h:117
long m_drawDimensions_last
Are we inside a 2d or 3d draw command?
Definition: wxMaximaFrame.h:330
wxString m_tempfileName
The last name GetTempAutosavefileName() has returned.
Definition: wxMaximaFrame.h:205
wxMenu * m_Simplify_Trig_Sub
The trigonometric submenu.
Definition: wxMaximaFrame.h:247
void PopulateRecentPackagesMenu(wxMenu *menu, int firstEntry, const std::list< wxString > &items)
Used by UpdateRecentPackages for populating a menu.
Definition: wxMaximaFrame.cpp:2181
void ShowPane(int id, bool show=true)
Show or hide a sidebar.
Definition: wxMaximaFrame.cpp:2340
StatusBar * m_statusBar
The status bar.
Definition: wxMaximaFrame.h:209
XmlInspector * m_xmlInspector
A XmlInspector-like xml monitor.
Definition: wxMaximaFrame.h:371
void EvaluationQueueLength(int length, int numberOfCommands=-1)
Inform the user about the length of the evaluation queue.
Definition: wxMaximaFrame.cpp:527
wxMenu * m_demo_sub
The "demo" sub-menu.
Definition: wxMaximaFrame.h:213
wxMenu * m_listMenu
The list menu.
Definition: wxMaximaFrame.h:256
wxMenu * m_debugTypeMenu
Contains the menu for the debugger trigger settingxc.
Definition: wxMaximaFrame.h:245
void PopulateRecentDocumentsMenu(wxMenu *menu, int firstEntry, const std::list< wxString > &items)
Used by UpdateRecentDocuments for populating a menu.
Definition: wxMaximaFrame.cpp:2158
MainMenuBar * m_MenuBar
The menu bar.
Definition: wxMaximaFrame.h:211
bool IsPerformanceMonitorShown()
Is the performance monitor shown?
Definition: wxMaximaFrame.h:115
void OnNotificationClose(wxCommandEvent WXUNUSED(&event))
Issued if a notification is closed.
History *const m_history
The history pane.
Definition: wxMaximaFrame.h:369
wxMenu * m_Simplify_Gamma_Sub
The factorials and gamma submenu.
Definition: wxMaximaFrame.h:243
int m_EvaluationQueueLength
The current length of the evaluation queue of commands we still need to send to maxima.
Definition: wxMaximaFrame.h:353
void AuiManagerUpdate()
Updates the AUI manager and re-asserts the menu bar on GTK to prevent it from disappearing.
Definition: wxMaximaFrame.cpp:2310
void RemoveTempAutosavefile()
Remove an eventual temporary autosave file.
Definition: wxMaximaFrame.cpp:2259
wxMenu * m_CalculusMenu
The calculus menu.
Definition: wxMaximaFrame.h:251
void DockAllSidebars(wxCommandEvent &ev)
An instant single-window mode.
Definition: wxMaximaFrame.cpp:2288
void StatusSaveStart()
Set the status to "Maxima is saving".
Definition: wxMaximaFrame.cpp:606
wxMenu * m_viewMenu
The "view" menu.
Definition: wxMaximaFrame.h:217
void ReadConfig()
Read the configuration from the OS's configuration storage.
Definition: wxMaximaFrame.cpp:2217
wxMenu * m_SimplifyMenu
The simplify menu.
Definition: wxMaximaFrame.h:241
void ShowWizardPane(wxString title)
Show the pane the wizards are in.
Definition: wxMaximaFrame.h:130
long m_pid
The process id of maxima. Is determined by ReadFirstPrompt.
Definition: wxMaximaFrame.h:201
void StatusExportFailed()
Set the status to "Exporting has failed".
Definition: wxMaximaFrame.cpp:633
std::size_t m_bytesFromMaxima
How many bytes did maxima send us until now?
Definition: wxMaximaFrame.h:199
wxMenu * m_matrix_menu
The matrix menu.
Definition: wxMaximaFrame.h:239
const wxString & GetLeftStatusText() const
The pending text for the left half of the status bar.
Definition: wxMaximaFrame.h:171
wxMenu * m_MaximaMenu
The maxima menu.
Definition: wxMaximaFrame.h:237
wxMenu * m_subst_Sub
The subst submenu.
Definition: wxMaximaFrame.h:221
void ShowToolBar(bool show)
Shows or hides the toolbar.
Definition: wxMaximaFrame.cpp:2364
void StatusMaximaBusy(StatusBar::MaximaStatus status)
Set the status according to if maxima is calculating.
Definition: wxMaximaFrame.h:161
bool IsPaneDisplayed(int id)
true, if a Pane is currently enabled
Definition: wxMaximaFrame.cpp:2271
wxMenu * m_HelpMenu
The help menu.
Definition: wxMaximaFrame.h:260
void ToggleLogPane()
Toggle the visibility of the log pane.
Definition: wxMaximaFrame.h:123
wxAuiManager m_manager
The manager for dynamic screen layouts.
Definition: wxMaximaFrame.h:365
DrawSidebar * m_drawPane
The sidebar with the draw commands.
Definition: wxMaximaFrame.h:334
void StatusExportFinished()
Set the status to "Maxima has finished exporting".
Definition: wxMaximaFrame.cpp:621
wxMenu * m_Edit_Zoom_Sub
The zoom submenu.
Definition: wxMaximaFrame.h:231
wxMenu * m_NumericMenu
The numeric menu.
Definition: wxMaximaFrame.h:258
wxMenu * m_CellMenu
The cell menu.
Definition: wxMaximaFrame.h:229
Variablespane * m_variablesPane
The panel the user can display variable contents in.
Definition: wxMaximaFrame.h:194
std::vector< wxMenu * > m_demoSubs
The submenus for the various "demo" sub-submenus.
Definition: wxMaximaFrame.h:215
long m_maximaPid
The real process id of maxima (might be a child of m_pid).
Definition: wxMaximaFrame.h:203
Worksheet *const m_worksheet
The worksheet itself.
Definition: wxMaximaFrame.h:367
RecentDocuments m_recentDocuments
The panel the log and debug messages will appear on.
Definition: wxMaximaFrame.h:375
wxMenu * m_logexpand_Sub
The logexpand submenu.
Definition: wxMaximaFrame.h:223
bool HasPendingStatusText() const
True if StatusText() recorded a left-half status text not yet shown.
Definition: wxMaximaFrame.h:167
wxString GetDemoFile(wxWindowID id) const
Looks up which demo file belongs to a wxWindowID.
Definition: wxMaximaFrame.cpp:2094
void AddToHistory(const wxString &cmd)
Adds a command to the list of recently used maxima commands.
Definition: wxMaximaFrame.h:144