Rev 50 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
// stdafx.cpp : source file that includes just the standard includes// PluginManager.pch will be the pre-compiled header// stdafx.obj will contain the pre-compiled type information#include "stdafx.h"using namespace System;using namespace Runtime::InteropServices;using namespace System::Drawing;namespace PluginManager {System::String ^GetProgramName(bool advanced){System::String ^str = "X-Universe Plugin Manager ";if ( !advanced )str += "Lite";elsestr += "Advanced";return str;}System::String ^GetVersionString(){return GetVersionString((float)PMLVERSION, (int)PMLBETA);}System::String ^GetVersionString(float version, int beta){System::String ^str = "V" + SystemStringFromCyString(CyString::CreateFromFloat(version, 2));// beta versionif ( beta > 0 )str += " (Beta " + beta + ")";// RC releaseelse if ( beta < 0 )str += " (RC " + (0 - beta) + ")";return str;}void DisplayListIcon(CBaseFile *p, ListView ^list, ListViewItem ^item){CyString file = p->GetIcon()->GetFilePointer();if ( !file.Empty() ){file = file.FindReplace("/", "\\").FindReplace("\\\\", "\\");bool doIcon = false;System::String ^sFile = SystemStringFromCyString(file);int index = list->SmallImageList->Images->IndexOfKey(sFile);if ( index != -1 ){item->ImageIndex = index;return;}if ( System::IO::File::Exists(sFile) ){doIcon = true;if ( p->GetIconExt().Compare("bmp") ){list->SmallImageList->Images->Add(Bitmap::FromFile(sFile));if ( list->SmallImageList != list->LargeImageList )list->LargeImageList->Images->Add(Bitmap::FromFile(sFile));}else if ( p->GetIconExt().Compare("ico") ){list->SmallImageList->Images->Add(gcnew System::Drawing::Icon(sFile));if ( list->SmallImageList != list->LargeImageList )list->LargeImageList->Images->Add(gcnew System::Drawing::Icon(sFile));}else{doIcon = false;Bitmap ^myBitmap = gcnew Bitmap(sFile);if ( myBitmap ){IntPtr Hicon = myBitmap->GetHicon();System::Drawing::Icon ^newIcon = ::Icon::FromHandle(Hicon);list->SmallImageList->Images->Add(newIcon);if ( list->SmallImageList != list->LargeImageList )list->LargeImageList->Images->Add(newIcon);doIcon = true;}}}if ( doIcon ){list->SmallImageList->Images->SetKeyName(list->SmallImageList->Images->Count - 1, sFile);item->ImageIndex = list->SmallImageList->Images->Count - 1;}}}void DisplayContextIcon(CBaseFile *p, ToolStripMenuItem ^item, ImageList ^list){CyString file = p->GetIcon()->GetFilePointer();if ( !file.Empty() ){file = file.FindReplace("/", "\\").FindReplace("\\\\", "\\");PluginManager::DisplayContextIcon(SystemStringFromCyString(file), item, list);}}void DisplayContextIcon(System::String ^filename, ToolStripMenuItem ^item, ImageList ^list){if ( System::IO::File::Exists(filename) ){if ( System::IO::FileInfo(filename).Extension == "bmp" || System::IO::FileInfo(filename).Extension == "BMP" || System::IO::FileInfo(filename).Extension == "ico" || System::IO::FileInfo(filename).Extension == "ICO"){if ( list ){list->Images->Add(filename, Bitmap::FromFile(filename));item->Image = list->Images[list->Images->IndexOfKey(filename)];}elseitem->Image = Bitmap::FromFile(filename);}else{Bitmap ^myBitmap = gcnew Bitmap(filename);if ( myBitmap ){if ( list ){list->Images->Add(filename, myBitmap);item->Image = list->Images[list->Images->IndexOfKey(filename)];}elseitem->Image = myBitmap;}}}}bool WriteRegistryValue(CyString rKey, CyString rValue){CyString first = rKey.GetToken("/", 1, 1);rKey = rKey.GetToken("/", 2);RegistryKey ^startKey = nullptr;if ( first.Compare("HKCU") )startKey = Registry::CurrentUser;else if ( first.Compare("HKLM") )startKey = Registry::LocalMachine;if ( startKey ){CyString value = rKey.GetToken("/", rKey.NumToken("/"));rKey = rKey.GetToken("/", 1, rKey.NumToken("/") - 1);RegistryKey ^writeKey = startKey->OpenSubKey(SystemStringFromCyString(rKey.FindReplace("/", "\\")), true);if ( writeKey ){writeKey->SetValue(SystemStringFromCyString(value), SystemStringFromCyString(rValue));return true;}}return false;}System::String ^ReadRegistryValue(CyString rKey){CyString first = rKey.GetToken("/", 1, 1);rKey = rKey.GetToken("/", 2);System::String ^strKey;RegistryKey ^startKey = nullptr;if ( first.Compare("HKCU") )startKey = Registry::CurrentUser;else if ( first.Compare("HKLM") )startKey = Registry::LocalMachine;if ( startKey ){CyString value = rKey.GetToken("/", rKey.NumToken("/"));rKey = rKey.GetToken("/", 1, rKey.NumToken("/") - 1);RegistryKey ^readKey = startKey->OpenSubKey(SystemStringFromCyString(rKey.FindReplace("/", "\\")), true);if ( readKey )strKey = System::Convert::ToString(readKey->GetValue(SystemStringFromCyString(value)));}return strKey;}}