mirror of
https://github.com/yse/easy_profiler.git
synced 2024-12-27 08:41:02 +08:00
This commit is contained in:
parent
0ae430410d
commit
c85d15a4e2
@ -137,7 +137,8 @@ BoldLabel::~BoldLabel()
|
|||||||
//////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
BackgroundItem::BackgroundItem() : AuxItem()
|
BackgroundItem::BackgroundItem() : AuxItem()
|
||||||
, m_bookmark(std::numeric_limits<size_t>::max())
|
, m_tooltip(nullptr)
|
||||||
|
, m_bookmark(profiler_gui::numeric_max<decltype(m_bookmark)>())
|
||||||
, m_bButtonPressed(false)
|
, m_bButtonPressed(false)
|
||||||
{
|
{
|
||||||
m_bookmarkSign.lineTo(px(BOOKMARK_WIDTH), 0);
|
m_bookmarkSign.lineTo(px(BOOKMARK_WIDTH), 0);
|
||||||
@ -151,6 +152,11 @@ BackgroundItem::BackgroundItem() : AuxItem()
|
|||||||
connect(&m_idleTimer, &QTimer::timeout, this, &BackgroundItem::onIdleTimeout);
|
connect(&m_idleTimer, &QTimer::timeout, this, &BackgroundItem::onIdleTimeout);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
BackgroundItem::~BackgroundItem()
|
||||||
|
{
|
||||||
|
delete m_tooltip;
|
||||||
|
}
|
||||||
|
|
||||||
void BackgroundItem::paint(QPainter* _painter, const QStyleOptionGraphicsItem*, QWidget*)
|
void BackgroundItem::paint(QPainter* _painter, const QStyleOptionGraphicsItem*, QWidget*)
|
||||||
{
|
{
|
||||||
auto const sceneView = static_cast<BlocksGraphicsView*>(scene()->parent());
|
auto const sceneView = static_cast<BlocksGraphicsView*>(scene()->parent());
|
||||||
@ -295,27 +301,32 @@ void BackgroundItem::paint(QPainter* _painter, const QStyleOptionGraphicsItem*,
|
|||||||
pen.setColor(Qt::black);
|
pen.setColor(Qt::black);
|
||||||
pen.setWidth(px(1));
|
pen.setWidth(px(1));
|
||||||
|
|
||||||
|
_painter->setPen(borderColor);
|
||||||
|
_painter->setBrush(Qt::transparent);
|
||||||
_painter->setRenderHint(QPainter::Antialiasing);
|
_painter->setRenderHint(QPainter::Antialiasing);
|
||||||
|
|
||||||
const int minWidth = px(BOOKMARK_WIDTH);
|
const int half = px(BOOKMARK_WIDTH) >> 1;
|
||||||
const int half = minWidth >> 1;
|
auto color = QColor(Qt::transparent).rgb();
|
||||||
QBrush brush(Qt::transparent);
|
qreal prevPos = -1e300;
|
||||||
qreal prevPos = -offset * currentScale;
|
|
||||||
for (auto it = first_it; it != bookmarks.cend() && it->pos <= endTime; ++it)
|
for (auto it = first_it; it != bookmarks.cend() && it->pos <= endTime; ++it)
|
||||||
{
|
{
|
||||||
const qreal pos =
|
const qreal pos =
|
||||||
(PROF_MICROSECONDS(it->pos - EASY_GLOBALS.begin_time) - offset) * currentScale - half;
|
(PROF_MICROSECONDS(it->pos - EASY_GLOBALS.begin_time) - offset) * currentScale - half;
|
||||||
|
|
||||||
|
const bool isSelectedBookmark = m_bookmark == static_cast<size_t>(std::distance(bookmarks.cbegin(), it));
|
||||||
|
|
||||||
const auto delta = fabs(pos - prevPos);
|
const auto delta = fabs(pos - prevPos);
|
||||||
if (delta < minWidth)
|
if (delta < half && !isSelectedBookmark)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (brush.color().rgb() != it->color)
|
if (color != it->color)
|
||||||
brush.setColor(QColor::fromRgb(it->color));
|
_painter->setBrush(QColor::fromRgb(it->color));
|
||||||
|
|
||||||
_painter->fillPath(m_bookmarkSign.translated(pos, h), brush);
|
const auto path = m_bookmarkSign.translated(pos, h);
|
||||||
if (m_bookmark == static_cast<size_t>(std::distance(bookmarks.cbegin(), it)))
|
_painter->drawPath(path);
|
||||||
_painter->strokePath(m_bookmarkSign.translated(pos, h), pen);
|
|
||||||
|
if (isSelectedBookmark)
|
||||||
|
_painter->strokePath(path, pen);
|
||||||
|
|
||||||
prevPos = pos;
|
prevPos = pos;
|
||||||
}
|
}
|
||||||
@ -330,13 +341,16 @@ bool BackgroundItem::mouseMove(const QPointF& scenePos)
|
|||||||
{
|
{
|
||||||
const auto prev = m_bookmark;
|
const auto prev = m_bookmark;
|
||||||
|
|
||||||
|
delete m_tooltip;
|
||||||
|
m_tooltip = nullptr;
|
||||||
|
|
||||||
auto& bookmarks = EASY_GLOBALS.bookmarks;
|
auto& bookmarks = EASY_GLOBALS.bookmarks;
|
||||||
if (bookmarks.empty())
|
if (bookmarks.empty())
|
||||||
{
|
{
|
||||||
if (m_idleTimer.isActive())
|
if (m_idleTimer.isActive())
|
||||||
m_idleTimer.stop();
|
m_idleTimer.stop();
|
||||||
|
|
||||||
m_bookmark = std::numeric_limits<size_t>::max();
|
profiler_gui::set_max(m_bookmark);
|
||||||
if (prev != m_bookmark)
|
if (prev != m_bookmark)
|
||||||
{
|
{
|
||||||
qApp->restoreOverrideCursor();
|
qApp->restoreOverrideCursor();
|
||||||
@ -357,7 +371,7 @@ bool BackgroundItem::mouseMove(const QPointF& scenePos)
|
|||||||
if (m_idleTimer.isActive())
|
if (m_idleTimer.isActive())
|
||||||
m_idleTimer.stop();
|
m_idleTimer.stop();
|
||||||
|
|
||||||
m_bookmark = std::numeric_limits<size_t>::max();
|
profiler_gui::set_max(m_bookmark);
|
||||||
if (prev != m_bookmark)
|
if (prev != m_bookmark)
|
||||||
{
|
{
|
||||||
qApp->restoreOverrideCursor();
|
qApp->restoreOverrideCursor();
|
||||||
@ -374,7 +388,7 @@ bool BackgroundItem::mouseMove(const QPointF& scenePos)
|
|||||||
|
|
||||||
if (!m_bButtonPressed)
|
if (!m_bButtonPressed)
|
||||||
{
|
{
|
||||||
m_bookmark = std::numeric_limits<size_t>::max();
|
profiler_gui::set_max(m_bookmark);
|
||||||
|
|
||||||
auto first_it = std::lower_bound(bookmarks.cbegin(), bookmarks.cend(), timestamp,
|
auto first_it = std::lower_bound(bookmarks.cbegin(), bookmarks.cend(), timestamp,
|
||||||
[](const profiler::Bookmark& bookmark, profiler::timestamp_t value)
|
[](const profiler::Bookmark& bookmark, profiler::timestamp_t value)
|
||||||
@ -442,6 +456,10 @@ bool BackgroundItem::mouseMove(const QPointF& scenePos)
|
|||||||
bool BackgroundItem::mousePress(const QPointF& scenePos)
|
bool BackgroundItem::mousePress(const QPointF& scenePos)
|
||||||
{
|
{
|
||||||
m_bButtonPressed = m_bookmark < EASY_GLOBALS.bookmarks.size() && contains(scenePos);
|
m_bButtonPressed = m_bookmark < EASY_GLOBALS.bookmarks.size() && contains(scenePos);
|
||||||
|
|
||||||
|
delete m_tooltip;
|
||||||
|
m_tooltip = nullptr;
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -508,6 +526,23 @@ bool BackgroundItem::mouseDoubleClick(const QPointF& scenePos)
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void BackgroundItem::mouseLeave()
|
||||||
|
{
|
||||||
|
delete m_tooltip;
|
||||||
|
m_tooltip = nullptr;
|
||||||
|
|
||||||
|
if (m_idleTimer.isActive())
|
||||||
|
m_idleTimer.stop();
|
||||||
|
|
||||||
|
if (m_bookmark < EASY_GLOBALS.bookmarks.size())
|
||||||
|
{
|
||||||
|
profiler_gui::set_max(m_bookmark);
|
||||||
|
qApp->restoreOverrideCursor();
|
||||||
|
emit bookmarkChanged(m_bookmark);
|
||||||
|
update();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
bool BackgroundItem::contains(const QPointF& scenePos) const
|
bool BackgroundItem::contains(const QPointF& scenePos) const
|
||||||
{
|
{
|
||||||
auto const sceneView = static_cast<BlocksGraphicsView*>(scene()->parent());
|
auto const sceneView = static_cast<BlocksGraphicsView*>(scene()->parent());
|
||||||
@ -520,14 +555,40 @@ void BackgroundItem::onIdleTimeout()
|
|||||||
{
|
{
|
||||||
if (m_bookmark < EASY_GLOBALS.bookmarks.size())
|
if (m_bookmark < EASY_GLOBALS.bookmarks.size())
|
||||||
{
|
{
|
||||||
/// TODO: show tooltip
|
delete m_tooltip;
|
||||||
|
m_tooltip = nullptr;
|
||||||
|
|
||||||
|
const auto& text = EASY_GLOBALS.bookmarks[m_bookmark].text;
|
||||||
|
if (text.empty())
|
||||||
|
return;
|
||||||
|
|
||||||
|
auto parent = static_cast<QWidget*>(scene()->parent());
|
||||||
|
m_tooltip = new QLabel(QString::fromStdString(text),
|
||||||
|
parent, Qt::ToolTip | Qt::WindowTransparentForInput);
|
||||||
|
|
||||||
|
if (m_tooltip == nullptr)
|
||||||
|
return;
|
||||||
|
|
||||||
|
const auto delta = px(10);
|
||||||
|
|
||||||
|
m_tooltip->setObjectName(QStringLiteral("BookmarkPopup"));
|
||||||
|
m_tooltip->setAttribute(Qt::WA_ShowWithoutActivating, true);
|
||||||
|
m_tooltip->setFocusPolicy(Qt::NoFocus);
|
||||||
|
m_tooltip->setWordWrap(true);
|
||||||
|
m_tooltip->move(QCursor::pos() + QPoint(delta >> 1, delta));
|
||||||
|
m_tooltip->show();
|
||||||
|
|
||||||
|
const int bottom = m_tooltip->mapToParent(m_tooltip->pos()).y() + m_tooltip->height();
|
||||||
|
const int parentBottom = parent->y() + parent->height();
|
||||||
|
if (bottom > parentBottom)
|
||||||
|
m_tooltip->move(m_tooltip->pos() - QPoint(delta >> 1, m_tooltip->height() + delta));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
ForegroundItem::ForegroundItem() : AuxItem()
|
ForegroundItem::ForegroundItem() : AuxItem()
|
||||||
, m_bookmark(std::numeric_limits<size_t>::max())
|
, m_bookmark(profiler_gui::numeric_max<decltype(m_bookmark)>())
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -592,7 +653,7 @@ void ForegroundItem::onMoved()
|
|||||||
|
|
||||||
BlocksGraphicsView::BlocksGraphicsView(QWidget* _parent)
|
BlocksGraphicsView::BlocksGraphicsView(QWidget* _parent)
|
||||||
: Parent(_parent)
|
: Parent(_parent)
|
||||||
, m_beginTime(std::numeric_limits<decltype(m_beginTime)>::max())
|
, m_beginTime(profiler_gui::numeric_max<decltype(m_beginTime)>())
|
||||||
, m_sceneWidth(0)
|
, m_sceneWidth(0)
|
||||||
, m_scale(1)
|
, m_scale(1)
|
||||||
, m_offset(0)
|
, m_offset(0)
|
||||||
@ -696,7 +757,7 @@ void BlocksGraphicsView::clear()
|
|||||||
m_selectedBlocks.clear();
|
m_selectedBlocks.clear();
|
||||||
m_backgroundItem = nullptr;
|
m_backgroundItem = nullptr;
|
||||||
|
|
||||||
m_beginTime = std::numeric_limits<decltype(m_beginTime)>::max(); // reset begin time
|
profiler_gui::set_max(m_beginTime); // reset begin time
|
||||||
m_scale = 1; // scale back to initial 100% scale
|
m_scale = 1; // scale back to initial 100% scale
|
||||||
m_timelineStep = 1;
|
m_timelineStep = 1;
|
||||||
m_offset = 0; // scroll back to the beginning of the scene
|
m_offset = 0; // scroll back to the beginning of the scene
|
||||||
@ -757,7 +818,7 @@ void BlocksGraphicsView::notifyVisibleRegionPosChange()
|
|||||||
|
|
||||||
void BlocksGraphicsView::notifyVisibleRegionPosChange(qreal _pos)
|
void BlocksGraphicsView::notifyVisibleRegionPosChange(qreal _pos)
|
||||||
{
|
{
|
||||||
if (m_sceneWidth < m_visibleRegionWidth)
|
if (m_sceneWidth <= m_visibleRegionWidth)
|
||||||
m_offset = 0;
|
m_offset = 0;
|
||||||
else
|
else
|
||||||
m_offset = estd::clamp(0., _pos, m_sceneWidth - m_visibleRegionWidth);
|
m_offset = estd::clamp(0., _pos, m_sceneWidth - m_visibleRegionWidth);
|
||||||
@ -889,11 +950,11 @@ void BlocksGraphicsView::setTree(const profiler::thread_blocks_tree_t& _blocksTr
|
|||||||
EASY_GLOBALS.scene.empty = false;
|
EASY_GLOBALS.scene.empty = false;
|
||||||
|
|
||||||
// Center view on the beginning of the scene
|
// Center view on the beginning of the scene
|
||||||
updateVisibleSceneRect();
|
const int vbar_width = updateVisibleSceneRect();
|
||||||
//setScrollbar(m_pScrollbar);
|
const auto windowWidth = (m_visibleSceneRect.width() + vbar_width) / m_scale;
|
||||||
|
|
||||||
notifySceneSizeChange();
|
notifySceneSizeChange();
|
||||||
notifyVisibleRegionSizeChange();
|
notifyVisibleRegionSizeChange(windowWidth);
|
||||||
|
|
||||||
// Create new chronometer item (previous item was destroyed by scene on scene()->clear()).
|
// Create new chronometer item (previous item was destroyed by scene on scene()->clear()).
|
||||||
// It will be shown on mouse right button click.
|
// It will be shown on mouse right button click.
|
||||||
@ -925,12 +986,38 @@ void BlocksGraphicsView::setTree(const profiler::thread_blocks_tree_t& _blocksTr
|
|||||||
|
|
||||||
scrollTo(longestItem);
|
scrollTo(longestItem);
|
||||||
m_pScrollbar->setHistogramSource(longestItem->threadId(), longestItem->items(0));
|
m_pScrollbar->setHistogramSource(longestItem->threadId(), longestItem->items(0));
|
||||||
|
|
||||||
if (!longestItem->items(0).empty())
|
if (!longestItem->items(0).empty())
|
||||||
|
{
|
||||||
notifyVisibleRegionPosChange(longestItem->items(0).front().left() - m_visibleRegionWidth * 0.25);
|
notifyVisibleRegionPosChange(longestItem->items(0).front().left() - m_visibleRegionWidth * 0.25);
|
||||||
|
|
||||||
|
// Scale to fit all items
|
||||||
|
const auto right = longestItem->items(0).back().right() - m_offset;
|
||||||
|
const auto currentScale = m_scale + std::numeric_limits<decltype(m_scale)>::epsilon();
|
||||||
|
|
||||||
|
auto scale = m_scale;
|
||||||
|
while (scale < MAX_SCALE && right < (m_visibleSceneRect.width() + vbar_width) / scale)
|
||||||
|
{
|
||||||
|
m_scale = scale;
|
||||||
|
scale *= profiler_gui::SCALING_COEFFICIENT;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (currentScale < m_scale)
|
||||||
|
scaleTo(m_scale);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_bHovered && !m_idleTimer.isActive())
|
if (m_bHovered && !m_idleTimer.isActive())
|
||||||
m_idleTimer.start();
|
m_idleTimer.start();
|
||||||
|
|
||||||
|
// Workaround for valid scene painting after setting a new tree
|
||||||
|
QTimer::singleShot(0, this, &This::revalidateOffset);
|
||||||
|
}
|
||||||
|
|
||||||
|
void BlocksGraphicsView::revalidateOffset()
|
||||||
|
{
|
||||||
|
notifyVisibleRegionPosChange(m_offset);
|
||||||
|
repaintScene();
|
||||||
}
|
}
|
||||||
|
|
||||||
const BlocksGraphicsView::Items &BlocksGraphicsView::getItems() const
|
const BlocksGraphicsView::Items &BlocksGraphicsView::getItems() const
|
||||||
@ -1150,7 +1237,6 @@ void BlocksGraphicsView::scaleTo(qreal _scale)
|
|||||||
notifyVisibleRegionSizeChange(windowWidth);
|
notifyVisibleRegionSizeChange(windowWidth);
|
||||||
|
|
||||||
updateTimelineStep(windowWidth);
|
updateTimelineStep(windowWidth);
|
||||||
repaintScene();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////
|
||||||
@ -1175,6 +1261,9 @@ void BlocksGraphicsView::leaveEvent(QEvent* _event)
|
|||||||
|
|
||||||
if (!needToIgnoreMouseEvent())
|
if (!needToIgnoreMouseEvent())
|
||||||
removePopup();
|
removePopup();
|
||||||
|
|
||||||
|
if (m_backgroundItem != nullptr)
|
||||||
|
m_backgroundItem->mouseLeave();
|
||||||
}
|
}
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////
|
||||||
@ -1241,7 +1330,7 @@ void BlocksGraphicsView::onWheel(qreal _scenePos, int _wheelDelta)
|
|||||||
notifyVisibleRegionSizeChange();
|
notifyVisibleRegionSizeChange();
|
||||||
|
|
||||||
// Calculate new offset to simulate QGraphicsView::AnchorUnderMouse scaling behavior
|
// Calculate new offset to simulate QGraphicsView::AnchorUnderMouse scaling behavior
|
||||||
if (m_sceneWidth < m_visibleRegionWidth)
|
if (m_sceneWidth <= m_visibleRegionWidth)
|
||||||
m_offset = 0;
|
m_offset = 0;
|
||||||
else
|
else
|
||||||
m_offset = clamp(0., initialPosition - _scenePos / m_scale, m_sceneWidth - m_visibleRegionWidth);
|
m_offset = clamp(0., initialPosition - _scenePos / m_scale, m_sceneWidth - m_visibleRegionWidth);
|
||||||
|
@ -122,13 +122,14 @@ class BackgroundItem : public AuxItem
|
|||||||
|
|
||||||
QTimer m_idleTimer;
|
QTimer m_idleTimer;
|
||||||
QPainterPath m_bookmarkSign;
|
QPainterPath m_bookmarkSign;
|
||||||
|
QLabel* m_tooltip;
|
||||||
size_t m_bookmark;
|
size_t m_bookmark;
|
||||||
bool m_bButtonPressed;
|
bool m_bButtonPressed;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
explicit BackgroundItem();
|
explicit BackgroundItem();
|
||||||
~BackgroundItem() override {}
|
~BackgroundItem() override;
|
||||||
|
|
||||||
void paint(QPainter* _painter, const QStyleOptionGraphicsItem* _option, QWidget* _widget = nullptr) override;
|
void paint(QPainter* _painter, const QStyleOptionGraphicsItem* _option, QWidget* _widget = nullptr) override;
|
||||||
|
|
||||||
@ -136,6 +137,7 @@ public:
|
|||||||
bool mousePress(const QPointF& scenePos);
|
bool mousePress(const QPointF& scenePos);
|
||||||
bool mouseRelease(const QPointF& scenePos);
|
bool mouseRelease(const QPointF& scenePos);
|
||||||
bool mouseDoubleClick(const QPointF& scenePos);
|
bool mouseDoubleClick(const QPointF& scenePos);
|
||||||
|
void mouseLeave();
|
||||||
|
|
||||||
bool contains(const QPointF& scenePos) const;
|
bool contains(const QPointF& scenePos) const;
|
||||||
|
|
||||||
@ -291,6 +293,8 @@ private:
|
|||||||
void onWheel(qreal _scenePos, int _wheelDelta);
|
void onWheel(qreal _scenePos, int _wheelDelta);
|
||||||
qreal setTree(GraphicsBlockItem* _item, const ::profiler::BlocksTree::children_t& _children, qreal& _height, uint32_t& _maxDepthChild, qreal _y, short _level);
|
qreal setTree(GraphicsBlockItem* _item, const ::profiler::BlocksTree::children_t& _children, qreal& _height, uint32_t& _maxDepthChild, qreal _y, short _level);
|
||||||
|
|
||||||
|
void revalidateOffset();
|
||||||
|
|
||||||
void addSelectionToHierarchy();
|
void addSelectionToHierarchy();
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
|
@ -1211,7 +1211,6 @@ HierarchyWidget::HierarchyWidget(QWidget* _parent) : Parent(_parent)
|
|||||||
{
|
{
|
||||||
loadSettings();
|
loadSettings();
|
||||||
|
|
||||||
m_searchBox->setFixedWidth(300);
|
|
||||||
m_searchBox->setContentsMargins(5, 0, 0, 0);
|
m_searchBox->setContentsMargins(5, 0, 0, 0);
|
||||||
m_searchBox->setClearButtonEnabled(true);
|
m_searchBox->setClearButtonEnabled(true);
|
||||||
m_searchBox->setPlaceholderText("Search by name");
|
m_searchBox->setPlaceholderText("Search by name");
|
||||||
@ -1316,6 +1315,12 @@ void HierarchyWidget::contextMenuEvent(QContextMenuEvent* _event)
|
|||||||
m_tree->contextMenuEvent(_event);
|
m_tree->contextMenuEvent(_event);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void HierarchyWidget::showEvent(QShowEvent* event)
|
||||||
|
{
|
||||||
|
Parent::showEvent(event);
|
||||||
|
m_searchBox->setFixedWidth(px(300));
|
||||||
|
}
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
BlocksTreeWidget* HierarchyWidget::tree()
|
BlocksTreeWidget* HierarchyWidget::tree()
|
||||||
|
@ -196,6 +196,12 @@ public:
|
|||||||
void contextMenuEvent(QContextMenuEvent* _event) override;
|
void contextMenuEvent(QContextMenuEvent* _event) override;
|
||||||
void dragEnterEvent(QDragEnterEvent*) override {}
|
void dragEnterEvent(QDragEnterEvent*) override {}
|
||||||
|
|
||||||
|
protected:
|
||||||
|
|
||||||
|
// Protected virtual methods
|
||||||
|
|
||||||
|
void showEvent(QShowEvent* event) override;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
// Public non-virtual methods
|
// Public non-virtual methods
|
||||||
|
@ -57,6 +57,7 @@
|
|||||||
#include <QHBoxLayout>
|
#include <QHBoxLayout>
|
||||||
#include <QLabel>
|
#include <QLabel>
|
||||||
#include <QPushButton>
|
#include <QPushButton>
|
||||||
|
#include <QSettings>
|
||||||
#include <QStyle>
|
#include <QStyle>
|
||||||
#include <QTextEdit>
|
#include <QTextEdit>
|
||||||
|
|
||||||
@ -68,6 +69,7 @@ BookmarkEditor::BookmarkEditor(size_t bookmarkIndex, bool isNew, QWidget* parent
|
|||||||
, m_isNewBookmark(isNew)
|
, m_isNewBookmark(isNew)
|
||||||
{
|
{
|
||||||
setAttribute(Qt::WA_DeleteOnClose, true);
|
setAttribute(Qt::WA_DeleteOnClose, true);
|
||||||
|
setSizeGripEnabled(EASY_GLOBALS.use_custom_window_header);
|
||||||
setModal(true);
|
setModal(true);
|
||||||
|
|
||||||
const auto& bookmark = EASY_GLOBALS.bookmarks[m_bookmarkIndex];
|
const auto& bookmark = EASY_GLOBALS.bookmarks[m_bookmarkIndex];
|
||||||
@ -94,6 +96,7 @@ BookmarkEditor::BookmarkEditor(size_t bookmarkIndex, bool isNew, QWidget* parent
|
|||||||
|
|
||||||
m_textEdit = new QTextEdit();
|
m_textEdit = new QTextEdit();
|
||||||
m_textEdit->setWordWrapMode(QTextOption::WrapAtWordBoundaryOrAnywhere);
|
m_textEdit->setWordWrapMode(QTextOption::WrapAtWordBoundaryOrAnywhere);
|
||||||
|
m_textEdit->setPlaceholderText(QStringLiteral("Add a description for the bookmark..."));
|
||||||
m_textEdit->setText(QString::fromStdString(bookmark.text));
|
m_textEdit->setText(QString::fromStdString(bookmark.text));
|
||||||
|
|
||||||
m_colorButton = new QPushButton();
|
m_colorButton = new QPushButton();
|
||||||
@ -135,18 +138,20 @@ BookmarkEditor::BookmarkEditor(size_t bookmarkIndex, bool isNew, QWidget* parent
|
|||||||
mainLayout->addWidget(buttonBox, 0, Qt::AlignBottom);
|
mainLayout->addWidget(buttonBox, 0, Qt::AlignBottom);
|
||||||
|
|
||||||
connect(this, &QDialog::rejected, this, &This::onReject);
|
connect(this, &QDialog::rejected, this, &This::onReject);
|
||||||
|
|
||||||
|
loadSettings();
|
||||||
}
|
}
|
||||||
|
|
||||||
BookmarkEditor::~BookmarkEditor()
|
BookmarkEditor::~BookmarkEditor()
|
||||||
{
|
{
|
||||||
|
saveSettings();
|
||||||
}
|
}
|
||||||
|
|
||||||
void BookmarkEditor::onSaveClicked(bool)
|
void BookmarkEditor::onSaveClicked(bool)
|
||||||
{
|
{
|
||||||
auto& bookmark = EASY_GLOBALS.bookmarks[m_bookmarkIndex];
|
auto& bookmark = EASY_GLOBALS.bookmarks[m_bookmarkIndex];
|
||||||
|
|
||||||
bookmark.text = m_textEdit->toPlainText().toStdString();
|
bookmark.text = m_textEdit->toPlainText().trimmed().toStdString();
|
||||||
bookmark.color = m_colorButton->palette().brush(QPalette::Background).color().rgb();
|
bookmark.color = m_colorButton->palette().brush(QPalette::Background).color().rgb();
|
||||||
EASY_GLOBALS.bookmark_default_color = bookmark.color;
|
EASY_GLOBALS.bookmark_default_color = bookmark.color;
|
||||||
EASY_GLOBALS.has_local_changes = true;
|
EASY_GLOBALS.has_local_changes = true;
|
||||||
@ -186,3 +191,23 @@ void BookmarkEditor::onReject()
|
|||||||
emit bookmarkRemoved(m_bookmarkIndex);
|
emit bookmarkRemoved(m_bookmarkIndex);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void BookmarkEditor::loadSettings()
|
||||||
|
{
|
||||||
|
QSettings settings(::profiler_gui::ORGANAZATION_NAME, ::profiler_gui::APPLICATION_NAME);
|
||||||
|
settings.beginGroup("BookmarkEditor");
|
||||||
|
|
||||||
|
auto geometry = settings.value("geometry").toByteArray();
|
||||||
|
if (!geometry.isEmpty())
|
||||||
|
restoreGeometry(geometry);
|
||||||
|
|
||||||
|
settings.endGroup();
|
||||||
|
}
|
||||||
|
|
||||||
|
void BookmarkEditor::saveSettings()
|
||||||
|
{
|
||||||
|
QSettings settings(::profiler_gui::ORGANAZATION_NAME, ::profiler_gui::APPLICATION_NAME);
|
||||||
|
settings.beginGroup("BookmarkEditor");
|
||||||
|
settings.setValue("geometry", saveGeometry());
|
||||||
|
settings.endGroup();
|
||||||
|
}
|
||||||
|
@ -81,6 +81,11 @@ private slots:
|
|||||||
void onColorButtonClicked(bool);
|
void onColorButtonClicked(bool);
|
||||||
void onReject();
|
void onReject();
|
||||||
|
|
||||||
|
private:
|
||||||
|
|
||||||
|
void loadSettings();
|
||||||
|
void saveSettings();
|
||||||
|
|
||||||
}; // class BookmarkEditor.
|
}; // class BookmarkEditor.
|
||||||
|
|
||||||
#endif // EASY_PROFILER_BOOKMARKS_EDITOR_H
|
#endif // EASY_PROFILER_BOOKMARKS_EDITOR_H
|
||||||
|
@ -766,7 +766,6 @@ BlockDescriptorsWidget::BlockDescriptorsWidget(QWidget* _parent) : Parent(_paren
|
|||||||
m_splitter->setStretchFactor(0, 1);
|
m_splitter->setStretchFactor(0, 1);
|
||||||
m_splitter->setStretchFactor(1, 1);
|
m_splitter->setStretchFactor(1, 1);
|
||||||
|
|
||||||
m_searchBox->setFixedWidth(300);
|
|
||||||
m_searchBox->setContentsMargins(5, 0, 0, 0);
|
m_searchBox->setContentsMargins(5, 0, 0, 0);
|
||||||
m_searchBox->setClearButtonEnabled(true);
|
m_searchBox->setClearButtonEnabled(true);
|
||||||
m_searchBox->setPlaceholderText("Search");
|
m_searchBox->setPlaceholderText("Search");
|
||||||
@ -912,6 +911,12 @@ void BlockDescriptorsWidget::contextMenuEvent(QContextMenuEvent* _event)
|
|||||||
m_tree->contextMenuEvent(_event);
|
m_tree->contextMenuEvent(_event);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void BlockDescriptorsWidget::showEvent(QShowEvent* event)
|
||||||
|
{
|
||||||
|
Parent::showEvent(event);
|
||||||
|
m_searchBox->setFixedWidth(px(300));
|
||||||
|
}
|
||||||
|
|
||||||
void BlockDescriptorsWidget::build()
|
void BlockDescriptorsWidget::build()
|
||||||
{
|
{
|
||||||
m_tree->clearSilent(false);
|
m_tree->clearSilent(false);
|
||||||
|
@ -209,6 +209,12 @@ public:
|
|||||||
void keyPressEvent(QKeyEvent* _event) override;
|
void keyPressEvent(QKeyEvent* _event) override;
|
||||||
void contextMenuEvent(QContextMenuEvent* _event) override;
|
void contextMenuEvent(QContextMenuEvent* _event) override;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
|
||||||
|
// Protected virtual methods
|
||||||
|
|
||||||
|
void showEvent(QShowEvent* event) override;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
// Public non-virtual methods
|
// Public non-virtual methods
|
||||||
|
@ -49,16 +49,22 @@
|
|||||||
************************************************************************/
|
************************************************************************/
|
||||||
|
|
||||||
#include "dialog.h"
|
#include "dialog.h"
|
||||||
|
#include "globals.h"
|
||||||
#include "window_header.h"
|
#include "window_header.h"
|
||||||
|
|
||||||
#include <QApplication>
|
#include <QApplication>
|
||||||
|
#include <QDebug>
|
||||||
#include <QHBoxLayout>
|
#include <QHBoxLayout>
|
||||||
#include <QLabel>
|
#include <QLabel>
|
||||||
|
#include <QMouseEvent>
|
||||||
#include <QPixmap>
|
#include <QPixmap>
|
||||||
#include <QPushButton>
|
#include <QPushButton>
|
||||||
#include <QSizePolicy>
|
#include <QSizePolicy>
|
||||||
#include <QStyle>
|
#include <QStyle>
|
||||||
#include <QVBoxLayout>
|
#include <QVBoxLayout>
|
||||||
|
|
||||||
|
#include <easy/utility.h>
|
||||||
|
|
||||||
Dialog::Dialog(QWidget* parent, const QString& title, QWidget* content, WindowHeader::Buttons headerButtons,
|
Dialog::Dialog(QWidget* parent, const QString& title, QWidget* content, WindowHeader::Buttons headerButtons,
|
||||||
QMessageBox::StandardButtons buttons)
|
QMessageBox::StandardButtons buttons)
|
||||||
: QDialog(parent)
|
: QDialog(parent)
|
||||||
@ -67,7 +73,7 @@ Dialog::Dialog(QWidget* parent, const QString& title, QWidget* content, WindowHe
|
|||||||
, m_rejectRoleButton(QMessageBox::NoButton)
|
, m_rejectRoleButton(QMessageBox::NoButton)
|
||||||
, m_acceptRoleButton(QMessageBox::NoButton)
|
, m_acceptRoleButton(QMessageBox::NoButton)
|
||||||
{
|
{
|
||||||
setSizeGripEnabled(true);
|
setSizeGripEnabled(EASY_GLOBALS.use_custom_window_header);
|
||||||
|
|
||||||
m_header = new WindowHeader(title, headerButtons, this);
|
m_header = new WindowHeader(title, headerButtons, this);
|
||||||
|
|
||||||
@ -99,6 +105,7 @@ Dialog::Dialog(QWidget* parent, QMessageBox::Icon icon, const QString& title, co
|
|||||||
setSizeGripEnabled(false);
|
setSizeGripEnabled(false);
|
||||||
setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
|
setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
|
||||||
setFixedSize(sizeHint());
|
setFixedSize(sizeHint());
|
||||||
|
setMouseTracking(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
Dialog::~Dialog()
|
Dialog::~Dialog()
|
||||||
|
@ -61,8 +61,8 @@ class Dialog : public QDialog
|
|||||||
{
|
{
|
||||||
Q_OBJECT;
|
Q_OBJECT;
|
||||||
|
|
||||||
QWidget* m_buttonBox;
|
QWidget* m_buttonBox;
|
||||||
WindowHeader* m_header;
|
WindowHeader* m_header;
|
||||||
QMessageBox::StandardButton m_rejectRoleButton;
|
QMessageBox::StandardButton m_rejectRoleButton;
|
||||||
QMessageBox::StandardButton m_acceptRoleButton;
|
QMessageBox::StandardButton m_acceptRoleButton;
|
||||||
|
|
||||||
|
@ -219,8 +219,8 @@ GraphicsSliderArea::GraphicsSliderArea(QWidget* _parent)
|
|||||||
|
|
||||||
auto globalEvents = &EASY_GLOBALS.events;
|
auto globalEvents = &EASY_GLOBALS.events;
|
||||||
connect(globalEvents, &profiler_gui::GlobalSignals::sceneCleared, this, &This::clear);
|
connect(globalEvents, &profiler_gui::GlobalSignals::sceneCleared, this, &This::clear);
|
||||||
connect(globalEvents, &profiler_gui::GlobalSignals::sceneVisibleRegionSizeChanged, this, &This::setSliderWidth);
|
connect(globalEvents, &profiler_gui::GlobalSignals::sceneVisibleRegionSizeChanged, this, &This::onExternalSliderWidthChanged);
|
||||||
connect(globalEvents, &profiler_gui::GlobalSignals::sceneVisibleRegionPosChanged, this, &This::setValue);
|
connect(globalEvents, &profiler_gui::GlobalSignals::sceneVisibleRegionPosChanged, this, &This::onExternalChartSliderChanged);
|
||||||
connect(globalEvents, &profiler_gui::GlobalSignals::chartSliderChanged, this, &This::onExternalChartSliderChanged);
|
connect(globalEvents, &profiler_gui::GlobalSignals::chartSliderChanged, this, &This::onExternalChartSliderChanged);
|
||||||
connect(globalEvents, &profiler_gui::GlobalSignals::sceneSizeChanged, this, &This::onSceneSizeChanged);
|
connect(globalEvents, &profiler_gui::GlobalSignals::sceneSizeChanged, this, &This::onSceneSizeChanged);
|
||||||
connect(globalEvents, &profiler_gui::GlobalSignals::lockCharts, this, &This::lock);
|
connect(globalEvents, &profiler_gui::GlobalSignals::lockCharts, this, &This::lock);
|
||||||
@ -263,6 +263,15 @@ void GraphicsSliderArea::validateScene()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void GraphicsSliderArea::onExternalSliderWidthChanged(qreal _width)
|
||||||
|
{
|
||||||
|
if (!m_bUpdatingPos)
|
||||||
|
{
|
||||||
|
const profiler_gui::BoolFlagGuard guard(m_bEmitChange, false);
|
||||||
|
setSliderWidth(_width);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void GraphicsSliderArea::onExternalChartSliderChanged(qreal _pos)
|
void GraphicsSliderArea::onExternalChartSliderChanged(qreal _pos)
|
||||||
{
|
{
|
||||||
if (!m_bUpdatingPos)
|
if (!m_bUpdatingPos)
|
||||||
@ -360,7 +369,10 @@ void GraphicsSliderArea::setValue(qreal _value)
|
|||||||
|
|
||||||
const auto newValue = estd::clamp(m_minimumValue, _value, std::max(m_minimumValue, m_maximumValue - m_slider->width()));
|
const auto newValue = estd::clamp(m_minimumValue, _value, std::max(m_minimumValue, m_maximumValue - m_slider->width()));
|
||||||
if (fabs(m_value - newValue) < 2 * std::numeric_limits<decltype(m_value)>::epsilon())
|
if (fabs(m_value - newValue) < 2 * std::numeric_limits<decltype(m_value)>::epsilon())
|
||||||
|
{
|
||||||
|
m_slider->setX(m_value + m_slider->halfwidth());
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
m_value = newValue;
|
m_value = newValue;
|
||||||
m_slider->setX(m_value + m_slider->halfwidth());
|
m_slider->setX(m_value + m_slider->halfwidth());
|
||||||
|
@ -164,6 +164,7 @@ public slots:
|
|||||||
|
|
||||||
protected slots:
|
protected slots:
|
||||||
|
|
||||||
|
void onExternalSliderWidthChanged(qreal _width);
|
||||||
void onExternalChartSliderChanged(qreal _pos);
|
void onExternalChartSliderChanged(qreal _pos);
|
||||||
void onSceneSizeChanged(qreal _left, qreal _right);
|
void onSceneSizeChanged(qreal _left, qreal _right);
|
||||||
void onWindowWidthChange(qreal _width);
|
void onWindowWidthChange(qreal _width);
|
||||||
|
@ -267,7 +267,7 @@ void MainWindow::configureSizes()
|
|||||||
size.graphics_row_spacing = 0;
|
size.graphics_row_spacing = 0;
|
||||||
size.graphics_row_full = size.graphics_row_height;
|
size.graphics_row_full = size.graphics_row_height;
|
||||||
size.threads_row_spacing = size.graphics_row_full >> 1;
|
size.threads_row_spacing = size.graphics_row_full >> 1;
|
||||||
size.timeline_height = size.font_height + px(9);
|
size.timeline_height = size.font_height + px(10);
|
||||||
size.icon_size = size.font_height + px(11);
|
size.icon_size = size.font_height + px(11);
|
||||||
|
|
||||||
const auto fontFamily = w.font().family();
|
const auto fontFamily = w.font().family();
|
||||||
@ -288,6 +288,7 @@ void MainWindow::configureSizes()
|
|||||||
updateFont(fonts.selected_item);
|
updateFont(fonts.selected_item);
|
||||||
fonts.ruler.setFamily(fontFamily);
|
fonts.ruler.setFamily(fontFamily);
|
||||||
|
|
||||||
|
/*
|
||||||
printf("Viewport info:\n");
|
printf("Viewport info:\n");
|
||||||
printf("- device pixel ratio = %f\n", size.pixelRatio);
|
printf("- device pixel ratio = %f\n", size.pixelRatio);
|
||||||
printf("- font height = %dpx\n", size.font_height);
|
printf("- font height = %dpx\n", size.font_height);
|
||||||
@ -295,6 +296,7 @@ void MainWindow::configureSizes()
|
|||||||
printf("- diagram row = %dpx\n", size.graphics_row_height);
|
printf("- diagram row = %dpx\n", size.graphics_row_height);
|
||||||
printf("- diagram spacing = %dpx\n", size.threads_row_spacing);
|
printf("- diagram spacing = %dpx\n", size.threads_row_spacing);
|
||||||
printf("- icon size = %dx%d px\n", size.icon_size, size.icon_size);
|
printf("- icon size = %dx%d px\n", size.icon_size, size.icon_size);
|
||||||
|
*/
|
||||||
|
|
||||||
w.hide();
|
w.hide();
|
||||||
}
|
}
|
||||||
@ -634,8 +636,8 @@ MainWindow::MainWindow() : Parent(), m_theme("default"), m_lastAddress("localhos
|
|||||||
auto spinbox = new QSpinBox(w);
|
auto spinbox = new QSpinBox(w);
|
||||||
spinbox->setRange(0, 400);
|
spinbox->setRange(0, 400);
|
||||||
spinbox->setValue(EASY_GLOBALS.blocks_spacing);
|
spinbox->setValue(EASY_GLOBALS.blocks_spacing);
|
||||||
spinbox->setFixedWidth(70);
|
spinbox->setFixedWidth(px(70));
|
||||||
connect(spinbox, SIGNAL(valueChanged(int)), this, SLOT(onSpacingChange(int)));
|
connect(spinbox, Overload<int>::of(&QSpinBox::valueChanged), this, &This::onSpacingChange);
|
||||||
l->addWidget(spinbox);
|
l->addWidget(spinbox);
|
||||||
w->setLayout(l);
|
w->setLayout(l);
|
||||||
auto waction = new QWidgetAction(submenu);
|
auto waction = new QWidgetAction(submenu);
|
||||||
@ -649,8 +651,8 @@ MainWindow::MainWindow() : Parent(), m_theme("default"), m_lastAddress("localhos
|
|||||||
spinbox = new QSpinBox(w);
|
spinbox = new QSpinBox(w);
|
||||||
spinbox->setRange(1, 400);
|
spinbox->setRange(1, 400);
|
||||||
spinbox->setValue(EASY_GLOBALS.blocks_size_min);
|
spinbox->setValue(EASY_GLOBALS.blocks_size_min);
|
||||||
spinbox->setFixedWidth(70);
|
spinbox->setFixedWidth(px(70));
|
||||||
connect(spinbox, SIGNAL(valueChanged(int)), this, SLOT(onMinSizeChange(int)));
|
connect(spinbox, Overload<int>::of(&QSpinBox::valueChanged), this, &This::onMinSizeChange);
|
||||||
l->addWidget(spinbox);
|
l->addWidget(spinbox);
|
||||||
w->setLayout(l);
|
w->setLayout(l);
|
||||||
waction = new QWidgetAction(submenu);
|
waction = new QWidgetAction(submenu);
|
||||||
@ -664,8 +666,8 @@ MainWindow::MainWindow() : Parent(), m_theme("default"), m_lastAddress("localhos
|
|||||||
spinbox = new QSpinBox(w);
|
spinbox = new QSpinBox(w);
|
||||||
spinbox->setRange(1, 400);
|
spinbox->setRange(1, 400);
|
||||||
spinbox->setValue(EASY_GLOBALS.blocks_narrow_size);
|
spinbox->setValue(EASY_GLOBALS.blocks_narrow_size);
|
||||||
spinbox->setFixedWidth(70);
|
spinbox->setFixedWidth(px(70));
|
||||||
connect(spinbox, SIGNAL(valueChanged(int)), this, SLOT(onNarrowSizeChange(int)));
|
connect(spinbox, Overload<int>::of(&QSpinBox::valueChanged), this, &This::onNarrowSizeChange);
|
||||||
l->addWidget(spinbox);
|
l->addWidget(spinbox);
|
||||||
w->setLayout(l);
|
w->setLayout(l);
|
||||||
waction = new QWidgetAction(submenu);
|
waction = new QWidgetAction(submenu);
|
||||||
@ -683,8 +685,8 @@ MainWindow::MainWindow() : Parent(), m_theme("default"), m_lastAddress("localhos
|
|||||||
spinbox = new QSpinBox(w);
|
spinbox = new QSpinBox(w);
|
||||||
spinbox->setRange(1, 600000);
|
spinbox->setRange(1, 600000);
|
||||||
spinbox->setValue(EASY_GLOBALS.fps_timer_interval);
|
spinbox->setValue(EASY_GLOBALS.fps_timer_interval);
|
||||||
spinbox->setFixedWidth(70);
|
spinbox->setFixedWidth(px(70));
|
||||||
connect(spinbox, SIGNAL(valueChanged(int)), this, SLOT(onFpsIntervalChange(int)));
|
connect(spinbox, Overload<int>::of(&QSpinBox::valueChanged), this, &This::onFpsIntervalChange);
|
||||||
l->addWidget(spinbox);
|
l->addWidget(spinbox);
|
||||||
w->setLayout(l);
|
w->setLayout(l);
|
||||||
waction = new QWidgetAction(submenu);
|
waction = new QWidgetAction(submenu);
|
||||||
@ -698,8 +700,8 @@ MainWindow::MainWindow() : Parent(), m_theme("default"), m_lastAddress("localhos
|
|||||||
spinbox = new QSpinBox(w);
|
spinbox = new QSpinBox(w);
|
||||||
spinbox->setRange(2, 200);
|
spinbox->setRange(2, 200);
|
||||||
spinbox->setValue(EASY_GLOBALS.max_fps_history);
|
spinbox->setValue(EASY_GLOBALS.max_fps_history);
|
||||||
spinbox->setFixedWidth(70);
|
spinbox->setFixedWidth(px(70));
|
||||||
connect(spinbox, SIGNAL(valueChanged(int)), this, SLOT(onFpsHistoryChange(int)));
|
connect(spinbox, Overload<int>::of(&QSpinBox::valueChanged), this, &This::onFpsHistoryChange);
|
||||||
l->addWidget(spinbox);
|
l->addWidget(spinbox);
|
||||||
w->setLayout(l);
|
w->setLayout(l);
|
||||||
waction = new QWidgetAction(submenu);
|
waction = new QWidgetAction(submenu);
|
||||||
@ -713,8 +715,8 @@ MainWindow::MainWindow() : Parent(), m_theme("default"), m_lastAddress("localhos
|
|||||||
spinbox = new QSpinBox(w);
|
spinbox = new QSpinBox(w);
|
||||||
spinbox->setRange(1, 6);
|
spinbox->setRange(1, 6);
|
||||||
spinbox->setValue(EASY_GLOBALS.fps_widget_line_width);
|
spinbox->setValue(EASY_GLOBALS.fps_widget_line_width);
|
||||||
spinbox->setFixedWidth(70);
|
spinbox->setFixedWidth(px(70));
|
||||||
connect(spinbox, SIGNAL(valueChanged(int)), this, SLOT(onFpsMonitorLineWidthChange(int)));
|
connect(spinbox, Overload<int>::of(&QSpinBox::valueChanged), this, &This::onFpsMonitorLineWidthChange);
|
||||||
l->addWidget(spinbox);
|
l->addWidget(spinbox);
|
||||||
w->setLayout(l);
|
w->setLayout(l);
|
||||||
waction = new QWidgetAction(submenu);
|
waction = new QWidgetAction(submenu);
|
||||||
@ -864,7 +866,7 @@ MainWindow::MainWindow() : Parent(), m_theme("default"), m_lastAddress("localhos
|
|||||||
toolbar->addWidget(lbl);
|
toolbar->addWidget(lbl);
|
||||||
|
|
||||||
m_frameTimeEdit = new QLineEdit();
|
m_frameTimeEdit = new QLineEdit();
|
||||||
m_frameTimeEdit->setFixedWidth(70);
|
m_frameTimeEdit->setFixedWidth(px(70));
|
||||||
auto val = new QDoubleValidator(m_frameTimeEdit);
|
auto val = new QDoubleValidator(m_frameTimeEdit);
|
||||||
val->setLocale(QLocale::c());
|
val->setLocale(QLocale::c());
|
||||||
val->setBottom(0);
|
val->setBottom(0);
|
||||||
@ -1796,7 +1798,7 @@ void MainWindow::createProgressDialog(const QString& text)
|
|||||||
m_progress = new QProgressDialog(text, QStringLiteral("Cancel"), 0, 100, this);
|
m_progress = new QProgressDialog(text, QStringLiteral("Cancel"), 0, 100, this);
|
||||||
connect(m_progress, &QProgressDialog::canceled, this, &This::onFileReaderCancel);
|
connect(m_progress, &QProgressDialog::canceled, this, &This::onFileReaderCancel);
|
||||||
|
|
||||||
m_progress->setFixedWidth(300);
|
m_progress->setFixedWidth(px(300));
|
||||||
m_progress->setWindowTitle(EASY_DEFAULT_WINDOW_TITLE);
|
m_progress->setWindowTitle(EASY_DEFAULT_WINDOW_TITLE);
|
||||||
m_progress->setModal(true);
|
m_progress->setModal(true);
|
||||||
m_progress->setValue(0);
|
m_progress->setValue(0);
|
||||||
@ -2126,7 +2128,8 @@ void MainWindow::onSavingFinish()
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
EASY_GLOBALS.has_local_changes = false;
|
if (!m_reader.isSnapshot())
|
||||||
|
EASY_GLOBALS.has_local_changes = false;
|
||||||
addFileToList(m_reader.filename(), !m_reader.isSnapshot());
|
addFileToList(m_reader.filename(), !m_reader.isSnapshot());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -46,10 +46,13 @@ ArbitraryValueToolTip {
|
|||||||
selection-color: white;
|
selection-color: white;
|
||||||
selection-background-color: #3297FD; }
|
selection-background-color: #3297FD; }
|
||||||
|
|
||||||
QWidget#DiagramPopup, QWidget#ThreadsPopup {
|
QWidget#DiagramPopup, QWidget#ThreadsPopup, QLabel#BookmarkPopup {
|
||||||
background-color: #ffeccc;
|
background-color: #ffeccc;
|
||||||
border: 1px solid #c4c4c4; }
|
border: 1px solid #c4c4c4; }
|
||||||
|
|
||||||
|
QLabel#BookmarkPopup {
|
||||||
|
padding: 4ex; }
|
||||||
|
|
||||||
QGraphicsView {
|
QGraphicsView {
|
||||||
border: 1px solid #c4c4c4; }
|
border: 1px solid #c4c4c4; }
|
||||||
|
|
||||||
@ -241,7 +244,7 @@ QMenu {
|
|||||||
|
|
||||||
QMenu::item {
|
QMenu::item {
|
||||||
height: 15ex;
|
height: 15ex;
|
||||||
padding-left: 15ex;
|
padding-left: 17ex;
|
||||||
padding-right: 5ex;
|
padding-right: 5ex;
|
||||||
border: 1px solid transparent;
|
border: 1px solid transparent;
|
||||||
/* reserve space for selection border */ }
|
/* reserve space for selection border */ }
|
||||||
|
@ -99,11 +99,15 @@ ArbitraryValueToolTip {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
QWidget#DiagramPopup, QWidget#ThreadsPopup {
|
QWidget#DiagramPopup, QWidget#ThreadsPopup, QLabel#BookmarkPopup {
|
||||||
background-color: $TooltipColor;
|
background-color: $TooltipColor;
|
||||||
border: 1px solid $BorderColor;
|
border: 1px solid $BorderColor;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QLabel#BookmarkPopup {
|
||||||
|
padding: 4ex;
|
||||||
|
}
|
||||||
|
|
||||||
QGraphicsView {
|
QGraphicsView {
|
||||||
border: 1px solid $BorderColor;
|
border: 1px solid $BorderColor;
|
||||||
}
|
}
|
||||||
@ -335,7 +339,7 @@ QMenu {
|
|||||||
|
|
||||||
QMenu::item {
|
QMenu::item {
|
||||||
height: $InputHeight;
|
height: $InputHeight;
|
||||||
padding-left: $InputHeight;
|
padding-left: 17ex;
|
||||||
padding-right: 5ex;
|
padding-right: 5ex;
|
||||||
border: 1px solid transparent; /* reserve space for selection border */
|
border: 1px solid transparent; /* reserve space for selection border */
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user