KWCanvasItem::KWCanvasItem(const QString &viewMode, KWDocument *document) : QGraphicsWidget(0), KWCanvasBase(document, this) { setAttribute(Qt::WA_OpaquePaintEvent, true); setAttribute(Qt::WA_InputMethodEnabled, true); setFocusPolicy(Qt::StrongFocus); connect(document, SIGNAL(pageSetupChanged()), this, SLOT(pageSetupChanged())); m_viewConverter = new KoZoomHandler(); m_viewMode = KWViewMode::create(viewMode, document); }
KWGui::KWGui(const QString &viewMode, KWView *parent) : QWidget(parent), m_view(parent) { QGridLayout *gridLayout = new QGridLayout(this); gridLayout->setMargin(0); gridLayout->setSpacing(0); setMouseTracking(true); // Ruler m_horizontalRuler = new KoRuler(this, Qt::Horizontal, m_view->viewConverter()); m_horizontalRuler->setShowMousePosition(true); m_horizontalRuler->setUnit(m_view->kwdocument()->unit()); m_verticalRuler = new KoRuler(this, Qt::Vertical, m_view->viewConverter()); m_verticalRuler->setUnit(m_view->kwdocument()->unit()); m_verticalRuler->setShowMousePosition(true); m_canvas = new KWCanvas(viewMode, static_cast<KWDocument*>(m_view->koDocument()), m_view, this); KoCanvasControllerWidget *canvasController = new KoCanvasControllerWidget(m_view->actionCollection(), this); m_canvasController = canvasController; // We need to set this as QDeclarativeView sets them a bit differnt from QAbstractScrollArea canvasController->setFrameStyle(QFrame::StyledPanel | QFrame::Sunken); canvasController->setFocusPolicy(Qt::NoFocus); //setScene(0); canvasController->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn); m_canvasController->setMargin(10); m_canvasController->setCanvas(m_canvas); m_canvasController->setCanvasMode(KoCanvasController::AlignTop); KoToolManager::instance()->addController(m_canvasController); KoToolManager::instance()->registerTools(m_view->actionCollection(), m_canvasController); if (m_view->mainWindow()) { KoModeBoxFactory modeBoxFactory(canvasController, qApp->applicationName(), i18n("Tools")); QDockWidget* modeBox = m_view->mainWindow()->createDockWidget(&modeBoxFactory); m_view->mainWindow()->dockerManager()->removeToolOptionsDocker(); dynamic_cast<KoCanvasObserverBase*>(modeBox)->setObservedCanvas(m_canvas); } gridLayout->addWidget(m_horizontalRuler->tabChooser(), 0, 0); gridLayout->addWidget(m_horizontalRuler, 0, 1); gridLayout->addWidget(m_verticalRuler, 1, 0); gridLayout->addWidget(canvasController, 1, 1); new KoRulerController(m_horizontalRuler, m_canvas->resourceManager()); connect(m_view->kwdocument(), SIGNAL(unitChanged(const KoUnit&)), m_horizontalRuler, SLOT(setUnit(const KoUnit&))); connect(m_view->kwdocument(), SIGNAL(unitChanged(const KoUnit&)), m_verticalRuler, SLOT(setUnit(const KoUnit&))); connect(m_view->kwdocument(), SIGNAL(pageSetupChanged()), this, SLOT(pageSetupChanged())); connect(m_canvasController->proxyObject, SIGNAL(canvasOffsetXChanged(int)), m_horizontalRuler, SLOT(setOffset(int))); connect(m_canvasController->proxyObject, SIGNAL(canvasOffsetYChanged(int)), m_verticalRuler, SLOT(setOffset(int))); connect(m_canvasController->proxyObject, SIGNAL(canvasOffsetYChanged(int)), parent, SLOT(offsetInDocumentMoved(int))); connect(m_canvasController->proxyObject, SIGNAL(canvasMousePositionChanged(const QPoint &)), this, SLOT(updateMousePos(const QPoint&))); connect(m_canvasController->proxyObject, SIGNAL(moveDocumentOffset(const QPoint&)), m_canvas, SLOT(setDocumentOffset(const QPoint&))); connect(m_canvas->shapeManager()->selection(), SIGNAL(selectionChanged()), this, SLOT(shapeSelectionChanged())); m_verticalRuler->createGuideToolConnection(m_canvas); m_horizontalRuler->createGuideToolConnection(m_canvas); pageSetupChanged(); QTimer::singleShot(0, this, SLOT(setupUnitActions())); }