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/karbon_view.h

286 lines
7.0 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 __KARBON_VIEW__
#define __KARBON_VIEW__
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#include <KoView.h>
#include <KoPoint.h>
#include <ksharedptr.h>
#include <kxmlguibuilder.h>
#include <kdualcolorbutton.h>
#include <KoUnit.h>
#include <koffice_export.h>
class DCOPObject;
class TQLabel;
class KAction;
class KarbonPart;
class KSelectAction;
class KToggleAction;
class KoContextHelpAction;
class KoLineStyleAction;
class KoUnitDoubleSpinComboBox;
class KoRect;
class VRuler;
class KoPaletteManager;
class VDocumentTab;
class VLayersTab;
class VHistoryTab;
class VStrokeDocker;
class VColorDocker;
class VStyleDocker;
class VTransformDocker;
class VFill;
class VPainterFactory;
class VSelectToolBar;
class VSmallPreview;
class VStateButton;
class VStroke;
class VStrokeFillPreview;
class VCanvas;
class VStrokeFillPreview;
class VTypeButtonBox;
class VTool;
class VToolBox;
class VToolController;
class VCommand;
class KARBONCOMMON_EXPORT KarbonView : public KoView, public KXMLGUIBuilder
{
Q_OBJECT
public:
KarbonView( KarbonPart* part, TQWidget* parent = 0L,
const char* name = 0L );
virtual ~KarbonView();
virtual DCOPObject* dcopObject();
KarbonPart *part() const { return m_part; }
virtual void paintEverything( TQPainter &p, const TQRect &rect, bool transparent = false );
bool mouseEvent( TQMouseEvent* event, const KoPoint & );
bool keyEvent( TQEvent* event );
void dropEvent( TQDropEvent *e );
virtual TQWidget* canvas() const;
VCanvas* canvasWidget() const { return m_canvas; }
virtual VPainterFactory* painterFactory() const { return m_painterFactory; }
KoPaletteManager* paletteManager() { return m_pPaletteManager; };
// printing support, override from KoView
virtual void setupPrinter( KPrinter &/*printer*/ ) {}
virtual void print( KPrinter& printer );
KoContextHelpAction* contextHelpAction() const { return m_contextHelpAction; }
void reorganizeGUI();
void setNumberOfRecentFiles( unsigned int number );
void setLineWidth( double val );
TQLabel* statusMessage() const { return m_status; }
void setCursor( const TQCursor & );
void repaintAll( const KoRect & );
void repaintAll( bool = true );
void setPos( const KoPoint& p );
void setViewportRect( const KoRect &rect );
void setZoomAt( double zoom, const KoPoint & = KoPoint() );
VToolController *toolController();
VStrokeFillPreview* strokeFillPreview()
{ return m_strokeFillPreview; }
public slots:
// editing:
void editCut();
void editCopy();
void editPaste();
void editSelectAll();
void editDeselectAll();
void editDeleteSelection();
void editPurgeHistory();
void selectionDuplicate();
void selectionBringToFront();
void selectionSendToBack();
void selectionMoveUp();
void selectionMoveDown();
void selectionAlignHorizontalLeft();
void selectionAlignHorizontalCenter();
void selectionAlignHorizontalRight();
void selectionAlignVerticalTop();
void selectionAlignVerticalCenter();
void selectionAlignVerticalBottom();
void selectionDistributeHorizontalCenter();
void selectionDistributeHorizontalGap();
void selectionDistributeHorizontalLeft();
void selectionDistributeHorizontalRight();
void selectionDistributeVerticalCenter();
void selectionDistributeVerticalGap();
void selectionDistributeVerticalBottom();
void selectionDistributeVerticalTop();
void fileImportGraphic();
void groupSelection();
void ungroupSelection();
void closePath();
//View:
void viewZoomIn();
void viewZoomOut();
void setUnit( KoUnit::Unit _unit );
void configure();
void pageLayout();
void setLineWidth();
void selectionChanged();
void slotActiveToolChanged( VTool * );
void togglePageMargins(bool);
void showRuler();
void showGrid();
bool showPageMargins();
void snapToGrid();
void showSelectionPopupMenu( const TQPoint &pos );
protected slots:
// Object related operations.
// View.
void viewModeChanged();
void zoomChanged( const KoPoint & = KoPoint() );
void setLineStyle( int );
// Toolbox dialogs.
void slotStrokeChanged( const VStroke& );
void slotFillChanged( const VFill & );
void canvasContentsMoving( int x, int y );
void commandExecuted( VCommand *command );
void strokeFillSelectionChanged( KDualColorButton::DualColor s );
void colorChanged( const TQColor &c );
signals:
void zoomChanged( double );
void selectionChange();
void pageLayoutChanged();
protected:
virtual void updateReadWrite( bool ) {}
virtual void resizeEvent( TQResizeEvent* event );
void createDocumentTabDock();
void createLayersTabDock();
void createHistoryTabDock();
void createStrokeDock();
void createColorDock();
void createTransformDock();
void createResourceDock();
//KXMLGUIBuilder
virtual TQWidget *createContainer( TQWidget *parent, int index, const TQDomElement &element, int &id );
virtual void removeContainer( TQWidget *container, TQWidget *parent, TQDomElement &element, int id );
void addSelectionToClipboard() const;
private:
void initActions();
void updateRuler();
KarbonPart *m_part;
VCanvas *m_canvas;
VRuler *m_horizRuler;
VRuler *m_vertRuler;
VPainterFactory *m_painterFactory;
VStrokeFillPreview *m_strokeFillPreview;
VTypeButtonBox *m_typeButtonBox;
VToolBox *m_toolbox;
KAction *m_groupObjects;
KAction *m_ungroupObjects;
KAction *m_closePath;
// actions:
KSelectAction *m_zoomAction;
KSelectAction *m_viewAction;
KAction *m_configureAction;
KToggleAction *m_showRulerAction;
KToggleAction *m_showGridAction;
KToggleAction *m_snapGridAction;
KToggleAction *m_showPageMargins;
KoContextHelpAction *m_contextHelpAction;
KAction *m_deleteSelectionAction;
// line width
KoUnitDoubleSpinComboBox *m_setLineWidth;
KoLineStyleAction *m_lineStyleAction;
//dockers
KoPaletteManager *m_pPaletteManager;
VDocumentTab *m_DocumentTab;
VLayersTab *m_LayersTab;
VHistoryTab *m_HistoryTab;
VColorDocker *m_ColorManager;
VStrokeDocker *m_strokeDocker;
VStyleDocker *m_styleDocker;
VTransformDocker *m_TransformDocker;
VSelectToolBar *m_selectToolBar;
// dcop
DCOPObject *m_dcop;
//Status Bar
TQLabel *m_status; // Ordinary status
TQLabel *m_cursorCoords; // Cursor coordinates
VSmallPreview *m_smallPreview; // Stroke and Fill
VToolController *m_toolController;
};
#endif