traverso-commit
[Top][All Lists]
Advanced

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

[Traverso-commit] traverso/src core/ProjectManager.cpp core/Proje...


From: Remon Sijrier
Subject: [Traverso-commit] traverso/src core/ProjectManager.cpp core/Proje...
Date: Mon, 29 Oct 2007 10:42:32 +0000

CVSROOT:        /sources/traverso
Module name:    traverso
Changes by:     Remon Sijrier <r_sijrier>       07/10/29 10:42:32

Modified files:
        src/core       : ProjectManager.cpp ProjectManager.h 
        src/traverso   : Traverso.cpp 

Log message:
        * Make project loading by clicking on project.tpf file work again

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/traverso/src/core/ProjectManager.cpp?cvsroot=traverso&r1=1.47&r2=1.48
http://cvs.savannah.gnu.org/viewcvs/traverso/src/core/ProjectManager.h?cvsroot=traverso&r1=1.21&r2=1.22
http://cvs.savannah.gnu.org/viewcvs/traverso/src/traverso/Traverso.cpp?cvsroot=traverso&r1=1.49&r2=1.50

Patches:
Index: core/ProjectManager.cpp
===================================================================
RCS file: /sources/traverso/traverso/src/core/ProjectManager.cpp,v
retrieving revision 1.47
retrieving revision 1.48
diff -u -b -r1.47 -r1.48
--- core/ProjectManager.cpp     29 Oct 2007 09:38:20 -0000      1.47
+++ core/ProjectManager.cpp     29 Oct 2007 10:42:31 -0000      1.48
@@ -286,7 +286,7 @@
        return currentProject;
 }
 
-void ProjectManager::start(QString projectToLoad)
+void ProjectManager::start()
 {
        QString defaultpath = config().get_property("Project", 
"DefaultDirectory", "").toString();
        QString projects_path = config().get_property("Project", "directory", 
defaultpath).toString();
@@ -320,27 +320,19 @@
                } else {
                        info().information(tr("Created new Project directory 
for you here: %1\n").arg(newPath));
                }
+               
                QDir newdir(newPath);
                config().set_property("Project", "directory", 
newdir.canonicalPath());
        }
        
        bool loadProjectAtStartUp = config().get_property("Project", 
"loadLastUsed", 1).toBool();
 
-       if (loadProjectAtStartUp || !(projectToLoad.isEmpty())) {
-               if (!projectToLoad.isEmpty()) {
-                       int splitpoint = projectToLoad.lastIndexOf("/");
-                       QString dirpath = projectToLoad.left(splitpoint);
-                       int splitpoint2 = dirpath.lastIndexOf("/") + 1;
-                       projectToLoad = dirpath.right(splitpoint - splitpoint2);
-                       dirpath = dir.remove(projectToLoad);
-                       QDir dir(dirpath);
-                       config().set_property("Project", "directory", 
dir.canonicalPath());
-               } else {
-                       projectToLoad = config().get_property("Project", 
"current", "").toString();
-               }
+       if (loadProjectAtStartUp) {
+               QString projectToLoad = config().get_property("Project", 
"current", "").toString();
 
-               if ( projectToLoad.isNull() || projectToLoad.isEmpty() )
+               if (projectToLoad.isNull() || projectToLoad.isEmpty()) {
                        projectToLoad="Untitled";
+               }
 
                if (project_exists(projectToLoad)) {
                        load_project(projectToLoad);
@@ -364,6 +356,14 @@
        }
 }
 
+void ProjectManager::start(const QString & basepath, const QString & 
projectname)
+{
+       config().set_property("Project", "directory", basepath);
+       
+       if (project_exists(projectname)) {
+               load_project(projectname);
+       }
+}
 
 QUndoGroup* ProjectManager::get_undogroup() const
 {
@@ -628,4 +628,3 @@
        
        return 1;
 }
-

Index: core/ProjectManager.h
===================================================================
RCS file: /sources/traverso/traverso/src/core/ProjectManager.h,v
retrieving revision 1.21
retrieving revision 1.22
diff -u -b -r1.21 -r1.22
--- core/ProjectManager.h       10 Oct 2007 16:41:57 -0000      1.21
+++ core/ProjectManager.h       29 Oct 2007 10:42:31 -0000      1.22
@@ -70,10 +70,10 @@
        Project* get_project();
        QUndoGroup* get_undogroup() const;
 
+       void start();
+       void start(const QString& basepath, const QString& projectname);
 
 public slots:
-       void start(QString projectToLoad);
-       
        Command* save_project();
        Command* exit();
        Command* undo();

Index: traverso/Traverso.cpp
===================================================================
RCS file: /sources/traverso/traverso/src/traverso/Traverso.cpp,v
retrieving revision 1.49
retrieving revision 1.50
diff -u -b -r1.49 -r1.50
--- traverso/Traverso.cpp       29 Oct 2007 08:46:02 -0000      1.49
+++ traverso/Traverso.cpp       29 Oct 2007 10:42:31 -0000      1.50
@@ -121,21 +121,42 @@
        config().save();
 }
 
-
+#include <QFileInfo>
+#include <QDir>
 void Traverso::create_interface( )
 {
        themer()->load();
        Interface* iface = Interface::instance();
        prepare_audio_device();
        iface->show();
-       QString projectToLoad;
+       
+       QString projectToLoad = "";
+       
        foreach(QString string, QCoreApplication::arguments ()) {
                if (string.contains("project.tpf")) {
                        projectToLoad = string;
                        break;
                }
        }
-       pm().start(projectToLoad);
+       
+       // The user clicked on a project.tpf file, start extracting the 
+       // baseproject directory, and the project name from the filename.
+       if (!projectToLoad.isEmpty()) {
+               QFileInfo fi(projectToLoad);
+               QDir projectdir(fi.path());
+               QDir baseprojectdir(fi.path());
+               baseprojectdir.cdUp();
+               QString baseprojectdirpath = baseprojectdir.path();
+               QString projectdirpath = projectdir.path();
+               QString projectname = 
projectdirpath.mid(baseprojectdirpath.length() + 1, projectdirpath.length());
+               
+               if (!projectname.isEmpty() && ! baseprojectdirpath.isEmpty()) {
+                       pm().start(baseprojectdirpath, projectname);
+                       return;
+               }
+       }
+       
+       pm().start();
 }
 
 void Traverso::shutdown( int signal )




reply via email to

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