1 /*
2 SPDX-FileCopyrightText: 2010 Friedrich W. H. Kossebau <kossebau@kde.org>
3
4 SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
5 */
6
7 #include "oktetawidget.h"
8
9 // plugin
10 #include "oktetadocument.h"
11 #include "oktetaplugin.h"
12 #include <config-kdevokteta.h>
13 // Okteta Kasten
14 #include <Kasten/Okteta/ByteArrayView>
15
16 #if USE_KASTEN_CONTROLLER_FACTORIES
17 // Okteta Kasten controllers
18 #include <Kasten/Okteta/OverwriteModeControllerFactory>
19 #include <Kasten/Okteta/GotoOffsetControllerFactory>
20 #include <Kasten/Okteta/SelectRangeControllerFactory>
21 #include <Kasten/Okteta/SearchControllerFactory>
22 #include <Kasten/Okteta/ReplaceControllerFactory>
23 #include <Kasten/Okteta/BookmarksControllerFactory>
24 #include <Kasten/Okteta/PrintControllerFactory>
25 #include <Kasten/Okteta/ViewConfigControllerFactory>
26 #include <Kasten/Okteta/ViewModeControllerFactory>
27 #include <Kasten/Okteta/ViewStatusControllerFactory>
28 #include <Kasten/Okteta/ViewProfileControllerFactory>
29 #include <Kasten/Okteta/ViewProfilesManageControllerFactory>
30 // Kasten controllers
31 #include <Kasten/ReadOnlyControllerFactory>
32 #include <Kasten/ClipboardControllerFactory>
33 #include <Kasten/InsertControllerFactory>
34 #include <Kasten/CopyAsControllerFactory>
35 #include <Kasten/ExportControllerFactory>
36 #include <Kasten/VersionControllerFactory>
37 #include <Kasten/ZoomControllerFactory>
38 #include <Kasten/ZoomBarControllerFactory>
39 #include <Kasten/SelectControllerFactory>
40 // Kasten
41 #include <Kasten/AbstractXmlGuiController>
42 #else
43 // Okteta Kasten controllers
44 #include <Kasten/Okteta/OverwriteModeController>
45 #include <Kasten/Okteta/GotoOffsetController>
46 #include <Kasten/Okteta/SelectRangeController>
47 #include <Kasten/Okteta/SearchController>
48 #include <Kasten/Okteta/ReplaceController>
49 #include <Kasten/Okteta/BookmarksController>
50 #include <Kasten/Okteta/PrintController>
51 #include <Kasten/Okteta/ViewConfigController>
52 #include <Kasten/Okteta/ViewModeController>
53 #include <Kasten/Okteta/ViewStatusController>
54 #include <Kasten/Okteta/ViewProfileController>
55 #include <Kasten/Okteta/ViewProfilesManageController>
56 // Kasten controllers
57 #include <Kasten/ReadOnlyController>
58 #include <Kasten/ClipboardController>
59 #include <Kasten/InsertController>
60 #include <Kasten/CopyAsController>
61 #include <Kasten/ExportController>
62 #include <Kasten/VersionController>
63 #include <Kasten/ZoomController>
64 #include <Kasten/ZoomBarController>
65 #include <Kasten/SelectController>
66 #endif
67
68 // KDevelop
69 #include <sublime/view.h>
70 // KF
71 #include <KLocalizedString>
72 #include <KStandardAction>
73 #include <KActionCollection>
74 // Qt
75 #include <QVBoxLayout>
76 #include <QAction>
77
78
79 namespace KDevelop
80 {
81
OktetaWidget(QWidget * parent,Kasten::ByteArrayView * byteArrayView,OktetaPlugin * plugin)82 OktetaWidget::OktetaWidget( QWidget* parent, Kasten::ByteArrayView* byteArrayView, OktetaPlugin* plugin )
83 : QWidget( parent ),
84 KXMLGUIClient(),
85 mByteArrayView( byteArrayView )
86 {
87 setComponentName( QStringLiteral("kdevokteta") , QStringLiteral("KDevelop Okteta"));
88 setXMLFile( QStringLiteral("kdevokteta.rc") );
89
90 setupActions(plugin);
91
92 auto* layout = new QVBoxLayout( this );
93 layout->setContentsMargins(0, 0, 0, 0);
94 QWidget* widget = mByteArrayView->widget();
95 layout->addWidget( widget );
96 setFocusProxy( widget );
97 }
98
setupActions(OktetaPlugin * plugin)99 void OktetaWidget::setupActions(OktetaPlugin* plugin)
100 {
101 Kasten::ByteArrayViewProfileManager* viewProfileManager = plugin->viewProfileManager();
102 mControllers = {
103 #if USE_KASTEN_CONTROLLER_FACTORIES
104 Kasten::VersionControllerFactory().create(this),
105 Kasten::ReadOnlyControllerFactory().create(this),
106 Kasten::ZoomControllerFactory().create(this),
107 Kasten::SelectControllerFactory().create(this),
108 Kasten::ClipboardControllerFactory().create(this),
109 Kasten::OverwriteModeControllerFactory().create(this),
110 Kasten::SearchControllerFactory(this).create(this),
111 Kasten::ReplaceControllerFactory(this).create(this),
112 Kasten::BookmarksControllerFactory().create(this),
113 Kasten::PrintControllerFactory().create(this),
114 Kasten::ViewConfigControllerFactory().create(this),
115 Kasten::ViewModeControllerFactory().create(this),
116 Kasten::ViewProfileControllerFactory(viewProfileManager, mByteArrayView->widget()).create(this),
117 Kasten::ViewProfilesManageControllerFactory(viewProfileManager, mByteArrayView->widget()).create(this),
118 #else
119 new Kasten::VersionController(this),
120 new Kasten::ReadOnlyController(this),
121 new Kasten::ZoomController(this),
122 new Kasten::SelectController(this),
123 new Kasten::ClipboardController(this),
124 new Kasten::OverwriteModeController(this),
125 new Kasten::SearchController(this,this),
126 new Kasten::ReplaceController(this,this),
127 new Kasten::BookmarksController(this),
128 new Kasten::PrintController(this),
129 new Kasten::ViewConfigController(this),
130 new Kasten::ViewModeController(this),
131 new Kasten::ViewProfileController(viewProfileManager, mByteArrayView->widget(), this),
132 new Kasten::ViewProfilesManageController(this, viewProfileManager, mByteArrayView->widget()),
133 #endif
134 };
135 // update the text of the viewprofiles_manage action, to make clear this is just for byte arrays
136 QAction* viewprofilesManageAction = actionCollection()->action(QStringLiteral("settings_viewprofiles_manage"));
137 viewprofilesManageAction->setText( i18nc("@action:inmenu",
138 "Manage Byte Array View Profiles...") );
139
140 for (Kasten::AbstractXmlGuiController* controller : qAsConst(mControllers)) {
141 controller->setTargetModel( mByteArrayView );
142 }
143 }
144
~OktetaWidget()145 OktetaWidget::~OktetaWidget()
146 {
147 qDeleteAll( mControllers );
148 }
149
150 }
151