summaryrefslogtreecommitdiffstats
path: root/Project/base
diff options
context:
space:
mode:
authorThales Lima Oliveira <thaleslima.ufu@gmail.com>2017-12-31 18:00:25 -0200
committerGitHub <noreply@github.com>2017-12-31 18:00:25 -0200
commit0c0280cfcf540f943fd2dbfdf7ac0304ea96a465 (patch)
tree51c89fc8155dcc447743dc89a1ab5ce36acc72cf /Project/base
parentc8193665975686fb8a344bee3dc94914a3d3558a (diff)
parentdbe0b112622f8e91fa3e44a6b6e1aa7e230d3ded (diff)
downloadPSP.git-0c0280cfcf540f943fd2dbfdf7ac0304ea96a465.tar.gz
PSP.git-0c0280cfcf540f943fd2dbfdf7ac0304ea96a465.tar.xz
PSP.git-0c0280cfcf540f943fd2dbfdf7ac0304ea96a465.zip
Merge pull request #43 from Thales1330/wip/math-expr-control-block
Wip math expr control block
Diffstat (limited to 'Project/base')
-rw-r--r--Project/base/ElementFormBase.cpp157
-rw-r--r--Project/base/ElementFormBase.h37
2 files changed, 194 insertions, 0 deletions
diff --git a/Project/base/ElementFormBase.cpp b/Project/base/ElementFormBase.cpp
index e1e953e..a42c34d 100644
--- a/Project/base/ElementFormBase.cpp
+++ b/Project/base/ElementFormBase.cpp
@@ -3729,3 +3729,160 @@ IOControlFormBase::~IOControlFormBase()
m_ButtonCancel->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(IOControlFormBase::OnCancelButtonClick), NULL, this);
}
+
+MathExpressionFormBase::MathExpressionFormBase(wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style)
+ : wxDialog(parent, id, title, pos, size, style)
+{
+ if ( !bBitmapLoaded ) {
+ // We need to initialise the default bitmap handler
+ wxXmlResource::Get()->AddHandler(new wxBitmapXmlHandler);
+ wxC9EE9InitBitmapResources();
+ bBitmapLoaded = true;
+ }
+
+ wxBoxSizer* boxSizerLvl1_1 = new wxBoxSizer(wxVERTICAL);
+ this->SetSizer(boxSizerLvl1_1);
+
+ m_notebook = new wxNotebook(this, wxID_ANY, wxDefaultPosition, wxDLG_UNIT(this, wxSize(-1,-1)), wxBK_DEFAULT);
+ m_notebook->SetName(wxT("m_notebook"));
+
+ boxSizerLvl1_1->Add(m_notebook, 1, wxEXPAND, WXC_FROM_DIP(5));
+
+ m_panelGeneral = new wxPanel(m_notebook, wxID_ANY, wxDefaultPosition, wxDLG_UNIT(m_notebook, wxSize(-1,-1)), wxTAB_TRAVERSAL);
+ m_notebook->AddPage(m_panelGeneral, _("General"), false);
+
+ wxBoxSizer* boxSizerLvl2_1 = new wxBoxSizer(wxVERTICAL);
+ m_panelGeneral->SetSizer(boxSizerLvl2_1);
+
+ m_staticTextVariables = new wxStaticText(m_panelGeneral, wxID_ANY, _("Input variables (space separated)"), wxDefaultPosition, wxDLG_UNIT(m_panelGeneral, wxSize(-1,-1)), 0);
+
+ boxSizerLvl2_1->Add(m_staticTextVariables, 0, wxLEFT|wxRIGHT|wxTOP|wxALIGN_CENTER_VERTICAL, WXC_FROM_DIP(5));
+
+ m_textCtrlVariables = new wxTextCtrl(m_panelGeneral, wxID_ANY, wxT("x y"), wxDefaultPosition, wxDLG_UNIT(m_panelGeneral, wxSize(-1,-1)), 0);
+ #if wxVERSION_NUMBER >= 3000
+ m_textCtrlVariables->SetHint(wxT(""));
+ #endif
+
+ boxSizerLvl2_1->Add(m_textCtrlVariables, 0, wxLEFT|wxRIGHT|wxBOTTOM|wxEXPAND|wxALIGN_CENTER_VERTICAL, WXC_FROM_DIP(5));
+ m_textCtrlVariables->SetMinSize(wxSize(100,-1));
+
+ m_stcMathExpr = new wxStyledTextCtrl(m_panelGeneral, wxID_ANY, wxDefaultPosition, wxDLG_UNIT(m_panelGeneral, wxSize(-1,-1)), 0);
+ wxFont m_stcMathExprFont(10, wxFONTFAMILY_MODERN, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL, false, wxT("Courier New"));
+ m_stcMathExpr->SetFont(m_stcMathExprFont);
+ // Configure the fold margin
+ m_stcMathExpr->SetMarginType (4, wxSTC_MARGIN_SYMBOL);
+ m_stcMathExpr->SetMarginMask (4, wxSTC_MASK_FOLDERS);
+ m_stcMathExpr->SetMarginSensitive(4, true);
+ m_stcMathExpr->SetMarginWidth (4, 16);
+
+ m_stcMathExpr->SetProperty(wxT("fold"),wxT("1"));
+ m_stcMathExpr->MarkerDefine(wxSTC_MARKNUM_FOLDEROPEN, wxSTC_MARK_ARROWDOWN);
+ m_stcMathExpr->MarkerDefine(wxSTC_MARKNUM_FOLDER, wxSTC_MARK_ARROW);
+ m_stcMathExpr->MarkerDefine(wxSTC_MARKNUM_FOLDERSUB, wxSTC_MARK_BACKGROUND);
+ m_stcMathExpr->MarkerDefine(wxSTC_MARKNUM_FOLDERTAIL, wxSTC_MARK_BACKGROUND);
+ m_stcMathExpr->MarkerDefine(wxSTC_MARKNUM_FOLDEREND, wxSTC_MARK_ARROW);
+ m_stcMathExpr->MarkerDefine(wxSTC_MARKNUM_FOLDEROPENMID, wxSTC_MARK_ARROWDOWN);
+ m_stcMathExpr->MarkerDefine(wxSTC_MARKNUM_FOLDERMIDTAIL, wxSTC_MARK_BACKGROUND);
+ // Configure the tracker margin
+ m_stcMathExpr->SetMarginWidth(1, 0);
+
+ // Configure the symbol margin
+ m_stcMathExpr->SetMarginType (2, wxSTC_MARGIN_SYMBOL);
+ m_stcMathExpr->SetMarginMask (2, ~(wxSTC_MASK_FOLDERS));
+ m_stcMathExpr->SetMarginWidth(2, 0);
+ m_stcMathExpr->SetMarginSensitive(2, true);
+
+ // Configure the line numbers margin
+ m_stcMathExpr->SetMarginType(0, wxSTC_MARGIN_NUMBER);
+ m_stcMathExpr->SetMarginWidth(0,0);
+
+ // Configure the line symbol margin
+ m_stcMathExpr->SetMarginType(3, wxSTC_MARGIN_FORE);
+ m_stcMathExpr->SetMarginMask(3, 0);
+ m_stcMathExpr->SetMarginWidth(3,0);
+ // Select the lexer
+ m_stcMathExpr->SetLexer(wxSTC_LEX_PASCAL);
+ // Set default font / styles
+ m_stcMathExpr->StyleClearAll();
+ for(int i=0; i<wxSTC_STYLE_MAX; ++i) {
+ m_stcMathExpr->StyleSetFont(i, m_stcMathExprFont);
+ }
+ m_stcMathExpr->SetWrapMode(0);
+ m_stcMathExpr->SetIndentationGuides(0);
+ m_stcMathExpr->SetKeyWords(0, wxT(""));
+ m_stcMathExpr->SetKeyWords(1, wxT(""));
+ m_stcMathExpr->SetKeyWords(2, wxT(""));
+ m_stcMathExpr->SetKeyWords(3, wxT(""));
+ m_stcMathExpr->SetKeyWords(4, wxT(""));
+
+ boxSizerLvl2_1->Add(m_stcMathExpr, 0, wxALL, WXC_FROM_DIP(5));
+ m_stcMathExpr->SetMinSize(wxSize(400,200));
+
+ m_staticTextCheckStatus = new wxStaticText(this, wxID_ANY, _("No checks performed"), wxDefaultPosition, wxDLG_UNIT(this, wxSize(-1,-1)), 0);
+
+ boxSizerLvl1_1->Add(m_staticTextCheckStatus, 0, wxLEFT|wxRIGHT|wxTOP|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, WXC_FROM_DIP(5));
+
+ wxBoxSizer* boxSizerBottomButtons = new wxBoxSizer(wxHORIZONTAL);
+
+ boxSizerLvl1_1->Add(boxSizerBottomButtons, 0, wxALL|wxEXPAND, WXC_FROM_DIP(5));
+
+ m_buttonCheck = new wxButton(this, wxID_ANY, _("Check expression"), wxDefaultPosition, wxDLG_UNIT(this, wxSize(-1,-1)), 0);
+
+ boxSizerBottomButtons->Add(m_buttonCheck, 0, wxALL|wxALIGN_LEFT, WXC_FROM_DIP(5));
+
+ boxSizerBottomButtons->Add(0, 0, 1, wxALL, WXC_FROM_DIP(5));
+
+ m_buttonOK = new wxButton(this, wxID_ANY, _("OK"), wxDefaultPosition, wxDLG_UNIT(this, wxSize(-1,-1)), 0);
+
+ boxSizerBottomButtons->Add(m_buttonOK, 0, wxALL|wxALIGN_RIGHT, WXC_FROM_DIP(5));
+
+ m_buttonCancel = new wxButton(this, wxID_ANY, _("Cancel"), wxDefaultPosition, wxDLG_UNIT(this, wxSize(-1,-1)), 0);
+
+ boxSizerBottomButtons->Add(m_buttonCancel, 0, wxALL|wxALIGN_RIGHT, WXC_FROM_DIP(5));
+
+
+ #if wxVERSION_NUMBER >= 2900
+ if(!wxPersistenceManager::Get().Find(m_notebook)){
+ wxPersistenceManager::Get().RegisterAndRestore(m_notebook);
+ } else {
+ wxPersistenceManager::Get().Restore(m_notebook);
+ }
+ #endif
+
+ SetName(wxT("MathExpressionFormBase"));
+ SetSize(-1,-1);
+ if (GetSizer()) {
+ GetSizer()->Fit(this);
+ }
+ if(GetParent()) {
+ CentreOnParent(wxBOTH);
+ } else {
+ CentreOnScreen(wxBOTH);
+ }
+#if wxVERSION_NUMBER >= 2900
+ if(!wxPersistenceManager::Get().Find(this)) {
+ wxPersistenceManager::Get().RegisterAndRestore(this);
+ } else {
+ wxPersistenceManager::Get().Restore(this);
+ }
+#endif
+ // Connect events
+ m_textCtrlVariables->Connect(wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler(MathExpressionFormBase::OnTextUpdate), NULL, this);
+ m_textCtrlVariables->Connect(wxEVT_COMMAND_TEXT_ENTER, wxCommandEventHandler(MathExpressionFormBase::OnTextEnter), NULL, this);
+ m_stcMathExpr->Connect(wxEVT_LEFT_DOWN, wxMouseEventHandler(MathExpressionFormBase::OnLeftClickDown), NULL, this);
+ m_buttonCheck->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(MathExpressionFormBase::OnCheckButtonClick), NULL, this);
+ m_buttonOK->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(MathExpressionFormBase::OnOKButtonClick), NULL, this);
+ m_buttonCancel->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(MathExpressionFormBase::OnCancelButtonClick), NULL, this);
+
+}
+
+MathExpressionFormBase::~MathExpressionFormBase()
+{
+ m_textCtrlVariables->Disconnect(wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler(MathExpressionFormBase::OnTextUpdate), NULL, this);
+ m_textCtrlVariables->Disconnect(wxEVT_COMMAND_TEXT_ENTER, wxCommandEventHandler(MathExpressionFormBase::OnTextEnter), NULL, this);
+ m_stcMathExpr->Disconnect(wxEVT_LEFT_DOWN, wxMouseEventHandler(MathExpressionFormBase::OnLeftClickDown), NULL, this);
+ m_buttonCheck->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(MathExpressionFormBase::OnCheckButtonClick), NULL, this);
+ m_buttonOK->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(MathExpressionFormBase::OnOKButtonClick), NULL, this);
+ m_buttonCancel->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(MathExpressionFormBase::OnCancelButtonClick), NULL, this);
+
+}
diff --git a/Project/base/ElementFormBase.h b/Project/base/ElementFormBase.h
index fc07150..0c1ac13 100644
--- a/Project/base/ElementFormBase.h
+++ b/Project/base/ElementFormBase.h
@@ -29,6 +29,7 @@
#include <wx/propgrid/property.h>
#include <wx/propgrid/advprops.h>
#include <wx/listctrl.h>
+#include <wx/stc/stc.h>
#if wxVERSION_NUMBER >= 2900
#include <wx/persist.h>
#include <wx/persist/toplevel.h>
@@ -1046,4 +1047,40 @@ public:
virtual ~IOControlFormBase();
};
+
+class MathExpressionFormBase : public wxDialog
+{
+protected:
+ wxNotebook* m_notebook;
+ wxPanel* m_panelGeneral;
+ wxStaticText* m_staticTextVariables;
+ wxTextCtrl* m_textCtrlVariables;
+ wxStyledTextCtrl* m_stcMathExpr;
+ wxStaticText* m_staticTextCheckStatus;
+ wxButton* m_buttonCheck;
+ wxButton* m_buttonOK;
+ wxButton* m_buttonCancel;
+
+protected:
+ virtual void OnTextUpdate(wxCommandEvent& event) { event.Skip(); }
+ virtual void OnTextEnter(wxCommandEvent& event) { event.Skip(); }
+ virtual void OnLeftClickDown(wxMouseEvent& event) { event.Skip(); }
+ virtual void OnCheckButtonClick(wxCommandEvent& event) { event.Skip(); }
+ virtual void OnOKButtonClick(wxCommandEvent& event) { event.Skip(); }
+ virtual void OnCancelButtonClick(wxCommandEvent& event) { event.Skip(); }
+
+public:
+ wxStaticText* GetStaticTextVariables() { return m_staticTextVariables; }
+ wxTextCtrl* GetTextCtrlVariables() { return m_textCtrlVariables; }
+ wxStyledTextCtrl* GetStcMathExpr() { return m_stcMathExpr; }
+ wxPanel* GetPanelGeneral() { return m_panelGeneral; }
+ wxNotebook* GetNotebook() { return m_notebook; }
+ wxStaticText* GetStaticTextCheckStatus() { return m_staticTextCheckStatus; }
+ wxButton* GetButtonCheck() { return m_buttonCheck; }
+ wxButton* GetButtonOK() { return m_buttonOK; }
+ wxButton* GetButtonCancel() { return m_buttonCancel; }
+ MathExpressionFormBase(wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("Math expression"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize(-1,-1), long style = wxDEFAULT_DIALOG_STYLE);
+ virtual ~MathExpressionFormBase();
+};
+
#endif