[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Traverso-commit] traverso/src commands/Import.cpp core/FileHelpe...
From: |
Remon Sijrier |
Subject: |
[Traverso-commit] traverso/src commands/Import.cpp core/FileHelpe... |
Date: |
Sat, 06 Oct 2007 14:18:00 +0000 |
CVSROOT: /sources/traverso
Module name: traverso
Changes by: Remon Sijrier <r_sijrier> 07/10/06 14:17:59
Modified files:
src/commands : Import.cpp
src/core : FileHelpers.cpp FileHelpers.h Project.cpp
Project.h ProjectManager.cpp ProjectManager.h
src/engine : AudioDevice.cpp
src/traverso/dialogs/project: OpenProjectDialog.cpp
src/traverso : Interface.cpp Interface.h traverso.pro
src/traverso/widgets: MessageWidget.cpp
Log message:
* Added somewhat more sophisticated backup solution
* Some modifications to showing the Information Widget
* small cleanups
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/traverso/src/commands/Import.cpp?cvsroot=traverso&r1=1.27&r2=1.28
http://cvs.savannah.gnu.org/viewcvs/traverso/src/core/FileHelpers.cpp?cvsroot=traverso&r1=1.8&r2=1.9
http://cvs.savannah.gnu.org/viewcvs/traverso/src/core/FileHelpers.h?cvsroot=traverso&r1=1.3&r2=1.4
http://cvs.savannah.gnu.org/viewcvs/traverso/src/core/Project.cpp?cvsroot=traverso&r1=1.55&r2=1.56
http://cvs.savannah.gnu.org/viewcvs/traverso/src/core/Project.h?cvsroot=traverso&r1=1.24&r2=1.25
http://cvs.savannah.gnu.org/viewcvs/traverso/src/core/ProjectManager.cpp?cvsroot=traverso&r1=1.42&r2=1.43
http://cvs.savannah.gnu.org/viewcvs/traverso/src/core/ProjectManager.h?cvsroot=traverso&r1=1.18&r2=1.19
http://cvs.savannah.gnu.org/viewcvs/traverso/src/engine/AudioDevice.cpp?cvsroot=traverso&r1=1.38&r2=1.39
http://cvs.savannah.gnu.org/viewcvs/traverso/src/traverso/dialogs/project/OpenProjectDialog.cpp?cvsroot=traverso&r1=1.11&r2=1.12
http://cvs.savannah.gnu.org/viewcvs/traverso/src/traverso/Interface.cpp?cvsroot=traverso&r1=1.97&r2=1.98
http://cvs.savannah.gnu.org/viewcvs/traverso/src/traverso/Interface.h?cvsroot=traverso&r1=1.40&r2=1.41
http://cvs.savannah.gnu.org/viewcvs/traverso/src/traverso/traverso.pro?cvsroot=traverso&r1=1.71&r2=1.72
http://cvs.savannah.gnu.org/viewcvs/traverso/src/traverso/widgets/MessageWidget.cpp?cvsroot=traverso&r1=1.6&r2=1.7
Patches:
Index: commands/Import.cpp
===================================================================
RCS file: /sources/traverso/traverso/src/commands/Import.cpp,v
retrieving revision 1.27
retrieving revision 1.28
diff -u -b -r1.27 -r1.28
--- commands/Import.cpp 28 Sep 2007 18:33:43 -0000 1.27
+++ commands/Import.cpp 6 Oct 2007 14:17:58 -0000 1.28
@@ -144,7 +144,7 @@
m_clip->set_song(m_track->get_song());
m_clip->set_track(m_track);
- TimeRef startLocation(qint64(0));
+ TimeRef startLocation;
if (!m_hasPosition) {
if (AudioClip* lastClip = m_track->get_cliplist().get_last()) {
startLocation = lastClip->get_track_end_location() + 1;
Index: core/FileHelpers.cpp
===================================================================
RCS file: /sources/traverso/traverso/src/core/FileHelpers.cpp,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -b -r1.8 -r1.9
--- core/FileHelpers.cpp 17 Apr 2007 19:56:46 -0000 1.8
+++ core/FileHelpers.cpp 6 Oct 2007 14:17:58 -0000 1.9
@@ -17,7 +17,7 @@
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-$Id: FileHelpers.cpp,v 1.8 2007/04/17 19:56:46 r_sijrier Exp $
+$Id: FileHelpers.cpp,v 1.9 2007/10/06 14:17:58 r_sijrier Exp $
*/
#include "FileHelpers.h"
@@ -26,6 +26,8 @@
#include "Config.h"
#include <QDir>
#include <Utils.h>
+#include <QObject>
+#include <QFile>
#include "Debugger.h"
@@ -183,3 +185,24 @@
return -1;
}
+QString FileHelper::fileerror_to_string(int error)
+{
+ switch(error) {
+ case QFile::NoError: return QObject::tr("No error occurred");
break;
+ case QFile::ReadError: return QObject::tr("An error occurred
when reading from the file."); break;
+ case QFile::WriteError: return QObject::tr("An error occurred
when writing to the file."); break;
+ case QFile::FatalError: return QObject::tr("A fatal error
occurred."); break;
+ case QFile::OpenError: return QObject::tr("The file could not
be opened."); break;
+ case QFile::ResourceError: return QObject::tr("Resourc error");
break;
+ case QFile::AbortError: return QObject::tr("The operation was
aborted."); break;
+ case QFile::TimeOutError: return QObject::tr("A timeout
occurred."); break;
+ case QFile::UnspecifiedError: return QObject::tr("An
unspecified error occurred."); break;
+ case QFile::RemoveError: return QObject::tr("The file could not
be removed."); break;
+ case QFile::RenameError: return QObject::tr("The file could not
be renamed."); break;
+ case QFile::PositionError: return QObject::tr("The position in
the file could not be changed."); break;
+ case QFile::ResizeError: return QObject::tr("The file could not
be resized."); break;
+ case QFile::PermissionsError: return QObject::tr("The file
could not be accessed."); break;
+ case QFile::CopyError: return QObject::tr("The file could not
be copied."); break;
+ default: return QObject::tr("Unknown error");
+ }
+}
Index: core/FileHelpers.h
===================================================================
RCS file: /sources/traverso/traverso/src/core/FileHelpers.h,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -b -r1.3 -r1.4
--- core/FileHelpers.h 7 Sep 2006 09:36:52 -0000 1.3
+++ core/FileHelpers.h 6 Oct 2007 14:17:58 -0000 1.4
@@ -17,9 +17,12 @@
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-$Id: FileHelpers.h,v 1.3 2006/09/07 09:36:52 r_sijrier Exp $
+$Id: FileHelpers.h,v 1.4 2007/10/06 14:17:58 r_sijrier Exp $
*/
+#ifndef FILE_HELPER_H
+#define FILE_HELPER_H
+
#include <QString>
class FileHelper
@@ -27,9 +30,8 @@
public:
static int remove_recursively(const QString& pName);
-
static int copy_recursively(const QString& pNameFrom, const QString&
pNameTo);
-
+ static QString fileerror_to_string(int error);
};
-//eof
+#endif
Index: core/Project.cpp
===================================================================
RCS file: /sources/traverso/traverso/src/core/Project.cpp,v
retrieving revision 1.55
retrieving revision 1.56
diff -u -b -r1.55 -r1.56
--- core/Project.cpp 10 Sep 2007 18:42:48 -0000 1.55
+++ core/Project.cpp 6 Oct 2007 14:17:58 -0000 1.56
@@ -42,6 +42,7 @@
#include "ContextPointer.h"
#include "Utils.h"
#include <AddRemove.h>
+#include "FileHelpers.h"
#define PROJECT_FILE_VERSION 2
@@ -60,7 +61,7 @@
m_useResampling = config().get_property("Conversion",
"DynamicResampling", false).toBool();
rootDir = config().get_property("Project", "directory",
"/directory/unknown/").toString() + "/" + m_title;
- sourcesDir = rootDir + "/audiosources";
+ m_sourcesDir = rootDir + "/audiosources";
m_rate = audiodevice().get_sample_rate();
m_bitDepth = audiodevice().get_bit_depth();
@@ -88,7 +89,7 @@
int Project::create(int songcount, int numtracks)
{
PENTER;
- PMESG("Creating new project %s NumSongs=%d", m_title.toAscii().data(),
songcount);
+ PMESG("Creating new project %s NumSongs=%d", QS_C(m_title), songcount);
QDir dir;
if (dir.mkdir(rootDir) < 0) {
@@ -96,15 +97,15 @@
return -1;
}
- if (dir.mkdir(sourcesDir) < 0) {
- info().critical(tr("Cannot create dir %1").arg(sourcesDir));
+ if (create_peakfiles_dir() < 0) {
return -1;
}
- QString peaksDir = rootDir + "/peakfiles/";
+ if (create_audiosources_dir() < 0) {
+ return -1;
+ }
- if (dir.mkdir(peaksDir) < 0) {
- info().critical(tr("Cannot create dir %1").arg(peaksDir));
+ if (create_projectfilebackup_dir() < 0) {
return -1;
}
@@ -124,6 +125,43 @@
return 1;
}
+int Project::create_audiosources_dir()
+{
+ QDir dir;
+ if (dir.mkdir(m_sourcesDir) < 0) {
+ info().critical(tr("Cannot create dir %1").arg(m_sourcesDir));
+ return -1;
+ }
+
+ return 1;
+
+}
+
+int Project::create_peakfiles_dir()
+{
+ QDir dir;
+ QString peaksDir = rootDir + "/peakfiles/";
+
+ if (dir.mkdir(peaksDir) < 0) {
+ info().critical(tr("Cannot create dir %1").arg(peaksDir));
+ return -1;
+ }
+
+ return 1;
+}
+
+int Project::create_projectfilebackup_dir()
+{
+ QDir dir;
+ QString path = rootDir + "/projectfilebackup/";
+
+ if (dir.mkdir(path) < 0) {
+ info().critical(tr("Cannot create dir %1").arg(path));
+ return -1;
+ }
+
+ return 1;
+}
int Project::load(QString projectfile)
{
@@ -132,6 +170,7 @@
QFile file;
QString filename;
+
if (projectfile.isEmpty()) {
filename = rootDir + "/project.tpf";
file.setFileName(filename);
@@ -140,49 +179,21 @@
file.setFileName(filename);
}
- if (!file.open(QIODevice::ReadOnly))
- {
+ if (!file.open(QIODevice::ReadOnly)) {
file.close();
- info().critical(tr("Project %1: Cannot open project.tpf file!
(%2)")
+ info().critical(tr("Project %1: Cannot open project.tpf file!
(Reason: %2)")
.arg(m_title).arg(file.errorString()));
- QFile backup(filename + "~");
- backup.copy(filename);
- if (QFile::exists(filename.append("~"))) {
- return load(filename);
- } else {
- info().information(tr("No backup project file
available, unable to restore project"));
return -1;
}
- }
QString errorMsg;
- if (!doc.setContent(&file, &errorMsg))
- {
- info().critical(tr("Project %1: Failed to parse project.tpf
file! (%2)")
+ if (!doc.setContent(&file, &errorMsg)) {
+ info().critical(tr("Project %1: Failed to parse project.tpf
file! (Reason: %2)")
.arg(m_title).arg(errorMsg));
- file.remove();
- file.close();
- if (! filename.contains("~")) {
- // Trying to load backup!
- QFile backup(filename + "~");
- backup.copy(filename);
- if (QFile::exists(filename.append("~"))) {
- return load(filename);
- } else {
- info().information(tr("No backup project file
available, unable to restore project"));
- return -1;
- }
- } else {
return -1;
}
- }
-
- if (filename.contains("~")) {
- info().information(tr("Project file restored from older version
(%1)")
-
.arg(QFileInfo(filename).lastModified().toString()));
- }
file.close();
@@ -215,7 +226,6 @@
// Load all the AudioSources for this project
-
QDomNode asmNode = docElem.firstChildElement("ResourcesManager");
m_resourcesManager->set_state(asmNode);
@@ -253,23 +263,21 @@
QDomDocument doc("Project");
QString fileName = rootDir + "/project.tpf";
- QFile::remove(fileName + "~");
- QFile backup(fileName);
- backup.rename(fileName + "~");
- QFile::remove(fileName);
-
QFile data( fileName );
- if (data.open( QIODevice::WriteOnly ) ) {
+ if (!data.open( QIODevice::WriteOnly ) ) {
+ QString errorstring =
FileHelper::fileerror_to_string(data.error());
+ info().critical( tr("Couldn't open Project properties file for
writing! (File %1. Reason: %2)").arg(fileName).arg(errorstring) );
+ return -1;
+ }
+
get_state(doc);
QTextStream stream(&data);
doc.save(stream, 4);
data.close();
info().information( tr("Project %1 saved ").arg(m_title) );
- } else {
- info().critical( tr("Couldn't open Project properties file for
writing! (%1)").arg(fileName) );
- return -1;
- }
+
+ pm().start_incremental_backup(m_title);
return 1;
}
@@ -871,5 +879,3 @@
return false;
}
-//eof
-
Index: core/Project.h
===================================================================
RCS file: /sources/traverso/traverso/src/core/Project.h,v
retrieving revision 1.24
retrieving revision 1.25
diff -u -b -r1.24 -r1.25
--- core/Project.h 15 Jul 2007 05:09:47 -0000 1.24
+++ core/Project.h 6 Oct 2007 14:17:58 -0000 1.25
@@ -110,7 +110,7 @@
QString m_title;
QString rootDir;
- QString sourcesDir;
+ QString m_sourcesDir;
QString engineer;
QString m_description;
QString m_importDir;
@@ -133,6 +133,9 @@
qint64 m_currentSongId;
int create(int songcount, int numtracks);
+ int create_audiosources_dir();
+ int create_peakfiles_dir();
+ int create_projectfilebackup_dir();
friend class ProjectManager;
Index: core/ProjectManager.cpp
===================================================================
RCS file: /sources/traverso/traverso/src/core/ProjectManager.cpp,v
retrieving revision 1.42
retrieving revision 1.43
diff -u -b -r1.42 -r1.43
--- core/ProjectManager.cpp 11 Aug 2007 22:54:57 -0000 1.42
+++ core/ProjectManager.cpp 6 Oct 2007 14:17:58 -0000 1.43
@@ -27,6 +27,8 @@
#include <QFileDialog>
#include <QMessageBox>
#include <QFileSystemWatcher>
+#include <QTextStream>
+
#include "Project.h"
#include "Song.h"
@@ -198,6 +200,7 @@
set_current_project(newProject);
if (currentProject->load() < 0) {
+ emit projectLoadFailed(currentProject->get_title());
delete currentProject;
currentProject = 0;
set_current_project(0);
@@ -459,7 +462,7 @@
emit unsupportedProjectDirChangeDetected();
}
-void ProjectManager::add_correct_project_path(const QString & path)
+void ProjectManager::add_valid_project_path(const QString & path)
{
m_projectDirs.append(path);
}
@@ -468,3 +471,122 @@
{
m_projectDirs.removeAll(path);
}
+
+
+void ProjectManager::start_incremental_backup(const QString& projectname)
+{
+ if (! project_exists(projectname)) {
+ return;
+ }
+
+ QString project_dir = config().get_property("Project", "directory",
"/directory/unknown").toString();
+ QString project_path = project_dir + "/" + projectname;
+ QString fileName = project_path + "/project.tpf";
+
+ QFile reader(fileName);
+ if (!reader.open(QIODevice::ReadOnly)) {
+ //
+ reader.close();
+ return;
+ }
+
+ QDateTime time = QDateTime::currentDateTime();
+ QString writelocation = project_path + "/projectfilebackup/" +
time.toString() + "__" + QString::number(time.toTime_t());
+ QFile compressedWriter(writelocation);
+
+ if (!compressedWriter.open( QIODevice::WriteOnly ) ) {
+ compressedWriter.close();
+ return;
+ }
+
+
+ QByteArray array = reader.readAll();
+ QByteArray compressed = qCompress(array, 9);
+ QDataStream stream(&compressedWriter);
+ stream << compressed;
+
+ compressedWriter.close();
+}
+
+int ProjectManager::restore_project_from_backup(const QString& projectname,
uint restoretime)
+{
+ if (! project_exists(projectname)) {
+ return -1;
+ }
+ QString project_dir = config().get_property("Project", "directory",
"/directory/unknown").toString();
+ QString project_path = project_dir + "/" + projectname;
+ QString backupDir = project_path + "/projectfilebackup";
+
+ if (currentProject) {
+ currentProject->save();
+ set_current_project(0);
+ delete currentProject;
+ currentProject = 0;
+ }
+
+ QString fileName = project_path + "/project.tpf";
+
+ QDir dir(backupDir);
+ QString backupfile;
+
+ foreach (QString backup, dir.entryList(QDir::Files)) {
+ if (backup.right(10).toUInt() == restoretime) {
+ backupfile = backupDir + "/" + backup;
+ printf("backupfile %s\n", QS_C(backupfile));
+ break;
+ }
+ }
+
+ QFile reader(backupfile);
+ if (!reader.open(QIODevice::ReadOnly)) {
+ //
+ reader.close();
+ return -1;
+ }
+
+
+ QFile writer(fileName);
+ if (!writer.open( QIODevice::WriteOnly | QIODevice::Text) ) {
+ PERROR("Could not open %s for writing!", QS_C(fileName));
+ writer.close();
+ return -1;
+ }
+
+ QDataStream dataIn(&reader);
+ QByteArray compByteArray;
+ dataIn >> compByteArray;
+
+ QByteArray a = qUncompress(compByteArray);
+ QTextStream stream(&writer);
+ stream << a;
+
+ writer.close();
+
+ return 1;
+}
+
+QList< uint > ProjectManager::get_backup_date_times(const QString& projectname)
+{
+ if (! project_exists(projectname)) {
+ return QList<uint>();
+ }
+ QString project_dir = config().get_property("Project", "directory",
"/directory/unknown").toString();
+ QString backupDir = project_dir + "/" + projectname +
"/projectfilebackup";
+
+ QList<uint> dateList;
+ QDir dir(backupDir);
+
+ foreach (QString filename, dir.entryList(QDir::Files)) {
+ bool ok;
+ uint date = filename.right(10).toUInt(&ok);
+ if (ok) {
+ dateList.append(date);
+ } else {
+ printf("filename: %s is not backupfile made by
Traverso, removing it!\n", QS_C(filename));
+ QFile::remove(backupDir + "/" + filename);
+ }
+ }
+
+ return dateList;
+}
+
Index: core/ProjectManager.h
===================================================================
RCS file: /sources/traverso/traverso/src/core/ProjectManager.h,v
retrieving revision 1.18
retrieving revision 1.19
diff -u -b -r1.18 -r1.19
--- core/ProjectManager.h 3 Jul 2007 14:17:16 -0000 1.18
+++ core/ProjectManager.h 6 Oct 2007 14:17:59 -0000 1.19
@@ -28,6 +28,7 @@
#include <QTimer>
#include <QStringList>
+
class Project;
class Song;
class Command;
@@ -49,16 +50,21 @@
int load_renamed_project(const QString& name);
bool project_exists(const QString& title);
+ bool exit_in_progress() const {return m_exitInProgress;}
int remove_project(const QString& title);
void scheduled_for_deletion(Song* song);
void delete_song(Song* song);
void set_current_project_dir(const QString& path);
- void add_correct_project_path(const QString& path);
+ void add_valid_project_path(const QString& path);
void remove_wrong_project_path(const QString& path);
int rename_project_dir(const QString& olddir, const QString& newdir);
+ int restore_project_from_backup(const QString& projectdir, uint
restoretime);
+
+ QList<uint> get_backup_date_times(const QString& projectdir);
+ void start_incremental_backup(const QString& projectname);
Project* get_project();
QUndoGroup* get_undogroup() const;
@@ -98,6 +104,7 @@
void currentProjectDirChanged();
void unsupportedProjectDirChangeDetected();
void projectDirChangeDetected();
+ void projectLoadFailed(QString project);
private slots:
void project_dir_rename_detected(const QString& dirname);
Index: engine/AudioDevice.cpp
===================================================================
RCS file: /sources/traverso/traverso/src/engine/AudioDevice.cpp,v
retrieving revision 1.38
retrieving revision 1.39
diff -u -b -r1.38 -r1.39
--- engine/AudioDevice.cpp 26 Sep 2007 21:19:39 -0000 1.38
+++ engine/AudioDevice.cpp 6 Oct 2007 14:17:59 -0000 1.39
@@ -17,7 +17,7 @@
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-$Id: AudioDevice.cpp,v 1.38 2007/09/26 21:19:39 r_sijrier Exp $
+$Id: AudioDevice.cpp,v 1.39 2007/10/06 14:17:59 r_sijrier Exp $
*/
#include "AudioDevice.h"
@@ -403,7 +403,7 @@
if (driverType == "Jack") {
driver = new JackDriver(this, m_rate, m_bufferSize);
if (driver->setup(capture, playback) < 0) {
- info().critical(tr("Failed to create the Jack
Driver"));
+ info().warning(tr("Audiodevice: Failed to
create the Jack Driver"));
delete driver;
driver = 0;
return -1;
@@ -418,7 +418,7 @@
if (driverType == "ALSA") {
driver = new AlsaDriver(this, m_rate, m_bufferSize);
if (driver->setup(capture,playback, cardDevice) < 0) {
- info().critical(tr("Failed to create the ALSA Driver"));
+ info().warning(tr("Audiodevice: Failed to create the
ALSA Driver"));
delete driver;
driver = 0;
return -1;
@@ -432,7 +432,7 @@
if (driverType == "PortAudio") {
driver = new PADriver(this, m_rate, m_bufferSize);
if (driver->setup(capture, playback, cardDevice) < 0) {
- info().critical(tr("Failed to create the PortAudio
Driver"));
+ info().warning(tr("Audiodevice: Failed to create the
PortAudio Driver"));
delete driver;
driver = 0;
return -1;
Index: traverso/dialogs/project/OpenProjectDialog.cpp
===================================================================
RCS file:
/sources/traverso/traverso/src/traverso/dialogs/project/OpenProjectDialog.cpp,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -b -r1.11 -r1.12
--- traverso/dialogs/project/OpenProjectDialog.cpp 3 Jul 2007 14:17:17
-0000 1.11
+++ traverso/dialogs/project/OpenProjectDialog.cpp 6 Oct 2007 14:17:59
-0000 1.12
@@ -127,7 +127,7 @@
// Let the ProjectManager know that this path is a
correct one
// so it doesn't start whining when the directory is
changed back
// to the proper name!
- pm().add_correct_project_path(path + "/" + title);
+ pm().add_valid_project_path(path + "/" + title);
pm().remove_wrong_project_path(path + "/" + dirname);
item->setIcon(0,
style()->standardIcon(QStyle::SP_MessageBoxWarning));
Index: traverso/Interface.cpp
===================================================================
RCS file: /sources/traverso/traverso/src/traverso/Interface.cpp,v
retrieving revision 1.97
retrieving revision 1.98
diff -u -b -r1.97 -r1.98
--- traverso/Interface.cpp 28 Sep 2007 18:33:44 -0000 1.97
+++ traverso/Interface.cpp 6 Oct 2007 14:17:59 -0000 1.98
@@ -63,7 +63,7 @@
#include "dialogs/MarkerDialog.h"
#include "dialogs/BusSelectorDialog.h"
#include "dialogs/InsertSilenceDialog.h"
-
+#include "dialogs/RestoreProjectBackupDialog.h"
// Always put me below _all_ includes, this is needed
// in case we run with memory leak detection enabled!
@@ -176,6 +176,7 @@
m_newSongDialog = 0;
m_newTrackDialog = 0;
m_quickStart = 0;
+ m_restoreProjectBackupDialog = 0;
create_menus();
@@ -189,6 +190,7 @@
connect(&pm(), SIGNAL(projectLoaded(Project*)), this,
SLOT(set_project(Project*)));
connect(&pm(), SIGNAL(aboutToDelete(Song*)), this,
SLOT(delete_songwidget(Song*)));
connect(&pm(), SIGNAL(unsupportedProjectDirChangeDetected()), this,
SLOT(project_dir_change_detected()));
+ connect(&pm(), SIGNAL(projectLoadFailed(QString)), this,
SLOT(show_restore_project_backup_dialog()));
cpointer().add_contextitem(this);
@@ -231,6 +233,9 @@
sw->setUpdatesEnabled(false);
}
} else {
+ if (pm().exit_in_progress()) {
+ hide();
+ }
m_projectSaveAction->setEnabled(false);
m_projectSongManagerAction->setEnabled(false);
m_projectExportAction->setEnabled(false);
@@ -397,6 +402,13 @@
m_projectExportAction = action;
connect(action, SIGNAL(triggered(bool)), this,
SLOT(show_export_widget()));
+ action = menu->addAction(tr("&Restore Backup..."));
+ list.clear();
+ list.append(QKeySequence("F10"));
+ action->setShortcuts(list);
+ action->setIcon(style()->standardIcon(QStyle::SP_FileDialogBack));
+ connect(action, SIGNAL(triggered(bool)), this,
SLOT(show_restore_project_backup_dialog()));
+
menu->addSeparator();
action = menu->addAction(tr("&Quit"));
@@ -1027,3 +1039,27 @@
QMessageBox::Ok);
}
+Command * Interface::show_restore_project_backup_dialog(QString projectname)
+{
+ if (! m_restoreProjectBackupDialog) {
+ m_restoreProjectBackupDialog = new
RestoreProjectBackupDialog(this);
+ }
+
+ m_restoreProjectBackupDialog->set_project_name(projectname);
+ m_restoreProjectBackupDialog->show();
+
+
+ return 0;
+}
+
+void Interface::show_restore_project_backup_dialog()
+{
+ Project* project = pm().get_project();
+
+ if (! project ) {
+ return;
+ }
+
+ show_restore_project_backup_dialog(project->get_title());
+}
+
Index: traverso/Interface.h
===================================================================
RCS file: /sources/traverso/traverso/src/traverso/Interface.h,v
retrieving revision 1.40
retrieving revision 1.41
diff -u -b -r1.40 -r1.41
--- traverso/Interface.h 16 Jul 2007 02:19:31 -0000 1.40
+++ traverso/Interface.h 6 Oct 2007 14:17:59 -0000 1.41
@@ -63,6 +63,7 @@
class NewTrackDialog;
class NewProjectDialog;
class Ui_QuickStartDialog;
+class RestoreProjectBackupDialog;
struct MenuData;
class Interface : public QMainWindow
@@ -120,7 +121,8 @@
NewSongDialog* m_newSongDialog;
NewTrackDialog* m_newTrackDialog;
NewProjectDialog* m_newProjectDialog;
- QDialog *m_quickStart;
+ QDialog* m_quickStart;
+ RestoreProjectBackupDialog* m_restoreProjectBackupDialog;
BusMonitor* busMonitor;
@@ -152,6 +154,7 @@
void set_fade_out_shape(QAction* action);
void update_opengl();
void import_audio();
+ void show_restore_project_backup_dialog();
Command* full_screen();
Command* about_traverso();
@@ -161,6 +164,7 @@
Command* show_context_menu();
Command* show_open_project_dialog();
Command* show_project_manager_dialog();
+ Command* show_restore_project_backup_dialog(QString projectdir);
Command* show_insertsilence_dialog();
Command* show_marker_dialog();
Command* show_newsong_dialog();
Index: traverso/traverso.pro
===================================================================
RCS file: /sources/traverso/traverso/src/traverso/traverso.pro,v
retrieving revision 1.71
retrieving revision 1.72
diff -u -b -r1.71 -r1.72
--- traverso/traverso.pro 24 Sep 2007 17:39:07 -0000 1.71
+++ traverso/traverso.pro 6 Oct 2007 14:17:59 -0000 1.72
@@ -53,7 +53,8 @@
dialogs/project/NewTrackDialog.h \
songcanvas/PositionIndicator.h \
widgets/ResourcesWidget.h \
- dialogs/AudioClipEditDialog.h
+ dialogs/AudioClipEditDialog.h \
+ dialogs/RestoreProjectBackupDialog.h
SOURCES += \
Traverso.cpp \
BusMonitor.cpp \
@@ -82,7 +83,8 @@
dialogs/project/NewTrackDialog.cpp \
songcanvas/PositionIndicator.cpp \
widgets/ResourcesWidget.cpp \
- dialogs/AudioClipEditDialog.cpp
+ dialogs/AudioClipEditDialog.cpp \
+ dialogs/RestoreProjectBackupDialog.cpp
FORMS += ui/ExportWidget.ui \
ui/AudioSourcesManagerWidget.ui \
ui/SpectralMeterConfigWidget.ui \
@@ -106,7 +108,8 @@
ui/ResourcesWidget.ui \
ui/QuickStart.ui \
ui/InsertSilenceDialog.ui \
- ui/AudioClipEditWidget.ui
+ ui/AudioClipEditWidget.ui \
+ ui/RestoreProjectBackupDialog.ui
INCLUDEPATH += ../core \
../commands \
@@ -157,7 +160,7 @@
}
}
- system(which relaytool 2>/dev/null >/dev/null) {
+ system(which relaytool 2>/dev/null >/dev/null){
LIBS += $$system(relaytool --relay FLAC -lFLAC)
LIBS += $$system(relaytool --relay mad -lmad)
LIBS += $$system(relaytool --relay mp3lame -lmp3lame)
@@ -166,7 +169,7 @@
LIBS += $$system(relaytool --relay vorbisfile -lvorbisfile)
LIBS += $$system(relaytool --relay vorbisenc -lvorbisenc)
LIBS += $$system(relaytool --relay wavpack -lwavpack)
- } else {
+ } else{
LIBS += -logg \
-lvorbis \
-lvorbisfile \
@@ -178,7 +181,7 @@
}
}
-!unix { #non-unix systems don't have relaytool
+!unix{ #non-unix systems don't have relaytool
LIBS += -logg \
-lvorbis \
-lvorbisfile \
Index: traverso/widgets/MessageWidget.cpp
===================================================================
RCS file: /sources/traverso/traverso/src/traverso/widgets/MessageWidget.cpp,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -b -r1.6 -r1.7
--- traverso/widgets/MessageWidget.cpp 14 Aug 2007 10:49:56 -0000 1.6
+++ traverso/widgets/MessageWidget.cpp 6 Oct 2007 14:17:59 -0000 1.7
@@ -25,6 +25,7 @@
#include <QTextBrowser>
#include <QHBoxLayout>
#include <QStyle>
+#include <QDialog>
#include <Utils.h>
#include "Themer.h"
#include <QDir>
@@ -37,7 +38,7 @@
MessageWidgetPrivate(QWidget* parent = 0);
public slots:
- void enqueue_message(InfoStruct );
+ void queue_message(InfoStruct );
void dequeue_messagequeue();
void show_history();
@@ -51,6 +52,7 @@
QQueue<InfoStruct > m_messageQueue;
InfoStruct m_infoStruct;
QTextBrowser* m_log;
+ QDialog* m_logDialog;
QString m_stringLog;
void create_icons();
@@ -104,7 +106,7 @@
create_icons();
- connect(&info(), SIGNAL(message(InfoStruct)), this,
SLOT(enqueue_message(InfoStruct)));
+ connect(&info(), SIGNAL(message(InfoStruct)), this,
SLOT(queue_message(InfoStruct)));
connect(&m_messageTimer, SIGNAL(timeout()), this,
SLOT(dequeue_messagequeue()));
}
@@ -159,7 +161,7 @@
update();
}
-void MessageWidgetPrivate::enqueue_message( InfoStruct infostruct)
+void MessageWidgetPrivate::queue_message( InfoStruct infostruct)
{
m_messageQueue.enqueue(infostruct);
@@ -168,15 +170,21 @@
update();
}
- if (m_messageQueue.size() >= 0) {
- m_messageTimer.start(3000);
+ if (m_messageQueue.size() <= 1) {
+ m_messageTimer.start(10000);
}
// If Queue size is >= 1 start to dequeue faster.
if (m_messageQueue.size() >= 1) {
- m_messageTimer.start(2000);
+ m_messageTimer.start(1000);
}
+ if (m_messageQueue.size() > 3) {
+ int skip = m_messageQueue.size() - 3;
+ for (int i=0; i<skip; ++i) {
+ dequeue_messagequeue();
+ }
+ }
log(infostruct);
@@ -237,17 +245,20 @@
void MessageWidgetPrivate::show_history()
{
if (!m_log) {
- m_log = new QTextBrowser(this);
- m_log->setWindowFlags(Qt::Dialog);
- m_log->resize(500, 200);
+ m_logDialog = new QDialog(this);
+ m_log = new QTextBrowser(m_logDialog);
+ QHBoxLayout* lay = new QHBoxLayout(m_logDialog);
+ m_logDialog->setLayout(lay);
+ lay->addWidget(m_log);
+ m_logDialog->resize(500, 200);
m_log->append(m_stringLog);
m_stringLog.clear();
}
- if (m_log->isHidden()) {
- m_log->show();
+ if (m_logDialog->isHidden()) {
+ m_logDialog->show();
} else {
- m_log->hide();
+ m_logDialog->hide();
}
}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Traverso-commit] traverso/src commands/Import.cpp core/FileHelpe...,
Remon Sijrier <=