Here is a screenshot of the new project management tab : the SVNInside tree (http://img214.imageshack.us/img214/5954/svninsidetreezq3.jpg) | And i have a question to ask : i am trying to implement a way to block modifications on a file locked by another person. My wish is to add a msgbox when the cbEVT_EDITOR_MODIFIED event is sent that kind of file, asking for the user to choose among two options :
For the second option, i can't manage to undo the action just after the messazge box has been closed, i tried different ways : Code
And i tried this: Code
with no success, can someone help me about that ? |
Done !! you can go and get the source code at http://tools.assembla.com/svn/SVNInside (http://tools.assembla.com/svn/SVNInside).Nice work! The screenshot looks pretty nice, really! I am currently trying to compile. ;-) Hence I have two questions so far:
the only part of it which is non portable for the moment is the class i implement to read console output (under Win32 that's not an easy task). I think reading svn console output under linux (or any other platform) should be easier.
long wxExecute(const wxString& command, wxArrayString& output, int flags = 0)
Can you provide the project file?Done !! you can go and get the source code at http://tools.assembla.com/svn/SVNInside (http://tools.assembla.com/svn/SVNInside).Nice work! The screenshot looks pretty nice, really! I am currently trying to compile. ;-) Hence I have two questions so far:
1.) Why don't you provide the project files?! You stated in the log it's not needed, but why?!
Can you provide the project file?Done !! you can go and get the source code at http://tools.assembla.com/svn/SVNInside (http://tools.assembla.com/svn/SVNInside).Nice work! The screenshot looks pretty nice, really! I am currently trying to compile. ;-) Hence I have two questions so far:
1.) Why don't you provide the project files?! You stated in the log it's not needed, but why?!
1.) Why don't you provide the project files?! You stated in the log it's not needed, but why?!
2.) CSVNcommand.h and CSVNCommand.cpp differ in their case. While this doesn't matter on Windows it might be an ugly thing on Linux.
With regards, Morten.
Great job! :D
You can use a wxWidgets function named wxExecute to execute and read the output of console programs like you said. In that way you don't have to worry about making different code for different platforms.
Index: post_build_step.bat
===================================================================
--- post_build_step.bat (revision 5)
+++ post_build_step.bat (working copy)
@@ -1,10 +1,7 @@
-f:
-cd\
-cd "dev\CBPlugins\SVNInside_svn\trunk"
zip -j9 -r SVNInside.zip resources\manifest.xml resources\*.xrc
cd resources
zip -0 -q ../SVNInside.zip images\*.ico images\*.png
cd ..
zip -j9 SVNInside.cbplugin SVNInside.dll SVNInside.zip
-xcopy /Y SVNInside.dll "F:\dev\CB_SVN\src\devel\share\CodeBlocks\plugins"
-xcopy /Y SVNInside.zip "F:\dev\CB_SVN\src\devel\share\codeblocks"
+xcopy /Y SVNInside.dll "..\..\..\devel\share\CodeBlocks\plugins\*"
+xcopy /Y SVNInside.zip "..\..\..\devel\share\codeblocks\*"
Index: SVNInside.cbp
===================================================================
--- SVNInside.cbp (revision 5)
+++ SVNInside.cbp (working copy)
@@ -36,7 +36,6 @@
<Option compiler="gcc" />
<Option host_application="codeblocks.exe" />
<Compiler>
- <Add option="-O3" />
<Add option="-pipe" />
<Add option="-mthreads" />
<Add option="-fmessage-length=0" />
@@ -57,12 +56,16 @@
</Linker>
</Target>
</Build>
+ <VirtualTargets>
+ <Add alias="All" targets="debug;" />
+ </VirtualTargets>
<Compiler>
<Add directory="$(#cb)\include" />
<Add directory="$(#cb)\include\wxscintilla\include" />
<Add directory="$(#wx.include)" />
<Add directory="$(#wx.lib)\gcc_dll\mswu" />
<Add directory="$(#cb)\include\wxFlatNotebook\include" />
+ <Add directory="$(#cb)\include\tinyxml" />
<Add directory="src" />
<Add directory="src\SVNCommand" />
<Add directory="src\Dialogs" />
Since you are calling the command line svn, wxExecute should be fine for the job.It is not. That's what I've been using in my RC2 Subversion plugin.
Since you are calling the command line svn, wxExecute should be fine for the job.It is not. That's what I've been using in my RC2 Subversion plugin.
if ::wxExecute is only working fine on linux, it's useless for me to rewrite the window implementation of my console output redirection.
bool QuerySvn(const wxString& workingDir, wxString& revision, wxString& date)
{
revision = _T("0");
date = _T("unknown date");
wxString svncmd = _T("svn info --xml --non-interactive ");
svncmd.Append(_T("\"") + workingDir + _T("\""));
wxArrayString xmlOutput;
if (wxExecute(svncmd, xmlOutput) != -1)
{
wxString buf = _T("");
for(unsigned int i=0; i<xmlOutput.GetCount(); ++i){
buf << xmlOutput[i];
}
TiXmlDocument doc;
doc.Parse(ws2s(buf).c_str());
if (doc.Error())
return 0;
TiXmlHandle hCommit(&doc);
hCommit = hCommit.FirstChildElement("info").FirstChildElement("entry").FirstChildElement("commit");
if(const TiXmlElement* e = hCommit.ToElement())
{
revision = e->Attribute("revision") ? s2ws(e->Attribute("revision")) : _T("");
const TiXmlElement* d = e->FirstChildElement("date");
if(d && d->GetText())
date = s2ws(d->GetText());
return 1;
}
}
return 0;
}
And i have a question to ask : i am trying to implement a way to block modifications on a file locked by another person. My wish is to add a msgbox when the cbEVT_EDITOR_MODIFIED event is sent that kind of file, asking for the user to choose among two options :
- continue modyfing the file locally as if it wasn't locked, despite the fact that it won't be able to be commited until it is unlocked
- revert the modification which generated the event and wait until the file it is unlocked
For the second option, i can't manage to undo the action just after the messazge box has been closed, i tried different ways :CodecbStyledTextCtrl* pControl = pEditor->GetControl();
if (pControl)
{
//pControl->BeginUndoAction(); with those 2 lines commented or not
pControl->Undo();
//pControl->EndUndoAction();
}
And i tried this:CodeEditorBase* ed = Manager::Get()->GetEditorManager()->GetActiveEditor();
if (ed) ed->Undo();
with no success, can someone help me about that ?
// Code to catch cbEVT_EDITOR_MODIFIED event
void foo::OnEditorModified(CodeBlocksEvent& event)
{
cbEditor* ed = (cbEditor*)event.GetEditor();
ed->Undo();
}
cbEditor* ed = Manager::Get()->GetEditorManager()->GetBuiltinActiveEditor();
ed->Undo();
Index: src/Dialogs/wxSVNTreeCtrl.h
===================================================================
--- src/Dialogs/wxSVNTreeCtrl.h (revision 7)
+++ src/Dialogs/wxSVNTreeCtrl.h (working copy)
@@ -1,13 +1,7 @@
#ifndef WXSVNTREECTRL_H
#define WXSVNTREECTRL_H
-// For compilers that support precompilation, includes <wx/wx.h>
-#include <wx/wxprec.h>
-#ifndef WX_PRECOMP
- #include <wx/wx.h>
-#endif
-
#include <cbplugin.h>
#include <wx/treectrl.h>
Index: src/Dialogs/ConfigDialog.cpp
===================================================================
--- src/Dialogs/ConfigDialog.cpp (revision 7)
+++ src/Dialogs/ConfigDialog.cpp (working copy)
@@ -21,7 +21,13 @@
#endif
#ifndef WX_PRECOMP
-#include "wx/wx.h"
+#include <wx/checkbox.h>
+#include <wx/dialog.h>
+#include <wx/dirdlg.h>
+#include <wx/filedlg.h>
+#include <wx/log.h>
+#include <wx/stattext.h>
+#include <wx/window.h>
#endif
////@begin includes
@@ -30,6 +36,7 @@
#include "ConfigDialog.h"
#include "wx/file.h"
#include "wx/dir.h"
+#include <wx/sizer.h>
#include "wx/textctrl.h"
#include "SVNInside_globals.h"
Index: src/Dialogs/SVNFileSelect.cpp
===================================================================
--- src/Dialogs/SVNFileSelect.cpp (revision 7)
+++ src/Dialogs/SVNFileSelect.cpp (working copy)
@@ -1,7 +1,7 @@
/////////////////////////////////////////////////////////////////////////////
// Name: SVNFileSelect.cpp
// Purpose:
-// Author: Aurélien Rainone
+// Author: Aurélien Rainone
// Modified by:
// Created: 02/10/2007 22:45:30
// RCS-ID:
@@ -21,7 +21,12 @@
#endif
#ifndef WX_PRECOMP
-#include "wx/wx.h"
+#include <wx/button.h>
+#include <wx/checklst.h>
+#include <wx/log.h>
+#include <wx/sizer.h>
+#include <wx/stattext.h>
+#include <wx/textctrl.h>
#endif
////@begin includes
Index: src/Dialogs/ConfigDialog.h
===================================================================
--- src/Dialogs/ConfigDialog.h (revision 7)
+++ src/Dialogs/ConfigDialog.h (working copy)
@@ -32,7 +32,10 @@
*/
////@begin forward declarations
+class wxStaticText;
class wxToggleButton;
+class wxTextCtrl;
+class wxCheckBox;
////@end forward declarations
/*!
Index: src/Dialogs/wxSVNTreeCtrl.cpp
===================================================================
--- src/Dialogs/wxSVNTreeCtrl.cpp (revision 7)
+++ src/Dialogs/wxSVNTreeCtrl.cpp (working copy)
@@ -1,4 +1,8 @@
#include <sdk.h> // Code::Blocks SDK
+#ifndef CB_PRECOMP
+ #include <configmanager.h>
+ #include <cbproject.h>
+#endif
#include <wx/menu.h>
#include <wx/imaglist.h>
Index: src/Dialogs/SVNFileSelect.h
===================================================================
--- src/Dialogs/SVNFileSelect.h (revision 7)
+++ src/Dialogs/SVNFileSelect.h (working copy)
@@ -22,6 +22,7 @@
////@begin includes
#include "wx/xrc/xmlres.h"
+#include <wx/dialog.h>
#include "SVNInside_globals.h"
////@end includes
@@ -30,6 +31,10 @@
*/
////@begin forward declarations
+class wxButton;
+class wxCheckListBox;
+class wxStaticText;
+class wxTextCtrl;
////@end forward declarations
/*!
Index: src/SVNInside.cpp
===================================================================
--- src/SVNInside.cpp (revision 7)
+++ src/SVNInside.cpp (working copy)
@@ -1,4 +1,9 @@
#include <sdk.h> // Code::Blocks SDK
+#ifndef CB_PRECOMP
+ #include <projectmanager.h>
+ #include <cbproject.h>
+#endif
+
#include <configurationpanel.h>
#include "SVNInside.h"
Index: src/SVNCommand/CSVNcommand.h
===================================================================
--- src/SVNCommand/CSVNcommand.h (revision 7)
+++ src/SVNCommand/CSVNcommand.h (working copy)
@@ -1,13 +1,8 @@
#ifndef CSVNCOMMAND_H
#define CSVNCOMMAND_H
-// For compilers that support precompilation, includes <wx/wx.h>
-#include <wx/wxprec.h>
+#include <wx/string.h>
-#ifndef WX_PRECOMP
- #include <wx/wx.h>
-#endif
-
#include <string>
#include "ConsoleProc.h"
Index: src/SVNInside.h
===================================================================
--- src/SVNInside.h (revision 7)
+++ src/SVNInside.h (working copy)
@@ -10,13 +10,8 @@
#ifndef SVNINSIDE_H_INCLUDED
#define SVNINSIDE_H_INCLUDED
-// For compilers that support precompilation, includes <wx/wx.h>
-#include <wx/wxprec.h>
+#include <wx/process.h> // for "class wxProcess"
-#ifndef WX_PRECOMP
- #include <wx/wx.h>
-#endif
-
#include <cbplugin.h> // for "class cbPlugin"
#include <tinyxml.h> // for "tinyxml API"
#include <string>
SVNTreeItemData * pdata = 0; wxTreeItemData * ptr = this->GetItemData(id);
if (ptr)
{
pdata = static_cast<SVNTreeItemData*>(ptr); if (!pdata) return 0;
}
[...]
if (pdata->m_bIsFile)
// get item data
SVNTreeItemData * pdata = 0; wxTreeItemData * ptr = this->GetItemData(id);
if (ptr)
{
pdata = static_cast<SVNTreeItemData*>(ptr);
}
if (!pdata) return 0;
[...]
// get item data
SVNTreeItemData * pdata = 0; wxTreeItemData * ptr = this->GetItemData(id);
if (!ptr) return 0;
else
{
pdata = static_cast<SVNTreeItemData*>(ptr);
}
if (!pdata) return 0;
[...]
Once CB 1.0 is out, we gonna try to create a common interface for version control system in CB (like M$ does).Is there something like a preliminary source control interface description?
I use it on windows and linux and it works fine. I don't know what could go wrong since for me is working. :?Yes, and that is a function that will make the GUI unresponsive for as long as Subversion is running. It is also a function that can have 500 other problems, including lock-up and stale processes, and crashes on exit, if a subprocess is still running. wxExecute is one big pile of crap. In particular, you'll be having a lot of fun if you try to get it to work asynchronously, and if you want to process the events. Apart from the abysmal performance, pointers being held in int variables are a lot of fun, especially if you run your code on a 64 bit platform for the first time. Let's not talk about reading data from a pipe in a tight spinloop and making 3-4 data copies... :)
[...]
thats a function to retrieve the svn revision using wxExecute and it works pretty well on both platforms.
I must say I have seen a ClearCase command not returning in the wxExecute call, and indeed then the GUI of CB is locked. But overall I found it working ok.It is like everything in wxWidgets, it looks like it is working ok at first. But then, you get random crashes that you can't explain, and after weeks, you find out it only happnens when you have more than 127 commandline parameters. So you look at the code and find that wxExecute stores them in a static array that's hardcoded to 127 entries... leaving it to chance whether the 128th or 129th write will cross a page boundary and give a segfault...
So you look at the code and find that wxExecute stores them in a static array that's hardcoded to 127 entries... leaving it to chance whether the 128th or 129th write will cross a page boundary and give a segfault...
Well, is good to know the perspective of someone who has a more advanced experience using this function, and knows the resulting problems from different situations.
I've written a replacement class with a Windows implementation, and Jonas Thedering contributed the POSIX implementation. Somehow, nobody was really interested in it, and no one would even wager to look at it, so... that thing is still in the attic (for nearly 2 years now).
I had implemented a Subversion plugin for RC2 that worked exactly the way Orel described
I have changed the code to the foillowing which works OK:CodeThis may make sense, too:// get item data
SVNTreeItemData * pdata = 0; wxTreeItemData * ptr = this->GetItemData(id);
if (ptr)
{
pdata = static_cast<SVNTreeItemData*>(ptr);
}
if (!pdata) return 0;
[...]Code// get item data
SVNTreeItemData * pdata = 0; wxTreeItemData * ptr = this->GetItemData(id);
if (!ptr) return 0;
else
{
pdata = static_cast<SVNTreeItemData*>(ptr);
}
if (!pdata) return 0;
[...]
Patch to Fix compiling under Windows without using Precompiled Headers.
Also, fixes some rules that killerbot has passed on to me.
killerbot inspired ones.
1. If possible, headers should use forward declarations instead of includes.
2. Headers should never include pre-compiled headers like [sdk.h] or [wxprec.h].
Do not include sdk.h in headers
Do not include wxprec.h in headers
Do not use WX_PRECOMP in headers
Do not use CB_PRECOMP in headers
Ones I decided on by myself.
3. Used system includes in plugins for C::B SDK and wxWidgets includes.
In plugins, use [#include <sdk.h>] instead of [#include "sdk.h"]
4. Do not use [#include <wx/wx.h>] in either production headers or source code.
EditorBase::Undo() is an empty virtual function which has been implemented in cbEditor. Try the following code.Code// Code to catch cbEVT_EDITOR_MODIFIED event
void foo::OnEditorModified(CodeBlocksEvent& event)
{
cbEditor* ed = (cbEditor*)event.GetEditor();
ed->Undo();
}
OrCodecbEditor* ed = Manager::Get()->GetEditorManager()->GetBuiltinActiveEditor();
ed->Undo();
HTH. :)
Index: src/Dialogs/wxSVNTreeCtrl.cpp
===================================================================
--- src/Dialogs/wxSVNTreeCtrl.cpp (revision 8)
+++ src/Dialogs/wxSVNTreeCtrl.cpp (working copy)
@@ -1,6 +1,7 @@
#include <sdk.h> // Code::Blocks SDK
#ifndef CB_PRECOMP
#include <configmanager.h>
+ #include <cbeditor.h>
#include <cbproject.h>
#endif
#include <wx/menu.h>
Patch to for building under windows without pre-compiled headers.Reminds me: Stahta01: What compiler config do you use to get these results? I tried installing GCC 3.3.1 but it never was able to link C::B with it (although I have compiled everything from scratch, including wx with 3.3.1).
Patch to for building under windows without pre-compiled headers.Reminds me: Stahta01: What compiler config do you use to get these results? I tried installing GCC 3.3.1 but it never was able to link C::B with it (although I have compiled everything from scratch, including wx with 3.3.1).
You need to remove the defines of CB_PRECOMP and WX_PRECOMP in the Code::Blocks project file.Oh - that way... nice catch. Thanks! :-)
Then add the define of NOPCH.
A bunch of modifications have been commited into SVNInside repository (accessible for everyone)
Now, code should compile and work also for linux users, there isn't a windows line anymore.
When does this plug-in make it into the CB nighties?
I cant compile it because I have the SDK not available...
orel: have you played around with my ShellExtensions plugin? looking at your latest changes, we have some feature overlap. feel free to borrow ideas/code.
everything comitted to the repoThe latest changes in C::B's SVN trunk render compilation of this plugin impossible. If you have time, please do the following:
everything comitted to the repoThe latest changes in C::B's SVN trunk render compilation of this plugin impossible. If you have time, please do the following:
- remove the TIXML_USE_STL compiler switch
- in SVNInside::ReadConfigFromExtensionNode:
- make sElement and sValue of type const char*
- remove any .c_str() and ->c_str() for these two variables.
Done. ;-)
With regards, Morten.
New features :I updated the plugin from SVN but now I'm having issues: It seems the plugin doesn't get activated at all suddenly. The constructor is run through but OnAttach never gets called. Do you experience the same? Am I missing something? Very strange... :shock:
As SVNInside is still under development, it is possible to fall on some big problems, as the one you encountered, but what a strange thing!! Sorry i'm really not aware of something like that, can you give me the number of the revision from which you updated (or when did you update) ?New features :I updated the plugin from SVN but now I'm having issues: It seems the plugin doesn't get activated at all suddenly. The constructor is run through but OnAttach never gets called. Do you experience the same? Am I missing something? Very strange... :shock:
revision from which you updated (or when did you update) ?I am currently using revision 33 - same problem. :-(
Here's a patch against trunk that makes this plugin work with the latest changes in our repository.
As a side bonus, there's also a unix project file and post build steps script.
I have some constructive criticism to make, if I 'm allowed to do so.For sure, that's what i'm expecting from people !
Please do NOT save the user's password in the project file, not at least without asking first. If the user later sends this project file to someone else, all of the sudden the rest of the world knows his secret password. This can be very bad...I was thinking of that, but i found this to be not so secure because people can always crack it...
I see two solutions to this problem:
- If you must save the password, at least save it in encrypted form and, in all cases, ask the user for his consent FIRST.
That's the solution i found to be the best. When you open a project needing a passowrd, you set it in the project options.As long as it is opened, you won't need to retype it. That will be implemented this way.
- Do not save the password. Save the other options if you want but not the password. Ask the user for the password on first connection and keep it in memory until the project is closed. I believe this would be the better course of action.
Other than that, nice job :).Thanxs. Obviously, when i get one, i fix it. But in order to help me, maybe you can tell me when you see one.
Although I got a couple of crashes because of double-freeing variables but these things happen and I guess you 'll eventually fix them.
So have you try it on linux-unix ? Did you find something wrong, did it work ?
template<> SVNInsideLogger* Mgr<SVNInsideLogger>::instance = 0;
template<> bool Mgr<SVNInsideLogger>::isShutdown = false;
Codetemplate<> SVNInsideLogger* Mgr<SVNInsideLogger>::instance = 0;
template<> bool Mgr<SVNInsideLogger>::isShutdown = false;
Scanning for plugins in /home/darthdespotism/.codeblocks/share/codeblocks/plugins
/home/darthdespotism/.codeblocks/share/codeblocks/plugins/libSVNInside.so: not loaded (missing symbols?)
I'm trying to get this Plugin working on my Ubuntu/Linux box.
Although compiling is not posible with the -dev packages and an $cb pointing somewhere in /usr/include/codeblocks is not posible (but isn't that the purpose of the -dev Packages?) I finally got it compiling (rev4640) but when starting C::B I only get the following Message:CodeScanning for plugins in /home/darthdespotism/.codeblocks/share/codeblocks/plugins
/home/darthdespotism/.codeblocks/share/codeblocks/plugins/libSVNInside.so: not loaded (missing symbols?)
Can anyone point me to the solution for this?
Index: SVNInside.cbp
===================================================================
--- SVNInside.cbp (revision 34)
+++ SVNInside.cbp (working copy)
@@ -71,7 +71,7 @@
<Add library="codeblocks" />
<Add library="wxscintilla" />
<Add directory="$(#cb)\devel" />
- <Add directory="$(#cb)\sdk\propgrid" />
+ <Add directory="$(#cb)\plugins\contrib\wxSmith\propgrid" />
<Add directory="$(#wx.lib)\gcc_dll" />
</Linker>
<ExtraCommands>
Index: src/Dialogs/SVNInsideLogger.cpp
===================================================================
--- src/Dialogs/SVNInsideLogger.cpp (revision 34)
+++ src/Dialogs/SVNInsideLogger.cpp (working copy)
@@ -16,6 +16,9 @@
#include <wx/settings.h>
#include <wx/ffile.h>
+template<> SVNInsideLogger* Mgr<SVNInsideLogger>::instance = 0;
+template<> bool Mgr<SVNInsideLogger>::isShutdown = false;
+
// static members instantiation
int SVNInsideLogger::m_LoggerId = -1;
TextCtrlLogger* SVNInsideLogger::m_Logger = 0;
A silly question! did you use it?
I'm sorry i can't help you with your problem
Linking dynamic library: libSVNInside.so
Output size is 3,85 MB
Running project post-build steps
sh post_build_step
post_build_step: 2:
: not found
zip warning: name not matched: resources/*.xrc
updating: manifest.xml (deflated 52%)
cd: 4: can't cd to resources
zip error: Nothing to do! (../SVNInside.zip)
cd: 6: can't cd to ..
zip warning: name not matched: SVNInside.zip
updating: libSVNInside.so
cp: reguläre Datei „../../../devel/share/codeblocks/plugins/\r“ kann nicht angelegt werden: No such file or directory
(deflated 75%)
cp: reguläre Datei „../../../devel/share/codeblocks/\r“ kann nicht angelegt werden: No such file or directory
Process terminated with status 1 (0 minutes, 32 seconds)
0 errors, 4 warnings
cp: reguläre Datei „../../../devel/share/codeblocks/plugins/\r“ kann nicht angelegt werden: No such file or directoryDo a dos2unix on this file and it'll work. BTW: Are you sure you grabbed that from SVN? Because usually SVN handles such things correctly. Very strange...?!
(deflated 75%)
Anyone got binaries for windows please?
Thanks.
I'm using the last nightly from 15 November. I tried to compile my self but I don't have defines of wx and cb.Anyone got binaries for windows please?
Thanks.
I can try to make an Binary, but can not really test it without a lot of work.
( I am using the SVN 1.5 Beta )
Which Nightly are you using?
I would test it that it installs, enables and disables in your nightly, but that all I can test.
Tim S
Well.. Exactly the same problems darthdespotism had happened here too. Except that I'm with rev 4681. :(
I couldn't see your plugin working yet but I'm anxious to see it working here. I will keep trying to run it later.
Keep the good work! :D
/home/rafael/Temp/CodeBlocks/src/include/sdk.h:12:26: aviso: /home/rafael/Temp/CodeBlocks/src/include/sdk_precomp.h.gch: created and used with different settings of -fpic
Here is the warning that happens. It's the same warning in both times.Quote/home/rafael/Temp/CodeBlocks/src/include/sdk.h:12:26: aviso: /home/rafael/Temp/CodeBlocks/src/include/sdk_precomp.h.gch: created and used with different settings of -fpic
though i don't think it would resolve those warning you got!Don't worry, we can settle this easily then. The reason is most liekely a wrong parameter in the build setup... no prob. ;-)
any ideas?The issue you have described could be the "well-known" wxExecute bug that limits the command line to a (???) 255 characters. If you provide a longer command line you are corrupting memory without notification / exception. Thomas once discovered that issue but so far we were just lucky when creating compiler command lines. Thomas also worked on a cbExecute due to that that removes this (stupid) limitation. But AFAIK it is not yet finished.
The issue you have described could be the "well-known" wxExecute bug that limits the command line to a (???) 255 characters. If you provide a longer command line you are corrupting memory without notification / exception. Thomas once discovered that issue but so far we were just lucky when creating compiler command lines. Thomas also worked on a cbExecute due to that that removes this (stupid) limitation. But AFAIK it is not yet finished.
With regards, Morten.
void ExecuteCommand(const wxString &command, wxArrayString &output, long flags)
{
#ifdef __WXMSW__
wxExecute(command, output, flags);
#else
FILE *fp;
char line[1024];
memset(line, 0, sizeof(line));
fp = popen(_C(command), "r");
while ( fgets( line, sizeof line, fp)) {
output.Add(_U(line));
memset(line, 0, sizeof(line));
}
pclose(fp);
#endif
}
I cant seem to see the limitation you mentioned of 255 characters.That's why I placed the "???" there. I don't recall exactly what the limitation was - but Thomas can tell.
Maybe you are talking of Linux?It was on Linux, yes - definitely. (And I thought we are at Linux in this discussion as I saw /home/rafael/Temp/......?!). But IMHO this affected Windows, too. If not than this was my faulty assumption. ;-)
Not only linux, the problem i had with ::wxExecute which seem to deal with command line length sometimes, and something else the other times!!!??? happens to me on windows, so it may not be a platform problem but a wx one, IMHO!!I cant seem to see the limitation you mentioned of 255 characters.That's why I placed the "???" there. I don't recall exactly what the limitation was - but Thomas can tell.Maybe you are talking of Linux?It was on Linux, yes - definitely. (And I thought we are at Linux in this discussion as I saw /home/rafael/Temp/......?!). But IMHO this affected Windows, too. If not than this was my faulty assumption. ;-)
With regards, Morten.
Call stack:
6CD6E304 F:\SourceCode\Projects\IDEs\CodeBlocks\codeblocks\src\nightly\wxmsw28u_gcc_cb.dll:6CD6E304 _ZN9wxAppBase14SendIdleEventsEP8wxWindowR11wxIdleEvent
6CD6E342 F:\SourceCode\Projects\IDEs\CodeBlocks\codeblocks\src\nightly\wxmsw28u_gcc_cb.dll:6CD6E342 _ZN9wxAppBase14SendIdleEventsEP8wxWindowR11wxIdleEvent
6CD6E4A8 F:\SourceCode\Projects\IDEs\CodeBlocks\codeblocks\src\nightly\wxmsw28u_gcc_cb.dll:6CD6E4A8 _ZN9wxAppBase11ProcessIdleEv
6CD90AD1 F:\SourceCode\Projects\IDEs\CodeBlocks\codeblocks\src\nightly\wxmsw28u_gcc_cb.dll:6CD90AD1 _ZN17wxEventLoopManual3RunEv
6CD33CC7 F:\SourceCode\Projects\IDEs\CodeBlocks\codeblocks\src\nightly\wxmsw28u_gcc_cb.dll:6CD33CC7 _ZN8wxDialog9ShowModalEv
618628B7 F:\SourceCode\Projects\IDEs\CodeBlocks\codeblocks\src\nightly\codeblocks.dll:618628B7 _ZN13PluginManager9ConfigureEv
00422DA9 F:\SourceCode\Projects\IDEs\CodeBlocks\codeblocks\src\nightly\codeblocks.exe:00422DA9
6CCCA4AE F:\SourceCode\Projects\IDEs\CodeBlocks\codeblocks\src\nightly\wxmsw28u_gcc_cb.dll:6CCCA4AE _ZN12wxEvtHandler21ProcessEventIfMatchesERK21wxEventTableEntryBasePS_R7wxEvent
6CCCBA89 F:\SourceCode\Projects\IDEs\CodeBlocks\codeblocks\src\nightly\wxmsw28u_gcc_cb.dll:6CCCBA89 _ZN16wxEventHashTable11HandleEventER7wxEventP12wxEvtHandler
6CCCBFBF F:\SourceCode\Projects\IDEs\CodeBlocks\codeblocks\src\nightly\wxmsw28u_gcc_cb.dll:6CCCBFBF _ZN12wxEvtHandler12ProcessEventER7wxEvent
6CCCBF61 F:\SourceCode\Projects\IDEs\CodeBlocks\codeblocks\src\nightly\wxmsw28u_gcc_cb.dll:6CCCBF61 _ZN12wxEvtHandler12ProcessEventER7wxEvent
Call stack:
6CDE18E4 F:\SourceCode\Projects\IDEs\CodeBlocks\codeblocks\src\nightly\wxmsw28u_gcc_cb.dll:6CDE18E4 _ZN12wxWindowBase14UpdateWindowUIEl
6CD14C72 F:\SourceCode\Projects\IDEs\CodeBlocks\codeblocks\src\nightly\wxmsw28u_gcc_cb.dll:6CD14C72 _ZN8wxWindow14OnInternalIdleEv
6CD6E30A F:\SourceCode\Projects\IDEs\CodeBlocks\codeblocks\src\nightly\wxmsw28u_gcc_cb.dll:6CD6E30A _ZN9wxAppBase14SendIdleEventsEP8wxWindowR11wxIdleEvent
6CD6E342 F:\SourceCode\Projects\IDEs\CodeBlocks\codeblocks\src\nightly\wxmsw28u_gcc_cb.dll:6CD6E342 _ZN9wxAppBase14SendIdleEventsEP8wxWindowR11wxIdleEvent
6CD6E342 F:\SourceCode\Projects\IDEs\CodeBlocks\codeblocks\src\nightly\wxmsw28u_gcc_cb.dll:6CD6E342 _ZN9wxAppBase14SendIdleEventsEP8wxWindowR11wxIdleEvent
6CD6E4A8 F:\SourceCode\Projects\IDEs\CodeBlocks\codeblocks\src\nightly\wxmsw28u_gcc_cb.dll:6CD6E4A8 _ZN9wxAppBase11ProcessIdleEv
6CD90AD1 F:\SourceCode\Projects\IDEs\CodeBlocks\codeblocks\src\nightly\wxmsw28u_gcc_cb.dll:6CD90AD1 _ZN17wxEventLoopManual3RunEv
6CD33CC7 F:\SourceCode\Projects\IDEs\CodeBlocks\codeblocks\src\nightly\wxmsw28u_gcc_cb.dll:6CD33CC7 _ZN8wxDialog9ShowModalEv
618628B7 F:\SourceCode\Projects\IDEs\CodeBlocks\codeblocks\src\nightly\codeblocks.dll:618628B7 _ZN13PluginManager9ConfigureEv
00422DA9 F:\SourceCode\Projects\IDEs\CodeBlocks\codeblocks\src\nightly\codeblocks.exe:00422DA9
6CCCA4AE F:\SourceCode\Projects\IDEs\CodeBlocks\codeblocks\src\nightly\wxmsw28u_gcc_cb.dll:6CCCA4AE _ZN12wxEvtHandler21ProcessEventIfMatchesERK21wxEventTableEntryBasePS_R7wxEvent
6CCCBA89 F:\SourceCode\Projects\IDEs\CodeBlocks\codeblocks\src\nightly\wxmsw28u_gcc_cb.dll:6CCCBA89 _ZN16wxEventHashTable11HandleEventER7wxEventP12wxEvtHandler
6CCCBFBF F:\SourceCode\Projects\IDEs\CodeBlocks\codeblocks\src\nightly\wxmsw28u_gcc_cb.dll:6CCCBFBF _ZN12wxEvtHandler12ProcessEventER7wxEvent
When can we expect your new code? I'm very interested in this plugin ;)
Trying to figure out why the plugin won't load for me I compared it to the Plugins provided with Codeblocks and noticed that these all provide an .la but SVNInside doesn't. So I tried to produce one for it but couldn't make it work up to now. Is this an necessary step for Gnu/Linux? Can anyone provide me help in how to produce one?
Because the only for the moment to use it is from a own built CB.
I don't know if I'm wrong (i do it), but you can also link against the nightly libcodeblocks.dll and the wxwidgets*dll that uses the nightly just by linking directly to the dll. :) May be I should write an article about this on the wiki.
I was not aware of that way to link.
You're not alone that happened to me also :), for that reason i wrote a quick howto, really incomplete, but for programmers it should be enough to understand the concept, but I will update it later, here it is:
http://wiki.codeblocks.org/index.php?title=Linking_the_plugin_to_a_Nightly_Build
Orel, what state is your plug-in in? Is it functional?Wavesonics, if you mean by 'functional' that you can use it to manage your working copy from inside CB, i would say yes. But as i said it, it's for the moment intended for 'everyday use', i mean not for creating a repo, or cheking out a working copy. It will be in the future.
Index: src/dialogs/svniTreeCtrl.cpp
===================================================================
--- src/dialogs/svniTreeCtrl.cpp (revision 59)
+++ src/dialogs/svniTreeCtrl.cpp (working copy)
@@ -13,6 +13,8 @@
#include <configmanager.h>
#include <cbeditor.h>
#include <cbproject.h>
+ #include <cbworkspace.h>
+ #include <projectmanager.h>
#endif
#include <wx/menu.h> // for "class wxMenu"
#include <wx/imaglist.h> // for "class wxImageList"
Index: src/svniPlugin.cpp
===================================================================
--- src/svniPlugin.cpp (revision 59)
+++ src/svniPlugin.cpp (working copy)
@@ -10,8 +10,11 @@
#include <sdk.h> // Code::Blocks SDK
#ifndef CB_PRECOMP
+ #include <wx/dir.h>
+
#include <projectmanager.h>
#include <cbproject.h>
+ #include <configmanager.h>
#endif
#include <wx/wxFlatNotebook/wxFlatNotebook.h>
Sounds great, when I get a chance I'll compile it and start using it and let you know how it goes :)
Patch needed under Windows XP when not using Pre-Compiled Headers (PCH)
Tim S
-------------- Build: release in SVNInside - Linux ---------------
Compiling: src/commands/svniAdd.cpp
Compiling: src/commands/svniCommand.cpp
Compiling: src/commands/svniCommit.cpp
Compiling: src/commands/svniDiff.cpp
Compiling: src/commands/svniInfo.cpp
Compiling: src/commands/svniLock.cpp
Compiling: src/commands/svniStatus.cpp
Compiling: src/commands/svniUpdate.cpp
WARNING: Can't read file's timestamp: /home/shade/code/sources/svninside-svn/trunk/src/dialogs/svniConfigDlg.cpp
Compiling: src/dialogs/svniFileSelectDlg.cpp
Compiling: src/dialogs/svniLogger.cpp
Compiling: src/dialogs/svniTabPnl.cpp
/home/shade/code/sources/svninside-svn/trunk/src/dialogs/svniTabPnl.cpp: In constructor »svniTabPnl::svniTabPnl(wxWindow*)«:
/home/shade/code/sources/svninside-svn/trunk/src/dialogs/svniTabPnl.cpp:56: Warnung: »AppendCategory« ist veraltet (deklariert bei /usr/local/include/wx/propgrid/propgrid.h:3864)
/home/shade/code/sources/svninside-svn/trunk/src/dialogs/svniTabPnl.cpp:57: Fehler: keine passende Funktion für Aufruf von »wxPropertyGrid::Append(wxStringProperty)«
/usr/local/include/wx/propgrid/propgrid.h:3861: Anmerkung: Kandidaten sind: wxPGProperty* wxPropertyContainerMethods::Append(wxPGProperty*)
/home/shade/code/sources/svninside-svn/trunk/src/dialogs/svniTabPnl.cpp:58: Fehler: keine passende Funktion für Aufruf von »wxPropertyGrid::Append(wxStringProperty)«
/usr/local/include/wx/propgrid/propgrid.h:3861: Anmerkung: Kandidaten sind: wxPGProperty* wxPropertyContainerMethods::Append(wxPGProperty*)
/home/shade/code/sources/svninside-svn/trunk/src/dialogs/svniTabPnl.cpp:59: Fehler: keine passende Funktion für Aufruf von »wxPropertyGrid::Append(wxStringProperty)«
/usr/local/include/wx/propgrid/propgrid.h:3861: Anmerkung: Kandidaten sind: wxPGProperty* wxPropertyContainerMethods::Append(wxPGProperty*)
/home/shade/code/sources/svninside-svn/trunk/src/dialogs/svniTabPnl.cpp:60: Fehler: keine passende Funktion für Aufruf von »wxPropertyGrid::Append(wxStringProperty)«
/usr/local/include/wx/propgrid/propgrid.h:3861: Anmerkung: Kandidaten sind: wxPGProperty* wxPropertyContainerMethods::Append(wxPGProperty*)
/home/shade/code/sources/svninside-svn/trunk/src/dialogs/svniTabPnl.cpp:61: Fehler: Aufruf des überladenen »wxIntProperty(const wxChar*)« ist mehrdeutig
/usr/local/include/wx/propgrid/props.h:360: Anmerkung: Kandidaten sind: wxIntProperty::wxIntProperty(const wxString&, const wxString&, const wxLongLong&)
/usr/local/include/wx/propgrid/props.h:357: Anmerkung: wxIntProperty::wxIntProperty(const wxString&, const wxString&, long int)
/home/shade/code/sources/svninside-svn/trunk/src/dialogs/svniTabPnl.cpp:63: Warnung: »AppendCategory« ist veraltet (deklariert bei /usr/local/include/wx/propgrid/propgrid.h:3864)
/home/shade/code/sources/svninside-svn/trunk/src/dialogs/svniTabPnl.cpp:64: Fehler: keine passende Funktion für Aufruf von »wxPropertyGrid::Append(wxStringProperty)«
/usr/local/include/wx/propgrid/propgrid.h:3861: Anmerkung: Kandidaten sind: wxPGProperty* wxPropertyContainerMethods::Append(wxPGProperty*)
/home/shade/code/sources/svninside-svn/trunk/src/dialogs/svniTabPnl.cpp:65: Fehler: Aufruf des überladenen »wxIntProperty(const wxChar*)« ist mehrdeutig
/usr/local/include/wx/propgrid/props.h:360: Anmerkung: Kandidaten sind: wxIntProperty::wxIntProperty(const wxString&, const wxString&, const wxLongLong&)
/usr/local/include/wx/propgrid/props.h:357: Anmerkung: wxIntProperty::wxIntProperty(const wxString&, const wxString&, long int)
/home/shade/code/sources/svninside-svn/trunk/src/dialogs/svniTabPnl.cpp:66: Fehler: keine passende Funktion für Aufruf von »wxPropertyGrid::Append(wxStringProperty)«
/usr/local/include/wx/propgrid/propgrid.h:3861: Anmerkung: Kandidaten sind: wxPGProperty* wxPropertyContainerMethods::Append(wxPGProperty*)
/home/shade/code/sources/svninside-svn/trunk/src/dialogs/svniTabPnl.cpp:68: Warnung: »AppendCategory« ist veraltet (deklariert bei /usr/local/include/wx/propgrid/propgrid.h:3864)
/home/shade/code/sources/svninside-svn/trunk/src/dialogs/svniTabPnl.cpp:69: Fehler: keine passende Funktion für Aufruf von »wxPropertyGrid::Append(wxStringProperty)«
/usr/local/include/wx/propgrid/propgrid.h:3861: Anmerkung: Kandidaten sind: wxPGProperty* wxPropertyContainerMethods::Append(wxPGProperty*)
/home/shade/code/sources/svninside-svn/trunk/src/dialogs/svniTabPnl.cpp:70: Fehler: keine passende Funktion für Aufruf von »wxPropertyGrid::Append(wxStringProperty)«
/usr/local/include/wx/propgrid/propgrid.h:3861: Anmerkung: Kandidaten sind: wxPGProperty* wxPropertyContainerMethods::Append(wxPGProperty*)
/home/shade/code/sources/svninside-svn/trunk/src/dialogs/svniTabPnl.cpp:72: Warnung: »AppendCategory« ist veraltet (deklariert bei /usr/local/include/wx/propgrid/propgrid.h:3864)
/home/shade/code/sources/svninside-svn/trunk/src/dialogs/svniTabPnl.cpp:73: Fehler: keine passende Funktion für Aufruf von »wxPropertyGrid::Append(wxStringProperty)«
/usr/local/include/wx/propgrid/propgrid.h:3861: Anmerkung: Kandidaten sind: wxPGProperty* wxPropertyContainerMethods::Append(wxPGProperty*)
/home/shade/code/sources/svninside-svn/trunk/src/dialogs/svniTabPnl.cpp:74: Fehler: keine passende Funktion für Aufruf von »wxPropertyGrid::Append(wxStringProperty)«
/usr/local/include/wx/propgrid/propgrid.h:3861: Anmerkung: Kandidaten sind: wxPGProperty* wxPropertyContainerMethods::Append(wxPGProperty*)
Process terminated with status 1 (0 minutes, 18 seconds)
30 errors, 0 warnings
After I installed them (wxCode[wxScintilla] CVS Rev. 723 & wxPropGrid SVN Rev. 615)Please don't use any (wx) components other than the C::B SDK. Within the C::B sources you will find the propgrid version we are using as well as the wxscintilla version we are using. Your's are most likely not compatible.
[...]
Here is the build log. Can someone help me?
{-shade@bumbleblee-} => [~/code/sources/svninside-svn/trunk]
(21:53:50) ld libsvninside.so
ld: warning: cannot find entry symbol _start; not setting start address
libsvninside.so: undefined reference to `svniPrjConfigDlg::svniPrjConfigDlg(wxWindow*, svniProjectConfig*, bool, bool)'
libsvninside.so: undefined reference to `svniSettingsDlg::svniSettingsDlg(wxWindow*, svniPlugin*, svniConfig*)'
libsvninside.so: undefined reference to `vtable for svniPrjConfigDlg'
libsvninside.so: undefined reference to `svniSettingsDlg::SvnPathCorrect(wxString const&)'
Can anyone help me?
(ah, before i forget that: i had to "touch" src/dialogs/svniConfigDlg.cpp because g++ claimed about not beeing able to read its timestamp an so the linking process was canceled.)
Branleb
the only part of it which is non portable for the moment is the class i implement to read console output (under Win32 that's not an easy task). I think reading svn console output under linux (or any other platform) should be easier.
Thank you man (merci beaucoup!!) but this has been already solved some time ago.Quotethe only part of it which is non portable for the moment is the class i implement to read console output (under Win32 that's not an easy task). I think reading svn console output under linux (or any other platform) should be easier.
Maybe the code snippet linked below can help :
http://www.wxdev.fr/snipp24-wxExecute-Recuperer_resultat_ligne_commande.html (http://www.wxdev.fr/snipp24-wxExecute-Recuperer_resultat_ligne_commande.html)
It's in french, but as you are from France, it shouldn't be that difficult to understand :)
Hey! any news about the plugin, does it's ready to be added to the codeblocks contrib repo?I am not sure it is possible for the moment, i didn't update the repository those times because i can't work on the plugin as often as i would like to.
Thank you man (merci beaucoup!!) but this has been already solved some time ago.
Hello,
I've been using this plugin and it works quite well for me (good work) but a friend has checked out the svn repository for my project and got my svn username on the next start of c::b.
I found out that my svn username has been saved in the c::b project file that is also checked into the svn repository.
IMHO it should not be saved into the project file but anyway;
Is there a way to type in the username and password on c::b start or when an svn action is triggered so that there is no need for the username to be saved into the project file?
thanks
denk_mal
Why do you keep any svn info in the project files? There isn't a 1:1 correspondence between projects and repositories. why not just save the svn info you need in a separate config file (or, my preference, in the global user config)?
Your problem can be solved and has been solved, have you read the page 7 of this thread, here is the link ...!You meant http://wiki.codeblocks.org/index.php?title=Linking_the_plugin_to_a_Nightly_Build ?
http://forums.codeblocks.org/index.php/topic,7063.90.html (http://forums.codeblocks.org/index.php/topic,7063.90.html)
Your problem can be solved and has been solved, have you read the page 7 of this thread, here is the link ...!You meant http://wiki.codeblocks.org/index.php?title=Linking_the_plugin_to_a_Nightly_Build ?
http://forums.codeblocks.org/index.php/topic,7063.90.html (http://forums.codeblocks.org/index.php/topic,7063.90.html)
There is a solution for nightly build, and may it works with them, but this doesnt works for me.
I have codeblocks SVN rev5081 and wxGTK 2.8.7.1-r1 on a gentoo machine...
And i always get the missing symbols error - is there a solution for me ?
greets Branleb
Do Not add plugin to the used codeblocks from official site, the codeblocks itself should be build either. :D
you can link against the 8.02 binaries BUT
when you link -- don't link against your own copies of the dlls, link against the CB 8.02 binary packages dlls (including any packaged wx widgets libs). see this: http://wiki.codeblocks.org/index.php?title=Linking_the_plugin_to_a_Nightly_Build
(the instructions assume you are building against a nightly build but it is the same for building against the actual release)
Actually, I have build follow these steps, I say I had tried to link to a codeblocks' distribution DLL(this can avoid building the IDE), but failed. :(
The IDE still report the inconsistent version conflict. I'm still confused about these problems.
Actually, I have build follow these steps, I say I had tried to link to a codeblocks' distribution DLL(this can avoid building the IDE), but failed. :(
The IDE still report the inconsistent version conflict. I'm still confused about these problems.
So, finally, I built both the IDE and plug-ins together myself.
Help!
I try compile plugin on linux:
src/dialogs/svniTreeItem.h|37|warning: 'typedef' was ignored in this declaration|
src/dialogs/svniTreeItem.h|37|warning: 'typedef' was ignored in this declaration|
src/dialogs/svniTreeCtrl.h|31|warning: 'typedef' was ignored in this declaration|
svniCommand.cpp||In member function 'size_t svniCommand::AddFilterMask(int, bool)':|
svniCommand.cpp|104|error: 'remove_if' was not declared in this scope|
||=== Build finished: 1 errors, 3 warnings ===|
#include <algorithm>
OK i build plugin but not install:
One or more plugins were not installed succesfully:
/home/igor/svninside.cbplugin
Please somebody tell us ready for rapidshare.
/usr/bin/ld: .objs/src/commands/svniAdd.o: relocation R_X86_64_32 against `a local symbol' can not be used when making a shared object; recompile with -fPIC
.objs/src/commands/svniAdd.o: could not read symbols: Bad value
Did you read my post just two posts above yours ?No I didn't, thank you jens.
Do you know anything about that -lpropgrid problem?
Index: src/commands/svniCommand.cpp
===================================================================
--- src/commands/svniCommand.cpp (revision 85)
+++ src/commands/svniCommand.cpp (working copy)
@@ -16,6 +16,7 @@
#include "svniLogger.h"
#include <string> // for "class std::string"
+#include <algorithm>
using namespace std;
Index: src/dialogs/svniFileSelectDlg.cpp
===================================================================
--- src/dialogs/svniFileSelectDlg.cpp (revision 85)
+++ src/dialogs/svniFileSelectDlg.cpp (working copy)
@@ -20,6 +20,7 @@
#endif
#include <list>
+#include <algorithm>
#include "svniFileSelectDlg.h"
Index: src/svniPlugin.cpp
===================================================================
--- src/svniPlugin.cpp (revision 85)
+++ src/svniPlugin.cpp (working copy)
@@ -9,7 +9,7 @@
******************************************************************************/
#include <sdk.h> // Code::Blocks SDK
-#include <wx/wxFlatNotebook/wxFlatNotebook.h> // part of Code::Blocks SDK
+#include <wx/aui/auibook.h> // part of Code::Blocks SDK
#ifndef CB_PRECOMP
#include <projectmanager.h>
@@ -164,18 +164,15 @@
ShowLogger(false);
// remove svni tree tab from CB management notebook
- int tab = 0;
-
- // walk through all tabs to find svninside one
- for (; tab < Manager::Get()->GetProjectManager()->GetNotebook()->GetPageCount(); ++tab)
+ if (m_psvniTabPnl)
{
- if (_T("SVNInside") == Manager::Get()->GetProjectManager()->GetNotebook()->GetPageText(tab))
- {
- Manager::Get()->GetProjectManager()->GetNotebook()->DeletePage(tab, true);
- m_psvniTabPnl = 0;
- break;
- }
+
+ int idx = Manager::Get()->GetProjectManager()->GetNotebook()->GetPageIndex(m_psvniTabPnl);
+ if (idx != -1)
+ Manager::Get()->GetProjectManager()->GetNotebook()->RemovePage(idx);
+ m_psvniTabPnl->Destroy();
}
+ m_psvniTabPnl = 0L;
}
}
////////////////////////////////////////////////////////////////////////////////
what is the status of SVNInside development, is it stalled?I think so, yes.
Is it possible --without pain-- to build and use this with a current code::blocks version (say 5925)?Probably not. I did maintain this a bit in my own copy and have a generally working plugin at runtime with current SVN trunk, but it's also my #1 crash candidate. That's why I've disabled it by default.