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/karbon/dockers/vdocumentdocker.h

257 lines
6.8 KiB

/* This file is part of the KDE project
Copyright (C) 2001, 2002, 2003 The Karbon Developers
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library 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
Library General Public License for more details.
You should have received a copy of the GNU Library General Public License
along with this library; see the file COPYING.LIB. If not, write to
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
* Boston, MA 02110-1301, USA.
*/
#ifndef __VDOCUMENTDOCKER_H__
#define __VDOCUMENTDOCKER_H__
#include <qlistview.h>
#include <qptrdict.h>
class QHButtonGroup;
class QPoint;
class QLabel;
class QPixmap;
class QCheckBox;
class VDocument;
class VLayer;
class KarbonView;
/*************************************************************************
* Document Tab *
*************************************************************************/
class VDocumentPreview : public QWidget
{
Q_OBJECT
public:
VDocumentPreview( KarbonView* view, QWidget* parent = 0 );
~VDocumentPreview();
void reset();
protected:
void paintEvent( QPaintEvent* e );
virtual bool eventFilter( QObject* object, QEvent* event );
private:
VDocument *m_document;
KarbonView *m_view;
KoPoint m_firstPoint;
KoPoint m_lastPoint;
bool m_dragging;
QPixmap *m_docpixmap;
}; // VDocumentPreview
class VDocumentTab : public QWidget
{
Q_OBJECT
public:
VDocumentTab( KarbonView* view, QWidget* parent );
~VDocumentTab();
public slots:
void updateDocumentInfo();
void slotCommandAdded( VCommand* command );
void slotZoomChanged( double );
void slotViewportChanged();
void slotCommandExecuted();
private:
VDocumentPreview* m_documentPreview;
QLabel* m_height;
QLabel* m_width;
QLabel* m_layers;
QLabel* m_format;
KarbonView* m_view;
}; // VDocumentTab
/*************************************************************************
* Layers Tab *
*************************************************************************/
class VLayerListViewItem : public QCheckListItem
{
public:
VLayerListViewItem( QListView* parent, VLayer* layer, VDocument *doc, QPtrDict<VLayerListViewItem> *map );
virtual ~VLayerListViewItem();
VLayer* layer() { return m_layer; }
int pos();
void update();
virtual QString key( int column, bool ascending ) const;
virtual int compare( QListViewItem *i, int col, bool ascending ) const;
void setKey( uint key ) { m_key = key; }
protected:
virtual void stateChange( bool on );
private:
VLayer *m_layer;
VDocument *m_document;
uint m_key;
QPtrDict<VLayerListViewItem> *m_map;
}; // VLayerListViewItem
class VObjectListViewItem : public QListViewItem
{
public:
VObjectListViewItem( QListViewItem* parent, VObject* object, VDocument *doc, uint key, QPtrDict<VObjectListViewItem> *map );
virtual ~VObjectListViewItem();
VObject* object() { return m_object; }
void update();
virtual QString key( int column, bool ascending ) const;
virtual int compare( QListViewItem *i, int col, bool ascending ) const;
void setKey( uint key ) { m_key = key; }
private:
VObject *m_object;
VDocument *m_document;
uint m_key;
QPtrDict<VObjectListViewItem> *m_map;
};
class VLayersTab : public QWidget
{
Q_OBJECT
public:
VLayersTab( KarbonView* view, QWidget* parent = 0 );
~VLayersTab();
public slots:
void updatePreviews();
void updateLayers();
void itemClicked( QListViewItem* item, const QPoint&, int col );
void selectionChangedFromList();
void selectionChangedFromTool();
void renameItem( QListViewItem* item, const QPoint&, int col );
void addLayer();
void raiseItem();
void lowerItem();
void deleteItem();
void slotCommandExecuted( VCommand* command );
private slots:
void slotButtonClicked( int ID );
void removeDeletedObjectsFromList();
void updateChildItems( QListViewItem *item );
void toggleState( VObject *obj, int col );
protected:
VLayerListViewItem* listItem( int pos );
void updateObjects( VObject *object, QListViewItem *item );
void resetSelection();
void selectActiveLayer();
private:
QListView *m_layersListView;
QHButtonGroup *m_buttonGroup;
KarbonView *m_view;
VDocument *m_document;
QPtrDict<VLayerListViewItem> m_layers;
QPtrDict<VObjectListViewItem> m_objects;
}; // VLayersTab
/*************************************************************************
* History Tab *
*************************************************************************/
class VHistoryItem;
class VHistoryGroupItem : public QListViewItem
{
public:
VHistoryGroupItem( VHistoryItem* item, QListView* parent, QListViewItem* after );
~VHistoryGroupItem();
void paintCell( QPainter* p, const QColorGroup& cg, int column, int width, int align );
void paintFocus( QPainter*, const QColorGroup&, const QRect& );
virtual QString key( int, bool ) const { return m_key; }
virtual int rtti() const { return 1001; }
private:
QString m_key;
}; // VHistoryGroupItem
class VHistoryItem : public QListViewItem
{
public:
VHistoryItem( VCommand* command, QListView* parent, QListViewItem* after );
VHistoryItem( VCommand* command, VHistoryGroupItem* parent, QListViewItem* after );
~VHistoryItem();
VCommand* command() { return m_command; }
void paintCell( QPainter* p, const QColorGroup& cg, int column, int width, int align );
void paintFocus( QPainter*, const QColorGroup&, const QRect& );
virtual QString key( int, bool ) const { return m_key; }
virtual int rtti() const { return 1002; }
private:
void init();
QString m_key;
VCommand* m_command;
}; // VHistoryItem
class VHistoryTab : public QWidget
{
Q_OBJECT
public:
VHistoryTab( KarbonPart* part, QWidget* parent );
~VHistoryTab();
bool groupingEnabled();
public slots:
void historyCleared();
void commandExecuted( VCommand* command );
void slotCommandAdded( VCommand* command );
void removeFirstCommand();
void removeLastCommand();
void commandClicked( int button, QListViewItem* item, const QPoint& point, int col );
void groupingChanged( int );
signals:
void undoCommand( VCommand* command );
void redoCommand( VCommand* command );
void undoCommandsTo( VCommand* command );
void redoCommandsTo( VCommand* command );
private:
QListView* m_history;
QListViewItem* m_lastCommand;
QCheckBox* m_groupCommands;
long m_lastCommandIndex;
KarbonPart* m_part;
}; // VHistoryTab
#endif