Author Topic: Script C::B  (Read 16717 times)

Offline Jenna

  • Administrator
  • Lives here!
  • *****
  • Posts: 7255
Re: Script C::B
« Reply #15 on: December 07, 2011, 03:17:40 pm »
FilesList * ProjectBuildTarget::GetFilesList() seems not to work. It was implemented in svn r1433, but m_Files (the member-variable, that is returned) was never filled as far as I can see after a quick look.
It's only used in Export targets as project, if I see correctly, and I nevr used this option, so I do not know, if it ever worked as expected.

It looks quite confusing, but I think you'll find that m_Files in ProjectBuildTarget is filled by the project loader when the targets are built by ProjectFile.

I found this and have fixed the export_target_to_project-function (this was indeed broken after switching to wxHashSet, stupid comparison-error) in trunk in the meantime.

@LETARTARE (and of course everybody who is interested):
Can you please test the attached patch ?

It reimplements GetFile(index) for projects and implements it for (projectbuild-)targets.
To get the buildtargets of a projectfile, I use your first approach (the same way it is doen for compilerVar).

I only tested it with the make_dist.script until now (no time at the moment).

EDIT:
Patch updated: http://forums.codeblocks.org/index.php/topic,15596.msg105399.html#msg105399
« Last Edit: December 13, 2011, 12:06:26 am by jens »

Offline LETARTARE

  • Lives here!
  • ****
  • Posts: 531
  • L'ami de l'homme.The friend of man.
    • LETARTARE
Re: Script C::B
« Reply #16 on: December 07, 2011, 03:20:45 pm »
thanks
I try ...
CB-13483, plugins-sdk-2.25.0 : Collector-2.0.0, AddOnForQt-3.9.1
1-Win7 Business Pack1 64bits : wx-3.2.4, gcc-8.1.0,
2-OpenSuse::Leap-15.4-64bits : wx-3.2.4;gtk3, gcc-8.2.1,
=> !! The messages are translated by Deepl

Offline LETARTARE

  • Lives here!
  • ****
  • Posts: 531
  • L'ami de l'homme.The friend of man.
    • LETARTARE
Re: Script C::B
« Reply #17 on: December 08, 2011, 01:05:15 pm »
tested with /
Vista Basic Pack 2?  Mingw32 with TDM-GCC 4.4/4.5 Series
Code:: Blocks  SVN 7620


===> 'Int ProjectBuildTarget::GetFilesCount ()' <===
===> 'ProjectFile * ProjectBuildTarget::GetFile (int)' <===
using the script 'lisfilestarget.script' as follows:

Code
///-----------------------------------------------------------------------------
/// use new methods (patch 'reimplement_GetFile_index_20111207-1.patch')
/// ===> 'int ProjectBuildTarget::GetFilesCount()' <===
///  ===> 'ProjectFile * ProjectBuildTarget::GetFile(int)' <===
///  svn in 7887 .. 7600
///-----------------------------------------------------------------------------

///-----------------------------------------------------------------------------
/// display all files targets
// affiche tous les fichiers de chaque cible
///-----------------------------------------------------------------------------
class DisplayAllFilesTargets extends cbScriptPlugin {
/// members
// membres
VERSION = _T("0.3.0");
///-----------------------------------------------------------------------------
/// mandatory to init script plugin
// obligatoire pour initialiser le script d'extension
///-----------------------------------------------------------------------------
constructor() {
/// constructor base class
// constructeur de la classe de base
cbScriptPlugin.constructor();
/// setup the plugin's info
// les informations de l'extension
info.name = _T("DisplayAllFilesTargets");
info.title = _("Display files targets");
info.version = VERSION;
info.license = _T("GPL");
}
///-----------------------------------------------------------------------------
/// to create context menu entries
// pour créer les entrées du menu de contexte
///-----------------------------------------------------------------------------
function GetModuleMenu(who, data) {
local entries = ::wxArrayString();
   if (who == ::mtProjectManager)   {
            entries.Add(_("Display files targets"), 1);
   }
return entries;
}
///-----------------------------------------------------------------------------
/// calback for context menu items clicking
// évènement lors d'une action sur les entrées du menu de contexte
///-----------------------------------------------------------------------------
function OnModuleMenuClicked(index) {
main();
}
///-----------------------------------------------------------------------------
///displays all files of each target on script console
// affiche dans la console de script, les fichiers de chaque cible
///-----------------------------------------------------------------------------
function main() {
/// general
local Project = GetProjectManager().GetActiveProject();
local Ntargets = Project.GetBuildTargetsCount() ;
//----------------------------------------------
/// file relative name
// le nom relatif d'un fichier
local file;
local target;
local nfiles;
local i=0;
/// informations
local Mes = _T("Project : '") + Project.GetTitle() + _T("' : ") ;
Mes += Project.GetFilesCount().tostring() + _T(" files, ") ;
Mes +=  Ntargets.tostring() + _T(" targets : ") ;
::print(Mes );
/// all project targets
// toutes les cibles du projet
for (local ti=0; ti < Ntargets ; ti++ ) {
target = Project.GetBuildTarget(ti) ;
Mes = _T("\nTarget ") + ti.tostring() + _T(" : '") ;
Mes += target.GetFullTitle() + _T("'") ;
::print(Mes);
///------------- patch to 'ProjectBuildTarget' class ---------------------------
nfiles = target.GetFilesCount();
///-----------------------------------------------------------------------------
/// all files target
// tous les fichiers d'une cible
for (local nf =0 ; nf < nfiles ; nf++) {
///------------- patch to 'ProjectBuildTarget' class ---------------------------
file = target.GetFile(nf).relativeFilename;;
///-----------------------------------------------------------------------------
::print (_T("   ") + nf.tostring() + _T(" : '") + file + _T("'"));
i++;
}
}
::print(_T("\nTotal files associated to targets : ") + i.tostring());
}
///-----------------------------------------------------------------------------

} /// class end

///-----------------------------------------------------------------------------
/// this call actually registers the script plugin with Code::Blocks
// register le script d'extension dans Code::Blocks
///-----------------------------------------------------------------------------
RegisterPlugin(DisplayAllFilesTargets());
///-----------------------------------------------------------------------------
===> 'ProjectFile * cbProject::GetFile (int)' <===
using 'make_dist.script' and 'find_broken_files.script'
works very well.

« Last Edit: December 08, 2011, 01:08:56 pm by LETARTARE »
CB-13483, plugins-sdk-2.25.0 : Collector-2.0.0, AddOnForQt-3.9.1
1-Win7 Business Pack1 64bits : wx-3.2.4, gcc-8.1.0,
2-OpenSuse::Leap-15.4-64bits : wx-3.2.4;gtk3, gcc-8.2.1,
=> !! The messages are translated by Deepl

Offline LETARTARE

  • Lives here!
  • ****
  • Posts: 531
  • L'ami de l'homme.The friend of man.
    • LETARTARE
Re: Script C::B
« Reply #18 on: December 08, 2011, 01:11:30 pm »
 I forgot 'wxArrayString ProjectFile::buildtargets', I go back!
CB-13483, plugins-sdk-2.25.0 : Collector-2.0.0, AddOnForQt-3.9.1
1-Win7 Business Pack1 64bits : wx-3.2.4, gcc-8.1.0,
2-OpenSuse::Leap-15.4-64bits : wx-3.2.4;gtk3, gcc-8.2.1,
=> !! The messages are translated by Deepl

Offline LETARTARE

  • Lives here!
  • ****
  • Posts: 531
  • L'ami de l'homme.The friend of man.
    • LETARTARE
Re: Script C::B
« Reply #19 on: December 08, 2011, 03:02:28 pm »
Here is the test forgot ...

===> 'ProjectFile * cbProject::GetFile int()' <===
===> 'wxArrayString ProjectFile.buildTargets' <===
using the script 'lisfilesproject.script' as follows:
Code
/*******************************************************************************
 * Name:      listfilesproject.script
 * Purpose:   Script plugin in CODE::BLOCKS
 * Author:    LETARTARE (http://forums.codeblocks.org)
 * Created:   2011-12-08
 * Version    0.3.0
 * Copyright: LETARTARE
 * License:   GPL
 ******************************************************************************/

///-----------------------------------------------------------------------------
/// use new methods (patch 'reimplement_GetFile_index_20111207-1.patch')
/// ===> 'ProjectFile * cbProject::GetFile(int)' <===
/// ===> 'wxArrayString ProjectFile::buildTargets' <===
///  svn in 7888 .. 7600
///-----------------------------------------------------------------------------

///-----------------------------------------------------------------------------
/// display all files projects with cibles
// affiche tous les fichiers avec leurs cibles
///-----------------------------------------------------------------------------
class DisplayAllFilesProject extends cbScriptPlugin {
/// members
// membres
VERSION = _T("0.3.0");
///-----------------------------------------------------------------------------
/// mandatory to init script plugin
// obligatoire pour initialiser le script d'extension
///-----------------------------------------------------------------------------
constructor() {
/// constructor base class
// constructeur de la classe de base
cbScriptPlugin.constructor();
/// setup the plugin's info
// les informations de l'extension
info.name = _T("DisplayAllFilesProject");
info.title = _("Display files project");
info.version = VERSION;
info.license = _T("GPL");
}
///-----------------------------------------------------------------------------
/// to create context menu entries
// pour créer les entrées du menu de contexte
///-----------------------------------------------------------------------------
function GetModuleMenu(who, data) {
local entries = ::wxArrayString();
    if (who == ::mtProjectManager)   {
            entries.Add(_("Display files project"), 1);
    }
return entries;
}
///-----------------------------------------------------------------------------
/// calback for context menu items clicking
// évènement lors d'une action sur les entrées du menu de contexte
///-----------------------------------------------------------------------------
function OnModuleMenuClicked(index) {
main();
}
///-----------------------------------------------------------------------------
///displays all files of each target on script console
// affiche dans la console de script, les fichiers de chaque cible
///-----------------------------------------------------------------------------
function main() {
/// general
local Project = GetProjectManager().GetActiveProject();
local Ntargets = Project.GetBuildTargetsCount() ;
local Nf = Project.GetFilesCount();
//----------------------------------------------
/// file relative name
local name;
/// informations
local Mes = _T("Project : '") + Project.GetTitle() + _T("' : ") ;
Mes += Nf.tostring() + _T(" files, ") ;
Mes +=  Ntargets.tostring() + _T(" targets : ") ;
::print(Mes );
/// array targets
local tabtargets;
local nt;
local target;
local prjfile;
// all files
for (local u =0 ; u < Nf; u++ ) {
///------------------ patch to 'Project' class ---------------------------------
prjfile = Project.GetFile(u);
///-----------------------------------------------------------------------------
name = prjfile.relativeFilename
/// copy
///----------------- patch to 'ProjectFile' class ------------------------------
tabtargets = prjfile.buildTargets;
///-----------------------------------------------------------------------------
nt = tabtargets.GetCount();
Mes = u.tostring() + _T("- '") + name + _T("'") ;
Mes += _T(" is linked to ") + nt.tostring() + _T(" target(s)")
::print(Mes);
Mes = _T("");
/// all file targets
for (local t=0; t < nt; t++) {
target = tabtargets.Item(t);
Mes += _T(" '")+  target + _T("',") ;
}
::print (Mes);
}
}
///-----------------------------------------------------------------------------
} /// class end

///-----------------------------------------------------------------------------
/// this call actually registers the script plugin with Code::Blocks
// register le script d'extension dans Code::Blocks
///-----------------------------------------------------------------------------
RegisterPlugin(DisplayAllFilesProject());
///-----------------------------------------------------------------------------

everything is working properly.

@jens
How do svn <= 7587 (at least for release 10.05 and svn7550) ?

secondly, why allow access directly to the attributes of 'ProjectFile'?
why not use access methods such as 'GetBuildTargets ()' or 'GetRelativeFilename' because the user does not have to change these variables?


CB-13483, plugins-sdk-2.25.0 : Collector-2.0.0, AddOnForQt-3.9.1
1-Win7 Business Pack1 64bits : wx-3.2.4, gcc-8.1.0,
2-OpenSuse::Leap-15.4-64bits : wx-3.2.4;gtk3, gcc-8.2.1,
=> !! The messages are translated by Deepl

Offline LETARTARE

  • Lives here!
  • ****
  • Posts: 531
  • L'ami de l'homme.The friend of man.
    • LETARTARE
Re: Script C::B
« Reply #20 on: December 12, 2011, 08:08:08 am »
@jens
I'm sorry, but my previous tests were incomplete.
both methods :
Quote
 ===> 'int ProjectBuildTarget::GetFilesCount ()' <===
  ===> 'ProjectFile * ProjectBuildTarget::GetFile (int)' <===
do not work properly.
I used a very simple project with a file 'main.cpp' and two targets
here's the result at the beginning (with my plugin script )
Quote
Project : 'wxProjetVide' : 1 files, 2 targets :

Target 0 : 'wxProjetVide - Release'
   0 : 'main.cpp'

Target 1 : 'wxProjetVide - Debug'
   0 : 'main.cpp'

Total files associated to targets : 2
then I delete the 'main.cpp and add it again', the result: two 'main.cpp'!
Quote
Total files associated to targets : 2
Project : 'wxProjetVide' : 1 files, 2 targets :

Target 0 : 'wxProjetVide - Release'
   0 : 'main.cpp'
   1 : 'main.cpp'

Target 1 : 'wxProjetVide - Debug'
   0 : 'main.cpp'
   1 : 'main.cpp'

Total files associated to targets : 4
it is a fantastic result. I think they do not like 'HASH'!
enough joking, I apologize for any inconvenience.
CB-13483, plugins-sdk-2.25.0 : Collector-2.0.0, AddOnForQt-3.9.1
1-Win7 Business Pack1 64bits : wx-3.2.4, gcc-8.1.0,
2-OpenSuse::Leap-15.4-64bits : wx-3.2.4;gtk3, gcc-8.2.1,
=> !! The messages are translated by Deepl

Offline Jenna

  • Administrator
  • Lives here!
  • *****
  • Posts: 7255
Re: Script C::B
« Reply #21 on: December 13, 2011, 12:03:19 am »
@jens
I'm sorry, but my previous tests were incomplete.
both methods :
Quote
 ===> 'int ProjectBuildTarget::GetFilesCount ()' <===
  ===> 'ProjectFile * ProjectBuildTarget::GetFile (int)' <===
do not work properly.
I used a very simple project with a file 'main.cpp' and two targets
here's the result at the beginning (with my plugin script )

I have seen it already.

The attached patch should fix this (and similar issues).

Offline MortenMacFly

  • Administrator
  • Lives here!
  • *****
  • Posts: 9694
