📄 pluginwizarddlg.cpp
字号:
buffer << _T('\t') << _T('\t') << _T("int Configure()");
DoAddHeaderOption(buffer, hasConfigure, _T(" 0"));
if (type != 1 && type != 5 && type != 6) // not cbToolPlugin, not cbMimePlugin and not cbProjectWizardPlugin
{
buffer << _T('\t') << _T('\t') << _T("void BuildMenu(wxMenuBar* menuBar)");
DoAddHeaderOption(buffer, hasMenu, wxEmptyString);
buffer << _T('\t') << _T('\t') << _T("void BuildModuleMenu(const ModuleType type, wxMenu* menu, const wxString& arg)");
DoAddHeaderOption(buffer, hasModuleMenu, wxEmptyString);
buffer << _T('\t') << _T('\t') << _T("bool BuildToolBar(wxToolBar* toolBar)");
DoAddHeaderOption(buffer, hasToolbar, _T("false"));
}
switch (type)
{
case 1: // tool
DoAddHeaderTool(buffer);
break;
case 2: // compiler
DoAddHeaderCompiler(buffer);
break;
case 3: // debugger
DoAddHeaderDebugger(buffer);
break;
case 4: // codecompl
DoAddHeaderCodeCompletion(buffer);
break;
case 5: // mime
DoAddHeaderMime(buffer);
break;
case 6: // wizard
DoAddHeaderWizard(buffer);
break;
}
if (type != 6) // wizard
{
buffer << _T('\t') << _T('\t') << _T("void OnAttach(); // fires when the plugin is attached to the application") << _T('\n');
buffer << _T('\t') << _T('\t') << _T("void OnRelease(bool appShutDown); // fires when the plugin is released from the application") << _T('\n');
}
buffer << _T('\t') << _T("protected:") << _T('\n');
buffer << _T('\t') << _T("private:") << _T('\n');
if (hasMenu || hasModuleMenu || hasToolbar)
buffer << _T('\t') << _T('\t') << _T("DECLARE_EVENT_TABLE()") << _T('\n');
buffer << _T("};") << _T('\n');
buffer << _T('\n');
buffer << _T("// Declare the plugin's hooks") << _T('\n');
buffer << _T("CB_DECLARE_PLUGIN();") << _T('\n');
if (GuardBlock)
{
buffer << _T('\n');
buffer << _T("#endif // ") << GuardWord << _T('\n');
}
buffer << _T('\n');
// write buffer to disk
wxFile hdr(UnixFilename(m_Header), wxFile::write);
cbWrite(hdr,buffer);
// end of header file
// now the implementation file
buffer.Clear();
buffer << _T("/***************************************************************") << _T('\n');
buffer << _T(" * Name: ") << implFname.GetFullName() << _T('\n');
buffer << _T(" * Purpose: Code::Blocks plugin") << _T('\n');
buffer << _T(" * Author: ") << m_Info.author << _T("<") << m_Info.authorEmail << _T(">") << _T('\n');
// buffer << _T(" * Created: ") << wxDateTime::Now().Format(_("%c"), wxDateTime::Local) << _T('\n');
buffer << _T(" * Copyright: (c) ") << m_Info.author << _T('\n');
buffer << _T(" * License: GPL") << _T('\n');
buffer << _T(" **************************************************************/") << _T('\n');
buffer << _T('\n');
buffer << _T("#if defined(__GNUG__) && !defined(__APPLE__)") << _T('\n');
buffer << _T("\t#pragma implementation \"") << headerFname.GetFullName() << _T("\"") << _T('\n');
buffer << _T("#endif") << _T('\n');
buffer << _T('\n');
buffer << _T("#include \"") << headerFname.GetFullName() << _T("\"") << _T('\n');
buffer << _T("#include <licenses.h> // defines some common licenses (like the GPL)") << _T('\n');
if (type == 6) // wizard
{
buffer << _T("#include <wx/bitmap.h>") << _T('\n');
buffer << _T("#include <configmanager.h>") << _T('\n');
}
buffer << _T('\n');
buffer << _T("// Implement the plugin's hooks") << _T('\n');
buffer << _T("CB_IMPLEMENT_PLUGIN(") << m_Info.name << _T(");") << _T('\n');
buffer << _T('\n');
if (hasMenu || hasModuleMenu || hasToolbar)
{
buffer << _T("BEGIN_EVENT_TABLE(") << m_Info.name << _T(", ");
switch (type)
{
case 0: // generic
buffer << _T("cbPlugin)") << _T('\n');
break;
case 2: // compiler
buffer << _T("cbCompilerPlugin)") << _T('\n');
break;
case 3: // debugger
buffer << _T("cbDebuggerPlugin)") << _T('\n');
break;
case 4: // codecompl
buffer << _T("cbCodeCompletionPlugin)") << _T('\n');
break;
}
buffer << _T('\t') << _T("// add events here...") << _T('\n');
buffer << _T("END_EVENT_TABLE()") << _T('\n');
buffer << _T('\n');
}
buffer << m_Info.name << _T("::") << m_Info.name << _T("()") << _T('\n');
buffer << _T("{") << _T('\n');
buffer << _T('\t') << _T("//ctor") << _T('\n');
buffer << _T('\t') << _T("m_PluginInfo.name = _T(\"") << m_Info.name << _T("\");") << _T('\n');
buffer << _T('\t') << _T("m_PluginInfo.title = _(\"") << m_Info.title << _T("\");") << _T('\n');
buffer << _T('\t') << _T("m_PluginInfo.version = _T(\"") << m_Info.version << _T("\");") << _T('\n');
buffer << _T('\t') << _T("m_PluginInfo.description = _(\"") << m_Info.description << _T("\");") << _T('\n');
buffer << _T('\t') << _T("m_PluginInfo.author = _T(\"") << m_Info.author << _T("\");") << _T('\n');
buffer << _T('\t') << _T("m_PluginInfo.authorEmail = _T(\"") << m_Info.authorEmail << _T("\");") << _T('\n');
buffer << _T('\t') << _T("m_PluginInfo.authorWebsite = _T(\"") << m_Info.authorWebsite << _T("\");") << _T('\n');
buffer << _T('\t') << _T("m_PluginInfo.thanksTo = _(\"") << m_Info.thanksTo << _T("\");") << _T('\n');
buffer << _T('\t') << _T("m_PluginInfo.license = LICENSE_GPL;") << _T('\n');
buffer << _T('\t') << _T("m_PluginInfo.hasConfigure = ") << (hasConfigure ? _T("true;") : _T("false;")) << _T('\n');
buffer << _T("}") << _T('\n');
buffer << _T('\n');
buffer << m_Info.name << _T("::~") << m_Info.name << _T("()") << _T('\n');
buffer << _T("{") << _T('\n');
buffer << _T('\t') << _T("//dtor") << _T('\n');
buffer << _T("}") << _T('\n');
buffer << _T('\n');
if (type != 6) // wizard
{
buffer << _T("void ") << m_Info.name << _T("::OnAttach()") << _T('\n');
buffer << _T("{") << _T('\n');
buffer << _T('\t') << _T("// do whatever initialization you need for your plugin") << _T('\n');
buffer << _T('\t') << _T("// NOTE: after this function, the inherited member variable") << _T('\n');
buffer << _T('\t') << _T("// m_IsAttached will be TRUE...") << _T('\n');
buffer << _T('\t') << _T("// You should check for it in other functions, because if it") << _T('\n');
buffer << _T('\t') << _T("// is FALSE, it means that the application did *not* \"load\"") << _T('\n');
buffer << _T('\t') << _T("// (see: does not need) this plugin...") << _T('\n');
buffer << _T("}") << _T('\n');
buffer << _T('\n');
buffer << _T("void ") << m_Info.name << _T("::OnRelease(bool appShutDown)") << _T('\n');
buffer << _T("{") << _T('\n');
buffer << _T('\t') << _T("// do de-initialization for your plugin") << _T('\n');
buffer << _T('\t') << _T("// if appShutDown is false, the plugin is unloaded because Code::Blocks is being shut down,") << _T('\n');
buffer << _T('\t') << _T("// which means you must not use any of the SDK Managers") << _T('\n');
buffer << _T('\t') << _T("// NOTE: after this function, the inherited member variable") << _T('\n');
buffer << _T('\t') << _T("// m_IsAttached will be FALSE...") << _T('\n');
buffer << _T("}") << _T('\n');
buffer << _T('\n');
}
if (hasConfigure)
{
buffer << _T("int ") << m_Info.name << _T("::Configure()") << _T('\n');
buffer << _T("{") << _T('\n');
buffer << _T('\t') << _T("//create and display the configuration dialog for your plugin") << _T('\n');
buffer << _T('\t') << _T("NotImplemented(_T(\"") << m_Info.name << _T("::Configure()") << _T("\"));") << _T('\n');
buffer << _T('\t') << _T("return -1;") << _T('\n');
buffer << _T("}") << _T('\n');
buffer << _T('\n');
}
if (type != 1 && type != 5) // not cbToolPlugin and not cbMimePlugin
{
if (hasMenu)
{
buffer << _T("void ") << m_Info.name << _T("::BuildMenu(wxMenuBar* menuBar)") << _T('\n');
buffer << _T("{") << _T('\n');
buffer << _T('\t') << _T("//The application is offering its menubar for your plugin,") << _T('\n');
buffer << _T('\t') << _T("//to add any menu items you want...") << _T('\n');
buffer << _T('\t') << _T("//Append any items you need in the menu...") << _T('\n');
buffer << _T('\t') << _T("//NOTE: Be careful in here... The application's menubar is at your disposal.") << _T('\n');
buffer << _T('\t') << _T("NotImplemented(_T(\"") << m_Info.name << _T("::OfferMenuSpace()") << _T("\"));") << _T('\n');
buffer << _T("}") << _T('\n');
buffer << _T('\n');
}
if (hasModuleMenu)
{
buffer << _T("void ") << m_Info.name << _T("::BuildModuleMenu(const ModuleType type, wxMenu* menu, const wxString& arg)") << _T('\n');
buffer << _T("{") << _T('\n');
buffer << _T('\t') << _T("//Some library module is ready to display a pop-up menu.") << _T('\n');
buffer << _T('\t') << _T("//Check the parameter \"type\" and see which module it is") << _T('\n');
buffer << _T('\t') << _T("//and append any items you need in the menu...") << _T('\n');
buffer << _T('\t') << _T("//TIP: for consistency, add a separator as the first item...") << _T('\n');
buffer << _T('\t') << _T("NotImplemented(_T(\"") << m_Info.name << _T("::OfferModuleMenuSpace()") << _T("\"));") << _T('\n');
buffer << _T("}") << _T('\n');
buffer << _T('\n');
}
if (hasToolbar)
{
buffer << _T("bool ") << m_Info.name << _T("::BuildToolBar(wxToolBar* toolBar)") << _T('\n');
buffer << _T("{") << _T('\n');
buffer << _T('\t') << _T("//The application is offering its toolbar for your plugin,") << _T('\n');
buffer << _T('\t') << _T("//to add any toolbar items you want...") << _T('\n');
buffer << _T('\t') << _T("//Append any items you need on the toolbar...") << _T('\n');
buffer << _T('\t') << _T("NotImplemented(_T(\"") << m_Info.name << _T("::BuildToolBar()") << _T("\"));") << _T('\n');
buffer << _T('\t') << _T("// return true if you add toolbar items") << _T('\n');
buffer << _T('\t') << _T("return false;") << _T('\n');
buffer << _T("}") << _T('\n');
buffer << _T('\n');
}
}
switch (type)
{
case 1: // tool
DoAddSourceTool(m_Info.name, buffer);
break;
case 2: // compiler
DoAddSourceCompiler(m_Info.name, buffer);
break;
case 3: // debugger
DoAddSourceDebugger(m_Info.name, buffer);
break;
case 4: // codecompl
DoAddSourceCodeCompletion(m_Info.name, buffer);
break;
case 5: // mime
DoAddSourceMime(m_Info.name, buffer);
break;
case 6: // wizard
DoAddSourceWizard(m_Info.name, buffer);
break;
}
// write buffer to disk
wxFile impl(UnixFilename(m_Implementation), wxFile::write);
cbWrite(impl,buffer);
// end of implementation file
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -