logic: extended CodeView to show locations of edges to the active Token and merge overlapping snippets

This commit is contained in:
Eberhard Graether
2014-07-26 23:07:47 +02:00
parent eeacb92b55
commit 16d49e58cc
18 changed files with 173 additions and 42 deletions
+5 -2
View File
@@ -36,10 +36,13 @@ const std::string& QtCodeFile::getFileName() const
}
void QtCodeFile::addCodeSnippet(
const std::string& str, const TokenLocationFile& locationFile, int startLineNumber, Id activeTokenId
int startLineNumber,
const std::string& code,
const TokenLocationFile& locationFile,
const std::vector<Id>& activeTokenIds
){
std::shared_ptr<QtCodeSnippet> snippet(
new QtCodeSnippet(m_parentView, str, locationFile, startLineNumber, activeTokenId, this)
new QtCodeSnippet(m_parentView, startLineNumber, code, locationFile, activeTokenIds, this)
);
layout()->addWidget(snippet.get());
m_snippets.push_back(snippet);
+4 -1
View File
@@ -22,7 +22,10 @@ public:
const std::string& getFileName() const;
void addCodeSnippet(
const std::string& str, const TokenLocationFile& locationFile, int startLineNumber, Id activeTokenId
int startLineNumber,
const std::string& code,
const TokenLocationFile& locationFile,
const std::vector<Id>& activeTokenIds
);
private:
+6 -4
View File
@@ -34,16 +34,16 @@ void QtCodeSnippet::LineNumberArea::paintEvent(QPaintEvent *event)
QtCodeSnippet::QtCodeSnippet(
QtCodeView* parentView,
int startLineNumber,
const std::string& code,
const TokenLocationFile& locationFile,
int startLineNumber,
Id activeTokenId,
const std::vector<Id>& activeTokenIds,
QWidget *parent
)
: QPlainTextEdit(parent)
, m_parentView(parentView)
, m_startLineNumber(startLineNumber)
, m_activeTokenId(activeTokenId)
, m_activeTokenIds(activeTokenIds)
, m_digits(0)
{
setObjectName("code_snippet");
@@ -171,7 +171,9 @@ void QtCodeSnippet::annotateText(const TokenLocationFile& locationFile)
m_annotations.push_back(annotation);
Colori color;
if (location->getTokenId() == m_activeTokenId)
const std::vector<Id>& ids = m_activeTokenIds;
bool isActive = std::find(ids.begin(), ids.end(), location->getTokenId()) != ids.end();
if (isActive)
{
color = ApplicationSettings::getInstance()->getCodeActiveLinkColor();
}
+3 -3
View File
@@ -37,10 +37,10 @@ public:
QtCodeSnippet(
QtCodeView* parentView,
int startLineNumber,
const std::string& code,
const TokenLocationFile& locationFile,
int startLineNumber,
Id activeTokenId,
const std::vector<Id>& activeTokenIds,
QWidget *parent = 0
);
virtual ~QtCodeSnippet();
@@ -81,7 +81,7 @@ private:
QWidget *m_lineNumberArea;
const int m_startLineNumber;
const Id m_activeTokenId;
const std::vector<Id> m_activeTokenIds;
int m_digits;
std::vector<Annotation> m_annotations;
+1 -1
View File
@@ -99,7 +99,7 @@ void QtCodeView::doAddCodeSnippet(const CodeSnippetParams params)
m_frame->layout()->addWidget(file);
}
file->addCodeSnippet(params.code, params.locationFile, params.startLineNumber, params.activeTokenId);
file->addCodeSnippet(params.startLineNumber, params.code, params.locationFile, params.activeTokenIds);
}
void QtCodeView::doClearCodeSnippets()