#include "unicodedialog.h"
#include <QMap>
+#include <QSignalMapper>
class Transform
public:
/** \brief Constructor
* \param projectPath Path to use when user requests loading or saving of titles as .kdenlivetitle documents */
- TitleWidget(KUrl url, QString projectPath, Render *render, QWidget *parent = 0);
+ TitleWidget(KUrl url, QString projectTitlePath, Render *render, QWidget *parent = 0);
virtual ~TitleWidget();
QDomDocument xml();
void setXml(QDomDocument doc);
* ".png" as the second element.
*
* The path "/titles/" is appended to projectUrl to locate the actual directory that contains the title pngs. */
- static QStringList getFreeTitleInfo(const KUrl &projectUrl);
+ static QStringList getFreeTitleInfo(const KUrl &projectUrl, bool isClone = false);
/** \brief Build a filename from a projectUrl and a titleName
* \param projectUrl Url to directory of project.
* returned. */
static QString getTitleResourceFromName(const KUrl &projectUrl, const QString &titleName);
+ /** \brief returns the size of the rendered pixmap
+ *
+ */
+ const QRect renderedRect();
+
protected:
virtual void resizeEvent(QResizeEvent * event);
QAction *m_buttonCursor;
QAction *m_buttonSave;
QAction *m_buttonLoad;
- /** \brief Dialog for entering unicode in text fields */
- UnicodeDialog *m_unicodeDialog;
+
+ QAction *m_unicodeAction;
+ /** \brief Dialog for entering unicode in text fields */
+ UnicodeDialog *m_unicodeDialog;
/** project path for storing title clips */
- QString m_projectPath;
+ QString m_projectTitlePath;
+
+ /** See http://doc.trolltech.com/4.5/signalsandslots.html#advanced-signals-and-slots-usage */
+ QSignalMapper *m_signalMapper;
+
+ enum ValueType { ValueWidth = 0, ValueHeight = 1 };
+
/** \brief Store the current choices of font, background and rect values */
void writeChoices();
/** \brief Read the last stored choices into the dialog */
void readChoices();
- /** \brief Update the displayed X/Y coordinates */
- void updateCoordinates(QGraphicsItem *i);
- void updateDimension(QGraphicsItem *i);
- /** \brief Update the item's position */
- void updatePosition(QGraphicsItem *i);
-
- void textChanged(QGraphicsTextItem *i);
- void updateAxisButtons(QGraphicsItem *i);
-
- void updateTextOriginX();
- void updateTextOriginY();
+ /** \brief Update the displayed X/Y coordinate values */
+ void updateCoordinates(QGraphicsItem *i);
+ /** \brief Update displayed width/height values */
+ void updateDimension(QGraphicsItem *i);
+ /** \brief Update displayed rotation/zoom values */
+ void updateRotZoom(QGraphicsItem *i);
+
+ /** \brief Update the item's position */
+ void updatePosition(QGraphicsItem *i);
+
+ void textChanged(QGraphicsTextItem *i);
+ void updateAxisButtons(QGraphicsItem *i);
+
+ void updateTextOriginX();
+ void updateTextOriginY();
+
+ /** \brief Enables the toolbars suiting to toolType */
+ void enableToolbars(TITLETOOL toolType);
+ /** \brief Shows the toolbars suiting to toolType */
+ void showToolbars(TITLETOOL toolType);
+ /** \brief Check a tool button. */
+ void checkButton(TITLETOOL toolType);
public slots:
void slotNewText(QGraphicsTextItem *tt);
private slots:
void slotAdjustSelectedItem();
-
- /**
- * \brief Switches the origin of the x axis between left and right
- * border of the frame (offset from left/right frame border)
- * \param originLeft Take left border?
- *
- * Called when the origin of the x coorinate has been changed. The
- * x origin will either be at the left or at the right side of the frame.
- *
- * When the origin of the x axis is at the left side, the user can
- * enter the distance between an element's left border and the left
- * side of the frame.
- *
- * When on the right, the distance from the right border of the
- * frame to the right border of the element can be entered. This
- * would result in negative values as long as the element's right
- * border is at the left of the frame's right border. As that is
- * usually the case, I additionally invert the x axis.
- *
- * Default value is left.
- *
- * |----l----->|#######|----r--->|
- * | |---w-->| |
- * | |#######| |
- * | |
- * |----------m_frameWidth------>|
- * | |
- *
- * Left selected: Value = l
- * Right selected: Value = r
- *
- * To calculate between the two coorindate systems:
- * l = m_frameWidth - w - r
- * r = m_frameWidth - w - l
- *
- */
- void slotOriginXClicked();
- /** \brief Same as slotOriginYChanged, but for the Y axis; default is top.
- * \param originTop Take top border? */
- void slotOriginYClicked();
-
- /** \brief Update coorinates of text fields if necessary and text has changed */
- void slotChanged();
-
+
+ /**
+ * \brief Switches the origin of the x axis between left and right
+ * border of the frame (offset from left/right frame border)
+ * \param originLeft Take left border?
+ *
+ * Called when the origin of the x coorinate has been changed. The
+ * x origin will either be at the left or at the right side of the frame.
+ *
+ * When the origin of the x axis is at the left side, the user can
+ * enter the distance between an element's left border and the left
+ * side of the frame.
+ *
+ * When on the right, the distance from the right border of the
+ * frame to the right border of the element can be entered. This
+ * would result in negative values as long as the element's right
+ * border is at the left of the frame's right border. As that is
+ * usually the case, I additionally invert the x axis.
+ *
+ * Default value is left.
+ *
+ * |----l----->|#######|----r--->|
+ * | |---w-->| |
+ * | |#######| |
+ * | |
+ * |----------m_frameWidth------>|
+ * | |
+ *
+ * Left selected: Value = l
+ * Right selected: Value = r
+ *
+ * To calculate between the two coorindate systems:
+ * l = m_frameWidth - w - r
+ * r = m_frameWidth - w - l
+ *
+ */
+ void slotOriginXClicked();
+ /** \brief Same as slotOriginYChanged, but for the Y axis; default is top.
+ * \param originTop Take top border? */
+ void slotOriginYClicked();
+
+ /** \brief Update coorinates of text fields if necessary and text has changed */
+ void slotChanged();
+
+ /** \param valueType Of type ValueType */
+ void slotValueChanged(int valueType);
+
void slotZoom(bool up);
void slotUpdateZoom(int pos);
void slotAdjustZoom();
void slotZoomOneToOne();
-
+
void slotUpdateText();
- void slotInsertUnicode();
- void slotInsertUnicodeString(QString);
-
+ void slotInsertUnicode();
+ void slotInsertUnicodeString(QString);
+
void displayBackgroundFrame();
-
+
void setCurrentItem(QGraphicsItem *item);
-
+
void slotTextTool();
void slotRectTool();
void slotSelectTool();
void slotImageTool();
-
+
+
/** \brief Called when accepted, stores the user selections for next time use */
void slotAccepted();
};