⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pluginwizarddlg.cpp

📁 非常好用的可移植的多平台C/C++源代码编辑器
💻 CPP
📖 第 1 页 / 共 3 页
字号:
	buffer << _T("void ") << classname << _T("::CmdStop()") << _T('\n');
	buffer << _T("{") << _T('\n');
	buffer << _T('\t') << _T("//tell debugger to end debugging session") << _T('\n');
	buffer << _T('\t') << _T("NotImplemented(_T(\"") << classname << _T("::CmdStop()") << _T("\"));") << _T('\n');
	buffer << _T("}") << _T('\n');
	buffer << _T("bool ") << classname << _T("::IsRunning()") << _T('\n');
	buffer << _T("{") << _T('\n');
	buffer << _T('\t') << _T("//return true if session is active") << _T('\n');
	buffer << _T('\t') << _T("NotImplemented(_T(\"") << classname << _T("::IsRunning()") << _T("\"));") << _T('\n');
	buffer << _T('\t') << _T("return false;") << _T('\n');
	buffer << _T("}") << _T('\n');
	buffer << _T("int ") << classname << _T("::GetExitCode()") << _T('\n');
	buffer << _T("{") << _T('\n');
	buffer << _T('\t') << _T("//return last session exit code") << _T('\n');
	buffer << _T('\t') << _T("NotImplemented(_T(\"") << classname << _T("::GetExitCode()") << _T("\"));") << _T('\n');
	buffer << _T('\t') << _T("return -1;") << _T('\n');
	buffer << _T("}") << _T('\n');
}

void PluginWizardDlg::DoAddSourceCodeCompletion(const wxString& classname, wxString& buffer)
{
	buffer << _T("wxArrayString ") << classname << _T("::GetCallTipsFor(const wxString& command)") << _T('\n');
	buffer << _T("{") << _T('\n');
	buffer << _T('\t') << _T("//well, give call tips for the string \"command\"...") << _T('\n');
	buffer << _T('\t') << _T("NotImplemented(_T(\"") << classname << _T("::GetCallTipsFor()") << _T("\"));") << _T('\n');
	buffer << _T('\t') << _T("wxArrayString items;") << _T('\n');
	buffer << _T('\t') << _T("return items;") << _T('\n');
	buffer << _T("}") << _T('\n');
	buffer << _T('\n');
	buffer << _T("int ") << classname << _T("::CodeComplete()") << _T('\n');
	buffer << _T("{") << _T('\n');
	buffer << _T('\t') << _T("//code-complete") << _T('\n');
	buffer << _T('\t') << _T("NotImplemented(_T(\"") << classname << _T("::CodeComplete()") << _T("\"));") << _T('\n');
	buffer << _T('\t') << _T("return -1;") << _T('\n');
	buffer << _T("}") << _T('\n');
	buffer << _T('\n');
	buffer << _T("void ") << classname << _T("::ShowCallTip()") << _T('\n');
	buffer << _T("{") << _T('\n');
	buffer << _T('\t') << _T("//display a call-tip") << _T('\n');
	buffer << _T('\t') << _T("NotImplemented(_T(\"") << classname << _T("::ShowCallTip()") << _T("\"));") << _T('\n');
	buffer << _T("}") << _T('\n');
	buffer << _T('\n');
}

void PluginWizardDlg::DoAddSourceMime(const wxString& classname, wxString& buffer)
{
	buffer << _T("bool ") << classname << _T("::CanHandleFile(const wxString& filename)") << _T('\n');
	buffer << _T("{") << _T('\n');
	buffer << _T('\t') << _T("//return true if this plugin can handle the file, false if not...") << _T('\n');
	buffer << _T('\t') << _T("NotImplemented(_T(\"") << classname << _T("::CanHandleFile()") << _T("\"));") << _T('\n');
	buffer << _T('\t') << _T("return false;") << _T('\n');
	buffer << _T("}") << _T('\n');
	buffer << _T('\n');
	buffer << _T("int ") << classname << _T("::OpenFile(const wxString& filename)") << _T('\n');
	buffer << _T("{") << _T('\n');
	buffer << _T('\t') << _T("//Open the file. You said you could in CanHandleFile(), didn't you ;)") << _T('\n');
	buffer << _T('\t') << _T("//Remember to return zero for success...") << _T('\n');
	buffer << _T('\t') << _T("NotImplemented(_T(\"") << classname << _T("::OpenFile()") << _T("\"));") << _T('\n');
	buffer << _T('\t') << _T("return -1;") << _T('\n');
	buffer << _T("}") << _T('\n');
	buffer << _T('\n');
}

