| 2697 | } |
| 2698 | |
| 2699 | void MainWindow::addVisualizerDock(const QString &magic, const QString &config) { |
| 2700 | if (m_docksVisualizer.contains(magic)) { |
| 2701 | return; |
| 2702 | } |
| 2703 | |
| 2704 | m_docksVisualizer.append(magic); |
| 2705 | m_docksVisualizerConfig.append(config); |
| 2706 | |
| 2707 | DockWidget *dw = new DockWidget(TXT_VISUALIZER_DOCK, this); |
| 2708 | |
| 2709 | if (m_setup) { |
| 2710 | dw->setFloating(true); |
| 2711 | dw->setGeometry(QStyle::alignedRect(Qt::LeftToRight, |
| 2712 | Qt::AlignCenter, |
| 2713 | dw->minimumSize(), |
| 2714 | qApp->screens().first()->availableGeometry())); |
| 2715 | } |
| 2716 | |
| 2717 | VisualizerWidget *widget = new VisualizerWidget(this, config); |
| 2718 | |
| 2719 | connect(widget, &VisualizerWidget::configChanged, [this, widget, magic, dw]{ |
| 2720 | int index; |
| 2721 | if ((index = m_docksVisualizer.indexOf(magic)) != -1) { |
| 2722 | m_docksVisualizerConfig[index] = widget->getConfig(); |
| 2723 | } |
| 2724 | if (dw->isFloating() && dw->isVisible()) { |
| 2725 | dw->adjustSize(); |
| 2726 | } |
| 2727 | }); |
| 2728 | connect(dw, &DockWidget::closed, [this, magic]{ |
| 2729 | int index; |
| 2730 | if ((index = m_docksVisualizer.indexOf(magic)) != -1) { |
| 2731 | m_docksVisualizer.removeAt(index); |
| 2732 | m_docksVisualizerConfig.removeAt(index); |
| 2733 | } |
| 2734 | }); |
| 2735 | |
| 2736 | dw->setState(m_uiEditMode); |
| 2737 | dw->setAttribute(Qt::WA_DeleteOnClose); |
| 2738 | addDockWidget(Qt::RightDockWidgetArea, dw); |
| 2739 | dw->setObjectName(magic); |
| 2740 | dw->setWidget(widget); |
| 2741 | |
| 2742 | if (m_setup) { |
| 2743 | dw->show(); |
| 2744 | dw->activateWindow(); |
| 2745 | dw->raise(); |
| 2746 | } |
| 2747 | } |
| 2748 | |
| 2749 | void MainWindow::addMemDock(const QString &magic, int bytes, bool ascii) { |
| 2750 | if (m_docksMemory.contains(magic)) { |