traverso-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Traverso-commit] traverso/src/traverso dialogs/MarkerDialog.cpp ...


From: Nicola Doebelin
Subject: [Traverso-commit] traverso/src/traverso dialogs/MarkerDialog.cpp ...
Date: Mon, 09 Apr 2007 14:00:58 +0000

CVSROOT:        /sources/traverso
Module name:    traverso
Changes by:     Nicola Doebelin <n_doebelin>    07/04/09 14:00:58

Modified files:
        src/traverso/dialogs: MarkerDialog.cpp MarkerDialog.h 
        src/traverso/dialogs/project: ProjectManagerDialog.cpp 
        src/traverso/songcanvas: TimeLineView.cpp TimeLineView.h 
        src/traverso/ui: MarkerDialog.ui ProjectManagerDialog.ui 

Log message:
        various fixes to markers

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/traverso/src/traverso/dialogs/MarkerDialog.cpp?cvsroot=traverso&r1=1.3&r2=1.4
http://cvs.savannah.gnu.org/viewcvs/traverso/src/traverso/dialogs/MarkerDialog.h?cvsroot=traverso&r1=1.3&r2=1.4
http://cvs.savannah.gnu.org/viewcvs/traverso/src/traverso/dialogs/project/ProjectManagerDialog.cpp?cvsroot=traverso&r1=1.10&r2=1.11
http://cvs.savannah.gnu.org/viewcvs/traverso/src/traverso/songcanvas/TimeLineView.cpp?cvsroot=traverso&r1=1.16&r2=1.17
http://cvs.savannah.gnu.org/viewcvs/traverso/src/traverso/songcanvas/TimeLineView.h?cvsroot=traverso&r1=1.5&r2=1.6
http://cvs.savannah.gnu.org/viewcvs/traverso/src/traverso/ui/MarkerDialog.ui?cvsroot=traverso&r1=1.3&r2=1.4
http://cvs.savannah.gnu.org/viewcvs/traverso/src/traverso/ui/ProjectManagerDialog.ui?cvsroot=traverso&r1=1.8&r2=1.9

Patches:
Index: dialogs/MarkerDialog.cpp
===================================================================
RCS file: /sources/traverso/traverso/src/traverso/dialogs/MarkerDialog.cpp,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -b -r1.3 -r1.4
--- dialogs/MarkerDialog.cpp    25 Mar 2007 20:01:09 -0000      1.3
+++ dialogs/MarkerDialog.cpp    9 Apr 2007 14:00:57 -0000       1.4
@@ -32,6 +32,10 @@
 #include <Marker.h>
 #include <Utils.h>
 #include <QDebug>
+#include <QTextStream>
+#include <QFileDialog>
+#include <QDateTime>
+#include <AddRemove.h>
 
 MarkerDialog::MarkerDialog(QWidget * parent)
        : QDialog(parent)
@@ -49,7 +53,7 @@
        lineEditPosition->setInputMask(mask);
        
        // hide the first column if necessary
-       markersTreeWidget->header()->setSectionHidden(0, 
!checkBoxAllSongs->isChecked());
+       markersTreeWidget->header()->setSectionHidden(0, true);
 
        // connect signals which require an update of the song list
        connect(&pm(), SIGNAL(projectLoaded(Project*)), this, 
SLOT(set_project(Project*)));
@@ -58,7 +62,6 @@
 
        // connect signals which require an update of the treeWidget's items
        connect(comboBoxDisplaySong, SIGNAL(currentIndexChanged(int)), this, 
SLOT(update_marker_treeview()));
-       connect(checkBoxAllSongs, SIGNAL(toggled(bool)), this, 
SLOT(all_songs_toggled(bool)));
 
        // connect other stuff related to the treeWidget
        connect(lineEditTitle, SIGNAL(textEdited(const QString &)), this, 
SLOT(description_changed(const QString &)));
@@ -85,6 +88,8 @@
        connect(toolButtonSongwriterAll, SIGNAL(clicked()), this, 
SLOT(songwriter_all()));
        connect(toolButtonCopyAll, SIGNAL(clicked()), this, SLOT(copy_all()));
        connect(toolButtonPEmphAll, SIGNAL(clicked()), this, SLOT(pemph_all()));
+
+       connect(pushButtonExport, SIGNAL(clicked()), this, SLOT(export_toc()));
 }
 
 void MarkerDialog::set_project(Project * project)
@@ -108,7 +113,7 @@
 
 void MarkerDialog::update_marker_treeview()
 {
-       // since the treeWidget will be cleared, point m_marker somewhere else
+       // since the treeWidget will be cleared, point m_marker to somewhere 
else
        m_marker = (Marker*)0;
        markersTreeWidget->clear();
 
@@ -116,26 +121,6 @@
                return;
        }
 
