diff options
Diffstat (limited to 'kate/app/katesession.cpp')
-rw-r--r-- | kate/app/katesession.cpp | 698 |
1 files changed, 0 insertions, 698 deletions
diff --git a/kate/app/katesession.cpp b/kate/app/katesession.cpp index 91f655613..1f7817f01 100644 --- a/kate/app/katesession.cpp +++ b/kate/app/katesession.cpp @@ -898,704 +898,6 @@ void KateSessionChooser::slotSelectionChanged() } //END KateSessionChooser - - - - -//------------------------------------ -//------------------------------------ -//------------------------------------ -//------------------------------------ -OldKateSession::OldKateSession (OldKateSessionManager *manager, const TQString &fileName, const TQString &name) - : m_sessionFileRel (fileName) - , m_sessionName (name) - , m_documents (0) - , m_manager (manager) - , m_readConfig (0) - , m_writeConfig (0) -{ - init (); -} - -void OldKateSession::init () -{ - // given file exists, use it to load some stuff ;) - if (!m_sessionFileRel.isEmpty() && TDEGlobal::dirs()->exists(sessionFile ())) - { - KSimpleConfig config (sessionFile (), true); - - if (m_sessionName.isEmpty()) - { - // get the name out of the file - if (m_sessionFileRel == "default.katesession") - m_sessionName = i18n("Default Session"); - else - { - config.setGroup ("General"); - m_sessionName = config.readEntry ("Name", i18n ("Unnamed Session")); - } - } - - // get the document count - config.setGroup ("Open Documents"); - m_documents = config.readUnsignedNumEntry("Count", 0); - - return; - } - - // filename not empty, create the file - // anders: When will this ever happen??? - if (!m_sessionFileRel.isEmpty()) - { - kdDebug(13001)<<"Kate::Session: initializing unexisting file!"<<endl; - // uhh, no name given - if (m_sessionName.isEmpty()) - { - if (m_sessionFileRel == "default.katesession") - m_sessionName = i18n("Default Session"); - else - m_sessionName = i18n("Session (%1)").arg(TQTime::currentTime().toString(Qt::LocalDate)); - } - - // create the file, write name to it! - KSimpleConfig config (sessionFile ()); - config.setGroup ("General"); - config.writeEntry ("Name", m_sessionName); - - config.sync (); - } -} - -OldKateSession::~OldKateSession () -{ - delete m_readConfig; - delete m_writeConfig; -} - -TQString OldKateSession::sessionFile () const -{ - return m_manager->sessionsDir() + "/" + m_sessionFileRel; -} - -bool OldKateSession::create (const TQString &name, bool force) -{ - if (!force && (name.isEmpty() || !m_sessionFileRel.isEmpty())) - return false; - - delete m_writeConfig; - m_writeConfig = 0; - - delete m_readConfig; - m_readConfig = 0; - - m_sessionName = name; - - // get a usable filename - int s = time(0); - TQCString tname; - while (true) - { - tname.setNum (s++); - KMD5 md5 (tname); - m_sessionFileRel = TQString ("%1.katesession").arg (md5.hexDigest().data()); - - if (!TDEGlobal::dirs()->exists(sessionFile ())) - break; - } - - // create the file, write name to it! - KSimpleConfig config (sessionFile ()); - config.setGroup ("General"); - config.writeEntry ("Name", m_sessionName); - config.sync (); - - // reinit ourselfs ;) - init (); - - return true; -} - -bool OldKateSession::rename (const TQString &name) -{ - if (name.isEmpty () || m_sessionFileRel.isEmpty() || m_sessionFileRel == "default.katesession") - return false; - - m_sessionName = name; - - TDEConfig config (sessionFile (), false, false); - config.setGroup ("General"); - config.writeEntry ("Name", m_sessionName); - config.sync (); - - return true; -} - -TDEConfig *OldKateSession::configRead () -{ - if (m_sessionFileRel.isEmpty()) - return 0; - - if (m_readConfig) - return m_readConfig; - - return m_readConfig = new KSimpleConfig (sessionFile (), true); -} - -TDEConfig *OldKateSession::configWrite () -{ - if (m_sessionFileRel.isEmpty()) - return 0; - - if (m_writeConfig) - return m_writeConfig; - - m_writeConfig = new KSimpleConfig (sessionFile ()); - m_writeConfig->setGroup ("General"); - m_writeConfig->writeEntry ("Name", m_sessionName); - - return m_writeConfig; -} - -OldKateSessionManager::OldKateSessionManager (TQObject *parent) - : TQObject (parent) - , m_sessionsDir (locateLocal( "data", "kate/sessions")) - , m_activeSession (new OldKateSession (this, "", "")) -{ - kdDebug() << "LOCAL SESSION DIR: " << m_sessionsDir << endl; - - // create dir if needed - TDEGlobal::dirs()->makeDir (m_sessionsDir); -} - -OldKateSessionManager::~OldKateSessionManager() -{ -} - -OldKateSessionManager *OldKateSessionManager::self() -{ - return (OldKateSessionManager*)KateApp::self()->sessionManager(); -} - -void OldKateSessionManager::dirty (const TQString &) -{ - updateSessionList (); -} - -void OldKateSessionManager::updateSessionList () -{ - m_sessionList.clear (); - - // Let's get a list of all session we have atm - TQDir dir (m_sessionsDir, "*.katesession"); - - bool foundDefault = false; - for (unsigned int i=0; i < dir.count(); ++i) - { - OldKateSession *session = new OldKateSession (this, dir[i], ""); - m_sessionList.append (session); - - kdDebug () << "FOUND SESSION: " << session->sessionName() << " FILE: " << session->sessionFile() << endl; - - if (!foundDefault && (dir[i] == "default.katesession")) - foundDefault = true; - } - - // add default session, if not there - if (!foundDefault) - m_sessionList.append (new OldKateSession (this, "default.katesession", i18n("Default Session"))); - - qHeapSort(m_sessionList); -} - -void OldKateSessionManager::activateSession (OldKateSession::Ptr session, bool closeLast, bool saveLast, bool loadNew) -{ - // don't reload. - // ### comparing the pointers directly is b0rk3d :( - if ( ! session->sessionName().isEmpty() && session->sessionName() == m_activeSession->sessionName() ) - return; - // try to close last session - if (closeLast) - { - if (KateApp::self()->activeMainWindow()) - { - if (!KateApp::self()->activeMainWindow()->queryClose_internal()) - return; - } - } - - // save last session or not? - if (saveLast) - saveActiveSession (true); - - // really close last - if (closeLast) - { - KateDocManager::self()->closeAllDocuments (); - } - - // set the new session - m_activeSession = session; - - if (loadNew) - { - // open the new session - Kate::Document::setOpenErrorDialogsActivated (false); - - TDEConfig *sc = activeSession()->configRead(); - - if (sc) - KateApp::self()->documentManager()->restoreDocumentList (sc); - - // if we have no session config object, try to load the default - // (anonymous/unnamed sessions) - if ( ! sc ) - sc = new KSimpleConfig( sessionsDir() + "/default.katesession" ); - - // window config - if (sc) - { - TDEConfig *c = KateApp::self()->config(); - c->setGroup("General"); - - if (c->readBoolEntry("Restore Window Configuration", true)) - { - // a new, named session, read settings of the default session. - if ( ! sc->hasGroup("Open MainWindows") ) - sc = new KSimpleConfig( sessionsDir() + "/default.katesession" ); - - sc->setGroup ("Open MainWindows"); - unsigned int wCount = sc->readUnsignedNumEntry("Count", 1); - - for (unsigned int i=0; i < wCount; ++i) - { - if (i >= KateApp::self()->mainWindows()) - { - KateApp::self()->newMainWindow(sc, TQString ("MainWindow%1").arg(i)); - } - else - { - sc->setGroup(TQString ("MainWindow%1").arg(i)); - KateApp::self()->mainWindow(i)->readProperties (sc); - } - } - - if (wCount > 0) - { - while (wCount < KateApp::self()->mainWindows()) - { - KateMainWindow *w = KateApp::self()->mainWindow(KateApp::self()->mainWindows()-1); - KateApp::self()->removeMainWindow (w); - delete w; - } - } - } - } - - Kate::Document::setOpenErrorDialogsActivated (true); - } -} - -OldKateSession::Ptr OldKateSessionManager::createSession (const TQString &name) -{ - OldKateSession::Ptr s = new OldKateSession (this, "", ""); - s->create (name); - - return s; -} - -OldKateSession::Ptr OldKateSessionManager::giveSession (const TQString &name) -{ - if (name.isEmpty()) - return new OldKateSession (this, "", ""); - - updateSessionList(); - - for (unsigned int i=0; i < m_sessionList.count(); ++i) - { - if (m_sessionList[i]->sessionName() == name) - return m_sessionList[i]; - } - - return createSession (name); -} - -bool OldKateSessionManager::saveActiveSession (bool tryAsk, bool rememberAsLast) -{ - if (tryAsk) - { - // app config - TDEConfig *c = KateApp::self()->config(); - c->setGroup("General"); - - TQString sesExit (c->readEntry ("Session Exit", "save")); - - if (sesExit == "discard") - return true; - - if (sesExit == "ask") - { - KDialogBase* dlg = new KDialogBase(i18n ("Save Session?") - , KDialogBase::Yes | KDialogBase::No - , KDialogBase::Yes, KDialogBase::No - ); - - bool dontAgain = false; - int res = KMessageBox::createKMessageBox(dlg, TQMessageBox::Question, - i18n("Save current session?"), TQStringList(), - i18n("Do not ask again"), &dontAgain, KMessageBox::Notify); - - // remember to not ask again with right setting - if (dontAgain) - { - c->setGroup("General"); - - if (res == KDialogBase::No) - c->writeEntry ("Session Exit", "discard"); - else - c->writeEntry ("Session Exit", "save"); - } - - if (res == KDialogBase::No) - return true; - } - } - - TDEConfig *sc = activeSession()->configWrite(); - - if (!sc) - return false; - - KateDocManager::self()->saveDocumentList (sc); - - sc->setGroup ("Open MainWindows"); - sc->writeEntry ("Count", KateApp::self()->mainWindows ()); - - // save config for all windows around ;) - for (unsigned int i=0; i < KateApp::self()->mainWindows (); ++i ) - { - sc->setGroup(TQString ("MainWindow%1").arg(i)); - KateApp::self()->mainWindow(i)->saveProperties (sc); - } - - sc->sync(); - - if (rememberAsLast) - { - TDEConfig *c = KateApp::self()->config(); - c->setGroup("General"); - c->sync (); - } - - return true; -} - -void OldKateSessionManager::sessionNew () -{ - activateSession (new OldKateSession (this, "", "")); -} - -void OldKateSessionManager::sessionOpen () -{ - OldKateSessionOpenDialog *chooser = new OldKateSessionOpenDialog (0); - - int res = chooser->exec (); - - if (res == OldKateSessionOpenDialog::resultCancel) - { - delete chooser; - return; - } - - OldKateSession::Ptr s = chooser->selectedSession (); - - if (s) - activateSession (s); - - delete chooser; -} - -void OldKateSessionManager::sessionSave () -{ - // if the active session is valid, just save it :) - if (saveActiveSession ()) - return; - - bool ok = false; - TQString name = KInputDialog::getText (i18n("Specify Name for Current Session"), i18n("Session name:"), "", &ok); - - if (!ok) - return; - - if (name.isEmpty()) - { - KMessageBox::error (0, i18n("To save a new session, you must specify a name."), i18n ("Missing Session Name")); - return; - } - - activeSession()->create (name); - saveActiveSession (); -} - -void OldKateSessionManager::sessionSaveAs () -{ - bool ok = false; - TQString name = KInputDialog::getText (i18n("Specify New Name for Current Session"), i18n("Session name:"), "", &ok); - - if (!ok) - return; - - if (name.isEmpty()) - { - KMessageBox::error (0, i18n("To save a session, you must specify a name."), i18n ("Missing Session Name")); - return; - } - - activeSession()->create (name, true); - saveActiveSession (); -} - - -void OldKateSessionManager::sessionManage () -{ - OldKateSessionManageDialog *dlg = new OldKateSessionManageDialog (0); - - dlg->exec (); - - delete dlg; -} - -//BEGIN CHOOSER DIALOG - -class OldKateSessionChooserItem : public TQListViewItem -{ - public: - OldKateSessionChooserItem (TDEListView *lv, OldKateSession::Ptr s) - : TQListViewItem (lv, s->sessionName()) - , session (s) - { - TQString docs; - docs.setNum (s->documents()); - setText (1, docs); - } - - OldKateSession::Ptr session; -}; - - -//END CHOOSER DIALOG - -//BEGIN OPEN DIALOG - -OldKateSessionOpenDialog::OldKateSessionOpenDialog (TQWidget *parent) - : KDialogBase ( parent - , "" - , true - , i18n ("Open Session") - , KDialogBase::User1 | KDialogBase::User2 - , KDialogBase::User2 - , false - , KStdGuiItem::cancel () - , KGuiItem( i18n("&Open"), "document-open") - ) -{ - TQHBox *page = new TQHBox (this); - page->setMinimumSize (400, 200); - setMainWidget(page); - - TQHBox *hb = new TQHBox (page); - - TQVBox *vb = new TQVBox (hb); - - m_sessions = new TDEListView (vb); - m_sessions->addColumn (i18n("Session Name")); - m_sessions->addColumn (i18n("Open Documents")); - m_sessions->setResizeMode (TQListView::AllColumns); - m_sessions->setSelectionMode (TQListView::Single); - m_sessions->setAllColumnsShowFocus (true); - - connect (m_sessions, TQT_SIGNAL(doubleClicked(TQListViewItem *, const TQPoint &, int)), this, TQT_SLOT(slotUser2())); - - OldKateSessionList &slist (OldKateSessionManager::self()->sessionList()); - for (unsigned int i=0; i < slist.count(); ++i) - { - new OldKateSessionChooserItem (m_sessions, slist[i]); - } - - setResult (resultCancel); -} - -OldKateSessionOpenDialog::~OldKateSessionOpenDialog () -{ -} - -OldKateSession::Ptr OldKateSessionOpenDialog::selectedSession () -{ - OldKateSessionChooserItem *item = (OldKateSessionChooserItem *) m_sessions->selectedItem (); - - if (!item) - return 0; - - return item->session; -} - -void OldKateSessionOpenDialog::slotUser1 () -{ - done (resultCancel); -} - -void OldKateSessionOpenDialog::slotUser2 () -{ - done (resultOk); -} - -//END OPEN DIALOG - -//BEGIN MANAGE DIALOG - -OldKateSessionManageDialog::OldKateSessionManageDialog (TQWidget *parent) - : KDialogBase ( parent - , "" - , true - , i18n ("Manage Sessions") - , KDialogBase::User1 - , KDialogBase::User1 - , false - , KStdGuiItem::close () - ) -{ - TQHBox *page = new TQHBox (this); - page->setMinimumSize (400, 200); - setMainWidget(page); - - TQHBox *hb = new TQHBox (page); - hb->setSpacing (KDialog::spacingHint()); - - m_sessions = new TDEListView (hb); - m_sessions->addColumn (i18n("Session Name")); - m_sessions->addColumn (i18n("Open Documents")); - m_sessions->setResizeMode (TQListView::AllColumns); - m_sessions->setSelectionMode (TQListView::Single); - m_sessions->setAllColumnsShowFocus (true); - - connect (m_sessions, TQT_SIGNAL(selectionChanged()), this, TQT_SLOT(selectionChanged())); - - updateSessionList (); - - TQWidget *vb = new TQWidget (hb); - TQVBoxLayout *vbl = new TQVBoxLayout (vb); - vbl->setSpacing (KDialog::spacingHint()); - - m_rename = new KPushButton (i18n("&Rename..."), vb); - connect (m_rename, TQT_SIGNAL(clicked()), this, TQT_SLOT(rename())); - vbl->addWidget (m_rename); - - m_del = new KPushButton (KStdGuiItem::del (), vb); - connect (m_del, TQT_SIGNAL(clicked()), this, TQT_SLOT(del())); - vbl->addWidget (m_del); - - vbl->addStretch (); - - // trigger action update - selectionChanged (); -} - -OldKateSessionManageDialog::~OldKateSessionManageDialog () -{ -} - -void OldKateSessionManageDialog::slotUser1 () -{ - done (0); -} - - -void OldKateSessionManageDialog::selectionChanged () -{ - OldKateSessionChooserItem *item = (OldKateSessionChooserItem *) m_sessions->selectedItem (); - - m_rename->setEnabled (item && item->session->sessionFileRelative() != "default.katesession"); - m_del->setEnabled (item && item->session->sessionFileRelative() != "default.katesession"); -} - -void OldKateSessionManageDialog::rename () -{ - OldKateSessionChooserItem *item = (OldKateSessionChooserItem *) m_sessions->selectedItem (); - - if (!item || item->session->sessionFileRelative() == "default.katesession") - return; - - bool ok = false; - TQString name = KInputDialog::getText (i18n("Specify New Name for Session"), i18n("Session name:"), item->session->sessionName(), &ok); - - if (!ok) - return; - - if (name.isEmpty()) - { - KMessageBox::error (0, i18n("To save a session, you must specify a name."), i18n ("Missing Session Name")); - return; - } - - item->session->rename (name); - updateSessionList (); -} - -void OldKateSessionManageDialog::del () -{ - OldKateSessionChooserItem *item = (OldKateSessionChooserItem *) m_sessions->selectedItem (); - - if (!item || item->session->sessionFileRelative() == "default.katesession") - return; - - TQFile::remove (item->session->sessionFile()); - OldKateSessionManager::self()->updateSessionList (); - updateSessionList (); -} - -void OldKateSessionManageDialog::updateSessionList () -{ - m_sessions->clear (); - - OldKateSessionList &slist (OldKateSessionManager::self()->sessionList()); - for (unsigned int i=0; i < slist.count(); ++i) - { - new OldKateSessionChooserItem (m_sessions, slist[i]); - } -} - -//END MANAGE DIALOG - - -OldKateSessionsAction::OldKateSessionsAction(const TQString& text, TQObject* parent, const char* name ) - : TDEActionMenu(text, parent, name) -{ - connect(popupMenu(),TQT_SIGNAL(aboutToShow()),this,TQT_SLOT(slotAboutToShow())); -} - -void OldKateSessionsAction::slotAboutToShow() -{ - popupMenu()->clear (); - - OldKateSessionList &slist (OldKateSessionManager::self()->sessionList()); - for (unsigned int i=0; i < slist.count(); ++i) - { - popupMenu()->insertItem ( - slist[i]->sessionName(), - this, TQT_SLOT (openSession (int)), 0, - i ); - } -} - -void OldKateSessionsAction::openSession (int i) -{ - OldKateSessionList &slist (OldKateSessionManager::self()->sessionList()); - - if ((uint)i >= slist.count()) - return; - - OldKateSessionManager::self()->activateSession(slist[(uint)i]); -} - #include "katesession.moc" // kate: space-indent on; indent-width 2; replace-tabs on; mixed-indent off; |