/******************************************************************* Part of the Fritzing project - http://fritzing.org Copyright (c) 2007-2014 Fachhochschule Potsdam - http://fh-potsdam.de Fritzing is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Fritzing is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Fritzing. If not, see . ******************************************************************** $Revision: 6904 $: $Author: irascibl@gmail.com $: $Date: 2013-02-26 16:26:03 +0100 (Di, 26. Feb 2013) $ ********************************************************************/ #include "pesvgview.h" #include "pegraphicsitem.h" #include "peutils.h" #include "../utils/textutils.h" #include "../utils/graphicsutils.h" #include "../debugdialog.h" #include #include #include #include #include #include ////////////////////////////////////// PESvgView::PESvgView(QWidget * parent) : QFrame(parent) { this->setObjectName("peSVG"); m_pegi = NULL; QVBoxLayout * mainLayout = new QVBoxLayout; m_filename = new QLabel(); mainLayout->addWidget(m_filename); QFrame * boundsFrame = new QFrame; QHBoxLayout * boundsLayout = new QHBoxLayout; QLabel * label = new QLabel("x:"); boundsLayout->addWidget(label); m_x = new QLabel; boundsLayout->addWidget(m_x); boundsLayout->addSpacing(PEUtils::Spacing); label = new QLabel("y:"); boundsLayout->addWidget(label); m_y = new QLabel; boundsLayout->addWidget(m_y); boundsLayout->addSpacing(PEUtils::Spacing); label = new QLabel(tr("width:")); boundsLayout->addWidget(label); m_width = new QLabel; boundsLayout->addWidget(m_width); boundsLayout->addSpacing(PEUtils::Spacing); label = new QLabel(tr("height:")); boundsLayout->addWidget(label); m_height = new QLabel; boundsLayout->addWidget(m_height); boundsLayout->addSpacing(PEUtils::Spacing); m_units = new QLabel(); boundsLayout->addWidget(m_units); boundsLayout->addSpacerItem(new QSpacerItem(1, 1, QSizePolicy::Expanding)); boundsFrame->setLayout(boundsLayout); mainLayout->addWidget(boundsFrame); m_svgElement = new QLabel; m_svgElement->setWordWrap(false); m_svgElement->setTextFormat(Qt::PlainText); mainLayout->addWidget(m_svgElement); mainLayout->addSpacerItem(new QSpacerItem(1, 1, QSizePolicy::Minimum, QSizePolicy::Expanding)); //this->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); this->setLayout(mainLayout); } PESvgView::~PESvgView() { } void PESvgView::highlightElement(PEGraphicsItem * pegi) { m_pegi = pegi; if (pegi == NULL) { m_svgElement->setText(""); m_x->setText(""); m_y->setText(""); m_width->setText(""); m_height->setText(""); return; } QString string; QTextStream stream(&string); pegi->element().save(stream, 0); string = TextUtils::killXMLNS(string); int ix = string.indexOf("\n"); if (ix > 0) { int jx = string.indexOf("\n", ix + 1); if (jx >= 0) { string.truncate(jx - 1); } else { string.truncate(ix + 200); } } else { string.truncate(200); } m_svgElement->setText(string); QPointF p = pegi->offset(); m_x->setText(PEUtils::convertUnitsStr(p.x())); m_y->setText(PEUtils::convertUnitsStr(p.y())); QRectF r = pegi->rect(); m_width->setText(PEUtils::convertUnitsStr(r.width())); m_height->setText(PEUtils::convertUnitsStr(r.height())); m_units->setText(QString("(%1)").arg(PEUtils::Units)); } void PESvgView::setChildrenVisible(bool vis) { foreach (QWidget * widget, findChildren()) { widget->setVisible(vis); } } void PESvgView::setFilename(const QString & filename) { m_filename->setText(filename); }