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/koshell/koshell_shell.h

149 lines
4.0 KiB

/* This file is part of the KDE project
Copyright (C) 1998, 1999 Torben Weis <weis@kde.org>
Copyright (C) 1999 Simon Hausmann <hausmann@kde.org>
Copyright (C) 2000-2005 David Faure <faure@kde.org>
Copyright (C) 2005 Sven L<EFBFBD>ppken <sven@kde.org>
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; see the file COPYING. If not, write to
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
* Boston, MA 02110-1301, USA.
*/
#ifndef __koshell_window_h__
#define __koshell_window_h__
#include <KoMainWindow.h>
#include <KoQueryTrader.h>
#include <ktabwidget.h>
#include <qptrlist.h>
#include <qmap.h>
#include <qtoolbutton.h>
#include <qvaluelist.h>
#include "iconsidepane.h"
class QVBox;
class QIconView;
class QIconViewItem;
class QSplitter;
class KoDocumentEntry;
class KoView;
class KoShellGUIClient;
/////// class KoShellWindow ////////
class KoShellWindow : public KoMainWindow
{
Q_OBJECT
public:
KoShellWindow();
virtual ~KoShellWindow();
virtual void setRootDocument( KoDocument *doc );
/**
* Update caption from document info - call when document info
* (title in the about page) changes.
*/
virtual void updateCaption();
virtual QString configFile() const;
KAction *mnuSaveAll;
KAction* partSpecificHelpAction;
protected slots:
virtual void slotFileNew();
virtual void slotFileClose();
virtual void slotFileOpen();
void saveAll();
void showPartSpecificHelp();
void slotSidebar_Part(int);
void slotSidebar_Document(int);
void tab_contextMenu(QWidget * ,const QPoint &);
/**
Used for showing or hiding the sidebar and the components-label.
*/
void slotShowSidebar();
/**
This slot is called whenever the user clicks on a "component" in the sidebar. It loads a new
document which can be edited with the chosen component.
@param item The component the user clicked on
*/
void slotSidebarItemClicked( QIconViewItem *item );
void slotKSLoadCompleted();
void slotKSLoadCanceled (const QString &);
void slotNewDocumentName();
/**
This slot is called whenever the user clicks on a tab to change the document. It looks for the
changed widget in the list of all pages and calls switchToPage with the iterator which points
to the page corresponding to the widget.
@param widget The current widget
*/
void slotUpdatePart( QWidget* widget );
private:
struct Page
{
KoDocument *m_pDoc;
KoView *m_pView;
int m_id;
};
virtual bool queryClose();
virtual bool openDocumentInternal( const KURL & url, KoDocument * newdoc = 0L );
virtual void slotConfigureKeys();
void closeDocument();
void saveSettings();
void switchToPage( QValueList<Page>::Iterator it );
QValueList<Page> m_lstPages;
QValueList<Page>::Iterator m_activePage;
IconSidePane *m_pSidebar;
QLabel *m_pComponentsLabel;
QSplitter *m_pLayout;
KTabWidget *m_pFrame;
QToolButton *m_tabCloseButton;
// Map of available parts (the int is the koolbar item id)
QMap<int,KoDocumentEntry> m_mapComponents;
// Saved between openDocument and setRootDocument
KoDocumentEntry m_documentEntry;
KoShellGUIClient *m_client;
void createShellGUI( bool create = true );
int m_grpFile; //the ID number for the component group in the side bar
int m_grpDocuments; //the ID number for the docuemnt group in the side bar
};
//////// class KoShellGUIClient //////////
class KoShellGUIClient : public KXMLGUIClient
{
public:
KoShellGUIClient( KoShellWindow *window );
};
#endif // __koshell_window_h__