You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
koffice/lib/kofficecore/KoMainWindow.h

389 lines
10 KiB

/* 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 TQLabel;
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( TDEInstance *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 TQStatusBar::addWidget.
*/
TQLabel * 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 TQString 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 TQPtrList<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( TQCloseEvent * e );
virtual void resizeEvent( TQResizeEvent * 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 TQCString &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 TQString &);
void slotSaveCompleted();
void slotSaveCanceled(const TQString &);
private:
KoMainWindowPrivate *d;
};
#endif