-       if (checkBoxAllSongs->isChecked()) { // loop through all songs
-               int i = 1;
-               foreach(Song* song, m_project->get_songs()) {
-
-                       TimeLine* tl = song->get_timeline();
-               
-                       foreach(Marker* marker, tl->get_markers()) {
-                               QString name = marker->get_description();
-                               QString pos = 
frame_to_smpte(marker->get_when(), m_project->get_rate());
-
-                               QTreeWidgetItem* item = new 
QTreeWidgetItem(markersTreeWidget);
-                               item->setText(0, QString("%1 %2").arg(i, 2, 10, 
QLatin1Char('0')).arg(song->get_title()));
-                               item->setText(1, pos.simplified());
-                               item->setText(2, name);
-                               item->setData(0, Qt::UserRole, 
marker->get_id());
-                       }
-                       ++i;
-               }
-       } else { // pick one song
-
                if (comboBoxDisplaySong->currentIndex() >= m_songlist.size()) {
                        return;
                }
@@ -155,9 +140,8 @@
                        item->setText(2, name);
                        item->setData(0, Qt::UserRole, marker->get_id());
                }
-       }
 
-       markersTreeWidget->sortItems(0, Qt::AscendingOrder);
+       markersTreeWidget->sortItems(1, Qt::AscendingOrder);
 }
 
 void MarkerDialog::item_changed(QTreeWidgetItem * current, QTreeWidgetItem * 
previous)
@@ -223,7 +207,7 @@
 
        item->setText(1, s);
        m_marker->set_when(smpte_to_frame(s, m_project->get_rate()));
-       markersTreeWidget->sortItems(0, Qt::AscendingOrder);
+       markersTreeWidget->sortItems(1, Qt::AscendingOrder);
 }
 
 // find the marker based on it's id. Since each song has it's own timeline,
@@ -463,22 +447,66 @@
        set_project(m_project);
 }
 
-// resizes the columns in the treeWidget and updates it's content
-void MarkerDialog::all_songs_toggled(bool b)
+void MarkerDialog::remove_marker()
 {
-       markersTreeWidget->header()->setSectionHidden(0, !b);
+       if (!m_marker) {
+               return;
+       }
+
+       Song *song = m_songlist.at(comboBoxDisplaySong->currentIndex());
+       TimeLine* tl = song->get_timeline();
+               
+       AddRemove *ar = (AddRemove*) tl->remove_marker(m_marker);
+       Command::process_command(ar);
        update_marker_treeview();
 }
 
-void MarkerDialog::marker_moved()
+void MarkerDialog::export_toc()
 {
+       QString fn = QFileDialog::getSaveFileName (0, tr("Export Table of 
Contents"), m_project->get_root_dir(), tr("HTML File (*.html)"));
 
-}
+       // if aborted exit here
+       if (fn.isEmpty()) {
+               return;
+       }
 
-// Remon, need your help!
-// Couldn't find a working solution to delete markers via the button properly
-void MarkerDialog::remove_marker()
-{
+       QFile file(fn);
+
+       // check if the selected file can be opened for writing
+       if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) {
+               printf("Could not open file for writing.");
+               return;
+       }
+
+       QTextStream out(&file);
+
+       out << "<html>\n  <head>\n  </head>\n\n  <body>\n";
+
+       out << "    <h1>" << m_project->get_title() << "</h1>\n";
+       out << "    <h2>" << m_project->get_description() << "</h2>\n";
+       
+       out << "    <hr>\n";
+       out << "    <table>\n      <tr><th>Position 
(mm:ss.frames)</th><th>Title</th>\n";
+
+       if (comboBoxDisplaySong->currentIndex() >= m_songlist.size()) {
+               return;
+       }
+
+       int i = comboBoxDisplaySong->currentIndex();
+       Song *song = m_songlist.at(i);
+
+       TimeLine* tl = song->get_timeline();
+               
+       foreach(Marker* marker, tl->get_markers()) {
+               QString name = marker->get_description();
+               QString pos = frame_to_smpte(marker->get_when(), 
m_project->get_rate());
+
+               out << "      <tr><td>" << pos << "</td>\n        <td>" << name 
<< "</td></tr>\n";
+       }       
+
+       QDateTime dt = QDateTime::currentDateTime();
+
+       out << "    </table>\n  <hr>\n  " << dt.toString("MMM dd, yyyy, hh:mm") 
<< "\n</body>\n</html>\n";
 }
 
 //eof

Index: dialogs/MarkerDialog.h
===================================================================
RCS file: /sources/traverso/traverso/src/traverso/dialogs/MarkerDialog.h,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -b -r1.3 -r1.4
--- dialogs/MarkerDialog.h      25 Mar 2007 20:01:09 -0000      1.3
+++ dialogs/MarkerDialog.h      9 Apr 2007 14:00:57 -0000       1.4
@@ -52,10 +52,9 @@
        void item_changed(QTreeWidgetItem *, QTreeWidgetItem *);
        void description_changed(const QString &);
        void position_changed(const QString &);
-       void marker_moved();
        void update_songs();
-       void all_songs_toggled(bool);
        void remove_marker();
+       void export_toc();
 
        void title_enter();
        void position_enter();

Index: dialogs/project/ProjectManagerDialog.cpp
===================================================================
RCS file: 
/sources/traverso/traverso/src/traverso/dialogs/project/ProjectManagerDialog.cpp,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -b -r1.10 -r1.11
--- dialogs/project/ProjectManagerDialog.cpp    5 Apr 2007 13:15:06 -0000       
1.10
+++ dialogs/project/ProjectManagerDialog.cpp    9 Apr 2007 14:00:57 -0000       
1.11
@@ -74,12 +74,14 @@
                        this, SLOT(undo_text_changed(const QString&)));
                setWindowTitle("Manage Project - " + m_project->get_title());
                descriptionTextEdit->setText(m_project->get_description());
