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.
156 lines
3.9 KiB
156 lines
3.9 KiB
15 years ago
|
/***************************************************************************
|
||
|
* 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
|