#include "qg_graphicview.h"
+#include "rs_actiondefault.h"
#include "rs_actionzoomin.h"
#include "rs_actionzoompan.h"
#include "rs_actionzoomscroll.h"
*/
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;
//hrm.
painter = NULL;
+ RS_DEBUG->print("--> Setting up layout...");
layout = new QGridLayout(this);
layout->setColumnStretch(0, 1);
layout->setColumnStretch(1, 0);
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);
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);
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__
*/
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;
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);
//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;
void QG_GraphicView::keyPressEvent(QKeyEvent * e)
{
- if (container == NULL)
+ if (!container)
return;
bool scroll = false;
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);
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