+               lineEditTitle->setText(m_project->get_title());
                redoButton->setText(m_project->get_history_stack()->redoText());
                undoButton->setText(m_project->get_history_stack()->undoText());
        } else {
                setWindowTitle("Manage Project - No Project loaded!");
                treeSongWidget->clear();
                descriptionTextEdit->clear();
+               lineEditTitle->clear();
        }
        
        update_song_list();
@@ -270,6 +272,7 @@
        }
        
        m_project->set_description(descriptionTextEdit->toPlainText());
+       m_project->set_title(lineEditTitle->text());
        
        hide();
 }
@@ -282,6 +285,7 @@
        }
        
        descriptionTextEdit->setText(m_project->get_description());
+       lineEditTitle->setText(m_project->get_title());
        hide();
 }
 

Index: songcanvas/TimeLineView.cpp
===================================================================
RCS file: /sources/traverso/traverso/src/traverso/songcanvas/TimeLineView.cpp,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -b -r1.16 -r1.17
--- songcanvas/TimeLineView.cpp 6 Apr 2007 10:16:13 -0000       1.16
+++ songcanvas/TimeLineView.cpp 9 Apr 2007 14:00:57 -0000       1.17
@@ -37,6 +37,7 @@
 #include <Utils.h>
 #include <Command.h>
 #include <defines.h>
+#include <AddRemove.h>
 
 #include <QDebug>
 
@@ -142,7 +143,7 @@
                m_newWhen = slist->get_snap_value(m_newWhen);
        }
 
-       m_mview->set_position(m_newWhen / m_scalefactor);
+       m_mview->set_position(int(m_newWhen / m_scalefactor));
        m_mview->get_songview()->update_shuttle_factor();
        return 1;
 }
@@ -204,8 +205,6 @@
                xstart = 0;
        }
        
-//     printf("TimeLineView:: PAINT :: exposed rect is: x=%f, y=%f, w=%f, 
h=%f\n", option->exposedRect.x(), option->exposedRect.y(), 
option->exposedRect.width(), option->exposedRect.height());
-
        int height = TIMELINEHEIGHT;
        
        painter->fillRect(xstart, 0,  pixelcount, height, 
themer()->get_color("Timeline:background") );
@@ -262,7 +261,26 @@
 {
        QPointF point = mapFromScene(cpointer().scene_pos());
        
-       Marker* marker = new Marker(m_timeline, (uint) (point.x() * 
m_sv->scalefactor));
+       nframes_t when = (uint) (point.x() * m_sv->scalefactor);
+
+       // check if it is the first marker added to the timeline
+       if (!m_timeline->get_markers().size()) {
+               if (when > 0) {  // add one at the beginning of the song
+                       Marker* m = new Marker(m_timeline, 0);
+                       m->set_description("");
+                       AddRemove *ca = (AddRemove*) m_timeline->add_marker(m);
+                       Command::process_command(ca);
+               }
+
+               if (when < m_sv->get_song()->get_last_frame()) {  // add one at 
the end of the song
+                       Marker* me = new Marker(m_timeline, 
m_sv->get_song()->get_last_frame(), 10);
+                       me->set_description(tr("End"));
+                       AddRemove *cb = (AddRemove*) m_timeline->add_marker(me);
+                       Command::process_command(cb);
+               }
+       }
+
+       Marker* marker = new Marker(m_timeline, when);
        marker->set_description("");
        
        return m_timeline->add_marker(marker);
@@ -355,6 +373,18 @@
        return 0;
 }
 
