logic: Return to last scroll position in code view on undo
* fixed scrolling on undo * refactored autoscrolling in code view * save scroll position of user with MessageScrollCode
This commit is contained in:
@@ -238,6 +238,7 @@ add_files(
|
|||||||
utility/messaging/type/MessageRefresh.h
|
utility/messaging/type/MessageRefresh.h
|
||||||
utility/messaging/type/MessageResetZoom.h
|
utility/messaging/type/MessageResetZoom.h
|
||||||
utility/messaging/type/MessageSaveProject.h
|
utility/messaging/type/MessageSaveProject.h
|
||||||
|
utility/messaging/type/MessageScrollCode.h
|
||||||
utility/messaging/type/MessageSearch.h
|
utility/messaging/type/MessageSearch.h
|
||||||
utility/messaging/type/MessageSearchAutocomplete.h
|
utility/messaging/type/MessageSearchAutocomplete.h
|
||||||
utility/messaging/type/MessageShowErrors.h
|
utility/messaging/type/MessageShowErrors.h
|
||||||
|
|||||||
@@ -100,7 +100,7 @@ void CodeController::handleMessage(MessageActivateTokens* message)
|
|||||||
|
|
||||||
if (message->isEdge)
|
if (message->isEdge)
|
||||||
{
|
{
|
||||||
view->showFirstActiveSnippet(activeTokenIds);
|
view->showFirstActiveSnippet(activeTokenIds, message->isLast());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (message->keepContent())
|
if (message->keepContent())
|
||||||
@@ -202,6 +202,14 @@ void CodeController::handleMessage(MessageFocusOut* message)
|
|||||||
getView()->defocusTokenIds();
|
getView()->defocusTokenIds();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CodeController::handleMessage(MessageScrollCode* message)
|
||||||
|
{
|
||||||
|
if (!message->isFresh())
|
||||||
|
{
|
||||||
|
getView()->scrollToValue(message->value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void CodeController::handleMessage(MessageShowErrors* message)
|
void CodeController::handleMessage(MessageShowErrors* message)
|
||||||
{
|
{
|
||||||
std::vector<std::string> errorMessages;
|
std::vector<std::string> errorMessages;
|
||||||
|
|||||||
@@ -11,6 +11,7 @@
|
|||||||
#include "utility/messaging/type/MessageFlushUpdates.h"
|
#include "utility/messaging/type/MessageFlushUpdates.h"
|
||||||
#include "utility/messaging/type/MessageFocusIn.h"
|
#include "utility/messaging/type/MessageFocusIn.h"
|
||||||
#include "utility/messaging/type/MessageFocusOut.h"
|
#include "utility/messaging/type/MessageFocusOut.h"
|
||||||
|
#include "utility/messaging/type/MessageScrollCode.h"
|
||||||
#include "utility/messaging/type/MessageShowErrors.h"
|
#include "utility/messaging/type/MessageShowErrors.h"
|
||||||
#include "utility/messaging/type/MessageShowScope.h"
|
#include "utility/messaging/type/MessageShowScope.h"
|
||||||
#include "utility/types.h"
|
#include "utility/types.h"
|
||||||
@@ -31,6 +32,7 @@ class CodeController
|
|||||||
, public MessageListener<MessageFlushUpdates>
|
, public MessageListener<MessageFlushUpdates>
|
||||||
, public MessageListener<MessageFocusIn>
|
, public MessageListener<MessageFocusIn>
|
||||||
, public MessageListener<MessageFocusOut>
|
, public MessageListener<MessageFocusOut>
|
||||||
|
, public MessageListener<MessageScrollCode>
|
||||||
, public MessageListener<MessageShowErrors>
|
, public MessageListener<MessageShowErrors>
|
||||||
, public MessageListener<MessageShowScope>
|
, public MessageListener<MessageShowScope>
|
||||||
{
|
{
|
||||||
@@ -47,6 +49,7 @@ private:
|
|||||||
virtual void handleMessage(MessageFlushUpdates* message);
|
virtual void handleMessage(MessageFlushUpdates* message);
|
||||||
virtual void handleMessage(MessageFocusIn* message);
|
virtual void handleMessage(MessageFocusIn* message);
|
||||||
virtual void handleMessage(MessageFocusOut* message);
|
virtual void handleMessage(MessageFocusOut* message);
|
||||||
|
virtual void handleMessage(MessageScrollCode* message);
|
||||||
virtual void handleMessage(MessageShowErrors* message);
|
virtual void handleMessage(MessageShowErrors* message);
|
||||||
virtual void handleMessage(MessageShowScope* message);
|
virtual void handleMessage(MessageShowScope* message);
|
||||||
|
|
||||||
|
|||||||
@@ -188,6 +188,22 @@ void UndoRedoController::handleMessage(MessageRefresh* message)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void UndoRedoController::handleMessage(MessageScrollCode* message)
|
||||||
|
{
|
||||||
|
if (!m_lastCommand.message)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (m_lastCommand.subMessage && m_lastCommand.subMessage->getType() == message->getType())
|
||||||
|
{
|
||||||
|
static_cast<MessageScrollCode*>(m_lastCommand.subMessage.get())->value = message->value;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
m_lastCommand.subMessage = std::make_shared<MessageScrollCode>(*message);
|
||||||
|
}
|
||||||
|
|
||||||
void UndoRedoController::handleMessage(MessageSearch* message)
|
void UndoRedoController::handleMessage(MessageSearch* message)
|
||||||
{
|
{
|
||||||
if (m_lastCommand.message && m_lastCommand.message->getType() == message->getType() &&
|
if (m_lastCommand.message && m_lastCommand.message->getType() == message->getType() &&
|
||||||
@@ -228,12 +244,19 @@ void UndoRedoController::replayCommands(bool removeLast)
|
|||||||
{
|
{
|
||||||
m = m_undo[i].message;
|
m = m_undo[i].message;
|
||||||
m->undoRedoType = MessageBase::UNDOTYPE_IGNORE;
|
m->undoRedoType = MessageBase::UNDOTYPE_IGNORE;
|
||||||
|
m->setIsLast(false);
|
||||||
m->dispatch();
|
m->dispatch();
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
|
|
||||||
m = m_undo.back().message;
|
m = m_undo.back().message;
|
||||||
|
|
||||||
|
std::shared_ptr<MessageBase> sm;
|
||||||
|
if (m_lastCommand.order == 0)
|
||||||
|
{
|
||||||
|
sm = m_undo.back().subMessage;
|
||||||
|
}
|
||||||
|
|
||||||
if (removeLast)
|
if (removeLast)
|
||||||
{
|
{
|
||||||
m_undo.pop_back();
|
m_undo.pop_back();
|
||||||
@@ -244,12 +267,25 @@ void UndoRedoController::replayCommands(bool removeLast)
|
|||||||
m->undoRedoType = MessageBase::UNDOTYPE_IGNORE;
|
m->undoRedoType = MessageBase::UNDOTYPE_IGNORE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
m->setIsLast(!sm);
|
||||||
m->dispatch();
|
m->dispatch();
|
||||||
|
|
||||||
|
if (sm)
|
||||||
|
{
|
||||||
|
sm->undoRedoType = MessageBase::UNDOTYPE_IGNORE;
|
||||||
|
sm->setIsLast(true);
|
||||||
|
sm->dispatch();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void UndoRedoController::processCommand(const Command& command)
|
void UndoRedoController::processCommand(Command command)
|
||||||
{
|
{
|
||||||
|
if (command.order == 0 && command.message->keepContent())
|
||||||
|
{
|
||||||
|
command.order = 1;
|
||||||
|
}
|
||||||
|
|
||||||
switch (command.message->undoRedoType)
|
switch (command.message->undoRedoType)
|
||||||
{
|
{
|
||||||
case MessageBase::UNDOTYPE_NORMAL:
|
case MessageBase::UNDOTYPE_NORMAL:
|
||||||
|
|||||||
@@ -17,6 +17,7 @@
|
|||||||
#include "utility/messaging/type/MessageLoadProject.h"
|
#include "utility/messaging/type/MessageLoadProject.h"
|
||||||
#include "utility/messaging/type/MessageRedo.h"
|
#include "utility/messaging/type/MessageRedo.h"
|
||||||
#include "utility/messaging/type/MessageRefresh.h"
|
#include "utility/messaging/type/MessageRefresh.h"
|
||||||
|
#include "utility/messaging/type/MessageScrollCode.h"
|
||||||
#include "utility/messaging/type/MessageSearch.h"
|
#include "utility/messaging/type/MessageSearch.h"
|
||||||
#include "utility/messaging/type/MessageShowScope.h"
|
#include "utility/messaging/type/MessageShowScope.h"
|
||||||
#include "utility/messaging/type/MessageUndo.h"
|
#include "utility/messaging/type/MessageUndo.h"
|
||||||
@@ -41,6 +42,7 @@ class UndoRedoController
|
|||||||
, public MessageListener<MessageLoadProject>
|
, public MessageListener<MessageLoadProject>
|
||||||
, public MessageListener<MessageRedo>
|
, public MessageListener<MessageRedo>
|
||||||
, public MessageListener<MessageRefresh>
|
, public MessageListener<MessageRefresh>
|
||||||
|
, public MessageListener<MessageScrollCode>
|
||||||
, public MessageListener<MessageSearch>
|
, public MessageListener<MessageSearch>
|
||||||
, public MessageListener<MessageShowScope>
|
, public MessageListener<MessageShowScope>
|
||||||
, public MessageListener<MessageUndo>
|
, public MessageListener<MessageUndo>
|
||||||
@@ -57,6 +59,7 @@ private:
|
|||||||
Command(std::shared_ptr<MessageBase> message, size_t order);
|
Command(std::shared_ptr<MessageBase> message, size_t order);
|
||||||
|
|
||||||
std::shared_ptr<MessageBase> message;
|
std::shared_ptr<MessageBase> message;
|
||||||
|
std::shared_ptr<MessageBase> subMessage;
|
||||||
size_t order;
|
size_t order;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -72,13 +75,14 @@ private:
|
|||||||
virtual void handleMessage(MessageLoadProject* message);
|
virtual void handleMessage(MessageLoadProject* message);
|
||||||
virtual void handleMessage(MessageRedo* message);
|
virtual void handleMessage(MessageRedo* message);
|
||||||
virtual void handleMessage(MessageRefresh* message);
|
virtual void handleMessage(MessageRefresh* message);
|
||||||
|
virtual void handleMessage(MessageScrollCode* message);
|
||||||
virtual void handleMessage(MessageSearch* message);
|
virtual void handleMessage(MessageSearch* message);
|
||||||
virtual void handleMessage(MessageShowScope* message);
|
virtual void handleMessage(MessageShowScope* message);
|
||||||
virtual void handleMessage(MessageUndo* message);
|
virtual void handleMessage(MessageUndo* message);
|
||||||
|
|
||||||
void replayCommands(bool removeLast);
|
void replayCommands(bool removeLast);
|
||||||
|
|
||||||
void processCommand(const Command& command);
|
void processCommand(Command command);
|
||||||
void processNormalCommand(const Command& command);
|
void processNormalCommand(const Command& command);
|
||||||
void processRedoCommand(const Command& command);
|
void processRedoCommand(const Command& command);
|
||||||
void processUndoCommand(const Command& command);
|
void processUndoCommand(const Command& command);
|
||||||
|
|||||||
@@ -28,9 +28,8 @@ std::shared_ptr<MessageActivateTokens> ActivationTranslator::translateMessage(co
|
|||||||
const Id sourceId = m_storageAccess->getIdForNodeWithNameHierarchy(message->fromNameHierarchy);
|
const Id sourceId = m_storageAccess->getIdForNodeWithNameHierarchy(message->fromNameHierarchy);
|
||||||
const Id targetId = m_storageAccess->getIdForNodeWithNameHierarchy(message->toNameHierarchy);
|
const Id targetId = m_storageAccess->getIdForNodeWithNameHierarchy(message->toNameHierarchy);
|
||||||
|
|
||||||
m = std::make_shared<MessageActivateTokens>(m_storageAccess->getTokenIdsForAggregationEdge(sourceId, targetId));
|
m = std::make_shared<MessageActivateTokens>(message, m_storageAccess->getTokenIdsForAggregationEdge(sourceId, targetId));
|
||||||
m->isAggregation = true;
|
m->isAggregation = true;
|
||||||
m->undoRedoType = message->undoRedoType;
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -43,10 +42,8 @@ std::shared_ptr<MessageActivateTokens> ActivationTranslator::translateMessage(co
|
|||||||
|
|
||||||
if (edgeId)
|
if (edgeId)
|
||||||
{
|
{
|
||||||
m = std::make_shared<MessageActivateTokens>(std::vector<Id>(1, edgeId));
|
m = std::make_shared<MessageActivateTokens>(message, std::vector<Id>(1, edgeId));
|
||||||
m->isEdge = true;
|
m->isEdge = true;
|
||||||
m->undoRedoType = message->undoRedoType;
|
|
||||||
m->setKeepContent(message->keepContent());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return m;
|
return m;
|
||||||
@@ -71,11 +68,7 @@ std::shared_ptr<MessageActivateTokens> ActivationTranslator::translateMessage(co
|
|||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::shared_ptr<MessageActivateTokens> m;
|
return std::make_shared<MessageActivateTokens>(message, std::vector<Id>(1, fileId));
|
||||||
m = std::make_shared<MessageActivateTokens>(std::vector<Id>(1, fileId));
|
|
||||||
m->undoRedoType = message->undoRedoType;
|
|
||||||
m->setKeepContent(message->keepContent());
|
|
||||||
return m;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
std::shared_ptr<MessageActivateTokens> ActivationTranslator::translateMessage(const MessageActivateNodes* message) const
|
std::shared_ptr<MessageActivateTokens> ActivationTranslator::translateMessage(const MessageActivateNodes* message) const
|
||||||
@@ -101,20 +94,14 @@ std::shared_ptr<MessageActivateTokens> ActivationTranslator::translateMessage(co
|
|||||||
}
|
}
|
||||||
|
|
||||||
std::shared_ptr<MessageActivateTokens> m;
|
std::shared_ptr<MessageActivateTokens> m;
|
||||||
m = std::make_shared<MessageActivateTokens>(nodeIds);
|
m = std::make_shared<MessageActivateTokens>(message, nodeIds);
|
||||||
m->isFromSystem = message->isFromSystem;
|
m->isFromSystem = message->isFromSystem;
|
||||||
m->undoRedoType = message->undoRedoType;
|
|
||||||
m->setKeepContent(message->keepContent());
|
|
||||||
return m;
|
return m;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::shared_ptr<MessageActivateTokens> ActivationTranslator::translateMessage(const MessageActivateTokenIds* message) const
|
std::shared_ptr<MessageActivateTokens> ActivationTranslator::translateMessage(const MessageActivateTokenIds* message) const
|
||||||
{
|
{
|
||||||
std::shared_ptr<MessageActivateTokens> m;
|
return std::make_shared<MessageActivateTokens>(message, message->tokenIds);
|
||||||
m = std::make_shared<MessageActivateTokens>(message->tokenIds);
|
|
||||||
m->undoRedoType = message->undoRedoType;
|
|
||||||
m->setKeepContent(message->keepContent());
|
|
||||||
return m;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
std::shared_ptr<MessageActivateTokens> ActivationTranslator::translateMessage(const MessageSearch* message) const
|
std::shared_ptr<MessageActivateTokens> ActivationTranslator::translateMessage(const MessageSearch* message) const
|
||||||
@@ -144,13 +131,11 @@ std::shared_ptr<MessageActivateTokens> ActivationTranslator::translateMessage(co
|
|||||||
std::vector<Id> tokenIds = m_storageAccess->getTokenIdsForMatches(matches);
|
std::vector<Id> tokenIds = m_storageAccess->getTokenIdsForMatches(matches);
|
||||||
tokenIds = m_storageAccess->getActiveTokenIdsForTokenIds(tokenIds);
|
tokenIds = m_storageAccess->getActiveTokenIdsForTokenIds(tokenIds);
|
||||||
|
|
||||||
std::shared_ptr<MessageActivateTokens> m;
|
std::shared_ptr<MessageActivateTokens> m = std::make_shared<MessageActivateTokens>(message, tokenIds);
|
||||||
m = std::make_shared<MessageActivateTokens>(tokenIds);
|
|
||||||
m->undoRedoType = message->undoRedoType;
|
|
||||||
m->setKeepContent(message->keepContent());
|
|
||||||
if (message->isFresh())
|
if (message->isFresh())
|
||||||
{
|
{
|
||||||
m->isFromSearch = true;
|
m->isFromSearch = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
return m;
|
return m;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -59,7 +59,7 @@ public:
|
|||||||
|
|
||||||
virtual void setFileState(const FilePath filePath, FileState state) = 0;
|
virtual void setFileState(const FilePath filePath, FileState state) = 0;
|
||||||
|
|
||||||
virtual void showFirstActiveSnippet(const std::vector<Id>& activeTokenIds) = 0;
|
virtual void showFirstActiveSnippet(const std::vector<Id>& activeTokenIds, bool scrollTo) = 0;
|
||||||
virtual void showActiveTokenIds(const std::vector<Id>& activeTokenIds) = 0;
|
virtual void showActiveTokenIds(const std::vector<Id>& activeTokenIds) = 0;
|
||||||
|
|
||||||
virtual void focusTokenIds(const std::vector<Id>& focusedTokenIds) = 0;
|
virtual void focusTokenIds(const std::vector<Id>& focusedTokenIds) = 0;
|
||||||
@@ -67,6 +67,8 @@ public:
|
|||||||
|
|
||||||
virtual void showContents() = 0;
|
virtual void showContents() = 0;
|
||||||
|
|
||||||
|
virtual void scrollToValue(int value) = 0;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
CodeController* getController();
|
CodeController* getController();
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -20,6 +20,7 @@ public:
|
|||||||
, m_sendAsTask(true)
|
, m_sendAsTask(true)
|
||||||
, m_keepContent(false)
|
, m_keepContent(false)
|
||||||
, m_cancelled(false)
|
, m_cancelled(false)
|
||||||
|
, m_isLast(true)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -45,9 +46,14 @@ public:
|
|||||||
return (undoRedoType == UNDOTYPE_NORMAL);
|
return (undoRedoType == UNDOTYPE_NORMAL);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool isIgnorable() const
|
bool isLast() const
|
||||||
{
|
{
|
||||||
return (undoRedoType == UNDOTYPE_IGNORE);
|
return m_isLast;
|
||||||
|
}
|
||||||
|
|
||||||
|
void setIsLast(bool isLast)
|
||||||
|
{
|
||||||
|
m_isLast = isLast;
|
||||||
}
|
}
|
||||||
|
|
||||||
void setKeepContent(bool keepContent)
|
void setKeepContent(bool keepContent)
|
||||||
@@ -86,6 +92,7 @@ private:
|
|||||||
bool m_sendAsTask;
|
bool m_sendAsTask;
|
||||||
bool m_keepContent;
|
bool m_keepContent;
|
||||||
bool m_cancelled;
|
bool m_cancelled;
|
||||||
|
bool m_isLast;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // MESSAGE_BASE_H
|
#endif // MESSAGE_BASE_H
|
||||||
|
|||||||
@@ -8,13 +8,16 @@ class MessageActivateTokens
|
|||||||
: public Message<MessageActivateTokens>
|
: public Message<MessageActivateTokens>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
MessageActivateTokens(const std::vector<Id>& tokenIds)
|
MessageActivateTokens(const MessageBase* other, const std::vector<Id>& tokenIds)
|
||||||
: tokenIds(tokenIds)
|
: tokenIds(tokenIds)
|
||||||
, isEdge(false)
|
, isEdge(false)
|
||||||
, isAggregation(false)
|
, isAggregation(false)
|
||||||
, isFromSystem(false)
|
, isFromSystem(false)
|
||||||
, isFromSearch(false)
|
, isFromSearch(false)
|
||||||
{
|
{
|
||||||
|
undoRedoType = other->undoRedoType;
|
||||||
|
setKeepContent(other->keepContent());
|
||||||
|
setIsLast(other->isLast());
|
||||||
}
|
}
|
||||||
|
|
||||||
static const std::string getStaticType()
|
static const std::string getStaticType()
|
||||||
|
|||||||
@@ -0,0 +1,23 @@
|
|||||||
|
#ifndef MESSAGE_SCROLL_CODE_H
|
||||||
|
#define MESSAGE_SCROLL_CODE_H
|
||||||
|
|
||||||
|
#include "utility/messaging/Message.h"
|
||||||
|
|
||||||
|
class MessageScrollCode
|
||||||
|
: public Message<MessageScrollCode>
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
MessageScrollCode(int value)
|
||||||
|
: value(value)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
static const std::string getStaticType()
|
||||||
|
{
|
||||||
|
return "MessageScrollCode";
|
||||||
|
}
|
||||||
|
|
||||||
|
int value;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // MESSAGE_SCROLL_CODE_H
|
||||||
@@ -173,6 +173,11 @@ std::shared_ptr<TokenLocationFile> QtCodeArea::getTokenLocationFile() const
|
|||||||
return m_locationFile;
|
return m_locationFile;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QtCodeFile* QtCodeArea::getFile() const
|
||||||
|
{
|
||||||
|
return m_fileWidget;
|
||||||
|
}
|
||||||
|
|
||||||
void QtCodeArea::lineNumberAreaPaintEvent(QPaintEvent *event)
|
void QtCodeArea::lineNumberAreaPaintEvent(QPaintEvent *event)
|
||||||
{
|
{
|
||||||
QPainter painter(m_lineNumberArea);
|
QPainter painter(m_lineNumberArea);
|
||||||
|
|||||||
@@ -71,6 +71,7 @@ public:
|
|||||||
uint getEndLineNumber() const;
|
uint getEndLineNumber() const;
|
||||||
|
|
||||||
std::shared_ptr<TokenLocationFile> getTokenLocationFile() const;
|
std::shared_ptr<TokenLocationFile> getTokenLocationFile() const;
|
||||||
|
QtCodeFile* getFile() const;
|
||||||
|
|
||||||
void lineNumberAreaPaintEvent(QPaintEvent* event);
|
void lineNumberAreaPaintEvent(QPaintEvent* event);
|
||||||
int lineNumberDigits() const;
|
int lineNumberDigits() const;
|
||||||
|
|||||||
@@ -265,13 +265,13 @@ QtCodeSnippet* QtCodeFile::findFirstActiveSnippet() const
|
|||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool QtCodeFile::openCollapsedActiveSnippet() const
|
bool QtCodeFile::isCollapsedActiveFile() const
|
||||||
{
|
{
|
||||||
|
bool isActiveFile = false;
|
||||||
if (m_locationFile)
|
if (m_locationFile)
|
||||||
{
|
{
|
||||||
std::vector<Id> ids = getActiveTokenIds();
|
std::vector<Id> ids = getActiveTokenIds();
|
||||||
|
|
||||||
bool isActiveFile = false;
|
|
||||||
m_locationFile->forEachTokenLocation(
|
m_locationFile->forEachTokenLocation(
|
||||||
[&](TokenLocation* location)
|
[&](TokenLocation* location)
|
||||||
{
|
{
|
||||||
@@ -281,15 +281,9 @@ bool QtCodeFile::openCollapsedActiveSnippet() const
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
if (isActiveFile)
|
|
||||||
{
|
|
||||||
showSnippets();
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return isActiveFile;
|
||||||
}
|
}
|
||||||
|
|
||||||
void QtCodeFile::updateContent()
|
void QtCodeFile::updateContent()
|
||||||
@@ -430,7 +424,7 @@ void QtCodeFile::clickedMaximizeButton() const
|
|||||||
).dispatch();
|
).dispatch();
|
||||||
}
|
}
|
||||||
|
|
||||||
void QtCodeFile::showSnippets() const
|
void QtCodeFile::requestSnippets() const
|
||||||
{
|
{
|
||||||
if (m_snippetsRequested)
|
if (m_snippetsRequested)
|
||||||
{
|
{
|
||||||
@@ -450,6 +444,11 @@ void QtCodeFile::showSnippets() const
|
|||||||
msg.dispatch();
|
msg.dispatch();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool QtCodeFile::hasSnippets() const
|
||||||
|
{
|
||||||
|
return m_snippets.size() > 0;
|
||||||
|
}
|
||||||
|
|
||||||
void QtCodeFile::handleMessage(MessageWindowFocus* message)
|
void QtCodeFile::handleMessage(MessageWindowFocus* message)
|
||||||
{
|
{
|
||||||
updateTitleBar();
|
updateTitleBar();
|
||||||
|
|||||||
@@ -59,7 +59,7 @@ public:
|
|||||||
);
|
);
|
||||||
|
|
||||||
QtCodeSnippet* findFirstActiveSnippet() const;
|
QtCodeSnippet* findFirstActiveSnippet() const;
|
||||||
bool openCollapsedActiveSnippet() const;
|
bool isCollapsedActiveFile() const;
|
||||||
|
|
||||||
void updateContent();
|
void updateContent();
|
||||||
|
|
||||||
@@ -69,7 +69,8 @@ public:
|
|||||||
void setSnippets();
|
void setSnippets();
|
||||||
void setMaximized();
|
void setMaximized();
|
||||||
|
|
||||||
void showSnippets() const;
|
void requestSnippets() const;
|
||||||
|
bool hasSnippets() const;
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
void clickedMinimizeButton() const;
|
void clickedMinimizeButton() const;
|
||||||
|
|||||||
@@ -2,10 +2,12 @@
|
|||||||
|
|
||||||
#include <QPropertyAnimation>
|
#include <QPropertyAnimation>
|
||||||
#include <QScrollBar>
|
#include <QScrollBar>
|
||||||
|
#include <QTimer>
|
||||||
#include <QVariant>
|
#include <QVariant>
|
||||||
#include <QVBoxLayout>
|
#include <QVBoxLayout>
|
||||||
|
|
||||||
#include "utility/file/FileSystem.h"
|
#include "utility/file/FileSystem.h"
|
||||||
|
#include "utility/messaging/type/MessageScrollCode.h"
|
||||||
|
|
||||||
#include "data/location/TokenLocationFile.h"
|
#include "data/location/TokenLocationFile.h"
|
||||||
#include "qt/element/QtCodeFile.h"
|
#include "qt/element/QtCodeFile.h"
|
||||||
@@ -13,6 +15,8 @@
|
|||||||
|
|
||||||
QtCodeFileList::QtCodeFileList(QWidget* parent)
|
QtCodeFileList::QtCodeFileList(QWidget* parent)
|
||||||
: QScrollArea(parent)
|
: QScrollArea(parent)
|
||||||
|
, m_scrollToFile(nullptr)
|
||||||
|
, m_value(0)
|
||||||
{
|
{
|
||||||
setObjectName("code_file_list_base");
|
setObjectName("code_file_list_base");
|
||||||
|
|
||||||
@@ -28,6 +32,7 @@ QtCodeFileList::QtCodeFileList(QWidget* parent)
|
|||||||
setWidgetResizable(true);
|
setWidgetResizable(true);
|
||||||
setWidget(m_frame.get());
|
setWidget(m_frame.get());
|
||||||
|
|
||||||
|
connect(this->verticalScrollBar(), SIGNAL(valueChanged(int)), this, SLOT(scrolled(int)));
|
||||||
connect(this, SIGNAL(shouldScrollToSnippet(QtCodeSnippet*)), this, SLOT(scrollToSnippet(QtCodeSnippet*)), Qt::QueuedConnection);
|
connect(this, SIGNAL(shouldScrollToSnippet(QtCodeSnippet*)), this, SLOT(scrollToSnippet(QtCodeSnippet*)), Qt::QueuedConnection);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -112,37 +117,26 @@ void QtCodeFileList::showActiveTokenIds()
|
|||||||
updateFiles();
|
updateFiles();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool QtCodeFileList::scrollToFirstActiveSnippet()
|
void QtCodeFileList::showFirstActiveSnippet(bool scrollTo)
|
||||||
{
|
{
|
||||||
updateFiles();
|
updateFiles();
|
||||||
|
|
||||||
QtCodeSnippet* snippet = nullptr;
|
QtCodeSnippet* snippet = getFirstActiveSnippet();
|
||||||
for (std::shared_ptr<QtCodeFile> file: m_files)
|
|
||||||
{
|
|
||||||
snippet = file->findFirstActiveSnippet();
|
|
||||||
if (snippet)
|
|
||||||
{
|
|
||||||
if (!snippet->isVisible())
|
|
||||||
{
|
|
||||||
file->showSnippets();
|
|
||||||
}
|
|
||||||
|
|
||||||
emit shouldScrollToSnippet(snippet);
|
if (!snippet)
|
||||||
return true;
|
{
|
||||||
}
|
expandActiveSnippetFile(scrollTo);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
if (!snippet->isVisible())
|
||||||
}
|
|
||||||
|
|
||||||
void QtCodeFileList::expandActiveSnippetFile()
|
|
||||||
{
|
|
||||||
for (std::shared_ptr<QtCodeFile> file: m_files)
|
|
||||||
{
|
{
|
||||||
if (file->openCollapsedActiveSnippet())
|
snippet->getFile()->setSnippets();
|
||||||
{
|
}
|
||||||
return;
|
|
||||||
}
|
if (scrollTo)
|
||||||
|
{
|
||||||
|
emit shouldScrollToSnippet(snippet);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -193,11 +187,36 @@ void QtCodeFileList::showContents()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void QtCodeFileList::scrollToValue(int value)
|
||||||
|
{
|
||||||
|
m_value = value;
|
||||||
|
QTimer::singleShot(100, this, SLOT(setValue()));
|
||||||
|
}
|
||||||
|
|
||||||
|
void QtCodeFileList::scrollToActiveFileIfRequested()
|
||||||
|
{
|
||||||
|
if (m_scrollToFile && m_scrollToFile->hasSnippets())
|
||||||
|
{
|
||||||
|
showFirstActiveSnippet(true);
|
||||||
|
m_scrollToFile = nullptr;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void QtCodeFileList::scrolled(int value)
|
||||||
|
{
|
||||||
|
MessageScrollCode(value).dispatch();
|
||||||
|
}
|
||||||
|
|
||||||
void QtCodeFileList::scrollToSnippet(QtCodeSnippet* snippet)
|
void QtCodeFileList::scrollToSnippet(QtCodeSnippet* snippet)
|
||||||
{
|
{
|
||||||
this->ensureWidgetVisibleAnimated(snippet, snippet->getFirstActiveLineRect());
|
this->ensureWidgetVisibleAnimated(snippet, snippet->getFirstActiveLineRect());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void QtCodeFileList::setValue()
|
||||||
|
{
|
||||||
|
this->verticalScrollBar()->setValue(m_value);
|
||||||
|
}
|
||||||
|
|
||||||
QtCodeFile* QtCodeFileList::getFile(const FilePath filePath)
|
QtCodeFile* QtCodeFileList::getFile(const FilePath filePath)
|
||||||
{
|
{
|
||||||
QtCodeFile* file = nullptr;
|
QtCodeFile* file = nullptr;
|
||||||
@@ -225,6 +244,21 @@ QtCodeFile* QtCodeFileList::getFile(const FilePath filePath)
|
|||||||
return file;
|
return file;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QtCodeSnippet* QtCodeFileList::getFirstActiveSnippet() const
|
||||||
|
{
|
||||||
|
QtCodeSnippet* snippet = nullptr;
|
||||||
|
for (std::shared_ptr<QtCodeFile> file: m_files)
|
||||||
|
{
|
||||||
|
snippet = file->findFirstActiveSnippet();
|
||||||
|
if (snippet)
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return snippet;
|
||||||
|
}
|
||||||
|
|
||||||
void QtCodeFileList::updateFiles()
|
void QtCodeFileList::updateFiles()
|
||||||
{
|
{
|
||||||
for (std::shared_ptr<QtCodeFile> file: m_files)
|
for (std::shared_ptr<QtCodeFile> file: m_files)
|
||||||
@@ -233,6 +267,24 @@ void QtCodeFileList::updateFiles()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void QtCodeFileList::expandActiveSnippetFile(bool scrollTo)
|
||||||
|
{
|
||||||
|
for (std::shared_ptr<QtCodeFile> file: m_files)
|
||||||
|
{
|
||||||
|
if (file->isCollapsedActiveFile())
|
||||||
|
{
|
||||||
|
file->requestSnippets();
|
||||||
|
|
||||||
|
if (scrollTo)
|
||||||
|
{
|
||||||
|
m_scrollToFile = file.get();
|
||||||
|
}
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void QtCodeFileList::ensureWidgetVisibleAnimated(QWidget *childWidget, QRectF rect)
|
void QtCodeFileList::ensureWidgetVisibleAnimated(QWidget *childWidget, QRectF rect)
|
||||||
{
|
{
|
||||||
if (!widget()->isAncestorOf(childWidget))
|
if (!widget()->isAncestorOf(childWidget))
|
||||||
@@ -259,7 +311,7 @@ void QtCodeFileList::ensureWidgetVisibleAnimated(QWidget *childWidget, QRectF re
|
|||||||
if (scrollBar && value != 0)
|
if (scrollBar && value != 0)
|
||||||
{
|
{
|
||||||
QPropertyAnimation* anim = new QPropertyAnimation(scrollBar, "value");
|
QPropertyAnimation* anim = new QPropertyAnimation(scrollBar, "value");
|
||||||
anim->setDuration(500);
|
anim->setDuration(300);
|
||||||
anim->setStartValue(scrollBar->value());
|
anim->setStartValue(scrollBar->value());
|
||||||
anim->setEndValue(scrollBar->value() + value);
|
anim->setEndValue(scrollBar->value() + value);
|
||||||
anim->setEasingCurve(QEasingCurve::InOutQuad);
|
anim->setEasingCurve(QEasingCurve::InOutQuad);
|
||||||
|
|||||||
@@ -55,8 +55,7 @@ public:
|
|||||||
|
|
||||||
void showActiveTokenIds();
|
void showActiveTokenIds();
|
||||||
|
|
||||||
bool scrollToFirstActiveSnippet();
|
void showFirstActiveSnippet(bool scrollTo);
|
||||||
void expandActiveSnippetFile();
|
|
||||||
|
|
||||||
void focusTokenIds(const std::vector<Id>& focusedTokenIds);
|
void focusTokenIds(const std::vector<Id>& focusedTokenIds);
|
||||||
void defocusTokenIds();
|
void defocusTokenIds();
|
||||||
@@ -66,15 +65,21 @@ public:
|
|||||||
void setFileMaximized(const FilePath path);
|
void setFileMaximized(const FilePath path);
|
||||||
|
|
||||||
void showContents();
|
void showContents();
|
||||||
|
void scrollToValue(int value);
|
||||||
|
void scrollToActiveFileIfRequested();
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
|
void scrolled(int value);
|
||||||
void scrollToSnippet(QtCodeSnippet* snippet);
|
void scrollToSnippet(QtCodeSnippet* snippet);
|
||||||
|
void setValue();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QtCodeFile* getFile(const FilePath filePath);
|
QtCodeFile* getFile(const FilePath filePath);
|
||||||
|
QtCodeSnippet* getFirstActiveSnippet() const;
|
||||||
|
|
||||||
void updateFiles();
|
void updateFiles();
|
||||||
|
|
||||||
|
void expandActiveSnippetFile(bool scrollTo);
|
||||||
void ensureWidgetVisibleAnimated(QWidget *childWidget, QRectF rect);
|
void ensureWidgetVisibleAnimated(QWidget *childWidget, QRectF rect);
|
||||||
|
|
||||||
std::shared_ptr<QFrame> m_frame;
|
std::shared_ptr<QFrame> m_frame;
|
||||||
@@ -83,6 +88,9 @@ private:
|
|||||||
std::vector<Id> m_activeTokenIds;
|
std::vector<Id> m_activeTokenIds;
|
||||||
std::vector<Id> m_focusedTokenIds;
|
std::vector<Id> m_focusedTokenIds;
|
||||||
std::vector<std::string> m_errorMessages;
|
std::vector<std::string> m_errorMessages;
|
||||||
|
|
||||||
|
QtCodeFile* m_scrollToFile;
|
||||||
|
int m_value;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // QT_CODE_FILE_LIST
|
#endif // QT_CODE_FILE_LIST
|
||||||
|
|||||||
@@ -110,6 +110,11 @@ QtCodeSnippet::~QtCodeSnippet()
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QtCodeFile* QtCodeSnippet::getFile() const
|
||||||
|
{
|
||||||
|
return m_codeArea->getFile();
|
||||||
|
}
|
||||||
|
|
||||||
uint QtCodeSnippet::getStartLineNumber() const
|
uint QtCodeSnippet::getStartLineNumber() const
|
||||||
{
|
{
|
||||||
return m_codeArea->getStartLineNumber();
|
return m_codeArea->getStartLineNumber();
|
||||||
|
|||||||
@@ -32,6 +32,8 @@ public:
|
|||||||
);
|
);
|
||||||
virtual ~QtCodeSnippet();
|
virtual ~QtCodeSnippet();
|
||||||
|
|
||||||
|
QtCodeFile* getFile() const;
|
||||||
|
|
||||||
uint getStartLineNumber() const;
|
uint getStartLineNumber() const;
|
||||||
uint getEndLineNumber() const;
|
uint getEndLineNumber() const;
|
||||||
|
|
||||||
|
|||||||
@@ -16,12 +16,12 @@ QtCodeView::QtCodeView(ViewLayout* viewLayout)
|
|||||||
, m_addCodeSnippetsFunctor(std::bind(&QtCodeView::doAddCodeSnippets, this, std::placeholders::_1, std::placeholders::_2))
|
, m_addCodeSnippetsFunctor(std::bind(&QtCodeView::doAddCodeSnippets, this, std::placeholders::_1, std::placeholders::_2))
|
||||||
, m_showCodeFileFunctor(std::bind(&QtCodeView::doShowCodeFile, this, std::placeholders::_1))
|
, m_showCodeFileFunctor(std::bind(&QtCodeView::doShowCodeFile, this, std::placeholders::_1))
|
||||||
, m_setFileStateFunctor(std::bind(&QtCodeView::doSetFileState, this, std::placeholders::_1, std::placeholders::_2))
|
, m_setFileStateFunctor(std::bind(&QtCodeView::doSetFileState, this, std::placeholders::_1, std::placeholders::_2))
|
||||||
, m_doShowFirstActiveSnippetFunctor(std::bind(&QtCodeView::doShowFirstActiveSnippet, this, std::placeholders::_1))
|
, m_doShowFirstActiveSnippetFunctor(std::bind(&QtCodeView::doShowFirstActiveSnippet, this, std::placeholders::_1, std::placeholders::_2))
|
||||||
, m_doShowActiveTokenIdsFunctor(std::bind(&QtCodeView::doShowActiveTokenIds, this, std::placeholders::_1))
|
, m_doShowActiveTokenIdsFunctor(std::bind(&QtCodeView::doShowActiveTokenIds, this, std::placeholders::_1))
|
||||||
, m_focusTokenIdsFunctor(std::bind(&QtCodeView::doFocusTokenIds, this, std::placeholders::_1))
|
, m_focusTokenIdsFunctor(std::bind(&QtCodeView::doFocusTokenIds, this, std::placeholders::_1))
|
||||||
, m_defocusTokenIdsFunctor(std::bind(&QtCodeView::doDefocusTokenIds, this))
|
, m_defocusTokenIdsFunctor(std::bind(&QtCodeView::doDefocusTokenIds, this))
|
||||||
, m_showContentsFunctor(std::bind(&QtCodeView::doShowContents, this))
|
, m_showContentsFunctor(std::bind(&QtCodeView::doShowContents, this))
|
||||||
, m_isExpanding(false)
|
, m_scrollToValueFunctor(std::bind(&QtCodeView::doScrollToValue, this, std::placeholders::_1))
|
||||||
{
|
{
|
||||||
m_widget = new QtCodeFileList();
|
m_widget = new QtCodeFileList();
|
||||||
setStyleSheet();
|
setStyleSheet();
|
||||||
@@ -75,9 +75,9 @@ void QtCodeView::setFileState(const FilePath filePath, FileState state)
|
|||||||
m_setFileStateFunctor(filePath, state);
|
m_setFileStateFunctor(filePath, state);
|
||||||
}
|
}
|
||||||
|
|
||||||
void QtCodeView::showFirstActiveSnippet(const std::vector<Id>& activeTokenIds)
|
void QtCodeView::showFirstActiveSnippet(const std::vector<Id>& activeTokenIds, bool scrollTo)
|
||||||
{
|
{
|
||||||
m_doShowFirstActiveSnippetFunctor(activeTokenIds);
|
m_doShowFirstActiveSnippetFunctor(activeTokenIds, scrollTo);
|
||||||
}
|
}
|
||||||
|
|
||||||
void QtCodeView::showActiveTokenIds(const std::vector<Id>& activeTokenIds)
|
void QtCodeView::showActiveTokenIds(const std::vector<Id>& activeTokenIds)
|
||||||
@@ -100,6 +100,11 @@ void QtCodeView::showContents()
|
|||||||
m_showContentsFunctor();
|
m_showContentsFunctor();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void QtCodeView::scrollToValue(int value)
|
||||||
|
{
|
||||||
|
m_scrollToValueFunctor(value);
|
||||||
|
}
|
||||||
|
|
||||||
void QtCodeView::doRefreshView()
|
void QtCodeView::doRefreshView()
|
||||||
{
|
{
|
||||||
setStyleSheet();
|
setStyleSheet();
|
||||||
@@ -155,11 +160,7 @@ void QtCodeView::doAddCodeSnippets(const std::vector<CodeSnippetParams>& snippet
|
|||||||
|
|
||||||
setStyleSheet(); // so property "isLast" of QtCodeSnippet is computed correctly
|
setStyleSheet(); // so property "isLast" of QtCodeSnippet is computed correctly
|
||||||
|
|
||||||
if (m_isExpanding)
|
m_widget->scrollToActiveFileIfRequested();
|
||||||
{
|
|
||||||
m_widget->scrollToFirstActiveSnippet();
|
|
||||||
m_isExpanding = false;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void QtCodeView::doShowCodeFile(const CodeSnippetParams& params)
|
void QtCodeView::doShowCodeFile(const CodeSnippetParams& params)
|
||||||
@@ -183,15 +184,10 @@ void QtCodeView::doSetFileState(const FilePath filePath, FileState state)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void QtCodeView::doShowFirstActiveSnippet(const std::vector<Id>& activeTokenIds)
|
void QtCodeView::doShowFirstActiveSnippet(const std::vector<Id>& activeTokenIds, bool scrollTo)
|
||||||
{
|
{
|
||||||
m_widget->setActiveTokenIds(activeTokenIds);
|
m_widget->setActiveTokenIds(activeTokenIds);
|
||||||
|
m_widget->showFirstActiveSnippet(scrollTo);
|
||||||
if (!m_widget->scrollToFirstActiveSnippet())
|
|
||||||
{
|
|
||||||
m_widget->expandActiveSnippetFile();
|
|
||||||
m_isExpanding = true;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void QtCodeView::doShowActiveTokenIds(const std::vector<Id>& activeTokenIds)
|
void QtCodeView::doShowActiveTokenIds(const std::vector<Id>& activeTokenIds)
|
||||||
@@ -210,11 +206,16 @@ void QtCodeView::doDefocusTokenIds()
|
|||||||
m_widget->defocusTokenIds();
|
m_widget->defocusTokenIds();
|
||||||
}
|
}
|
||||||
|
|
||||||
void QtCodeView::doShowContents() const
|
void QtCodeView::doShowContents()
|
||||||
{
|
{
|
||||||
m_widget->showContents();
|
m_widget->showContents();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void QtCodeView::doScrollToValue(int value)
|
||||||
|
{
|
||||||
|
m_widget->scrollToValue(value);
|
||||||
|
}
|
||||||
|
|
||||||
void QtCodeView::setStyleSheet() const
|
void QtCodeView::setStyleSheet() const
|
||||||
{
|
{
|
||||||
utility::setWidgetBackgroundColor(m_widget, ColorScheme::getInstance()->getColor("code/background"));
|
utility::setWidgetBackgroundColor(m_widget, ColorScheme::getInstance()->getColor("code/background"));
|
||||||
|
|||||||
@@ -35,7 +35,7 @@ public:
|
|||||||
|
|
||||||
virtual void setFileState(const FilePath filePath, FileState state);
|
virtual void setFileState(const FilePath filePath, FileState state);
|
||||||
|
|
||||||
virtual void showFirstActiveSnippet(const std::vector<Id>& activeTokenIds);
|
virtual void showFirstActiveSnippet(const std::vector<Id>& activeTokenIds, bool scrollTo);
|
||||||
virtual void showActiveTokenIds(const std::vector<Id>& activeTokenIds);
|
virtual void showActiveTokenIds(const std::vector<Id>& activeTokenIds);
|
||||||
|
|
||||||
virtual void focusTokenIds(const std::vector<Id>& focusedTokenIds);
|
virtual void focusTokenIds(const std::vector<Id>& focusedTokenIds);
|
||||||
@@ -43,6 +43,8 @@ public:
|
|||||||
|
|
||||||
virtual void showContents();
|
virtual void showContents();
|
||||||
|
|
||||||
|
virtual void scrollToValue(int value);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void doRefreshView();
|
void doRefreshView();
|
||||||
|
|
||||||
@@ -52,13 +54,15 @@ private:
|
|||||||
|
|
||||||
void doSetFileState(const FilePath filePath, FileState state);
|
void doSetFileState(const FilePath filePath, FileState state);
|
||||||
|
|
||||||
void doShowFirstActiveSnippet(const std::vector<Id>& activeTokenIds);
|
void doShowFirstActiveSnippet(const std::vector<Id>& activeTokenIds, bool scrollTo);
|
||||||
void doShowActiveTokenIds(const std::vector<Id>& activeTokenIds);
|
void doShowActiveTokenIds(const std::vector<Id>& activeTokenIds);
|
||||||
|
|
||||||
void doFocusTokenIds(const std::vector<Id>& focusedTokenIds);
|
void doFocusTokenIds(const std::vector<Id>& focusedTokenIds);
|
||||||
void doDefocusTokenIds();
|
void doDefocusTokenIds();
|
||||||
|
|
||||||
void doShowContents() const;
|
void doShowContents();
|
||||||
|
|
||||||
|
void doScrollToValue(int value);
|
||||||
|
|
||||||
void setStyleSheet() const;
|
void setStyleSheet() const;
|
||||||
|
|
||||||
@@ -67,18 +71,17 @@ private:
|
|||||||
QtThreadedFunctor<const std::vector<CodeSnippetParams>&, bool> m_addCodeSnippetsFunctor;
|
QtThreadedFunctor<const std::vector<CodeSnippetParams>&, bool> m_addCodeSnippetsFunctor;
|
||||||
QtThreadedFunctor<const CodeSnippetParams&> m_showCodeFileFunctor;
|
QtThreadedFunctor<const CodeSnippetParams&> m_showCodeFileFunctor;
|
||||||
QtThreadedFunctor<const FilePath, FileState> m_setFileStateFunctor;
|
QtThreadedFunctor<const FilePath, FileState> m_setFileStateFunctor;
|
||||||
QtThreadedFunctor<const std::vector<Id>&> m_doShowFirstActiveSnippetFunctor;
|
QtThreadedFunctor<const std::vector<Id>&, bool> m_doShowFirstActiveSnippetFunctor;
|
||||||
QtThreadedFunctor<const std::vector<Id>&> m_doShowActiveTokenIdsFunctor;
|
QtThreadedFunctor<const std::vector<Id>&> m_doShowActiveTokenIdsFunctor;
|
||||||
QtThreadedFunctor<const std::vector<Id>&> m_focusTokenIdsFunctor;
|
QtThreadedFunctor<const std::vector<Id>&> m_focusTokenIdsFunctor;
|
||||||
QtThreadedFunctor<> m_defocusTokenIdsFunctor;
|
QtThreadedFunctor<> m_defocusTokenIdsFunctor;
|
||||||
QtThreadedFunctor<> m_showContentsFunctor;
|
QtThreadedFunctor<> m_showContentsFunctor;
|
||||||
|
QtThreadedFunctor<int> m_scrollToValueFunctor;
|
||||||
|
|
||||||
QtCodeFileList* m_widget;
|
QtCodeFileList* m_widget;
|
||||||
|
|
||||||
std::vector<Id> m_activeTokenIds;
|
std::vector<Id> m_activeTokenIds;
|
||||||
std::vector<std::string> m_errorMessages;
|
std::vector<std::string> m_errorMessages;
|
||||||
|
|
||||||
bool m_isExpanding;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
# endif // QT_CODE_VIEW_H
|
# endif // QT_CODE_VIEW_H
|
||||||
|
|||||||
Reference in New Issue
Block a user