File indexing completed on 2024-04-28 04:39:03

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 "oktetawidget.h"
0008 
0009 // plugin
0010 #include "oktetadocument.h"
0011 #include "oktetaplugin.h"
0012 // Okteta Kasten
0013 #include <Kasten/Okteta/ByteArrayView>
0014 // Okteta Kasten controllers
0015 #include <Kasten/Okteta/OverwriteModeControllerFactory>
0016 #include <Kasten/Okteta/GotoOffsetControllerFactory>
0017 #include <Kasten/Okteta/SelectRangeControllerFactory>
0018 #include <Kasten/Okteta/SearchControllerFactory>
0019 #include <Kasten/Okteta/ReplaceControllerFactory>
0020 #include <Kasten/Okteta/BookmarksControllerFactory>
0021 #include <Kasten/Okteta/PrintControllerFactory>
0022 #include <Kasten/Okteta/ViewConfigControllerFactory>
0023 #include <Kasten/Okteta/ViewModeControllerFactory>
0024 #include <Kasten/Okteta/ViewStatusControllerFactory>
0025 #include <Kasten/Okteta/ViewProfileControllerFactory>
0026 #include <Kasten/Okteta/ViewProfilesManageControllerFactory>
0027 // Kasten controllers
0028 #include <Kasten/ReadOnlyControllerFactory>
0029 #include <Kasten/ClipboardControllerFactory>
0030 #include <Kasten/InsertControllerFactory>
0031 #include <Kasten/CopyAsControllerFactory>
0032 #include <Kasten/ExportControllerFactory>
0033 #include <Kasten/VersionControllerFactory>
0034 #include <Kasten/ZoomControllerFactory>
0035 #include <Kasten/ZoomBarControllerFactory>
0036 #include <Kasten/SelectControllerFactory>
0037 // Kasten
0038 #include <Kasten/AbstractXmlGuiController>
0039 // KDevelop
0040 #include <sublime/view.h>
0041 // KF
0042 #include <KLocalizedString>
0043 #include <KStandardAction>
0044 #include <KActionCollection>
0045 // Qt
0046 #include <QVBoxLayout>
0047 #include <QAction>
0048 
0049 
0050 namespace KDevelop
0051 {
0052 
0053 OktetaWidget::OktetaWidget( QWidget* parent, Kasten::ByteArrayView* byteArrayView, OktetaPlugin* plugin )
0054   : QWidget( parent ),
0055     KXMLGUIClient(),
0056     mByteArrayView( byteArrayView )
0057 {
0058     setComponentName( QStringLiteral("kdevokteta") , QStringLiteral("KDevelop Okteta"));
0059     setXMLFile( QStringLiteral("kdevokteta.rc") );
0060 
0061     setupActions(plugin);
0062 
0063     auto* layout = new QVBoxLayout( this );
0064     layout->setContentsMargins(0, 0, 0, 0);
0065     QWidget* widget = mByteArrayView->widget();
0066     layout->addWidget( widget );
0067     setFocusProxy( widget );
0068 }
0069 
0070 void OktetaWidget::setupActions(OktetaPlugin* plugin)
0071 {
0072     Kasten::ByteArrayViewProfileManager* viewProfileManager = plugin->viewProfileManager();
0073     mControllers = {
0074         Kasten::VersionControllerFactory().create(this),
0075         Kasten::ReadOnlyControllerFactory().create(this),
0076         Kasten::ZoomControllerFactory().create(this),
0077         Kasten::SelectControllerFactory().create(this),
0078         Kasten::ClipboardControllerFactory().create(this),
0079         Kasten::OverwriteModeControllerFactory().create(this),
0080         Kasten::SearchControllerFactory(this).create(this),
0081         Kasten::ReplaceControllerFactory(this).create(this),
0082         Kasten::BookmarksControllerFactory().create(this),
0083         Kasten::PrintControllerFactory().create(this),
0084         Kasten::ViewConfigControllerFactory().create(this),
0085         Kasten::ViewModeControllerFactory().create(this),
0086         Kasten::ViewProfileControllerFactory(viewProfileManager, mByteArrayView->widget()).create(this),
0087         Kasten::ViewProfilesManageControllerFactory(viewProfileManager, mByteArrayView->widget()).create(this),
0088     };
0089     // update the text of the viewprofiles_manage action, to make clear this is just for byte arrays
0090     QAction* viewprofilesManageAction = actionCollection()->action(QStringLiteral("settings_viewprofiles_manage"));
0091     viewprofilesManageAction->setText( i18nc("@action:inmenu",
0092                                              "Manage Byte Array View Profiles...") );
0093 
0094     for (Kasten::AbstractXmlGuiController* controller : qAsConst(mControllers)) {
0095         controller->setTargetModel( mByteArrayView );
0096     }
0097 }
0098 
0099 OktetaWidget::~OktetaWidget()
0100 {
0101     qDeleteAll( mControllers );
0102 }
0103 
0104 }
0105 
0106 #include "moc_oktetawidget.cpp"