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

📄 pluginwizarddlg.cpp

📁 非常好用的可移植的多平台C/C++源代码编辑器
💻 CPP
📖 第 1 页 / 共 3 页
字号:
/*
* This file is part of Code::Blocks Studio, an open-source cross-platform IDE
* Copyright (C) 2003  Yiannis An. Mandravellos
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
*
* Contact e-mail: Yiannis An. Mandravellos <mandrav@codeblocks.org>
* Program URL   : http://www.codeblocks.org
*
* $Id: pluginwizarddlg.cpp,v 1.9.2.1 2005/10/25 07:59:02 mandrav Exp $
* $Date: 2005/10/25 07:59:02 $
*/

#include <sdk.h>
#include "pluginwizarddlg.h"
#include "enterinfodlg.h"
#include <wx/intl.h>
#include <wx/mdi.h>
#include <wx/filename.h>
#include <wx/xrc/xmlres.h>
#include <manager.h>
#include <wx/file.h>
#include <wx/combobox.h>
#include <wx/checkbox.h>
#include <wx/textctrl.h>

BEGIN_EVENT_TABLE(PluginWizardDlg, wxDialog)
	EVT_UPDATE_UI(-1, PluginWizardDlg::OnUpdateUI)
	EVT_BUTTON(XRCID("btnInfo"), PluginWizardDlg::OnEditInfoClick)
	EVT_BUTTON(XRCID("btnOK"), PluginWizardDlg::OnOKClick)
	EVT_TEXT(XRCID("txtName"), PluginWizardDlg::OnNameChange)
END_EVENT_TABLE()

PluginWizardDlg::PluginWizardDlg()
{
	wxXmlResource::Get()->LoadDialog(this, Manager::Get()->GetAppWindow(), _T("dlgNewPlugin"));
}

PluginWizardDlg::~PluginWizardDlg()
{
}

void PluginWizardDlg::DoGuardBlock()
{
	m_Header = XRCCTRL(*this, "txtHeader", wxTextCtrl)->GetValue();
	wxFileName headerFname(m_Header);
	wxString GuardWord = headerFname.GetFullName();
	GuardWord.MakeUpper();
	GuardWord.Replace(_T("."), _T("_"));
	GuardWord.Replace(_T(" "), _T("_"));
	XRCCTRL(*this, "txtGuardBlock", wxTextCtrl)->SetValue(GuardWord);
}


void PluginWizardDlg::DoAddHeaderOption(wxString& buffer, bool has, const wxString& retVal)
{
	if (has)
		buffer << _T(";") << _T('\n');
	else
		buffer << _T("{ return") << retVal << _T("; }") << _T('\n');
}

void PluginWizardDlg::DoAddHeaderTool(wxString& buffer)
{
	buffer << _T('\t') << _T('\t') << _T("int Execute();") << _T('\n');
}

void PluginWizardDlg::DoAddHeaderCompiler(wxString& buffer)
{
	buffer << _T('\t') << _T('\t') << _T("int Run(ProjectBuildTarget* target = 0L);") << _T('\n');
	buffer << _T('\t') << _T('\t') << _T("int Clean(ProjectBuildTarget* target = 0L);") << _T('\n');
	buffer << _T('\t') << _T('\t') << _T("int Compile(ProjectBuildTarget* target = 0L);") << _T('\n');
	buffer << _T('\t') << _T('\t') << _T("int CompileAll();") << _T('\n');
	buffer << _T('\t') << _T('\t') << _T("int RebuildAll();") << _T('\n');
	buffer << _T('\t') << _T('\t') << _T("int Rebuild(ProjectBuildTarget* target = 0L);") << _T('\n');
	buffer << _T('\t') << _T('\t') << _T("int CompileFile(const wxString& file);") << _T('\n');
	buffer << _T('\t') << _T('\t') << _T("int KillProcess();") << _T('\n');
	buffer << _T('\t') << _T('\t') << _T("bool IsRunning();") << _T('\n');
	buffer << _T('\t') << _T('\t') << _T("int GetExitCode();") << _T('\n');
}

