mirror of
https://bitbucket.org/smil3y/kde-extraapps.git
synced 2025-02-24 10:52:53 +00:00
243 lines
6 KiB
C++
243 lines
6 KiB
C++
/* This file is part of the KDevelop project
|
|
Copyright 2002 Falk Brettschneider <falkbr@kdevelop.org>
|
|
Copyright 2003 John Firebaugh <jfirebaugh@kde.org>
|
|
Copyright 2006 Adam Treat <treat@kde.org>
|
|
Copyright 2006, 2007 Alexander Dymo <adymo@kdevelop.org>
|
|
|
|
This library is free software; you can redistribute it and/or
|
|
modify it under the terms of the GNU Library General Public
|
|
License as published by the Free Software Foundation; either
|
|
version 2 of the License, or (at your option) any later version.
|
|
|
|
This library is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
Library General Public License for more details.
|
|
|
|
You should have received a copy of the GNU Library General Public License
|
|
along with this library; see the file COPYING.LIB. If not, write to
|
|
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
|
Boston, MA 02110-1301, USA.
|
|
*/
|
|
|
|
#include <kconfiggroup.h>
|
|
#include <kapplication.h>
|
|
#include <kaboutapplicationdialog.h>
|
|
#include <knotifyconfigwidget.h>
|
|
#include <ktogglefullscreenaction.h>
|
|
|
|
#include <ktexteditor/editor.h>
|
|
|
|
#include <sublime/area.h>
|
|
#include <sublime/view.h>
|
|
|
|
#include "core.h"
|
|
#include "documentcontroller.h"
|
|
#include "mainwindow_p.h"
|
|
#include "sessiondialog.h"
|
|
#include "uicontroller.h"
|
|
|
|
#include "mainwindow.h"
|
|
#include "loadedpluginsdialog.h"
|
|
#include <interfaces/ipartcontroller.h>
|
|
|
|
namespace KDevelop {
|
|
|
|
// merge the gotoNext and gotoPrev code, to prevent copy/paste errors
|
|
static void gotoPrevNextWindow(bool next)
|
|
{
|
|
UiController* ui = Core::self()->uiControllerInternal();
|
|
|
|
if( !ui->activeSublimeWindow() )
|
|
return;
|
|
|
|
Sublime::Area* activeArea = ui->activeArea();
|
|
if (!activeArea)
|
|
return;
|
|
|
|
Sublime::View* activeView = ui->activeSublimeWindow()->activeView();
|
|
|
|
Sublime::AreaIndex* index = activeArea->indexOf(activeView);
|
|
if (!index)
|
|
return;
|
|
|
|
int viewIndex = index->views().indexOf(activeView);
|
|
viewIndex = next ? viewIndex + 1 : viewIndex -1;
|
|
|
|
if (viewIndex < 0)
|
|
viewIndex = index->views().count() - 1;
|
|
else if (viewIndex >= index->views().count())
|
|
viewIndex = 0;
|
|
|
|
if (viewIndex >= 0 && viewIndex < index->views().count())
|
|
ui->activeSublimeWindow()->activateView(index->views().at(viewIndex));
|
|
}
|
|
|
|
void MainWindowPrivate::gotoNextWindow()
|
|
{
|
|
gotoPrevNextWindow(true);
|
|
}
|
|
|
|
void MainWindowPrivate::gotoPreviousWindow()
|
|
{
|
|
gotoPrevNextWindow(false);
|
|
}
|
|
|
|
void MainWindowPrivate::newToolbarConfig()
|
|
{
|
|
m_mainWindow->applyMainWindowSettings( KConfigGroup(KGlobal::config(), "MainWindow") );
|
|
}
|
|
|
|
void MainWindowPrivate::settingsDialog()
|
|
{
|
|
Core::self()->uiControllerInternal()->showSettingsDialog();
|
|
}
|
|
|
|
void MainWindowPrivate::newWindow()
|
|
{
|
|
Core::self()->uiController()->switchToArea(m_mainWindow->area()->objectName(), UiController::NewWindow);
|
|
}
|
|
|
|
void MainWindowPrivate::splitHorizontal()
|
|
{
|
|
split(Qt::Vertical);
|
|
}
|
|
|
|
void MainWindowPrivate::splitVertical()
|
|
{
|
|
split(Qt::Horizontal);
|
|
}
|
|
|
|
void MainWindowPrivate::split(Qt::Orientation orientation)
|
|
{
|
|
if (!m_mainWindow->area())
|
|
return;
|
|
Sublime::View *view = m_mainWindow->activeView();
|
|
if (!view)
|
|
return;
|
|
|
|
Sublime::View *newView = view->document()->createView();
|
|
m_mainWindow->area()->addView(newView, view, orientation);
|
|
|
|
m_mainWindow->activateView(newView);
|
|
}
|
|
|
|
static void gotoPrevNextSplit(bool next)
|
|
{
|
|
UiController* ui = Core::self()->uiControllerInternal();
|
|
|
|
if( !ui->activeSublimeWindow() )
|
|
return;
|
|
|
|
Sublime::Area* area = ui->activeSublimeWindow()->area();
|
|
if (!area)
|
|
return;
|
|
|
|
QList<Sublime::View*> topViews = ui->activeSublimeWindow()->getTopViews();
|
|
|
|
Sublime::View *activeView = ui->activeSublimeWindow()->activeView();
|
|
if (!activeView)
|
|
return;
|
|
|
|
int viewIndex = topViews.indexOf(activeView);
|
|
viewIndex = next ? viewIndex + 1 : viewIndex -1;
|
|
|
|
if (viewIndex < 0)
|
|
viewIndex = topViews.count() - 1;
|
|
else if (viewIndex >= topViews.count())
|
|
viewIndex = 0;
|
|
|
|
if (viewIndex >= 0 && viewIndex < topViews.count())
|
|
ui->activeSublimeWindow()->activateView(topViews.at(viewIndex));
|
|
}
|
|
|
|
void MainWindowPrivate::gotoNextSplit()
|
|
{
|
|
gotoPrevNextSplit(true);
|
|
}
|
|
|
|
void MainWindowPrivate::gotoPreviousSplit()
|
|
{
|
|
gotoPrevNextSplit(false);
|
|
}
|
|
|
|
void MainWindowPrivate::toggleFullScreen(bool fullScreen)
|
|
{
|
|
KToggleFullScreenAction::setFullScreen( m_mainWindow, fullScreen );
|
|
}
|
|
|
|
void MainWindowPrivate::fileNew()
|
|
{
|
|
Core::self()->documentControllerInternal()->openDocument(DocumentController::nextEmptyDocumentUrl());
|
|
}
|
|
|
|
void MainWindowPrivate::viewAddNewToolView()
|
|
{
|
|
Core::self()->uiControllerInternal()->selectNewToolViewToAdd(m_mainWindow);
|
|
}
|
|
|
|
void MainWindowPrivate::quitAll()
|
|
{
|
|
s_quitRequested = true;
|
|
|
|
QApplication::closeAllWindows();
|
|
|
|
//if (Core::self()->documentController()->saveAllDocuments(IDocument::Default))
|
|
// return qApp->exit();
|
|
|
|
s_quitRequested = false;
|
|
}
|
|
|
|
void MainWindowPrivate::configureNotifications()
|
|
{
|
|
KNotifyConfigWidget::configure(m_mainWindow);
|
|
}
|
|
|
|
void MainWindowPrivate::showAboutPlatform()
|
|
{
|
|
KAboutApplicationDialog dlg(Core::self()->componentData().aboutData(), m_mainWindow );
|
|
dlg.exec();
|
|
}
|
|
|
|
void MainWindowPrivate::showLoadedPlugins()
|
|
{
|
|
LoadedPluginsDialog dlg(m_mainWindow);
|
|
dlg.exec();
|
|
}
|
|
|
|
void MainWindowPrivate::showEditorConfig()
|
|
{
|
|
KTextEditor::Editor* editor = Core::self()->partController()->editorPart();
|
|
if (editor->configDialogSupported()) {
|
|
editor->configDialog(m_mainWindow);
|
|
editor->writeConfig();
|
|
}
|
|
}
|
|
|
|
void MainWindowPrivate::contextMenuFileNew()
|
|
{
|
|
m_mainWindow->activateView(m_tabView);
|
|
fileNew();
|
|
}
|
|
|
|
void MainWindowPrivate::contextMenuSplitHorizontal()
|
|
{
|
|
m_mainWindow->activateView(m_tabView);
|
|
splitHorizontal();
|
|
}
|
|
|
|
void MainWindowPrivate::contextMenuSplitVertical()
|
|
{
|
|
m_mainWindow->activateView(m_tabView);
|
|
splitVertical();
|
|
}
|
|
|
|
void MainWindowPrivate::reloadAll()
|
|
{
|
|
foreach ( IDocument* doc, Core::self()->documentController()->openDocuments() ) {
|
|
doc->reload();
|
|
}
|
|
}
|
|
|
|
}
|
|
|