File: clDiffFrame.cpp

package info (click to toggle)
codelite 17.0.0%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 136,204 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 (125 lines) | stat: -rw-r--r-- 4,556 bytes parent folder | download | duplicates (2)
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
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
#include "clDiffFrame.h"

#include "DiffSideBySidePanel.h"
#include "globals.h"
#include "imanager.h"
#include "windowattrmanager.h"

#include <wx/icon.h>
#include <wx/xrc/xmlres.h>

clDiffFrame::clDiffFrame(wxWindow* parent, const DiffSideBySidePanel::FileInfo& left,
                         const DiffSideBySidePanel::FileInfo& right, bool originSourceControl)
    : wxFrame(parent, wxID_ANY, _("CodeLite - Diff View"), wxDefaultPosition, wxDefaultSize,
              wxDEFAULT_FRAME_STYLE | wxFRAME_FLOAT_ON_PARENT)
{
    wxBoxSizer* sz = new wxBoxSizer(wxVERTICAL);
    SetSizer(sz);
    m_diffView = new DiffSideBySidePanel(this);
    m_diffView->SetFilesDetails(left, right);
    m_diffView->Diff();
    if(originSourceControl) {
        m_diffView->SetOriginSourceControl();
    }
    sz->Add(m_diffView, 1, wxEXPAND, 0);
    WindowAttrManager::Load(this);

    wxIconBundle b;
    {
        wxIcon icn;
        icn.CopyFromBitmap(clGetManager()->GetStdIcons()->LoadBitmap("diff"));
        b.AddIcon(icn);
    }
    CreateMenuBar();
    SetIcons(b);
    ::clSetTLWindowBestSizeAndPosition(this);
}

clDiffFrame::clDiffFrame(wxWindow* parent)
    : wxFrame(parent, wxID_ANY, _("CodeLite - Diff View"), wxDefaultPosition, wxDefaultSize,
              wxDEFAULT_FRAME_STYLE | wxFRAME_FLOAT_ON_PARENT)
{
    wxBoxSizer* sz = new wxBoxSizer(wxVERTICAL);
    SetSizer(sz);
    m_diffView = new DiffSideBySidePanel(this);
    sz->Add(m_diffView, 1, wxEXPAND, 0);
    m_diffView->DiffNew();
    WindowAttrManager::Load(this);
    wxIconBundle b;
    {
        wxIcon icn;
        icn.CopyFromBitmap(clGetManager()->GetStdIcons()->LoadBitmap("diff"));
        b.AddIcon(icn);
    }
    CreateMenuBar();
    SetIcons(b);
    CallAfter(&clDiffFrame::Maximize, true);
}

clDiffFrame::clDiffFrame(wxWindow* parent, const wxFileName& left, const wxFileName& right, bool isTempFile)
    : wxFrame(parent, wxID_ANY, _("CodeLite - Diff View"), wxDefaultPosition, wxDefaultSize,
              wxDEFAULT_FRAME_STYLE | wxFRAME_FLOAT_ON_PARENT)
{
    wxBoxSizer* sz = new wxBoxSizer(wxVERTICAL);
    SetSizer(sz);
    m_diffView = new DiffSideBySidePanel(this);
    sz->Add(m_diffView, 1, wxEXPAND, 0);
    if(isTempFile) {
        m_diffView->SetSaveFilepaths(false);
    }

    m_diffView->DiffNew(left, right);
    WindowAttrManager::Load(this);
    wxIconBundle b;
    {
        wxIcon icn;
        icn.CopyFromBitmap(clGetManager()->GetStdIcons()->LoadBitmap("diff"));
        b.AddIcon(icn);
    }
    CreateMenuBar();
    SetIcons(b);
    CallAfter(&clDiffFrame::Maximize, true);
}

clDiffFrame::~clDiffFrame() {}

void clDiffFrame::CreateMenuBar()
{
    SetMenuBar(wxXmlResource::Get()->LoadMenuBar("diff_menu_bar"));
    Bind(wxEVT_MENU, &DiffSideBySidePanel::OnSaveChanges, m_diffView, wxID_SAVE);
    Bind(wxEVT_UPDATE_UI, &DiffSideBySidePanel::OnSaveChangesUI, m_diffView, wxID_SAVE);
    Bind(wxEVT_MENU, &DiffSideBySidePanel::OnFind, m_diffView, wxID_FIND);
    Bind(wxEVT_MENU, &DiffSideBySidePanel::OnNextDiffSequence, m_diffView, XRCID("ID_DIFF_TOOL_NEXT"));
    Bind(wxEVT_UPDATE_UI, &DiffSideBySidePanel::OnNextDiffUI, m_diffView, XRCID("ID_DIFF_TOOL_NEXT"));
    Bind(wxEVT_MENU, &DiffSideBySidePanel::OnPrevDiffSequence, m_diffView, XRCID("ID_DIFF_TOOL_PREV"));
    Bind(wxEVT_UPDATE_UI, &DiffSideBySidePanel::OnPrevDiffUI, m_diffView, XRCID("ID_DIFF_TOOL_PREV"));

    Bind(wxEVT_MENU, &DiffSideBySidePanel::OnCopyLeftToRight, m_diffView, XRCID("ID_DIFF_TOOL_COPY_RIGHT"));
    Bind(wxEVT_UPDATE_UI, &DiffSideBySidePanel::OnCopyLeftToRightUI, m_diffView, XRCID("ID_DIFF_TOOL_COPY_RIGHT"));
    Bind(wxEVT_MENU, &DiffSideBySidePanel::OnCopyRightToLeft, m_diffView, XRCID("ID_DIFF_TOOL_COPY_LEFT"));
    Bind(wxEVT_UPDATE_UI, &DiffSideBySidePanel::OnCopyRightToLeftUI, m_diffView, XRCID("ID_DIFF_TOOL_COPY_LEFT"));

    Bind(wxEVT_MENU, &DiffSideBySidePanel::OnCopyFileLeftToRight, m_diffView,
         XRCID("ID_DIFF_TOOL_COPY_ALL_LEFT_TO_RIGHT"));
    Bind(wxEVT_MENU, &DiffSideBySidePanel::OnCopyFileFromRight, m_diffView,
         XRCID("ID_DIFF_TOOL_COPY_ALL_RIGHT_TO_LEFT"));

    Bind(wxEVT_MENU, &clDiffFrame::OnClose, this, wxID_CLOSE);

    // Not a menu item, but this is a convenient place to bind ESC to Close()
    Bind(wxEVT_CHAR_HOOK, &clDiffFrame::OnCharHook, this);
}

void clDiffFrame::OnClose(wxCommandEvent& event)
{
    wxUnusedVar(event);
    Close();
}

void clDiffFrame::OnCharHook(wxKeyEvent& event)
{
    event.Skip();
    if(event.GetKeyCode() == WXK_ESCAPE && !m_diffView->HasFindBarFocus()) {
        Close();
    }
}