void PluginWizardDlg::DoAddSourceWizard(const wxString& classname, wxString& buffer)
{
	buffer << _T("const wxString& ") << classname << _T("::GetTitle() const") << _T('\n');
	buffer << _T("{") << _T('\n');
	buffer << _T('\t') << _T("//return this wizard's title") << _T('\n');
	buffer << _T('\t') << _T("//this will appear in the new-project dialog") << _T('\n');
	buffer << _T('\t') << _T("//make sure you set this!") << _T('\n');
	buffer << _T('\t') << _T("return m_PluginInfo.title;") << _T('\n');
	buffer << _T("}") << _T('\n');
	buffer << _T('\n');
	buffer << _T("const wxString& ") << classname << _T("::GetDescription() const") << _T('\n');
	buffer << _T("{") << _T('\n');
	buffer << _T('\t') << _T("//return this wizard's description") << _T('\n');
	buffer << _T('\t') << _T("//make sure you set this!") << _T('\n');
	buffer << _T('\t') << _T("return m_PluginInfo.description;") << _T('\n');
	buffer << _T("}") << _T('\n');
	buffer << _T('\n');
	buffer << _T("const wxString& ") << classname << _T("::GetCategory() const") << _T('\n');
	buffer << _T("{") << _T('\n');
	buffer << _T('\t') << _T("//return this wizard's category") << _T('\n');
	buffer << _T('\t') << _T("//try to match an existing category") << _T('\n');
	buffer << _T('\t') << _T("//make sure you change this!") << _T('\n');
	buffer << _T('\t') << _T("static wxString cat = _(\"XYZ Applications\");") << _T('\n');
	buffer << _T('\t') << _T("return cat;") << _T('\n');
	buffer << _T("}") << _T('\n');
	buffer << _T('\n');
	buffer << _T("const wxBitmap& ") << classname << _T("::GetBitmap() const") << _T('\n');
	buffer << _T("{") << _T('\n');
	buffer << _T('\t') << _T("//return this wizard's bitmap") << _T('\n');
	buffer << _T('\t') << _T("//this will appear in the new-project dialog") << _T('\n');
	buffer << _T('\t') << _T("static wxBitmap IconBitmap;") << _T('\n');
	buffer << _T('\t') << _T("//make sure the bitmap is loaded") << _T('\n');
	buffer << _T('\t') << _T("if (!IconBitmap.Ok())") << _T('\n');
	buffer << _T('\t') << _T("{") << _T('\n');
	buffer << _T('\t') << _T('\t') << _T("//make sure you change the values below (xyz_wizard and xyz.png)") << _T('\n');
    buffer << _T('\t') << _T('\t') << _T("wxString resPath = ConfigManager::Get()->Read(_T(\"data_path\"), wxEmptyString) + _T(\"/templates/xyz_wizard\");") << _T('\n');
    buffer << _T('\t') << _T('\t') << _T("IconBitmap.LoadFile(resPath + _T(\"/xyz.png\"), wxBITMAP_TYPE_PNG);") << _T('\n');
	buffer << _T('\t') << _T("}") << _T('\n');
	buffer << _T('\t') << _T("return IconBitmap;") << _T('\n');
	buffer << _T("}") << _T('\n');
	buffer << _T('\n');
	buffer << _T("int ") << classname << _T("::Launch()") << _T('\n');
	buffer << _T("{") << _T('\n');
	buffer << _T('\t') << _T("//launch your wizard :D") << _T('\n');
	buffer << _T('\t') << _T("//return 0 on success...") << _T('\n');
	buffer << _T('\t') << _T("return -1;") << _T('\n');
	buffer << _T("}") << _T('\n');
	buffer << _T('\n');
}

// events

void PluginWizardDlg::OnNameChange(wxCommandEvent& event)
{
	wxString name = XRCCTRL(*this, "txtName", wxTextCtrl)->GetValue();
	name.MakeLower();
	XRCCTRL(*this, "txtHeader", wxTextCtrl)->SetValue(name + _T(".h"));
	XRCCTRL(*this, "txtImplementation", wxTextCtrl)->SetValue(name + _T(".cpp"));
	DoGuardBlock();
}

void PluginWizardDlg::OnUpdateUI(wxUpdateUIEvent& event)
{
	bool isTool = XRCCTRL(*this, "cmbType", wxComboBox)->GetSelection() == 1;
	bool isMime = XRCCTRL(*this, "cmbType", wxComboBox)->GetSelection() == 5;
	bool isWizard = XRCCTRL(*this, "cmbType", wxComboBox)->GetSelection() == 6;
	XRCCTRL(*this, "chkHasConfigure", wxCheckBox)->Enable(!isWizard);
	XRCCTRL(*this, "chkHasMenu", wxCheckBox)->Enable(!isTool && !isMime && !isWizard);
	XRCCTRL(*this, "chkHasModuleMenu", wxCheckBox)->Enable(!isTool && !isMime && !isWizard);
	XRCCTRL(*this, "chkHasToolbar", wxCheckBox)->Enable(!isTool && !isMime && !isWizard);
}

void PluginWizardDlg::OnEditInfoClick(wxCommandEvent& event)
{
	EnterInfoDlg dlg(m_Info);
	if (dlg.ShowModal() == wxID_OK)
		m_Info = dlg.GetInfo();
}

void PluginWizardDlg::OnOKClick(wxCommandEvent& event)
{
	EndModal(wxID_OK);
}

void PluginWizardDlg::CreateFiles()
{
	int type = XRCCTRL(*this, "cmbType", wxComboBox)->GetSelection();
	bool isTool = type == 1;
	// set some variable for easy reference
	m_Info.name = XRCCTRL(*this, "txtName", wxTextCtrl)->GetValue();

	bool hasConfigure = XRCCTRL(*this, "chkHasConfigure", wxCheckBox)->GetValue();
	bool hasMenu = !isTool && XRCCTRL(*this, "chkHasMenu", wxCheckBox)->GetValue();
	bool hasModuleMenu = !isTool && XRCCTRL(*this, "chkHasModuleMenu", wxCheckBox)->GetValue();
	bool hasToolbar = !isTool && XRCCTRL(*this, "chkHasToolbar", wxCheckBox)->GetValue();

	m_Header = XRCCTRL(*this, "txtHeader", wxTextCtrl)->GetValue();
	m_Implementation = XRCCTRL(*this, "txtImplementation", wxTextCtrl)->GetValue();
	bool GuardBlock = XRCCTRL(*this, "chkGuardBlock", wxCheckBox)->GetValue();
	wxString GuardWord = XRCCTRL(*this, "txtGuardBlock", wxTextCtrl)->GetValue();
	if (GuardWord.IsEmpty())
		DoGuardBlock();
	wxFileName headerFname(UnixFilename(m_Header));
	wxFileName implFname(UnixFilename(m_Implementation));

	wxString buffer;

	// actual creation starts here
	// let's start with the header file
	buffer << _T("/***************************************************************") << _T('\n');
	buffer << _T(" * Name:      ") << headerFname.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');

	if (GuardBlock)
	{
		buffer << _T("#ifndef ") << GuardWord << _T('\n');
		buffer << _T("#define ") << GuardWord << _T('\n');
		buffer << _T('\n');
	}

	buffer << _T("#if defined(__GNUG__) && !defined(__APPLE__)") << _T('\n');
	buffer << _T("\t#pragma interface \"") << headerFname.GetFullName() << _T("\"") << _T('\n');
	buffer << _T("#endif") << _T('\n');

	buffer << _T("// For compilers that support precompilation, includes <wx/wx.h>") << _T('\n');
	buffer << _T("#include <wx/wxprec.h>") << _T('\n');
	buffer << _T('\n');

	buffer << _T("#ifdef __BORLANDC__") << _T('\n');
	buffer << _T("\t#pragma hdrstop") << _T('\n');
	buffer << _T("#endif") << _T('\n');
	buffer << _T('\n');

	buffer << _T("#ifndef WX_PRECOMP") << _T('\n');
	buffer << _T("\t#include <wx/wx.h>") << _T('\n');
	buffer << _T("#endif") << _T('\n');
	buffer << _T('\n');

	buffer << _T("#include <cbplugin.h> // the base class we 're inheriting") << _T('\n');
	buffer << _T("#include <settings.h> // needed to use the Code::Blocks SDK") << _T('\n');
	buffer << _T('\n');
	buffer << _T("class ") << m_Info.name;
	switch (type)
	{
		case 0: buffer << _T(" : public cbPlugin"); break;
		case 1: buffer << _T(" : public cbToolPlugin"); break;
		case 2: buffer << _T(" : public cbCompilerPlugin"); break;
		case 3: buffer << _T(" : public cbDebuggerPlugin"); break;
		case 4: buffer << _T(" : public cbCodeCompletionPlugin"); break;
		case 5: buffer << _T(" : public cbMimePlugin"); break;
		case 6: buffer << _T(" : public cbProjectWizardPlugin"); break;
	}
	buffer << _T('\n');
	buffer << _T("{") << _T('\n');
	buffer << _T('\t') << _T("public:") << _T('\n');
	buffer << _T('\t') << _T('\t') << m_Info.name << _T("();") << _T('\n');
	buffer << _T('\t') << _T('\t') << _T("~") << m_Info.name << _T("();") << _T('\n');

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -