File indexing completed on 2024-04-28 04:39:02
0001 /* 0002 SPDX-FileCopyrightText: 2010 Friedrich W. H. Kossebau <kossebau@kde.org> 0003 0004 SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL 0005 */ 0006 0007 #include "kastentoolviewwidget.h" 0008 0009 // plugin 0010 #include "oktetaview.h" 0011 // Okteta Kasten 0012 #include <Kasten/Okteta/ByteArrayView> 0013 // Kasten 0014 #include <Kasten/AbstractToolView> 0015 #include <Kasten/AbstractTool> 0016 // KDev 0017 #include <interfaces/icore.h> 0018 #include <interfaces/iuicontroller.h> 0019 #include <sublime/mainwindow.h> 0020 #include <sublime/controller.h> 0021 // Qt 0022 #include <QVBoxLayout> 0023 0024 namespace KDevelop 0025 { 0026 0027 // TODO: find if hidden, than unset target model 0028 KastenToolViewWidget::KastenToolViewWidget( Kasten::AbstractToolView* toolView, QWidget* parent ) 0029 : QWidget( parent ), 0030 mToolView( toolView ) 0031 { 0032 Sublime::Controller* controller = ICore::self()->uiController()->controller(); 0033 connect( controller, &Sublime::Controller::mainWindowAdded, 0034 this, &KastenToolViewWidget::onMainWindowAdded ); 0035 const QList<Sublime::MainWindow*>& mainWindows = controller->mainWindows(); 0036 for (Sublime::MainWindow* mainWindow : mainWindows) { 0037 onMainWindowAdded( mainWindow ); 0038 } 0039 0040 auto* layout = new QVBoxLayout( this ); 0041 layout->setContentsMargins(0, 0, 0, 0); 0042 layout->addWidget( mToolView->widget() ); 0043 } 0044 0045 void KastenToolViewWidget::onMainWindowAdded( Sublime::MainWindow* mainWindow ) 0046 { 0047 connect( mainWindow, &Sublime::MainWindow::activeViewChanged, 0048 this, &KastenToolViewWidget::onActiveViewChanged ); 0049 onActiveViewChanged( mainWindow->activeView() ); 0050 } 0051 0052 void KastenToolViewWidget::onActiveViewChanged( Sublime::View* view ) 0053 { 0054 // TODO: check if own mainWindow 0055 auto* oktetaView = qobject_cast<OktetaView*>( view ); 0056 Kasten::ByteArrayView* byteArrayView = oktetaView ? oktetaView->byteArrayView() : nullptr; 0057 mToolView->tool()->setTargetModel( byteArrayView ); 0058 } 0059 0060 KastenToolViewWidget::~KastenToolViewWidget() 0061 { 0062 Kasten::AbstractTool* tool = mToolView->tool(); 0063 delete mToolView; 0064 delete tool; 0065 } 0066 0067 } 0068 0069 #include "moc_kastentoolviewwidget.cpp"