#include #include "itabs.h" #include "elements.h" #include "elements/textitem.h" #include "elements/pixmapitem.h" extern QSettings *conf; PositionTab::PositionTab(EdgeItem *item, QWidget *parent) // : QWidget(parent) { setupUi(this); citem = item; SpinBox[0] = spinBox;SpinBox[1] = spinBox_2;SpinBox[2] = spinBox_3;SpinBox[3] = spinBox_4; int i; scount = 4; if((item->item_type == 7)) { label_3->setText(tr("Width:")); label_4->setText(tr("Height:")); } for(i=0;iitem_type == 7)) { QPushButton *button = new QPushButton(tr("Set default image Size")); connect(button, SIGNAL(clicked()), this, SLOT(change_isize())); gridLayout1->addWidget(button,4,1); } changed(item); } void PositionTab::changed(EdgeItem *item) { int i; item->setBlock(true); for(i=0;iblockSignals(true);} } QRectF r; switch(item->item_type) { case 6: r = ((LineItem*) item)->sceneBoundingRect(); break; case 3: r = ((RectItem*) item)->sceneBoundingRect(); break; case 4: r = ((EllipseItem*) item)->sceneBoundingRect(); break; case 9: r = QRectF(((TextItem*) item)->x1,((TextItem*) item)->y1,((TextItem*) item)->ww,((TextItem*) item)->hh); break; case 7: {PixmapItem *i = (PixmapItem *) item;r = QRectF(QRect(int(i->x()),int(i->y()),int(i->pixmap().width()-i->x()), int(i->pixmap().height()-i->y())));break;} } SpinBox[0]->setValue(int(r.x())); SpinBox[1]->setValue(int(r.y())); if(scount>2) { SpinBox[2]->setValue(int(r.x()+r.width())); SpinBox[3]->setValue(int(r.y()+r.height())); } for(i=0;iblockSignals(false); } item->setBlock(false); } void PositionTab::change_isize() { PixmapItem *item = (PixmapItem *)citem; SpinBox[2]->setValue(item->scale_image->width()); SpinBox[3]->setValue(item->scale_image->height()); item->setPixmap(*(item->scale_image)); } void PositionTab::schanged(int i) { citem->blockSignals(true); if(citem->item_type == 7) { citem->setToPoint(SpinBox[0]->value()+SpinBox[2]->value(),SpinBox[1]->value()+SpinBox[3]->value()); } else { citem->setToPoint(SpinBox[2]->value(),SpinBox[3]->value()); } citem->setFromPoint(SpinBox[0]->value(),SpinBox[1]->value()); citem->blockSignals(false); } LineTab::LineTab(EdgeItem *item, QWidget *parent) : QWidget(parent) { citem = item; QGridLayout *mainLayout = new QGridLayout; mainLayout->setAlignment(Qt::AlignTop); QLabel *label = new QLabel(tr("Width:")); mainLayout->addWidget(label,0,0); label = new QLabel(tr("Color:")); mainLayout->addWidget(label,1,0); button = new QPushButton("Color"); button->setPalette(item->ipen.color()); button->setAutoFillBackground(true); mainLayout->addWidget(button,1,1); if(item->item_type!=6) { label = new QLabel(tr("Fill Color:")); mainLayout->addWidget(label,2,0); button1 = new QPushButton("Fill Color"); button1->setPalette(item->ibrush.color()); button1->setAutoFillBackground(true); mainLayout->addWidget(button1,2,1); connect(button1, SIGNAL(clicked()), this, SLOT(fchanged())); label = new QLabel(tr("Opacity:")); mainLayout->addWidget(label,3,0); SpinBox = new QSpinBox; SpinBox->setSingleStep(1); SpinBox->setRange(0, 255); SpinBox->setValue(item->ibrush.color().alpha()); mainLayout->addWidget(SpinBox,3,1); connect(SpinBox, SIGNAL(valueChanged(int)), this, SLOT(achanged(int))); } SpinBox = new QSpinBox; SpinBox->setSingleStep(1); SpinBox->setRange(0, 10); SpinBox->setValue(item->ipen.width()); mainLayout->addWidget(SpinBox,0,1); connect(SpinBox, SIGNAL(valueChanged(int)), this, SLOT(wchanged(int))); connect(button, SIGNAL(clicked()), this, SLOT(cchanged())); setLayout(mainLayout); } void LineTab::wchanged(int i) { QPen p = citem->ipen;; p.setWidth(i); citem->setPen(p); } void LineTab::achanged(int i) { QBrush b = citem->ibrush; QColor c = b.color(); c.setAlpha(i); b.setColor(c); citem->setBrush(b); } void LineTab::cchanged() { QColor color = QColorDialog::getColor(Qt::green, this); if (color.isValid()) { color.setAlpha(citem->ipen.color().alpha()); button->setPalette(QPalette(color)); QPen p = citem->ipen; p.setColor(color); citem->setPen(p); } } void LineTab::fchanged() { QColor color = QColorDialog::getColor(Qt::green, this); if (color.isValid()) { button1->setPalette(QPalette(color)); citem->setBrush(QBrush(color)); } } ImageTab::ImageTab(EdgeItem *item, QWidget *parent) : QWidget(parent) { citem = item; QGridLayout *mainLayout = new QGridLayout; mainLayout->setAlignment(Qt::AlignTop); QLabel *label = new QLabel(tr("File:")); mainLayout->addWidget(label,0,0); button = new QPushButton(((PixmapItem *) citem)->filename); mainLayout->addWidget(button,0,1); connect(button, SIGNAL(clicked()), this, SLOT(cchanged())); setLayout(mainLayout); } void ImageTab::cchanged() { QString fileName = QFileDialog::getOpenFileName(this, tr("Select image..."), conf->value("lastdirectory", "").toString(), tr("All Files (*);;Images (*.png *.jpg)")); if (!fileName.isEmpty()) { QFileInfo fi(fileName); conf->setValue("lastdirectory", fi.absolutePath()); PixmapItem * pitem = ((PixmapItem *) citem); button->setText(fileName); pitem->orig_image = new QPixmap(fileName); int w,h; w = pitem->maxx;h = pitem->maxy; if((w>=pitem->orig_image->width()) &&(h>=pitem->orig_image->height())) { w = pitem->orig_image->width(); h = pitem->orig_image->height(); } else { qreal w1 = pitem->orig_image->width(), h1 = pitem->orig_image->height(); qreal ar = h1/w1; if(h>w*ar) { h = int(w*ar); } else { w = int(h/ar); } } pitem->scale_image = new QPixmap(pitem->orig_image->scaled(w,h)); w = pitem->pixmap().width(); h = pitem->pixmap().height(); pitem->setPixmap(pitem->scale_image->scaled(w, h)); pitem->filename = fileName; } } TextTab::TextTab(EdgeItem *item, QWidget *parent) : QWidget(parent) { citem = item; TextItem *txt = (TextItem *)item; QVBoxLayout *mainLayout = new QVBoxLayout; mainLayout->setAlignment(Qt::AlignTop); editInfo = new QTextEdit(txt->text()); mainLayout->addWidget(editInfo,0,0); connect(editInfo, SIGNAL(textChanged()), this, SLOT(cchanged())); setLayout(mainLayout); } void TextTab::cchanged() { ((TextItem *)citem)->setText(editInfo->toPlainText()); } TextStyleTab::TextStyleTab(EdgeItem *item, QWidget *parent) // : QWidget(parent) { setupUi(this); citem = item; TextItem * txt = (TextItem *)item; QToolBar *tb = new QToolBar(); QActionGroup *grp = new QActionGroup(this); actionAlignCenter = new QAction(QIcon(":/images/textcenter.png"), tr("&Center"), grp); actionAlignLeft = new QAction(QIcon(":/images/textleft.png"), tr("&Left"), grp); actionAlignRight = new QAction(QIcon(":/images/textright.png"), tr("&Right"), grp); actionTextBold = new QAction(QIcon(":/images/textbold.png"), tr("&Bold"), this); actionTextItalic = new QAction(QIcon(":/images/textitalic.png"), tr("&Italic"), this); actionTextUnderline = new QAction(QIcon(":images//textunder.png"), tr("&Underline"), this); actionTextBold->setCheckable(true); actionTextItalic->setCheckable(true); actionTextUnderline->setCheckable(true); tb->addActions(grp->actions()); tb->addAction(actionTextBold); tb->addAction(actionTextItalic); tb->addAction(actionTextUnderline); tb->setSizePolicy(QSizePolicy(QSizePolicy::Minimum, QSizePolicy::Expanding)); gridLayout1->addWidget(tb,3,0,2,3); connect(grp, SIGNAL(triggered(QAction *)), this, SLOT(textAlign(QAction *))); connect(actionTextBold, SIGNAL(triggered()), this, SLOT(textBold())); connect(actionTextItalic, SIGNAL(triggered()), this, SLOT(textItalic())); connect(actionTextUnderline, SIGNAL(triggered()), this, SLOT(textUnderline())); QColor colors[] = {Qt::black, Qt::red, Qt::darkRed, Qt::white, Qt::green, Qt::darkGreen, Qt::blue, Qt::darkBlue, Qt::cyan, Qt::darkCyan, Qt::magenta, Qt::darkMagenta,Qt::yellow, Qt::darkYellow, Qt::gray, Qt::darkGray, Qt::lightGray}; QString color_names[] = {tr("Black"), tr("Red"),tr("Dark red"),tr("White"),tr("Green"), tr("Dark green"), tr("Blue"), tr("Dark blue"),tr("Cyan"), tr("Dark cyan"), tr("Magenta"), tr("Dark magenta"), tr("Yellow"), tr("Dark yellow"), tr("Gray"), tr("Dark gray"), tr("Light gray")}; int i; for(i=0; i<17;i++) { QPixmap pix(12, 12); QColor color = colors[i]; QPainter painter(&pix); if (color.isValid()) { painter.setPen(Qt::gray); painter.setBrush(QBrush(color)); painter.drawRect(0, 0, 12, 12); } QIcon icon; icon.addPixmap(pix); comboBox->insertItem(i, icon, color_names[i], color); } QFont f = txt->font(); fontComboBox->setCurrentFont(f); fontComboBox->setFont(f); spinBox->setValue(txt->font().pointSize ()); connect(comboBox, SIGNAL(activated(int)), this, SLOT(col_changed(int))); connect(fontComboBox, SIGNAL(currentFontChanged(const QFont &)), this, SLOT(fchanged(const QFont &))); connect(spinBox, SIGNAL(valueChanged(int)), this, SLOT(schanged(int))); connect(button, SIGNAL(clicked()), this, SLOT(cchanged())); connect(button1, SIGNAL(clicked()), this, SLOT(cchanged1())); } void TextStyleTab::col_changed(int index) { QColor color = comboBox->itemData(index).value(); if (color.isValid()) { QPen p = citem->ipen; p.setColor(color); citem->setPen(p); } } void TextStyleTab::textBold() { QFont f = ((TextItem *)citem)->font(); f.setBold(actionTextBold->isChecked()); ((TextItem *)citem)->setFont(f); } void TextStyleTab::textItalic() { QFont f = ((TextItem *)citem)->font(); f.setItalic(actionTextItalic->isChecked()); ((TextItem *)citem)->setFont(f); } void TextStyleTab::textUnderline() { QFont f = ((TextItem *)citem)->font(); f.setUnderline(actionTextUnderline->isChecked()); ((TextItem *)citem)->setFont(f); } void TextStyleTab::textAlign(QAction *a) { TextItem *item = (TextItem *)citem; if (a == actionAlignLeft) item->align = Qt::AlignLeft; else if (a == actionAlignCenter) item->align = Qt::AlignHCenter; else if (a == actionAlignRight) item->align = Qt::AlignRight; item->update(); } void TextStyleTab::fchanged(const QFont & font) { QFont f = font; f.setPointSize(spinBox->value()); f.setBold(actionTextBold->isChecked()); f.setItalic(actionTextItalic->isChecked()); f.setUnderline(actionTextUnderline->isChecked()); ((TextItem *)citem)->setFont(f); } void TextStyleTab::cchanged() { bool ok; QFont font = QFontDialog::getFont(&ok, ((TextItem *)citem)->font(), this); if (ok) { ((TextItem *)citem)->setFont(font); } } void TextStyleTab::cchanged1() { QColor color = QColorDialog::getColor(Qt::green, this); if (color.isValid()) { QPen p = citem->ipen; p.setColor(color); citem->setPen(p); } } void TextStyleTab::schanged(int value) { QFont f = ((TextItem *)citem)->font(); f.setPointSize(value); ((TextItem *)citem)->setFont(f); }