/* * 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 * Program URL : http://www.codeblocks.org * * $Id: windowsxplooknfeel.cpp,v 1.5.2.1 2005/10/25 07:59:02 mandrav Exp $ * $Date: 2005/10/25 07:59:02 $ */ #include #include #include #include #include #include #include #include #include #include "windowsxplooknfeel.h" CB_IMPLEMENT_PLUGIN(WindowsXPLookNFeel); WindowsXPLookNFeel::WindowsXPLookNFeel() { //ctor m_PluginInfo.name = _T("WindowsXPLookNFeel"); m_PluginInfo.title = _T("Windows XP Look'n'Feel"); m_PluginInfo.version = _T("1.0"); m_PluginInfo.description = _("This plugin creates a manifest file that makes " \ "use of common controls 6.0 under Windows XP. " \ "You must copy this manifest file in the same " \ "path as your app's main executable in order for " \ "your application to use common controls version 6.0..."); m_PluginInfo.author = _T("Yiannis An. Mandravellos"); m_PluginInfo.authorEmail = _T("info@codeblocks.org"); m_PluginInfo.authorWebsite = _T("www.codeblocks.org"); m_PluginInfo.thanksTo = _T(""); m_PluginInfo.license = LICENSE_GPL; m_PluginInfo.hasConfigure = false; } WindowsXPLookNFeel::~WindowsXPLookNFeel() { //dtor } void WindowsXPLookNFeel::OnAttach() { // do whatever initialization you need for your plugin // NOTE: after this function, the inherited member variable // m_IsAttached will be TRUE... // You should check for it in other functions, because if it // is FALSE, it means that the application did *not* "load" // (see: does not need) this plugin... } void WindowsXPLookNFeel::OnRelease(bool appShutDown) { // do de-initialization for your plugin // NOTE: after this function, the inherited member variable // m_IsAttached will be FALSE... } int WindowsXPLookNFeel::Execute() { if (!m_IsAttached) return -1; #ifndef __WXMSW__ #error This plugin is for use under Win32 only! #endif // __WXMSW__ cbProject* project = Manager::Get()->GetProjectManager()->GetActiveProject(); if (!project) { wxString msg = _("No active project!"); wxMessageBox(msg, _("Error"), wxICON_ERROR | wxOK); Manager::Get()->GetMessageManager()->DebugLog(msg); return -1; } wxArrayString targetNames; ProjectBuildTarget* target = 0L; for (int i = 0; i < project->GetBuildTargetsCount(); ++i) { ProjectBuildTarget* tgt = project->GetBuildTarget(i); if (tgt) { if (tgt->GetTargetType() != ttExecutable) { Manager::Get()->GetMessageManager()->DebugLog(_("WindowsXPLookNFeel: Ignoring target '%s'"), tgt->GetTitle().c_str()); continue; } targetNames.Add(tgt->GetTitle()); target = tgt; } } if (!target) { // not even one executable target... Manager::Get()->GetMessageManager()->DebugLog(_("WindowsXPLookNFeel: No executable targets in project")); return -1; } else if (targetNames.GetCount() > 1) { // more than one executable target... ask... target = 0L; int targetIndex = project->SelectTarget(-1, true); if (targetIndex > -1) target = project->GetBuildTarget(targetIndex); } if (target) { if (wxMessageBox(_("Do you want to create the manifest file?"), _("Confirmation"), wxYES_NO | wxICON_QUESTION) == wxNO) return -2; wxString filename = target->GetOutputFilename(); filename << _T(".Manifest"); wxFileName fname(filename); fname.Normalize(wxPATH_NORM_ALL & ~wxPATH_NORM_CASE, project->GetBasePath()); filename = fname.GetFullPath(); Manager::Get()->GetMessageManager()->DebugLog(_("WindowsXPLookNFeel: Creating Manifest '%s'"), filename.c_str()); wxString buffer; buffer << _T("") << _T('\n'); buffer << _T("") << _T('\n'); buffer << _T("GetTitle() << _T(".") << target->GetTitle() << _T(".App"); buffer << _T("\"") << _T('\n'); buffer << _T(" processorArchitecture=\"x86\"") << _T('\n'); buffer << _T(" version=\"1.0.0.0\"") << _T('\n'); buffer << _T(" type=\"win32\"/>") << _T('\n'); buffer << _T("Executable") << _T('\n'); buffer << _T("") << _T('\n'); buffer << _T(" ") << _T('\n'); buffer << _T(" ") << _T('\n'); buffer << _T(" ") << _T('\n'); buffer << _T("") << _T('\n'); buffer << _T("") << _T('\n'); wxFile file(filename, wxFile::write); cbWrite(file,buffer); wxMessageBox(_("Manifest file created")); } return 0; }