/* * Copyright (c) 2012 Mateusz Piękos * Licensed under the simplified BSD license. * See Documentation/Licenses/BSD-simplified.txt for more information. */ #include "Window.h" #include using namespace std; namespace Swift { Window::Window() : QWidget() { layout = new QVBoxLayout(this); hLayout = new QHBoxLayout; sidebarLayout = new QVBoxLayout; toolboxLayout = new QGridLayout; scene = new QGraphicsScene(this); scene->setSceneRect(0, 0, 400, 400); // scene->setItemIndexMethod(QGraphicsScene::NoIndex); graphicsView = new GView(scene, this); graphicsView->setMode(GView::Line); widthBox = new QSpinBox(this); connect(widthBox, SIGNAL(valueChanged(int)), this, SLOT(changeLineWidth(int))); widthBox->setValue(1); moveUpButton = new QPushButton("Move Up", this); connect(moveUpButton, SIGNAL(clicked()), graphicsView, SLOT(moveUpSelectedItem())); moveDownButton = new QPushButton("Move Down", this); connect(moveDownButton, SIGNAL(clicked()), graphicsView, SLOT(moveDownSelectedItem())); colorDialogButton = new QPushButton("Color", this); connect(colorDialogButton, SIGNAL(clicked()), this, SLOT(showColorDialog())); brushColorDialogButton = new QPushButton("Brush", this); connect(brushColorDialogButton, SIGNAL(clicked()), this, SLOT(showBrushColorDialog())); rubberButton = new QToolButton(this); rubberButton->setCheckable(true); rubberButton->setAutoExclusive(true); connect(rubberButton, SIGNAL(clicked()), this, SLOT(setRubberMode())); lineButton = new QToolButton(this); lineButton->setIcon(QIcon(":/icons/line.png")); lineButton->setCheckable(true); lineButton->setAutoExclusive(true); lineButton->setChecked(true); connect(lineButton, SIGNAL(clicked()), this, SLOT(setLineMode())); rectButton = new QToolButton(this); rectButton->setIcon(QIcon(":/icons/rect.png")); rectButton->setCheckable(true); rectButton->setAutoExclusive(true); connect(rectButton, SIGNAL(clicked()), this, SLOT(setRectMode())); circleButton = new QToolButton(this); circleButton->setIcon(QIcon(":/icons/circle.png")); circleButton->setCheckable(true); circleButton->setAutoExclusive(true); connect(circleButton, SIGNAL(clicked()), this, SLOT(setCircleMode())); handLineButton = new QToolButton(this); handLineButton->setIcon(QIcon(":/icons/handline.png")); handLineButton->setCheckable(true); handLineButton->setAutoExclusive(true); connect(handLineButton, SIGNAL(clicked()), this, SLOT(setHandLineMode())); filledHandLineButton = new QToolButton(this); filledHandLineButton->setIcon(QIcon(":/icons/filledHandline.png")); filledHandLineButton->setCheckable(true); filledHandLineButton->setAutoExclusive(true); connect(filledHandLineButton, SIGNAL(clicked()), this, SLOT(setFilledHandLineMode())); textButton = new QToolButton(this); textButton->setIcon(QIcon(":/icons/text.png")); textButton->setCheckable(true); textButton->setAutoExclusive(true); connect(textButton, SIGNAL(clicked()), this, SLOT(setTextMode())); polygonButton = new QToolButton(this); polygonButton->setIcon(QIcon(":/icons/polygon.png")); polygonButton->setCheckable(true); polygonButton->setAutoExclusive(true); connect(polygonButton, SIGNAL(clicked()), this, SLOT(setPolygonMode())); selectButton = new QToolButton(this); selectButton->setIcon(QIcon(":/icons/cursor.png")); selectButton->setCheckable(true); selectButton->setAutoExclusive(true); connect(selectButton, SIGNAL(clicked()), this, SLOT(setSelectMode())); toolboxLayout->addWidget(rubberButton, 0, 0); toolboxLayout->addWidget(lineButton, 0, 1); toolboxLayout->addWidget(rectButton, 0, 2); toolboxLayout->addWidget(circleButton, 1, 0); toolboxLayout->addWidget(handLineButton, 1, 1); toolboxLayout->addWidget(filledHandLineButton, 1, 2); toolboxLayout->addWidget(textButton, 2, 0); toolboxLayout->addWidget(polygonButton, 2, 1); toolboxLayout->addWidget(selectButton, 2, 2); sidebarLayout->addLayout(toolboxLayout); sidebarLayout->addWidget(moveUpButton); sidebarLayout->addWidget(moveDownButton); sidebarLayout->addWidget(widthBox); sidebarLayout->addWidget(colorDialogButton); sidebarLayout->addWidget(brushColorDialogButton); hLayout->addWidget(graphicsView); hLayout->addLayout(sidebarLayout); layout->addLayout(hLayout); this->setLayout(layout); } void Window::changeLineWidth(int i) { graphicsView->setLineWidth(i); } void Window::showColorDialog() { QColor color = QColorDialog::getColor(graphicsView->getLineColor(), 0, "Select pen color", QColorDialog::ShowAlphaChannel); if(color.isValid()) graphicsView->setLineColor(color); } void Window::showBrushColorDialog() { QColor color = QColorDialog::getColor(graphicsView->getBrushColor(), 0, "Select brush color", QColorDialog::ShowAlphaChannel); if(color.isValid()) graphicsView->setBrushColor(color); } void Window::setRubberMode() { graphicsView->setMode(GView::Rubber); } void Window::setLineMode() { graphicsView->setMode(GView::Line); } void Window::setRectMode() { graphicsView->setMode(GView::Rect); } void Window::setCircleMode() { graphicsView->setMode(GView::Circle); } void Window::setHandLineMode() { graphicsView->setMode(GView::HandLine); } void Window::setFilledHandLineMode() { graphicsView->setMode(GView::FilledHandLine); } void Window::setTextMode() { graphicsView->setMode(GView::Text); } void Window::setPolygonMode() { graphicsView->setMode(GView::Polygon); } void Window::setSelectMode() { graphicsView->setMode(GView::Select); } }