summaryrefslogtreecommitdiffstats
path: root/src/view.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/view.h')
-rw-r--r--src/view.h155
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 *
+ * *
+ * 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