VirtualBox

Changeset 70581 in vbox


Ignore:
Timestamp:
Jan 14, 2018 8:54:55 PM (7 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
120269
Message:

FE/Qt bugref:9072: Adding setting panel to the logviewer

Location:
trunk/src/VBox/Frontends/VirtualBox
Files:
11 edited
2 copied

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Frontends/VirtualBox/Makefile.kmk

    r70554 r70581  
    341341        src/logviewer/UIVMLogViewerPanel.h \
    342342        src/logviewer/UIVMLogViewerSearchPanel.h \
     343        src/logviewer/UIVMLogViewerSettingsPanel.h \
    343344        src/logviewer/UIVMLogViewerTextEdit.h \
    344345        src/logviewer/UIVMLogViewerWidget.h \
     
    661662        src/logviewer/UIVMLogViewerPanel.cpp \
    662663        src/logviewer/UIVMLogViewerSearchPanel.cpp \
     664        src/logviewer/UIVMLogViewerSettingsPanel.cpp \
    663665        src/logviewer/UIVMLogViewerTextEdit.cpp \
    664666        src/logviewer/UIVMLogViewerWidget.cpp \
  • trunk/src/VBox/Frontends/VirtualBox/src/logviewer/UIVMLogPage.cpp

    r70578 r70581  
    4444    , m_tabIndex(tabIndex)
    4545    , m_bFiltered(false)
     46    , m_bShowLineNumbers(true)
     47    , m_bWrapLines(false)
    4648{
    4749    prepare();
     
    192194{
    193195    int index = -1;
    194     for(int i = 0; i < m_bookmarkVector.size(); ++i)
     196    for (int i = 0; i < m_bookmarkVector.size(); ++i)
    195197    {
    196         if(m_bookmarkVector.at(i).first == bookmark.first)
     198        if (m_bookmarkVector.at(i).first == bookmark.first)
    197199        {
    198200            index = i;
     
    200202        }
    201203    }
    202     if(index != -1)
     204    if (index != -1)
    203205        deleteBookmark(index);
    204206}
     
    213215void UIVMLogPage::scrollToBookmark(int bookmarkIndex)
    214216{
    215     if(!m_pTextEdit)
     217    if (!m_pTextEdit)
    216218        return;
    217219    if (bookmarkIndex >= m_bookmarkVector.size())
     
    243245void UIVMLogPage::updateTextEditBookmarkLineSet()
    244246{
    245     if(!m_pTextEdit)
     247    if (!m_pTextEdit)
    246248        return;
    247249    QSet<int> bookmarkLinesSet;
    248     for(int i = 0; i < m_bookmarkVector.size(); ++i)
     250    for (int i = 0; i < m_bookmarkVector.size(); ++i)
    249251    {
    250252        bookmarkLinesSet.insert(m_bookmarkVector.at(i).first);
     
    260262void UIVMLogPage::setFiltered(bool filtered)
    261263{
    262     if(m_bFiltered == filtered)
     264    if (m_bFiltered == filtered)
    263265        return;
    264266    m_bFiltered = filtered;
    265     if(m_pTextEdit)
     267    if (m_pTextEdit)
    266268    {
    267269        m_pTextEdit->setShownTextIsFiltered(m_bFiltered);
     
    270272    emit sigLogPageFilteredChanged(m_bFiltered);
    271273}
     274
     275void UIVMLogPage::setShowLineNumbers(bool bShowLineNumbers)
     276{
     277    if(m_bShowLineNumbers == bShowLineNumbers)
     278        return;
     279    m_bShowLineNumbers = bShowLineNumbers;
     280    if(m_pTextEdit)
     281        m_pTextEdit->setShowLineNumbers(m_bShowLineNumbers);
     282    update();
     283}
     284
     285void UIVMLogPage::setWrapLines(bool bWrapLines)
     286{
     287    if(m_bWrapLines == bWrapLines)
     288        return;
     289    m_bWrapLines = bWrapLines;
     290    if(m_pTextEdit)
     291        m_pTextEdit->setWrapLines(m_bWrapLines);
     292    update();
     293}
  • trunk/src/VBox/Frontends/VirtualBox/src/logviewer/UIVMLogPage.h

    r70578 r70581  
    9292    void setFiltered(bool filtered);
    9393
     94    void setShowLineNumbers(bool bShowLineNumbers);
     95    void setWrapLines(bool bWrapLines);
     96
    9497private slots:
    9598
     
    119122        if m_bFiltered is false than (m_strLog == m_pTextEdit->text()). */
    120123    bool m_bFiltered;
     124    bool m_bShowLineNumbers;
     125    bool m_bWrapLines;
    121126};
    122127
  • trunk/src/VBox/Frontends/VirtualBox/src/logviewer/UIVMLogViewerBookmarksPanel.cpp

    r70549 r70581  
    2828# include <QLabel>
    2929# include <QPushButton>
    30 # include <QSpacerItem>
     30
    3131/* GUI includes: */
    3232# include "QIToolButton.h"
     
    4343    , m_pDeleteAllButton(0)
    4444    , m_pDeleteCurrentButton(0)
    45     , m_pSpacerItem(0)
    4645{
    4746    prepare();
     
    5655    QStringList bList;
    5756    bList << "Bookmarks List";
    58     for(int i = 0; i < bookmarkVector.size(); ++i)
     57    for (int i = 0; i < bookmarkVector.size(); ++i)
    5958    {
    6059        QString strItem = QString("BookMark %1 at Line %2: %3").arg(QString::number(i)).
     
    113112    mainLayout()->addWidget(m_pDeleteAllButton, 0);
    114113
    115 
    116     m_pSpacerItem = new QSpacerItem(0, 0, QSizePolicy::Expanding, QSizePolicy::Minimum);
    117     AssertPtrReturnVoid(m_pSpacerItem);
    118     mainLayout()->addItem(m_pSpacerItem);
     114    mainLayout()->addStretch(4);
    119115}
    120116
  • trunk/src/VBox/Frontends/VirtualBox/src/logviewer/UIVMLogViewerBookmarksPanel.h

    r70549 r70581  
    2525class QComboBox;
    2626class QPushButton;
    27 class QSpacerItem;
    2827class QIToolButton;
    2928
     
    7675    QPushButton  *m_pDeleteAllButton;
    7776    QIToolButton *m_pDeleteCurrentButton;
    78     QSpacerItem  *m_pSpacerItem;
    7977};
    8078
  • trunk/src/VBox/Frontends/VirtualBox/src/logviewer/UIVMLogViewerSearchPanel.cpp

    r70539 r70581  
    5252    , m_pMatchWholeWordCheckBox(0)
    5353    , m_pHighlightAllCheckBox(0)
    54     , m_pWarningSpacer(0), m_pWarningIcon(0), m_pInfoLabel(0)
     54    , m_pWarningIcon(0)
     55    , m_pInfoLabel(0)
    5556    , m_iSearchPosition(0)
    5657    , m_iMatchCount(-1)
     
    270271    }
    271272
    272     /* Create warning-spacer: */
    273     m_pWarningSpacer = new QSpacerItem(0, 0, QSizePolicy::Fixed, QSizePolicy::Minimum);
    274     AssertPtrReturnVoid(m_pWarningSpacer);
    275     {
    276         /* Add warning-spacer to main-layout: */
    277         mainLayout()->addItem(m_pWarningSpacer);
    278     }
    279 
    280273    /* Create warning-icon: */
    281274    m_pWarningIcon = new QLabel(this);
     
    306299        mainLayout()->addWidget(m_pInfoLabel);
    307300    }
    308 
    309     m_pSpacerItem = new QSpacerItem(0, 0, QSizePolicy::Expanding, QSizePolicy::Minimum);
    310     AssertPtrReturnVoid(m_pSpacerItem);
    311     {
    312         mainLayout()->addItem(m_pSpacerItem);
    313     }
     301    mainLayout()->addStretch(2);
    314302}
    315303
  • trunk/src/VBox/Frontends/VirtualBox/src/logviewer/UIVMLogViewerSearchPanel.h

    r70539 r70581  
    2929class QHBoxLayout;
    3030class QLabel;
    31 class QSpacerItem;
    3231class UIMiniCancelButton;
    3332class UIRoundRectSegmentedButton;
     
    118117    QCheckBox   *m_pMatchWholeWordCheckBox;
    119118    QCheckBox   *m_pHighlightAllCheckBox;
    120     /** Holds the instance of warning spacer-item we create. */
    121     QSpacerItem *m_pWarningSpacer;
     119
    122120    /** Holds the instance of warning icon we create. */
    123121    QLabel      *m_pWarningIcon;
    124122    /** Holds the instance of info label we create. */
    125123    QLabel      *m_pInfoLabel;
    126     /** Holds the instance of spacer item we create. */
    127     QSpacerItem *m_pSpacerItem;
     124
    128125    /** Holds the position where we start the next search. */
    129126    int          m_iSearchPosition;
  • trunk/src/VBox/Frontends/VirtualBox/src/logviewer/UIVMLogViewerSettingsPanel.cpp

    r70578 r70581  
    2626#  include <QFontDatabase>
    2727# endif
    28 # include <QLabel>
    29 # include <QPushButton>
    30 # include <QSpacerItem>
     28# include <QCheckBox>
     29
    3130/* GUI includes: */
    3231# include "QIToolButton.h"
    33 # include "UIVMLogViewerBookmarksPanel.h"
     32# include "UIVMLogViewerSettingsPanel.h"
    3433# include "UIVMLogViewerWidget.h"
    3534
     
    3736
    3837
    39 UIVMLogViewerBookmarksPanel::UIVMLogViewerBookmarksPanel(QWidget *pParent, UIVMLogViewerWidget *pViewer)
    40 : UIVMLogViewerPanel(pParent, pViewer)
    41     , m_iMaxBookmarkTextLength(60)
    42     , m_pBookmarksComboBox(0)
    43     , m_pDeleteAllButton(0)
    44     , m_pDeleteCurrentButton(0)
    45     , m_pSpacerItem(0)
     38UIVMLogViewerSettingsPanel::UIVMLogViewerSettingsPanel(QWidget *pParent, UIVMLogViewerWidget *pViewer)
     39    : UIVMLogViewerPanel(pParent, pViewer)
     40    , m_pLineNumberCheckBox(0)
     41    , m_pWrapLinesCheckBox(0)
    4642{
    4743    prepare();
    4844}
    4945
    50 void UIVMLogViewerBookmarksPanel::updateBookmarkList(const QVector<QPair<int, QString> > &bookmarkVector)
     46void UIVMLogViewerSettingsPanel::setShowLineNumbers(bool bShowLineNumbers)
    5147{
    52     if (!m_pBookmarksComboBox || !viewer())
     48    if(!m_pLineNumberCheckBox)
    5349        return;
    54 
    55     m_pBookmarksComboBox->clear();
    56     QStringList bList;
    57     bList << "Bookmarks List";
    58     for(int i = 0; i < bookmarkVector.size(); ++i)
    59     {
    60         QString strItem = QString("BookMark %1 at Line %2: %3").arg(QString::number(i)).
    61             arg(QString::number(bookmarkVector.at(i).first)).arg(bookmarkVector.at(i).second);
    62 
    63         if (strItem.length() > m_iMaxBookmarkTextLength)
    64         {
    65             strItem.resize(m_iMaxBookmarkTextLength);
    66             strItem.replace(m_iMaxBookmarkTextLength, 3, QString("..."));
    67         }
    68         bList << strItem;
    69     }
    70     m_pBookmarksComboBox->addItems(bList);
    71     /* Goto last item of the combobox: */
    72     m_pBookmarksComboBox->setCurrentIndex(m_pBookmarksComboBox->count()-1);
     50    if(m_pLineNumberCheckBox->isChecked() == bShowLineNumbers)
     51        return;
     52    m_pLineNumberCheckBox->setChecked(bShowLineNumbers);
    7353}
    7454
    75 void UIVMLogViewerBookmarksPanel::setBookmarkIndex(int index)
     55void UIVMLogViewerSettingsPanel::setWrapLines(bool bWrapLines)
    7656{
    77     if (!m_pBookmarksComboBox)
     57    if(!m_pWrapLinesCheckBox)
    7858        return;
    79     /* If there is only Title of the combo, then goto that item: */
    80     if (m_pBookmarksComboBox->count() == 1 || index >= m_pBookmarksComboBox->count())
    81     {
    82         m_pBookmarksComboBox->setCurrentIndex(0);
     59    if(m_pWrapLinesCheckBox->isChecked() == bWrapLines)
    8360        return;
    84     }
    85     /* index+1 since we always have a 0th item in our combo box. */
    86     m_pBookmarksComboBox->setCurrentIndex(index+1);
     61    m_pWrapLinesCheckBox->setChecked(bWrapLines);
    8762}
    8863
    89 void UIVMLogViewerBookmarksPanel::prepareWidgets()
     64
     65void UIVMLogViewerSettingsPanel::prepareWidgets()
    9066{
    9167    if (!mainLayout())
    9268        return;
    9369
    94     m_pBookmarksComboBox = new QComboBox(this);
    95     QFontMetrics fontMetrics = m_pBookmarksComboBox->fontMetrics();
    96     AssertPtrReturnVoid(m_pBookmarksComboBox);
    97     m_pBookmarksComboBox->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Maximum);
    98     m_pBookmarksComboBox->setMaximumWidth(fontMetrics.width('a') * (m_iMaxBookmarkTextLength + 2));
    99     /* Make sure we have 0th item in our combo box. */
    100     m_pBookmarksComboBox->insertItem(0, "Bookmarks List");
     70    m_pLineNumberCheckBox = new QCheckBox(this);
     71    AssertPtrReturnVoid(m_pLineNumberCheckBox);
     72    m_pLineNumberCheckBox->setChecked(true);
     73    mainLayout()->addWidget(m_pLineNumberCheckBox, 0, Qt::AlignLeft);
    10174
     75    m_pWrapLinesCheckBox = new QCheckBox(this);
     76    AssertPtrReturnVoid(m_pWrapLinesCheckBox);
     77    m_pWrapLinesCheckBox->setChecked(false);
     78    mainLayout()->addWidget(m_pWrapLinesCheckBox, 0, Qt::AlignLeft);
    10279
    103     mainLayout()->addWidget(m_pBookmarksComboBox, 2/*, Qt::AlignLeft*/);
    104 
    105     m_pDeleteCurrentButton = new QIToolButton(this);
    106     m_pDeleteCurrentButton->setIcon(m_pDeleteCurrentButton->style()->standardIcon(QStyle::SP_TitleBarCloseButton));
    107 
    108     AssertPtrReturnVoid(m_pBookmarksComboBox);
    109     mainLayout()->addWidget(m_pDeleteCurrentButton, 0);
    110 
    111     m_pDeleteAllButton = new QPushButton(this);
    112     AssertPtrReturnVoid(m_pDeleteAllButton);
    113     mainLayout()->addWidget(m_pDeleteAllButton, 0);
    114 
    115 
    116     m_pSpacerItem = new QSpacerItem(0, 0, QSizePolicy::Expanding, QSizePolicy::Minimum);
    117     AssertPtrReturnVoid(m_pSpacerItem);
    118     mainLayout()->addItem(m_pSpacerItem);
     80    mainLayout()->addStretch(2);
    11981}
    12082
    121 void UIVMLogViewerBookmarksPanel::prepareConnections()
     83void UIVMLogViewerSettingsPanel::prepareConnections()
    12284{
    123     connect(m_pBookmarksComboBox, static_cast<void(QComboBox::*)(int)>(&QComboBox::currentIndexChanged),
    124             this, &UIVMLogViewerBookmarksPanel::sltBookmarkSelected);
    125 
    126     connect(m_pDeleteAllButton, &QPushButton::clicked, this, &UIVMLogViewerBookmarksPanel::sigDeleteAllBookmarks);
    127     connect(m_pDeleteCurrentButton, &QIToolButton::clicked, this, &UIVMLogViewerBookmarksPanel::sltDeleteCurrentBookmark);
     85    if (m_pLineNumberCheckBox)
     86        connect(m_pLineNumberCheckBox, &QCheckBox::toggled, this, &UIVMLogViewerSettingsPanel::sigShowLineNumbers);
     87    if (m_pWrapLinesCheckBox)
     88        connect(m_pWrapLinesCheckBox, &QCheckBox::toggled, this, &UIVMLogViewerSettingsPanel::sigWrapLines);
    12889}
    12990
     91void UIVMLogViewerSettingsPanel::retranslateUi()
     92{
     93    UIVMLogViewerPanel::retranslateUi();
     94    m_pLineNumberCheckBox->setText(UIVMLogViewerWidget::tr("Show Line Numbers"));
     95    m_pLineNumberCheckBox->setToolTip(UIVMLogViewerWidget::tr("Show Line Numbers"));
    13096
    131 void UIVMLogViewerBookmarksPanel::retranslateUi()
    132 {
    133     if (m_pDeleteCurrentButton)
    134         m_pDeleteCurrentButton->setToolTip(UIVMLogViewerWidget::tr("Delete the current bookmark."));
    135     if (m_pDeleteAllButton)
    136     {
    137         m_pDeleteAllButton->setToolTip(UIVMLogViewerWidget::tr("Delete all bookmarks."));
    138         m_pDeleteAllButton->setText(UIVMLogViewerWidget::tr("Delete all"));
    139     }
    140     UIVMLogViewerPanel::retranslateUi();
     97    m_pWrapLinesCheckBox->setText(UIVMLogViewerWidget::tr("Wrap Lines"));
     98    m_pWrapLinesCheckBox->setToolTip(UIVMLogViewerWidget::tr("Wrap Lines"));
    14199}
    142 
    143 void UIVMLogViewerBookmarksPanel::sltDeleteCurrentBookmark()
    144 {
    145     if (!m_pBookmarksComboBox)
    146         return;
    147 
    148     if (m_pBookmarksComboBox->currentIndex() == 0)
    149         return;
    150     emit sigDeleteBookmark(m_pBookmarksComboBox->currentIndex() - 1);
    151 }
    152 
    153 void UIVMLogViewerBookmarksPanel::sltBookmarkSelected(int index)
    154 {
    155     /* Do nothing if the index is 0, that is combo box title item: */
    156     if (index <= 0)
    157         return;
    158    emit sigBookmarkSelected(index - 1);
    159 }
  • trunk/src/VBox/Frontends/VirtualBox/src/logviewer/UIVMLogViewerSettingsPanel.h

    r70578 r70581  
    1616 */
    1717
    18 #ifndef ___UIVMLogViewerBookmarksPanel_h___
    19 #define ___UIVMLogViewerBookmarksPanel_h___
     18#ifndef ___UIVMLogViewerSettingssPanel_h___
     19#define ___UIVMLogViewerSettingssPanel_h___
    2020
    2121/* GUI includes: */
     
    2323
    2424/* Forward declarations: */
    25 class QComboBox;
    26 class QPushButton;
    27 class QSpacerItem;
    28 class QIToolButton;
     25class QCheckBox;
     26class UIVMLogViewerWidget;
    2927
    30 /** UIVMLogViewerPanel extension providing GUI for bookmark management. Show a list of bookmarks currently set
    31   for displayed log page. It has controls to navigate and clear bookmarks. */
    32 class UIVMLogViewerBookmarksPanel : public UIVMLogViewerPanel
     28/** UIVMLogViewerPanel extension providing GUI to manage logviewer settings. */
     29class UIVMLogViewerSettingsPanel : public UIVMLogViewerPanel
    3330{
    3431    Q_OBJECT;
     
    3633signals:
    3734
    38     void sigDeleteBookmark(int bookmarkIndex);
    39     void sigDeleteAllBookmarks();
    40     void sigBookmarkSelected(int index);
     35    void sigShowLineNumbers(bool show);
     36    void sigWrapLines(bool show);
    4137
    4238public:
    4339
    44     UIVMLogViewerBookmarksPanel(QWidget *pParent, UIVMLogViewerWidget *pViewer);
     40    UIVMLogViewerSettingsPanel(QWidget *pParent, UIVMLogViewerWidget *pViewer);
    4541
    46     /* Adds a single bookmark to an existing list of bookmarks. Possibly called
    47        by UIVMLogViewerWidget when user adds a bookmark thru context menu etc. */
    48     void addBookmark(const QPair<int, QString> &newBookmark);
    49     /* Clear the bookmark list and show this list instead. Probably done after
    50        user switches to another log page tab etc. */
    51     void setBookmarksList(const QVector<QPair<int, QString> > &bookmarkList);
    52     void updateBookmarkList(const QVector<QPair<int, QString> > &bookmarkVector);
     42    void setShowLineNumbers(bool bShowLineNumbers);
     43    void setWrapLines(bool bWrapLines);
    5344
    5445public slots:
     46
    5547
    5648protected:
     
    6456private slots:
    6557
    66     void sltDeleteCurrentBookmark();
    67     void sltBookmarkSelected(int index);
    68 
    6958private:
    7059
    71     /* @a index is the index of the curent bookmark. */
    72     void setBookmarkIndex(int index);
    73 
    74     const int     m_iMaxBookmarkTextLength;
    75     QComboBox    *m_pBookmarksComboBox;
    76     QPushButton  *m_pDeleteAllButton;
    77     QIToolButton *m_pDeleteCurrentButton;
    78     QSpacerItem  *m_pSpacerItem;
     60    QCheckBox   *m_pLineNumberCheckBox;
     61    QCheckBox   *m_pWrapLinesCheckBox;
    7962};
    8063
    81 #endif /* !___UIVMLogViewerBookmarksPanel_h___ */
     64#endif /* !___UIVMLogViewerSettingsPanel_h___ */
  • trunk/src/VBox/Frontends/VirtualBox/src/logviewer/UIVMLogViewerTextEdit.cpp

    r70578 r70581  
    120120    QSize sizeHint() const
    121121    {
    122         if(!m_pTextEdit)
     122        if (!m_pTextEdit)
    123123            return QSize();
    124124        return QSize(m_pTextEdit->lineNumberAreaWidth(), 0);
     
    129129    void paintEvent(QPaintEvent *event)
    130130    {
    131         if(m_pTextEdit)
     131        if (m_pTextEdit)
    132132            m_pTextEdit->lineNumberAreaPaintEvent(event);
    133133    }
     
    154154    , m_mouseCursorLine(-1)
    155155    , m_bShownTextIsFiltered(false)
     156    , m_bShowLineNumbers(true)
     157    , m_bWrapLines(false)
    156158{
    157159    setMouseTracking(true);
     
    190192    setWordWrapMode(QTextOption::NoWrap);
    191193    setReadOnly(true);
    192     if(m_pLineNumberArea)
     194    if (m_pLineNumberArea)
    193195        m_pLineNumberArea->setFont(font);
    194196
     
    197199int UIVMLogViewerTextEdit::lineNumberAreaWidth()
    198200{
     201    if(!m_bShowLineNumbers)
     202        return 0;
     203
    199204    int digits = 1;
    200205    int max = qMax(1, blockCount());
     
    211216void UIVMLogViewerTextEdit::lineNumberAreaPaintEvent(QPaintEvent *event)
    212217{
     218    if(!m_bShowLineNumbers)
     219        return;
    213220    QPainter painter(m_pLineNumberArea);
    214221    painter.fillRect(event->rect(), Qt::lightGray);
     
    228235                painter.drawPath(path);
    229236            }
    230             if((blockNumber + 1) == m_mouseCursorLine)
     237            if ((blockNumber + 1) == m_mouseCursorLine && underMouse())
    231238            {
    232239                painter.setPen(Qt::red);
     
    249256    /* If shown text is filtered, do not create Bookmark action since
    250257       we disable all bookmarking related functionalities in this case. */
    251     if(m_bShownTextIsFiltered)
     258    if (m_bShownTextIsFiltered)
    252259    {
    253260        QPlainTextEdit::contextMenuEvent(pEvent);
     
    278285        int rectX = viewport()->width() - rectWidth;
    279286        int rectMargin = 4;
    280         if(verticalScrollBar())
     287        if (verticalScrollBar())
    281288            rectX -= verticalScrollBar()->width();
    282289        QPainter painter(viewport());
     
    306313}
    307314
     315void UIVMLogViewerTextEdit::leaveEvent(QEvent * pEvent)
     316{
     317    QPlainTextEdit::leaveEvent(pEvent);
     318    /* Force a redraw as mouse leaves this to remove the mouse
     319       cursor track rectangle (the red rectangle we draw on the line number area. */
     320    update();
     321}
    308322
    309323void UIVMLogViewerTextEdit::sltUpdateLineNumberAreaWidth(int /* newBlockCount */)
     
    331345{
    332346    UIIndicatorScrollBar* vScrollBar = qobject_cast<UIIndicatorScrollBar*>(verticalScrollBar());
    333     if(vScrollBar)
     347    if (vScrollBar)
    334348        vScrollBar->setMarkingsVector(vector);
    335349}
     
    338352{
    339353    UIIndicatorScrollBar* vScrollBar = qobject_cast<UIIndicatorScrollBar*>(verticalScrollBar());
    340     if(vScrollBar)
     354    if (vScrollBar)
    341355        vScrollBar->clearMarkingsVector();
    342356}
     
    345359{
    346360    QTextDocument* pDocument = document();
    347     if(!pDocument)
     361    if (!pDocument)
    348362        return;
    349363
     
    357371{
    358372    int height = 0;
    359     if(viewport())
     373    if (viewport())
    360374        height = viewport()->height();
    361     if(verticalScrollBar() && verticalScrollBar()->isVisible())
     375    if (verticalScrollBar() && verticalScrollBar()->isVisible())
    362376        height -= horizontalScrollBar()->height();
    363377    int singleLineHeight = fontMetrics().lineSpacing();
    364     if(singleLineHeight == 0)
     378    if (singleLineHeight == 0)
    365379        return 0;
    366380    return height / singleLineHeight;
     
    392406void UIVMLogViewerTextEdit::toggleBookmark(const QPair<int, QString>& bookmark)
    393407{
    394     if(m_bShownTextIsFiltered)
     408    if (m_bShownTextIsFiltered)
    395409        return;
    396410
    397411    int lineNumber = bookmark.first;
    398412
    399     if(m_bookmarkLineSet.contains(lineNumber))
     413    if (m_bookmarkLineSet.contains(lineNumber))
    400414        emit sigDeleteBookmark(bookmark);
    401415    else
     
    405419void UIVMLogViewerTextEdit::setShownTextIsFiltered(bool warning)
    406420{
    407     if(m_bShownTextIsFiltered == warning)
     421    if (m_bShownTextIsFiltered == warning)
    408422        return;
    409423    m_bShownTextIsFiltered = warning;
    410424}
    411425
     426void UIVMLogViewerTextEdit::setShowLineNumbers(bool bShowLineNumbers)
     427{
     428    if(m_bShowLineNumbers == bShowLineNumbers)
     429        return;
     430    m_bShowLineNumbers = bShowLineNumbers;
     431    emit updateRequest(viewport()->rect(), 0);
     432}
     433
     434void UIVMLogViewerTextEdit::setWrapLines(bool bWrapLines)
     435{
     436    if(m_bWrapLines == bWrapLines)
     437        return;
     438    m_bWrapLines = bWrapLines;
     439    update();
     440}
     441
     442
    412443#include "UIVMLogViewerTextEdit.moc"
  • trunk/src/VBox/Frontends/VirtualBox/src/logviewer/UIVMLogViewerTextEdit.h

    r70578 r70581  
    4949    void setShownTextIsFiltered(bool warning);
    5050
     51    void setShowLineNumbers(bool bShowLineNumbers);
     52    void setWrapLines(bool bWrapLines);
     53
    5154protected:
    5255
     
    5558    virtual void resizeEvent(QResizeEvent *pEvent) /* override */;
    5659    virtual void mouseMoveEvent(QMouseEvent *pEvent) /* override */;
     60    virtual void leaveEvent(QEvent * event) /* override */;
    5761
    5862private slots:
     
    8488        And we dont display bookmarks and adding/deleting bookmarks are disabled. */
    8589    bool                 m_bShownTextIsFiltered;
     90    bool                 m_bShowLineNumbers;
     91    bool                 m_bWrapLines;
     92
    8693    friend class UILineNumberArea;
    8794};
  • trunk/src/VBox/Frontends/VirtualBox/src/logviewer/UIVMLogViewerWidget.cpp

    r70578 r70581  
    4343# include "UIVMLogViewerFilterPanel.h"
    4444# include "UIVMLogViewerSearchPanel.h"
     45# include "UIVMLogViewerSettingsPanel.h"
    4546# include "UIToolBar.h"
    4647
     
    6162    , m_pFilterPanel(0)
    6263    , m_pBookmarksPanel(0)
     64    , m_pSettingsPanel(0)
    6365    , m_pMainLayout(0)
    6466    , m_enmEmbedding(enmEmbedding)
     
    7072    , m_pActionBookmark(0)
    7173    , m_pMenu(0)
    72     , m_bMarkBookmarkLines(0)
     74    , m_bShowLineNumbers(true)
     75    , m_bWrapLines(false)
     76
    7377{
    7478    /* Prepare VM Log-Viewer: */
     
    110114{
    111115    UIVMLogPage* logPage = currentLogPage();
    112     if(!logPage)
     116    if (!logPage)
    113117        return;
    114118    logPage->deleteBookmark(index);
     
    120124{
    121125    UIVMLogPage* logPage = currentLogPage();
    122     if(!logPage)
     126    if (!logPage)
    123127        return;
    124128    logPage->deleteAllBookmarks();
     
    130134void UIVMLogViewerWidget::sltUpdateBookmarkPanel()
    131135{
    132     if(!currentLogPage() || !m_pBookmarksPanel)
     136    if (!currentLogPage() || !m_pBookmarksPanel)
    133137        return;
    134138    disconnect(m_pBookmarksPanel, &UIVMLogViewerBookmarksPanel::sigBookmarkSelected,
     
    141145void UIVMLogViewerWidget::gotoBookmark(int bookmarkIndex)
    142146{
    143     if(!currentLogPage())
     147    if (!currentLogPage())
    144148        return;
    145149    currentLogPage()->scrollToBookmark(bookmarkIndex);
     
    277281void UIVMLogViewerWidget::sltFilterApplied(bool isOriginal)
    278282{
    279     if(currentLogPage())
     283    if (currentLogPage())
    280284        currentLogPage()->setFiltered(!isOriginal);
    281285    /* Reapply the search to get highlighting etc. correctly */
     
    288292    /* Disable bookmark panel since bookmarks are stored as line numbers within
    289293       the original log text and does not mean much in a reduced/filtered one. */
    290     if(m_pBookmarksPanel)
    291     {
    292         if(isFiltered)
     294    if (m_pBookmarksPanel)
     295    {
     296        if (isFiltered)
    293297        {
    294298            m_pBookmarksPanel->setEnabled(false);
     
    300304}
    301305
     306void UIVMLogViewerWidget::sltShowLineNumbers(bool bShowLineNumbers)
     307{
     308    if (m_bShowLineNumbers == bShowLineNumbers)
     309        return;
     310
     311    m_bShowLineNumbers = bShowLineNumbers;
     312    /* Set all log page instances. */
     313    for (int i = 0; i < m_logPageList.size(); ++i)
     314    {
     315        UIVMLogPage* pLogPage = qobject_cast<UIVMLogPage*>(m_logPageList[i]);
     316        if (pLogPage)
     317            pLogPage->setShowLineNumbers(m_bShowLineNumbers);
     318    }
     319}
     320
     321void UIVMLogViewerWidget::sltWrapLines(bool bWrapLines)
     322{
     323    if (m_bWrapLines == bWrapLines)
     324        return;
     325
     326    m_bWrapLines = bWrapLines;
     327    /* Set all log page instances. */
     328    for (int i = 0; i < m_logPageList.size(); ++i)
     329    {
     330        UIVMLogPage* pLogPage = qobject_cast<UIVMLogPage*>(m_logPageList[i]);
     331        if (pLogPage)
     332            pLogPage->setWrapLines(m_bWrapLines);
     333    }
     334}
     335
     336
    302337void UIVMLogViewerWidget::setMachine(const CMachine &machine)
    303338{
     
    330365    m_panelActionMap.insert(m_pSearchPanel, m_pActionFind);
    331366    m_panelActionMap.insert(m_pFilterPanel, m_pActionFilter);
     367    m_panelActionMap.insert(m_pSettingsPanel, m_pActionSettings);
    332368}
    333369
     
    389425                this, &UIVMLogViewerWidget::gotoBookmark);
    390426    }
     427
     428    m_pSettingsPanel = new UIVMLogViewerSettingsPanel(this, this);
     429    AssertPtrReturnVoid(m_pSettingsPanel);
     430    {
     431        installEventFilter(m_pSettingsPanel);
     432        m_pSettingsPanel->hide();
     433        /* Initialize settings' panel checkboxes: */
     434        m_pSettingsPanel->setShowLineNumbers(m_bShowLineNumbers);
     435        m_pSettingsPanel->setWrapLines(m_bWrapLines);
     436
     437        m_pMainLayout->insertWidget(5, m_pSettingsPanel);
     438        connect(m_pSettingsPanel, &UIVMLogViewerSettingsPanel::sigShowLineNumbers, this, &UIVMLogViewerWidget::sltShowLineNumbers);
     439        connect(m_pSettingsPanel, &UIVMLogViewerSettingsPanel::sigWrapLines, this, &UIVMLogViewerWidget::sltWrapLines);
     440    }
    391441}
    392442
     
    422472    }
    423473
     474    /* Create and configure 'Settings' action: */
     475    m_pActionSettings = new QAction(this);
     476    AssertPtrReturnVoid(m_pActionSettings);
     477    {
     478        m_pActionSettings->setCheckable(true);
     479        connect(m_pActionSettings, &QAction::triggered, this, &UIVMLogViewerWidget::sltPanelActionTriggered);
     480    }
     481
     482
    424483    /* Create and configure 'Refresh' action: */
    425484    m_pActionRefresh = new QAction(this);
     
    469528    if (m_pActionBookmark)
    470529        m_pActionBookmark->setIcon(UIIconPool::iconSet(QString(":/%1_bookmark_24px.png").arg(strPrefix),
     530                                                       QString(":/%1_bookmark_disabled_24px.png").arg(strPrefix)));
     531
     532    if (m_pActionSettings)
     533        m_pActionSettings->setIcon(UIIconPool::iconSet(QString(":/%1_bookmark_24px.png").arg(strPrefix),
    471534                                                       QString(":/%1_bookmark_disabled_24px.png").arg(strPrefix)));
    472535}
     
    497560        if (m_pActionBookmark)
    498561            m_pToolBar->addAction(m_pActionBookmark);
     562
     563        if (m_pActionSettings)
     564            m_pToolBar->addAction(m_pActionSettings);
    499565
    500566#ifdef VBOX_WS_MAC
     
    528594        if (m_pActionBookmark)
    529595            m_pMenu->addAction(m_pActionBookmark);
    530 
     596        if (m_pActionSettings)
     597            m_pMenu->addAction(m_pActionSettings);
    531598    }
    532599}
     
    576643        m_pActionBookmark->setToolTip(tr("Bookmark the line"));
    577644        m_pActionBookmark->setStatusTip(tr("Bookmark the line"));
     645    }
     646
     647    if (m_pActionSettings)
     648    {
     649        m_pActionSettings->setText(tr("&Settings"));
     650        m_pActionSettings->setToolTip(tr("LogViewer Settings"));
     651        m_pActionSettings->setStatusTip(tr("LogViewer Settings"));
    578652    }
    579653
     
    606680
    607681    /* Make sure the log view widget has the focus: */
    608     if(currentLogPage())
     682    if (currentLogPage())
    609683        currentLogPage()->setFocus();
    610684}
     
    761835    /* Create page-container: */
    762836    UIVMLogPage* pLogPage = new UIVMLogPage(this);
     837    AssertPtrReturnVoid(pLogPage);
     838
    763839    connect(pLogPage, &UIVMLogPage::sigBookmarksUpdated, this, &UIVMLogViewerWidget::sltUpdateBookmarkPanel);
    764840    connect(pLogPage, &UIVMLogPage::sigLogPageFilteredChanged, this, &UIVMLogViewerWidget::sltLogPageFilteredChanged);
    765     AssertPtrReturnVoid(pLogPage);
     841    /* Initialize setting for this log page */
     842    pLogPage->setShowLineNumbers(m_bShowLineNumbers);
     843    pLogPage->setWrapLines(m_bWrapLines);
    766844    /* Set the file name only if we really have log file to read. */
    767845    if (!noLogsToShow)
  • trunk/src/VBox/Frontends/VirtualBox/src/logviewer/UIVMLogViewerWidget.h

    r70578 r70581  
    4242class UIVMLogViewerPanel;
    4343class UIVMLogViewerSearchPanel;
     44class UIVMLogViewerSettingsPanel;
    4445
    4546/* Type definitions: */
     
    115116    void sltLogPageFilteredChanged(bool isFiltered);
    116117
     118    void sltShowLineNumbers(bool bShowLineNumbers);
     119    void sltWrapLines(bool bWrapLine);
     120
    117121private:
    118122
     
    174178    QVector<QWidget*>  m_logPageList;
    175179
    176     /** Holds the index to the current tab: */
    177     //int          m_iCurrentTabIndex;
    178 
    179     /** Holds the instance of search-panel. */
    180     UIVMLogViewerSearchPanel    *m_pSearchPanel;
    181     /** Holds the instance of filter panel. */
    182     UIVMLogViewerFilterPanel    *m_pFilterPanel;
    183     UIVMLogViewerBookmarksPanel *m_pBookmarksPanel;
    184     QMap<UIVMLogViewerPanel*, QAction*> m_panelActionMap;
    185 
    186     /** Holds the list of log file content. */
    187     // VMLogMap             m_logMap;
    188     // mutable BookmarkMap  m_bookmarkMap;
     180    /** @name Panel instances and a QMap for mapping panel instances to related actions.
     181      * @{ */
     182        UIVMLogViewerSearchPanel    *m_pSearchPanel;
     183        UIVMLogViewerFilterPanel    *m_pFilterPanel;
     184        UIVMLogViewerBookmarksPanel *m_pBookmarksPanel;
     185        UIVMLogViewerSettingsPanel  *m_pSettingsPanel;
     186        QMap<UIVMLogViewerPanel*, QAction*> m_panelActionMap;
     187    /** @} */
    189188    QVBoxLayout         *m_pMainLayout;
    190189
     
    194193    /** @name Toolbar and menu variables.
    195194      * @{ */
    196         /** Holds the toolbar widget instance. */
    197195        UIToolBar *m_pToolBar;
    198         /** Holds the Find action instance. */
    199196        QAction   *m_pActionFind;
    200         /** Holds the Filter action instance. */
    201197        QAction   *m_pActionFilter;
    202         /** Holds the Refresh action instance. */
    203198        QAction   *m_pActionRefresh;
    204         /** Holds the Save action instance. */
    205199        QAction   *m_pActionSave;
    206         /** Holds the Bookmark action instance. */
    207200        QAction   *m_pActionBookmark;
    208         /** Holds the menu object instance. */
     201        QAction   *m_pActionSettings;
    209202        QMenu     *m_pMenu;
    210203    /** @} */
    211     const bool     m_bMarkBookmarkLines;
     204
     205    /** @name Toolbar and menu variables.
     206     * @{ */
     207        /** Showing/hiding line numbers and line wraping settings are set per
     208            UIVMLogViewerWidget and applies to all log pages (all tabs) */
     209        bool m_bShowLineNumbers;
     210        bool m_bWrapLines;
     211    /** @} */
     212
    212213    friend class UIVMLogViewerBookmarksPanel;
    213214    friend class UIVMLogViewerFilterPanel;
    214215    friend class UIVMLogViewerSearchPanel;
     216    friend class UIVMLogViewerSettingsPanel;
    215217    friend class UIVMLogViewerPanel;
    216218};
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette