[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    branches/kdevelop/3.4/buildtools/qmake
From:       Andreas Pakulat <apaku () gmx ! de>
Date:       2006-10-31 23:56:11
Message-ID: 1162338971.451660.1653.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 600843 by apaku:

Fix handling of "SUBDIRS = foobar.pro", also allow to add foobar.pro via the gui


 M  +51 -34    scope.cpp  
 M  +14 -11    trollprojectwidget.cpp  
 M  +1 -1      trollprojectwidget.h  


--- branches/kdevelop/3.4/buildtools/qmake/scope.cpp #600842:600843
@@ -95,7 +95,7 @@
 Scope::Scope( Scope* parent, const QString& filename, TrollProjectPart* part, bool \
isEnabled )  : m_root( 0 ), m_incast( 0 ), m_parent( parent ), m_isEnabled( isEnabled \
), m_part(part)  {
-if ( !loadFromFile( filename ) )
+    if ( !loadFromFile( filename ) )
     {
         if( !QFileInfo( filename ).exists() )
         {
@@ -132,7 +132,7 @@
 
 bool Scope::loadFromFile( const QString& filename )
 {
-    if ( QMake::Driver::parseFile( filename, &m_root ) != 0 )
+    if ( !QFileInfo(filename).exists() || QMake::Driver::parseFile( filename, \
&m_root ) != 0 )  {
         kdDebug( 9024 ) << "Couldn't parse project: " << filename << endl;
         m_root = 0;
@@ -389,9 +389,12 @@
         return m_root->scopedID;
     else if ( m_root->isProject() )
     {
-        if( m_parent )
+        if( m_parent && QDir::cleanDirPath( m_parent->projectDir() ) != \
QDir::cleanDirPath( projectDir() ) )  {
             return getRelativePath( m_parent->projectDir(), projectDir() );
+        }else if ( m_parent && QDir::cleanDirPath( m_parent->projectDir() ) == \
QDir::cleanDirPath( projectDir() ) ) +        {
+            return fileName();
         }else
             return QFileInfo( projectDir() ).fileName() ;
     }
@@ -478,29 +481,33 @@
 
 }
 
-Scope* Scope::createSubProject( const QString& dir )
+Scope* Scope::createSubProject( const QString& projname )
 {
     if( !m_root )
         return 0;
 
-    if( variableValuesForOp( "SUBDIRS", "-=").contains( dir ) )
-        removeFromMinusOp( "SUBDIRS", dir );
+    if( variableValuesForOp( "SUBDIRS", "-=").contains( projname ) )
+        removeFromMinusOp( "SUBDIRS", projname );
 
     QDir curdir( projectDir() );
 
     if ( variableValues("TEMPLATE").contains( "subdirs" ) )
     {
-        if ( !curdir.exists( dir ) )
-            if ( !curdir.mkdir( dir ) )
-                return 0;
-        curdir.cd(dir);
         QString filename;
-        QStringList entries = curdir.entryList("*.pro", QDir::Files);
+        if( !projname.endsWith(".pro") )
+        {
+            if ( !curdir.exists( projname ) )
+                if ( !curdir.mkdir( projname ) )
+                    return 0;
+            curdir.cd( projname );
+            QStringList entries = curdir.entryList("*.pro", QDir::Files);
 
-        if ( !entries.isEmpty() && !entries.contains( curdir.dirName()+".pro" ) )
-            filename = curdir.absPath() + \
                QString(QChar(QDir::separator()))+entries.first();
-        else
-            filename = curdir.absPath() + \
QString(QChar(QDir::separator()))+curdir.dirName()+".pro"; +            if ( \
!entries.isEmpty() && !entries.contains( curdir.dirName()+".pro" ) ) +                \
filename = curdir.absPath() + QString(QChar(QDir::separator()))+entries.first(); +    \
else +                filename = curdir.absPath() + \
QString(QChar(QDir::separator()))+curdir.dirName()+".pro"; +        }else
+            filename = curdir.absPath() + QString(QChar(QDir::separator())) + \
projname;  
         kdDebug( 9024 ) << "Creating subproject with filename:" << filename << endl;
 
@@ -510,8 +517,8 @@
             if( s->variableValues("TEMPLATE").isEmpty() )
                 s->setEqualOp("TEMPLATE", QStringList("app"));
             s->saveToFile();
-            addToPlusOp( "SUBDIRS", QStringList( dir ) );
-            m_subProjects.insert( dir, s );
+            addToPlusOp( "SUBDIRS", QStringList( projname ) );
+            m_subProjects.insert( projname, s );
             return s;
         } else
         {
@@ -607,19 +614,22 @@
             if ( deleteSubdir )
             {
                 QDir projdir = QDir( projectDir() );
-                QDir subdir = QDir( projectDir() + QString( QChar( QDir::separator() \
                ) ) + dir );
-                if ( subdir.exists() )
+                if( !dir.endsWith(".pro") )
                 {
-                    QStringList entries = subdir.entryList();
-                    for ( QStringList::iterator eit = entries.begin() ; eit != \
entries.end() ; ++eit ) +                    QDir subdir = QDir( projectDir() + \
QString( QChar( QDir::separator() ) ) + dir ); +                    if ( \
subdir.exists() )  {
-                        if( *eit == "." || *eit == ".." )
-                            continue;
-                        if( !subdir.remove( *eit ) )
-                            kdDebug( 9024 ) << "Couldn't delete " << *eit << " from \
" << subdir.absPath() << endl; +                        QStringList entries = \
subdir.entryList(); +                        for ( QStringList::iterator eit = \
entries.begin() ; eit != entries.end() ; ++eit ) +                        {
+                            if( *eit == "." || *eit == ".." )
+                                continue;
+                            if( !subdir.remove( *eit ) )
+                                kdDebug( 9024 ) << "Couldn't delete " << *eit << " \
from " << subdir.absPath() << endl; +                        }
+                        if( !projdir.rmdir( dir ) )
+                            kdDebug( 9024 ) << "Couldn't delete " << dir << " from " \
<< projdir.absPath() << endl;  }
-                    if( !projdir.rmdir( dir ) )
-                        kdDebug( 9024 ) << "Couldn't delete " << dir << " from " << \
projdir.absPath() << endl;  }
             }
             Scope* project = m_subProjects[ dir ];
@@ -837,16 +847,23 @@
                 for ( QStringList::const_iterator sit = m->values.begin() ; sit != \
m->values.end(); ++sit )  {
                     QString str = *sit;
-                    if ( *sit == "\\\n" || *sit == "\n" || *sit == "." || *sit == \
"./" || (*sit).stripWhiteSpace() == "" ) +                    if ( str == "\\\n" || \
str == "\n" || str == "." || str == "./" || (str).stripWhiteSpace() == "" )  \
                continue;
-                    QDir subproject = QDir( projectDir() + QString( QChar( \
QDir::separator() ) ) + *sit, "*.pro", QDir::Name | QDir::IgnoreCase, QDir::Files ); \
+                    QDir subproject;  QString projectfile;
-                    if ( subproject.entryList().isEmpty() || \
                subproject.entryList().contains( *sit + ".pro" ) )
-                        projectfile = (*sit) + ".pro";
-                    else
-                        projectfile = subproject.entryList().first();
+                    if( str.endsWith(".pro") )
+                    {
+                        subproject = QDir( projectDir(), "*.pro", QDir::Name | \
QDir::IgnoreCase, QDir::Files ); +                        projectfile = str;
+                    }else
+                    {    subproject = QDir( projectDir() + QString( QChar( \
QDir::separator() ) ) + str, "*.pro", QDir::Name | QDir::IgnoreCase, QDir::Files ); + \
if ( subproject.entryList().isEmpty() || subproject.entryList().contains( *sit + \
".pro" ) ) +                            projectfile = (*sit) + ".pro";
+                        else
+                            projectfile = subproject.entryList().first();
+                    }
                     kdDebug( 9024 ) << "Parsing subproject: " << projectfile << \
                endl;
-                    m_subProjects.insert( *sit, new Scope( this, \
subproject.absFilePath( projectfile ), m_part, ( m->op != "-=" )) ); +                \
m_subProjects.insert( str, new Scope( this, subproject.absFilePath( projectfile ), \
m_part, ( m->op != "-=" )) );  }
             }
             else
--- branches/kdevelop/3.4/buildtools/qmake/trollprojectwidget.cpp #600842:600843
@@ -154,7 +154,7 @@
                          "external libraries,<br>build order,<br>intermediate files \
locations,<br>compiler options." ) );  
     // Project button connections
-    connect ( addSubdirButton, SIGNAL ( clicked () ), this, SLOT ( slotAddSubdir () \
) ); +    connect ( addSubdirButton, SIGNAL ( clicked () ), this, SLOT ( \
                slotAddSubproject () ) );
     connect ( createScopeButton, SIGNAL ( clicked () ), this, SLOT ( slotCreateScope \
() ) );  
 
@@ -772,7 +772,7 @@
     return ;
 }
 
-void TrollProjectWidget::slotAddSubdir( QMakeScopeItem *spitem )
+void TrollProjectWidget::slotAddSubproject( QMakeScopeItem *spitem )
 {
     if ( spitem == 0 && m_shownSubproject == 0 )
         return ;
@@ -781,8 +781,8 @@
 
     QString projectdir = spitem->scope->projectDir();
 
-    KURLRequesterDlg dialog( i18n( "Add Subdirectory" ), i18n( "Please enter a name \
                for the subdirectory: " ), this, 0 );
-    dialog.urlRequester() ->setMode( KFile::Directory | KFile::LocalOnly );
+    KURLRequesterDlg dialog( i18n( "Add Subproject" ), i18n( "Please enter a name \
for the subproject: " ), this, 0 ); +    dialog.urlRequester() ->setMode( \
KFile::Directory | KFile::Files | KFile::LocalOnly );  dialog.urlRequester() \
->setURL( QString::null );  dialog.urlRequester() ->completionObject() ->setDir( \
projectdir );  
@@ -796,16 +796,19 @@
 
         while( subdirname.endsWith( QString(QChar(QDir::separator())) ) )
             subdirname = subdirname.left(subdirname.length()-1);
-        kdDebug(9024) << "Cleaned subdirname: " << subdirname << endl;
-        QDir dir( projectdir );
-        if ( !dir.exists( subdirname ) )
+        if( !subdirname.endsWith(".pro") )
         {
-            if ( !dir.mkdir( subdirname ) )
+            kdDebug(9024) << "Cleaned subdirname: " << subdirname << endl;
+            QDir dir( projectdir );
+            if ( !dir.exists( subdirname ) )
             {
-                KMessageBox::error( this, i18n( "Failed to create subdirectory. "
+                if ( !dir.mkdir( subdirname ) )
+                {
+                    KMessageBox::error( this, i18n( "Failed to create subdirectory. \
                "
                                                 "Do you have write permission "
                                                 "in the project folder?" ) );
-                return ;
+                    return ;
+                }
             }
         }
 
@@ -958,7 +961,7 @@
     QString relpath = spitem->relativePath();
     if ( r == idAddSubproject )
     {
-        slotAddSubdir( spitem );
+        slotAddSubproject( spitem );
     }
     if ( r == idRemoveSubproject )
     {
--- branches/kdevelop/3.4/buildtools/qmake/trollprojectwidget.h #600842:600843
@@ -123,7 +123,7 @@
     void slotDetailsExecuted( QListViewItem *item );
     void slotDetailsContextMenu( KListView *, QListViewItem *item, const QPoint &p \
);  void slotExcludeFileFromScopeButton();
-    void slotAddSubdir( QMakeScopeItem *spitem = 0 );
+    void slotAddSubproject( QMakeScopeItem *spitem = 0 );
     void slotRemoveSubproject( QMakeScopeItem *spitem = 0 );
     void slotCreateScope( QMakeScopeItem *spitem = 0 );
     void slotRemoveScope( QMakeScopeItem *spitem = 0 );


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic