[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

[vidalia-svn] r4076: Add a tab widget to the message log window with a "Basic" an (vidalia/trunk/src/vidalia/log)



Author: edmanm
Date: 2009-08-28 01:44:28 -0400 (Fri, 28 Aug 2009)
New Revision: 4076

Modified:
   vidalia/trunk/src/vidalia/log/MessageLog.cpp
   vidalia/trunk/src/vidalia/log/MessageLog.h
   vidalia/trunk/src/vidalia/log/MessageLog.ui
Log:

Add a tab widget to the message log window with a "Basic" and an
"Advanced" tab. The "Advanced" tab displays the old message log while the
"Basic" tab displays an instance of the new StatusEventWidget. Also clean
up some comments and a bunch of miscellaneous crap Designer decided to futz
with.


Modified: vidalia/trunk/src/vidalia/log/MessageLog.cpp
===================================================================
--- vidalia/trunk/src/vidalia/log/MessageLog.cpp	2009-08-28 05:39:26 UTC (rev 4075)
+++ vidalia/trunk/src/vidalia/log/MessageLog.cpp	2009-08-28 05:44:28 UTC (rev 4076)
@@ -64,6 +64,8 @@
   _torControl = Vidalia::torControl();
   connect(_torControl, SIGNAL(logMessage(tc::Severity, QString)),
           this, SLOT(log(tc::Severity, QString)));
+  connect(ui.tabWidget, SIGNAL(currentChanged(int)),
+          this, SLOT(currentTabChanged(int)));
 
   /* Bind events to actions */
   createActions();
@@ -75,8 +77,12 @@
   loadSettings();
 
   /* Sort in ascending chronological order */
-  ui.lstMessages->sortItems(LogTreeWidget::TimeColumn,
+  ui.listMessages->sortItems(LogTreeWidget::TimeColumn,
                              Qt::AscendingOrder);
+  ui.listNotifications->sortItems(0, Qt::AscendingOrder);
+
+  /* Initialize the toolbar actions based on the default tab */
+  currentTabChanged(ui.tabWidget->currentIndex());
 }
 
 /** Default Destructor. Simply frees up any memory allocated for member
@@ -102,6 +108,9 @@
   connect(ui.actionFind, SIGNAL(triggered()),
           this, SLOT(find()));
 
+  connect(ui.actionClear, SIGNAL(triggered()),
+          this, SLOT(clear()));
+
   connect(ui.actionHelp, SIGNAL(triggered()),
           this, SLOT(help()));
 
@@ -148,6 +157,18 @@
   setToolTips();
 }
 
+void
+MessageLog::currentTabChanged(int index)
+{
+  bool isAdvancedTabVisible = (index == 1);
+
+  ui.actionSave_Selected->setEnabled(isAdvancedTabVisible);
+  ui.actionSave_All->setEnabled(isAdvancedTabVisible);
+  ui.actionSelect_All->setEnabled(isAdvancedTabVisible);
+  ui.actionCopy->setEnabled(isAdvancedTabVisible);
+  ui.actionFind->setEnabled(isAdvancedTabVisible);
+}
+
 /** Loads the saved Message Log settings */
 void
 MessageLog::loadSettings()
@@ -156,7 +177,8 @@
   uint maxMsgCount = getSetting(SETTING_MAX_MSG_COUNT,
                                 DEFAULT_MAX_MSG_COUNT).toUInt();
   ui.spnbxMaxCount->setValue(maxMsgCount);
-  ui.lstMessages->setMaximumMessageCount(maxMsgCount);
+  ui.listMessages->setMaximumMessageCount(maxMsgCount);
+  ui.listNotifications->setMaximumItemCount(maxMsgCount);
 
   /* Set whether or not logging to file is enabled */
   _enableLogging = getSetting(SETTING_ENABLE_LOGFILE,
@@ -178,7 +200,7 @@
 
   /* Filter the message log */
   QApplication::setOverrideCursor(Qt::WaitCursor);
-  ui.lstMessages->filter(_filter);
+  ui.listMessages->filter(_filter);
   QApplication::restoreOverrideCursor();
 }
 
@@ -253,7 +275,8 @@
 
   /* Update the maximum displayed item count */
   saveSetting(SETTING_MAX_MSG_COUNT, ui.spnbxMaxCount->value());
-  ui.lstMessages->setMaximumMessageCount(ui.spnbxMaxCount->value());
+  ui.listMessages->setMaximumMessageCount(ui.spnbxMaxCount->value());
+  ui.listNotifications->setMaximumItemCount(ui.spnbxMaxCount->value());
 
   /* Save message filter and refilter the list */
   uint filter = 0;
@@ -267,7 +290,7 @@
 
   /* Filter the message log */
   QApplication::setOverrideCursor(Qt::WaitCursor);
-  ui.lstMessages->filter(_filter);
+  ui.listMessages->filter(_filter);
   QApplication::restoreOverrideCursor();
 
   /* Hide the settings frame and reset toggle button*/
@@ -342,27 +365,38 @@
 void
 MessageLog::saveSelected()
 {
-  save(ui.lstMessages->selectedMessages());
+  save(ui.listMessages->selectedMessages());
 }
 
 /** Saves all shown messages to a file. */
 void
 MessageLog::saveAll()
 {
-  save(ui.lstMessages->allMessages());
+  save(ui.listMessages->allMessages());
 }
 
 /** Copies contents of currently selected messages to the 'clipboard'. */
 void
 MessageLog::copy()
 {
-  QString contents = ui.lstMessages->selectedMessages().join("");
+  QString contents = ui.listMessages->selectedMessages().join("");
   if (!contents.isEmpty()) {
     /* Copy the selected messages to the clipboard */
     QApplication::clipboard()->setText(contents);
   }
 }
 
+/** Clears all log messages or status notifications, depending on which tab
+ * is currently visible. */
+void
+MessageLog::clear()
+{
+  if (ui.tabWidget->currentIndex() == 0)
+    ui.listNotifications->clear();
+  else
+    ui.listMessages->clearMessages();
+}
+
 /** Prompts the user for a search string. If the search string is not found in
  * any of the currently displayed log entires, then a message will be
  * displayed for the user informing them that no matches were found.
@@ -377,14 +411,14 @@
 
   if (ok && !text.isEmpty()) {
     /* Search for the user-specified text */
-    QList<LogTreeItem *> results = ui.lstMessages->find(text);
+    QList<LogTreeItem *> results = ui.listMessages->find(text);
     if (!results.size()) {
       VMessageBox::information(this, tr("Not Found"),
                                p(tr("Search found 0 matches.")),
                                VMessageBox::Ok);
     } else {
       /* Set the focus to the first match */
-      ui.lstMessages->scrollToItem(results.at(0));
+      ui.listMessages->scrollToItem(results.at(0));
     }
   }
 }
