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
|
#include "SvnShowRecentChangesDlg.h"
#include "macros.h"
#include "ColoursAndFontsManager.h"
#include "lexer_configuration.h"
struct SvnShowDiffChunkUI : public wxClientData {
SvnShowDiffChunk m_chunk;
SvnShowDiffChunkUI(const SvnShowDiffChunk& chunk)
: m_chunk(chunk)
{
}
virtual ~SvnShowDiffChunkUI() {}
};
SvnShowRecentChangesDlg::SvnShowRecentChangesDlg(wxWindow* parent, const SvnShowDiffChunk::List_t& changes)
: SvnShowRecentChangesBaseDlg(parent)
, m_changes(changes)
{
std::for_each(changes.begin(), changes.end(), [&](const SvnShowDiffChunk& chunk) {
m_listBoxRevisions->Append(chunk.revision, new SvnShowDiffChunkUI(chunk));
});
m_listBoxRevisions->Select(0);
LexerConf::Ptr_t diffLexer = ColoursAndFontsManager::Get().GetLexer("diff");
if(diffLexer) {
diffLexer->Apply(m_stcDiff);
}
LexerConf::Ptr_t textLexer = ColoursAndFontsManager::Get().GetLexer("text");
if(textLexer) {
textLexer->Apply(m_stcComment);
}
DoSelectRevision(0);
}
SvnShowRecentChangesDlg::~SvnShowRecentChangesDlg() {}
void SvnShowRecentChangesDlg::OnRevisionSelected(wxCommandEvent& event)
{
int where = event.GetSelection();
if(where == wxNOT_FOUND) return;
DoSelectRevision(where);
}
void SvnShowRecentChangesDlg::DoSelectRevision(int index)
{
SvnShowDiffChunkUI* chunk = dynamic_cast<SvnShowDiffChunkUI*>(m_listBoxRevisions->GetClientObject(index));
CHECK_PTR_RET(chunk);
m_stcComment->SetReadOnly(false);
m_stcComment->SetText(chunk->m_chunk.comment);
m_stcComment->SetReadOnly(false);
m_stcDiff->SetReadOnly(false);
m_stcDiff->SetText(chunk->m_chunk.diff);
m_stcDiff->SetReadOnly(true);
m_staticTextDesc->SetLabel(chunk->m_chunk.description);
}
|