Changes for table widows. All prepare for begin testing.
--HG-- branch : feature
This commit is contained in:
parent
f6380cf739
commit
79325fe91f
|
@ -29,12 +29,16 @@
|
||||||
#include "tablewindow.h"
|
#include "tablewindow.h"
|
||||||
#include "ui_tablewindow.h"
|
#include "ui_tablewindow.h"
|
||||||
#include "widgets/vtablegraphicsview.h"
|
#include "widgets/vtablegraphicsview.h"
|
||||||
#include <QtSvg>
|
|
||||||
#include <QPrinter>
|
|
||||||
#include "core/vapplication.h"
|
#include "core/vapplication.h"
|
||||||
#include <QtCore/qmath.h>
|
|
||||||
#include "../../libs/vobj/vobjpaintdevice.h"
|
#include "../../libs/vobj/vobjpaintdevice.h"
|
||||||
#include "../dialogs/app/dialoglayoutsettings.h"
|
#include "../dialogs/app/dialoglayoutsettings.h"
|
||||||
|
#include "../../libs/vlayout/vlayoutgenerator.h"
|
||||||
|
#include "../dialogs/app/dialoglayoutprogress.h"
|
||||||
|
|
||||||
|
#include <QtSvg>
|
||||||
|
#include <QPrinter>
|
||||||
|
#include <QGraphicsScene>
|
||||||
|
#include <QtCore/qmath.h>
|
||||||
|
|
||||||
#ifdef Q_OS_WIN
|
#ifdef Q_OS_WIN
|
||||||
# define PDFTOPS "pdftops.exe"
|
# define PDFTOPS "pdftops.exe"
|
||||||
|
@ -48,98 +52,36 @@
|
||||||
* @param parent parent widget.
|
* @param parent parent widget.
|
||||||
*/
|
*/
|
||||||
TableWindow::TableWindow(QWidget *parent)
|
TableWindow::TableWindow(QWidget *parent)
|
||||||
:QMainWindow(parent), numberDetal(nullptr), colission(nullptr), ui(new Ui::TableWindow),
|
:QMainWindow(parent), ui(new Ui::TableWindow),
|
||||||
listDetails(QVector<VLayoutDetail>()), outItems(false), collidingItems(false), tableScene(nullptr),
|
listDetails(QVector<VLayoutDetail>()), papers(QList<QGraphicsItem *>()), shadows(QList<QGraphicsItem *>()),
|
||||||
paper(nullptr), shadowPaper(nullptr), listOutItems(nullptr), listCollidingItems(QList<QGraphicsItem*>()),
|
scenes(QList<QGraphicsScene *>()), fileName(QString()), description(QString()), paperHeight(0), paperWidth(0),
|
||||||
indexDetail(0), sceneRect(QRectF()), fileName(QString()), description(QString())
|
shift(0), layoutWidth(0), group(Cases::CaseDesc), tempScene(nullptr)
|
||||||
{
|
{
|
||||||
ui->setupUi(this);
|
ui->setupUi(this);
|
||||||
numberDetal = new QLabel(tr("0 details left."), this);
|
tempScene = new QGraphicsScene(QRectF(0, 0, qApp->toPixel(823, Unit::Mm), qApp->toPixel(1171, Unit::Mm)));
|
||||||
colission = new QLabel(tr("Collisions not found."), this);
|
|
||||||
ui->statusBar->addWidget(numberDetal);
|
|
||||||
ui->statusBar->addWidget(colission);
|
|
||||||
outItems = collidingItems = false;
|
|
||||||
sceneRect = QRectF(0, 0, qApp->toPixel(823, Unit::Mm), qApp->toPixel(1171, Unit::Mm));
|
|
||||||
tableScene = new QGraphicsScene(sceneRect);
|
|
||||||
QBrush brush;
|
QBrush brush;
|
||||||
brush.setStyle( Qt::SolidPattern );
|
brush.setStyle( Qt::SolidPattern );
|
||||||
brush.setColor( QColor( Qt::gray ) );
|
brush.setColor( QColor( Qt::gray ) );
|
||||||
tableScene->setBackgroundBrush( brush );
|
tempScene->setBackgroundBrush( brush );
|
||||||
|
|
||||||
ui->view->setScene(tableScene);
|
ui->view->setScene(tempScene);
|
||||||
ui->view->fitInView(ui->view->scene()->sceneRect(), Qt::KeepAspectRatio);
|
ui->view->fitInView(ui->view->scene()->sceneRect(), Qt::KeepAspectRatio);
|
||||||
ui->horizontalLayout->addWidget(ui->view);
|
ui->horizontalLayout->addWidget(ui->view);
|
||||||
connect(tableScene, &QGraphicsScene::selectionChanged, ui->view, &VTableGraphicsView::selectionChanged);
|
//connect(ui->actionZoomIn, &QAction::triggered, ui->view, &VTableGraphicsView::ZoomIn);
|
||||||
connect(ui->actionTurn, &QAction::triggered, ui->view, &VTableGraphicsView::rotateItems);
|
//connect(ui->actionZoomOut, &QAction::triggered, ui->view, &VTableGraphicsView::ZoomOut);
|
||||||
connect(ui->actionMirror, &QAction::triggered, ui->view, &VTableGraphicsView::MirrorItem);
|
|
||||||
connect(ui->actionZoomIn, &QAction::triggered, ui->view, &VTableGraphicsView::ZoomIn);
|
|
||||||
connect(ui->actionZoomOut, &QAction::triggered, ui->view, &VTableGraphicsView::ZoomOut);
|
|
||||||
connect(ui->actionStop, &QAction::triggered, this, &TableWindow::StopTable);
|
connect(ui->actionStop, &QAction::triggered, this, &TableWindow::StopTable);
|
||||||
connect(ui->actionSave, &QAction::triggered, this, &TableWindow::saveScene);
|
//connect(ui->actionSave, &QAction::triggered, this, &TableWindow::saveScene);
|
||||||
connect(ui->actionNext, &QAction::triggered, this, &TableWindow::GetNextDetail);
|
|
||||||
connect(ui->actionAdd, &QAction::triggered, this, &TableWindow::AddLength);
|
|
||||||
connect(ui->actionRemove, &QAction::triggered, this, &TableWindow::RemoveLength);
|
|
||||||
connect(ui->view, &VTableGraphicsView::itemChect, this, &TableWindow::itemChect);
|
|
||||||
connect(ui->actionLayout, &QAction::triggered, this, &TableWindow::Layout);
|
connect(ui->actionLayout, &QAction::triggered, this, &TableWindow::Layout);
|
||||||
|
connect(ui->listWidget, &QListWidget::currentRowChanged, this, &TableWindow::ShowPaper);
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
TableWindow::~TableWindow()
|
TableWindow::~TableWindow()
|
||||||
{
|
{
|
||||||
delete tableScene;
|
ClearLayout();
|
||||||
delete ui;
|
delete ui;
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
|
||||||
/**
|
|
||||||
* @brief AddPaper add to the scene paper and shadow.
|
|
||||||
*/
|
|
||||||
void TableWindow::AddPaper()
|
|
||||||
{
|
|
||||||
qreal x1, y1, x2, y2;
|
|
||||||
sceneRect.getCoords(&x1, &y1, &x2, &y2);
|
|
||||||
shadowPaper = new QGraphicsRectItem(QRectF(x1+4, y1+4, x2+4, y2+4));
|
|
||||||
shadowPaper->setBrush(QBrush(Qt::black));
|
|
||||||
tableScene->addItem(shadowPaper);
|
|
||||||
paper = new QGraphicsRectItem(QRectF(x1, y1, x2, y2));
|
|
||||||
paper->setPen(QPen(Qt::black, qApp->toPixel(qApp->widthMainLine())));
|
|
||||||
paper->setBrush(QBrush(Qt::white));
|
|
||||||
tableScene->addItem(paper);
|
|
||||||
qDebug()<<paper->rect().size().toSize();
|
|
||||||
}
|
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
|
||||||
/**
|
|
||||||
* @brief AddDetail show on scene next detail.
|
|
||||||
*/
|
|
||||||
void TableWindow::AddDetail()
|
|
||||||
{
|
|
||||||
// if (indexDetail<listDetails.count())
|
|
||||||
// {
|
|
||||||
// tableScene->clearSelection();
|
|
||||||
// VItem* Detail = listDetails[indexDetail];
|
|
||||||
// SCASSERT(Detail != nullptr);
|
|
||||||
// connect(Detail, &VItem::itemOut, this, &TableWindow::itemOut);
|
|
||||||
// connect(Detail, &VItem::itemColliding, this, &TableWindow::itemColliding);
|
|
||||||
// connect(this, &TableWindow::LengthChanged, Detail, &VItem::LengthChanged);
|
|
||||||
// Detail->setPen(QPen(Qt::black, 1));
|
|
||||||
// Detail->setBrush(QBrush(Qt::white));
|
|
||||||
// Detail->setPos(paper->boundingRect().center());
|
|
||||||
// Detail->setFlag(QGraphicsItem::ItemIsMovable, true);
|
|
||||||
// Detail->setFlag(QGraphicsItem::ItemIsSelectable, true);
|
|
||||||
// Detail->setFlag(QGraphicsItem::ItemSendsGeometryChanges, true);
|
|
||||||
// Detail->setPaper(paper);
|
|
||||||
// tableScene->addItem(Detail);
|
|
||||||
// Detail->setSelected(true);
|
|
||||||
// indexDetail++;
|
|
||||||
// if (indexDetail==listDetails.count())
|
|
||||||
// {
|
|
||||||
// ui->actionSave->setEnabled(true);
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// numberDetal->setText(QString(tr("%1 details left.")).arg(listDetails.count()-indexDetail));
|
|
||||||
}
|
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
/**
|
/**
|
||||||
* @brief ModelChosen show window when user want create new layout.
|
* @brief ModelChosen show window when user want create new layout.
|
||||||
|
@ -166,10 +108,6 @@ void TableWindow::ModelChosen(QVector<VLayoutDetail> listDetails, const QString
|
||||||
this->fileName = fi.baseName();
|
this->fileName = fi.baseName();
|
||||||
|
|
||||||
this->listDetails = listDetails;
|
this->listDetails = listDetails;
|
||||||
listOutItems = new QBitArray(this->listDetails.count());
|
|
||||||
AddPaper();
|
|
||||||
indexDetail = 0;
|
|
||||||
AddDetail();
|
|
||||||
show();
|
show();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -214,11 +152,7 @@ void TableWindow::showEvent ( QShowEvent * event )
|
||||||
void TableWindow::StopTable()
|
void TableWindow::StopTable()
|
||||||
{
|
{
|
||||||
hide();
|
hide();
|
||||||
tableScene->clear();
|
ClearLayout();
|
||||||
delete listOutItems;
|
|
||||||
listDetails.clear();
|
|
||||||
sceneRect = QRectF(0, 0, qApp->toPixel(823, Unit::Mm), qApp->toPixel(1171, Unit::Mm));
|
|
||||||
tableScene->setSceneRect(sceneRect);
|
|
||||||
emit closed();
|
emit closed();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -228,313 +162,160 @@ void TableWindow::StopTable()
|
||||||
*/
|
*/
|
||||||
void TableWindow::saveScene()
|
void TableWindow::saveScene()
|
||||||
{
|
{
|
||||||
QMap<QString, QString> extByMessage;
|
// QMap<QString, QString> extByMessage;
|
||||||
extByMessage[ tr("Svg files (*.svg)") ] = ".svg";
|
// extByMessage[ tr("Svg files (*.svg)") ] = ".svg";
|
||||||
extByMessage[ tr("PDF files (*.pdf)") ] = ".pdf";
|
// extByMessage[ tr("PDF files (*.pdf)") ] = ".pdf";
|
||||||
extByMessage[ tr("Images (*.png)") ] = ".png";
|
// extByMessage[ tr("Images (*.png)") ] = ".png";
|
||||||
extByMessage[ tr("Wavefront OBJ (*.obj)") ] = ".obj";
|
// extByMessage[ tr("Wavefront OBJ (*.obj)") ] = ".obj";
|
||||||
|
|
||||||
QProcess proc;
|
// QProcess proc;
|
||||||
proc.start(PDFTOPS);
|
// proc.start(PDFTOPS);
|
||||||
if (proc.waitForFinished(15000))
|
// if (proc.waitForFinished(15000))
|
||||||
{
|
|
||||||
extByMessage[ tr("PS files (*.ps)") ] = ".ps";
|
|
||||||
extByMessage[ tr("EPS files (*.eps)") ] = ".eps";
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
qWarning()<<PDFTOPS<<"error"<<proc.error()<<proc.errorString();
|
|
||||||
}
|
|
||||||
|
|
||||||
QString saveMessage;
|
|
||||||
QMapIterator<QString, QString> i(extByMessage);
|
|
||||||
while (i.hasNext())
|
|
||||||
{
|
|
||||||
i.next();
|
|
||||||
saveMessage += i.key();
|
|
||||||
if (i.hasNext())
|
|
||||||
{
|
|
||||||
saveMessage += ";;";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
QString sf;
|
|
||||||
// the save function
|
|
||||||
QString dir = QDir::homePath()+"/"+fileName;
|
|
||||||
QString name = QFileDialog::getSaveFileName(this, tr("Save layout"), dir, saveMessage, &sf);
|
|
||||||
|
|
||||||
if (name.isEmpty())
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// what if the user did not specify a suffix...?
|
|
||||||
QString suf = extByMessage.value(sf);
|
|
||||||
suf.replace(".", "");
|
|
||||||
QFileInfo f( name );
|
|
||||||
if (f.suffix().isEmpty() || f.suffix() != suf)
|
|
||||||
{
|
|
||||||
name += extByMessage.value(sf);
|
|
||||||
}
|
|
||||||
|
|
||||||
QBrush *brush = new QBrush();
|
|
||||||
brush->setColor( QColor( Qt::white ) );
|
|
||||||
tableScene->setBackgroundBrush( *brush );
|
|
||||||
tableScene->clearSelection(); // Selections would also render to the file, so need delete them
|
|
||||||
shadowPaper->setVisible(false);
|
|
||||||
paper->setPen(QPen(Qt::white, 0.1, Qt::NoPen));
|
|
||||||
QFileInfo fi( name );
|
|
||||||
QStringList suffix = QStringList() << "svg" << "png" << "pdf" << "eps" << "ps" << "obj";
|
|
||||||
switch (suffix.indexOf(fi.suffix()))
|
|
||||||
{
|
|
||||||
case 0: //svg
|
|
||||||
paper->setVisible(false);
|
|
||||||
SvgFile(name);
|
|
||||||
paper->setVisible(true);
|
|
||||||
break;
|
|
||||||
case 1: //png
|
|
||||||
PngFile(name);
|
|
||||||
break;
|
|
||||||
case 2: //pdf
|
|
||||||
PdfFile(name);
|
|
||||||
break;
|
|
||||||
case 3: //eps
|
|
||||||
EpsFile(name);
|
|
||||||
break;
|
|
||||||
case 4: //ps
|
|
||||||
PsFile(name);
|
|
||||||
break;
|
|
||||||
case 5: //obj
|
|
||||||
paper->setVisible(false);
|
|
||||||
ObjFile(name);
|
|
||||||
paper->setVisible(true);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
qDebug() << "Can't recognize file suffix. File file "<<name<<Q_FUNC_INFO;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
paper->setPen(QPen(Qt::black, qApp->toPixel(qApp->widthMainLine())));
|
|
||||||
brush->setColor( QColor( Qt::gray ) );
|
|
||||||
brush->setStyle( Qt::SolidPattern );
|
|
||||||
tableScene->setBackgroundBrush( *brush );
|
|
||||||
shadowPaper->setVisible(true);
|
|
||||||
delete brush;
|
|
||||||
}
|
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
|
||||||
/**
|
|
||||||
* @brief itemChect turn off rotation button if don't selected detail.
|
|
||||||
* @param flag true - enable button.
|
|
||||||
*/
|
|
||||||
void TableWindow::itemChect(bool flag)
|
|
||||||
{
|
|
||||||
ui->actionTurn->setDisabled(flag);
|
|
||||||
ui->actionMirror->setDisabled(flag);
|
|
||||||
}
|
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
|
||||||
/**
|
|
||||||
* @brief checkNext disable next detail button if exist colission or out details.
|
|
||||||
*/
|
|
||||||
void TableWindow::checkNext()
|
|
||||||
{
|
|
||||||
if (outItems == true && collidingItems == true)
|
|
||||||
{
|
|
||||||
colission->setText(tr("Collisions not found."));
|
|
||||||
if (indexDetail==listDetails.count())
|
|
||||||
{
|
|
||||||
ui->actionSave->setEnabled(true);
|
|
||||||
ui->actionNext->setDisabled(true);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
ui->actionNext->setDisabled(false);
|
|
||||||
ui->actionSave->setEnabled(false);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
colission->setText(tr("Collisions found."));
|
|
||||||
ui->actionNext->setDisabled(true);
|
|
||||||
ui->actionSave->setEnabled(false);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
|
||||||
/**
|
|
||||||
* @brief itemOut handled if detail moved out paper sheet.
|
|
||||||
* @param number Number detail in list.
|
|
||||||
* @param flag set state of detail. True if detail moved out paper sheet.
|
|
||||||
*/
|
|
||||||
void TableWindow::itemOut(int number, bool flag)
|
|
||||||
{
|
|
||||||
listOutItems->setBit(number, flag);
|
|
||||||
for ( int i = 0; i < listOutItems->count(); ++i )
|
|
||||||
{
|
|
||||||
if (listOutItems->at(i)==true)
|
|
||||||
{
|
|
||||||
outItems=false;
|
|
||||||
qDebug()<<"itemOut::outItems="<<outItems<<"&& collidingItems"<<collidingItems;
|
|
||||||
checkNext();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
outItems=true;
|
|
||||||
checkNext();
|
|
||||||
}
|
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
|
||||||
/**
|
|
||||||
* @brief itemColliding handled if we have colission details.
|
|
||||||
* @param list list of colission details.
|
|
||||||
* @param number 0 - include to list of colission dcetails, 1 - exclude from list.
|
|
||||||
*/
|
|
||||||
void TableWindow::itemColliding(QList<QGraphicsItem *> list, int number)
|
|
||||||
{
|
|
||||||
//qDebug()<<"number="<<number;
|
|
||||||
// if (number==0)
|
|
||||||
// {
|
// {
|
||||||
// if (listCollidingItems.isEmpty()==false)
|
// extByMessage[ tr("PS files (*.ps)") ] = ".ps";
|
||||||
// {
|
// extByMessage[ tr("EPS files (*.eps)") ] = ".eps";
|
||||||
// if (listCollidingItems.contains(list.at(0))==true)
|
|
||||||
// {
|
|
||||||
// listCollidingItems.removeAt(listCollidingItems.indexOf(list.at(0)));
|
|
||||||
// if (listCollidingItems.size()>1)
|
|
||||||
// {
|
|
||||||
// for ( int i = 0; i < listCollidingItems.count(); ++i )
|
|
||||||
// {
|
|
||||||
// QList<QGraphicsItem *> lis = listCollidingItems.at(i)->collidingItems();
|
|
||||||
// if (lis.size()-2 <= 0)
|
|
||||||
// {
|
|
||||||
// VItem * bitem = qgraphicsitem_cast<VItem *> ( listCollidingItems.at(i) );
|
|
||||||
// SCASSERT(bitem != nullptr);
|
|
||||||
// bitem->setPen(QPen(Qt::black, qApp->toPixel(qApp->widthMainLine())));
|
|
||||||
// listCollidingItems.removeAt(i);
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// else if (listCollidingItems.size()==1)
|
|
||||||
// {
|
|
||||||
// VItem * bitem = qgraphicsitem_cast<VItem *> ( listCollidingItems.at(0) );
|
|
||||||
// SCASSERT(bitem != nullptr);
|
|
||||||
// bitem->setPen(QPen(Qt::black, qApp->toPixel(qApp->widthMainLine())));
|
|
||||||
// listCollidingItems.clear();
|
|
||||||
// collidingItems = true;
|
|
||||||
// }
|
|
||||||
// }
|
// }
|
||||||
// else
|
// else
|
||||||
// {
|
// {
|
||||||
// collidingItems = true;
|
// qWarning()<<PDFTOPS<<"error"<<proc.error()<<proc.errorString();
|
||||||
// }
|
// }
|
||||||
// }
|
|
||||||
// else
|
// QString saveMessage;
|
||||||
|
// QMapIterator<QString, QString> i(extByMessage);
|
||||||
|
// while (i.hasNext())
|
||||||
// {
|
// {
|
||||||
// collidingItems = true;
|
// i.next();
|
||||||
// }
|
// saveMessage += i.key();
|
||||||
// }
|
// if (i.hasNext())
|
||||||
// else if (number==1)
|
|
||||||
// {
|
// {
|
||||||
// if (list.contains(paper)==true)
|
// saveMessage += ";;";
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
|
// QString sf;
|
||||||
|
// // the save function
|
||||||
|
// QString dir = QDir::homePath()+"/"+fileName;
|
||||||
|
// QString name = QFileDialog::getSaveFileName(this, tr("Save layout"), dir, saveMessage, &sf);
|
||||||
|
|
||||||
|
// if (name.isEmpty())
|
||||||
// {
|
// {
|
||||||
// list.removeAt(list.indexOf(paper));
|
// return;
|
||||||
// }
|
// }
|
||||||
// if (list.contains(shadowPaper)==true)
|
|
||||||
|
// // what if the user did not specify a suffix...?
|
||||||
|
// QString suf = extByMessage.value(sf);
|
||||||
|
// suf.replace(".", "");
|
||||||
|
// QFileInfo f( name );
|
||||||
|
// if (f.suffix().isEmpty() || f.suffix() != suf)
|
||||||
// {
|
// {
|
||||||
// list.removeAt(list.indexOf(shadowPaper));
|
// name += extByMessage.value(sf);
|
||||||
// }
|
// }
|
||||||
// for ( int i = 0; i < list.count(); ++i )
|
|
||||||
|
// QBrush *brush = new QBrush();
|
||||||
|
// brush->setColor( QColor( Qt::white ) );
|
||||||
|
// tableScene->setBackgroundBrush( *brush );
|
||||||
|
// tableScene->clearSelection(); // Selections would also render to the file, so need delete them
|
||||||
|
// shadowPaper->setVisible(false);
|
||||||
|
// paper->setPen(QPen(Qt::white, 0.1, Qt::NoPen));
|
||||||
|
// QFileInfo fi( name );
|
||||||
|
// QStringList suffix = QStringList() << "svg" << "png" << "pdf" << "eps" << "ps" << "obj";
|
||||||
|
// switch (suffix.indexOf(fi.suffix()))
|
||||||
// {
|
// {
|
||||||
// if (listCollidingItems.contains(list.at(i))==false)
|
// case 0: //svg
|
||||||
// {
|
// paper->setVisible(false);
|
||||||
// listCollidingItems.append(list.at(i));
|
// SvgFile(name);
|
||||||
|
// paper->setVisible(true);
|
||||||
|
// break;
|
||||||
|
// case 1: //png
|
||||||
|
// PngFile(name);
|
||||||
|
// break;
|
||||||
|
// case 2: //pdf
|
||||||
|
// PdfFile(name);
|
||||||
|
// break;
|
||||||
|
// case 3: //eps
|
||||||
|
// EpsFile(name);
|
||||||
|
// break;
|
||||||
|
// case 4: //ps
|
||||||
|
// PsFile(name);
|
||||||
|
// break;
|
||||||
|
// case 5: //obj
|
||||||
|
// paper->setVisible(false);
|
||||||
|
// ObjFile(name);
|
||||||
|
// paper->setVisible(true);
|
||||||
|
// break;
|
||||||
|
// default:
|
||||||
|
// qDebug() << "Can't recognize file suffix. File file "<<name<<Q_FUNC_INFO;
|
||||||
|
// break;
|
||||||
// }
|
// }
|
||||||
// }
|
// paper->setPen(QPen(Qt::black, qApp->toPixel(qApp->widthMainLine())));
|
||||||
// collidingItems = false;
|
// brush->setColor( QColor( Qt::gray ) );
|
||||||
// }
|
// brush->setStyle( Qt::SolidPattern );
|
||||||
// qDebug()<<"itemColliding::outItems="<<outItems<<"&& collidingItems"<<collidingItems;
|
// tableScene->setBackgroundBrush( *brush );
|
||||||
// checkNext();
|
// shadowPaper->setVisible(true);
|
||||||
|
// delete brush;
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
void TableWindow::ShowPaper(int index)
|
||||||
/**
|
|
||||||
* @brief GetNextDetail put next detail on table.
|
|
||||||
*/
|
|
||||||
void TableWindow::GetNextDetail()
|
|
||||||
{
|
{
|
||||||
AddDetail();
|
if (index < 0 || index > scenes.size())
|
||||||
}
|
{
|
||||||
|
ui->view->setScene(tempScene);
|
||||||
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
ui->view->setScene(scenes.at(index));
|
||||||
/**
|
|
||||||
* @brief AddLength Add length paper sheet.Збільшує довжину листа на певне значення за один раз.
|
|
||||||
*/
|
|
||||||
void TableWindow::AddLength()
|
|
||||||
{
|
|
||||||
QRectF rect = tableScene->sceneRect();
|
|
||||||
rect.setHeight(rect.height()+qApp->toPixel(279, Unit::Mm));
|
|
||||||
tableScene->setSceneRect(rect);
|
|
||||||
rect = shadowPaper->rect();
|
|
||||||
rect.setHeight(rect.height()+qApp->toPixel(279, Unit::Mm));
|
|
||||||
shadowPaper->setRect(rect);
|
|
||||||
rect = paper->rect();
|
|
||||||
rect.setHeight(rect.height()+qApp->toPixel(279, Unit::Mm));
|
|
||||||
paper->setRect(rect);
|
|
||||||
ui->actionRemove->setEnabled(true);
|
|
||||||
emit LengthChanged();
|
|
||||||
}
|
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
|
||||||
/**
|
|
||||||
* @brief RemoveLength reduce the length of paper sheet. You can reduce to the minimal value only.
|
|
||||||
*/
|
|
||||||
void TableWindow::RemoveLength()
|
|
||||||
{
|
|
||||||
if (sceneRect.height() <= tableScene->sceneRect().height() - 100)
|
|
||||||
{
|
|
||||||
QRectF rect = tableScene->sceneRect();
|
|
||||||
rect.setHeight(rect.height()-qApp->toPixel(279, Unit::Mm));
|
|
||||||
tableScene->setSceneRect(rect);
|
|
||||||
rect = shadowPaper->rect();
|
|
||||||
rect.setHeight(rect.height()-qApp->toPixel(279, Unit::Mm));
|
|
||||||
shadowPaper->setRect(rect);
|
|
||||||
rect = paper->rect();
|
|
||||||
rect.setHeight(rect.height()-qApp->toPixel(279, Unit::Mm));
|
|
||||||
paper->setRect(rect);
|
|
||||||
if (fabs(sceneRect.height() - tableScene->sceneRect().height()) < 0.01)
|
|
||||||
{
|
|
||||||
ui->actionRemove->setDisabled(true);
|
|
||||||
}
|
|
||||||
emit LengthChanged();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
ui->actionRemove->setDisabled(true);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
void TableWindow::Layout()
|
void TableWindow::Layout()
|
||||||
{
|
{
|
||||||
DialogLayoutSettings layout(this);
|
DialogLayoutSettings layout(this);
|
||||||
layout.exec();
|
if (paperHeight != 0)
|
||||||
}
|
{
|
||||||
|
layout.SetPaperHeight(paperHeight);
|
||||||
|
layout.SetPaperWidth(paperWidth);
|
||||||
|
layout.SetLayoutWidth(layoutWidth);
|
||||||
|
layout.SetShift(shift);
|
||||||
|
layout.SetGroup(group);
|
||||||
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
if (layout.exec() == QDialog::Rejected)
|
||||||
/**
|
|
||||||
* @brief keyPressEvent handle key press events.
|
|
||||||
* @param event key event.
|
|
||||||
*/
|
|
||||||
void TableWindow::keyPressEvent ( QKeyEvent * event )
|
|
||||||
{
|
|
||||||
if ( event->key() == Qt::Key_Enter || event->key() == Qt::Key_Return )
|
|
||||||
{
|
{
|
||||||
if (ui->actionNext->isEnabled() == true )
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
paperHeight = layout.GetPaperHeight();
|
||||||
|
paperWidth = layout.GetPaperWidth();
|
||||||
|
shift = layout.GetShift();
|
||||||
|
layoutWidth = layout.GetLayoutWidth();
|
||||||
|
group = layout.GetGroup();
|
||||||
|
|
||||||
|
VLayoutGenerator lGenerator(this);
|
||||||
|
lGenerator.SetDetails(listDetails);
|
||||||
|
lGenerator.SetLayoutWidth(layoutWidth);
|
||||||
|
lGenerator.SetCaseType(group);
|
||||||
|
lGenerator.SetPaperHeight(paperHeight);
|
||||||
|
lGenerator.SetPaperWidth(paperWidth);
|
||||||
|
lGenerator.SetShift(shift);
|
||||||
|
|
||||||
|
DialogLayoutProgress progress(lGenerator.DetailsCount(), this);
|
||||||
|
|
||||||
|
connect(&lGenerator, &VLayoutGenerator::Start, &progress, &DialogLayoutProgress::Start);
|
||||||
|
connect(&lGenerator, &VLayoutGenerator::Arranged, &progress, &DialogLayoutProgress::Arranged);
|
||||||
|
connect(&lGenerator, &VLayoutGenerator::Error, &progress, &DialogLayoutProgress::Error);
|
||||||
|
connect(&lGenerator, &VLayoutGenerator::Finished, &progress, &DialogLayoutProgress::Finished);
|
||||||
|
connect(&progress, &DialogLayoutProgress::Abort, &lGenerator, &VLayoutGenerator::Abort);
|
||||||
|
|
||||||
|
lGenerator.Generate();
|
||||||
|
|
||||||
|
if (lGenerator.State() == LayoutErrors::NoError)
|
||||||
{
|
{
|
||||||
AddDetail();
|
ClearLayout();
|
||||||
qDebug()<<"Added detail.";
|
papers = lGenerator.GetItems();
|
||||||
|
CreateShadows();
|
||||||
|
CreateScenes();
|
||||||
|
// Create previews
|
||||||
|
PrepareSceneList();
|
||||||
}
|
}
|
||||||
}
|
|
||||||
QMainWindow::keyPressEvent ( event );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
@ -544,21 +325,21 @@ void TableWindow::keyPressEvent ( QKeyEvent * event )
|
||||||
*/
|
*/
|
||||||
void TableWindow::SvgFile(const QString &name) const
|
void TableWindow::SvgFile(const QString &name) const
|
||||||
{
|
{
|
||||||
QSvgGenerator generator;
|
// QSvgGenerator generator;
|
||||||
generator.setFileName(name);
|
// generator.setFileName(name);
|
||||||
generator.setSize(paper->rect().size().toSize());
|
// generator.setSize(paper->rect().size().toSize());
|
||||||
generator.setViewBox(paper->rect());
|
// generator.setViewBox(paper->rect());
|
||||||
generator.setTitle("Valentina pattern");
|
// generator.setTitle("Valentina pattern");
|
||||||
generator.setDescription(description);
|
// generator.setDescription(description);
|
||||||
generator.setResolution(static_cast<int>(qApp->PrintDPI));
|
// generator.setResolution(static_cast<int>(qApp->PrintDPI));
|
||||||
QPainter painter;
|
// QPainter painter;
|
||||||
painter.begin(&generator);
|
// painter.begin(&generator);
|
||||||
painter.setFont( QFont( "Arial", 8, QFont::Normal ) );
|
// painter.setFont( QFont( "Arial", 8, QFont::Normal ) );
|
||||||
painter.setRenderHint(QPainter::Antialiasing, true);
|
// painter.setRenderHint(QPainter::Antialiasing, true);
|
||||||
painter.setPen(QPen(Qt::black, qApp->toPixel(qApp->widthHairLine()), Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin));
|
// painter.setPen(QPen(Qt::black, qApp->toPixel(qApp->widthHairLine()), Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin));
|
||||||
painter.setBrush ( QBrush ( Qt::NoBrush ) );
|
// painter.setBrush ( QBrush ( Qt::NoBrush ) );
|
||||||
tableScene->render(&painter);
|
// tableScene->render(&painter);
|
||||||
painter.end();
|
// painter.end();
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
@ -568,19 +349,19 @@ void TableWindow::SvgFile(const QString &name) const
|
||||||
*/
|
*/
|
||||||
void TableWindow::PngFile(const QString &name) const
|
void TableWindow::PngFile(const QString &name) const
|
||||||
{
|
{
|
||||||
QRectF r = paper->rect();
|
// QRectF r = paper->rect();
|
||||||
qreal x=0, y=0, w=0, h=0;
|
// qreal x=0, y=0, w=0, h=0;
|
||||||
r.getRect(&x, &y, &w, &h);// Re-shrink the scene to it's bounding contents
|
// r.getRect(&x, &y, &w, &h);// Re-shrink the scene to it's bounding contents
|
||||||
// Create the image with the exact size of the shrunk scene
|
// // Create the image with the exact size of the shrunk scene
|
||||||
QImage image(QSize(static_cast<qint32>(w), static_cast<qint32>(h)), QImage::Format_ARGB32);
|
// QImage image(QSize(static_cast<qint32>(w), static_cast<qint32>(h)), QImage::Format_ARGB32);
|
||||||
image.fill(Qt::transparent); // Start all pixels transparent
|
// image.fill(Qt::transparent); // Start all pixels transparent
|
||||||
QPainter painter(&image);
|
// QPainter painter(&image);
|
||||||
painter.setFont( QFont( "Arial", 8, QFont::Normal ) );
|
// painter.setFont( QFont( "Arial", 8, QFont::Normal ) );
|
||||||
painter.setRenderHint(QPainter::Antialiasing, true);
|
// painter.setRenderHint(QPainter::Antialiasing, true);
|
||||||
painter.setPen(QPen(Qt::black, qApp->toPixel(qApp->widthMainLine()), Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin));
|
// painter.setPen(QPen(Qt::black, qApp->toPixel(qApp->widthMainLine()), Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin));
|
||||||
painter.setBrush ( QBrush ( Qt::NoBrush ) );
|
// painter.setBrush ( QBrush ( Qt::NoBrush ) );
|
||||||
tableScene->render(&painter);
|
// tableScene->render(&painter);
|
||||||
image.save(name);
|
// image.save(name);
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
@ -590,26 +371,26 @@ void TableWindow::PngFile(const QString &name) const
|
||||||
*/
|
*/
|
||||||
void TableWindow::PdfFile(const QString &name) const
|
void TableWindow::PdfFile(const QString &name) const
|
||||||
{
|
{
|
||||||
QPrinter printer;
|
// QPrinter printer;
|
||||||
printer.setOutputFormat(QPrinter::PdfFormat);
|
// printer.setOutputFormat(QPrinter::PdfFormat);
|
||||||
printer.setOutputFileName(name);
|
// printer.setOutputFileName(name);
|
||||||
QRectF r = paper->rect();
|
// QRectF r = paper->rect();
|
||||||
qreal x=0, y=0, w=0, h=0;
|
// qreal x=0, y=0, w=0, h=0;
|
||||||
r.getRect(&x, &y, &w, &h);// Re-shrink the scene to it's bounding contents
|
// r.getRect(&x, &y, &w, &h);// Re-shrink the scene to it's bounding contents
|
||||||
printer.setResolution(static_cast<int>(qApp->PrintDPI));
|
// printer.setResolution(static_cast<int>(qApp->PrintDPI));
|
||||||
printer.setPaperSize ( QSizeF(qApp->fromPixel(w, Unit::Mm), qApp->fromPixel(h, Unit::Mm)), QPrinter::Millimeter );
|
// printer.setPaperSize ( QSizeF(qApp->fromPixel(w, Unit::Mm), qApp->fromPixel(h, Unit::Mm)), QPrinter::Millimeter );
|
||||||
QPainter painter;
|
// QPainter painter;
|
||||||
if (painter.begin( &printer ) == false)
|
// if (painter.begin( &printer ) == false)
|
||||||
{ // failed to open file
|
// { // failed to open file
|
||||||
qCritical("Can't open printer %s", qPrintable(name));
|
// qCritical("Can't open printer %s", qPrintable(name));
|
||||||
return;
|
// return;
|
||||||
}
|
// }
|
||||||
painter.setFont( QFont( "Arial", 8, QFont::Normal ) );
|
// painter.setFont( QFont( "Arial", 8, QFont::Normal ) );
|
||||||
painter.setRenderHint(QPainter::Antialiasing, true);
|
// painter.setRenderHint(QPainter::Antialiasing, true);
|
||||||
painter.setPen(QPen(Qt::black, qApp->toPixel(qApp->widthMainLine()), Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin));
|
// painter.setPen(QPen(Qt::black, qApp->toPixel(qApp->widthMainLine()), Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin));
|
||||||
painter.setBrush ( QBrush ( Qt::NoBrush ) );
|
// painter.setBrush ( QBrush ( Qt::NoBrush ) );
|
||||||
tableScene->render(&painter);
|
// tableScene->render(&painter);
|
||||||
painter.end();
|
// painter.end();
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
@ -619,13 +400,13 @@ void TableWindow::PdfFile(const QString &name) const
|
||||||
*/
|
*/
|
||||||
void TableWindow::EpsFile(const QString &name) const
|
void TableWindow::EpsFile(const QString &name) const
|
||||||
{
|
{
|
||||||
QTemporaryFile tmp;
|
// QTemporaryFile tmp;
|
||||||
if (tmp.open())
|
// if (tmp.open())
|
||||||
{
|
// {
|
||||||
PdfFile(tmp.fileName());
|
// PdfFile(tmp.fileName());
|
||||||
QStringList params = QStringList() << "-eps" << tmp.fileName() << name;
|
// QStringList params = QStringList() << "-eps" << tmp.fileName() << name;
|
||||||
PdfToPs(params);
|
// PdfToPs(params);
|
||||||
}
|
// }
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
@ -635,13 +416,13 @@ void TableWindow::EpsFile(const QString &name) const
|
||||||
*/
|
*/
|
||||||
void TableWindow::PsFile(const QString &name) const
|
void TableWindow::PsFile(const QString &name) const
|
||||||
{
|
{
|
||||||
QTemporaryFile tmp;
|
// QTemporaryFile tmp;
|
||||||
if (tmp.open())
|
// if (tmp.open())
|
||||||
{
|
// {
|
||||||
PdfFile(tmp.fileName());
|
// PdfFile(tmp.fileName());
|
||||||
QStringList params = QStringList() << tmp.fileName() << name;
|
// QStringList params = QStringList() << tmp.fileName() << name;
|
||||||
PdfToPs(params);
|
// PdfToPs(params);
|
||||||
}
|
// }
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
@ -652,34 +433,93 @@ void TableWindow::PsFile(const QString &name) const
|
||||||
*/
|
*/
|
||||||
void TableWindow::PdfToPs(const QStringList ¶ms) const
|
void TableWindow::PdfToPs(const QStringList ¶ms) const
|
||||||
{
|
{
|
||||||
#ifndef QT_NO_CURSOR
|
//#ifndef QT_NO_CURSOR
|
||||||
QApplication::setOverrideCursor(Qt::WaitCursor);
|
// QApplication::setOverrideCursor(Qt::WaitCursor);
|
||||||
#endif
|
//#endif
|
||||||
QProcess proc;
|
// QProcess proc;
|
||||||
proc.start(PDFTOPS, params);
|
// proc.start(PDFTOPS, params);
|
||||||
proc.waitForFinished(15000);
|
// proc.waitForFinished(15000);
|
||||||
#ifndef QT_NO_CURSOR
|
//#ifndef QT_NO_CURSOR
|
||||||
QApplication::restoreOverrideCursor();
|
// QApplication::restoreOverrideCursor();
|
||||||
#endif
|
//#endif
|
||||||
|
|
||||||
QFile f(params.last());
|
// QFile f(params.last());
|
||||||
if (f.exists() == false)
|
// if (f.exists() == false)
|
||||||
{
|
// {
|
||||||
QString msg = QString(tr("Creating file '%1' failed! %2")).arg(params.last()).arg(proc.errorString());
|
// QString msg = QString(tr("Creating file '%1' failed! %2")).arg(params.last()).arg(proc.errorString());
|
||||||
QMessageBox msgBox(QMessageBox::Critical, tr("Critical error!"), msg, QMessageBox::Ok | QMessageBox::Default);
|
// QMessageBox msgBox(QMessageBox::Critical, tr("Critical error!"), msg, QMessageBox::Ok | QMessageBox::Default);
|
||||||
msgBox.exec();
|
// msgBox.exec();
|
||||||
}
|
// }
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
void TableWindow::ObjFile(const QString &name) const
|
void TableWindow::ObjFile(const QString &name) const
|
||||||
{
|
{
|
||||||
VObjPaintDevice generator;
|
// VObjPaintDevice generator;
|
||||||
generator.setFileName(name);
|
// generator.setFileName(name);
|
||||||
generator.setSize(paper->rect().size().toSize());
|
// generator.setSize(paper->rect().size().toSize());
|
||||||
generator.setResolution(static_cast<int>(qApp->PrintDPI));
|
// generator.setResolution(static_cast<int>(qApp->PrintDPI));
|
||||||
QPainter painter;
|
// QPainter painter;
|
||||||
painter.begin(&generator);
|
// painter.begin(&generator);
|
||||||
tableScene->render(&painter);
|
// tableScene->render(&painter);
|
||||||
painter.end();
|
// painter.end();
|
||||||
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
void TableWindow::ClearLayout()
|
||||||
|
{
|
||||||
|
qDeleteAll (scenes);
|
||||||
|
scenes.clear();
|
||||||
|
listDetails.clear();
|
||||||
|
shadows.clear();
|
||||||
|
papers.clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
void TableWindow::CreateShadows()
|
||||||
|
{
|
||||||
|
for (int i=0; i< papers.size(); ++i)
|
||||||
|
{
|
||||||
|
qreal x1=0, y1=0, x2=0, y2=0;
|
||||||
|
QGraphicsRectItem *item = qgraphicsitem_cast<QGraphicsRectItem *>(papers.at(i));
|
||||||
|
if (item)
|
||||||
|
{
|
||||||
|
item->rect().getCoords(&x1, &y1, &x2, &y2);
|
||||||
|
QGraphicsRectItem *shadowPaper = new QGraphicsRectItem(QRectF(x1+4, y1+4, x2+4, y2+4));
|
||||||
|
shadowPaper->setBrush(QBrush(Qt::black));
|
||||||
|
shadows.append(shadowPaper);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
shadows.append(nullptr);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
void TableWindow::CreateScenes()
|
||||||
|
{
|
||||||
|
QBrush brush;
|
||||||
|
brush.setStyle( Qt::SolidPattern );
|
||||||
|
brush.setColor( QColor( Qt::gray ) );
|
||||||
|
|
||||||
|
for (int i=0; i<papers.size(); ++i)
|
||||||
|
{
|
||||||
|
QGraphicsScene *scene = new QGraphicsScene();
|
||||||
|
scene->setBackgroundBrush(brush);
|
||||||
|
scene->addItem(shadows.at(i));
|
||||||
|
scene->addItem(papers.at(i));
|
||||||
|
scenes.append(scene);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
void TableWindow::PrepareSceneList()
|
||||||
|
{
|
||||||
|
const QIcon ico("://icon/64x64/icon64x64.png");
|
||||||
|
for (int i=0; i<scenes.size(); ++i)
|
||||||
|
{
|
||||||
|
QListWidgetItem *item = new QListWidgetItem(ico, QString::number(i));
|
||||||
|
ui->listWidget->addItem(item);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -33,12 +33,15 @@
|
||||||
#include <QMainWindow>
|
#include <QMainWindow>
|
||||||
|
|
||||||
#include "../../libs/vlayout/vlayoutdetail.h"
|
#include "../../libs/vlayout/vlayoutdetail.h"
|
||||||
|
#include "../../libs/vlayout/vbank.h"
|
||||||
|
|
||||||
namespace Ui
|
namespace Ui
|
||||||
{
|
{
|
||||||
class TableWindow;
|
class TableWindow;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class QGraphicsScene;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief TableWindow class layout window.
|
* @brief TableWindow class layout window.
|
||||||
*/
|
*/
|
||||||
|
@ -46,53 +49,26 @@ class TableWindow : public QMainWindow
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
/** @brief numberDetal show count details, what need placed. */
|
|
||||||
QLabel* numberDetal;
|
|
||||||
|
|
||||||
/** @brief colission show if exist colissions. */
|
|
||||||
QLabel* colission;
|
|
||||||
|
|
||||||
explicit TableWindow(QWidget *parent = nullptr);
|
explicit TableWindow(QWidget *parent = nullptr);
|
||||||
~TableWindow();
|
~TableWindow();
|
||||||
public slots:
|
|
||||||
|
|
||||||
|
public slots:
|
||||||
void ModelChosen(QVector<VLayoutDetail> listDetails, const QString &fileName,
|
void ModelChosen(QVector<VLayoutDetail> listDetails, const QString &fileName,
|
||||||
const QString &description);
|
const QString &description);
|
||||||
|
|
||||||
void StopTable();
|
|
||||||
|
|
||||||
void saveScene();
|
|
||||||
|
|
||||||
void GetNextDetail();
|
|
||||||
|
|
||||||
void itemChect(bool flag);
|
|
||||||
|
|
||||||
void itemOut(int number, bool flag);
|
|
||||||
|
|
||||||
void itemColliding(QList<QGraphicsItem *> list, int number);
|
|
||||||
|
|
||||||
void AddLength();
|
|
||||||
|
|
||||||
void RemoveLength();
|
|
||||||
void Layout();
|
void Layout();
|
||||||
|
void StopTable();
|
||||||
|
void saveScene();
|
||||||
|
void ShowPaper(int index);
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
/**
|
/** @brief closed emit if window is closing. */
|
||||||
* @brief closed emit if window is closing.
|
|
||||||
*/
|
|
||||||
void closed();
|
void closed();
|
||||||
/**
|
|
||||||
* @brief LengthChanged emit if changing length of paper sheet.
|
|
||||||
*/
|
|
||||||
void LengthChanged();
|
|
||||||
protected:
|
protected:
|
||||||
|
|
||||||
void closeEvent(QCloseEvent *event);
|
void closeEvent(QCloseEvent *event);
|
||||||
|
|
||||||
void moveToCenter();
|
void moveToCenter();
|
||||||
|
|
||||||
void showEvent ( QShowEvent * event );
|
void showEvent ( QShowEvent * event );
|
||||||
|
|
||||||
void keyPressEvent ( QKeyEvent * event );
|
|
||||||
private:
|
private:
|
||||||
Q_DISABLE_COPY(TableWindow)
|
Q_DISABLE_COPY(TableWindow)
|
||||||
/** @brief ui keeps information about user interface */
|
/** @brief ui keeps information about user interface */
|
||||||
|
@ -101,32 +77,9 @@ private:
|
||||||
/** @brief listDetails list of details. */
|
/** @brief listDetails list of details. */
|
||||||
QVector<VLayoutDetail> listDetails;
|
QVector<VLayoutDetail> listDetails;
|
||||||
|
|
||||||
/** @brief outItems true if we have details out paper sheet. */
|
QList<QGraphicsItem *> papers;
|
||||||
bool outItems;
|
QList<QGraphicsItem *> shadows;
|
||||||
|
QList<QGraphicsScene *> scenes;
|
||||||
/** @brief collidingItems true if we have colission details. */
|
|
||||||
bool collidingItems;
|
|
||||||
|
|
||||||
/** @brief currentScene pointer to scene. */
|
|
||||||
QGraphicsScene* tableScene;
|
|
||||||
|
|
||||||
/** @brief paper paper sheet. */
|
|
||||||
QGraphicsRectItem* paper;
|
|
||||||
|
|
||||||
/** @brief shadowPaper paper sheet shadow. */
|
|
||||||
QGraphicsRectItem* shadowPaper;
|
|
||||||
|
|
||||||
/** @brief listOutItems list state out each detail. */
|
|
||||||
QBitArray* listOutItems;
|
|
||||||
|
|
||||||
/** @brief listCollidingItems list colissed details. */
|
|
||||||
QList<QGraphicsItem*> listCollidingItems;
|
|
||||||
|
|
||||||
/** @brief indexDetail index next detail in list what will be shown. */
|
|
||||||
qint32 indexDetail;
|
|
||||||
|
|
||||||
/** @brief sceneRect minimal size of a paper. */
|
|
||||||
QRectF sceneRect;
|
|
||||||
|
|
||||||
/** @brief fileName keep name of pattern file. */
|
/** @brief fileName keep name of pattern file. */
|
||||||
QString fileName;
|
QString fileName;
|
||||||
|
@ -134,9 +87,14 @@ private:
|
||||||
/** @brief description pattern description */
|
/** @brief description pattern description */
|
||||||
QString description;
|
QString description;
|
||||||
|
|
||||||
void checkNext();
|
int paperHeight;
|
||||||
void AddPaper();
|
int paperWidth;
|
||||||
void AddDetail();
|
unsigned int shift;
|
||||||
|
qreal layoutWidth;
|
||||||
|
Cases group;
|
||||||
|
|
||||||
|
QGraphicsScene* tempScene;
|
||||||
|
|
||||||
void SvgFile(const QString &name)const;
|
void SvgFile(const QString &name)const;
|
||||||
void PngFile(const QString &name)const;
|
void PngFile(const QString &name)const;
|
||||||
void PdfFile(const QString &name)const;
|
void PdfFile(const QString &name)const;
|
||||||
|
@ -144,6 +102,11 @@ private:
|
||||||
void PsFile(const QString &name)const;
|
void PsFile(const QString &name)const;
|
||||||
void PdfToPs(const QStringList ¶ms)const;
|
void PdfToPs(const QStringList ¶ms)const;
|
||||||
void ObjFile(const QString &name)const;
|
void ObjFile(const QString &name)const;
|
||||||
|
|
||||||
|
void ClearLayout();
|
||||||
|
void CreateShadows();
|
||||||
|
void CreateScenes();
|
||||||
|
void PrepareSceneList();
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // TABLEWINDOW_H
|
#endif // TABLEWINDOW_H
|
||||||
|
|
|
@ -22,21 +22,6 @@
|
||||||
</property>
|
</property>
|
||||||
<widget class="QWidget" name="centralwidget">
|
<widget class="QWidget" name="centralwidget">
|
||||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||||
<property name="sizeConstraint">
|
|
||||||
<enum>QLayout::SetMinAndMaxSize</enum>
|
|
||||||
</property>
|
|
||||||
<property name="leftMargin">
|
|
||||||
<number>9</number>
|
|
||||||
</property>
|
|
||||||
<property name="topMargin">
|
|
||||||
<number>9</number>
|
|
||||||
</property>
|
|
||||||
<property name="rightMargin">
|
|
||||||
<number>9</number>
|
|
||||||
</property>
|
|
||||||
<property name="bottomMargin">
|
|
||||||
<number>9</number>
|
|
||||||
</property>
|
|
||||||
<item>
|
<item>
|
||||||
<widget class="VTableGraphicsView" name="view"/>
|
<widget class="VTableGraphicsView" name="view"/>
|
||||||
</item>
|
</item>
|
||||||
|
@ -73,6 +58,46 @@
|
||||||
<addaction name="actionLayout"/>
|
<addaction name="actionLayout"/>
|
||||||
</widget>
|
</widget>
|
||||||
<widget class="QStatusBar" name="statusBar"/>
|
<widget class="QStatusBar" name="statusBar"/>
|
||||||
|
<widget class="QDockWidget" name="dockWidget">
|
||||||
|
<property name="features">
|
||||||
|
<set>QDockWidget::DockWidgetMovable</set>
|
||||||
|
</property>
|
||||||
|
<property name="allowedAreas">
|
||||||
|
<set>Qt::LeftDockWidgetArea|Qt::RightDockWidgetArea</set>
|
||||||
|
</property>
|
||||||
|
<property name="windowTitle">
|
||||||
|
<string>Pages</string>
|
||||||
|
</property>
|
||||||
|
<attribute name="dockWidgetArea">
|
||||||
|
<number>1</number>
|
||||||
|
</attribute>
|
||||||
|
<widget class="QWidget" name="dockWidgetContents">
|
||||||
|
<layout class="QVBoxLayout" name="verticalLayout">
|
||||||
|
<item>
|
||||||
|
<widget class="QListWidget" name="listWidget">
|
||||||
|
<property name="iconSize">
|
||||||
|
<size>
|
||||||
|
<width>200</width>
|
||||||
|
<height>200</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="movement">
|
||||||
|
<enum>QListView::Static</enum>
|
||||||
|
</property>
|
||||||
|
<property name="flow">
|
||||||
|
<enum>QListView::TopToBottom</enum>
|
||||||
|
</property>
|
||||||
|
<property name="isWrapping" stdset="0">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="viewMode">
|
||||||
|
<enum>QListView::IconMode</enum>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</widget>
|
||||||
<action name="actionSave">
|
<action name="actionSave">
|
||||||
<property name="enabled">
|
<property name="enabled">
|
||||||
<bool>false</bool>
|
<bool>false</bool>
|
||||||
|
|
|
@ -135,6 +135,7 @@ void VLayoutGenerator::Generate()
|
||||||
emit Error(state);
|
emit Error(state);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
emit Finished();
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
Loading…
Reference in New Issue
Block a user