Re: Script C::B
« Reply #22 on: December 13, 2011, 07:16:46 am »
The attached patch should fix this (and similar issues).
I don't know what's wrong again. While the latest patches of you did work, these two show an error: "Chunk info expected". :-( I even tried to convert them to Windows line-feed etc... it doesn't help.

Did you do something different this time?
Compiler logging: Settings->Compiler & Debugger->tab "Other"->Compiler logging="Full command line"
C::B Manual: https://www.codeblocks.org/docs/main_codeblocks_en.html
C::B FAQ: https://wiki.codeblocks.org/index.php?title=FAQ

Offline Jenna

  • Administrator
  • Lives here!
  • *****
  • Posts: 7255
Re: Script C::B
« Reply #23 on: December 13, 2011, 01:26:31 pm »
The attached patch should fix this (and similar issues).
I don't know what's wrong again. While the latest patches of you did work, these two show an error: "Chunk info expected". :-( I even tried to convert them to Windows line-feed etc... it doesn't help.

Did you do something different this time?
I just tested it with TortoiseSVN (1.7.1) on XP and it works without any errors.

Offline LETARTARE

  • Lives here!
  • ****
  • Posts: 531
  • L'ami de l'homme.The friend of man.
    • LETARTARE
Re: Script C::B
« Reply #24 on: December 13, 2011, 03:28:06 pm »
with the two previous scripts plugin.
I just tested it with svn 7633 and it works without any errors.
CB-13483, plugins-sdk-2.25.0 : Collector-2.0.0, AddOnForQt-3.9.1
1-Win7 Business Pack1 64bits : wx-3.2.4, gcc-8.1.0,
2-OpenSuse::Leap-15.4-64bits : wx-3.2.4;gtk3, gcc-8.2.1,
=> !! The messages are translated by Deepl

Offline Jenna

  • Administrator
  • Lives here!
  • *****
  • Posts: 7255
Re: Script C::B
« Reply #25 on: December 17, 2011, 02:55:55 pm »
with the two previous scripts plugin.
I just tested it with svn 7633 and it works without any errors.
I just committed the patch in svn r7639 .

Offline LETARTARE

  • Lives here!
  • ****
  • Posts: 531
  • L'ami de l'homme.The friend of man.
    • LETARTARE
Re: Script C::B
« Reply #26 on: December 17, 2011, 03:04:11 pm »
Quote
I just committed the patch in svn r7639 .
I care and I test svn 7639
I wrote the equivalent for svn <7588.
CB-13483, plugins-sdk-2.25.0 : Collector-2.0.0, AddOnForQt-3.9.1
1-Win7 Business Pack1 64bits : wx-3.2.4, gcc-8.1.0,
2-OpenSuse::Leap-15.4-64bits : wx-3.2.4;gtk3, gcc-8.2.1,
=> !! The messages are translated by Deepl

Offline LETARTARE

  • Lives here!
  • ****
  • Posts: 531
  • L'ami de l'homme.The friend of man.
    • LETARTARE
Re: Script C::B
« Reply #27 on: December 19, 2011, 01:35:55 pm »
Quote
I care and I test svn 7639
big thank you to 'jens' for the work done (days have 72 hours!)

My test results on r7639 :

I check 'wxArrayString ProjectFile::buildTargets'  and  'ProjectFile * cbProject::GetFile(int)'
with  script plugin : 'listfilesproject.script'
Code
/*******************************************************************************
 * Name:      listfilesproject.script
 * Purpose:   Script plugin in CODE::BLOCKS
 * Author:    LETARTARE (http://forums.codeblocks.org)
 * Created:   2011-12-17
 * Version    0.4.0
 * Copyright: LETARTARE
 * License:   GPL
 ******************************************************************************/
/// ATTENTION
///-----------------------------------------------------------------------------
/// ** for svn r7639 ** (by 'jens')
///-----------------------------------------------------------------------------
///  ** for svn in r7588..r7639 **, 'GetFile(int)' was deleted !!!
/// patch 'reimplement_GetFile_index_20111212-1.patch' in r7639 (by 'jens')
/// this script use new methods of patch:
/// use, add ====> 'wxArrayString ProjectFile::buildTargets' <==== use
///   add => 'int ProjectBuildTarget::GetFilesCount()' <=
/// add => 'ProjectFile* ProjectBuildTarget* GetFile(int)' <=
/// use, add ====> 'ProjectFile * cbProject::GetFile(int)'   <==== use
///-----------------------------------------------------------------------------
///  ** for svn < r7588 **  (release 10.05, svn7550, ..)
/// no official patch : 'projectbuildtarget_GetFiles.patch'
/// this script use one new method of patch :
/// use, add ====> 'wxArrayString ProjectFile::buildTargets' <==== use
/// add => 'int ProjectBuildTarget::GetFilesCount()' <=
/// add => 'ProjectFile* ProjectBuildTarget* GetFile(int)' <=
///-----------------------------------------------------------------------------

///-----------------------------------------------------------------------------
/// display all files projects with cibles
///-----------------------------------------------------------------------------
class DisplayAllFilesProject extends cbScriptPlugin {
/// members
// membres
VERSION = _T("0.4.0");
///-----------------------------------------------------------------------------
/// mandatory to init script plugin
///-----------------------------------------------------------------------------
constructor() {
/// constructor base class
cbScriptPlugin.constructor();
/// setup the plugin's info
info.name = _T("DisplayAllFilesProject");
info.title = _("Display files project");
info.version = VERSION;
info.license = _T("GPL");
}
///-----------------------------------------------------------------------------
/// to create context menu entries
///-----------------------------------------------------------------------------
function GetModuleMenu(who, data) {
local entries = ::wxArrayString();
   if (who == ::mtProjectManager)   {
            entries.Add(_("Display files project"), 1);
   }
return entries;
}
///-----------------------------------------------------------------------------
/// calback for context menu items clicking
///-----------------------------------------------------------------------------
function OnModuleMenuClicked(index) {
main();
}
///-----------------------------------------------------------------------------
///displays all files of each target on script console
///-----------------------------------------------------------------------------
function main() {
/// general
local Project = GetProjectManager().GetActiveProject();
local Ntargets = Project.GetBuildTargetsCount() ;
local Nf = Project.GetFilesCount();
//----------------------------------------------
/// file relative name
local name;
/// informations
local Mes = _T("Project : '") + Project.GetTitle() + _T("' : ") ;
Mes += Nf.tostring() + _T(" files, ") ;
Mes +=  Ntargets.tostring() + _T(" targets : ") ;
::print(Mes );
/// array targets
local tabtargets;
local nt;
local target;
local prjfile;
/// all files
for (local u =0 ; u < Nf; u++ ) {
///-- only >= r7588------ patch to 'Project' class -----------------------------
prjfile = Project.GetFile(u);
///-----------------------------------------------------------------------------
name = prjfile.relativeFilename
/// copy
///-------------------- patch to 'ProjectFile' class ---------------------------
tabtargets = prjfile.buildTargets;
///-----------------------------------------------------------------------------
nt = tabtargets.GetCount();
Mes = u.tostring() + _T("- '") + name + _T("'") ;
Mes += _T(" is linked to ") + nt.tostring() + _T(" target(s)")
::print(Mes);
Mes = _T("");
/// all file targets
for (local t=0; t < nt; t++) {
target = tabtargets.Item(t);
Mes += _T(" '")+  target + _T("',") ;
}
::print (Mes);
}
} /// end main()

} /// class end
///-----------------------------------------------------------------------------
/// this call actually registers the script plugin with Code::Blocks
///-----------------------------------------------------------------------------
RegisterPlugin(DisplayAllFilesProject());
///-----------------------------------------------------------------------------
no problem using the methods.

I check 'int ProjectBuildTarget::GetFilesCount()'  and  'ProjectFile* ProjectBuildTarget* GetFile(int)'
with  script plugin : 'listfilestargets.script' :
Code
/*******************************************************************************
 * Name:      listfilestargets.script
 * Purpose:   Script plugin in CODE::BLOCKS
 * Author:    LETARTARE (http://forums.codeblocks.org)
 * Created:   2011-12-17
 * Version    0.5.0
 * Copyright: LETARTARE
 * License:   GPL
 ******************************************************************************/
/// ATTENTION
///-----------------------------------------------------------------------------
/// ** for svn r7639 ** (by 'jens')
///-----------------------------------------------------------------------------
///  ** for svn in r7588..r7639 **, 'GetFile(int)' was deleted !!!
/// patch 'reimplement_GetFile_index_20111212-1.patch' in r7639 (by 'jens')
/// this script use two new methods of patch :
///   add => 'wxArrayString ProjectFile::buildTargets' <=
/// use, add ====> 'int ProjectBuildTarget::GetFilesCount()' <====
/// use, add ====> 'ProjectFile* ProjectBuildTarget* GetFile(int)' <====
///   add => 'ProjectFile * cbProject::GetFile(int)'   <=
///-----------------------------------------------------------------------------
///  ** for svn < r7588 **  (release 10.05, svn7550, ..)
/// no official patch : 'projectbuildtarget_GetFiles.patch'
/// this script use two new methods of patch :
/// add => 'wxArrayString ProjectFile::buildTargets' <===
/// use, add ====> 'int ProjectBuildTarget::GetFilesCount()' <==== use
/// use, add ====> 'ProjectFile* ProjectBuildTarget* GetFile(int)' <==== use
///-----------------------------------------------------------------------------

///-----------------------------------------------------------------------------
/// display all files targets
///-----------------------------------------------------------------------------
class DisplayAllFilesTargets extends cbScriptPlugin {
/// members
VERSION = _T("0.5.0");
///-----------------------------------------------------------------------------
/// mandatory to init script plugin
///-----------------------------------------------------------------------------
constructor() {
/// constructor base class
cbScriptPlugin.constructor();
/// setup the plugin's info
info.name = _T("DisplayAllFilesTargets");
info.title = _("Display files targets");
info.version = VERSION;
info.license = _T("GPL");
}
///-----------------------------------------------------------------------------
/// to create context menu entries
///-----------------------------------------------------------------------------
function GetModuleMenu(who, data) {
local entries = ::wxArrayString();
   if (who == ::mtProjectManager)   {
            entries.Add(_("Display files targets only"), 1);
   }
return entries;
}
///-----------------------------------------------------------------------------
/// calback for context menu items clicking
///-----------------------------------------------------------------------------
function OnModuleMenuClicked(index) {
main();
}
///-----------------------------------------------------------------------------
///displays all files of each target on script console
///-----------------------------------------------------------------------------
function main() {
/// general
local Project = GetProjectManager().GetActiveProject();
if (IsNull(Project)) {
ShowError( _("Currently no project is loaded/activated. Cannot continue.") );
return 0;
}
local Ntargets = Project.GetBuildTargetsCount() ;
if (Ntargets == 0) {
ShowError( _("No target in this project. Cannot continue.") );
return 0;
}
local Nfiles = Project.GetFilesCount() ;
if (Nfiles == 0) {
ShowError( _("No file in this project. Cannot continue.") );
return 0;
}
/// file relative name
local file;
local target;
local nfilestarget;
local i=0;
/// informations
local Mes = _T("Project : '") + Project.GetTitle() + _T("' : ") ;
Mes += Nfiles.tostring() + _T(" files, ") ;
Mes +=  Ntargets.tostring() + _T(" targets : ") ;
::print(Mes );
/// all project targets
for (local ti=0; ti < Ntargets ; ti++ ) {
target = Project.GetBuildTarget(ti) ;
Mes = _T("\nTarget ") + ti.tostring() + _T(" : '") ;
Mes += target.GetFullTitle() + _T("'") ;
::print(Mes);
///------------- patch to 'ProjectBuildTarget' class ---------------------------
nfilestarget = target.GetFilesCount();
///-----------------------------------------------------------------------------
if (nfilestarget == 0)
continue;
/// all files target
for (local nf =0 ; nf < nfilestarget ; nf++) {
///------------- patch to 'ProjectBuildTarget' class ---------------------------
file = target.GetFile(nf).relativeFilename;;
///-----------------------------------------------------------------------------
::print (_T("   ") + nf.tostring() + _T(" : '") + file + _T("'"));
i++;
}
}
::print(_T("\nTotal files associated to targets : ") + i.tostring());
} /// end main()

} /// class end
///-----------------------------------------------------------------------------
/// this call actually registers the script plugin with Code::Blocks
///-----------------------------------------------------------------------------
RegisterPlugin(DisplayAllFilesTargets());
///-----------------------------------------------------------------------------
no problem using the methods.

As against the testing of a large project C::B (eg svn 7550) shows a display in the console, which blocks 2 to 3 seconds (at about 2 / 3) and then restarts !

This anomaly does not occur in  r7550 and r6283 (adjusted with patch personnal).

I guess it comes from the refresh of the window ?
Perhaps he should open another topic ?

« Last Edit: December 19, 2011, 03:49:27 pm by LETARTARE »
CB-13483, plugins-sdk-2.25.0 : Collector-2.0.0, AddOnForQt-3.9.1
1-Win7 Business Pack1 64bits : wx-3.2.4, gcc-8.1.0,
2-OpenSuse::Leap-15.4-64bits : wx-3.2.4;gtk3, gcc-8.2.1,
=> !! The messages are translated by Deepl