]> git.sesse.net Git - kdenlive/commitdiff
Use new timecode widget for position parameter in effects
authorJean-Baptiste Mardelle <jb@kdenlive.org>
Thu, 27 May 2010 08:34:34 +0000 (08:34 +0000)
committerJean-Baptiste Mardelle <jb@kdenlive.org>
Thu, 27 May 2010 08:34:34 +0000 (08:34 +0000)
svn path=/trunk/kdenlive/; revision=4483

src/CMakeLists.txt
src/effectstackedit.cpp
src/effectstackview.cpp
src/effectstackview.h
src/geometryval.cpp
src/mainwindow.cpp
src/positionedit.cpp
src/positionedit.h
src/timecodedisplay.cpp
src/timecodedisplay.h
src/widgets/positionval_ui.ui [deleted file]

index 36189bed31e32c1ea7d87e8ba89f9d0600eb4deb..0801e35a9267a48db983e7ad76d0ef002172a3b8 100644 (file)
@@ -58,7 +58,6 @@ kde4_add_ui_files(kdenlive_UI
   widgets/wipeval_ui.ui
   widgets/boolval_ui.ui
   widgets/colorval_ui.ui
-  widgets/positionval_ui.ui
   widgets/titlewidget_ui.ui
   widgets/unicodedialog_ui.ui
   widgets/timelinebuttons_ui.ui
index a6252d7598815b9e85efc19f5740af176ba0bc5f..74af29bdca2fc11c73b82a2304d5e5ed69282169 100644 (file)
@@ -123,6 +123,11 @@ void EffectStackEdit::updateTimecodeFormat()
             geom->updateTimecodeFormat();
             break;
         }
+        if (type == "position") {
+            PositionEdit *posi = ((PositionEdit*)m_valueItems[paramName+"position"]);
+            posi->updateTimecodeFormat();
+            break;
+        }
     }
 }
 
index dccceb75eeedac082f8db5418083c7e05d2317fa..34e410bfbf98cb3901e830368c2802481ce04ff5 100644 (file)
@@ -87,6 +87,11 @@ EffectStackView::~EffectStackView()
     delete m_effectedit;
 }
 
+void EffectStackView::updateTimecodeFormat()
+{
+    m_effectedit->updateTimecodeFormat();
+}
+
 void EffectStackView::setMenu(QMenu *menu)
 {
     m_ui.buttonNew->setMenu(menu);
@@ -144,6 +149,7 @@ void EffectStackView::slotClipItemSelected(ClipItem* c, int ix)
     if (c && !c->isEnabled()) return;
     if (c && c == m_clipref) {
         if (ix == -1) ix = m_ui.effectlist->currentRow();
+        //if (ix == -1 || ix == m_ui.effectlist->currentRow()) return;
     } else {
         m_clipref = c;
         if (c) {
index 3b31042d1db7c69bea88f45df5c8e3d4ed2a7e78..aa7e80c3cd481ba2e649868c8a9520c1e316b2b3 100644 (file)
@@ -42,6 +42,7 @@ public:
     void clear();
     void setMenu(QMenu *menu);
     void updateProjectFormat(MltVideoProfile profile, Timecode t);
+    void updateTimecodeFormat();
 
 private:
     Ui::EffectStack_UI m_ui;
index b6c5e823ff7634ebff7e98698152a09c9d84197e..bb878d304a94cc4cc0e78ac76c5ef983713aa647 100644 (file)
@@ -420,7 +420,7 @@ void Geometryval::setupParam(const QDomElement par, int minFrame, int maxFrame)
     slotPositionChanged(0, false);
     slotUpdateGeometry();
     if (!m_fixedMode) {
-        m_timePos.setMaximum(maxFrame - minFrame - 1);
+        m_timePos.setRange(0, maxFrame - minFrame - 1);
         connect(&m_timePos, SIGNAL(editingFinished()), this , SLOT(slotPositionChanged()));
     }
     connect(spinTransp, SIGNAL(valueChanged(int)), this , SLOT(slotTransparencyChanged(int)));
index 5ad59ec91a5617647fbf41e2de525025b62bf8f1..a1841723a56fa9c232f770124886ee24f27d7007 100644 (file)
@@ -531,7 +531,7 @@ void MainWindow::generateClip()
     ClipGenerator *iGenerator = qobject_cast<ClipGenerator *>(action->parent());
 
     KUrl clipUrl = iGenerator->generatedClip(action->data().toString(), m_activeDocument->projectFolder(),
-                                             QStringList(), QStringList(), m_activeDocument->fps(), m_activeDocument->width(), m_activeDocument->height());
+                   QStringList(), QStringList(), m_activeDocument->fps(), m_activeDocument->width(), m_activeDocument->height());
     if (!clipUrl.isEmpty()) {
         m_projectList->slotAddClip(QList <QUrl> () << clipUrl);
     }
@@ -3316,7 +3316,8 @@ void MainWindow::slotUpdateTimecodeFormat(int ix)
     m_clipMonitor->updateTimecodeFormat();
     m_projectMonitor->updateTimecodeFormat();
     m_transitionConfig->updateTimecodeFormat();
-    m_activeTimeline->projectView()->clearSelection();
+    m_effectStack->updateTimecodeFormat();
+    //m_activeTimeline->projectView()->clearSelection();
     m_activeTimeline->updateRuler();
 }
 
index a049a2a755a2d140c6fa6cb43ee03280c6e1f1ad..402a8ec97ac5a1bc70e03ea9b988722797459891 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
-                          geomeytrval.cpp  -  description
+                          positionedit.cpp  -  description
                              -------------------
     begin                : 03 Aug 2008
     copyright            : (C) 2008 by Marco Gittler
 
 #include <KDebug>
 
+#include <QLabel>
+#include <QSlider>
+
 PositionEdit::PositionEdit(const QString name, int pos, int min, int max, const Timecode tc, QWidget* parent) :
-        QWidget(parent),
-        m_tc(tc),
-        m_frameDisplay(KdenliveSettings::frametimecode())
+        QWidget(parent)
 {
-    m_ui.setupUi(this);
-    m_ui.label->setText(name);
-    m_ui.horizontalSlider->setRange(min, max);
-    connect(m_ui.horizontalSlider, SIGNAL(valueChanged(int)), this, SLOT(slotUpdateTimecode()));
-    connect(m_ui.krestrictedline, SIGNAL(editingFinished()), this, SLOT(slotUpdatePosition()));
-    m_ui.horizontalSlider->setValue(pos);
-    if (m_frameDisplay) {
-        QValidator *valid = new QIntValidator(this);
-        m_ui.krestrictedline->setInputMask("");
-        m_ui.krestrictedline->setValidator(valid);
-    }
-    m_ui.krestrictedline->setText(m_tc.getDisplayTimecodeFromFrames(pos, m_frameDisplay));
+    QVBoxLayout *l = new QVBoxLayout;
+    QLabel *lab = new QLabel(name);
+    l->addWidget(lab);
+
+    QHBoxLayout *l2 = new QHBoxLayout;
+    m_display = new TimecodeDisplay(tc);
+    m_slider = new QSlider(Qt::Horizontal);
+    m_slider->setSizePolicy(QSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Preferred));
+    m_display->setSizePolicy(QSizePolicy(QSizePolicy::Maximum, QSizePolicy::Preferred));
+    l2->addWidget(m_display);
+    l2->addWidget(m_slider);
+    m_display->setRange(min, max);
+    m_slider->setRange(min, max);
+    connect(m_slider, SIGNAL(valueChanged(int)), m_display, SLOT(setValue(int)));
+    connect(m_slider, SIGNAL(valueChanged(int)), this, SIGNAL(parameterChanged()));
+    connect(m_display, SIGNAL(editingFinished()), this, SLOT(slotUpdatePosition()));
+    m_slider->setValue(pos);
+    l->addLayout(l2);
+    setLayout(l);
 }
 
-int PositionEdit::getPosition() const
+PositionEdit::~PositionEdit()
 {
-    return m_ui.horizontalSlider->value();
+    m_display->blockSignals(true);
+    m_slider->blockSignals(true);
+    delete m_slider;
+    delete m_display;
 }
 
-void PositionEdit::setPosition(int pos)
+void PositionEdit::updateTimecodeFormat()
 {
-    m_ui.horizontalSlider->setValue(pos);
-    m_ui.krestrictedline->setText(m_tc.getDisplayTimecodeFromFrames(pos, m_frameDisplay));
+    m_display->slotPrepareTimeCodeFormat(m_display->timecode());
 }
 
-void PositionEdit::slotUpdateTimecode()
+int PositionEdit::getPosition() const
 {
-    m_ui.krestrictedline->setText(m_tc.getDisplayTimecodeFromFrames(m_ui.horizontalSlider->value(), m_frameDisplay));
-    emit parameterChanged();
+    return m_slider->value();
 }
 