void PluginWizardDlg::DoAddHeaderDebugger(wxString& buffer)
{
	buffer << _T('\t') << _T('\t') << _T("int Debug();") << _T('\n');
	buffer << _T('\t') << _T('\t') << _T("void CmdContinue();") << _T('\n');
	buffer << _T('\t') << _T('\t') << _T("void CmdNext();") << _T('\n');
	buffer << _T('\t') << _T('\t') << _T("void CmdStep();") << _T('\n');
	buffer << _T('\t') << _T('\t') << _T("void CmdToggleBreakpoint();") << _T('\n');
	buffer << _T('\t') << _T('\t') << _T("void CmdStop();") << _T('\n');
	buffer << _T('\t') << _T('\t') << _T("bool IsRunning();") << _T('\n');
	buffer << _T('\t') << _T('\t') << _T("int GetExitCode();") << _T('\n');
}

void PluginWizardDlg::DoAddHeaderCodeCompletion(wxString& buffer)
{
	buffer << _T('\t') << _T('\t') << _T("wxArrayString GetCallTipsFor(const wxString& command);") << _T('\n');
	buffer << _T('\t') << _T('\t') << _T("int CodeComplete();") << _T('\n');
	buffer << _T('\t') << _T('\t') << _T("void ShowCallTip();") << _T('\n');
}

void PluginWizardDlg::DoAddHeaderMime(wxString& buffer)
{
	buffer << _T('\t') << _T('\t') << _T("bool HandlesEverything(){ return false; }") << _T('\n');
	buffer << _T('\t') << _T('\t') << _T("bool CanHandleFile(const wxString& filename);") << _T('\n');
	buffer << _T('\t') << _T('\t') << _T("int OpenFile(const wxString& filename);") << _T('\n');
}

void PluginWizardDlg::DoAddHeaderWizard(wxString& buffer)
{
	buffer << _T('\t') << _T('\t') << _T("const wxString& GetTitle() const;") << _T('\n');
	buffer << _T('\t') << _T('\t') << _T("const wxString& GetDescription() const;") << _T('\n');
	buffer << _T('\t') << _T('\t') << _T("const wxString& GetCategory() const;") << _T('\n');
	buffer << _T('\t') << _T('\t') << _T("const wxBitmap& GetBitmap() const;") << _T('\n');
	buffer << _T('\t') << _T('\t') << _T("int Launch();") << _T('\n');
}

void PluginWizardDlg::DoAddSourceTool(const wxString& classname, wxString& buffer)
{
	buffer << _T("int ") << m_Info.name << _T("::Execute()") << _T('\n');
	buffer << _T("{") << _T('\n');
	buffer << _T('\t') << _T("//do your magic ;)") << _T('\n');
	buffer << _T('\t') << _T("NotImplemented(_T(\"") << classname << _T("::Execute()") << _T("\"));") << _T('\n');
	buffer << _T('\t') << _T("return -1;") << _T('\n');
	buffer << _T("}") << _T('\n');
	buffer << _T('\n');
}

