summaryrefslogtreecommitdiffstats
path: root/src/view.h
blob: d5013639ad91bf2eb6efe6eb2daca7804c64e722 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
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