Changeset 70574 in vbox
- Timestamp:
- Jan 13, 2018 1:18:15 PM (7 years ago)
- svn:sync-xref-src-repo-rev:
- 120261
- Location:
- trunk/src/VBox/Frontends/VirtualBox/src/logviewer
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Frontends/VirtualBox/src/logviewer/UIVMLogPage.cpp
r70559 r70574 82 82 m_pMainLayout->addWidget(m_pTextEdit); 83 83 84 connect(qobject_cast<UIVMLogViewerTextEdit*>(m_pTextEdit), &UIVMLogViewerTextEdit::sig ContextMenuBookmarkAction,84 connect(qobject_cast<UIVMLogViewerTextEdit*>(m_pTextEdit), &UIVMLogViewerTextEdit::sigAddBookmark, 85 85 this, &UIVMLogPage::sltAddBookmark); 86 connect(qobject_cast<UIVMLogViewerTextEdit*>(m_pTextEdit), &UIVMLogViewerTextEdit::sigDeleteBookmark, 87 this, &UIVMLogPage::sltDeleteBookmark); 86 88 } 87 89 … … 186 188 } 187 189 190 void UIVMLogPage::deleteBookmark(LogBookmark bookmark) 191 { 192 int index = -1; 193 for(int i = 0; i < m_bookmarkVector.size(); ++i) 194 { 195 if(m_bookmarkVector.at(i).first) 196 { 197 index = i; 198 break; 199 } 200 } 201 if(index != -1) 202 deleteBookmark(index); 203 } 204 205 188 206 void UIVMLogPage::deleteAllBookmarks() 189 207 { … … 211 229 { 212 230 m_bookmarkVector.push_back(bookmark); 231 updateTextEditBookmarkLineSet(); 232 emit sigBookmarksUpdated(); 233 } 234 235 void UIVMLogPage::sltDeleteBookmark(LogBookmark bookmark) 236 { 237 deleteBookmark(bookmark); 213 238 updateTextEditBookmarkLineSet(); 214 239 emit sigBookmarksUpdated(); -
trunk/src/VBox/Frontends/VirtualBox/src/logviewer/UIVMLogPage.h
r70559 r70574 82 82 83 83 void deleteBookmark(int index); 84 void deleteBookmark(LogBookmark bookmark); 84 85 85 86 const QVector<LogBookmark>& bookmarkVector() const; … … 93 94 94 95 void sltAddBookmark(LogBookmark bookmark); 96 void sltDeleteBookmark(LogBookmark bookmark); 95 97 96 98 private: -
trunk/src/VBox/Frontends/VirtualBox/src/logviewer/UIVMLogViewerTextEdit.cpp
r70559 r70574 113 113 UILineNumberArea(UIVMLogViewerTextEdit *textEdit) 114 114 :QWidget(textEdit) 115 , m_pTextEdit(textEdit){} 115 , m_pTextEdit(textEdit) 116 { 117 setMouseTracking(true); 118 } 116 119 117 120 QSize sizeHint() const 118 121 { 122 if(!m_pTextEdit) 123 return QSize(); 119 124 return QSize(m_pTextEdit->lineNumberAreaWidth(), 0); 120 125 } … … 124 129 void paintEvent(QPaintEvent *event) 125 130 { 126 m_pTextEdit->lineNumberAreaPaintEvent(event); 131 if(m_pTextEdit) 132 m_pTextEdit->lineNumberAreaPaintEvent(event); 133 } 134 135 void mouseMoveEvent(QMouseEvent *pEvent) 136 { 137 m_pTextEdit->setMouseCursorLine(m_pTextEdit->lineNumberForPos(pEvent->pos())); 138 repaint(); 139 } 140 141 void mousePressEvent(QMouseEvent *pEvent) 142 { 143 m_pTextEdit->toggleBookmark(m_pTextEdit->bookmarkForPos(pEvent->pos())); 127 144 } 128 145 … … 135 152 :QPlainTextEdit(parent) 136 153 , m_pLineNumberArea(0) 137 { 138 154 , m_mouseCursorLine(-1) 155 { 156 setMouseTracking(true); 139 157 //setStyleSheet("background-color: rgba(240, 240, 240, 75%) "); 140 158 prepare(); … … 203 221 if (m_bookmarkLineSet.contains(blockNumber + 1)) 204 222 { 205 painter.setBackgroundMode(Qt::OpaqueMode); 206 painter.setBackground(QBrush(Qt::red)); 223 QPainterPath path; 224 path.addRect(0, top, m_pLineNumberArea->width(), m_pLineNumberArea->fontMetrics().lineSpacing()); 225 painter.fillPath(path, QColor(204, 255, 51, 125)); 226 painter.drawPath(path); 207 227 } 208 else228 if((blockNumber + 1) == m_mouseCursorLine) 209 229 { 210 painter.setBackgroundMode(Qt::TransparentMode); 230 painter.setPen(Qt::red); 231 painter.drawRect(0, top, m_pLineNumberArea->width(), m_pLineNumberArea->fontMetrics().lineSpacing()); 211 232 } 233 212 234 painter.setPen(Qt::black); 213 235 painter.drawText(0, top, m_pLineNumberArea->width(), m_pLineNumberArea->fontMetrics().lineSpacing(), … … 225 247 QMenu *menu = createStandardContextMenu(); 226 248 QAction *pAction = menu->addAction(tr("Bookmark")); 227 QTextBlock block = cursorForPosition(pEvent->pos()).block(); 228 m_iContextMenuBookmark.first = block.firstLineNumber(); 229 m_iContextMenuBookmark.second = block.text(); 230 249 m_iContextMenuBookmark = bookmarkForPos(pEvent->pos()); 231 250 if (pAction) 232 251 connect(pAction, &QAction::triggered, this, &UIVMLogViewerTextEdit::sltBookmark); … … 246 265 QRect cr = contentsRect(); 247 266 m_pLineNumberArea->setGeometry(QRect(cr.left(), cr.top(), lineNumberAreaWidth(), cr.height())); 267 } 268 269 void UIVMLogViewerTextEdit::mouseMoveEvent(QMouseEvent *pEvent) 270 { 271 setMouseCursorLine(lineNumberForPos(pEvent->pos())); 272 m_pLineNumberArea->repaint(); 248 273 } 249 274 … … 267 292 void UIVMLogViewerTextEdit::sltBookmark() 268 293 { 269 emit sig ContextMenuBookmarkAction(m_iContextMenuBookmark);294 emit sigAddBookmark(m_iContextMenuBookmark); 270 295 } 271 296 … … 315 340 } 316 341 342 int UIVMLogViewerTextEdit::lineNumberForPos(const QPoint &position) 343 { 344 QTextBlock block = cursorForPosition(position).block(); 345 return block.firstLineNumber() + 1; 346 } 347 348 QPair<int, QString> UIVMLogViewerTextEdit::bookmarkForPos(const QPoint &position) 349 { 350 QTextBlock block = cursorForPosition(position).block(); 351 return QPair<int, QString>(block.firstLineNumber() + 1, block.text()); 352 } 353 354 void UIVMLogViewerTextEdit::setMouseCursorLine(int lineNumber) 355 { 356 m_mouseCursorLine = lineNumber; 357 } 358 359 void UIVMLogViewerTextEdit::toggleBookmark(const QPair<int, QString>& bookmark) 360 { 361 int lineNumber = bookmark.first; 362 363 if(m_bookmarkLineSet.contains(lineNumber)) 364 emit sigDeleteBookmark(bookmark); 365 else 366 emit sigAddBookmark(bookmark); 367 } 368 317 369 #include "UIVMLogViewerTextEdit.moc" -
trunk/src/VBox/Frontends/VirtualBox/src/logviewer/UIVMLogViewerTextEdit.h
r70559 r70574 32 32 signals: 33 33 34 void sigContextMenuBookmarkAction(QPair<int, QString> bookmark); 34 void sigAddBookmark(QPair<int, QString> bookmark); 35 void sigDeleteBookmark(QPair<int, QString> bookmark); 35 36 36 37 public: … … 50 51 protected: 51 52 52 void contextMenuEvent(QContextMenuEvent *pEvent); 53 void resizeEvent(QResizeEvent *pEvent); 53 void contextMenuEvent(QContextMenuEvent *pEvent) /* override */; 54 void resizeEvent(QResizeEvent *pEvent) /* override */; 55 void mouseMoveEvent(QMouseEvent *pEvent) /* override */; 54 56 55 57 private slots: … … 64 66 void prepare(); 65 67 void prepareWidgets(); 66 67 /* Line number and text at the context menu position */ 68 QPair<int, QString> bookmarkForPos(const QPoint &position); 69 int lineNumberForPos(const QPoint &position); 70 void setMouseCursorLine(int lineNumber); 71 /** If bookmark exists this function removes it, if not it adds the bookmark. */ 72 void toggleBookmark(const QPair<int, QString>& bookmark); 73 /** Line number and text at the context menu position */ 68 74 QPair<int, QString> m_iContextMenuBookmark; 69 75 QWidget *m_pLineNumberArea; 76 /** Set of bookmarked lines. This set is updated from UIVMLogPage. This set is 77 used only for lookup in this class. */ 70 78 QSet<int> m_bookmarkLineSet; 79 /** Number of the line under the mouse cursor. */ 80 int m_mouseCursorLine; 81 82 friend class UILineNumberArea; 71 83 }; 72 84
Note:
See TracChangeset
for help on using the changeset viewer.