wxMaxima
LogPane.h
1 // -*- mode: c++; c-file-style: "linux"; c-basic-offset: 2; indent-tabs-mode: nil -*-
2 //
3 // Copyright (C) 2004-2015 Andrej Vodopivec <andrej.vodopivec@gmail.com>
4 //
5 // This program is free software; you can redistribute it and/or modify
6 // it under the terms of the GNU General Public License as published by
7 // the Free Software Foundation; either version 2 of the License, or
8 // (at your option) any later version.
9 //
10 // This program is distributed in the hope that it will be useful,
11 // but WITHOUT ANY WARRANTY; without even the implied warranty of
12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 // GNU General Public License for more details.
14 //
15 //
16 // You should have received a copy of the GNU General Public License
17 // along with this program; if not, write to the Free Software
18 // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
19 //
20 // SPDX-License-Identifier: GPL-2.0+
21 
22 #ifndef LOGPANE_H
23 #define LOGPANE_H
24 
25 #include "precomp.h"
26 #include <wx/wx.h>
27 #include <wx/panel.h>
28 #include <wx/textctrl.h>
29 #include "ErrorRedirector.h"
30 #include "stx/optional.hpp"
31 
35 class LogPane : public wxPanel
36 {
37 public:
38  explicit LogPane(wxWindow *parent, wxWindowID id = wxID_ANY, bool becomeLogTarget = true);
39  void BecomeLogTarget();
40  void SetBatchMode() {
41  if (m_errorRedirector)
42  m_errorRedirector->SetBatchMode();
43  }
44  void DropLogTarget();
45  bool IsLogTarget() {return m_logPanelTarget.has_value();}
46  ~LogPane();
47 
48 private:
50  wxTextCtrl *m_textCtrl;
52  stx::optional<wxLogTextCtrl> m_logPanelTarget;
54  stx::optional<ErrorRedirector> m_errorRedirector;
55  #ifdef wxUSE_STD_IOSTREAM
56  stx::optional<wxStreamToTextRedirector> m_textRedirector;
57  #endif
58 };
59 
60 #endif // LOGPANE_H
ErrorRedirector.h
LogPane
Definition: LogPane.h:35