|
|
|
/*
|
|
|
|
* Copyright (C) 1999-2002 Bernd Gehrmann
|
|
|
|
* bernd@mail.berlios.de
|
|
|
|
* Copyright (c) 2002-2004 Christian Loose <christian.loose@kdemail.net>
|
|
|
|
*
|
|
|
|
* This program is free software; you can redistribute it and/or modify
|
|
|
|
* it under the terms of the GNU General Public License as published by
|
|
|
|
* the Free Software Foundation; either version 2 of the License, or
|
|
|
|
* (at your option) any later version.
|
|
|
|
*
|
|
|
|
* This program 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 General Public License for more details.
|
|
|
|
*
|
|
|
|
* You should have received a copy of the GNU General Public License
|
|
|
|
* along with this program; if not, write to the Free Software
|
|
|
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
#include "cervisiashell.h"
|
|
|
|
|
|
|
|
#include <tdeapplication.h>
|
|
|
|
#include <tdeconfig.h>
|
|
|
|
#include <kedittoolbar.h>
|
|
|
|
#include <khelpmenu.h>
|
|
|
|
#include <kkeydialog.h>
|
|
|
|
#include <klibloader.h>
|
|
|
|
#include <tdelocale.h>
|
|
|
|
#include <tdemessagebox.h>
|
|
|
|
#include <kstatusbar.h>
|
|
|
|
#include <kstdaction.h>
|
|
|
|
#include <kurl.h>
|
|
|
|
|
|
|
|
|
|
|
|
CervisiaShell::CervisiaShell( const char *name )
|
|
|
|
: KParts::MainWindow( name )
|
|
|
|
, m_part(0)
|
|
|
|
{
|
|
|
|
setXMLFile( "cervisiashellui.rc" );
|
|
|
|
|
|
|
|
KLibFactory* factory = KLibLoader::self()->factory("libcervisiapart");
|
|
|
|
if( factory )
|
|
|
|
{
|
|
|
|
m_part = static_cast<KParts::ReadOnlyPart*>(factory->create(this,
|
|
|
|
"cervisiaview", "KParts::ReadOnlyPart"));
|
|
|
|
if( m_part )
|
|
|
|
setCentralWidget(m_part->widget());
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
KMessageBox::detailedError(this, i18n("The Cervisia library could not be loaded."),
|
|
|
|
KLibLoader::self()->lastErrorMessage());
|
|
|
|
kapp->quit();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
setupActions();
|
|
|
|
|
|
|
|
//
|
|
|
|
// Magic needed for status texts
|
|
|
|
//
|
|
|
|
actionCollection()->setHighlightingEnabled(true);
|
|
|
|
connect( actionCollection(), TQT_SIGNAL( actionStatusText(const TQString &) ),
|
|
|
|
statusBar(), TQT_SLOT( message(const TQString &) ) );
|
|
|
|
connect( actionCollection(), TQT_SIGNAL( clearStatusText() ),
|
|
|
|
statusBar(), TQT_SLOT( clear() ) );
|
|
|
|
m_part->actionCollection()->setHighlightingEnabled(true);
|
|
|
|
connect( m_part->actionCollection(), TQT_SIGNAL( actionStatusText(const TQString &) ),
|
|
|
|
statusBar(), TQT_SLOT( message(const TQString &) ) );
|
|
|
|
connect( m_part->actionCollection(), TQT_SIGNAL( clearStatusText() ),
|
|
|
|
statusBar(), TQT_SLOT( clear() ) );
|
|
|
|
|
|
|
|
createGUI( m_part );
|
|
|
|
|
|
|
|
// enable auto-save of toolbar/menubar/statusbar and window size settings
|
|
|
|
// and apply the previously saved settings
|
|
|
|
setAutoSaveSettings("MainWindow", true);
|
|
|
|
|
|
|
|
// if the session is restoring, we already read the settings
|
|
|
|
if( !kapp->isRestored() )
|
|
|
|
readSettings();
|
|
|
|
}
|
|
|
|
|
|
|
|
CervisiaShell::~CervisiaShell()
|
|
|
|
{
|
|
|
|
delete m_part;
|
|
|
|
}
|
|
|
|
|
|
|
|
void CervisiaShell::setupActions()
|
|
|
|
{
|
|
|
|
setStandardToolBarMenuEnabled( true );
|
|
|
|
|
|
|
|
TDEAction *action = KStdAction::configureToolbars( this, TQT_SLOT(slotConfigureToolBars()),
|
|
|
|
actionCollection() );
|
|
|
|
TQString hint = i18n("Allows you to configure the toolbar");
|
|
|
|
action->setToolTip( hint );
|
|
|
|
action->setWhatsThis( hint );
|
|
|
|
|
|
|
|
action = KStdAction::keyBindings( this, TQT_SLOT(slotConfigureKeys()),
|
|
|
|
actionCollection() );
|
|
|
|
hint = i18n("Allows you to customize the keybindings");
|
|
|
|
action->setToolTip( hint );
|
|
|
|
action->setWhatsThis( hint );
|
|
|
|
|
|
|
|
action = KStdAction::quit( kapp, TQT_SLOT( quit() ), actionCollection() );
|
|
|
|
hint = i18n("Exits Cervisia");
|
|
|
|
action->setToolTip( hint );
|
|
|
|
action->setWhatsThis( hint );
|
|
|
|
|
|
|
|
setHelpMenuEnabled(false);
|
|
|
|
(void) new KHelpMenu(this, instance()->aboutData(), false, actionCollection());
|
|
|
|
|
|
|
|
action = actionCollection()->action("help_contents");
|
|
|
|
hint = i18n("Invokes the TDE help system with the Cervisia documentation");
|
|
|
|
action->setToolTip( hint );
|
|
|
|
action->setWhatsThis( hint );
|
|
|
|
|
|
|
|
action = actionCollection()->action("help_report_bug");
|
|
|
|
hint = i18n("Opens the bug report dialog");
|
|
|
|
action->setToolTip( hint );
|
|
|
|
action->setWhatsThis( hint );
|
|
|
|
|
|
|
|
action = actionCollection()->action("help_about_app");
|
|
|
|
hint = i18n("Displays the version number and copyright information");
|
|
|
|
action->setToolTip( hint );
|
|
|
|
action->setWhatsThis( hint );
|
|
|
|
|
|
|
|
action = actionCollection()->action("help_about_kde");
|
|
|
|
hint = i18n("Displays the information about TDE and its version number");
|
|
|
|
action->setToolTip( hint );
|
|
|
|
action->setWhatsThis( hint );
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void CervisiaShell::openURL()
|
|
|
|
{
|
|
|
|
if( !m_lastOpenDir.isEmpty() )
|
|
|
|
m_part->openURL(KURL::fromPathOrURL(m_lastOpenDir));
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void CervisiaShell::openURL(const KURL& url)
|
|
|
|
{
|
|
|
|
m_part->openURL(url);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void CervisiaShell::slotConfigureKeys()
|
|
|
|
{
|
|
|
|
KKeyDialog dlg;
|
|
|
|
dlg.insert(actionCollection());
|
|
|
|
if( m_part )
|
|
|
|
dlg.insert(m_part->actionCollection());
|
|
|
|
|
|
|
|
dlg.configure();
|
|
|
|
}
|
|
|
|
|
|
|
|
void CervisiaShell::slotConfigureToolBars()
|
|
|
|
{
|
|
|
|
saveMainWindowSettings( TDEGlobal::config(), autoSaveGroup() );
|
|
|
|
KEditToolbar dlg( factory() );
|
|
|
|
connect(&dlg,TQT_SIGNAL(newToolbarConfig()),this,TQT_SLOT(slotNewToolbarConfig()));
|
|
|
|
dlg.exec();
|
|
|
|
}
|
|
|
|
|
|
|
|
void CervisiaShell::slotNewToolbarConfig()
|
|
|
|
{
|
|
|
|
applyMainWindowSettings( TDEGlobal::config(), autoSaveGroup() );
|
|
|
|
}
|
|
|
|
|
|
|
|
bool CervisiaShell::queryExit()
|
|
|
|
{
|
|
|
|
writeSettings();
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void CervisiaShell::readProperties(TDEConfig* config)
|
|
|
|
{
|
|
|
|
m_lastOpenDir = config->readPathEntry("Current Directory");
|
|
|
|
|
|
|
|
// if the session is restoring, make sure we open the URL
|
|
|
|
// since it's not handled by main()
|
|
|
|
if( kapp->isRestored() )
|
|
|
|
openURL();
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void CervisiaShell::saveProperties(TDEConfig* config)
|
|
|
|
{
|
|
|
|
// Save current working directory (if part was created)
|
|
|
|
if( m_part )
|
|
|
|
{
|
|
|
|
config->writePathEntry("Current Directory", m_part->url().path());
|
|
|
|
|
|
|
|
// write to disk
|
|
|
|
config->sync();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void CervisiaShell::readSettings()
|
|
|
|
{
|
|
|
|
TDEConfig* config = TDEGlobal::config();
|
|
|
|
config->setGroup("Session");
|
|
|
|
|
|
|
|
readProperties(config);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void CervisiaShell::writeSettings()
|
|
|
|
{
|
|
|
|
TDEConfig* config = TDEGlobal::config();
|
|
|
|
config->setGroup("Session");
|
|
|
|
|
|
|
|
saveProperties(config);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#include "cervisiashell.moc"
|