int settingUp = false;
-TitleWidget::TitleWidget(Render *render, QWidget *parent): QDialog(parent), m_frameImage(NULL), m_render(render), m_count(0) {
+TitleWidget::TitleWidget(KUrl url, QString projectPath, Render *render, QWidget *parent): QDialog(parent), m_render(render), m_count(0), m_projectPath(projectPath) {
setupUi(this);
//frame_properties->
setFont(KGlobalSettings::toolBarFont());
//toolBox->setFont(KGlobalSettings::toolBarFont());
frame_properties->setEnabled(false);
+ m_frameWidth = render->renderWidth();
+ m_frameHeight = render->renderHeight();
//connect(newTextButton, SIGNAL(clicked()), this, SLOT(slotNewText()));
//connect(newRectButton, SIGNAL(clicked()), this, SLOT(slotNewRect()));
connect(kcolorbutton, SIGNAL(clicked()), this, SLOT(slotChangeBackground())) ;
connect(endViewportSize, SIGNAL(valueChanged(int)), this, SLOT(setupViewports()));
connect(zValue, SIGNAL(valueChanged(int)), this, SLOT(zIndexChanged(int)));
- connect(svgfilename, SIGNAL(urlSelected(const KUrl&)), this, SLOT(svgSelected(const KUrl &)));
connect(itemzoom, SIGNAL(valueChanged(int)), this, SLOT(itemScaled(int)));
connect(itemrotate, SIGNAL(valueChanged(int)), this, SLOT(itemRotate(int)));
connect(m_buttonText, SIGNAL(triggered()), this, SLOT(slotTextTool()));
m_buttonImage = m_toolbar->addAction(KIcon("insert-image"), i18n("Add Image"));
- m_buttonImage->setCheckable(true);
+ m_buttonImage->setCheckable(false);
connect(m_buttonImage, SIGNAL(triggered()), this, SLOT(slotImageTool()));
m_buttonCursor = m_toolbar->addAction(KIcon("select-rectangular"), i18n("Selection Tool"));
layout->addWidget(m_toolbar);
text_properties->setHidden(true);
+ // initialize graphic scene
m_scene = new GraphicsSceneRectMove(this);
+ graphicsView->setScene(m_scene);
+ m_titledocument.setScene(m_scene);
// a gradient background
QRadialGradient *gradient = new QRadialGradient(0, 0, 10);
gradient->setSpread(QGradient::ReflectSpread);
//scene->setBackgroundBrush(*gradient);
+ m_frameImage = new QGraphicsPixmapItem();
+ QTransform qtrans;
+ qtrans.scale(2.0, 2.0);
+ m_frameImage->setTransform(qtrans);
+ m_frameImage->setZValue(-1200);
+ m_frameImage->setFlags(QGraphicsItem::ItemClipsToShape);
+ displayBackgroundFrame();
+ graphicsView->scene()->addItem(m_frameImage);
+
connect(m_scene, SIGNAL(selectionChanged()), this , SLOT(selectionChanged()));
connect(m_scene, SIGNAL(itemMoved()), this , SLOT(selectionChanged()));
connect(m_scene, SIGNAL(sceneZoom(bool)), this , SLOT(slotZoom(bool)));
connect(m_scene, SIGNAL(newText(QGraphicsTextItem *)), this , SLOT(slotNewText(QGraphicsTextItem *)));
connect(zoom_slider, SIGNAL(valueChanged(int)), this , SLOT(slotUpdateZoom(int)));
- graphicsView->setScene(m_scene);
- m_titledocument.setScene(m_scene);
-
QPen framepen(Qt::DotLine);
framepen.setColor(Qt::red);
- m_frameWidth = render->renderWidth();
- m_frameHeight = render->renderHeight();
- slotRectTool();
m_frameBorder = new QGraphicsRectItem(QRectF(0, 0, m_frameWidth, m_frameHeight));
m_frameBorder->setPen(framepen);
//graphicsView->resize(400, 300);
kDebug() << "// TITLE WIDGWT: " << graphicsView->viewport()->width() << "x" << graphicsView->viewport()->height();
toolBox->setItemEnabled(2, false);
- toolBox->setItemEnabled(3, false);
+ if (!url.isEmpty()) {
+ m_count = m_titledocument.loadDocument(url, startViewport, endViewport) + 1;
+ slotSelectTool();
+ } else slotRectTool();
}
m_scene->setTool(TITLE_TEXT);
m_buttonRect->setChecked(false);
m_buttonCursor->setChecked(false);
- m_buttonImage->setChecked(false);
}
void TitleWidget::slotRectTool() {
m_scene->setTool(TITLE_RECTANGLE);
m_buttonText->setChecked(false);
m_buttonCursor->setChecked(false);
- m_buttonImage->setChecked(false);
}
void TitleWidget::slotSelectTool() {
m_buttonCursor->setChecked(true);
m_buttonText->setChecked(false);
m_buttonRect->setChecked(false);
- m_buttonImage->setChecked(false);
+}
+
+void TitleWidget::slotImageTool() {
+ KUrl url = KFileDialog::getOpenUrl(KUrl(), "*.svg *.png *.jpg *.jpeg *.gif *.raw", this, i18n("Load Image"));
+ if (!url.isEmpty()) {
+ if (url.path().endsWith(".svg")) {
+ QGraphicsSvgItem *svg = new QGraphicsSvgItem(url.toLocalFile());
+ svg->setFlags(QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemIsSelectable);
+ svg->setZValue(m_count++);
+ svg->setData(Qt::UserRole, url.path());
+ graphicsView->scene()->addItem(svg);
+ } else {
+ QPixmap pix(url.path());
+ QGraphicsPixmapItem *image = new QGraphicsPixmapItem(pix);
+ image->setShapeMode(QGraphicsPixmapItem::BoundingRectShape);
+ image->setFlags(QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemIsSelectable);
+ image->setData(Qt::UserRole, url.path());
+ image->setZValue(m_count++);
+ graphicsView->scene()->addItem(image);
+ }
+ }
+ m_scene->setTool(TITLE_SELECT);
+ m_buttonRect->setChecked(false);
+ m_buttonCursor->setChecked(true);
+ m_buttonText->setChecked(false);
}
void TitleWidget::displayBackgroundFrame() {
- if (m_frameImage) delete m_frameImage;
- m_frameImage = NULL;
- if (!displayBg->isChecked()) return;
- QPixmap bg = m_render->extractFrame((int) m_render->seekPosition().frames(m_render->fps()), m_frameWidth / 2, m_frameHeight / 2);
- m_frameImage = new QGraphicsPixmapItem(bg);
- QTransform qtrans;
- qtrans.scale(2.0, 2.0);
- m_frameImage->setTransform(qtrans);
- m_frameImage->setZValue(-1200);
- m_frameImage->setFlags(QGraphicsItem::ItemClipsToShape);
- graphicsView->scene()->addItem(m_frameImage);
+ if (!displayBg->isChecked()) {
+ QPixmap bg(m_frameWidth / 2, m_frameHeight / 2);
+ QPixmap pattern(20, 20);
+ pattern.fill();
+ QPainter p;
+ p.begin(&pattern);
+ p.fillRect(QRect(0, 0, 10, 10), QColor(210, 210, 210));
+ p.fillRect(QRect(10, 10, 20, 20), QColor(210, 210, 210));
+ p.end();
+ QBrush br(pattern);
+
+ p.begin(&bg);
+ p.fillRect(bg.rect(), br);
+ p.end();
+ m_frameImage->setPixmap(bg);
+ } else {
+ m_frameImage->setPixmap(m_render->extractFrame((int) m_render->seekPosition().frames(m_render->fps()), m_frameWidth / 2, m_frameHeight / 2));
+ }
}
void TitleWidget::initViewports() {
frame_properties->setEnabled(false);
}
zValue->setValue((int)l[0]->zValue());
- itemzoom->setValue((int)transformations[l[0]].scalex*100);
- itemrotate->setValue((int)transformations[l[0]].rotate);
+ itemzoom->setValue((int)(transformations[l[0]].scalex * 100));
+ itemrotate->setValue((int)(transformations[l[0]].rotate));
value_x->blockSignals(false);
value_y->blockSignals(false);
value_w->blockSignals(false);
}
}
-void TitleWidget::svgSelected(const KUrl& u) {
- QGraphicsSvgItem *svg = new QGraphicsSvgItem(u.toLocalFile());
- svg->setFlags(QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemIsSelectable);
- graphicsView->scene()->addItem(svg);
-}
-
void TitleWidget::itemScaled(int val) {
QList<QGraphicsItem*> l = graphicsView->scene()->selectedItems();
if (l.size() == 1) {
}
void TitleWidget::loadTitle() {
- KUrl url = KFileDialog::getOpenUrl(KUrl(), "*.kdenlivetitle", this, tr("Save Title"));
+ KUrl url = KFileDialog::getOpenUrl(KUrl(m_projectPath), "*.kdenlivetitle", this, i18n("Load Title"));
if (!url.isEmpty()) {
QList<QGraphicsItem *> items = m_scene->items();
for (int i = 0; i < items.size(); i++) {
}
}
-void TitleWidget::saveTitle() {
- KUrl url = KFileDialog::getSaveUrl(KUrl(), "*.kdenlivetitle", this, tr("Save Title"));
- m_titledocument.saveDocument(url, startViewport, endViewport);
+void TitleWidget::saveTitle(KUrl url) {
+ if (url.isEmpty()) url = KFileDialog::getSaveUrl(KUrl(m_projectPath), "*.kdenlivetitle", this, i18n("Save Title"));
+ if (!url.isEmpty()) m_titledocument.saveDocument(url, startViewport, endViewport);
}
QPixmap TitleWidget::renderedPixmap() {
m_scene->clearSelection();
QPen framepen = m_frameBorder->pen();
m_frameBorder->setPen(Qt::NoPen);
- QPen startpen = startViewport->pen();
- QPen endpen = endViewport->pen();
- startViewport->setPen(Qt::NoPen);
- endViewport->setPen(Qt::NoPen);
- if (m_frameImage) delete m_frameImage;
- m_frameImage = NULL;
+ startViewport->setVisible(false);
+ endViewport->setVisible(false);
+ m_frameImage->setVisible(false);
+
m_scene->render(&painter, QRectF(), QRectF(0, 0, m_frameWidth, m_frameHeight));
m_frameBorder->setPen(framepen);
- startViewport->setPen(startpen);
- endViewport->setPen(endpen);
- displayBackgroundFrame();
+ startViewport->setVisible(true);
+ endViewport->setVisible(true);
+ m_frameImage->setVisible(true);
return pix;
}