Capture Interfaces dialog cleanup.

Apply layouts as needed to allow resizing. Select the interface list by
row. We might want to switch the interface list to a QTreeWidget. Today
I learned that you can make QGroupBox titles checkable. Do that where we
enable and disable groups of items. Flatten all of the group boxes.
Change the output format combo to radio buttons. There are only two
choices and we have lots of real estate available. Use a
QDialogButtonBox so Qt can size and order the buttons appropriately.

svn path=/trunk/; revision=54052
This commit is contained in:
Gerald Combs 2013-12-13 18:36:59 +00:00
parent 093ace5c24
commit a2835dd48a
3 changed files with 647 additions and 670 deletions

View File

@ -23,14 +23,15 @@
#include "config.h"
#include <glib.h>
#include "capture_interfaces_dialog.h"
#include "ui_capture_interfaces_dialog.h"
#include "wireshark_application.h"
#ifdef HAVE_LIBPCAP
#include <glib.h>
#include <QSpacerItem>
#include <QTimer>
#include "capture_ui_utils.h"
@ -57,6 +58,14 @@ CaptureInterfacesDialog::CaptureInterfacesDialog(QWidget *parent) :
stat_timer_ = NULL;
stat_cache_ = NULL;
// XXX - Enable / disable as needed
start_bt_ = ui->buttonBox->addButton(tr("Start"), QDialogButtonBox::YesRole);
connect(start_bt_, SIGNAL(clicked()), this, SLOT(on_bStart_clicked()));
stop_bt_ = ui->buttonBox->addButton(tr("Stop"), QDialogButtonBox::NoRole);
stop_bt_->setEnabled(false);
connect(stop_bt_, SIGNAL(clicked()), this, SLOT(on_bStop_clicked()));
//connect(ui->tbInterfaces,SIGNAL(itemPressed(QTableWidgetItem *)),this,SLOT(tableItemPressed(QTableWidgetItem *)));
connect(ui->tbInterfaces,SIGNAL(itemClicked(QTableWidgetItem *)),this,SLOT(tableItemClicked(QTableWidgetItem *)));
}
@ -106,12 +115,12 @@ void CaptureInterfacesDialog::on_capturePromModeCheckBox_toggled(bool checked)
prefs.capture_prom_mode = checked;
}
void CaptureInterfacesDialog::on_cbStopCaptureAuto_toggled(bool checked)
void CaptureInterfacesDialog::on_gbStopCaptureAuto_toggled(bool checked)
{
global_capture_opts.has_file_duration = checked;
}
void CaptureInterfacesDialog::on_cbNewFileAuto_toggled(bool checked)
void CaptureInterfacesDialog::on_gbNewFileAuto_toggled(bool checked)
{
global_capture_opts.multi_files_on = checked;
}
@ -153,7 +162,7 @@ void CaptureInterfacesDialog::on_bStart_clicked()
emit startCapture();
this->close();
accept();
}
void CaptureInterfacesDialog::on_bStop_clicked()
@ -163,13 +172,29 @@ void CaptureInterfacesDialog::on_bStop_clicked()
emit stopCapture();
}
// Not sure why we have to do this manually.
void CaptureInterfacesDialog::on_buttonBox_rejected()
{
reject();
}
void CaptureInterfacesDialog::on_buttonBox_helpRequested()
{
// Probably the wrong URL.
wsApp->helpTopicAction(HELP_CAPTURE_INTERFACES_DIALOG);
}
void CaptureInterfacesDialog::UpdateInterfaces()
{
ui->cbPcap->setCurrentIndex(!prefs.capture_pcap_ng);
if(prefs.capture_pcap_ng) {
ui->rbPcapng->setChecked(true);
} else {
ui->rbPcap->setChecked(true);
}
ui->capturePromModeCheckBox->setChecked(prefs.capture_prom_mode);
ui->cbStopCaptureAuto->setChecked(global_capture_opts.has_file_duration);
ui->cbNewFileAuto->setChecked(global_capture_opts.multi_files_on);
ui->gbStopCaptureAuto->setChecked(global_capture_opts.has_file_duration);
ui->gbNewFileAuto->setChecked(global_capture_opts.multi_files_on);
ui->cbUpdatePacketsRT->setChecked(global_capture_opts.real_time_mode);
ui->cbAutoScroll->setChecked(true);
@ -181,7 +206,6 @@ void CaptureInterfacesDialog::UpdateInterfaces()
ui->tbInterfaces->setRowCount(0);
GList *if_list;
int err;
gchar *err_str = NULL;

View File

@ -30,6 +30,7 @@
#ifdef HAVE_LIBPCAP
#include <QDialog>
#include <QPushButton>
#include <QTableWidget>
typedef struct if_stat_cache_s if_stat_cache_t;
@ -77,16 +78,18 @@ public:
private slots:
void on_capturePromModeCheckBox_toggled(bool checked);
void on_cbStopCaptureAuto_toggled(bool checked);
void on_gbStopCaptureAuto_toggled(bool checked);
void on_cbUpdatePacketsRT_toggled(bool checked);
void on_cbAutoScroll_toggled(bool checked);
void on_cbNewFileAuto_toggled(bool checked);
void on_gbNewFileAuto_toggled(bool checked);
void on_cbExtraCaptureInfo_toggled(bool checked);
void on_cbResolveMacAddresses_toggled(bool checked);
void on_cbResolveNetworkNames_toggled(bool checked);
void on_cbResolveTransportNames_toggled(bool checked);
void on_bStart_clicked();
void on_bStop_clicked();
void on_buttonBox_rejected();
void on_buttonBox_helpRequested();
void tableItemClicked(QTableWidgetItem * item);
void updateStatistics(void);
//void on_tbInterfaces_hideEvent(QHideEvent *evt);
@ -101,6 +104,8 @@ private:
Ui::CaptureInterfacesDialog *ui;
Qt::CheckState m_pressedItemState;
QPushButton *start_bt_;
QPushButton *stop_bt_;
if_stat_cache_t *stat_cache_;
QTimer *stat_timer_;
};

View File

@ -6,89 +6,38 @@
<rect>
<x>0</x>
<y>0</y>
<width>636</width>
<height>403</height>
<width>750</width>
<height>475</height>
</rect>
</property>
<property name="windowTitle">
<string>Wireshark: Capture interfaces</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_12">
<item>
<widget class="QTabWidget" name="tabWidget">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>641</width>
<height>351</height>
</rect>
</property>
<property name="currentIndex">
<number>1</number>
<number>2</number>
</property>
<widget class="QWidget" name="tab">
<widget class="QWidget" name="inputTab">
<attribute name="title">
<string>Input</string>
</attribute>
<widget class="QPushButton" name="bClose_2">
<property name="geometry">
<rect>
<x>510</x>
<y>250</y>
<width>91</width>
<height>23</height>
</rect>
</property>
<property name="text">
<string>Add pipe...</string>
</property>
</widget>
<widget class="QCheckBox" name="capturePromModeCheckBox">
<property name="geometry">
<rect>
<x>20</x>
<y>244</y>
<width>363</width>
<height>20</height>
</rect>
</property>
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;You probably want to enable this. Usually a network card will only capture the traffic sent to its own network address. If you want to capture all traffic that the network card can &amp;quot;see&amp;quot;, mark this option. See the FAQ for some more details of capturing packets from a switched network.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="text">
<string>Capture packets in promiscuous mode</string>
</property>
</widget>
<widget class="QCheckBox" name="captureShowInfoCheckBox">
<property name="geometry">
<rect>
<x>20</x>
<y>280</y>
<width>363</width>
<height>20</height>
</rect>
</property>
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Show the capture summary dialog while capturing.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="text">
<string>Show the capture summary dialog while capturing</string>
</property>
</widget>
<layout class="QVBoxLayout" name="verticalLayout_10" stretch="1,0">
<item>
<widget class="QTableWidget" name="tbInterfaces">
<property name="geometry">
<rect>
<x>10</x>
<y>10</y>
<width>611</width>
<height>221</height>
</rect>
</property>
<property name="editTriggers">
<set>QAbstractItemView::NoEditTriggers</set>
</property>
<property name="alternatingRowColors">
<bool>true</bool>
</property>
<property name="selectionBehavior">
<enum>QAbstractItemView::SelectRows</enum>
</property>
<property name="textElideMode">
<enum>Qt::ElideMiddle</enum>
</property>
<property name="sortingEnabled">
<bool>true</bool>
</property>
@ -144,179 +93,166 @@
</property>
</column>
</widget>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<widget class="QCheckBox" name="capturePromModeCheckBox">
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;You probably want to enable this. Usually a network card will only capture the traffic sent to its own network address. If you want to capture all traffic that the network card can &amp;quot;see&amp;quot;, mark this option. See the FAQ for some more details of capturing packets from a switched network.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="text">
<string>Capture packets in promiscuous mode</string>
</property>
</widget>
<widget class="QWidget" name="tab_2">
</item>
<item>
<widget class="QCheckBox" name="captureShowInfoCheckBox">
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Show the capture summary dialog while capturing.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="text">
<string>Show the capture summary dialog while capturing</string>
</property>
</widget>
</item>
</layout>
</item>
<item>
<spacer name="horizontalSpacer_2">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>48</height>
</size>
</property>
</spacer>
</item>
<item>
<layout class="QVBoxLayout" name="verticalLayout_4">
<item>
<widget class="QPushButton" name="bClose_2">
<property name="enabled">
<bool>false</bool>
</property>
<property name="text">
<string>Add pipe...</string>
</property>
</widget>
</item>
<item>
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>18</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
</layout>
</item>
</layout>
</widget>
<widget class="QWidget" name="outputTab">
<attribute name="title">
<string>Output</string>
</attribute>
<widget class="QCheckBox" name="checkBox">
<property name="geometry">
<rect>
<x>40</x>
<y>50</y>
<width>231</width>
<height>21</height>
</rect>
</property>
<layout class="QVBoxLayout" name="verticalLayout_9">
<item>
<layout class="QHBoxLayout" name="horizontalLayout_3">
<item>
<widget class="QLabel" name="label">
<property name="text">
<string>Output format:</string>
</property>
</widget>
</item>
<item>
<widget class="QRadioButton" name="rbPcapng">
<property name="text">
<string>pcap-ng</string>
</property>
</widget>
</item>
<item>
<widget class="QRadioButton" name="rbPcap">
<property name="text">
<string>pcap</string>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_7">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
<item>
<widget class="QGroupBox" name="gbCaptureToFile">
<property name="title">
<string>Capture direcly to file</string>
</property>
</widget>
<widget class="QCheckBox" name="cbNewFileAuto">
<property name="geometry">
<rect>
<x>40</x>
<y>110</y>
<width>341</width>
<height>21</height>
</rect>
<property name="flat">
<bool>true</bool>
</property>
<property name="text">
<string>Create a new file automatically after...</string>
<property name="checkable">
<bool>true</bool>
</property>
</widget>
<widget class="QCheckBox" name="checkBox_3">
<property name="geometry">
<rect>
<x>61</x>
<y>143</y>
<width>271</width>
<height>21</height>
</rect>
</property>
<property name="text">
<string> packets</string>
</property>
</widget>
<widget class="QSpinBox" name="spinBox">
<property name="geometry">
<rect>
<x>85</x>
<y>141</y>
<width>121</width>
<height>25</height>
</rect>
</property>
<property name="buttonSymbols">
<enum>QAbstractSpinBox::PlusMinus</enum>
</property>
<property name="maximum">
<number>1000</number>
</property>
</widget>
<widget class="QCheckBox" name="checkBox_4">
<property name="geometry">
<rect>
<x>60</x>
<y>170</y>
<width>21</width>
<height>21</height>
</rect>
</property>
<property name="text">
<string/>
</property>
</widget>
<widget class="QCheckBox" name="checkBox_5">
<property name="geometry">
<rect>
<x>60</x>
<y>200</y>
<width>51</width>
<height>21</height>
</rect>
</property>
<property name="text">
<string/>
</property>
</widget>
<widget class="QCheckBox" name="checkBox_6">
<property name="geometry">
<rect>
<x>40</x>
<y>230</y>
<width>131</width>
<height>21</height>
</rect>
</property>
<property name="text">
<string>Reuse old files</string>
</property>
</widget>
<widget class="QWidget" name="layoutWidget_1">
<property name="geometry">
<rect>
<x>50</x>
<y>70</y>
<width>311</width>
<height>29</height>
</rect>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_4">
<item>
<widget class="QLabel" name="label_2">
<property name="text">
<string>File:</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="lineEdit"/>
</item>
<item>
<layout class="QGridLayout" name="gridLayout_3">
<item row="0" column="2">
<widget class="QPushButton" name="pushButton">
<property name="text">
<string>Browse...</string>
</property>
</widget>
</item>
</layout>
</widget>
<widget class="QWidget" name="layoutWidget_2">
<property name="geometry">
<rect>
<x>40</x>
<y>10</y>
<width>199</width>
<height>29</height>
</rect>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_3">
<item>
<widget class="QLabel" name="label">
<item row="0" column="0">
<widget class="QLabel" name="label_2">
<property name="text">
<string>Output format</string>
<string>File:</string>
</property>
</widget>
</item>
<item>
<widget class="QComboBox" name="cbPcap">
<item>
<property name="text">
<string>PCAP-NG</string>
</property>
</item>
<item>
<property name="text">
<string>PCAP</string>
</property>
</item>
</widget>
<item row="0" column="1">
<widget class="QLineEdit" name="lineEdit"/>
</item>
</layout>
</widget>
<widget class="QWidget" name="layoutWidget_3">
<property name="geometry">
<rect>
<x>84</x>
<y>198</y>
<width>251</width>
<height>29</height>
</rect>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_5">
</item>
<item>
<widget class="QSpinBox" name="spinBox_3">
<widget class="QGroupBox" name="gbNewFileAuto">
<property name="title">
<string>Create a new file automatically after...</string>
</property>
<property name="flat">
<bool>true</bool>
</property>
<property name="checkable">
<bool>true</bool>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="1">
<widget class="QSpinBox" name="spinBox">
<property name="buttonSymbols">
<enum>QAbstractSpinBox::PlusMinus</enum>
</property>
@ -325,38 +261,7 @@
</property>
</widget>
</item>
<item>
<widget class="QComboBox" name="comboBox_3">
<item>
<property name="text">
<string>seconds</string>
</property>
</item>
<item>
<property name="text">
<string>minutes</string>
</property>
</item>
<item>
<property name="text">
<string>hours</string>
</property>
</item>
</widget>
</item>
</layout>
</widget>
<widget class="QWidget" name="layoutWidget_4">
<property name="geometry">
<rect>
<x>84</x>
<y>168</y>
<width>251</width>
<height>29</height>
</rect>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_6">
<item>
<item row="1" column="1">
<widget class="QSpinBox" name="spinBox_2">
<property name="buttonSymbols">
<enum>QAbstractSpinBox::PlusMinus</enum>
@ -366,7 +271,7 @@
</property>
</widget>
</item>
<item>
<item row="1" column="2">
<widget class="QComboBox" name="comboBox_2">
<item>
<property name="text">
@ -385,88 +290,8 @@
</item>
</widget>
</item>
</layout>
</widget>
<zorder>layoutWidget_1</zorder>
<zorder>layoutWidget_2</zorder>
<zorder>layoutWidget_3</zorder>
<zorder>layoutWidget_4</zorder>
<zorder>checkBox_3</zorder>
<zorder>checkBox</zorder>
<zorder>cbNewFileAuto</zorder>
<zorder>spinBox</zorder>
<zorder>checkBox_4</zorder>
<zorder>checkBox_5</zorder>
<zorder>checkBox_6</zorder>
</widget>
<widget class="QWidget" name="tab_3">
<attribute name="title">
<string>Options</string>
</attribute>
<widget class="QCheckBox" name="cbStopCaptureAuto">
<property name="geometry">
<rect>
<x>10</x>
<y>170</y>
<width>261</width>
<height>21</height>
</rect>
</property>
<property name="text">
<string>Stop capture automatically after...</string>
</property>
</widget>
<widget class="QSpinBox" name="spinBox_7">
<property name="geometry">
<rect>
<x>54</x>
<y>198</y>
<width>121</width>
<height>25</height>
</rect>
</property>
<property name="buttonSymbols">
<enum>QAbstractSpinBox::PlusMinus</enum>
</property>
<property name="maximum">
<number>1000</number>
</property>
</widget>
<widget class="QCheckBox" name="checkBox_14">
<property name="geometry">
<rect>
<x>29</x>
<y>227</y>
<width>21</width>
<height>21</height>
</rect>
</property>
<property name="text">
<string/>
</property>
</widget>
<widget class="QWidget" name="layoutWidget_6">
<property name="geometry">
<rect>
<x>53</x>
<y>255</y>
<width>251</width>
<height>29</height>
</rect>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_11">
<item>
<widget class="QSpinBox" name="spinBox_8">
<property name="buttonSymbols">
<enum>QAbstractSpinBox::PlusMinus</enum>
</property>
<property name="maximum">
<number>1000</number>
</property>
</widget>
</item>
<item>
<widget class="QComboBox" name="comboBox_7">
<item row="2" column="2">
<widget class="QComboBox" name="comboBox_3">
<item>
<property name="text">
<string>seconds</string>
@ -484,33 +309,29 @@
</item>
</widget>
</item>
</layout>
</widget>
<widget class="QCheckBox" name="checkBox_15">
<property name="geometry">
<rect>
<x>29</x>
<y>257</y>
<width>51</width>
<height>21</height>
</rect>
<item row="0" column="2">
<widget class="QLabel" name="label_3">
<property name="text">
<string>packets</string>
</property>
</widget>
</item>
<item row="0" column="0">
<widget class="QCheckBox" name="checkBox_3">
<property name="text">
<string/>
</property>
</widget>
<widget class="QWidget" name="layoutWidget_7">
<property name="geometry">
<rect>
<x>53</x>
<y>225</y>
<width>251</width>
<height>29</height>
</rect>
</item>
<item row="2" column="0">
<widget class="QCheckBox" name="checkBox_5">
<property name="text">
<string/>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_12">
<item>
<widget class="QSpinBox" name="spinBox_9">
</widget>
</item>
<item row="2" column="1">
<widget class="QSpinBox" name="spinBox_3">
<property name="buttonSymbols">
<enum>QAbstractSpinBox::PlusMinus</enum>
</property>
@ -519,60 +340,71 @@
</property>
</widget>
</item>
<item>
<widget class="QComboBox" name="comboBox_8">
<item>
<item row="1" column="0">
<widget class="QCheckBox" name="checkBox_4">
<property name="text">
<string>Megabytes</string>
<string/>
</property>
</item>
<item>
<property name="text">
<string>Kilobytes</string>
</property>
</item>
<item>
<property name="text">
<string>Bytes</string>
</property>
</item>
</widget>
</item>
<item row="0" column="3" rowspan="3">
<spacer name="horizontalSpacer_8">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
<widget class="QCheckBox" name="checkBox_16">
<property name="geometry">
<rect>
<x>30</x>
<y>200</y>
<width>271</width>
<height>21</height>
</rect>
</property>
</item>
<item>
<widget class="QCheckBox" name="checkBox_6">
<property name="text">
<string> packets</string>
<string>Reuse old files</string>
</property>
</widget>
<widget class="QGroupBox" name="groupBox">
<property name="geometry">
<rect>
<x>10</x>
<y>10</y>
<width>601</width>
<height>111</height>
</rect>
</item>
<item>
<spacer name="verticalSpacer_4">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
</layout>
<zorder>checkBox_6</zorder>
<zorder>gbNewFileAuto</zorder>
<zorder>gbCaptureToFile</zorder>
</widget>
<widget class="QWidget" name="optionsTab">
<attribute name="title">
<string>Options</string>
</attribute>
<layout class="QVBoxLayout" name="verticalLayout_11">
<item>
<layout class="QHBoxLayout" name="horizontalLayout_8">
<item>
<widget class="QGroupBox" name="groupBox">
<property name="title">
<string>Display Options</string>
</property>
<widget class="QWidget" name="layoutWidget_8">
<property name="geometry">
<rect>
<x>10</x>
<y>20</y>
<width>298</width>
<height>80</height>
</rect>
<property name="flat">
<bool>true</bool>
</property>
<property name="checkable">
<bool>false</bool>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
@ -598,26 +430,14 @@
</item>
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="groupBox_2">
<property name="geometry">
<rect>
<x>320</x>
<y>0</y>
<width>601</width>
<height>111</height>
</rect>
</property>
<property name="title">
<string>Name Resolution</string>
</property>
<widget class="QWidget" name="layoutWidget_9">
<property name="geometry">
<rect>
<x>10</x>
<y>20</y>
<width>211</width>
<height>80</height>
</rect>
<property name="flat">
<bool>true</bool>
</property>
<layout class="QVBoxLayout" name="verticalLayout_3">
<item>
@ -643,44 +463,172 @@
</item>
</layout>
</widget>
</widget>
</widget>
</widget>
</widget>
<widget class="QWidget" name="layoutWidget_10">
<property name="geometry">
<rect>
<x>10</x>
<y>360</y>
<width>360</width>
<height>29</height>
</rect>
</property>
<layout class="QHBoxLayout" name="horizontalLayout">
</item>
<item>
<widget class="QPushButton" name="bStart">
<property name="text">
<string>Start</string>
<spacer name="horizontalSpacer_3">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
<item>
<widget class="QGroupBox" name="gbStopCaptureAuto">
<property name="title">
<string>Stop capture automatically after...</string>
</property>
<property name="flat">
<bool>true</bool>
</property>
<property name="checkable">
<bool>true</bool>
</property>
<layout class="QGridLayout" name="gridLayout_2">
<item row="0" column="1">
<widget class="QSpinBox" name="spinBox_7">
<property name="buttonSymbols">
<enum>QAbstractSpinBox::PlusMinus</enum>
</property>
<property name="maximum">
<number>1000</number>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="bStop">
<property name="text">
<string>Stop</string>
<item row="1" column="1">
<widget class="QSpinBox" name="spinBox_9">
<property name="buttonSymbols">
<enum>QAbstractSpinBox::PlusMinus</enum>
</property>
<property name="maximum">
<number>1000</number>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="bClose">
<item row="1" column="0">
<widget class="QCheckBox" name="checkBox_14">
<property name="text">
<string>Close</string>
<string/>
</property>
</widget>
</item>
<item row="0" column="2">
<widget class="QLabel" name="label_7">
<property name="text">
<string>packets</string>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QCheckBox" name="checkBox_15">
<property name="text">
<string/>
</property>
</widget>
</item>
<item row="2" column="2">
<widget class="QComboBox" name="comboBox_7">
<item>
<property name="text">
<string>seconds</string>
</property>
</item>
<item>
<property name="text">
<string>minutes</string>
</property>
</item>
<item>
<property name="text">
<string>hours</string>
</property>
</item>
</widget>
</item>
<item row="0" column="0">
<widget class="QCheckBox" name="checkBox_16">
<property name="text">
<string/>
</property>
</widget>
</item>
<item row="1" column="2">
<widget class="QComboBox" name="comboBox_8">
<item>
<property name="text">
<string>Megabytes</string>
</property>
</item>
<item>
<property name="text">
<string>Kilobytes</string>
</property>
</item>
<item>
<property name="text">
<string>Bytes</string>
</property>
</item>
</widget>
</item>
<item row="2" column="1">
<widget class="QSpinBox" name="spinBox_8">
<property name="buttonSymbols">
<enum>QAbstractSpinBox::PlusMinus</enum>
</property>
<property name="maximum">
<number>1000</number>
</property>
</widget>
</item>
<item row="0" column="3" rowspan="3">
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
</item>
<item>
<spacer name="verticalSpacer_3">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
</widget>
</item>
<item>
<widget class="QDialogButtonBox" name="buttonBox">
<property name="standardButtons">
<set>QDialogButtonBox::Close|QDialogButtonBox::Help</set>
</property>
</widget>
</item>
</layout>
</widget>
</widget>
<resources/>
<connections/>
</ui>