Correctly update the pane layout whenever the preferences are changed, you no
longer need to restart for that to take effect. Hopefully I got all the slot ordering right. svn path=/trunk/; revision=51720
This commit is contained in:
parent
78529b2038
commit
a795048300
|
@ -917,7 +917,6 @@ int main(int argc, char *argv[])
|
|||
#endif /* HAVE_LIBPCAP */
|
||||
|
||||
// w->setEnabled(true);
|
||||
main_w->layoutPanes();
|
||||
wsApp->allSystemsGo();
|
||||
g_log(LOG_DOMAIN_MAIN, G_LOG_LEVEL_INFO, "Wireshark is up and ready to go");
|
||||
|
||||
|
|
|
@ -105,6 +105,8 @@ MainWindow::MainWindow(QWidget *parent) :
|
|||
setFeaturesEnabled(false);
|
||||
connect(wsApp, SIGNAL(appInitialized()), this, SLOT(setFeaturesEnabled()));
|
||||
|
||||
connect(wsApp, SIGNAL(preferencesChanged()), this, SLOT(layoutPanes()));
|
||||
|
||||
connect(wsApp, SIGNAL(updateRecentItemStatus(const QString &, qint64, bool)), this, SLOT(updateRecentFiles()));
|
||||
updateRecentFiles();
|
||||
|
||||
|
@ -286,83 +288,6 @@ MainWindow::~MainWindow()
|
|||
delete main_ui_;
|
||||
}
|
||||
|
||||
void MainWindow::layoutPanes()
|
||||
{
|
||||
QSplitter *parents[3];
|
||||
|
||||
if (master_split_ != NULL) {
|
||||
main_ui_->mainStack->removeWidget(master_split_);
|
||||
}
|
||||
delete master_split_;
|
||||
delete extra_split_;
|
||||
|
||||
master_split_ = new QSplitter(main_ui_->mainStack);
|
||||
master_split_->setObjectName(QString::fromUtf8("splitterMaster"));
|
||||
|
||||
extra_split_ = new QSplitter(main_ui_->mainStack);
|
||||
extra_split_->setObjectName(QString::fromUtf8("splitterExtra"));
|
||||
|
||||
switch(prefs.gui_layout_type) {
|
||||
case(layout_type_5):
|
||||
master_split_->setOrientation(Qt::Vertical);
|
||||
parents[0] = master_split_;
|
||||
parents[1] = master_split_;
|
||||
parents[2] = master_split_;
|
||||
break;
|
||||
case(layout_type_2):
|
||||
master_split_->setOrientation(Qt::Vertical);
|
||||
extra_split_->setOrientation(Qt::Horizontal);
|
||||
parents[0] = master_split_;
|
||||
parents[1] = extra_split_;
|
||||
parents[2] = extra_split_;
|
||||
break;
|
||||
case(layout_type_1):
|
||||
master_split_->setOrientation(Qt::Vertical);
|
||||
extra_split_->setOrientation(Qt::Horizontal);
|
||||
parents[0] = extra_split_;
|
||||
parents[1] = extra_split_;
|
||||
parents[2] = master_split_;
|
||||
break;
|
||||
case(layout_type_4):
|
||||
master_split_->setOrientation(Qt::Horizontal);
|
||||
extra_split_->setOrientation(Qt::Vertical);
|
||||
parents[0] = master_split_;
|
||||
parents[1] = extra_split_;
|
||||
parents[2] = extra_split_;
|
||||
break;
|
||||
case(layout_type_3):
|
||||
master_split_->setOrientation(Qt::Horizontal);
|
||||
extra_split_->setOrientation(Qt::Vertical);
|
||||
parents[0] = extra_split_;
|
||||
parents[1] = extra_split_;
|
||||
parents[2] = master_split_;
|
||||
break;
|
||||
case(layout_type_6):
|
||||
master_split_->setOrientation(Qt::Horizontal);
|
||||
parents[0] = master_split_;
|
||||
parents[1] = master_split_;
|
||||
parents[2] = master_split_;
|
||||
break;
|
||||
default:
|
||||
g_assert_not_reached();
|
||||
}
|
||||
|
||||
if (parents[0] == extra_split_) {
|
||||
master_split_->addWidget(extra_split_);
|
||||
}
|
||||
|
||||
parents[0]->addWidget(packet_list_);
|
||||
|
||||
if (parents[2] == extra_split_) {
|
||||
master_split_->addWidget(extra_split_);
|
||||
}
|
||||
|
||||
parents[1]->addWidget(proto_tree_);
|
||||
parents[2]->addWidget(byte_view_tab_);
|
||||
|
||||
main_ui_->mainStack->addWidget(master_split_);
|
||||
}
|
||||
|
||||
void MainWindow::setPipeInputHandler(gint source, gpointer user_data, int *child_process, pipe_input_cb_t input_cb)
|
||||
{
|
||||
pipe_source_ = source;
|
||||
|
|
|
@ -70,7 +70,6 @@ public:
|
|||
explicit MainWindow(QWidget *parent = 0);
|
||||
~MainWindow();
|
||||
void setPipeInputHandler(gint source, gpointer user_data, int *child_process, pipe_input_cb_t input_cb);
|
||||
void layoutPanes();
|
||||
|
||||
protected:
|
||||
bool eventFilter(QObject *obj, QEvent *event);
|
||||
|
@ -153,6 +152,7 @@ public slots:
|
|||
void openCaptureFile(QString& cf_path = *new QString(), QString &display_filter = *new QString());
|
||||
void filterPackets(QString& new_filter = *new QString(), bool force = false);
|
||||
void updateForUnsavedChanges();
|
||||
void layoutPanes();
|
||||
|
||||
#ifdef HAVE_LIBPCAP
|
||||
void captureCapturePrepared(capture_session *cap_session);
|
||||
|
|
|
@ -205,6 +205,90 @@ void MainWindow::filterPackets(QString& new_filter, bool force)
|
|||
}
|
||||
}
|
||||
|
||||
void MainWindow::layoutPanes()
|
||||
{
|
||||
QSplitter *parents[3];
|
||||
QWidget *oldMaster = master_split_;
|
||||
QWidget *current = main_ui_->mainStack->currentWidget();
|
||||
|
||||
master_split_ = new QSplitter(main_ui_->mainStack);
|
||||
master_split_->setObjectName(QString::fromUtf8("splitterMaster"));
|
||||
|
||||
extra_split_ = new QSplitter(master_split_);
|
||||
extra_split_->setObjectName(QString::fromUtf8("splitterExtra"));
|
||||
|
||||
switch(prefs.gui_layout_type) {
|
||||
case(layout_type_5):
|
||||
master_split_->setOrientation(Qt::Vertical);
|
||||
parents[0] = master_split_;
|
||||
parents[1] = master_split_;
|
||||
parents[2] = master_split_;
|
||||
break;
|
||||
case(layout_type_2):
|
||||
master_split_->setOrientation(Qt::Vertical);
|
||||
extra_split_->setOrientation(Qt::Horizontal);
|
||||
parents[0] = master_split_;
|
||||
parents[1] = extra_split_;
|
||||
parents[2] = extra_split_;
|
||||
break;
|
||||
case(layout_type_1):
|
||||
master_split_->setOrientation(Qt::Vertical);
|
||||
extra_split_->setOrientation(Qt::Horizontal);
|
||||
parents[0] = extra_split_;
|
||||
parents[1] = extra_split_;
|
||||
parents[2] = master_split_;
|
||||
break;
|
||||
case(layout_type_4):
|
||||
master_split_->setOrientation(Qt::Horizontal);
|
||||
extra_split_->setOrientation(Qt::Vertical);
|
||||
parents[0] = master_split_;
|
||||
parents[1] = extra_split_;
|
||||
parents[2] = extra_split_;
|
||||
break;
|
||||
case(layout_type_3):
|
||||
master_split_->setOrientation(Qt::Horizontal);
|
||||
extra_split_->setOrientation(Qt::Vertical);
|
||||
parents[0] = extra_split_;
|
||||
parents[1] = extra_split_;
|
||||
parents[2] = master_split_;
|
||||
break;
|
||||
case(layout_type_6):
|
||||
master_split_->setOrientation(Qt::Horizontal);
|
||||
parents[0] = master_split_;
|
||||
parents[1] = master_split_;
|
||||
parents[2] = master_split_;
|
||||
break;
|
||||
default:
|
||||
g_assert_not_reached();
|
||||
}
|
||||
|
||||
if (parents[0] == extra_split_) {
|
||||
master_split_->addWidget(extra_split_);
|
||||
}
|
||||
|
||||
parents[0]->addWidget(packet_list_);
|
||||
|
||||
if (parents[2] == extra_split_) {
|
||||
master_split_->addWidget(extra_split_);
|
||||
}
|
||||
|
||||
parents[1]->addWidget(proto_tree_);
|
||||
parents[2]->addWidget(byte_view_tab_);
|
||||
|
||||
// We must do this near the end to avoid reparenting signals going to
|
||||
// already-deleted widgets.
|
||||
if (oldMaster != NULL) {
|
||||
main_ui_->mainStack->removeWidget(oldMaster);
|
||||
delete oldMaster;
|
||||
}
|
||||
|
||||
main_ui_->mainStack->addWidget(master_split_);
|
||||
|
||||
if (current == oldMaster) {
|
||||
main_ui_->mainStack->setCurrentWidget(master_split_);
|
||||
}
|
||||
}
|
||||
|
||||
// Capture callbacks
|
||||
|
||||
#ifdef HAVE_LIBPCAP
|
||||
|
|
Loading…
Reference in New Issue