95 #include <shellwindow/toollistmenu/toollistmenucontroller.h>
113 #include <KConfigGroup>
125 setObjectName( QLatin1String(
"Shell") );
130 connect( viewArea(), SIGNAL(dataOffered(
const QMimeData*,
bool&)),
131 SLOT(onDataOffered(
const QMimeData*,
bool&)) );
132 connect( viewArea(), SIGNAL(dataDropped(
const QMimeData*)),
133 SLOT(onDataDropped(
const QMimeData*)) );
142 const QString mainWindowState = QLatin1String(
143 "AAAA/wAAAAD9AAAAAwAAAAAAAADPAAACg/wCAAAAAvsAAAAiAEYAaQBsAGUAUwB5AHMAdABlAG0AQgByAG8AdwBzAGUAcgAAAABJAAACgwAAAB4BAAAF+wAAABIARABvAGMAdQBtAGUAbgB0AHMAAAAASQAAAmMAAABeAQAABQAAAAEAAAGcAAACXPwCAAAACPsAAAAUAFAATwBEAEQAZQBjAG8AZABlAHIAAAAAQgAAARMAAAB9AQAABfsAAAAUAFMAdAByAHUAYwB0AFQAbwBvAGwAAAAAQgAAAlwAAAB9AQAABfsAAAAQAFYAZQByAHMAaQBvAG4AcwAAAABNAAAAVgAAAF4BAAAF+wAAABgAQgBpAG4AYQByAHkARgBpAGwAdABlAHIAAAABegAAAM0AAAC8AQAABfsAAAAQAEMAaABlAGMAawBzAHUAbQAAAAF8AAAAywAAAL0BAAAF/AAAAREAAADlAAAAAAD////6AAAAAAEAAAAE+wAAABAAQwBoAGUAYwBrAFMAdQBtAQAAAAD/////AAAAAAAAAAD7AAAAEgBCAG8AbwBrAG0AYQByAGsAcwIAAALBAAAAPQAAAT8AAAFk+wAAAA4AUwB0AHIAaQBuAGcAcwAAAAAA/////wAAAQ8BAAAF+wAAAAgASQBuAGYAbwAAAAGRAAABTAAAAIUBAAAF+wAAABIAQgB5AHQAZQBUAGEAYgBsAGUAAAAAUwAAAjkAAAB9AQAABfsAAAAYAEQAbwBjAHUAbQBlAG4AdABJAG4AZgBvAAAAAEkAAAJjAAAA+wEAAAUAAAADAAAAAAAAAAD8AQAAAAH7AAAAEABUAGUAcgBtAGkAbgBhAGwAAAAAAP////8AAABPAQAABQAABBUAAAGLAAAABAAAAAQAAAAIAAAACPwAAAABAAAAAgAAAAEAAAAWAG0AYQBpAG4AVABvAG8AbABCAGEAcgEAAAAAAAAEBgAAAAAAAAAA");
144 const char mainWindowStateKey[] =
"State";
145 KConfigGroup group( KGlobal::config(), QLatin1String(
"MainWindow") );
146 if( !group.hasKey(mainWindowStateKey) )
147 group.writeEntry( mainWindowStateKey, mainWindowState );
161 void OktetaMainWindow::setupControllers()
163 MultiDocumentStrategy*
const documentStrategy = mProgram->documentStrategy();
164 ViewManager*
const viewManager = this->viewManager();
165 MultiViewAreas*
const viewArea = this->viewArea();
166 ModelCodecViewManager*
const codecViewManager = viewManager->codecViewManager();
167 DocumentManager*
const documentManager = mProgram->documentManager();
168 ModelCodecManager*
const codecManager = documentManager->codecManager();
169 DocumentSyncManager*
const syncManager = documentManager->syncManager();
171 ByteArrayViewProfileManager*
const byteArrayViewProfileManager = mProgram->byteArrayViewProfileManager();
174 addXmlGuiController(
new CreatorController(codecManager,
175 documentStrategy,
this) );
176 addXmlGuiController(
new LoaderController(documentStrategy,
this) );
177 addXmlGuiController(
new SetRemoteController(syncManager,
this) );
178 addXmlGuiController(
new SynchronizeController(syncManager,
this) );
179 addXmlGuiController(
new ExportController(codecViewManager,
180 codecManager,
this) );
181 addXmlGuiController(
new CloseController(documentStrategy,
this) );
182 addXmlGuiController(
new VersionController(
this) );
183 addXmlGuiController(
new ReadOnlyController(
this) );
184 addXmlGuiController(
new SwitchViewController(viewArea,
this) );
185 addXmlGuiController(
new ViewAreaSplitController(viewManager,viewArea,
this) );
186 addXmlGuiController(
new FullScreenController(
this) );
187 addXmlGuiController(
new QuitController(0,
this) );
189 addXmlGuiController(
new ZoomController(
this) );
190 addXmlGuiController(
new SelectController(
this) );
191 addXmlGuiController(
new ClipboardController(
this) );
192 addXmlGuiController(
new InsertController(codecViewManager,
193 codecManager,
this) );
194 addXmlGuiController(
new CopyAsController(codecViewManager,
195 codecManager,
this) );
197 addTool(
new FileSystemBrowserToolView(
new FileSystemBrowserTool( syncManager )) );
198 addTool(
new DocumentsToolView(
new DocumentsTool( documentManager )) );
199 addTool(
new TerminalToolView(
new TerminalTool( syncManager )) );
201 addTool(
new VersionViewToolView(
new VersionViewTool()) );
206 addXmlGuiController(
new OverwriteModeController(
this) );
207 addXmlGuiController(
new SearchController(
this,
this) );
208 addXmlGuiController(
new ReplaceController(
this,
this) );
209 addXmlGuiController(
new GotoOffsetController(viewArea,
this) );
210 addXmlGuiController(
new SelectRangeController(viewArea,
this) );
211 addXmlGuiController(
new BookmarksController(
this) );
212 addXmlGuiController(
new PrintController(
this) );
213 addXmlGuiController(
new ViewConfigController(
this) );
214 addXmlGuiController(
new ViewModeController(
this) );
215 addXmlGuiController(
new ViewProfileController(byteArrayViewProfileManager,
this,
this) );
216 addXmlGuiController(
new ViewProfilesManageController(
this,byteArrayViewProfileManager,
this) );
219 addXmlGuiController(
new ViewStatusController(bottomBar) );
220 addXmlGuiController(
new ModifiedBarController(bottomBar) );
221 addXmlGuiController(
new ReadOnlyBarController(bottomBar) );
222 addXmlGuiController(
new ZoomBarController(bottomBar) );
224 addTool(
new DocumentInfoToolView(
new DocumentInfoTool(syncManager)) );
225 addTool(
new ChecksumToolView(
new ChecksumTool()) );
226 addTool(
new FilterToolView(
new FilterTool()) );
227 addTool(
new CharsetConversionToolView(
new CharsetConversionTool()) );
228 addTool(
new StringsExtractToolView(
new StringsExtractTool()) );
229 addTool(
new ByteTableToolView(
new ByteTableTool()) );
230 addTool(
new InfoToolView(
new InfoTool()) );
231 addTool(
new PODDecoderToolView(
new PODDecoderTool()) );
232 addTool(
new StructToolView(
new StructTool()) );
233 addTool(
new BookmarksToolView(
new BookmarksTool()) );
236 bool OktetaMainWindow::queryClose()
239 return mProgram->documentManager()->canCloseAll();
242 void OktetaMainWindow::saveProperties( KConfigGroup& configGroup )
250 urls.append( syncManager->
urlOf(document).url() );
255 void OktetaMainWindow::readProperties(
const KConfigGroup& configGroup )
257 const QStringList urls = configGroup.readPathEntry(
LoadedUrlsKey, QStringList() );
259 DocumentManager*
const documentManager = mProgram->documentManager();
260 DocumentSyncManager*
const syncManager = documentManager->syncManager();
261 DocumentCreateManager*
const createManager = documentManager->createManager();
262 foreach(
const KUrl& url, urls )
265 createManager->createNew();
267 syncManager->
load( url );
273 void OktetaMainWindow::onDataOffered(
const QMimeData* mimeData,
bool& accept )
275 accept = KUrl::List::canDecode( mimeData )
276 || mProgram->documentManager()->createManager()->canCreateNewFromData( mimeData );
279 void OktetaMainWindow::onDataDropped(
const QMimeData* mimeData )
281 const KUrl::List urls = KUrl::List::fromMimeData( mimeData );
284 if( ! urls.isEmpty() )
288 foreach(
const KUrl& url, urls )
289 syncManager->
load( url );
298 QHash<AbstractDocument*,QList<AbstractView*> > viewsToClosePerDocument;
302 viewsToClosePerDocument[document].append( view );
310 QHash<AbstractDocument*,QList<AbstractView*> >::Iterator it =
311 viewsToClosePerDocument.find( document );
313 if( it != viewsToClosePerDocument.end() )
316 const bool isAnotherView = ! viewsOfDocument.contains( view );
318 viewsToClosePerDocument.erase( it );
325 if( documentManager->
canClose(documentsWithoutViews) )
327 viewManager()->removeViews( views );
333 OktetaMainWindow::~OktetaMainWindow() {}
void load(const KUrl &url)
bool canClose(AbstractDocument *document)
KUrl urlOf(AbstractDocument *document) const
void createNewFromData(const QMimeData *mimeData, bool setModified)
QList< AbstractDocument * > documents() const
void closeDocuments(const QList< AbstractDocument * > &documents)
OktetaMainWindow(OktetaProgram *program)
T findBaseModel() const
returns the first baseModel which is of type T, or null if none is found.
static const char LoadedUrlsKey[]
DocumentSyncManager * syncManager()
DocumentCreateManager * createManager()