File: MainFrame.cpp

package info (click to toggle)
codelite 17.0.0%2Bdfsg-4
  • links: PTS, VCS
  • area: main
  • in suites: trixie
  • size: 136,244 kB
  • sloc: cpp: 491,547; ansic: 280,393; php: 10,259; sh: 8,930; lisp: 7,664; vhdl: 6,518; python: 6,020; lex: 4,920; yacc: 3,123; perl: 2,385; javascript: 1,715; cs: 1,193; xml: 1,110; makefile: 804; cobol: 741; sql: 709; ruby: 620; f90: 566; ada: 534; asm: 464; fortran: 350; objc: 289; tcl: 258; java: 157; erlang: 61; pascal: 51; ml: 49; awk: 44; haskell: 36
file content (86 lines) | stat: -rw-r--r-- 2,483 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
#include "MainFrame.h"

#include "SettingsDlg.h"
#include "wxTerminalCtrl.h"
#include "wxTerminalOptions.h"

#include <wx/aboutdlg.h>
#include <wx/msgdlg.h>

MainFrame::MainFrame(wxWindow* parent)
    : MainFrameBaseClass(parent)
{
    wxTerminalOptions& options = wxTerminalOptions::Get();
    options.Load();

    m_terminal = new wxTerminalCtrl(GetMainPanel());
    m_terminal->SetWorkingDirectory(options.GetWorkingDirectory());
    m_terminal->SetPauseOnExit(options.IsWaitOnExit());
    m_terminal->SetPrintTTY(options.IsPrintTTY(), options.GetTtyfile());
    m_terminal->SetLogfile(options.GetLogfile());
    m_terminal->Start(options.GetCommand());
    GetMainPanel()->GetSizer()->Add(m_terminal, 1, wxEXPAND);

    GetSizer()->Fit(this);
    SetLabel(options.GetTitle().IsEmpty() ? "codelite-terminal" : options.GetTitle());
    m_terminal->Bind(wxEVT_TERMINAL_CTRL_DONE, &MainFrame::OnTerminalExit, this);
    m_terminal->Bind(wxEVT_TERMINAL_CTRL_SET_TITLE, &MainFrame::OnSetTitle, this);
    m_terminal->CallAfter(&wxTerminalCtrl::Focus);
    PostSizeEvent();

    // ensure that this window is raised on startup
    CallAfter(&wxFrame::Raise);
}

MainFrame::~MainFrame() {}

void MainFrame::OnExit(wxCommandEvent& event)
{
    Hide();
    CallAfter(&MainFrame::DoClose);
}

void MainFrame::OnAbout(wxCommandEvent& event)
{
    wxUnusedVar(event);
    wxAboutDialogInfo info;
    info.SetName("codelite-terminal");
    info.AddDeveloper("Eran Ifrah");
    info.SetLicence(_("GPL v2 or later"));
    info.SetDescription(_("CodeLite built-in terminal emulator"));
    ::wxAboutBox(info);
}

void MainFrame::OnTerminalExit(clCommandEvent& event)
{
    Hide();
    CallAfter(&MainFrame::DoClose);
}

void MainFrame::DoClose()
{
    const wxTerminalHistory& history = m_terminal->GetHistory();
    wxTerminalOptions::Get().SetHistory(history.GetCommands());
    wxTerminalOptions::Get().Save();
    wxTheApp->ExitMainLoop();
}

void MainFrame::OnSettings(wxCommandEvent& event)
{
    SettingsDlg dlg(this);
    if(dlg.ShowModal() == wxID_OK) {
        dlg.Save();
        m_terminal->ReloadSettings();
        m_terminal->ClearScreen();
    }
}

void MainFrame::OnClose(wxCloseEvent& event)
{
    Hide();
    CallAfter(&MainFrame::DoClose);
}

void MainFrame::OnSetTitle(clCommandEvent& event) { SetLabel(event.GetString()); }
void MainFrame::OnClearScreen(wxCommandEvent& event) { m_terminal->ClearScreen(); }
void MainFrame::OnButton93ButtonClicked(wxCommandEvent& event) {}