/*
* 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: cbplugin.cpp,v 1.4.2.1 2005/10/25 07:59:03 mandrav Exp $
* $Date: 2005/10/25 07:59:03 $
*/
#include "sdk_precomp.h"
#include <wx/menu.h>
#include <wx/toolbar.h>
#include "cbplugin.h"
#include "sdk_events.h"
#include "manager.h"
#include "licenses.h" // license macros
#include "projectbuildtarget.h"
#include "cbproject.h"
#include "messagemanager.h"
cbPlugin::cbPlugin()
: m_Type(ptNone),
m_IsAttached(false)
{
SetEvtHandlerEnabled(false);
m_PluginInfo.name = _T("");
m_PluginInfo.title = _T("");
m_PluginInfo.version = _T("");
m_PluginInfo.description = _T("");
m_PluginInfo.author = _T("");
m_PluginInfo.authorEmail = _T("");
m_PluginInfo.authorWebsite = _T("");
m_PluginInfo.thanksTo = _T("");
m_PluginInfo.license = LICENSE_GPL;
m_PluginInfo.hasConfigure = false;
}
cbPlugin::~cbPlugin()
{
}
void cbPlugin::Attach()
{
if (m_IsAttached)
return;
wxFrame* frame = Manager::Get()->GetAppWindow();
if (frame)
{
// push ourself in the application's event handling chain...
frame->PushEventHandler(this);
CodeBlocksEvent event(cbEVT_PLUGIN_ATTACHED);
event.SetPlugin(this);
// post event in the host's event queue
wxPostEvent(frame, event);
m_IsAttached = true;
}
OnAttach();
SetEvtHandlerEnabled(true);
}
void cbPlugin::Release(bool appShutDown)
{
if (!m_IsAttached)
return;
m_IsAttached = false;
SetEvtHandlerEnabled(false);
OnRelease(appShutDown);
if (appShutDown)
return; // nothing more to do, if the app is shutting down
wxFrame* frame = Manager::Get()->GetAppWindow();
if (frame)
{
CodeBlocksEvent event(cbEVT_PLUGIN_RELEASED);
event.SetPlugin(this);
// ask the host to process this event immediately
// it must be done this way, because if the host references
// us (through event.GetEventObject()), we might not be valid at that time
// (while, now, we are...)
frame->ProcessEvent(event);
// remove ourself from the application's event handling chain...
frame->RemoveEventHandler(this);
}
}
void cbPlugin::NotImplemented(const wxString& log)
{
Manager::Get()->GetMessageManager()->DebugLog(_("%s : not implemented"), log.c_str());
}
/////
///// cbCompilerPlugin
/////
cbCompilerPlugin::cbCompilerPlugin()
{
m_Type = ptCompiler;
}
/////
///// cbDebuggerPlugin
/////
cbDebuggerPlugin::cbDebuggerPlugin()
{
m_Type = ptDebugger;
}
/////
///// cbToolPlugin
/////
cbToolPlugin::cbToolPlugin()
{
m_Type = ptTool;
}
/////
///// cbMimePlugin
/////
cbMimePlugin::cbMimePlugin()
{
m_Type = ptMime;
}
/////
///// cbCodeCompletionPlugin
/////
cbCodeCompletionPlugin::cbCodeCompletionPlugin()
{
m_Type = ptCodeCompletion;
}
/////
///// cbProjectWizardPlugin
/////
cbProjectWizardPlugin::cbProjectWizardPlugin()
{
m_Type = ptProjectWizard;
}
syntax highlighted by Code2HTML, v. 0.9.1