diff options
| author | toma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2009-11-25 17:56:58 +0000 | 
|---|---|---|
| committer | toma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2009-11-25 17:56:58 +0000 | 
| commit | 114a878c64ce6f8223cfd22d76a20eb16d177e5e (patch) | |
| tree | acaf47eb0fa12142d3896416a69e74cbf5a72242 /kdevdesigner/src/kdevdesigner.cpp | |
| download | tdevelop-114a878c64ce6f8223cfd22d76a20eb16d177e5e.tar.gz tdevelop-114a878c64ce6f8223cfd22d76a20eb16d177e5e.zip | |
Copy the KDE 3.5 branch to branches/trinity for new KDE 3.5 features.
BUG:215923
git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdevelop@1054174 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'kdevdesigner/src/kdevdesigner.cpp')
| -rw-r--r-- | kdevdesigner/src/kdevdesigner.cpp | 216 | 
1 files changed, 216 insertions, 0 deletions
| diff --git a/kdevdesigner/src/kdevdesigner.cpp b/kdevdesigner/src/kdevdesigner.cpp new file mode 100644 index 00000000..4e2b0d0d --- /dev/null +++ b/kdevdesigner/src/kdevdesigner.cpp @@ -0,0 +1,216 @@ +/*************************************************************************** + *   Copyright (C) 2004 by Alexander Dymo                                  * + *   cloudtemple@mksat.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.,                                       * + *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             * + ***************************************************************************/ + +#include "kdevdesigner.h" + +#include <kxmlguiclient.h> +#include <kkeydialog.h> +#include <kfiledialog.h> +#include <kconfig.h> +#include <kurl.h> +#include <kdebug.h> + +#include <kedittoolbar.h> + +#include <kaction.h> +#include <kstdaction.h> + +#include <klibloader.h> +#include <kmessagebox.h> +#include <kstatusbar.h> +#include <klocale.h> + +KDevDesigner::KDevDesigner() +    : KParts::MainWindow( 0L, "KDevDesigner" ) +{ +    // set the shell's ui resource file +    setXMLFile("kdevdesigner_shell.rc"); + +    // then, setup our actions +    setupActions(); +     +    // and a status bar +    statusBar()->show(); + +    // this routine will find and load our Part.  it finds the Part by +    // name which is a bad idea usually.. but it's alright in this +    // case since our Part is made for this Shell +    KLibFactory *factory = KLibLoader::self()->factory("libkdevdesignerpart"); +    if (factory) +    { +        // now that the Part is loaded, we cast it to a Part to get +        // our hands on it +        QStringList args; +        args.append("in shell"); +        m_part = static_cast<KParts::ReadWritePart *>(factory->create(this, +                                "kdevdesigner_part", "KParts::ReadWritePart", args)); + +        if (m_part) +        { +            // tell the KParts::MainWindow that this is indeed the main widget +            setCentralWidget(m_part->widget()); + +            // and integrate the part's GUI with the shell's +            createGUI(m_part); +        } +    } +    else +    { +        // if we couldn't find our Part, we exit since the Shell by +        // itself can't do anything useful +        KMessageBox::error(this, i18n("Could not find the KDevDesigner part.")); +        kapp->quit(); +        // we return here, cause kapp->quit() only means "exit the +        // next time we enter the event loop... +        return; +    } +     +    // apply the saved mainwindow settings, if any, and ask the mainwindow +    // to automatically save settings if changed: window size, toolbar +    // position, icon size, etc. +    setAutoSaveSettings(); +} + +KDevDesigner::~KDevDesigner() +{ +} + +void KDevDesigner::load(const KURL& url) +{ +    m_part->openURL( url ); +} + +void KDevDesigner::setupActions() +{ +/*    KStdAction::openNew(this, SLOT(fileNew()), actionCollection()); +    KStdAction::open(this, SLOT(fileOpen()), actionCollection());*/ + +    KStdAction::quit(kapp, SLOT(quit()), actionCollection()); +     +    m_toolbarAction = KStdAction::showToolbar(this, SLOT(optionsShowToolbar()), actionCollection()); +    m_statusbarAction = KStdAction::showStatusbar(this, SLOT(optionsShowStatusbar()), actionCollection()); + +    KStdAction::keyBindings(this, SLOT(optionsConfigureKeys()), actionCollection()); +    KStdAction::configureToolbars(this, SLOT(optionsConfigureToolbars()), actionCollection()); +} + +void KDevDesigner::saveProperties(KConfig* /*config*/) +{ +    // the 'config' object points to the session managed +    // config file.  anything you write here will be available +    // later when this app is restored +} + +void KDevDesigner::readProperties(KConfig* /*config*/) +{ +    // the 'config' object points to the session managed +    // config file.  this function is automatically called whenever +    // the app is being restored.  read in here whatever you wrote +    // in 'saveProperties' +} + +void KDevDesigner::fileNew() +{ +    // this slot is called whenever the File->New menu is selected, +    // the New shortcut is pressed (usually CTRL+N) or the New toolbar +    // button is clicked + +    // About this function, the style guide ( +    // http://developer.kde.org/documentation/standards/kde/style/basics/index.html ) +    // says that it should open a new window if the document is _not_ +    // in its initial state.  This is what we do here.. +    if ( ! m_part->url().isEmpty() || m_part->isModified() ) +    { +        (new KDevDesigner)->show(); +    }; +} + + +void KDevDesigner::optionsShowToolbar() +{ +    // this is all very cut and paste code for showing/hiding the +    // toolbar +    if (m_toolbarAction->isChecked()) +        toolBar()->show(); +    else +        toolBar()->hide(); +} + +void KDevDesigner::optionsShowStatusbar() +{ +    // this is all very cut and paste code for showing/hiding the +    // statusbar +    if (m_statusbarAction->isChecked()) +        statusBar()->show(); +    else +        statusBar()->hide(); +} + +void KDevDesigner::optionsConfigureKeys() +{ +    KKeyDialog::configureKeys(m_part->actionCollection(), "kdevdesigner_part.rc"); +} + +void KDevDesigner::optionsConfigureToolbars() +{ +    saveMainWindowSettings(KGlobal::config(), autoSaveGroup()); + +    // use the standard toolbar editor +    KEditToolbar dlg(factory()); +    connect(&dlg, SIGNAL(newToolbarConfig()), +            this, SLOT(applyNewToolbarConfig())); +    dlg.exec(); +} + +void KDevDesigner::applyNewToolbarConfig() +{ +    applyMainWindowSettings(KGlobal::config(), autoSaveGroup()); +} + +void KDevDesigner::fileOpen() +{ +    // this slot is called whenever the File->Open menu is selected, +    // the Open shortcut is pressed (usually CTRL+O) or the Open toolbar +    // button is clicked +    KURL url = +        KFileDialog::getOpenURL( QString::null, QString::null, this ); + +    if (url.isEmpty() == false) +    { +        // About this function, the style guide ( +        // http://developer.kde.org/documentation/standards/kde/style/basics/index.html ) +        // says that it should open a new window if the document is _not_ +        // in its initial state.  This is what we do here.. +        if ( m_part->url().isEmpty() && ! m_part->isModified() ) +        { +            // we open the file in this window... +            load( url ); +        } +        else +        { +            // we open the file in a new window... +            KDevDesigner* newWin = new KDevDesigner; +            newWin->load( url ); +            newWin->show(); +        } +    } +} + +#include "kdevdesigner.moc" | 