+void PositionEdit::setPosition(int pos)
+{
+    m_slider->setValue(pos);
+    m_display->setValue(pos);
+}
+
+
 void PositionEdit::slotUpdatePosition()
 {
-    m_ui.horizontalSlider->blockSignals(true);
-    int pos = m_tc.getDisplayFrameCount(m_ui.krestrictedline->text(), m_frameDisplay);
-    m_ui.horizontalSlider->setValue(pos);
-    if (pos != m_ui.horizontalSlider->value()) {
-        // Value out of range
-        m_ui.krestrictedline->setText(m_tc.getDisplayTimecodeFromFrames(m_ui.horizontalSlider->value(), m_frameDisplay));
-    }
-    m_ui.horizontalSlider->blockSignals(false);
+    m_slider->blockSignals(true);
+    m_slider->setValue(m_display->value());
+    m_slider->blockSignals(false);
     emit parameterChanged();
 }
 
index e29d2c718c889572c368649c1c757d2c9563ce0c..5c2d77e69fa7818b2b3cb6c564d656953d522eff 100644 (file)
 
 #include <QWidget>
 
-#include "ui_positionval_ui.h"
 #include "timecode.h"
-
+#include "timecodedisplay.h"
 
 class PositionEdit : public QWidget
 {
     Q_OBJECT
 public:
     explicit PositionEdit(const QString name, int pos, int min, int max, const Timecode tc, QWidget* parent = 0);
+    virtual ~PositionEdit();
     int getPosition() const;
     void setPosition(int pos);
+    void updateTimecodeFormat();
 
 private:
-    Ui::Positionval_UI m_ui;
-    Timecode m_tc;
-    bool m_frameDisplay;
+    TimecodeDisplay *m_display;
+    QSlider *m_slider;
 
 private slots:
-    void slotUpdateTimecode();
     void slotUpdatePosition();
 
 signals:
index d0c6e22ce32a355922f9914ed59d2839750f8938..e37dc6109c2a5bfb05739c99149c125aba5eebef 100644 (file)
@@ -126,13 +126,14 @@ int TimecodeDisplay::value() const
     return frames;
 }
 
-void TimecodeDisplay::setMinimum(int min)
+Timecode TimecodeDisplay::timecode() const
 {
-    m_minimum = min;
+    return m_timecode;
 }
 
-void TimecodeDisplay::setMaximum(int max)
+void TimecodeDisplay::setRange(int min, int max)
 {
+    m_minimum = min;
     m_maximum = max;
 }
 
index 394e27c08863f0e044c34b50ff14ccc3988e245a..074b3e744ba3432fc22fb4048af39c553c664a67 100644 (file)
@@ -72,22 +72,19 @@ public:
     int maximum() const;
 
     /**
-     * Sets the minimum value that can be entered.
+     * Sets the minimum maximum value that can be entered.
      * @param min the minimum value
-     */
-    void setMinimum(int min);
-
-    /**
-     * Sets the maximum value that can be entered.
      * @param max the maximum value
      */
-    void setMaximum(int max);
+    void setRange(int min, int max);
 
     /**
     * The value shown.
     */
     int value() const;
 
+    Timecode timecode() const;
+
     //virtual QSize minimumSizeHint() const; ///< reimplemented from QComboBox
     //virtual QSize sizeHint() const; ///< reimplemented from QComboBox
 
diff --git a/src/widgets/positionval_ui.ui b/src/widgets/positionval_ui.ui
deleted file mode 100644 (file)
index a95d31e..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<ui version="4.0">
- <class>Positionval_UI</class>
- <widget class="QWidget" name="Positionval_UI">
-  <property name="geometry">
-   <rect>
-    <x>0</x>
-    <y>0</y>
-    <width>167</width>
-    <height>54</height>
-   </rect>
-  </property>
-  <layout class="QGridLayout" name="gridLayout">
-   <item row="0" column="0">
-    <widget class="QLabel" name="label">
-     <property name="text">
-      <string>Position</string>
-     </property>
-    </widget>
-   </item>
-   <item row="1" column="0">
-    <widget class="KRestrictedLine" name="krestrictedline">
-     <property name="inputMask">
-      <string>99:99:99:99; </string>
-     </property>
-    </widget>
-   </item>
-   <item row="1" column="1">
-    <widget class="QSlider" name="horizontalSlider">
-     <property name="pageStep">
-      <number>1</number>
-     </property>
-     <property name="orientation">
-      <enum>Qt::Horizontal</enum>
-     </property>
-    </widget>
-   </item>
-  </layout>
- </widget>
- <customwidgets>
-  <customwidget>
-   <class>KLineEdit</class>
-   <extends>QLineEdit</extends>
-   <header>klineedit.h</header>
-  </customwidget>
-  <customwidget>
-   <class>KRestrictedLine</class>
-   <extends>KLineEdit</extends>
-   <header>krestrictedline.h</header>
-  </customwidget>
- </customwidgets>
- <resources/>
- <connections/>
-</ui>