File: MainFrame.cpp

package info (click to toggle)
codelite 14.0+dfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: bullseye, sid
  • size: 112,816 kB
  • sloc: cpp: 483,662; ansic: 150,144; php: 9,569; lex: 4,186; python: 3,417; yacc: 2,820; sh: 1,147; makefile: 52; xml: 13
file content (79 lines) | stat: -rw-r--r-- 2,307 bytes parent folder | download
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
#include "MainFrame.h"
#include <wx/aboutdlg.h>
#include "wxTerminalCtrl.h"
#include "SettingsDlg.h"
#include "wxTerminalOptions.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();
}

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(); }