void PluginWizardDlg::DoAddSourceCompiler(const wxString& classname, wxString& buffer)
{
	buffer << _T("int ") << classname << _T("::Run(ProjectBuildTarget* target)") << _T('\n');
	buffer << _T("{") << _T('\n');
	buffer << _T('\t') << _T("//run the active project or specified target") << _T('\n');
	buffer << _T('\t') << _T("NotImplemented(_T(\"") << classname << _T("::Run()") << _T("\"));") << _T('\n');
	buffer << _T('\t') << _T("return -1;") << _T('\n');
	buffer << _T("}") << _T('\n');
	buffer << _T("int ") << classname << _T("::Clean(ProjectBuildTarget* target)") << _T('\n');
	buffer << _T("{") << _T('\n');
	buffer << _T('\t') << _T("//clean the active project or specified target") << _T('\n');
	buffer << _T('\t') << _T("NotImplemented(_T(\"") << classname << _T("::Clean()") << _T("\"));") << _T('\n');
	buffer << _T('\t') << _T("return -1;") << _T('\n');
	buffer << _T("}") << _T('\n');
	buffer << _T("int ") << classname << _T("::Compile(ProjectBuildTarget* target)") << _T('\n');
	buffer << _T("{") << _T('\n');
	buffer << _T('\t') << _T("//compile the active project or specified target") << _T('\n');
	buffer << _T('\t') << _T("NotImplemented(_T(\"") << classname << _T("::Compile()") << _T("\"));") << _T('\n');
	buffer << _T('\t') << _T("return -1;") << _T('\n');
	buffer << _T("}") << _T('\n');
	buffer << _T("int ") << classname << _T("::CompileAll()") << _T('\n');
	buffer << _T("{") << _T('\n');
	buffer << _T('\t') << _T("//compile all projects") << _T('\n');
	buffer << _T('\t') << _T("NotImplemented(_T(\"") << classname << _T("::CompileAll()") << _T("\"));") << _T('\n');
	buffer << _T('\t') << _T("return -1;") << _T('\n');
	buffer << _T("}") << _T('\n');
	buffer << _T("int ") << classname << _T("::RebuildAll()") << _T('\n');
	buffer << _T("{") << _T('\n');
	buffer << _T('\t') << _T("//rebuild all projects") << _T('\n');
	buffer << _T('\t') << _T("NotImplemented(_T(\"") << classname << _T("::RebuildAll()") << _T("\"));") << _T('\n');
	buffer << _T('\t') << _T("return -1;") << _T('\n');
	buffer << _T("}") << _T('\n');
	buffer << _T("int ") << classname << _T("::Rebuild(ProjectBuildTarget* target)") << _T('\n');
	buffer << _T("{") << _T('\n');
	buffer << _T('\t') << _T("//rebuild the active project or specified target") << _T('\n');
	buffer << _T('\t') << _T("NotImplemented(_T(\"") << classname << _T("::Rebuild()") << _T("\"));") << _T('\n');
	buffer << _T('\t') << _T("return -1;") << _T('\n');
	buffer << _T("}") << _T('\n');
	buffer << _T("int ") << classname << _T("::CompileFile(const wxString& file)") << _T('\n');
	buffer << _T("{") << _T('\n');
	buffer << _T('\t') << _T("//compile only the specified file") << _T('\n');
	buffer << _T('\t') << _T("NotImplemented(_T(\"") << classname << _T("::CompileFile()") << _T("\"));") << _T('\n');
	buffer << _T('\t') << _T("return -1;") << _T('\n');
	buffer << _T("}") << _T('\n');
	buffer << _T("int ") << classname << _T("::KillProcess()") << _T('\n');
	buffer << _T("{") << _T('\n');
	buffer << _T('\t') << _T("//end compiler process") << _T('\n');
	buffer << _T('\t') << _T("NotImplemented(_T(\"") << classname << _T("::KillProcess()") << _T("\"));") << _T('\n');
	buffer << _T('\t') << _T("return -1;") << _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::DoAddSourceDebugger(const wxString& classname, wxString& buffer)
{
	buffer << _T("int ") << classname << _T("::Debug()") << _T('\n');
	buffer << _T("{") << _T('\n');
	buffer << _T('\t') << _T("//actual debugging session starts here") << _T('\n');
	buffer << _T('\t') << _T("NotImplemented(_T(\"") << classname << _T("::Debug()") << _T("\"));") << _T('\n');
	buffer << _T('\t') << _T("return -1;") << _T('\n');
	buffer << _T("}") << _T('\n');
	buffer << _T("void ") << classname << _T("::CmdContinue()") << _T('\n');
	buffer << _T("{") << _T('\n');
	buffer << _T('\t') << _T("//tell debugger to continue") << _T('\n');
	buffer << _T('\t') << _T("NotImplemented(_T(\"") << classname << _T("::CmdContinue()") << _T("\"));") << _T('\n');
	buffer << _T("}") << _T('\n');
	buffer << _T("void ") << classname << _T("::CmdNext()") << _T('\n');
	buffer << _T("{") << _T('\n');
	buffer << _T('\t') << _T("//tell debugger to step one line of code") << _T('\n');
	buffer << _T('\t') << _T("NotImplemented(_T(\"") << classname << _T("::CmdNext()") << _T("\"));") << _T('\n');
	buffer << _T("}") << _T('\n');
	buffer << _T("void ") << classname << _T("::CmdStep()") << _T('\n');
	buffer << _T("{") << _T('\n');
	buffer << _T('\t') << _T("//tell debugger to step one instruction (following inside functions, if needed)") << _T('\n');
	buffer << _T('\t') << _T("NotImplemented(_T(\"") << classname << _T("::CmdStep()") << _T("\"));") << _T('\n');
	buffer << _T("}") << _T('\n');

⌨️ 快捷键说明

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