void KateApp::restoreKate () { // restore the nice files ;) we need it Kate::Document::setOpenErrorDialogsActivated (false); // activate again correct session!!! sessionConfig()->setGroup("General"); QString lastSession (sessionConfig()->readEntry ("Last Session", "default.katesession")); sessionManager()->activateSession (new KateSession (sessionManager(), lastSession, ""), false, false, false); m_docManager->restoreDocumentList (sessionConfig()); Kate::Document::setOpenErrorDialogsActivated (true); // restore all windows ;) for (int n=1; KMainWindow::canBeRestored(n); n++) newMainWindow(sessionConfig(), QString ("%1").arg(n)); // oh, no mainwindow, create one, should not happen, but make sure ;) if (mainWindows() == 0) newMainWindow (); // notify about start KStartupInfo::setNewStartupId( activeMainWindow(), startupId()); }
BrowserMainWindow *BrowserApplication::mainWindow() { clean(); if (m_mainWindows.isEmpty()) newMainWindow(); return m_mainWindows[0]; }
void BrowserApplication::restoreLastSession() { QList<QByteArray> windows; QBuffer buffer(&m_lastSession); QDataStream stream(&buffer); buffer.open(QIODevice::ReadOnly); int windowCount; stream >> windowCount; for (int i = 0; i < windowCount; ++i) { QByteArray windowState; stream >> windowState; windows.append(windowState); } for (int i = 0; i < windows.count(); ++i) { BrowserMainWindow *newWindow = 0; if (m_mainWindows.count() == 1 && mainWindow()->tabWidget()->count() == 1 && mainWindow()->currentTab()->url() == QUrl()) { newWindow = mainWindow(); } else { newWindow = newMainWindow(); } newWindow->restoreState(windows.at(i)); } }
bool BrowserApplication::restoreLastSession() { int version = 2; QList<QByteArray> windows; QBuffer buffer(&m_lastSession); QDataStream stream(&buffer); buffer.open(QIODevice::ReadOnly); qint32 marker; qint32 v; stream >> marker; stream >> v; if (marker != BrowserApplicationMagic || v != version) return false; qint32 windowCount; stream >> windowCount; for (qint32 i = 0; i < windowCount; ++i) { QByteArray windowState; stream >> windowState; windows.append(windowState); } for (int i = 0; i < windows.count(); ++i) { BrowserMainWindow *newWindow = 0; if (m_mainWindows.count() == 1 && mainWindow()->tabWidget()->count() == 1 && mainWindow()->currentTab()->url() == QUrl()) { newWindow = mainWindow(); } else { newWindow = newMainWindow(); } newWindow->restoreState(windows.at(i)); } return true; }
void BrowserApplication::newLocalSocketConnection() { QLocalSocket *socket = m_localServer->nextPendingConnection(); if (!socket) return; socket->waitForReadyRead(1000); QDataStream stream(socket); QSharedDataPointer<ProcessOptions> processOptions(new ProcessOptions()); stream >> *processOptions; QString url = processOptions->url; if (!url.isEmpty()) { QSettings settings; settings.beginGroup(QLatin1String("general")); int openLinksIn = settings.value(QLatin1String("openLinksIn"), 0).toInt(); settings.endGroup(); if (openLinksIn == 1) newMainWindow(processOptions); else { mainWindow()->tabWidget()->newTab(processOptions); } openUrl(url); } delete socket; mainWindow()->raise(); mainWindow()->activateWindow(); }
void KateApp::restoreKate () { // activate again correct session!!! QString lastSession (sessionConfig()->group("General").readEntry ("Last Session", QString())); sessionManager()->activateSession (KateSession::Ptr(new KateSession (sessionManager(), lastSession)), false, false, false); // plugins KatePluginManager::self ()->loadConfig (sessionConfig()); // restore the files we need m_docManager->restoreDocumentList (sessionConfig()); // restore all windows ;) for (int n = 1; KMainWindow::canBeRestored(n); n++) newMainWindow(sessionConfig(), QString ("%1").arg(n)); // oh, no mainwindow, create one, should not happen, but make sure ;) if (mainWindows() == 0) newMainWindow (); }
bool BrowserApplication::restoreLastSession() { { QSettings settings; settings.beginGroup(QLatin1String("MainWindow")); if (settings.value(QLatin1String("restoring"), false).toBool()) { QMessageBox::information(0, tr("Restore failed"), tr("The saved session will not be restored because Arora crashed while trying to restore this session.")); return false; } // saveSession will be called by an AutoSaver timer from the set tabs // and in saveSession we will reset this flag back to false settings.setValue(QLatin1String("restoring"), true); } int version = 2; QList<QByteArray> windows; QBuffer buffer(&m_lastSession); QDataStream stream(&buffer); buffer.open(QIODevice::ReadOnly); qint32 marker; qint32 v; stream >> marker; stream >> v; if (marker != BrowserApplicationMagic || v != version) return false; qint32 windowCount; stream >> windowCount; for (qint32 i = 0; i < windowCount; ++i) { QByteArray windowState; stream >> windowState; windows.append(windowState); } for (int i = 0; i < windows.count(); ++i) { BrowserMainWindow *newWindow = 0; if (i == 0 && m_mainWindows.count() >= 1) { newWindow = mainWindow(); } else { newWindow = newMainWindow(); } newWindow->restoreState(windows.at(i)); } return true; }
bool KateApp::startupKate () { // user specified session to open if (m_args->isSet ("startanon")) { sessionManager()->activateSession (sessionManager()->giveSession (""), false, false); } else if (m_args->isSet ("start")) { sessionManager()->activateSession (sessionManager()->giveSession (m_args->getOption("start")), false, false); } else if (!m_args->isSet( "stdin" ) && (m_args->count() == 0)) // only start session if no files specified { // let the user choose session if possible if (!sessionManager()->chooseSession ()) { kDebug() << "chooseSession returned false, exiting"; // we will exit kate now, notify the rest of the world we are done #ifdef Q_WS_X11 KStartupInfo::appStarted (startupId()); #endif return false; } } else { sessionManager()->activateSession( KateSession::Ptr(new KateSession (sessionManager(), QString())), false, false ); } // oh, no mainwindow, create one, should not happen, but make sure ;) if (mainWindows() == 0) newMainWindow (); // notify about start #ifdef Q_WS_X11 KStartupInfo::setNewStartupId( activeMainWindow(), startupId()); #endif QTextCodec *codec = m_args->isSet("encoding") ? QTextCodec::codecForName(m_args->getOption("encoding").toUtf8()) : 0; bool tempfileSet = KCmdLineArgs::isTempFileSet(); KTextEditor::Document *doc = 0; const QString codec_name = codec ? codec->name() : QString(); KateDocManager::self()->setSuppressOpeningErrorDialogs(true); QList<KUrl> urls; for (int z = 0; z < m_args->count(); z++) { // this file is no local dir, open it, else warn const bool noDir = !m_args->url(z).isLocalFile() || !QFileInfo (m_args->url(z).toLocalFile()).isDir(); if (noDir) { urls << m_args->url(z); } else { KMessageBox::sorry( activeMainWindow(), i18n("The file '%1' could not be opened: it is not a normal file, it is a folder.", m_args->url(z).url()) ); } } doc = activeMainWindow()->viewManager()->openUrls(urls, codec_name, tempfileSet); KateDocManager::self()->setSuppressOpeningErrorDialogs(false); // handle stdin input if( m_args->isSet( "stdin" ) ) { QTextStream input(stdin, QIODevice::ReadOnly); // set chosen codec if (codec) input.setCodec (codec); QString line; QString text; do { line = input.readLine(); text.append( line + '\n' ); } while( !line.isNull() ); openInput (text); } else if ( doc ) activeMainWindow()->viewManager()->activateView( doc ); if ( activeMainWindow()->viewManager()->viewCount () == 0 ) activeMainWindow()->viewManager()->activateView(m_docManager->document (0)); int line = 0; int column = 0; bool nav = false; if (m_args->isSet ("line")) { line = m_args->getOption ("line").toInt() - 1; nav = true; } if (m_args->isSet ("column")) { column = m_args->getOption ("column").toInt() - 1; nav = true; } if (nav && activeMainWindow()->viewManager()->activeView ()) activeMainWindow()->viewManager()->activeView ()->setCursorPosition (KTextEditor::Cursor (line, column)); // show the nice tips KTipDialog::showTip(activeMainWindow()); activeMainWindow()->setAutoSaveSettings(); kDebug() << "KateApplication::init finished successful"; return true; }
bool KateApp::startupKate () { // user specified session to open if (m_args->isSet ("start")) { sessionManager()->activateSession (sessionManager()->giveSession (QString::fromLocal8Bit(m_args->getOption("start"))), false, false); } else { // let the user choose session if possible if (!sessionManager()->chooseSession ()) { // we will exit kate now, notify the rest of the world we are done KStartupInfo::appStarted (startupId()); return false; } } // oh, no mainwindow, create one, should not happen, but make sure ;) if (mainWindows() == 0) newMainWindow (); // notify about start KStartupInfo::setNewStartupId( activeMainWindow(), startupId()); QTextCodec *codec = m_args->isSet("encoding") ? QTextCodec::codecForName(m_args->getOption("encoding")) : 0; bool tempfileSet = KCmdLineArgs::isTempFileSet(); Kate::Document::setOpenErrorDialogsActivated (false); uint id = 0; for (int z=0; z<m_args->count(); z++) { // this file is no local dir, open it, else warn bool noDir = !m_args->url(z).isLocalFile() || !QDir (m_args->url(z).path()).exists(); if (noDir) { // open a normal file if (codec) id = activeMainWindow()->viewManager()->openURL( m_args->url(z), codec->name(), false, tempfileSet ); else id = activeMainWindow()->viewManager()->openURL( m_args->url(z), QString::null, false, tempfileSet ); } else KMessageBox::sorry( activeMainWindow(), i18n("The file '%1' could not be opened: it is not a normal file, it is a folder.").arg(m_args->url(z).url()) ); } Kate::Document::setOpenErrorDialogsActivated (true); // handle stdin input if( m_args->isSet( "stdin" ) ) { QTextIStream input(stdin); // set chosen codec if (codec) input.setCodec (codec); QString line; QString text; do { line = input.readLine(); text.append( line + "\n" ); } while( !line.isNull() ); openInput (text); } else if ( id ) activeMainWindow()->viewManager()->activateView( id ); if ( activeMainWindow()->viewManager()->viewCount () == 0 ) activeMainWindow()->viewManager()->activateView(m_docManager->firstDocument()->documentNumber()); int line = 0; int column = 0; bool nav = false; if (m_args->isSet ("line")) { line = m_args->getOption ("line").toInt(); nav = true; } if (m_args->isSet ("column")) { column = m_args->getOption ("column").toInt(); nav = true; } if (nav) activeMainWindow()->viewManager()->activeView ()->setCursorPosition (line, column); // show the nice tips KTipDialog::showTip(activeMainWindow()); return true; }