diff options
Diffstat (limited to 'src/view.h')
-rw-r--r-- | src/view.h | 155 |
1 files changed, 155 insertions, 0 deletions
diff --git a/src/view.h b/src/view.h new file mode 100644 index 0000000..d501363 --- /dev/null +++ b/src/view.h @@ -0,0 +1,155 @@ +/*************************************************************************** + * Copyright (C) 2005 by David Saxton * + * david@bluehaze.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. * + ***************************************************************************/ + +#ifndef VIEW_H +#define VIEW_H + +#include <kstatusbar.h> +#include <kurl.h> +#include <kxmlguiclient.h> +#include <qguardedptr.h> +#include <qpixmap.h> + +class DCOPObject; +class Document; +class KSqueezedTextLabel; +class KTechlab; +class View; +class ViewContainer; +class ViewIface; +class QVBoxLayout; + +class ViewStatusBar : public KStatusBar +{ +Q_OBJECT +public: + ViewStatusBar( View *view ); + + enum InfoId + { + SimulationState, + LineCol, + InsertMode, + SelectionMode + }; + +public slots: + void slotModifiedStateChanged(); + void slotFileNameChanged( const KURL &url ); + void slotViewFocused( View * ); + void slotViewUnfocused(); + +protected: + View *p_view; + QLabel* m_modifiedLabel; + KSqueezedTextLabel* m_fileNameLabel; + QPixmap m_modifiedPixmap; + QPixmap m_unmodifiedPixmap; +}; + +/** +@author David Saxton +*/ +class View : public QWidget, public KXMLGUIClient +{ +Q_OBJECT +public: + View( Document *document, ViewContainer *viewContainer, uint viewAreaId, const char *name = 0 ); + virtual ~View(); + + KAction * action( const QString & name ) const; + bool isFocused() const { return b_isFocused; } + /** + * Pointer to the parent document + */ + Document *document() const { return m_pDocument; } + /** + * Returns the DCOP object from this view + */ + DCOPObject * dcopObject() const; + /** + * Returns the dcop suffix for this view - a unique ID for the current the + * view within all views associated with the parent document. DCOP name + * will become "View#docID#viewID". + */ + unsigned dcopID() const { return m_dcopID; } + /** + * Sets the dcop suffix. The DCOP object for this view will be renamed. + * @see dcopID + */ + void setDCOPID( unsigned id ); + /** + * Pointer to the ViewContainer that we're in + */ + ViewContainer *viewContainer() const { return p_viewContainer; } + /** + * Tells the view container which contains this view to close this view, + * returning true if successful (i.e. not both last view and unsaved, etc) + */ + virtual bool closeView(); + /** + * Returns the unique (for the view container) view area id associated with this view + */ + uint viewAreaId() const { return m_viewAreaId; } + /** + * Zoom in + */ + virtual void viewZoomIn() {}; + /** + * Zoom out + */ + virtual void viewZoomOut() {}; + virtual bool canZoomIn() const { return true; } + virtual bool canZoomOut() const { return true; } + /** + * Restore view to actual size + */ + virtual void actualSize() {}; + + virtual void toggleBreakpoint() {}; + /** + * Called by ktechlab when it has entered its destructor to avoid calls to + * it (such as from the TextView destructor). + */ + void setKTechlabDeleted() { p_ktechlab = 0l; } + +public slots: + /** + * Called when the view is to be focused (enables actions, etc) + */ + virtual void setFocused(); + /** + * Called when the view is to be unfocused (disables actions, etc) + */ + virtual void setUnfocused(); + +protected slots: + /** + * Called when the user changes the configuration. + */ + virtual void slotUpdateConfiguration() {}; + +signals: + void viewFocused( View *view ); + void viewUnfocused(); + +protected: + QGuardedPtr<Document> m_pDocument; + KTechlab * p_ktechlab; + QGuardedPtr<ViewContainer> p_viewContainer; + uint m_viewAreaId; + bool b_isFocused; + ViewStatusBar *m_statusBar; + QVBoxLayout *m_layout; + ViewIface * m_pViewIface; + unsigned m_dcopID; +}; + +#endif |