#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");
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();
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;
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);
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);
}
}
+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