@@ -400,13 +434,13 @@
   /* Only add the message if it's not being filtered out */
   if (_filter & (uint)type) {
     /* Add the message to the list and scroll to it if necessary. */
-    LogTreeItem *item = ui.lstMessages->log(type, message);
+    LogTreeItem *item = ui.listMessages->log(type, message);
 
     /* This is a workaround to force Qt to update the statusbar text (if any
      * is currently displayed) to reflect the new message added. */
     QString currStatusTip = ui.statusbar->currentMessage();
     if (!currStatusTip.isEmpty()) {
-      currStatusTip = ui.lstMessages->statusTip();
+      currStatusTip = ui.listMessages->statusTip();
       ui.statusbar->showMessage(currStatusTip);
     }
 

Modified: vidalia/trunk/src/vidalia/log/MessageLog.h
===================================================================
--- vidalia/trunk/src/vidalia/log/MessageLog.h	2009-08-28 05:39:26 UTC (rev 4075)
+++ vidalia/trunk/src/vidalia/log/MessageLog.h	2009-08-28 05:44:28 UTC (rev 4076)
@@ -41,15 +41,20 @@
   virtual void retranslateUi();
 
 private slots:
+  /** Called when the currently visible tab changes and updates the available
+   * toolbar options accordingly. */
+  void currentTabChanged(int index);
   /** Adds the passed message to the message log as the specified type **/
   void log(tc::Severity severity, const QString &msg);
-  /** Called when the user triggers the save all action **/
+  /** Called when the user triggers the "Save All" action. */
   void saveAll();
-  /** Called when the user triggers save selected action **/
+  /** Called when the user triggers "Save Selected" action. */
   void saveSelected();
-  /** Called when the user triggers the copy action **/
+  /** Called when the user triggers the "Copy" action. */
   void copy();
-  /** Called when the user triggers the find action. This will search
+  /** Called when the user triggers the "Clear" action. */
+  void clear();
+  /** Called when the user triggers the "Find" action. This will search
    * through all currently displayed log entries for text specified by the
    * user, highlighting the entries that contain a match. */
   void find();

Modified: vidalia/trunk/src/vidalia/log/MessageLog.ui
===================================================================
--- vidalia/trunk/src/vidalia/log/MessageLog.ui	2009-08-28 05:39:26 UTC (rev 4075)
+++ vidalia/trunk/src/vidalia/log/MessageLog.ui	2009-08-28 05:44:28 UTC (rev 4076)
@@ -1,10 +1,8 @@
-<ui version="4.0" >
- <author></author>
- <comment></comment>
- <exportmacro></exportmacro>
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
  <class>MessageLog</class>
- <widget class="QMainWindow" name="MessageLog" >
-  <property name="geometry" >
+ <widget class="QMainWindow" name="MessageLog">
+  <property name="geometry">
    <rect>
     <x>0</x>
     <y>0</y>
@@ -12,130 +10,204 @@
     <height>625</height>
    </rect>
   </property>
-  <property name="contextMenuPolicy" >
+  <property name="contextMenuPolicy">
    <enum>Qt::NoContextMenu</enum>
   </property>
-  <property name="windowTitle" >
+  <property name="windowTitle">
    <string>Message Log</string>
   </property>
-  <property name="windowIcon" >
-   <iconset resource="..\res\vidalia.qrc" >:/images/32x32/format-justify-fill.png</iconset>
+  <property name="windowIcon">
+   <iconset resource="../res/vidalia.qrc">
+    <normaloff>:/images/32x32/format-justify-fill.png</normaloff>:/images/32x32/format-justify-fill.png</iconset>
   </property>
-  <property name="statusTip" >
+  <property name="statusTip">
    <string/>
   </property>
-  <property name="autoFillBackground" >
+  <property name="autoFillBackground">
    <bool>true</bool>
   </property>
-  <widget class="QWidget" name="centralwidget" >
-   <layout class="QVBoxLayout" >
-    <property name="margin" >
-     <number>9</number>
+  <property name="unifiedTitleAndToolBarOnMac">
+   <bool>false</bool>
+  </property>
+  <widget class="QWidget" name="centralwidget">
+   <layout class="QVBoxLayout">
+    <property name="leftMargin">
+     <number>12</number>
     </property>
-    <property name="spacing" >
-     <number>6</number>
+    <property name="topMargin">
+     <number>12</number>
     </property>
+    <property name="rightMargin">
+     <number>12</number>
+    </property>
     <item>
-     <widget class="LogTreeWidget" name="lstMessages" >
-      <property name="contextMenuPolicy" >
-       <enum>Qt::NoContextMenu</enum>
+     <widget class="QTabWidget" name="tabWidget">
+      <property name="currentIndex">
+       <number>0</number>
       </property>
-      <property name="autoFillBackground" >
+      <property name="documentMode">
        <bool>false</bool>
       </property>
-      <property name="alternatingRowColors" >
-       <bool>true</bool>
-      </property>
-      <property name="selectionMode" >
-       <enum>QAbstractItemView::ExtendedSelection</enum>
-      </property>
-      <property name="rootIsDecorated" >
-       <bool>false</bool>
-      </property>
-      <property name="uniformRowHeights" >
-       <bool>true</bool>
-      </property>
-      <property name="itemsExpandable" >
-       <bool>false</bool>
-      </property>
-      <property name="sortingEnabled" >
-       <bool>true</bool>
-      </property>
-      <column>
-       <property name="text" >
-        <string>Time</string>
-       </property>
-      </column>
-      <column>
-       <property name="text" >
-        <string>Type</string>
-       </property>
-      </column>
-      <column>
-       <property name="text" >
-        <string>Message</string>
-       </property>
-      </column>
+      <widget class="QWidget" name="tabBasic">
+       <attribute name="title">
+        <string>Basic</string>
+       </attribute>
+       <layout class="QGridLayout" name="basicTabLayout">
+        <property name="margin">
+         <number>12</number>
+        </property>
+        <item row="0" column="0">
+         <widget class="StatusEventWidget" name="listNotifications">
+          <property name="horizontalScrollBarPolicy">
+           <enum>Qt::ScrollBarAsNeeded</enum>
+          </property>
+          <property name="showDropIndicator" stdset="0">
+           <bool>false</bool>
+          </property>
+          <property name="alternatingRowColors">
+           <bool>true</bool>
+          </property>
+          <property name="selectionMode">
+           <enum>QAbstractItemView::ExtendedSelection</enum>
+          </property>
+          <property name="selectionBehavior">
+           <enum>QAbstractItemView::SelectRows</enum>
+          </property>
+          <property name="indentation">
+           <number>0</number>
+          </property>
+          <property name="rootIsDecorated">
+           <bool>false</bool>
+          </property>
+          <property name="itemsExpandable">
+           <bool>false</bool>
+          </property>
+          <property name="sortingEnabled">
+           <bool>true</bool>
+          </property>
+          <property name="expandsOnDoubleClick">
+           <bool>false</bool>
+          </property>
+          <attribute name="headerShowSortIndicator" stdset="0">
+           <bool>true</bool>
+          </attribute>
+          <attribute name="headerShowSortIndicator" stdset="0">
+           <bool>true</bool>
+          </attribute>
+          <column>
+           <property name="text">
+            <string>Tor Status</string>
+           </property>
+          </column>
+         </widget>
+        </item>
+       </layout>
+      </widget>
+      <widget class="QWidget" name="tabAdvanced">
+       <attribute name="title">
+        <string>Advanced</string>
+       </attribute>
+       <layout class="QGridLayout" name="advancedTabLayout">
+        <property name="margin">
+         <number>12</number>
+        </property>
+        <item row="0" column="0">
+         <widget class="LogTreeWidget" name="listMessages">
+          <property name="contextMenuPolicy">
+           <enum>Qt::NoContextMenu</enum>
+          </property>
+          <property name="autoFillBackground">
+           <bool>false</bool>
+          </property>
+          <property name="alternatingRowColors">
+           <bool>true</bool>
+          </property>
+          <property name="selectionMode">
+           <enum>QAbstractItemView::ExtendedSelection</enum>
+          </property>
+          <property name="rootIsDecorated">
+           <bool>false</bool>
+          </property>
+          <property name="uniformRowHeights">
+           <bool>true</bool>
+          </property>
+          <property name="itemsExpandable">
+           <bool>false</bool>
+          </property>
+          <property name="sortingEnabled">
+           <bool>true</bool>
+          </property>
+          <column>
+           <property name="text">
+            <string>Time</string>
+           </property>
+          </column>
+          <column>
+           <property name="text">
+            <string>Type</string>
+           </property>
+          </column>
+          <column>
+           <property name="text">
+            <string>Message</string>
+           </property>
+          </column>
+         </widget>
+        </item>
+       </layout>
+      </widget>
      </widget>
     </item>
     <item>
-     <widget class="QFrame" name="frmSettings" >
-      <property name="enabled" >
+     <widget class="QFrame" name="frmSettings">
+      <property name="enabled">
        <bool>true</bool>
       </property>
-      <property name="sizePolicy" >
-       <sizepolicy>
-        <hsizetype>0</hsizetype>
-        <vsizetype>0</vsizetype>
+      <property name="sizePolicy">
+       <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
         <horstretch>0</horstretch>
         <verstretch>0</verstretch>
        </sizepolicy>
       </property>
-      <property name="minimumSize" >
+      <property name="minimumSize">
        <size>
         <width>520</width>
         <height>183</height>
        </size>
       </property>
-      <property name="maximumSize" >
+      <property name="maximumSize">
        <size>
         <width>520</width>
         <height>183</height>
        </size>
       </property>
-      <property name="contextMenuPolicy" >
+      <property name="contextMenuPolicy">
        <enum>Qt::NoContextMenu</enum>
       </property>
-      <property name="visible" >
+      <property name="visible">
        <bool>false</bool>
       </property>
-      <property name="frameShape" >
+      <property name="frameShape">
        <enum>QFrame::StyledPanel</enum>
       </property>
-      <property name="frameShadow" >
+      <property name="frameShadow">
        <enum>QFrame::Raised</enum>
       </property>
-      <layout class="QGridLayout" >
-       <property name="margin" >
+      <layout class="QGridLayout">
+       <property name="margin">
         <number>3</number>
        </property>
-       <property name="spacing" >
+       <property name="spacing">
         <number>3</number>
        </property>
-       <item row="0" column="2" >
-        <layout class="QHBoxLayout" >
-         <property name="margin" >
-          <number>0</number>
-         </property>
-         <property name="spacing" >
-          <number>6</number>
-         </property>
+       <item row="0" column="2">
+        <layout class="QHBoxLayout">
          <item>
           <spacer>
-           <property name="orientation" >
+           <property name="orientation">
             <enum>Qt::Horizontal</enum>
            </property>
-           <property name="sizeHint" >
+           <property name="sizeHint" stdset="0">
             <size>
              <width>40</width>
              <height>20</height>
@@ -144,41 +216,35 @@
           </spacer>
          </item>
          <item>
-          <layout class="QVBoxLayout" >
-           <property name="margin" >
-            <number>0</number>
-           </property>
-           <property name="spacing" >
-            <number>6</number>
-           </property>
+          <layout class="QVBoxLayout">
            <item>
-            <widget class="QPushButton" name="btnSaveSettings" >
-             <property name="contextMenuPolicy" >
+            <widget class="QPushButton" name="btnSaveSettings">
+             <property name="contextMenuPolicy">
               <enum>Qt::NoContextMenu</enum>
              </property>
-             <property name="toolTip" >
+             <property name="toolTip">
               <string>Saves the current Message Log settings</string>
              </property>
-             <property name="text" >
+             <property name="text">
               <string>Save Settings</string>
              </property>
             </widget>
            </item>
            <item>
-            <widget class="QPushButton" name="btnCancelSettings" >
-             <property name="minimumSize" >
+            <widget class="QPushButton" name="btnCancelSettings">
+             <property name="minimumSize">
               <size>
                <width>90</width>
                <height>0</height>
               </size>
              </property>
-             <property name="contextMenuPolicy" >
+             <property name="contextMenuPolicy">
               <enum>Qt::NoContextMenu</enum>
              </property>
-             <property name="toolTip" >
+             <property name="toolTip">
               <string>Cancels changes made to settings</string>
              </property>
-             <property name="text" >
+             <property name="text">
               <string>Cancel</string>
              </property>
             </widget>
@@ -187,159 +253,152 @@
          </item>
         </layout>
        </item>
-       <item rowspan="2" row="0" column="0" >
-        <widget class="QGroupBox" name="groupBox" >
-         <property name="contextMenuPolicy" >
+       <item row="0" column="0" rowspan="2">
+        <widget class="QGroupBox" name="groupBox">
+         <property name="contextMenuPolicy">
           <enum>Qt::NoContextMenu</enum>
          </property>
-         <property name="title" >
+         <property name="title">
           <string>Message Filter</string>
          </property>
-         <layout class="QVBoxLayout" >
-          <property name="margin" >
-           <number>9</number>
-          </property>
-          <property name="spacing" >
-           <number>6</number>
-          </property>
+         <layout class="QVBoxLayout">
           <item>
-           <widget class="QCheckBox" name="chkTorErr" >
-            <property name="contextMenuPolicy" >
+           <widget class="QCheckBox" name="chkTorErr">
+            <property name="contextMenuPolicy">
              <enum>Qt::NoContextMenu</enum>
             </property>
-            <property name="toolTip" >
+            <property name="toolTip">
              <string/>
             </property>
-            <property name="whatsThis" >
+            <property name="whatsThis">
              <string/>
             </property>
-            <property name="text" >
+            <property name="text">
              <string>Error</string>
             </property>
-            <property name="icon" >
-             <iconset resource="..\res\vidalia.qrc">:/images/16x16/emblem-important.png</iconset>
+            <property name="icon">
+             <iconset resource="../res/vidalia.qrc">
+              <normaloff>:/images/16x16/emblem-important.png</normaloff>:/images/16x16/emblem-important.png</iconset>
             </property>
            </widget>
           </item>
           <item>
-           <widget class="QCheckBox" name="chkTorWarn" >
-            <property name="contextMenuPolicy" >
+           <widget class="QCheckBox" name="chkTorWarn">
+            <property name="contextMenuPolicy">
              <enum>Qt::NoContextMenu</enum>
             </property>
-            <property name="toolTip" >
+            <property name="toolTip">
              <string/>
             </property>
-            <property name="text" >
+            <property name="text">
              <string>Warning</string>
             </property>
-            <property name="icon" >
-             <iconset resource="..\res\vidalia.qrc">:/images/16x16/dialog-warning.png</iconset>
+            <property name="icon">
+             <iconset resource="../res/vidalia.qrc">
+              <normaloff>:/images/16x16/dialog-warning.png</normaloff>:/images/16x16/dialog-warning.png</iconset>
             </property>
            </widget>
           </item>
           <item>
-           <widget class="QCheckBox" name="chkTorNote" >
-            <property name="contextMenuPolicy" >
+           <widget class="QCheckBox" name="chkTorNote">
+            <property name="contextMenuPolicy">
              <enum>Qt::NoContextMenu</enum>
             </property>
-            <property name="toolTip" >
+            <property name="toolTip">
              <string/>
             </property>
-            <property name="text" >
+            <property name="text">
              <string>Notice</string>
             </property>
-            <property name="icon" >
-             <iconset resource="..\res\vidalia.qrc">:/images/16x16/preferences-desktop-notification.png</iconset>
+            <property name="icon">
+             <iconset resource="../res/vidalia.qrc">
+              <normaloff>:/images/16x16/preferences-desktop-notification.png</normaloff>:/images/16x16/preferences-desktop-notification.png</iconset>
             </property>
            </widget>
           </item>
           <item>
-           <widget class="QCheckBox" name="chkTorInfo" >
-            <property name="contextMenuPolicy" >
+           <widget class="QCheckBox" name="chkTorInfo">
+            <property name="contextMenuPolicy">
              <enum>Qt::NoContextMenu</enum>
             </property>
-            <property name="toolTip" >
+            <property name="toolTip">
              <string/>
             </property>
-            <property name="text" >
+            <property name="text">
              <string>Info</string>
             </property>
-            <property name="icon" >
-             <iconset resource="..\res\vidalia.qrc">:/images/16x16/dialog-information.png</iconset>
+            <property name="icon">
+             <iconset resource="../res/vidalia.qrc">
+              <normaloff>:/images/16x16/dialog-information.png</normaloff>:/images/16x16/dialog-information.png</iconset>
             </property>
            </widget>
           </item>
           <item>
-           <widget class="QCheckBox" name="chkTorDebug" >
-            <property name="contextMenuPolicy" >
+           <widget class="QCheckBox" name="chkTorDebug">
+            <property name="contextMenuPolicy">
              <enum>Qt::NoContextMenu</enum>
             </property>
-            <property name="toolTip" >
+            <property name="toolTip">
              <string/>
             </property>
-            <property name="text" >
+            <property name="text">
              <string>Debug</string>
             </property>
-            <property name="icon" >
-             <iconset resource="..\res\vidalia.qrc">:/images/16x16/applications-system.png</iconset>
+            <property name="icon">
+             <iconset resource="../res/vidalia.qrc">
+              <normaloff>:/images/16x16/applications-system.png</normaloff>:/images/16x16/applications-system.png</iconset>
             </property>
            </widget>
           </item>
          </layout>
         </widget>
        </item>
-       <item row="0" column="1" >
-        <widget class="QGroupBox" name="groupBox_3" >
-         <property name="contextMenuPolicy" >
+       <item row="0" column="1">
+        <widget class="QGroupBox" name="grou">
+         <property name="contextMenuPolicy">
           <enum>Qt::NoContextMenu</enum>
          </property>
-         <property name="title" >
+         <property name="title">
           <string>Message Log History</string>
          </property>
-         <layout class="QHBoxLayout" >
-          <property name="margin" >
-           <number>9</number>
-          </property>
-          <property name="spacing" >
-           <number>6</number>
-          </property>
+         <layout class="QHBoxLayout">
           <item>
-           <widget class="QSpinBox" name="spnbxMaxCount" >
-            <property name="minimumSize" >
+           <widget class="QSpinBox" name="spnbxMaxCount">
+            <property name="minimumSize">
              <size>
               <width>50</width>
               <height>0</height>
              </size>
             </property>
-            <property name="contextMenuPolicy" >
+            <property name="contextMenuPolicy">
              <enum>Qt::NoContextMenu</enum>
             </property>
-            <property name="toolTip" >
+            <property name="toolTip">
              <string>Number of messages to display in the message log window</string>
             </property>
-            <property name="maximum" >
-             <number>99999</number>
+            <property name="alignment">
+             <set>Qt::AlignRight</set>
             </property>
-            <property name="minimum" >
+            <property name="minimum">
              <number>1</number>
             </property>
-            <property name="alignment" >
-             <set>Qt::AlignRight</set>
+            <property name="maximum">
+             <number>99999</number>
             </property>
            </widget>
           </item>
           <item>
-           <widget class="QLabel" name="lblMessageCount" >
-            <property name="contextMenuPolicy" >
+           <widget class="QLabel" name="lblMessageCount">
+            <property name="contextMenuPolicy">
              <enum>Qt::NoContextMenu</enum>
             </property>
-            <property name="text" >
+            <property name="text">
              <string>messages</string>
             </property>
-            <property name="textFormat" >
-             <enum>Qt::AutoText</enum> 
+            <property name="textFormat">
+             <enum>Qt::AutoText</enum>
             </property>
-            <property name="alignment" >
+            <property name="alignment">
              <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
             </property>
            </widget>
@@ -347,56 +406,53 @@
          </layout>
         </widget>
        </item>
-       <item row="1" column="1" colspan="2" >
-        <widget class="QGroupBox" name="groupBox_2" >
-         <property name="contextMenuPolicy" >
+       <item row="1" column="1" colspan="2">
+        <widget class="QGroupBox" name="groupBox_2">
+         <property name="contextMenuPolicy">
           <enum>Qt::NoContextMenu</enum>
          </property>
-         <property name="title" >
-          <string>Always Save New Log Messages</string>
+         <property name="title">
+          <string>Always Save New Log Messages </string>
          </property>
-         <layout class="QGridLayout" >
-          <property name="margin" >
+         <layout class="QGridLayout">
+          <property name="margin">
            <number>6</number>
           </property>
-          <property name="spacing" >
-           <number>6</number>
-          </property>
-          <item row="1" column="1" >
-           <widget class="QPushButton" name="btnBrowse" >
-            <property name="contextMenuPolicy" >
+          <item row="1" column="1">
+           <widget class="QPushButton" name="btnBrowse">
+            <property name="enabled">
+             <bool>false</bool>
+            </property>
+            <property name="contextMenuPolicy">
              <enum>Qt::NoContextMenu</enum>
             </property>
-            <property name="text" >
+            <property name="text">
              <string>Browse</string>
             </property>
-            <property name="enabled" >
-             <bool>false</bool>
-            </property>
            </widget>
           </item>
-          <item row="1" column="0" >
-           <widget class="QLineEdit" name="lineFile" >
-            <property name="enabled" >
+          <item row="1" column="0">
+           <widget class="QLineEdit" name="lineFile">
+            <property name="enabled">
              <bool>false</bool>
             </property>
-            <property name="contextMenuPolicy" >
+            <property name="contextMenuPolicy">
              <enum>Qt::NoContextMenu</enum>
             </property>
            </widget>
           </item>
-          <item row="0" column="0" >
-           <widget class="QCheckBox" name="chkEnableLogFile" >
-            <property name="contextMenuPolicy" >
+          <item row="0" column="0">
+           <widget class="QCheckBox" name="chkEnableLogFile">
+            <property name="contextMenuPolicy">
              <enum>Qt::NoContextMenu</enum>
             </property>
-            <property name="toolTip" >
+            <property name="toolTip">
              <string>Enable automatically saving all new log messages to a file</string>
             </property>
-            <property name="text" >
+            <property name="text">
              <string>Automatically save new log messages to a file</string>
             </property>
-            <property name="checked" >
+            <property name="checked">
              <bool>false</bool>
             </property>
            </widget>
@@ -409,214 +465,219 @@
     </item>
    </layout>
   </widget>
-  <widget class="QStatusBar" name="statusbar" >
-   <property name="geometry" >
-    <rect>
-     <x>0</x>
-     <y>603</y>
-     <width>698</width>
-     <height>22</height>
-    </rect>
-   </property>
-  </widget>
-  <widget class="QToolBar" name="toolBar" >
-   <property name="contextMenuPolicy" >
+  <widget class="QStatusBar" name="statusbar"/>
+  <widget class="QToolBar" name="toolBar">
+   <property name="contextMenuPolicy">
     <enum>Qt::NoContextMenu</enum>
    </property>
-   <property name="movable" >
+   <property name="movable">
     <bool>false</bool>
    </property>
-   <property name="orientation" >
+   <property name="orientation">
     <enum>Qt::Horizontal</enum>
    </property>
-   <property name="toolButtonStyle" >
+   <property name="toolButtonStyle">
     <enum>Qt::ToolButtonTextUnderIcon</enum>
    </property>
-   <attribute name="toolBarArea" >
-    <number>4</number>
+   <attribute name="toolBarArea">
+    <enum>TopToolBarArea</enum>
    </attribute>
-   <addaction name="actionSave_All" />
-   <addaction name="actionSave_Selected" />
-   <addaction name="separator" />
-   <addaction name="actionCopy" />
-   <addaction name="actionSelect_All" />
-   <addaction name="actionClear" />
-   <addaction name="actionFind" />
-   <addaction name="separator" />
-   <addaction name="actionSettings" />
-   <addaction name="actionHelp" />
-   <addaction name="actionClose" />
+   <attribute name="toolBarBreak">
+    <bool>false</bool>
+   </attribute>
+   <addaction name="actionSave_All"/>
+   <addaction name="actionSave_Selected"/>
+   <addaction name="separator"/>
+   <addaction name="actionCopy"/>
+   <addaction name="actionSelect_All"/>
+   <addaction name="actionFind"/>
+   <addaction name="actionClear"/>
+   <addaction name="separator"/>
+   <addaction name="actionSettings"/>
+   <addaction name="actionHelp"/>
+   <addaction name="actionClose"/>
   </widget>
-  <action name="actionMessage_Filters" >
-   <property name="text" >
+  <action name="actionMessage_Filters">
+   <property name="text">
     <string>Message Filters...</string>
    </property>
-   <property name="statusTip" >
+   <property name="statusTip">
     <string>Set message filters</string>
    </property>
-   <property name="shortcut" >
+   <property name="shortcut">
     <string/>
    </property>
   </action>
-  <action name="actionHistory_Size" >
-   <property name="text" >
+  <action name="actionHistory_Size">
+   <property name="text">
     <string>History Size...</string>
    </property>
-   <property name="statusTip" >
+   <property name="statusTip">
     <string>Set maximum number of messages to display</string>
    </property>
   </action>
-  <action name="actionClear" >
-   <property name="icon" >
-    <iconset resource="..\res\vidalia.qrc" >:/images/32x32/edit-clear.png</iconset>
+  <action name="actionClear">
+   <property name="icon">
+    <iconset resource="../res/vidalia.qrc">
+     <normaloff>:/images/32x32/edit-clear.png</normaloff>:/images/32x32/edit-clear.png</iconset>
    </property>
-   <property name="text" >
+   <property name="text">
     <string>Clear</string>
    </property>
-   <property name="iconText" >
+   <property name="iconText">
     <string>Clear</string>
    </property>
-   <property name="statusTip" >
+   <property name="statusTip">
     <string>Clear all messages from the Message Log (Ctrl+E)</string>
    </property>
-   <property name="shortcut" >
+   <property name="shortcut">
     <string>Ctrl+E</string>
    </property>
   </action>
-  <action name="actionCopy" >
-   <property name="icon" >
-    <iconset resource="..\res\vidalia.qrc" >:/images/32x32/edit-copy.png</iconset>
+  <action name="actionCopy">
+   <property name="icon">
+    <iconset resource="../res/vidalia.qrc">
+     <normaloff>:/images/32x32/edit-copy.png</normaloff>:/images/32x32/edit-copy.png</iconset>
    </property>
-   <property name="text" >
+   <property name="text">
     <string>Copy</string>
    </property>
-   <property name="iconText" >
+   <property name="iconText">
     <string>Copy</string>
    </property>
-   <property name="toolTip" >
+   <property name="toolTip">
     <string>Copy</string>
    </property>
-   <property name="statusTip" >
+   <property name="statusTip">
     <string>Copy the selected messages to the clipboard (Ctrl+C)</string>
    </property>
-   <property name="shortcut" >
+   <property name="shortcut">
     <string>Ctrl+C</string>
    </property>
   </action>
-  <action name="actionSelect_All" >
-   <property name="icon" >
-    <iconset resource="..\res\vidalia.qrc" >:/images/32x32/edit-select-all.png</iconset>
+  <action name="actionSelect_All">
+   <property name="icon">
+    <iconset resource="../res/vidalia.qrc">
+     <normaloff>:/images/32x32/edit-select-all.png</normaloff>:/images/32x32/edit-select-all.png</iconset>
    </property>
-   <property name="text" >
+   <property name="text">
     <string>Select All</string>
    </property>
-   <property name="iconText" >
+   <property name="iconText">
     <string>Select All</string>
    </property>
-   <property name="statusTip" >
+   <property name="statusTip">
     <string>Select all messages (Ctrl+A)</string>
    </property>
-   <property name="shortcut" >
+   <property name="shortcut">
     <string>Ctrl+A</string>
    </property>
   </action>
-  <action name="actionSave_All" >
-   <property name="icon" >
-    <iconset resource="..\res\vidalia.qrc" >:/images/32x32/document-save-all.png</iconset>
+  <action name="actionSave_All">
+   <property name="icon">
+    <iconset resource="../res/vidalia.qrc">
+     <normaloff>:/images/32x32/document-save-all.png</normaloff>:/images/32x32/document-save-all.png</iconset>
    </property>
-   <property name="text" >
+   <property name="text">
     <string>Save All</string>
    </property>
-   <property name="statusTip" >
+   <property name="statusTip">
     <string>Save all messages to a file</string>
    </property>
   </action>
-  <action name="actionSave_Selected" >
-   <property name="icon" >
-    <iconset resource="..\res\vidalia.qrc" >:/images/32x32/document-save.png</iconset>
+  <action name="actionSave_Selected">
+   <property name="icon">
+    <iconset resource="../res/vidalia.qrc">
+     <normaloff>:/images/32x32/document-save.png</normaloff>:/images/32x32/document-save.png</iconset>
    </property>
-   <property name="text" >
+   <property name="text">
     <string>Save Selected</string>
    </property>
-   <property name="statusTip" >
+   <property name="statusTip">
     <string>Save selected messages to a file</string>
    </property>
   </action>
-  <action name="actionSettings" >
-   <property name="checkable" >
+  <action name="actionSettings">
+   <property name="checkable">
     <bool>true</bool>
    </property>
-   <property name="icon" >
-    <iconset resource="..\res\vidalia.qrc" >:/images/32x32/preferences-other.png</iconset>
+   <property name="icon">
+    <iconset resource="../res/vidalia.qrc">
+     <normaloff>:/images/32x32/preferences-other.png</normaloff>:/images/32x32/preferences-other.png</iconset>
    </property>
-   <property name="text" >
+   <property name="text">
     <string>Settings</string>
    </property>
-   <property name="statusTip" >
+   <property name="statusTip">
     <string>Adjust Message Log Settings</string>
    </property>
-   <property name="shortcut" >
+   <property name="shortcut">
     <string>Ctrl+T</string>
    </property>
   </action>
-  <action name="actionHelp" >
-   <property name="icon" >
-    <iconset resource="..\res\vidalia.qrc" >:/images/32x32/system-help.png</iconset>
+  <action name="actionHelp">
+   <property name="icon">
+    <iconset resource="../res/vidalia.qrc">
+     <normaloff>:/images/32x32/system-help.png</normaloff>:/images/32x32/system-help.png</iconset>
    </property>
-   <property name="text" >
+   <property name="text">
     <string>Help</string>
    </property>
-   <property name="statusTip" >
+   <property name="statusTip">
     <string>Show the help browser</string>
    </property>
-   <property name="shortcut" >
+   <property name="shortcut">
     <string>F1</string>
    </property>
   </action>
-  <action name="actionClose" >
-   <property name="icon" >
-    <iconset resource="..\res\vidalia.qrc" >:/images/32x32/window-close.png</iconset>
+  <action name="actionClose">
+   <property name="icon">
+    <iconset resource="../res/vidalia.qrc">
+     <normaloff>:/images/32x32/window-close.png</normaloff>:/images/32x32/window-close.png</iconset>
    </property>
-   <property name="text" >
+   <property name="text">
     <string>Close</string>
    </property>
-   <property name="statusTip" >
+   <property name="statusTip">
     <string>Close the Message Log</string>
    </property>
-   <property name="shortcut" >
+   <property name="shortcut">
     <string>Esc</string>
    </property>
   </action>
-  <action name="actionFind" >
-   <property name="icon" >
-    <iconset resource="..\res\vidalia.qrc" >:/images/32x32/edit-find.png</iconset>
+  <action name="actionFind">
+   <property name="icon">
+    <iconset resource="../res/vidalia.qrc">
+     <normaloff>:/images/32x32/edit-find.png</normaloff>:/images/32x32/edit-find.png</iconset>
    </property>
-   <property name="text" >
+   <property name="text">
     <string>Find</string>
    </property>
-   <property name="iconText" >
+   <property name="iconText">
     <string>Find</string>
    </property>
-   <property name="statusTip" >
+   <property name="statusTip">
     <string>Find all messages containing the search text (Ctrl+F)</string>
    </property>
-   <property name="shortcut" >
+   <property name="shortcut">
     <string>Ctrl+F</string>
    </property>
   </action>
  </widget>
- <pixmapfunction></pixmapfunction>
  <customwidgets>
   <customwidget>
    <class>LogTreeWidget</class>
    <extends>QTreeWidget</extends>
    <header>log/LogTreeWidget.h</header>
-   <container>0</container>
-   <pixmap></pixmap>
   </customwidget>
+  <customwidget>
+   <class>StatusEventWidget</class>
+   <extends>QTreeWidget</extends>
+   <header>StatusEventWidget.h</header>
+  </customwidget>
  </customwidgets>
  <resources>
-  <include location="../res/vidalia.qrc" />
+  <include location="../res/vidalia.qrc"/>
  </resources>
  <connections>
   <connection>
@@ -625,59 +686,27 @@
    <receiver>MessageLog</receiver>
    <slot>close()</slot>
    <hints>
-    <hint type="sourcelabel" >
+    <hint type="sourcelabel">
      <x>-1</x>
      <y>-1</y>
     </hint>
-    <hint type="destinationlabel" >
+    <hint type="destinationlabel">
      <x>407</x>
      <y>378</y>
     </hint>
    </hints>
   </connection>
   <connection>
-   <sender>actionClear</sender>
-   <signal>triggered()</signal>
-   <receiver>lstMessages</receiver>
-   <slot>clear()</slot>
-   <hints>
-    <hint type="sourcelabel" >
-     <x>-1</x>
-     <y>-1</y>
-    </hint>
-    <hint type="destinationlabel" >
-     <x>407</x>
-     <y>393</y>
-    </hint>
-   </hints>
-  </connection>
-  <connection>
-   <sender>actionSelect_All</sender>
-   <signal>triggered()</signal>
-   <receiver>lstMessages</receiver>
-   <slot>selectAll()</slot>
-   <hints>
-    <hint type="sourcelabel" >
-     <x>-1</x>
-     <y>-1</y>
-    </hint>
-    <hint type="destinationlabel" >
-     <x>407</x>
-     <y>393</y>
-    </hint>
-   </hints>
-  </connection>
-  <connection>
    <sender>actionSettings</sender>
    <signal>toggled(bool)</signal>
    <receiver>frmSettings</receiver>
    <slot>setVisible(bool)</slot>
    <hints>
-    <hint type="sourcelabel" >
+    <hint type="sourcelabel">
      <x>-1</x>
      <y>-1</y>
     </hint>
-    <hint type="destinationlabel" >
+    <hint type="destinationlabel">
      <x>407</x>
      <y>393</y>
     </hint>
@@ -689,27 +718,31 @@
    <receiver>lineFile</receiver>
    <slot>setEnabled(bool)</slot>
    <hints>
-    <hint type="sourcelabel" >
+    <hint type="sourcelabel">
      <x>373</x>
      <y>491</y>
     </hint>
-    <hint type="destinationlabel" >
+    <hint type="destinationlabel">
      <x>348</x>
      <y>516</y>
     </hint>
    </hints>
   </connection>
   <connection>
-   <sender>actionClear</sender>
-   <signal>triggered()</signal>
-   <receiver>lstMessages</receiver>
-   <slot>clearMessages()</slot>
-  </connection>
-  <connection>
    <sender>chkEnableLogFile</sender>
    <signal>toggled(bool)</signal>
    <receiver>btnBrowse</receiver>
    <slot>setEnabled(bool)</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>20</x>
+     <y>20</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>20</x>
+     <y>20</y>
+    </hint>
+   </hints>
   </connection>
  </connections>
 </ui>