~ubuntu-branches/ubuntu/raring/codeblocks/raring-proposed

« back to all changes in this revision

Viewing changes to src/sdk/projectfile.cpp

  • Committer: Bazaar Package Importer
  • Author(s): Cosme Domínguez Díaz
  • Date: 2010-08-09 04:38:38 UTC
  • mfrom: (1.1.1 upstream)
  • mto: This revision was merged to the branch mainline in revision 4.
  • Revision ID: james.westby@ubuntu.com-20100809043838-a59ygguym4eg0jgw
Tags: 10.05-0ubuntu1
* New upstream release. Closes (LP: #322350)
 - Switch to dpkg-source 3.0 (quilt) format
 - Remove unneeded README.source
 - Add debian/get-source-orig script that removes all
   Windows prebuilt binaries
* Bump Standards-Version to 3.9.1
 - Stop shipping *.la files
* debian/control
 - Add cdbs package as Build-Depend
 - Add libbz2-dev and zlib1g-dev packages as
   Build-Depends (needed by libhelp_plugin.so)
 - Remove dpatch package of Build-Depends
 - Add codeblocks-contrib-debug package
 - Split architecture-independent files of codeblocks
   package in codeblocks-common package
* debian/rules
 - Switch to CDBS rules system
 - Add parallel build support
 - Add a call to debian/get-source-orig script
 - Use lzma compression (saves 23,5 MB of free space)
* debian/patches
 - Refresh 01_codeblocks_plugin_path
 - Add 02_no_Makefiles_in_debian_dir to remove any link
   in codeblocks build system to deleted Makefiles of debian directory
 - Drop 02_ftbfs_gcc44 and 03_ftbfs_glib221 (merged in upstream)
* debian/watch
 - Update to use the new host (berlios.de)

Show diffs side-by-side

added added

removed removed

Lines of Context:
2
2
 * This file is part of the Code::Blocks IDE and licensed under the GNU Lesser General Public License, version 3
3
3
 * http://www.gnu.org/licenses/lgpl-3.0.html
4
4
 *
5
 
 * $Revision: 4909 $
6
 
 * $Id: projectfile.cpp 4909 2008-02-27 13:15:26Z mortenmacfly $
7
 
 * $HeadURL: svn://svn.berlios.de/codeblocks/tags/8.02/src/sdk/projectfile.cpp $
 
5
 * $Revision: 6134 $
 
6
 * $Id: projectfile.cpp 6134 2010-02-03 17:43:56Z mortenmacfly $
 
7
 * $HeadURL: svn+ssh://jenslody@svn.berlios.de/svnroot/repos/codeblocks/trunk/src/sdk/projectfile.cpp $
8
8
 */
9
9
 
10
10
#include "sdk_precomp.h"
34
34
    editorPos(0),
35
35
    editorTopLine(0),
36
36
    editorTabPos(0),
37
 
    autoGeneratedBy(0),
 
37
    autoGeneratedBy(0),
38
38
    project(prj),
39
 
    m_VisualState(fvsNormal)
 
39
    m_VisualState(fvsNormal)
40
40
{
41
41
}
42
42
 
54
54
{
55
55
    wxString path = file.GetPath(wxPATH_GET_VOLUME | wxPATH_GET_SEPARATOR);
56
56
 
57
 
        file.Assign(path + new_name);
58
 
        relativeFilename = relativeFilename.BeforeLast(wxFILE_SEP_PATH);
59
 
        relativeFilename.IsEmpty() || relativeFilename.Append(wxFILE_SEP_PATH);
60
 
        relativeFilename.Append(new_name);
 
57
    file.Assign(path + new_name);
 
58
    relativeFilename = relativeFilename.BeforeLast(wxFILE_SEP_PATH);
 
59
    if (!relativeFilename.IsEmpty())
 
60
    {
 
61
        relativeFilename.Append(wxFILE_SEP_PATH);
 
62
    }
 
63
    relativeFilename.Append(new_name);
61
64
 
62
 
        UpdateFileDetails();
63
 
        if (project)
64
 
        {
65
 
                project->ProjectFileRenamed(this);
66
 
                project->CalculateCommonTopLevelPath();
67
 
                project->SetModified(true);
68
 
        }
 
65
    if (project)
 
66
    {
 
67
        project->ProjectFileRenamed(this);
 
68
        project->CalculateCommonTopLevelPath();
 
69
        project->SetModified(true);
 
70
    }
 
71
    UpdateFileDetails();
69
72
}
70
73
 
71
74
void ProjectFile::AddBuildTarget(const wxString& targetName)
72
 
{
 
75
{
73
76
    if (buildTargets.Index(targetName) == wxNOT_FOUND)
74
77
        buildTargets.Add(targetName);
75
78
 
79
82
        ProjectBuildTarget* target = project->GetBuildTarget(targetName);
80
83
        if (target && !target->m_Files.Find(this))
81
84
            target->m_Files.Append(this);
82
 
    }
83
 
    
84
 
    // also do this for auto-generated files
85
 
    for (size_t i = 0; i < generatedFiles.size(); ++i)
86
 
                generatedFiles[i]->AddBuildTarget(targetName);
 
85
    }
 
86
 
 
87
    // also do this for auto-generated files
 
88
    for (size_t i = 0; i < generatedFiles.size(); ++i)
 
89
        generatedFiles[i]->AddBuildTarget(targetName);
87
90
}
88
91
 
89
92
void ProjectFile::RenameBuildTarget(const wxString& oldTargetName, const wxString& newTargetName)
91
94
    int idx = buildTargets.Index(oldTargetName);
92
95
    if (idx != wxNOT_FOUND)
93
96
        buildTargets[idx] = newTargetName;
94
 
 
95
 
    // also do this for auto-generated files
96
 
    for (size_t i = 0; i < generatedFiles.size(); ++i)
97
 
                generatedFiles[i]->RenameBuildTarget(oldTargetName, newTargetName);
 
97
 
 
98
    // also do this for auto-generated files
 
99
    for (size_t i = 0; i < generatedFiles.size(); ++i)
 
100
        generatedFiles[i]->RenameBuildTarget(oldTargetName, newTargetName);
98
101
}
99
102
 
100
103
void ProjectFile::RemoveBuildTarget(const wxString& targetName)
101
104
{
102
 
    buildTargets.Remove(targetName);
 
105
    int idx = buildTargets.Index(targetName);
 
106
    if (idx != wxNOT_FOUND)
 
107
        buildTargets.RemoveAt(idx);
103
108
 
104
109
    // remove this file from the target's list of files
105
110
    if (project)
112
117
                target->m_Files.Erase(node);
113
118
        }
114
119
    }
115
 
 
116
 
    // also do this for auto-generated files
117
 
    for (size_t i = 0; i < generatedFiles.size(); ++i)
118
 
                generatedFiles[i]->RemoveBuildTarget(targetName);
 
120
 
 
121
    // also do this for auto-generated files
 
122
    for (size_t i = 0; i < generatedFiles.size(); ++i)
 
123
        generatedFiles[i]->RemoveBuildTarget(targetName);
119
124
}
120
125
 
121
126
bool ProjectFile::ShowOptions(wxWindow* parent)
134
139
 
135
140
const wxString& ProjectFile::GetObjName()
136
141
{
137
 
        if (generatedFiles.size())
138
 
        {
139
 
                // for files generating other files,
140
 
                // report the first generated file's "object name"
141
 
                return generatedFiles[0]->GetObjName();
142
 
        }
143
 
 
 
142
    if (generatedFiles.size())
 
143
    {
 
144
        // for files generating other files,
 
145
        // report the first generated file's "object name"
 
146
        return generatedFiles[0]->GetObjName();
 
147
    }
 
148
 
144
149
    if (m_ObjName.IsEmpty())
145
150
        SetObjName(relativeToCommonTopLevelPath);
146
151
    return m_ObjName;
147
152
}
148
153
 
149
154
void ProjectFile::SetObjName(const wxString& name)
150
 
{
 
155
{
151
156
    bool extendedObjectNames = project->GetExtendedObjectNamesGeneration();
152
 
    wxFileName fname(name);
 
157
    wxFileName fname(name);
153
158
    m_ObjName = name;
154
159
    FileType ft = FileTypeOf(name);
155
160
    if (ft == ftResource || ft == ftResourceBin)
383
388
        if (pf->GetParentProject())
384
389
        {
385
390
            wxFileName fname(pf->relativeToCommonTopLevelPath);
386
 
                        if (pf->generatedFiles.size())
387
 
                        {
388
 
                                // for files generating other files,
389
 
                                // use the first generated file's "object name"
390
 
                                fname.Assign(pf->generatedFiles[0]->relativeToCommonTopLevelPath);
391
 
                        }
 
391
            if (pf->generatedFiles.size())
 
392
            {
 
393
                // for files generating other files,
 
394
                // use the first generated file's "object name"
 
395
                fname.Assign(pf->generatedFiles[0]->relativeToCommonTopLevelPath);
 
396
            }
392
397
            /* NOTE: In case the source file resides in a different volume
393
398
            * than the volume where project file is,
394
399
            * then the object file will be created as follows.