+Command * TimeLineView::clear_markers()
+{
+       QList<Marker*> lst = m_timeline->get_markers();
+
+       foreach(Marker *m, lst) {
+               AddRemove *ar = (AddRemove*) m_timeline->remove_marker(m);
+               Command::process_command(ar);
+       }
+
+       return 0;
+}
+
 void TimeLineView::load_theme_data()
 {
        // TODO Load pixmap, fonts, colors from themer() !!

Index: songcanvas/TimeLineView.h
===================================================================
RCS file: /sources/traverso/traverso/src/traverso/songcanvas/TimeLineView.h,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -b -r1.5 -r1.6
--- songcanvas/TimeLineView.h   10 Mar 2007 21:57:01 -0000      1.5
+++ songcanvas/TimeLineView.h   9 Apr 2007 14:00:57 -0000       1.6
@@ -37,6 +37,7 @@
        Q_CLASSINFO("add_marker", tr("Add Marker"))
        Q_CLASSINFO("remove_marker", tr("Remove Marker"))
        Q_CLASSINFO("drag_marker", tr("Drag Marker"))
+       Q_CLASSINFO("clear_markers", tr("Clear all Markers"))
 
 public:
         TimeLineView(SongView* view);
@@ -69,6 +70,7 @@
        Command* add_marker();
        Command* remove_marker();
        Command* drag_marker();
+       Command* clear_markers();
        
 private slots:
        void add_new_marker_view(Marker* marker);

Index: ui/MarkerDialog.ui
===================================================================
RCS file: /sources/traverso/traverso/src/traverso/ui/MarkerDialog.ui,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -b -r1.3 -r1.4
--- ui/MarkerDialog.ui  25 Mar 2007 20:01:09 -0000      1.3
+++ ui/MarkerDialog.ui  9 Apr 2007 14:00:58 -0000       1.4
@@ -333,6 +333,13 @@
       </widget>
      </item>
      <item>
+      <widget class="QPushButton" name="pushButtonExport" >
+       <property name="text" >
+        <string>&amp;Export</string>
+       </property>
+      </widget>
+     </item>
+     <item>
       <spacer>
        <property name="orientation" >
         <enum>Qt::Horizontal</enum>

Index: ui/ProjectManagerDialog.ui
===================================================================
RCS file: /sources/traverso/traverso/src/traverso/ui/ProjectManagerDialog.ui,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -b -r1.8 -r1.9
--- ui/ProjectManagerDialog.ui  3 Apr 2007 19:57:11 -0000       1.8
+++ ui/ProjectManagerDialog.ui  9 Apr 2007 14:00:58 -0000       1.9
@@ -62,6 +62,32 @@
              <number>6</number>
             </property>
             <item>
+             <widget class="QLabel" name="label_3" >
+              <property name="minimumSize" >
+               <size>
+                <width>100</width>
+                <height>0</height>
+               </size>
+              </property>
+              <property name="text" >
+               <string>Title</string>
+              </property>
+             </widget>
+            </item>
+            <item>
+             <widget class="QLineEdit" name="lineEditTitle" />
+            </item>
+           </layout>
+          </item>
+          <item>
+           <layout class="QHBoxLayout" >
+            <property name="margin" >
+             <number>0</number>
+            </property>
+            <property name="spacing" >
+             <number>6</number>
+            </property>
+            <item>
              <widget class="QLabel" name="label" >
               <property name="minimumSize" >
                <size>
@@ -131,20 +157,7 @@
          </property>
         </spacer>
        </item>
-       <item rowspan="2" row="1" column="2" >
-        <spacer>
-         <property name="orientation" >
-          <enum>Qt::Vertical</enum>
-         </property>
-         <property name="sizeHint" >
-          <size>
-           <width>20</width>
-           <height>40</height>
-          </size>
-         </property>
-        </spacer>
-       </item>
-       <item row="0" column="2" >
+       <item row="0" column="1" >
         <widget class="QGroupBox" name="groupBox" >
          <property name="minimumSize" >
           <size>
@@ -179,6 +192,19 @@
          </layout>
         </widget>
        </item>
+       <item rowspan="2" row="1" column="1" >
+        <spacer>
+         <property name="orientation" >
+          <enum>Qt::Vertical</enum>
+         </property>
+         <property name="sizeHint" >
+          <size>
+           <width>20</width>
+           <height>40</height>
+          </size>
+         </property>
+        </spacer>
+       </item>
       </layout>
      </widget>
      <widget class="QWidget" name="tab" >




reply via email to

[Prev in Thread] Current Thread [Next in Thread]