summaryrefslogtreecommitdiffstats
path: root/lib/kofficecore/KoMainWindow.h
diff options
context:
space:
mode:
Diffstat (limited to 'lib/kofficecore/KoMainWindow.h')
-rw-r--r--lib/kofficecore/KoMainWindow.h387
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