X-Git-Url: http://shamusworld.gotdns.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fwidgets%2Fqg_graphicview.cpp;h=d885f8a0a820a59c2f24def12d029d3d97cf9f61;hb=52b41ea9bcb03acb96393b36fe29f27ca0163565;hp=7c0b632076f5eb2281be0f3a53edb0e20343c952;hpb=27d4a138d23453e93a833e9347444b828a971cb4;p=architektonas diff --git a/src/widgets/qg_graphicview.cpp b/src/widgets/qg_graphicview.cpp index 7c0b632..d885f8a 100644 --- a/src/widgets/qg_graphicview.cpp +++ b/src/widgets/qg_graphicview.cpp @@ -14,6 +14,7 @@ #include "qg_graphicview.h" +#include "rs_actiondefault.h" #include "rs_actionzoomin.h" #include "rs_actionzoompan.h" #include "rs_actionzoomscroll.h" @@ -37,6 +38,37 @@ */ QG_GraphicView::QG_GraphicView(QWidget * parent, const char */*name*/, Qt::WindowFlags f): QWidget(parent, f), GraphicView()//, refCount(0) +{ + RS_DEBUG->print("QG_GraphicView::QG_GraphicView(parent, name, flags)..."); + CommonInitialization(); +} + +/** + * Constructor II. + */ +QG_GraphicView::QG_GraphicView(RS_Document * doc, QWidget * parent) +{ +// QG_GraphicView(parent, "graphicview"); + CommonInitialization(); + + RS_DEBUG->print("QG_GraphicView::QG_GraphicView(doc, parent)..."); + //document = doc; + RS_DEBUG->print(" Setting Container..."); + + if (doc) + setContainer(doc); + + RS_DEBUG->print(" container set."); + setFactorX(4.0); + setFactorY(4.0); + setOffset(50, 50); + setBorders(10, 10, 10, 10); + + if (doc) + setDefaultAction(new RS_ActionDefault(*doc, *this)); +} + +void QG_GraphicView::CommonInitialization(void) { setBackground(background); buffer = NULL; @@ -45,6 +77,7 @@ QG_GraphicView::QG_GraphicView(QWidget * parent, const char */*name*/, Qt::Windo //hrm. painter = NULL; + RS_DEBUG->print("--> Setting up layout..."); layout = new QGridLayout(this); layout->setColumnStretch(0, 1); layout->setColumnStretch(1, 0); @@ -60,6 +93,7 @@ Alignment is specified by alignment, which is a bitwise OR of Qt::AlignmentFlags A non-zero alignment indicates that the widget should not grow to fill the available space but should be sized according to sizeHint(). */ + RS_DEBUG->print("--> Creating hScrollBar..."); hScrollBar = new QG_ScrollBar(Qt::Horizontal, this); // hScrollBar->setLineStep(50); hScrollBar->setSingleStep(50); @@ -67,8 +101,8 @@ A non-zero alignment indicates that the widget should not grow to fill the avail layout->addWidget(hScrollBar, 1, 0); // layout->addRowSpacing(1, hScrollBar->sizeHint().height()); layout->addItem(new QSpacerItem(0, hScrollBar->sizeHint().height()), 1, 0); - connect(hScrollBar, SIGNAL(valueChanged(int)), this, SLOT(slotHScrolled(int))); + RS_DEBUG->print("--> Creating vScrollBar..."); vScrollBar = new QG_ScrollBar(Qt::Vertical, this); // vScrollBar->setLineStep(50); vScrollBar->setSingleStep(50); @@ -76,6 +110,8 @@ A non-zero alignment indicates that the widget should not grow to fill the avail layout->addWidget(vScrollBar, 0, 2); // layout->addColSpacing(2, vScrollBar->sizeHint().width()); layout->addItem(new QSpacerItem(vScrollBar->sizeHint().width(), 0), 0, 2); + + connect(hScrollBar, SIGNAL(valueChanged(int)), this, SLOT(slotHScrolled(int))); connect(vScrollBar, SIGNAL(valueChanged(int)), this, SLOT(slotVScrolled(int))); #ifndef __APPLE__ @@ -141,14 +177,10 @@ A non-zero alignment indicates that the widget should not grow to fill the avail */ QG_GraphicView::~QG_GraphicView() { - if (painter != NULL) - { -//Not sure about this... -// ((RS_PainterQt *)painter)->end(); + if (painter) delete painter; - } - if (buffer != NULL) + if (buffer) { delete buffer; buffer = NULL; @@ -373,7 +405,7 @@ void QG_GraphicView::mouseReleaseEvent(QMouseEvent * e) if (!e->isAccepted()) { - if (QG_DIALOGFACTORY != NULL && QG_DIALOGFACTORY->getCadToolBar() != NULL) + if (QG_DIALOGFACTORY && QG_DIALOGFACTORY->getCadToolBar()) { RS_DEBUG->print("QG_GraphicView::mouseReleaseEvent: fwd to cadtoolbar"); QG_DIALOGFACTORY->getCadToolBar()->mouseReleaseEvent(e); @@ -512,11 +544,10 @@ void QG_GraphicView::wheelEvent(QWheelEvent * e) //printf("state: %d\n", e->state()); //printf("ctrl: %d\n", Qt::ControlButton); -Qt::KeyboardModifiers keyState = QApplication::keyboardModifiers(); - - if (container == NULL) + if (!container) return; + Qt::KeyboardModifiers keyState = QApplication::keyboardModifiers(); Vector mouse = toGraph(Vector(e->x(), e->y())); bool scroll = false; @@ -562,7 +593,7 @@ Qt::KeyboardModifiers keyState = QApplication::keyboardModifiers(); void QG_GraphicView::keyPressEvent(QKeyEvent * e) { - if (container == NULL) + if (!container) return; bool scroll = false; @@ -628,11 +659,11 @@ void QG_GraphicView::adjustOffsetControls() Vector max = container->getMax(); // no drawing yet - still allow to scroll - if (max.x < min.x+1.0e-6 || max.y < min.y+1.0e-6 || - max.x > RS_MAXDOUBLE || max.x < RS_MINDOUBLE || - min.x > RS_MAXDOUBLE || min.x < RS_MINDOUBLE || - max.y > RS_MAXDOUBLE || max.y < RS_MINDOUBLE || - min.y > RS_MAXDOUBLE || min.y < RS_MINDOUBLE) + if (max.x < min.x + 1.0e-6 || max.y < min.y + 1.0e-6 + || max.x > RS_MAXDOUBLE || max.x < RS_MINDOUBLE + || min.x > RS_MAXDOUBLE || min.x < RS_MINDOUBLE + || max.y > RS_MAXDOUBLE || max.y < RS_MINDOUBLE + || min.y > RS_MAXDOUBLE || min.y < RS_MINDOUBLE) { min = Vector(-10, -10); max = Vector(100, 100); @@ -774,6 +805,15 @@ have something back in portage. We can make it better, faster, stronger. ;-) If we can make the UI more like Inkscape we'll be in good shape. Plus elements of VectorWorks & etc. as well... + +------------------------------------------------------------------------------- + +What's needed: + +- Draw the entities +- Draw the preview (if any) +- Draw the snapper (if any) + */ // Qt4 handles double buffering of screen writes now, so this needs