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/kivio/kiviopart/kivio_page.h

227 lines
6.4 KiB

/*
* Kivio - Visual Modelling and Flowcharting
* Copyright (C) 2000-2001 theKompany.com & Dave Marotti
*
* 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.
*
* This program 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
#ifndef __kivio_page_h__
#define __kivio_page_h__
class KivioPage;
class KivioView;
class KivioMap;
class KivioCanvas;
class KivioDoc;
class KoDocumentEntry;
class TQWidget;
class TQPainter;
class TQDomElement;
class KivioLayer;
class KoPoint;
class DCOPObject;
#include <KoDocument.h>
#include <tqpen.h>
#include <tqptrlist.h>
#include <tqintdict.h>
#include <tqmemarray.h>
#include <tqrect.h>
#include <tqpalette.h>
#include <tqwidget.h>
#include <KoPoint.h>
#include "kivio_stencil.h"
#include <koffice_export.h>
class KivioPainter;
class KPrinter;
class KivioView;
class KoZoomHandler;
class KoRect;
class KoXmlWriter;
class KoStore;
class KoGenStyles;
#define BORDER_SPACE 1
struct AlignData
{
enum Align { None, Left, Center, Right, Top, Bottom };
Align v;
Align h;
bool centerOfPage;
};
struct DistributeData
{
enum Distribute { None, Left, Center, Right, Top, Bottom, Spacing };
enum Extent { Selection, Page };
Distribute v;
Distribute h;
Extent extent;
};
class KIVIO_EXPORT KivioPage : public TQObject
{
Q_OBJECT
TQ_OBJECT
public:
KivioPage( KivioMap *_map, const TQString &pageName, const char *_name=0L );
~KivioPage();
virtual DCOPObject* dcopObject();
TQString pageName()const { return m_strName; }
bool setPageName( const TQString& name, bool init = false );
virtual TQDomElement save( TQDomDocument& );
virtual void saveOasis(KoStore* store, KoXmlWriter* docWriter, KoGenStyles* styles);
virtual bool loadXML( const TQDomElement& );
bool loadOasis(const TQDomElement& page, KoOasisStyles& oasisStyles);
bool isLoading();
bool isHidden()const { return m_bPageHide; }
void setHidden(bool hidden) { m_bPageHide=hidden; }
void setMap( KivioMap* _map ) { m_pMap = _map; }
KivioDoc* doc()const { return m_pDoc; }
KivioMap* map()const { return m_pMap; }
KivioPage *findPage( const TQString & _name );
void print( TQPainter &painter, KPrinter *_printer );
void update();
int id()const { return m_id; }
static KivioPage* tqfind( int _id );
KoPageLayout paperLayout()const { return m_pPageLayout; }
void setPaperLayout(const KoPageLayout&);
void paintContent( KivioPainter& painter, const TQRect& rect, bool transparent, TQPoint, KoZoomHandler*, bool, bool );
void printContent( KivioPainter& painter, int xdpi = 0, int ydpi = 0 );
void printSelected( KivioPainter& painter, int xdpi = 0, int ydpi = 0 );
void printContent(KivioPainter& painter, KoZoomHandler* zoomHandler);
bool isStencilSelected( KivioStencil * );
void selectAllStencils();
void unselectAllStencils();
bool unselectStencil( KivioStencil * );
void selectStencil( KivioStencil * );
void selectStencils( double, double, double, double );
TQPtrList<KivioStencil> *selectedStencils() { return &m_lstSelection; }
bool checkForStencilTypeInSelection(KivioStencilType type);
bool checkForTextBoxesInSelection();
KoRect getRectForAllSelectedStencils();
KoRect getRectForAllStencils();
int generateStencilIds( int );
KivioStencil *checkForStencil( KoPoint *, int *, double, bool);
KivioLayer *curLayer()const { return m_pCurLayer; }
void setCurLayer( KivioLayer *pLayer ) { m_pCurLayer=pLayer; }
TQPtrList<KivioLayer> *layers() { return &m_lstLayers; }
KivioLayer *firstLayer();
KivioLayer *nextLayer();
KivioLayer *lastLayer();
KivioLayer *prevLayer();
bool removeCurrentLayer();
void addLayer( KivioLayer * );
void insertLayer( int, KivioLayer * );
KivioLayer *layerAt( int );
void takeLayer( KivioLayer *pLayer );
/*
* Stencil routines
*/
bool addStencil( KivioStencil * );
void alignStencils( AlignData );
void distributeStencils( DistributeData );
KivioConnectorTarget *connectPointToTarget( KivioConnectorPoint *, double );
KoPoint snapToTarget( const KoPoint& p, double thresh, bool& hit );
void setHidePage(bool _hide);
TQValueList<double> horizontalGuideLines() const { return m_hGuideLines; }
TQValueList<double> verticalGuideLines() const { return m_vGuideLines; }
public slots:
void deleteSelectedStencils();
void groupSelectedStencils();
void ungroupSelectedStencils();
void bringToFront();
void sendToBack();
void copy();
void cut();
void paste(KivioView* view);
void setPaintSelected(bool paint = true);
void setGuideLines(const TQValueList<double> hGuideLines, const TQValueList<double> vGuideLines);
void addGuideLine(Qt::Orientation orientation, double position);
signals:
void sig_updateView( KivioPage *_page );
void sig_updateView( KivioPage *_page, const TQRect& );
void sig_nameChanged( KivioPage* page, const TQString& old_name );
void sig_PageHidden(KivioPage *_page);
void sig_PageShown(KivioPage *_page);
void sig_pageLayoutChanged(const KoPageLayout&);
protected:
void printPage( TQPainter &_painter, const TQRect& page_range, const TQRect& view );
TQDomElement saveLayout( TQDomDocument & );
bool loadLayout( const TQDomElement & );
void saveGuideLines(TQDomElement& element);
void loadGuideLines(const TQDomElement& element);
TQString m_strName;
KivioMap *m_pMap;
KivioDoc *m_pDoc;
TQPtrList<KivioLayer> m_lstLayers;
KivioLayer *m_pCurLayer;
TQPtrList<KivioStencil> m_lstSelection;
int m_id;
bool m_bPageHide;
static int s_id;
static TQIntDict<KivioPage>* s_mapPages;
KoPageLayout m_pPageLayout;
DCOPObject* m_dcop;
TQValueList<double> m_hGuideLines;
TQValueList<double> m_vGuideLines;
};
#endif