Developer forums (C::B DEVELOPMENT STRICTLY!) > Plugins development
source insight plugin
zyjjingle:
source insight plugin:
project & sanp images in:
svn://svn.code.sf.net/p/zyjcodeblocks/svn
it need some change in SDK and codecompletion.
-------------------changes in SDK:------------------------------------
1.editorbase.cpp
--- Code: ---EditorBase::EditorBase(wxWindow* parent, const wxString& filename)
: wxPanel(parent, -1),
m_IsBuiltinEditor(false),
m_Shortname(_T("")),
m_Filename(_T("")),
m_WinTitle(filename)
{
m_pData = new EditorBaseInternalData(this);
//add by nwork, if Open in output need not to add
if( Manager::Get()->GetEditorManager()->GetInoutput()==false )
Manager::Get()->GetEditorManager()->AddCustomEditor(this);
InitFilename(filename);
SetTitle(m_Shortname);
}
--- End code ---
---------------------- changes in CodeCompletion ------------------------
codecompletion.cpp
--- Code: ---void CodeCompletion::OnValueTooltip(CodeBlocksEvent& event)
{
//add by nwork, other plugins( SourceInsight,BrowseTracker) need this event
if( event.GetExtraLong() != 0 )
return;
event.Skip();
if (IsAttached() && m_InitDone)
{
if (!Manager::Get()->GetConfigManager(_T("code_completion"))->ReadBool(_T("eval_tooltip"), true))
return;
EditorBase* base = event.GetEditor();
cbEditor* ed = base && base->IsBuiltinEditor() ? static_cast<cbEditor*>(base) : 0;
if (!ed || ed->IsContextMenuOpened())
return;
if (ed->GetControl()->CallTipActive())
ed->GetControl()->CallTipCancel();
// Manager::Get()->GetLogManager()->DebugLog(F(_T("CodeCompletion::OnValueTooltip: %p"), ed));
/* NOTE: The following 2 lines of codes can fix [Bug #11785].
* The solution may not the best one and it requires the editor
* to have the focus (even if C::B has the focus) in order to pop-up the tooltip. */
if (wxWindow::FindFocus() != static_cast<wxWindow*>(ed->GetControl()))
return;
// ignore comments, strings, preprocesor, etc
int style = event.GetInt();
if ( (style != wxSCI_C_DEFAULT)
&& (style != wxSCI_C_OPERATOR)
&& (style != wxSCI_C_IDENTIFIER) )
return;
int pos = ed->GetControl()->PositionFromPointClose(event.GetX(), event.GetY());
if (pos < 0 || pos >= ed->GetControl()->GetLength())
return;
int endOfWord = ed->GetControl()->WordEndPosition(pos, true);
Token* poutput_token = NULL;
Parser* parser = m_NativeParser.GetParserPtr();
if (parser)
{
TokenIdxSet result;
// int endOfWord = ed->GetControl()->WordEndPosition(pos, true);
if (m_NativeParser.MarkItemsByAI(result, true, true, true, endOfWord))
{
wxString msg;
int count = 0;
bool flag = false;
for (TokenIdxSet::iterator it = result.begin(); it != result.end(); ++it)
{
Token* token = parser->GetTokens()->at(*it);
if (token)
{
msg << token->DisplayName() << _T("\n");
++count;
if (count > 32) // allow max 32 matches (else something is definitely wrong)
{
msg.Clear();
break;
}
if( poutput_token==NULL || token->m_ImplFileIdx )
poutput_token = token;
}
}
if (!msg.IsEmpty())
{
if( msg.Find( '\r' ) >=0 )
msg.Replace( "\r", " " );
if( msg.Last() == '\n' )
msg.RemoveLast();
if( msg.First('\t') >=0 )
msg.Replace( "\t", " " );
ed->GetControl()->CallTipShow(pos, msg);
// Manager::Get()->GetLogManager()->DebugLog(F(msg));
}
}
}
//add by nwork for sourceinsight
if( poutput_token )
{
int line;
wxString filename = poutput_token->GetImplFilename();
wxString dispname = poutput_token->DisplayName();
line = poutput_token->m_ImplLine;
if( filename.IsEmpty() )
{
filename = poutput_token->GetFilename();
line = poutput_token->m_Line;
}
//dispname|filename
dispname += "|";
dispname += filename;
CodeBlocksEvent event(cbEVT_EDITOR_TOOLTIP);
event.SetEditor(ed);
event.SetInt(line);
event.SetString(dispname);
event.SetExtraLong(-1); //for source insight
Manager::Get()->GetPluginManager()->NotifyPlugins(event);
} }
}
--- End code ---
MortenMacFly:
--- Quote from: zyjjingle on September 24, 2010, 04:56:37 pm ---source insight plugin:
--- End quote ---
...what is this?! :shock:
zyjjingle:
how to send snap image?
open a editor in output window, something like SourceInsight Do. Depend on CodeCompletion Plugin.
MortenMacFly:
--- Quote from: zyjjingle on September 24, 2010, 05:39:50 pm ---how to send snap image?
--- End quote ---
Use services like ImageShack to show screen shots. But what is SouceInsight? The only reference I found was this: http://www.sourceinsight.com, but it seems to be a stand-alone commercial application. Can you please just say in a few words what this plugin shall do? What is the purpose? What are the pre-requisites? In addition, why don't you add a ZIP file as attachment to your post including all the required files (e.g. the project file, too)?!
This way it will be hard to understand what this does and even to compile it.
ollydbg:
--- Quote from: zyjjingle on September 24, 2010, 04:56:37 pm ---source insight plugin:
project & sanp images in:
svn://svn.code.sf.net/p/zyjcodeblocks/svn
it need some change in SDK and codecompletion.
--- End quote ---
interesting, but should this functionality add to Codecompletion plugin?
Navigation
[0] Message Index
[#] Next page
Go to full version