diff options
Diffstat (limited to 'lib/kofficecore/KoMainWindow.h')
-rw-r--r-- | lib/kofficecore/KoMainWindow.h | 387 |
1 files changed, 387 insertions, 0 deletions
diff --git a/lib/kofficecore/KoMainWindow.h b/lib/kofficecore/KoMainWindow.h new file mode 100644 index 00000000..2b738db9 --- /dev/null +++ b/lib/kofficecore/KoMainWindow.h @@ -0,0 +1,387 @@ +/* This file is part of the KDE project + Copyright (C) 1998, 1999 Torben Weis <weis@kde.org> + Copyright (C) 2000-2004 David Faure <faure@kde.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. +*/ + +#ifndef __ko_main_window_h__ +#define __ko_main_window_h__ + +#include <kparts/mainwindow.h> +#include <kfiledialog.h> +#include <koffice_export.h> +#include "KoDocument.h" + +class QLabel; +class KoView; +class KoMainWindowPrivate; +class KURL; +class KRecentFilesAction; +class KoFilterManager; +class DCOPObject; + +namespace KParts +{ + class PartManager; +} + +/** + * @brief Main window for a KOffice application + * + * This class is used to represent a main window + * of a KOffice component. Each main window contains + * a menubar and some toolbars. + * + * @note This class does NOT need to be subclassed in your application. + */ +class KOFFICECORE_EXPORT KoMainWindow : public KParts::MainWindow +{ + Q_OBJECT +public: + + /** + * Constructor. + * + * Initializes a KOffice main window (with its basic GUI etc.). + */ + KoMainWindow( KInstance *instance, const char *_name = 0 ); + + /** + * Destructor. + */ + ~KoMainWindow(); + + /** + * Called when a document is assigned to this mainwindow. + * This creates a view for this document, makes it the active part, etc. + */ + virtual void setRootDocument( KoDocument *doc ); + + /** + * This is used to handle the document used at start up before it actually + * added as root document. + */ + void setDocToOpen( KoDocument *doc ); + + /** + * Update caption from document info - call when document info + * (title in the about page) changes. + */ + virtual void updateCaption(); + + /** + * Retrieves the document that is displayed in the mainwindow. + */ + virtual KoDocument* rootDocument() const; + + virtual KoView *rootView() const; + + virtual KParts::PartManager *partManager(); + + /** + * Prints the document + * @param quick whether the print setup dialog is to be displayed + **/ + void print(bool quick); + + /** + * The application should call this to show or hide a toolbar. + * It also takes care of the corresponding action in the settings menu. + */ + void showToolbar( const char * tbName, bool shown ); + + /** + * @return TRUE if the toolbar @p tbName is visible + */ + bool toolbarIsVisible(const char *tbName); + + /** + * Get hold of the label in the statusbar, to write messages to it. + * You can also insert other items in the status bar by using QStatusBar::addWidget. + */ + QLabel * statusBarLabel(); + + /** + * Sets the maximum number of recent documents entries. + */ + void setMaxRecentItems(uint _number); + + /** + * The document opened a URL -> store into recent documents list. + */ + void addRecentURL( const KURL& url ); + + /** + * Load the desired document and show it. + * @param url the URL to open + * + * @return TRUE on success. + */ + virtual bool openDocument( const KURL & url ); + + /** + * Load the URL into this document (and make it root doc after loading) + * + * Special method for KoApplication::start, don't use. + */ + bool openDocument( KoDocument *newdoc, const KURL & url ); + + virtual DCOPObject * dcopObject(); + + /** + * Reloads the recent documents list. + */ + void reloadRecentFileList(); + + /** + * Updates the window caption based on the document info and path. + */ + virtual void updateCaption( const QString caption, bool mod ); + void updateReloadFileAction(KoDocument *doc); + void updateVersionsFileAction(KoDocument *doc); + +signals: + /** + * This signal is emitted if the document has been saved successfully. + */ + void documentSaved(); + /// This signals is emmitted before the save dialog is shown + void saveDialogShown(); + +public slots: + + /** + * Slot for eMailing the document using KMail + * + * This is a very simple extension that will allow any document + * that is currently being edited to be emailed using KMail. + */ + void slotEmailFile(); + + /** + * Slot for opening a new document. + * + * If the current document is empty, the new document replaces it. + * If not, a new shell will be opened for showing the document. + */ + virtual void slotFileNew(); + + /** + * Slot for opening a saved file. + * + * If the current document is empty, the opened document replaces it. + * If not a new shell will be opened for showing the opened file. + */ + virtual void slotFileOpen(); + + /** + * Slot for opening a file among the recently opened files. + * + * If the current document is empty, the opened document replaces it. + * If not a new shell will be opened for showing the opened file. + */ + virtual void slotFileOpenRecent( const KURL & ); + + /** + * Saves the current document with the current name. + */ + virtual void slotFileSave(); + + /** + * Saves the current document with a new name. + */ + virtual void slotFileSaveAs(); + + /** + * Prints the actual document. + */ + virtual void slotFilePrint(); + + /** + * Show a print preview + */ + void slotFilePrintPreview(); // make virtual later + + /** + * Show a dialog with author and document information. + */ + virtual void slotDocumentInfo(); + + /** + * Closes the document. + */ + virtual void slotFileClose(); + + /** + * Closes the shell. + */ + virtual void slotFileQuit(); + + /** + * Configure key bindings. + */ + virtual void slotConfigureKeys(); + + /** + * Configure toolbars. + */ + virtual void slotConfigureToolbars(); + + /** + * Post toolbar config. + * (Plug action lists back in, etc.) + */ + virtual void slotNewToolbarConfig(); + + /** + * Shows or hides a toolbar + */ + virtual void slotToolbarToggled( bool toggle ); + + /** + * View splitting stuff + */ + virtual void slotSplitView(); + virtual void slotRemoveView(); + virtual void slotSetOrientation(); + + /** + * Close all views + */ + virtual void slotCloseAllViews(); + + /** + * Reload file + */ + void slotReloadFile(); + + /** + * This will call a dialogbox to add version to list of files + */ + void slotVersionsFile(); + + /** + * File --> Import + * + * This will call slotFileOpen(). To differentiate this from an ordinary + * call to slotFileOpen() call @ref isImporting(). + */ + void slotImportFile(); + + /** + * File --> Export + * + * This will call slotFileSaveAs(). To differentiate this from an ordinary + * call to slotFileSaveAs() call @ref isExporting(). + */ + void slotExportFile(); + +protected: // protected methods are mostly for koshell, it's the only one deriving from KoMainWindow + + /// Helper method for slotFileNew and slotFileClose + void chooseNewDocument( int /*KoDocument::InitDocFlags*/ initDocFlags ); + /** + * Special method for KOShell, to allow switching the root + * document (and its views) among a set of them. + */ + void setRootDocumentDirect( KoDocument *doc, const QPtrList<KoView> & views ); + + /** + * Create a new empty document. + */ + virtual KoDocument* createDoc() const; + + /** + * Saves the document, asking for a filename if necessary. + * + * @param saveas if set to TRUE the user is always prompted for a filename + * + * @param silent if set to TRUE rootDocument()->setTitleModified will not be called. + * + * @return TRUE on success, false on error or cancel + * (don't display anything in this case, the error dialog box is also implemented here + * but restore the original URL in slotFileSaveAs) + */ + virtual bool saveDocument( bool saveas = false, bool silent = false ); + + virtual void closeEvent( QCloseEvent * e ); + virtual void resizeEvent( QResizeEvent * e ); + + /** + * Ask user about saving changes to the document upon exit. + */ + virtual bool queryClose(); + + virtual bool openDocumentInternal( const KURL & url, KoDocument * newdoc = 0L ); + + /** + * Returns whether or not the current slotFileSave[As]() or saveDocument() + * call is actually an export operation (like File --> Export). + * + * If this is true, you must call KoDocument::export() instead of + * KoDocument::save() or KoDocument::saveAs(), in any reimplementation of + * saveDocument(). + */ + bool isExporting() const; + + /** + * Returns whether or not the current slotFileOpen() or openDocument() + * call is actually an import operation (like File --> Import). + * + * If this is true, you must call KoDocument::import() instead of + * KoDocument::openURL(), in any reimplementation of openDocument() or + * openDocumentInternal(). + */ + bool isImporting() const; + + /** + * Save the list of recent files. + */ + void saveRecentFiles(); + + KRecentFilesAction *recentAction() const { return m_recent; } + +private: + + /** + * Asks the user if they really want to save the document. + * Called only if outputFormat != nativeFormat. + * + * @return true if the document should be saved + */ + bool exportConfirmation( const QCString &outputFormat ); + + void saveWindowSettings(); + + KRecentFilesAction *m_recent; + +protected slots: + virtual void slotActivePartChanged( KParts::Part *newPart ); + +private slots: + void slotProgress(int value); + void slotLoadCompleted(); + void slotLoadCanceled (const QString &); + void slotSaveCompleted(); + void slotSaveCanceled(const QString &); + +private: + KoMainWindowPrivate *d; + +}; + +#endif |